summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
Diffstat (limited to 'graphics')
-rw-r--r--graphics/asymptote/ChangeLog488
-rw-r--r--graphics/asymptote/GUI/icons_rc.py374
-rw-r--r--graphics/asymptote/INSTALL6
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake6
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake4
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make14
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/Doxyfile8
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/Makefile26
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake6
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake6
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake20
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make80
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal2015
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make2313
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make4
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/Makefile74
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake4
-rw-r--r--graphics/asymptote/Makefile.in2
-rw-r--r--graphics/asymptote/README2
-rw-r--r--graphics/asymptote/ReleaseNotes16
-rw-r--r--graphics/asymptote/absyn.h2
-rw-r--r--graphics/asymptote/arrayop.h8
-rw-r--r--graphics/asymptote/asy-keywords.el8
-rw-r--r--graphics/asymptote/asy.list915
-rw-r--r--graphics/asymptote/asymptote.spec2
-rw-r--r--graphics/asymptote/base/asy-mode.el15
-rw-r--r--graphics/asymptote/base/plain_boxes.asy28
-rw-r--r--graphics/asymptote/base/plain_picture.asy11
-rw-r--r--graphics/asymptote/base/plain_scaling.asy26
-rw-r--r--graphics/asymptote/base/plain_shipout.asy9
-rw-r--r--graphics/asymptote/base/simplex2.asy310
-rw-r--r--graphics/asymptote/base/three.asy11
-rw-r--r--graphics/asymptote/base/v3dheadertypes.asy2
-rw-r--r--graphics/asymptote/base/v3dtypes.asy2
-rw-r--r--graphics/asymptote/binaries/i386-windows/README2
-rw-r--r--graphics/asymptote/binaries/x86_64-windows/README2
-rw-r--r--graphics/asymptote/builtin.cc4
-rw-r--r--graphics/asymptote/callable.h2
-rw-r--r--graphics/asymptote/camp.tab.h2
-rw-r--r--graphics/asymptote/camp.y2
-rw-r--r--graphics/asymptote/coder.cc2
-rw-r--r--graphics/asymptote/coder.h5
-rw-r--r--graphics/asymptote/common.h1
-rwxr-xr-xgraphics/asymptote/configure150
-rw-r--r--graphics/asymptote/configure.ac16
-rw-r--r--graphics/asymptote/dec.cc174
-rw-r--r--graphics/asymptote/dec.h53
-rw-r--r--graphics/asymptote/doc/CAD.pdfbin198650 -> 198650 bytes
-rw-r--r--graphics/asymptote/doc/FAQ/asy-faq.info2
-rw-r--r--graphics/asymptote/doc/TeXShopAndAsymptote.pdfbin81349 -> 81194 bytes
-rw-r--r--graphics/asymptote/doc/asy-latex.pdfbin209115 -> 209115 bytes
-rw-r--r--graphics/asymptote/doc/asyRefCard.pdfbin121145 -> 121145 bytes
-rw-r--r--graphics/asymptote/doc/asymptote.pdfbin1269364 -> 1249734 bytes
-rw-r--r--graphics/asymptote/doc/asymptote.texi538
-rw-r--r--graphics/asymptote/doc/basealign.asy (renamed from graphics/asymptote/examples/basealign.asy)0
-rw-r--r--graphics/asymptote/doc/png/asymptote.info1504
-rw-r--r--graphics/asymptote/entry.cc2
-rw-r--r--graphics/asymptote/entry.h2
-rw-r--r--graphics/asymptote/env.cc11
-rw-r--r--graphics/asymptote/env.h8
-rw-r--r--graphics/asymptote/errormsg.cc2
-rw-r--r--graphics/asymptote/examples/slope.asy2
-rw-r--r--graphics/asymptote/examples/teapot.asy4
-rw-r--r--graphics/asymptote/exp.h4
-rw-r--r--graphics/asymptote/fileio.h6
-rw-r--r--graphics/asymptote/fundec.h16
-rwxr-xr-xgraphics/asymptote/generate_enums.py8
-rw-r--r--graphics/asymptote/genv.cc41
-rw-r--r--graphics/asymptote/genv.h12
-rw-r--r--graphics/asymptote/glew.c7
-rw-r--r--graphics/asymptote/glrender.cc9
-rw-r--r--graphics/asymptote/glrender.h6
-rw-r--r--graphics/asymptote/item.h24
-rw-r--r--graphics/asymptote/main.cc9
-rw-r--r--graphics/asymptote/memory.h2
-rw-r--r--graphics/asymptote/newexp.cc2
-rw-r--r--graphics/asymptote/newexp.h10
-rw-r--r--graphics/asymptote/picture.cc5
-rw-r--r--graphics/asymptote/pkg.m4343
-rw-r--r--graphics/asymptote/program.cc4
-rw-r--r--graphics/asymptote/revision.cc2
-rw-r--r--graphics/asymptote/runmath.cc10
-rw-r--r--graphics/asymptote/runmath.in6
-rw-r--r--graphics/asymptote/runtime.cc9
-rw-r--r--graphics/asymptote/runtime.in10
-rw-r--r--graphics/asymptote/settings.cc4
-rw-r--r--graphics/asymptote/stack.cc51
-rw-r--r--graphics/asymptote/stack.h16
-rw-r--r--graphics/asymptote/stm.h4
-rw-r--r--graphics/asymptote/tests/TestLib.asy2
-rw-r--r--graphics/asymptote/tests/template/functionTest.asy20
-rw-r--r--graphics/asymptote/tests/template/imports/A.asy4
-rw-r--r--graphics/asymptote/tests/template/imports/B.asy1
-rw-r--r--graphics/asymptote/tests/template/imports/C.asy6
-rw-r--r--graphics/asymptote/tests/template/imports/composeFunctions.asy9
-rw-r--r--graphics/asymptote/tests/template/imports/notTemplate.asy4
-rw-r--r--graphics/asymptote/tests/template/imports/notTemplate2.asy4
-rw-r--r--graphics/asymptote/tests/template/imports/pureset.asy116
-rw-r--r--graphics/asymptote/tests/template/imports/sortedset.asy208
-rw-r--r--graphics/asymptote/tests/template/imports/splaytree.asy549
-rw-r--r--graphics/asymptote/tests/template/imports/structTemplate.asy36
-rw-r--r--graphics/asymptote/tests/template/imports/zip.asy5
-rw-r--r--graphics/asymptote/tests/template/initTest.asy23
-rw-r--r--graphics/asymptote/tests/template/multiImport.asy25
-rw-r--r--graphics/asymptote/tests/template/sortedsetTest.asy254
-rw-r--r--graphics/asymptote/tests/template/splaytreeTest.asy553
-rw-r--r--graphics/asymptote/tests/template/structTest.asy64
-rw-r--r--graphics/asymptote/v3dheadertypes.h2
-rw-r--r--graphics/asymptote/v3dheadertypes.py2
-rw-r--r--graphics/asymptote/v3dtypes.h2
-rw-r--r--graphics/asymptote/v3dtypes.py2
-rw-r--r--graphics/circuit_macros/CHANGES6
-rw-r--r--graphics/circuit_macros/Copying2
-rw-r--r--graphics/circuit_macros/README120
-rw-r--r--graphics/circuit_macros/darrow.m42
-rw-r--r--graphics/circuit_macros/doc/AlogixMan.m42
-rw-r--r--graphics/circuit_macros/doc/AmpTableMan.m428
-rw-r--r--graphics/circuit_macros/doc/Circuit_macros.pdfbin1086791 -> 1135017 bytes
-rw-r--r--graphics/circuit_macros/doc/Circuit_macros.tex3
-rw-r--r--graphics/circuit_macros/doc/FF.m412
-rw-r--r--graphics/circuit_macros/doc/Makefile15
-rw-r--r--graphics/circuit_macros/doc/QTrans.m45
-rw-r--r--graphics/circuit_macros/doc/ResistorsMan.m430
-rw-r--r--graphics/circuit_macros/doc/SourcesMan.m423
-rw-r--r--graphics/circuit_macros/doc/Taps.m42
-rw-r--r--graphics/circuit_macros/doc/Version.tex2
-rw-r--r--graphics/circuit_macros/doc/body.tex94
-rw-r--r--graphics/circuit_macros/doc/defines.tex657
-rw-r--r--graphics/circuit_macros/doc/quick.m412
-rw-r--r--graphics/circuit_macros/doc/relaycoilMan.m460
-rw-r--r--graphics/circuit_macros/dpictools.pic79
-rw-r--r--graphics/circuit_macros/examples/Alogix.m412
-rw-r--r--graphics/circuit_macros/examples/AmpTable.m428
-rw-r--r--graphics/circuit_macros/examples/Buttons.m432
-rw-r--r--graphics/circuit_macros/examples/Chips.m47
-rw-r--r--graphics/circuit_macros/examples/Consumption.m412
-rw-r--r--graphics/circuit_macros/examples/Dini.m457
-rw-r--r--graphics/circuit_macros/examples/EVplugs.m482
-rw-r--r--graphics/circuit_macros/examples/Fuses.m42
-rw-r--r--graphics/circuit_macros/examples/Geometry.m42
-rw-r--r--graphics/circuit_macros/examples/Incleps.m43
-rw-r--r--graphics/circuit_macros/examples/Makefile44
-rw-r--r--graphics/circuit_macros/examples/MoreTable.m42
-rw-r--r--graphics/circuit_macros/examples/Quantum.m423
-rw-r--r--graphics/circuit_macros/examples/Resistors.m430
-rw-r--r--graphics/circuit_macros/examples/SQUID.m422
-rw-r--r--graphics/circuit_macros/examples/Sevensegment.m482
-rw-r--r--graphics/circuit_macros/examples/Shadowed.m4 (renamed from graphics/circuit_macros/examples/shadowed.m4)13
-rw-r--r--graphics/circuit_macros/examples/Sources.m422
-rw-r--r--graphics/circuit_macros/examples/Switches.m42
-rw-r--r--graphics/circuit_macros/examples/cbresistor.m480
-rw-r--r--graphics/circuit_macros/examples/dpv/AmpTableDPV.m425
-rw-r--r--graphics/circuit_macros/examples/dpv/DiniDPV.m458
-rw-r--r--graphics/circuit_macros/examples/dpv/EVplugsDPV.m482
-rw-r--r--graphics/circuit_macros/examples/dpv/GeometryDPV.m42
-rw-r--r--graphics/circuit_macros/examples/dpv/Makefile22
-rw-r--r--graphics/circuit_macros/examples/dpv/QuantumDPV.m423
-rw-r--r--graphics/circuit_macros/examples/dpv/ResistorsDPV.m435
-rw-r--r--graphics/circuit_macros/examples/dpv/SQUIDDPV.m419
-rw-r--r--graphics/circuit_macros/examples/dpv/SevensegmentDPV.m482
-rw-r--r--graphics/circuit_macros/examples/dpv/SourcesDPV.m440
-rw-r--r--graphics/circuit_macros/examples/dpv/Spec555DPV.m457
-rw-r--r--graphics/circuit_macros/examples/dpv/cbresistorDPV.m482
-rw-r--r--graphics/circuit_macros/examples/dpv/ex00DPV.m494
-rw-r--r--graphics/circuit_macros/examples/dpv/examplesDPV.htmx43
-rw-r--r--graphics/circuit_macros/examples/dpv/examplesDPVs.htmx33
-rw-r--r--graphics/circuit_macros/examples/dpv/quickDPV.m410
-rw-r--r--graphics/circuit_macros/examples/dpv/relaycoilDPV.m432
-rw-r--r--graphics/circuit_macros/examples/ex00.m491
-rw-r--r--graphics/circuit_macros/examples/examples.pdfbin1917517 -> 1936421 bytes
-rw-r--r--graphics/circuit_macros/examples/extras/Ant.m430
-rw-r--r--graphics/circuit_macros/examples/extras/Asymptotes.m493
-rw-r--r--graphics/circuit_macros/examples/extras/Birds.m4 (renamed from graphics/circuit_macros/examples/extras/birds.m4)0
-rw-r--r--graphics/circuit_macros/examples/extras/Bistable.m4 (renamed from graphics/circuit_macros/examples/extras/bistable.m4)0
-rw-r--r--graphics/circuit_macros/examples/extras/Brace.m4 (renamed from graphics/circuit_macros/examples/extras/brace.m4)0
-rw-r--r--graphics/circuit_macros/examples/extras/Ccurve.m414
-rw-r--r--graphics/circuit_macros/examples/extras/Chaos.m4 (renamed from graphics/circuit_macros/examples/extras/chaos.m4)0
-rw-r--r--graphics/circuit_macros/examples/extras/Chuck.m46
-rw-r--r--graphics/circuit_macros/examples/extras/ClassDAmp.m46
-rw-r--r--graphics/circuit_macros/examples/extras/Cruller.m467
-rw-r--r--graphics/circuit_macros/examples/extras/Cylinder.m443
-rw-r--r--graphics/circuit_macros/examples/extras/HSV.m4 (renamed from graphics/circuit_macros/examples/extras/hsv.m4)0
-rw-r--r--graphics/circuit_macros/examples/extras/Highgain.m410
-rw-r--r--graphics/circuit_macros/examples/extras/Koch.m433
-rw-r--r--graphics/circuit_macros/examples/extras/Makefile44
-rw-r--r--graphics/circuit_macros/examples/extras/Parallel-series.m415
-rw-r--r--graphics/circuit_macros/examples/extras/Person.m4 (renamed from graphics/circuit_macros/examples/extras/person.m4)0
-rw-r--r--graphics/circuit_macros/examples/extras/README_extras2
-rw-r--r--graphics/circuit_macros/examples/extras/Rotellipse.m4 (renamed from graphics/circuit_macros/examples/extras/rotellipse.m4)0
-rw-r--r--graphics/circuit_macros/examples/extras/SampleFlow.m48
-rw-r--r--graphics/circuit_macros/examples/extras/Spec555.m456
-rw-r--r--graphics/circuit_macros/examples/extras/Squiggle.m4 (renamed from graphics/circuit_macros/examples/extras/squiggle.m4)0
-rw-r--r--graphics/circuit_macros/examples/extras/Venus.m4 (renamed from graphics/circuit_macros/examples/extras/venus.m4)0
-rw-r--r--graphics/circuit_macros/examples/extras/ex17.m4 (renamed from graphics/circuit_macros/examples/ex17.m4)0
-rw-r--r--graphics/circuit_macros/examples/files.tex53
-rw-r--r--graphics/circuit_macros/examples/ics.m449
-rw-r--r--graphics/circuit_macros/examples/keyboard.m48
-rw-r--r--graphics/circuit_macros/examples/mf/cct.mf64
-rw-r--r--graphics/circuit_macros/examples/quick.m412
-rw-r--r--graphics/circuit_macros/examples/relaycoil.m414
-rw-r--r--graphics/circuit_macros/examples/xfig/xfiglib.fig8
-rw-r--r--graphics/circuit_macros/gpic.m42
-rw-r--r--graphics/circuit_macros/lib3D.m428
-rw-r--r--graphics/circuit_macros/libSLD.m42
-rw-r--r--graphics/circuit_macros/libcct.m4499
-rw-r--r--graphics/circuit_macros/libgen.m4141
-rw-r--r--graphics/circuit_macros/liblog.m42
-rw-r--r--graphics/circuit_macros/mfpic.m42
-rw-r--r--graphics/circuit_macros/mpost.m42
-rw-r--r--graphics/circuit_macros/pdf.m42
-rw-r--r--graphics/circuit_macros/pgf.m42
-rw-r--r--graphics/circuit_macros/postscript.m42
-rw-r--r--graphics/circuit_macros/psfrag.m42
-rw-r--r--graphics/circuit_macros/pstricks.m42
-rw-r--r--graphics/circuit_macros/svg.m42
-rw-r--r--graphics/circuit_macros/xfig.m42
-rw-r--r--graphics/latexscreenshooter/Code/src-compiled/latexscreenshooter-exemple.tex8
-rw-r--r--graphics/latexscreenshooter/Code/src-compiled/latexscreenshooter.sty32
-rw-r--r--graphics/latexscreenshooter/Code/src/LaTexScreenshooter/LaTeXScreenshooter.java43
-rw-r--r--graphics/latexscreenshooter/Code/src/LaTexScreenshooter/PathValidator.java32
-rw-r--r--graphics/latexscreenshooter/Code/src/LaTexScreenshooter/ScreenShooter.java81
-rw-r--r--graphics/latexscreenshooter/Code/src/LaTexScreenshooter/WaylandScreenshooter.java78
-rw-r--r--graphics/latexscreenshooter/README.md33
-rw-r--r--graphics/latexscreenshooter/latexscreenshooter.pdfbin0 -> 125117 bytes
-rw-r--r--graphics/metapost/contrib/macros/mpkiviat/LICENSE11
-rw-r--r--graphics/metapost/contrib/macros/mpkiviat/README.md18
-rw-r--r--graphics/metapost/contrib/macros/mpkiviat/doc/ctan.bib72
-rw-r--r--graphics/metapost/contrib/macros/mpkiviat/doc/fond.pdfbin0 -> 1309 bytes
-rw-r--r--graphics/metapost/contrib/macros/mpkiviat/doc/mpkiviat-doc.pdfbin0 -> 108472 bytes
-rw-r--r--graphics/metapost/contrib/macros/mpkiviat/doc/mpkiviat-doc.tex571
-rw-r--r--graphics/metapost/contrib/macros/mpkiviat/doc/test-2.pdfbin0 -> 3530 bytes
-rw-r--r--graphics/metapost/contrib/macros/mpkiviat/metapost/mpkiviat.mp318
-rw-r--r--graphics/pgf/contrib/argumentation/README.md2
-rw-r--r--graphics/pgf/contrib/argumentation/argumentation-doc.pdfbin275801 -> 307239 bytes
-rw-r--r--graphics/pgf/contrib/argumentation/argumentation-doc.tex888
-rw-r--r--graphics/pgf/contrib/argumentation/argumentation.sty227
-rw-r--r--graphics/pgf/contrib/circuitikz/doc/changelog.tex29
-rw-r--r--graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdfbin13862 -> 13867 bytes
-rw-r--r--graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdfbin2422724 -> 2431321 bytes
-rw-r--r--graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex65
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz.sty4
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex151
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/pgfcirctripoles.tex24
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex4
-rw-r--r--graphics/pgf/contrib/dynkin-diagrams/README4
-rw-r--r--graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib64
-rw-r--r--graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdfbin894840 -> 908783 bytes
-rw-r--r--graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty219
-rw-r--r--graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex93
-rw-r--r--graphics/pgf/contrib/lie-hasse/README4
-rw-r--r--graphics/pgf/contrib/lie-hasse/lie-hasse.pdfbin573306 -> 631928 bytes
-rw-r--r--graphics/pgf/contrib/lie-hasse/lie-hasse.sty976
-rw-r--r--graphics/pgf/contrib/lie-hasse/lie-hasse.tex123
-rw-r--r--graphics/pgf/contrib/liftarm/README.md12
-rw-r--r--graphics/pgf/contrib/liftarm/liftarm.pdfbin2004786 -> 2192283 bytes
-rw-r--r--graphics/pgf/contrib/liftarm/liftarm.sty1208
-rw-r--r--graphics/pgf/contrib/liftarm/liftarm.tex689
-rw-r--r--graphics/pgf/contrib/pgf-periodictable/README8
-rw-r--r--graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_O.tex33
-rw-r--r--graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_OtherCont.tex2
-rw-r--r--graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_density.tex18
-rw-r--r--graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_periodgroup.tex57
-rw-r--r--graphics/pgf/contrib/pgf-periodictable/manualfiles/pgfPTmanual.macros.tex5
-rw-r--r--graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTable.sty52
-rw-r--r--graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.pdfbin7457011 -> 7570685 bytes
-rw-r--r--graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.tex8
-rw-r--r--graphics/pgf/contrib/pgf-periodictable/pgfPT.data.tex236
-rw-r--r--graphics/pgf/contrib/pgf-periodictable/pgfPT.drawing.keys.tex37
-rw-r--r--graphics/pgf/contrib/pgf-spectra/README29
-rw-r--r--graphics/pgf/contrib/pgf-spectra/pgf-spectra.data.LSE.tex20
-rw-r--r--graphics/pgf/contrib/pgf-spectra/pgf-spectra.sty13
-rw-r--r--graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.pdfbin2384961 -> 2388018 bytes
-rw-r--r--graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.tex22
-rw-r--r--graphics/pgf/contrib/pgfgantt/README17
-rw-r--r--graphics/pgf/contrib/pgfgantt/pgfgantt-doc.pdfbin0 -> 661617 bytes
-rw-r--r--graphics/pgf/contrib/pgfgantt/pgfgantt.dtx348
-rw-r--r--graphics/pgf/contrib/pgfgantt/pgfgantt.ins11
-rw-r--r--graphics/pgf/contrib/pgfgantt/pgfgantt.pdfbin941473 -> 0 bytes
-rw-r--r--graphics/pgf/contrib/pmdraw/README.md (renamed from graphics/pmdraw/README.md)6
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-1.tex (renamed from graphics/pmdraw/examples/example-1.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-10.tex (renamed from graphics/pmdraw/examples/example-10.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-11.tex (renamed from graphics/pmdraw/examples/example-11.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-12.tex (renamed from graphics/pmdraw/examples/example-12.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-13.tex (renamed from graphics/pmdraw/examples/example-13.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-14.tex (renamed from graphics/pmdraw/examples/example-14.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-15.tex (renamed from graphics/pmdraw/examples/example-15.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-16.tex (renamed from graphics/pmdraw/examples/example-16.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-17.tex (renamed from graphics/pmdraw/examples/example-17.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-18.tex (renamed from graphics/pmdraw/examples/example-18.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-19.tex (renamed from graphics/pmdraw/examples/example-19.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-2.tex (renamed from graphics/pmdraw/examples/example-2.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-20.tex (renamed from graphics/pmdraw/examples/example-20.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-21.tex (renamed from graphics/pmdraw/examples/example-21.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-22.tex (renamed from graphics/pmdraw/examples/example-22.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-23.tex (renamed from graphics/pmdraw/examples/example-23.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-24.tex (renamed from graphics/pmdraw/examples/example-24.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-25.tex (renamed from graphics/pmdraw/examples/example-25.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-3.tex (renamed from graphics/pmdraw/examples/example-3.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-4.tex (renamed from graphics/pmdraw/examples/example-4.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-5.tex (renamed from graphics/pmdraw/examples/example-5.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-6.tex (renamed from graphics/pmdraw/examples/example-6.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-7.tex (renamed from graphics/pmdraw/examples/example-7.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-8.tex (renamed from graphics/pmdraw/examples/example-8.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/examples/example-9.tex (renamed from graphics/pmdraw/examples/example-9.tex)0
-rw-r--r--graphics/pgf/contrib/pmdraw/pmdraw.pdf (renamed from graphics/pmdraw/pmdraw.pdf)bin384283 -> 397582 bytes
-rw-r--r--graphics/pgf/contrib/pmdraw/pmdraw.sty (renamed from graphics/pmdraw/pmdraw.sty)758
-rw-r--r--graphics/pgf/contrib/pmdraw/pmdraw.tex (renamed from graphics/pmdraw/pmdraw.tex)642
-rw-r--r--graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe71.pdfbin0 -> 17705 bytes
-rw-r--r--graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe71.tex18
-rw-r--r--graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe72.pdfbin0 -> 25368 bytes
-rw-r--r--graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe72.tex19
-rw-r--r--graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe73.pdfbin0 -> 23829 bytes
-rw-r--r--graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe73.tex19
-rw-r--r--graphics/pgf/contrib/profsio/doc/ProfSio-doc-fr.pdfbin498503 -> 570243 bytes
-rw-r--r--graphics/pgf/contrib/profsio/doc/ProfSio-doc-fr.tex102
-rw-r--r--graphics/pgf/contrib/profsio/tex/ProfSio.sty321
-rw-r--r--graphics/pgf/contrib/spath3/README.txt (renamed from graphics/pgf/contrib/spath3/README)2
-rw-r--r--graphics/pgf/contrib/spath3/spath3.pdfbin441114 -> 446012 bytes
-rw-r--r--graphics/pgf/contrib/spath3/spath3.tex63
-rw-r--r--graphics/pgf/contrib/spath3/spath3_code.dtx127
-rw-r--r--graphics/pgf/contrib/spath3/spath3_code.pdfbin833596 -> 840527 bytes
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/README.md7
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.pdfbin0 -> 1222359 bytes
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.tex1692
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdfbin0 -> 1309490 bytes
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex1946
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.pdfbin0 -> 141889 bytes
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.tex251
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.pdfbin0 -> 141384 bytes
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.tex251
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty4221
-rw-r--r--graphics/pstricks/base/Changes4
-rw-r--r--graphics/pstricks/base/doc/pst-news24.pdfbin98554 -> 99744 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news24.tex6
-rw-r--r--graphics/pstricks/base/doc/pstricks-bug.tex6
-rw-r--r--graphics/pstricks/base/generic/pstricks.tex27
-rw-r--r--graphics/pstricks/contrib/pst-diffraction/Changes7
-rw-r--r--graphics/pstricks/contrib/pst-diffraction/Makefile55
-rw-r--r--graphics/pstricks/contrib/pst-diffraction/README37
-rw-r--r--graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.bib176
-rw-r--r--graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.pdfbin0 -> 23064303 bytes
-rw-r--r--graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.tex (renamed from graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docE.tex)223
-rw-r--r--graphics/pstricks/contrib/pst-diffraction/latex/pst-diffraction.sty (renamed from graphics/pstricks/contrib/pst-diffraction/pst-diffraction.sty)2
-rw-r--r--graphics/pstricks/contrib/pst-diffraction/pst-diffraction-doc.bib119
-rw-r--r--graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docDE.pdfbin828505 -> 0 bytes
-rw-r--r--graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docDE.tex495
-rw-r--r--graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docE.pdfbin799677 -> 0 bytes
-rw-r--r--graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docFR.pdfbin813332 -> 0 bytes
-rw-r--r--graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docFR.tex483
-rw-r--r--graphics/pstricks/contrib/pst-diffraction/tex/pst-diffraction.tex (renamed from graphics/pstricks/contrib/pst-diffraction/pst-diffraction.tex)37
-rw-r--r--graphics/pstricks/contrib/pst-mirror/Changes1
-rw-r--r--graphics/pstricks/contrib/pst-mirror/README3
-rw-r--r--graphics/pstricks/contrib/pst-mirror/doc/createEPS/test.pdfbin27939 -> 328729 bytes
-rw-r--r--graphics/pstricks/contrib/pst-mirror/doc/createEPS/test.tex10
-rw-r--r--graphics/pstricks/contrib/pst-mirror/doc/createEPS/tiger-b.eps7102
-rw-r--r--graphics/pstricks/contrib/pst-mirror/doc/createEPS/tiger-c.eps7101
-rw-r--r--graphics/pstricks/contrib/pst-mirror/doc/createEPS/tiger.eps2746
-rw-r--r--graphics/pstricks/contrib/pst-mirror/doc/createEPS/xb.pdfbin0 -> 2445 bytes
-rw-r--r--graphics/pstricks/contrib/pst-mirror/doc/createEPS/xc.pdfbin0 -> 4597 bytes
-rw-r--r--graphics/pstricks/contrib/pst-mirror/doc/pst-mirror-doc.pdfbin7092245 -> 7210837 bytes
-rw-r--r--graphics/pstricks/contrib/pst-mirror/doc/pst-mirror-doc.tex10
-rw-r--r--graphics/pstricks/contrib/pst-mirror/tex/pst-mirror.tex6
-rw-r--r--graphics/pstricks/contrib/pst-node/Changes6
-rw-r--r--graphics/pstricks/contrib/pst-node/README5
-rw-r--r--graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.bib35
-rw-r--r--graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.pdfbin0 -> 229201 bytes
-rw-r--r--graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.tex1155
-rw-r--r--graphics/pstricks/contrib/pst-node/doc/pst-node-doc.pdfbin513402 -> 585632 bytes
-rw-r--r--graphics/pstricks/contrib/pst-node/doc/pst-node-doc.tex36
-rw-r--r--graphics/pstricks/contrib/pst-node/dvips/pst-node.pro6
-rw-r--r--graphics/pstricks/contrib/pst-node/latex/pst-node.sty11
-rw-r--r--graphics/pstricks/contrib/pst-node/tex/pst-node.tex61
-rw-r--r--graphics/pstricks/contrib/pst-optic/Changes2
-rw-r--r--graphics/pstricks/contrib/pst-optic/README5
-rw-r--r--graphics/pstricks/contrib/pst-optic/doc/pst-optic-doc.pdfbin463729 -> 518230 bytes
-rw-r--r--graphics/pstricks/contrib/pst-optic/doc/pst-optic-doc.tex65
-rw-r--r--graphics/pstricks/contrib/pst-optic/tex/pst-optic.tex40
-rw-r--r--graphics/tpic2pdftex/Makefile.in101
-rw-r--r--graphics/tpic2pdftex/aclocal.m4415
-rwxr-xr-xgraphics/tpic2pdftex/configure.texk335
380 files changed, 44357 insertions, 9707 deletions
diff --git a/graphics/asymptote/ChangeLog b/graphics/asymptote/ChangeLog
index ef7b7897ea..d328718705 100644
--- a/graphics/asymptote/ChangeLog
+++ b/graphics/asymptote/ChangeLog
@@ -1,3 +1,440 @@
+commit 58246991e2474ffbd1bfe012d5d0a11407da7795
+Author: John Bowman <bowman@ualberta.ca>
+Date: Fri Jun 21 10:33:58 2024 -0700
+
+ Support latest osmesa.h (issue #433).
+
+commit 25eee09b986b2bf373a5bab21be4b0406bc2568a
+Author: John Bowman <bowman@ualberta.ca>
+Date: Fri Jun 21 00:09:15 2024 -0700
+
+ Install shaders without executable bit.
+
+commit 74af1955622ae40bbe4edc74cd197049a04684a9
+Author: John Bowman <bowman@ualberta.ca>
+Date: Fri Jun 21 00:08:00 2024 -0700
+
+ Avoid use of deprecated datetime.utcfromtimestamp function.
+
+commit 9cd341a78049695722a25d54be507ffd18cacb15
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Jun 20 23:30:08 2024 -0700
+
+ Update documentation.
+
+commit 8455927794379406ea28be52adc7cc65262f9ea7
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Jun 20 23:21:48 2024 -0700
+
+ Omit teapot regularization.
+
+commit 5099d297e6a950c8917a21be9bf15d75e7855e6a
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Jun 20 19:04:49 2024 -0700
+
+ Fix discussion of deferred drawing.
+
+commit b0cba406177a0bbee1428ac2e36f886cccdc5b94
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 23:59:31 2024 -0700
+
+ Replace ImageMagick convert by magick convert.
+
+commit 4d15930f3a4aa8ca4f4616276678e9b1537c27a4
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 19:00:15 2024 -0700
+
+ Fix documentation.
+
+commit b2dba448eb7e579f9f1e382c3c22c3e1be439e1c
+Merge: eca567a5 154a9d93
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 18:43:30 2024 -0700
+
+ Merge pull request #439 from jkseppan/flycheck
+
+ Integrate with flycheck
+
+commit eca567a539a7bf2b1beb5a3e1871c9c3db276e94
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 18:37:05 2024 -0700
+
+ Apply pull request #452, with a few modifications.
+
+commit e36ea98c063075bd48a44410c8de1fc173d354c7
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 17:28:47 2024 -0700
+
+ Update documentation.
+
+commit 7d063bebcf040ab417c770941676df92b669e13e
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 15:11:17 2024 -0700
+
+ Replace tabs in error messages by 2 spaces (issue #444).
+
+commit 39dff901f9c36de254710b57381dc4b83a636f63
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 13:50:40 2024 -0700
+
+ Fix approximate transparency rendering for GPUs without SSBO support (issue #462).
+
+commit 99bd09380ddd649d3d6060dda12320e2dc8ed10b
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 10:35:08 2024 -0700
+
+ Pass PKG_FLAGS to AC_CHECK_LIB (issue # 461).
+
+commit 216e2ef85fe61c959d2163f8c7c5f4faca87d840
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 09:41:16 2024 -0700
+
+ Change add(picture dest, picture src, pair position) to respect a size specification for src (see issue #450).
+ This change is backwards incompatible only in cases where src is given a size specification; the previous behaviour can then be obtained with
+
+ add(dest,src.fit(identity()),position).
+
+commit 4cbd256f23a940f60b54c1ea4df1fe2febe101dd
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 09:40:04 2024 -0700
+
+ Fix example.
+
+commit c7f016286dffc4cd1805d7541d50e17d05805527
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Jun 16 23:46:09 2024 -0700
+
+ Avoid duplicate code.
+
+commit d3ad8b5fd85a0ba900c4933acb013e501e473bb1
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Jun 16 20:23:45 2024 -0700
+
+ Qualify call to glutSetOption.
+
+commit 9a776cfe4d3bf6b01c7c5340745aa5b0fc9bd707
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Jun 16 15:48:31 2024 -0700
+
+ Update URL.
+
+commit 9cf74052039f62dc4f4c810cd0a0b133d977433d
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Jun 13 17:44:57 2024 -0700
+
+ Reset terminal on exit.
+
+commit af44b79a8b008c6e2bcc3a422cdc28adb78d25d0
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Jun 13 08:29:49 2024 -0700
+
+ Exit glut gracefully.
+
+commit c7250761093ba84f3db1c948d3fc4effcfb8d32a
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Jun 13 08:02:34 2024 -0700
+
+ Don't show target for empty pictures.
+
+commit 1d4dfcae1950fcfce44ed109260b39f0e6dbb45f
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 12 23:46:42 2024 -0700
+
+ Fix erase.
+
+commit 237a30626c2167f1269dd2ec8b6910569f569e5f
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue Jun 11 23:29:34 2024 -0700
+
+ Don't warn if there are no constraints.
+
+commit 45912ba5dc3aa458ce25fc04d569fbe430238c13
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue Jun 11 23:29:11 2024 -0700
+
+ Only output a 3D picture when not up to date.
+
+commit 590b89237b2b2d61d310380313e9e61d2329d22e
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue Jun 11 20:09:50 2024 -0700
+
+ Decouple scaling of each dimension with a fixed version of the original 2-variable simplex method (see commit 401cf60f89dcddfb6993f7bd25a86b144ec5f3ad and issue #72).
+
+commit 8b307db4402ec7ad1bf1d1f3559140acaa4863e2
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Jun 9 08:15:36 2024 -0700
+
+ Fix DEBUG_FRAME warning.
+
+commit 1c16640576c9b96926f9f76e06b81f0f68fd1714
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Jun 9 08:10:30 2024 -0700
+
+ Remove unused argument to stack::load.
+
+commit 786fc0fb3da2fb0e3f4b1dd94aa3548b4a06ad56
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 8 23:07:21 2024 -0700
+
+ Update documentation of templated imports.
+
+commit f153c484aca2ead08683cbfb2a5afbcafef1c703
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Sat Jun 8 19:40:39 2024 -0700
+
+ Test template for nested imports.
+
+commit 61c6d2be12bfad7239ff4f6733ba1a66b84f4d26
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 8 19:23:03 2024 -0700
+
+ Support templated imports for parameter types defined in imported modules.
+
+commit 575ef4298a22e175dc2201b4c91f1cf6f8511a0e
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue Jun 4 21:07:41 2024 -0700
+
+ Partially revert commit 45b84def56e7c4af6a9f0e9546bf92f90c9a22af.
+
+commit 12e20a7be326f05d5e5d7a555a0f9ceb29becce1
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Sun Jun 2 21:27:29 2024 -0700
+
+ Add more thorough test of struct template.
+
+commit 772a3e4d0efa95367f547159bb86dd9f436abd18
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Jun 2 17:39:49 2024 -0700
+
+ Remove automatic recordInitializer for imported templates; add test.
+
+commit 3f6f4361af778517867837b79cc56db28e791935
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Sun Jun 2 13:28:17 2024 -0700
+
+ Add import de-duplication tests.
+
+commit 600c54f7669d23bf57beaee991773f1b301720ef
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Sun Jun 2 12:52:08 2024 -0700
+
+ Minor readability improvements.
+
+commit d22b41fb0e7eaf2290951409abf2f867aa317850
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 1 23:39:39 2024 -0700
+
+ Defer pushing qualified tyEntries until actually loading a templated module.
+
+commit 70346afc6d421c5b102a35f7b9bde8109082ef71
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 1 21:00:12 2024 -0700
+
+ Remove unused code.
+
+commit 8c9e05a2f239390a3ce0fa9fc236027ac3d8bfb1
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 1 20:50:57 2024 -0700
+
+ Revert "Revert "Initialize structs declared within templated imports.""
+
+ This reverts commit 315ca8cbe34cee0b5079bd669060b568da7b342a.
+
+commit e5590f72c74f43840ae87d411f4791b200a7a3e3
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 1 20:37:57 2024 -0700
+
+ Support templated access with types containing static fields.
+
+commit a697a52388f0e07797ac5eaa8d00c419337d0c7b
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 1 19:30:28 2024 -0700
+
+ Simplify code.
+
+commit 57539e7ae5f20414d936730e57120106a8ef3f44
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 1 19:28:25 2024 -0700
+
+ Simplify code.
+
+commit 1e51fe661e819f13446288f2cdb47b7688f499e7
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Sat Jun 1 15:40:15 2024 -0700
+
+ Only pop qualifiers for records.
+
+commit 45b84def56e7c4af6a9f0e9546bf92f90c9a22af
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 1 13:24:36 2024 -0700
+
+ Support templated access with imported and top-level structure types.
+
+commit db67e9101801809cc15e4e34de72c8c41a60b18b
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu May 30 20:55:20 2024 -0700
+
+ Simplify code.
+
+commit 6faf168867f0a7dd3930b6cf0d74fc4e3333ddd0
+Merge: 7dfdaf3c be47ce98
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Thu May 30 19:50:04 2024 -0700
+
+ Merge branch 'rename' into template
+
+commit be47ce9838e0a92dd026fbb1df0532edca5a2e1a
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed May 29 22:43:42 2024 -0700
+
+ Rename types::tyTy back to types::ty.
+
+commit 79f526207906986ac2a86414bdece4dffeb12781
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed May 29 22:36:20 2024 -0700
+
+ Rename absyntax::ty to absyntax::astType.
+
+commit 092fc985e8be1cfd88f2045fe39e981bd110f0be
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed May 29 22:19:31 2024 -0700
+
+ Change some macro-gated ty to tyTy.
+
+commit 94451536b4a372c4fb5f15b928377174c8e17311
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed May 29 22:13:06 2024 -0700
+
+ Change `#if SIMPLE_FRAME` to `#ifdef SIMPLE_FRAME` for consistency.
+
+commit 7dfdaf3c418ddb0d2471cea99eb0bcaeaec8c6a7
+Merge: ecb912d9 122092fa
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed May 29 21:02:20 2024 -0700
+
+ Merge branch 'master' into template.
+
+commit 122092fa8a238ac101e9b7dcd6316be919e069ea
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed May 29 20:53:21 2024 -0700
+
+ Work around missing pkg-config files.
+
+commit 2d3fc31c89786cf7edfb8ee85e02fce60b483570
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed May 29 14:51:49 2024 -0700
+
+ Rename vm::frame to vm::vmFrame to avoid confusion with trans::frame.
+
+commit c2cd04a91d1bc7e1fb8e45737d7d45a22344ca1f
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed May 29 14:51:13 2024 -0700
+
+ Output linebreak in testLib to improve error message readability.
+
+commit 3bc8e52d1eedf0956785e6214a462172f5820656
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed May 29 12:57:35 2024 -0700
+
+ Rename types::ty to types::tyTy to distinguish it from absyntax::ty.
+
+commit ecb912d95d3cb9c9595e82f8de8bfaf1dfa9e8ba
+Merge: 193c933f 684570c8
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue May 28 10:15:51 2024 -0700
+
+ Merge branch 'master' into template.
+
+commit 193c933fed79c9d12527ee32f249e7c70812af35
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Tue May 28 10:02:01 2024 -0700
+
+ WIP: Correctly qualify tyEntries for template parameters.
+
+commit 684570c8872a2e93ef86a6ef456a0599a934bf12
+Author: John Bowman <bowman@ualberta.ca>
+Date: Mon May 27 19:50:24 2024 -0700
+
+ Ship with pkg.m4 to support pkg-config.
+
+commit de439f6d57b43871dbb3d23f5a9ab8c9af9c4ef2
+Merge: 518077fd e369a22f
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu May 23 22:52:55 2024 -0700
+
+ Merge branch 'master' into template.
+
+commit e369a22fd851e63c2f1e75b098a572778f932d86
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu May 23 22:52:21 2024 -0700
+
+ Support COMPACT=0 again.
+
+commit 518077fd67809c0b847982708e7695405d51ea03
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu May 23 21:17:55 2024 -0700
+
+ Improve 32 bit integer detection macro.
+
+commit c451de132d783606f8aee2c8bd6214f1a972de3e
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed May 22 22:04:30 2024 -0700
+
+ Remove obsolete code.
+
+commit eee7be909c837074d690f5377324940c1c22556b
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed May 22 21:57:45 2024 -0700
+
+ Revert "Remove obsolete code."
+
+ This reverts commit 82da5932f7dfa59337840abfec723de14edaee98.
+
+commit 82da5932f7dfa59337840abfec723de14edaee98
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue May 21 23:31:34 2024 -0700
+
+ Remove obsolete code.
+
+commit 652038f70d54f8fce993312063897b7d67e26649
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue May 21 23:21:00 2024 -0700
+
+ Avoid particular compile error if Int=int.
+
+commit 03916a9cd8a2cab8c6b8ebd48c4b9aa2be03a339
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue May 21 23:12:58 2024 -0700
+
+ Revert "Avoid particular compile error if Int=int."
+
+ This reverts commit 6e8222e13ad71b03376c84f259bf126944beb303.
+
+commit 8fbeeaa6bb7a84be36942b0622294391e46783de
+Author: John Bowman <bowman@ualberta.ca>
+Date: Fri May 17 16:03:19 2024 -0700
+
+ Fix documentation.
+
+commit 154a9d938d5c97aa75e83a88ef3de22444d422a5
+Author: Jouni K. Seppänen <jks@iki.fi>
+Date: Fri Apr 5 15:21:57 2024 +0300
+
+ Integrate with flycheck
+
+ Flycheck is the modern way to do on-the-fly syntax checking
+ and linting in Emacs: https://www.flycheck.org/en/latest/index.html
+
+ This adds a checker if flycheck is loaded. The checker uses the
+ user-defined asy command, with -noV to avoid creating a new viewer,
+ and a temporary file as the output target.
+
+commit 8371bce0828789ba8d991a3e57b5314fd9278bf6
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Mar 24 20:30:32 2024 -0700
+
+ Increment version to 2.90.
+
commit 92e96dde395fdb9707bd1bb9960e83146411ffa1
Author: John Bowman <bowman@ualberta.ca>
Date: Sat Mar 23 14:12:38 2024 -0700
@@ -34,6 +471,19 @@ Date: Sat Mar 23 13:58:31 2024 -0700
origin: "???"
commit: "???"
+commit 6e8222e13ad71b03376c84f259bf126944beb303
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Fri Mar 22 18:45:11 2024 -0700
+
+ Avoid particular compile error if Int=int.
+
+commit 63359273ebbd562fcd5f269eb08e5ce2d59bd1bf
+Merge: 4e0d0dcb d3f67352
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Fri Mar 22 09:26:47 2024 -0700
+
+ Merge branch 'template' of https://github.com/vectorgraphics/asymptote into template
+
commit 315ca8cbe34cee0b5079bd669060b568da7b342a
Author: John Bowman <bowman@ualberta.ca>
Date: Thu Mar 21 22:23:47 2024 -0700
@@ -42,6 +492,44 @@ Date: Thu Mar 21 22:23:47 2024 -0700
This reverts commit 12baa706a2162acd5a555af922105a4061fbd0f8.
+commit d3f67352cda9f7ad6cb52eb15b925ec594a923af
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Mar 21 22:21:43 2024 -0700
+
+ Update last revision.
+
+commit 719c11747ff45acd7f0cf4b8810b4170f74c3b90
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Mar 21 22:05:05 2024 -0700
+
+ Add templated import initialization test.
+
+commit 4e0d0dcb17b53f9a427154b0ac6775ed2ba8e2d7
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Thu Mar 21 20:12:38 2024 -0700
+
+ Mostly cosmetic changes.
+
+commit 84eceac38b494271aaf4063a8c568a3e9f46f20a
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed Mar 20 14:20:35 2024 -0700
+
+ Remove no-longer-needed workaround.
+
+commit a2f2984eeed93a70a148f49f1d5ce9ff4be9ddea
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed Mar 20 14:02:16 2024 -0700
+
+ Revert "Initialize structs declared within templated imports."
+
+ This reverts commit 12baa706a2162acd5a555af922105a4061fbd0f8.
+
+commit ce9a9ce520cebbc6ea508e12b53542a0d14a92ea
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed Mar 20 14:01:37 2024 -0700
+
+ Add additional tests from datastructures branch.
+
commit 033715655b4165ba2d00aaf9640bfb9b505d593a
Merge: 2bc14502 de239a50
Author: Charles Staats III <charles.staats.iii@gmail.com>
diff --git a/graphics/asymptote/GUI/icons_rc.py b/graphics/asymptote/GUI/icons_rc.py
index ba173f94ff..8fca5b33ee 100644
--- a/graphics/asymptote/GUI/icons_rc.py
+++ b/graphics/asymptote/GUI/icons_rc.py
@@ -2,7 +2,7 @@
# Resource object code
#
-# Created by: The Resource Compiler for PyQt5 (Qt v5.15.12)
+# Created by: The Resource Compiler for PyQt5 (Qt v5.15.14)
#
# WARNING! All changes made in this file will be lost!
@@ -381,42 +381,42 @@ qt_resource_data = b"\
\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\x0a\x3c\x2f\x67\x3e\x0a\
\x3c\x2f\x73\x76\x67\x3e\x0a\
-\x00\x00\x02\x1c\
+\x00\x00\x02\x1f\
\x00\
-\x00\x07\x5c\x78\x9c\xdd\x55\x4d\x73\x9b\x30\x10\xbd\xf7\x57\x6c\
-\xa7\x07\x25\x07\x84\xbe\x10\x28\x13\x92\x99\x7a\xa6\xa7\xf4\x96\
-\x5c\x7a\xc3\x41\x80\x1a\x0c\x1e\xa0\xc6\xfd\xf7\x95\x6d\x49\x76\
-\x69\x33\xbd\xe4\xd0\x89\x0f\x98\xf7\x56\x6f\xd9\xb7\xcb\x0e\xb7\
-\xf7\xfb\x4d\x0b\x3b\x3d\x8c\xa6\xef\x72\x44\x31\x41\xa0\xbb\xe7\
-\xbe\x34\x5d\x9d\xa3\xa7\xc7\x2f\x51\x86\xee\xef\x3e\xdc\x7e\x8c\
-\x22\x78\x6c\xcc\x08\x95\x69\x35\xcc\xc5\x08\xb5\xee\xf4\x50\x4c\
-\xba\x84\xf5\x4f\x28\x77\x66\xdc\xd5\x1b\x60\x98\x52\x4c\x21\x8a\
-\xac\xc4\x12\x97\x89\x29\x02\xfb\xa8\x6e\xcc\x51\x33\x4d\xdb\x9b\
-\x38\x9e\xe7\x19\xcf\x1c\xf7\x43\x1d\x33\x42\x48\x6c\xcf\xbb\x23\
-\x37\xfb\xd6\x74\x2f\x7f\x3b\x48\x95\x52\xf1\x31\x8a\x60\x36\xe5\
-\xd4\xe4\x48\x72\x6c\x49\xb9\x9d\x10\x34\xda\xd4\xcd\x64\x29\x71\
-\x40\x3b\xa3\xe7\xcf\xfd\x3e\x47\x89\xc4\x82\x28\x01\x94\xa6\x38\
-\x4b\x32\x70\x0a\x90\x02\xd9\x32\x6b\x30\x65\x8e\xb6\x45\xad\xe9\
-\x09\x4e\x43\xd1\x8d\x55\x3f\x6c\x72\x74\xbc\x6d\xad\xc9\xab\x45\
-\x8e\xeb\xf1\xb9\x68\xf5\x95\xcd\x23\x99\x14\xd7\x07\xe1\xb6\x98\
-\x1a\xb0\x99\xbe\x82\xc2\x5c\xa4\x82\x81\x60\x38\x15\x29\x7b\x08\
-\x44\x22\x70\xa6\x98\xfc\x83\x58\x2d\x89\x7f\xe1\x0b\x81\xc2\x24\
-\x13\x0a\xa8\xc2\x89\xe0\x14\x24\xc3\x22\xe3\x02\xb8\x9d\x04\xf3\
-\x68\x05\x42\x60\xa9\xa4\x0a\x61\x9f\xd7\xcb\x03\xf6\x15\xbe\x4a\
-\x04\x53\x9e\xe0\x04\x4b\x42\xb3\x55\x20\xd8\xb1\x55\x49\x78\x26\
-\xe3\x98\x50\xea\x2a\x3a\x81\x55\xa8\xd7\x05\xbd\x1d\xaf\xf5\xd8\
-\x25\x7f\x58\xf6\xf4\x1b\x3a\xbc\x88\x6d\x8e\x3e\xad\xab\x75\x55\
-\x55\x28\xb6\x13\x88\xeb\xb7\x99\x5f\x30\x22\x70\xc2\x14\xbd\x70\
-\x46\x30\xe7\x32\x0b\xce\xa8\xc4\x8a\x67\xdc\x59\x73\xe8\xec\xcd\
-\x87\x83\x39\x27\x0f\xd8\xe7\x0f\x44\x86\x53\x46\x93\x90\xe0\x94\
-\xf7\xe2\x7a\x1e\xe4\x89\x0c\x85\x39\xe1\xa2\xf2\xd0\xa5\xae\xef\
-\x34\x82\x71\x1a\xfa\x17\x6d\x7b\x46\x8e\x3f\x4f\x44\x76\x9d\xf4\
-\x73\xb1\xcd\xd1\xd0\xff\xe8\xca\xdf\xe8\xef\xbd\xe9\x96\xfc\xc6\
-\x4c\x7a\x68\x8d\xfd\xb3\x6b\x4d\x30\xe1\x69\x12\x62\x6e\x27\x39\
-\x4e\x28\xa7\xec\x4d\xa7\xb2\xe8\xda\xfb\xda\x2a\x67\xea\x3d\xcd\
-\xeb\xd5\x2d\xb2\x5f\x08\x95\x30\x76\xde\x22\x9c\x26\x32\x91\x7e\
-\x8b\x4e\xe8\x62\x8b\x5c\xd8\xcf\xc6\xcb\x17\xef\xc3\x7f\xd3\xba\
-\xd3\xc5\x7e\xcc\xee\x7e\x01\xb3\x30\xdb\xa9\
+\x00\x07\x5c\x78\x9c\xdd\x53\x3d\x6f\xdb\x30\x10\xdd\xfd\x2b\xae\
+\xc8\xc0\x64\xf0\x89\x5f\xa2\xc4\xc0\x74\x80\x1a\xe8\x94\x6e\xc9\
+\xd2\x4d\xb6\x68\x99\x8d\x2c\x19\x92\x2a\xb9\xff\xbe\x88\x2d\xd2\
+\xae\xda\xa0\x4b\x86\x22\x1a\x08\xbd\x77\x7a\xa7\x7b\x77\xbc\xc5\
+\xc3\x71\x5f\x42\x6f\x9b\xd6\xd5\x95\x21\x0c\x29\x01\x5b\x6d\xea\
+\xdc\x55\x85\x21\xcf\x4f\x5f\xe6\x29\x79\x58\xce\x16\x9f\xe6\x73\
+\x78\xda\xb9\x16\xb6\xae\xb4\x30\x64\x2d\x14\xb6\xb2\x4d\xd6\xd9\
+\x1c\xd6\x3f\x21\xef\x5d\xdb\x17\x7b\xe0\xc8\x18\x32\x98\xcf\x97\
+\xb3\x45\xdb\x17\xd7\x89\x19\x81\xe3\xbe\xac\x5a\x43\x76\x5d\x77\
+\xb8\x8f\xa2\x61\x18\x70\x10\x58\x37\x45\xc4\x29\xa5\x51\xdb\x17\
+\xe3\x27\xf7\xc7\xd2\x55\x2f\x7f\xfb\x90\x69\xad\xa3\x53\x94\xc0\
+\xe0\xf2\x6e\x67\x88\x12\xa8\xb5\x56\x87\x8e\xc0\xce\xba\x62\xd7\
+\x19\xa2\xe4\x2b\xea\x9d\x1d\x3e\xd7\x47\x43\x62\x85\x92\x6a\x09\
+\x8c\x25\x98\xc6\x29\x8c\x0a\x50\x92\x2c\x67\x8b\x02\x5c\x6e\xc8\
+\x21\x2b\x2c\x3b\xc3\xae\xc9\xaa\x76\x5b\x37\x7b\x43\x4e\xaf\x65\
+\xd6\xd9\xdb\x49\x8e\xbb\x76\x93\x95\xf6\x16\xb5\x56\x5c\xc9\xbb\
+\x57\xe1\x21\xeb\x76\x90\x1b\xf2\x15\x34\x0a\x99\x48\x0e\x92\x63\
+\x22\x13\xfe\x18\x88\x58\x62\xaa\xb9\xfa\x83\x58\x4d\x89\x7f\xe1\
+\x2b\x81\x46\x9a\x4a\x0d\x4c\x63\x2c\x05\x03\xc5\x51\xa6\x42\x82\
+\xe0\xc8\xb8\x47\x2b\x90\x12\x95\x56\x3a\x84\x7d\x5e\x2f\x0f\xd8\
+\x57\xf8\x26\x11\x4c\x79\x42\x50\x54\x94\xa5\xab\x40\xf0\x53\xab\
+\xe2\xf0\x4f\x2e\x90\x32\x36\x56\x74\x06\xab\x50\xef\x18\xf4\x76\
+\xbc\xd6\xe3\x31\xf9\xe3\xb4\xa7\xdf\xc8\xeb\x45\x2c\x0d\xb9\x59\
+\x6f\xd7\xdb\xed\x96\x44\xcb\xd9\x22\x2a\xde\x67\x7e\xc1\x88\xc4\
+\x98\x6b\x76\xe5\x8c\xa2\x10\x2a\x0d\xce\x98\x42\x2d\x52\x31\x5a\
+\x1b\xd1\xc5\x9b\x0f\x07\x73\xa3\x3c\x60\x9f\x3f\x10\x29\x26\x9c\
+\xc5\x21\xc1\x39\xef\xd5\x79\x19\xe4\x99\x0c\x85\x8d\xc2\x49\xe5\
+\xa1\x4b\x55\x5d\x59\x02\x6d\xd7\xd4\x2f\xd6\x90\x1b\x7a\x7a\x3c\
+\x31\x2f\x5d\x65\x37\xd9\xc1\x90\xa6\xfe\x51\xe5\xbf\xd1\xdf\x6b\
+\x57\x4d\xf9\xbd\xeb\x6c\x53\xba\xbd\xeb\x0c\x61\x14\xa9\x48\xe2\
+\x10\x1b\x77\x52\x60\xcc\x04\xe3\xef\x3a\x95\x49\xd7\x3e\xd6\x56\
+\x8d\xa6\x3e\xd2\xbc\xde\xdc\x22\xc6\x50\xc7\x9c\x5f\xb6\x08\x93\
+\x58\xc5\xca\x6f\xd1\x19\x5d\x6d\xd1\x18\xf6\xb3\xf1\xf2\xc9\x7d\
+\xf8\x6f\x5a\x77\x3e\xda\xbe\x58\xfe\x02\xb3\x30\xdb\xa9\
\x00\x00\x03\x2a\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -1468,38 +1468,38 @@ qt_resource_data = b"\
\x30\x36\x20\x34\x31\x36\x2c\x31\x31\x30\x20\x09\x09\x09\x22\x2f\
\x3e\x0a\x09\x09\x3c\x2f\x67\x3e\x0a\x09\x3c\x2f\x67\x3e\x0a\x3c\
\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\
-\x00\x00\x01\xd8\
+\x00\x00\x01\xdd\
\x00\
-\x00\x06\xc4\x78\x9c\xcd\x54\x4d\x6f\x9b\x40\x10\x3d\xe3\x5f\x31\
-\xdd\x5b\x25\xf6\x0b\x62\x62\x53\xe3\xa8\xfe\x90\x65\x29\x6d\x2d\
-\x35\x75\xd5\x53\x85\x61\x0b\x28\x14\x10\x2c\x60\xe7\xd7\x77\x77\
-\xed\x54\xa9\x14\x5f\x43\x0f\x3b\xab\x9d\x79\xf3\xe6\x0d\x4f\x62\
-\x76\x77\xfc\x9d\x43\x27\xea\x26\x2b\x8b\x00\x71\xc2\x10\x88\x22\
-\x2a\xe3\xac\x48\x02\xd4\xca\x5f\x78\x82\xee\xe6\xa3\xd9\x3b\x8c\
-\x61\x23\x0a\x51\x87\xb2\xac\x7d\xf8\x18\x97\x07\x01\xdb\x3c\x6f\
-\x1b\x69\x52\xc0\x3d\xe2\x10\x6e\xc3\xd7\xfd\x06\xd6\xc7\xaa\xac\
-\x25\xec\xf2\x36\xc1\xdb\x02\x88\x49\xee\xcf\x33\x7c\xf0\x08\x63\
-\xb0\x68\xb3\x3c\x06\xf6\x1e\x00\x63\x4d\xbf\xfa\xb2\x7c\xf8\xb1\
-\x5b\x43\xd3\x25\xb0\xfb\xb6\xb8\xdf\x2e\x01\x61\x4a\xbf\xbb\x4b\
-\x4a\x57\x0f\x2b\xc3\xc0\x09\xa7\x74\xfd\x19\x01\x4a\xa5\xac\x7c\
-\x4a\xfb\xbe\x27\xbd\x4b\xca\x3a\xa1\x9b\x3a\xac\xd2\x2c\x6a\xa8\
-\x02\x52\x0d\x54\x4d\x54\x91\x71\x4e\x62\x19\x23\x35\x42\x33\xbf\
-\xd8\x93\x23\xc8\xe2\x00\xdd\x87\x27\x51\xff\x54\x0f\xf5\x19\x8a\
-\x26\x78\x85\xd9\x61\x8c\x69\xa6\x0b\xc4\x3f\xe6\x59\xf1\xf8\x1a\
-\x90\x4f\xa7\x53\x6a\xaa\x0a\x1a\x20\x56\x1d\x11\x9c\xce\xf7\xc8\
-\x82\x3e\x8b\x65\x1a\xa0\x31\x77\x74\x3e\x15\x59\x92\xca\xbf\xcf\
-\x2e\x13\xfd\xa2\xd4\x4d\xc0\x40\xe5\xf4\x41\xd0\xc8\x53\x2e\x02\
-\x24\x8a\xf0\x90\x0b\x7c\x08\xa3\xc7\xa4\x2e\xdb\x22\xf6\x0b\xd1\
-\xc3\x0b\xe4\x07\x23\xcd\x6f\xaa\x30\x52\xf0\xaa\x16\x8d\xa8\x3b\
-\xa1\x77\x4e\xe6\x23\xcb\x04\x6b\x56\x85\x32\x05\xb5\xf0\x27\xee\
-\x31\x9b\x8f\x5d\xe2\x46\xcc\x76\xc9\x2d\x76\x6d\x4f\x45\x75\xf4\
-\x9d\xe2\x31\x23\xe3\x08\xab\x82\xcd\x74\x12\xbb\xf8\x52\xee\xce\
-\x25\x66\x6a\xee\x73\x83\xbe\x53\x53\x30\x2d\x3a\x65\x1b\x46\x7d\
-\xf6\x66\xce\x93\x5a\xdf\xb2\xe8\xbf\x2a\x9c\xc9\xe4\x3f\x50\x71\
-\xc3\xbd\xa1\x54\xcc\xe8\x35\x73\x9c\x09\x7f\x13\x41\x66\xce\x55\
-\x73\x86\x57\xa1\xcd\x19\x48\xc5\x75\x73\x6e\xd8\xf4\x4d\x04\x99\
-\x39\x57\xcd\x19\x5e\x85\x36\x67\x20\x15\xc6\x9c\x4b\x50\xff\xe5\
-\xf9\xe8\x0f\x44\x1a\x94\x79\
+\x00\x06\xc4\x78\x9c\xcd\x51\x4d\x8f\x9b\x30\x14\x3c\xc3\xaf\x78\
+\xf5\xad\x12\xfe\x82\x85\x24\x14\xb2\x6a\x3e\x14\x45\xda\xb6\x91\
+\x36\x4d\xd5\x53\x45\xc0\x05\xb4\x2c\x20\x70\x80\xf4\xd7\x57\x76\
+\xd2\x6a\x2b\x6d\xae\x4b\x0f\xf6\x93\x67\xde\x9b\x37\xd6\x04\xf7\
+\xc3\x73\x01\x9d\x68\xda\xbc\x2a\x43\xc4\x09\x43\x20\xca\xb8\x4a\
+\xf2\x32\x0d\xd1\x49\xfe\xc4\x53\x74\x3f\x37\x83\x77\x18\xc3\x46\
+\x94\xa2\x89\x64\xd5\xf8\xf0\x31\xa9\x8e\x02\xb6\x45\x71\x6a\xa5\
+\x86\x80\x7b\xc4\x26\xdc\x82\xc7\xc3\x06\xd6\x43\x5d\x35\x12\x76\
+\xc5\x29\xc5\xdb\x12\x88\x06\x0f\x97\x1d\x3e\x78\x84\x31\x58\x9c\
+\xf2\x22\x01\xf6\x1e\x00\x63\x25\xbf\xfa\xb2\xdc\x7f\xdf\xad\xa1\
+\xed\x52\xd8\x7d\x5d\x3c\x6c\x97\x80\x30\xa5\xdf\x9c\x25\xa5\xab\
+\xfd\x4a\x2b\x70\xc2\x29\x5d\x7f\x46\x80\x32\x29\x6b\x9f\xd2\xbe\
+\xef\x49\xef\x90\xaa\x49\xe9\xa6\x89\xea\x2c\x8f\x5b\xfa\x78\xd8\
+\x50\xd5\xb8\xda\xaf\x68\xdb\xa5\x9c\x93\x44\x26\x68\x6e\x06\x4a\
+\xf9\xc5\x3f\x39\x82\x3c\x09\xd1\x43\x74\x16\xcd\x0f\x8e\x60\x78\
+\x2e\xca\x36\x7c\x45\xd9\x66\x8c\x29\xa5\x6b\x8b\x3f\x14\x79\xf9\
+\xf4\x5a\x23\x9f\xcd\x66\x54\xb3\x08\x86\x10\xb1\x7a\x40\x70\xbe\
+\x54\xd3\x80\x3e\x4f\x64\x16\x22\x97\xdb\x0a\xcf\x44\x9e\x66\xf2\
+\xef\xb3\xcb\x45\xbf\xa8\xd4\x10\x30\x70\xb9\xad\x0e\x82\x56\x9e\
+\x0b\x11\x22\x51\x46\xc7\x42\xe0\x63\x14\x3f\xa5\x4d\x75\x2a\x13\
+\xbf\x14\x3d\xbc\xe8\xfc\xa0\xad\xf9\x6d\x1d\xc5\x22\x44\x75\x23\
+\x5a\xd1\x74\x42\xfd\x39\x9d\x9b\x86\xbe\x8c\xa0\x8e\x64\x06\x49\
+\x88\x3e\x71\x8f\x59\xdc\x75\x88\x13\x33\xcb\x21\x13\xec\x58\x1e\
+\x99\x60\x8f\x4c\x54\xcd\xb0\xcb\x88\x1b\x63\x87\x4c\x2c\xa6\x40\
+\xec\xe0\x2b\xdd\x5d\x28\xa6\x39\xe7\xcf\x80\xaa\x99\x26\xf4\x88\
+\x82\x2c\xad\xa8\xce\x41\xef\xf9\x85\x4c\xc3\x30\xe8\xbf\x2e\xec\
+\xe9\xf4\x3f\x70\x71\xc7\xbd\xb1\x5c\x04\xf4\x56\x38\xf6\x94\xbf\
+\x89\x21\xbd\xe7\x66\x38\xe3\xbb\x50\xe1\x8c\xe4\xe2\x76\x38\x77\
+\x6c\xf6\x26\x86\xf4\x9e\x9b\xe1\x8c\xef\x42\x85\x33\x92\x0b\x1d\
+\xce\xf5\x6a\xbb\x74\x6e\xfe\x06\x44\x1a\x94\x79\
\x00\x00\x03\x3d\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -2751,44 +2751,44 @@ qt_resource_struct_v1 = b"\
\x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x85\
\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x12\xa4\
\x00\x00\x00\xee\x00\x01\x00\x00\x00\x01\x00\x00\x16\x90\
-\x00\x00\x01\x14\x00\x00\x00\x00\x00\x01\x00\x00\x18\xb0\
-\x00\x00\x01\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xde\
-\x00\x00\x01\x54\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xf9\
-\x00\x00\x01\x78\x00\x00\x00\x00\x00\x01\x00\x00\x24\xa0\
-\x00\x00\x01\x98\x00\x00\x00\x00\x00\x01\x00\x00\x29\x17\
-\x00\x00\x01\xae\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xb7\
-\x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x30\x7c\
-\x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x35\x4a\
-\x00\x00\x02\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x09\
-\x00\x00\x02\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xe6\
-\x00\x00\x02\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x42\xfd\
-\x00\x00\x02\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x46\x49\
-\x00\x00\x02\xec\x00\x00\x00\x00\x00\x01\x00\x00\x48\xe5\
-\x00\x00\x03\x16\x00\x00\x00\x00\x00\x01\x00\x00\x4b\xff\
-\x00\x00\x03\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x50\x01\
-\x00\x00\x03\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x52\xf5\
-\x00\x00\x03\x90\x00\x00\x00\x00\x00\x01\x00\x00\x55\x90\
-\x00\x00\x03\xb6\x00\x01\x00\x00\x00\x01\x00\x00\x58\x00\
-\x00\x00\x03\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x59\xdc\
-\x00\x00\x03\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x5d\x1d\
-\x00\x00\x04\x0a\x00\x00\x00\x00\x00\x01\x00\x00\x60\x08\
-\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\x62\x7e\
-\x00\x00\x04\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x65\xdc\
-\x00\x00\x04\x72\x00\x00\x00\x00\x00\x01\x00\x00\x69\x3f\
-\x00\x00\x04\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x6c\x46\
-\x00\x00\x04\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x70\x8c\
-\x00\x00\x04\xc6\x00\x00\x00\x00\x00\x01\x00\x00\x73\x07\
-\x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x77\x5f\
-\x00\x00\x05\x08\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x3d\
-\x00\x00\x05\x30\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x63\
-\x00\x00\x05\x58\x00\x00\x00\x00\x00\x01\x00\x00\x82\x12\
-\x00\x00\x05\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x83\x32\
-\x00\x00\x05\x82\x00\x00\x00\x00\x00\x01\x00\x00\x87\x12\
-\x00\x00\x05\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x8a\x55\
-\x00\x00\x05\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x8b\xc2\
-\x00\x00\x06\x06\x00\x00\x00\x00\x00\x01\x00\x00\x8f\x7d\
-\x00\x00\x06\x36\x00\x00\x00\x00\x00\x01\x00\x00\x8f\xed\
-\x00\x00\x06\x58\x00\x00\x00\x00\x00\x01\x00\x00\x92\xdf\
+\x00\x00\x01\x14\x00\x00\x00\x00\x00\x01\x00\x00\x18\xb3\
+\x00\x00\x01\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xe1\
+\x00\x00\x01\x54\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xfc\
+\x00\x00\x01\x78\x00\x00\x00\x00\x00\x01\x00\x00\x24\xa3\
+\x00\x00\x01\x98\x00\x00\x00\x00\x00\x01\x00\x00\x29\x1a\
+\x00\x00\x01\xae\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xba\
+\x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x30\x7f\
+\x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x35\x4d\
+\x00\x00\x02\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x0c\
+\x00\x00\x02\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xe9\
+\x00\x00\x02\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x43\x00\
+\x00\x00\x02\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x46\x4c\
+\x00\x00\x02\xec\x00\x00\x00\x00\x00\x01\x00\x00\x48\xe8\
+\x00\x00\x03\x16\x00\x00\x00\x00\x00\x01\x00\x00\x4c\x02\
+\x00\x00\x03\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x50\x04\
+\x00\x00\x03\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x52\xf8\
+\x00\x00\x03\x90\x00\x00\x00\x00\x00\x01\x00\x00\x55\x93\
+\x00\x00\x03\xb6\x00\x01\x00\x00\x00\x01\x00\x00\x58\x03\
+\x00\x00\x03\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x59\xe4\
+\x00\x00\x03\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x5d\x25\
+\x00\x00\x04\x0a\x00\x00\x00\x00\x00\x01\x00\x00\x60\x10\
+\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\x62\x86\
+\x00\x00\x04\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x65\xe4\
+\x00\x00\x04\x72\x00\x00\x00\x00\x00\x01\x00\x00\x69\x47\
+\x00\x00\x04\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x6c\x4e\
+\x00\x00\x04\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x70\x94\
+\x00\x00\x04\xc6\x00\x00\x00\x00\x00\x01\x00\x00\x73\x0f\
+\x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x77\x67\
+\x00\x00\x05\x08\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x45\
+\x00\x00\x05\x30\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x6b\
+\x00\x00\x05\x58\x00\x00\x00\x00\x00\x01\x00\x00\x82\x1a\
+\x00\x00\x05\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x83\x3a\
+\x00\x00\x05\x82\x00\x00\x00\x00\x00\x01\x00\x00\x87\x1a\
+\x00\x00\x05\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x8a\x5d\
+\x00\x00\x05\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x8b\xca\
+\x00\x00\x06\x06\x00\x00\x00\x00\x00\x01\x00\x00\x8f\x85\
+\x00\x00\x06\x36\x00\x00\x00\x00\x00\x01\x00\x00\x8f\xf5\
+\x00\x00\x06\x58\x00\x00\x00\x00\x00\x01\x00\x00\x92\xe7\
"
qt_resource_struct_v2 = b"\
@@ -2797,93 +2797,93 @@ qt_resource_struct_v2 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x2c\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2d\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
\x00\x00\x00\x38\x00\x00\x00\x00\x00\x01\x00\x00\x07\x6f\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
\x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x0f\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6d\
\x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x85\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x12\xa4\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
\x00\x00\x00\xee\x00\x01\x00\x00\x00\x01\x00\x00\x16\x90\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x01\x14\x00\x00\x00\x00\x00\x01\x00\x00\x18\xb0\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x01\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xde\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2d\
-\x00\x00\x01\x54\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xf9\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x01\x78\x00\x00\x00\x00\x00\x01\x00\x00\x24\xa0\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x01\x98\x00\x00\x00\x00\x00\x01\x00\x00\x29\x17\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x01\xae\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xb7\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x30\x7c\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2d\
-\x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x35\x4a\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x02\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x09\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x02\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xe6\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x02\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x42\xfd\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x02\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x46\x49\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x02\xec\x00\x00\x00\x00\x00\x01\x00\x00\x48\xe5\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x03\x16\x00\x00\x00\x00\x00\x01\x00\x00\x4b\xff\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x03\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x50\x01\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x03\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x52\xf5\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2d\
-\x00\x00\x03\x90\x00\x00\x00\x00\x00\x01\x00\x00\x55\x90\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x03\xb6\x00\x01\x00\x00\x00\x01\x00\x00\x58\x00\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x03\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x59\xdc\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x03\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x5d\x1d\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x04\x0a\x00\x00\x00\x00\x00\x01\x00\x00\x60\x08\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\x62\x7e\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x04\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x65\xdc\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x04\x72\x00\x00\x00\x00\x00\x01\x00\x00\x69\x3f\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x04\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x6c\x46\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x04\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x70\x8c\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x04\xc6\x00\x00\x00\x00\x00\x01\x00\x00\x73\x07\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x77\x5f\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x05\x08\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x3d\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x05\x30\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x63\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x05\x58\x00\x00\x00\x00\x00\x01\x00\x00\x82\x12\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2d\
-\x00\x00\x05\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x83\x32\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x05\x82\x00\x00\x00\x00\x00\x01\x00\x00\x87\x12\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x05\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x8a\x55\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x05\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x8b\xc2\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x06\x06\x00\x00\x00\x00\x00\x01\x00\x00\x8f\x7d\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2d\
-\x00\x00\x06\x36\x00\x00\x00\x00\x00\x01\x00\x00\x8f\xed\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x06\x58\x00\x00\x00\x00\x00\x01\x00\x00\x92\xdf\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x01\x14\x00\x00\x00\x00\x00\x01\x00\x00\x18\xb3\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x01\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xe1\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x01\x54\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xfc\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x01\x78\x00\x00\x00\x00\x00\x01\x00\x00\x24\xa3\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x01\x98\x00\x00\x00\x00\x00\x01\x00\x00\x29\x1a\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x01\xae\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xba\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x30\x7f\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x35\x4d\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x02\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x0c\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x02\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xe9\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x02\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x43\x00\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x02\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x46\x4c\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x02\xec\x00\x00\x00\x00\x00\x01\x00\x00\x48\xe8\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6d\
+\x00\x00\x03\x16\x00\x00\x00\x00\x00\x01\x00\x00\x4c\x02\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x03\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x50\x04\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x03\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x52\xf8\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x03\x90\x00\x00\x00\x00\x00\x01\x00\x00\x55\x93\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x03\xb6\x00\x01\x00\x00\x00\x01\x00\x00\x58\x03\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x03\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x59\xe4\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x03\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x5d\x25\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x04\x0a\x00\x00\x00\x00\x00\x01\x00\x00\x60\x10\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6d\
+\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\x62\x86\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x04\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x65\xe4\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x04\x72\x00\x00\x00\x00\x00\x01\x00\x00\x69\x47\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x04\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x6c\x4e\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x04\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x70\x94\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x04\xc6\x00\x00\x00\x00\x00\x01\x00\x00\x73\x0f\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x77\x67\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x05\x08\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x45\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x05\x30\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x6b\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6d\
+\x00\x00\x05\x58\x00\x00\x00\x00\x00\x01\x00\x00\x82\x1a\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x05\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x83\x3a\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x05\x82\x00\x00\x00\x00\x00\x01\x00\x00\x87\x1a\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x05\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x8a\x5d\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6d\
+\x00\x00\x05\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x8b\xca\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x06\x06\x00\x00\x00\x00\x00\x01\x00\x00\x8f\x85\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x06\x36\x00\x00\x00\x00\x00\x01\x00\x00\x8f\xf5\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x06\x58\x00\x00\x00\x00\x00\x01\x00\x00\x92\xe7\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
"
qt_version = [int(v) for v in QtCore.qVersion().split('.')]
diff --git a/graphics/asymptote/INSTALL b/graphics/asymptote/INSTALL
index 602c338363..f4e0dd8937 100644
--- a/graphics/asymptote/INSTALL
+++ b/graphics/asymptote/INSTALL
@@ -30,7 +30,7 @@ Compiling Asymptote from Git Developmental Source Code
To compile from Git developmental source code:
-git clone http://github.com/vectorgraphics/asymptote
+git clone https://github.com/vectorgraphics/asymptote
cd asymptote
./autogen.sh
./configure
@@ -40,12 +40,12 @@ make install
Optional packages:
* Fast Fourier Transform library
- http://www.fftw.org/
+ https://www.fftw.org/
Version requirement >= 3.0
* The GNU Scientific Library for numerical analysis:
- http://www.gnu.org/software/gsl/
+ https://www.gnu.org/software/gsl/
*****************************************
Generic Configure Instructions (advanced)
diff --git a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake
index 668314bb71..10947361b6 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake
+++ b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake
@@ -1,9 +1,9 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
# Relative path conversion top directories.
-set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.89/LspCpp")
-set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.89/LspCpp")
+set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.90/LspCpp")
+set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.90/LspCpp")
# Force unix paths in dependencies.
set(CMAKE_FORCE_UNIX_PATHS 1)
diff --git a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake
index 45a25b7803..29b95a515e 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake
+++ b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake
@@ -14,5 +14,9 @@ set(CMAKE_DEPENDS_DEPENDENCY_FILES
set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES
)
+# Targets to which this target links which contain Fortran sources.
+set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES
+ )
+
# Fortran module output directory.
set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make
index 68ff539b12..cd14a44b53 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make
+++ b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make
@@ -1,5 +1,5 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
# Delete rule output on recipe failure.
.DELETE_ON_ERROR:
@@ -56,10 +56,10 @@ RM = /usr/bin/cmake -E rm -f
EQUALS = =
# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.90/LspCpp
# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.90/LspCpp
# Utility rule file for doc.
@@ -70,8 +70,8 @@ include third_party/uri/CMakeFiles/doc.dir/compiler_depend.make
include third_party/uri/CMakeFiles/doc.dir/progress.make
third_party/uri/CMakeFiles/doc:
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --blue --bold --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating API documentation with Doxygen"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri && /bin/doxygen /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/Doxyfile
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --blue --bold --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating API documentation with Doxygen"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri && /bin/doxygen /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/Doxyfile
doc: third_party/uri/CMakeFiles/doc
doc: third_party/uri/CMakeFiles/doc.dir/build.make
@@ -82,10 +82,10 @@ third_party/uri/CMakeFiles/doc.dir/build: doc
.PHONY : third_party/uri/CMakeFiles/doc.dir/build
third_party/uri/CMakeFiles/doc.dir/clean:
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri && $(CMAKE_COMMAND) -P CMakeFiles/doc.dir/cmake_clean.cmake
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri && $(CMAKE_COMMAND) -P CMakeFiles/doc.dir/cmake_clean.cmake
.PHONY : third_party/uri/CMakeFiles/doc.dir/clean
third_party/uri/CMakeFiles/doc.dir/depend:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.89/LspCpp /usr/local/src/asymptote-2.89/LspCpp/third_party/uri /usr/local/src/asymptote-2.89/LspCpp /usr/local/src/asymptote-2.89/LspCpp/third_party/uri /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake "--color=$(COLOR)"
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.90/LspCpp /usr/local/src/asymptote-2.90/LspCpp/third_party/uri /usr/local/src/asymptote-2.90/LspCpp /usr/local/src/asymptote-2.90/LspCpp/third_party/uri /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake "--color=$(COLOR)"
.PHONY : third_party/uri/CMakeFiles/doc.dir/depend
diff --git a/graphics/asymptote/LspCpp/third_party/uri/Doxyfile b/graphics/asymptote/LspCpp/third_party/uri/Doxyfile
index 056a61bbb1..d5d97f4b56 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/Doxyfile
+++ b/graphics/asymptote/LspCpp/third_party/uri/Doxyfile
@@ -128,7 +128,7 @@ FULL_PATH_NAMES = YES
# If left blank the directory from which doxygen is run is used as the
# path to strip.
-STRIP_FROM_PATH = /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/
+STRIP_FROM_PATH = /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
# the path mentioned in the documentation of a class, which tells
@@ -626,7 +626,7 @@ WARN_LOGFILE =
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include
+INPUT = /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
@@ -658,7 +658,7 @@ RECURSIVE = YES
# Note that relative paths are relative to the directory from which doxygen is
# run.
-EXCLUDE = /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail
+EXCLUDE = /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
@@ -821,7 +821,7 @@ COLS_IN_ALPHA_INDEX = 5
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
# should be ignored while generating the index headers.
-IGNORE_PREFIX = /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/uri/src/
+IGNORE_PREFIX = /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/uri/src/
#---------------------------------------------------------------------------
# configuration options related to the HTML output
diff --git a/graphics/asymptote/LspCpp/third_party/uri/Makefile b/graphics/asymptote/LspCpp/third_party/uri/Makefile
index a9bce1ebf0..508a0f8b29 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/Makefile
+++ b/graphics/asymptote/LspCpp/third_party/uri/Makefile
@@ -1,5 +1,5 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
# Default target executed when no arguments are given to make.
default_target: all
@@ -60,10 +60,10 @@ RM = /usr/bin/cmake -E rm -f
EQUALS = =
# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.90/LspCpp
# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.90/LspCpp
#=============================================================================
# Targets provided globally by CMake.
@@ -135,14 +135,14 @@ install/strip/fast: preinstall/fast
# The main all target
all: cmake_check_build_system
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.89/LspCpp/CMakeFiles /usr/local/src/asymptote-2.89/LspCpp/third_party/uri//CMakeFiles/progress.marks
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/all
- $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.89/LspCpp/CMakeFiles 0
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.90/LspCpp/CMakeFiles /usr/local/src/asymptote-2.90/LspCpp/third_party/uri//CMakeFiles/progress.marks
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/all
+ $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.90/LspCpp/CMakeFiles 0
.PHONY : all
# The main clean target
clean:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/clean
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/clean
.PHONY : clean
# The main clean target
@@ -151,22 +151,22 @@ clean/fast: clean
# Prepare targets for installation.
preinstall: all
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall
.PHONY : preinstall/fast
# clear depends
depend:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
# Convenience name for target.
third_party/uri/CMakeFiles/doc.dir/rule:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/CMakeFiles/doc.dir/rule
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/CMakeFiles/doc.dir/rule
.PHONY : third_party/uri/CMakeFiles/doc.dir/rule
# Convenience name for target.
@@ -175,7 +175,7 @@ doc: third_party/uri/CMakeFiles/doc.dir/rule
# fast build rule for target.
doc/fast:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/CMakeFiles/doc.dir/build.make third_party/uri/CMakeFiles/doc.dir/build
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/CMakeFiles/doc.dir/build.make third_party/uri/CMakeFiles/doc.dir/build
.PHONY : doc/fast
# Help Target
@@ -202,6 +202,6 @@ help:
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system
diff --git a/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake b/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake
index 8a2139f497..b0d4be5b79 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake
+++ b/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake
@@ -1,4 +1,4 @@
-# Install script for directory: /usr/local/src/asymptote-2.89/LspCpp/third_party/uri
+# Install script for directory: /usr/local/src/asymptote-2.90/LspCpp/third_party/uri
# Set the install prefix
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
@@ -43,12 +43,12 @@ if(NOT DEFINED CMAKE_OBJDUMP)
endif()
if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT)
- file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE DIRECTORY FILES "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include")
+ file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE DIRECTORY FILES "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include")
endif()
if(NOT CMAKE_INSTALL_LOCAL_ONLY)
# Include the install script for each subdirectory.
- include("/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/cmake_install.cmake")
+ include("/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/cmake_install.cmake")
endif()
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake
index 668314bb71..10947361b6 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake
@@ -1,9 +1,9 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
# Relative path conversion top directories.
-set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.89/LspCpp")
-set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.89/LspCpp")
+set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.90/LspCpp")
+set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.90/LspCpp")
# Force unix paths in dependencies.
set(CMAKE_FORCE_UNIX_PATHS 1)
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake
index 98d4213d2b..594e10e458 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake
@@ -8,19 +8,23 @@ set(CMAKE_DEPENDS_LANGUAGES
# The set of dependency files which are needed:
set(CMAKE_DEPENDS_DEPENDENCY_FILES
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d"
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d"
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d"
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d"
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_resolve.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d"
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o.d"
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_builder.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o.d"
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_errors.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o.d"
)
# Targets to which this target links which contain Fortran sources.
set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES
)
+# Targets to which this target links which contain Fortran sources.
+set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES
+ )
+
# Fortran module output directory.
set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make
index 20b63f7feb..feab93c641 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make
@@ -1,5 +1,5 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
# Delete rule output on recipe failure.
.DELETE_ON_ERROR:
@@ -56,10 +56,10 @@ RM = /usr/bin/cmake -E rm -f
EQUALS = =
# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.90/LspCpp
# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.90/LspCpp
# Include any dependencies generated for this target.
include third_party/uri/src/CMakeFiles/network-uri.dir/depend.make
@@ -75,114 +75,114 @@ include third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/uri.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o -MF CMakeFiles/network-uri.dir/uri.cpp.o.d -o CMakeFiles/network-uri.dir/uri.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o -MF CMakeFiles/network-uri.dir/uri.cpp.o.d -o CMakeFiles/network-uri.dir/uri.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/uri.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri.cpp > CMakeFiles/network-uri.dir/uri.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp > CMakeFiles/network-uri.dir/uri.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/uri.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri.cpp -o CMakeFiles/network-uri.dir/uri.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp -o CMakeFiles/network-uri.dir/uri.cpp.s
third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/uri/src/uri_builder.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o -MF CMakeFiles/network-uri.dir/uri_builder.cpp.o.d -o CMakeFiles/network-uri.dir/uri_builder.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_builder.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o -MF CMakeFiles/network-uri.dir/uri_builder.cpp.o.d -o CMakeFiles/network-uri.dir/uri_builder.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/uri_builder.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_builder.cpp > CMakeFiles/network-uri.dir/uri_builder.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp > CMakeFiles/network-uri.dir/uri_builder.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/uri_builder.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_builder.cpp -o CMakeFiles/network-uri.dir/uri_builder.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp -o CMakeFiles/network-uri.dir/uri_builder.cpp.s
third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri/src/uri_errors.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o -MF CMakeFiles/network-uri.dir/uri_errors.cpp.o.d -o CMakeFiles/network-uri.dir/uri_errors.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_errors.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o -MF CMakeFiles/network-uri.dir/uri_errors.cpp.o.d -o CMakeFiles/network-uri.dir/uri_errors.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/uri_errors.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_errors.cpp > CMakeFiles/network-uri.dir/uri_errors.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp > CMakeFiles/network-uri.dir/uri_errors.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/uri_errors.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_errors.cpp -o CMakeFiles/network-uri.dir/uri_errors.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp -o CMakeFiles/network-uri.dir/uri_errors.cpp.s
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_party/uri/src/detail/uri_parse.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse.cpp > CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp > CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o: third_party/uri/src/detail/uri_parse_authority.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp > CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp > CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/detail/uri_advance_parts.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp > CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp > CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third_party/uri/src/detail/uri_normalize.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.cpp > CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp > CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.cpp -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_party/uri/src/detail/uri_resolve.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_resolve.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_resolve.cpp > CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp > CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_resolve.cpp -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s
# Object files for target network-uri
network__uri_OBJECTS = \
@@ -208,19 +208,19 @@ third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri
third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o
third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri.dir/build.make
third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri.dir/link.txt
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Linking CXX static library libnetwork-uri.a"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean_target.cmake
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/network-uri.dir/link.txt --verbose=$(VERBOSE)
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Linking CXX static library libnetwork-uri.a"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean_target.cmake
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/network-uri.dir/link.txt --verbose=$(VERBOSE)
# Rule to build all files generated by this target.
third_party/uri/src/CMakeFiles/network-uri.dir/build: third_party/uri/src/libnetwork-uri.a
.PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/build
third_party/uri/src/CMakeFiles/network-uri.dir/clean:
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean.cmake
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean.cmake
.PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/clean
third_party/uri/src/CMakeFiles/network-uri.dir/depend:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.89/LspCpp /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.89/LspCpp /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake "--color=$(COLOR)"
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.90/LspCpp /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.90/LspCpp /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake "--color=$(COLOR)"
.PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/depend
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal
index 89c154bfba..3100d7c219 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal
@@ -1,8 +1,8 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -26,6 +26,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o
/usr/include/bits/select.h
/usr/include/bits/setjmp.h
/usr/include/bits/stdint-intn.h
+ /usr/include/bits/stdint-least.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
@@ -69,112 +70,113 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o
/usr/include/bits/waitstatus.h
/usr/include/bits/wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/algorithm
- /usr/include/c++/13/backward/auto_ptr.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bit
- /usr/include/c++/13/bits/algorithmfwd.h
- /usr/include/c++/13/bits/align.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocated_ptr.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/atomic_base.h
- /usr/include/c++/13/bits/atomic_lockfree_defines.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/ios_base.h
- /usr/include/c++/13/bits/locale_classes.h
- /usr/include/c++/13/bits/locale_classes.tcc
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/shared_ptr.h
- /usr/include/c++/13/bits/shared_ptr_atomic.h
- /usr/include/c++/13/bits/shared_ptr_base.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/stl_algo.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_heap.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stl_raw_storage_iter.h
- /usr/include/c++/13/bits/stl_relops.h
- /usr/include/c++/13/bits/stl_tempbuf.h
- /usr/include/c++/13/bits/stl_uninitialized.h
- /usr/include/c++/13/bits/stream_iterator.h
- /usr/include/c++/13/bits/streambuf.tcc
- /usr/include/c++/13/bits/streambuf_iterator.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/uniform_int_dist.h
- /usr/include/c++/13/bits/unique_ptr.h
- /usr/include/c++/13/bits/uses_allocator.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/cassert
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/aligned_buffer.h
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/atomicity.h
- /usr/include/c++/13/ext/concurrence.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/iterator
- /usr/include/c++/13/limits
- /usr/include/c++/13/memory
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/streambuf
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/tuple
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/utility
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/algorithm
+ /usr/include/c++/14/backward/auto_ptr.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bit
+ /usr/include/c++/14/bits/algorithmfwd.h
+ /usr/include/c++/14/bits/align.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocated_ptr.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/atomic_base.h
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/ios_base.h
+ /usr/include/c++/14/bits/locale_classes.h
+ /usr/include/c++/14/bits/locale_classes.tcc
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/shared_ptr.h
+ /usr/include/c++/14/bits/shared_ptr_atomic.h
+ /usr/include/c++/14/bits/shared_ptr_base.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/stl_algo.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_heap.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h
+ /usr/include/c++/14/bits/stl_relops.h
+ /usr/include/c++/14/bits/stl_tempbuf.h
+ /usr/include/c++/14/bits/stl_uninitialized.h
+ /usr/include/c++/14/bits/stream_iterator.h
+ /usr/include/c++/14/bits/streambuf.tcc
+ /usr/include/c++/14/bits/streambuf_iterator.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/uniform_int_dist.h
+ /usr/include/c++/14/bits/unique_ptr.h
+ /usr/include/c++/14/bits/uses_allocator.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cassert
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/aligned_buffer.h
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/atomicity.h
+ /usr/include/c++/14/ext/concurrence.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/iterator
+ /usr/include/c++/14/limits
+ /usr/include/c++/14/memory
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/streambuf
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/tuple
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/utility
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -196,16 +198,16 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o
/usr/include/sys/types.h
/usr/include/time.h
/usr/include/wchar.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/optional.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/string_view.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -229,6 +231,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o
/usr/include/bits/select.h
/usr/include/bits/setjmp.h
/usr/include/bits/stdint-intn.h
+ /usr/include/bits/stdint-least.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
@@ -273,132 +276,133 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o
/usr/include/bits/wchar.h
/usr/include/bits/wctype-wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/algorithm
- /usr/include/c++/13/backward/auto_ptr.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bit
- /usr/include/c++/13/bits/algorithmfwd.h
- /usr/include/c++/13/bits/align.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocated_ptr.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/atomic_base.h
- /usr/include/c++/13/bits/atomic_lockfree_defines.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/codecvt.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/ios_base.h
- /usr/include/c++/13/bits/locale_classes.h
- /usr/include/c++/13/bits/locale_classes.tcc
- /usr/include/c++/13/bits/locale_conv.h
- /usr/include/c++/13/bits/locale_facets.h
- /usr/include/c++/13/bits/locale_facets.tcc
- /usr/include/c++/13/bits/locale_facets_nonio.h
- /usr/include/c++/13/bits/locale_facets_nonio.tcc
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/shared_ptr.h
- /usr/include/c++/13/bits/shared_ptr_atomic.h
- /usr/include/c++/13/bits/shared_ptr_base.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/std_function.h
- /usr/include/c++/13/bits/stl_algo.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_bvector.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_heap.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stl_raw_storage_iter.h
- /usr/include/c++/13/bits/stl_relops.h
- /usr/include/c++/13/bits/stl_tempbuf.h
- /usr/include/c++/13/bits/stl_uninitialized.h
- /usr/include/c++/13/bits/stl_vector.h
- /usr/include/c++/13/bits/stream_iterator.h
- /usr/include/c++/13/bits/streambuf.tcc
- /usr/include/c++/13/bits/streambuf_iterator.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/uniform_int_dist.h
- /usr/include/c++/13/bits/unique_ptr.h
- /usr/include/c++/13/bits/uses_allocator.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/bits/vector.tcc
- /usr/include/c++/13/cassert
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstdint
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cstring
- /usr/include/c++/13/ctime
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/cwctype
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/aligned_buffer.h
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/atomicity.h
- /usr/include/c++/13/ext/concurrence.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/functional
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/iterator
- /usr/include/c++/13/locale
- /usr/include/c++/13/memory
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/streambuf
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/tuple
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/utility
- /usr/include/c++/13/vector
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h
+ /usr/include/c++/14/algorithm
+ /usr/include/c++/14/backward/auto_ptr.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bit
+ /usr/include/c++/14/bits/algorithmfwd.h
+ /usr/include/c++/14/bits/align.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocated_ptr.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/atomic_base.h
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/codecvt.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/ios_base.h
+ /usr/include/c++/14/bits/locale_classes.h
+ /usr/include/c++/14/bits/locale_classes.tcc
+ /usr/include/c++/14/bits/locale_conv.h
+ /usr/include/c++/14/bits/locale_facets.h
+ /usr/include/c++/14/bits/locale_facets.tcc
+ /usr/include/c++/14/bits/locale_facets_nonio.h
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/shared_ptr.h
+ /usr/include/c++/14/bits/shared_ptr_atomic.h
+ /usr/include/c++/14/bits/shared_ptr_base.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/std_function.h
+ /usr/include/c++/14/bits/stl_algo.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_bvector.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_heap.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h
+ /usr/include/c++/14/bits/stl_relops.h
+ /usr/include/c++/14/bits/stl_tempbuf.h
+ /usr/include/c++/14/bits/stl_uninitialized.h
+ /usr/include/c++/14/bits/stl_vector.h
+ /usr/include/c++/14/bits/stream_iterator.h
+ /usr/include/c++/14/bits/streambuf.tcc
+ /usr/include/c++/14/bits/streambuf_iterator.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/uniform_int_dist.h
+ /usr/include/c++/14/bits/unique_ptr.h
+ /usr/include/c++/14/bits/uses_allocator.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/vector.tcc
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cassert
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstdint
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cstring
+ /usr/include/c++/14/ctime
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/cwctype
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/aligned_buffer.h
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/atomicity.h
+ /usr/include/c++/14/ext/concurrence.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/functional
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/iterator
+ /usr/include/c++/14/locale
+ /usr/include/c++/14/memory
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/streambuf
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/tuple
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/utility
+ /usr/include/c++/14/vector
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -424,26 +428,26 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o
/usr/include/time.h
/usr/include/wchar.h
/usr/include/wctype.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/optional.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/string_view.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/config.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/algorithm.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/algorithm_split.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm_split.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -467,6 +471,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o
/usr/include/bits/select.h
/usr/include/bits/setjmp.h
/usr/include/bits/stdint-intn.h
+ /usr/include/bits/stdint-least.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
@@ -511,126 +516,127 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o
/usr/include/bits/wchar.h
/usr/include/bits/wctype-wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/algorithm
- /usr/include/c++/13/backward/auto_ptr.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bit
- /usr/include/c++/13/bits/algorithmfwd.h
- /usr/include/c++/13/bits/align.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocated_ptr.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/atomic_base.h
- /usr/include/c++/13/bits/atomic_lockfree_defines.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/codecvt.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/ios_base.h
- /usr/include/c++/13/bits/locale_classes.h
- /usr/include/c++/13/bits/locale_classes.tcc
- /usr/include/c++/13/bits/locale_conv.h
- /usr/include/c++/13/bits/locale_facets.h
- /usr/include/c++/13/bits/locale_facets.tcc
- /usr/include/c++/13/bits/locale_facets_nonio.h
- /usr/include/c++/13/bits/locale_facets_nonio.tcc
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/shared_ptr.h
- /usr/include/c++/13/bits/shared_ptr_atomic.h
- /usr/include/c++/13/bits/shared_ptr_base.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/stl_algo.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_heap.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stl_raw_storage_iter.h
- /usr/include/c++/13/bits/stl_relops.h
- /usr/include/c++/13/bits/stl_tempbuf.h
- /usr/include/c++/13/bits/stl_uninitialized.h
- /usr/include/c++/13/bits/stream_iterator.h
- /usr/include/c++/13/bits/streambuf.tcc
- /usr/include/c++/13/bits/streambuf_iterator.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/uniform_int_dist.h
- /usr/include/c++/13/bits/unique_ptr.h
- /usr/include/c++/13/bits/uses_allocator.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/cassert
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cstring
- /usr/include/c++/13/ctime
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/cwctype
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/aligned_buffer.h
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/atomicity.h
- /usr/include/c++/13/ext/concurrence.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/iterator
- /usr/include/c++/13/limits
- /usr/include/c++/13/locale
- /usr/include/c++/13/memory
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/streambuf
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/tuple
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/utility
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h
+ /usr/include/c++/14/algorithm
+ /usr/include/c++/14/backward/auto_ptr.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bit
+ /usr/include/c++/14/bits/algorithmfwd.h
+ /usr/include/c++/14/bits/align.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocated_ptr.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/atomic_base.h
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/codecvt.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/ios_base.h
+ /usr/include/c++/14/bits/locale_classes.h
+ /usr/include/c++/14/bits/locale_classes.tcc
+ /usr/include/c++/14/bits/locale_conv.h
+ /usr/include/c++/14/bits/locale_facets.h
+ /usr/include/c++/14/bits/locale_facets.tcc
+ /usr/include/c++/14/bits/locale_facets_nonio.h
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/shared_ptr.h
+ /usr/include/c++/14/bits/shared_ptr_atomic.h
+ /usr/include/c++/14/bits/shared_ptr_base.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/stl_algo.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_heap.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h
+ /usr/include/c++/14/bits/stl_relops.h
+ /usr/include/c++/14/bits/stl_tempbuf.h
+ /usr/include/c++/14/bits/stl_uninitialized.h
+ /usr/include/c++/14/bits/stream_iterator.h
+ /usr/include/c++/14/bits/streambuf.tcc
+ /usr/include/c++/14/bits/streambuf_iterator.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/uniform_int_dist.h
+ /usr/include/c++/14/bits/unique_ptr.h
+ /usr/include/c++/14/bits/uses_allocator.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cassert
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cstring
+ /usr/include/c++/14/ctime
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/cwctype
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/aligned_buffer.h
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/atomicity.h
+ /usr/include/c++/14/ext/concurrence.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/iterator
+ /usr/include/c++/14/limits
+ /usr/include/c++/14/locale
+ /usr/include/c++/14/memory
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/streambuf
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/tuple
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/utility
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -656,17 +662,17 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o
/usr/include/time.h
/usr/include/wchar.h
/usr/include/wctype.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/optional.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/string_view.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/grammar.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/grammar.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.hpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -690,6 +696,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o
/usr/include/bits/select.h
/usr/include/bits/setjmp.h
/usr/include/bits/stdint-intn.h
+ /usr/include/bits/stdint-least.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
@@ -734,126 +741,127 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o
/usr/include/bits/wchar.h
/usr/include/bits/wctype-wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/algorithm
- /usr/include/c++/13/backward/auto_ptr.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bit
- /usr/include/c++/13/bits/algorithmfwd.h
- /usr/include/c++/13/bits/align.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocated_ptr.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/atomic_base.h
- /usr/include/c++/13/bits/atomic_lockfree_defines.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/codecvt.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/ios_base.h
- /usr/include/c++/13/bits/locale_classes.h
- /usr/include/c++/13/bits/locale_classes.tcc
- /usr/include/c++/13/bits/locale_conv.h
- /usr/include/c++/13/bits/locale_facets.h
- /usr/include/c++/13/bits/locale_facets.tcc
- /usr/include/c++/13/bits/locale_facets_nonio.h
- /usr/include/c++/13/bits/locale_facets_nonio.tcc
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/shared_ptr.h
- /usr/include/c++/13/bits/shared_ptr_atomic.h
- /usr/include/c++/13/bits/shared_ptr_base.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/stl_algo.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_heap.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stl_raw_storage_iter.h
- /usr/include/c++/13/bits/stl_relops.h
- /usr/include/c++/13/bits/stl_tempbuf.h
- /usr/include/c++/13/bits/stl_uninitialized.h
- /usr/include/c++/13/bits/stream_iterator.h
- /usr/include/c++/13/bits/streambuf.tcc
- /usr/include/c++/13/bits/streambuf_iterator.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/uniform_int_dist.h
- /usr/include/c++/13/bits/unique_ptr.h
- /usr/include/c++/13/bits/uses_allocator.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/cassert
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cstring
- /usr/include/c++/13/ctime
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/cwctype
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/aligned_buffer.h
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/atomicity.h
- /usr/include/c++/13/ext/concurrence.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/iterator
- /usr/include/c++/13/limits
- /usr/include/c++/13/locale
- /usr/include/c++/13/memory
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/streambuf
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/tuple
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/utility
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h
+ /usr/include/c++/14/algorithm
+ /usr/include/c++/14/backward/auto_ptr.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bit
+ /usr/include/c++/14/bits/algorithmfwd.h
+ /usr/include/c++/14/bits/align.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocated_ptr.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/atomic_base.h
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/codecvt.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/ios_base.h
+ /usr/include/c++/14/bits/locale_classes.h
+ /usr/include/c++/14/bits/locale_classes.tcc
+ /usr/include/c++/14/bits/locale_conv.h
+ /usr/include/c++/14/bits/locale_facets.h
+ /usr/include/c++/14/bits/locale_facets.tcc
+ /usr/include/c++/14/bits/locale_facets_nonio.h
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/shared_ptr.h
+ /usr/include/c++/14/bits/shared_ptr_atomic.h
+ /usr/include/c++/14/bits/shared_ptr_base.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/stl_algo.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_heap.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h
+ /usr/include/c++/14/bits/stl_relops.h
+ /usr/include/c++/14/bits/stl_tempbuf.h
+ /usr/include/c++/14/bits/stl_uninitialized.h
+ /usr/include/c++/14/bits/stream_iterator.h
+ /usr/include/c++/14/bits/streambuf.tcc
+ /usr/include/c++/14/bits/streambuf_iterator.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/uniform_int_dist.h
+ /usr/include/c++/14/bits/unique_ptr.h
+ /usr/include/c++/14/bits/uses_allocator.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cassert
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cstring
+ /usr/include/c++/14/ctime
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/cwctype
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/aligned_buffer.h
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/atomicity.h
+ /usr/include/c++/14/ext/concurrence.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/iterator
+ /usr/include/c++/14/limits
+ /usr/include/c++/14/locale
+ /usr/include/c++/14/memory
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/streambuf
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/tuple
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/utility
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -879,17 +887,17 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o
/usr/include/time.h
/usr/include/wchar.h
/usr/include/wctype.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/optional.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/string_view.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/grammar.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/grammar.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_resolve.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -913,6 +921,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o
/usr/include/bits/select.h
/usr/include/bits/setjmp.h
/usr/include/bits/stdint-intn.h
+ /usr/include/bits/stdint-least.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
@@ -956,116 +965,117 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o
/usr/include/bits/waitstatus.h
/usr/include/bits/wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/algorithm
- /usr/include/c++/13/backward/auto_ptr.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bit
- /usr/include/c++/13/bits/algorithmfwd.h
- /usr/include/c++/13/bits/align.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocated_ptr.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/atomic_base.h
- /usr/include/c++/13/bits/atomic_lockfree_defines.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/ios_base.h
- /usr/include/c++/13/bits/locale_classes.h
- /usr/include/c++/13/bits/locale_classes.tcc
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/shared_ptr.h
- /usr/include/c++/13/bits/shared_ptr_atomic.h
- /usr/include/c++/13/bits/shared_ptr_base.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/std_function.h
- /usr/include/c++/13/bits/stl_algo.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_heap.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stl_raw_storage_iter.h
- /usr/include/c++/13/bits/stl_relops.h
- /usr/include/c++/13/bits/stl_tempbuf.h
- /usr/include/c++/13/bits/stl_uninitialized.h
- /usr/include/c++/13/bits/stream_iterator.h
- /usr/include/c++/13/bits/streambuf.tcc
- /usr/include/c++/13/bits/streambuf_iterator.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/uniform_int_dist.h
- /usr/include/c++/13/bits/unique_ptr.h
- /usr/include/c++/13/bits/uses_allocator.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/cassert
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstddef
- /usr/include/c++/13/cstdint
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cstring
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/aligned_buffer.h
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/atomicity.h
- /usr/include/c++/13/ext/concurrence.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/functional
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/iterator
- /usr/include/c++/13/memory
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/streambuf
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/tuple
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/utility
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/algorithm
+ /usr/include/c++/14/backward/auto_ptr.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bit
+ /usr/include/c++/14/bits/algorithmfwd.h
+ /usr/include/c++/14/bits/align.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocated_ptr.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/atomic_base.h
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/ios_base.h
+ /usr/include/c++/14/bits/locale_classes.h
+ /usr/include/c++/14/bits/locale_classes.tcc
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/shared_ptr.h
+ /usr/include/c++/14/bits/shared_ptr_atomic.h
+ /usr/include/c++/14/bits/shared_ptr_base.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/std_function.h
+ /usr/include/c++/14/bits/stl_algo.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_heap.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h
+ /usr/include/c++/14/bits/stl_relops.h
+ /usr/include/c++/14/bits/stl_tempbuf.h
+ /usr/include/c++/14/bits/stl_uninitialized.h
+ /usr/include/c++/14/bits/stream_iterator.h
+ /usr/include/c++/14/bits/streambuf.tcc
+ /usr/include/c++/14/bits/streambuf_iterator.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/uniform_int_dist.h
+ /usr/include/c++/14/bits/unique_ptr.h
+ /usr/include/c++/14/bits/uses_allocator.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cassert
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstddef
+ /usr/include/c++/14/cstdint
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cstring
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/aligned_buffer.h
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/atomicity.h
+ /usr/include/c++/14/ext/concurrence.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/functional
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/iterator
+ /usr/include/c++/14/memory
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/streambuf
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/tuple
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/utility
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -1089,24 +1099,24 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o
/usr/include/sys/types.h
/usr/include/time.h
/usr/include/wchar.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/optional.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/string_view.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/config.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/algorithm_find.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_resolve.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm_find.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.hpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -1130,6 +1140,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o
/usr/include/bits/select.h
/usr/include/bits/setjmp.h
/usr/include/bits/stdint-intn.h
+ /usr/include/bits/stdint-least.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
@@ -1174,132 +1185,133 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o
/usr/include/bits/wchar.h
/usr/include/bits/wctype-wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/algorithm
- /usr/include/c++/13/backward/auto_ptr.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bit
- /usr/include/c++/13/bits/algorithmfwd.h
- /usr/include/c++/13/bits/align.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocated_ptr.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/atomic_base.h
- /usr/include/c++/13/bits/atomic_lockfree_defines.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/codecvt.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/ios_base.h
- /usr/include/c++/13/bits/locale_classes.h
- /usr/include/c++/13/bits/locale_classes.tcc
- /usr/include/c++/13/bits/locale_conv.h
- /usr/include/c++/13/bits/locale_facets.h
- /usr/include/c++/13/bits/locale_facets.tcc
- /usr/include/c++/13/bits/locale_facets_nonio.h
- /usr/include/c++/13/bits/locale_facets_nonio.tcc
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/shared_ptr.h
- /usr/include/c++/13/bits/shared_ptr_atomic.h
- /usr/include/c++/13/bits/shared_ptr_base.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/std_function.h
- /usr/include/c++/13/bits/stl_algo.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_bvector.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_heap.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stl_raw_storage_iter.h
- /usr/include/c++/13/bits/stl_relops.h
- /usr/include/c++/13/bits/stl_tempbuf.h
- /usr/include/c++/13/bits/stl_uninitialized.h
- /usr/include/c++/13/bits/stl_vector.h
- /usr/include/c++/13/bits/stream_iterator.h
- /usr/include/c++/13/bits/streambuf.tcc
- /usr/include/c++/13/bits/streambuf_iterator.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/uniform_int_dist.h
- /usr/include/c++/13/bits/unique_ptr.h
- /usr/include/c++/13/bits/uses_allocator.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/bits/vector.tcc
- /usr/include/c++/13/cassert
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstdint
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cstring
- /usr/include/c++/13/ctime
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/cwctype
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/aligned_buffer.h
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/atomicity.h
- /usr/include/c++/13/ext/concurrence.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/functional
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/iterator
- /usr/include/c++/13/locale
- /usr/include/c++/13/memory
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/streambuf
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/tuple
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/utility
- /usr/include/c++/13/vector
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h
+ /usr/include/c++/14/algorithm
+ /usr/include/c++/14/backward/auto_ptr.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bit
+ /usr/include/c++/14/bits/algorithmfwd.h
+ /usr/include/c++/14/bits/align.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocated_ptr.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/atomic_base.h
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/codecvt.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/ios_base.h
+ /usr/include/c++/14/bits/locale_classes.h
+ /usr/include/c++/14/bits/locale_classes.tcc
+ /usr/include/c++/14/bits/locale_conv.h
+ /usr/include/c++/14/bits/locale_facets.h
+ /usr/include/c++/14/bits/locale_facets.tcc
+ /usr/include/c++/14/bits/locale_facets_nonio.h
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/shared_ptr.h
+ /usr/include/c++/14/bits/shared_ptr_atomic.h
+ /usr/include/c++/14/bits/shared_ptr_base.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/std_function.h
+ /usr/include/c++/14/bits/stl_algo.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_bvector.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_heap.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h
+ /usr/include/c++/14/bits/stl_relops.h
+ /usr/include/c++/14/bits/stl_tempbuf.h
+ /usr/include/c++/14/bits/stl_uninitialized.h
+ /usr/include/c++/14/bits/stl_vector.h
+ /usr/include/c++/14/bits/stream_iterator.h
+ /usr/include/c++/14/bits/streambuf.tcc
+ /usr/include/c++/14/bits/streambuf_iterator.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/uniform_int_dist.h
+ /usr/include/c++/14/bits/unique_ptr.h
+ /usr/include/c++/14/bits/uses_allocator.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/vector.tcc
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cassert
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstdint
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cstring
+ /usr/include/c++/14/ctime
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/cwctype
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/aligned_buffer.h
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/atomicity.h
+ /usr/include/c++/14/ext/concurrence.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/functional
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/iterator
+ /usr/include/c++/14/locale
+ /usr/include/c++/14/memory
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/streambuf
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/tuple
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/utility
+ /usr/include/c++/14/vector
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -1325,28 +1337,28 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o
/usr/include/time.h
/usr/include/wchar.h
/usr/include/wctype.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/optional.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/string_view.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/config.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/algorithm.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_resolve.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.hpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_builder.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -1370,6 +1382,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o
/usr/include/bits/select.h
/usr/include/bits/setjmp.h
/usr/include/bits/stdint-intn.h
+ /usr/include/bits/stdint-least.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
@@ -1414,128 +1427,129 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o
/usr/include/bits/wchar.h
/usr/include/bits/wctype-wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/algorithm
- /usr/include/c++/13/backward/auto_ptr.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bit
- /usr/include/c++/13/bits/algorithmfwd.h
- /usr/include/c++/13/bits/align.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocated_ptr.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/atomic_base.h
- /usr/include/c++/13/bits/atomic_lockfree_defines.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/codecvt.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/ios_base.h
- /usr/include/c++/13/bits/locale_classes.h
- /usr/include/c++/13/bits/locale_classes.tcc
- /usr/include/c++/13/bits/locale_conv.h
- /usr/include/c++/13/bits/locale_facets.h
- /usr/include/c++/13/bits/locale_facets.tcc
- /usr/include/c++/13/bits/locale_facets_nonio.h
- /usr/include/c++/13/bits/locale_facets_nonio.tcc
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/shared_ptr.h
- /usr/include/c++/13/bits/shared_ptr_atomic.h
- /usr/include/c++/13/bits/shared_ptr_base.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/std_function.h
- /usr/include/c++/13/bits/stl_algo.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_heap.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stl_raw_storage_iter.h
- /usr/include/c++/13/bits/stl_relops.h
- /usr/include/c++/13/bits/stl_tempbuf.h
- /usr/include/c++/13/bits/stl_uninitialized.h
- /usr/include/c++/13/bits/stream_iterator.h
- /usr/include/c++/13/bits/streambuf.tcc
- /usr/include/c++/13/bits/streambuf_iterator.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/uniform_int_dist.h
- /usr/include/c++/13/bits/unique_ptr.h
- /usr/include/c++/13/bits/uses_allocator.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/cassert
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstdint
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cstring
- /usr/include/c++/13/ctime
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/cwctype
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/aligned_buffer.h
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/atomicity.h
- /usr/include/c++/13/ext/concurrence.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/functional
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/iterator
- /usr/include/c++/13/locale
- /usr/include/c++/13/memory
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/streambuf
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/tuple
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/utility
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h
+ /usr/include/c++/14/algorithm
+ /usr/include/c++/14/backward/auto_ptr.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bit
+ /usr/include/c++/14/bits/algorithmfwd.h
+ /usr/include/c++/14/bits/align.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocated_ptr.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/atomic_base.h
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/codecvt.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/ios_base.h
+ /usr/include/c++/14/bits/locale_classes.h
+ /usr/include/c++/14/bits/locale_classes.tcc
+ /usr/include/c++/14/bits/locale_conv.h
+ /usr/include/c++/14/bits/locale_facets.h
+ /usr/include/c++/14/bits/locale_facets.tcc
+ /usr/include/c++/14/bits/locale_facets_nonio.h
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/shared_ptr.h
+ /usr/include/c++/14/bits/shared_ptr_atomic.h
+ /usr/include/c++/14/bits/shared_ptr_base.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/std_function.h
+ /usr/include/c++/14/bits/stl_algo.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_heap.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h
+ /usr/include/c++/14/bits/stl_relops.h
+ /usr/include/c++/14/bits/stl_tempbuf.h
+ /usr/include/c++/14/bits/stl_uninitialized.h
+ /usr/include/c++/14/bits/stream_iterator.h
+ /usr/include/c++/14/bits/streambuf.tcc
+ /usr/include/c++/14/bits/streambuf_iterator.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/uniform_int_dist.h
+ /usr/include/c++/14/bits/unique_ptr.h
+ /usr/include/c++/14/bits/uses_allocator.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cassert
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstdint
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cstring
+ /usr/include/c++/14/ctime
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/cwctype
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/aligned_buffer.h
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/atomicity.h
+ /usr/include/c++/14/ext/concurrence.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/functional
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/iterator
+ /usr/include/c++/14/locale
+ /usr/include/c++/14/memory
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/streambuf
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/tuple
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/utility
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -1561,25 +1575,25 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o
/usr/include/time.h
/usr/include/wchar.h
/usr/include/wctype.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/optional.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/string_view.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/config.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/algorithm.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_errors.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -1634,73 +1648,74 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o
/usr/include/bits/waitstatus.h
/usr/include/bits/wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -1717,8 +1732,8 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o
/usr/include/sys/select.h
/usr/include/sys/types.h
/usr/include/wchar.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/config.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make
index 095ca0a14b..ba32393472 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make
@@ -1,5 +1,5 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/detail/uri_advance_parts.cpp \
/usr/include/alloca.h \
@@ -25,6 +25,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: t
/usr/include/bits/select.h \
/usr/include/bits/setjmp.h \
/usr/include/bits/stdint-intn.h \
+ /usr/include/bits/stdint-least.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/bits/stdio.h \
/usr/include/bits/stdio_lim.h \
@@ -68,112 +69,113 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: t
/usr/include/bits/waitstatus.h \
/usr/include/bits/wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/algorithm \
- /usr/include/c++/13/backward/auto_ptr.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bit \
- /usr/include/c++/13/bits/algorithmfwd.h \
- /usr/include/c++/13/bits/align.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocated_ptr.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/atomic_base.h \
- /usr/include/c++/13/bits/atomic_lockfree_defines.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/ios_base.h \
- /usr/include/c++/13/bits/locale_classes.h \
- /usr/include/c++/13/bits/locale_classes.tcc \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/shared_ptr.h \
- /usr/include/c++/13/bits/shared_ptr_atomic.h \
- /usr/include/c++/13/bits/shared_ptr_base.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/stl_algo.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_heap.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stl_raw_storage_iter.h \
- /usr/include/c++/13/bits/stl_relops.h \
- /usr/include/c++/13/bits/stl_tempbuf.h \
- /usr/include/c++/13/bits/stl_uninitialized.h \
- /usr/include/c++/13/bits/stream_iterator.h \
- /usr/include/c++/13/bits/streambuf.tcc \
- /usr/include/c++/13/bits/streambuf_iterator.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/uniform_int_dist.h \
- /usr/include/c++/13/bits/unique_ptr.h \
- /usr/include/c++/13/bits/uses_allocator.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/cassert \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/aligned_buffer.h \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/atomicity.h \
- /usr/include/c++/13/ext/concurrence.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/iterator \
- /usr/include/c++/13/limits \
- /usr/include/c++/13/memory \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/streambuf \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/tuple \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/utility \
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/algorithm \
+ /usr/include/c++/14/backward/auto_ptr.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bit \
+ /usr/include/c++/14/bits/algorithmfwd.h \
+ /usr/include/c++/14/bits/align.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocated_ptr.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/atomic_base.h \
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/ios_base.h \
+ /usr/include/c++/14/bits/locale_classes.h \
+ /usr/include/c++/14/bits/locale_classes.tcc \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/shared_ptr.h \
+ /usr/include/c++/14/bits/shared_ptr_atomic.h \
+ /usr/include/c++/14/bits/shared_ptr_base.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/stl_algo.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_heap.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/14/bits/stl_relops.h \
+ /usr/include/c++/14/bits/stl_tempbuf.h \
+ /usr/include/c++/14/bits/stl_uninitialized.h \
+ /usr/include/c++/14/bits/stream_iterator.h \
+ /usr/include/c++/14/bits/streambuf.tcc \
+ /usr/include/c++/14/bits/streambuf_iterator.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/uniform_int_dist.h \
+ /usr/include/c++/14/bits/unique_ptr.h \
+ /usr/include/c++/14/bits/uses_allocator.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cassert \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/aligned_buffer.h \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/atomicity.h \
+ /usr/include/c++/14/ext/concurrence.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/iterator \
+ /usr/include/c++/14/limits \
+ /usr/include/c++/14/memory \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/streambuf \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/tuple \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/utility \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -195,9 +197,9 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: t
/usr/include/sys/types.h \
/usr/include/time.h \
/usr/include/wchar.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h \
third_party/uri/include/network/optional.hpp \
third_party/uri/include/network/string_view.hpp \
third_party/uri/include/network/uri/detail/uri_parts.hpp \
@@ -227,6 +229,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third
/usr/include/bits/select.h \
/usr/include/bits/setjmp.h \
/usr/include/bits/stdint-intn.h \
+ /usr/include/bits/stdint-least.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/bits/stdio.h \
/usr/include/bits/stdio_lim.h \
@@ -271,132 +274,133 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third
/usr/include/bits/wchar.h \
/usr/include/bits/wctype-wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/algorithm \
- /usr/include/c++/13/backward/auto_ptr.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bit \
- /usr/include/c++/13/bits/algorithmfwd.h \
- /usr/include/c++/13/bits/align.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocated_ptr.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/atomic_base.h \
- /usr/include/c++/13/bits/atomic_lockfree_defines.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/codecvt.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/ios_base.h \
- /usr/include/c++/13/bits/locale_classes.h \
- /usr/include/c++/13/bits/locale_classes.tcc \
- /usr/include/c++/13/bits/locale_conv.h \
- /usr/include/c++/13/bits/locale_facets.h \
- /usr/include/c++/13/bits/locale_facets.tcc \
- /usr/include/c++/13/bits/locale_facets_nonio.h \
- /usr/include/c++/13/bits/locale_facets_nonio.tcc \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/shared_ptr.h \
- /usr/include/c++/13/bits/shared_ptr_atomic.h \
- /usr/include/c++/13/bits/shared_ptr_base.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/std_function.h \
- /usr/include/c++/13/bits/stl_algo.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_bvector.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_heap.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stl_raw_storage_iter.h \
- /usr/include/c++/13/bits/stl_relops.h \
- /usr/include/c++/13/bits/stl_tempbuf.h \
- /usr/include/c++/13/bits/stl_uninitialized.h \
- /usr/include/c++/13/bits/stl_vector.h \
- /usr/include/c++/13/bits/stream_iterator.h \
- /usr/include/c++/13/bits/streambuf.tcc \
- /usr/include/c++/13/bits/streambuf_iterator.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/uniform_int_dist.h \
- /usr/include/c++/13/bits/unique_ptr.h \
- /usr/include/c++/13/bits/uses_allocator.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/bits/vector.tcc \
- /usr/include/c++/13/cassert \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstdint \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cstring \
- /usr/include/c++/13/ctime \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/cwctype \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/aligned_buffer.h \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/atomicity.h \
- /usr/include/c++/13/ext/concurrence.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/functional \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/iterator \
- /usr/include/c++/13/locale \
- /usr/include/c++/13/memory \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/streambuf \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/tuple \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/utility \
- /usr/include/c++/13/vector \
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h \
+ /usr/include/c++/14/algorithm \
+ /usr/include/c++/14/backward/auto_ptr.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bit \
+ /usr/include/c++/14/bits/algorithmfwd.h \
+ /usr/include/c++/14/bits/align.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocated_ptr.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/atomic_base.h \
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/codecvt.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/ios_base.h \
+ /usr/include/c++/14/bits/locale_classes.h \
+ /usr/include/c++/14/bits/locale_classes.tcc \
+ /usr/include/c++/14/bits/locale_conv.h \
+ /usr/include/c++/14/bits/locale_facets.h \
+ /usr/include/c++/14/bits/locale_facets.tcc \
+ /usr/include/c++/14/bits/locale_facets_nonio.h \
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/shared_ptr.h \
+ /usr/include/c++/14/bits/shared_ptr_atomic.h \
+ /usr/include/c++/14/bits/shared_ptr_base.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/std_function.h \
+ /usr/include/c++/14/bits/stl_algo.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_bvector.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_heap.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/14/bits/stl_relops.h \
+ /usr/include/c++/14/bits/stl_tempbuf.h \
+ /usr/include/c++/14/bits/stl_uninitialized.h \
+ /usr/include/c++/14/bits/stl_vector.h \
+ /usr/include/c++/14/bits/stream_iterator.h \
+ /usr/include/c++/14/bits/streambuf.tcc \
+ /usr/include/c++/14/bits/streambuf_iterator.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/uniform_int_dist.h \
+ /usr/include/c++/14/bits/unique_ptr.h \
+ /usr/include/c++/14/bits/uses_allocator.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/vector.tcc \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cassert \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstdint \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cstring \
+ /usr/include/c++/14/ctime \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/cwctype \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/aligned_buffer.h \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/atomicity.h \
+ /usr/include/c++/14/ext/concurrence.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/functional \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/iterator \
+ /usr/include/c++/14/locale \
+ /usr/include/c++/14/memory \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/streambuf \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/tuple \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/utility \
+ /usr/include/c++/14/vector \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -422,9 +426,9 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third
/usr/include/time.h \
/usr/include/wchar.h \
/usr/include/wctype.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h \
third_party/uri/include/network/optional.hpp \
third_party/uri/include/network/string_view.hpp \
third_party/uri/include/network/uri/config.hpp \
@@ -464,6 +468,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_par
/usr/include/bits/select.h \
/usr/include/bits/setjmp.h \
/usr/include/bits/stdint-intn.h \
+ /usr/include/bits/stdint-least.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/bits/stdio.h \
/usr/include/bits/stdio_lim.h \
@@ -508,126 +513,127 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_par
/usr/include/bits/wchar.h \
/usr/include/bits/wctype-wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/algorithm \
- /usr/include/c++/13/backward/auto_ptr.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bit \
- /usr/include/c++/13/bits/algorithmfwd.h \
- /usr/include/c++/13/bits/align.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocated_ptr.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/atomic_base.h \
- /usr/include/c++/13/bits/atomic_lockfree_defines.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/codecvt.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/ios_base.h \
- /usr/include/c++/13/bits/locale_classes.h \
- /usr/include/c++/13/bits/locale_classes.tcc \
- /usr/include/c++/13/bits/locale_conv.h \
- /usr/include/c++/13/bits/locale_facets.h \
- /usr/include/c++/13/bits/locale_facets.tcc \
- /usr/include/c++/13/bits/locale_facets_nonio.h \
- /usr/include/c++/13/bits/locale_facets_nonio.tcc \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/shared_ptr.h \
- /usr/include/c++/13/bits/shared_ptr_atomic.h \
- /usr/include/c++/13/bits/shared_ptr_base.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/stl_algo.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_heap.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stl_raw_storage_iter.h \
- /usr/include/c++/13/bits/stl_relops.h \
- /usr/include/c++/13/bits/stl_tempbuf.h \
- /usr/include/c++/13/bits/stl_uninitialized.h \
- /usr/include/c++/13/bits/stream_iterator.h \
- /usr/include/c++/13/bits/streambuf.tcc \
- /usr/include/c++/13/bits/streambuf_iterator.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/uniform_int_dist.h \
- /usr/include/c++/13/bits/unique_ptr.h \
- /usr/include/c++/13/bits/uses_allocator.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/cassert \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cstring \
- /usr/include/c++/13/ctime \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/cwctype \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/aligned_buffer.h \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/atomicity.h \
- /usr/include/c++/13/ext/concurrence.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/iterator \
- /usr/include/c++/13/limits \
- /usr/include/c++/13/locale \
- /usr/include/c++/13/memory \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/streambuf \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/tuple \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/utility \
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h \
+ /usr/include/c++/14/algorithm \
+ /usr/include/c++/14/backward/auto_ptr.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bit \
+ /usr/include/c++/14/bits/algorithmfwd.h \
+ /usr/include/c++/14/bits/align.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocated_ptr.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/atomic_base.h \
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/codecvt.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/ios_base.h \
+ /usr/include/c++/14/bits/locale_classes.h \
+ /usr/include/c++/14/bits/locale_classes.tcc \
+ /usr/include/c++/14/bits/locale_conv.h \
+ /usr/include/c++/14/bits/locale_facets.h \
+ /usr/include/c++/14/bits/locale_facets.tcc \
+ /usr/include/c++/14/bits/locale_facets_nonio.h \
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/shared_ptr.h \
+ /usr/include/c++/14/bits/shared_ptr_atomic.h \
+ /usr/include/c++/14/bits/shared_ptr_base.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/stl_algo.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_heap.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/14/bits/stl_relops.h \
+ /usr/include/c++/14/bits/stl_tempbuf.h \
+ /usr/include/c++/14/bits/stl_uninitialized.h \
+ /usr/include/c++/14/bits/stream_iterator.h \
+ /usr/include/c++/14/bits/streambuf.tcc \
+ /usr/include/c++/14/bits/streambuf_iterator.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/uniform_int_dist.h \
+ /usr/include/c++/14/bits/unique_ptr.h \
+ /usr/include/c++/14/bits/uses_allocator.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cassert \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cstring \
+ /usr/include/c++/14/ctime \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/cwctype \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/aligned_buffer.h \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/atomicity.h \
+ /usr/include/c++/14/ext/concurrence.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/iterator \
+ /usr/include/c++/14/limits \
+ /usr/include/c++/14/locale \
+ /usr/include/c++/14/memory \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/streambuf \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/tuple \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/utility \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -653,9 +659,9 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_par
/usr/include/time.h \
/usr/include/wchar.h \
/usr/include/wctype.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h \
third_party/uri/include/network/optional.hpp \
third_party/uri/include/network/string_view.hpp \
third_party/uri/include/network/uri/detail/uri_parts.hpp \
@@ -686,6 +692,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o:
/usr/include/bits/select.h \
/usr/include/bits/setjmp.h \
/usr/include/bits/stdint-intn.h \
+ /usr/include/bits/stdint-least.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/bits/stdio.h \
/usr/include/bits/stdio_lim.h \
@@ -730,126 +737,127 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o:
/usr/include/bits/wchar.h \
/usr/include/bits/wctype-wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/algorithm \
- /usr/include/c++/13/backward/auto_ptr.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bit \
- /usr/include/c++/13/bits/algorithmfwd.h \
- /usr/include/c++/13/bits/align.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocated_ptr.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/atomic_base.h \
- /usr/include/c++/13/bits/atomic_lockfree_defines.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/codecvt.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/ios_base.h \
- /usr/include/c++/13/bits/locale_classes.h \
- /usr/include/c++/13/bits/locale_classes.tcc \
- /usr/include/c++/13/bits/locale_conv.h \
- /usr/include/c++/13/bits/locale_facets.h \
- /usr/include/c++/13/bits/locale_facets.tcc \
- /usr/include/c++/13/bits/locale_facets_nonio.h \
- /usr/include/c++/13/bits/locale_facets_nonio.tcc \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/shared_ptr.h \
- /usr/include/c++/13/bits/shared_ptr_atomic.h \
- /usr/include/c++/13/bits/shared_ptr_base.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/stl_algo.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_heap.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stl_raw_storage_iter.h \
- /usr/include/c++/13/bits/stl_relops.h \
- /usr/include/c++/13/bits/stl_tempbuf.h \
- /usr/include/c++/13/bits/stl_uninitialized.h \
- /usr/include/c++/13/bits/stream_iterator.h \
- /usr/include/c++/13/bits/streambuf.tcc \
- /usr/include/c++/13/bits/streambuf_iterator.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/uniform_int_dist.h \
- /usr/include/c++/13/bits/unique_ptr.h \
- /usr/include/c++/13/bits/uses_allocator.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/cassert \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cstring \
- /usr/include/c++/13/ctime \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/cwctype \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/aligned_buffer.h \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/atomicity.h \
- /usr/include/c++/13/ext/concurrence.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/iterator \
- /usr/include/c++/13/limits \
- /usr/include/c++/13/locale \
- /usr/include/c++/13/memory \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/streambuf \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/tuple \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/utility \
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h \
+ /usr/include/c++/14/algorithm \
+ /usr/include/c++/14/backward/auto_ptr.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bit \
+ /usr/include/c++/14/bits/algorithmfwd.h \
+ /usr/include/c++/14/bits/align.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocated_ptr.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/atomic_base.h \
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/codecvt.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/ios_base.h \
+ /usr/include/c++/14/bits/locale_classes.h \
+ /usr/include/c++/14/bits/locale_classes.tcc \
+ /usr/include/c++/14/bits/locale_conv.h \
+ /usr/include/c++/14/bits/locale_facets.h \
+ /usr/include/c++/14/bits/locale_facets.tcc \
+ /usr/include/c++/14/bits/locale_facets_nonio.h \
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/shared_ptr.h \
+ /usr/include/c++/14/bits/shared_ptr_atomic.h \
+ /usr/include/c++/14/bits/shared_ptr_base.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/stl_algo.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_heap.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/14/bits/stl_relops.h \
+ /usr/include/c++/14/bits/stl_tempbuf.h \
+ /usr/include/c++/14/bits/stl_uninitialized.h \
+ /usr/include/c++/14/bits/stream_iterator.h \
+ /usr/include/c++/14/bits/streambuf.tcc \
+ /usr/include/c++/14/bits/streambuf_iterator.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/uniform_int_dist.h \
+ /usr/include/c++/14/bits/unique_ptr.h \
+ /usr/include/c++/14/bits/uses_allocator.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cassert \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cstring \
+ /usr/include/c++/14/ctime \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/cwctype \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/aligned_buffer.h \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/atomicity.h \
+ /usr/include/c++/14/ext/concurrence.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/iterator \
+ /usr/include/c++/14/limits \
+ /usr/include/c++/14/locale \
+ /usr/include/c++/14/memory \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/streambuf \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/tuple \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/utility \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -875,9 +883,9 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o:
/usr/include/time.h \
/usr/include/wchar.h \
/usr/include/wctype.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h \
third_party/uri/include/network/optional.hpp \
third_party/uri/include/network/string_view.hpp \
third_party/uri/include/network/uri/detail/uri_parts.hpp \
@@ -908,6 +916,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_p
/usr/include/bits/select.h \
/usr/include/bits/setjmp.h \
/usr/include/bits/stdint-intn.h \
+ /usr/include/bits/stdint-least.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/bits/stdio.h \
/usr/include/bits/stdio_lim.h \
@@ -951,116 +960,117 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_p
/usr/include/bits/waitstatus.h \
/usr/include/bits/wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/algorithm \
- /usr/include/c++/13/backward/auto_ptr.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bit \
- /usr/include/c++/13/bits/algorithmfwd.h \
- /usr/include/c++/13/bits/align.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocated_ptr.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/atomic_base.h \
- /usr/include/c++/13/bits/atomic_lockfree_defines.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/ios_base.h \
- /usr/include/c++/13/bits/locale_classes.h \
- /usr/include/c++/13/bits/locale_classes.tcc \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/shared_ptr.h \
- /usr/include/c++/13/bits/shared_ptr_atomic.h \
- /usr/include/c++/13/bits/shared_ptr_base.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/std_function.h \
- /usr/include/c++/13/bits/stl_algo.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_heap.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stl_raw_storage_iter.h \
- /usr/include/c++/13/bits/stl_relops.h \
- /usr/include/c++/13/bits/stl_tempbuf.h \
- /usr/include/c++/13/bits/stl_uninitialized.h \
- /usr/include/c++/13/bits/stream_iterator.h \
- /usr/include/c++/13/bits/streambuf.tcc \
- /usr/include/c++/13/bits/streambuf_iterator.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/uniform_int_dist.h \
- /usr/include/c++/13/bits/unique_ptr.h \
- /usr/include/c++/13/bits/uses_allocator.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/cassert \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstddef \
- /usr/include/c++/13/cstdint \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cstring \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/aligned_buffer.h \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/atomicity.h \
- /usr/include/c++/13/ext/concurrence.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/functional \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/iterator \
- /usr/include/c++/13/memory \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/streambuf \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/tuple \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/utility \
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/algorithm \
+ /usr/include/c++/14/backward/auto_ptr.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bit \
+ /usr/include/c++/14/bits/algorithmfwd.h \
+ /usr/include/c++/14/bits/align.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocated_ptr.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/atomic_base.h \
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/ios_base.h \
+ /usr/include/c++/14/bits/locale_classes.h \
+ /usr/include/c++/14/bits/locale_classes.tcc \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/shared_ptr.h \
+ /usr/include/c++/14/bits/shared_ptr_atomic.h \
+ /usr/include/c++/14/bits/shared_ptr_base.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/std_function.h \
+ /usr/include/c++/14/bits/stl_algo.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_heap.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/14/bits/stl_relops.h \
+ /usr/include/c++/14/bits/stl_tempbuf.h \
+ /usr/include/c++/14/bits/stl_uninitialized.h \
+ /usr/include/c++/14/bits/stream_iterator.h \
+ /usr/include/c++/14/bits/streambuf.tcc \
+ /usr/include/c++/14/bits/streambuf_iterator.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/uniform_int_dist.h \
+ /usr/include/c++/14/bits/unique_ptr.h \
+ /usr/include/c++/14/bits/uses_allocator.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cassert \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstddef \
+ /usr/include/c++/14/cstdint \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cstring \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/aligned_buffer.h \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/atomicity.h \
+ /usr/include/c++/14/ext/concurrence.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/functional \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/iterator \
+ /usr/include/c++/14/memory \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/streambuf \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/tuple \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/utility \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -1084,9 +1094,9 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_p
/usr/include/sys/types.h \
/usr/include/time.h \
/usr/include/wchar.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h \
third_party/uri/include/network/optional.hpp \
third_party/uri/include/network/string_view.hpp \
third_party/uri/include/network/uri/config.hpp \
@@ -1124,6 +1134,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/ur
/usr/include/bits/select.h \
/usr/include/bits/setjmp.h \
/usr/include/bits/stdint-intn.h \
+ /usr/include/bits/stdint-least.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/bits/stdio.h \
/usr/include/bits/stdio_lim.h \
@@ -1168,132 +1179,133 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/ur
/usr/include/bits/wchar.h \
/usr/include/bits/wctype-wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/algorithm \
- /usr/include/c++/13/backward/auto_ptr.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bit \
- /usr/include/c++/13/bits/algorithmfwd.h \
- /usr/include/c++/13/bits/align.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocated_ptr.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/atomic_base.h \
- /usr/include/c++/13/bits/atomic_lockfree_defines.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/codecvt.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/ios_base.h \
- /usr/include/c++/13/bits/locale_classes.h \
- /usr/include/c++/13/bits/locale_classes.tcc \
- /usr/include/c++/13/bits/locale_conv.h \
- /usr/include/c++/13/bits/locale_facets.h \
- /usr/include/c++/13/bits/locale_facets.tcc \
- /usr/include/c++/13/bits/locale_facets_nonio.h \
- /usr/include/c++/13/bits/locale_facets_nonio.tcc \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/shared_ptr.h \
- /usr/include/c++/13/bits/shared_ptr_atomic.h \
- /usr/include/c++/13/bits/shared_ptr_base.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/std_function.h \
- /usr/include/c++/13/bits/stl_algo.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_bvector.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_heap.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stl_raw_storage_iter.h \
- /usr/include/c++/13/bits/stl_relops.h \
- /usr/include/c++/13/bits/stl_tempbuf.h \
- /usr/include/c++/13/bits/stl_uninitialized.h \
- /usr/include/c++/13/bits/stl_vector.h \
- /usr/include/c++/13/bits/stream_iterator.h \
- /usr/include/c++/13/bits/streambuf.tcc \
- /usr/include/c++/13/bits/streambuf_iterator.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/uniform_int_dist.h \
- /usr/include/c++/13/bits/unique_ptr.h \
- /usr/include/c++/13/bits/uses_allocator.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/bits/vector.tcc \
- /usr/include/c++/13/cassert \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstdint \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cstring \
- /usr/include/c++/13/ctime \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/cwctype \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/aligned_buffer.h \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/atomicity.h \
- /usr/include/c++/13/ext/concurrence.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/functional \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/iterator \
- /usr/include/c++/13/locale \
- /usr/include/c++/13/memory \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/streambuf \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/tuple \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/utility \
- /usr/include/c++/13/vector \
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h \
+ /usr/include/c++/14/algorithm \
+ /usr/include/c++/14/backward/auto_ptr.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bit \
+ /usr/include/c++/14/bits/algorithmfwd.h \
+ /usr/include/c++/14/bits/align.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocated_ptr.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/atomic_base.h \
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/codecvt.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/ios_base.h \
+ /usr/include/c++/14/bits/locale_classes.h \
+ /usr/include/c++/14/bits/locale_classes.tcc \
+ /usr/include/c++/14/bits/locale_conv.h \
+ /usr/include/c++/14/bits/locale_facets.h \
+ /usr/include/c++/14/bits/locale_facets.tcc \
+ /usr/include/c++/14/bits/locale_facets_nonio.h \
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/shared_ptr.h \
+ /usr/include/c++/14/bits/shared_ptr_atomic.h \
+ /usr/include/c++/14/bits/shared_ptr_base.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/std_function.h \
+ /usr/include/c++/14/bits/stl_algo.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_bvector.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_heap.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/14/bits/stl_relops.h \
+ /usr/include/c++/14/bits/stl_tempbuf.h \
+ /usr/include/c++/14/bits/stl_uninitialized.h \
+ /usr/include/c++/14/bits/stl_vector.h \
+ /usr/include/c++/14/bits/stream_iterator.h \
+ /usr/include/c++/14/bits/streambuf.tcc \
+ /usr/include/c++/14/bits/streambuf_iterator.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/uniform_int_dist.h \
+ /usr/include/c++/14/bits/unique_ptr.h \
+ /usr/include/c++/14/bits/uses_allocator.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/vector.tcc \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cassert \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstdint \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cstring \
+ /usr/include/c++/14/ctime \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/cwctype \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/aligned_buffer.h \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/atomicity.h \
+ /usr/include/c++/14/ext/concurrence.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/functional \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/iterator \
+ /usr/include/c++/14/locale \
+ /usr/include/c++/14/memory \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/streambuf \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/tuple \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/utility \
+ /usr/include/c++/14/vector \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -1319,9 +1331,9 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/ur
/usr/include/time.h \
/usr/include/wchar.h \
/usr/include/wctype.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h \
third_party/uri/include/network/optional.hpp \
third_party/uri/include/network/string_view.hpp \
third_party/uri/include/network/uri/config.hpp \
@@ -1363,6 +1375,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/ur
/usr/include/bits/select.h \
/usr/include/bits/setjmp.h \
/usr/include/bits/stdint-intn.h \
+ /usr/include/bits/stdint-least.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/bits/stdio.h \
/usr/include/bits/stdio_lim.h \
@@ -1407,128 +1420,129 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/ur
/usr/include/bits/wchar.h \
/usr/include/bits/wctype-wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/algorithm \
- /usr/include/c++/13/backward/auto_ptr.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bit \
- /usr/include/c++/13/bits/algorithmfwd.h \
- /usr/include/c++/13/bits/align.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocated_ptr.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/atomic_base.h \
- /usr/include/c++/13/bits/atomic_lockfree_defines.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/codecvt.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/ios_base.h \
- /usr/include/c++/13/bits/locale_classes.h \
- /usr/include/c++/13/bits/locale_classes.tcc \
- /usr/include/c++/13/bits/locale_conv.h \
- /usr/include/c++/13/bits/locale_facets.h \
- /usr/include/c++/13/bits/locale_facets.tcc \
- /usr/include/c++/13/bits/locale_facets_nonio.h \
- /usr/include/c++/13/bits/locale_facets_nonio.tcc \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/shared_ptr.h \
- /usr/include/c++/13/bits/shared_ptr_atomic.h \
- /usr/include/c++/13/bits/shared_ptr_base.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/std_function.h \
- /usr/include/c++/13/bits/stl_algo.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_heap.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stl_raw_storage_iter.h \
- /usr/include/c++/13/bits/stl_relops.h \
- /usr/include/c++/13/bits/stl_tempbuf.h \
- /usr/include/c++/13/bits/stl_uninitialized.h \
- /usr/include/c++/13/bits/stream_iterator.h \
- /usr/include/c++/13/bits/streambuf.tcc \
- /usr/include/c++/13/bits/streambuf_iterator.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/uniform_int_dist.h \
- /usr/include/c++/13/bits/unique_ptr.h \
- /usr/include/c++/13/bits/uses_allocator.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/cassert \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstdint \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cstring \
- /usr/include/c++/13/ctime \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/cwctype \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/aligned_buffer.h \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/atomicity.h \
- /usr/include/c++/13/ext/concurrence.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/functional \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/iterator \
- /usr/include/c++/13/locale \
- /usr/include/c++/13/memory \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/streambuf \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/tuple \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/utility \
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h \
+ /usr/include/c++/14/algorithm \
+ /usr/include/c++/14/backward/auto_ptr.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bit \
+ /usr/include/c++/14/bits/algorithmfwd.h \
+ /usr/include/c++/14/bits/align.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocated_ptr.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/atomic_base.h \
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/codecvt.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/ios_base.h \
+ /usr/include/c++/14/bits/locale_classes.h \
+ /usr/include/c++/14/bits/locale_classes.tcc \
+ /usr/include/c++/14/bits/locale_conv.h \
+ /usr/include/c++/14/bits/locale_facets.h \
+ /usr/include/c++/14/bits/locale_facets.tcc \
+ /usr/include/c++/14/bits/locale_facets_nonio.h \
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/shared_ptr.h \
+ /usr/include/c++/14/bits/shared_ptr_atomic.h \
+ /usr/include/c++/14/bits/shared_ptr_base.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/std_function.h \
+ /usr/include/c++/14/bits/stl_algo.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_heap.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/14/bits/stl_relops.h \
+ /usr/include/c++/14/bits/stl_tempbuf.h \
+ /usr/include/c++/14/bits/stl_uninitialized.h \
+ /usr/include/c++/14/bits/stream_iterator.h \
+ /usr/include/c++/14/bits/streambuf.tcc \
+ /usr/include/c++/14/bits/streambuf_iterator.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/uniform_int_dist.h \
+ /usr/include/c++/14/bits/unique_ptr.h \
+ /usr/include/c++/14/bits/uses_allocator.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cassert \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstdint \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cstring \
+ /usr/include/c++/14/ctime \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/cwctype \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/aligned_buffer.h \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/atomicity.h \
+ /usr/include/c++/14/ext/concurrence.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/functional \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/iterator \
+ /usr/include/c++/14/locale \
+ /usr/include/c++/14/memory \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/streambuf \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/tuple \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/utility \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -1554,9 +1568,9 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/ur
/usr/include/time.h \
/usr/include/wchar.h \
/usr/include/wctype.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h \
third_party/uri/include/network/optional.hpp \
third_party/uri/include/network/string_view.hpp \
third_party/uri/include/network/uri/config.hpp \
@@ -1626,73 +1640,74 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri
/usr/include/bits/waitstatus.h \
/usr/include/bits/wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -1709,187 +1724,181 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri
/usr/include/sys/select.h \
/usr/include/sys/types.h \
/usr/include/wchar.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
third_party/uri/include/network/uri/config.hpp \
third_party/uri/include/network/uri/uri_errors.hpp
-third_party/uri/src/uri_errors.cpp:
+third_party/uri/src/uri_builder.cpp:
third_party/uri/src/uri.cpp:
-third_party/uri/src/detail/algorithm_find.hpp:
+third_party/uri/src/detail/uri_resolve.hpp:
-third_party/uri/src/detail/uri_resolve.cpp:
+third_party/uri/src/detail/algorithm_find.hpp:
third_party/uri/src/detail/uri_parse_authority.hpp:
+third_party/uri/src/detail/uri_parse.hpp:
+
third_party/uri/src/detail/grammar.hpp:
third_party/uri/src/detail/uri_parse.cpp:
-third_party/uri/src/detail/uri_percent_encode.hpp:
-
-third_party/uri/src/detail/algorithm_split.hpp:
+third_party/uri/src/detail/algorithm.hpp:
third_party/uri/include/network/uri/uri_errors.hpp:
+third_party/uri/include/network/uri/uri_builder.hpp:
+
third_party/uri/include/network/uri/uri.hpp:
+third_party/uri/include/network/uri/detail/encode.hpp:
+
third_party/uri/include/network/uri/config.hpp:
/usr/include/string.h:
-/usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h:
-/usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h:
+/usr/include/c++/14/locale:
-/usr/include/c++/13/vector:
+/usr/include/c++/14/cwctype:
-third_party/uri/src/detail/algorithm.hpp:
+/usr/include/c++/14/ctime:
-/usr/include/c++/13/ctime:
+/usr/include/c++/14/cstdint:
-/usr/include/c++/13/cstring:
+/usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h:
-/usr/include/c++/13/bits/locale_facets_nonio.h:
+/usr/include/c++/14/bits/vector.tcc:
-/usr/include/c++/13/bits/locale_facets.h:
+third_party/uri/src/detail/uri_percent_encode.hpp:
-/usr/include/c++/13/bits/locale_conv.h:
+/usr/include/c++/14/bits/stl_vector.h:
-third_party/uri/src/detail/uri_normalize.cpp:
+/usr/include/c++/14/bits/stl_bvector.h:
-/usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h:
+/usr/include/c++/14/bits/std_function.h:
-third_party/uri/include/network/uri/detail/uri_parts.hpp:
+/usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h:
-third_party/uri/include/network/optional.hpp:
+/usr/include/c++/14/bits/locale_facets_nonio.tcc:
-/usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h:
+/usr/include/c++/14/bits/codecvt.h:
-/usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h:
+third_party/uri/include/network/uri/detail/uri_parts.hpp:
-/usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h:
+third_party/uri/include/network/optional.hpp:
/usr/include/wchar.h:
+/usr/include/time.h:
+
/usr/include/sys/single_threaded.h:
/usr/include/sys/cdefs.h:
-/usr/include/stdlib.h:
+/usr/include/c++/14/bits/locale_facets.tcc:
/usr/include/stdio.h:
-/usr/include/stdint.h:
-
/usr/include/stdc-predef.h:
/usr/include/sched.h:
-/usr/include/pthread.h:
-
/usr/include/linux/errno.h:
-/usr/include/features-time64.h:
-
-/usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h:
-/usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h:
-/usr/include/strings.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h:
-/usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h:
+/usr/include/locale.h:
-/usr/include/bits/wctype-wchar.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h:
-/usr/include/sys/types.h:
+/usr/include/sys/select.h:
-/usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h:
-/usr/include/c++/13/bits/locale_facets_nonio.tcc:
+/usr/include/c++/14/typeinfo:
-/usr/include/c++/13/utility:
+/usr/include/c++/14/type_traits:
-/usr/include/c++/13/type_traits:
+/usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h:
-third_party/uri/include/network/uri/detail/encode.hpp:
+/usr/include/c++/14/tuple:
-/usr/include/c++/13/tuple:
+/usr/include/c++/14/string:
-/usr/include/c++/13/stdexcept:
+/usr/include/bits/wctype-wchar.h:
-/usr/include/c++/13/memory:
+/usr/include/sys/types.h:
-/usr/include/c++/13/limits:
+/usr/include/c++/14/memory:
-/usr/include/c++/13/iterator:
+/usr/include/c++/14/bits/locale_conv.h:
-/usr/include/c++/13/initializer_list:
+/usr/include/c++/14/iosfwd:
-/usr/include/c++/13/ext/type_traits.h:
+/usr/include/c++/14/initializer_list:
-/usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h:
+/usr/include/c++/14/ext/type_traits.h:
-/usr/include/c++/13/ext/string_conversions.h:
+/usr/include/c++/14/ext/string_conversions.h:
-/usr/include/c++/13/ext/numeric_traits.h:
+/usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h:
-third_party/uri/src/detail/uri_resolve.hpp:
+/usr/include/c++/14/ext/atomicity.h:
-/usr/include/c++/13/ext/concurrence.h:
+/usr/include/c++/14/ext/alloc_traits.h:
-/usr/include/c++/13/new:
+/usr/include/c++/14/new:
-/usr/include/c++/13/ext/alloc_traits.h:
+/usr/include/c++/14/ext/aligned_buffer.h:
-/usr/include/locale.h:
+/usr/include/errno.h:
-/usr/include/c++/13/ext/aligned_buffer.h:
+/usr/include/c++/14/debug/debug.h:
-/usr/include/gnu/stubs-64.h:
+/usr/include/c++/14/debug/assertions.h:
-/usr/include/c++/13/debug/debug.h:
+/usr/include/c++/14/cstdio:
-/usr/include/c++/13/debug/assertions.h:
+/usr/include/c++/14/cerrno:
-/usr/include/c++/13/cwchar:
+/usr/include/c++/14/bits/version.h:
-/usr/include/c++/13/cstdint:
+/usr/include/c++/14/bits/utility.h:
-/usr/include/c++/13/bits/std_function.h:
+third_party/uri/src/uri_errors.cpp:
-/usr/include/c++/13/cstdlib:
+/usr/include/c++/14/bits/uses_allocator.h:
-/usr/include/c++/13/bits/uniform_int_dist.h:
+/usr/include/c++/14/limits:
-/usr/include/c++/13/bits/stringfwd.h:
+/usr/include/c++/14/bits/unique_ptr.h:
-/usr/include/c++/13/cassert:
+/usr/include/gnu/stubs-64.h:
-/usr/include/bits/types/time_t.h:
+/usr/include/c++/14/bits/stringfwd.h:
-/usr/include/c++/13/cerrno:
+/usr/include/c++/14/bits/locale_facets.h:
-/usr/include/bits/types/struct_tm.h:
+/usr/include/c++/14/bits/streambuf.tcc:
-/usr/include/c++/13/ext/atomicity.h:
+/usr/include/c++/14/streambuf:
-/usr/include/c++/13/cctype:
+/usr/include/bits/types/struct_tm.h:
/usr/include/bits/wchar.h:
-/usr/include/bits/types/struct_timespec.h:
-
-/usr/include/c++/13/bits/stl_bvector.h:
-
-/usr/include/sys/select.h:
-
-/usr/include/c++/13/bits/allocator.h:
+/usr/include/c++/14/bits/stl_construct.h:
-/usr/include/c++/13/bits/locale_classes.tcc:
+/usr/include/bits/types/struct_timespec.h:
/usr/include/bits/types/struct_sched_param.h:
@@ -1897,81 +1906,93 @@ third_party/uri/src/detail/uri_resolve.hpp:
/usr/include/bits/waitflags.h:
-third_party/uri/src/uri_builder.cpp:
-
-/usr/include/c++/13/locale:
-
-/usr/include/c++/13/bits/stl_uninitialized.h:
-
/usr/include/bits/types/struct_FILE.h:
-/usr/include/bits/types/locale_t.h:
-
-/usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h:
-
-/usr/include/c++/13/bits/stl_heap.h:
-
/usr/include/bits/types/cookie_io_functions_t.h:
/usr/include/bits/sched.h:
/usr/include/bits/types/clockid_t.h:
-/usr/include/bits/atomic_wide_counter.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h:
-/usr/include/c++/13/clocale:
+/usr/include/bits/atomic_wide_counter.h:
-/usr/include/c++/13/bits/allocated_ptr.h:
+/usr/include/c++/14/bits/cxxabi_init_exception.h:
-/usr/include/bits/types/__locale_t.h:
+/usr/include/c++/14/bits/streambuf_iterator.h:
/usr/include/bits/types/__FILE.h:
-/usr/include/c++/13/bits/char_traits.h:
+/usr/include/c++/14/bits/align.h:
-/usr/include/c++/13/bits/codecvt.h:
+/usr/include/c++/14/utility:
/usr/include/bits/types/FILE.h:
+/usr/include/c++/14/bits/exception_ptr.h:
+
/usr/include/bits/types.h:
+/usr/include/endian.h:
+
+/usr/include/c++/14/bits/localefwd.h:
+
/usr/include/bits/types/error_t.h:
/usr/include/bits/stdint-intn.h:
+/usr/include/c++/14/system_error:
+
+/usr/include/c++/14/cstdlib:
+
+/usr/include/bits/endian.h:
+
third_party/uri/include/network/uri/detail/translate.hpp:
/usr/include/asm/errno.h:
-/usr/include/bits/thread-shared-types.h:
+/usr/include/stdint.h:
-/usr/include/features.h:
+/usr/include/c++/14/bits/cxxabi_forced.h:
-/usr/include/bits/endianness.h:
+/usr/include/bits/types/time_t.h:
+
+/usr/include/c++/14/bits/atomic_base.h:
+
+/usr/include/libintl.h:
+
+/usr/include/c++/14/bits/stl_uninitialized.h:
+
+/usr/include/bits/floatn-common.h:
-/usr/include/c++/13/bits/unique_ptr.h:
+/usr/include/stdlib.h:
-/usr/include/c++/13/bits/align.h:
+/usr/include/c++/14/algorithm:
/usr/include/bits/struct_mutex.h:
-/usr/include/c++/13/bits/stl_vector.h:
+/usr/include/c++/14/bits/locale_classes.h:
+
+/usr/include/c++/14/bits/new_allocator.h:
+
+/usr/include/c++/14/cstddef:
/usr/include/bits/cpu-set.h:
-/usr/include/bits/typesizes.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h:
+
+/usr/include/c++/14/bits/nested_exception.h:
/usr/include/bits/uintn-identity.h:
-/usr/include/c++/13/iosfwd:
+/usr/include/c++/14/cctype:
-/usr/include/c++/13/bits/predefined_ops.h:
+/usr/include/c++/14/bits/exception.h:
/usr/include/bits/long-double.h:
-/usr/include/bits/stdlib-float.h:
-
-/usr/include/bits/time64.h:
+/usr/include/c++/14/bits/shared_ptr.h:
/usr/include/bits/stdio_lim.h:
@@ -1979,44 +2000,18 @@ third_party/uri/include/network/uri/detail/translate.hpp:
/usr/include/bits/time.h:
-third_party/uri/src/detail/uri_advance_parts.hpp:
-
-/usr/include/c++/13/string:
-
-/usr/include/bits/byteswap.h:
+/usr/include/c++/14/exception:
/usr/include/bits/struct_rwlock.h:
/usr/include/bits/types/struct_itimerspec.h:
-/usr/include/c++/13/bits/ptr_traits.h:
-
-/usr/include/c++/13/bits/stl_construct.h:
-
-/usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h:
-
-/usr/include/alloca.h:
-
-/usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h:
-
-/usr/include/c++/13/bit:
-
-/usr/include/c++/13/bits/basic_string.tcc:
-
-/usr/include/c++/13/bits/vector.tcc:
+/usr/include/bits/types/__sigset_t.h:
/usr/include/bits/locale.h:
-/usr/include/c++/13/algorithm:
-
-/usr/include/c++/13/bits/stl_raw_storage_iter.h:
-
-/usr/include/c++/13/bits/stream_iterator.h:
-
third_party/uri/src/detail/uri_parse_authority.cpp:
-/usr/include/c++/13/functional:
-
/usr/include/bits/setjmp.h:
/usr/include/bits/types/struct___jmp_buf_tag.h:
@@ -2025,194 +2020,218 @@ third_party/uri/src/detail/uri_parse_authority.cpp:
/usr/include/bits/types/__fpos_t.h:
-/usr/include/c++/13/bits/stl_iterator_base_types.h:
-
-/usr/include/asm-generic/errno-base.h:
+/usr/include/c++/14/bits/predefined_ops.h:
-/usr/include/c++/13/bits/hash_bytes.h:
+/usr/include/asm-generic/errno.h:
-/usr/include/assert.h:
+/usr/include/c++/14/bits/stl_function.h:
-/usr/include/bits/types/__sigset_t.h:
+/usr/include/c++/14/cassert:
-/usr/include/c++/13/backward/auto_ptr.h:
+/usr/include/assert.h:
third_party/uri/src/detail/uri_normalize.hpp:
-third_party/uri/src/detail/uri_advance_parts.cpp:
+/usr/include/c++/14/ext/concurrence.h:
-/usr/include/c++/13/bits/ios_base.h:
+third_party/uri/src/detail/uri_advance_parts.cpp:
/usr/include/bits/floatn.h:
-/usr/include/bits/pthreadtypes.h:
-
/usr/include/bits/libc-header-start.h:
-/usr/include/wctype.h:
+/usr/include/features-time64.h:
+
+/usr/include/c++/14/bits/stl_relops.h:
-/usr/include/c++/13/exception:
+/usr/include/wctype.h:
/usr/include/bits/errno.h:
/usr/include/bits/timex.h:
-/usr/include/c++/13/bits/shared_ptr_atomic.h:
+/usr/include/c++/14/bits/locale_facets_nonio.h:
+
+/usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h:
/usr/include/bits/pthread_stack_min-dynamic.h:
-/usr/include/endian.h:
+/usr/include/bits/types/struct_timeval.h:
-/usr/include/c++/13/bits/streambuf.tcc:
+/usr/include/c++/14/bits/stl_raw_storage_iter.h:
third_party/uri/include/network/uri/detail/decode.hpp:
+/usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h:
+
/usr/include/gnu/stubs.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h:
+
/usr/include/bits/pthreadtypes-arch.h:
-/usr/include/libintl.h:
+/usr/include/c++/14/bits/invoke.h:
-/usr/include/c++/13/bits/basic_string.h:
+/usr/include/bits/types/__fpos64_t.h:
-/usr/include/bits/stdio.h:
+/usr/include/bits/select.h:
-/usr/include/bits/types/timer_t.h:
+/usr/include/c++/14/cstring:
-/usr/include/c++/13/cwctype:
+/usr/include/c++/14/stdexcept:
-/usr/include/bits/types/wint_t.h:
+/usr/include/c++/14/cwchar:
-/usr/include/bits/timesize.h:
+/usr/include/c++/14/bits/charconv.h:
-/usr/include/c++/13/bits/shared_ptr.h:
+/usr/include/alloca.h:
-/usr/include/bits/waitstatus.h:
+/usr/include/bits/types/locale_t.h:
-/usr/include/c++/13/bits/streambuf_iterator.h:
+/usr/include/c++/14/bits/ptr_traits.h:
-/usr/include/bits/wordsize.h:
+/usr/include/bits/stdint-least.h:
-third_party/uri/include/network/string_view.hpp:
+/usr/include/bits/stdlib-bsearch.h:
-/usr/include/bits/types/sigset_t.h:
+/usr/include/bits/types/mbstate_t.h:
-/usr/include/c++/13/bits/move.h:
+/usr/include/c++/14/bits/shared_ptr_atomic.h:
-third_party/uri/src/detail/uri_parse.hpp:
+/usr/include/c++/14/bits/functional_hash.h:
-/usr/include/c++/13/bits/utility.h:
+/usr/include/bits/types/timer_t.h:
-/usr/include/c++/13/bits/stl_function.h:
+/usr/include/bits/thread-shared-types.h:
-/usr/include/bits/select.h:
+/usr/include/c++/14/bits/stl_pair.h:
-/usr/include/c++/13/backward/binders.h:
+/usr/include/bits/types/wint_t.h:
-/usr/include/c++/13/bits/algorithmfwd.h:
+/usr/include/c++/14/bits/range_access.h:
-/usr/include/bits/types/struct_timeval.h:
+/usr/include/bits/timesize.h:
-/usr/include/c++/13/bits/concept_check.h:
+/usr/include/bits/waitstatus.h:
-/usr/include/c++/13/bits/alloc_traits.h:
+/usr/include/c++/14/vector:
-/usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h:
+/usr/include/c++/14/bits/uniform_int_dist.h:
-/usr/include/bits/types/mbstate_t.h:
+/usr/include/c++/14/bits/shared_ptr_base.h:
-/usr/include/c++/13/bits/atomic_lockfree_defines.h:
+/usr/include/bits/wordsize.h:
-/usr/include/c++/13/bits/cpp_type_traits.h:
+/usr/include/c++/14/bits/allocator.h:
-/usr/include/c++/13/bits/cxxabi_forced.h:
+/usr/include/bits/stdlib-float.h:
-/usr/include/c++/13/typeinfo:
+/usr/include/bits/time64.h:
-/usr/include/c++/13/bits/cxxabi_init_exception.h:
+/usr/include/c++/14/backward/binders.h:
-/usr/include/c++/13/streambuf:
+/usr/include/c++/14/bit:
-/usr/include/c++/13/bits/exception.h:
+/usr/include/bits/typesizes.h:
-/usr/include/c++/13/cstdio:
+/usr/include/c++/14/bits/algorithmfwd.h:
-/usr/include/c++/13/bits/charconv.h:
+/usr/include/c++/14/bits/ostream_insert.h:
-/usr/include/c++/13/bits/stl_pair.h:
+/usr/include/c++/14/bits/alloc_traits.h:
-third_party/uri/include/network/uri/uri_builder.hpp:
+third_party/uri/src/detail/uri_advance_parts.hpp:
-/usr/include/c++/13/bits/exception_defines.h:
+/usr/include/bits/byteswap.h:
-/usr/include/c++/13/bits/localefwd.h:
+/usr/include/c++/14/bits/allocated_ptr.h:
-/usr/include/c++/13/bits/exception_ptr.h:
+/usr/include/c++/14/bits/stl_iterator.h:
-/usr/include/c++/13/bits/stl_iterator.h:
+/usr/include/asm-generic/errno-base.h:
-/usr/include/bits/types/__fpos64_t.h:
+/usr/include/c++/14/bits/stl_algobase.h:
-/usr/include/c++/13/bits/functexcept.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h:
-/usr/include/errno.h:
+/usr/include/c++/14/bits/atomic_lockfree_defines.h:
-/usr/include/c++/13/bits/functional_hash.h:
+/usr/include/bits/pthreadtypes.h:
-/usr/include/c++/13/bits/invoke.h:
+/usr/include/c++/14/bits/basic_string.h:
-/usr/include/c++/13/bits/locale_classes.h:
+/usr/include/c++/14/clocale:
-/usr/include/time.h:
+/usr/include/c++/14/bits/basic_string.tcc:
-/usr/include/c++/13/bits/memoryfwd.h:
+/usr/include/pthread.h:
-/usr/include/c++/13/bits/nested_exception.h:
+/usr/include/c++/14/bits/functexcept.h:
-/usr/include/c++/13/bits/atomic_base.h:
+/usr/include/c++/14/bits/concept_check.h:
-/usr/include/c++/13/bits/new_allocator.h:
+/usr/include/c++/14/bits/cpp_type_traits.h:
-/usr/include/c++/13/bits/ostream_insert.h:
+/usr/include/c++/14/bits/exception_defines.h:
-/usr/include/c++/13/system_error:
+/usr/include/c++/14/bits/char_traits.h:
-/usr/include/c++/13/bits/range_access.h:
+/usr/include/c++/14/bits/hash_bytes.h:
-/usr/include/bits/stdint-uintn.h:
+/usr/include/bits/types/__locale_t.h:
-/usr/include/c++/13/bits/refwrap.h:
+/usr/include/c++/14/bits/ios_base.h:
-/usr/include/c++/13/bits/locale_facets.tcc:
+/usr/include/c++/14/bits/locale_classes.tcc:
-/usr/include/bits/stdlib-bsearch.h:
+third_party/uri/include/network/string_view.hpp:
-/usr/include/c++/13/bits/requires_hosted.h:
+/usr/include/c++/14/backward/auto_ptr.h:
-/usr/include/bits/floatn-common.h:
+/usr/include/bits/types/sigset_t.h:
+
+/usr/include/c++/14/bits/move.h:
-/usr/include/c++/13/bits/shared_ptr_base.h:
+third_party/uri/src/detail/uri_resolve.cpp:
-/usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h:
+/usr/include/c++/14/bits/memoryfwd.h:
-/usr/include/c++/13/bits/uses_allocator.h:
+/usr/include/c++/14/bits/postypes.h:
-/usr/include/c++/13/bits/postypes.h:
+third_party/uri/src/detail/algorithm_split.hpp:
-/usr/include/c++/13/bits/std_abs.h:
+/usr/include/c++/14/bits/refwrap.h:
-/usr/include/c++/13/cstddef:
+/usr/include/strings.h:
-/usr/include/c++/13/bits/stl_algo.h:
+/usr/include/c++/14/bits/requires_hosted.h:
-/usr/include/c++/13/bits/stl_algobase.h:
+third_party/uri/src/detail/uri_normalize.cpp:
-/usr/include/asm-generic/errno.h:
+/usr/include/c++/14/bits/std_abs.h:
-/usr/include/c++/13/bits/stl_iterator_base_funcs.h:
+/usr/include/c++/14/bits/stl_algo.h:
-/usr/include/c++/13/bits/stl_relops.h:
+/usr/include/c++/14/functional:
-/usr/include/bits/endian.h:
+/usr/include/features.h:
+
+/usr/include/c++/14/iterator:
+
+/usr/include/bits/endianness.h:
+
+/usr/include/c++/14/bits/stl_heap.h:
+
+/usr/include/c++/14/ext/numeric_traits.h:
+
+/usr/include/bits/stdint-uintn.h:
+
+/usr/include/c++/14/bits/stl_iterator_base_funcs.h:
+
+/usr/include/bits/stdio.h:
+
+/usr/include/c++/14/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/14/bits/stl_tempbuf.h:
-/usr/include/c++/13/bits/stl_tempbuf.h:
+/usr/include/c++/14/bits/stream_iterator.h:
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
index bc29220fff..abe8aebb87 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
@@ -1,10 +1,10 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
# compile CXX with /bin/c++
CXX_DEFINES =
-CXX_INCLUDES = -I/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src -I/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include
+CXX_INCLUDES = -I/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src -I/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include
CXX_FLAGS = -fPIE -D_FILE_OFFSET_BIS=64 -DUSEGC -DLSPCPP_USEGC -I../gc-8.2.4/include -std=c++11 -Wall -Werror -Wno-parentheses -O2 -g -DNDEBUG
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/Makefile b/graphics/asymptote/LspCpp/third_party/uri/src/Makefile
index 8907cafad6..7948b3894d 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/Makefile
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/Makefile
@@ -1,5 +1,5 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
# Default target executed when no arguments are given to make.
default_target: all
@@ -60,10 +60,10 @@ RM = /usr/bin/cmake -E rm -f
EQUALS = =
# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.90/LspCpp
# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.90/LspCpp
#=============================================================================
# Targets provided globally by CMake.
@@ -135,14 +135,14 @@ install/strip/fast: preinstall/fast
# The main all target
all: cmake_check_build_system
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.89/LspCpp/CMakeFiles /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src//CMakeFiles/progress.marks
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/all
- $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.89/LspCpp/CMakeFiles 0
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.90/LspCpp/CMakeFiles /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src//CMakeFiles/progress.marks
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/all
+ $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.90/LspCpp/CMakeFiles 0
.PHONY : all
# The main clean target
clean:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/clean
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/clean
.PHONY : clean
# The main clean target
@@ -151,22 +151,22 @@ clean/fast: clean
# Prepare targets for installation.
preinstall: all
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall
.PHONY : preinstall/fast
# clear depends
depend:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
# Convenience name for target.
third_party/uri/src/CMakeFiles/network-uri.dir/rule:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/CMakeFiles/network-uri.dir/rule
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/CMakeFiles/network-uri.dir/rule
.PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/rule
# Convenience name for target.
@@ -175,7 +175,7 @@ network-uri: third_party/uri/src/CMakeFiles/network-uri.dir/rule
# fast build rule for target.
network-uri/fast:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/build
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/build
.PHONY : network-uri/fast
detail/uri_advance_parts.o: detail/uri_advance_parts.cpp.o
@@ -183,7 +183,7 @@ detail/uri_advance_parts.o: detail/uri_advance_parts.cpp.o
# target to build an object file
detail/uri_advance_parts.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o
.PHONY : detail/uri_advance_parts.cpp.o
detail/uri_advance_parts.i: detail/uri_advance_parts.cpp.i
@@ -191,7 +191,7 @@ detail/uri_advance_parts.i: detail/uri_advance_parts.cpp.i
# target to preprocess a source file
detail/uri_advance_parts.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i
.PHONY : detail/uri_advance_parts.cpp.i
detail/uri_advance_parts.s: detail/uri_advance_parts.cpp.s
@@ -199,7 +199,7 @@ detail/uri_advance_parts.s: detail/uri_advance_parts.cpp.s
# target to generate assembly for a file
detail/uri_advance_parts.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s
.PHONY : detail/uri_advance_parts.cpp.s
detail/uri_normalize.o: detail/uri_normalize.cpp.o
@@ -207,7 +207,7 @@ detail/uri_normalize.o: detail/uri_normalize.cpp.o
# target to build an object file
detail/uri_normalize.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o
.PHONY : detail/uri_normalize.cpp.o
detail/uri_normalize.i: detail/uri_normalize.cpp.i
@@ -215,7 +215,7 @@ detail/uri_normalize.i: detail/uri_normalize.cpp.i
# target to preprocess a source file
detail/uri_normalize.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i
.PHONY : detail/uri_normalize.cpp.i
detail/uri_normalize.s: detail/uri_normalize.cpp.s
@@ -223,7 +223,7 @@ detail/uri_normalize.s: detail/uri_normalize.cpp.s
# target to generate assembly for a file
detail/uri_normalize.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s
.PHONY : detail/uri_normalize.cpp.s
detail/uri_parse.o: detail/uri_parse.cpp.o
@@ -231,7 +231,7 @@ detail/uri_parse.o: detail/uri_parse.cpp.o
# target to build an object file
detail/uri_parse.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o
.PHONY : detail/uri_parse.cpp.o
detail/uri_parse.i: detail/uri_parse.cpp.i
@@ -239,7 +239,7 @@ detail/uri_parse.i: detail/uri_parse.cpp.i
# target to preprocess a source file
detail/uri_parse.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i
.PHONY : detail/uri_parse.cpp.i
detail/uri_parse.s: detail/uri_parse.cpp.s
@@ -247,7 +247,7 @@ detail/uri_parse.s: detail/uri_parse.cpp.s
# target to generate assembly for a file
detail/uri_parse.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s
.PHONY : detail/uri_parse.cpp.s
detail/uri_parse_authority.o: detail/uri_parse_authority.cpp.o
@@ -255,7 +255,7 @@ detail/uri_parse_authority.o: detail/uri_parse_authority.cpp.o
# target to build an object file
detail/uri_parse_authority.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o
.PHONY : detail/uri_parse_authority.cpp.o
detail/uri_parse_authority.i: detail/uri_parse_authority.cpp.i
@@ -263,7 +263,7 @@ detail/uri_parse_authority.i: detail/uri_parse_authority.cpp.i
# target to preprocess a source file
detail/uri_parse_authority.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i
.PHONY : detail/uri_parse_authority.cpp.i
detail/uri_parse_authority.s: detail/uri_parse_authority.cpp.s
@@ -271,7 +271,7 @@ detail/uri_parse_authority.s: detail/uri_parse_authority.cpp.s
# target to generate assembly for a file
detail/uri_parse_authority.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s
.PHONY : detail/uri_parse_authority.cpp.s
detail/uri_resolve.o: detail/uri_resolve.cpp.o
@@ -279,7 +279,7 @@ detail/uri_resolve.o: detail/uri_resolve.cpp.o
# target to build an object file
detail/uri_resolve.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o
.PHONY : detail/uri_resolve.cpp.o
detail/uri_resolve.i: detail/uri_resolve.cpp.i
@@ -287,7 +287,7 @@ detail/uri_resolve.i: detail/uri_resolve.cpp.i
# target to preprocess a source file
detail/uri_resolve.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i
.PHONY : detail/uri_resolve.cpp.i
detail/uri_resolve.s: detail/uri_resolve.cpp.s
@@ -295,7 +295,7 @@ detail/uri_resolve.s: detail/uri_resolve.cpp.s
# target to generate assembly for a file
detail/uri_resolve.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s
.PHONY : detail/uri_resolve.cpp.s
uri.o: uri.cpp.o
@@ -303,7 +303,7 @@ uri.o: uri.cpp.o
# target to build an object file
uri.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o
.PHONY : uri.cpp.o
uri.i: uri.cpp.i
@@ -311,7 +311,7 @@ uri.i: uri.cpp.i
# target to preprocess a source file
uri.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.i
.PHONY : uri.cpp.i
uri.s: uri.cpp.s
@@ -319,7 +319,7 @@ uri.s: uri.cpp.s
# target to generate assembly for a file
uri.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.s
.PHONY : uri.cpp.s
uri_builder.o: uri_builder.cpp.o
@@ -327,7 +327,7 @@ uri_builder.o: uri_builder.cpp.o
# target to build an object file
uri_builder.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o
.PHONY : uri_builder.cpp.o
uri_builder.i: uri_builder.cpp.i
@@ -335,7 +335,7 @@ uri_builder.i: uri_builder.cpp.i
# target to preprocess a source file
uri_builder.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.i
.PHONY : uri_builder.cpp.i
uri_builder.s: uri_builder.cpp.s
@@ -343,7 +343,7 @@ uri_builder.s: uri_builder.cpp.s
# target to generate assembly for a file
uri_builder.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.s
.PHONY : uri_builder.cpp.s
uri_errors.o: uri_errors.cpp.o
@@ -351,7 +351,7 @@ uri_errors.o: uri_errors.cpp.o
# target to build an object file
uri_errors.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o
.PHONY : uri_errors.cpp.o
uri_errors.i: uri_errors.cpp.i
@@ -359,7 +359,7 @@ uri_errors.i: uri_errors.cpp.i
# target to preprocess a source file
uri_errors.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.i
.PHONY : uri_errors.cpp.i
uri_errors.s: uri_errors.cpp.s
@@ -367,7 +367,7 @@ uri_errors.s: uri_errors.cpp.s
# target to generate assembly for a file
uri_errors.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.s
.PHONY : uri_errors.cpp.s
# Help Target
@@ -418,6 +418,6 @@ help:
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake b/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake
index 2295d35b1e..fbf9b52637 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake
@@ -1,4 +1,4 @@
-# Install script for directory: /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src
+# Install script for directory: /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src
# Set the install prefix
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
@@ -43,6 +43,6 @@ if(NOT DEFINED CMAKE_OBJDUMP)
endif()
if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT)
- file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY FILES "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/libnetwork-uri.a")
+ file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY FILES "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/libnetwork-uri.a")
endif()
diff --git a/graphics/asymptote/Makefile.in b/graphics/asymptote/Makefile.in
index 15b2a7c6bb..1c7866fef1 100644
--- a/graphics/asymptote/Makefile.in
+++ b/graphics/asymptote/Makefile.in
@@ -274,7 +274,7 @@ install-asy: asy sty
${INSTALL} -p -m 644 base/*.asy $(addprefix base/,$(EXTRA)) \
asy-keywords.el $(asydir)
${INSTALL} -p -m 755 GUI/*.py $(GUIdir)
- ${INSTALL} -p -m 755 base/shaders/*.glsl $(shaderdir)
+ ${INSTALL} -p -m 644 base/shaders/*.glsl $(shaderdir)
${INSTALL} -p -m 644 base/webgl/asygl.js \
$(webgldir)
-${INSTALL} -p -m 644 GUI/pyUIClass/*.py $(GUIdir)/pyUIClass
diff --git a/graphics/asymptote/README b/graphics/asymptote/README
index 1e1c510415..686eb44150 100644
--- a/graphics/asymptote/README
+++ b/graphics/asymptote/README
@@ -1,5 +1,5 @@
ASYMPTOTE
- Copyright 2004-23 Andy Hammerlindl, John Bowman, and Tom Prince
+ Copyright 2004-24 Andy Hammerlindl, John Bowman, and Tom Prince
Asymptote is a powerful descriptive vector graphics language for technical
drawing, inspired by MetaPost but with an improved C++-like
diff --git a/graphics/asymptote/ReleaseNotes b/graphics/asymptote/ReleaseNotes
index 035d4c5d88..3afa9be03a 100644
--- a/graphics/asymptote/ReleaseNotes
+++ b/graphics/asymptote/ReleaseNotes
@@ -1,3 +1,19 @@
+Release Notes for Version 2.90
+A bug in the approximate transparency rendering code for GPUs
+without SSBO support was fixed.
+Support was added for templated accesses involving imported types,
+top-level structure types, and static fields.
+ImageMagick magick convert is now used instead of convert.
+The add(picture dest, picture src, pair position) function now respects
+size specifications (backwards incompatible; the previous behaviour can
+be obtained with add(dest,src.fit(identity()),position).
+The terminal is now reset upon exit. The erase command was fixed.
+Picture scalings in different dimensions are decoupled again.
+Flycheck syntax checking support for Emacs was added.
+Portability issues were addressed.
+Improvements were made to the documentation, including an introduction
+to deferred drawing.
+
Release Notes for Version 2.89
Portability fixes were made to allow static builds with or without pkg-config.
diff --git a/graphics/asymptote/absyn.h b/graphics/asymptote/absyn.h
index a25d463c64..9a0421e0d4 100644
--- a/graphics/asymptote/absyn.h
+++ b/graphics/asymptote/absyn.h
@@ -48,7 +48,7 @@ void prettyindent(ostream &out, Int indent);
void prettyname(ostream &out, string name, Int indent, position pos);
class name;
-class ty;
+class astType;
class varinit;
class exp;
class runnable;
diff --git a/graphics/asymptote/arrayop.h b/graphics/asymptote/arrayop.h
index ee1310a914..1fec0cb703 100644
--- a/graphics/asymptote/arrayop.h
+++ b/graphics/asymptote/arrayop.h
@@ -323,7 +323,7 @@ void write(vm::stack *s)
string S=pop<string>(s,emptystring);
vm::item it=pop(s);
bool defaultfile=isdefault(it);
- camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
+ camp::file *f=defaultfile ? &camp::Stdout : vm::get<camp::file*>(it);
if(!f->isOpen() || !f->enabled()) return;
size_t size=checkArray(a);
@@ -354,7 +354,7 @@ void writeArray(vm::stack *s)
string S=pop<string>(s,emptystring);
vm::item it=pop(s);
bool defaultfile=isdefault(it);
- camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
+ camp::file *f=defaultfile ? &camp::Stdout : vm::get<camp::file*>(it);
if(!f->isOpen() || !f->enabled()) return;
size_t asize=checkArray(a);
@@ -409,7 +409,7 @@ void writeArray2(vm::stack *s)
array *a=pop<array*>(s);
vm::item it=pop(s);
bool defaultfile=isdefault(it);
- camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
+ camp::file *f=defaultfile ? &camp::Stdout : vm::get<camp::file*>(it);
if(!f->isOpen() || !f->enabled()) return;
size_t size=checkArray(a);
@@ -441,7 +441,7 @@ void writeArray3(vm::stack *s)
array *a=pop<array*>(s);
vm::item it=pop(s);
bool defaultfile=isdefault(it);
- camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
+ camp::file *f=defaultfile ? &camp::Stdout : vm::get<camp::file*>(it);
if(!f->isOpen() || !f->enabled()) return;
size_t size=checkArray(a);
diff --git a/graphics/asymptote/asy-keywords.el b/graphics/asymptote/asy-keywords.el
index ea0098cd05..071b63017f 100644
--- a/graphics/asymptote/asy-keywords.el
+++ b/graphics/asymptote/asy-keywords.el
@@ -2,16 +2,16 @@
;; This file is automatically generated by asy-list.pl.
;; Changes will be overwritten.
;;
-(defvar asy-keywords-version "2.89")
+(defvar asy-keywords-version "2.90")
(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 ))
(defvar asy-type-name '(
-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 realschur revolution scaleT schur scientific segment side simplex slice solution splitface string surface tensionSpecifier ticklocate ticksgridT tickvalues transform transformation tree triangle trilinear triple vector vertex void ))
+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 realschur revolution scaleT schur scientific segment side slice solution splitface string surface tensionSpecifier ticklocate ticksgridT tickvalues transform transformation tree triangle trilinear triple vector vertex void ))
(defvar asy-function-name '(
-AND Align 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 _schur _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 byteinv 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 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 graphwithderiv gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image implicitsurface importv3d 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 log log10 log1p logaxiscoverage longitude lookup make3dgrid makeNode makecircle makedraw makepen maketriangle map mapArray mapArrayString 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 orthocenter 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 phi4 photon piecewisestraight point polar polarconicroutine polargraph polygon popcount postcontrol postscript pow10 ppoint prc prc0 prconly precision precontrol prepend primitive 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 schur scientific search searchtree 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 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 Align 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 _schur _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 byteinv 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 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 fillbox 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 graphwithderiv gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image implicitsurface importv3d 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 log log10 log1p logaxiscoverage longitude lookup make3dgrid makeNode makecircle makedraw makepen maketriangle map mapArray mapArrayString 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 orthocenter 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 phi4 photon piecewisestraight point polar polarconicroutine polargraph polygon popcount postcontrol postscript pow10 ppoint prc prc0 prconly precision precontrol prepend primitive 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 schur scientific search searchtree sec secondaryX secondaryY seconds section sector seek seekeof segment segmentlimits sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show simeq 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 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 ))
(defvar asy-variable-name '(
-AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Both Break BrickRed Brown BurlyWood BurntOrange CCW CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion 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 Gold Goldenrod Gray Green GreenYellow 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 MarkFillable 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 Orange OrangeRed Orchid Ox Oy PC PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Peach PeachPuff Periwinkle Peru PineGreen Pink Plum PowderBlue ProcessBlue Purple RELEASE RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna Red RedOrange RedViolet Rhodamine Right RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow 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 ZHIGH ZLOW _outpipe aboveequationskip addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor artificialColumn authorpen axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate bernstein beveljoin bigvertexpen bigvertexsize black blue bm bottom bp bracedefaultratio braceinnerangle bracemidangle braceouterangle brown bullet byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor 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 diamond differentlengths dot dotfactor dotfilltype dotframe dotted doublelinepen doublelinespacing down duplicateFuzz ellipsenodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap fermionpen figureborder figuremattpen file3 firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hwratio hyperbolanodesnumberfactor identity identity4 ignore implicitshipout inch inches includegraphicscommand inf infinity institutionpen intMax intMin invert invisible itempen itemskip itemstep 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 magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor maxDenominator 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 nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive optimizeTableau 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 plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen sequencereal settings signedtrailingzero simplex solid spinner springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor swap textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom tubegranularity undefined unitcircle unitsquare up urlpen urlskip v3dheadertypes v3dtypes version vertexpen vertexsize viewportmargin viewportsize vline white wye yellow ylabelwidth zeroTransform zerotickfuzz zerowinding ))
+AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Both Break BrickRed Brown BurlyWood BurntOrange CCW CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion 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 Gold Goldenrod Gray Green GreenYellow 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 MarkFillable 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 Orange OrangeRed Orchid Ox Oy PC PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Peach PeachPuff Periwinkle Peru PineGreen Pink Plum PowderBlue ProcessBlue Purple RELEASE RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna Red RedOrange RedViolet Rhodamine Right RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow 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 ZHIGH ZLOW _outpipe aboveequationskip addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor artificialColumn authorpen axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate bernstein beveljoin bigvertexpen bigvertexsize black blue bm bottom bp bracedefaultratio braceinnerangle bracemidangle braceouterangle brown bullet byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor 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 diamond differentlengths dot dotfactor dotfilltype dotframe dotted doublelinepen doublelinespacing down duplicateFuzz ellipsenodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap fermionpen figureborder figuremattpen file3 firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hwratio hyperbolanodesnumberfactor identity identity4 ignore implicitshipout inch inches includegraphicscommand inf infinity institutionpen intMax intMin invert invisible itempen itemskip itemstep 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 magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor maxDenominator 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 nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive optimizeTableau 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 plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen sequencereal settings signedtrailingzero solid spinner springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor swap textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom tubegranularity undefined unitcircle unitsquare up urlpen urlskip v3dheadertypes v3dtypes version vertexpen vertexsize viewportmargin viewportsize vline white wye yellow ylabelwidth zeroTransform zerotickfuzz zerowinding ))
diff --git a/graphics/asymptote/asy.list b/graphics/asymptote/asy.list
index 9a33fd6443..096577c741 100644
--- a/graphics/asymptote/asy.list
+++ b/graphics/asymptote/asy.list
@@ -68,8 +68,8 @@ path3 subpath(path3 p, real a, real b);
bool isnan(real x);
string jobname(string name);
void print_random_addresses(int n=<default>);
-void attach(picture dest=<default>, frame src, pair position, pair align, bool group=<default>, filltype filltype=<default>, bool above=<default>);
void attach(picture dest=<default>, frame src, pair position=<default>, bool group=<default>, filltype filltype=<default>, bool above=<default>);
+void attach(picture dest=<default>, frame src, pair position, pair align, bool group=<default>, filltype filltype=<default>, bool above=<default>);
real[] quadraticroots(real a, real b, real c);
pair[] quadraticroots(explicit pair a, explicit pair b, explicit pair c);
pen darkcyan;
@@ -149,8 +149,8 @@ pen rgb(string s);
real inch;
bool ArcArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>);
bool ArcArrow(picture, path, pen, marginT(path, pen));
-bool ArcArrows(picture, path, pen, marginT(path, pen));
bool ArcArrows(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>);
+bool ArcArrows(picture, path, pen, marginT(path, pen));
pen currentpen;
pair precontrol(path p, int t);
pair precontrol(path p, real t);
@@ -246,9 +246,8 @@ pair min(frame f);
pair min(explicit path p);
pair min(path[] p);
triple min(path3 p);
-real min(... real[] a);
-real min(real m, scaling s, coord[] c);
pair min(picture pic, bool user=<default>);
+real min(... real[] a);
real min(real m, scaling s, coord[] c);
int min(... int[] a);
filltype RadialShade(pen penc, pen penr);
@@ -256,22 +255,21 @@ int search(int[] a, int key);
int search(real[] a, real key);
int search(string[] a, string key);
int search(void()()[] a, void key()(), bool less(void()(), void()()));
-int search(marker[] a, marker key, bool less(marker, marker));
int search(real[] a, real key, bool less(real, real));
int search(guide[] a, guide key, bool less(guide, guide));
-int search(picture[] a, picture key, bool less(picture, picture));
+int search(marker[] a, marker key, bool less(marker, marker));
int search(pair[] a, pair key, bool less(pair, pair));
-int search(object[] a, object key, bool less(object, object));
+int search(picture[] a, picture key, bool less(picture, picture));
int search(frame[] a, frame key, bool less(frame, frame));
-int search(Label[] a, Label key, bool less(Label, Label));
+int search(coord[] a, coord key, bool less(coord, coord));
+int search(object[] a, object key, bool less(object, object));
int search(int[] a, int key, bool less(int, int));
-int search(Legend[] a, Legend key, bool less(Legend, Legend));
int search(bool3[] a, bool3 key, bool less(bool3, bool3));
-int search(coord[] a, coord key, bool less(coord, coord));
+int search(Label[] a, Label key, bool less(Label, Label));
+int search(Legend[] a, Legend key, bool less(Legend, Legend));
int search(string[] a, string key, bool less(string, string));
int search(path[] a, path key, bool less(path, path));
int search(pen[] a, pen key, bool less(pen, pen));
-int search(coord[] a, coord key, bool less(coord, coord));
int search(bool[] a, bool key, bool less(bool, bool));
int search(triple[] a, triple key, bool less(triple, triple));
filltype RadialShadeDraw(real xmargin=<default>, real ymargin=<default>, pen penc, pen penr, pen drawpen=<default>);
@@ -289,13 +287,13 @@ pen opacity(real opacity=<default>, string blend=<default>);
real opacity(pen p);
real[] solve(real[][] a, real[] b, bool warn=<default>);
real[][] solve(real[][] a, real[][] b, bool warn=<default>);
-void DOSendl(file file);
int rename(string from, string to);
+void DOSendl(file file);
string debugger(string file, int line, int column, code s=<default>);
string getc(file f);
bool debugging;
-void shipout(string prefix=<default>, frame f, string format=<default>, bool wait=<default>, bool view=<default>, string options=<default>, string script=<default>, light light=<default>, projection P=<default>, transform t=<default>);
void shipout(string prefix=<default>, picture pic=<default>, frame orientation(frame)=<default>, string format=<default>, bool wait=<default>, bool view=<default>, string options=<default>, string script=<default>, light light=<default>, projection P=<default>);
+void shipout(string prefix=<default>, frame f, string format=<default>, bool wait=<default>, bool view=<default>, string options=<default>, string script=<default>, light light=<default>, projection P=<default>, transform t=<default>);
void shipout3(string prefix, frame f, string format=<default>, real width, real height, real angle, real zoom, triple m, triple m, pair shift, pair margin, real[][] t, real[] background, triple[] lights, real[][] diffuse, real[][] specular, bool view=<default>);
void shipout3(string prefix, frame f, string format=<default>);
string getstring(string name=<default>, string default=<default>, string prompt=<default>, bool store=<default>);
@@ -348,19 +346,18 @@ pair max(frame f);
pair max(explicit path p);
pair max(path[] p);
triple max(path3 p);
-pair max(picture pic, bool user=<default>);
real max(real M, scaling s, coord[] c);
int max(... int[] a);
+pair max(picture pic, bool user=<default>);
real max(... real[] a);
-real max(real M, scaling s, coord[] c);
-Label Label(string s, string size=<default>, pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
-Label Label(Label L, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
-Label Label(Label L, pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
Label Label(string s, string size=<default>, explicit position position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
-Label Label;
Label Label(Label L, explicit position position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
Label Label(explicit pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
Label Label(string s=<default>, string size=<default>, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
+Label Label;
+Label Label(string s, string size=<default>, pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
+Label Label(Label L, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
+Label Label(Label L, pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
string font(pen p=<default>);
pen font(string name, string options=<default>);
pen font(string encoding, string family, string series, string shape);
@@ -395,19 +392,19 @@ filltype NoFill;
real colatitude(triple v, bool warn=<default>);
void drawDisk(frame f, real[][] t, pen[] p, real opacity, real shininess, real metallic, real fresnel0);
void label(frame f, string s, string size, transform t, pair position, pair align, pen p);
-void label(picture pic=<default>, Label L, explicit guide g, align align=<default>, pen p=<default>, filltype filltype=<default>);
-void label(picture pic=<default>, Label L, explicit path g, align align=<default>, pen p=<default>, filltype filltype=<default>);
void label(picture pic=<default>, Label L, align align=<default>, pen p=<default>, filltype filltype=<default>);
void label(pair origin, picture pic=<default>, Label L, align align=<default>, pen p=<default>, filltype filltype=<default>);
void label(frame f, Label L, pair position, align align=<default>, pen p=<default>, filltype filltype=<default>);
void label(picture pic=<default>, Label L, pair position, align align=<default>, pen p=<default>, filltype filltype=<default>);
void label(frame f, Label L, align align=<default>, pen p=<default>, filltype filltype=<default>);
+void label(picture pic=<default>, Label L, explicit guide g, align align=<default>, pen p=<default>, filltype filltype=<default>);
+void label(picture pic=<default>, Label L, explicit path g, align align=<default>, pen p=<default>, filltype filltype=<default>);
real fabs(real x);
real[] fabs(real[] a);
bool labels(frame f);
light light(pen diffuse=<default>, pen specular=<default>, pen background=<default>, real x, real y, real z);
-light light(explicit light light);
light light(pen diffuse=<default>, pen specular=<default>, pen background=<default>, real specularfactor=<default> ... triple[] position);
+light light(explicit light light);
light light(pen[] diffuse, pen[] specular=<default>, pen background=<default>, real specularfactor=<default>, triple[] position);
real remainder(real x, real y);
int byte(real x);
@@ -433,11 +430,11 @@ real erf(real x);
void saveline(string name, string value, bool store=<default>);
pen fuchsia;
filltype filltype(int type=<default>, pen fillpen=<default>, pen drawpen=<default>, void fill2(frame f, path[] g, pen fillpen));
-frame[] fit(string prefix=<default>, picture[] pictures, string format=<default>, bool view=<default>, string options=<default>, string script=<default>, projection P=<default>);
-pen Bookman(string series=<default>, string shape=<default>);
+path box(pair a, pair b);
path box(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
path box(frame f, Label L, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
-path box(pair a, pair b);
+frame[] fit(string prefix=<default>, picture[] pictures, string format=<default>, bool view=<default>, string options=<default>, string script=<default>, projection P=<default>);
+pen Bookman(string series=<default>, string shape=<default>);
void seekeof(file f);
path unitcircle;
pair[] conj(pair[] a);
@@ -472,6 +469,7 @@ void deconstruct(picture pic=<default>);
int sgn(real x);
node node(void d(frame f, transform t, transform T, pair lb, pair rt), string key=<default>);
pair minAfterTransform(transform t, path[] p);
+void fillbox(frame dest, path g, pen p=<default>, filltype filltype=<default>, bool above=<default>);
int seconds(string t=<default>, string format=<default>);
pen cyan;
pen grey;
@@ -486,8 +484,6 @@ real arcarrowfactor;
real mm;
real arcarrowsize(pen p=<default>);
real calculateScaling(string dir, coord[] coords, real size, bool warn=<default>);
-real calculateScaling(string dir, coord[] coords, real size, bool warn=<default>);
-real calculateScaling(string dir, coord[] m, coord[] M, real size, bool warn=<default>);
real calculateScaling(string dir, coord[] m, coord[] M, real size, bool warn=<default>);
triple gettriple(string name=<default>, triple default=<default>, string prompt=<default>, bool store=<default>);
void drawpixel(frame f, triple v, pen p, real width=<default>);
@@ -514,10 +510,10 @@ pen rgba(real[] a);
real[] rgba(pen p);
string time(string format=<default>);
string time(int seconds, string format=<default>);
-int MoveQuiet;
void prepend(frame dest, frame src);
real pt;
settings settings;
+int MoveQuiet;
marginT EndMargin(path, pen);
pen nullpen;
side LeftSide;
@@ -528,10 +524,10 @@ triple[] copy(triple[] a, int depth=<default>);
bool[] copy(bool[] a, int depth=<default>);
real[][] copy(real[][] a, int depth=<default>);
pen[] copy(pen[] a, int depth=<default>);
-bool3[] copy(bool3[] a, int depth=<default>);
coord[] copy(coord[] a, int depth=<default>);
-Label[] copy(Label[] a, int depth=<default>);
-picture[] copy(picture[] a, int depth=<default>);
+object[] copy(object[] a, int depth=<default>);
+marker[] copy(marker[] a, int depth=<default>);
+Legend[] copy(Legend[] a, int depth=<default>);
pen[][] copy(pen[][] a, int depth=<default>);
path[] copy(path[] a, int depth=<default>);
string[] copy(string[] a, int depth=<default>);
@@ -540,10 +536,9 @@ int[] copy(int[] a, int depth=<default>);
string[][] copy(string[][] a, int depth=<default>);
frame[] copy(frame[] a, int depth=<default>);
pair[] copy(pair[] a, int depth=<default>);
-coord[] copy(coord[] a, int depth=<default>);
-object[] copy(object[] a, int depth=<default>);
-marker[] copy(marker[] a, int depth=<default>);
-Legend[] copy(Legend[] a, int depth=<default>);
+bool3[] copy(bool3[] a, int depth=<default>);
+Label[] copy(Label[] a, int depth=<default>);
+picture[] copy(picture[] a, int depth=<default>);
pair[][] copy(pair[][] a, int depth=<default>);
real[] abs(pair[] a);
real[] abs(triple[] a);
@@ -576,28 +571,27 @@ pen deepblue;
pen palered;
real[] map(real f(pair), pair[] a);
int[] map(int f(real), real[] a);
-Legend[] map(Legend f(Legend), Legend[] a);
-frame[] map(frame f(frame), frame[] a);
+bool3[] map(bool3 f(bool3), bool3[] a);
Label[] map(Label f(Label), Label[] a);
+frame[] map(frame f(frame), frame[] a);
+coord[] map(coord f(coord), coord[] a);
+object[] map(object f(object), object[] a);
pen[][] map(pen[] f(pen[]), pen[][] a);
triple[] map(triple f(triple), triple[] a);
pen[] map(pen f(pen), pen[] a);
-object[] map(object f(object), object[] a);
-pair[] map(pair f(pair), pair[] a);
picture[] map(picture f(picture), picture[] a);
-string[] map(string f(string), string[] a);
+pair[] map(pair f(pair), pair[] a);
marker[] map(marker f(marker), marker[] a);
+string[] map(string f(string), string[] a);
void()()[] map(void f()()(void()()), void()()[] a);
pair[][] map(pair[] f(pair[]), pair[][] a);
real[] map(real f(real), real[] a);
int[] map(int f(int), int[] a);
string[][] map(string[] f(string[]), string[][] a);
-coord[] map(coord f(coord), coord[] a);
bool[] map(bool f(bool), bool[] a);
path[] map(path f(path), path[] a);
real[][] map(real[] f(real[]), real[][] a);
-bool3[] map(bool3 f(bool3), bool3[] a);
-coord[] map(coord f(coord), coord[] a);
+Legend[] map(Legend f(Legend), Legend[] a);
guide[] map(guide f(guide), guide[] a);
path unstraighten(path p);
path3 unstraighten(path3 p);
@@ -612,10 +606,10 @@ pair minratio(triple[][] p, pair b);
pair minratio(path3 g);
int[] sequence(int n);
pen[][] sequence(pen[] f(int), int n);
-bool3[] sequence(bool3 f(int), int n);
coord[] sequence(coord f(int), int n);
-Label[] sequence(Label f(int), int n);
-picture[] sequence(picture f(int), int n);
+object[] sequence(object f(int), int n);
+marker[] sequence(marker f(int), int n);
+Legend[] sequence(Legend f(int), int n);
int[] sequence(int f(int), int n);
string[][] sequence(string[] f(int), int n);
pair[] sequence(pair f(int), int n);
@@ -626,10 +620,9 @@ void()()[] sequence(void f()()(int), int n);
bool[] sequence(bool f(int), int n);
string[] sequence(string f(int), int n);
pair[][] sequence(pair[] f(int), int n);
-coord[] sequence(coord f(int), int n);
-object[] sequence(object f(int), int n);
-marker[] sequence(marker f(int), int n);
-Legend[] sequence(Legend f(int), int n);
+bool3[] sequence(bool3 f(int), int n);
+Label[] sequence(Label f(int), int n);
+picture[] sequence(picture f(int), int n);
real[][] sequence(real[] f(int), int n);
real[] sequence(real f(int), int n);
int[] sequence(int n, int m);
@@ -649,9 +642,9 @@ pair size(frame f);
int size(path p);
int size(path[] p);
int size(path3 p);
+void size(picture dest, picture src);
pair size(picture pic, bool user=<default>);
void size(picture pic=<default>, transform t);
-void size(picture dest, picture src);
void size(picture pic=<default>, real x, real y=<default>, bool keepAspect=<default>);
void size(picture pic=<default>, real xsize, real ysize, pair min, pair max);
void clear(file f);
@@ -670,18 +663,18 @@ string downcase(string s);
pen mediumgrey;
transform transform(pen p);
string readline(string prompt=<default>, string name=<default>, bool tabcompletion=<default>);
+void beep();
+pair relpoint(path p, real l);
+pair[][] transpose(pair[][] a);
pen[][] transpose(pen[][] a);
string[][] transpose(string[][] a);
real[][] transpose(real[][] a);
-pair[][] transpose(pair[][] a);
-void beep();
-transformation transformation(real[][] modelview, real[][] projection);
-transformation transformation(real[][] modelview);
-pair relpoint(path p, real l);
pen overwrite(int n);
int overwrite(pen p=<default>);
pen linewidth(real x);
real linewidth(pen p=<default>);
+transformation transformation(real[][] modelview);
+transformation transformation(real[][] modelview, real[][] projection);
pair maxratio(frame f);
pair maxratio(triple[][] p, pair b);
pair maxratio(path3 g);
@@ -706,23 +699,23 @@ slice cut(path p, path knife, int n);
bool is3D(frame f);
bool is3D(string format=<default>);
void add(frame dest, frame src);
+void add(frame f, transform t=<default>, Label L);
+void add(picture pic=<default>, void d(frame f, transform t), bool exact=<default>);
+void add(frame dest, frame src, filltype filltype, bool above=<default>);
+void add(frame dest, frame src, bool group, filltype filltype=<default>, bool above=<default>);
+void add(picture pic=<default>, void d(picture, real[][]), bool exact=<default>);
+void add(frame dest, frame src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>);
+void add(picture dest=<default>, frame src, pair position=<default>, bool group=<default>, filltype filltype=<default>, bool above=<default>);
+void add(picture src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>);
void add(picture dest=<default>, frame src, pair position, pair align, bool group=<default>, filltype filltype=<default>, bool above=<default>);
void add(frame dest, frame src, pair position, pair align, bool group=<default>, filltype filltype=<default>, bool above=<default>);
void add(picture src, bool group=<default>, filltype filltype=<default>, bool above=<default>);
-void add(picture pic=<default>, void d(frame f, transform t), bool exact=<default>);
void add(picture pic=<default>, void d(frame f, real[][] t, picture pic, projection P), bool exact=<default>);
-void add(picture pic=<default>, void d(picture, real[][]), bool exact=<default>);
+void add(picture pic=<default>, void d(picture, transform), bool exact=<default>);
void add(picture dest, picture src, bool group=<default>, filltype filltype=<default>, bool above=<default>);
-void add(picture pic=<default>, Label L);
void add(picture dest, picture src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>);
void add(picture dest=<default>, object F, pair position=<default>, bool group=<default>, filltype filltype=<default>, bool above=<default>);
-void add(frame dest, frame src, filltype filltype, bool above=<default>);
-void add(frame dest, frame src, bool group, filltype filltype=<default>, bool above=<default>);
-void add(frame dest, frame src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>);
-void add(picture dest=<default>, frame src, pair position=<default>, bool group=<default>, filltype filltype=<default>, bool above=<default>);
-void add(picture pic=<default>, void d(picture, transform), bool exact=<default>);
-void add(frame f, transform t=<default>, Label L);
-void add(picture src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>);
+void add(picture pic=<default>, Label L);
plain plain;
void purge(int divisor=<default>);
int Round(real x);
@@ -738,32 +731,30 @@ filltype Draw;
void Draw(picture pic=<default>, explicit path[] g, pen p=<default>);
filltype Draw(real xmargin=<default>, real ymargin=<default>, pen p=<default>);
void tab(file file);
-plain_scaling plain_scaling;
-string file(string s);
plain_bounds plain_bounds;
+string file(string s);
string outprefix(string prefix=<default>);
-object object(Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
object object(frame f);
object object(Label L);
+object object(Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
file stdin;
void()()[] array(int n, void value()(), int depth=<default>);
bool[] array(int n, bool value, int depth=<default>);
string[] array(int n, string value, int depth=<default>);
pair[][] array(int n, pair[] value, int depth=<default>);
-coord[] array(int n, coord value, int depth=<default>);
-object[] array(int n, object value, int depth=<default>);
-marker[] array(int n, marker value, int depth=<default>);
-Legend[] array(int n, Legend value, int depth=<default>);
+bool3[] array(int n, bool3 value, int depth=<default>);
+Label[] array(int n, Label value, int depth=<default>);
+picture[] array(int n, picture value, int depth=<default>);
real[][] array(int n, real[] value, int depth=<default>);
real[] array(int n, real value, int depth=<default>);
triple[] array(int n, triple value, int depth=<default>);
path[] array(int n, path value, int depth=<default>);
frame[] array(int n, frame value, int depth=<default>);
pen[][] array(int n, pen[] value, int depth=<default>);
-bool3[] array(int n, bool3 value, int depth=<default>);
coord[] array(int n, coord value, int depth=<default>);
-Label[] array(int n, Label value, int depth=<default>);
-picture[] array(int n, picture value, int depth=<default>);
+object[] array(int n, object value, int depth=<default>);
+marker[] array(int n, marker value, int depth=<default>);
+Legend[] array(int n, Legend value, int depth=<default>);
int[] array(int n, int value, int depth=<default>);
string[][] array(int n, string[] value, int depth=<default>);
pair[] array(int n, pair value, int depth=<default>);
@@ -778,8 +769,8 @@ int find(string s, string t, int pos=<default>);
position BeginPoint;
marginT BeginMargin(path, pen);
path buildcycle(... path[] p);
-bool BeginArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>);
bool BeginArrow(picture, path, pen, marginT(path, pen));
+bool BeginArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>);
marginT BeginPenMargin(path, pen);
int round(real x);
marginT BeginDotMargin(path, pen);
@@ -810,18 +801,18 @@ void draw(frame f, triple[][] p, triple center, bool straight, pen[] p, real opa
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 center=<default>, triple[] n, int[][] ni, pen[] p, real opacity, real shininess, real metallic, real fresnel0, pen[] c=<default>, int[][] ci=<default>, int interaction);
-void draw(picture pic=<default>, explicit path[] g, pen p=<default>, Label legend=<default>, marker marker=<default>);
-void draw(pair origin, picture pic=<default>, explicit path[] g, pen p=<default>, Label legend=<default>, marker marker=<default>);
void draw(picture pic=<default>, path[] g, pen fillrule=<default>, pen[] p);
-object draw(picture pic=<default>, Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), pair position, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
+object draw(picture pic=<default>, Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
void draw(frame f, explicit path[] g, pen p=<default>);
void draw(frame f, path g, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen)));
-object draw(picture pic=<default>, Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
void draw(picture pic=<default>, Label L=<default>, path g, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>);
void draw(pair origin, picture pic=<default>, Label L=<default>, path g, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>);
-void draw(frame f, guide[] g, pen p=<default>);
void draw(picture pic=<default>, guide[] g, pen p=<default>, Label legend=<default>, marker marker=<default>);
void draw(pair origin, picture pic=<default>, guide[] g, pen p=<default>, Label legend=<default>, marker marker=<default>);
+object draw(picture pic=<default>, Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), pair position, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
+void draw(picture pic=<default>, explicit path[] g, pen p=<default>, Label legend=<default>, marker marker=<default>);
+void draw(pair origin, picture pic=<default>, explicit path[] g, pen p=<default>, Label legend=<default>, marker marker=<default>);
+void draw(frame f, guide[] g, pen p=<default>);
void draw(frame f, path g, pen p=<default>);
int mantissaBits;
real identity(real x);
@@ -886,18 +877,18 @@ void write(file file=<default>, string s=<default>, guide x, void suffix(file)=<
void write(file file=<default>, string s=<default>, pen x, void suffix(file)=<default> ... pen[]);
void write(file file, string s=<default>, explicit guide[] x, void suffix(file)=<default>);
void write(string s=<default>, cputime c, string format=<default>, void suffix(file)=<default>);
-void write(string s=<default>, bool3 b, void suffix(file)=<default>);
void write(string s=<default>, explicit path[] x, void suffix(file)=<default>);
void write(file file, void suffix(file)=<default>);
void write(file file=<default>, string s=<default>, pen[] p);
void write(void suffix(file)=<default>);
-void write(file file, string s=<default>, bool3 b, void suffix(file)=<default>);
void write(file file, string s=<default>, explicit path[] x, void suffix(file)=<default>);
-void write(file file=<default>, Label L, void suffix(file)=<default>);
+void write(file file=<default>, align align, void suffix(file)=<default>);
void write(file file, string s=<default>, cputime c, string format=<default>, void suffix(file)=<default>);
void write(pairOrTriple a);
+void write(string s=<default>, bool3 b, void suffix(file)=<default>);
+void write(file file, string s=<default>, bool3 b, void suffix(file)=<default>);
void write(string s=<default>, explicit guide[] x, void suffix(file)=<default>);
-void write(file file=<default>, align align, void suffix(file)=<default>);
+void write(file file=<default>, Label L, void suffix(file)=<default>);
void save()();
marginT EndPenMargin(path, pen);
pair NNE;
@@ -950,21 +941,20 @@ string blend(pen p);
arrowhead HookHead;
arrowhead HookHead(real dir=<default>, real barb=<default>);
real[] concat(... real[][]);
-marker[] concat(... marker[][]);
pair[] concat(... pair[][]);
-picture[] concat(... picture[][]);
+marker[] concat(... marker[][]);
pen[] concat(... pen[][]);
-object[] concat(... object[][]);
+picture[] concat(... picture[][]);
path[] concat(... path[][]);
-Label[] concat(... Label[][]);
+coord[] concat(... coord[][]);
+object[] concat(... object[][]);
int[] concat(... int[][]);
void()()[] concat(... void()()[][]);
-Legend[] concat(... Legend[][]);
-string[] concat(... string[][]);
bool3[] concat(... bool3[][]);
-coord[] concat(... coord[][]);
+Label[] concat(... Label[][]);
+string[] concat(... string[][]);
+Legend[] concat(... Legend[][]);
triple[] concat(... triple[][]);
-coord[] concat(... coord[][]);
frame[] concat(... frame[][]);
guide[] concat(... guide[][]);
bool[] concat(... bool[][]);
@@ -974,71 +964,66 @@ real[] log1p(real[] a);
real infinity;
bool alias(pair[][] a, pair[][] b);
bool alias(guide[] a, guide[] b);
-bool alias(bool3 a, bool3 b);
-bool alias(coord a, coord b);
-bool alias(scaling a, scaling b);
-bool alias(ScaleT a, ScaleT b);
-bool alias(side a, side b);
-bool alias(Label[] a, Label[] b);
-bool alias(cputime a, cputime b);
-bool alias(pair[] a, pair[] b);
-bool alias(hsv a, hsv b);
+bool alias(filltype a, filltype b);
bool alias(coord[] a, coord[] b);
-bool alias(projection a, projection b);
-bool alias(pairOrTriple a, pairOrTriple b);
-bool alias(object a, object b);
-bool alias(int[] a, int[] b);
-bool alias(string[][] a, string[][] b);
-bool alias(marginT a, marginT b);
-bool alias(bounds a, bounds b);
-bool alias(scaleT a, scaleT b);
-bool alias(arrowhead a, arrowhead b);
-bool alias(picture[] a, picture[] b);
-bool alias(real[][] a, real[][] b);
-bool alias(scaling a, scaling b);
-bool alias(coords2 a, coords2 b);
bool alias(Legend a, Legend b);
bool alias(position a, position b);
-bool alias(Legend[] a, Legend[] b);
-bool alias(realschur a, realschur b);
-bool alias(string[] a, string[] b);
-bool alias(frame[] a, frame[] b);
-bool alias(slice a, slice b);
-bool alias(simplex a, simplex b);
+bool alias(object[] a, object[] b);
+bool alias(schur a, schur b);
+bool alias(pair[] a, pair[] b);
+bool alias(scaling a, scaling b);
bool alias(light a, light b);
bool alias(picture a, picture b);
-bool alias(bool[] a, bool[] b);
-bool alias(void()()[] a, void()()[] b);
-bool alias(pen[][] a, pen[][] b);
-bool alias(coord a, coord b);
+bool alias(int[] a, int[] b);
+bool alias(string[][] a, string[][] b);
+bool alias(slice a, slice b);
bool alias(autoscaleT a, autoscaleT b);
bool alias(align a, align b);
-bool alias(object[] a, object[] b);
-bool alias(processtime a, processtime b);
-bool alias(path[] a, path[] b);
-bool alias(triple[] a, triple[] b);
+bool alias(marker[] a, marker[] b);
+bool alias(cputime a, cputime b);
+bool alias(real[][] a, real[][] b);
+bool alias(bool3 a, bool3 b);
bool alias(bool3[] a, bool3[] b);
-bool alias(coord[] a, coord[] b);
-bool alias(coords2 a, coords2 b);
bool alias(freezableBounds a, freezableBounds b);
bool alias(transformation a, transformation b);
bool alias(node a, node b);
bool alias(Label a, Label b);
-bool alias(schur a, schur b);
-bool alias(real[] a, real[] b);
-bool alias(pen[] a, pen[] b);
-bool alias(filltype a, filltype b);
+bool alias(Label[] a, Label[] b);
+bool alias(processtime a, processtime b);
+bool alias(string[] a, string[] b);
+bool alias(frame[] a, frame[] b);
+bool alias(coords2 a, coords2 b);
bool alias(coords3 a, coords3 b);
bool alias(marker a, marker b);
-bool alias(marker[] a, marker[] b);
+bool alias(bool[] a, bool[] b);
+bool alias(void()()[] a, void()()[] b);
+bool alias(pen[][] a, pen[][] b);
+bool alias(marginT a, marginT b);
+bool alias(ScaleT a, ScaleT b);
+bool alias(side a, side b);
+bool alias(picture[] a, picture[] b);
+bool alias(realschur a, realschur b);
+bool alias(path[] a, path[] b);
+bool alias(triple[] a, triple[] b);
+bool alias(coord a, coord b);
+bool alias(projection a, projection b);
+bool alias(pairOrTriple a, pairOrTriple b);
+bool alias(object a, object b);
+bool alias(Legend[] a, Legend[] b);
+bool alias(real[] a, real[] b);
+bool alias(pen[] a, pen[] b);
+bool alias(hsv a, hsv b);
+bool alias(bounds a, bounds b);
+bool alias(scaleT a, scaleT b);
+bool alias(arrowhead a, arrowhead b);
real pi;
int getint(string name=<default>, int default=<default>, string prompt=<default>, bool store=<default>);
int bitreverse(int a, int bits);
bool IgnoreAspect;
void postscript(frame f, string s);
void postscript(frame f, string s, pair min, pair max);
-void postscript(picture pic=<default>, string s, pair min, pair max);
void postscript(picture pic=<default>, string s);
+void postscript(picture pic=<default>, string s, pair min, pair max);
transform slant(real s);
void breakpoint(code s=<default>);
void breakpoints();
@@ -1059,10 +1044,10 @@ real[] sort(real[] a);
real[][] sort(real[][] a);
string[] sort(string[] a);
string[][] sort(string[][] a);
-bool3[] sort(bool3[] a, bool less(bool3, bool3), bool stable=<default>);
coord[] sort(coord[] a, bool less(coord, coord), bool stable=<default>);
-Label[] sort(Label[] a, bool less(Label, Label), bool stable=<default>);
-picture[] sort(picture[] a, bool less(picture, picture), bool stable=<default>);
+object[] sort(object[] a, bool less(object, object), bool stable=<default>);
+marker[] sort(marker[] a, bool less(marker, marker), bool stable=<default>);
+Legend[] sort(Legend[] a, bool less(Legend, Legend), bool stable=<default>);
path[] sort(path[] a, bool less(path, path), bool stable=<default>);
pen[][] sort(pen[][] a, bool less(pen[], pen[]), bool stable=<default>);
pair[][] sort(pair[][] a, bool less(pair[], pair[]), bool stable=<default>);
@@ -1070,10 +1055,9 @@ pen[] sort(pen[] a, bool less(pen, pen), bool stable=<default>);
bool[] sort(bool[] a, bool less(bool, bool), bool stable=<default>);
void()()[] sort(void()()[] a, bool less(void()(), void()()), bool stable=<default>);
frame[] sort(frame[] a, bool less(frame, frame), bool stable=<default>);
-coord[] sort(coord[] a, bool less(coord, coord), bool stable=<default>);
-object[] sort(object[] a, bool less(object, object), bool stable=<default>);
-marker[] sort(marker[] a, bool less(marker, marker), bool stable=<default>);
-Legend[] sort(Legend[] a, bool less(Legend, Legend), bool stable=<default>);
+bool3[] sort(bool3[] a, bool less(bool3, bool3), bool stable=<default>);
+Label[] sort(Label[] a, bool less(Label, Label), bool stable=<default>);
+picture[] sort(picture[] a, bool less(picture, picture), bool stable=<default>);
int[] sort(int[] a, bool less(int, int), bool stable=<default>);
string[][] sort(string[][] a, bool less(string[], string[]), bool stable=<default>);
real[] sort(real[] a, bool less(real, real), bool stable=<default>);
@@ -1091,11 +1075,11 @@ void latticeshade(picture pic=<default>, path[] g, bool stroke=<default>, pen fi
pair[] pairs(real[] x, real[] y);
void eval(code s, bool embedded=<default>);
void eval(string s, bool embedded=<default>);
-bool Arrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>);
bool Arrow(picture, path, pen, marginT(path, pen));
+bool Arrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>);
void drawTube(frame f, triple[] g, real width, pen[] p, real opacity, real shininess, real metallic, real fresnel0, triple min, triple max, bool core=<default>);
-bool Arrows(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>);
bool Arrows(picture, path, pen, marginT(path, pen));
+bool Arrows(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>);
int tell(file f);
pen Yellow;
pair up;
@@ -1121,9 +1105,9 @@ pen[] mean(pen[][] palette, real opacity(real[])=<default>);
string mktemp(string s);
void sleep(int seconds);
void drawstrokepath(picture pic=<default>, path g, pen strokepen, pen p=<default>);
+void unitsize(picture pic=<default>, real x, real y=<default>, real z=<default>);
void arrow(picture pic=<default>, Label L=<default>, pair b, pair dir, real length=<default>, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>);
picture arrow(arrowhead arrowhead=<default>, path g, pen p=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>, bool forwards=<default>, marginT margin(path, pen)=<default>, bool center=<default>);
-void unitsize(picture pic=<default>, real x, real y=<default>, real z=<default>);
picture arrow2(arrowhead arrowhead=<default>, path g, pen p=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>);
path unitsquare;
real arrowdir;
@@ -1169,9 +1153,6 @@ real radius(path3 p, real t);
real radius(triple z0, triple c0, triple c1, triple z1, real t);
transform scaleless(transform t);
void makedraw(frame f, path g, pen p, int depth=<default>);
-simplex simplex(real[] c, real[][] A, real[] b, bool phase1=<default>);
-simplex simplex(real[] c, real[][] A, int[] s, real[] b);
-simplex simplex;
real nan;
pair down;
path arc(pair c, real r, real angle1, real angle2);
@@ -1249,9 +1230,9 @@ pair SW;
void flush(file f);
pen thin();
pen palecyan;
+void warning(string s, string t, bool position=<default>);
frame legend(picture pic=<default>, int perline=<default>, real xmargin=<default>, real ymargin=<default>, real linelength=<default>, real hskip=<default>, real vskip=<default>, real maxwidth=<default>, real maxheight=<default>, bool hstretch=<default>, bool vstretch=<default>, pen p=<default>);
picture legend(Legend[] Legend, int perline=<default>, real linelength, real hskip, real vskip, real maxwidth=<default>, real maxheight=<default>, bool hstretch=<default>, bool vstretch=<default>);
-void warning(string s, string t, bool position=<default>);
real Degrees(real radians);
picture legenditem(Legend legenditem, real linelength);
real legendhskip;
@@ -1298,8 +1279,8 @@ triple operator +(triple a);
triple[] operator +(triple[] a);
pen operator +(pen a, pen b);
transform operator +(transform a, transform b);
-marginT operator +(path, pen)(marginT ma(path, pen), marginT mb(path, pen));
pen operator +(pen p, real w);
+marginT operator +(path, pen)(marginT ma(path, pen), marginT mb(path, pen));
pen[] operator +(pen a, pen[] b);
pen operator +(real w, pen p);
string operator +(... string[] a);
@@ -1376,15 +1357,15 @@ triple operator *(real[][] t, triple v);
triple operator *(real x, triple v);
triple operator *(triple v, real x);
path3 operator *(real[][] t, path3 g);
+picture operator *(real[][] t, picture orig);
bounds operator *(transform t, bounds b);
side operator *(real x, side s);
Label operator *(real[][] t, Label L);
-picture operator *(transform t, picture orig);
path[] operator *(transform t, explicit path[] p);
-object operator *(transform t, explicit object F);
+picture operator *(transform t, picture orig);
pair[] operator *(transform t, pair[] z);
+object operator *(transform t, explicit object F);
Label operator *(transform t, Label L);
-picture operator *(real[][] t, picture orig);
bool operator init();
int operator init();
real operator init();
@@ -1398,41 +1379,37 @@ path3 operator init();
pen operator init();
frame operator init();
file operator init();
-bool3 operator init();
-coord operator init();
-scaling operator init();
+filltype operator init();
+Legend operator init();
+position operator init();
+schur operator init();
+marginT operator init();
ScaleT operator init();
side operator init();
-cputime operator init();
-coord operator init();
+realschur operator init();
+slice operator init();
autoscaleT operator init();
align operator init();
-processtime operator init();
-marginT operator init();
+cputime operator init();
+hsv operator init();
bounds operator init();
scaleT operator init();
arrowhead operator init();
-filltype operator init();
+coords2 operator init();
coords3 operator init();
marker operator init();
-slice operator init();
-simplex operator init();
+scaling operator init();
light operator init();
picture operator init();
-hsv operator init();
+coord operator init();
projection operator init();
pairOrTriple operator init();
object operator init();
-coords2 operator init();
+bool3 operator init();
transformation operator init();
node operator init();
Label operator init();
-schur operator init();
-scaling operator init();
-coords2 operator init();
-Legend operator init();
-position operator init();
-realschur operator init();
+processtime operator init();
real operator cast(int);
pair operator cast(int);
pair operator cast(real);
@@ -1475,32 +1452,32 @@ guide operator cast(cycleToken tok);
guide operator cast(curlSpecifier spec);
guide operator cast(tensionSpecifier t);
guide[] operator cast(path[] g);
+position operator cast(int x);
+hsv operator cast(pen p);
+object operator cast(string s);
bool3[] operator cast(bool[] b);
position operator cast(real x);
Label operator cast(string s);
pair operator cast(pairOrTriple a);
triple operator cast(pairOrTriple a);
-pen operator cast(hsv hsv);
frame operator cast(object F);
-align operator cast(side side);
-hsv operator cast(pen p);
-position operator cast(pair x);
guide[] operator cast(pair[] z);
path[] operator cast(guide[] g);
+bool operator cast(bool3 b);
+position operator cast(pair x);
+path[] operator cast(guide g);
+align operator cast(side side);
pair operator cast(position P);
object operator cast(frame f);
-path[] operator cast(guide g);
-object operator cast(Label L);
-Label operator cast(object F);
-bool operator cast(bool3 b);
-bool[] operator cast(bool3[] b);
-align operator cast(pair dir);
path[] operator cast(pair[] z);
path[] operator cast(path p);
-align operator cast(triple dir);
+bool[] operator cast(bool3[] b);
+align operator cast(pair dir);
+object operator cast(Label L);
+Label operator cast(object F);
bool3 operator cast(bool b);
-position operator cast(int x);
-object operator cast(string s);
+align operator cast(triple dir);
+pen operator cast(hsv hsv);
pen deepred;
bool error(file f);
string operator ecast(int);
@@ -1604,44 +1581,40 @@ bool operator ==(transform a, transform b);
bool operator ==(file a, file b);
bool operator ==(path a, path b);
bool operator ==(path3 a, path3 b);
-bool operator ==(bool a, bool3 b);
-bool operator ==(scaling a, scaling b);
-bool operator ==(coords2 a, coords2 b);
-bool operator ==(Legend a, Legend b);
-bool operator ==(position a, position b);
-bool operator ==(realschur a, realschur b);
-bool operator ==(bool3 a, bool b);
-bool operator ==(slice a, slice b);
-bool operator ==(simplex a, simplex b);
-bool operator ==(light a, light b);
-bool operator ==(picture a, picture b);
-bool operator ==(coord a, coord b);
-bool operator ==(autoscaleT a, autoscaleT b);
-bool operator ==(align a, align b);
-bool operator ==(processtime a, processtime b);
-bool operator ==(coords2 a, coords2 b);
+bool operator ==(bool3 a, bool3 b);
bool operator ==(freezableBounds a, freezableBounds b);
bool operator ==(transformation a, transformation b);
bool operator ==(node a, node b);
bool operator ==(Label a, Label b);
-bool operator ==(schur a, schur b);
-bool operator ==(filltype a, filltype b);
+bool operator ==(processtime a, processtime b);
+bool operator ==(coords2 a, coords2 b);
bool operator ==(coords3 a, coords3 b);
bool operator ==(marker a, marker b);
-bool operator ==(bool3 a, bool3 b);
-bool operator ==(coord a, coord b);
-bool operator ==(scaling a, scaling b);
+bool operator ==(marginT a, marginT b);
bool operator ==(ScaleT a, ScaleT b);
bool operator ==(side a, side b);
-bool operator ==(cputime a, cputime b);
-bool operator ==(hsv a, hsv b);
+bool operator ==(realschur a, realschur b);
+bool operator ==(coord a, coord b);
bool operator ==(projection a, projection b);
bool operator ==(pairOrTriple a, pairOrTriple b);
bool operator ==(object a, object b);
-bool operator ==(marginT a, marginT b);
+bool operator ==(hsv a, hsv b);
bool operator ==(bounds a, bounds b);
bool operator ==(scaleT a, scaleT b);
bool operator ==(arrowhead a, arrowhead b);
+bool operator ==(bool3 a, bool b);
+bool operator ==(filltype a, filltype b);
+bool operator ==(Legend a, Legend b);
+bool operator ==(position a, position b);
+bool operator ==(schur a, schur b);
+bool operator ==(scaling a, scaling b);
+bool operator ==(light a, light b);
+bool operator ==(picture a, picture b);
+bool operator ==(bool a, bool3 b);
+bool operator ==(slice a, slice b);
+bool operator ==(autoscaleT a, autoscaleT b);
+bool operator ==(align a, align b);
+bool operator ==(cputime a, cputime b);
bool operator !=(bool a, bool b);
bool[] operator !=(bool a, bool[] b);
bool[] operator !=(bool[] a, bool b);
@@ -1678,44 +1651,40 @@ bool operator !=(transform a, transform b);
bool operator !=(file a, file b);
bool operator !=(path a, path b);
bool operator !=(path3 a, path3 b);
-bool operator !=(bool a, bool3 b);
-bool operator !=(scaling a, scaling b);
-bool operator !=(coords2 a, coords2 b);
-bool operator !=(Legend a, Legend b);
-bool operator !=(position a, position b);
-bool operator !=(realschur a, realschur b);
-bool operator !=(bool3 a, bool b);
-bool operator !=(slice a, slice b);
-bool operator !=(simplex a, simplex b);
-bool operator !=(light a, light b);
-bool operator !=(picture a, picture b);
-bool operator !=(coord a, coord b);
-bool operator !=(autoscaleT a, autoscaleT b);
-bool operator !=(align a, align b);
-bool operator !=(processtime a, processtime b);
-bool operator !=(coords2 a, coords2 b);
+bool operator !=(bool3 a, bool3 b);
bool operator !=(freezableBounds a, freezableBounds b);
bool operator !=(transformation a, transformation b);
bool operator !=(node a, node b);
bool operator !=(Label a, Label b);
-bool operator !=(schur a, schur b);
-bool operator !=(filltype a, filltype b);
+bool operator !=(processtime a, processtime b);
+bool operator !=(coords2 a, coords2 b);
bool operator !=(coords3 a, coords3 b);
bool operator !=(marker a, marker b);
-bool operator !=(bool3 a, bool3 b);
-bool operator !=(coord a, coord b);
-bool operator !=(scaling a, scaling b);
+bool operator !=(marginT a, marginT b);
bool operator !=(ScaleT a, ScaleT b);
bool operator !=(side a, side b);
-bool operator !=(cputime a, cputime b);
-bool operator !=(hsv a, hsv b);
+bool operator !=(realschur a, realschur b);
+bool operator !=(coord a, coord b);
bool operator !=(projection a, projection b);
bool operator !=(pairOrTriple a, pairOrTriple b);
bool operator !=(object a, object b);
-bool operator !=(marginT a, marginT b);
+bool operator !=(hsv a, hsv b);
bool operator !=(bounds a, bounds b);
bool operator !=(scaleT a, scaleT b);
bool operator !=(arrowhead a, arrowhead b);
+bool operator !=(bool3 a, bool b);
+bool operator !=(filltype a, filltype b);
+bool operator !=(Legend a, Legend b);
+bool operator !=(position a, position b);
+bool operator !=(schur a, schur b);
+bool operator !=(scaling a, scaling b);
+bool operator !=(light a, light b);
+bool operator !=(picture a, picture b);
+bool operator !=(bool a, bool3 b);
+bool operator !=(slice a, slice b);
+bool operator !=(autoscaleT a, autoscaleT b);
+bool operator !=(align a, align b);
+bool operator !=(cputime a, cputime b);
bool operator <(int a, int b);
bool[] operator <(int a, int[] b);
bool[] operator <(int[] a, int b);
@@ -1741,7 +1710,6 @@ bool[] operator <=(string a, string[] b);
bool[] operator <=(string[] a, string b);
bool[] operator <=(string[] a, string[] b);
bool operator <=(coord a, coord b);
-bool operator <=(coord a, coord b);
void srand(int seed);
bool operator >(int a, int b);
bool[] operator >(int a, int[] b);
@@ -1768,7 +1736,6 @@ bool[] operator >=(string a, string[] b);
bool[] operator >=(string[] a, string b);
bool[] operator >=(string[] a, string[] b);
bool operator >=(coord a, coord b);
-bool operator >=(coord a, coord b);
filltype UnFill(real xmargin=<default>, real ymargin=<default>);
filltype UnFill;
real degrees(pair z, bool warn=<default>);
@@ -1794,8 +1761,8 @@ guide operator ..(... guide[])(tensionSpecifier t);
path polygon(int n);
guide operator --(... guide[]);
guide operator ---(... guide[]);
-void()()[] saveFunctions;
pen NewCenturySchoolBook(string series=<default>, string shape=<default>);
+void()()[] saveFunctions;
bool operator &(bool a, bool b);
bool[] operator &(bool a, bool[] b);
bool[] operator &(bool[] a, bool b);
@@ -1862,15 +1829,15 @@ real dot(real[] a, real[] b);
pair dot(pair[] a, pair[] b);
real dot(explicit pair z, explicit pair w);
real dot(triple u, triple v);
-void dot(picture pic=<default>, Label L, pair z, align align=<default>, string format=<default>, pen p=<default>, filltype filltype=<default>);
-void dot(picture pic=<default>, Label[] L=<default>, explicit path g, align align=<default>, string format=<default>, pen p=<default>, filltype filltype=<default>);
marker dot(pen p=<default>, filltype filltype=<default>);
void dot(picture pic=<default>, pair z, pen p=<default>, filltype filltype=<default>);
void dot(frame f, pair z, pen p=<default>, filltype filltype=<default>);
-marker dot;
void dot(picture pic=<default>, Label L, pen p=<default>, filltype filltype=<default>);
void dot(picture pic=<default>, Label[] L=<default>, pair[] z, align align=<default>, string format=<default>, pen p=<default>, filltype filltype=<default>);
void dot(picture pic=<default>, path[] g, pen p=<default>, filltype filltype=<default>);
+marker dot;
+void dot(picture pic=<default>, Label L, pair z, align align=<default>, string format=<default>, pen p=<default>, filltype filltype=<default>);
+void dot(picture pic=<default>, Label[] L=<default>, explicit path g, align align=<default>, string format=<default>, pen p=<default>, filltype filltype=<default>);
void list(string s, bool imports=<default>);
pair NNW;
string phantom(string s);
@@ -1903,13 +1870,12 @@ void _draw(frame f, path g, pen p);
void _draw(frame f, path3 g, triple center=<default>, pen[] p, real opacity, real shininess, real metallic, real fresnel0, int interaction=<default>);
void _draw(picture pic, path g, pen p, marginT margin(path, pen));
frame align(frame f, pair align);
-path[] align(path[] g, transform t=<default>, pair position, pair align, pen p=<default>);
object align(object F, pair align);
+path[] align(path[] g, transform t=<default>, pair position, pair align, pen p=<default>);
real unitrand();
string[] history(string name, int n=<default>);
string[] history(int n=<default>);
coord[] maxcoords(coord[] in, bool operator <=(coord, coord));
-coord[] maxcoords(coord[] in, bool operator <=(coord, coord));
pen AvantGarde(string series=<default>, string shape=<default>);
frame enclose(string prefix=<default>, object F, string format=<default>);
int count;
@@ -1951,8 +1917,8 @@ void abort(string s=<default>);
bool Aspect;
string hex(pen p);
int hex(string s);
-path brace(pair a, pair b, real amplitude=<default>);
void deactivatequote(picture pic=<default>);
+path brace(pair a, pair b, real amplitude=<default>);
string format(string format, int x, string locale=<default>);
string format(string format, bool forcemath=<default>, string separator, real x, string locale=<default>);
string format(string format=<default>, bool forcemath=<default>, real x, string locale=<default>);
@@ -1981,16 +1947,16 @@ real braceinnerangle;
real braceouterangle;
void tex(frame f, string s);
void tex(frame f, string s, pair min, pair max);
-void tex(picture pic=<default>, string s, pair min, pair max);
void tex(picture pic=<default>, string s);
+void tex(picture pic=<default>, string s, pair min, pair max);
real bracedefaultratio;
bool prconly(string format=<default>);
pen Black;
triple size3(frame f);
void size3(picture pic=<default>, real x, real y=<default>, real z=<default>, bool keepAspect=<default>);
bool eof(file f);
-frame dotframe(pen p=<default>, filltype filltype=<default>);
frame dotframe;
+frame dotframe(pen p=<default>, filltype filltype=<default>);
real realMax;
pair NE;
real realMin;
@@ -2007,7 +1973,6 @@ pair[][] fft(pair[][] a, int sign=<default>);
pair[][][] fft(pair[][][] a, int sign=<default>);
pair SE;
pen nobasealign;
-sCAD operator init();
real animationdelay;
animation operator init();
frame NoBox(frame f);
@@ -2054,6 +2019,16 @@ bsp operator init();
picture operator cast(face f);
face operator cast(path3 p);
void add(picture pic=<default>, face[] faces, projection P=<default>);
+sCAD operator init();
+surface surface(vertex[][] g);
+weighted operator init();
+bucket operator init();
+vertex operator init();
+object operator init();
+vertex[][] contour3(triple[][][] v, real[][][] f, real[][][] midpoint=<default>, projection P=<default>);
+vertex[][] contour3(real[][][] f, real[][][] midpoint=<default>, triple a, triple b, projection P=<default>);
+vertex[][] contour3(real f(real, real, real), triple a, triple b, int nx=<default>, int ny=<default>, int nz=<default>, projection P=<default>);
+real eps;
segment case1(pair p0, pair p1, int edge);
void draw(picture pic=<default>, Label[] L=<default>, guide[][] g, pen[] p);
void draw(picture pic=<default>, Label[] L=<default>, guide[][] g, pen p=<default>);
@@ -2073,15 +2048,6 @@ guide[][] contour(picture pic=<default>, real f(real, real), pair a, pair b, rea
guide[][] contour(picture pic=<default>, real f(pair), pair a, pair b, real[] c, int nx=<default>, int ny=<default>, guide join(... guide[])=<default>);
guide[][] contour(picture pic=<default>, pair[] z, real[] f, real[] c, guide join(... guide[])=<default>);
real eps;
-surface surface(vertex[][] g);
-weighted operator init();
-bucket operator init();
-vertex operator init();
-object operator init();
-vertex[][] contour3(triple[][][] v, real[][][] f, real[][][] midpoint=<default>, projection P=<default>);
-vertex[][] contour3(real[][][] f, real[][][] midpoint=<default>, triple a, triple b, projection P=<default>);
-vertex[][] contour3(real f(real, real, real), triple a, triple b, int nx=<default>, int ny=<default>, int nz=<default>, projection P=<default>);
-real eps;
void draw(TreeNode root, pair pos);
real treeNodeStep;
void drawAll(TreeNode node, frame f);
@@ -2108,12 +2074,12 @@ void drawVertexX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<de
void drawVertexBox(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>);
void drawVertexBoxO(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>);
void drawVertexOX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>);
-void drawVertexBoxX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>);
void drawVertexTriangle(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>);
void drawVertexTriangleO(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>);
-void do_overpaint(picture pic, path p, pen bgpen, real halfwidth, real vertexangle);
+void drawVertexBoxX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>);
pen doublelinepen;
real doublelinespacing;
+void do_overpaint(picture pic, path p, pen bgpen, real halfwidth, real vertexangle);
void texshipout(string stem, picture pic=<default>, bool xalign=<default>);
bool XYAlign;
void drawDoubleLine(picture pic=<default>, path p, pen fgpen=<default>, real dlspacing=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>);
@@ -2141,8 +2107,8 @@ pen fermionpen;
pen bigvertexpen;
real bigvertexsize;
real minvertexangle;
-void drawMomArrow(picture pic=<default>, path p, align align, position pos=<default>, real offset=<default>, real length=<default>, pen fgpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real margin=<default>);
pen ghostpen;
+void drawMomArrow(picture pic=<default>, path p, align align, position pos=<default>, real offset=<default>, real length=<default>, pen fgpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real margin=<default>);
void fmdefaults();
real linemargin;
void drawFermion(picture pic=<default>, path p, pen fgpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>);
@@ -2187,6 +2153,12 @@ point circumcenter(point A, point B, point C);
point circumcenter(triangle t);
circle circumcircle(point A, point B, point C);
circle circumcircle(triangle t);
+line altitude(vertex V);
+line altitude(side side);
+point isogonalconjugate(triangle t, point M);
+point isogonal(side side, point M);
+line isogonal(vertex V, point M);
+triangle isogonal(triangle t, point M);
point point(coordsys R, pair p, real m=<default>);
point point(explicit pair p, real m);
point point(coordsys R, explicit point M, real m=<default>);
@@ -2217,13 +2189,7 @@ point point(explicit vertex V);
point point(trilinear tri);
point point(circle c, point M);
point point(circle c, explicit vector v);
-line altitude(vertex V);
-line altitude(side side);
bool finite(explicit point p);
-point isogonalconjugate(triangle t, point M);
-point isogonal(side side, point M);
-line isogonal(vertex V, point M);
-triangle isogonal(triangle t, point M);
void dot(picture pic=<default>, Label L, explicit point Z, align align=<default>, string format=<default>, pen p=<default>);
real dot(point A, point B);
real dot(point A, explicit pair B);
@@ -2284,8 +2250,8 @@ bool defined(point P);
string conictype(bqe bqe);
triangle antipedal(triangle t, point M);
void clipdraw(picture pic=<default>, Label L=<default>, path g, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, real xmargin=<default>, real ymargin=<default>, Label legend=<default>, marker marker=<default>);
-int conicnodesfactor;
real perpfactor;
+int conicnodesfactor;
int conicnodesnumber(conic co, real angle1, real angle2, bool dir=<default>);
line hline(coordsys R=<default>);
line hline;
@@ -2309,6 +2275,7 @@ point orthocenter(point A, point B, point C);
point orthocenter(triangle t);
line extend(line l);
point intersectionpoint(line l1, line l2);
+point[] standardizecoordsys(coordsys R=<default>, bool warn=<default> ... point[] M);
pair[] intersectionpoints(pair A, pair B, real a, real b, real c, real d, real f, real g);
pair[] intersectionpoints(pair A, pair B, real[] equation);
point[] intersectionpoints(line l, path g);
@@ -2355,7 +2322,6 @@ point intouch(side side);
triangle intouch(triangle t);
real rf(real x, real y, real z);
bool concurrent(... line[] l);
-point[] standardizecoordsys(coordsys R=<default>, bool warn=<default> ... point[] M);
real inradius(point A, point B, point C);
real inradius(triangle t);
pen addpenline;
@@ -2432,6 +2398,7 @@ int nodesystem;
bool collinear(vector u, vector v);
point centroid(point A, point B, point C);
point centroid(triangle t);
+bool between(point M, point O, point N);
int angularsystem;
path square(pair z1, pair z2);
void filldraw(picture pic=<default>, circle c, pen fillpen=<default>, pen drawpen=<default>);
@@ -2460,7 +2427,6 @@ vector changecoordsys(coordsys R, vector v);
line changecoordsys(coordsys R, line l);
bqe changecoordsys(coordsys R, bqe bqe);
conic changecoordsys(coordsys R, conic co);
-bool between(point M, point O, point N);
real angle(explicit point M, coordsys R=<default>, bool warn=<default>);
real angle(explicit vector v, coordsys R=<default>, bool warn=<default>);
real angle(line l, coordsys R=<default>);
@@ -2513,6 +2479,9 @@ line[] complementary(explicit segment s);
arc complementary(arc a);
point ppoint(arc a, real x);
path fromFocus(conic co, real angle1, real angle2, int n, bool direction);
+segment segment(point A, point B);
+segment segment(line l);
+segment segment(explicit side side);
bool sameside(point M, point N, point O);
bool sameside(point M, point P, line l);
point[] sameside(point M, line l1, line l2);
@@ -2747,9 +2716,6 @@ triangle triangle(line l1, line l2, line l3);
trilinear trilinear(triangle t, real a, real b, real c);
trilinear trilinear(triangle t, point M);
trilinear trilinear(triangle t, real f(real, real, real), real a=<default>, real b=<default>, real c=<default>);
-segment segment(point A, point B);
-segment segment(line l);
-segment segment(explicit side side);
triangle triangleAbc(real alpha, real b, real c, real angle=<default>, point A=<default>);
triangle triangleabc(real a, real b, real c, real angle=<default>, point A=<default>);
triangle anticomplementary(triangle t);
@@ -2769,14 +2735,14 @@ real approximate(real t);
real[] approximate(real[] T);
void markangle(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, explicit line l1, explicit line l2, explicit pair align=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, pen p=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>, marker marker=<default>);
void markangle(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, explicit line l1, explicit line l2, explicit vector align, bool arrow(picture, path, pen, marginT(path, pen))=<default>, pen p=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>, marker marker=<default>);
+triangle cevian(triangle t, point P);
+point cevian(side side, point P);
+line cevian(vertex V, point P);
transform hprojection(line l, bool safe=<default>);
point conj(explicit point M);
vector conj(explicit vector u);
hyperbola conj(hyperbola h);
transform vprojection(line l, bool safe=<default>);
-triangle cevian(triangle t, point P);
-point cevian(side side, point P);
-line cevian(vertex V, point P);
parabola parabola(point F, line l);
parabola parabola(point F, point vertex);
parabola parabola(point F, real a, real angle);
@@ -2845,6 +2811,8 @@ string massformat(string format=<default>, string s, mass M);
int relativesystem;
void drawline(picture pic=<default>, triangle t, pen p=<default>);
void addMargins(picture pic=<default>, real lmargin=<default>, real bmargin=<default>, real rmargin=<default>, real tmargin=<default>, bool rigid=<default>, bool allObject=<default>);
+real[] bangles(picture pic=<default>, parabola p);
+real[][] bangles(picture pic=<default>, hyperbola h);
triangle medial(triangle t);
line median(vertex V);
line median(side side);
@@ -2863,8 +2831,127 @@ abscissa curabscissa(ellipse el, point M);
abscissa curabscissa(parabola p, point M);
abscissa curabscissa(conic co, point M);
abscissa curabscissa(arc a, point M);
-real[] bangles(picture pic=<default>, parabola p);
-real[][] bangles(picture pic=<default>, hyperbola h);
+locateT operator init();
+void Straight(flatguide3)(... void(flatguide3)[]);
+void graph(flatguide3)(triple F(real), real, real, int)(void join(flatguide3)(... void(flatguide3)[]));
+void(flatguide3)[] graph(triple F(real), real, real, int)(void join(flatguide3)(... void(flatguide3)[]), bool3 cond(real));
+void graph(flatguide3)(picture pic=<default>, real x(real), real y(real), real z(real), real a, real b, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[] graph(picture pic=<default>, real x(real), real y(real), real z(real), real a, real b, int n=<default>, bool3 cond(real), void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(picture pic=<default>, triple v(real), real a, real b, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[] graph(picture pic=<default>, triple v(real), real a, real b, int n=<default>, bool3 cond(real), void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(picture pic=<default>, triple[] v, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[] graph(picture pic=<default>, triple[] v, bool3[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(picture pic=<default>, real[] x, real[] y, real[] z, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[] graph(picture pic=<default>, real[] x, real[] y, real[] z, bool3[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(triple F(path, real), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(triple F(pair), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(picture pic=<default>, real f(pair), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(real f(pair), path p, int n=<default>, real T(pair), void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[][] lift(real f(real x, real y), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[][] lift(real f(pair z), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>);
+triple polar(real r, real theta, real phi);
+void polargraph(flatguide3)(real r(real, real), real theta(real), real phi(real), int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void xaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), 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>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
+void yaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), 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>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
+void zaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), 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>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
+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>);
+bool uperiodic(real[][] a);
+bool uperiodic(triple[][] a);
+bool vperiodic(real[][] a);
+bool vperiodic(triple[][] a);
+void OutTicks(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>);
+void OutTicks(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>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void OutTicks(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 axis(picture pic=<default>, Label L=<default>, path3 g, path3 g2=<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>), ticklocate locate, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, int[] divisor=<default>, bool above=<default>, bool opposite=<default>);
+void Bounds(picture, axisT)(int type=<default>, int type2=<default>, triple align=<default>, bool extend=<default>);
+void Bounds(picture, axisT);
+void XZZero(picture, axisT)(triple align=<default>, bool extend=<default>);
+void XZZero(picture, axisT);
+void YZZero(picture, axisT)(triple align=<default>, bool extend=<default>);
+void YZZero(picture, axisT);
+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>);
+void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen p=<default>, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>);
+void Ticks3(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>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks=<default>, real[] ticks=<default>, int N=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void Ticks3(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>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N, 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>);
+real maxlength(triple f(pair z), pair a, pair b, int nu, int nv);
+void drawtick(picture pic, real[][] T, path3 g, path3 g2, ticklocate locate, real val, real Size, int sign, pen p, bool extend);
+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>);
+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>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<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>);
+void Spline(flatguide3)(... void(flatguide3)[]);
+void InOutTicks(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>);
+void InOutTicks(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>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void InOutTicks(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 axes3(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, Label zlabel=<default>, bool extend=<default>, triple min=<default>, triple max=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>);
+void label(picture pic, Label L, triple v, real x, align align, string format, pen p);
+void labelx(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
+void labelx3(picture pic=<default>, Label L=<default>, real x, align align=<default>, string format=<default>, pen p=<default>);
+void labeltick(picture pic, real[][] T, path3 g, ticklocate locate, real val, int sign, real Size, string ticklabel(real), Label F, real norm=<default>);
+void labelaxis(picture pic, real[][] T, Label L, path3 g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>);
+void labely(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
+void labely3(picture pic=<default>, Label L=<default>, real y, align align=<default>, string format=<default>, pen p=<default>);
+void labelz(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
+void labelz3(picture pic=<default>, Label L=<default>, real z, align align=<default>, string format=<default>, pen p=<default>);
+void autoscale3(picture pic=<default>, void axis(picture, axisT));
+void xtick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
+void xtick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void xtick3(picture pic=<default>, real x, triple dir=<default>, real size=<default>, pen p=<default>);
+void xtick3(picture pic=<default>, Label L, real x, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void ytick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
+void ytick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void ytick3(picture pic=<default>, real y, triple dir=<default>, real size=<default>, pen p=<default>);
+void ytick3(picture pic=<default>, Label L, real y, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void ztick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
+void ztick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void ztick3(picture pic=<default>, real z, triple dir=<default>, real size=<default>, pen p=<default>);
+void ztick3(picture pic=<default>, Label L, real z, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+triple defaultdir(triple X, triple Y, triple Z, bool opposite=<default>, projection P);
+real xtrans(real[][] t, real x);
+real ytrans(real[][] t, real y);
+real ztrans(real[][] t, real z);
+ticklocate ticklocate(real a, real b, autoscaleT S=<default>, real tickmin=<default>, real tickmax=<default>, real time(real)=<default>, triple dir(real));
+triple ticklabelshift(triple align, pen p=<default>);
+path3 Arc(triple c, triple v1, triple v2, triple normal=<default>, bool direction=<default>, int n=<default>);
+path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, bool direction, int n=<default>);
+path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, int n=<default>);
+void limits(picture pic=<default>, triple min, triple max);
+void XZEquals(picture, axisT)(real x, real z, triple align=<default>, bool extend=<default>);
+void YZEquals(picture, axisT)(real y, real z, triple align=<default>, bool extend=<default>);
+void XYZero(picture, axisT)(triple align=<default>, bool extend=<default>);
+void XYZero(picture, axisT);
+void zlimits(picture pic=<default>, real min=<default>, real max=<default>, bool crop=<default>);
+void tick(picture pic=<default>, triple v, triple dir, real size=<default>, pen p=<default>);
+void tick(picture pic=<default>, Label L, real value, triple v, triple dir, string format=<default>, real size=<default>, pen p=<default>);
+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>);
+path3[] segment(triple[] v, bool[] cond, void join(flatguide3)(... void(flatguide3)[])=<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>);
string DefaultFormat(real);
string DefaultLogFormat(real)(int base);
string DefaultLogFormat(real);
@@ -2908,9 +2995,6 @@ picture vectorfield(path vector(pair), pair a, pair b, int nx=<default>, int ny=
string OmitFormat(real)(string s=<default> ... real[] x);
guide Straight(... guide[]);
int Min;
-tickvalues OmitTickIntervals(tickvalues)(real[] a, real[] b);
-tickvalues OmitTickInterval(tickvalues)(real a, real b);
-tickvalues OmitTick(tickvalues)(... real[] x);
string trailingzero;
void label(picture pic, Label L, pair z, real x, align align, string format, pen p);
void labelx(picture pic=<default>, Label L=<default>, explicit pair z, align align=<default>, string format=<default>, pen p=<default>);
@@ -2919,13 +3003,14 @@ void labelx(picture pic=<default>, Label L, string format=<default>, explicit pe
path Arc(pair c, real r, real angle1, real angle2, bool direction, int n=<default>);
path Arc(pair c, real r, real angle1, real angle2, int n=<default>);
path Arc(pair c, explicit pair z1, explicit pair z2, bool direction=<default>, int n=<default>);
+pair labeltick(frame d, transform T, path g, ticklocate locate, real val, pair side, int sign, real Size, string ticklabel(real), Label F, real norm=<default>);
+void labelaxis(frame f, transform T, Label L, path g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>);
void labely(picture pic=<default>, Label L=<default>, explicit pair z, align align=<default>, string format=<default>, pen p=<default>);
void labely(picture pic=<default>, Label L=<default>, real y, align align=<default>, string format=<default>, pen p=<default>);
void labely(picture pic=<default>, Label L, string format=<default>, explicit pen p=<default>);
-pair labeltick(frame d, transform T, path g, ticklocate locate, real val, pair side, int sign, real Size, string ticklabel(real), Label F, real norm=<default>);
-void labelaxis(frame f, transform T, Label L, path g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>);
-picture secondaryX(picture primary=<default>, void f(picture));
-picture secondaryY(picture primary=<default>, void f(picture));
+tickvalues OmitTickIntervals(tickvalues)(real[] a, real[] b);
+tickvalues OmitTickInterval(tickvalues)(real a, real b);
+tickvalues OmitTick(tickvalues)(... real[] x);
void xtick(picture pic=<default>, explicit pair z, pair dir=<default>, real size=<default>, pen p=<default>);
void xtick(picture pic=<default>, real x, pair dir=<default>, real size=<default>, pen p=<default>);
void xtick(picture pic=<default>, Label L, explicit pair z, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
@@ -2934,6 +3019,8 @@ void ytick(picture pic=<default>, explicit pair z, pair dir=<default>, real size
void ytick(picture pic=<default>, real y, pair dir=<default>, real size=<default>, pen p=<default>);
void ytick(picture pic=<default>, Label L, explicit pair z, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
void ytick(picture pic=<default>, Label L, real y, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+picture secondaryX(picture primary=<default>, void f(picture));
+picture secondaryY(picture primary=<default>, void f(picture));
Label Break;
tickvalues Break(tickvalues)(real, real);
scaleT Linear;
@@ -2941,12 +3028,8 @@ scaleT Linear(bool automin=<default>, bool automax=<default>, real s=<default>,
pair tickMin(picture pic);
pair tickMax(picture pic);
string autoformat(string format=<default>, real norm ... real[] a);
-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>);
real linear(real)(real S(real x)=<default>, real Min, real Max);
pair polar(real r, real theta);
-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>);
-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>);
string Format(real)(string s=<default>);
guide polargraph(picture pic=<default>, real r(real), real a, real b, int n=<default>, guide join(... guide[])=<default>);
guide polargraph(picture pic=<default>, real[] r, real[] theta, guide join(... guide[])=<default>);
@@ -2958,6 +3041,10 @@ string NoZeroFormat(real);
guide Hermite(... guide[])(real[] splinetype(real[], real[]));
guide Hermite(... guide[]);
path Circle(pair c, real r, int n=<default>);
+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>);
+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>);
bool axiscoverage(int N, transform T, path g, ticklocate locate, real Step, pair side, int sign, real Size, Label F, string ticklabel(real), real norm, real limit);
scaleT Broken(real a, real b, bool automin=<default>, bool automax=<default>);
scaleT BrokenLog(real a, real b, bool automin=<default>, bool automax=<default>);
@@ -2967,6 +3054,7 @@ void Ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, p
void Ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<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>);
string noprimary;
+path[] segment(pair[] z, bool[] cond, guide join(... guide[])=<default>);
void xequals(picture pic=<default>, Label L=<default>, real x, bool extend=<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>);
void yequals(picture pic=<default>, Label L=<default>, real y, bool extend=<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>);
pair Scale(picture pic=<default>, pair z);
@@ -2990,7 +3078,6 @@ axisT operator init();
int Both;
void axes(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, bool extend=<default>, pair min=<default>, pair max=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
string signedtrailingzero;
-path[] segment(pair[] z, bool[] cond, guide join(... guide[])=<default>);
ticklocate ticklocate(real a, real b, autoscaleT S=<default>, real tickmin=<default>, real tickmax=<default>, real time(real)=<default>, pair dir(real)=<default>);
pair ticklabelshift(pair align, pen p=<default>);
pair zero(real);
@@ -3024,127 +3111,6 @@ void autoscale(picture pic=<default>, void axis(picture, axisT));
guide Spline(... guide[]);
void LeftRight(picture, axisT)(bool extend=<default>);
void LeftRight(picture, axisT);
-path3[] segment(triple[] v, bool[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
-locateT operator init();
-void Straight(flatguide3)(... void(flatguide3)[]);
-void graph(flatguide3)(triple F(real), real, real, int)(void join(flatguide3)(... void(flatguide3)[]));
-void(flatguide3)[] graph(triple F(real), real, real, int)(void join(flatguide3)(... void(flatguide3)[]), bool3 cond(real));
-void graph(flatguide3)(picture pic=<default>, real x(real), real y(real), real z(real), real a, real b, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[] graph(picture pic=<default>, real x(real), real y(real), real z(real), real a, real b, int n=<default>, bool3 cond(real), void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(picture pic=<default>, triple v(real), real a, real b, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[] graph(picture pic=<default>, triple v(real), real a, real b, int n=<default>, bool3 cond(real), void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(picture pic=<default>, triple[] v, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[] graph(picture pic=<default>, triple[] v, bool3[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(picture pic=<default>, real[] x, real[] y, real[] z, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[] graph(picture pic=<default>, real[] x, real[] y, real[] z, bool3[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(triple F(path, real), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(triple F(pair), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(picture pic=<default>, real f(pair), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(real f(pair), path p, int n=<default>, real T(pair), void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[][] lift(real f(real x, real y), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[][] lift(real f(pair z), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>);
-triple polar(real r, real theta, real phi);
-void polargraph(flatguide3)(real r(real, real), real theta(real), real phi(real), int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-bool uperiodic(real[][] a);
-bool uperiodic(triple[][] a);
-bool vperiodic(real[][] a);
-bool vperiodic(triple[][] a);
-void OutTicks(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>);
-void OutTicks(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>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void OutTicks(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 axis(picture pic=<default>, Label L=<default>, path3 g, path3 g2=<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>), ticklocate locate, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, int[] divisor=<default>, bool above=<default>, bool opposite=<default>);
-void Bounds(picture, axisT)(int type=<default>, int type2=<default>, triple align=<default>, bool extend=<default>);
-void Bounds(picture, axisT);
-void xaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), 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>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
-void yaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), 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>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
-void zaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), 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>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
-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>);
-void XZZero(picture, axisT)(triple align=<default>, bool extend=<default>);
-void XZZero(picture, axisT);
-void YZZero(picture, axisT)(triple align=<default>, bool extend=<default>);
-void YZZero(picture, axisT);
-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>);
-void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen p=<default>, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>);
-void Ticks3(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>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks=<default>, real[] ticks=<default>, int N=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void Ticks3(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>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N, 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>);
-real maxlength(triple f(pair z), pair a, pair b, int nu, int nv);
-void drawtick(picture pic, real[][] T, path3 g, path3 g2, ticklocate locate, real val, real Size, int sign, pen p, bool extend);
-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>);
-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>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<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>);
-void Spline(flatguide3)(... void(flatguide3)[]);
-void InOutTicks(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>);
-void InOutTicks(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>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void InOutTicks(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 axes3(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, Label zlabel=<default>, bool extend=<default>, triple min=<default>, triple max=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>);
-void label(picture pic, Label L, triple v, real x, align align, string format, pen p);
-void labelx(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
-void labely(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
-void labeltick(picture pic, real[][] T, path3 g, ticklocate locate, real val, int sign, real Size, string ticklabel(real), Label F, real norm=<default>);
-void labelaxis(picture pic, real[][] T, Label L, path3 g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>);
-void labelx3(picture pic=<default>, Label L=<default>, real x, align align=<default>, string format=<default>, pen p=<default>);
-void labely3(picture pic=<default>, Label L=<default>, real y, align align=<default>, string format=<default>, pen p=<default>);
-void labelz(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
-void labelz3(picture pic=<default>, Label L=<default>, real z, align align=<default>, string format=<default>, pen p=<default>);
-void autoscale3(picture pic=<default>, void axis(picture, axisT));
-void xtick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
-void xtick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void ytick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
-void ytick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void xtick3(picture pic=<default>, real x, triple dir=<default>, real size=<default>, pen p=<default>);
-void xtick3(picture pic=<default>, Label L, real x, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void ytick3(picture pic=<default>, real y, triple dir=<default>, real size=<default>, pen p=<default>);
-void ytick3(picture pic=<default>, Label L, real y, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void ztick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
-void ztick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void ztick3(picture pic=<default>, real z, triple dir=<default>, real size=<default>, pen p=<default>);
-void ztick3(picture pic=<default>, Label L, real z, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-triple defaultdir(triple X, triple Y, triple Z, bool opposite=<default>, projection P);
-real xtrans(real[][] t, real x);
-real ytrans(real[][] t, real y);
-real ztrans(real[][] t, real z);
-ticklocate ticklocate(real a, real b, autoscaleT S=<default>, real tickmin=<default>, real tickmax=<default>, real time(real)=<default>, triple dir(real));
-triple ticklabelshift(triple align, pen p=<default>);
-path3 Arc(triple c, triple v1, triple v2, triple normal=<default>, bool direction=<default>, int n=<default>);
-path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, bool direction, int n=<default>);
-path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, int n=<default>);
-void limits(picture pic=<default>, triple min, triple max);
-void XZEquals(picture, axisT)(real x, real z, triple align=<default>, bool extend=<default>);
-void YZEquals(picture, axisT)(real y, real z, triple align=<default>, bool extend=<default>);
-void XYZero(picture, axisT)(triple align=<default>, bool extend=<default>);
-void XYZero(picture, axisT);
-void zlimits(picture pic=<default>, real min=<default>, real max=<default>, bool crop=<default>);
-void tick(picture pic=<default>, triple v, triple dir, real size=<default>, pen p=<default>);
-void tick(picture pic=<default>, Label L, real value, triple v, triple dir, string format=<default>, real size=<default>, pen p=<default>);
-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;
int ngraph;
real epsilon;
@@ -3179,9 +3145,9 @@ grid3(picture pic)[][] operator cast(grid3 gridroutine(picture pic));
triple X(picture pic);
triple Y(picture pic);
triple Z(picture pic);
+position middle;
grid3(picture pic)[] XYXgrid(position pos=<default>);
grid3(picture pic)[] XYXgrid;
-position middle;
grid3(picture pic)[] XY_XZgrid(position posa=<default>, position posb=<default>);
grid3(picture pic)[] XY_XZgrid;
grid3(picture pic)[] ZX_ZYgrid(position posa=<default>, position posb=<default>);
@@ -3190,19 +3156,19 @@ grid3 XYgrid(picture pic)(position pos=<default>);
grid3 XYgrid(picture pic);
grid3 ZYgrid(picture pic)(position pos=<default>);
grid3 ZYgrid(picture pic);
+void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
+void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
+void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
void grid3(picture pic=<default>, grid3(picture pic)[][] gridroutine=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, pen pGrid=<default>, pen pgrid=<default>, bool above=<default>);
void grid3(picture pic=<default>, grid3(picture pic)[][] gridroutine, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, pen[] pGrid, pen[] pgrid, bool above=<default>);
ticksgridT OutTicks()(Label F=<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>, real Size=<default>, real size=<default>, pen pTick=<default>, pen ptick=<default>, grid3(picture pic)[][] gridroutine, pen pGrid=<default>, pen pgrid=<default>);
triple YZ(picture pic);
-void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
-void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
-void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
triple ZX(picture pic);
grid3(picture pic)[] ZXZgrid(position pos=<default>);
grid3(picture pic)[] ZXZgrid;
-position top;
grid3(picture pic)[] XZXgrid(position pos=<default>);
grid3(picture pic)[] XZXgrid;
+position top;
ticksgridT InTicks()(Label F=<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>, real Size=<default>, real size=<default>, pen pTick=<default>, pen ptick=<default>, grid3(picture pic)[][] gridroutine, pen pGrid=<default>, pen pgrid=<default>);
ticksgridT InOutTicks()(Label F=<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>, real Size=<default>, real size=<default>, pen pTick=<default>, pen ptick=<default>, grid3(picture pic)[][] gridroutine, pen pGrid=<default>, pen pgrid=<default>);
grid3(picture pic)[] YX_YZgrid(position posa=<default>, position posb=<default>);
@@ -3229,16 +3195,16 @@ horner diffdiv(real[] x, real[] y);
horner hdiffdiv(real[] x, real[] y, real[] dy);
horner operator init();
real fhorner(real)(horner sh);
-void labelpath(frame f, Label L, path g, string justify=<default>, pen p=<default>);
-void labelpath(picture pic=<default>, Label L, path g, string justify=<default>, pen p=<default>);
-string LeftJustified;
-string Centered;
-string RightJustified;
surface labelpath(string s, path3 p, real angle=<default>, triple optional=<default>);
triple[] firstframe(path3 p, triple optional=<default>);
triple[] nextframe(path3 p, real reltimestart, triple[] start, real reltimeend, int subdiv=<default>);
real eps;
triple nextnormal(triple p, triple q);
+void labelpath(frame f, Label L, path g, string justify=<default>, pen p=<default>);
+void labelpath(picture pic=<default>, Label L, path g, string justify=<default>, pen p=<default>);
+string LeftJustified;
+string Centered;
+string RightJustified;
string[] lm_infmsg;
void lm_qrfac(int m, int n, real[] a, bool pivot, int[] ipvt, real[] rdiag, real[] acnorm, real[] wa);
void lm_qrsolv(int n, real[] r, int ldr, int[] ipvt, real[] diag, real[] qtb, real[] x, real[] sdiag, real[] wa);
@@ -3326,6 +3292,8 @@ bool rectangular(triple[][] m);
bool polygon(path p);
pair unityroot(int n, int k=<default>);
real acot(real x);
+int[][] segmentlimits(bool[] b);
+int[][] segment(bool[] b);
pair[][] fft(pair[][] a, int sign=<default>);
real slope(path g, real x, int n=<default>, real fuzz=<default>);
real slope(path g, explicit pair z, int n=<default>, real fuzz=<default>);
@@ -3333,8 +3301,6 @@ picture grid(int Nx, int Ny, pen p=<default>);
rootfinder_settings operator init();
real frac(real x);
real asec(real x);
-int[][] segmentlimits(bool[] b);
-int[][] segment(bool[] b);
real time(path g, real x, int n=<default>, real fuzz=<default>);
real time(path g, explicit pair z, int n=<default>, real fuzz=<default>);
real[] leastsquares(real[][] A, real[] b, bool warn=<default>);
@@ -3479,11 +3445,14 @@ void simplexPhase2();
int[] artificialColumn;
void simplexWrite(rational[][] E, int[] Bindices, int, int);
path roundedpath(path A, real R, real S=<default>);
+problem operator init();
simplex operator init();
+void nextpage(pen p=<default>);
void display(frame[] f, real margin=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
void display(frame f, real margin=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
void display(string[] s, real margin=<default>, string[] captions=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
void display(string s, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
+void filecode(bool center=<default>, string s, pen p=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>);
void multifigure(string[] slist, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool step=<default>);
void subitem(string s, pen p=<default>);
pen pagenumberpen;
@@ -3496,21 +3465,21 @@ pen foregroundcolor;
void bibliography(string name);
void bibliographystyle(string name);
int[] lastnode;
-void item(string s, pen p=<default>, bool step=<default>);
real aboveequationskip;
void asyfigure(string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, filltype filltype=<default>, bool newslide=<default>);
void asyfilecode(bool center=<default>, string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>, bool newslide=<default>);
bool itemstep;
real itemskip;
void remark(bool center=<default>, string s, pair align=<default>, pen p=<default>, real indent=<default>, bool minipage=<default>, real skip=<default>, filltype filltype=<default>, bool step=<default>);
-pen authorpen;
void usersetting();
+void item(string s, pen p=<default>, bool step=<default>);
bool landscape;
-string cropcode(string s);
+pen authorpen;
real codeskip;
+string cropcode(string s);
+void newslide(bool stepping=<default>);
bool allowstepping;
pair currentposition;
-void newslide(bool stepping=<default>);
pen itempen;
bool reverse;
void reversevideo();
@@ -3527,10 +3496,10 @@ void normalvideo();
void title(string s, pair position=<default>, pair align=<default>, pen p=<default>, bool newslide=<default>);
pen titlepen;
real titleskip;
-pair titlealign;
pair dateskip;
-void titlepage(string title, string author, string institution=<default>, string date=<default>, string url=<default>, bool newslide=<default>);
+pair titlealign;
pen titlepagepen;
+void titlepage(string title, string author, string institution=<default>, string date=<default>, string url=<default>, bool newslide=<default>);
pair titlepageposition;
pen codepen;
void erasestep(int erasenode);
@@ -3550,24 +3519,22 @@ string newbulletcolor;
pen datepen;
void incrementposition(pair z);
pen institutionpen;
-int page;
void skip(real n=<default>);
bool stepping;
real pagemargin;
pen steppagenumberpen;
+int page;
bool empty();
void currentexitfunction();
void step();
string[] codefile;
void outline(string s=<default>, pair position=<default>, pair align=<default>, pen p=<default>);
void center(string s, pen p=<default>);
-void nextpage(pen p=<default>);
void equation(string s, pen p=<default>);
void equations(string s, pen p=<default>);
void asyinclude(string s, real xsize=<default>, real ysize=<default>);
void figure(string[] s, string options=<default>, real margin=<default>, string[] captions=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
void figure(string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
-void filecode(bool center=<default>, string s, pen p=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>);
real figureborder;
pen figuremattpen;
string bullet;
@@ -3620,12 +3587,12 @@ string operator cast(positionedvector vv);
triple operator cast(evaluatedpoint p);
surface implicitsurface(real f(triple)=<default>, real ff(real, real, real)=<default>, triple a, triple b, int n=<default>, bool keyword overlapedges=<default>, int keyword nx=<default>, int keyword ny=<default>, int keyword nz=<default>, int keyword maxdepth=<default>, bool keyword usetriangles=<default>);
bool operator ==(edge a, edge b);
-int NULL_VERTEX;
patch[] triangletoquads(path3 external, real f(triple), triple grad(triple), triple a, triple b);
patch trianglewithnormals(path3 external, triple n1, triple n2, triple n3);
-real B03(real t);
+int NULL_VERTEX;
evaluatedpoint[][][] make3dgrid(triple a, triple b, int nx, int ny, int nz, real f(triple), bool allowzero=<default>);
real B33(real t);
+real B03(real t);
evaluatedpoint[][] slice(evaluatedpoint[][] a, int start1, int end1, int start2, int end2);
evaluatedpoint[][][] slice(evaluatedpoint[][][] a, int start1, int end1, int start2, int end2, int start3, int end3);
positionedvector[][] slice(positionedvector[][] a, int start1, int end1, int start2, int end2);
@@ -3643,13 +3610,13 @@ path[] cylinder(path3 base, real h, triple axis=<default>, projection P);
revolution cylinder(triple c=<default>, real r, real h, triple axis=<default>);
revolution cone(triple c=<default>, real r, real h, triple axis=<default>, int n=<default>);
real rms(real[] A);
-real stdev(real[] A);
int[] frequency(real[] data, real[] bins);
int[] frequency(real[] data, real a, real b, int n);
int[][] frequency(real[] x, real[] y, real[] xbins, real[] ybins);
int[][] frequency(real[] x, real[] y, pair a, pair b, int nx, int ny=<default>);
int[][] frequency(pair[] z, pair a, pair b, int nx, int ny=<default>);
real mean(real[] A);
+real stdev(real[] A);
int bins(real[] data, int max=<default>);
path topbox(pair a, pair b);
path halfbox(pair a, pair b);
@@ -3664,16 +3631,16 @@ linefit operator init();
real skewness(real[] A);
linefit leastsquares(real[] x, real[] y);
linefit leastsquares(real[] x, real[] y, real[] w);
-void histogram(picture pic=<default>, real[] bins, real[] count, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
-void histogram(picture pic=<default>, real[] data, real a, real b, int n, bool normalize=<default>, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
real kurtosis(real[] A);
real kurtosisexcess(real[] A);
+void histogram(picture pic=<default>, real[] bins, real[] count, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
+void histogram(picture pic=<default>, real[] data, real a, real b, int n, bool normalize=<default>, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
pair[] endpoints(guide[] a);
Relation r3;
-Braid apply(Relation r, Braid b, int step, int place);
picture tableau(frame[] cards, bool number=<default>);
pair min(pair[] z);
Component bp;
+Braid apply(Relation r, Braid b, int step, int place);
Component phi;
real gapfactor;
Component bm;
@@ -3684,30 +3651,27 @@ Braid operator init();
Relation operator init();
Syzygy operator init();
real hwratio;
-Relation r4a;
Relation r4b;
+Relation r4a;
pair max(pair[] z);
pen Orchid;
pen Magenta;
pen BrickRed;
pen CadetBlue;
-pen Aquamarine;
pen CarnationPink;
pen SpringGreen;
-pen Lavender;
pen MidnightBlue;
pen OliveGreen;
pen Apricot;
+pen Aquamarine;
+pen Lavender;
pen Cyan;
pen Red;
pen RawSienna;
pen Mahogany;
pen Gray;
-pen YellowOrange;
-pen Maroon;
pen Plum;
pen BlueGreen;
-pen YellowGreen;
pen Cerulean;
pen Blue;
pen BlueViolet;
@@ -3715,40 +3679,43 @@ pen RedOrange;
pen Goldenrod;
pen ForestGreen;
pen BurntOrange;
+pen YellowOrange;
+pen Maroon;
pen Tan;
-pen Sepia;
+pen YellowGreen;
pen Brown;
pen RubineRed;
pen TealBlue;
pen White;
pen Purple;
pen Bittersweet;
-pen VioletRed;
+pen Sepia;
pen Orange;
-pen Violet;
pen OrangeRed;
pen Fuchsia;
-pen PineGreen;
pen Peach;
+pen PineGreen;
pen Dandelion;
+pen VioletRed;
pen Black;
-pen Thistle;
+pen Violet;
pen NavyBlue;
pen Rhodamine;
pen ProcessBlue;
-pen DarkOrchid;
+pen Thistle;
pen LimeGreen;
pen Green;
pen GreenYellow;
-pen WildStrawberry;
+pen DarkOrchid;
pen Emerald;
pen Mulberry;
+pen WildStrawberry;
pen RedViolet;
pen SkyBlue;
pen SeaGreen;
pen Periwinkle;
-pen Salmon;
pen Yellow;
+pen Salmon;
pen JungleGreen;
pen CornflowerBlue;
pen RoyalBlue;
@@ -3790,36 +3757,34 @@ v3dheadertypes operator init();
v3dtypes v3dtypes;
v3dtypes operator init();
string VERSION;
-pen Cornsilk;
pen Orchid;
pen Indigo;
pen Beige;
pen SlateBlue;
pen SlateGray;
+pen Cornsilk;
pen Magenta;
-pen Seashell;
pen CadetBlue;
pen DeepPink;
-pen Aquamarine;
pen SpringGreen;
-pen GhostWhite;
-pen Lavender;
pen MidnightBlue;
pen Olive;
pen OliveDrab;
+pen Seashell;
+pen Aquamarine;
+pen GhostWhite;
+pen Lavender;
pen Chocolate;
pen Cyan;
pen Gainsboro;
pen Ivory;
-pen LavenderBlush;
pen PapayaWhip;
-pen Wheat;
pen Red;
pen Pink;
pen MintCream;
pen DarkTurquoise;
-pen PeachPuff;
pen Gray;
+pen LavenderBlush;
pen MediumBlue;
pen MediumOrchid;
pen MediumPurple;
@@ -3828,12 +3793,10 @@ pen MediumSlateBlue;
pen MediumAquamarine;
pen MediumSpringGreen;
pen MediumTurquoise;
+pen Wheat;
pen MediumVioletRed;
-pen Maroon;
-pen Lime;
-pen SteelBlue;
pen Plum;
-pen YellowGreen;
+pen PeachPuff;
pen Blue;
pen Gold;
pen BlueViolet;
@@ -3841,11 +3804,14 @@ pen Goldenrod;
pen ForestGreen;
pen Chartreuse;
pen NavajoWhite;
+pen Maroon;
+pen Lime;
+pen SteelBlue;
+pen YellowGreen;
pen Tan;
pen DarkMagenta;
pen AntiqueWhite;
pen PaleTurquoise;
-pen LemonChiffon;
pen IndianRed;
pen Crimson;
pen Azure;
@@ -3855,58 +3821,58 @@ pen BurlyWood;
pen Moccasin;
pen DarkBlue;
pen Peru;
-pen Aqua;
pen White;
pen Purple;
pen WhiteSmoke;
+pen LemonChiffon;
pen DimGray;
pen Orange;
-pen Violet;
pen OrangeRed;
pen Fuchsia;
+pen Aqua;
pen Bisque;
pen Honeydew;
pen RosyBrown;
pen Black;
-pen Thistle;
+pen Violet;
pen Khaki;
pen FireBrick;
-pen Sienna;
pen Snow;
-pen DarkOrchid;
+pen Thistle;
pen LimeGreen;
+pen Sienna;
pen OldLace;
pen Green;
pen GreenYellow;
+pen DarkOrchid;
pen DarkCyan;
pen FloralWhite;
pen DarkRed;
-pen DarkOliveGreen;
-pen DarkOrange;
pen BlanchedAlmond;
pen PowderBlue;
pen DarkGray;
pen DarkGreen;
pen DarkGoldenrod;
+pen DarkOliveGreen;
pen SkyBlue;
-pen Silver;
+pen DarkOrange;
pen SeaGreen;
pen DarkViolet;
pen Teal;
pen AliceBlue;
pen HotPink;
pen DodgerBlue;
+pen Silver;
pen SaddleBrown;
pen Tomato;
pen DarkKhaki;
-pen Salmon;
-pen SandyBrown;
pen LightBlue;
pen LightCoral;
pen LightCyan;
pen Yellow;
pen LightGreen;
-pen DeepSkyBlue;
+pen SandyBrown;
+pen Salmon;
pen PaleGreen;
pen Linen;
pen LightGoldenrodYellow;
@@ -3924,6 +3890,7 @@ pen LightSteelBlue;
pen LightYellow;
pen rgbint(int r, int g, int b);
pen Coral;
+pen DeepSkyBlue;
pen MistyRose;
pen DarkSalmon;
pen DarkSeaGreen;
diff --git a/graphics/asymptote/asymptote.spec b/graphics/asymptote/asymptote.spec
index e56bc09e3e..c1bf0606aa 100644
--- a/graphics/asymptote/asymptote.spec
+++ b/graphics/asymptote/asymptote.spec
@@ -3,7 +3,7 @@
%global __python %{__python3}
Name: asymptote
-Version: 2.89
+Version: 2.90
Release: 1%{?dist}
Summary: Descriptive vector graphics language
diff --git a/graphics/asymptote/base/asy-mode.el b/graphics/asymptote/base/asy-mode.el
index 9f6eda793c..7b6d6f5c36 100644
--- a/graphics/asymptote/base/asy-mode.el
+++ b/graphics/asymptote/base/asy-mode.el
@@ -1600,5 +1600,20 @@ If optional argument Force is t then force compilation."
(asy-master-tex-view 'lasy-view-pdf-via-ps2pdf t t))
(define-key asy-mode-map (kbd "<C-M-S-return>") 'asy-master-tex-view-ps2pdf-f)
+;; Integrate with flycheck
+(with-eval-after-load 'flycheck
+ (flycheck-define-command-checker 'asy
+ "Syntax checking of asymptote files."
+ :command (append
+ (split-string (concat asy-command-location asy-command))
+ '("-noV" "-o" temporary-file-name source))
+ :error-patterns
+ ;; filename.asy: 123.45: warning: message
+ ;; filename.asy: 123.45: error message
+ '((warning line-start (file-name) ":" (* space) line (? ?\. column) ": warning: " (message) line-end)
+ (error line-start (file-name) ":" (* space) line (? ?\. column) ": " (message) line-end))
+ :modes '(asy-mode))
+ (add-to-list 'flycheck-checkers 'asy))
+
(provide `asy-mode)
;;; asy-mode.el ends here
diff --git a/graphics/asymptote/base/plain_boxes.asy b/graphics/asymptote/base/plain_boxes.asy
index 9576caff55..0b6746736a 100644
--- a/graphics/asymptote/base/plain_boxes.asy
+++ b/graphics/asymptote/base/plain_boxes.asy
@@ -1,3 +1,12 @@
+void fillbox(frame dest, path g, pen p=currentpen, filltype filltype=NoFill, bool above=true)
+{
+ if(above == false) {
+ frame F;
+ filltype.fill(F,g,p);
+ prepend(dest,F);
+ } else filltype.fill(dest,g,p);
+}
+
// Draw and/or fill a box on frame dest using the dimensions of frame src.
path box(frame dest, frame src=dest, real xmargin=0, real ymargin=xmargin,
pen p=currentpen, filltype filltype=NoFill, bool above=true)
@@ -6,11 +15,7 @@ path box(frame dest, frame src=dest, real xmargin=0, real ymargin=xmargin,
int sign=filltype == NoFill ? 1 : -1;
pair h=0.5*sign*(max(p)-min(p));
path g=box(min(src)-h-z,max(src)+h+z);
- frame F;
- if(above == false) {
- filltype.fill(F,g,p);
- prepend(dest,F);
- } else filltype.fill(dest,g,p);
+ fillbox(dest,g,p,filltype,above);
return g;
}
@@ -28,12 +33,7 @@ path roundbox(frame dest, frame src=dest, real xmargin=0, real ymargin=xmargin,
(dw,b)--(a-dw,b){right}..{down}
(a,b-dw)--(a,dw){down}..{left}
(a-dw,0)--(dw,0){left}..{up}cycle);
-
- frame F;
- if(above == false) {
- filltype.fill(F,g,p);
- prepend(dest,F);
- } else filltype.fill(dest,g,p);
+ fillbox(dest,g,p,filltype,above);
return g;
}
@@ -47,11 +47,7 @@ path ellipse(frame dest, frame src=dest, real xmargin=0, real ymargin=xmargin,
int sign=filltype == NoFill ? 1 : -1;
pair h=0.5*sign*(max(p)-min(p));
path g=ellipse(0.5*(M+m),factor*D.x+h.x+xmargin,factor*D.y+h.y+ymargin);
- frame F;
- if(above == false) {
- filltype.fill(F,g,p);
- prepend(dest,F);
- } else filltype.fill(dest,g,p);
+ fillbox(dest,g,p,filltype,above);
return g;
}
diff --git a/graphics/asymptote/base/plain_picture.asy b/graphics/asymptote/base/plain_picture.asy
index 13619e80ab..9df0e5753e 100644
--- a/graphics/asymptote/base/plain_picture.asy
+++ b/graphics/asymptote/base/plain_picture.asy
@@ -1,5 +1,4 @@
// Pre picture <<<1
-import plain_scaling;
import plain_bounds;
include plain_prethree;
@@ -222,6 +221,8 @@ struct picture { // <<<1
node3[] nodes3;
bool uptodate=true;
+ bool queueErase=false;
+ bool queueErase3=false;
struct bounds3 {
coords3 point,min,max;
@@ -286,6 +287,8 @@ struct picture { // <<<1
// Erase the current picture, retaining bounds.
void clear() {
+ queueErase=nodes.length > 0;
+ queueErase3=nodes3.length > 0;
nodes.delete();
nodes3.delete();
legend.delete();
@@ -1587,13 +1590,11 @@ void add(picture src, bool group=true, filltype filltype=NoFill,
currentpicture.add(src,group,filltype,above);
}
-// Fit the picture src using the identity transformation (so user
-// coordinates and truesize coordinates agree) and add it about the point
-// position to picture dest.
+// Fit the picture src and add it about the point position to picture dest.
void add(picture dest, picture src, pair position, bool group=true,
filltype filltype=NoFill, bool above=true)
{
- add(dest,src.fit(identity()),position,group,filltype,above);
+ add(dest,src.fit(),position,group,filltype,true);
}
void add(picture src, pair position, bool group=true, filltype filltype=NoFill,
diff --git a/graphics/asymptote/base/plain_scaling.asy b/graphics/asymptote/base/plain_scaling.asy
index 4c6beae655..dc21462c8e 100644
--- a/graphics/asymptote/base/plain_scaling.asy
+++ b/graphics/asymptote/base/plain_scaling.asy
@@ -192,8 +192,6 @@ real max(real M, scaling s, coord[] c) {
return M;
}
-import simplex;
-
/*
Calculate the sizing constants for the given array and maximum size.
Solve the two-variable linear programming problem using the simplex method.
@@ -203,19 +201,16 @@ import simplex;
*/
real calculateScaling(string dir, coord[] m, coord[] M, real size,
bool warn=true) {
- real[][] A;
- real[] b;
- real[] c=new real[] {-1,0,0};
+ from simplex2 access problem;
+ problem p=new problem;
void addMinCoord(coord c) {
// (a*user + b) + truesize >= 0:
- A.push(new real[] {c.user,1,-1});
- b.push(-c.truesize);
+ p.addRestriction(c.user,1,c.truesize);
}
void addMaxCoord(coord c) {
// (a*user + b) + truesize <= size:
- A.push(new real[] {-c.user,-1,1});
- b.push(c.truesize-size);
+ p.addRestriction(-c.user,-1,size-c.truesize);
}
for (int i=0; i < m.length; ++i)
@@ -223,17 +218,16 @@ real calculateScaling(string dir, coord[] m, coord[] M, real size,
for (int i=0; i < M.length; ++i)
addMaxCoord(M[i]);
- int[] s=array(A.length,1);
- simplex S=simplex(c,A,s,b);
-
- if(S.case == S.OPTIMAL) {
- return S.x[0];
- } else if(S.case == S.UNBOUNDED) {
+ if(p.rows.length == 2) return 1; // Don't warn if there are no constraints
+ int status=p.optimize();
+ if(status == problem.OPTIMAL) {
+ // TODO: Could just be return a;
+ return scaling.build(p.a(),p.b()).a;
+ } else if(status == problem.UNBOUNDED) {
if(warn) warning("unbounded",dir+" scaling in picture unbounded");
return 0;
} else {
if(!warn) return 1;
-
bool userzero(coord[] coords) {
for(var coord : coords)
if(coord.user != 0) return false;
diff --git a/graphics/asymptote/base/plain_shipout.asy b/graphics/asymptote/base/plain_shipout.asy
index a001ce045c..c784c5f462 100644
--- a/graphics/asymptote/base/plain_shipout.asy
+++ b/graphics/asymptote/base/plain_shipout.asy
@@ -122,7 +122,6 @@ void shipout(string prefix=defaultfilename, picture pic=currentpicture,
string options="", string script="",
light light=currentlight, projection P=currentprojection)
{
- pic.uptodate=true;
if(!uptodate()) {
bool inlinetex=settings.inlinetex;
bool prc=prc(format) || settings.v3d;
@@ -139,7 +138,7 @@ void shipout(string prefix=defaultfilename, picture pic=currentpicture,
settings.inlinetex=settings.inlineimage;
}
frame f;
- transform t=pic.calculateTransform();
+ transform t=empty3 ? pic.calculateTransform() : identity;
if(currentpicture.fitter == null) {
pen background=currentlight.background;
if(settings.outformat == "html" && background == nullpen)
@@ -152,10 +151,14 @@ void shipout(string prefix=defaultfilename, picture pic=currentpicture,
else
f=pic.fit(prefix,format,view=view,options,script,light,P);
- if(!prconly() && (!pic.empty2() || settings.render == 0 || prc || empty3))
+ if(!prconly() && (!pic.empty2() || settings.render == 0 || prc ||
+ pic.queueErase)) {
shipout(prefix,orientation(f),format,wait,view,t);
+ pic.queueErase=false;
+ }
settings.inlinetex=inlinetex;
}
+ pic.uptodate=true;
}
void newpage(picture pic=currentpicture)
diff --git a/graphics/asymptote/base/simplex2.asy b/graphics/asymptote/base/simplex2.asy
new file mode 100644
index 0000000000..e8d073ef0b
--- /dev/null
+++ b/graphics/asymptote/base/simplex2.asy
@@ -0,0 +1,310 @@
+/*****
+ * simplex.asy
+ * Andy Hammerlindl 2004/07/27
+ *
+ * Solves the two-variable linear programming problem using the simplex method.
+ * This problem is specialized in that the second variable, "b", does not have
+ * a non-negativity condition, and the first variable, "a", is the quantity
+ * being maximized.
+ * Correct execution of the algorithm also assumes that the coefficient of "b"
+ * will be +1 or -1 in every added restriction, and that the problem can be
+ * initialized to a valid state by pivoting b with one of the slack
+ * variables. This assumption may in fact be incorrect.
+ *****/
+
+struct problem {
+ typedef int var;
+ static var VAR_A = 0;
+ static var VAR_B = 1;
+
+ static int OPTIMAL = -1;
+ static var UNBOUNDED = -2;
+ static int INVALID = -3;
+
+ struct row {
+ real c, t[];
+ }
+
+ // The variables of the rows.
+ // Initialized for the two variable problem.
+ var[] v = {VAR_A, VAR_B};
+
+ // The rows of equalities.
+ row rowA() {
+ row r = new row;
+ r.c = 0;
+ r.t = new real[] {1, 0};
+ return r;
+ }
+ row rowB() {
+ row r = new row;
+ r.c = 0;
+ r.t = new real[] {0, 1};
+ return r;
+ }
+ row[] rows = {rowA(), rowB()};
+
+ // The number of original variables.
+ int n = rows.length;
+
+ // Pivot the variable v[col] with vp.
+ void pivot(int col, var vp)
+ {
+ var vc=v[col];
+
+ // Recalculate rows v[col] and vp for the pivot-swap.
+ row rvc = rows[vc], rvp = rows[vp];
+ real factor=1/rvp.t[col]; // NOTE: Handle rvp.t[col] == 0 case.
+ rvc.c=-rvp.c*factor;
+ rvp.c=0;
+ rvc.t=-rvp.t*factor;
+ rvp.t *= 0;
+ rvc.t[col]=factor;
+ rvp.t[col]=1;
+
+ var a=min(vc,vp);
+ var b=max(vc,vp);
+
+ // Recalculate the rows other than the two used for the above pivot.
+ for (var i = 0; i < a; ++i) {
+ row r=rows[i];
+ real m = r.t[col];
+ r.c += m*rvc.c;
+ r.t += m*rvc.t;
+ r.t[col]=m*factor;
+ }
+ for (var i = a+1; i < b; ++i) {
+ row r=rows[i];
+ real m = r.t[col];
+ r.c += m*rvc.c;
+ r.t += m*rvc.t;
+ r.t[col]=m*factor;
+ }
+ for (var i = b+1; i < rows.length; ++i) {
+ row r=rows[i];
+ real m = r.t[col];
+ r.c += m*rvc.c;
+ r.t += m*rvc.t;
+ r.t[col]=m*factor;
+ }
+
+ // Relabel the vars.
+ v[col] = vp;
+ }
+
+ // As b does not have a non-negativity condition, it must initially be
+ // pivoted out for a variable that does. This selects the initial
+ // variable to pivot with b. It also assumes that there is a valid
+ // solution with a == 0 to the linear programming problem, and if so, it
+ // picks a pivot to get to that state. In our case, a == 0 corresponds to
+ // a picture with the user coordinates shrunk down to zero, and if that
+ // doesn't fit, nothing will.
+ //
+ // If b has a minimal value, choose a pivot that will give b its minimal
+ // value. Otherwise, if b has maximal value, choose a pivot to give b its
+ // maximal value.
+ var initVar()
+ {
+ real min;
+ var argmin;
+ var i=2;
+ for (; i < rows.length; ++i) {
+ row r=rows[i];
+ if (r.t[VAR_B] > 0) {
+ min=r.c/r.t[VAR_B];
+ argmin=i;
+ break;
+ }
+ }
+ for (; i < rows.length; ++i) {
+ row r=rows[i];
+ if (r.t[VAR_B] > 0) {
+ real val=r.c/r.t[VAR_B];
+ if (val < min) {
+ min=val;
+ argmin=i;
+ }
+ }
+ }
+
+ if(argmin != 0) return argmin;
+
+ real max;
+ var argmax;
+ var i=2;
+ for (; i < rows.length; ++i) {
+ row r=rows[i];
+ if (r.t[VAR_B] < 0) {
+ max=r.c/r.t[VAR_B];
+ argmax=i;
+ break;
+ }
+ }
+
+ for (; i < rows.length; ++i) {
+ row r=rows[i];
+ if (r.t[VAR_B] < 0) {
+ real val=r.c/r.t[VAR_B];
+ if (val > max) {
+ max=val;
+ argmax=i;
+ }
+ }
+ }
+
+ if(argmax != 0) return argmax;
+
+ return UNBOUNDED;
+ }
+
+ // Initialize the linear program problem by moving into an acceptable state
+ // this assumes that b is unrestrained and is the second variable.
+ // NOTE: Works in limited cases, may be bug-ridden.
+ void init()
+ {
+ // Find the lowest constant term in the equations.
+ var lowest = 0;
+ for (var i = 2; i < rows.length; ++i) {
+ if (rows[i].c < rows[lowest].c)
+ lowest = i;
+ }
+
+ // Pivot if necessary.
+ if (lowest != 0)
+ pivot(VAR_B, lowest);
+ }
+
+ // Selects a column to pivot on. Returns OPTIMAL if the current state is
+ // optimal. Assumes we are optimizing the first row.
+ int selectColumn()
+ {
+ int i=find(rows[0].t > 0,1);
+ return (i >= 0) ? i : OPTIMAL;
+ }
+
+ // Select the new variable associated with a pivot on the column given.
+ // Returns UNBOUNDED if the space is unbounded.
+ var selectVar(int col)
+ {
+ // We assume that the first two vars (a and b) once swapped out, won't be
+ // swapped back in. This finds the variable which gives the tightest
+ // non-negativity condition restricting our optimization. This turns
+ // out to be the max of c/t[col]. Note that as c is positive, and
+ // t[col] is negative, all c/t[col] will be negative, so we are finding
+ // the smallest in magnitude.
+ var vp=UNBOUNDED;
+ real max=0;
+ int i=2;
+ for (; i < rows.length; ++i) {
+ row r=rows[i];
+ if(r.c < 0) r.c=0; // Fix any numerical precision error
+ if(r.t[col] < 0) {
+ max=r.c/r.t[col]; vp=i;
+ break;
+ }
+ }
+ for (; i < rows.length; ++i) {
+ row r=rows[i];
+ if(r.c < 0) r.c=0; // Fix any numerical precision error
+ if(r.c < max*r.t[col]) {
+ max=r.c/r.t[col]; vp=i;
+ }
+ }
+
+ return vp;
+ }
+
+ // Checks that the rows are in a valid state.
+ bool valid()
+ {
+ // Checks that constants are valid.
+ bool validConstants() {
+ for (int i = 0; i < rows.length; ++i)
+ // Do not test the row for b, as it does not have a non-negativity
+ // condition.
+ if (i != VAR_B && rows[i].c < 0)
+ return false;
+ return true;
+ }
+
+ // Check a variable to see if its row is simple.
+ // NOTE: Simple rows could be optimized out, since they are not really
+ // used.
+ bool validVar(int col) {
+
+ var vc = v[col];
+ row rvc = rows[vc];
+
+ if (rvc.c != 0)
+ return false;
+ for (int i = 0; i < n; ++i)
+ if (rvc.t[i] != (i == col ? 1 : 0))
+ return false;
+
+ return true;
+ }
+
+ if (!validConstants()) {
+ return false;
+ }
+ for (int i = 0; i < n; ++i)
+ if (!validVar(i)) {
+ return false;
+ }
+
+ return true;
+ }
+
+
+ // Perform the algorithm to find the optimal solution. Returns OPTIMAL,
+ // UNBOUNDED, or INVALID (if no solution is possible).
+ int optimize()
+ {
+ // Put into a valid state to begin and pivot b out.
+ var iv=initVar();
+ if (iv == UNBOUNDED)
+ return iv;
+ pivot(VAR_B, iv);
+
+ if (!valid())
+ return INVALID;
+
+ while(true) {
+ int col = selectColumn();
+
+ if (col == OPTIMAL)
+ return col;
+ var vp = selectVar(col);
+
+ if (vp == UNBOUNDED)
+ return vp;
+
+ pivot(col, vp);
+ }
+
+ // Shouldn't reach here.
+ return INVALID;
+ }
+
+ // Add a restriction to the problem:
+ // t1*a + t2*b + c >= 0
+ void addRestriction(real t1, real t2, real c)
+ {
+ row r = new row;
+ r.c = c;
+ r.t = new real[] {t1, t2};
+ rows.push(r);
+ }
+
+ // Return the value of a computed.
+ real a()
+ {
+ return rows[VAR_A].c;
+ }
+
+ // Return the value of b computed.
+ real b()
+ {
+ return rows[VAR_B].c;
+ }
+}
diff --git a/graphics/asymptote/base/three.asy b/graphics/asymptote/base/three.asy
index cde32f6acb..b93833f666 100644
--- a/graphics/asymptote/base/three.asy
+++ b/graphics/asymptote/base/three.asy
@@ -2681,7 +2681,7 @@ struct scene
if(P.absolute)
this.P=P.copy();
- else if(P.showtarget)
+ else if(P.showtarget && !pic.empty3())
draw(pic,P.target,nullpen);
t=pic.scaling(xsize3,ysize3,zsize3,keepAspect,warn);
@@ -2893,7 +2893,7 @@ object embed(string prefix=outprefix(), string label=prefix,
triple margin=(S.viewportmargin.x,S.viewportmargin.y,0);
M += margin;
m -= margin;
- } else if(M.z >= 0) abort("camera too close");
+ } else if(M.z >= 0 && !S.pic2.empty()) abort("camera too close");
if(primitive())
format=settings.v3d ? "v3d" : settings.outformat;
@@ -3038,12 +3038,15 @@ currentpicture.fitter=new frame(string prefix, picture pic, string format,
light light, projection P) {
frame f;
bool empty3=pic.empty3();
- if(!empty3) f=embedder(new object(string prefix, string format) {
+ if(!empty3 || pic.queueErase3) {
+ f=embedder(new object(string prefix, string format) {
return embed(prefix=prefix,pic,format,xsize,ysize,keepAspect,view,
options,script,light,P);
},prefix,format,view,light);
+ pic.queueErase3=false;
+ }
- if(is3D(format) || empty3)
+ if(is3D(format) || pic.queueErase)
add(f,pic.fit2(xsize,ysize,keepAspect));
return f;
};
diff --git a/graphics/asymptote/base/v3dheadertypes.asy b/graphics/asymptote/base/v3dheadertypes.asy
index 0118208970..aff3ebd34d 100644
--- a/graphics/asymptote/base/v3dheadertypes.asy
+++ b/graphics/asymptote/base/v3dheadertypes.asy
@@ -1,6 +1,6 @@
// Enum class for v3dheadertypes
// AUTO-GENERATED from v3dheadertypes.csv
-// Generated at 2024-03-23 21:31:00
+// Generated at 2024-06-21 17:45:18+00:00
struct v3dheadertypes
{
diff --git a/graphics/asymptote/base/v3dtypes.asy b/graphics/asymptote/base/v3dtypes.asy
index b808b2ae44..97517ebae2 100644
--- a/graphics/asymptote/base/v3dtypes.asy
+++ b/graphics/asymptote/base/v3dtypes.asy
@@ -1,6 +1,6 @@
// Enum class for v3dtypes
// AUTO-GENERATED from v3dtypes.csv
-// Generated at 2024-03-23 21:31:00
+// Generated at 2024-06-21 17:45:18+00:00
struct v3dtypes
{
diff --git a/graphics/asymptote/binaries/i386-windows/README b/graphics/asymptote/binaries/i386-windows/README
index 1e1c510415..686eb44150 100644
--- a/graphics/asymptote/binaries/i386-windows/README
+++ b/graphics/asymptote/binaries/i386-windows/README
@@ -1,5 +1,5 @@
ASYMPTOTE
- Copyright 2004-23 Andy Hammerlindl, John Bowman, and Tom Prince
+ Copyright 2004-24 Andy Hammerlindl, John Bowman, and Tom Prince
Asymptote is a powerful descriptive vector graphics language for technical
drawing, inspired by MetaPost but with an improved C++-like
diff --git a/graphics/asymptote/binaries/x86_64-windows/README b/graphics/asymptote/binaries/x86_64-windows/README
index 1e1c510415..686eb44150 100644
--- a/graphics/asymptote/binaries/x86_64-windows/README
+++ b/graphics/asymptote/binaries/x86_64-windows/README
@@ -1,5 +1,5 @@
ASYMPTOTE
- Copyright 2004-23 Andy Hammerlindl, John Bowman, and Tom Prince
+ Copyright 2004-24 Andy Hammerlindl, John Bowman, and Tom Prince
Asymptote is a powerful descriptive vector graphics language for technical
drawing, inspired by MetaPost but with an improved C++-like
diff --git a/graphics/asymptote/builtin.cc b/graphics/asymptote/builtin.cc
index 36af37d4d5..bb706f99a8 100644
--- a/graphics/asymptote/builtin.cc
+++ b/graphics/asymptote/builtin.cc
@@ -44,7 +44,7 @@
namespace vm {
// Defined in stack.cc
-extern vm::frame *make_dummyframe(string name);
+extern vm::vmFrame *make_dummyframe(string name);
}
using namespace types;
@@ -753,7 +753,7 @@ void addOperators(venv &ve)
dummyRecord *createDummyRecord(venv &ve, symbol name)
{
dummyRecord *r=new dummyRecord(name);
- vm::frame *f = make_dummyframe(name);
+ vm::vmFrame *f = make_dummyframe(name);
addConstant(ve, f, r, name);
addRecordOps(ve, r);
return r;
diff --git a/graphics/asymptote/callable.h b/graphics/asymptote/callable.h
index f870d48d97..da7584f90b 100644
--- a/graphics/asymptote/callable.h
+++ b/graphics/asymptote/callable.h
@@ -43,7 +43,7 @@ public:
// How a function reference to a non-builtin function is stored.
struct func : public callable {
lambda *body;
- frame *closure;
+ vmFrame *closure;
func () : body(), closure() {}
virtual void call (stack*);
virtual bool compare(callable*);
diff --git a/graphics/asymptote/camp.tab.h b/graphics/asymptote/camp.tab.h
index a0d9cee40d..d6b8090e69 100644
--- a/graphics/asymptote/camp.tab.h
+++ b/graphics/asymptote/camp.tab.h
@@ -137,7 +137,7 @@ union YYSTYPE
absyntax::arglist *alist;
absyntax::slice *slice;
absyntax::dimensions *dim;
- absyntax::ty *t;
+ absyntax::astType *t;
absyntax::decid *di;
absyntax::decidlist *dil;
absyntax::decidstart *dis;
diff --git a/graphics/asymptote/camp.y b/graphics/asymptote/camp.y
index 0f2cc5435e..bfa6734651 100644
--- a/graphics/asymptote/camp.y
+++ b/graphics/asymptote/camp.y
@@ -76,7 +76,7 @@ using mem::string;
absyntax::arglist *alist;
absyntax::slice *slice;
absyntax::dimensions *dim;
- absyntax::ty *t;
+ absyntax::astType *t;
absyntax::decid *di;
absyntax::decidlist *dil;
absyntax::decidstart *dis;
diff --git a/graphics/asymptote/coder.cc b/graphics/asymptote/coder.cc
index 1beb3b5860..ee90354239 100644
--- a/graphics/asymptote/coder.cc
+++ b/graphics/asymptote/coder.cc
@@ -38,7 +38,7 @@ vm::lambda *newLambda(string name) {
// Used purely for global variables and static code blocks of file
// level modules.
coder::coder(position pos, string name, modifier sord)
-#if SIMPLE_FRAME
+#ifdef SIMPLE_FRAME
: level(frame::indirect_frame(name)),
#else
: level(new frame(name, 0, 0)),
diff --git a/graphics/asymptote/coder.h b/graphics/asymptote/coder.h
index e07aa11e63..0d50e8c752 100644
--- a/graphics/asymptote/coder.h
+++ b/graphics/asymptote/coder.h
@@ -221,8 +221,9 @@ public:
frame *getFrame()
{
if (isStatic() && !isTopLevel()) {
- assert(parent->getFrame());
- return parent->getFrame();
+ frame *result = parent->getFrame();
+ assert(result);
+ return result;
}
else
return level;
diff --git a/graphics/asymptote/common.h b/graphics/asymptote/common.h
index 6ee3d971f0..7f582e70ff 100644
--- a/graphics/asymptote/common.h
+++ b/graphics/asymptote/common.h
@@ -73,6 +73,7 @@ typedef unsigned long unsignedInt;
#else
#define Int_MAX2 INT_MAX
#define Int_MIN INT_MIN
+#define intIsInt
typedef int Int;
typedef unsigned int unsignedInt;
#endif
diff --git a/graphics/asymptote/configure b/graphics/asymptote/configure
index 4e83c4a259..38dd93bbb9 100755
--- a/graphics/asymptote/configure
+++ b/graphics/asymptote/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for Asymptote 2.89.
+# Generated by GNU Autoconf 2.71 for Asymptote 2.90.
#
# Report bugs to <https://github.com/vectorgraphics/asymptote/issues>.
#
@@ -611,8 +611,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='Asymptote'
PACKAGE_TARNAME='asymptote'
-PACKAGE_VERSION='2.89'
-PACKAGE_STRING='Asymptote 2.89'
+PACKAGE_VERSION='2.90'
+PACKAGE_STRING='Asymptote 2.90'
PACKAGE_BUGREPORT='https://github.com/vectorgraphics/asymptote/issues'
PACKAGE_URL=''
@@ -1326,7 +1326,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures Asymptote 2.89 to adapt to many kinds of systems.
+\`configure' configures Asymptote 2.90 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1392,7 +1392,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Asymptote 2.89:";;
+ short | recursive ) echo "Configuration of Asymptote 2.90:";;
esac
cat <<\_ACEOF
@@ -1508,7 +1508,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-Asymptote configure 2.89
+Asymptote configure 2.90
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -1988,7 +1988,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by Asymptote $as_me 2.89, which was
+It was created by Asymptote $as_me 2.90, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -3072,6 +3072,29 @@ VERSION=$PACKAGE_VERSION
# to do *after* running autoupdate.
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+# serial 11 (pkg-config-0.29.1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -7575,7 +7598,7 @@ fi
if test "x$enable_readline" != "xno"; then
-
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags readline || echo`
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7601,16 +7624,15 @@ _ACEOF
if ac_fn_cxx_try_compile "$LINENO"
then :
-PKG_FLAGS=""
+PKG_FLAGS=" "`pkg-config --silence-errors --libs readline || echo`
-
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"readline"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for history_list in -lreadline" >&5
printf %s "checking for history_list in -lreadline... " >&6; }
if test ${ac_cv_lib_readline_history_list+y}
@@ -7618,7 +7640,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lreadline $LIBS"
+LIBS="-lreadline $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -7663,7 +7685,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lreadline $LIBS"
+LIBS="-lreadline $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -7875,19 +7897,18 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags tinfo || echo`
-PKG_FLAGS=""
-
+PKG_FLAGS=" "`pkg-config --silence-errors --libs tinfo || echo`
-
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"tinfo"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5
printf %s "checking for tgetent in -ltinfo... " >&6; }
if test ${ac_cv_lib_tinfo_tgetent+y}
@@ -7895,7 +7916,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltinfo $LIBS"
+LIBS="-ltinfo $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -7940,7 +7961,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltinfo $LIBS"
+LIBS="-ltinfo $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -7994,7 +8015,7 @@ fi
-
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags ncurses || echo`
for ac_header in ncurses/curses.h ncurses.h curses.h
do :
@@ -8010,16 +8031,15 @@ fi
done
-PKG_FLAGS=""
+PKG_FLAGS=" "`pkg-config --silence-errors --libs ncurses || echo`
-
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"ncurses"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setupterm in -lncurses" >&5
printf %s "checking for setupterm in -lncurses... " >&6; }
if test ${ac_cv_lib_ncurses_setupterm+y}
@@ -8027,7 +8047,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lncurses $LIBS"
+LIBS="-lncurses $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8072,7 +8092,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lncurses $LIBS"
+LIBS="-lncurses $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8214,22 +8234,21 @@ fi
if test "x$enable_curl" != "xno"; then
-
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags curl || echo`
ac_fn_cxx_check_header_compile "$LINENO" "curl/curl.h" "ac_cv_header_curl_curl_h" "$ac_includes_default"
if test "x$ac_cv_header_curl_curl_h" = xyes
then :
-PKG_FLAGS=""
+PKG_FLAGS=" "`pkg-config --silence-errors --libs libcurl || echo`
-
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"curl"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curl_easy_init in -lcurl" >&5
printf %s "checking for curl_easy_init in -lcurl... " >&6; }
if test ${ac_cv_lib_curl_curl_easy_init+y}
@@ -8237,7 +8256,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcurl $LIBS"
+LIBS="-lcurl $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8282,7 +8301,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcurl $LIBS"
+LIBS="-lcurl $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8353,22 +8372,21 @@ fi
if test "x$enable_fftw" != "xno"; then
-
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags fftw3 || echo`
ac_fn_cxx_check_header_compile "$LINENO" "fftw3.h" "ac_cv_header_fftw3_h" "$ac_includes_default"
if test "x$ac_cv_header_fftw3_h" = xyes
then :
-PKG_FLAGS=""
-
+PKG_FLAGS=" "`pkg-config --silence-errors --libs fftw3 || echo`
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"fftw3"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fftw_execute in -lfftw3" >&5
printf %s "checking for fftw_execute in -lfftw3... " >&6; }
if test ${ac_cv_lib_fftw3_fftw_execute+y}
@@ -8376,7 +8394,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lfftw3 $LIBS"
+LIBS="-lfftw3 $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8421,7 +8439,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lfftw3 $LIBS"
+LIBS="-lfftw3 $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8489,7 +8507,7 @@ fi
if test "x$enable_eigen" != "xno"; then
-
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags eigen3 || echo`
ac_fn_cxx_check_header_compile "$LINENO" "Eigen/Dense" "ac_cv_header_Eigen_Dense" "$ac_includes_default"
if test "x$ac_cv_header_Eigen_Dense" = xyes
@@ -8593,7 +8611,7 @@ printf "%s\n" "#define HAVE_LIBTIRPC 1" >>confdefs.h
;;
*)
-
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags libtirpc || echo`
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8609,16 +8627,15 @@ _ACEOF
if ac_fn_cxx_try_compile "$LINENO"
then :
-PKG_FLAGS=""
+PKG_FLAGS=" "`pkg-config --silence-errors --libs libtirpc || echo`
-
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"tirpc"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xdrstdio_create in -ltirpc" >&5
printf %s "checking for xdrstdio_create in -ltirpc... " >&6; }
if test ${ac_cv_lib_tirpc_xdrstdio_create+y}
@@ -8626,7 +8643,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltirpc $LIBS"
+LIBS="-ltirpc $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8671,7 +8688,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltirpc $LIBS"
+LIBS="-ltirpc $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8741,25 +8758,24 @@ fi
if test "x$enable_gsl" != "xno"; then
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags gsl || echo`
-
-
+LDFLAGS="$LDFLAGS "`pkg-config --silence-errors --libs gsl || echo`
ac_fn_cxx_check_header_compile "$LINENO" "gsl/gsl_sf.h" "ac_cv_header_gsl_gsl_sf_h" "$ac_includes_default"
if test "x$ac_cv_header_gsl_gsl_sf_h" = xyes
then :
-PKG_FLAGS=""
-
+PKG_FLAGS=" "`pkg-config --silence-errors --libs gsl || echo`
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"gsl"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gsl_sf_debye_6 in -lgsl" >&5
printf %s "checking for gsl_sf_debye_6 in -lgsl... " >&6; }
if test ${ac_cv_lib_gsl_gsl_sf_debye_6+y}
@@ -8767,7 +8783,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lgsl $LIBS"
+LIBS="-lgsl $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8812,7 +8828,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lgsl $LIBS"
+LIBS="-lgsl $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10553,7 +10569,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by Asymptote $as_me 2.89, which was
+This file was extended by Asymptote $as_me 2.90, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -10617,7 +10633,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-Asymptote config.status 2.89
+Asymptote config.status 2.90
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
diff --git a/graphics/asymptote/configure.ac b/graphics/asymptote/configure.ac
index 3fe1598181..7e6dd1aaa1 100644
--- a/graphics/asymptote/configure.ac
+++ b/graphics/asymptote/configure.ac
@@ -3,10 +3,11 @@
# this file.
AC_PREREQ(2)
-AC_INIT([Asymptote],[2.89],[https://github.com/vectorgraphics/asymptote/issues])
+AC_INIT([Asymptote],[2.90],[https://github.com/vectorgraphics/asymptote/issues])
VERSION=$PACKAGE_VERSION
AC_SUBST(VERSION)
m4_include([ax_pthread.m4])
+m4_include([pkg.m4])
AC_C_BIGENDIAN
AC_CANONICAL_HOST
@@ -322,18 +323,17 @@ AC_CHECK_HEADERS(editline/readline.h)
])
AC_DEFUN([PKG_CONFIG],[
-ifdef([PKG_CHECK_MODULES],$1="$2 "`pkg-config --silence-errors $3 $4`,)
+ifdef([PKG_CHECK_MODULES],$1="$2 "`pkg-config --silence-errors $3 $4 || echo`,$1="$2 ")
])
AC_DEFUN([CHECK_LIB_STATIC],[
-PKG_FLAGS=""
PKG_CONFIG(PKG_FLAGS,,--libs,$1)
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"$2"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
AC_CHECK_LIB($2,$3,AC_DEFINE($4,1,DEFINE_LIB($2)),
if test "x$enable_static" = "xyes"; then
[
@@ -344,7 +344,7 @@ AC_CHECK_LIB($2,$3,AC_DEFINE($4,1,DEFINE_LIB($2)),
[
LDFLAGS=$LDFLAGS_SAVE
$5
-])
+],$PKG_FLAGS)
]
else
[
@@ -352,7 +352,7 @@ LDFLAGS=$LDFLAGS_SAVE
$5
]
fi
-)]
+,$PKG_FLAGS)]
)
if test "x$enable_readline" != "xno"; then
diff --git a/graphics/asymptote/dec.cc b/graphics/asymptote/dec.cc
index 1b47e0722f..d969ac5f02 100644
--- a/graphics/asymptote/dec.cc
+++ b/graphics/asymptote/dec.cc
@@ -27,7 +27,7 @@ using namespace types;
using mem::list;
-trans::tyEntry *ty::transAsTyEntry(coenv &e, record *where)
+trans::tyEntry *astType::transAsTyEntry(coenv &e, record *where)
{
return new trans::tyEntry(trans(e, false), 0, where, getPos());
}
@@ -128,7 +128,7 @@ arrayTy::operator string() const
}
tyEntryTy::tyEntryTy(position pos, types::ty *t)
- : ty(pos), ent(new trans::tyEntry(t, 0, 0, position()))
+ : astType(pos), ent(new trans::tyEntry(t, 0, 0, position()))
{
}
@@ -200,7 +200,8 @@ void block::transAsField(coenv &e, record *r)
}
bool block::transAsTemplatedField(
- coenv &e, record *r, mem::vector<absyntax::namedTyEntry*>* args
+ coenv &e, record *r, mem::vector<absyntax::namedTyEntry*>* args,
+ frame *caller
) {
Scope scopeHolder(e, scope);
auto p = stms.begin();
@@ -214,7 +215,7 @@ bool block::transAsTemplatedField(
em.sync();
return false;
}
- if(!dec->transAsParamMatcher(e, r, args))
+ if(!dec->transAsParamMatcher(e, r, args, caller))
return false;
while (++p != stms.end()) {
@@ -234,9 +235,10 @@ void block::transAsRecordBody(coenv &e, record *r)
}
bool block::transAsTemplatedRecordBody(
- coenv &e, record *r, mem::vector<absyntax::namedTyEntry*> *args
+ coenv &e, record *r, mem::vector<absyntax::namedTyEntry*> *args,
+ frame *caller
) {
- bool succeeded = transAsTemplatedField(e, r, args);
+ bool succeeded = transAsTemplatedField(e, r, args, caller);
e.c.closeRecord();
return succeeded;
}
@@ -267,10 +269,26 @@ record *block::transAsTemplatedFile(
genv& ge,
symbol id,
mem::vector<absyntax::namedTyEntry*>* args,
- frame *parent
+ coenv& cE
) {
+
+ for (auto p = args->rbegin(); p != args->rend(); ++p) {
+ namedTyEntry *arg = *p;
+ tyEntry *ent = arg->ent;
+ if(ent->t->kind == types::ty_record) {
+ varEntry *v = ent->v;
+ if (v) {
+ // Push the value of v to the stack.
+ v->getLocation()->encode(READ, arg->pos, cE.c);
+ } else {
+ // Push the appropriate frame to the stack.
+ newRecordExp::encodeLevel(arg->pos,cE,ent);
+ }
+ }
+ }
+
// Create the new module.
- record *r = new record(id, new frame(id,parent,0));
+ record *r = new record(id, new frame(id, 0, 0));
// Create coder and environment to translate the module.
// File-level modules have dynamic fields by default.
@@ -283,7 +301,7 @@ record *block::transAsTemplatedFile(
autoplainRunnable()->transAsField(ce, r);
}
- bool succeeded = transAsTemplatedRecordBody(ce, r, args);
+ bool succeeded = transAsTemplatedRecordBody(ce, r, args, cE.c.getFrame());
if (!succeeded) {
return nullptr;
}
@@ -491,7 +509,7 @@ void decidstart::createSymMap(AsymptoteLsp::SymbolContext* symContext)
}
void decidstart::createSymMapWType(
- AsymptoteLsp::SymbolContext* symContext, absyntax::ty* base
+ AsymptoteLsp::SymbolContext* symContext, absyntax::astType* base
) {
#ifdef HAVE_LSP
std::string name(static_cast<std::string>(getName()));
@@ -733,7 +751,7 @@ void decid::createSymMap(AsymptoteLsp::SymbolContext* symContext)
}
void decid::createSymMapWType(
- AsymptoteLsp::SymbolContext* symContext, absyntax::ty* base
+ AsymptoteLsp::SymbolContext* symContext, absyntax::astType* base
) {
#ifdef HAVE_LSP
start->createSymMapWType(symContext, base);
@@ -775,7 +793,7 @@ void decidlist::createSymMap(AsymptoteLsp::SymbolContext* symContext) {
}
void decidlist::createSymMapWType(
- AsymptoteLsp::SymbolContext* symContext, absyntax::ty* base
+ AsymptoteLsp::SymbolContext* symContext, absyntax::astType* base
) {
#ifdef HAVE_LSP
for (auto const& p : decs)
@@ -834,7 +852,7 @@ class loadModuleExp : public exp {
public:
loadModuleExp(position pos, record *imp)
- : exp(pos) {ft=new function(imp,primString(),primString());}
+ : exp(pos) {ft=new function(imp,primString());}
void prettyprint(ostream &out, Int indent) {
prettyname(out, "loadModuleExp", indent, getPos());
@@ -865,18 +883,19 @@ public:
// the import, but doesn't add the import to the environment.
varEntry *accessModule(position pos, coenv &e, record *r, symbol id)
{
- record *imp=e.e.getModule(id, (string)id);
+ string filename=(string) id;
+ record *imp=e.e.getModule(id, filename);
if (!imp) {
em.error(pos);
- em << "could not load module '" << id << "'";
+ em << "could not load module '" << filename << "'";
em.sync();
return 0;
}
else {
// Create a varinit that evaluates to the module.
- // This is effectively the expression 'loadModule(filename,"")'.
+ // This is effectively the expression 'loadModule(filename)'.
callExp init(pos, new loadModuleExp(pos, imp),
- new stringExp(pos, (string)id), new stringExp(pos, ""));
+ new stringExp(pos, filename));
// The varEntry should have whereDefined()==0 as it is not defined inside
// the record r.
@@ -891,14 +910,15 @@ varEntry *accessModule(position pos, coenv &e, record *r, symbol id)
varEntry *accessTemplatedModule(position pos, coenv &e, record *r, symbol id,
formals *args)
{
- stringstream s;
- s << args->getSignature(e)->handle();
- string sigHandle=s.str();
+ string filename=(string) id;
+ stringstream buf;
+ buf << id << '/' << args->getSignature(e)->handle() << '/';
+ symbol index=symbol::literalTrans(buf.str());
auto *computedArgs = new mem::vector<namedTyEntry*>();
mem::vector<tySymbolPair> *fields = args->getFields();
for (auto p = fields->begin(); p != fields->end(); ++p) {
- ty* theType = p->ty;
+ astType* theType = p->ty;
symbol theName = p->sym;
if (theName == symbol::nullsym) {
em.error(theType->getPos());
@@ -911,11 +931,7 @@ varEntry *accessTemplatedModule(position pos, coenv &e, record *r, symbol id,
));
}
- record *imp=e.e.getTemplatedModule(id,
- (string) id,
- sigHandle,
- computedArgs,
- e.c.getFrame());
+ record *imp=e.e.getTemplatedModule(index,filename,computedArgs,e);
if (!imp) {
em.error(pos);
em << "could not load module '" << id << "'";
@@ -924,9 +940,8 @@ varEntry *accessTemplatedModule(position pos, coenv &e, record *r, symbol id,
}
else {
// Create a varinit that evaluates to the module.
- // This is effectively the expression 'loadModule(filename,index)'.
- callExp init(pos, new loadModuleExp(pos, imp),
- new stringExp(pos, (string) id), new stringExp(pos, sigHandle));
+ // This is effectively the expression 'loadModule(index)'.
+ callExp init(pos, new loadModuleExp(pos, imp), new stringExp(pos, index));
// The varEntry should have whereDefined()==0 as it is not defined inside
// the record r.
@@ -1061,7 +1076,22 @@ void typeParam::prettyprint(ostream &out, Int indent) {
out << "typeParam (" << paramSym << ")\n";
}
+void recordInitializer(coenv &e, symbol id, record *parent, position here)
+{
+ // This is equivalent to the code
+ // A operator init() { return new A; }
+ // where A is the name of the record.
+ formals formals(here);
+ simpleName recordName(here, id);
+ nameTy result(here, &recordName);
+ newRecordExp exp(here, &result);
+ returnStm stm(here, &exp);
+ fundec init(here, &result, symbol::opTrans("init"), &formals, &stm);
+ init.transAsField(e, parent);
+}
+
bool typeParam::transAsParamMatcher(coenv &e, record *r, namedTyEntry* arg) {
+ position pos=arg->pos;
if (arg->dest != paramSym) {
em.error(arg->pos);
em << "template argument name does not match module: passed "
@@ -1070,22 +1100,42 @@ bool typeParam::transAsParamMatcher(coenv &e, record *r, namedTyEntry* arg) {
<< paramSym;
return false;
}
- addTypeWithPermission(e, r, arg->ent, paramSym);
- types::ty *t = arg->ent->t;
- if (t->kind == types::ty_record) {
- record *local = dynamic_cast<record *>(t);
- // copied from recorddecc::addPostRecordEnvironment, mutatis mutandis
- if (r) {
- r->e.add(local->postdefenv, 0, e.c);
+
+ if(arg->ent->t->kind == types::ty_record) {
+ record *module = dynamic_cast<record *>(arg->ent->v->getType());
+ symbol Module=symbol::literalTrans(module->getName());
+ record *imp=e.e.getLoadedModule(Module);
+
+ tyEntry *entry;
+ if(imp) {
+ callExp init(pos, new loadModuleExp(pos, imp),
+ new stringExp(pos, module->getName()));
+ varEntry *v=makeVarEntryWhere(e, r, imp, 0, pos);
+ initializeVar(pos, e, v, &init);
+ if (v)
+ addVar(e, r, v, Module);
+
+ record *src = dynamic_cast<record *>(arg->ent->t);
+ qualifiedName *qn=new qualifiedName(
+ pos,
+ new simpleName(pos,module->getName()),
+ src->getName()
+ );
+
+ entry=nameTy(pos,qn).transAsTyEntry(e, r);
+ } else {
+ entry=arg->ent;
}
- e.e.add(local->postdefenv, 0, e.c);
- }
+ addTypeWithPermission(e, r, entry, paramSym);
+ recordInitializer(e,paramSym,r,pos);
+ } else
+ addTypeWithPermission(e, r, arg->ent, paramSym);
//e.e.addType(paramSym, arg->ent);
// The code below would add e.g. operator== to the context, but potentially
// ignore overrides of operator==:
//
- // types::ty *t = arg.ent->t;
+ // types::astType *t = arg.ent->t;
// if (t->kind == types::ty_record) {
// record *r = dynamic_cast<record *>(t);
// if (r) {
@@ -1116,7 +1166,7 @@ void typeParamList::add(typeParam *tp) {
}
bool typeParamList::transAsParamMatcher(
- coenv &e, record *r, mem::vector<namedTyEntry*> *args
+ coenv &e, record *r, mem::vector<namedTyEntry*> *args, frame *caller
) {
if (args->size() != params.size()) {
position pos = getPos();
@@ -1133,8 +1183,30 @@ bool typeParamList::transAsParamMatcher(
}
return false;
}
+ mem::vector<namedTyEntry*> *qualifiedArgs = new mem::vector<namedTyEntry*>();
+
+ const string callerContextName="callerContext/";
+ const static symbol *id0=new symbol(symbol::literalTrans(callerContextName));
+ record *callerContext = new record(*id0, caller);
+ for (namedTyEntry *arg : *args) {
+ if (arg->ent->t->kind == types::ty_record) {
+ varEntry *v = arg->ent->v;
+ varEntry *newV = makeVarEntryWhere(e, r, v ? v->getType() : callerContext, nullptr,
+ arg->pos);
+ newV->getLocation()->encode(WRITE, arg->pos, e.c);
+ e.c.encodePop();
+
+ tyEntry *newEnt = qualifyTyEntry(newV, arg->ent);
+ qualifiedArgs->push_back(
+ new namedTyEntry(arg->pos, arg->dest, newEnt)
+ );
+ } else {
+ qualifiedArgs->push_back(arg);
+ }
+ }
+
for (size_t i = 0; i < params.size(); ++i) {
- bool succeeded = params[i]->transAsParamMatcher(e, r, (*args)[i]);
+ bool succeeded = params[i]->transAsParamMatcher(e, r, (*qualifiedArgs)[i]);
if (!succeeded) return false;
}
return true;
@@ -1152,9 +1224,9 @@ symbol templatedSymbol() {
}
bool receiveTypedefDec::transAsParamMatcher(
- coenv& e, record *r, mem::vector<namedTyEntry*> *args
+ coenv& e, record *r, mem::vector<namedTyEntry*> *args, frame *caller
) {
- bool succeeded = params->transAsParamMatcher(e, r, args);
+ bool succeeded = params->transAsParamMatcher(e, r, args, caller);
types::ty *intTy = e.e.lookupType(intSymbol());
assert(intTy);
@@ -1349,19 +1421,7 @@ void recorddec::prettyprint(ostream &out, Int indent)
void recorddec::transRecordInitializer(coenv &e, record *parent)
{
- position here=getPos();
-
- // This is equivalent to the code
- // A operator init() { return new A; }
- // where A is the name of the record.
- formals formals(here);
- simpleName recordName(here, id);
- nameTy result(here, &recordName);
- newRecordExp exp(here, &result);
- returnStm stm(here, &exp);
- fundec init(here, &result, symbol::opTrans("init"), &formals, &stm);
-
- init.transAsField(e, parent);
+ recordInitializer(e,id,parent,getPos());
}
void recorddec::addPostRecordEnvironment(coenv &e, record *r, record *parent) {
@@ -1420,7 +1480,7 @@ runnable *autoplainRunnable() {
// Abstract syntax for the code:
// private import plain;
position pos=position();
- static importdec ap(pos, new idpair(pos, symbol::trans("plain")));
+ static importdec ap(pos, new idpair(pos, symbol::literalTrans("plain")));
static modifiedRunnable mr(pos, trans::PRIVATE, &ap);
return &mr;
diff --git a/graphics/asymptote/dec.h b/graphics/asymptote/dec.h
index ac6e5b065b..53fee4bfe0 100644
--- a/graphics/asymptote/dec.h
+++ b/graphics/asymptote/dec.h
@@ -45,9 +45,9 @@ using sym::symbol;
class vardec;
-class ty : public absyn {
+class astType : public absyn {
public:
- ty(position pos)
+ astType(position pos)
: absyn(pos) {}
virtual void prettyprint(ostream &out, Int indent) = 0;
@@ -71,15 +71,15 @@ public:
#endif
};
-class nameTy : public ty {
+class nameTy : public astType {
name *id;
public:
nameTy(position pos, name *id)
- : ty(pos), id(id) {}
+ : astType(pos), id(id) {}
nameTy(name *id)
- : ty(id->getPos()), id(id) {}
+ : astType(id->getPos()), id(id) {}
void prettyprint(ostream &out, Int indent) override;
@@ -107,16 +107,16 @@ public:
types::array *truetype(types::ty *base, bool tacit=false);
};
-class arrayTy : public ty {
- ty *cell;
+class arrayTy : public astType {
+ astType *cell;
dimensions *dims;
public:
- arrayTy(position pos, ty *cell, dimensions *dims)
- : ty(pos), cell(cell), dims(dims) {}
+ arrayTy(position pos, astType *cell, dimensions *dims)
+ : astType(pos), cell(cell), dims(dims) {}
arrayTy(name *id, dimensions *dims)
- : ty(dims->getPos()), cell(new nameTy(id)), dims(dims) {}
+ : astType(dims->getPos()), cell(new nameTy(id)), dims(dims) {}
void prettyprint(ostream &out, Int indent) override;
@@ -129,11 +129,11 @@ public:
// Similar to varEntryExp, this helper class always translates to the same
// fixed type.
-class tyEntryTy : public ty {
+class tyEntryTy : public astType {
trans::tyEntry *ent;
public:
tyEntryTy(position pos, trans::tyEntry *ent)
- : ty(pos), ent(ent) {}
+ : astType(pos), ent(ent) {}
tyEntryTy(position pos, types::ty *t);
@@ -240,12 +240,14 @@ public:
void transAsField(coenv &e, record *r) override;
bool transAsTemplatedField(
- coenv &e, record *r, mem::vector<absyntax::namedTyEntry*>* args
+ coenv &e, record *r, mem::vector<absyntax::namedTyEntry*>* args,
+ trans::frame *caller
);
void transAsRecordBody(coenv &e, record *r);
bool transAsTemplatedRecordBody(
- coenv &e, record *r, mem::vector<absyntax::namedTyEntry*> *args
+ coenv &e, record *r, mem::vector<absyntax::namedTyEntry*> *args,
+ trans::frame *caller
);
types::record *transAsFile(genv& ge, symbol id);
@@ -254,7 +256,7 @@ public:
genv& ge,
symbol id,
mem::vector<absyntax::namedTyEntry*> *args,
- trans::frame *parent
+ coenv &e
);
// If the block can be interpreted as a single vardec, return that vardec
@@ -363,7 +365,7 @@ public:
void createSymMap(AsymptoteLsp::SymbolContext* symContext) override;
void createSymMapWType(
- AsymptoteLsp::SymbolContext* symContext, absyntax::ty* base
+ AsymptoteLsp::SymbolContext* symContext, absyntax::astType* base
);
};
@@ -406,7 +408,7 @@ public:
void createSymMap(AsymptoteLsp::SymbolContext* symContext) override;
void createSymMapWType(
- AsymptoteLsp::SymbolContext* symContext, absyntax::ty* base
+ AsymptoteLsp::SymbolContext* symContext, absyntax::astType* base
);
};
@@ -441,7 +443,7 @@ public:
void createSymMap(AsymptoteLsp::SymbolContext* symContext) override;
void createSymMapWType(
- AsymptoteLsp::SymbolContext* symContext, absyntax::ty* base
+ AsymptoteLsp::SymbolContext* symContext, absyntax::astType* base
);
};
@@ -461,14 +463,14 @@ void createVar(position pos, coenv &e, record *r,
symbol id, types::ty *t, varinit *init);
class vardec : public dec {
- ty *base;
+ astType *base;
decidlist *decs;
public:
- vardec(position pos, ty *base, decidlist *decs)
+ vardec(position pos, astType *base, decidlist *decs)
: dec(pos), base(base), decs(decs) {}
- vardec(position pos, ty *base, decid *di)
+ vardec(position pos, astType *base, decid *di)
: dec(pos), base(base), decs(new decidlist(pos))
{
decs->add(di);
@@ -634,7 +636,8 @@ public:
void add(typeParam *tp);
- bool transAsParamMatcher(coenv &e, record *r, mem::vector<namedTyEntry*> *args);
+ bool transAsParamMatcher(coenv &e, record *r,
+ mem::vector<namedTyEntry*> *args, trans::frame *caller);
void prettyprint(ostream &out, Int indent);
};
@@ -644,12 +647,12 @@ class receiveTypedefDec : public dec {
typeParamList* params;
public:
- receiveTypedefDec(position pos, typeParamList* params)
+ receiveTypedefDec(position pos, typeParamList* params)
: dec(pos), params(params) {}
void transAsField(coenv& e, record *r) override;
bool transAsParamMatcher(
- coenv& e, record *r, mem::vector<namedTyEntry*> *args
+ coenv& e, record *r, mem::vector<namedTyEntry*> *args, trans::frame *caller
);
};
@@ -674,7 +677,7 @@ protected:
// from a.B unravel x;
//
// Here, v->getType() will yield A and v->getLocation() will yield the
- // location of the the variable a, but the record type t will be B.
+ // location of the variable a, but the record type t will be B.
record *t;
varEntry *v;
diff --git a/graphics/asymptote/doc/CAD.pdf b/graphics/asymptote/doc/CAD.pdf
index 1906655b54..819509abff 100644
--- a/graphics/asymptote/doc/CAD.pdf
+++ b/graphics/asymptote/doc/CAD.pdf
Binary files differ
diff --git a/graphics/asymptote/doc/FAQ/asy-faq.info b/graphics/asymptote/doc/FAQ/asy-faq.info
index c0665b7144..e66a938dae 100644
--- a/graphics/asymptote/doc/FAQ/asy-faq.info
+++ b/graphics/asymptote/doc/FAQ/asy-faq.info
@@ -10,7 +10,7 @@ END-INFO-DIR-ENTRY
File: asy-faq.info, Node: Top, Next: Question 1.1, Up: (dir)
ASYMPTOTE FREQUENTLY ASKED QUESTIONS
- 2024-03-23
+ 2024-06-21
This is the list of Frequently Asked Questions about Asymptote (asy).
diff --git a/graphics/asymptote/doc/TeXShopAndAsymptote.pdf b/graphics/asymptote/doc/TeXShopAndAsymptote.pdf
index e6493a9c39..de1fb5b2da 100644
--- a/graphics/asymptote/doc/TeXShopAndAsymptote.pdf
+++ b/graphics/asymptote/doc/TeXShopAndAsymptote.pdf
Binary files differ
diff --git a/graphics/asymptote/doc/asy-latex.pdf b/graphics/asymptote/doc/asy-latex.pdf
index 2b327afac6..e09c0b928e 100644
--- a/graphics/asymptote/doc/asy-latex.pdf
+++ b/graphics/asymptote/doc/asy-latex.pdf
Binary files differ
diff --git a/graphics/asymptote/doc/asyRefCard.pdf b/graphics/asymptote/doc/asyRefCard.pdf
index d68b7b1b95..dcfb6417e4 100644
--- a/graphics/asymptote/doc/asyRefCard.pdf
+++ b/graphics/asymptote/doc/asyRefCard.pdf
Binary files differ
diff --git a/graphics/asymptote/doc/asymptote.pdf b/graphics/asymptote/doc/asymptote.pdf
index 4e414de0ef..a5de59f7c4 100644
--- a/graphics/asymptote/doc/asymptote.pdf
+++ b/graphics/asymptote/doc/asymptote.pdf
Binary files differ
diff --git a/graphics/asymptote/doc/asymptote.texi b/graphics/asymptote/doc/asymptote.texi
index ee0e3ae49e..f37789114f 100644
--- a/graphics/asymptote/doc/asymptote.texi
+++ b/graphics/asymptote/doc/asymptote.texi
@@ -81,6 +81,7 @@ Installation
* Compiling from UNIX source:: Building @code{Asymptote} from scratch
* Editing modes:: Convenient @code{emacs} and @code{vim} modes
* Git:: Getting the latest development source
+* Building the documentation:: Building the documentation
* Uninstall:: Goodbye, @code{Asymptote}!
Tutorial
@@ -105,6 +106,7 @@ Programming
* Pens:: Colors, line types, line widths, font sizes
* Transforms:: Affine transforms
* Frames and pictures:: Canvases for immediate and deferred drawing
+* Deferred drawing:: Witholding drawing until all data is available
* Files:: Reading and writing your data
* Variable initializers:: Initialize your variables
* Structures:: Organize your data
@@ -141,6 +143,7 @@ Base modules
* plain:: Default @code{Asymptote} base file
* simplex:: Linear programming: simplex method
+* simplex2:: Two-variable simplex method
* math:: Extend @code{Asymptote}'s math capabilities
* interpolate:: Interpolation routines
* geometry:: Geometry routines
@@ -308,6 +311,7 @@ A quick reference card for @code{Asymptote} is available at
* Compiling from UNIX source:: Building @code{Asymptote} from scratch
* Editing modes:: Convenient @code{emacs} and @code{vim} modes
* Git:: Getting the latest development source
+* Building the documentation:: Building the documentation
* Uninstall:: Goodbye, @code{Asymptote}!
@end menu
@@ -404,7 +408,7 @@ The @code{ImageMagick} package from
@noindent
is required to support output formats other than @acronym{HTML},
-@acronym{PDF}, @acronym{SVG}, and @acronym{PNG} (@pxref{convert}).
+@acronym{PDF}, @acronym{SVG}, and @acronym{PNG} (@pxref{magick}).
The @code{Python 3} interpreter from @url{https://www.python.org} is only
required if you wish to try out the graphical user interface (@pxref{GUI}).
@@ -516,7 +520,7 @@ configuration variables @code{paperwidth} and @code{paperheight}.
@cindex @code{texcommand}
@cindex @code{dvips}
@cindex @code{dvisvgm}
-@cindex @code{convert}
+@cindex @code{magick}
@cindex @code{ImageMagick}
@cindex @code{asygl}
These additional configuration variables normally do not require adjustment:
@@ -531,6 +535,7 @@ asygl
@end verbatim
@noindent
+@cindex @code{warn}
Warnings (such as "unbounded" and "offaxis") may be enabled or disabled with
the functions
@verbatim
@@ -792,6 +797,21 @@ apt-get build-dep asymptote
@end verbatim
@noindent
+@node Building the documentation
+@section Building the documentation
+Here are instructions for building the documentation:
+@verbatim
+cd doc
+make # for both the PDF version doc/asymptote.pdf and the HTML version
+cd png
+make # for the HTML version only: doc/png/index.html
+@end verbatim
+Note that the @code{HTML} version cannot be built without
+executing @code{make} from @code{doc} folder first.
+
+The @code{asy} executable is required for compiling the diagrams
+in the documentation.
+
@node Uninstall, , Git, Installation
@section Uninstall
@cindex uninstall
@@ -883,7 +903,7 @@ followed by @code{Enter}, to obtain the above image.
@cindex arrow keys
@cindex erase
@cindex quit
-@noindent
+
At this point you can type further @code{draw} commands, which will be added
to the displayed figure, @code{erase} to clear the canvas,
@verbatim
@@ -1123,7 +1143,8 @@ use in constructing an optional legend entry.
@cindex @code{Bar}
@cindex @code{Bars}
@cindex @code{barsize}
-Bars are useful for indicating dimensions. The possible values of
+
+Bars @code{bar} are useful for indicating dimensions. The possible values of
@code{bar} are @code{None}, @code{BeginBar}, @code{EndBar} (or
equivalently @code{Bar}), and @code{Bars} (which draws a bar at both
ends of the path). Each of these bar specifiers (except for
@@ -1133,6 +1154,7 @@ bar length is @code{barsize(pen)}.
@cindex arrows
@anchor{arrows}
+@cindex @code{arrowbar}
@cindex @code{None}
@cindex @code{Blank}
@cindex @code{BeginArrow}
@@ -1140,77 +1162,116 @@ bar length is @code{barsize(pen)}.
@cindex @code{EndArrow}
@cindex @code{Arrow}
@cindex @code{Arrows}
-@cindex @code{FillDraw}
-@cindex @code{Fill}
-@cindex @code{Draw}
-@cindex @code{NoFill}
-@cindex @code{UnFill}
+
+The possible values of @code{arrow} are @code{None}, @code{Blank}
+(which draws no arrows or path), @code{BeginArrow}, @code{MidArrow},
+@code{EndArrow} (or equivalently @code{Arrow}),
+and @code{Arrows} (which draws an arrow at both ends of the path).
+
@cindex @code{BeginArcArrow}
@cindex @code{MidArcArrow}
@cindex @code{EndArcArrow}
@cindex @code{ArcArrow}
@cindex @code{ArcArrows}
+There are also arrow versions with
+slightly modified default values of @code{size} and @code{angle} suitable for
+curved arrows: @code{BeginArcArrow}, @code{EndArcArrow} (or equivalently
+@code{ArcArrow}), @code{MidArcArrow}, and @code{ArcArrows}.
+
+For example:
+@verbatim
+draw((0,0)--(1,1),arrow=Arrows);
+@end verbatim
+All of the arrow specifiers except for @code{None} and @code{Blank}
+may be given optional arguments, for example:
+@verbatim
+draw((0,0)--(1,1),arrow=Arrow(
+ arrowhead=HookHead,size=3mm,angle=20,filltype=Draw,position=0.9));
+@end verbatim
+
+The function @code{Arrow} has the signature
+@verbatim
+arrowbar Arrow(arrowhead arrowhead=DefaultHead,
+ real size=0, real angle=arrowangle,
+ filltype filltype=null, position position=EndPoint)
+@end verbatim
+@noindent
+Calling @code{Arrow()} returns @code{Arrow}, which is an @code{arrowbar} object.
+The parameters are:
+
+@itemize
+@cindex @code{arrowhead}
@cindex @code{DefaultHead}
@cindex @code{SimpleHead}
@cindex @code{HookHead}
@cindex @code{TeXHead}
-The possible values of @code{arrow} are @code{None}, @code{Blank}
-(which draws no arrows or path), @code{BeginArrow}, @code{MidArrow},
-@code{EndArrow} (or equivalently @code{Arrow}),
-and @code{Arrows} (which draws an arrow at both ends of the path).
-All of the arrow specifiers except for @code{None} and @code{Blank}
-may be given the optional arguments arrowhead @code{arrowhead} (one of
+@item @code{arrowhead}
+can be one of
the predefined arrowhead styles @code{DefaultHead}, @code{SimpleHead},
-@code{HookHead}, @code{TeXHead}),
-real @code{size} (arrowhead size in @code{PostScript} coordinates),
-real @code{angle} (arrowhead angle
-in degrees), filltype @code{filltype} (one of @code{FillDraw}, @code{Fill},
-@code{NoFill}, @code{UnFill}, @code{Draw}) and (except for
-@code{MidArrow} and @code{Arrows}) a real @code{position} (in the
+@code{HookHead}, @code{TeXHead}.
+@item real @code{size} is the arrowhead size in @code{PostScript} coordinates.
+
+The default arrowhead size when drawn
+with a pen @code{p} is @code{arrowsize(p)}.
+@item real @code{angle} is the arrowhead angle
+in degrees.
+
+@item filltype @code{filltype} (@pxref{filltype}),
+@item (except for
+@code{MidArrow} and @code{Arrows}) real @code{position} (in the
sense of @code{point(path p, real t)}) along the path where the tip of
-the arrow should be placed. The default arrowhead size when drawn
-with a pen @code{p} is @code{arrowsize(p)}. There are also arrow versions with
-slightly modified default values of @code{size} and @code{angle} suitable for
-curved arrows: @code{BeginArcArrow}, @code{EndArcArrow} (or equivalently
-@code{ArcArrow}), @code{MidArcArrow}, and @code{ArcArrows}.
+the arrow should be placed.
+@end itemize
+Margins @code{margin} can be used to shrink the visible portion of a path by
+@code{labelmargin(p)} to avoid overlap with other drawn objects.
+
+Typical values of @code{margin}
+are:
+@table @code
@cindex @code{NoMargin}
+@item NoMargin
@cindex @code{BeginMargin}
+@item BeginMargin
@cindex @code{EndMargin}
@cindex @code{Margin}
+@item EndMargin
+(equivalently @code{Margin})
@cindex @code{Margins}
+@item Margins
+leaves a margin at both ends of the path.
+@item Margin(real begin, real end=begin)
+specify the size of the beginning and ending margin, respectively,
+in multiples of the units @code{labelmargin(p)} used for aligning labels.
@cindex @code{BeginPenMargin}
+@item BeginPenMargin
@cindex @code{EndPenMargin}
@cindex @code{PenMargin}
+@item EndPenMargin
+(equivalently @code{PenMargin})
@cindex @code{PenMargins}
+@item PenMargins
+@item PenMargin(real begin, real end=begin)
+specify a margin in units of
+the pen line width, taking account of the pen line width when drawing
+the path or arrow.
+@cindex @code{DotMargin}
+@item DotMargin
+an abbreviation for @code{PenMargin(-0.5*dotfactor,0.5*dotfactor)},
+used to draw from the usual beginning point just up to the boundary of an
+end dot of width @code{dotfactor*linewidth(p)}.
@cindex @code{BeginDotMargin}
+@item BeginDotMargin
@cindex @code{EndDotMargin}
-@cindex @code{DotMargin}
@cindex @code{DotMargins}
-@cindex @code{Margin}
+@item DotMargins
+work similarly.
@cindex @code{TrueMargin}
-Margins can be used to shrink the visible portion of a path by
-@code{labelmargin(p)} to avoid overlap with other drawn objects.
-Typical values of @code{margin}
-are @code{NoMargin}, @code{BeginMargin}, @code{EndMargin} (or
-equivalently @code{Margin}), and @code{Margins} (which leaves a margin
-at both ends of the path). One may use
-@code{Margin(real begin, real end=begin)}
-to specify the size of the beginning and ending margin, respectively,
-in multiples of the units @code{labelmargin(p)} used for aligning labels.
-Alternatively, @code{BeginPenMargin}, @code{EndPenMargin}
-(or equivalently @code{PenMargin}), @code{PenMargins},
-@code{PenMargin(real begin, real end=begin)} specify a margin in units of
-the pen line width, taking account of the pen line width when drawing
-the path or arrow. For example, use @code{DotMargin}, an
-abbreviation for @code{PenMargin(-0.5*dotfactor,0.5*dotfactor)},
-to draw from the usual beginning point just up to the boundary of an
-end dot of width @code{dotfactor*linewidth(p)}. The qualifiers
-@code{BeginDotMargin}, @code{EndDotMargin}, and @code{DotMargins} work
-similarly. The qualifier @code{TrueMargin(real begin, real end=begin)}
-allows one to specify a margin directly in @code{PostScript} units,
+@item TrueMargin(real begin, real end=begin)
+specify a margin directly in @code{PostScript} units,
independent of the pen line width.
+@end table
The use of arrows, bars, and margins is illustrated by the examples
@code{@uref{https://asymptote.sourceforge.io/gallery/Pythagoras.svg,,Pythagoras}@uref{https://asymptote.sourceforge.io/gallery/Pythagoras.asy,,.asy}} and
@@ -1484,6 +1545,7 @@ For an illustration of picture clipping, see the first example in @ref{LaTeX usa
@node label, , clip, Drawing commands
@section label
@cindex @code{label}
+@cindex @code{labelmargin}
@verbatim
void label(picture pic=currentpicture, Label L, pair position,
align align=NoAlign, pen p=currentpen, filltype filltype=NoFill)
@@ -1494,6 +1556,16 @@ Draw Label @code{L} on picture @code{pic} using pen @code{p}. If
coordinate @code{position}; otherwise it will be aligned in the
direction of @code{align} and displaced from @code{position} by
the @code{PostScript} offset @code{align*labelmargin(p)}.
+
+Here, @code{real labelmargin(pen p=currentpen)} is a quantity used to align labels.
+In the code below,
+@verbatim
+label("abcdefg",(0,0),align=up,basealign);
+@end verbatim
+@noindent
+the baseline of the label will be exactly
+@code{labelmargin(currentpen)} @code{PostScript} units above the center.
+
@cindex @code{Align}
The constant @code{Align} can be used to align the
bottom-left corner of the label at @code{position}.
@@ -1609,11 +1681,14 @@ label(graphic("file.eps","width=1cm"),(0,0),NE);
layer();
@end verbatim
+@anchor{baseline}
@cindex @code{baseline}
The @code{string baseline(string s, string template="\strut")}
-function can be used to enlarge the bounding box of labels to match a
+function can be used to enlarge the bounding box of a label to match a
given template, so that their baselines will be typeset on a
horizontal line. See @code{@uref{https://asymptote.sourceforge.io/gallery/Pythagoras.svg,,Pythagoras}@uref{https://asymptote.sourceforge.io/gallery/Pythagoras.asy,,.asy}} for an example.
+Alternatively, the pen @code{basealign} may be used to force labels to
+respect the TeX baseline (@pxref{basealign}).
One can prevent labels from overwriting one another with the
@code{overwrite} pen attribute (@pxref{overwrite}).
@@ -1626,7 +1701,10 @@ A group of objects may be packed together into single frame with the routine
frame pack(pair align=2S ... object inset[]);
@end verbatim
@noindent
-To draw or fill a box (or ellipse or other path) around a Label and
+@anchor{envelope}
+@cindex @code{envelope}
+@cindex @code{object}
+To draw or fill a box (or ellipse or other path) around a @code{Label} and
return the bounding object, use one of the routines
@verbatim
object draw(picture pic=currentpicture, Label L, envelope e,
@@ -1638,8 +1716,7 @@ object draw(picture pic=currentpicture, Label L, envelope e, pair position,
@end verbatim
@noindent
Here @code{envelope} is a boundary-drawing routine such as @code{box},
-@code{roundbox}, or @code{ellipse} defined in @code{plain_boxes.asy}
-(@pxref{envelope}).
+@code{roundbox}, or @code{ellipse} defined in @code{plain_boxes.asy}.
@cindex @code{texpath}
The function @code{path[] texpath(Label L)} returns the path array that
@@ -1774,6 +1851,7 @@ should coincide with the first node of the second path).
* Pens:: Colors, line types, line widths, font sizes
* Transforms:: Affine transforms
* Frames and pictures:: Canvases for immediate and deferred drawing
+* Deferred drawing:: Witholding drawing until all data is available
* Files:: Reading and writing your data
* Variable initializers:: Initialize your variables
* Structures:: Organize your data
@@ -2222,13 +2300,13 @@ individual characters. The inverse operation is provided by
@cindex @code{format}
returns a string containing @code{n} formatted according to the C-style format
string @code{s} using locale @code{locale} (or the current locale if an
-empty string is specified), following the behaviour of the C function
+empty string is specified), following the behavior of the C function
@code{fprintf}), except that only one data field is allowed.
@item string format(string s=defaultformat, bool forcemath=false, string s=defaultseparator, real x, string locale="")
returns a string containing @code{x} formatted according to the C-style format
string @code{s} using locale @code{locale} (or the current locale if an
-empty string is specified), following the behaviour of the C function
+empty string is specified), following the behavior of the C function
@code{fprintf}), except that only one data field is allowed, trailing
zeros are removed by default (unless @code{#} is specified), and
if @code{s} specifies math mode or @code{forcemath=true}, @TeX{} is
@@ -2665,7 +2743,7 @@ Note that @code{lastcut.before} plays the role of the
@cindex @code{buildcycle}
@item path buildcycle(... path[] p);
This returns the path surrounding a region bounded by a list of two or more
-consecutively intersecting paths, following the behaviour of the
+consecutively intersecting paths, following the behavior of the
@code{MetaPost buildcycle} command.
@cindex @code{min}
@@ -2704,7 +2782,7 @@ otherwise.
@cindex @code{inside}
@item pair inside(path p, pen fillrule=currentpen);
-returns an arbitrary point strictly inside a cyclic path @code{p}
+returns an arbitrary point strictly inside a nondegenerate cyclic path @code{p}
according to the fill rule @code{fillrule} (@pxref{fillrule}).
@cindex @code{strokepath}
@@ -3100,13 +3178,22 @@ pen basealign=basealign(1);
@end verbatim
@noindent
-The default setting, @code{nobasealign},which may be changed with
+The default setting, @code{nobasealign}, which may be changed with
@code{defaultpen(pen)}, causes the label alignment routines to use the
full label bounding box for alignment. In contrast, @code{basealign}
requests that the @TeX{} baseline be respected.
The base align setting of a pen is returned by
@code{int basealign(pen p=currentpen)}.
+For example, in the following image, the baselines of green @math{\pi} and
+@math{\gamma} are aligned, while the bottom border of red @math{-\pi}
+and @math{-\gamma} are aligned.
+@verbatiminclude basealign.asy
+@sp 1
+@center @image{./basealign}
+
+Another method for aligning baselines is provided by the @code{baseline} function (@pxref{baseline}).
+
@cindex @code{fontsize}
@cindex @code{lineskip}
@cindex @code{defaultpen}
@@ -3173,7 +3260,6 @@ pen ZapfDingbats(string series="m", string shape="n");
@item Starting with the 2018/04/01 release, @LaTeX{} takes UTF-8 as
the new default input encoding. However, you can still set different input
encoding (so as the font, font encoding or even language context).
-@noindent
@cindex Cyrillic
@cindex Russian
Here is an example for @code{cp1251} and Russian language in Cyrillic script
@@ -3225,7 +3311,7 @@ as described in
Since @code{PostScript} does not support transparency, this feature is
only effective with the @code{-f pdf} output format option; other
formats can be produced from the resulting @acronym{PDF} file with the
-@code{ImageMagick} @code{convert} program.
+@code{ImageMagick} @code{magick} program.
Labels are always drawn with an @code{opacity} of 1.
A simple example of transparent filling is provided in the example file
@code{@uref{https://asymptote.sourceforge.io/gallery/transparency.svg,,transparency}@uref{https://asymptote.sourceforge.io/gallery/transparency.asy,,.asy}}.
@@ -3300,7 +3386,7 @@ the pen attribute @code{overwrite}, which takes a single argument:
@cindex @code{Allow}
@cindex @code{defaultpen}
@item Allow
-Allow labels to overwrite one another. This is the default behaviour (unless
+Allow labels to overwrite one another. This is the default behavior (unless
overridden with @code{defaultpen(pen)}.
@cindex @code{Suppress}
@@ -3404,7 +3490,7 @@ The function @code{bool isometry(transform t)} can be used to test if @code{t}
is an isometry (preserves distance).
-@node Frames and pictures, Files, Transforms, Programming
+@node Frames and pictures
@section Frames and pictures
@table @code
@@ -3440,24 +3526,6 @@ A frame obtained by aligning frame @code{f} in the direction
frame align(frame f, pair align);
@end verbatim
-@cindex @code{box}
-@cindex @code{ellipse}
-@anchor{envelope}
-@cindex @code{envelope}
-To draw or fill a box or ellipse around a label or frame and return the
-boundary as a path, use one of the predefined @code{envelope} routines
-@verbatim
-path box(frame f, Label L="", real xmargin=0,
- real ymargin=xmargin, pen p=currentpen,
- filltype filltype=NoFill, bool above=true);
-path roundbox(frame f, Label L="", real xmargin=0,
- real ymargin=xmargin, pen p=currentpen,
- filltype filltype=NoFill, bool above=true);
-path ellipse(frame f, Label L="", real xmargin=0,
- real ymargin=xmargin, pen p=currentpen,
- filltype filltype=NoFill, bool above=true);
-@end verbatim
-
@item picture
@cindex @code{picture}
Pictures are high-level structures (@pxref{Structures}) defined in
@@ -3571,7 +3639,7 @@ To rotate the page by @math{-90} degrees, use the orientation @code{Seascape}.
The orientation @code{UpsideDown} rotates the page by 180 degrees.
@cindex subpictures
-@cindex @code{fit}
+@cindex @code{picture.fit}
A picture @code{pic} can be explicitly fit to a frame by calling
@verbatim
frame pic.fit(real xsize=pic.xsize, real ysize=pic.ysize,
@@ -3580,13 +3648,14 @@ frame pic.fit(real xsize=pic.xsize, real ysize=pic.ysize,
The default size and aspect ratio settings are those given to the
@code{size} command (which default to @code{0}, @code{0}, and
@code{true}, respectively).
-@cindex @code{calculateTransform}
+@cindex @code{picture.calculateTransform}
The transformation that would currently be used to fit a picture
@code{pic} to a frame is returned by the member function
@code{pic.calculateTransform()}.
In certain cases (e.g.@ 2D graphs) where only an approximate size
estimate for @code{pic} is available, the picture fitting routine
+@cindex @code{picture.scale}
@verbatim
frame pic.scale(real xsize=this.xsize, real ysize=this.ysize,
bool keepAspect=this.keepAspect);
@@ -3603,6 +3672,7 @@ frame bbox(picture pic=currentpicture, real xmargin=0,
real ymargin=xmargin, pen p=currentpen,
filltype filltype=NoFill);
@end verbatim
+@cindex @code{filltype}
@anchor{filltype}
Here @code{filltype} specifies one of the following fill types:
@table @code
@@ -3730,10 +3800,9 @@ as a single entity (@pxref{GUI}), @code{filltype} requests optional
background filling or clipping, and @code{above} specifies
whether to add @code{src} above or below existing objects.
-There are also routines to add a picture or frame @code{src} specified
-in postscript coordinates to another picture @code{dest} (or
-@code{currentpicture}) about the user coordinate
-@code{position}:
+There are also routines to add a fixed-size picture or frame
+@code{src} to another picture @code{dest} (or @code{currentpicture})
+about the user coordinate @code{position}:
@anchor{add about}
@cindex @code{add}
@cindex picture alignment
@@ -3844,7 +3913,109 @@ that can be used for importing @code{LaTeX} packages.
@end table
-@node Files, Variable initializers, Frames and pictures, Programming
+@node Deferred drawing
+@section Deferred drawing
+It is sometimes desirable to have elements of a fixed absolute size,
+independent of the picture scaling from user to
+@code{PostScript} coordinates.
+For example, normally one would want the size of a dot created with
+@code{dot}, the size of the arrowheads created with @code{arrow}
+(@pxref{arrows}), and labels to be drawn independent of the scaling.
+
+However, because of @code{Asymptote}'s automatic scaling feature (@pxref{Figure size}),
+the translation between user coordinate and @code{PostScript} coordinate
+is not determined until shipout time:
+@verbatim
+size(1cm);
+dot((0,0));
+dot((1,1));
+shipout("x"); // at this point, 1 unit coordinate = 1cm
+dot((2,2));
+shipout("y"); // at this point, 1 unit coordinate = 0.5cm
+@end verbatim
+@noindent
+It is therefore necessary to defer the drawing of these elements until shipout time.
+
+For example, a frame can be added at a specified user coordinate of a
+picture with the deferred drawing routine
+@code{add(picture dest=currentpicture, frame src, pair position)}:
+@verbatim
+frame f;
+fill(f,circle((0,0),1.5pt));
+add(f,position=(1,1),align=(0,0));
+@end verbatim
+
+@cindex @code{picture.add}
+@cindex @code{drawer}
+
+A deferred drawing routine is an object of type @code{drawer},
+which is a function with signature @code{void(frame f, transform t)}.
+For example, if the drawing routine
+@verbatim
+void d(frame f, transform t){
+ fill(f,shift(3cm,0)*circle(t*(1,1),2pt));
+}
+@end verbatim
+@noindent
+is added to @code{currentpicture} with
+@verbatim
+currentpicture.add(d);
+@end verbatim
+@noindent
+a filled circle of radius 2pt will be drawn on currentpicture centered
+3cm to the right of user coordinate @code{(1,1)}. The parameter @code{t} is the
+affine transformation from user coordinates to @code{PostScript} coordinates.
+
+Even though the actual drawing is deferred, you still need to specify to the
+@code{Asymptote} scaling routines that ultimately a fixed-size circle
+of radius 2pt will be drawn 3cm to the right of user-coordinate (1,1),
+by adding a frame about (1,1) that extends beyond (1,1) from
+@code{(3cm-2pt,-2pt)+min(currentpen)} to
+@code{(3cm+2pt,2pt)+max(currentpen)}, where we have even
+accounted for the pen linewidth. The following example will then
+produce a @acronym{PDF} file 10 cm wide:
+
+@cindex @code{picture.addPoint}
+@verbatim
+settings.outformat="pdf";
+size(10cm);
+dot((0,0));
+dot((1,1),red);
+add(new void(frame f, transform t) {
+ fill(f,shift(3cm,0)*circle(t*(1,1),2pt));
+});
+pair trueMin=(3cm-2pt,-2pt)+min(currentpen);
+pair trueMax=(3cm+2pt,2pt)+max(currentpen);
+currentpicture.addPoint((1,1),trueMin);
+currentpicture.addPoint((1,1),trueMax);
+@end verbatim
+@noindent
+Here we specified the minimum and maximum user and truesize (fixed)
+coordinates of the drawer with the @code{picture} routine
+@verbatim
+void addPoint(pair user, pair truesize);
+@end verbatim
+@noindent
+Alternatively, one can use
+@verbatim
+void addBox(pair userMin, pair userMax, pair trueMin=0, pair trueMax=0) {
+@end verbatim
+@noindent
+to specify a bounding box
+with bottom-left corner @code{t*(1,1)+trueMin}
+and top-right corner @code{t*(1,1)+trueMax},
+where @code{t} is the transformation that transforms
+from user coordinates to @code{PostScript} coordinates.
+
+For more details about deferred drawing, see
+``Asymptote: A vector graphics language,'' John C. Bowman and Andy
+Hammerlindl, TUGBOAT: The Communications of the TeX Users Group, 29:2,
+288-294 (2008),
+
+@noindent
+@url{https://www.math.ualberta.ca/~bowman/publications/asyTUG.pdf}.
+
+@node Files
@section Files
@cindex @code{file}
@@ -4102,6 +4273,7 @@ rename file @code{from} to file @code{to}.
Unless the @code{-globalwrite} (or @code{-nosafe}) option is enabled,
this operation is restricted to the current directory.
@cindex @code{convert}
+@cindex @code{magick}
@cindex @code{animate}
The functions
@verbatim
@@ -4109,11 +4281,11 @@ int convert(string args="", string file="", string format="");
int animate(string args="", string file="", string format="");
@end verbatim
@noindent
-call the @code{ImageMagick} commands @code{convert} and @code{animate},
+call the @code{ImageMagick} commands @code{magick} and @code{animate},
respectively, with the arguments @code{args} and the file name constructed
from the strings @code{file} and @code{format}.
-@node Variable initializers, Structures, Files, Programming
+@node Variable initializers
@section Variable initializers
@cindex variable initializers
@cindex @code{operator init}
@@ -4262,7 +4434,7 @@ That is, after the definition of a structure @code{T}, a variable of
type @code{T} is initialized to a new instance (@code{new T}) by
default. During the definition of the structure, however, variables
of type @code{T} are initialized to @code{null} by default. This
-special behaviour is to avoid infinite recursion of creating new
+special behavior is to avoid infinite recursion of creating new
instances in code such as
@verbatim
struct tree {
@@ -4328,59 +4500,8 @@ Creating a new Person is a chore; it takes three lines to create a new instance
and to initialize its fields (that's still considerably less effort than
creating a new person in real life, though).
-We can reduce the work by defining a constructor function
-@code{Person(string,string)}:
-@verbatim
-struct Person {
- string firstname;
- string lastname;
-
- static Person Person(string firstname, string lastname) {
- Person p=new Person;
- p.firstname=firstname;
- p.lastname=lastname;
- return p;
- }
-}
-
-Person joe=Person.Person("Joe", "Jones");
-@end verbatim
-
-While it is now easier than before to create a new instance, we still
-have to refer to the constructor by the qualified name
-@code{Person.Person}. If we add the line
-@verbatim
-from Person unravel Person;
-@end verbatim
-@noindent
-immediately after the structure definition, then the constructor can be used
-without qualification: @code{Person joe=Person("Joe", "Jones");}.
-
-The constructor is now easy to use, but it is quite a hassle to define. If you
-write a lot of constructors, you will find that you are repeating a lot of code
-in each of them. Fortunately, your friendly neighbourhood Asymptote
-developers have devised a way to automate much of the process.
-
+We can reduce the work by defining @code{operator init}:
@cindex @code{operator init}
-If, in the body of a structure, Asymptote encounters the definition of
-a function of the form @code{void operator init(@var{args})}, it implicitly
-defines a constructor function of the arguments @code{@var{args}} that
-uses the @code{void operator init} function to initialize a
-new instance of the structure.
-That is, it essentially defines the following constructor (assuming the
-structure is called @code{Foo}):
-
-@example
-static Foo Foo(@var{args}) @{
- Foo instance=new Foo;
- instance.operator init(@var{args});
- return instance;
-@}
-@end example
-
-This constructor is also implicitly copied to the enclosing scope after the end
-of the structure definition, so that it can used subsequently without qualifying
-it by the structure name. Our @code{Person} example can thus be implemented as:
@verbatim
struct Person {
string firstname;
@@ -4401,26 +4522,6 @@ confused with its use to define default values for variables
first case, the return type of the @code{operator init} must be @code{void}
while in the second, it must be the (non-@code{void}) type of the variable.
-@cindex @code{cputime}
-The function @code{cputime()}
-returns a structure @code{cputime} with cumulative @acronym{CPU} times
-broken down into the fields @code{parent.user}, @code{parent.system},
-@code{child.user}, and @code{child.system}, along with the cumulative
-wall clock time in @code{parent.clock}, all measured in seconds.
-For convenience, the incremental fields @code{change.user},
-@code{change.system}, and @code{change.clock} indicate the change in
-the corresponding fields since the last call to @code{cputime()}. The
-function
-@verbatim
-void write(file file=stdout, string s="", cputime c,
- string format=cputimeformat, suffix suffix=none);
-@end verbatim
-@noindent
-displays the incremental user cputime followed by ``u'',
-the incremental system cputime followed by ``s'',
-the total user cputime followed by ``U'', and
-the total system cputime followed by ``S''.
-
@cindex inheritance
@cindex virtual functions
Much like in C++, casting (@pxref{Casts}) provides for an elegant
@@ -5228,6 +5329,58 @@ If the iteration fails after the maximum allowed number of loops
@item @code{real simpson(real f(real), real a, real b, real acc=realEpsilon, real dxmax=b-a)}
returns the integral of @code{f} from @code{a} to @code{b} using adaptive Simpson integration.
+Internally, @code{operator init} implicitly defines a constructor function
+@code{Person(string,string)} as follows, where @var{args} is
+@code{string firstname, string lastname} in this case:
+@example
+struct Person @{
+ string firstname;
+ string lastname;
+
+ static Person Person(@var{args}) @{
+ Person p=new Person;
+ p.operator init(@var{args});
+ return p;
+ @}
+@}
+@end example
+@noindent
+which then can be used as:
+@verbatim
+Person joe=Person.Person("Joe", "Jones");
+@end verbatim
+
+The following is also implicitly generated in the enclosing scope,
+after the end of the structure definition.
+@verbatim
+from Person unravel Person;
+@end verbatim
+@noindent
+It allows us to use the constructor without qualification,
+otherwise we would have to refer to the constructor by the qualified name
+@code{Person.Person}.
+
+@cindex @code{cputime}
+@noindent
+@item @code{cputime cputime()}
+returns a structure @code{cputime} with cumulative @acronym{CPU} times
+broken down into the fields @code{parent.user}, @code{parent.system},
+@code{child.user}, and @code{child.system}, along with the cumulative
+wall clock time in @code{parent.clock}, all measured in seconds.
+For convenience, the incremental fields @code{change.user},
+@code{change.system}, and @code{change.clock} indicate the change in
+the corresponding fields since the last call to @code{cputime()}. The
+function
+@verbatim
+void write(file file=stdout, string s="", cputime c,
+ string format=cputimeformat, suffix suffix=none);
+@end verbatim
+@noindent
+displays the incremental user cputime followed by ``u'',
+the incremental system cputime followed by ``s'',
+the total user cputime followed by ``U'', and
+the total system cputime followed by ``S''.
+
@end table
@node Arrays, Casts, Functions, Programming
@@ -6073,7 +6226,6 @@ nonalphanumeric characters, enclose it with quotation marks:
@cindex @acronym{libcurl}
If @code{Asymptote} is compiled with support for @code{libcurl},
the file name can even be a @acronym{URL}:
-@noindent
@code{import "https://raw.githubusercontent.com/vectorgraphics/asymptote/HEAD/doc/axis3.asy" as axis3;}
It is an error if modules import themselves (or each other in a cycle).
@@ -6175,10 +6327,9 @@ access templatedModule(T=string, S=int[], Number=real)
@end verbatim
@noindent
Note that this is actually an @emph{access} command rather than an
-@emph{import} command, so the names of types, functions, etc. would have to be
-stated as e.g. @code{templatedModule_string_int_real.Wrapper_Number} rather than
-just @code{Wrapper_Number} (where @code{Wrapper_Number} is a type defined in
-@code{templatedModule.asy}).
+@emph{import} command, so a type, function, or variable @code{A}
+defined in @code{templatedModule.asy} would need to be accessed
+qualified as @code{templatedModule_string_int_real.A}.
Alternatively, the module could be imported via a command like
@verbatim
@@ -6191,12 +6342,12 @@ This command would automatically rename @code{Wrapper_Number} to
@code{Wrapper_real} and would also allow the use of any @code{operator ==}
overloads defined in the module.
-For more information, see the examples in
-@url{https://github.com/vectorgraphics/asymptote/tree/647b6c5732ec94a48f0f0b2446f02c86888fe7e7/tests/template}.
+Further examples can be found in the @code{tests/template} subdirectory
+of the @code{Asymptote} source directory.
-Issues: Certain standard features of almost any type (such as
-@code{==}, @code{new}, and the ability to call static methods on the type) may
-only be available for type arguments that are builtin or defined in the @code{plain} module.
+Issues: Certain expected operators (such as
+@code{operator ==}) may only be available for type arguments that are
+builtin or defined in module @code{plain}.
@node Static, , Import, Programming
@section Static
@@ -6372,7 +6523,6 @@ An even better method for processing a @code{LaTeX} file with embedded
@noindent
after putting the contents of
@url{https://raw.githubusercontent.com/vectorgraphics/asymptote/HEAD/doc/latexmkrc}
-@noindent
in a file @code{latexmkrc} in the same directory. The command
@verbatim
latexmk -pdf latexusage
@@ -6386,7 +6536,6 @@ To store the figures in a separate directory named @code{asy}, one can define
\def\asydir{asy}
@end verbatim
in @code{latexusage.tex}.
-@noindent
External @code{Asymptote} code can be included with
@cindex @code{asyinclude}
@verbatim
@@ -6442,6 +6591,7 @@ Here now is @code{latexusage.tex}:
@menu
* plain:: Default @code{Asymptote} base file
* simplex:: Linear programming: simplex method
+* simplex2:: Two-variable simplex method
* math:: Extend @code{Asymptote}'s math capabilities
* interpolate:: Interpolation routines
* geometry:: Geometry routines
@@ -6500,9 +6650,15 @@ option to disable this feature.
@section @code{simplex}
@cindex @code{simplex}
@cindex @code{deferred drawing}
-This module solves the two-variable linear programming problem using the
-simplex method. It is used by the module @code{plain} for automatic
-sizing of pictures.
+This module solves the general linear programming problem using the
+simplex method.
+
+@node simplex2, math, plain, Base modules
+@section @code{simplex2}
+@cindex @code{simplex2}
+@cindex @code{deferred drawing}
+This module solves a special case of the two-variable linear programming
+problem used by the module @code{plain} for automatic sizing of pictures.
@node math, interpolate, simplex, Base modules
@section @code{math}
@@ -6763,13 +6919,13 @@ sharp corners of paths, as illustrated in the example file @code{@uref{https://a
@node animation, embed, roundedpath, Base modules
@section @code{animation}
@cindex @code{animation}
-@cindex @code{convert}
+@cindex @code{magick}
@cindex animation
@cindex @code{ImageMagick}
This module allows one to generate animations, as illustrated by the
files @code{@uref{https://asymptote.sourceforge.io/gallery/animations/wheel.gif,,wheel}@uref{https://asymptote.sourceforge.io/gallery/animations/wheel.asy,,.asy}}, @code{@uref{https://asymptote.sourceforge.io/gallery/animations/wavepacket.gif,,wavepacket}@uref{https://asymptote.sourceforge.io/gallery/animations/wavepacket.asy,,.asy}}, and @code{@uref{https://asymptote.sourceforge.io/gallery/animations/cube.gif,,cube}@uref{https://asymptote.sourceforge.io/gallery/animations/cube.asy,,.asy}} in
the @code{animations} subdirectory of the examples directory. These
-animations use the @code{ImageMagick} @code{convert} program to
+animations use the @code{ImageMagick} @code{magick} program to
merge multiple images into a @acronym{GIF} or @acronym{MPEG}
movie.
@@ -6780,7 +6936,6 @@ module, generates higher-quality portable clickable @acronym{PDF} movies, with
optional controls. This requires installing the module
@quotation
@url{http://mirror.ctan.org/macros/latex/contrib/animate/animate.sty}
-@noindent
@end quotation
@noindent
(version 2007/11/30 or later) in a new directory @code{animate} in the
@@ -8043,7 +8198,7 @@ light nolight;
@cindex @code{transparent}
The @code{currentlight.background} (or @code{background} member of the
specified @code{light}) can be used
-to set the background colour for 2D (or 3D) images. The default
+to set the background color for 2D (or 3D) images. The default
background is white for @code{HTML} images and transparent for all
other formats. One can request a completely transparent background for
3D @code{WebGL} images with
@@ -8949,7 +9104,6 @@ functions in @code{graph.asy}.
@cindex @code{xaxis3}
@cindex @code{yaxis3}
@cindex @code{zaxis3}
-@noindent
To draw an @math{x} axis in three dimensions, use the routine
@verbatim
void xaxis3(picture pic=currentpicture, Label L="", axis axis=YZZero,
@@ -9194,7 +9348,7 @@ depends of the relative time.
The casting of @code{path} to @code{coloredpath} allows the
use of a @code{path} instead of a @code{coloredpath}; in this case the
-shading behaviour is the default shading behavior for a surface.
+shading behavior is the default shading behavior for a surface.
An example of @code{tube} is provided in the file
@code{@uref{https://asymptote.sourceforge.io/gallery/3Dwebgl/trefoilknot.html,,trefoilknot}@uref{https://asymptote.sourceforge.io/gallery/3Dwebgl/trefoilknot.asy,,.asy}}. Further examples can be found at
@@ -9602,7 +9756,7 @@ settings.autoplain=true;
at the beginning of the configuration file, it can contain arbitrary
@code{Asymptote} code.
-@cindex @code{convert}
+@cindex @code{magick}
@cindex @code{output}
@cindex @code{format}
@cindex @code{ImageMagick}
@@ -9619,7 +9773,7 @@ at the beginning of the configuration file, it can contain arbitrary
@cindex @code{EPS}
@cindex @code{PDF}
@anchor{texengines}
-@anchor{convert}
+@anchor{magick}
The default output format is @acronym{EPS} for the (default)
@code{latex} and @code{tex} tex engine and @acronym{PDF} for the
@code{pdflatex}, @code{xelatex}, @code{context}, @code{luatex}, and
@@ -9638,20 +9792,18 @@ which can display @acronym{SVG} output (used by the
with the default setting @code{settings.dvisvgmOptions="--optimize"}.
@code{Asymptote} can also produce any output format supported
-by the @code{ImageMagick} @code{convert} program (version 6.3.5 or
-later recommended; an @code{Invalid Parameter} error message indicates
-that the @code{MSDOS} utility @code{convert} is being used instead of
-the one that comes with @code{ImageMagick}).
+by the @code{ImageMagick} @code{magick} program (version 7 or
+later.
The optional setting @code{-render n} requests
an output resolution of @code{n} pixels per @code{bp}. Antialiasing is
controlled by the parameter @code{antialias}, which by default
specifies a sampling width of 2 pixels.
-To give other options to @code{convert}, use the
-@code{convertOptions} setting or call convert manually. This example
+To give other options to @code{magick}, use the
+@code{convertOptions} setting or call @code{magick convert} manually. This example
emulates how @code{Asymptote} produces antialiased @code{tiff} output at
one pixel per @code{bp}:
@verbatim
-asy -o - venn | convert -alpha Off -density 144x144 -geometry 50%x eps:- venn.tiff
+asy -o - venn | magick convert -alpha Off -density 144x144 -geometry 50%x eps:- venn.tiff
@end verbatim
@cindex @code{nosafe}
@@ -10006,9 +10158,9 @@ available from @url{https://sourceforge.net/projects/pstoedit/}) includes an
@code{Asymptote} backend. Unlike virtually all other @code{pstoedit}
backends, this driver includes native clipping, even-odd fill rule,
@code{PostScript} subpath, and full image support. Here is an example:
+
@noindent
@code{asy -V @value{Datadir}/doc/asymptote/examples/venn.asy}
-@noindent
@verbatim
pstoedit -f asy venn.eps test.asy
asy -V test
@@ -10219,7 +10371,7 @@ developed the @code{Asymptote Web Application} hosted at
@c LocalWords: MetaPost MetaFont Hammerlindl Healy texinfo autoload setq setf
@c LocalWords: printindex setfilename settitle dircategory direntry titlepage
@c LocalWords: vskip filll insertcopying ifnottex detailmenu alist augroup PQ
-@c LocalWords: bool behaviour facto zxf login Debian dev filetypedetect
+@c LocalWords: bool behavior facto zxf login Debian dev filetypedetect
@c LocalWords: FFTW bp readline gv eps args Boehm gc evenoddoverlap png joe
@c LocalWords: boolean initializer expi dir xpart ypart STL substring rfind
@c LocalWords: pos substr strftime typedef pxref unitcircle yscale Bezier iff
diff --git a/graphics/asymptote/examples/basealign.asy b/graphics/asymptote/doc/basealign.asy
index d653ec3c04..d653ec3c04 100644
--- a/graphics/asymptote/examples/basealign.asy
+++ b/graphics/asymptote/doc/basealign.asy
diff --git a/graphics/asymptote/doc/png/asymptote.info b/graphics/asymptote/doc/png/asymptote.info
index be3ab4d28a..672c1369bd 100644
--- a/graphics/asymptote/doc/png/asymptote.info
+++ b/graphics/asymptote/doc/png/asymptote.info
@@ -1,7 +1,7 @@
-This is asymptote.info, produced by makeinfo version 7.0.2 from
+This is asymptote.info, produced by makeinfo version 7.1 from
asymptote.texi.
-This file documents ‘Asymptote’, version 2.89.
+This file documents ‘Asymptote’, version 2.90.
<https://asymptote.sourceforge.io>
@@ -22,7 +22,7 @@ File: asymptote.info, Node: Top, Next: Description, Prev: (dir), Up: (dir)
Asymptote
*********
-This file documents ‘Asymptote’, version 2.89.
+This file documents ‘Asymptote’, version 2.90.
<https://asymptote.sourceforge.io>
@@ -53,7 +53,7 @@ This file documents ‘Asymptote’, version 2.89.
* Credits:: Contributions and acknowledgments
* Index:: General index
- — The Detailed Node Listing —
+ -- The Detailed Node Listing --
Installation
@@ -65,6 +65,7 @@ Installation
* Compiling from UNIX source:: Building ‘Asymptote’ from scratch
* Editing modes:: Convenient ‘emacs’ and ‘vim’ modes
* Git:: Getting the latest development source
+* Building the documentation:: Building the documentation
* Uninstall:: Goodbye, ‘Asymptote’!
Tutorial
@@ -89,6 +90,7 @@ Programming
* Pens:: Colors, line types, line widths, font sizes
* Transforms:: Affine transforms
* Frames and pictures:: Canvases for immediate and deferred drawing
+* Deferred drawing:: Witholding drawing until all data is available
* Files:: Reading and writing your data
* Variable initializers:: Initialize your variables
* Structures:: Organize your data
@@ -125,7 +127,8 @@ Base modules
* plain:: Default ‘Asymptote’ base file
* simplex:: Linear programming: simplex method
-* math:: Extend ‘Asymptote’’s math capabilities
+* simplex2:: Two-variable simplex method
+* math:: Extend ‘Asymptote’'s math capabilities
* interpolate:: Interpolation routines
* geometry:: Geometry routines
* trembling:: Wavy lines
@@ -280,6 +283,7 @@ File: asymptote.info, Node: Installation, Next: Tutorial, Prev: Description,
* Compiling from UNIX source:: Building ‘Asymptote’ from scratch
* Editing modes:: Convenient ‘emacs’ and ‘vim’ modes
* Git:: Getting the latest development source
+* Building the documentation:: Building the documentation
* Uninstall:: Goodbye, ‘Asymptote’!
After following the instructions for your specific distribution, please
@@ -312,7 +316,7 @@ dnf --enablerepo=rawhide install asymptote
To install the latest version of ‘Asymptote’ on a Debian-based
distribution (e.g. Ubuntu, Mepis, Linspire) follow the instructions for
compiling from ‘UNIX’ source (*note Compiling from UNIX source::).
-Alternatively, Debian users can install one of Hubert Chan’s prebuilt
+Alternatively, Debian users can install one of Hubert Chan's prebuilt
‘Asymptote’ binaries from
<http://ftp.debian.org/debian/pool/main/a/asymptote>
@@ -358,7 +362,7 @@ PDF’ available from <https://www.sumatrapdfreader.org/>.
<https://www.imagemagick.org/script/binary-releases.php>
is required to support output formats other than HTML, PDF, SVG, and PNG
-(*note convert::). The ‘Python 3’ interpreter from
+(*note magick::). The ‘Python 3’ interpreter from
<https://www.python.org> is only required if you wish to try out the
graphical user interface (*note GUI::).
@@ -483,7 +487,7 @@ in the order listed:
by ‘:’ under UNIX and ‘;’ under ‘MSDOS’);
3. The directory specified by the environment variable
‘ASYMPTOTE_HOME’; if this variable is not set, the directory ‘.asy’
- in the user’s home directory (‘%USERPROFILE%\.asy’ under ‘MSDOS’)
+ in the user's home directory (‘%USERPROFILE%\.asy’ under ‘MSDOS’)
is used;
4. The ‘Asymptote’ system directory (by default,
‘/usr/local/share/asymptote’ under ‘UNIX’ and ‘C:\Program
@@ -559,7 +563,7 @@ able to take Fourier transforms of data (say, to compute an audio power
spectrum). The ‘GSL’ library is only required if you require the
special functions that it supports.
- If you don’t want to install ‘Asymptote’ system wide, just make sure
+ If you don't want to install ‘Asymptote’ system wide, just make sure
the compiled binary ‘asy’ and GUI script ‘xasy’ are in your path and set
the configuration variable ‘dir’ to point to the directory ‘base’ (in
the top level directory of the ‘Asymptote’ source code).
@@ -606,7 +610,7 @@ au BufNewFile,BufRead *.asy setf asy
augroup END
filetype plugin on
- If any of these directories or files don’t exist, just create them.
+ If any of these directories or files don't exist, just create them.
To set ‘vim’ up to run the current asymptote script using ‘:make’ just
add to ‘~/.vim/ftplugin/asy.vim’:
setlocal makeprg=asy\ %
@@ -639,10 +643,27 @@ dependencies:
apt-get build-dep asymptote

+File: asymptote.info, Node: Building the documentation, Next: Uninstall, Prev: Git, Up: Installation
+
+2.9 Building the documentation
+==============================
+
+Here are instructions for building the documentation:
+cd doc
+make # for both the PDF version doc/asymptote.pdf and the HTML version
+cd png
+make # for the HTML version only: doc/png/index.html
+ Note that the ‘HTML’ version cannot be built without executing ‘make’
+from ‘doc’ folder first.
+
+ The ‘asy’ executable is required for compiling the diagrams in the
+documentation.
+
+
File: asymptote.info, Node: Uninstall, Prev: Git, Up: Installation
-2.9 Uninstall
-=============
+2.10 Uninstall
+==============
To uninstall a ‘Linux x86_64’ binary distribution, use the commands
tar -zxvf asymptote-x.xx.x86_64.tgz | xargs --replace=% rm /%
@@ -711,12 +732,13 @@ File: asymptote.info, Node: Drawing in interactive mode, Next: Figure size, P
Another method is _interactive mode_, where ‘Asymptote’ reads individual
commands as they are entered by the user. To try this out, enter
-‘Asymptote’’s interactive mode by clicking on the ‘Asymptote’ icon or
+‘Asymptote’'s interactive mode by clicking on the ‘Asymptote’ icon or
typing the command ‘asy’. Then type
draw((0,0)--(100,100));
-followed by ‘Enter’, to obtain the above image. At this point you can
-type further ‘draw’ commands, which will be added to the displayed
-figure, ‘erase’ to clear the canvas,
+followed by ‘Enter’, to obtain the above image.
+
+ At this point you can type further ‘draw’ commands, which will be
+added to the displayed figure, ‘erase’ to clear the canvas,
input test;
to execute all of the commands contained in the file ‘test.asy’, or
‘quit’ to exit interactive mode. You can use the arrow keys in
@@ -871,7 +893,7 @@ File: asymptote.info, Node: Drawing commands, Next: Bezier curves, Prev: Tuto
4 Drawing commands
******************
-All of ‘Asymptote’’s graphical capabilities are based on four primitive
+All of ‘Asymptote’'s graphical capabilities are based on four primitive
commands. The three ‘PostScript’ drawing commands ‘draw’, ‘fill’, and
‘clip’ add objects to a picture in the order in which they are executed,
with the most recently drawn object appearing on top. The labeling
@@ -925,8 +947,8 @@ convenience, the arguments ‘arrow’ and ‘bar’ may be specified in either
order. The argument ‘legend’ is a Label to use in constructing an
optional legend entry.
- Bars are useful for indicating dimensions. The possible values of
-‘bar’ are ‘None’, ‘BeginBar’, ‘EndBar’ (or equivalently ‘Bar’), and
+ Bars ‘bar’ are useful for indicating dimensions. The possible values
+of ‘bar’ are ‘None’, ‘BeginBar’, ‘EndBar’ (or equivalently ‘Bar’), and
‘Bars’ (which draws a bar at both ends of the path). Each of these bar
specifiers (except for ‘None’) will accept an optional real argument
that denotes the length of the bar in ‘PostScript’ coordinates. The
@@ -935,37 +957,71 @@ default bar length is ‘barsize(pen)’.
The possible values of ‘arrow’ are ‘None’, ‘Blank’ (which draws no
arrows or path), ‘BeginArrow’, ‘MidArrow’, ‘EndArrow’ (or equivalently
‘Arrow’), and ‘Arrows’ (which draws an arrow at both ends of the path).
-All of the arrow specifiers except for ‘None’ and ‘Blank’ may be given
-the optional arguments arrowhead ‘arrowhead’ (one of the predefined
-arrowhead styles ‘DefaultHead’, ‘SimpleHead’, ‘HookHead’, ‘TeXHead’),
-real ‘size’ (arrowhead size in ‘PostScript’ coordinates), real ‘angle’
-(arrowhead angle in degrees), filltype ‘filltype’ (one of ‘FillDraw’,
-‘Fill’, ‘NoFill’, ‘UnFill’, ‘Draw’) and (except for ‘MidArrow’ and
-‘Arrows’) a real ‘position’ (in the sense of ‘point(path p, real t)’)
-along the path where the tip of the arrow should be placed. The default
-arrowhead size when drawn with a pen ‘p’ is ‘arrowsize(p)’. There are
-also arrow versions with slightly modified default values of ‘size’ and
-‘angle’ suitable for curved arrows: ‘BeginArcArrow’, ‘EndArcArrow’ (or
-equivalently ‘ArcArrow’), ‘MidArcArrow’, and ‘ArcArrows’.
-
- Margins can be used to shrink the visible portion of a path by
-‘labelmargin(p)’ to avoid overlap with other drawn objects. Typical
-values of ‘margin’ are ‘NoMargin’, ‘BeginMargin’, ‘EndMargin’ (or
-equivalently ‘Margin’), and ‘Margins’ (which leaves a margin at both
-ends of the path). One may use ‘Margin(real begin, real end=begin)’ to
-specify the size of the beginning and ending margin, respectively, in
-multiples of the units ‘labelmargin(p)’ used for aligning labels.
-Alternatively, ‘BeginPenMargin’, ‘EndPenMargin’ (or equivalently
-‘PenMargin’), ‘PenMargins’, ‘PenMargin(real begin, real end=begin)’
-specify a margin in units of the pen line width, taking account of the
-pen line width when drawing the path or arrow. For example, use
-‘DotMargin’, an abbreviation for
-‘PenMargin(-0.5*dotfactor,0.5*dotfactor)’, to draw from the usual
-beginning point just up to the boundary of an end dot of width
-‘dotfactor*linewidth(p)’. The qualifiers ‘BeginDotMargin’,
-‘EndDotMargin’, and ‘DotMargins’ work similarly. The qualifier
-‘TrueMargin(real begin, real end=begin)’ allows one to specify a margin
-directly in ‘PostScript’ units, independent of the pen line width.
+
+ There are also arrow versions with slightly modified default values
+of ‘size’ and ‘angle’ suitable for curved arrows: ‘BeginArcArrow’,
+‘EndArcArrow’ (or equivalently ‘ArcArrow’), ‘MidArcArrow’, and
+‘ArcArrows’.
+
+ For example:
+draw((0,0)--(1,1),arrow=Arrows);
+
+ All of the arrow specifiers except for ‘None’ and ‘Blank’ may be
+given optional arguments, for example:
+draw((0,0)--(1,1),arrow=Arrow(
+ arrowhead=HookHead,size=3mm,angle=20,filltype=Draw,position=0.9));
+
+ The function ‘Arrow’ has the signature
+arrowbar Arrow(arrowhead arrowhead=DefaultHead,
+ real size=0, real angle=arrowangle,
+ filltype filltype=null, position position=EndPoint)
+Calling ‘Arrow()’ returns ‘Arrow’, which is an ‘arrowbar’ object. The
+parameters are:
+
+ • ‘arrowhead’ can be one of the predefined arrowhead styles
+ ‘DefaultHead’, ‘SimpleHead’, ‘HookHead’, ‘TeXHead’.
+ • real ‘size’ is the arrowhead size in ‘PostScript’ coordinates.
+
+ The default arrowhead size when drawn with a pen ‘p’ is
+ ‘arrowsize(p)’.
+ • real ‘angle’ is the arrowhead angle in degrees.
+
+ • filltype ‘filltype’ (*note filltype::),
+ • (except for ‘MidArrow’ and ‘Arrows’) real ‘position’ (in the sense
+ of ‘point(path p, real t)’) along the path where the tip of the
+ arrow should be placed.
+
+ Margins ‘margin’ can be used to shrink the visible portion of a path
+by ‘labelmargin(p)’ to avoid overlap with other drawn objects.
+
+ Typical values of ‘margin’ are:
+‘NoMargin’
+‘BeginMargin’
+‘EndMargin’
+ (equivalently ‘Margin’)
+‘Margins’
+ leaves a margin at both ends of the path.
+‘Margin(real begin, real end=begin)’
+ specify the size of the beginning and ending margin, respectively,
+ in multiples of the units ‘labelmargin(p)’ used for aligning
+ labels.
+‘BeginPenMargin’
+‘EndPenMargin’
+ (equivalently ‘PenMargin’)
+‘PenMargins’
+‘PenMargin(real begin, real end=begin)’
+ specify a margin in units of the pen line width, taking account of
+ the pen line width when drawing the path or arrow.
+‘DotMargin’
+ an abbreviation for ‘PenMargin(-0.5*dotfactor,0.5*dotfactor)’, used
+ to draw from the usual beginning point just up to the boundary of
+ an end dot of width ‘dotfactor*linewidth(p)’.
+‘BeginDotMargin’
+‘DotMargins’
+ work similarly.
+‘TrueMargin(real begin, real end=begin)’
+ specify a margin directly in ‘PostScript’ units, independent of the
+ pen line width.
The use of arrows, bars, and margins is illustrated by the examples
‘Pythagoras.asy’ and ‘sqrtx01.asy’.
@@ -1170,9 +1226,16 @@ void label(picture pic=currentpicture, Label L, pair position,
Draw Label ‘L’ on picture ‘pic’ using pen ‘p’. If ‘align’ is
‘NoAlign’, the label will be centered at user coordinate ‘position’;
otherwise it will be aligned in the direction of ‘align’ and displaced
-from ‘position’ by the ‘PostScript’ offset ‘align*labelmargin(p)’. The
-constant ‘Align’ can be used to align the bottom-left corner of the
-label at ‘position’. The Label ‘L’ can either be a string or the
+from ‘position’ by the ‘PostScript’ offset ‘align*labelmargin(p)’.
+
+ Here, ‘real labelmargin(pen p=currentpen)’ is a quantity used to
+align labels. In the code below,
+label("abcdefg",(0,0),align=up,basealign);
+the baseline of the label will be exactly ‘labelmargin(currentpen)’
+‘PostScript’ units above the center.
+
+ The constant ‘Align’ can be used to align the bottom-left corner of
+the label at ‘position’. The Label ‘L’ can either be a string or the
structure obtained by calling one of the functions
Label Label(string s="", pair position, align align=NoAlign,
pen p=nullpen, embed embed=Rotate, filltype filltype=NoFill);
@@ -1249,9 +1312,11 @@ label(graphic("file.eps","width=1cm"),(0,0),NE);
layer();
The ‘string baseline(string s, string template="\strut")’ function
-can be used to enlarge the bounding box of labels to match a given
+can be used to enlarge the bounding box of a label to match a given
template, so that their baselines will be typeset on a horizontal line.
-See ‘Pythagoras.asy’ for an example.
+See ‘Pythagoras.asy’ for an example. Alternatively, the pen ‘basealign’
+may be used to force labels to respect the TeX baseline (*note
+basealign::).
One can prevent labels from overwriting one another with the
‘overwrite’ pen attribute (*note overwrite::).
@@ -1260,7 +1325,7 @@ See ‘Pythagoras.asy’ for an example.
frames to be treated in a uniform manner. A group of objects may be
packed together into single frame with the routine
frame pack(pair align=2S ... object inset[]);
-To draw or fill a box (or ellipse or other path) around a Label and
+To draw or fill a box (or ellipse or other path) around a ‘Label’ and
return the bounding object, use one of the routines
object draw(picture pic=currentpicture, Label L, envelope e,
real xmargin=0, real ymargin=xmargin, pen p=currentpen,
@@ -1269,7 +1334,7 @@ object draw(picture pic=currentpicture, Label L, envelope e, pair position,
real xmargin=0, real ymargin=xmargin, pen p=currentpen,
filltype filltype=NoFill, bool above=true);
Here ‘envelope’ is a boundary-drawing routine such as ‘box’, ‘roundbox’,
-or ‘ellipse’ defined in ‘plain_boxes.asy’ (*note envelope::).
+or ‘ellipse’ defined in ‘plain_boxes.asy’.
The function ‘path[] texpath(Label L)’ returns the path array that
TeX would fill to draw the Label ‘L’.
@@ -1347,7 +1412,7 @@ draw((0,0)..controls (0,100) and (100,100)..(100,0));
However, it is usually more convenient to just use the ‘..’ operator,
which tells ‘Asymptote’ to choose its own control points using the
-algorithms described in Donald Knuth’s monograph, The MetaFontbook,
+algorithms described in Donald Knuth's monograph, The MetaFontbook,
Chapter 14. The user can still customize the guide (or path) by
specifying direction, tension, and curl values.
@@ -1398,6 +1463,7 @@ File: asymptote.info, Node: Programming, Next: LaTeX usage, Prev: Bezier curv
* Pens:: Colors, line types, line widths, font sizes
* Transforms:: Affine transforms
* Frames and pictures:: Canvases for immediate and deferred drawing
+* Deferred drawing:: Witholding drawing until all data is available
* Files:: Reading and writing your data
* Variable initializers:: Initialize your variables
* Structures:: Organize your data
@@ -1665,7 +1731,7 @@ user-defined types):
Strings delimited by single quotes (‘'’) have the same mappings as
character strings in ANSI ‘C’:
- • \’ maps to ’
+ • \' maps to '
• \" maps to "
• \? maps to ?
• \\ maps to backslash
@@ -1738,14 +1804,14 @@ user-defined types):
returns a string containing ‘n’ formatted according to the
C-style format string ‘s’ using locale ‘locale’ (or the
current locale if an empty string is specified), following the
- behaviour of the C function ‘fprintf’), except that only one
+ behavior of the C function ‘fprintf’), except that only one
data field is allowed.
‘string format(string s=defaultformat, bool forcemath=false, string s=defaultseparator, real x, string locale="")’
returns a string containing ‘x’ formatted according to the
C-style format string ‘s’ using locale ‘locale’ (or the
current locale if an empty string is specified), following the
- behaviour of the C function ‘fprintf’), except that only one
+ behavior of the C function ‘fprintf’), except that only one
data field is allowed, trailing zeros are removed by default
(unless ‘#’ is specified), and if ‘s’ specifies math mode or
‘forcemath=true’, TeX is used to typeset scientific notation
@@ -1788,7 +1854,7 @@ user-defined types):
seconds(time("%b %d %r %z %Y"),"%b %d %r %z %Y");
seconds(time("%b %d %r %Z %Y"),"%b %d %r "+time("%Z")+" %Y");
1+(seconds()-seconds("Jan 1","%b %d"))/(24*60*60);
- The last example returns today’s ordinal date, measured from
+ The last example returns today's ordinal date, measured from
the beginning of the year.
‘string time(int seconds, string format="%a %b %d %T %Z %Y")’
@@ -2088,7 +2154,7 @@ File: asymptote.info, Node: Paths and guides, Next: Pens, Prev: Data types,
returns the portions of path ‘p’ before and after the ‘n’th
intersection of ‘p’ with path ‘knife’ as a structure ‘slice’
(if no intersection exist is found, the entire path is
- considered to be ‘before’ the intersection):
+ considered to be 'before' the intersection):
struct slice {
path before,after;
}
@@ -2106,7 +2172,7 @@ File: asymptote.info, Node: Paths and guides, Next: Pens, Prev: Data types,
‘path buildcycle(... path[] p);’
This returns the path surrounding a region bounded by a list
of two or more consecutively intersecting paths, following the
- behaviour of the ‘MetaPost buildcycle’ command.
+ behavior of the ‘MetaPost buildcycle’ command.
‘pair min(path p);’
returns the pair (left,bottom) for the path bounding box of
@@ -2139,8 +2205,9 @@ File: asymptote.info, Node: Paths and guides, Next: Pens, Prev: Data types,
otherwise.
‘pair inside(path p, pen fillrule=currentpen);’
- returns an arbitrary point strictly inside a cyclic path ‘p’
- according to the fill rule ‘fillrule’ (*note fillrule::).
+ returns an arbitrary point strictly inside a nondegenerate
+ cyclic path ‘p’ according to the fill rule ‘fillrule’ (*note
+ fillrule::).
‘path[] strokepath(path g, pen p=currentpen);’
returns the path array that ‘PostScript’ would fill in drawing
@@ -2340,7 +2407,7 @@ with one or more color components equal to 1.
definitions of some colors (e.g. ‘Green’) actually disagree.
‘Asymptote’ also comes with a ‘asycolors.sty’ ‘LaTeX’ package that
- defines to ‘LaTeX’ CMYK versions of ‘Asymptote’’s predefined
+ defines to ‘LaTeX’ CMYK versions of ‘Asymptote’'s predefined
colors, so that they can be used directly within ‘LaTeX’ strings.
Normally, such colors are passed to ‘LaTeX’ via a pen argument;
however, to change the color of only a portion of a string, say for
@@ -2442,12 +2509,65 @@ with one or more color components equal to 1.
pen nobasealign=basealign(0);
pen basealign=basealign(1);
- The default setting, ‘nobasealign’,which may be changed with
+ The default setting, ‘nobasealign’, which may be changed with
‘defaultpen(pen)’, causes the label alignment routines to use the
full label bounding box for alignment. In contrast, ‘basealign’
requests that the TeX baseline be respected. The base align
setting of a pen is returned by ‘int basealign(pen p=currentpen)’.
+ For example, in the following image, the baselines of green \pi and
+ \gamma are aligned, while the bottom border of red -\pi and -\gamma
+ are aligned.
+ import fontsize;
+ import three;
+
+ settings.autobillboard=false;
+ settings.embed=false;
+ currentprojection=orthographic(Z);
+
+ defaultpen(fontsize(100pt));
+
+ dot(O);
+
+ label("acg",O,align=N,basealign);
+ label("ace",O,align=N,red);
+ label("acg",O,align=S,basealign);
+ label("ace",O,align=S,red);
+ label("acg",O,align=E,basealign);
+ label("ace",O,align=E,red);
+ label("acg",O,align=W,basealign);
+ label("ace",O,align=W,red);
+
+ picture pic;
+ dot(pic,(labelmargin(),0,0),blue);
+ dot(pic,(-labelmargin(),0,0),blue);
+ dot(pic,(0,labelmargin(),0),blue);
+ dot(pic,(0,-labelmargin(),0),blue);
+ add(pic,O);
+
+ dot((0,0));
+
+ label("acg",(0,0),align=N,basealign);
+ label("ace",(0,0),align=N,red);
+ label("acg",(0,0),align=S,basealign);
+ label("ace",(0,0),align=S,red);
+ label("acg",(0,0),align=E,basealign);
+ label("ace",(0,0),align=E,red);
+ label("acg",(0,0),align=W,basealign);
+ label("ace",(0,0),align=W,red);
+
+ picture pic;
+ dot(pic,(labelmargin(),0),blue);
+ dot(pic,(-labelmargin(),0),blue);
+ dot(pic,(0,labelmargin()),blue);
+ dot(pic,(0,-labelmargin()),blue);
+ add(pic,(0,0));
+
+ [./basealign]
+
+ Another method for aligning baselines is provided by the ‘baseline’
+ function (*note baseline::).
+
• The font size is specified in TeX points (1 pt = 1/72.27 inches)
with the function ‘pen fontsize(real size, real
lineskip=1.2*size)’. The default font size, 12pt, may be changed
@@ -2514,7 +2634,7 @@ with one or more color components equal to 1.
pen opacity(real opacity=1, string blend="Compatible");
The opacity can be varied from ‘0’ (fully transparent) to the
default value of ‘1’ (opaque), and ‘blend’ specifies one of the
- following foreground–background blending operations:
+ following foreground-background blending operations:
"Compatible","Normal","Multiply","Screen","Overlay","SoftLight",
"HardLight","ColorDodge","ColorBurn","Darken","Lighten","Difference",
"Exclusion","Hue","Saturation","Color","Luminosity",
@@ -2523,7 +2643,7 @@ with one or more color components equal to 1.
Since ‘PostScript’ does not support transparency, this feature is
only effective with the ‘-f pdf’ output format option; other
formats can be produced from the resulting PDF file with the
- ‘ImageMagick’ ‘convert’ program. Labels are always drawn with an
+ ‘ImageMagick’ ‘magick’ program. Labels are always drawn with an
‘opacity’ of 1. A simple example of transparent filling is
provided in the example file ‘transparency.asy’.
@@ -2621,7 +2741,7 @@ with one or more color components equal to 1.
‘Allow’
Allow labels to overwrite one another. This is the default
- behaviour (unless overridden with ‘defaultpen(pen)’.
+ behavior (unless overridden with ‘defaultpen(pen)’.
‘Suppress’
Suppress, with a warning, each label that would overwrite
@@ -2685,7 +2805,7 @@ power with the ‘^’ operator.
‘transform scale(real x, real y);’
scale by ‘x’ in the x direction and by ‘y’ in the y direction;
‘transform slant(real s);’
- maps ‘(x,y)’ –> ‘(x+s*y,y)’;
+ maps ‘(x,y)’ -> ‘(x+s*y,y)’;
‘transform rotate(real angle, pair z=(0,0));’
rotates by ‘angle’ in degrees about ‘z’;
‘transform reflect(pair a, pair b);’
@@ -2700,7 +2820,7 @@ respectively. The function ‘bool isometry(transform t)’ can be used to
test if ‘t’ is an isometry (preserves distance).

-File: asymptote.info, Node: Frames and pictures, Next: Files, Prev: Transforms, Up: Programming
+File: asymptote.info, Node: Frames and pictures, Next: Deferred drawing, Prev: Transforms, Up: Programming
6.5 Frames and pictures
=======================
@@ -2724,19 +2844,6 @@ File: asymptote.info, Node: Frames and pictures, Next: Files, Prev: Transform
label::), is returned by
frame align(frame f, pair align);
- To draw or fill a box or ellipse around a label or frame and return
- the boundary as a path, use one of the predefined ‘envelope’
- routines
- path box(frame f, Label L="", real xmargin=0,
- real ymargin=xmargin, pen p=currentpen,
- filltype filltype=NoFill, bool above=true);
- path roundbox(frame f, Label L="", real xmargin=0,
- real ymargin=xmargin, pen p=currentpen,
- filltype filltype=NoFill, bool above=true);
- path ellipse(frame f, Label L="", real xmargin=0,
- real ymargin=xmargin, pen p=currentpen,
- filltype filltype=NoFill, bool above=true);
-
‘picture’
Pictures are high-level structures (*note Structures::) defined in
the module ‘plain’ that provide canvases for drawing in user
@@ -2928,9 +3035,9 @@ File: asymptote.info, Node: Frames and pictures, Next: Files, Prev: Transform
optional background filling or clipping, and ‘above’ specifies
whether to add ‘src’ above or below existing objects.
- There are also routines to add a picture or frame ‘src’ specified
- in postscript coordinates to another picture ‘dest’ (or
- ‘currentpicture’) about the user coordinate ‘position’:
+ There are also routines to add a fixed-size picture or frame ‘src’
+ to another picture ‘dest’ (or ‘currentpicture’) about the user
+ coordinate ‘position’:
void add(picture src, pair position, bool group=true,
filltype filltype=NoFill, bool above=true);
void add(picture dest, picture src, pair position,
@@ -3027,9 +3134,86 @@ File: asymptote.info, Node: Frames and pictures, Next: Files, Prev: Transform
that can be used for importing ‘LaTeX’ packages.

-File: asymptote.info, Node: Files, Next: Variable initializers, Prev: Frames and pictures, Up: Programming
+File: asymptote.info, Node: Deferred drawing, Next: Files, Prev: Frames and pictures, Up: Programming
+
+6.6 Deferred drawing
+====================
+
+It is sometimes desirable to have elements of a fixed absolute size,
+independent of the picture scaling from user to ‘PostScript’
+coordinates. For example, normally one would want the size of a dot
+created with ‘dot’, the size of the arrowheads created with ‘arrow’
+(*note arrows::), and labels to be drawn independent of the scaling.
+
+ However, because of ‘Asymptote’'s automatic scaling feature (*note
+Figure size::), the translation between user coordinate and ‘PostScript’
+coordinate is not determined until shipout time:
+size(1cm);
+dot((0,0));
+dot((1,1));
+shipout("x"); // at this point, 1 unit coordinate = 1cm
+dot((2,2));
+shipout("y"); // at this point, 1 unit coordinate = 0.5cm
+It is therefore necessary to defer the drawing of these elements until
+shipout time.
+
+ For example, a frame can be added at a specified user coordinate of a
+picture with the deferred drawing routine ‘add(picture
+dest=currentpicture, frame src, pair position)’:
+frame f;
+fill(f,circle((0,0),1.5pt));
+add(f,position=(1,1),align=(0,0));
+
+ A deferred drawing routine is an object of type ‘drawer’, which is a
+function with signature ‘void(frame f, transform t)’. For example, if
+the drawing routine
+void d(frame f, transform t){
+ fill(f,shift(3cm,0)*circle(t*(1,1),2pt));
+}
+is added to ‘currentpicture’ with
+currentpicture.add(d);
+a filled circle of radius 2pt will be drawn on currentpicture centered
+3cm to the right of user coordinate ‘(1,1)’. The parameter ‘t’ is the
+affine transformation from user coordinates to ‘PostScript’ coordinates.
+
+ Even though the actual drawing is deferred, you still need to specify
+to the ‘Asymptote’ scaling routines that ultimately a fixed-size circle
+of radius 2pt will be drawn 3cm to the right of user-coordinate (1,1),
+by adding a frame about (1,1) that extends beyond (1,1) from
+‘(3cm-2pt,-2pt)+min(currentpen)’ to ‘(3cm+2pt,2pt)+max(currentpen)’,
+where we have even accounted for the pen linewidth. The following
+example will then produce a PDF file 10 cm wide:
+
+settings.outformat="pdf";
+size(10cm);
+dot((0,0));
+dot((1,1),red);
+add(new void(frame f, transform t) {
+ fill(f,shift(3cm,0)*circle(t*(1,1),2pt));
+});
+pair trueMin=(3cm-2pt,-2pt)+min(currentpen);
+pair trueMax=(3cm+2pt,2pt)+max(currentpen);
+currentpicture.addPoint((1,1),trueMin);
+currentpicture.addPoint((1,1),trueMax);
+Here we specified the minimum and maximum user and truesize (fixed)
+coordinates of the drawer with the ‘picture’ routine
+void addPoint(pair user, pair truesize);
+Alternatively, one can use
+void addBox(pair userMin, pair userMax, pair trueMin=0, pair trueMax=0) {
+to specify a bounding box with bottom-left corner ‘t*(1,1)+trueMin’ and
+top-right corner ‘t*(1,1)+trueMax’, where ‘t’ is the transformation that
+transforms from user coordinates to ‘PostScript’ coordinates.
+
+ For more details about deferred drawing, see "Asymptote: A vector
+graphics language," John C. Bowman and Andy Hammerlindl, TUGBOAT: The
+Communications of the TeX Users Group, 29:2, 288-294 (2008),
+
+<https://www.math.ualberta.ca/~bowman/publications/asyTUG.pdf>.
+
+
+File: asymptote.info, Node: Files, Next: Variable initializers, Prev: Deferred drawing, Up: Programming
-6.6 Files
+6.7 Files
=========
‘Asymptote’ can read and write text files (including comma-separated
@@ -3108,7 +3292,7 @@ write(fout,"List: ",1,2,3); // Writes "List: 1 2 3"
A file may be opened with ‘mode="xdr"’, to read or write double
precision (64-bit) reals and single precision (32-bit) integers in Sun
-Microsystem’s XDR (External Data Representation) portable binary format
+Microsystem's XDR (External Data Representation) portable binary format
(available on all ‘UNIX’ platforms). Alternatively, a file may also be
opened with ‘mode="binary"’ to read or write double precision reals and
single precision integers in the native (nonportable) machine binary
@@ -3188,14 +3372,14 @@ file ‘to’. Unless the ‘-globalwrite’ (or ‘-nosafe’) option is enabl
this operation is restricted to the current directory. The functions
int convert(string args="", string file="", string format="");
int animate(string args="", string file="", string format="");
-call the ‘ImageMagick’ commands ‘convert’ and ‘animate’, respectively,
+call the ‘ImageMagick’ commands ‘magick’ and ‘animate’, respectively,
with the arguments ‘args’ and the file name constructed from the strings
‘file’ and ‘format’.

File: asymptote.info, Node: Variable initializers, Next: Structures, Prev: Files, Up: Programming
-6.7 Variable initializers
+6.8 Variable initializers
=========================
A variable can be assigned a value when it is declared, as in ‘int x=3;’
@@ -3267,7 +3451,7 @@ for (var x : a)

File: asymptote.info, Node: Structures, Next: Operators, Prev: Variable initializers, Up: Programming
-6.8 Structures
+6.9 Structures
==============
Users may also define their own data types as structures, along with
@@ -3313,7 +3497,7 @@ form implicitly creates a new instance of ‘T’. That is, after the
definition of a structure ‘T’, a variable of type ‘T’ is initialized to
a new instance (‘new T’) by default. During the definition of the
structure, however, variables of type ‘T’ are initialized to ‘null’ by
-default. This special behaviour is to avoid infinite recursion of
+default. This special behavior is to avoid infinite recursion of
creating new instances in code such as
struct tree {
int value;
@@ -3366,55 +3550,10 @@ Person joe;
joe.firstname="Joe";
joe.lastname="Jones";
Creating a new Person is a chore; it takes three lines to create a new
-instance and to initialize its fields (that’s still considerably less
+instance and to initialize its fields (that's still considerably less
effort than creating a new person in real life, though).
- We can reduce the work by defining a constructor function
-‘Person(string,string)’:
-struct Person {
- string firstname;
- string lastname;
-
- static Person Person(string firstname, string lastname) {
- Person p=new Person;
- p.firstname=firstname;
- p.lastname=lastname;
- return p;
- }
-}
-
-Person joe=Person.Person("Joe", "Jones");
-
- While it is now easier than before to create a new instance, we still
-have to refer to the constructor by the qualified name ‘Person.Person’.
-If we add the line
-from Person unravel Person;
-immediately after the structure definition, then the constructor can be
-used without qualification: ‘Person joe=Person("Joe", "Jones");’.
-
- The constructor is now easy to use, but it is quite a hassle to
-define. If you write a lot of constructors, you will find that you are
-repeating a lot of code in each of them. Fortunately, your friendly
-neighbourhood Asymptote developers have devised a way to automate much
-of the process.
-
- If, in the body of a structure, Asymptote encounters the definition
-of a function of the form ‘void operator init(ARGS)’, it implicitly
-defines a constructor function of the arguments ‘ARGS’ that uses the
-‘void operator init’ function to initialize a new instance of the
-structure. That is, it essentially defines the following constructor
-(assuming the structure is called ‘Foo’):
-
- static Foo Foo(ARGS) {
- Foo instance=new Foo;
- instance.operator init(ARGS);
- return instance;
- }
-
- This constructor is also implicitly copied to the enclosing scope
-after the end of the structure definition, so that it can used
-subsequently without qualifying it by the structure name. Our ‘Person’
-example can thus be implemented as:
+ We can reduce the work by defining ‘operator init’:
struct Person {
string firstname;
string lastname;
@@ -3433,19 +3572,6 @@ not be confused with its use to define default values for variables
type of the ‘operator init’ must be ‘void’ while in the second, it must
be the (non-‘void’) type of the variable.
- The function ‘cputime()’ returns a structure ‘cputime’ with
-cumulative CPU times broken down into the fields ‘parent.user’,
-‘parent.system’, ‘child.user’, and ‘child.system’, along with the
-cumulative wall clock time in ‘parent.clock’, all measured in seconds.
-For convenience, the incremental fields ‘change.user’, ‘change.system’,
-and ‘change.clock’ indicate the change in the corresponding fields since
-the last call to ‘cputime()’. The function
-void write(file file=stdout, string s="", cputime c,
- string format=cputimeformat, suffix suffix=none);
-displays the incremental user cputime followed by “uâ€, the incremental
-system cputime followed by “sâ€, the total user cputime followed by “Uâ€,
-and the total system cputime followed by “Sâ€.
-
Much like in C++, casting (*note Casts::) provides for an elegant
implementation of structure inheritance, including a virtual function
‘v’:
@@ -3486,8 +3612,8 @@ write(c.y); // Outputs 3;

File: asymptote.info, Node: Operators, Next: Implicit scaling, Prev: Structures, Up: Programming
-6.9 Operators
-=============
+6.10 Operators
+==============
* Menu:
@@ -3498,8 +3624,8 @@ File: asymptote.info, Node: Operators, Next: Implicit scaling, Prev: Structur

File: asymptote.info, Node: Arithmetic & logical, Next: Self & prefix operators, Prev: Operators, Up: Operators
-6.9.1 Arithmetic & logical operators
-------------------------------------
+6.10.1 Arithmetic & logical operators
+-------------------------------------
‘Asymptote’ uses the standard binary arithmetic operators. However,
when one integer is divided by another, both arguments are converted to
@@ -3572,8 +3698,8 @@ a, int bits)’ (reverse bits within a word of length bits).

File: asymptote.info, Node: Self & prefix operators, Next: User-defined operators, Prev: Arithmetic & logical, Up: Operators
-6.9.2 Self & prefix operators
------------------------------
+6.10.2 Self & prefix operators
+------------------------------
As in C, each of the arithmetic operators ‘+’, ‘-’, ‘*’, ‘/’, ‘#’, ‘%’,
and ‘^’ can be used as a self operator. The prefix operators ‘++’
@@ -3597,8 +3723,8 @@ really needed, one can substitute the expressions ‘(++i-1)’ and

File: asymptote.info, Node: User-defined operators, Prev: Self & prefix operators, Up: Operators
-6.9.3 User-defined operators
-----------------------------
+6.10.3 User-defined operators
+-----------------------------
The following symbols may be used with ‘operator’ to define or redefine
operators on structures and built-in types:
@@ -3631,7 +3757,7 @@ write("g=",g);

File: asymptote.info, Node: Implicit scaling, Next: Functions, Prev: Operators, Up: Programming
-6.10 Implicit scaling
+6.11 Implicit scaling
=====================
If a numeric literal is in front of certain types of expressions, then
@@ -3668,7 +3794,7 @@ write(10cm);

File: asymptote.info, Node: Functions, Next: Arrays, Prev: Implicit scaling, Up: Programming
-6.11 Functions
+6.12 Functions
==============
* Menu:
@@ -3773,7 +3899,7 @@ segmentation fault, unless a fully working version of the GNU library

File: asymptote.info, Node: Default arguments, Next: Named arguments, Prev: Functions, Up: Functions
-6.11.1 Default arguments
+6.12.1 Default arguments
------------------------
‘Asymptote’ supports a more flexible mechanism for default function
@@ -3792,7 +3918,7 @@ defined.

File: asymptote.info, Node: Named arguments, Next: Rest arguments, Prev: Default arguments, Up: Functions
-6.11.2 Named arguments
+6.12.2 Named arguments
----------------------
It is sometimes difficult to remember the order in which arguments
@@ -3826,7 +3952,7 @@ x=3;
write(f(4,3));
and outputs 43.
- Parameters can be specified as “keyword-only†by putting ‘keyword’
+ Parameters can be specified as "keyword-only" by putting ‘keyword’
immediately before the parameter name, as in ‘int f(int keyword x)’ or
‘int f(int keyword x=77)’. This forces the caller of the function to
use a named argument to give a value for this parameter. That is,
@@ -3854,7 +3980,7 @@ would be allowed.

File: asymptote.info, Node: Rest arguments, Next: Mathematical functions, Prev: Named arguments, Up: Functions
-6.11.3 Rest arguments
+6.12.3 Rest arguments
---------------------
Rest arguments allow one to write functions that take a variable number
@@ -3942,7 +4068,7 @@ i(3,4); // ambiguous; the first candidate is better for the first argument,

File: asymptote.info, Node: Mathematical functions, Prev: Rest arguments, Up: Functions
-6.11.4 Mathematical functions
+6.12.4 Mathematical functions
-----------------------------
‘Asymptote’ has built-in versions of the standard ‘libm’ mathematical
@@ -4025,10 +4151,47 @@ write(Si(1.0));
returns the integral of ‘f’ from ‘a’ to ‘b’ using adaptive Simpson
integration.
+ Internally, ‘operator init’ implicitly defines a constructor
+ function ‘Person(string,string)’ as follows, where ARGS is ‘string
+ firstname, string lastname’ in this case:
+ struct Person {
+ string firstname;
+ string lastname;
+
+ static Person Person(ARGS) {
+ Person p=new Person;
+ p.operator init(ARGS);
+ return p;
+ }
+ }
+ which then can be used as:
+ Person joe=Person.Person("Joe", "Jones");
+
+ The following is also implicitly generated in the enclosing scope,
+ after the end of the structure definition.
+ from Person unravel Person;
+ It allows us to use the constructor without qualification,
+ otherwise we would have to refer to the constructor by the
+ qualified name ‘Person.Person’.
+
+‘cputime cputime()’
+ returns a structure ‘cputime’ with cumulative CPU times broken down
+ into the fields ‘parent.user’, ‘parent.system’, ‘child.user’, and
+ ‘child.system’, along with the cumulative wall clock time in
+ ‘parent.clock’, all measured in seconds. For convenience, the
+ incremental fields ‘change.user’, ‘change.system’, and
+ ‘change.clock’ indicate the change in the corresponding fields
+ since the last call to ‘cputime()’. The function
+ void write(file file=stdout, string s="", cputime c,
+ string format=cputimeformat, suffix suffix=none);
+ displays the incremental user cputime followed by "u", the
+ incremental system cputime followed by "s", the total user cputime
+ followed by "U", and the total system cputime followed by "S".
+

File: asymptote.info, Node: Arrays, Next: Casts, Prev: Functions, Up: Programming
-6.12 Arrays
+6.13 Arrays
===========
* Menu:
@@ -4445,7 +4608,7 @@ output with the functions ‘write(file,T[])’, ‘write(file,T[][])’,

File: asymptote.info, Node: Slices, Prev: Arrays, Up: Arrays
-6.12.1 Slices
+6.13.1 Slices
-------------
Asymptote allows a section of an array to be addressed as a slice using
@@ -4529,7 +4692,7 @@ of the cells.

File: asymptote.info, Node: Casts, Next: Import, Prev: Arrays, Up: Programming
-6.13 Casts
+6.14 Casts
==========
‘Asymptote’ implicitly casts ‘int’ to ‘real’, ‘int’ to ‘pair’, ‘real’ to
@@ -4596,7 +4759,7 @@ real operator cast(int x)=convert;

File: asymptote.info, Node: Import, Next: Static, Prev: Casts, Up: Programming
-6.14 Import
+6.15 Import
===========
While ‘Asymptote’ provides many features by default, some applications
@@ -4654,7 +4817,7 @@ name.
usually know all of the internal types and variables of a module, which
can also change as the module writer adds or changes features of the
module. As such, it is prudent to add ‘import’ commands at the start of
-an ‘Asymptote’ file, so that imported names won’t shadow locally defined
+an ‘Asymptote’ file, so that imported names won't shadow locally defined
functions. Still, imported names may shadow other imported names,
depending on the order in which they were imported, and imported
functions may cause overloading resolution problems if they have the
@@ -4744,7 +4907,7 @@ Imported global functions and variables are also listed if ‘imports’ is

File: asymptote.info, Node: Templated imports, Up: Import
-6.14.1 Templated imports
+6.15.1 Templated imports
------------------------
*Warning:* This feature is experimental: it has known issues and its
@@ -4765,10 +4928,9 @@ accessed for types ‘string’, ‘int[]’, and ‘real’ with the import com
access templatedModule(T=string, S=int[], Number=real)
as templatedModule_string_int_real;
Note that this is actually an _access_ command rather than an _import_
-command, so the names of types, functions, etc. would have to be stated
-as e.g. ‘templatedModule_string_int_real.Wrapper_Number’ rather than
-just ‘Wrapper_Number’ (where ‘Wrapper_Number’ is a type defined in
-‘templatedModule.asy’).
+command, so a type, function, or variable ‘A’ defined in
+‘templatedModule.asy’ would need to be accessed qualified as
+‘templatedModule_string_int_real.A’.
Alternatively, the module could be imported via a command like
from templatedModule(T=string, S=int[], Number=real) access
@@ -4778,18 +4940,17 @@ This command would automatically rename ‘Wrapper_Number’ to
‘Wrapper_real’ and would also allow the use of any ‘operator ==’
overloads defined in the module.
- For more information, see the examples in
-<https://github.com/vectorgraphics/asymptote/tree/647b6c5732ec94a48f0f0b2446f02c86888fe7e7/tests/template>.
+ Further examples can be found in the ‘tests/template’ subdirectory of
+the ‘Asymptote’ source directory.
- Issues: Certain standard features of almost any type (such as ‘==’,
-‘new’, and the ability to call static methods on the type) may only be
-available for type arguments that are builtin or defined in the ‘plain’
-module.
+ Issues: Certain expected operators (such as ‘operator ==’) may only
+be available for type arguments that are builtin or defined in module
+‘plain’.

File: asymptote.info, Node: Static, Prev: Import, Up: Programming
-6.15 Static
+6.16 Static
===========
Static qualifiers allocate the memory address of a variable in a higher
@@ -5099,7 +5260,8 @@ File: asymptote.info, Node: Base modules, Next: Options, Prev: LaTeX usage,
* plain:: Default ‘Asymptote’ base file
* simplex:: Linear programming: simplex method
-* math:: Extend ‘Asymptote’’s math capabilities
+* simplex2:: Two-variable simplex method
+* math:: Extend ‘Asymptote’'s math capabilities
* interpolate:: Interpolation routines
* geometry:: Geometry routines
* trembling:: Wavy lines
@@ -5160,17 +5322,25 @@ File: asymptote.info, Node: simplex, Next: math, Prev: plain, Up: Base modul
8.2 ‘simplex’
=============
-This module solves the two-variable linear programming problem using the
-simplex method. It is used by the module ‘plain’ for automatic sizing
-of pictures.
+This module solves the general linear programming problem using the
+simplex method.
+
+
+File: asymptote.info, Node: simplex2, Next: math, Prev: plain, Up: Base modules
+
+8.3 ‘simplex2’
+==============
+
+This module solves a special case of the two-variable linear programming
+problem used by the module ‘plain’ for automatic sizing of pictures.

File: asymptote.info, Node: math, Next: interpolate, Prev: simplex, Up: Base modules
-8.3 ‘math’
+8.4 ‘math’
==========
-This module extends ‘Asymptote’’s mathematical capabilities with useful
+This module extends ‘Asymptote’'s mathematical capabilities with useful
functions such as
‘void drawline(picture pic=currentpicture, pair P, pair Q, pen p=currentpen);’
@@ -5236,7 +5406,7 @@ functions such as

File: asymptote.info, Node: interpolate, Next: geometry, Prev: math, Up: Base modules
-8.4 ‘interpolate’
+8.5 ‘interpolate’
=================
This module implements Lagrange, Hermite, and standard cubic spline
@@ -5246,7 +5416,7 @@ interpolation in ‘Asymptote’, as illustrated in the example

File: asymptote.info, Node: geometry, Next: trembling, Prev: interpolate, Up: Base modules
-8.5 ‘geometry’
+8.6 ‘geometry’
==============
This module, written by Philippe Ivaldi, provides an extensive set of
@@ -5261,7 +5431,7 @@ and an index:

File: asymptote.info, Node: trembling, Next: stats, Prev: geometry, Up: Base modules
-8.6 ‘trembling’
+8.7 ‘trembling’
===============
This module, written by Philippe Ivaldi and illustrated in the example
@@ -5270,7 +5440,7 @@ This module, written by Philippe Ivaldi and illustrated in the example

File: asymptote.info, Node: stats, Next: patterns, Prev: trembling, Up: Base modules
-8.7 ‘stats’
+8.8 ‘stats’
===========
This module implements a Gaussian random number generator and a
@@ -5280,7 +5450,7 @@ collection of statistics routines, including ‘histogram’ and

File: asymptote.info, Node: patterns, Next: markers, Prev: stats, Up: Base modules
-8.8 ‘patterns’
+8.9 ‘patterns’
==============
This module implements ‘PostScript’ tiling patterns and includes several
@@ -5289,8 +5459,8 @@ convenient pattern generation routines.

File: asymptote.info, Node: markers, Next: map, Prev: patterns, Up: Base modules
-8.9 ‘markers’
-=============
+8.10 ‘markers’
+==============
This module implements specialized routines for marking paths and
angles. The principal mark routine provided by this module is
@@ -5335,7 +5505,7 @@ as illustrated in the example ‘markers2.asy’.

File: asymptote.info, Node: map, Next: tree, Prev: markers, Up: Base modules
-8.10 ‘map’
+8.11 ‘map’
==========
This module creates a struct parameterized by the types specified in
@@ -5356,7 +5526,7 @@ write(M.lookup("y"));

File: asymptote.info, Node: tree, Next: binarytree, Prev: map, Up: Base modules
-8.11 ‘tree’
+8.12 ‘tree’
===========
This module implements an example of a dynamic binary search tree.
@@ -5364,7 +5534,7 @@ This module implements an example of a dynamic binary search tree.

File: asymptote.info, Node: binarytree, Next: drawtree, Prev: tree, Up: Base modules
-8.12 ‘binarytree’
+8.13 ‘binarytree’
=================
This module can be used to draw an arbitrary binary tree and includes an
@@ -5389,7 +5559,7 @@ add(pic2.fit(),(0,0),10S);

File: asymptote.info, Node: drawtree, Next: syzygy, Prev: binarytree, Up: Base modules
-8.13 ‘drawtree’
+8.14 ‘drawtree’
===============
This is a simple tree drawing module used by the example ‘treetest.asy’.
@@ -5397,7 +5567,7 @@ This is a simple tree drawing module used by the example ‘treetest.asy’.

File: asymptote.info, Node: syzygy, Next: feynman, Prev: drawtree, Up: Base modules
-8.14 ‘syzygy’
+8.15 ‘syzygy’
=============
This module automates the drawing of braids, relations, and syzygies,
@@ -5407,7 +5577,7 @@ along with the corresponding equations, as illustrated in the example

File: asymptote.info, Node: feynman, Next: roundedpath, Prev: syzygy, Up: Base modules
-8.15 ‘feynman’
+8.16 ‘feynman’
==============
This module, contributed by Martin Wiebusch, is useful for drawing
@@ -5417,7 +5587,7 @@ Feynman diagrams, as illustrated by the examples ‘eetomumu.asy’ and

File: asymptote.info, Node: roundedpath, Next: animation, Prev: feynman, Up: Base modules
-8.16 ‘roundedpath’
+8.17 ‘roundedpath’
==================
This module, contributed by Stefan Knorr, is useful for rounding the
@@ -5427,13 +5597,13 @@ sharp corners of paths, as illustrated in the example file

File: asymptote.info, Node: animation, Next: embed, Prev: roundedpath, Up: Base modules
-8.17 ‘animation’
+8.18 ‘animation’
================
This module allows one to generate animations, as illustrated by the
files ‘wheel.asy’, ‘wavepacket.asy’, and ‘cube.asy’ in the ‘animations’
subdirectory of the examples directory. These animations use the
-‘ImageMagick’ ‘convert’ program to merge multiple images into a GIF or
+‘ImageMagick’ ‘magick’ program to merge multiple images into a GIF or
MPEG movie.
The related ‘animate’ module, derived from the ‘animation’ module,
@@ -5459,7 +5629,7 @@ described here:

File: asymptote.info, Node: embed, Next: slide, Prev: animation, Up: Base modules
-8.18 ‘embed’
+8.19 ‘embed’
============
This module provides an interface to the ‘LaTeX’ package (included with
@@ -5484,7 +5654,7 @@ animate::).

File: asymptote.info, Node: slide, Next: MetaPost, Prev: embed, Up: Base modules
-8.19 ‘slide’
+8.20 ‘slide’
============
This module provides a simple yet high-quality facility for making
@@ -5495,7 +5665,7 @@ file ‘slidemovies.asy’). A simple example is provided in

File: asymptote.info, Node: MetaPost, Next: babel, Prev: slide, Up: Base modules
-8.20 ‘MetaPost’
+8.21 ‘MetaPost’
===============
This module provides some useful routines to help ‘MetaPost’ users
@@ -5513,7 +5683,7 @@ equation solver ‘solve’ instead.

File: asymptote.info, Node: babel, Next: labelpath, Prev: MetaPost, Up: Base modules
-8.21 ‘babel’
+8.22 ‘babel’
============
This module implements the ‘LaTeX’ ‘babel’ package in ‘Asymptote’. For
@@ -5524,7 +5694,7 @@ babel("german");

File: asymptote.info, Node: labelpath, Next: labelpath3, Prev: babel, Up: Base modules
-8.22 ‘labelpath’
+8.23 ‘labelpath’
================
This module uses the ‘PSTricks’ ‘pstextpath’ macro to fit labels along a
@@ -5542,7 +5712,7 @@ inherits the limitations of the ‘PSTricks’ ‘\pstextpath’ macro.

File: asymptote.info, Node: labelpath3, Next: annotate, Prev: labelpath, Up: Base modules
-8.23 ‘labelpath3’
+8.24 ‘labelpath3’
=================
This module, contributed by Jens Schwaiger, implements a 3D version of
@@ -5552,7 +5722,7 @@ provided in ‘curvedlabel3.asy’.

File: asymptote.info, Node: annotate, Next: CAD, Prev: labelpath3, Up: Base modules
-8.24 ‘annotate’
+8.25 ‘annotate’
===============
This module supports PDF annotations for viewing with ‘Adobe Reader’,
@@ -5566,7 +5736,7 @@ and ‘tex’ TeX engines.

File: asymptote.info, Node: CAD, Next: graph, Prev: annotate, Up: Base modules
-8.25 ‘CAD’
+8.26 ‘CAD’
==========
This module, contributed by Mark Henning, provides basic pen definitions
@@ -5576,7 +5746,7 @@ and measurement functions for simple 2D CAD drawings according to DIN

File: asymptote.info, Node: graph, Next: palette, Prev: CAD, Up: Base modules
-8.26 ‘graph’
+8.27 ‘graph’
============
This module implements two-dimensional linear and logarithmic graphs,
@@ -6066,7 +6236,7 @@ following routines:
bool above=true);
In the right-hand graph, the unit n-sided regular polygon
‘polygon(int n)’ and the unit n-point cyclic cross ‘cross(int n,
- bool round=true, real r=0)’ (where ‘r’ is an optional “innerâ€
+ bool round=true, real r=0)’ (where ‘r’ is an optional "inner"
radius) are used to build a custom marker frame. Here
‘markuniform(bool centered=false, int n, bool rotated=false)’ adds
this frame at ‘n’ uniformly spaced points along the arclength of
@@ -6655,7 +6825,7 @@ following routines:
[./vectorfield]
15. The following scientific graphs, which illustrate many features of
- ‘Asymptote’’s graphics routines, were generated from the examples
+ ‘Asymptote’'s graphics routines, were generated from the examples
‘diatom.asy’ and ‘westnile.asy’, using the comma-separated data in
‘diatom.csv’ and ‘westnile.csv’.
@@ -6667,7 +6837,7 @@ following routines:

File: asymptote.info, Node: palette, Next: three, Prev: graph, Up: Base modules
-8.27 ‘palette’
+8.28 ‘palette’
==============
‘Asymptote’ can also generate color density images and palettes. The
@@ -6880,7 +7050,7 @@ pen[][] palette(real[][] f, pen[] palette);

File: asymptote.info, Node: three, Next: obj, Prev: palette, Up: Base modules
-8.28 ‘three’
+8.29 ‘three’
============
This module fully extends the notion of guides and paths in ‘Asymptote’
@@ -6888,7 +7058,7 @@ to three dimensions. It introduces the new types guide3, path3, and
surface. Guides in three dimensions are specified with the same syntax
as in two dimensions except that triples ‘(x,y,z)’ are used in place of
pairs ‘(x,y)’ for the nodes and direction specifiers. This
-generalization of John Hobby’s spline algorithm is shape-invariant under
+generalization of John Hobby's spline algorithm is shape-invariant under
three-dimensional rotation, scaling, and shifting, and reduces in the
planar case to the two-dimensional algorithm used in ‘Asymptote’,
‘MetaPost’, and ‘MetaFont’ [cf. J. C. Bowman, Proceedings in Applied
@@ -6975,7 +7145,7 @@ currentlight=Headlamp;
light nolight;
The ‘currentlight.background’ (or ‘background’ member of the
-specified ‘light’) can be used to set the background colour for 2D (or
+specified ‘light’) can be used to set the background color for 2D (or
3D) images. The default background is white for ‘HTML’ images and
transparent for all other formats. One can request a completely
transparent background for 3D ‘WebGL’ images with
@@ -6999,7 +7169,7 @@ documented at the beginning of module ‘three’.
The examples ‘elevation.asy’ and ‘sphericalharmonic.asy’ illustrate
how to draw a surface with patch-dependent colors. The examples
‘vertexshading.asy’ and ‘smoothelevation.asy’ illustrate
-vertex-dependent colors, which are supported by ‘Asymptote’’s native
+vertex-dependent colors, which are supported by ‘Asymptote’'s native
‘OpenGL’/‘WebGL’ renderers and the two-dimensional vector output format
(‘settings.render=0’). Since the PRC output format does not currently
support vertex shading of Bezier surfaces, PRC patches are shaded with
@@ -7023,7 +7193,7 @@ from a two-dimensional cyclic path ‘g’ with the constructor
surface surface(path p, triple plane(pair)=XYplane);
and then filled:
draw(surface((0,0)--E+2N--2E--E+N..0.2E..cycle),red);
-Planar Bezier surfaces patches are constructed using Orest Shardt’s
+Planar Bezier surfaces patches are constructed using Orest Shardt's
‘bezulate’ routine, which decomposes (possibly nonsimply connected)
regions bounded (according to the ‘zerowinding’ fill rule) by simple
cyclic paths (intersecting only at the endpoints) into subregions
@@ -7590,7 +7760,7 @@ add(faces);

File: asymptote.info, Node: obj, Next: graph3, Prev: three, Up: Base modules
-8.29 ‘obj’
+8.30 ‘obj’
==========
This module allows one to construct surfaces from simple obj files, as
@@ -7599,7 +7769,7 @@ illustrated in the example files ‘galleon.asy’ and ‘triceratops.asy’.

File: asymptote.info, Node: graph3, Next: grid3, Prev: obj, Up: Base modules
-8.30 ‘graph3’
+8.31 ‘graph3’
=============
This module implements three-dimensional versions of the functions in
@@ -7775,7 +7945,7 @@ picture vectorfield(path3 vector(pair v), triple f(pair z), pair a, pair b,

File: asymptote.info, Node: grid3, Next: solids, Prev: graph3, Up: Base modules
-8.31 ‘grid3’
+8.32 ‘grid3’
============
This module, contributed by Philippe Ivaldi, can be used for drawing 3D
@@ -7805,7 +7975,7 @@ zaxis3(Label("$z$",position=EndPoint,align=(-1,0.5)),Bounds(Min,Min),

File: asymptote.info, Node: solids, Next: tube, Prev: grid3, Up: Base modules
-8.32 ‘solids’
+8.33 ‘solids’
=============
This solid geometry module defines a structure ‘revolution’ that can be
@@ -7840,7 +8010,7 @@ struct skeleton {

File: asymptote.info, Node: tube, Next: flowchart, Prev: solids, Up: Base modules
-8.33 ‘tube’
+8.34 ‘tube’
===========
This module extends the ‘tube’ surfaces constructed in
@@ -7881,7 +8051,7 @@ the third case, the array of pens contains only one pen, which depends
of the relative time.
The casting of ‘path’ to ‘coloredpath’ allows the use of a ‘path’
-instead of a ‘coloredpath’; in this case the shading behaviour is the
+instead of a ‘coloredpath’; in this case the shading behavior is the
default shading behavior for a surface.
An example of ‘tube’ is provided in the file ‘trefoilknot.asy’.
@@ -7891,7 +8061,7 @@ Further examples can be found at

File: asymptote.info, Node: flowchart, Next: contour, Prev: tube, Up: Base modules
-8.34 ‘flowchart’
+8.35 ‘flowchart’
================
This module provides routines for drawing flowcharts. The primary
@@ -8007,7 +8177,7 @@ add(new void(picture pic, transform t) {

File: asymptote.info, Node: contour, Next: contour3, Prev: flowchart, Up: Base modules
-8.35 ‘contour’
+8.36 ‘contour’
==============
This module draws contour lines. To construct contours corresponding to
@@ -8222,14 +8392,14 @@ for(int i=0; i < np; ++i)
The example ‘Gouraudcontour.asy’ illustrates how to produce color
density images over such irregular triangular meshes. ‘Asymptote’ uses
-a robust version of Paul Bourke’s Delaunay triangulation algorithm based
+a robust version of Paul Bourke's Delaunay triangulation algorithm based
on the public-domain exact arithmetic predicates written by Jonathan
Shewchuk.

File: asymptote.info, Node: contour3, Next: smoothcontour3, Prev: contour, Up: Base modules
-8.36 ‘contour3’
+8.37 ‘contour3’
===============
This module draws surfaces described as the null space of real-valued
@@ -8239,7 +8409,7 @@ in the example file ‘magnetic.asy’.

File: asymptote.info, Node: smoothcontour3, Next: slopefield, Prev: contour3, Up: Base modules
-8.37 ‘smoothcontour3’
+8.38 ‘smoothcontour3’
=====================
This module, written by Charles Staats, draws implicitly defined
@@ -8265,17 +8435,17 @@ surface implicitsurface(real f(triple)=null,
int keyword maxdepth=8,
bool usetriangles=true);
The optional parameter ‘overlapedges’ attempts to compensate for an
-artifact that can cause the renderer to “see through†the boundary
+artifact that can cause the renderer to "see through" the boundary
between patches. Although it defaults to ‘false’, it should usually be
set to ‘true’. The example ‘genustwo.asy’ illustrates the use of this
function. Additional examples, together with a more in-depth
-explanation of the module’s usage and pitfalls, are available at
+explanation of the module's usage and pitfalls, are available at
<https://github.com/charlesstaats/smoothcontour3>.

File: asymptote.info, Node: slopefield, Next: ode, Prev: smoothcontour3, Up: Base modules
-8.38 ‘slopefield’
+8.39 ‘slopefield’
=================
To draw a slope field for the differential equation dy/dx=f(x,y) (or
@@ -8315,7 +8485,7 @@ draw(curve((0,0),func,(-3,-3),(3,3)),red);

File: asymptote.info, Node: ode, Prev: slopefield, Up: Base modules
-8.39 ‘ode’
+8.40 ‘ode’
==========
The ‘ode’ module, illustrated in the example ‘odetest.asy’, implements a
@@ -8486,7 +8656,7 @@ configuration file named ‘config.asy’ (or the file specified by the
environment variable ‘ASYMPTOTE_CONFIG’ or ‘-config’ option).
‘Asymptote’ will look for this file in its usual search path (*note
Search paths::). Typically the configuration file is placed in the
-‘.asy’ directory in the user’s home directory (‘%USERPROFILE%\.asy’
+‘.asy’ directory in the user's home directory (‘%USERPROFILE%\.asy’
under ‘MSDOS’). Configuration variables are accessed using the long
form of the option names:
import settings;
@@ -8522,16 +8692,14 @@ with the ‘graphic()’ function. The generated output is optimized with
the default setting ‘settings.dvisvgmOptions="--optimize"’.
‘Asymptote’ can also produce any output format supported by the
-‘ImageMagick’ ‘convert’ program (version 6.3.5 or later recommended; an
-‘Invalid Parameter’ error message indicates that the ‘MSDOS’ utility
-‘convert’ is being used instead of the one that comes with
-‘ImageMagick’). The optional setting ‘-render n’ requests an output
-resolution of ‘n’ pixels per ‘bp’. Antialiasing is controlled by the
-parameter ‘antialias’, which by default specifies a sampling width of 2
-pixels. To give other options to ‘convert’, use the ‘convertOptions’
-setting or call convert manually. This example emulates how ‘Asymptote’
-produces antialiased ‘tiff’ output at one pixel per ‘bp’:
-asy -o - venn | convert -alpha Off -density 144x144 -geometry 50%x eps:- venn.tiff
+‘ImageMagick’ ‘magick’ program (version 7 or later. The optional
+setting ‘-render n’ requests an output resolution of ‘n’ pixels per
+‘bp’. Antialiasing is controlled by the parameter ‘antialias’, which by
+default specifies a sampling width of 2 pixels. To give other options
+to ‘magick’, use the ‘convertOptions’ setting or call ‘magick convert’
+manually. This example emulates how ‘Asymptote’ produces antialiased
+‘tiff’ output at one pixel per ‘bp’:
+asy -o - venn | magick convert -alpha Off -density 144x144 -geometry 50%x eps:- venn.tiff
If the option ‘-nosafe’ is given, ‘Asymptote’ runs in unsafe mode.
This enables the ‘int system(string s)’ and ‘int system(string[] s)’
@@ -8643,7 +8811,7 @@ and must be entered immediately after the prompt:
also accepted unless there exists a top-level variable named ‘q’).
A history of the most recent 1000 (this number can be changed with
the ‘historylines’ configuration variable) previous commands will
- be retained in the file ‘.asy/history’ in the user’s home directory
+ be retained in the file ‘.asy/history’ in the user's home directory
(unless the command-line option ‘-localhistory’ was specified, in
which case the history will be stored in the file ‘.asy_history’ in
the current directory).
@@ -8832,13 +9000,14 @@ The excellent ‘PostScript’ editor ‘pstoedit’ (version 3.50 or later;
available from <https://sourceforge.net/projects/pstoedit/>) includes an
‘Asymptote’ backend. Unlike virtually all other ‘pstoedit’ backends,
this driver includes native clipping, even-odd fill rule, ‘PostScript’
-subpath, and full image support. Here is an example: ‘asy -V
-/usr/local/share/doc/asymptote/examples/venn.asy’
+subpath, and full image support. Here is an example:
+
+‘asy -V /usr/local/share/doc/asymptote/examples/venn.asy’
pstoedit -f asy venn.eps test.asy
asy -V test
-If the line widths aren’t quite correct, try giving ‘pstoedit’ the
-‘-dis’ option. If the fonts aren’t typeset correctly, try giving
+If the line widths aren't quite correct, try giving ‘pstoedit’ the
+‘-dis’ option. If the fonts aren't typeset correctly, try giving
‘pstoedit’ the ‘-dt’ option.

@@ -8962,7 +9131,7 @@ Prince. Sean Healy designed the ‘Asymptote’ logo. Other contributors
include Orest Shardt, Jesse Frohlich, Michail Vidiassov, Charles Staats,
Philippe Ivaldi, Olivier Guibé, Radoslav Marinov, Jeff Samuelson, Chris
Savage, Jacques Pienaar, Mark Henning, Steve Melenchuk, Martin Wiebusch,
-Stefan Knorr, Supakorn “Jamie†Rassameemasmuang, Jacob Skitsko, Joseph
+Stefan Knorr, Supakorn "Jamie" Rassameemasmuang, Jacob Skitsko, Joseph
Chaumont, and Oliver Cheng. Pedram Emami developed the ‘Asymptote Web
Application’ hosted at <http://asymptote.ualberta.ca>:
@@ -8977,11 +9146,48 @@ Index
* Menu:
+* -: Arithmetic & logical.
+ (line 14)
+* --: Paths. (line 16)
+* -- <1>: Self & prefix operators.
+ (line 6)
+* ---: Bezier curves. (line 84)
+* -=: Self & prefix operators.
+ (line 6)
+* -c: Options. (line 222)
+* -l: Options. (line 241)
+* -u: Options. (line 232)
+* -V: Configuring. (line 6)
+* -V <1>: Drawing in batch mode.
+ (line 16)
+* :: Arithmetic & logical.
+ (line 61)
+* ::: Bezier curves. (line 70)
* !: Arithmetic & logical.
(line 57)
* !=: Structures. (line 62)
* != <1>: Arithmetic & logical.
(line 37)
+* ?: Arithmetic & logical.
+ (line 61)
+* ..: Paths. (line 16)
+* .asy: Search paths. (line 12)
+* *: Pens. (line 15)
+* * <1>: Arithmetic & logical.
+ (line 16)
+* **: Arithmetic & logical.
+ (line 31)
+* *=: Self & prefix operators.
+ (line 6)
+* /: Arithmetic & logical.
+ (line 18)
+* /=: Self & prefix operators.
+ (line 6)
+* &: Bezier curves. (line 84)
+* & <1>: Arithmetic & logical.
+ (line 49)
+* &&: Arithmetic & logical.
+ (line 47)
* #: Arithmetic & logical.
(line 20)
* %: Arithmetic & logical.
@@ -8989,17 +9195,12 @@ Index
* % <1>: Interactive mode. (line 16)
* %=: Self & prefix operators.
(line 6)
-* &: Bezier curves. (line 84)
-* & <1>: Arithmetic & logical.
- (line 49)
-* &&: Arithmetic & logical.
- (line 47)
-* *: Pens. (line 15)
-* * <1>: Arithmetic & logical.
- (line 16)
-* **: Arithmetic & logical.
- (line 31)
-* *=: Self & prefix operators.
+* ^: Arithmetic & logical.
+ (line 29)
+* ^ <1>: Arithmetic & logical.
+ (line 55)
+* ^^: Paths. (line 23)
+* ^=: Self & prefix operators.
(line 6)
* +: Pens. (line 15)
* + <1>: Arithmetic & logical.
@@ -9008,33 +9209,6 @@ Index
(line 6)
* +=: Self & prefix operators.
(line 6)
-* -: Arithmetic & logical.
- (line 14)
-* --: Paths. (line 16)
-* -- <1>: Self & prefix operators.
- (line 6)
-* ---: Bezier curves. (line 84)
-* -=: Self & prefix operators.
- (line 6)
-* -c: Options. (line 224)
-* -l: Options. (line 243)
-* -u: Options. (line 234)
-* -V: Configuring. (line 6)
-* -V <1>: Drawing in batch mode.
- (line 16)
-* ..: Paths. (line 16)
-* .asy: Search paths. (line 12)
-* /: Arithmetic & logical.
- (line 18)
-* /=: Self & prefix operators.
- (line 6)
-* 2D graphs: graph. (line 6)
-* 3D graphs: graph3. (line 6)
-* 3D grids: grid3. (line 6)
-* 3D PostScript: three. (line 665)
-* :: Arithmetic & logical.
- (line 61)
-* ::: Bezier curves. (line 70)
* <: Arithmetic & logical.
(line 39)
* <=: Arithmetic & logical.
@@ -9046,19 +9220,14 @@ Index
(line 45)
* >=: Arithmetic & logical.
(line 43)
-* ?: Arithmetic & logical.
- (line 61)
-* ^: Arithmetic & logical.
- (line 29)
-* ^ <1>: Arithmetic & logical.
- (line 55)
-* ^=: Self & prefix operators.
- (line 6)
-* ^^: Paths. (line 23)
* |: Arithmetic & logical.
(line 53)
* ||: Arithmetic & logical.
(line 51)
+* 2D graphs: graph. (line 6)
+* 3D graphs: graph3. (line 6)
+* 3D grids: grid3. (line 6)
+* 3D PostScript: three. (line 665)
* a4: Configuring. (line 63)
* abort: Data types. (line 364)
* abs: Data types. (line 65)
@@ -9082,24 +9251,24 @@ Index
* acosh: Mathematical functions.
(line 6)
* add: Frames and pictures.
- (line 217)
+ (line 204)
* add <1>: Frames and pictures.
- (line 231)
+ (line 218)
* add <2>: three. (line 342)
* addViews: three. (line 459)
* adjust: Pens. (line 123)
* Ai: Mathematical functions.
(line 48)
-* Airy: Mathematical functions.
- (line 48)
* Ai_deriv: Mathematical functions.
(line 48)
+* Airy: Mathematical functions.
+ (line 48)
* alias: Structures. (line 62)
* alias <1>: Arrays. (line 183)
-* Align: label. (line 12)
-* aligndir: Options. (line 216)
+* Align: label. (line 20)
+* aligndir: Options. (line 214)
* all: Arrays. (line 350)
-* Allow: Pens. (line 363)
+* Allow: Pens. (line 416)
* and: Bezier curves. (line 56)
* AND: Arithmetic & logical.
(line 68)
@@ -9117,9 +9286,9 @@ Index
* arc: Paths and guides. (line 24)
* Arc: Paths and guides. (line 37)
* arc <1>: three. (line 353)
-* ArcArrow: draw. (line 26)
+* ArcArrow: draw. (line 30)
* ArcArrow3: three. (line 632)
-* ArcArrows: draw. (line 26)
+* ArcArrows: draw. (line 30)
* ArcArrows3: three. (line 632)
* arclength: Paths and guides. (line 153)
* arclength <1>: three. (line 566)
@@ -9131,15 +9300,17 @@ Index
(line 6)
* array: Data types. (line 284)
* array <1>: Arrays. (line 112)
-* array iteration: Programming. (line 52)
+* array iteration: Programming. (line 53)
* arrays: Arrays. (line 6)
* arrow: Drawing commands. (line 34)
* Arrow: draw. (line 26)
-* arrow <1>: label. (line 70)
+* arrow <1>: label. (line 77)
* arrow keys: Drawing in interactive mode.
(line 11)
* arrow keys <1>: GUI usage. (line 6)
* Arrow3: three. (line 632)
+* arrowbar: draw. (line 26)
+* arrowhead: draw. (line 50)
* arrows: draw. (line 26)
* Arrows: draw. (line 26)
* Arrows3: three. (line 632)
@@ -9153,9 +9324,9 @@ Index
* asinh: Mathematical functions.
(line 6)
* Aspect: Frames and pictures.
- (line 59)
+ (line 46)
* assert: Data types. (line 369)
-* assignment: Programming. (line 26)
+* assignment: Programming. (line 27)
* asy: Data types. (line 359)
* asy <1>: Import. (line 106)
* asy-mode: Editing modes. (line 6)
@@ -9163,9 +9334,9 @@ Index
* asygl: Configuring. (line 69)
* asyinclude: LaTeX usage. (line 42)
* Asymptote Web Application: Description. (line 6)
+* ASYMPTOTE_CONFIG: Options. (line 159)
* asymptote.sty: LaTeX usage. (line 6)
* asymptote.xml: Editing modes. (line 48)
-* ASYMPTOTE_CONFIG: Options. (line 159)
* atan: Mathematical functions.
(line 6)
* aTan: Mathematical functions.
@@ -9176,7 +9347,7 @@ Index
(line 6)
* atleast: Bezier curves. (line 56)
* attach: Frames and pictures.
- (line 276)
+ (line 263)
* attach <1>: LaTeX usage. (line 47)
* attach <2>: graph. (line 407)
* autoadjust: three. (line 428)
@@ -9193,7 +9364,7 @@ Index
* background: three. (line 76)
* background <1>: three. (line 97)
* background color: Frames and pictures.
- (line 180)
+ (line 167)
* BackView: three. (line 452)
* Bar: draw. (line 19)
* Bar3: three. (line 632)
@@ -9202,24 +9373,24 @@ Index
* barsize: draw. (line 19)
* base modules: Base modules. (line 6)
* basealign: Pens. (line 181)
-* baseline: label. (line 90)
+* baseline: label. (line 97)
* batch mode: Drawing in batch mode.
(line 6)
* beep: Data types. (line 382)
-* BeginArcArrow: draw. (line 26)
+* BeginArcArrow: draw. (line 30)
* BeginArcArrow3: three. (line 632)
* BeginArrow: draw. (line 26)
* BeginArrow3: three. (line 632)
* BeginBar: draw. (line 19)
* BeginBar3: three. (line 632)
-* BeginDotMargin: draw. (line 42)
+* BeginDotMargin: draw. (line 87)
* BeginDotMargin3: three. (line 648)
-* BeginMargin: draw. (line 42)
+* BeginMargin: draw. (line 68)
* BeginMargin3: three. (line 648)
-* BeginPenMargin: draw. (line 42)
+* BeginPenMargin: draw. (line 76)
* BeginPenMargin2: three. (line 648)
* BeginPenMargin3: three. (line 648)
-* BeginPoint: label. (line 55)
+* BeginPoint: label. (line 62)
* Bessel: Mathematical functions.
(line 48)
* bevel: flowchart. (line 72)
@@ -9230,14 +9401,14 @@ Index
* bezulate: three. (line 146)
* Bi: Mathematical functions.
(line 48)
+* Bi_deriv: Mathematical functions.
+ (line 48)
* Billboard: three. (line 536)
* binary: Files. (line 80)
* binary format: Files. (line 80)
* binary operators: Arithmetic & logical.
(line 6)
* binarytree: binarytree. (line 6)
-* Bi_deriv: Mathematical functions.
- (line 48)
* black stripes: three. (line 261)
* Blank: draw. (line 26)
* block.bottom: flowchart. (line 19)
@@ -9259,21 +9430,19 @@ Index
* BottomTop: graph. (line 139)
* BottomView: three. (line 452)
* bounding box: Frames and pictures.
- (line 180)
+ (line 167)
* bounds: palette. (line 43)
* Bounds: graph3. (line 21)
* box: Frames and pictures.
- (line 25)
-* box <1>: Frames and pictures.
- (line 130)
-* box <2>: three. (line 375)
-* box <3>: three. (line 377)
+ (line 117)
+* box <1>: three. (line 375)
+* box <2>: three. (line 377)
* bp: Drawing in batch mode.
(line 23)
* brace: Paths and guides. (line 51)
-* break: Programming. (line 48)
+* break: Programming. (line 49)
* breakpoints: Debugger. (line 21)
-* brick: Pens. (line 285)
+* brick: Pens. (line 338)
* broken axis: graph. (line 822)
* bug reports: Help. (line 19)
* buildcycle: Paths and guides. (line 270)
@@ -9283,8 +9452,6 @@ Index
* BWRainbow2: palette. (line 18)
* C string: Data types. (line 217)
* CAD: CAD. (line 6)
-* calculateTransform: Frames and pictures.
- (line 118)
* camera: three. (line 422)
* casts: Casts. (line 6)
* cbrt: Mathematical functions.
@@ -9292,10 +9459,10 @@ Index
* cd: Files. (line 26)
* ceil: Mathematical functions.
(line 26)
-* Center: label. (line 60)
+* Center: label. (line 67)
* center: three. (line 405)
-* checker: Pens. (line 285)
-* Chinese: Pens. (line 244)
+* checker: Pens. (line 338)
+* Chinese: Pens. (line 297)
* choose: Mathematical functions.
(line 39)
* Ci: Mathematical functions.
@@ -9305,7 +9472,7 @@ Index
* circle <1>: three. (line 349)
* circle <2>: flowchart. (line 61)
* circlebarframe: markers. (line 18)
-* CJK: Pens. (line 244)
+* CJK: Pens. (line 297)
* clamped: graph. (line 36)
* clang: Compiling from UNIX source.
(line 48)
@@ -9337,7 +9504,7 @@ Index
(line 6)
* complement: Arrays. (line 149)
* concat: Arrays. (line 179)
-* conditional: Programming. (line 26)
+* conditional: Programming. (line 27)
* conditional <1>: Arithmetic & logical.
(line 61)
* config: Configuring. (line 69)
@@ -9348,17 +9515,14 @@ Index
* conj: Data types. (line 62)
* constructors: Structures. (line 91)
* context: Options. (line 188)
-* continue: Programming. (line 48)
+* continue: Programming. (line 49)
* continue <1>: Debugger. (line 31)
* contour: contour. (line 6)
* contour3: contour3. (line 6)
* controls: Bezier curves. (line 45)
* controls <1>: three. (line 6)
-* controlSpecifier: Paths and guides. (line 396)
-* convert: Configuring. (line 69)
-* convert <1>: Files. (line 159)
-* convert <2>: animation. (line 6)
-* convert <3>: Options. (line 188)
+* controlSpecifier: Paths and guides. (line 397)
+* convert: Files. (line 159)
* convertOptions: Options. (line 174)
* Coons shading: fill. (line 78)
* copy: Arrays. (line 176)
@@ -9368,21 +9532,22 @@ Index
(line 20)
* cosh: Mathematical functions.
(line 6)
-* cputime: Structures. (line 169)
+* cputime: Mathematical functions.
+ (line 109)
* crop: graph. (line 640)
* cropping graphs: graph. (line 640)
* cross: Data types. (line 106)
* cross <1>: Data types. (line 197)
* cross <2>: graph. (line 481)
* crossframe: markers. (line 22)
-* crosshatch: Pens. (line 302)
+* crosshatch: Pens. (line 355)
* csv: Arrays. (line 382)
* CTZ: Arithmetic & logical.
(line 68)
* cubicroots: Arrays. (line 339)
* curl: Bezier curves. (line 66)
* curl <1>: three. (line 6)
-* curlSpecifier: Paths and guides. (line 408)
+* curlSpecifier: Paths and guides. (line 409)
* currentlight: three. (line 76)
* currentpen: Pens. (line 6)
* currentprojection: three. (line 449)
@@ -9395,10 +9560,10 @@ Index
* cycle <1>: Paths. (line 16)
* cycle <2>: three. (line 6)
* cyclic: Paths and guides. (line 85)
-* cyclic <1>: Paths and guides. (line 376)
+* cyclic <1>: Paths and guides. (line 377)
* cyclic <2>: Arrays. (line 39)
* cyclic <3>: three. (line 566)
-* Cyrillic: Pens. (line 238)
+* Cyrillic: Pens. (line 291)
* dashdotted: Pens. (line 102)
* dashed: Pens. (line 102)
* data types: Data types. (line 6)
@@ -9406,21 +9571,22 @@ Index
* Debian: UNIX binary distributions.
(line 19)
* debugger: Debugger. (line 6)
-* declaration: Programming. (line 26)
+* declaration: Programming. (line 27)
* deconstruct: GUI usage. (line 6)
* default arguments: Default arguments. (line 6)
* defaultformat: graph. (line 176)
-* DefaultHead: draw. (line 26)
+* DefaultHead: draw. (line 50)
* DefaultHead3: three. (line 632)
* defaultpen: Pens. (line 49)
* defaultpen <1>: Pens. (line 122)
* defaultpen <2>: Pens. (line 127)
* defaultpen <3>: Pens. (line 139)
-* defaultpen <4>: Pens. (line 192)
-* defaultpen <5>: Pens. (line 363)
-* defaultpen <6>: Pens. (line 387)
+* defaultpen <4>: Pens. (line 245)
+* defaultpen <5>: Pens. (line 416)
+* defaultpen <6>: Pens. (line 440)
* defaultrender: three. (line 46)
* deferred drawing: simplex. (line 6)
+* deferred drawing <1>: simplex2. (line 6)
* degrees: Data types. (line 78)
* degrees <1>: Mathematical functions.
(line 17)
@@ -9442,31 +9608,31 @@ Index
* dir <4>: three. (line 566)
* direction specifier: Bezier curves. (line 6)
* directory: Files. (line 26)
-* dirSpecifier: Paths and guides. (line 390)
+* dirSpecifier: Paths and guides. (line 391)
* dirtime: Paths and guides. (line 166)
* display: Configuring. (line 15)
-* do: Programming. (line 48)
+* do: Programming. (line 49)
* DOSendl: Files. (line 65)
* DOSnewl: Files. (line 65)
-* dot: draw. (line 83)
+* dot: draw. (line 117)
* dot <1>: Data types. (line 103)
* dot <2>: Data types. (line 194)
* dot <3>: Arrays. (line 279)
* dot <4>: Arrays. (line 282)
-* DotMargin: draw. (line 42)
+* DotMargin: draw. (line 83)
* DotMargin3: three. (line 648)
-* DotMargins: draw. (line 42)
+* DotMargins: draw. (line 89)
* DotMargins3: three. (line 648)
* dotted: Pens. (line 102)
* double deferred drawing: three. (line 327)
* double precision: Files. (line 80)
* draw: Drawing commands. (line 34)
* draw <1>: draw. (line 6)
-* Draw: draw. (line 26)
-* draw <2>: draw. (line 113)
-* Draw <1>: Frames and pictures.
- (line 160)
+* draw <2>: draw. (line 147)
+* Draw: Frames and pictures.
+ (line 147)
* draw <3>: three. (line 154)
+* drawer: Deferred drawing. (line 31)
* drawing commands: Drawing commands. (line 6)
* drawline: math. (line 9)
* drawtree: drawtree. (line 6)
@@ -9483,40 +9649,37 @@ Index
* Ei: Mathematical functions.
(line 48)
* ellipse: Paths and guides. (line 45)
-* ellipse <1>: Frames and pictures.
- (line 25)
* elliptic functions: Mathematical functions.
(line 48)
-* else: Programming. (line 26)
+* else: Programming. (line 27)
* emacs: Editing modes. (line 6)
* embed: embed. (line 6)
* Embedded: three. (line 536)
* emissivepen: three. (line 66)
* empty: Frames and pictures.
(line 7)
-* EndArcArrow: draw. (line 26)
+* EndArcArrow: draw. (line 30)
* EndArcArrow3: three. (line 632)
* EndArrow: draw. (line 26)
* EndArrow3: three. (line 632)
* EndBar: draw. (line 19)
* EndBar3: three. (line 632)
-* EndDotMargin: draw. (line 42)
+* EndDotMargin: draw. (line 89)
* EndDotMargin3: three. (line 648)
* endl: Files. (line 65)
-* EndMargin: draw. (line 42)
+* EndMargin: draw. (line 69)
* EndMargin3: three. (line 648)
-* EndPenMargin: draw. (line 42)
+* EndPenMargin: draw. (line 78)
* EndPenMargin2: three. (line 648)
* EndPenMargin3: three. (line 648)
-* EndPoint: label. (line 55)
-* envelope: Frames and pictures.
- (line 25)
+* EndPoint: label. (line 62)
+* envelope: label. (line 111)
* environment variables: Configuring. (line 90)
* eof: Files. (line 97)
* eof <1>: Arrays. (line 364)
* eol: Files. (line 97)
* eol <1>: Arrays. (line 364)
-* EPS: label. (line 78)
+* EPS: label. (line 85)
* EPS <1>: Options. (line 188)
* erase: Drawing in interactive mode.
(line 11)
@@ -9524,7 +9687,7 @@ Index
* erase <2>: Frames and pictures.
(line 7)
* erase <3>: Frames and pictures.
- (line 284)
+ (line 271)
* erf: Mathematical functions.
(line 6)
* erfc: Mathematical functions.
@@ -9572,27 +9735,25 @@ Index
(line 62)
* file: Files. (line 6)
* file <1>: Debugger. (line 44)
-* Fill: draw. (line 26)
-* fill: draw. (line 118)
+* fill: draw. (line 152)
* fill <1>: fill. (line 6)
* fill <2>: fill. (line 17)
-* Fill <1>: Frames and pictures.
- (line 146)
-* FillDraw: draw. (line 26)
+* Fill: Frames and pictures.
+ (line 133)
* filldraw: fill. (line 11)
-* FillDraw <1>: Frames and pictures.
- (line 136)
+* FillDraw: Frames and pictures.
+ (line 123)
* filloutside: fill. (line 27)
* fillrule: Pens. (line 164)
+* filltype: Frames and pictures.
+ (line 122)
* find: Data types. (line 242)
* find <1>: Arrays. (line 158)
* findall: Arrays. (line 163)
* firstcut: Paths and guides. (line 262)
-* fit: Frames and pictures.
- (line 113)
* fit3: three. (line 340)
* fixedscaling: Frames and pictures.
- (line 81)
+ (line 68)
* floor: Mathematical functions.
(line 26)
* flowchart: flowchart. (line 6)
@@ -9600,13 +9761,13 @@ Index
* flush <1>: Files. (line 97)
* fmod: Mathematical functions.
(line 6)
-* font: Pens. (line 206)
-* font <1>: Pens. (line 206)
-* font <2>: Pens. (line 235)
-* font encoding: Pens. (line 235)
-* fontcommand: Pens. (line 219)
-* fontsize: Pens. (line 192)
-* for: Programming. (line 26)
+* font: Pens. (line 259)
+* font <1>: Pens. (line 259)
+* font <2>: Pens. (line 288)
+* font encoding: Pens. (line 288)
+* fontcommand: Pens. (line 272)
+* fontsize: Pens. (line 245)
+* for: Programming. (line 27)
* format: Data types. (line 290)
* format <1>: Options. (line 188)
* forum: Help. (line 6)
@@ -9645,14 +9806,14 @@ Index
* gradient shading: fill. (line 32)
* graph: graph. (line 6)
* graph3: graph3. (line 6)
-* graphic: label. (line 78)
+* graphic: label. (line 85)
* graphic <1>: Options. (line 193)
* graphical user interface: GUI. (line 6)
* graphwithderiv: graph. (line 671)
* gray: Pens. (line 25)
* grayscale: Pens. (line 25)
* Grayscale: palette. (line 9)
-* grid: Pens. (line 285)
+* grid: Pens. (line 338)
* grid <1>: graph. (line 767)
* grid3: grid3. (line 6)
* gs: Configuring. (line 15)
@@ -9664,9 +9825,9 @@ Index
* GUI: GUI. (line 6)
* GUI installation: GUI installation. (line 6)
* GUI usage: GUI usage. (line 6)
-* guide: Paths and guides. (line 314)
+* guide: Paths and guides. (line 315)
* guide3: three. (line 6)
-* hatch: Pens. (line 302)
+* hatch: Pens. (line 355)
* Headlamp: three. (line 76)
* height: LaTeX usage. (line 47)
* help: Interactive mode. (line 42)
@@ -9684,7 +9845,7 @@ Index
* history: Files. (line 147)
* history <1>: Interactive mode. (line 54)
* historylines: Interactive mode. (line 58)
-* HookHead: draw. (line 26)
+* HookHead: draw. (line 50)
* HookHead3: three. (line 632)
* Horizontal: flowchart. (line 77)
* HTML5: three. (line 233)
@@ -9696,6 +9857,8 @@ Index
(line 6)
* I: Mathematical functions.
(line 48)
+* i_scaled: Mathematical functions.
+ (line 48)
* ibl: three. (line 104)
* iconify: three. (line 261)
* identity: Transforms. (line 24)
@@ -9703,9 +9866,9 @@ Index
(line 6)
* identity <2>: Arrays. (line 321)
* identity4: three. (line 504)
-* if: Programming. (line 26)
+* if: Programming. (line 27)
* IgnoreAspect: Frames and pictures.
- (line 63)
+ (line 50)
* image: palette. (line 33)
* image <1>: palette. (line 61)
* image-based lighting: three. (line 104)
@@ -9722,10 +9885,10 @@ Index
* inches: Figure size. (line 18)
* incircle: Data types. (line 120)
* include: Import. (line 131)
-* including images: label. (line 78)
+* including images: label. (line 85)
* increasing: math. (line 55)
* inf: Data types. (line 35)
-* inheritance: Structures. (line 182)
+* inheritance: Structures. (line 124)
* initialized: Arrays. (line 39)
* initializers: Variable initializers.
(line 6)
@@ -9735,7 +9898,7 @@ Index
* input <1>: Files. (line 12)
* input <2>: Interactive mode. (line 45)
* input <3>: Interactive mode. (line 49)
-* input encoding: Pens. (line 235)
+* input encoding: Pens. (line 288)
* insert: Data types. (line 253)
* insert <1>: Arrays. (line 39)
* inside: Paths and guides. (line 294)
@@ -9779,49 +9942,48 @@ Index
* invert: three. (line 494)
* invisible: Pens. (line 43)
* isnan: Data types. (line 35)
-* i_scaled: Mathematical functions.
- (line 48)
* J: Mathematical functions.
(line 6)
* J <1>: Mathematical functions.
(line 48)
-* Japanese: Pens. (line 244)
+* Japanese: Pens. (line 297)
* K: Mathematical functions.
(line 48)
+* k_scaled: Mathematical functions.
+ (line 48)
* Kate: Editing modes. (line 48)
* KDE editor: Editing modes. (line 48)
* keepAspect: Frames and pictures.
- (line 59)
+ (line 46)
* keepAspect <1>: Frames and pictures.
- (line 63)
+ (line 50)
* keepAspect <2>: LaTeX usage. (line 47)
* keyboard bindings:: three. (line 211)
* keys: Arrays. (line 39)
* keyword: Named arguments. (line 37)
* keyword-only: Named arguments. (line 37)
* keywords: Named arguments. (line 6)
-* Korean: Pens. (line 244)
-* k_scaled: Mathematical functions.
- (line 48)
+* Korean: Pens. (line 297)
* label: Labels. (line 6)
-* Label: draw. (line 101)
+* Label: draw. (line 135)
* label <1>: label. (line 6)
-* Label <1>: label. (line 14)
+* Label <1>: label. (line 21)
* Label <2>: graph. (line 331)
* label <2>: three. (line 530)
+* labelmargin: label. (line 6)
* labelpath: labelpath. (line 6)
* labelpath3: labelpath3. (line 6)
* labelx: graph. (line 331)
* labely: graph. (line 331)
* Landscape: Frames and pictures.
- (line 103)
-* language context: Pens. (line 235)
+ (line 90)
+* language context: Pens. (line 288)
* language server protocol: Language server protocol.
(line 6)
* lastcut: Paths and guides. (line 266)
* lasy-mode: Editing modes. (line 6)
* latex: Options. (line 188)
-* LaTeX NFSS fonts: Pens. (line 206)
+* LaTeX NFSS fonts: Pens. (line 259)
* LaTeX usage: LaTeX usage. (line 6)
* latexmk: LaTeX usage. (line 30)
* latitude: Data types. (line 164)
@@ -9831,12 +9993,12 @@ Index
* leastsquares <1>: graph. (line 948)
* Left: graph. (line 270)
* LeftRight: graph. (line 276)
-* LeftSide: label. (line 60)
+* LeftSide: label. (line 67)
* LeftTicks: graph. (line 161)
* LeftTicks <1>: graph. (line 234)
* LeftView: three. (line 452)
* legend: Drawing commands. (line 34)
-* legend <1>: draw. (line 65)
+* legend <1>: draw. (line 99)
* legend <2>: graph. (line 425)
* Legendre: Mathematical functions.
(line 48)
@@ -9844,7 +10006,7 @@ Index
* length <1>: Data types. (line 144)
* length <2>: Data types. (line 239)
* length <3>: Paths and guides. (line 76)
-* length <4>: Paths and guides. (line 373)
+* length <4>: Paths and guides. (line 374)
* length <5>: Arrays. (line 39)
* length <6>: three. (line 566)
* letter: Configuring. (line 63)
@@ -9864,7 +10026,7 @@ Index
* Linear: graph. (line 711)
* linecap: Pens. (line 139)
* linejoin: Pens. (line 149)
-* lineskip: Pens. (line 192)
+* lineskip: Pens. (line 245)
* linetype: Pens. (line 123)
* linewidth: Pens. (line 127)
* locale: Data types. (line 316)
@@ -9883,7 +10045,7 @@ Index
* longdashdotted: Pens. (line 102)
* longdashed: Pens. (line 102)
* longitude: Data types. (line 169)
-* loop: Programming. (line 26)
+* loop: Programming. (line 27)
* LSP: Language server protocol.
(line 6)
* lualatex: Options. (line 188)
@@ -9892,15 +10054,18 @@ Index
(line 6)
* MacOS X configuration: Compiling from UNIX source.
(line 48)
-* makepen: Pens. (line 338)
+* magick: Configuring. (line 69)
+* magick <1>: Files. (line 159)
+* magick <2>: animation. (line 6)
+* magick <3>: Options. (line 188)
+* makepen: Pens. (line 391)
* map: Arrays. (line 135)
* map <1>: Arrays. (line 140)
* map <2>: map. (line 6)
-* Margin: draw. (line 42)
-* Margin <1>: draw. (line 42)
+* Margin: draw. (line 69)
* Margin3: three. (line 648)
* Margin3 <1>: three. (line 648)
-* Margins: draw. (line 42)
+* Margins: draw. (line 70)
* margins: three. (line 333)
* Margins3: three. (line 648)
* mark: graph. (line 481)
@@ -9933,11 +10098,11 @@ Index
* MetaPost pickup: Pens. (line 6)
* MetaPost whatever: MetaPost. (line 10)
* Microsoft Windows: Microsoft Windows. (line 6)
-* MidArcArrow: draw. (line 26)
+* MidArcArrow: draw. (line 30)
* MidArcArrow3: three. (line 632)
* MidArrow: draw. (line 26)
* MidArrow3: three. (line 632)
-* MidPoint: label. (line 55)
+* MidPoint: label. (line 62)
* midpoint: Paths and guides. (line 180)
* min: Paths and guides. (line 275)
* min <1>: Frames and pictures.
@@ -9947,7 +10112,7 @@ Index
* min <4>: three. (line 566)
* minbound: Data types. (line 131)
* minbound <1>: Data types. (line 202)
-* minipage: label. (line 116)
+* minipage: label. (line 125)
* mintimes: Paths and guides. (line 228)
* miterjoin: Pens. (line 149)
* miterlimit: Pens. (line 159)
@@ -9960,8 +10125,8 @@ Index
* mouse: GUI. (line 6)
* mouse bindings: three. (line 192)
* mouse wheel: GUI usage. (line 6)
-* Move: Pens. (line 375)
-* MoveQuiet: Pens. (line 381)
+* Move: Pens. (line 428)
+* MoveQuiet: Pens. (line 434)
* multisample: three. (line 184)
* N: Labels. (line 18)
* name: Files. (line 93)
@@ -9981,58 +10146,58 @@ Index
(line 73)
* next: Debugger. (line 41)
* nobasealign: Pens. (line 181)
-* NoFill: draw. (line 26)
-* NoFill <1>: Frames and pictures.
- (line 154)
+* NoFill: Frames and pictures.
+ (line 141)
* noglobalread: Files. (line 26)
* noglobalread <1>: Files. (line 40)
* nolight: three. (line 76)
-* NoMargin: draw. (line 42)
+* NoMargin: draw. (line 67)
* NoMargin3: three. (line 648)
* None: draw. (line 19)
* None <1>: draw. (line 26)
* none: Files. (line 65)
* normal: three. (line 552)
-* nosafe: Options. (line 211)
+* nosafe: Options. (line 209)
* NOT: Arithmetic & logical.
(line 68)
* notaknot: graph. (line 36)
* NoTicks: graph. (line 161)
* NoTicks3: graph3. (line 35)
* null: Structures. (line 6)
-* nullpen: label. (line 14)
+* nullpen: label. (line 21)
* nullpen <1>: Frames and pictures.
- (line 140)
+ (line 127)
* nullpen <2>: Frames and pictures.
- (line 149)
+ (line 136)
* NURBS: three. (line 432)
* O: three. (line 345)
* obj: obj. (line 6)
+* object: label. (line 111)
* oblique: three. (line 388)
* obliqueX: three. (line 395)
* obliqueY: three. (line 401)
* obliqueZ: three. (line 388)
* ode: ode. (line 6)
* offset: Pens. (line 123)
-* offset <1>: Options. (line 216)
+* offset <1>: Options. (line 214)
* OmitTick: graph. (line 224)
* OmitTickInterval: graph. (line 224)
* OmitTickIntervals: graph. (line 224)
-* opacity: Pens. (line 254)
+* opacity: Pens. (line 307)
* opacity <1>: three. (line 66)
* open: Files. (line 12)
* OpenGL: three. (line 184)
* operator: User-defined operators.
(line 6)
-* operator +(...string[] a).: Data types. (line 284)
* operator --: graph. (line 30)
* operator ..: graph. (line 33)
+* operator +(...string[] a).: Data types. (line 284)
* operator answer: Interactive mode. (line 35)
* operator cast: Casts. (line 38)
* operator ecast: Casts. (line 65)
* operator init: Variable initializers.
(line 6)
-* operator init <1>: Structures. (line 134)
+* operator init <1>: Structures. (line 105)
* operators: Operators. (line 6)
* options: Options. (line 6)
* OR: Arithmetic & logical.
@@ -10040,22 +10205,22 @@ Index
* orient: Data types. (line 108)
* orient <1>: three. (line 583)
* orientation: Frames and pictures.
- (line 103)
+ (line 90)
* orthographic: three. (line 405)
* outformat: three. (line 184)
* outprefix: Frames and pictures.
- (line 91)
+ (line 78)
* output: Files. (line 38)
* output <1>: Options. (line 188)
* OutTicks: graph3. (line 35)
* overloading functions: Functions. (line 55)
-* overwrite: Pens. (line 360)
+* overwrite: Pens. (line 413)
* P: Mathematical functions.
(line 48)
-* pack: label. (line 100)
+* pack: label. (line 109)
* packing: Rest arguments. (line 30)
* pad: Frames and pictures.
- (line 186)
+ (line 173)
* pair: Figure size. (line 6)
* pair <1>: Data types. (line 46)
* pairs: Arrays. (line 245)
@@ -10073,10 +10238,10 @@ Index
* path <2>: three. (line 42)
* path <3>: flowchart. (line 77)
* path markers: graph. (line 481)
+* path[]: Paths. (line 23)
* path3: three. (line 6)
* path3 <1>: three. (line 42)
-* path[]: Paths. (line 23)
-* patterns: Pens. (line 271)
+* patterns: Pens. (line 324)
* patterns <1>: patterns. (line 6)
* PBR: three. (line 74)
* PDF: Options. (line 188)
@@ -10085,10 +10250,10 @@ Index
* pdfviewer: Configuring. (line 15)
* pdfviewerOptions: Options. (line 174)
* pen: Pens. (line 6)
-* PenMargin: draw. (line 42)
+* PenMargin: draw. (line 78)
* PenMargin2: three. (line 648)
* PenMargin3: three. (line 648)
-* PenMargins: draw. (line 42)
+* PenMargins: draw. (line 79)
* PenMargins2: three. (line 648)
* PenMargins3: three. (line 648)
* periodic: graph. (line 36)
@@ -10097,9 +10262,17 @@ Index
* perspective: three. (line 432)
* physically based rendering: three. (line 74)
* picture: Frames and pictures.
- (line 39)
+ (line 26)
* picture alignment: Frames and pictures.
- (line 231)
+ (line 218)
+* picture.add: Deferred drawing. (line 31)
+* picture.addPoint: Deferred drawing. (line 51)
+* picture.calculateTransform: Frames and pictures.
+ (line 105)
+* picture.fit: Frames and pictures.
+ (line 100)
+* picture.scale: Frames and pictures.
+ (line 110)
* piecewisestraight: Paths and guides. (line 92)
* pixel: three. (line 655)
* Pl: Mathematical functions.
@@ -10109,14 +10282,14 @@ Index
* plane: three. (line 371)
* planeproject: three. (line 549)
* point: Paths and guides. (line 95)
-* point <1>: Paths and guides. (line 379)
+* point <1>: Paths and guides. (line 380)
* point <2>: three. (line 566)
* polar: Data types. (line 149)
* polargraph: graph. (line 89)
* polygon: graph. (line 481)
* pop: Arrays. (line 39)
* Portrait: Frames and pictures.
- (line 103)
+ (line 90)
* position: three. (line 76)
* position <1>: three. (line 184)
* postcontrol: Paths and guides. (line 146)
@@ -10124,8 +10297,8 @@ Index
* postfix operators: Self & prefix operators.
(line 19)
* postscript: Frames and pictures.
- (line 297)
-* PostScript fonts: Pens. (line 222)
+ (line 284)
+* PostScript fonts: Pens. (line 275)
* PostScript subpath: Paths. (line 23)
* pow10: Mathematical functions.
(line 6)
@@ -10158,9 +10331,9 @@ Index
(line 6)
* radialshade: fill. (line 52)
* RadialShade: Frames and pictures.
- (line 172)
+ (line 159)
* RadialShadeDraw: Frames and pictures.
- (line 176)
+ (line 163)
* radians: Mathematical functions.
(line 17)
* radius: Paths and guides. (line 135)
@@ -10185,8 +10358,8 @@ Index
* recursion: Functions. (line 100)
* reference: Description. (line 92)
* reflect: Transforms. (line 42)
-* Relative: label. (line 50)
-* Relative <1>: label. (line 60)
+* Relative: label. (line 57)
+* Relative <1>: label. (line 67)
* relpoint: Paths and guides. (line 176)
* reltime: Paths and guides. (line 172)
* remainder: Mathematical functions.
@@ -10196,15 +10369,15 @@ Index
* render <1>: three. (line 184)
* render <2>: Options. (line 188)
* replace: Data types. (line 270)
-* resetdefaultpen: Pens. (line 387)
+* resetdefaultpen: Pens. (line 440)
* rest arguments: Rest arguments. (line 6)
* restore: Frames and pictures.
- (line 291)
+ (line 278)
* restricted: Structures. (line 6)
* return: Debugger. (line 47)
* reverse: Data types. (line 266)
* reverse <1>: Paths and guides. (line 183)
-* reverse <2>: Paths and guides. (line 382)
+* reverse <2>: Paths and guides. (line 383)
* reverse <3>: Arrays. (line 145)
* reverse <4>: three. (line 566)
* rewind: Files. (line 97)
@@ -10215,13 +10388,13 @@ Index
* Riemann zeta function: Mathematical functions.
(line 48)
* Right: graph. (line 273)
-* RightSide: label. (line 60)
+* RightSide: label. (line 67)
* RightTicks: graph. (line 161)
* RightTicks <1>: graph. (line 234)
* RightView: three. (line 452)
-* Rotate: label. (line 36)
+* Rotate: label. (line 43)
* rotate: three. (line 520)
-* Rotate(pair z): label. (line 39)
+* Rotate(pair z): label. (line 46)
* round: Mathematical functions.
(line 26)
* roundcap: Pens. (line 139)
@@ -10231,13 +10404,13 @@ Index
* RPM: UNIX binary distributions.
(line 6)
* runtime imports: Import. (line 102)
-* Russian: Pens. (line 238)
+* Russian: Pens. (line 291)
* S: Labels. (line 18)
-* safe: Options. (line 211)
+* safe: Options. (line 209)
* save: Frames and pictures.
- (line 288)
+ (line 275)
* saveline: Files. (line 139)
-* Scale: label. (line 45)
+* Scale: label. (line 52)
* scale: Pens. (line 123)
* scale <1>: Transforms. (line 34)
* scale <2>: Transforms. (line 36)
@@ -10254,7 +10427,7 @@ Index
* search <1>: Arrays. (line 172)
* search paths: Search paths. (line 6)
* Seascape: Frames and pictures.
- (line 110)
+ (line 97)
* secondary axis: graph. (line 854)
* secondaryX: graph. (line 854)
* secondaryY: graph. (line 854)
@@ -10271,7 +10444,7 @@ Index
* sgn: Mathematical functions.
(line 26)
* shading: fill. (line 32)
-* Shift: label. (line 33)
+* Shift: label. (line 40)
* shift: Transforms. (line 26)
* shift <1>: Transforms. (line 28)
* shift <2>: Transforms. (line 46)
@@ -10279,14 +10452,15 @@ Index
* shiftless: Transforms. (line 46)
* shininess: three. (line 66)
* shipout: Frames and pictures.
- (line 91)
+ (line 78)
* showtarget: three. (line 405)
* Si: Mathematical functions.
(line 48)
* signedint: Files. (line 80)
* signedint <1>: Files. (line 93)
-* SimpleHead: draw. (line 26)
+* SimpleHead: draw. (line 50)
* simplex: simplex. (line 6)
+* simplex2: simplex2. (line 6)
* simpson: Mathematical functions.
(line 82)
* sin: Mathematical functions.
@@ -10305,15 +10479,15 @@ Index
* SixViewsUS: three. (line 467)
* size: Figure size. (line 6)
* size <1>: Paths and guides. (line 81)
-* size <2>: Paths and guides. (line 370)
+* size <2>: Paths and guides. (line 371)
* size <3>: Frames and pictures.
- (line 48)
+ (line 35)
* size <4>: Frames and pictures.
- (line 74)
+ (line 61)
* size <5>: three. (line 566)
* size <6>: Options. (line 188)
* size3: three. (line 330)
-* Slant: label. (line 42)
+* Slant: label. (line 49)
* slant: Transforms. (line 38)
* sleep: Data types. (line 376)
* slice: Paths and guides. (line 251)
@@ -10363,19 +10537,19 @@ Index
* string <1>: Data types. (line 312)
* stroke: fill. (line 36)
* stroke <1>: clip. (line 6)
-* strokepath: Paths and guides. (line 309)
+* strokepath: Paths and guides. (line 310)
* strptime: Data types. (line 330)
* struct: Structures. (line 6)
* structures: Structures. (line 6)
* subpath: Paths and guides. (line 186)
* subpath <1>: three. (line 566)
* subpictures: Frames and pictures.
- (line 113)
+ (line 100)
* substr: Data types. (line 262)
* sum: Arrays. (line 220)
* superpath: Paths. (line 23)
-* Suppress: Pens. (line 367)
-* SuppressQuiet: Pens. (line 371)
+* Suppress: Pens. (line 420)
+* SuppressQuiet: Pens. (line 424)
* surface: three. (line 46)
* surface <1>: three. (line 104)
* surface <2>: three. (line 128)
@@ -10384,7 +10558,7 @@ Index
* surface <5>: graph3. (line 128)
* SVG: Options. (line 193)
* system: Data types. (line 354)
-* system <1>: Options. (line 211)
+* system <1>: Options. (line 209)
* syzygy: syzygy. (line 6)
* tab: Files. (line 65)
* tab completion: Drawing in interactive mode.
@@ -10400,24 +10574,24 @@ Index
* template: Templated imports. (line 6)
* tension: Bezier curves. (line 56)
* tension <1>: three. (line 6)
-* tensionSpecifier: Paths and guides. (line 402)
+* tensionSpecifier: Paths and guides. (line 403)
* tensor product shading: fill. (line 78)
* tensorshade: fill. (line 78)
* tessellation: three. (line 154)
* tex: Frames and pictures.
- (line 305)
+ (line 292)
* tex <1>: Options. (line 188)
-* TeX fonts: Pens. (line 213)
+* TeX fonts: Pens. (line 266)
* TeX string: Data types. (line 208)
* texcommand: Configuring. (line 69)
-* TeXHead: draw. (line 26)
+* TeXHead: draw. (line 50)
* TeXHead3: three. (line 632)
* texpath: Configuring. (line 69)
-* texpath <1>: label. (line 113)
+* texpath <1>: label. (line 122)
* texpreamble: Frames and pictures.
- (line 314)
+ (line 301)
* texreset: Frames and pictures.
- (line 318)
+ (line 305)
* textbook graph: graph. (line 361)
* tgz: UNIX binary distributions.
(line 6)
@@ -10433,8 +10607,8 @@ Index
* Ticks: graph. (line 161)
* Ticks <1>: graph. (line 234)
* tildeframe: markers. (line 24)
-* tile: Pens. (line 285)
-* tilings: Pens. (line 271)
+* tile: Pens. (line 338)
+* tilings: Pens. (line 324)
* time: Data types. (line 321)
* time <1>: Data types. (line 346)
* time <2>: math. (line 26)
@@ -10448,7 +10622,7 @@ Index
* transform: Transforms. (line 6)
* transform <1>: three. (line 541)
* transform3: three. (line 504)
-* transparency: Pens. (line 254)
+* transparency: Pens. (line 307)
* transparent: three. (line 97)
* transpose: Arrays. (line 212)
* transpose <1>: Arrays. (line 215)
@@ -10461,22 +10635,21 @@ Index
* trigonometric integrals: Mathematical functions.
(line 48)
* triple: Data types. (line 137)
-* TrueMargin: draw. (line 42)
+* TrueMargin: draw. (line 90)
* TrueMargin3: three. (line 648)
* tube: three. (line 166)
* tube <1>: tube. (line 6)
* tutorial: Tutorial. (line 6)
-* type1cm: Pens. (line 192)
+* type1cm: Pens. (line 245)
* typedef: Data types. (line 385)
* typedef <1>: Functions. (line 46)
* U3D: embed. (line 22)
* undefined: Paths and guides. (line 283)
-* UnFill: draw. (line 26)
* unfill: fill. (line 110)
+* UnFill: Frames and pictures.
+ (line 152)
* UnFill <1>: Frames and pictures.
- (line 165)
-* UnFill <2>: Frames and pictures.
- (line 168)
+ (line 155)
* uniform: Arrays. (line 154)
* uninstall: Uninstall. (line 6)
* unique: math. (line 59)
@@ -10491,7 +10664,7 @@ Index
(line 39)
* unitsize: Figure size. (line 39)
* unitsize <1>: Frames and pictures.
- (line 69)
+ (line 56)
* UNIX binary distributions: UNIX binary distributions.
(line 6)
* unpacking: Rest arguments. (line 39)
@@ -10499,12 +10672,12 @@ Index
* up: three. (line 405)
* update: Files. (line 38)
* UpsideDown: Frames and pictures.
- (line 103)
+ (line 90)
* UpsideDown <1>: Frames and pictures.
- (line 111)
+ (line 98)
* URL: Import. (line 94)
* usepackage: Frames and pictures.
- (line 321)
+ (line 308)
* user coordinates: Figure size. (line 39)
* user-defined operators: User-defined operators.
(line 6)
@@ -10521,7 +10694,7 @@ Index
* vectorfield3: graph3. (line 167)
* vectorization: Arrays. (line 343)
* verbatim: Frames and pictures.
- (line 297)
+ (line 284)
* vertex-dependent colors: three. (line 119)
* Vertical: flowchart. (line 77)
* Viewport: three. (line 76)
@@ -10531,14 +10704,15 @@ Index
* viewportwidth: LaTeX usage. (line 47)
* views: three. (line 279)
* vim: Editing modes. (line 32)
-* virtual functions: Structures. (line 182)
+* virtual functions: Structures. (line 124)
* void: Data types. (line 10)
* W: Labels. (line 18)
+* warn: Configuring. (line 79)
* WebGL: three. (line 233)
* whatever: Paths and guides. (line 246)
* Wheel: palette. (line 22)
* wheel mouse: GUI. (line 6)
-* while: Programming. (line 48)
+* while: Programming. (line 49)
* White: three. (line 76)
* white-space string delimiter mode: Arrays. (line 374)
* width: LaTeX usage. (line 47)
@@ -10589,8 +10763,6 @@ Index
* YZZero: graph3. (line 21)
* Z: three. (line 345)
* zaxis3: graph3. (line 7)
-* zeroTransform: Transforms. (line 44)
-* zerowinding: Pens. (line 164)
* zero_Ai: Mathematical functions.
(line 48)
* zero_Ai_deriv: Mathematical functions.
@@ -10601,6 +10773,8 @@ Index
(line 48)
* zero_J: Mathematical functions.
(line 48)
+* zeroTransform: Transforms. (line 44)
+* zerowinding: Pens. (line 164)
* zeta: Mathematical functions.
(line 48)
* zpart: Data types. (line 191)
@@ -10612,154 +10786,158 @@ Index

Tag Table:
-Node: Top575
-Node: Description7476
-Node: Installation11883
-Node: UNIX binary distributions12969
-Node: MacOS X binary distributions14146
-Node: Microsoft Windows14758
-Node: Configuring15999
-Node: Search paths20514
-Node: Compiling from UNIX source21608
-Node: Editing modes24913
-Node: Git27493
-Node: Uninstall28016
-Node: Tutorial28370
-Node: Drawing in batch mode29241
-Node: Drawing in interactive mode30165
-Node: Figure size31235
-Node: Labels32922
-Node: Paths33814
-Ref: unitcircle34454
-Node: Drawing commands36447
-Node: draw38317
-Ref: arrows39583
-Node: fill45454
-Ref: gradient shading46536
-Node: clip51382
-Node: label52159
-Ref: Label52807
-Node: Bezier curves58904
-Node: Programming62874
-Ref: array iteration64655
-Node: Data types64822
-Ref: format76484
-Node: Paths and guides81156
-Ref: circle81418
-Ref: extension91770
-Node: Pens98944
-Ref: fillrule107085
-Ref: basealign108043
-Ref: transparency111833
-Ref: makepen115557
-Ref: overwrite116463
-Node: Transforms117723
-Node: Frames and pictures119820
-Ref: envelope121038
-Ref: size122155
-Ref: unitsize123222
-Ref: shipout124351
-Ref: filltype126737
-Ref: add130366
-Ref: add about131364
-Ref: tex134482
-Node: Files135393
-Ref: cd136486
-Ref: scroll141634
-Node: Variable initializers144744
-Node: Structures147625
-Node: Operators155455
-Node: Arithmetic & logical155769
-Node: Self & prefix operators158323
-Node: User-defined operators159181
-Node: Implicit scaling160118
-Node: Functions160681
-Ref: stack overflow163826
-Node: Default arguments164112
-Node: Named arguments164884
-Node: Rest arguments167538
-Node: Mathematical functions170695
-Node: Arrays175856
-Ref: sort183954
-Ref: tridiagonal187512
-Ref: solve188827
-Node: Slices193147
-Node: Casts197167
-Node: Import199581
-Node: Templated imports205225
-Node: Static207316
-Node: LaTeX usage210274
-Node: Base modules216875
-Node: plain219382
-Node: simplex220088
-Node: math220369
-Node: interpolate223302
-Node: geometry223593
-Node: trembling224289
-Node: stats224566
-Node: patterns224837
-Node: markers225080
-Node: map226978
-Node: tree227414
-Node: binarytree227598
-Node: drawtree228273
-Node: syzygy228482
-Node: feynman228764
-Node: roundedpath229050
-Node: animation229340
-Ref: animate229789
-Node: embed230965
-Node: slide231975
-Node: MetaPost232318
-Node: babel233094
-Node: labelpath233342
-Node: labelpath3234206
-Node: annotate234533
-Node: CAD235023
-Node: graph235341
-Ref: ticks242957
-Ref: pathmarkers257145
-Ref: marker257619
-Ref: markuniform257989
-Ref: errorbars259896
-Ref: automatic scaling265073
-Node: palette276895
-Ref: images277017
-Ref: image281481
-Ref: logimage282002
-Ref: penimage283112
-Ref: penfunctionimage283375
-Node: three284151
-Ref: PostScript3D316547
-Node: obj318341
-Node: graph3318602
-Ref: GaussianSurface324473
-Node: grid3325651
-Node: solids326487
-Node: tube327511
-Node: flowchart329895
-Node: contour334614
-Node: contour3341216
-Node: smoothcontour3341540
-Node: slopefield343313
-Node: ode344858
-Node: Options345127
-Ref: configuration file353565
-Ref: settings353565
-Ref: texengines354915
-Ref: convert354915
-Node: Interactive mode358471
-Ref: history360700
-Node: GUI362073
-Node: GUI installation362643
-Node: GUI usage363639
-Node: Command-Line Interface364706
-Node: Language server protocol366194
-Node: PostScript to Asymptote367675
-Node: Help368505
-Node: Debugger370235
-Node: Credits372083
-Node: Index373344
+Node: Top573
+Node: Description7668
+Node: Installation12075
+Node: UNIX binary distributions13220
+Node: MacOS X binary distributions14395
+Node: Microsoft Windows15007
+Node: Configuring16247
+Node: Search paths20762
+Node: Compiling from UNIX source21854
+Node: Editing modes25157
+Node: Git27735
+Node: Building the documentation28258
+Node: Uninstall28824
+Node: Tutorial29180
+Node: Drawing in batch mode30051
+Node: Drawing in interactive mode30975
+Node: Figure size32046
+Node: Labels33733
+Node: Paths34625
+Ref: unitcircle35265
+Node: Drawing commands37258
+Node: draw39126
+Ref: arrows40402
+Node: fill46708
+Ref: gradient shading47790
+Node: clip52636
+Node: label53413
+Ref: Label54327
+Ref: baseline58241
+Ref: envelope58977
+Node: Bezier curves60529
+Node: Programming64497
+Ref: array iteration66357
+Node: Data types66524
+Ref: format78182
+Node: Paths and guides82850
+Ref: circle83112
+Ref: extension93464
+Node: Pens100657
+Ref: fillrule108796
+Ref: basealign109754
+Ref: transparency115119
+Ref: makepen118840
+Ref: overwrite119746
+Node: Transforms121005
+Node: Frames and pictures123100
+Ref: size124772
+Ref: unitsize125839
+Ref: shipout126968
+Ref: filltype129354
+Ref: add132983
+Ref: add about133956
+Ref: tex137074
+Node: Deferred drawing137985
+Node: Files141276
+Ref: cd142366
+Ref: scroll147512
+Node: Variable initializers150621
+Node: Structures153502
+Node: Operators158816
+Node: Arithmetic & logical159132
+Node: Self & prefix operators161688
+Node: User-defined operators162548
+Node: Implicit scaling163487
+Node: Functions164050
+Ref: stack overflow167195
+Node: Default arguments167481
+Node: Named arguments168253
+Node: Rest arguments170903
+Node: Mathematical functions174060
+Node: Arrays180924
+Ref: sort189022
+Ref: tridiagonal192580
+Ref: solve193895
+Node: Slices198215
+Node: Casts202235
+Node: Import204649
+Node: Templated imports210291
+Node: Static212185
+Node: LaTeX usage215143
+Node: Base modules221744
+Node: plain224309
+Node: simplex225015
+Node: simplex2225219
+Node: math225488
+Node: interpolate228419
+Node: geometry228710
+Node: trembling229406
+Node: stats229683
+Node: patterns229954
+Node: markers230197
+Node: map232097
+Node: tree232533
+Node: binarytree232717
+Node: drawtree233392
+Node: syzygy233601
+Node: feynman233883
+Node: roundedpath234169
+Node: animation234459
+Ref: animate234907
+Node: embed236083
+Node: slide237093
+Node: MetaPost237436
+Node: babel238212
+Node: labelpath238460
+Node: labelpath3239324
+Node: annotate239651
+Node: CAD240141
+Node: graph240459
+Ref: ticks248075
+Ref: pathmarkers262263
+Ref: marker262737
+Ref: markuniform263103
+Ref: errorbars265010
+Ref: automatic scaling270187
+Node: palette282007
+Ref: images282129
+Ref: image286593
+Ref: logimage287114
+Ref: penimage288224
+Ref: penfunctionimage288487
+Node: three289263
+Ref: PostScript3D321652
+Node: obj323446
+Node: graph3323707
+Ref: GaussianSurface329578
+Node: grid3330756
+Node: solids331592
+Node: tube332616
+Node: flowchart334999
+Node: contour339718
+Node: contour3346318
+Node: smoothcontour3346642
+Node: slopefield348409
+Node: ode349954
+Node: Options350223
+Ref: configuration file358661
+Ref: settings358661
+Ref: texengines360009
+Ref: magick360009
+Node: Interactive mode363404
+Ref: history365633
+Node: GUI367004
+Node: GUI installation367574
+Node: GUI usage368570
+Node: Command-Line Interface369637
+Node: Language server protocol371125
+Node: PostScript to Asymptote372606
+Node: Help373433
+Node: Debugger375163
+Node: Credits377011
+Node: Index378268

End Tag Table
diff --git a/graphics/asymptote/entry.cc b/graphics/asymptote/entry.cc
index 7a780fdd56..e6e3a031a0 100644
--- a/graphics/asymptote/entry.cc
+++ b/graphics/asymptote/entry.cc
@@ -526,7 +526,7 @@ void venv::namevalue::replaceType(ty *new_t, ty *old_t) {
}
#ifdef DEBUG_CACHE
-void venv::namevalue::popType(ty *s)
+void venv::namevalue::popType(astType *s)
#else
void venv::namevalue::popType()
#endif
diff --git a/graphics/asymptote/entry.h b/graphics/asymptote/entry.h
index e11ad59940..03cdcef4e2 100644
--- a/graphics/asymptote/entry.h
+++ b/graphics/asymptote/entry.h
@@ -395,7 +395,7 @@ class venv {
void replaceType(ty *new_t, ty *old_t);
#if DEBUG_CACHE
- void popType(ty *tnew);
+ void popType(astType *tnew);
#else
void popType();
#endif
diff --git a/graphics/asymptote/env.cc b/graphics/asymptote/env.cc
index f55be74fc9..fc8c4c3899 100644
--- a/graphics/asymptote/env.cc
+++ b/graphics/asymptote/env.cc
@@ -214,14 +214,17 @@ record *env::getModule(symbol id, string filename)
return ge.getModule(id, filename);
}
-record *env::getTemplatedModule(symbol id,
+record *env::getTemplatedModule(symbol index,
string filename,
- string index,
mem::vector<absyntax::namedTyEntry*>* args,
- trans::frame *parent)
+ coenv& e)
{
- return ge.getTemplatedModule(id, filename, index, args, parent);
+ return ge.getTemplatedModule(index, filename, args, e);
}
+record *env::getLoadedModule(symbol id)
+{
+ return ge.getLoadedModule(id);
+}
}
diff --git a/graphics/asymptote/env.h b/graphics/asymptote/env.h
index a63ef9c375..1cf628f095 100644
--- a/graphics/asymptote/env.h
+++ b/graphics/asymptote/env.h
@@ -30,6 +30,7 @@ using types::function;
using types::record;
class genv;
+class coenv;
// Keeps track of the name bindings of variables and types. This is used for
// the fields of a record, whereas the derived class env is used for
@@ -185,12 +186,11 @@ public:
~env();
record *getModule(symbol id, string filename);
- record *getTemplatedModule(symbol id,
+ record *getTemplatedModule(symbol index,
string filename,
- string index,
mem::vector<absyntax::namedTyEntry*> *args,
- trans::frame *parent
- );
+ coenv& e);
+ record *getLoadedModule(symbol id);
};
} // namespace trans
diff --git a/graphics/asymptote/errormsg.cc b/graphics/asymptote/errormsg.cc
index 3870caba28..c9248a6299 100644
--- a/graphics/asymptote/errormsg.cc
+++ b/graphics/asymptote/errormsg.cc
@@ -7,6 +7,7 @@
#include <cstdio>
#include <cstdlib>
+#include <regex>
#include "errormsg.h"
#include "interact.h"
@@ -33,6 +34,7 @@ ostream& operator<< (ostream& out, const position& pos)
while(count > 0 && getline(fin,s)) {
count--;
}
+ s=std::regex_replace(s,std::regex("\t")," ");
out << s << endl;
for(size_t i=1; i < pos.column; ++i)
out << " ";
diff --git a/graphics/asymptote/examples/slope.asy b/graphics/asymptote/examples/slope.asy
index 832f8c13fc..46cf11be43 100644
--- a/graphics/asymptote/examples/slope.asy
+++ b/graphics/asymptote/examples/slope.asy
@@ -37,7 +37,7 @@ real order=3;
for(int i=0; i < n-1; ++i) {
real dt=(b-a)*lambda^(n-i);
- Solution S=integrate(Y0,L,F,a,b,dt,dynamic=false,0.0002,0.0004,ERK3BS,verbose=false);
+ Solution S=integrate(Y0,G,a,b,dt,dynamic=false,0.0002,0.0004,RK3BS,verbose=false);
real maxnorm=0;
Solution E=integrate(Y0,G,a,b,1e-2*dt,dynamic=false,0.0002,0.0004,RK5);
diff --git a/graphics/asymptote/examples/teapot.asy b/graphics/asymptote/examples/teapot.asy
index 847ffd234d..7a12cc3a66 100644
--- a/graphics/asymptote/examples/teapot.asy
+++ b/graphics/asymptote/examples/teapot.asy
@@ -202,6 +202,7 @@ triple[][][] Q0={
}
};
+
surface regularize(triple[][] P, real fraction=0.02)
{
triple[][][] B=hsplit(P,fraction);
@@ -215,7 +216,8 @@ surface regularize(triple[][] P, real fraction=0.02)
surface S=surface(Q);
for(triple[][] q : Q0)
- S.append(regularize(q));
+ // S.append(regularize(q));
+ S.append(surface(patch(q)));
pen color;
real metallic;
diff --git a/graphics/asymptote/exp.h b/graphics/asymptote/exp.h
index d1a60e96dd..152df76ded 100644
--- a/graphics/asymptote/exp.h
+++ b/graphics/asymptote/exp.h
@@ -887,13 +887,13 @@ public:
};
class castExp : public exp {
- ty *target;
+ astType *target;
exp *castee;
types::ty *tryCast(coenv &e, types::ty *t, types::ty *s,
symbol csym);
public:
- castExp(position pos, ty *target, exp *castee)
+ castExp(position pos, astType *target, exp *castee)
: exp(pos), target(target), castee(castee) {}
void prettyprint(ostream &out, Int indent) override;
diff --git a/graphics/asymptote/fileio.h b/graphics/asymptote/fileio.h
index f64ce71d7c..e23bf343f6 100644
--- a/graphics/asymptote/fileio.h
+++ b/graphics/asymptote/fileio.h
@@ -92,6 +92,9 @@ public:
bool Standard() {return standard;}
+ bool enabled() {return !standard || settings::verbose > 1 ||
+ interact::interactive || !settings::getSetting<bool>("quiet");}
+
void standardEOF() {
#if defined(HAVE_LIBREADLINE) && defined(HAVE_LIBCURSES)
cout << endl;
@@ -510,9 +513,6 @@ public:
return 0;
}
- bool enabled() {return !standard || settings::verbose > 1 ||
- interact::interactive || !settings::getSetting<bool>("quiet");}
-
void write(bool val) {*stream << (val ? "true " : "false ");}
void write(Int val) {*stream << val;}
void write(double val) {*stream << val;}
diff --git a/graphics/asymptote/fundec.h b/graphics/asymptote/fundec.h
index bfd10f33d3..8ecf086f58 100644
--- a/graphics/asymptote/fundec.h
+++ b/graphics/asymptote/fundec.h
@@ -15,14 +15,14 @@
namespace absyntax {
class formal : public absyn {
- ty *base;
+ astType *base;
decidstart *start;
bool Explicit;
varinit *defval;
bool keywordOnly;
public:
- formal(position pos, ty *base, decidstart *start=0, varinit *defval=0,
+ formal(position pos, astType *base, decidstart *start=0, varinit *defval=0,
bool Explicit= false, bool keywordOnly=false)
: absyn(pos), base(base), start(start), Explicit(Explicit),
defval(defval), keywordOnly(keywordOnly) {}
@@ -38,7 +38,7 @@ public:
types::ty *getType(coenv &e, bool tacit=false);
- absyntax::ty *getAbsyntaxType() { return base; }
+ absyntax::astType *getAbsyntaxType() { return base; }
virtual void addOps(coenv &e, record *r);
@@ -63,9 +63,9 @@ public:
};
struct tySymbolPair : public gc {
- absyntax::ty* ty;
+ absyntax::astType* ty;
symbol sym;
- tySymbolPair(absyntax::ty* ty, symbol sym) : ty(ty), sym(sym) {}
+ tySymbolPair(absyntax::astType* ty, symbol sym) : ty(ty), sym(sym) {}
};
class formals : public absyn {
@@ -141,7 +141,7 @@ public:
};
class fundef : public exp {
- ty *result;
+ astType *result;
formals *params;
stm *body;
@@ -152,7 +152,7 @@ class fundef : public exp {
friend class fundec;
public:
- fundef(position pos, ty *result, formals *params, stm *body)
+ fundef(position pos, astType *result, formals *params, stm *body)
: exp(pos), result(result), params(params), body(body), id() {}
virtual void prettyprint(ostream &out, Int indent) override;
@@ -176,7 +176,7 @@ class fundec : public dec {
fundef fun;
public:
- fundec(position pos, ty *result, symbol id, formals *params, stm *body)
+ fundec(position pos, astType *result, symbol id, formals *params, stm *body)
: dec(pos), id(id), fun(pos, result, params, body)
{ fun.id = id; }
diff --git a/graphics/asymptote/generate_enums.py b/graphics/asymptote/generate_enums.py
index 6558243745..2843b9c3fe 100755
--- a/graphics/asymptote/generate_enums.py
+++ b/graphics/asymptote/generate_enums.py
@@ -11,7 +11,7 @@
# Written by Supakorn "Jamie" Rassameemasmuang <jamievlin@outlook.com>
from typing import List, Tuple, Any, Union
-from datetime import datetime
+from datetime import datetime, timezone
import io
import argparse
import os
@@ -50,10 +50,8 @@ def create_enums(filename: str) -> List[Union[Tuple[str, int, str], Tuple[str, i
def datetime_now():
- return datetime.utcfromtimestamp(
- int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))
- )
-
+ return datetime.fromtimestamp(
+ int(os.environ.get('SOURCE_DATE_EPOCH', time.time())),tz=timezone.utc)
def generate_enum_cpp(outname, enums, name, comment=None, *args, **kwargs):
with io.open(outname, 'w') as fil:
diff --git a/graphics/asymptote/genv.cc b/graphics/asymptote/genv.cc
index fe8e1b5cab..65e132ef56 100644
--- a/graphics/asymptote/genv.cc
+++ b/graphics/asymptote/genv.cc
@@ -32,7 +32,6 @@
using namespace types;
using settings::getSetting;
using settings::Setting;
-using vm::importIndex_t;
// Dynamic loading of external libraries.
types::record *transExternalModule(
@@ -46,7 +45,7 @@ genv::genv()
{
// Add settings as a module. This is so that the init file ~/.asy/config.asy
// can set settings.
- imap[importIndex_t("settings","")]=settings::getSettingsModule();
+ imap[symbol::literalTrans("settings")]=settings::getSettingsModule();
// Translate plain in advance, if we're using autoplain.
if(getSetting<bool>("autoplain")) {
@@ -58,7 +57,7 @@ genv::genv()
Setting("autoplain")=true;
}
#ifdef HAVE_LIBGSL
- imap[importIndex_t("gsl","")]=trans::getGSLModule();
+ imap[symbol::literalTrans("gsl")]=trans::getGSLModule();
#endif
}
@@ -93,7 +92,7 @@ record *genv::loadTemplatedModule(
symbol id,
string filename,
mem::vector<absyntax::namedTyEntry*> *args,
- trans::frame *parent
+ coenv& e
) {
// Hackish way to load an external library.
#if 0
@@ -109,7 +108,7 @@ record *genv::loadTemplatedModule(
em.sync();
- record *r=ast->transAsTemplatedFile(*this, id, args, parent);
+ record *r=ast->transAsTemplatedFile(*this, id, args, e);
inTranslation.remove(filename);
@@ -130,46 +129,48 @@ void genv::checkRecursion(string filename) {
record *genv::getModule(symbol id, string filename) {
checkRecursion(filename);
- importIndex_t Index(filename,"");
- record *r=imap[Index];
+ symbol index=symbol::literalTrans(filename);
+ record *r=imap[index];
if (r)
return r;
else {
record *r=loadModule(id, filename);
// Don't add an erroneous module to the dictionary in interactive mode, as
// the user may try to load it again.
- if (!interact::interactive || !em.errors())
- imap[Index]=r;
+ if (!interact::interactive || !em.errors()) {
+ imap[index]=r;
+ }
return r;
}
}
record *genv::getTemplatedModule(
- symbol id,
+ symbol index,
string filename,
- string sigHandle,
mem::vector<absyntax::namedTyEntry*>* args,
- frame *parent
+ coenv& e
) {
checkRecursion(filename);
- importIndex_t Index(filename,sigHandle);
-
- record *r=imap[Index];
+ record *r=imap[index];
if (r)
return r;
else {
- record *r=loadTemplatedModule(id, filename, args, parent);
+ record *r=loadTemplatedModule(index, filename, args, e);
// Don't add an erroneous module to the dictionary in interactive mode, as
// the user may try to load it again.
- if (!interact::interactive || !em.errors())
- imap[Index]=r;
+ if (!interact::interactive || !em.errors()) {
+ imap[index]=r;
+ }
return r;
}
}
+record *genv::getLoadedModule(symbol id) {
+ return imap[id];
+}
typedef vm::stack::importInitMap importInitMap;
@@ -179,8 +180,8 @@ importInitMap *genv::getInitMap()
genv &ge;
initMap(genv &ge)
: ge(ge) {}
- lambda *operator[](importIndex_t s) {
- record *r=ge.imap[s];
+ lambda *operator[](string s) {
+ record *r=ge.imap[symbol::literalTrans(s)];
return r ? r->getInit() : 0;
}
};
diff --git a/graphics/asymptote/genv.h b/graphics/asymptote/genv.h
index 7587d9aee5..f78e9c59f2 100644
--- a/graphics/asymptote/genv.h
+++ b/graphics/asymptote/genv.h
@@ -31,7 +31,7 @@ namespace trans {
class genv : public gc {
// The initializer functions for imports, indexed by filename.
- typedef mem::map<vm::importIndex_t,record *> importMap;
+ typedef mem::map<symbol,record *> importMap;
importMap imap;
// List of modules in translation. Used to detect and prevent infinite
@@ -48,21 +48,21 @@ class genv : public gc {
symbol id,
string filename,
mem::vector<absyntax::namedTyEntry*> *args,
- trans::frame *parent
+ coenv& e
);
public:
genv();
// Get an imported module, translating if necessary.
- record *getModule(symbol name, string s);
+ record *getModule(symbol name, string filename);
record *getTemplatedModule(
- symbol id,
+ symbol index,
string filename,
- string sigHandle,
mem::vector<absyntax::namedTyEntry*> *args,
- frame *parent
+ coenv& e
);
+ record *getLoadedModule(symbol index);
// Uses the filename->record map to build a filename->initializer map to be
// used at runtime.
diff --git a/graphics/asymptote/glew.c b/graphics/asymptote/glew.c
index f6b50465b9..a6009a40e8 100644
--- a/graphics/asymptote/glew.c
+++ b/graphics/asymptote/glew.c
@@ -6,9 +6,16 @@
#define _WIN32
#endif
+#ifndef GLEW_INCLUDE
+#include <GL/glew.h>
+#else
+#include GLEW_INCLUDE
+#endif
+
#ifdef HAVE_LIBGL
#ifdef HAVE_LIBOSMESA
#define GLEW_OSMESA
+#define APIENTRY
#endif
#include "GL/glew.c"
diff --git a/graphics/asymptote/glrender.cc b/graphics/asymptote/glrender.cc
index d360d35a8b..c64dc26d0d 100644
--- a/graphics/asymptote/glrender.cc
+++ b/graphics/asymptote/glrender.cc
@@ -1827,6 +1827,10 @@ void init()
glutInit(&argc,argv);
fpu_trap(settings::trap());
+
+#ifdef FREEGLUT
+ glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,GLUT_ACTION_GLUTMAINLOOP_RETURNS);
+#endif
screenWidth=glutGet(GLUT_SCREEN_WIDTH);
screenHeight=glutGet(GLUT_SCREEN_HEIGHT);
#endif
@@ -2253,6 +2257,8 @@ void glrender(const string& prefix, const picture *pic, const string& format,
#endif
glutMainLoop();
+ cout << endl;
+ exitHandler(0);
#endif // HAVE_LIBGLUT
} else {
if(glthread) {
@@ -2769,7 +2775,8 @@ void drawBuffers()
drawTriangle();
if(transparent) {
- gl::copied=true;
+ if(camp::ssbo)
+ gl::copied=true;
if(interlock) resizeFragmentBuffer();
drawTransparent();
}
diff --git a/graphics/asymptote/glrender.h b/graphics/asymptote/glrender.h
index 6b99611dfe..1c140584a9 100644
--- a/graphics/asymptote/glrender.h
+++ b/graphics/asymptote/glrender.h
@@ -44,6 +44,9 @@
#endif
#ifdef HAVE_LIBOSMESA
+#ifndef APIENTRY
+#define APIENTRY
+#endif
#include <GL/osmesa.h>
#endif
@@ -61,6 +64,9 @@
#endif
#ifdef HAVE_LIBOSMESA
+#ifndef APIENTRY
+#define APIENTRY
+#endif
#include <GL/osmesa.h>
#endif
diff --git a/graphics/asymptote/item.h b/graphics/asymptote/item.h
index 70d4923445..28bba31b41 100644
--- a/graphics/asymptote/item.h
+++ b/graphics/asymptote/item.h
@@ -115,15 +115,19 @@ public:
item(Int i)
: kind(&typeid(Int)), i(i) {}
+#ifndef intIsInt
item(int i)
: kind(&typeid(Int)), i(i) {}
+#endif
item(double x)
: kind(&typeid(double)), x(x) {}
item(bool b)
: kind(&typeid(bool)), b(b) {}
+#ifndef intIsInt
item& operator= (int a)
{ kind=&typeid(Int); i=a; return *this; }
+#endif
item& operator= (unsigned int a)
{ kind=&typeid(Int); i=a; return *this; }
item& operator= (Int a)
@@ -197,29 +201,29 @@ private:
#ifdef SIMPLE_FRAME
// In the simple implementation, a frame is just an array of items.
-typedef item frame;
+typedef item vmFrame;
#else
-class frame : public gc {
+class vmFrame : public gc {
#ifdef DEBUG_FRAME
string name;
- Int parentIndex;
+ size_t parentIndex;
#endif
- typedef mem::vector<item> internal_vars_t;
+ using internal_vars_t = mem::vector<item>;
internal_vars_t vars;
// Allow the stack direct access to vars.
friend class stack;
public:
#ifdef DEBUG_FRAME
- frame(string name, Int parentIndex, size_t size)
+ vmFrame(string name, size_t parentIndex, size_t size)
: name(name), parentIndex(parentIndex), vars(size)
{}
string getName() { return name; }
- Int getParentIndex() { return parentIndex; }
+ size_t getParentIndex() { return parentIndex; }
#else
- frame(size_t size)
+ vmFrame(size_t size)
: vars(size)
{}
#endif
@@ -248,12 +252,6 @@ inline T get(const item& it)
}
template <>
-inline int get<int>(const item&)
-{
- throw vm::bad_item_value();
-}
-
-template <>
inline Int get<Int>(const item& it)
{
#if COMPACT
diff --git a/graphics/asymptote/main.cc b/graphics/asymptote/main.cc
index 0728ebcdaf..5f440c24c7 100644
--- a/graphics/asymptote/main.cc
+++ b/graphics/asymptote/main.cc
@@ -54,6 +54,12 @@
#include "stack.h"
+#ifdef HAVE_LIBCURSES
+#ifdef HAVE_LIBREADLINE
+#include <readline/readline.h>
+#endif
+#endif
+
using namespace settings;
using interact::interactive;
@@ -245,6 +251,9 @@ void *asymain(void *A)
void exitHandler(int)
{
+#if defined(HAVE_READLINE) && defined(HAVE_LIBCURSES)
+ rl_cleanup_after_signal();
+#endif
exit(returnCode());
}
diff --git a/graphics/asymptote/memory.h b/graphics/asymptote/memory.h
index 5c5d7a41d0..3ddc2aaea1 100644
--- a/graphics/asymptote/memory.h
+++ b/graphics/asymptote/memory.h
@@ -194,7 +194,7 @@ typedef std::basic_stringbuf<char,std::char_traits<char>,
inline void compact(int x) {GC_set_dont_expand(x);}
inline std::string stdString(string s) {return std::string(s.c_str());}
#else
-inline void compact(int x) {}
+inline void compact(int) {}
typedef std::string string;
typedef std::stringstream stringstream;
typedef std::istringstream istringstream;
diff --git a/graphics/asymptote/newexp.cc b/graphics/asymptote/newexp.cc
index c124293928..7d8efbd138 100644
--- a/graphics/asymptote/newexp.cc
+++ b/graphics/asymptote/newexp.cc
@@ -44,7 +44,7 @@ bool newRecordExp::encodeLevel(position pos, coenv &e, trans::tyEntry *ent)
if (ent->v) {
// Put the record on the stack. For instance, in code like
- // import imp;
+ // access imp;
// new imp.t;
// we are putting the instance of imp on the stack, so we can use it to
// allocate an instance of imp.t.
diff --git a/graphics/asymptote/newexp.h b/graphics/asymptote/newexp.h
index d386b18100..cec21abf7b 100644
--- a/graphics/asymptote/newexp.h
+++ b/graphics/asymptote/newexp.h
@@ -19,11 +19,11 @@ namespace absyntax {
typedef fundef newFunctionExp;
class newRecordExp : public exp {
- ty *result;
+ astType *result;
- static bool encodeLevel(position pos, coenv &e, trans::tyEntry *ent);
public:
- newRecordExp(position pos, ty *result)
+ static bool encodeLevel(position pos, coenv &e, trans::tyEntry *ent);
+ newRecordExp(position pos, astType *result)
: exp(pos), result(result) {}
void prettyprint(ostream &out, Int indent);
@@ -36,14 +36,14 @@ public:
};
class newArrayExp : public exp {
- ty *celltype;
+ astType *celltype;
explist *dimexps;
dimensions *dims;
arrayinit *ai;
public:
newArrayExp(position pos,
- ty *celltype,
+ astType *celltype,
explist *dimexps,
dimensions *dims,
arrayinit *ai)
diff --git a/graphics/asymptote/picture.cc b/graphics/asymptote/picture.cc
index 8f67201fb3..8ea6e3bf86 100644
--- a/graphics/asymptote/picture.cc
+++ b/graphics/asymptote/picture.cc
@@ -853,7 +853,10 @@ bool picture::postprocess(const string& prename, const string& outname,
double expand=antialias;
if(expand < 2.0) expand=1.0;
res *= expand;
- cmd.push_back(getSetting<string>("convert"));
+ string s=getSetting<string>("convert");
+ cmd.push_back(s);
+ if(s != "convert")
+ cmd.push_back("convert");
cmd.push_back("-density");
cmd.push_back(String(res)+"x"+String(res));
if(expand == 1.0)
diff --git a/graphics/asymptote/pkg.m4 b/graphics/asymptote/pkg.m4
new file mode 100644
index 0000000000..d8549a4789
--- /dev/null
+++ b/graphics/asymptote/pkg.m4
@@ -0,0 +1,343 @@
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+# serial 11 (pkg-config-0.29.1)
+
+dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+dnl 02111-1307, USA.
+dnl
+dnl As a special exception to the GNU General Public License, if you
+dnl distribute this file as part of a program that contains a
+dnl configuration script generated by Autoconf, you may include it under
+dnl the same distribution terms that you use for the rest of that
+dnl program.
+
+dnl PKG_PREREQ(MIN-VERSION)
+dnl -----------------------
+dnl Since: 0.29
+dnl
+dnl Verify that the version of the pkg-config macros are at least
+dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
+dnl installed version of pkg-config, this checks the developer's version
+dnl of pkg.m4 when generating configure.
+dnl
+dnl To ensure that this macro is defined, also add:
+dnl m4_ifndef([PKG_PREREQ],
+dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
+dnl
+dnl See the "Since" comment for each macro you use to see what version
+dnl of the macros you require.
+m4_defun([PKG_PREREQ],
+[m4_define([PKG_MACROS_VERSION], [0.29.1])
+m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
+ [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
+])dnl PKG_PREREQ
+
+dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
+dnl ----------------------------------
+dnl Since: 0.16
+dnl
+dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
+dnl first found in the path. Checks that the version of pkg-config found
+dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
+dnl used since that's the first version where most current features of
+dnl pkg-config existed.
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+fi[]dnl
+])dnl PKG_PROG_PKG_CONFIG
+
+dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------------------------------
+dnl Since: 0.18
+dnl
+dnl Check to see whether a particular set of modules exists. Similar to
+dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
+dnl
+dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+dnl only at the first occurence in configure.ac, so if the first place
+dnl it's called might be skipped (such as if it is within an "if", you
+dnl have to call PKG_CHECK_EXISTS manually
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+ m4_default([$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+dnl ---------------------------------------------
+dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
+dnl pkg_failed based on the result.
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes ],
+ [pkg_failed=yes])
+ else
+ pkg_failed=untried
+fi[]dnl
+])dnl _PKG_CONFIG
+
+dnl _PKG_SHORT_ERRORS_SUPPORTED
+dnl ---------------------------
+dnl Internal check to see if pkg-config supports short errors.
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi[]dnl
+])dnl _PKG_SHORT_ERRORS_SUPPORTED
+
+
+dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl [ACTION-IF-NOT-FOUND])
+dnl --------------------------------------------------------------
+dnl Since: 0.4.0
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
+dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+ AC_MSG_RESULT([no])
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ m4_default([$4], [AC_MSG_ERROR(
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT])[]dnl
+ ])
+elif test $pkg_failed = untried; then
+ AC_MSG_RESULT([no])
+ m4_default([$4], [AC_MSG_FAILURE(
+[The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+ ])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ $3
+fi[]dnl
+])dnl PKG_CHECK_MODULES
+
+
+dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl [ACTION-IF-NOT-FOUND])
+dnl ---------------------------------------------------------------------
+dnl Since: 0.29
+dnl
+dnl Checks for existence of MODULES and gathers its build flags with
+dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
+dnl and VARIABLE-PREFIX_LIBS from --libs.
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
+dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
+dnl configure.ac.
+AC_DEFUN([PKG_CHECK_MODULES_STATIC],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+_save_PKG_CONFIG=$PKG_CONFIG
+PKG_CONFIG="$PKG_CONFIG --static"
+PKG_CHECK_MODULES($@)
+PKG_CONFIG=$_save_PKG_CONFIG[]dnl
+])dnl PKG_CHECK_MODULES_STATIC
+
+
+dnl PKG_INSTALLDIR([DIRECTORY])
+dnl -------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable pkgconfigdir as the location where a module
+dnl should install pkg-config .pc files. By default the directory is
+dnl $libdir/pkgconfig, but the default can be changed by passing
+dnl DIRECTORY. The user can override through the --with-pkgconfigdir
+dnl parameter.
+AC_DEFUN([PKG_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+ [pkg-config installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([pkgconfigdir],
+ [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
+ [with_pkgconfigdir=]pkg_default)
+AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+])dnl PKG_INSTALLDIR
+
+
+dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
+dnl --------------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable noarch_pkgconfigdir as the location where a
+dnl module should install arch-independent pkg-config .pc files. By
+dnl default the directory is $datadir/pkgconfig, but the default can be
+dnl changed by passing DIRECTORY. The user can override through the
+dnl --with-noarch-pkgconfigdir parameter.
+AC_DEFUN([PKG_NOARCH_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+ [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([noarch-pkgconfigdir],
+ [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
+ [with_noarch_pkgconfigdir=]pkg_default)
+AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+])dnl PKG_NOARCH_INSTALLDIR
+
+
+dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------
+dnl Since: 0.28
+dnl
+dnl Retrieves the value of the pkg-config variable for the given module.
+AC_DEFUN([PKG_CHECK_VAR],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
+
+_PKG_CONFIG([$1], [variable="][$3]["], [$2])
+AS_VAR_COPY([$1], [pkg_cv_][$1])
+
+AS_VAR_IF([$1], [""], [$5], [$4])dnl
+])dnl PKG_CHECK_VAR
+
+dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND],
+dnl [DESCRIPTION], [DEFAULT])
+dnl ------------------------------------------
+dnl
+dnl Prepare a "--with-" configure option using the lowercase
+dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and
+dnl PKG_CHECK_MODULES in a single macro.
+AC_DEFUN([PKG_WITH_MODULES],
+[
+m4_pushdef([with_arg], m4_tolower([$1]))
+
+m4_pushdef([description],
+ [m4_default([$5], [build with ]with_arg[ support])])
+
+m4_pushdef([def_arg], [m4_default([$6], [auto])])
+m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes])
+m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no])
+
+m4_case(def_arg,
+ [yes],[m4_pushdef([with_without], [--without-]with_arg)],
+ [m4_pushdef([with_without],[--with-]with_arg)])
+
+AC_ARG_WITH(with_arg,
+ AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),,
+ [AS_TR_SH([with_]with_arg)=def_arg])
+
+AS_CASE([$AS_TR_SH([with_]with_arg)],
+ [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)],
+ [auto],[PKG_CHECK_MODULES([$1],[$2],
+ [m4_n([def_action_if_found]) $3],
+ [m4_n([def_action_if_not_found]) $4])])
+
+m4_popdef([with_arg])
+m4_popdef([description])
+m4_popdef([def_arg])
+
+])dnl PKG_WITH_MODULES
+
+dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl [DESCRIPTION], [DEFAULT])
+dnl -----------------------------------------------
+dnl
+dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES
+dnl check._[VARIABLE-PREFIX] is exported as make variable.
+AC_DEFUN([PKG_HAVE_WITH_MODULES],
+[
+PKG_WITH_MODULES([$1],[$2],,,[$3],[$4])
+
+AM_CONDITIONAL([HAVE_][$1],
+ [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"])
+])dnl PKG_HAVE_WITH_MODULES
+
+dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl [DESCRIPTION], [DEFAULT])
+dnl ------------------------------------------------------
+dnl
+dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after
+dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make
+dnl and preprocessor variable.
+AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES],
+[
+PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4])
+
+AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"],
+ [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])])
+])dnl PKG_HAVE_DEFINE_WITH_MODULES
diff --git a/graphics/asymptote/program.cc b/graphics/asymptote/program.cc
index 2af41c967d..c22d283fad 100644
--- a/graphics/asymptote/program.cc
+++ b/graphics/asymptote/program.cc
@@ -74,11 +74,11 @@ ostream& operator<< (ostream& out, const item& i)
out << "string, value = " << get<string>(i);
else if (i.type() == typeid(callable))
out << *(get<callable *>(i));
- else if (i.type() == typeid(frame)) {
+ else if (i.type() == typeid(vmFrame)) {
out << "frame";
# ifdef DEBUG_FRAME
{
- frame *f = get<frame *>(i);
+ vmFrame *f = get<vmFrame *>(i);
if (f)
out << " " << f->getName();
else
diff --git a/graphics/asymptote/revision.cc b/graphics/asymptote/revision.cc
index 4ff21c9455..7f032d5189 100644
--- a/graphics/asymptote/revision.cc
+++ b/graphics/asymptote/revision.cc
@@ -1,2 +1,2 @@
-const char *REVISION="2.89";
+const char *REVISION="2.90";
const char *AsyGLVersion="1.02";
diff --git a/graphics/asymptote/runmath.cc b/graphics/asymptote/runmath.cc
index d9ac05bba4..c7d4c65bba 100644
--- a/graphics/asymptote/runmath.cc
+++ b/graphics/asymptote/runmath.cc
@@ -81,7 +81,7 @@ using types::realArray;
using types::pairArray;
using run::integeroverflow;
-using vm::frame;
+using vm::vmFrame;
const char *invalidargument="invalid argument";
@@ -558,8 +558,8 @@ void gen_runmath28(stack *Stack)
#line 367 "runmath.in"
void boolMemEq(stack *Stack)
{
- frame * b=vm::pop<frame *>(Stack);
- frame * a=vm::pop<frame *>(Stack);
+ vmFrame * b=vm::pop<vmFrame *>(Stack);
+ vmFrame * a=vm::pop<vmFrame *>(Stack);
#line 368 "runmath.in"
{Stack->push<bool>(a == b); return;}
}
@@ -567,8 +567,8 @@ void boolMemEq(stack *Stack)
#line 372 "runmath.in"
void boolMemNeq(stack *Stack)
{
- frame * b=vm::pop<frame *>(Stack);
- frame * a=vm::pop<frame *>(Stack);
+ vmFrame * b=vm::pop<vmFrame *>(Stack);
+ vmFrame * a=vm::pop<vmFrame *>(Stack);
#line 373 "runmath.in"
{Stack->push<bool>(a != b); return;}
}
diff --git a/graphics/asymptote/runmath.in b/graphics/asymptote/runmath.in
index 4beba44fc3..36ca583744 100644
--- a/graphics/asymptote/runmath.in
+++ b/graphics/asymptote/runmath.in
@@ -28,7 +28,7 @@ using types::realArray;
using types::pairArray;
using run::integeroverflow;
-using vm::frame;
+using vm::vmFrame;
const char *invalidargument="invalid argument";
@@ -364,12 +364,12 @@ bool !(bool b)
return !b;
}
-bool :boolMemEq(frame *a, frame *b)
+bool :boolMemEq(vmFrame *a, vmFrame *b)
{
return a == b;
}
-bool :boolMemNeq(frame *a, frame *b)
+bool :boolMemNeq(vmFrame *a, vmFrame *b)
{
return a != b;
}
diff --git a/graphics/asymptote/runtime.cc b/graphics/asymptote/runtime.cc
index b0e7e11005..ba5a6d0f66 100644
--- a/graphics/asymptote/runtime.cc
+++ b/graphics/asymptote/runtime.cc
@@ -126,7 +126,7 @@ using namespace utils;
namespace run {
using camp::pair;
using vm::array;
-using vm::frame;
+using vm::vmFrame;
using vm::stack;
using camp::transform;
using absyntax::runnable;
@@ -216,7 +216,7 @@ void writestring(stack *s)
string S=pop<string>(s);
vm::item it=pop(s);
bool defaultfile=isdefault(it);
- camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
+ camp::file *f=defaultfile ? &camp::Stdout : vm::get<camp::file*>(it);
if(!f->isOpen() || !f->enabled()) return;
if(S != "") f->write(S);
if(f->text()) {
@@ -298,7 +298,7 @@ void pushNullArray(stack *Stack)
void pushNullRecord(stack *Stack)
{
#line 256 "runtime.in"
- {Stack->push<frame*>(0); return;}
+ {Stack->push<vmFrame*>(0); return;}
}
#line 260 "runtime.in"
@@ -1135,9 +1135,8 @@ void gen_runtime86(stack *Stack)
void loadModule(stack *Stack)
{
string * index=vm::pop<string *>(Stack);
- string * filename=vm::pop<string *>(Stack);
#line 766 "runtime.in"
- Stack->load(*filename,*index);
+ Stack->load(*index);
}
#line 770 "runtime.in"
diff --git a/graphics/asymptote/runtime.in b/graphics/asymptote/runtime.in
index 63c49c3863..bc9154e4f6 100644
--- a/graphics/asymptote/runtime.in
+++ b/graphics/asymptote/runtime.in
@@ -101,7 +101,7 @@ using namespace utils;
namespace run {
using camp::pair;
using vm::array;
-using vm::frame;
+using vm::vmFrame;
using vm::stack;
using camp::transform;
using absyntax::runnable;
@@ -191,7 +191,7 @@ void writestring(stack *s)
string S=pop<string>(s);
vm::item it=pop(s);
bool defaultfile=isdefault(it);
- camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
+ camp::file *f=defaultfile ? &camp::Stdout : vm::get<camp::file*>(it);
if(!f->isOpen() || !f->enabled()) return;
if(S != "") f->write(S);
if(f->text()) {
@@ -252,7 +252,7 @@ array* :pushNullArray()
return 0;
}
-frame* :pushNullRecord()
+vmFrame* :pushNullRecord()
{
return 0;
}
@@ -762,9 +762,9 @@ string location() {
}
// Wrapper for the stack::load() method.
-void :loadModule(string *filename, string *index)
+void :loadModule(string *index)
{
- Stack->load(*filename,*index);
+ Stack->load(*index);
}
string cd(string s=emptystring)
diff --git a/graphics/asymptote/settings.cc b/graphics/asymptote/settings.cc
index 6ed24a6c50..9a5006cfe4 100644
--- a/graphics/asymptote/settings.cc
+++ b/graphics/asymptote/settings.cc
@@ -1198,7 +1198,7 @@ void initSettings() {
initialize=false;
}
- settingsModule=new types::dummyRecord(symbol::trans("settings"));
+ settingsModule=new types::dummyRecord(symbol::literalTrans("settings"));
// Default mouse bindings
@@ -1510,7 +1510,7 @@ void initSettings() {
addOption(new envSetting("texcommand", ""));
addOption(new envSetting("dvips", "dvips"));
addOption(new envSetting("dvisvgm", "dvisvgm"));
- addOption(new envSetting("convert", "convert"));
+ addOption(new envSetting("convert", "magick"));
addOption(new envSetting("display", defaultDisplay));
addOption(new envSetting("animate", defaultAnimate));
addOption(new envSetting("papertype", "letter"));
diff --git a/graphics/asymptote/stack.cc b/graphics/asymptote/stack.cc
index 7072265176..3623e666cb 100644
--- a/graphics/asymptote/stack.cc
+++ b/graphics/asymptote/stack.cc
@@ -22,7 +22,7 @@
#include <iostream>
namespace vm {
-void draw(ostream& out, frame *v);
+void draw(ostream& out, vmFrame *v);
}
#endif
@@ -57,9 +57,9 @@ inline stack::vars_t base_frame(
#else
# ifdef DEBUG_FRAME
assert(!name.empty());
- vars = new frame(name, parentIndex, size);
+ vars = new vmFrame(name, parentIndex, size);
# else
- vars = new frame(size);
+ vars = new vmFrame(size);
# endif
(*vars)[parentIndex] = closure;
#endif
@@ -98,7 +98,7 @@ stack::vars_t make_dummyframe(string name)
inline stack::vars_t make_globalframe(size_t size)
{
assert(size > 0);
-#if SIMPLE_FRAME
+#ifdef SIMPLE_FRAME
// The global frame is an indirect frame. It holds one item, which is the
// link to another frame.
stack::vars_t direct = new item[1];
@@ -119,13 +119,13 @@ inline stack::vars_t make_globalframe(size_t size)
}
-inline void resize_frame(frame *f, size_t oldsize, size_t newsize)
+inline void resize_frame(vmFrame *f, size_t oldsize, size_t newsize)
{
//assert("Need to fix this" == 0);
assert(newsize > oldsize);
-#if SIMPLE_FRAME
- frame *old_indirect = get<frame *>(f[0]);
- frame *new_indirect = new item[newsize];
+#ifdef SIMPLE_FRAME
+ vmFrame *old_indirect = get<vmFrame *>(f[0]);
+ vmFrame *new_indirect = new item[newsize];
std::copy(old_indirect, old_indirect+oldsize, new_indirect);
f[0] = new_indirect;
#else
@@ -147,12 +147,13 @@ void run(lambda *l)
// Move arguments from stack to frame.
void stack::marshall(size_t args, stack::vars_t vars)
{
- for (size_t i = args; i > 0; --i)
-#if SIMPLE_FRAME
+ for (size_t i = args; i > 0; --i) {
+# ifdef SIMPLE_FRAME
vars[i-1] = pop();
-#else
- (*vars)[i-1] = pop();
-#endif
+# else
+ (*vars)[i-1] = pop();
+# endif
+ }
}
#ifdef PROFILE
@@ -275,7 +276,7 @@ void stack::runWithOrWithoutClosure(lambda *l, vars_t vars, vars_t parent)
#ifdef SIMPLE_FRAME
// Link to the variables, be they in a closure or on the stack.
- frame *varlink;
+ vmFrame *varlink;
# define SET_VARLINK assert(vars); varlink = vars;
# define VAR(n) ( (varlink)[(n) + frameStart] )
@@ -405,7 +406,7 @@ void stack::runWithOrWithoutClosure(lambda *l, vars_t vars, vars_t parent)
case inst::popframe:
{
assert(vars);
- vars=get<frame *>(VAR(0));
+ vars=get<vmFrame *>(VAR(0));
SET_VARLINK;
@@ -554,18 +555,18 @@ void stack::runWithOrWithoutClosure(lambda *l, vars_t vars, vars_t parent)
#undef FRAMEVAR
}
-void stack::load(string filename, string sigHandle) {
- importIndex_t Index(filename,sigHandle);
- frame *inst=instMap[Index];
- if (inst)
+void stack::load(string index) {
+ vmFrame *inst=instMap[index];
+ if (inst) {
push(inst);
+ }
else {
func f;
assert(initMap);
- f.body=(*initMap)[Index];
+ f.body=(*initMap)[index];
assert(f.body);
run(&f);
- instMap[Index]=get<frame *>(top());
+ instMap[index]=get<vmFrame *>(top());
}
}
@@ -597,7 +598,7 @@ void stack::draw(ostream& out)
out << "\n";
}
-void draw(ostream& out, frame* v)
+void draw(ostream& out, vmFrame* v)
{
out << "vars:" << endl;
@@ -613,7 +614,7 @@ void draw(ostream& out, frame* v)
if (i == v->getParentIndex()) {
try {
- frame *parent = get<frame *>(link);
+ vmFrame *parent = get<vmFrame *>(link);
out << (parent ? "link" : "----");
} catch (bad_item_value&) {
out << "non-link " << (*v)[0];
@@ -628,9 +629,9 @@ void draw(ostream& out, frame* v)
out << "\n";
- frame *parent;
+ vmFrame *parent;
try {
- parent = get<frame *>(link);
+ parent = get<vmFrame *>(link);
} catch (bad_item_value&) {
parent = 0;
}
diff --git a/graphics/asymptote/stack.h b/graphics/asymptote/stack.h
index eeff080f14..0522f6bb98 100644
--- a/graphics/asymptote/stack.h
+++ b/graphics/asymptote/stack.h
@@ -42,20 +42,18 @@ class runnable;
extern bool indebugger;
-typedef mem::pair<string, string> importIndex_t;
-
class stack {
public:
- typedef frame* vars_t;
+ using vars_t = vmFrame*;
struct importInitMap {
virtual ~importInitMap() {}
- virtual lambda *operator[](importIndex_t) = 0;
+ virtual lambda *operator[](string) = 0;
};
private:
// stack for operands
- typedef mem::vector<item> stack_t;
+ using stack_t = mem::vector<item>;
stack_t theStack;
void draw(ostream& out);
@@ -66,7 +64,7 @@ private:
// The stack stores a map of initialized imported modules by name, so that
// each module is initialized only once and each import refers to the same
// instance.
- typedef mem::map<CONST importIndex_t,frame *> importInstanceMap;
+ using importInstanceMap = mem::map<CONST mem::string, vmFrame*>;
importInstanceMap instMap;
// One can associate an environment to embedded code while running.
@@ -108,9 +106,9 @@ public:
void breakpoint(absyntax::runnable *r=NULL);
void debug();
- // Put an import (indexed by filename and signature) on top of the
- // stack, initializing it if necessary.
- void load(string filename, string sigHandle);
+ // Put an import (indexed by filename and optional template
+ // parameter signature) on top of the stack, initializing it if necessary.
+ void load(string index);
// These are so that built-in functions can easily manipulate the stack
void push(item next) {
diff --git a/graphics/asymptote/stm.h b/graphics/asymptote/stm.h
index 3ce488985d..b8fb4a86b5 100644
--- a/graphics/asymptote/stm.h
+++ b/graphics/asymptote/stm.h
@@ -164,14 +164,14 @@ public:
};
class extendedForStm : public stm {
- ty *start;
+ astType *start;
symbol var;
exp *set;
stm *body;
public:
- extendedForStm(position pos, ty *start, symbol var, exp *set, stm *body)
+ extendedForStm(position pos, astType *start, symbol var, exp *set, stm *body)
: stm(pos), start(start), var(var), set(set), body(body) {}
void createSymMap(AsymptoteLsp::SymbolContext* symContext) override;
diff --git a/graphics/asymptote/tests/TestLib.asy b/graphics/asymptote/tests/TestLib.asy
index a4a4b23992..f735fef09e 100644
--- a/graphics/asymptote/tests/TestLib.asy
+++ b/graphics/asymptote/tests/TestLib.asy
@@ -6,7 +6,7 @@ bool close(pair a, pair b)
void StartTest(string desc)
{
- write("Testing " + desc + "...",flush);
+ write("Testing " + desc + "...");
}
void EndTest()
diff --git a/graphics/asymptote/tests/template/functionTest.asy b/graphics/asymptote/tests/template/functionTest.asy
new file mode 100644
index 0000000000..770322b2c1
--- /dev/null
+++ b/graphics/asymptote/tests/template/functionTest.asy
@@ -0,0 +1,20 @@
+import TestLib;
+
+typedef real F1(string);
+typedef string F2(int);
+
+real f1(string s) {
+ return length(s);
+}
+
+F2 f2 = operator ecast;
+
+StartTest("Function type parameters");
+
+from 'template/imports/composeFunctions'(R=real, F1=F1, F2=F2, I=int) access
+ compose;
+
+real r = compose(f1, f2)(1234567890);
+assert(r == 10);
+
+EndTest(); \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/imports/A.asy b/graphics/asymptote/tests/template/imports/A.asy
new file mode 100644
index 0000000000..dc737fdb91
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/A.asy
@@ -0,0 +1,4 @@
+typedef import(T);
+
+struct A {
+}
diff --git a/graphics/asymptote/tests/template/imports/B.asy b/graphics/asymptote/tests/template/imports/B.asy
new file mode 100644
index 0000000000..c048a43f46
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/B.asy
@@ -0,0 +1 @@
+typedef import(T);
diff --git a/graphics/asymptote/tests/template/imports/C.asy b/graphics/asymptote/tests/template/imports/C.asy
new file mode 100644
index 0000000000..38e8939bad
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/C.asy
@@ -0,0 +1,6 @@
+typedef import(T);
+
+T a=new T;
+assert(a.x == 1);
+
+int global = 17;
diff --git a/graphics/asymptote/tests/template/imports/composeFunctions.asy b/graphics/asymptote/tests/template/imports/composeFunctions.asy
new file mode 100644
index 0000000000..63678e6c6b
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/composeFunctions.asy
@@ -0,0 +1,9 @@
+typedef import(R, F1, F2, I);
+
+typedef R FF(I);
+
+FF compose(F1 f1, F2 f2) {
+ return new R(I i) {
+ return f1(f2(i));
+ };
+} \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/imports/notTemplate.asy b/graphics/asymptote/tests/template/imports/notTemplate.asy
new file mode 100644
index 0000000000..bd309b07ba
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/notTemplate.asy
@@ -0,0 +1,4 @@
+struct A {
+ static int global = 17;
+ int local = 3;
+} \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/imports/notTemplate2.asy b/graphics/asymptote/tests/template/imports/notTemplate2.asy
new file mode 100644
index 0000000000..4c9375c3b3
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/notTemplate2.asy
@@ -0,0 +1,4 @@
+struct B {
+ import 'template/imports/notTemplate' as notTemplate;
+}
+B b; \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/imports/pureset.asy b/graphics/asymptote/tests/template/imports/pureset.asy
new file mode 100644
index 0000000000..472a37ccb4
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/pureset.asy
@@ -0,0 +1,116 @@
+typedef import(T);
+
+struct Set_T {
+ int size();
+ bool empty() {
+ return size() == 0;
+ }
+ bool contains(T item);
+ bool insert(T item);
+ T replace(T item); // Inserts item, and returns the item that was
+ // replaced, or emptyresponse if no item was replaced.
+ T get(T item);
+ bool delete(T item);
+ // Calls process on each item in the collection until process returns false.
+ void forEach(bool process(T item));
+}
+
+struct NaiveSet_T {
+ private T[] buffer = new T[0];
+ private T emptyresponse;
+ private bool equiv(T a, T b);
+
+ void operator init(bool equiv(T a, T b), T emptyresponse) {
+ this.equiv = equiv;
+ this.emptyresponse = emptyresponse;
+ }
+
+ int size() {
+ return buffer.length;
+ }
+
+ bool contains(T item) {
+ for (T a : buffer) {
+ if (equiv(a, item)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ bool insert(T item) {
+ if (contains(item)) {
+ return false;
+ }
+ buffer.push(item);
+ return true;
+ }
+
+ T replace(T item) {
+ for (int i = 0; i < buffer.length; ++i) {
+ if (equiv(buffer[i], item)) {
+ T old = buffer[i];
+ buffer[i] = item;
+ return old;
+ }
+ }
+ buffer.push(item);
+ return emptyresponse;
+ }
+
+ T get(T item) {
+ for (T a : buffer) {
+ if (equiv(a, item)) {
+ return a;
+ }
+ }
+ return emptyresponse;
+ }
+
+ bool delete(T item) {
+ for (int i = 0; i < buffer.length; ++i) {
+ if (equiv(buffer[i], item)) {
+ buffer[i] = buffer[buffer.length - 1];
+ buffer.pop();
+ return true;
+ }
+ }
+ return false;
+ }
+
+ void forEach(bool process(T item)) {
+ for (T a : buffer) {
+ if (!process(a)) {
+ return;
+ }
+ }
+ }
+
+}
+
+Set_T operator cast(NaiveSet_T naiveSet) {
+ Set_T set = new Set_T;
+ set.size = naiveSet.size;
+ set.contains = naiveSet.contains;
+ set.insert = naiveSet.insert;
+ set.replace = naiveSet.replace;
+ set.get = naiveSet.get;
+ set.delete = naiveSet.delete;
+ set.forEach = naiveSet.forEach;
+ return set;
+}
+
+T[] operator cast(Set_T set) {
+ T[] buffer = new T[set.size()];
+ int i = 0;
+ set.forEach(new bool(T item) {
+ buffer[i] = item;
+ ++i;
+ return true;
+ });
+ return buffer;
+}
+
+Set_T makeNaiveSet(bool equiv(T, T), T emptyresponse) {
+ return NaiveSet_T(equiv, emptyresponse);
+} \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/imports/sortedset.asy b/graphics/asymptote/tests/template/imports/sortedset.asy
new file mode 100644
index 0000000000..bcef6889e0
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/sortedset.asy
@@ -0,0 +1,208 @@
+typedef import(T);
+
+from "template/imports/pureset"(T=T) access Set_T, operator cast, makeNaiveSet;
+
+struct SortedSet_T {
+ int size();
+ bool empty() { return size() == 0; }
+ bool contains(T item);
+ T get(T item); // Returns the item in the collection that is
+ // equivalent to item, or emptyresponse if there is no
+ // such item.
+ // Returns the least element > item, or emptyresponse if there is no such
+ // element.
+ T after(T item);
+ // Returns the greatest element < item, or emptyresponse if there is no such
+ // element.
+ T before(T item);
+ T firstGEQ(T item) { return contains(item) ? get(item) : after(item); }
+ T firstLEQ(T item) { return contains(item) ? get(item) : before(item); }
+ T min(); // Returns emptyresponse if collection is empty.
+ T popMin(); // Returns emptyresponse if collection is empty.
+ T max(); // Returns emptyresponse if collection is empty.
+ T popMax(); // Returns emptyresponse if collection is empty.
+ bool insert(T item); // Returns true iff the collection is modified.
+ T replace(T item); // Inserts item, and returns the item that was
+ // replaced, or emptyresponse if no item was replaced.
+ bool delete(T item); // Returns true iff the collection is modified.
+ // Calls process on each item in the collection, in ascending order,
+ // until process returns false.
+ void forEach(bool process(T item));
+}
+
+T[] operator cast(SortedSet_T set) {
+ T[] result;
+ set.forEach(new bool(T item) {
+ result.push(item);
+ return true;
+ });
+ return result;
+}
+
+Set_T unSort(SortedSet_T sorted_set) {
+ Set_T set = new Set_T;
+ set.size = sorted_set.size;
+ set.empty = sorted_set.empty;
+ set.contains = sorted_set.contains;
+ set.insert = sorted_set.insert;
+ set.replace = sorted_set.replace;
+ set.get = sorted_set.get;
+ set.delete = sorted_set.delete;
+ set.forEach = sorted_set.forEach;
+ return set;
+}
+
+Set_T operator cast(SortedSet_T) = unSort;
+
+// For testing purposes, we provide a naive implementation of SortedSet_T.
+// This implementation is highly inefficient, but it is correct, and can be
+// used to test other implementations of SortedSet_T.
+struct NaiveSortedSet_T {
+ private bool lt(T a, T b);
+ private T[] buffer = new T[0];
+ private T emptyresponse;
+
+ private bool leq(T a, T b) {
+ return !lt(b, a);
+ }
+ private bool gt(T a, T b) {
+ return lt(b, a);
+ }
+ private bool geq(T a, T b) {
+ return leq(b, a);
+ }
+ private bool equiv(T a, T b) {
+ return leq(a, b) && leq(b, a);
+ }
+
+ void operator init(bool lessThan(T, T), T emptyresponse) {
+ this.lt = lessThan;
+ this.emptyresponse = emptyresponse;
+ }
+
+ int size() {
+ return buffer.length;
+ }
+
+ bool contains(T item) {
+ for (T possibility : buffer) {
+ if (equiv(possibility, item)) return true;
+ }
+ return false;
+ }
+
+ T after(T item) {
+ for (T possibility : buffer) {
+ if (gt(possibility, item)) return possibility;
+ }
+ return emptyresponse;
+ }
+
+ T before(T item) {
+ for (int ii = buffer.length - 1; ii >= 0; --ii) {
+ T possibility = buffer[ii];
+ if (lt(possibility, item)) return possibility;
+ }
+ return emptyresponse;
+ }
+
+ T min() {
+ if (buffer.length == 0) return emptyresponse;
+ return buffer[0];
+ }
+
+ T popMin() {
+ if (buffer.length == 0) return emptyresponse;
+ T toreturn = buffer[0];
+ buffer.delete(0);
+ return toreturn;
+ }
+
+ T max() {
+ if (buffer.length == 0) return emptyresponse;
+ return buffer[buffer.length - 1];
+ }
+
+ T popMax() {
+ if (buffer.length == 0) return emptyresponse;
+ return buffer.pop();
+ }
+
+ bool insert(T item) {
+ for (int i = 0; i < buffer.length; ++i) {
+ if (equiv(buffer[i], item)) return false;
+ else if (gt(buffer[i], item)) {
+ buffer.insert(i, item);
+ return true;
+ }
+ }
+ buffer.push(item);
+ return true;
+ }
+
+ T replace(T item) {
+ for (int i = 0; i < buffer.length; ++i) {
+ if (equiv(buffer[i], item)) {
+ T toreturn = buffer[i];
+ buffer[i] = item;
+ return toreturn;
+ }
+ else if (gt(buffer[i], item)) {
+ buffer.insert(i, item);
+ return emptyresponse;
+ }
+ }
+ buffer.push(item);
+ return emptyresponse;
+ }
+
+ T get(T item) {
+ for (T possibility : buffer) {
+ if (equiv(possibility, item)) return possibility;
+ }
+ return emptyresponse;
+ }
+
+ bool delete(T item) {
+ for (int i = 0; i < buffer.length; ++i) {
+ if (equiv(buffer[i], item)) {
+ buffer.delete(i);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ void forEach(bool process(T item)) {
+ for (T item : buffer) {
+ if (!process(item)) break;
+ }
+ }
+}
+
+SortedSet_T operator cast(NaiveSortedSet_T naive) {
+ SortedSet_T toreturn;
+ toreturn.size = naive.size;
+ toreturn.contains = naive.contains;
+ toreturn.after = naive.after;
+ toreturn.before = naive.before;
+ toreturn.min = naive.min;
+ toreturn.popMin = naive.popMin;
+ toreturn.max = naive.max;
+ toreturn.popMax = naive.popMax;
+ toreturn.insert = naive.insert;
+ toreturn.replace = naive.replace;
+ toreturn.get = naive.get;
+ toreturn.delete = naive.delete;
+ toreturn.forEach = naive.forEach;
+ return toreturn;
+}
+
+// Compose cast operators, since implicit casting is not transitive.
+T[] operator cast(NaiveSortedSet_T naive) {
+ return (SortedSet_T)naive;
+}
+
+SortedSet_T makeNaiveSortedSet(bool lessThan(T, T), T emptyresponse) {
+ return NaiveSortedSet_T(lessThan, emptyresponse);
+} \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/imports/splaytree.asy b/graphics/asymptote/tests/template/imports/splaytree.asy
new file mode 100644
index 0000000000..d5850482f9
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/splaytree.asy
@@ -0,0 +1,549 @@
+typedef import(T);
+
+from "template/imports/sortedset"(T=T) access
+ Set_T,
+ SortedSet_T,
+ operator cast;
+
+private struct treenode {
+ treenode leftchild;
+ treenode rightchild;
+ T value;
+ void operator init(T value) {
+ this.value = value;
+ }
+
+ bool inOrder(bool run(T)) {
+ if (leftchild != null) {
+ if (!leftchild.inOrder(run)) return false;
+ }
+ if (!run(value)) return false;
+ if (rightchild != null) {
+ if (!rightchild.inOrder(run)) return false;
+ }
+ return true;
+ }
+}
+
+private struct NodeProgressEnum {
+ restricted static int num = 0;
+ private static int make() {
+ return (++num - 1);
+ }
+ static int NOT_STARTED = make();
+ static int LEFT_DONE = make();
+ static int SELF_DONE = make();
+ static int RIGHT_DONE = make();
+}
+
+private struct NodeInProgress {
+ treenode node;
+ int progress = NodeProgressEnum.NOT_STARTED;
+ void operator init(treenode node) {
+ this.node = node;
+ }
+}
+
+void inOrderNonRecursive(treenode root, bool run(T)) {
+ if (root == null) return;
+ NodeInProgress[] stack = new NodeInProgress[0];
+ stack.cyclic = true;
+ stack.push(NodeInProgress(root));
+ while (stack.length > 0) {
+ NodeInProgress current = stack[-1];
+ if (current.progress == NodeProgressEnum.NOT_STARTED) {
+ if (current.node.leftchild != null) {
+ stack.push(NodeInProgress(current.node.leftchild));
+ }
+ current.progress = NodeProgressEnum.LEFT_DONE;
+ } else if (current.progress == NodeProgressEnum.LEFT_DONE) {
+ if (!run(current.node.value)) return;
+ current.progress = NodeProgressEnum.SELF_DONE;
+ } else if (current.progress == NodeProgressEnum.SELF_DONE) {
+ if (current.node.rightchild != null) {
+ stack.push(NodeInProgress(current.node.rightchild));
+ }
+ current.progress = NodeProgressEnum.RIGHT_DONE;
+ } else {
+ assert(current.progress == NodeProgressEnum.RIGHT_DONE);
+ stack.pop();
+ }
+ }
+}
+
+
+private treenode splay(treenode[] ancestors, bool lessthan(T a, T b)) {
+ bool operator < (T a, T b) = lessthan;
+
+ if (ancestors.length == 0) return null;
+
+ treenode root = ancestors[0];
+ treenode current = ancestors.pop();
+
+ while (ancestors.length >= 2) {
+ treenode parent = ancestors.pop();
+ treenode grandparent = ancestors.pop();
+
+ if (ancestors.length > 0) {
+ treenode greatparent = ancestors[-1];
+ if (greatparent.leftchild == grandparent) {
+ greatparent.leftchild = current;
+ } else greatparent.rightchild = current;
+ }
+
+ bool currentside = (parent.leftchild == current);
+ bool grandside = (grandparent.leftchild == parent);
+
+ if (currentside == grandside) { // zig-zig
+ if (currentside) { // both left
+ treenode B = current.rightchild;
+ treenode C = parent.rightchild;
+
+ current.rightchild = parent;
+ parent.leftchild = B;
+ parent.rightchild = grandparent;
+ grandparent.leftchild = C;
+ } else { // both right
+ treenode B = parent.leftchild;
+ treenode C = current.leftchild;
+
+ current.leftchild = parent;
+ parent.leftchild = grandparent;
+ parent.rightchild = C;
+ grandparent.rightchild = B;
+ }
+ } else { // zig-zag
+ if (grandside) { // left-right
+ treenode B = current.leftchild;
+ treenode C = current.rightchild;
+
+ current.leftchild = parent;
+ current.rightchild = grandparent;
+ parent.rightchild = B;
+ grandparent.leftchild = C;
+ } else { //right-left
+ treenode B = current.leftchild;
+ treenode C = current.rightchild;
+
+ current.leftchild = grandparent;
+ current.rightchild = parent;
+ grandparent.rightchild = B;
+ parent.leftchild = C;
+ }
+ }
+ }
+
+ if (ancestors.length > 0) {
+ ancestors.pop();
+ if (current == root.leftchild) {
+ treenode B = current.rightchild;
+ current.rightchild = root;
+ root.leftchild = B;
+ } else {
+ treenode B = current.leftchild;
+ current.leftchild = root;
+ root.rightchild = B;
+ }
+ }
+
+ return current;
+}
+
+struct SplayTree_T {
+ private treenode root = null;
+ restricted int size = 0;
+ private bool operator < (T a, T b);
+ private T emptyresponse;
+
+ void operator init(bool lessthan(T,T), T emptyresponse) {
+ operator< = lessthan;
+ this.emptyresponse = emptyresponse;
+ }
+
+ int size() {
+ return size;
+ }
+
+ bool empty() {
+ assert((root == null) == (size == 0));
+ return root == null;
+ }
+
+ bool contains(T value) {
+ treenode[] parentStack = new treenode[0];
+ parentStack.cyclic = true;
+ parentStack.push(root);
+ while (true) {
+ treenode current = parentStack[-1];
+ if (current == null) {
+ parentStack.pop();
+ root = splay(parentStack, operator<);
+ return false;
+ }
+ if (value < current.value) {
+ parentStack.push(current.leftchild);
+ } else if (current.value < value) {
+ parentStack.push(current.rightchild);
+ } else break;
+ }
+ root = splay(parentStack, operator<);
+ return true;
+ }
+
+ T after(T item) {
+ treenode[] parentStack = new treenode[0];
+ parentStack.cyclic = true;
+ parentStack.push(root);
+ T strictUpperBound = emptyresponse;
+ bool found = false;
+ while (true) {
+ treenode current = parentStack[-1];
+ if (current == null) {
+ parentStack.pop();
+ root = splay(parentStack, operator<);
+ return strictUpperBound;
+ }
+ if (found || item < current.value) {
+ strictUpperBound = current.value;
+ parentStack.push(current.leftchild);
+ } else {
+ parentStack.push(current.rightchild);
+ if (!(current.value < item))
+ found = true;
+ }
+ }
+ assert(false, "Unreachable code");
+ return emptyresponse;
+ }
+
+ T before(T item) {
+ treenode[] parentStack = new treenode[0];
+ parentStack.cyclic = true;
+ parentStack.push(root);
+ T strictLowerBound = emptyresponse;
+ bool found = false;
+ while (true) {
+ treenode current = parentStack[-1];
+ if (current == null) {
+ parentStack.pop();
+ root = splay(parentStack, operator<);
+ return strictLowerBound;
+ }
+ if (found || current.value < item) {
+ strictLowerBound = current.value;
+ parentStack.push(current.rightchild);
+ } else {
+ parentStack.push(current.leftchild);
+ if (!(item < current.value))
+ found = true;
+ }
+ }
+ assert(false, "Unreachable code");
+ return emptyresponse;
+ }
+
+ T firstGEQ(T item) {
+ treenode[] parentStack = new treenode[0];
+ parentStack.cyclic = true;
+ parentStack.push(root);
+ T upperBound = emptyresponse;
+ while (true) {
+ treenode current = parentStack[-1];
+ if (current == null) {
+ parentStack.pop();
+ root = splay(parentStack, operator<);
+ return upperBound;
+ }
+ if (current.value < item) {
+ parentStack.push(current.rightchild);
+ } else if (item < current.value) {
+ upperBound = current.value;
+ parentStack.push(current.leftchild);
+ } else {
+ root = splay(parentStack, operator<);
+ return current.value;
+ }
+ }
+ assert(false, "Unreachable code");
+ return emptyresponse;
+ }
+
+ T firstLEQ(T item) {
+ treenode[] parentStack = new treenode[0];
+ parentStack.cyclic = true;
+ parentStack.push(root);
+ T lowerBound = emptyresponse;
+ while (true) {
+ treenode current = parentStack[-1];
+ if (current == null) {
+ parentStack.pop();
+ root = splay(parentStack, operator<);
+ return lowerBound;
+ }
+ if (item < current.value) {
+ parentStack.push(current.leftchild);
+ } else if (current.value < item) {
+ lowerBound = current.value;
+ parentStack.push(current.rightchild);
+ } else {
+ root = splay(parentStack, operator<);
+ return current.value;
+ }
+ }
+ assert(false, "Unreachable code");
+ return emptyresponse;
+ }
+
+ T min() {
+ if (root == null) return emptyresponse;
+ treenode[] ancestors = new treenode[0];
+ ancestors.cyclic = true;
+ treenode current = root;
+ while (current != null) {
+ ancestors.push(current);
+ current = current.leftchild;
+ }
+ root = splay(ancestors, operator<);
+ return root.value;
+ }
+
+ T popMin() {
+ if (root == null) return emptyresponse;
+ treenode[] ancestors = new treenode[0];
+ ancestors.cyclic = true;
+ treenode current = root;
+ while (current != null) {
+ ancestors.push(current);
+ current = current.leftchild;
+ }
+ root = splay(ancestors, operator<);
+ T toReturn = root.value;
+ root = root.rightchild;
+ --size;
+ return toReturn;
+ }
+
+ T max() {
+ if (root == null) return emptyresponse;
+ treenode[] ancestors = new treenode[0];
+ ancestors.cyclic = true;
+ treenode current = root;
+ while (current != null) {
+ ancestors.push(current);
+ current = current.rightchild;
+ }
+ root = splay(ancestors, operator<);
+ return root.value;
+ }
+
+ T popMax() {
+ if (root == null) return emptyresponse;
+ treenode[] ancestors = new treenode[0];
+ ancestors.cyclic = true;
+ treenode current = root;
+ while (current != null) {
+ ancestors.push(current);
+ current = current.rightchild;
+ }
+ root = splay(ancestors, operator<);
+ T toReturn = root.value;
+ root = root.leftchild;
+ --size;
+ return toReturn;
+ }
+
+ /*
+ * returns true iff the tree was modified
+ */
+ bool insert(T value) {
+ if (root == null) {
+ root = treenode(value);
+ ++size;
+ return true;
+ }
+ treenode[] ancestors = new treenode[0];
+ ancestors.cyclic = true;
+ ancestors.push(root);
+
+ bool toReturn = false;
+
+ while (!toReturn) {
+ treenode current = ancestors[-1];
+ if (value < current.value) {
+ if (current.leftchild == null) {
+ current.leftchild = treenode(value);
+ toReturn = true;
+ }
+ ancestors.push(current.leftchild);
+ } else if (current.value < value) {
+ if (current.rightchild == null) {
+ current.rightchild = treenode(value);
+ toReturn = true;
+ }
+ ancestors.push(current.rightchild);
+ } else {
+ root = splay(ancestors, operator<);
+ return false;
+ }
+ }
+
+ root = splay(ancestors, operator<);
+ ++size;
+ return true;
+ }
+
+ T replace(T item) {
+ if (root == null) {
+ insert(item);
+ return emptyresponse;
+ }
+ treenode[] ancestors = new treenode[0];
+ ancestors.cyclic = true;
+ ancestors.push(root);
+ treenode current = root;
+ while (true) {
+ if (item < current.value) {
+ if (current.leftchild == null) {
+ current.leftchild = treenode(item);
+ ancestors.push(current.leftchild);
+ break;
+ }
+ ancestors.push(current.leftchild);
+ current = current.leftchild;
+ } else if (current.value < item) {
+ if (current.rightchild == null) {
+ current.rightchild = treenode(item);
+ ancestors.push(current.rightchild);
+ break;
+ }
+ ancestors.push(current.rightchild);
+ current = current.rightchild;
+ } else {
+ T toReturn = current.value;
+ current.value = item;
+ root = splay(ancestors, operator<);
+ return toReturn;
+ }
+ }
+ root = splay(ancestors, operator<);
+ ++size;
+ return emptyresponse;
+ }
+
+ T get(T item) {
+ if (root == null) return emptyresponse;
+ treenode[] parentStack = new treenode[0];
+ parentStack.cyclic = true;
+ parentStack.push(root);
+ while (true) {
+ treenode current = parentStack[-1];
+ if (current == null) {
+ parentStack.pop();
+ root = splay(parentStack, operator<);
+ return emptyresponse;
+ }
+ if (item < current.value) {
+ parentStack.push(current.leftchild);
+ } else if (current.value < item) {
+ parentStack.push(current.rightchild);
+ } else {
+ root = splay(parentStack, operator<);
+ return current.value;
+ }
+ }
+ assert(false, "Unreachable code");
+ return emptyresponse;
+ }
+
+ /*
+ * returns true iff the tree was modified
+ */
+ bool delete(T value) {
+ treenode[] ancestors = new treenode[0];
+ ancestors.cyclic = true; // Makes ancestors[-1] refer to the last entry.
+ ancestors.push(root);
+
+ while (true) {
+ treenode current = ancestors[-1];
+ if (current == null) {
+ ancestors.pop();
+ root = splay(ancestors, operator<);
+ return false;
+ }
+ if (value < current.value)
+ ancestors.push(current.leftchild);
+ else if (current.value < value)
+ ancestors.push(current.rightchild);
+ else break;
+ }
+
+ treenode toDelete = ancestors.pop();
+ treenode parent = null;
+ if (ancestors.length > 0) parent = ancestors[-1];
+
+ if (toDelete.leftchild == null) {
+ if (parent != null) {
+ if (parent.rightchild == toDelete) {
+ parent.rightchild = toDelete.rightchild;
+ } else {
+ parent.leftchild = toDelete.rightchild;
+ }
+ } else root = toDelete.rightchild;
+ } else if (toDelete.rightchild == null) {
+ if (parent == null) {
+ root = toDelete.leftchild;
+ } else if (parent.rightchild == toDelete) {
+ parent.rightchild = toDelete.leftchild;
+ } else parent.leftchild = toDelete.leftchild;
+ } else {
+ treenode[] innerStack = new treenode[0];
+ innerStack.cyclic = true;
+ treenode current = toDelete.rightchild;
+ while (current != null) {
+ innerStack.push(current);
+ current = current.leftchild;
+ }
+ toDelete.rightchild = splay(innerStack, operator<);
+ toDelete.value = toDelete.rightchild.value;
+ toDelete.rightchild = toDelete.rightchild.rightchild;
+ }
+
+ if (parent != null) root = splay(ancestors, operator<);
+ --size;
+ return true;
+ }
+
+ void forEach(bool run(T)) {
+ inOrderNonRecursive(root, run);
+ }
+
+}
+
+SortedSet_T operator cast(SplayTree_T splaytree) {
+ SortedSet_T result = new SortedSet_T;
+ result.size = splaytree.size;
+ result.empty = splaytree.empty;
+ result.contains = splaytree.contains;
+ result.after = splaytree.after;
+ result.before = splaytree.before;
+ result.firstGEQ = splaytree.firstGEQ;
+ result.firstLEQ = splaytree.firstLEQ;
+ result.min = splaytree.min;
+ result.popMin = splaytree.popMin;
+ result.max = splaytree.max;
+ result.popMax = splaytree.popMax;
+ result.insert = splaytree.insert;
+ result.replace = splaytree.replace;
+ result.get = splaytree.get;
+ result.delete = splaytree.delete;
+ result.forEach = splaytree.forEach;
+ return result;
+}
+
+Set_T operator cast(SplayTree_T splaytree) {
+ return (SortedSet_T)splaytree;
+}
+
+T[] operator cast(SplayTree_T splaytree) {
+ return (SortedSet_T)splaytree;
+} \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/imports/structTemplate.asy b/graphics/asymptote/tests/template/imports/structTemplate.asy
new file mode 100644
index 0000000000..5894d2e280
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/structTemplate.asy
@@ -0,0 +1,36 @@
+// Assumption: T is a struct with a static int `global` and a non-static int
+// `local`. Lib is a struct with a static string `testName`.
+typedef import(T, Lib);
+import TestLib;
+
+StartTest('Accessing static testName');
+Lib.testName;
+EndTest();
+
+StartTest(Lib.testName + ': new');
+new T;
+EndTest();
+
+StartTest(Lib.testName + ': Unspecified Declaration');
+T a;
+EndTest();
+
+StartTest(Lib.testName + ': Initializing to null');
+T b = null;
+EndTest();
+
+StartTest(Lib.testName + ': Initializing to new');
+T c = new T;
+EndTest();
+
+StartTest(Lib.testName + ': Access static member');
+int d = T.global;
+EndTest();
+
+StartTest(Lib.testName + ': Access non-static member');
+int e = c.local;
+EndTest();
+
+StartTest(Lib.testName + ': Access static member from instance');
+int f = c.global;
+EndTest();
diff --git a/graphics/asymptote/tests/template/imports/zip.asy b/graphics/asymptote/tests/template/imports/zip.asy
new file mode 100644
index 0000000000..4d02f98b6a
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/zip.asy
@@ -0,0 +1,5 @@
+typedef import(T);
+
+T[][] zip(...T[][] arrays) {
+ return transpose(arrays);
+} \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/initTest.asy b/graphics/asymptote/tests/template/initTest.asy
new file mode 100644
index 0000000000..7def279138
--- /dev/null
+++ b/graphics/asymptote/tests/template/initTest.asy
@@ -0,0 +1,23 @@
+access "template/imports/A"(T=int) as a;
+unravel a;
+access "template/imports/B"(T=A) as b;
+unravel b;
+
+import TestLib;
+
+StartTest("init");
+A c;
+EndTest();
+
+StartTest("new");
+struct X {
+ struct A {
+ int x=1;
+ }
+}
+
+X x;
+
+access "template/imports/C"(T=x.A) as p;
+
+EndTest();
diff --git a/graphics/asymptote/tests/template/multiImport.asy b/graphics/asymptote/tests/template/multiImport.asy
new file mode 100644
index 0000000000..94d5c30feb
--- /dev/null
+++ b/graphics/asymptote/tests/template/multiImport.asy
@@ -0,0 +1,25 @@
+import TestLib;
+
+StartTest('multiple_imports');
+struct A {int x=1;}
+access "template/imports/C"(T=A) as p;
+assert(p.global == 17);
+p.global = 42;
+access "template/imports/C"(T=A) as q;
+assert(q.global == 42);
+EndTest();
+
+StartTest('import_in_function');
+struct B {int x=1;}
+void f(int expected, int newValue) {
+ // Importing inside a function is not recommended practice, but it should
+ // work.
+ access "template/imports/C"(T=B) as p;
+ assert(p.global == expected);
+ p.global = newValue;
+}
+f(17, 23);
+f(23, 27);
+access "template/imports/C"(T=B) as p;
+assert(p.global == 27);
+EndTest();
diff --git a/graphics/asymptote/tests/template/sortedsetTest.asy b/graphics/asymptote/tests/template/sortedsetTest.asy
new file mode 100644
index 0000000000..66dbb88ec1
--- /dev/null
+++ b/graphics/asymptote/tests/template/sortedsetTest.asy
@@ -0,0 +1,254 @@
+import TestLib;
+
+StartTest("NaiveSortedSet");
+
+from "template/imports/wrapper"(T=int) access
+ Wrapper_T as wrapped_int,
+ wrap,
+ alias;
+
+bool operator < (wrapped_int a, wrapped_int b) {
+ return a.t < b.t;
+}
+
+bool operator == (wrapped_int a, wrapped_int b) {
+ return a.t == b.t;
+}
+
+from "template/imports/pureset"(T=wrapped_int) access
+ Set_T as Set_wrapped_int,
+ makeNaiveSet;
+
+from "template/imports/sortedset"(T=wrapped_int) access
+ SortedSet_T as SortedSet_wrapped_int,
+ makeNaiveSortedSet,
+ operator cast,
+ unSort;
+
+struct ActionEnum {
+ static restricted int numActions = 0;
+ static private int next() {
+ return ++numActions - 1;
+ }
+ static restricted int INSERT = next();
+ static restricted int REPLACE = next();
+ static restricted int DELETE = next();
+ static restricted int CONTAINS = next();
+ static restricted int DELETE_CONTAINS = next();
+}
+
+from "template/imports/zip"(T=int) access zip;
+from mapArray(Src=wrapped_int, Dst=int) access map;
+int get(wrapped_int a) {
+ return a.t;
+}
+
+int[] operator cast(wrapped_int[] a) {
+ for (wrapped_int x : a) {
+ assert(!alias(x, null), 'Null element in array');
+ }
+ return map(get, a);
+}
+
+string differences(Set_wrapped_int a, Set_wrapped_int b) {
+ if (a.size() != b.size()) {
+ return 'Different sizes: ' + string(a.size()) + ' vs ' + string(b.size());
+ }
+ wrapped_int[] aArray = sort(a, operator<);
+ int[] aIntArray = map(get, aArray);
+ wrapped_int[] bArray = sort(b, operator<);
+ int[] bIntArray = map(get, bArray);
+ string arrayValues = '[\n';
+ bool different = false;
+ for (int i = 0; i < aIntArray.length; ++i) {
+ arrayValues += ' [' + format('%5d', aIntArray[i]) + ','
+ + format('%5d', bIntArray[i]) + ']';
+ if (!alias(aArray[i], bArray[i])) {
+ arrayValues += ' <---';
+ different = true;
+ }
+ arrayValues += '\n';
+ }
+ arrayValues += ']';
+ // write(arrayValues + '\n');
+ if (different) {
+ return arrayValues;
+ }
+ return '';
+}
+
+string string(int[] a) {
+ string result = '[';
+ for (int i = 0; i < a.length; ++i) {
+ if (i > 0) {
+ result += ', ';
+ }
+ result += string(a[i]);
+ }
+ result += ']';
+ return result;
+}
+
+string string(bool[] a) {
+ string result = '[';
+ for (int i = 0; i < a.length; ++i) {
+ if (i > 0) {
+ result += ', ';
+ }
+ result += a[i] ? 'true' : 'false';
+ }
+ result += ']';
+ return result;
+}
+
+typedef void Action(int ...Set_wrapped_int[]);
+
+Action[] actions = new Action[ActionEnum.numActions];
+actions[ActionEnum.INSERT] = new void(int maxItem ...Set_wrapped_int[] sets) {
+ wrapped_int toInsert = wrap(rand() % maxItem);
+ // write('Inserting ' + string(toInsert.t) + '\n');
+ for (Set_wrapped_int s : sets) {
+ s.insert(toInsert);
+ }
+};
+actions[ActionEnum.REPLACE] = new void(int maxItem ...Set_wrapped_int[] sets) {
+ wrapped_int toReplace = wrap(rand() % maxItem);
+ // write('Replacing ' + string(toReplace.t) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (Set_wrapped_int s : sets) {
+ results.push(s.replace(toReplace));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+};
+actions[ActionEnum.DELETE] = new void(int maxItem ...Set_wrapped_int[] sets) {
+ wrapped_int toDelete = wrap(rand() % maxItem);
+ // write('Deleting ' + string(toDelete.t) + '\n');
+ bool[] results = new bool[];
+ for (Set_wrapped_int s : sets) {
+ results.push(s.delete(toDelete));
+ }
+ if (results.length > 0) {
+ bool expected = results[0];
+ for (bool r : results) {
+ assert(r == expected, 'Different results: ' + string(results));
+ }
+ }
+};
+actions[ActionEnum.CONTAINS] = new void(int maxItem ...Set_wrapped_int[] sets)
+{
+ int toCheck = rand() % maxItem;
+ // write('Checking ' + string(toCheck) + '\n');
+ bool[] results = new bool[];
+ for (Set_wrapped_int s : sets) {
+ results.push(s.contains(wrap(toCheck)));
+ }
+ if (results.length > 0) {
+ bool expected = results[0];
+ for (bool r : results) {
+ assert(r == expected, 'Different results: ' + string(results));
+ }
+ }
+};
+actions[ActionEnum.DELETE_CONTAINS] = new void(int ...Set_wrapped_int[] sets) {
+ if (sets.length == 0) {
+ return;
+ }
+ int initialSize = sets[0].size();
+ if (initialSize == 0) {
+ return;
+ }
+ int indexToDelete = rand() % initialSize;
+ int i = 0;
+ wrapped_int toDelete = null;
+ bool process(wrapped_int a) {
+ if (i == indexToDelete) {
+ toDelete = wrap(a.t);
+ return false;
+ }
+ ++i;
+ return true;
+ }
+ sets[0].forEach(process);
+ assert(i < initialSize, 'Index out of range');
+ // write('Deleting ' + string(toDelete.t) + '\n');
+ int i = 0;
+ for (Set_wrapped_int s : sets) {
+ assert(s.contains(toDelete), 'Contains failed ' + string(i));
+ assert(s.delete(toDelete), 'Delete failed');
+ assert(!s.contains(toDelete), 'Contains failed');
+ assert(s.size() == initialSize - 1, 'Size failed');
+ ++i;
+ }
+};
+real[] increasingProbs = new real[ActionEnum.numActions];
+increasingProbs[ActionEnum.INSERT] = 0.7;
+increasingProbs[ActionEnum.REPLACE] = 0.1;
+increasingProbs[ActionEnum.DELETE] = 0.05;
+increasingProbs[ActionEnum.CONTAINS] = 0.1;
+increasingProbs[ActionEnum.DELETE_CONTAINS] = 0.05;
+assert(sum(increasingProbs) == 1, 'Probabilities do not sum to 1');
+
+real[] decreasingProbs = new real[ActionEnum.numActions];
+decreasingProbs[ActionEnum.INSERT] = 0.1;
+decreasingProbs[ActionEnum.REPLACE] = 0.1;
+decreasingProbs[ActionEnum.DELETE] = 0.4;
+decreasingProbs[ActionEnum.CONTAINS] = 0.1;
+decreasingProbs[ActionEnum.DELETE_CONTAINS] = 0.3;
+assert(sum(decreasingProbs) == 1, 'Probabilities do not sum to 1');
+
+Set_wrapped_int pure_set = makeNaiveSet(operator ==, (wrapped_int)null);
+SortedSet_wrapped_int sorted_set =
+ makeNaiveSortedSet(operator <, (wrapped_int)null);
+
+int chooseAction(real[] probs) {
+ real r = unitrand();
+ real sum = 0;
+ for (int i = 0; i < probs.length; ++i) {
+ sum += probs[i];
+ if (r < sum) {
+ return i;
+ }
+ }
+ return probs.length - 1;
+}
+
+bool isStrictlySorted(wrapped_int[] arr) {
+ for (int i = 1; i < arr.length; ++i) {
+ if (!(arr[i - 1] < arr[i])) {
+ return false;
+ }
+ }
+ return true;
+}
+
+int maxSize = 0;
+for (int i = 0; i < 2000; ++i) {
+ real[] probs = i < 800 ? increasingProbs : decreasingProbs;
+ int choice = chooseAction(probs);
+ actions[choice](100, pure_set, sorted_set);
+ string diffs = differences(pure_set, sorted_set);
+ assert(diffs == '', 'Pure vs sorted: \n' + diffs);
+ assert(isStrictlySorted(sorted_set), 'Not sorted');
+ maxSize = max(maxSize, pure_set.size());
+}
+// write('Max size: ' + string(maxSize) + '\n');
+
+// int maxSize = 0;
+// for (int i = 0; i < 2000; ++i) {
+// real[] probs = i < 800 ? increasingProbs : decreasingProbs;
+// int choice = chooseAction(probs);
+// actions[choice](1000, pure_set, unSort(sorted_set));
+// string diffs = differences(pure_set, sorted_set);
+// assert(diffs == '', 'Pure vs sorted: \n' + diffs);
+// maxSize = max(maxSize, pure_set.size());
+// }
+// write('Max size: ' + string(maxSize) + '\n');
+
+EndTest(); \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/splaytreeTest.asy b/graphics/asymptote/tests/template/splaytreeTest.asy
new file mode 100644
index 0000000000..3ad5811f26
--- /dev/null
+++ b/graphics/asymptote/tests/template/splaytreeTest.asy
@@ -0,0 +1,553 @@
+
+import TestLib;
+
+StartTest("SplayTree_as_Set");
+
+from "template/imports/wrapper"(T=int) access
+ Wrapper_T as wrapped_int,
+ wrap,
+ alias;
+
+bool operator < (wrapped_int a, wrapped_int b) {
+ return a.t < b.t;
+}
+
+bool operator == (wrapped_int a, wrapped_int b) {
+ return a.t == b.t;
+}
+
+from "template/imports/sortedset"(T=wrapped_int) access
+ makeNaiveSortedSet,
+ SortedSet_T as SortedSet_wrapped_int;
+
+from "template/imports/splaytree"(T=wrapped_int) access
+ SplayTree_T as SplayTree_wrapped_int,
+ operator cast;
+
+struct ActionEnum {
+ static restricted int numActions = 0;
+ static private int next() {
+ return ++numActions - 1;
+ }
+ static restricted int INSERT = next();
+ static restricted int REPLACE = next();
+ static restricted int DELETE = next();
+ static restricted int CONTAINS = next();
+ static restricted int DELETE_CONTAINS = next();
+}
+
+from mapArray(Src=wrapped_int, Dst=int) access map;
+int get(wrapped_int a) {
+ return a.t;
+}
+
+int[] operator cast(wrapped_int[] a) {
+ for (wrapped_int x : a) {
+ assert(!alias(x, null), 'Null element in array');
+ }
+ return map(get, a);
+}
+
+string differences(SortedSet_wrapped_int a, SortedSet_wrapped_int b) {
+ if (a.size() != b.size()) {
+ return 'Different sizes: ' + string(a.size()) + ' vs ' + string(b.size());
+ }
+ wrapped_int[] aArray = a;
+ int[] aIntArray = aArray;
+ wrapped_int[] bArray = b;
+ int[] bIntArray = bArray;
+ string arrayValues = '[\n';
+ bool different = false;
+ for (int i = 0; i < aIntArray.length; ++i) {
+ arrayValues += ' [' + format('%5d', aIntArray[i]) + ','
+ + format('%5d', bIntArray[i]) + ']';
+ if (!alias(aArray[i], bArray[i])) {
+ arrayValues += ' <---';
+ different = true;
+ }
+ arrayValues += '\n';
+ }
+ arrayValues += ']';
+ // write(arrayValues + '\n');
+ if (different) {
+ return arrayValues;
+ }
+ return '';
+}
+
+string string(int[] a) {
+ string result = '[';
+ for (int i = 0; i < a.length; ++i) {
+ if (i > 0) {
+ result += ', ';
+ }
+ result += string(a[i]);
+ }
+ result += ']';
+ return result;
+}
+
+string string(bool[] a) {
+ string result = '[';
+ for (int i = 0; i < a.length; ++i) {
+ if (i > 0) {
+ result += ', ';
+ }
+ result += a[i] ? 'true' : 'false';
+ }
+ result += ']';
+ return result;
+}
+
+typedef void Action(int ...SortedSet_wrapped_int[]);
+
+Action[] actions = new Action[ActionEnum.numActions];
+actions[ActionEnum.INSERT] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ wrapped_int toInsert = wrap(rand() % maxItem);
+ // write('Inserting ' + string(toInsert.t) + '\n');
+ for (SortedSet_wrapped_int s : sets) {
+ s.insert(toInsert);
+ }
+ };
+actions[ActionEnum.REPLACE] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ wrapped_int toReplace = wrap(rand() % maxItem);
+ // write('Replacing ' + string(toReplace.t) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.replace(toReplace));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+ };
+actions[ActionEnum.DELETE] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ wrapped_int toDelete = wrap(rand() % maxItem);
+ // write('Deleting ' + string(toDelete.t) + '\n');
+ bool[] results = new bool[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.delete(toDelete));
+ }
+ if (results.length > 0) {
+ bool expected = results[0];
+ for (bool r : results) {
+ assert(r == expected, 'Different results: ' + string(results));
+ }
+ }
+ };
+actions[ActionEnum.CONTAINS] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ int toCheck = rand() % maxItem;
+ // write('Checking ' + string(toCheck) + '\n');
+ bool[] results = new bool[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.contains(wrap(toCheck)));
+ }
+ if (results.length > 0) {
+ bool expected = results[0];
+ for (bool r : results) {
+ assert(r == expected, 'Different results: ' + string(results));
+ }
+ }
+ };
+actions[ActionEnum.DELETE_CONTAINS] =
+ new void(int ...SortedSet_wrapped_int[] sets) {
+ if (sets.length == 0) {
+ return;
+ }
+ int initialSize = sets[0].size();
+ if (initialSize == 0) {
+ return;
+ }
+ int indexToDelete = rand() % initialSize;
+ int i = 0;
+ wrapped_int toDelete = null;
+ bool process(wrapped_int a) {
+ if (i == indexToDelete) {
+ toDelete = wrap(a.t);
+ return false;
+ }
+ ++i;
+ return true;
+ }
+ sets[0].forEach(process);
+ assert(i < initialSize, 'Index out of range');
+ // write('Deleting ' + string(toDelete.t) + '\n');
+ int i = 0;
+ for (SortedSet_wrapped_int s : sets) {
+ assert(s.contains(toDelete), 'Contains failed ' + string(i));
+ assert(s.delete(toDelete), 'Delete failed');
+ assert(!s.contains(toDelete), 'Contains failed');
+ assert(s.size() == initialSize - 1, 'Size failed');
+ ++i;
+ }
+ };
+real[] increasingProbs = new real[ActionEnum.numActions];
+increasingProbs[ActionEnum.INSERT] = 0.7;
+increasingProbs[ActionEnum.REPLACE] = 0.1;
+increasingProbs[ActionEnum.DELETE] = 0.05;
+increasingProbs[ActionEnum.CONTAINS] = 0.1;
+increasingProbs[ActionEnum.DELETE_CONTAINS] = 0.05;
+assert(sum(increasingProbs) == 1, 'Probabilities do not sum to 1');
+
+real[] decreasingProbs = new real[ActionEnum.numActions];
+decreasingProbs[ActionEnum.INSERT] = 0.1;
+decreasingProbs[ActionEnum.REPLACE] = 0.1;
+decreasingProbs[ActionEnum.DELETE] = 0.4;
+decreasingProbs[ActionEnum.CONTAINS] = 0.1;
+decreasingProbs[ActionEnum.DELETE_CONTAINS] = 0.3;
+assert(sum(decreasingProbs) == 1, 'Probabilities do not sum to 1');
+
+SortedSet_wrapped_int sorted_set =
+ makeNaiveSortedSet(operator <, (wrapped_int)null);
+SplayTree_wrapped_int splayset =
+ SplayTree_wrapped_int(operator <, (wrapped_int)null);
+
+int chooseAction(real[] probs) {
+ real r = unitrand();
+ real sum = 0;
+ for (int i = 0; i < probs.length; ++i) {
+ sum += probs[i];
+ if (r < sum) {
+ return i;
+ }
+ }
+ return probs.length - 1;
+}
+
+bool isStrictlySorted(wrapped_int[] arr) {
+ for (int i = 1; i < arr.length; ++i) {
+ if (!(arr[i - 1] < arr[i])) {
+ return false;
+ }
+ }
+ return true;
+}
+
+int maxSize = 0;
+for (int i = 0; i < 2000; ++i) {
+ real[] probs = i < 800 ? increasingProbs : decreasingProbs;
+ int choice = chooseAction(probs);
+ actions[choice](100, sorted_set, splayset);
+ string diffs = differences(sorted_set, splayset);
+ assert(diffs == '', 'Naive vs splayset: \n' + diffs);
+ assert(isStrictlySorted(splayset), 'Not sorted');
+ maxSize = max(maxSize, splayset.size());
+}
+EndTest();
+
+StartTest("SplayTree_as_SortedSet");
+
+struct ActionEnum {
+ static restricted int numActions = 0;
+ static private int next() {
+ return ++numActions - 1;
+ }
+ static restricted int CONTAINS = next();
+ static restricted int AFTER = next();
+ static restricted int BEFORE = next();
+ static restricted int FIRST_GEQ = next();
+ static restricted int FIRST_LEQ = next();
+ static restricted int MIN = next();
+ static restricted int POP_MIN = next();
+ static restricted int MAX = next();
+ static restricted int POP_MAX = next();
+ static restricted int INSERT = next();
+ static restricted int REPLACE = next();
+ static restricted int GET = next();
+ static restricted int DELETE = next();
+ static restricted int DELETE_CONTAINS = next();
+}
+
+Action[] actions = new Action[ActionEnum.numActions];
+actions[ActionEnum.CONTAINS] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ int toCheck = rand() % maxItem;
+ // write('Checking ' + string(toCheck) + '\n');
+ bool[] results = new bool[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.contains(wrap(toCheck)));
+ }
+ if (results.length > 0) {
+ bool expected = results[0];
+ for (bool r : results) {
+ assert(r == expected, 'Different results: ' + string(results));
+ }
+ }
+ };
+actions[ActionEnum.AFTER] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ int toCheck = rand() % maxItem;
+ // write('After ' + string(toCheck) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.after(wrap(toCheck)));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+ };
+actions[ActionEnum.BEFORE] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ int toCheck = rand() % maxItem;
+ // write('Before ' + string(toCheck) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.before(wrap(toCheck)));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+ };
+actions[ActionEnum.FIRST_GEQ] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ int toCheck = rand() % maxItem;
+ // write('First greater or equal ' + string(toCheck) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.firstGEQ(wrap(toCheck)));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+ };
+actions[ActionEnum.FIRST_LEQ] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ int toCheck = rand() % maxItem;
+ // write('First less or equal ' + string(toCheck) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.firstLEQ(wrap(toCheck)));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+ };
+actions[ActionEnum.MIN] = new void(int ...SortedSet_wrapped_int[] sets) {
+ // write('Min\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.min());
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+};
+actions[ActionEnum.POP_MIN] = new void(int ...SortedSet_wrapped_int[] sets) {
+ // write('Pop min\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.popMin());
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+};
+actions[ActionEnum.MAX] = new void(int ...SortedSet_wrapped_int[] sets) {
+ // write('Max\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.max());
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+};
+actions[ActionEnum.POP_MAX] = new void(int ...SortedSet_wrapped_int[] sets) {
+ // write('Pop max\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.popMax());
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+};
+actions[ActionEnum.INSERT] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ wrapped_int toInsert = wrap(rand() % maxItem);
+ // write('Inserting ' + string(toInsert.t) + '\n');
+ for (SortedSet_wrapped_int s : sets) {
+ s.insert(toInsert);
+ }
+ };
+actions[ActionEnum.REPLACE] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ wrapped_int toReplace = wrap(rand() % maxItem);
+ // write('Replacing ' + string(toReplace.t) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.replace(toReplace));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+ };
+actions[ActionEnum.GET] = new void(int maxItem ...SortedSet_wrapped_int[] sets)
+{
+ wrapped_int toGet = wrap(rand() % maxItem);
+ // write('Getting ' + string(toGet) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.get(toGet));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+};
+actions[ActionEnum.DELETE] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ wrapped_int toDelete = wrap(rand() % maxItem);
+ // write('Deleting ' + string(toDelete.t) + '\n');
+ bool[] results = new bool[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.delete(toDelete));
+ }
+ if (results.length > 0) {
+ bool expected = results[0];
+ for (bool r : results) {
+ assert(r == expected, 'Different results: ' + string(results));
+ }
+ }
+ };
+actions[ActionEnum.DELETE_CONTAINS] =
+ new void(int ...SortedSet_wrapped_int[] sets) {
+ if (sets.length == 0) {
+ return;
+ }
+ int initialSize = sets[0].size();
+ if (initialSize == 0) {
+ return;
+ }
+ int indexToDelete = rand() % initialSize;
+ int i = 0;
+ wrapped_int toDelete = null;
+ bool process(wrapped_int a) {
+ if (i == indexToDelete) {
+ toDelete = wrap(a.t);
+ return false;
+ }
+ ++i;
+ return true;
+ }
+ sets[0].forEach(process);
+ assert(i < initialSize, 'Index out of range');
+ // write('Deleting ' + string(toDelete.t) + '\n');
+ int i = 0;
+ for (SortedSet_wrapped_int s : sets) {
+ assert(s.delete(toDelete), 'Delete failed');
+ assert(!s.contains(toDelete), 'Contains failed');
+ assert(s.size() == initialSize - 1, 'Size failed');
+ ++i;
+ }
+ };
+
+real[] increasingProbs = array(n=ActionEnum.numActions, value=0.0);
+// Actions that don't modify the set (except for rebalancing):
+increasingProbs[ActionEnum.CONTAINS] = 1 / 2^5;
+increasingProbs[ActionEnum.AFTER] = 1 / 2^5;
+increasingProbs[ActionEnum.BEFORE] = 1 / 2^5;
+increasingProbs[ActionEnum.FIRST_GEQ] = 1 / 2^5;
+increasingProbs[ActionEnum.FIRST_LEQ] = 1 / 2^5;
+increasingProbs[ActionEnum.MIN] = 1 / 2^5;
+increasingProbs[ActionEnum.MAX] = 1 / 2^5;
+increasingProbs[ActionEnum.GET] = 1 / 2^5;
+// 1/4 probability of this sort of action:
+assert(sum(increasingProbs) == 8 / 2^5);
+// Actions that might add an element:
+increasingProbs[ActionEnum.INSERT] = 1 / 4;
+increasingProbs[ActionEnum.REPLACE] = 1 / 4;
+assert(sum(increasingProbs) == 3/4);
+// Actions that might remove an element:
+increasingProbs[ActionEnum.POP_MIN] = 1 / 16;
+increasingProbs[ActionEnum.POP_MAX] = 1 / 16;
+increasingProbs[ActionEnum.DELETE] = 1 / 16;
+increasingProbs[ActionEnum.DELETE_CONTAINS] = 1 / 16;
+assert(sum(increasingProbs) == 1, 'Probabilities do not sum to 1');
+
+real[] decreasingProbs = copy(increasingProbs);
+// Actions that might add an element:
+decreasingProbs[ActionEnum.INSERT] = 1 / 8;
+decreasingProbs[ActionEnum.REPLACE] = 1 / 8;
+// Actions that might remove an element:
+decreasingProbs[ActionEnum.POP_MIN] = 1 / 8;
+decreasingProbs[ActionEnum.POP_MAX] = 1 / 8;
+decreasingProbs[ActionEnum.DELETE] = 1 / 8;
+decreasingProbs[ActionEnum.DELETE_CONTAINS] = 1 / 8;
+assert(sum(decreasingProbs) == 1, 'Probabilities do not sum to 1');
+
+SortedSet_wrapped_int sorted_set =
+ makeNaiveSortedSet(operator <, (wrapped_int)null);
+SplayTree_wrapped_int splayset =
+ SplayTree_wrapped_int(operator <, (wrapped_int)null);
+
+
+int maxSize = 0;
+for (int i = 0; i < 2000; ++i) {
+ real[] probs = i < 800 ? increasingProbs : decreasingProbs;
+ int choice = chooseAction(probs);
+ actions[choice](100, sorted_set, splayset);
+ string diffs = differences(sorted_set, splayset);
+ assert(diffs == '', 'Naive vs splayset: \n' + diffs);
+ assert(isStrictlySorted(splayset), 'Not sorted');
+ maxSize = max(maxSize, splayset.size());
+}
+
+EndTest(); \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/structTest.asy b/graphics/asymptote/tests/template/structTest.asy
new file mode 100644
index 0000000000..e961397e9f
--- /dev/null
+++ b/graphics/asymptote/tests/template/structTest.asy
@@ -0,0 +1,64 @@
+struct BareStruct {
+ static string testName = "bare struct";
+}
+struct A {
+ static int global = 17;
+ int local = 3;
+}
+access 'template/imports/structTemplate'(T=A, Lib=BareStruct) as bareStruct;
+
+struct NestedStruct {
+ static string testName = "nested struct";
+}
+struct B {
+ static struct C {
+ static int global = 17;
+ int local = 3;
+ }
+}
+access 'template/imports/structTemplate'(T=B.C, Lib=NestedStruct)
+ as nestedStruct;
+
+struct InnerStruct {
+ static string testName = "inner struct";
+}
+struct D {
+ struct E {
+ static int global = 17;
+ int local = 3;
+ }
+}
+D d;
+access 'template/imports/structTemplate'(T=d.E, Lib=InnerStruct)
+ as innerStruct;
+
+struct DeeplyNestedStruct {
+ static string testName = "deeply nested struct";
+}
+
+struct G {
+ struct H {
+ static struct I {
+ static int global = 17;
+ int local = 3;
+ }
+ }
+}
+G g;
+
+access 'template/imports/structTemplate'(T=g.H.I, Lib=DeeplyNestedStruct)
+ as deeplyNestedStruct;
+
+struct ImportedStruct {
+ static string testName = "imported struct";
+}
+access 'template/imports/notTemplate' as notTemplate;
+access 'template/imports/structTemplate'(T=notTemplate.A, Lib=ImportedStruct)
+ as importedStruct;
+
+struct NestedImport {
+ static string testName = "nested import";
+}
+access 'template/imports/notTemplate2' as notTemplate2;
+access 'template/imports/structTemplate'(T=notTemplate2.b.A, Lib=NestedImport)
+ as nestedImport; \ No newline at end of file
diff --git a/graphics/asymptote/v3dheadertypes.h b/graphics/asymptote/v3dheadertypes.h
index bc83414a7d..3e29f8469f 100644
--- a/graphics/asymptote/v3dheadertypes.h
+++ b/graphics/asymptote/v3dheadertypes.h
@@ -1,6 +1,6 @@
// Enum class for v3dheadertypes
// AUTO-GENERATED from v3dheadertypes.csv
-// Generated at 2024-03-23 21:30:36
+// Generated at 2024-06-21 17:44:46+00:00
namespace camp
{
diff --git a/graphics/asymptote/v3dheadertypes.py b/graphics/asymptote/v3dheadertypes.py
index 2c354159fb..988128ff44 100644
--- a/graphics/asymptote/v3dheadertypes.py
+++ b/graphics/asymptote/v3dheadertypes.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# Enum class for v3dheadertypes
""" AUTO-GENERATED from v3dheadertypes.csv """
-# Generated at 2024-03-23 21:31:00
+# Generated at 2024-06-21 17:45:18+00:00
class v3dheadertypes:
v3dheadertypes_canvasWidth=1
diff --git a/graphics/asymptote/v3dtypes.h b/graphics/asymptote/v3dtypes.h
index 9236375f63..9713798875 100644
--- a/graphics/asymptote/v3dtypes.h
+++ b/graphics/asymptote/v3dtypes.h
@@ -1,6 +1,6 @@
// Enum class for v3dtypes
// AUTO-GENERATED from v3dtypes.csv
-// Generated at 2024-03-23 21:30:36
+// Generated at 2024-06-21 17:44:46+00:00
namespace camp
{
diff --git a/graphics/asymptote/v3dtypes.py b/graphics/asymptote/v3dtypes.py
index e4fab69f57..9dab614b51 100644
--- a/graphics/asymptote/v3dtypes.py
+++ b/graphics/asymptote/v3dtypes.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# Enum class for v3dtypes
""" AUTO-GENERATED from v3dtypes.csv """
-# Generated at 2024-03-23 21:31:00
+# Generated at 2024-06-21 17:45:18+00:00
class v3dtypes:
v3dtypes_material=1
diff --git a/graphics/circuit_macros/CHANGES b/graphics/circuit_macros/CHANGES
index 020a7de9e7..efb7f7a0e7 100644
--- a/graphics/circuit_macros/CHANGES
+++ b/graphics/circuit_macros/CHANGES
@@ -1,8 +1,12 @@
CHANGES
+Version 10.6: New macro geiger. Corrected dpv .txt files.
+ Tweaked macros ColoredV, ShadeObject, ebox, shadowed, shadedball, addtaps.
+ Options for macros delay, resistor, source, relaycoil. List of macros
+ reformatted in the manual.
Version 10.5: Options for numersous element macros: sfgarc, sfgline,
sfgself, LCintersect, LEintersect, and others. Systematic facilities
- for Filling and customizing element bodies. New macros ColoredV,
+ for filling and customizing element bodies. New macros ColoredV,
cangle, definergbcolor. Added dpictools.pic macros to the manual.
Removed obsolete macros. Edits of the manual.
Version 10.4: New options for source, sarrow, darrow routines.
diff --git a/graphics/circuit_macros/Copying b/graphics/circuit_macros/Copying
index 2e951040b8..7ec3b487d5 100644
--- a/graphics/circuit_macros/Copying
+++ b/graphics/circuit_macros/Copying
@@ -1,4 +1,4 @@
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/README b/graphics/circuit_macros/README
index a9f7f75c86..708d190f89 100644
--- a/graphics/circuit_macros/README
+++ b/graphics/circuit_macros/README
@@ -1,5 +1,5 @@
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
@@ -17,14 +17,15 @@
and non-WYSIWYG. Graphical interfaces are available for specific
operating systems.
- The macros are to be processed by an m4 macro processor, and evaluate to
- drawing commands in the pic "little language," which is easy to read and
- learn. The diagram is then automatically translated into TiKZ, PSTricks,
- or other formats for processing by LaTeX or other applications. Pic
- is well suited to line drawings requiring parametric or conditional
- components, fine adjustment, geometric calculations, repetition, or
- recursion. Arbitrary text for formatting by LaTeX can be included.
- Free interpreters for m4 and pic are readily available.
+ The macros are to be processed by an m4 macro processor, and evaluate
+ to drawing commands in the pic "little language," which is easy to
+ read and learn. The diagram is then automatically translated into
+ TiKZ, PSTricks, or other formats for processing by LaTeX or other
+ applications. Pic is well suited to line drawings requiring parametric
+ or conditional components, fine adjustment, geometric calculations
+ (it is Turing complete), repetition, or recursion. Arbitrary text
+ for formatting by LaTeX can be included. Free interpreters for m4
+ and pic are readily available.
Sources are available as a git repository at
https://gitlab.com/aplevich/Circuit_macros
@@ -110,14 +111,14 @@ USAGE
m4 gpic.m4 cct.m4 | gpic -t > cct.tex
- The basic commands given above suffice for documents of moderate
- size and complexity; otherwise, a "make" facility or equivalent should
- be used or, for modest documents, diagram processing can be controlled
+ The basic commands given above suffice for documents of moderate size
+ and complexity; otherwise, a "make" facility or equivalent should be
+ used or, for modest documents, diagram processing can be controlled
from within the tex document source as described in the manual. For
- near-immediate viewing of the basic process, three windows can be kept
- open: one in which to edit the source, one to process the source and
- produce postscript or pdf, and a viewer such as GSview 5.0, which updates
- when clicked.
+ near-immediate viewing of the results, three windows can be kept open:
+ one in which to edit the source, one to process the source and produce
+ postscript or pdf, and a viewer such as gv or GSview 5.0. A window
+ displaying the manual is also useful for composing a significant diagram.
INSTALLATION AND TESTING: See the INSTALL file.
@@ -148,7 +149,7 @@ DPIC:
Several Linux distributions will install dpic by command but the version
may not be the latest. A git repository containing complete source is at
https://gitlab.com/aplevich/dpic
- and source plus a Windows executable can be obtaied from
+ and source plus a Windows executable can be obtained from
http://ece.uwaterloo.ca/~aplevich/dpic/
The best advice is to obtain the newest version.
@@ -176,23 +177,24 @@ SVG output, Inkscape:
SVG is the native file format for the Inkscape graphics editor.
Therefore, elements defined by these macros can be output by dpic -v in
- svg format for later manipulation by Inkscape. A very basic palette of
- circuit elements for Inkscape is found in examples/paletteSVG.m4.
- In the examples subdirectory, type "make paletteSVG.svg", read the resulting
- file into Inkscape, and then ungroup the elements as desired. You would
- probably wish to add to or customize these elements for extensive use.
+ svg format for later manipulation by Inkscape. A basic palette of
+ circuit elements for Inkscape is found in examples/dpv/palettePDV.m4.
+ In the examples/dpv subdirectory, type "make paletteDPV.svg", read
+ the resulting file into Inkscape, and then ungroup the elements as
+ desired. You would probably wish to add to or customize these elements
+ for extensive use.
EXAMPLES
- A set of examples is included in this distribution, showing electric
- circuits, block diagrams, flow charts, signal-flow graphs, basic
- use of colour and fill, and other applications. Some of the examples
+ Numerous examples are included in this distribution, showing electric
+ circuits, block diagrams, flow charts, signal-flow graphs, basic use
+ of colour and fill, and other applications. Some of the examples
test the boundaries of the domain of application of dpic with m4
- macros. Read the manual Circuit_macros.pdf and view examples.pdf
- in the examples directory or make and view the html file in the
- examples/svg directory. For the curious, there are additional source
- files in the examples directory that are not shown in examples.pdf.
- Try http://ece.uwaterloo.ca/~aplevich/Circuit_macros/
- for the possibly unstable development version of these macros.
+ macros. Read the manual Circuit_macros.pdf and view examples.pdf in the
+ examples directory or make and view the html file in the examples/dpv
+ directory. For the curious, there are additional source files in
+ the examples/extras directory that are not shown in examples.pdf.
+ Try http://ece.uwaterloo.ca/~aplevich/Circuit_macros/ for the possibly
+ unstable development version of these macros.
The examples directory Makefile automates the generation of .ps, .eps,
.png, and .pdf files for individual diagrams. Subdirectories of the
@@ -220,10 +222,10 @@ INTEGRATION WITH OTHER TOOLS:
representative but keep in mind that systems and installations evolve
over time:
- A Python-based GUI called PyCirkuit is
- at https://pypi.org/project/pycirkuit/ and
- https://github.com/orestesmas/pycirkuit. For an
- introduction, look at the FOSDEM video by Orestes Mas:
+ A Python-based GUI called PyCirkuit is at
+ https://pypi.org/project/pycirkuit/ and
+ https://github.com/orestesmas/pycirkuit. For an introduction, look at
+ the FOSDEM video by Orestes Mas:
https://archive.fosdem.org/2020/schedule/event/pycirkuit/
A python build-automation tool, m4cm, by Peter Jan Randewijk is at
@@ -242,9 +244,10 @@ INTEGRATION WITH OTHER TOOLS:
https://www.youtube.com/watch?time_continue=53&v=pFRIBvUJHS4
A git repository of a KDE interface by Andrew G. for Linux is at
- https://github.com/ag-ckt/cirkuit/tree/V0.5.0.
+ https://github.com/ag-ckt/cirkuit/tree/V0.5.0 but it seems to be
+ unmaintained.
- Another recent introduction is at
+ A recent elementary introduction to Circuit_macros is at
https://www.root.cz/clanky/publikovanie-elektrickych-schem-a-diagramov-pomocou-circuit-macros/
It is in Czech but Google translate works well.
@@ -254,6 +257,10 @@ INTEGRATION WITH OTHER TOOLS:
A Windows batch file for Circuit_macros is found at
http://someonehasdonethis.blogspot.ca/2012/12/a-solution-for-drawing-circuit-diagrams.html
+ The eschpic package on Github contains macro definitions targeted at
+ IEC-style electrical drawings for industrial and automation purposes:
+ https://github.com/xwhatsit/eschpic
+
Mac users:
Descriptions of Mac installations have been published from time to time;
for example:
@@ -261,17 +268,15 @@ INTEGRATION WITH OTHER TOOLS:
VARIATIONS
Macros such as these will be modified inevitably to suit individual
- needs and taste. They continue to evolve in my own library as I use
- them and as others send comments. No such collection can hope to
- include all possible circuit-related symbols, so you will probably
- find yourself writing your own macros or adapting some of these.
- Be careful to rename modified macros to avoid confusion. The learning
- curve compares well to other packages, but there is no trivially
- easy way to produce high-quality graphics. (If "a picture is worth a
- thousand words," ask yourself how long it would take to write, revise,
- and perfect a thousand words.)
-
- See eschpic on Github for IEC-style electrical drawings.
+ needs and taste. They continue to evolve in my own library as I
+ use them and as others send comments. No such collection can hope to
+ include all possible circuit-related symbols, so you will probably find
+ yourself writing your own macros or adapting some of these. The example
+ files might be a good place to start. Be careful to rename modified
+ macros to avoid confusion. The learning curve compares well to other
+ packages, but there is no trivially easy way to produce high-quality
+ graphics. (If "a picture is worth a thousand words," ask yourself
+ how long it would take to write, revise, and perfect a thousand words.)
The pic language dates from the 1980s and was first developed
as a preprocessor for the *roff family of Unix wordprocessors.
@@ -318,15 +323,16 @@ Xfig:
LIBRARIES:
The file libgen.m4 contains general-purpose macros and is read
- automatically by other libraries. The file libcct.m4 defines basic
- circuit elements. Binary logic-circuit elements are in liblog.m4 and
- additional single-line elements are in libSLD.m4. Macros for drawing 3D
- projections are in lib3D.m4, and some macros for drawing double-line
- arrows are in darrow.m4. The file dpictools.pic contains pic macros
- and is read automatically by some of the examples.
-
-Feel free to contact me with comments or questions. I have retired
-from full-time work but continue the hobby of maintaining these files.
+ automatically by other libraries and the macro gen_init. The file
+ libcct.m4 defines basic circuit elements. Binary logic-circuit
+ elements are in liblog.m4 and additional single-line elements are
+ in libSLD.m4. Macros for drawing 3D projections are in lib3D.m4, and
+ some macros for drawing double-line arrows are in darrow.m4. The file
+ dpictools.pic contains dpic macros and is read automatically by some
+ of the examples.
+
+Feel free to contact me with comments or questions. I have retired from
+full-time professorship but continue the hobby of maintaining these files.
I may now be able to spend more time on individual requests but I may
not reply instantly to email.
diff --git a/graphics/circuit_macros/darrow.m4 b/graphics/circuit_macros/darrow.m4
index 49f8c9a878..da57311215 100644
--- a/graphics/circuit_macros/darrow.m4
+++ b/graphics/circuit_macros/darrow.m4
@@ -1,7 +1,7 @@
divert(-1)
darrow.m4 Macros for double lines and arrows
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/doc/AlogixMan.m4 b/graphics/circuit_macros/doc/AlogixMan.m4
index b524f555ee..1b51abd477 100644
--- a/graphics/circuit_macros/doc/AlogixMan.m4
+++ b/graphics/circuit_macros/doc/AlogixMan.m4
@@ -20,7 +20,7 @@ A: Autologix(
# replaced by NOT gates.
B: Autologix(Or(And(B,Not(C)),And(Not(A),B,C)),N) \
with .sw at A.e+(0.4,0.25)
- "{\sl Out}" at B.Out above ljust
+ "{\sl B.Out}" at B.Out above ljust
`"\shortstack[l]{\tt B: Autologix( \\ \tt \
Or(And(B,Not(C)),And(Not(A),B,C)),N)}"' \
wid 242pt__ ht 20pt__ at B.s+(0,-0.2)
diff --git a/graphics/circuit_macros/doc/AmpTableMan.m4 b/graphics/circuit_macros/doc/AmpTableMan.m4
index e820f8d1a9..e83bcdbe4a 100644
--- a/graphics/circuit_macros/doc/AmpTableMan.m4
+++ b/graphics/circuit_macros/doc/AmpTableMan.m4
@@ -1,23 +1,25 @@
.PS
# `AmptableMan.m4'
cct_init
+divert(-1)
+
+divert(0)dnl
+
movewid = 2pt__
-{
+{
{amp ; move ; "{\tt `amp'}" ljust}
- move down 0.4; right_
- {amp(,0.3) ; move ; "\tt `amp'(,0.3)" ljust}
- }
move right_ 2.0
-{ {delay(,,fill_(0.9)) ; move ;
- "`\tt\shortstack[l]{delay(,{,}\\ fill\_(0.9))}'" ljust}
- move down 0.4; right_
- {delay(,0.2) ; move ; "{\tt `delay'(,0.2)}" ljust}
- }
-
+ {amp(,5mm__) ; move ; "\tt `amp'(,5mm\_\_)" ljust}
move right_ 2.0
-{ {integrator ; move ; "\tt `integrator'" ljust}
+ {integrator ; move ; "\tt `integrator'" ljust}
+ }
move down 0.5; right_
- {integrator(,0.3) ; move ; "\tt `integrator'(,0.3)" wid 82pt__ ljust}
- }
+{
+ {delay(,,fill_(0.9)) ; move ;
+ "`\tt\shortstack[l]{delay(,{,}\\ fill\_(0.9))}'" ljust}
+ move right_ 2.0
+ {delay(,,type=S;body=shaded "blue!25"); move
+ "{\tt `delay'(,,type=S;}" ljust "{\tt body=shaded \"blue!25\")}" ljust}
+ }
.PE
diff --git a/graphics/circuit_macros/doc/Circuit_macros.pdf b/graphics/circuit_macros/doc/Circuit_macros.pdf
index 85a2703bc7..f20e440b8c 100644
--- a/graphics/circuit_macros/doc/Circuit_macros.pdf
+++ b/graphics/circuit_macros/doc/Circuit_macros.pdf
Binary files differ
diff --git a/graphics/circuit_macros/doc/Circuit_macros.tex b/graphics/circuit_macros/doc/Circuit_macros.tex
index a5529a90f9..9df6ca528d 100644
--- a/graphics/circuit_macros/doc/Circuit_macros.tex
+++ b/graphics/circuit_macros/doc/Circuit_macros.tex
@@ -58,11 +58,10 @@
{\normalfont\normalsize\bfseries%
\let\@@tmp\@svsec\def\@svsec{\llap{\@@tmp}}%
}}
+\makeatother
\renewcommand\contentsname{Contents, \Version}
-\makeatother
-
\hypersetup{
pdflang=English,
unicode=true,
diff --git a/graphics/circuit_macros/doc/FF.m4 b/graphics/circuit_macros/doc/FF.m4
index e8bdafe239..a0725dc29d 100644
--- a/graphics/circuit_macros/doc/FF.m4
+++ b/graphics/circuit_macros/doc/FF.m4
@@ -1,11 +1,11 @@
.PS
# `FF.m4'
log_init
-S: NOR_gate
+Sg: NOR_gate
left_
-R: NOR_gate at S+(0,-L_unit*(AND_ht+1))
- line from S.Out right L_unit*3 then down S.Out.y-R.In2.y then to R.In2
- line from R.Out left L_unit*3 then up S.In2.y-R.Out.y then to S.In2
- line left 4*L_unit from S.In1 ; "$S$sp_" rjust
- line right 4*L_unit from R.In1 ; "sp_$R$" ljust
+Rg: NOR_gate at Sg+(0,-L_unit*(AND_ht+1))
+ line from Sg.Out right L_unit*3 then down Sg.Out.y-Rg.In2.y then to Rg.In2
+ line from Rg.Out left L_unit*3 then up Sg.In2.y-Rg.Out.y then to Sg.In2
+ line left 4*L_unit from Sg.In1 ; "$S$" rjust
+ line right 4*L_unit from Rg.In1 ; "$R$" ljust
.PE
diff --git a/graphics/circuit_macros/doc/Makefile b/graphics/circuit_macros/doc/Makefile
index 0f0a596447..75b244f934 100644
--- a/graphics/circuit_macros/doc/Makefile
+++ b/graphics/circuit_macros/doc/Makefile
@@ -40,6 +40,9 @@ BOXDIMS = AntennasMan.tex bi_trans.tex ConfigA.tex ConfigB.tex ConfigC.tex \
LATEX = latex
LATEX = latex --quiet
+
+BIBTEX=BIBINPUTS=. bibtex
+
M4 = m4 -I $(LIBDIR)
# If M4PATH has been set:
M4 = m4
@@ -90,13 +93,13 @@ $(DOC).ps:
$(DOC).$(SFX): mode.tex citations $(PICTEX)
@printf "\n $(DOC).SFX=$(DOC).$(SFX):\n\n"
- $(LATEX) $(DOC) ; bibtex $(DOC)
+ $(LATEX) $(DOC) ; $(BIBTEX) $(DOC)
-@if grep -s "Warning: Reference " $(DOC).log ; then \
@printf "\n Warning:\n\n" ; \
- $(LATEX) $(DOC) ; bibtex $(DOC) ; \
+ $(LATEX) $(DOC) ; $(BIBTEX) $(DOC) ; \
elif test ! -f $(DOC).$(SFX) ; then\
@printf "\n No file $(DOC).$(SFX)\n\n" ; \
- $(LATEX) $(DOC) ; bibtex $(DOC) ; fi
+ $(LATEX) $(DOC) ; $(BIBTEX) $(DOC) ; fi
ACsymbol.tex DCsymbol.tex:
touch $(DOC).dim
@@ -105,16 +108,16 @@ ACsymbol.tex DCsymbol.tex:
citations: mode.tex $(DOC).bbl $(PICTEX)
@printf "\n citations:\n\n"
- $(LATEX) $(DOC) ; bibtex $(DOC)
+ $(LATEX) $(DOC) ; $(BIBTEX) $(DOC)
touch citations
$(DOC).bbl: $(DOC).bib $(DOC).aux
- bibtex $(DOC)
+ $(BIBTEX) $(DOC)
# $(DOC).aux: mode.tex $(DOCSRC) heading.tex $(VERBATIM) $(PICTEX)
$(DOC).aux: mode.tex $(DOCSRC) $(VERBATIM) $(PICTEX)
@printf "\n $(DOC).aux:\n\n"
- $(LATEX) $(DOC) ; bibtex $(DOC)
+ $(LATEX) $(DOC) ; $(BIBTEX) $(DOC)
rm -f $(BOXDIMS)
make $(BOXDIMS)
diff --git a/graphics/circuit_macros/doc/QTrans.m4 b/graphics/circuit_macros/doc/QTrans.m4
index 1bc3a15a0a..9eb1e0bfd6 100644
--- a/graphics/circuit_macros/doc/QTrans.m4
+++ b/graphics/circuit_macros/doc/QTrans.m4
@@ -2,17 +2,16 @@
#QTrans.m4
cct_init
elen = 0.75
- Origin: Here
Vs: source(up_ elen,S); llabel(-,V_s,+)
resistor(right_ elen); rlabel(,R_s)
dot
- { capacitor(down_ to (Here,Origin))
+ { capacitor(down_ to (Here,Vs.start))
rlabel(+,V,-); llabel(,{1\over{j\omega C}},)
dot }
arrowline(right_ elen*2/3); llabel(,I)
T1: transformer(down_ Vs.len,,6,,4) with .P1 at Here # Place P1
"$T1$" at last [].n above
- line from T1.P2 to Origin
+ line from T1.P2 to Vs.start
line from T1.S1 up_ to (T1.S1,Vs.end) then right_ elen*2/3
resistor(down_ Vs.len); rlabel(,R_L); b_current(I_L,rjust)
line to (T1.S2,Here) then to T1.S2
diff --git a/graphics/circuit_macros/doc/ResistorsMan.m4 b/graphics/circuit_macros/doc/ResistorsMan.m4
index d13795283d..b3a228c5b7 100644
--- a/graphics/circuit_macros/doc/ResistorsMan.m4
+++ b/graphics/circuit_macros/doc/ResistorsMan.m4
@@ -5,36 +5,32 @@ cct_init
movewid = 2 pt__
hm = 2.05
vm = 0.28
-{ {resistor ; move ;"`{\tt resistor}'" ljust}
+{ {A:resistor ; move ;"`{\tt resistor}'" ljust}
move right_ hm
- {resistor(,,Q) ; move ;"`\tt resistor(,{,}Q) '" ljust}
+ {Q:resistor(,5,Q) ; move ;"`\tt $\ldots$(,5{,}Q) '" ljust}
move right_ hm
- {resistor(,,V) ; move ;"`{\tt resistor(,{,}V)}'" ljust}
+ {V:resistor(,,V) ; move ;"`{\tt $\ldots$(,{,}V)}'" ljust}
}
move down vm; right_
-{ {resistor(,,ES) ; move ;"`\tt resistor(,{,}ES) '" ljust}
+{ {ES:resistor(,,ES); move ;"`\tt $\ldots$(,{,}ES) '" ljust}
move right_ hm
- {resistor(,,H) ; move ;"`\tt resistor(,{,}H) '" ljust}
+ {H:resistor(,4,H) ; move ;"`\tt $\ldots$(,4{,}H) '" ljust}
move right_ hm
- {resistor(,,AC) ; move ;"`{\tt resistor(,{,}AC)}'" ljust}
+ {AC:resistor(,,AC) ; move ;"`{\tt $\ldots$(,{,}AC)}'" ljust}
}
move down vm; right_
-{ {resistor(,5,B) ; move ;"`{\tt resistor(,5,B)}'" ljust}
+{ {B:resistor(,,B) ; move ;"`{\tt $\ldots$(,{,}B)}'" ljust}
move right_ hm
- {resistor(,,E) ; move
- "`\shortstack[l]{\tt resistor(,{,}E)\\ {\tt $\equiv$ ebox}}'" ljust}
+ {F:resistor(,,F) ; move ;"`\tt $\ldots$(,{,}F) '" ljust}
move right_ hm
- {ebox(,0.5,0.3) ; move ;"`{\tt ebox(,0.5,0.3)}'" ljust}
+ {E:resistor(,,E) ; move ; "`\tt $\ldots$(,{,}E) $\equiv$ ebox'" ljust}
}
- move down vm; right_
+ move down vm*1.1; right_
{ {ebox(,,,0.9) ; move ;"`{\tt ebox(,{,},0.9)}'" ljust}
move right_ hm
- {ebox(,,,,shaded "green") ; move
- "`{\tt ebox(,{,},{,}shaded \"green\")}'" ljust}
-}
- move down vm; right_
-{ {ebox(,wdth=0.2;box=dashed shaded "green";text="X") ; move
- "`{\tt ebox(,wdth=0.2;box=dashed shaded \"green\";text=\"X\")}'" ljust}
+ {ebox(,wdth=0.2;box=dashed shaded "green";text="H") ; move
+ "`\shortstack[l]{\tt ebox(,wdth=0.2;box=dashed shaded \"green\";\\' \
+ `\tt text=\"H\")}'" ljust}
}
.PE
diff --git a/graphics/circuit_macros/doc/SourcesMan.m4 b/graphics/circuit_macros/doc/SourcesMan.m4
index 6647a84d1d..e4c491e80d 100644
--- a/graphics/circuit_macros/doc/SourcesMan.m4
+++ b/graphics/circuit_macros/doc/SourcesMan.m4
@@ -19,18 +19,17 @@ define(`NL',`; move down $1; right_')
{source(,SC) ; move ; "`\tt source(,SC)'" ljust} NL
{source(,AC); move ; "`\tt source(,AC)'" ljust} NL
{source(,X) ; move ; "`\tt source(,X)'" ljust} NL
- {source(,F) ; move ; "`\tt source(,F)'" ljust} NL
{source(,G) ; move ; "`\tt source(,G)'" ljust} NL
{source(,Q) ; move ; "`\tt source(,Q)'" ljust} NL #(0.3)
+ {source(,F) ; move ; "`\tt source(,F)'" ljust} NL
+ {geiger(,,,,fill_(0.9)); move;
+ "`\tt \shortstack[l]{geiger(,{,},{,}\\ fill\_(0.9))}'" ljust} NL
}
move right_ 2.0
{
-# {source(,,0.4) ; move ; "`\tt source(,{,}0.4)'" ljust} NL(0.35)
{source(,,0.4,,shaded "yellow") ; move ;
"`\tt\shortstack[l]{source(,{,}0.4,{,}\\ shaded \"yellow\")}'" ljust} NL(0.35)
-# {source(,P) ; move ; "`\tt source(,P)'" ljust} NL
- {source(,P,,,fill_(0.9)) ; move ;
- "`\tt\shortstack[l]{source(,P,{,},\\ fill\_(0.9))}'" ljust} NL
+ {source(,P) ; move ; "`\tt source(,P)'" ljust} NL
{source(,U) ; move ; "`\tt source(,U)'" ljust} NL
{source(,H) ; move ; "`\tt source(,H)'" ljust} NL
{source(,R) ; move ; "`\tt source(,R)'" ljust} NL
@@ -38,18 +37,18 @@ define(`NL',`; move down $1; right_')
{source(,SCr) ; move ; "`\tt source(,SCr)'" ljust} NL
{source(,T) ; move ; "`\tt source(,T)'" ljust} NL
{source(,L) ; move ; "`\tt source(,L)'" ljust} NL
- {source(,B) ; move ; "`\tt source(,B)'" ljust} NL
+ {source(,B) ; move ; "`\tt source(,B)'" ljust} NL(moveht*0.8)
{nullator ; move ; "`\tt nullator'" ljust} NL(moveht*0.8)
{norator ; move ; "`\tt norator'" ljust} NL(moveht*0.9)
{ttmotor(,G) ; move ; "`\tt ttmotor(,G)'" ljust} NL(moveht*1.1)
- {proximity ; move ;
- "`\tt \shortstack[l]{proximity\\ = consource(,P)}'" ljust}
+ {battery ; move ; "`\tt battery'" ljust} NL(0.3)
+ {battery(,3,R) ; move ; "`\tt battery(,3,R)'" ljust} #NL(0.35)
}
move right_ 2.0
{source(,N) ; move ; "`\tt source(,N)'" ljust} NL
+ {source(,NA) ; move ; "`\tt source(,NA)'" ljust} NL
+ {source(,NB) ; move ; "`\tt source(,NB)'" ljust} NL
{source(,"\rm mA");move; "`\tt source(,\"mA\")'" ljust} NL(0.31)
-# {source(,"mA");move; "`\tt source(,'" ljust \
-# "`\tt \enskip \"mA\")'" ljust} NL(0.31)
{consource ; move ; "`\tt consource'" ljust} NL(0.32)
{consource(,I) ; move ; "`\tt consource(,I)'" ljust} NL(0.32)
{consource(,i) ; move ; "`\tt consource(,i)'" ljust} NL(0.32)
@@ -58,8 +57,8 @@ define(`NL',`; move down $1; right_')
{consource(,V) ; move ; "`\tt consource(,V)'" ljust} NL(0.32)
{consource(,v) ; move ; "`\tt consource(,v)'" ljust} NL(0.3)
{consource(,tv) ; move ; "`\tt consource(,tv)'" ljust} NL(0.3)
- {battery ; move ; "`\tt battery'" ljust} NL(0.3)
- {battery(,3,R) ; move ; "`\tt battery(,3,R)'" ljust} #NL(0.35)
+ {proximity ; move ;
+ "`\tt \shortstack[l]{proximity\\ = consource(,P)}'" ljust} NL(0.35)
iflatex(`ifpsfrag(,`latexcommand(})')')
.PE
diff --git a/graphics/circuit_macros/doc/Taps.m4 b/graphics/circuit_macros/doc/Taps.m4
index aa6b59251b..57d1ea792a 100644
--- a/graphics/circuit_macros/doc/Taps.m4
+++ b/graphics/circuit_macros/doc/Taps.m4
@@ -9,7 +9,7 @@ cct_init
"\sl R1.end" at R1.end above
"\sl Tap1" at Tap1 rjust
"\sl Tap2" at Tap2 ljust
- `"\tt right\_; t = 0.2in\_\_" ljust \
+ `"\tt right\_; t = 0.2 in\_\_" ljust \
"\tt R1:$\;$resistor(,{,}E)" ljust \
"\tt addtaps(<-,0.2,-t,0.8,t)" ljust' at R1.end+(0.3,0)
diff --git a/graphics/circuit_macros/doc/Version.tex b/graphics/circuit_macros/doc/Version.tex
index 4a5d56e9c4..0c66604489 100644
--- a/graphics/circuit_macros/doc/Version.tex
+++ b/graphics/circuit_macros/doc/Version.tex
@@ -1 +1 @@
-Version 10.5
+Version 10.6
diff --git a/graphics/circuit_macros/doc/body.tex b/graphics/circuit_macros/doc/body.tex
index b6b9ca0dde..79827bb2e4 100644
--- a/graphics/circuit_macros/doc/body.tex
+++ b/graphics/circuit_macros/doc/body.tex
@@ -64,7 +64,7 @@ processed by \Mfour and a \pic processor to
convert them to \TPGF, \PSTricks, other \latex-compatible code, \SVG,
or other formats.
In its basic usage, the method has the advantages and disadvantages of
-\tex itself, since it is macro-based and non-WYSIWYG,
+\tex itself since it is macro-based and non-WYSIWYG,
with ordinary text input. The book from which the above quotation
is taken correctly points out that the payoff can be in quality of
diagrams at the price of the time spent in drawing them.
@@ -73,7 +73,7 @@ A collection of basic components, most based on IEC and IEEE
standards~\cite{IECstd,IEEEstd},
and conventions for their internal
structure are described. Macros such as these are only a starting
-point, since it is often convenient to customize elements or to package
+point since it is often convenient to customize elements or to package
combinations of them for particular drawings or contexts,
a process for which \Mfour\ and \pic\ are well suited.
@@ -126,11 +126,11 @@ in \FR{quick} to illustrate the language and the production of basic
labeled circuits.
\begin{figure}[ht]
\parbox{\textwidth}{\small\verbatiminput{quick.m4}}%
- \hfill\llap{\raise-1.15in\hbox{\input quick }}%
- \vspace*{-\baselineskip}%
+ \hfill\llap{\raise-1in\hbox{\input quick }}%
+% \vspace*{-\baselineskip}%
\caption{The file {\tt quick.m4} and resulting diagram.
There are several ways of drawing the same picture; for example,
- nodes (such as {\tt Origin}) can be defined and circuit branches
+ nodes (example: {\tt Origin: Here}) can be defined and circuit branches
drawn between them; or absolute coordinates can be used (e.g.,
{\tt source(up\_ from (0,0) to (0,0.75))} ). Element sizes
can be varied and non-two-terminal elements included (\FR{QTrans})
@@ -501,7 +501,8 @@ truncates the line by {\tt x} at the start and {\tt y} at the end.
Any of the above means of specifying line (or arrow) direction and length
will be called a \linespec.
-Lines can be concatenated. For example, to draw a triangle:
+Lines can be concatenated to create multsegmented objects.
+For example, to draw a triangle:
{\tt line up\_ sqrt(3) right\_ 1 then down\_ sqrt(3) right\_ 1 then left\_ 2}
@@ -903,11 +904,11 @@ The first macro argument specifies the
\begin{figure}[H]
\input ResistorsMan
\caption{Resistors drawn by the macro
- {\tt resistor({\sl linespec, n}|E, {\sl chars}, {\sl cycle wid})}.
- The second argument is either an integer to specify number of cycles,
- the letter {\tt E}, or blank. The third argument specifies the desired
- variant.
- The default {\tt ebox} element designates a resistor.}
+ {\tt resistor({\sl linespec, n}, {\sl chars}, {\sl cycle wid})}.
+ The second argument is either an integer to specify number of cycles
+% the letter {\tt E},
+ or blank. The third argument specifies the desired variant.
+ The default {\tt ebox} element designates a box resistor.}
\label{Resistors}
\end{figure}
\noindent%
@@ -936,7 +937,7 @@ See \SR{Composite:} for the {\tt variable} macro.
\label{Capacitors}
\end{figure}
-Basic inductors are illustrated in \FR{Inductors}.
+Inductors are illustrated in \FR{Inductors}.
\begin{figure}[H]
\input InductorsMan
\caption{Basic inductors created with the
@@ -992,7 +993,8 @@ to draw a single cycle of a sinusoid or approximate sinusoid.
\begin{figure}[hbt]
\input SourcesMan
\caption{Sources and source-like elements. An argument of each
- element allows customization such as shading.}
+ element allows customization such as shading. The {\tt geiger}
+ macro is a wrapper for {\tt source}.}
\label{Sources}
\end{figure}
As a convenience,
@@ -1270,6 +1272,8 @@ The macro {\tt eleminit\_} in the two-terminal elements invokes
to establish element length and direction.
As shown in \FR{Oblique},
+``{\tt Point\_(-30); resistor}'' draws a resistor
+along a line with slope of~-30 degrees,
\begin{figure}[hbt]
\vspace{-\baselineskip}
\parbox{4.5in}{\small \verbatiminput{Oblique.m4}}%
@@ -1278,8 +1282,7 @@ As shown in \FR{Oblique},
\caption{Illustrating elements drawn at oblique angles.}
\label{Oblique}
\end{figure}
-``{\tt Point\_(-30); resistor}'' draws a resistor
-along a line with slope of~-30 degrees, and ``{\tt rpoint\_(to Z)}'' sets
+and ``{\tt rpoint\_(to Z)}'' sets
the current direction cosines to point from the current location to location Z.
Macro {\tt vec\_(x,y)}
evaluates to the position {\tt (x,y)} rotated as defined by the
@@ -1419,19 +1422,22 @@ the {\tt ground} macro, for example:
include a transformer, a composite element described in detail below,
followed by code for the figure.
\begin{figure}[H]
-% \vspace*{-\baselineskip}
-% \parbox{4in}{\small \verbatiminput{QTrans.m4}}%
-% \hspace*{-0.45in}\raise-0.15in\hbox{\input QTrans }
-% \vspace*{-\baselineskip}
\input Qtrans
\caption{The file {\tt quick.m4} modified to include a composite
element, the transformer, which is positioned by placing an
- internal point.}
-% transformer, of which the length and orientation of connectors
-% is given by the first argument, and which is positioned in this
-% example by placing the internal position {\sl P1.}}
+ internal point, thus:
+ {\tt T1:~transformer(down\_ Vs.len,{},6,{},4) with .P1 at Here}.}
\label{QTrans}
\end{figure}
+%\begin{figure}[H]
+% \parbox{\textwidth}{\small\verbatiminput{Qtrans.m4}}%
+% \hfill\llap{\raise-1in\hbox{\input Qtrans }}%
+% \caption{The file {\tt quick.m4} modified to include a composite
+% element, the transformer, which is positioned by placing an
+% internal point, thus:
+% {\tt T1:~transformer(down\_ Vs.len,{},6,{},4) with .P1 at Here}.}
+% \label{QTrans}
+% \end{figure}
\FR{Xform} shows variants of the transformer macro,
which has predefined internal locations
@@ -1457,12 +1463,12 @@ puts dots at opposite ends.
\end{figure}
The code for \FR{QTrans} is reproduced in the following.
-Label {\sl Vs} has been added for later reference.
-The transformer is positioned by placing internal position {\sl P1.}
+%Label {\sl Vs} has been added for later reference.
+The transformer is positioned by placing internal point {\sl P1.}
\verbatiminput{QTrans.m4}
-The macro {\tt
- potentiometer(\linespec,{\sl cycles},{\sl fractional pos},{\sl length},
+Another composite element,
+ {\tt potentiometer(\linespec,{\sl cycles},{\sl fractional pos},{\sl length},
$\ldots$)},
shown in \FR{Potentiometers},
first draws a resistor along the specified line, then adds arrows for taps
@@ -1983,6 +1989,7 @@ A macro is also provided for colored fills:
\noindent%
These macros depend heavily on the postprocessor and are intended only for
\PSTricks, \TPGF, \MetaPost, \SVG, and the Postscript or PDF output of \dpic.
+Their effects are fragile in some situations.
Basic \Pic\ objects are probably best colored and filled as discussed
in \SR{Planarobjects:}.
@@ -2056,7 +2063,9 @@ of input locations {\tt In1,} $\ldots$ {\tt In}$N,$ as illustrated
for the NOR gate in the figure. By default, $N=2$ except for macros
{\tt NOT\_gate} and {\tt BUFFER\_gate}, which have one input {\tt In1}
unless they are given a first argument, which is treated as the line
-specification of a two-terminal element.
+specification of a two-terminal element. Alternately, the first argument
+can be a sequence of letters {\tt P} or {\tt N} to define a number of
+normal or negated ({\tt Not}-circled) inputs.
\begin{figure}[H]
\vspace*{-0.5\baselineskip}
\input LogicMan
@@ -3068,7 +3077,7 @@ respectively, and {\tt custombox} evaluates to
{\tt B1:\ box wid (2) ht (boxht) "Hello"}.
The key prefix {\tt m4} of the automatically created parameter macros can be
-redefined if necessary, since it is given in the distribution by the line
+redefined if necessary since it is given in the distribution by the line
{\tt define(`key\_prefix',`m4')}.
@@ -3550,10 +3559,10 @@ packages available these days? It would depend on the context, but
and read but powerful enough (that is, Turing-complete) for coding the
geometrical calculations required for precise component sizing and
placement. It would be nice if arbitrary rotations and scaling were
-simpler and if a general path element with clipping were available
-as in \Postscript. However, all the power of \Postscript or \TPGF,
-for example, remains available, as arbitrary postprocessor code can be
-included with \pic code.
+simpler, if a general path element with clipping were available as in
+\Postscript, and if adding color across postprocessors were easier.
+However, all the power of \Postscript or \TPGF, for example, remains
+available, as arbitrary postprocessor code can be included with \pic code.
The \dpic interpreter has several output-format options that may be
useful. The {\tt eepicemu} and {\tt pict2e} extensions of the
@@ -3568,13 +3577,12 @@ editor, but SVG can also be used directly for web pages.
\Dpic will also generate low-level \MetaPost or \Postscript code, so
that diagrams defined using \pic can be manipulated and combined with
others.
-I learned to great benefit that the \Postscript output can be imported into
-CorelDraw and Adobe Illustrator for further processing,
-so that detailed diagram components produced by pic program can be combined
-with effects best acheived using a wysiwyg drawing program.
-With raw \Postscript, \PDF, and \SVG output however, the user is
-responsible for ensuring that the correct fonts are provided and for
-formatting the text.
+I learned to great benefit that the \Postscript output can be imported
+into CorelDraw and Adobe Illustrator for further processing, so that
+detailed diagram components produced by pic program can be combined
+with effects best acheived using a wysiwyg drawing program. With raw
+\Postscript, \PDF, and \SVG output however, the user is responsible for
+ensuring that the correct fonts are provided and for formatting the text.
Many thanks to the people who continue to send comments, questions,
and, occasionally, bug fixes. What began as a tool for my own use changed
@@ -3759,6 +3767,12 @@ Note that the loop index variable {\tt m4x} is automatically defined.
\noindent The cure is to add single quotes in pairs as necessary.
+ If text containing single quote characters causes difficulties
+ then replace the \LaTeX\ single quote by {\tt \bsl{}char39}
+ or disable the m4 quote characters temporarily as shown:
+
+ {\tt changequote(,)} {\sl text containing single quotes} {\tt changequote(`,)}
+
The only subtlety required in writing
\Mfour macros is deciding when to quote macro arguments. In the context
of circuits it seemed best to assume that arguments would not
diff --git a/graphics/circuit_macros/doc/defines.tex b/graphics/circuit_macros/doc/defines.tex
index 0c9c67bfbf..6cb3a997c7 100644
--- a/graphics/circuit_macros/doc/defines.tex
+++ b/graphics/circuit_macros/doc/defines.tex
@@ -1,6 +1,6 @@
%
-\newdimen{\leftwid}\setlength{\leftwid}{2in}
-\newdimen{\libwid}\setlength{\libwid}{0.5in}
+\newdimen{\leftwid}\setlength{\leftwid}{140pt}
+\newdimen{\libwid}\setlength{\libwid}{35pt}
\newdimen\rightwid
\setlength{\rightwid}{\textwidth}
\addtolength{\rightwid}{-\leftwid}
@@ -11,31 +11,31 @@
%\newcommand{\macx}[2]{%
% \phantomsection\pdfbookmark[subsection]{#1}{#2}#1}
-\newcommand{\macrodef}[5]{%\begin{minipage}[b]{\textwidth}%
-\phantomsection\pdfbookmark[subsubsection]{#1}{#2}%
-\setbox\Defbox=\hbox{\tt #1#3}%
+% This is alchemy but good enough for now.
+\newcommand{\macrodef}[5]{\paragraph*{\hfill}\noindent%
+ \phantomsection\pdfbookmark[subsubsection]{#1}{#2}\hspace*{-\parindent}%
+ \setbox\Defbox=\hbox{\tt #1#3}%
\ifdim\wd\Defbox>\textwidth%
- \setbox\Defbox=\hbox{\parbox{\textwidth}{\tt #1#3}}\fi
+ \setbox\Defbox=\hbox{\parbox[t]{\textwidth}{\tt #1#3}}\fi%
+ \nopagebreak%
\ifdim\wd\Defbox>\leftwid%
- \box\Defbox\hfill\break\hspace*{\leftwid}%
+ \box\Defbox\hfill\break\hspace*{-1ex}\hbox to \leftwid{\hfill}%
\else\hbox to \leftwid{\box\Defbox\hfill}\fi%
- \nopagebreak
- \hbox to \libwid{#4\hfill}\parbox[t]{\rightwid}%
- {\raggedright #5}%
- %\end{minipage}%
- \vspace{\parsep}\\}%
+ \hbox to \libwid{#4\hfill}%
+ \begin{minipage}[t]{\rightwid}\raggedright#5\end{minipage}}%
\newcommand{\seesect}[1]{ (\SR{#1})}
\newcommand{\Letter}[1]{\noindent%
\pdfbookmark[subsection]{#1}{#1}%
- \hskip-2em\hbox to 2em{#1\label{#1}\hfill}\relax}%
+ \hskip-2em\hbox to 2em{\par#1\label{#1}}\relax}%
\newcommand{\LR}[1]{\hyperref[#1]{{#1}}\hskip1em}
+\newcommand{\fra}[1]{\hbox{\sl frac#1}}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\raggedbottom
+%\raggedbottom
\vspace{\abovedisplayskip}
\noindent
\LR{A} \LR{B} \LR{C} \LR{D} \LR{E} \LR{F} \LR{G} \LR{H} \LR{I} \LR{J}
@@ -50,7 +50,7 @@
\macrodef{abs\_}{abs_}{({\sl number})}%
{gen}%
{absolute value function}%
-\macrodef{ACsymbol}{ACsymbol}{(at {\sl position, len, ht,}%
+\macrodef{ACsymbol}{ACsymbol}{(at {\sl position, len, ht,} %
[n:][A]U|D|L|R|{\sl degrees}) }%
{cct}%
{draw a stack of $n$ (default 1) AC symbols
@@ -58,12 +58,12 @@
are used. The current drawing direction is default, otherwise Up, Down,
Left, Right, or at {\sl degrees} slant; \seesect{Twoterminal:} e.g.,\\
{\tt ebox; $\lbrace$ACsymbol(at last [],{,}dimen\_/8)$\rbrace$}}%
-\macrodef{adc}{adc}{({\sl width,height,nIn,nN,nOut,nS})}%
+\macrodef{adc}{adc}{({\sl width, height, nIn, nN, nOut, nS})}%
{cct}%
{Analog-digital converter with defined width, height, and number of
inputs {\tt In$i$}, top terminals {\tt N$i$}, ouputs {\tt Out$i$},
and bottom terminals~{\tt S$i$}}%
-\macrodef{addtaps}{addtaps}{[{\sl arrowhd}%
+\macrodef{addtaps}{addtaps}{([{\sl arrowhd}%
| type={\sl arrowhd};name={\sl Name}],
{\sl fraction, length, fraction, length,} $\cdots$)}%
{cct}%
@@ -81,7 +81,7 @@
\macrodef{Along\_}{Along_}{({\sl LinearObj,distance,}[R])}%
{gen}%
{Position arg2 (default all the way) along a linear object
- from {\tt .start} to {\tt .end}%
+ from {\tt .start} to {\tt .end}
(from {\tt .end} to {\tt .start} if arg3={\tt R}) }%
\macrodef{amp}{amp}{(\linespec, {\sl size}, {\sl attributes})}%
{cct}%
@@ -89,7 +89,7 @@
\macrodef{And, Or, Not, Nand, Nor, Xor, Nxor, Buffer}%
{And, Or, Not, Nand, Nor, Xor, Nxor, Buffer}{}%
{log}%
- {Wrappers of {\tt AND\_gate}, $\ldots$ for use in the {\tt Autologix}%
+ {Wrappers of {\tt AND\_gate}, $\ldots$ for use in the {\tt Autologix}
macro}%
\macrodef{AND\_gate}{AND_gate}{({\tt {\sl n}, [N][B],
[{\sl wid}, [{\sl ht}]], {\sl attributes}})}%
@@ -106,11 +106,11 @@
{\sl attributes})}%
{log}%
{general AND gate: $n$=number of inputs $(0\leq n\leq 16)$;
- {\sl chars:}%
+ {\sl chars:}
B=base and straight sides; A=Arc;
[N]NE,[N]SE,[N]I,[N]N,[N]S=inputs or circles;
[N]O=output; C=center.
- Otherwise, arg1 can be a sequence of letters {\tt P|N}%
+ Otherwise, arg1 can be a sequence of letters {\tt P|N}
to define normal or negated inputs; arg2 is as above except that
{\tt [N]I} is ignored. Arg 5 contains body attributes.}%
\macrodef{AND\_ht}{AND_ht}{}%
@@ -170,8 +170,8 @@
the macro affect the arc only,
e.g., {\tt arcr(A,r,0,pi\_/2,->) dotted ->}%
\seesect{Positions:}}%
-\macrodef{arcto}{arcto}{({\sl position 1},{\sl position 2},{\sl
- radius},[dashed|dotted])}%
+\macrodef{arcto}{arcto}{({\sl position 1}, {\sl position 2},
+ {\sl radius}, [dashed|dotted])}%
{gen}%
{line toward position 1 with rounded corner toward position 2}%
\macrodef{array}{array}{({\sl variable, expr1, expr2, \ldots})}%
@@ -181,15 +181,15 @@
\macrodef{array2}{array2}{({\sl variable, expr1, expr2, \ldots})}%
{dpictools}%
{$\;\;$ Populate a doubly-subscripted array:
- {\tt {\sl var}[{\sl expr1},1]={\sl expr2;}%
+ {\tt {\sl var}[{\sl expr1},1]={\sl expr2;}
{\sl var}[{\sl expr1},2]={\sl expr3;} \ldots}.}%
\macrodef{arraymax}{arraymax}{({\sl data array, n, index name, value})}%
{dpictools}%
{$\;\;$ Find the index in {\sl array[1:n]} of the first occurrence
of the maximum array element value. The value is assigned if arg4 is
nonblank; example:
- {\tt array(x,4,9,8,6); arraymax( x,4,i )}%
- assigns 2 to {\sl i,} and {\tt arraymax( x,4,i,m )}%
+ {\tt array(x,4,9,8,6); arraymax( x,4,i )}
+ assigns 2 to {\sl i,} and {\tt arraymax( x,4,i,m )}
assigns 2 to {\sl i} and 9 to {\sl m.}}%
\macrodef{arraymin}{arraymin}{({\sl data array, n, index name, value})}%
{dpictools}%
@@ -197,37 +197,36 @@
of the minimum array element value. The value is assigned if arg4 is
nonblank; see {\tt arraymax}.}%
\macrodef{arrester}{arrester}{(\linespec,{\sl chars},
- {\sl len}[:arrowhead ht],
- {\sl ht}[:arrowhead wid],
+ {\sl len}[:{\sl arrowhead ht}],
+ {\sl ht}[:{\sl arrowhead wid}],
{\sl attributes} )}%
{cct}%
-{ Arg2 {\sl chars:}\\
- {\tt G=} spark gap (default)\\
- {\tt g=} general (dots)\\
- {\tt E=} gas discharge\\
- {\tt S=} box enclosure\\
- {\tt C=} carbon block\\
- {\tt A=} electrolytic cell\\
- {\tt H=} horn gap\\
- {\tt P=} protective gap\\
- {\tt s=} sphere gap\\
- {\tt F=} film element\\
- {\tt M=} multigap\\
- {\sl Modifiers in arg2:}\\
- {\tt R=} right orientation\\
- {\tt L=} left orientation\\
- {\tt D=} 3-terminal element for {\tt S, E}
- only, with terminals {\sl A, B, G}\\
- Arg5 applies to options C, E, S
- \seesect{Twoterminal:}}%
+{Arg2 {\sl chars:}\\
+ {\tt G=} spark gap (default)\\
+ {\tt g=} general (dots)\\
+ {\tt E=} gas discharge\\
+ {\tt S=} box enclosure\\
+ {\tt C=} carbon block\\
+ {\tt A=} electrolytic cell\\
+ {\tt H=} horn gap\\
+ {\tt P=} protective gap\\
+ {\tt s=} sphere gap\\
+ {\tt F=} film element\\
+ {\tt M=} multigap\\
+ {\sl Modifiers appended to arg2:}\\
+ {\tt R=} right orientation\\
+ {\tt L=} left orientation\\
+ {\tt D=} add terminals {\sl A, B, G} for {\tt S, E} only\\
+ Arg5 applies to options C, E, S
+ \seesect{Twoterminal:}}%
\macrodef{arrowline}{arrowline}{(\linespec)}%
{cct}%
{line (dotted, dashed permissible) with centred arrowhead
\seesect{Twoterminal:}}%
-\macrodef{assign3}{assign3}{({\sl var name,var name,var name,arg4,arg5,arg6})}%
+\macrodef{assign3}{assign3}{({\sl name, name, name, arg4, arg5, arg6})}%
{gen}%
{Assigns \$1 = arg4 if \$1 is nonblank; similarly \$2 = arg5 and \$3 = arg6}%
-\macrodef{AutoGate}{AutoGate}{}%
+\macrodef{AutoGate}{AutoGate}{\relax}%
{log}%
{Draw the tree for a gate as in the {\tt Autologix} macro. No inputs
or external connections are drawn. The names of the internal gate
@@ -239,17 +238,18 @@
{Draw the Boolean expressions defined in function notation.
The first argument is a semicolon (;)-separated sequence of
Boolean function specifications using the functions
- {\tt And, Or, Not, Buffer, Xor, Nand, Nor, Nxor}%
+ {\tt And, Or, Not, Buffer, Xor, Nand, Nor, Nxor}
with variables, e.g.,
- {\tt Autologix(And(Or(x1,~x2),Or(~x1,x2)));}.
- Each function specification is of the form
+ {\tt Autologix(And(Or(x1,\~{}x2),Or(\~{}x1,x2)));}.\\
+ Each function specification is of the form\\
{\tt {\sl function}({\sl arguments}) [@{\sl attributes}]}.
\par
Function outputs are aligned vertically but appending
- {\tt@}{\sl attributes} to a function can be used to place it.
+ {\tt@}{\sl attributes} to a function can be used to place it; e.g.,
+ {\tt Nand(\~{}A,B) @with .n at last [].s+(0,-2bp\_\_).}
\par
The function arguments are variable names or nested Boolean functions.
- Each unique variable {\sl var} causes an input point {\tt In}{\sl var}%
+ Each unique variable {\sl var} causes an input point {\tt In}{\sl var}
to be defined. Preceding the variable by a {\tt \~{}} causes a NOT gate
to be drawn at the input.
The inputs are drawn in a row at the upper left by default.
@@ -264,15 +264,15 @@
Each variable {\sl var} corresponds also to one of the input array
points with label {\tt In}{\sl var}.
Setting {\tt offset=}{\sl value} displaces the
- drawn input list in order to disambiguate the input connections when {\tt L}%
+ drawn input list in order to disambiguate the input connections when {\tt L}
is used.
\par
In the (possibly rare) case where one or more inputs of a normal function
gate is to have a NOT-circle, an additional first argument of the function
- is inserted, of the form {\tt [{\sl charseq}]}, where {\sl charseq}%
+ is inserted, of the form {\tt [{\sl charseq}]}, where {\sl charseq}
is a string containing the characters {\tt P} for a normal input or
{\tt N} for a negated input, the length of the string equal to the number
- of gate inputs. For example:
+ of gate inputs. Example:
{\tt Autologix(Xor([PN],And(x,y),And(x,y)),LRV)}}%
\Letter{B}%
@@ -287,8 +287,8 @@
\macrodef{b\_}{b_}{}%
{gen}%
{blue color value}%
-\macrodef{b\_current}{b_current}{({\sl label},{\sl pos},In|Out,Start|End,{\sl
- frac})}%
+\macrodef{b\_current}{b_current}{({\sl label}, {\sl pos}, In|Out, Start|End,
+ {\sl frac})}%
{cct}%
{labelled branch-current arrow to {\sl frac} between branch end and body
\seesect{Branchcurrent:}}%
@@ -343,14 +343,14 @@
{cct}%
{left or right, N- or P-type bipolar transistor, without or with envelope
\seesect{Semiconductors:}}%
-\macrodef{boxcoord}{boxcoord}{({\sl planar obj},{\sl x fraction},{\sl y
- fraction})}%
+\macrodef{boxcoord}{boxcoord}{({\sl planar obj}, {\sl x fraction},
+ {\sl y fraction})}%
{gen}%
{internal point in a planar object}%
\macrodef{boxdim}{boxdim}{({\sl name},h|w|d|v,{\sl default})}%
{gen}%
- {evaluate, e.g.\ {\sl name}{\tt \_w} if defined, else {\sl default\/}%
- if given, else 0 {\tt v} gives sum of {\tt d} and {\tt h} values
+ {Evaluate, e.g.\ {\sl name}{\tt \_w} if defined, else {\sl default\/}
+ if given, else 0. {\tt v} gives sum of {\tt d} and {\tt h} values
\seesect{Interaction:}}%
\macrodef{BOX\_gate}{BOX_gate}{({\sl inputs, output, swid, sht, label,
attributes })}%
@@ -378,12 +378,12 @@
{log}%
{general buffer, {\sl chars:}\\
{\tt T}: triangle,\\
- {\tt [N]O}: output location {\tt Out}%
+ {\tt [N]O}: output location {\tt Out}
({\tt NO} draws circle {\tt N\_Out});\\
{\tt [N]I, [N]N, [N]S, [N]NE, [N]SE} input locations;\\
{\tt C}: centre location.\\
Args 4-6 allow alternative
- definitions of respective {\tt In, NE,}%
+ definitions of respective {\tt In, NE,}
and {\tt SE} argument sequences }%
\macrodef{BUF\_ht}{BUF_ht}{}%
{log}%
@@ -395,6 +395,7 @@
{cct}%
{buzzer, {\sl In1} to {\sl In3} defined, C=curved
\seesect{Composite:}}%
+
\Letter{C}%
\macrodef{cangle}{cangle}{({\sl Start, End},[d])}%
{gen}%
@@ -427,7 +428,7 @@
\seesect{Twoterminal:}}%
\macrodef{case}{case}{({\sl i, alt1, alt2, \ldots})}%
{dpictools}%
- {$\;\;$ Case statement for dpic; execute alternative {\sl i.}%
+ {$\;\;$ Case statement for dpic; execute alternative {\sl i.}
Example: {\tt case( 2, x=5, x=10, x=15 )} sets {\tt x} to 10.
Note: this is a macro so {\tt \${}n} refers to the {\sl n}-th
argument of {\tt case}.}%
@@ -453,19 +454,17 @@
\macrodef{Cintersect}{Cintersect}{({\sl Pos1, Pos2, rad1, rad2,} [R])}%
{gen}%
{Upper (lower if arg5={\tt R}) intersection of circles at
- {\sl Pos1} and {\sl Pos2}, radius {\sl rad1} and {\sl rad2}}%
-\macrodef{clabel}{clabel}{({\sl label},{\sl label},{\sl label},[{\sl arg4}],%
- [{\sl block name}])}%
+ {\sl Pos1} and {\sl Pos2}, radius {\sl rad1} and {\sl rad2}}
+\macrodef{clabel}{clabel}{( {\sl label}, {\sl label}, {\sl label},
+ {\sl relative position}, {\sl block name})}%
{cct}%
{Triple label along the drawing axis of the body of an element in the
current direction \seesect{Labels:}. Labels are placed at the
- beginning, centre, and end of the last {\tt []} block (or a named
- {\tt []} block). Each label is treated as math by default, but is
- copied literally if it is in double quotes or sprintf.
- {\sl Arg4} can be {\tt above,} {\tt below,} {\tt left,} or {\tt
- right} to supplement the default relative position. The fifth
- argument is the optional name of the {\tt []} block to be labelled,
- which is {\tt last []} by default.}%
+ beginning, centre, and end of the last {\tt []} block (or a {\tt
+ []} block named or enumerated in arg5). Each label is treated as
+ math by default, but is copied literally if it is in double quotes
+ or sprintf. {\sl Arg4} can be {\tt above,} {\tt below,} {\tt left,}
+ or {\tt right} to supplement the default relative position.}%
\macrodef{cm\_\_}{cm__}{}%
{gen}%
{absolute centimetres}%
@@ -477,19 +476,29 @@
{voltage or current controlled source with alternate forms;
{\tt R}: reversed polarity\seesect{Twoterminal:}}%
\macrodef{ColoredV}{ColoredV}{%
- (box|circle|ellipse,({\sl r,g,b})|(({\sl colorseq})),{\sl attributes})}%
+ (box|circle|ellipse,({\sl r,g,b})|(({\sl colorseq}))[:{\sl nlines}],%
+ {\sl attributes})}%
{gen}%
{box (default), circle, or ellipse in a {\tt []} block.
- If arg2 is blank then all formatting is in arg3. If arg2 is blank
+ If arg2 is blank
then all formatting is in arg3; if parenthesized r,g,b, the object
is shaded top to bottom white to the specified rgb color; if a
- double-parenthesized colorseq then the colorseq defines the internal
+ double-parenthesized {\sl colorseq} then the {\sl colorseq}
+ defines the internal
shading top to bottom. A {\sl colorseq} is of the form
- 0, r0,g0,b0, {\sl frac1},r1,g1,b1, {\sl frac2},r2,g2,b2,
- \ldots 1,rn,gn,bn with $0 < \hbox{\sl frac1} < \hbox{\sl frac2} \ldots 1$.
+ {\sl 0,r0,g0,b0,\\
+ frac1,r1,g1,b1,\\
+ frac2,r2,g2,b2,\\
+ \ldots\\
+ 1,rn,gn,bn}\\
+ with $0 < \hbox{\sl frac1} < \hbox{\sl frac2} \ldots 1$.
+ The number of {\sl colorseq} lines can be specified with the colon
+ (default {\tt height/(line thickness)*2)}.
Examples: {\tt ColoredV(circle,(1,0,0));
- ColoredV(ellipse,(1,0.04,1),wid 0.75 ht 1 outlined "magenta" "Goodbye");
- ColoredV(box,(1,0,0),outlined "blue" rad 0.1, (0,1,1,0, 1,0,0,1)).} }%
+ ColoredV(ellipse,(1,0.04,1),wid 0.75 ht 1 \textbackslash\\
+ $\;$ outlined "magenta" "Goodbye");
+ ColoredV(box,((0,1,1,0, 1,0,0,1)):50, \\
+ $\;$ outlined "blue" rad 0.1).} }%
\macrodef{contact}{contact}{({\sl chars})}%
{cct}%
{single-pole contact:
@@ -515,14 +524,14 @@
\seesect{Composite:}}%
\macrodef{contline}{contline}{({\sl line})}%
{gen}%
- {evaluates to {\tt continue}%
+ {evaluates to {\tt continue}
if processor is {\bf dpic}, otherwise to first arg (default {\tt line})}%
\macrodef{copy3}{copy3}{({\sl vector1,vector2})}%
{dpictools}%
{$\;\;$ Copy vector1 into vector named by arg2.}%
\macrodef{copythru}{copythru}{({\sl dpic macro name,} "{\sl file name}")}%
{dpictools}%
- {$\;\;$ Implements the gpic {\tt copy {\sl filename} thru {\sl macro-name}}%
+ {$\;\;$ Implements the gpic {\tt copy {\sl filename} thru {\sl macro-name}}
for file data separated by commas, spaces, or tabs.}%
\macrodef{corner}{corner}{({\sl line thickness,attributes,turn radians})}%
{gen}%
@@ -559,15 +568,17 @@
{\tt size={\sl expr};},
{\tt line={\sl attributes};} }%
\macrodef{crossover}{crossover}{(\linespec, [L|R][:{\sl line attributes}],
- Line1, Line2, .{.}.)}%
+ {\sl Linename1, Linename2,} $\ldots$)}%
{cct}%
- {line jumping left or right over ordered named lines\seesect{Semiconductors:}}%
+ {line jumping left or right over ordered named
+ lines\seesect{Semiconductors:}}%
\macrodef{crosswd\_}{crosswd_}{}%
{gen}%
{cross dimension}%
\macrodef{csdim\_}{csdim_}{}%
{cct}%
{controlled-source width}%
+
\Letter{D}%
\macrodef{dabove}{dabove}{(at {\sl location})}%
{darrow}%
@@ -583,12 +594,13 @@
{darrow}%
{Wrapper for {\tt darc}.
CCW arc in {\tt dline} style, with closed ends or (dpic only) arrowheads.
- Semicolon-separated {\sl parameters}:
- {\tt thick=}{\sl value}, {\tt wid=}{\sl value}, {\tt ends=}%
- {\sl x}{\tt -},
+ Semicolon-separated {\sl parameters}:\\
+ {\tt thick=}{\sl value};\\
+ {\tt wid=}{\sl value};\\
+ {\tt ends=} {\sl x}{\tt -},
{\tt -}{\sl x}, {\sl x}{\tt -}{\sl x}, {\tt ->}, {\sl x}{\tt ->},
- {\tt <-}, {\tt <-}{\sl x}, {\tt <->}%
- where {\sl x} means {\tt |} or (half-thickness line) {\tt !}.}%
+ {\tt <-}, {\tt <-}{\sl x}, {\tt <->},
+ where {\sl x} is {\tt |} or (half-thickness line) {\tt !}.}%
\macrodef{darc}{darc}{({\sl center position},
{\sl radius}, {\sl start radians}, {\sl end radians}, {\sl dline thickness},
{\sl arrowhead wid}, {\sl arrowhead ht},
@@ -599,8 +611,8 @@
Permissible {\sl end symbols}:
{\sl x}{\tt -},
{\tt -}{\sl x}, {\sl x}{\tt -}{\sl x}, {\tt ->}, {\sl x}{\tt ->},
- {\tt <-}, {\tt <-}{\sl x}, {\tt <->}%
- where {\sl x} means {\tt |} or (half-thickness line) {\tt !}.
+ {\tt <-}, {\tt <-}{\sl x}, {\tt <->}
+ where {\sl x} is {\tt |} or (half-thickness line) {\tt !}.
An inner arc is drawn overlaying the outer arc.
Example: {\tt darc(,{,},{,},{,},{,}outlined "red",outlined "yellow")}.}%
\macrodef{Darlington}{Darlington}{(L|R,{\sl chars})}%
@@ -616,14 +628,15 @@
Z= zener bias diode
\seesect{Semiconductors:}}%
\macrodef{darrow}{darrow}{(\linespec,
- t,t,{\sl width},{\sl arrowhd wd},{\sl arrowhd ht},{\sl parameters},
+ t, t, {\sl width}, {\sl arrowhd wd}, {\sl arrowhd ht}, {\sl parameters},
{\sl color attributes})}%
{darrow}%
{See also {\tt Darrow}.
Double arrow, truncated at beginning (arg2={\tt t}) or
end (arg3={\tt t}), specified sizes,
with arrowhead and optional closed stem. The parameters (arg7) are
- {\tt {\sl x}-} or {\tt ->} or {\tt {\sl x}->} or {\tt <-} or {\tt <-{\sl x}}%
+ {\tt {\sl x}-} or {\tt ->} or {\tt {\sl x}->} or {\tt <-} or
+ {\tt <-{\sl x}}
or {\tt <->} where {\sl x} is {\tt |} or {\tt !}.
The {\tt !-} or {\tt -!} parameters close
the stem with half-thickness lines to simplify butting to other objects.
@@ -639,7 +652,7 @@
{\tt thick=}{\sl val}; (total thicknes, ie width)\\
{\tt wid=}{\sl val}; (arrowhead width)\\
{\tt ht=}{\sl val}; (arrowhead height)\\
- {\tt ends=}%
+ {\tt ends=}
{\sl x}{\tt -}{\sl x} or
{\tt -}{\sl x} or
{\sl x}{\tt -} where {\sl x} is {\tt !} (half-width line)
@@ -669,30 +682,30 @@
{A DC symbol (a dashed line below a solid line).
The current drawing direction is default, otherwise Up, Down,
Left, Right, or at {\sl degrees} slant; e.g.,
- {\tt source(up\_ dimen\_); $\lbrace$ DCsymbol(at last [],{},{},R) $\rbrace$}%
+ {\tt source(up\_ dimen\_); $\lbrace$ DCsymbol(at last [],{},{},R) $\rbrace$}
\seesect{Twoterminal:} }%
\macrodef{DefineCMYKColor}{DefineCMYKColor}{({\sl color-name, c, m, y, k})}%
{dpictools}%
{$\;\;$ Like {\tt DefineRGBColor} but takes arguments in percent, i.e.,
- the range $[0,100].$ Define dpic macro {\sl colorname}%
+ the range $[0,100].$ Define dpic macro {\sl colorname}
according to the postprocessor specified by dpic command-line option.
The macro evaluates to a string.}%
\macrodef{DefineHSVColor}{DefineHSVColor}{({\sl color-name, h, s, v})}%
{dpictools}%
{$\;\;$ Like {\tt DefineRGBColor} but takes argument {\sl h} in the
range $[0,360],$ {\sl s} in $[0,1],$ and {\sl v} in $[0,1].$
- Define dpic macro {\sl colorname}%
+ Define dpic macro {\sl colorname}
according to the postprocessor specified by dpic command-line option.
The macro evaluates to a string.}%
\macrodef{DefineRGBColor}{DefineRGBColor}{({\sl color-name, r, g, b})}%
{dpictools}%
- {$\;\;$ Arguments are in the range 0 to 1. Define dpic macro {\sl colorname}%
+ {$\;\;$ Arguments are in the range 0 to 1. Define dpic macro {\sl colorname}
according to the postprocessor specified by dpic command-line option.
The macro evaluates to a string.}%
\macrodef{definergbcolor}{definergbcolor}{({\sl color-name, r, g, b})}%
{gen}%
{Arguments are in the range 0 to 1. Define color name
- according to the postprocessor. Similar to dpictools {\tt DefineRGBColor}%
+ according to the postprocessor. Similar to dpictools {\tt DefineRGBColor}
but the color name is an m4 macro, not a string.}%
\macrodef{delay}{delay}{(\linespec,{\sl size},{\sl attributes})}%
{cct}%
@@ -707,7 +720,7 @@
U|D|L|R|{\sl degrees}) (default {\tt U} for up)}%
{cct}%
{Delta symbol for power-system diagrams.
- {\sl keys:} {\tt size={\sl expression;}}%
+ {\sl keys:} {\tt size={\sl expression;}}
{\tt type=C|O} (default {\tt C} for closed;
{\tt O} draws an ``open'' symbol); }%
\macrodef{Demux}{Demux}{({\sl n},{\sl label},
@@ -727,9 +740,9 @@
\macrodef{dend}{dend}{(at {\sl location},
{\sl line thickness}{\tt |}{\sl attributes})}%
{darrow}%
- {Close (or start) double line (Note specifying {\tt dends=} for {\tt Dline}%
- is a similar function. Arg2 is dline thickness or atributes:
- {\tt thick={\sl expression};} (dline thickness in drawing units)
+ {Close (or start) double line (Note specifying {\tt dends=} for {\tt Dline}
+ is a similar function. Arg2 is dline thickness or atributes:\\
+ {\tt thick={\sl expression};} (dline thickness in drawing units)\\
{\tt outline=({\sl r,g,b})|"{\sl color}";}}%
\macrodef{d\_fet}{d_fet}{(\linespec,R,P,E|S)}%
{cct}%
@@ -744,10 +757,10 @@
$\hbox{\sl vec3} = \hbox{\sl vec1} - \hbox{\sl vec2}$.}%
\macrodef{dfitcurve}{dfitcurve}{({\sl Name, n, linetype, m})}%
{dpictools}%
- {$\;\;$ Draw a spline through {\sl Name}{\tt [m],} \ldots {\sl Name}{\tt [n]}%
+ {$\;\;$ Draw a spline through {\sl Name}{\tt [m],} \ldots {\sl Name}{\tt [n]}
with attribute {\sl linetype} {\tt dotted,} for example.
The calculated control points {\sl P[i]} satisfy approximately:
- {\sl P[0] = V[0];} {\sl P[i-1]/8 + P[i]*3/4 + P[i+1]/8 = V[i];}%
+ {\sl P[0] = V[0];} {\sl P[i-1]/8 + P[i]*3/4 + P[i+1]/8 = V[i];}
{\sl P[n] = V[n].} See m4 macro {\tt fitcurve.}}%
\macrodef{dfitpoints}{dfitpoints}{({\sl V,n,m,P,mp})}%
{dpictools}%
@@ -766,10 +779,9 @@
\macrodef{dimension\_}{dimension_}{(\linespec,{\sl offset},{\sl label},
D|H|W|{\sl blank width},{\sl tic offset},{\sl arrowhead })}%
{gen}%
- {macro for dimensioning diagrams;
- {\sl arrowhead=}{\tt -> | <-}}%
-\macrodef{diode}{diode}{(\linespec,%
-B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
+ {macro for dimensioning diagrams; {\sl arrowhead=}{\tt -> | <-}}%
+\macrodef{diode}{diode}{(\linespec,
+B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,
[R][E])}%
{cct}%
{diode:
@@ -815,7 +827,7 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
\macrodef{dlabel}{dlabel}{({\sl long},{\sl lat},{\sl label},{\sl
label},{\sl label},{\sl chars})}%
{cct}%
- {general triple label; {\sl chars:}%
+ {general triple label; {\sl chars:}
$X$ displacement {\tt {\sl long, lat}} with respect to the drawing
direction is from the centre of the last
line rather than the centre of the last {\tt [ ]};
@@ -825,8 +837,8 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
{\sl attributes})}%
{darrow}%
{Double line left turn 90 degrees. Attributes can be
- {\tt outline=({\sl r, g, b})|"{\sl color}";}%
- {\tt innershade=({\sl r, g, b})|"{\sl color}";}%
+ {\tt outline=({\sl r, g, b})|"{\sl color}";}
+ {\tt innershade=({\sl r, g, b})|"{\sl color}";}
where rgb values in parentheses or a defined color is specified.}%
\macrodef{Dline}{Dline}{(\linespec, {\sl parameters})}%
{darrow}%
@@ -847,7 +859,7 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
{See also {\tt Dline}.
Double line, truncated by half width at either end, closed
at either or both ends.
- {\sl parameters=}%
+ {\sl parameters=}
{\sl x}{\tt -}{\sl x} or
{\tt -}{\sl x} or
{\sl x}{\tt -} where {\sl x} is {\tt !} (half-width line)
@@ -900,9 +912,9 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
\macrodef{dright}{dright}{({\tt at} {\sl position}, {\sl line thickness},
{\sl attributes})}%
{darrow}%
- {Double line right turn 90 degrees. Attributes can be
- {\tt outline=({\sl r, g, b})|"{\sl color}";}%
- {\tt innershade=({\sl r, g, b})|"{\sl color}";}%
+ {Double line right turn 90 degrees. Attributes can be\\
+ {\tt outline=({\sl r, g, b})|"{\sl color}";}\\
+ {\tt innershade=({\sl r, g, b})|"{\sl color}";}\\
where rgb values in parentheses or a defined color is specified.}%
\macrodef{drjust}{drjust}{(at {\sl location})}%
{darrow}%
@@ -944,8 +956,8 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
{\tt diam={\sl expr};
circle={\sl circle attribs};}\\
{\tt GX}: box control mechanism, attribs:
- {\tt lgth={\sl expr}; wdth={\sl expr}; %
- box={\sl box attr};}%
+ {\tt lgth={\sl expr}; wdth={\sl expr};
+ box={\sl box attr};}
{\tt text={\sl char};}\\
{\tt H}: time delay closing\\
{\tt uH}: time delay opening\\
@@ -980,7 +992,7 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
\{ darrow(down\_,t) \}; darrow(right\_,t)}.
The attributes are
{\tt thick={\sl expr};} (line thickness in drawing units),
- {\tt innershade=({\sl r,g,b})|"{\sl color}";}%
+ {\tt innershade=({\sl r,g,b})|"{\sl color}";}
{\tt outline=({\sl r,g,b})|"{\sl color}";}. }%
\macrodef{dtor\_}{dtor_}{}%
{gen}%
@@ -990,11 +1002,12 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
{darrow}%
{Tturn dline arg1 degrees left (ccw).
Attributes can be
- {\tt outline=({\sl r, g, b})|"{\sl color}";}%
- {\tt innershade=({\sl r, g, b})|"{\sl color}";}%
+ {\tt outline=({\sl r, g, b})|"{\sl color}";}
+ {\tt innershade=({\sl r, g, b})|"{\sl color}";}
where rgb values in parentheses or a defined color is specified.}%
-%
+
\Letter{E}%
+
\macrodef{earphone}{earphone}{( U|D|L|R|{\sl degrees, size})}%
{cct}%
{earphone, {\sl In1} to {\sl In3} defined
@@ -1064,8 +1077,9 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
\macrodef{expe}{expe}{}%
{gen}%
{exponential, base $e$}%
-%
+
\Letter{F}%
+
\macrodef{f\_box}{f_box}{({\sl boxspecs},{\sl text},{\sl expr1},$\cdots$)}%
{gen}%
{like {\tt s\_box} but the text is overlaid on a box of identical size.
@@ -1111,7 +1125,7 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
{log}%
{General flipflop.
Arg 1 modifies the box (labelled Chip) default specification.
- Each of args 3 to 6 is null or a string of {\sl pinspecs}%
+ Each of args 3 to 6 is null or a string of {\sl pinspecs}
separated by semicolons ({\tt;}). A {\sl Pinspec} is either empty
or of the form
{\tt[}{\sl pinopts}{\tt]:[}{\sl label}{\tt[:}{\sl Picname}{\tt]]}.
@@ -1119,10 +1133,10 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
Pins are placed top to bottom or left to right along the box edges with
null {\sl pinspecs} counted for placement. Pins are named by side and number
by default; eg {\tt W1, W2, ..., N1, N2, ..., E1, ..., S1, ...} ; however,
- if {\tt:}{\sl Picname} is present in a {\sl pinspec} then {\sl Picname}%
+ if {\tt:}{\sl Picname} is present in a {\sl pinspec} then {\sl Picname}
replaces the default name.
A {\sl pinspec} label is text placed at the pin base. Semicolons are
- not allowed in labels; use, e.g., {\tt \char92{}char59\char123\char125}%
+ not allowed in labels; use, e.g., {\tt \char92{}char59\char123\char125}
instead.
To put a bar over a label, use {\tt lg\_bartxt(}{\sl label}{\tt)}.
The {\sl pinopts} are {\tt[N|L|M][E]};
@@ -1131,8 +1145,8 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
{\tt M}: active low in;
{\tt E}: edge trigger \seesect{Logicgates:}.\\
Optional arg 7 is the length of pins}%
-\macrodef{foreach\_}{foreach_}{(`{\sl variable}',{\sl actions},{\sl
- value1, value2, $\ldots$})}%
+\macrodef{foreach\_}{foreach_}{(`{\sl variable}',{\sl actions},%
+ {\sl value1, value2, $\ldots$})}%
{gen}%
{Clone of Loopover\_ by a different name:
Repeat {\sl actions} with {\sl variable} set successively to
@@ -1144,7 +1158,8 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
\macrodef{FTcap}{FTcap}{({\sl chars})}%
{cct}%
{Feed-through capacitor; example of a composite element derived from
- a two-terminal element. Defined points: {\sl .Start, .End, .C .T1 .T2 T}%
+ a two-terminal element. Defined points:
+ {\sl .Start, .End, .C, .T1, .T2, T}\\
Arg 1: {\tt A}: type A (default),
{\tt B}: type B,
{\tt C}: type C
@@ -1153,8 +1168,9 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
{cct}%
{fuse symbol, type$=$
{\tt A|B|C|D|S|HB|HC|SB} or {\tt dA=D}\seesect{Twoterminal:}}%
-%
+
\Letter{G}%
+
\macrodef{gap}{gap}{(\linespec,{\sl fill},A)}%
{cct}%
{gap with (filled) dots, A=chopped arrow between dots\seesect{Twoterminal:}}%
@@ -1172,13 +1188,18 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
\macrodef{G\_hht}{G_hht}{}%
{log}%
{gate half-height in {\tt L\_unit}s}%
-\macrodef{glabel\_}{glabel_}{}%
+\macrodef{geiger}{geiger}{(\linespec, r, {\sl diameter}, R,
+ {\sl body attributes, body name})}%
{cct}%
- {internal general labeller}%
+ {Wrapper that calls {\tt source} with identical arguments except
+ arg2, which is blank or {\tt r} for right orientation.}
+%\macrodef{glabel\_}{glabel_}{}%
+% {cct}%
+% {internal general labeller}%
%\macrodef{gpar\_}{gpar_}{({\sl element},{\sl element},{\sl separation})}%
% {cct}%
% {two same-direction elements in parallel}%
-\macrodef{gpolyline\_}{gpolyline_}{({\sl fraction},{\sl location}, ...)}%
+\macrodef{gpolyline\_}{gpolyline_}{({\sl fraction}, {\sl location}, ...)}%
{gen}%
{internal to {\tt gshade}}%
\macrodef{graystring}{graystring}{({\sl gray value})}%
@@ -1209,11 +1230,12 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
vertices, attempting to avoid sharp corners}%
\macrodef{gyrator}{gyrator}{({\sl box specs,space ratio,pin lgth,}[N][V])}%
{cct}%
- {Gyrator two-port wrapper for {\tt nport}, {\tt N} omits pin dots; {\tt V}%
+ {Gyrator two-port wrapper for {\tt nport}, {\tt N} omits pin dots; {\tt V}
gives a vertical orientation
\seesect{Composite:}}%
-%
+
\Letter{H}%
+
\macrodef{hatchbox}{hatchbox}{({\sl boxspec,hashsep,hatchspec,angle})
{\rm or} hatchbox({\sl keys})}%
{gen}%
@@ -1227,7 +1249,7 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
{\tt fillcolor="{\sl color}"|({\sl r,g,b});}\\
{\tt hatchsep={\sl expr};}\\
{\tt hatchspec={\sl attributes};}\\
- {\tt angle={\sl expr};}%
+ {\tt angle={\sl expr};}
e.g.,
{\tt hatchbox(outlined "blue",{},dashed outlined "green" thick 0.4)};\\
also
@@ -1251,26 +1273,26 @@ n|e|s|w,{\sl length})}%
{Heater element with curved sides\seesect{Twoterminal:}.
{\tt R} means right orientation;
{\tt T} truncates leads to the width of the body.
- The {\sl keys} for the body are
- {\tt lgth={\sl expr};}%
+ The {\sl keys} for the body are\\
+ {\tt lgth={\sl expr};}
{\tt wdth={\sl expr};} (default {\tt lgth*2/5});
{\tt cycles={\sl expr};}%
{\tt line={\sl attributes};} (e.g., {\tt dotted, dashed, outlined})}%
\macrodef{heater}{heater}{({\sl linespec, ndivisions|keys, wid, ht,
boxspec}|[E[R][T]])}%
{cct}%
- {Heater element\seesect{Twoterminal:}. If arg 5 contains {\tt E,}%
- draws an {\tt heatere({\sl linespec, keys,} [R][T]),}%
+ {Heater element\seesect{Twoterminal:}. If arg 5 contains {\tt E,}
+ draws an {\tt heatere({\sl linespec, keys,} [R][T]),}
otherwise a
{\tt heatert({\sl linespec, nparts, wid, ht, boxspec})}}%
\macrodef{heatert}{heatert}{({\sl linespec, nparts|keys, wid, ht, boxspec})}%
{cct}%
{Two-terminal rectangular heater element\seesect{Twoterminal:}.
The {\sl keys} for the body are
- {\tt parts={\sl expr};}%
- {\tt lgth={\sl expr};}%
+ {\tt parts={\sl expr};}
+ {\tt lgth={\sl expr};}
{\tt wdth={\sl expr};} (default {\tt lgth*2/5});
- {\tt box={\sl body attributes};}%
+ {\tt box={\sl body attributes};}
(e.g., {\tt dotted, dashed, outlined, shaded}).
Args 3--5 are unused if any key is given}%
\macrodef{hexadecimal\_}{hexadecimal_}{($n$, [$m$])}%
@@ -1301,8 +1323,9 @@ n|e|s|w,{\sl length})}%
\macrodef{ht\_}{ht_}{}%
{gen}%
{height relative to current direction}%
-%
+
\Letter{I}%
+
\macrodef{ifdpic}{ifdpic}{({\sl if true},{\sl if false})}%
{gen}%
{test if dpic has been specified as pic processor}%
@@ -1314,8 +1337,7 @@ n|e|s|w,{\sl length})}%
{gen}%
{test if the second argument is a substring of the first; also
{\tt ifinstr({\sl string},{\sl string},{\sl if true},{\sl
- string},{\sl string},{\sl if true}, $\ldots$ {\sl if false})}%
- }%
+ string},{\sl string},{\sl if true}, $\ldots$ {\sl if false})} }%
\macrodef{ifmfpic}{ifmfpic}{({\sl if true},{\sl if false})}%
{gen}%
{test if mfpic has been specified as pic post-processor}%
@@ -1381,12 +1403,13 @@ n|e|s|w,{\sl length})}%
{corrected (old) gpic $int()$ function}%
\macrodef{IOdefs}{IOdefs}{(\linespec,{\sl label},[P|N]*,L|R) }%
{log}%
- {Define locations {\sl label}{\tt 1}, $\ldots$ {\sl label}{\tt n}%
+ {Define locations {\sl label}{\tt 1}, $\ldots$ {\sl label}{\tt n}
along the line; {\tt P}: label only;
{\tt N}: with {\tt NOT\_circle};
{\tt R}: circle to right of current direction }%
-%
+
\Letter{J}%
+
\macrodef{jack}{jack}{(U|D|L|R|{\sl degrees},{\sl chars})}%
{cct}%
{arg1: drawing direction; string arg2: {\tt R}: right orientation,
@@ -1402,9 +1425,9 @@ n|e|s|w,{\sl length})}%
{ Two-terminal solder jumper with named body parts.
The {\sl chars} character sequence specifies the jumper components,
and normally begins with {\tt C} and ends with {\tt D.} The character
- {\tt E} is an empty (blank) gap, {\tt J} is a filled gap, {\tt B}%
- is a box component. The components are named {\sl T1, T2, \ldots}%
- Examples: {\tt CED} is a simple open jumper (the default); {\tt CJD}%
+ {\tt E} is an empty (blank) gap, {\tt J} is a filled gap, {\tt B}
+ is a box component. The components are named {\sl T1, T2, \ldots}
+ Examples: {\tt CED} is a simple open jumper (the default); {\tt CJD}
closed; {\tt CEBED} three-contact open; {\tt CJBED} three-contact
open and closed.
The {\sl keys} are: {\tt type=}{\sl chars} as previously;
@@ -1412,21 +1435,23 @@ n|e|s|w,{\sl length})}%
{\tt wdth=}{\sl expr};
{\tt name=}{\sl chars} (the body name)%
\seesect{Twoterminal:}}%
-%
+
\Letter{K}%
+
\macrodef{KelvinR}{KelvinR}{({\sl cycles},[R],{\sl cycle wid})}%
{cct}%
- {IEEE resistor in a {\tt [ ]} block with Kelvin taps {\sl T1} and {\sl T2}%
+ {IEEE resistor in a {\tt [ ]} block with Kelvin taps {\sl T1} and {\sl T2}
\seesect{Composite:}}%
-%
+
\Letter{L}%
+
\macrodef{lamp}{lamp}{(\linespec, [R][T])}%
{cct}%
{Two-terminal incandescent lamp. {\tt T} truncates leads to the body width.
\seesect{Twoterminal:}}%
\macrodef{langle}{langle}{({\sl Start, End})}%
{gen}%
- {Angle in radians from horizontal of the line from {\sl Start}%
+ {Angle in radians from horizontal of the line from {\sl Start}
to {\sl End}.}%
\macrodef{larrow}{larrow}{({\sl label},{\tt ->|<-},{\sl dist})}%
{cct}%
@@ -1459,7 +1484,7 @@ n|e|s|w,{\sl length})}%
\macrodef{length3D}{length3D}{(x,y,z)}%
{3D}%
{Euclidean length of triple x,y,z}%
-\macrodef{LEtangent}{LEtangent}{({\sl Pos1, Centre, ellips wid, ellipse ht}%
+\macrodef{LEtangent}{LEtangent}{({\sl Pos1, Centre, ellips wid, ellipse ht,}
[R])}%
{gen}%
{ Left (right if arg5=R) tangent point of line
@@ -1498,23 +1523,21 @@ n|e|s|w,{\sl length})}%
{set line thickness in points}%
\macrodef{lin\_leng}{lin_leng}{({\sl line-reference})}%
{gen}%
- {length of a line, equivalent to {\sl line-reference}{\tt .len}%
+ {length of a line, equivalent to {\sl line-reference}{\tt .len}
with dpic}%
\macrodef{ljust\_}{ljust_}{}%
{gen}%
{ljust with respect to current direction}%
-\macrodef{llabel}{llabel}{({\sl label},{\sl label},{\sl label},[{\sl arg4}],%
- [{\sl block name}])}%
+\macrodef{llabel}{llabel}{( {\sl label}, {\sl label}, {\sl label},
+ {\sl relative position}, {\sl block name})}%
{cct}%
{Triple label on the left of the body of an element with respect to the
current direction \seesect{Labels:}. Labels are placed at the
- beginning, centre, and end of the last {\tt []} block (or a named
- {\tt []} block). Each label is treated as math by default, but is
- copied literally if it is in double quotes or defined by sprintf.
- {\sl Arg4} can be {\tt above,} {\tt below,} {\tt left,} or {\tt
- right} to supplement the default relative position. The fifth
- argument is the optional name of the {\tt []} block to be labelled,
- which is {\tt last []} by default}%
+ beginning, centre, and end of the last {\tt []} block (or a {\tt []} block
+ named or enumerated in arg5). Each label is treated as math by
+ default, but is copied literally if it is in double quotes or defined
+ by sprintf. {\sl Arg4} can be {\tt above,} {\tt below,} {\tt left,}
+ or {\tt right} to supplement the default relative position.}%
\macrodef{loc\_}{loc_}{({\sl x}, {\sl y})}%
{gen}%
{location adjusted for current direction}%
@@ -1531,7 +1554,7 @@ n|e|s|w,{\sl length})}%
\macrodef{loop}{loop}{({\sl initial assignments, test, loop end, statements})}%
{dpictools}%
{$\;\;$ C-like loop. Commas in arg3 and arg4 must
- be in quotes or parentheses. Example:
+ be in quotes or parentheses. Example:\\
{\tt loop(i=1, i<=3, i+=1, print i)} prints 1, 2, 3.}%
\macrodef{Loopover\_}{Loopover_}{(`{\sl variable}',{\sl actions},{\sl
value1, value2, $\ldots$})}%
@@ -1543,7 +1566,7 @@ n|e|s|w,{\sl length})}%
{\sl fill},
{\sl zero ht})} {gen}%
{for lollipop graphs: filled circle with stem to
- (xcoord,zeroht)}%
+ {\tt ({\sl xcoord,zeroht})}}%
\macrodef{lp\_xy}{lp_xy}{}%
{log}%
{coordinates used by {\tt lg\_pin}}%
@@ -1564,8 +1587,9 @@ n|e|s|w,{\sl length})}%
\macrodef{L\_unit}{L_unit}{}%
{log}%
{logic-element grid size}%
-%
+
\Letter{M}%
+
\macrodef{m4\_arrow}{m4_arrow}{(\linespec,{\sl ht},{\sl wid})}%
{gen}%
{arrow with adjustable head, filled when possible}%
@@ -1597,8 +1621,7 @@ n|e|s|w,{\sl length})}%
{memristor element\seesect{Twoterminal:}}%
\macrodef{microphone}{microphone}{( A|U|D|L|R|{\sl degrees, size, attributes})}%
{cct}%
- {microphone; if arg1 = A: upright mic, otherwise arg1 sets
- direction
+ {microphone; if arg1 = A: upright mic, otherwise arg1 sets direction
of standard microphone with {\sl In1} to {\sl In3} defined
\seesect{Composite:}}%
\macrodef{Min}{Min}{({\sl arg, arg, $\ldots$})}%
@@ -1615,7 +1638,7 @@ n|e|s|w,{\sl length})}%
({\sl Position1,Position2,Position3,length,line attributes})}%
{gen}%
{e.g., {\tt mitre\_(A,B,C)} draws angle ABC with legs
- of length arg4 (default {\tt linethick bp\_\_/2}); sets {\tt Here}%
+ of length arg4 (default {\tt linethick bp\_\_/2}); sets {\tt Here}
to Position2
\seesect{Corners:}}%
\macrodef{mm\_\_}{mm__}{}%
@@ -1656,7 +1679,7 @@ n|e|s|w,{\sl length})}%
numbers, {\tt H} display hexadecimal pin numbers, {\tt X} do not
print pin numbers, {\tt N[{\sl n}]} puts Sel or Sel$0$ .. Sel$n$
at the top (i.e., to the left of the drawing direction), {\tt
- S[{\sl n}]} puts the Sel inputs at the bottom (default) {\tt OE}%
+ S[{\sl n}]} puts the Sel inputs at the bottom (default) {\tt OE}
({\tt N}: negated) {\tt OE} pin \seesect{Logicgates:}}%
\macrodef{Mux\_wid}{Mux_wid}{}%
{cct}%
@@ -1664,8 +1687,9 @@ n|e|s|w,{\sl length})}%
\macrodef{Mx\_pins}{Mx_pins}{}%
{log}%
{max number of gate inputs without wings}%
-%
+
\Letter{N}%
+
\macrodef{NAND\_gate}{NAND_gate}{({\tt {\sl n}, [N][B],
[{\sl wid}, [{\sl ht}]], {\sl attributes}})}%
{log}%
@@ -1756,8 +1780,9 @@ nw,nn,ne,ns,pin lgth,style, other commands})}%
Otherwise, arg1 can be a sequence of letters {\tt P|N} to define
normal or negated inputs.
\seesect{Logicgates:}}%
-%
+
\Letter{O}%
+
\macrodef{opamp}{opamp}{\tt (\linespec,{\sl label, label, size|keys, chars,
other commands})}%
{cct}%
@@ -1794,13 +1819,14 @@ nw,nn,ne,ns,pin lgth,style, other commands})}%
{\tt [N]P}: XOR arc;\\
{\tt [N]O}: output; C=center.\\
Otherwise, arg1 can be a sequence of letters {\tt P|N} to define
- normal or negated inputs. If arg5 contains {\tt shaded rgbstring(...)}%
+ normal or negated inputs. If arg5 contains {\tt shaded rgbstring(...)}
the arguments of {\tt rgbstring} may not contain parentheses.}%
\macrodef{OR\_rad}{OR_rad}{}%
{log}%
{radius of OR input face in {\tt L\_unit}s}%
-%
+
\Letter{P}%
+
\macrodef{parallel\_}{parallel_}{(\char96{\sl elementspec}\char39,%
\char96{\sl elementspec}\char39 $\ldots$)}%
{cct}%
@@ -1843,10 +1869,10 @@ nw,nn,ne,ns,pin lgth,style, other commands})}%
\macrodef{pi\_}{pi_}{}%
{gen}%
{$\pi$}%
-\macrodef{plug}{plug}{(U|D|L|R|{\sl degrees},[2|3][R])}%
+\macrodef{plug}{plug}{\smash{(U|D|L|R|{\sl degrees},[2|3][R])}}%
{cct}%
- {arg1: drawing direction; string arg2: {\tt R} right orientation,
- {\tt 2|3} number of conductors \seesect{Composite:}}%
+ {Phone plug; arg1: drawing direction; arg2: {\tt R} right orientation,
+ {\tt 2|3} number of conductors\seesect{Composite:}}%
\macrodef{pmod}{pmod}{({\sl integer}, {\sl integer})}%
{gen}%
{+ve $\hbox{mod}(M,N)$ e.g., $\hbox{\tt pmod}(-3,5)=2$}%
@@ -1865,19 +1891,22 @@ nw,nn,ne,ns,pin lgth,style, other commands})}%
{\tt line={\sl line attributes};} (e.g., {\tt dashed shaded "blue"}),
{\tt rot={\sl degrees};} (angle of first internal vertex {\tt V[0]}),
{\tt side|rad={\sl expression};} size by side length or by radius.
+ {\tt radv={\sl expression};} radius of rounded vertices. If this is
+ nonzero then any fill has to be by {\tt rgbfill(r,g,b,polygon(...)).}
The internal defined points are the centre {\tt C} and vertices
- {\tt V[0]} $\ldots$ {\tt V[{\sl n}-1]}. }%
+ {\tt V[0]} $\ldots$ {\tt V[{\sl n}]}. }%
\macrodef{posarray}{posarray}{({\sl Name, Position1, Position2, \ldots})}%
{dpictools}%
{$\;\;$ Populate a singly-subscripted array of positions:
- {\tt {\sl Name}[1]:{\sl Position1;}%
+ {\tt {\sl Name}[1]:{\sl Position1;}
{\sl Name}[2]={\sl Position2;} \ldots}.}%
\macrodef{posarray2}{posarray2}{({\sl Name, expr, Position1, Position2,
\ldots})}%
{dpictools}%
{$\;\;$ Populate a doubly-subscripted array of positions:
- {\tt {\sl Name}[{\sl expr},1]={\sl Position1;}%
+ {\tt {\sl Name}[{\sl expr},1]={\sl Position1;}
{\sl Name}[{\sl expr},2]={\sl Position2;} \ldots}.}%
+
\macrodef{potentiometer}{potentiometer}{(\linespec,%
{\sl cycles},{\sl fractional pos},{\sl length},$\cdots$)} {cct}%
{resistor with taps T1, T2, $\ldots$
@@ -1905,7 +1934,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})}%
\macrodef{PtoL}{PtoL}{({\sl position}, U|D|L|R|{\sl degrees}, {\sl length}) }%
{gen}%
{Evaluates to {\tt from {\sl position} to
- {\sl position} + Rect\_({\sl length, angle}) }%
+ {\sl position} + Rect\_({\sl length, angle}) }
from the polar-coordinate data in the arguments }%
\macrodef{pt\_\_}{pt__}{}%
{gen}%
@@ -1918,7 +1947,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})}%
{gen}%
{Key-value definition.
If {\sl string} contains the substring
- {\sl key}{\tt =}{\sl expr} then macro {\tt m4{\sl key}}%
+ {\sl key}{\tt =}{\sl expr} then macro {\tt m4{\sl key}}
is defined using {\tt pushdef()} to
expand to {\tt ({\sl expr})}, or to {\tt ({\sl default value})} if the
substring is missing. Arg 1 can contain several such substrings separated
@@ -1927,10 +1956,15 @@ nw,nn,ne,ns,pin lgth,style, other commands})}%
\seesect{Macroarguments:}}%
\macrodef{pushkeys\_}{pushkeys_}{({\sl string, key sequence})}%
{gen}%
- {Multiple key-value definitions. Arg 2 is a semicolon-separated
- sequence of terms of the form {\tt {\sl key}:{\sl default value}:[N]}%
+ {Multiple key-value definitions. Arg2 is a semicolon-separated
+ sequence of terms of the form {\tt {\sl key}:{\sl default-value}[:N]}
which must contain no semicolons and the default values contain no colons.
+ A key may not be the tail of another key.
Macro {\tt pushkey\_} is applied to each of the terms in order.
+ Quote arg2 for robustness and, if an argument depends on a previous
+ argument, add quotes to delay expansion; for example
+ {\tt pushkeys\_(\char96\$1\char39,\char96{}hght:0.5;
+ wdth:m4\char96\char39hght/2\char39)}.
\seesect{Macroarguments:}}%
\macrodef{pvcell}{pvcell}{({\sl linespec, width, height, attributes})}%
{cct}%
@@ -1938,8 +1972,9 @@ nw,nn,ne,ns,pin lgth,style, other commands})}%
\macrodef{px\_\_}{px__}{}%
{gen}%
{absolute SVG screen pixels}%
-%
+
\Letter{R}%
+
\macrodef{randn}{randn}{({\sl array name, $n,$ mean, stddev})}%
{dpictools}%
{$\;\;$ Assign $n$ Gaussian random numbers in array
@@ -1973,6 +2008,7 @@ degrees, attributes})}%
{\tt SOR}: slow operating and release;\\
{\tt SR}: slow release;\\
{\tt HS}: high speed;\\
+ {\tt S}: diagonal slash;\\
{\tt NAC}: unaffected by AC current;\\
{\tt AC}: AC current;\\
{\tt ML}: mechanically latched;\\
@@ -1997,19 +2033,20 @@ degrees, attributes})}%
\macrodef{resetrgb}{resetrgb}{}%
{gen}%
{cancel {\tt r\_, g\_, b\_} color definitions}%
-\macrodef{resistor}{resistor}{(\linespec, n|E, {\sl chars}, {\sl cycle wid})}%
+\macrodef{resistor}{resistor}{(\linespec, n, {\sl chars}, {\sl cycle wid})}%
{cct}%
{resistor, n cycles (default 3), {\sl chars:}\\
{\tt AC}: general complex element,\\
{\tt E}: {\tt ebox},\\
{\tt ES}: {\tt ebox} with slash,\\
+ {\tt F}: FDNR (frequency-dependent negative resistor),\\
{\tt Q}: offset,\\
{\tt H}: squared,\\
{\tt N}: IEEE,\\
{\tt B}: not burnable,\\
{\tt V}: varistor variant,\\
- {\tt R}: right-oriented,\\
- {\sl cycle width} (default {\tt dimen\_}$/6$)
+ {\tt R}: right-oriented;\\
+ Arg4: {\sl cycle width} (default {\tt dimen\_}$/6$)
\seesect{Twoterminal:}}%
\macrodef{resized}{resized}{({\sl factor},`{\sl macro name}',args)}%
{cct}%
@@ -2048,38 +2085,37 @@ degrees, attributes})}%
{dpictools}%
{$\;\;$ rgb color triple to hsv with {\sl h} range 0 to 360.}%
\macrodef{RightAngle}{RightAngle}{({\sl Pos1, Pos2, Pos3, line len,
- attributes})} {gen}%
- {Draw a right-angle symbol at {\sl Pos2}, of size
- given by arg4. Arg5 =
- line attributes, e.g., {\tt outlined "gray"}}%
+ attributes})}%
+ {gen}%
+ {Draw a right-angle symbol at {\sl Pos2}, of size given by arg4.
+ Arg5 = line attributes, e.g., {\tt outlined "gray"} or e.g. to add a dot,
+ {\tt ;dot(at last line.c)}}%
\macrodef{right\_}{right_}{}%
{gen}%
{set current direction right \seesect{Placing:}}%
\macrodef{rjust\_}{rjust_}{}%
{gen}%
{right justify with respect to current direction}%
-\macrodef{rlabel}{rlabel}{({\sl label},{\sl label},{\sl label},[{\sl arg4}],%
- [{\sl block name}])}%
+\macrodef{rlabel}{rlabel}{( {\sl label}, {\sl label}, {\sl label},
+ {\sl relative position}, {\sl block name})}%
{cct}%
{Triple label on the right of the body of an element with respect to the
current direction \seesect{Labels:}. Labels are placed at the
- beginning, centre, and end of the last {\tt []} block (or a named
- {\tt []} block). Each label is treated as math by default, but is
- copied literally if it is in double quotes or defined by sprintf.
- {\sl Arg4} can be {\tt above,} {\tt below,} {\tt left,} or {\tt
- right} to supplement the default relative position. The fifth
- argument is the optional name of the {\tt []} block to be labelled,
- which is {\tt last []} by default}%
+ beginning, centre, and end of the last {\tt []} block (or a {\tt []} block
+ named or enumerated in arg5). Each label is treated as math by
+ default, but is copied literally if it is in double quotes or defined
+ by sprintf. {\sl Arg4} can be {\tt above,} {\tt below,} {\tt left,}
+ or {\tt right} to supplement the default relative position.}%
\macrodef{rot3Dx}{rot3Dx}{({\sl radians,x,y,z})}%
{3D} {rotates x,y,z about x axis}%
\macrodef{rot3Dy}{rot3Dy}{({\sl radians,x,y,z})}%
{3D} {rotates x,y,z about y axis}%
\macrodef{rot3Dz}{rot3Dz}{({\sl radians,x,y,z})}%
{3D} {rotates x,y,z about z axis}%
-\macrodef{rotbox}{rotbox}{({\sl wid,ht,type},[r|t={\sl val}])}%
+\macrodef{rotbox}{rotbox}{({\sl wid,ht,attributes},[r|t={\sl val}])}%
{gen}%
{box oriented in current direction in {\tt [ ]} block;
- {\sl type=} e.g. {\tt dotted shaded "green".} Defined internal
+ {\sl attributes:} e.g. {\tt dotted shaded "green".} Defined internal
locations: N, E, S, W (and NE, SE, NW, SW if arg4 is blank). If arg4
is {\tt r=}{\sl val} then corners have radius {\sl val}. If arg4 is
{\tt t=}{\sl val} then a spline with tension {\sl val} is used to draw
@@ -2097,8 +2133,7 @@ degrees, attributes})}%
{rotate {\sl x,y} by theta radians}%
\macrodef{round}{round}{(at {\sl location,line thickness,attributes})}%
{gen}%
- {filled circle for rounded corners; attributes={\tt colored
- "gray"}%
+ {filled circle for rounded corners; attributes={\tt colored "gray"}
for example; leaves {\tt Here} unchanged if arg1 is blank
\seesect{Corners:}}%
\macrodef{rpoint\_}{rpoint_}{(\linespec)}%
@@ -2148,13 +2183,14 @@ degrees, attributes})}%
\macrodef{rvec\_}{rvec_}{({\sl x},{\sl y})}%
{gen}%
{location relative to current direction}%
-%
+
\Letter{S}%
+
\macrodef{sarrow}{sarrow}{(\linespec,{\sl keys})}%
{gen}%
{Single-segment, single-headed special arrows with {\sl keys}:\\
{\tt type=}{\tt O[pen]} (default)
- | {\tt D[iamond]} | {\tt C[rowfoot]} | {\tt P[lain]}%
+ | {\tt D[iamond]} | {\tt C[rowfoot]} | {\tt P[lain]}
| {\tt R[ight]} | {\tt L[eft]} {\tt ;}\\
{\tt wdth=}{\sl expression}{\tt ;} (default {\tt arrowwid})\\
{\tt lgth=}{\sl expression}{\tt ;} (default {\tt arrowht})\\
@@ -2169,8 +2205,9 @@ degrees, attributes})}%
\macrodef{s\_box}{s_box}{({\sl text},{\sl expr1},$\cdots$)}%
{gen}%
{generate dimensioned text string using {\tt\char92{}boxdims} from
- {\tt boxdims.sty}. Two or more args are passed to {\tt sprintf()}%
+ {\tt boxdims.sty}. Two or more args are passed to {\tt sprintf()}
(default 90) degrees \seesect{Interaction:}}%
+
\macrodef{sbs}{sbs}{({\sl linespec, chars, label})}%
{cct}%
{Wrapper to place an SBS thyristor as a two-terminal element with
@@ -2191,17 +2228,22 @@ degrees, attributes})}%
\seesect{Semiconductors:}}%
\macrodef{s\_dp}{s_dp}{({\sl name},{\sl default})}%
{gen}%
- {depth of the most recent (or named) {\tt s\_box}%
+ {depth of the most recent (or named) {\tt s\_box}
\seesect{Interaction:}}%
\macrodef{series\_}{series_}{({\sl elementspec}, {\sl elementspec},
$\ldots$)}%
{cct}%
{ Series combination in a {\tt []} block of elements
- with shortened default length. An {\sl elementspec} is of the
- form {\tt [{\sl Label}:] {\sl element}; [{\sl attributes}]},
- where an {\sl attribute} is of the form {\tt [llabel($\ldots$);] |
- [rlabel($\ldots$);] [b\_current($\ldots$);]}. Internal points {\tt
- Start}, {\tt End}, and {\tt C} are defined
+ with shortened default length.
+ Each argument is an elementspec of the form\\
+ {\tt[Sep={\sl val};][{\sl Label}:]{\sl element};[{\sl attributes}]} where
+ an {\sl attribute} is of the form\\
+ {\tt[llabel($\ldots$);]|[rlabel($\ldots$);]|[b\_current($\ldots$);]}.\\
+ An argument may also be {\tt series\_($\ldots$)} or {\tt
+ parallel\_($\ldots$)} {\em without} attributes or quotes.
+ An element may have normal arguments but should not
+ change the drawing direction.
+ Internal points {\tt Start}, {\tt End}, and {\tt C} are defined
\seesect{Seriesandparallel:} }%
\macrodef{se\_}{se_}{}%
{gen}%
@@ -2217,7 +2259,7 @@ $\ldots$)}%
\macrodef{setkey\_}{setkey_}{({\sl string, key, default,}[N])}%
{gen}%
{Key-value definition, like {\tt pushkey\_()} but the resulting
- macro is defined using {\tt define()} rather than {\tt pushdef().}%
+ macro is defined using {\tt define()} rather than {\tt pushdef().}
\seesect{Macroarguments:}}%
\macrodef{setkeys\_}{setkeys_}{({\sl string, key sequence})}%
{gen}%
@@ -2251,11 +2293,10 @@ justification},cw|ccw,
\macrodef{sfgbelow}{sfgbelow}{}%
{cct}%
{like below but with extra space}%
-\macrodef{sfg\_init}{sfg_init}{({\sl default line len, node rad,
-arrowhd len,
- arrowhd wid}), (reads {\tt libcct.m4})} {cct}%
- {initialization of signal
- flow graph macros}%
+\macrodef{sfg\_init}{sfg_init}{({\sl default line len, node rad, arrowhd len,
+ arrowhd wid}), (reads {\tt libcct.m4})}
+ {cct}%
+ {initialization of signal flow graph macros}%
\macrodef{sfgline}{sfgline}{(\linespec,{\sl text},{\tt
sfgabove|sfgbelow|ljust|rjust},{\sl line attributes})}%
{cct}%
@@ -2265,7 +2306,7 @@ arrowhd len,
circle attributes})}%
{cct}%
{small circle default white interior, with text label. The default
- label position is inside if the diameter is bigger than {\tt textht}%
+ label position is inside if the diameter is bigger than {\tt textht}
and {\tt textwid}; otherwise it is {\tt sfgabove.} Options such as
color, fill, or line thickness can be given, e.g.,
{\tt thick 0.8 outlined "red" shaded "orange"}. }%
@@ -2279,11 +2320,19 @@ arrowhd len,
\macrodef{shade}{shade}{({\sl gray value},{\sl closed line specs})}%
{gen}%
{Fill arbitrary closed curve. Note: when producing pdf via pdflatex, line
- thickness changes within this macro must be made via the {\tt linethick}%
+ thickness changes within this macro must be made via the {\tt linethick}
environment variable rather than by the {\tt thickness} line attribute}%
\macrodef{shadebox}{shadebox}{(box {\sl attributes, shade width})}%
{gen}%
{Box with edge shading. Arg2 is in points. See also {\tt shaded} }%
+\macrodef{shadedball}{shadedball}{({\sl radius, highlight radius,
+ highlight degrees, initial gray, final gray} | ({\sl rf,gf,bf}))}%
+ {3D}%
+ { Shaded ball in {\tt [ ]} box.
+ The highlight is by default at {\sl radius}*3/5 and angle 110 deg
+ (or arg2 deg); if setlight has been invoked then its azimuth and
+ elevation arguments determine highlight position. Arg5 can be a
+ parenthesized rgb color.}
\macrodef{ShadedPolygon}{ShadedPolygon}{({\sl vertexseq, line attributes,
degrees, colorseq})} {gen}%
{Draws the polygon specified in arg1 and
@@ -2293,35 +2342,49 @@ arrowhd len,
(or names) of the polygon in cw or ccw order. A {\sl colorseq} is of
the form 0, r0,g0,b0, {\sl frac1},r1,g1,b1, {\sl frac2},r2,g2,b2,
\ldots 1,rn,gn,bn with $0 < \hbox{\sl frac1} < \hbox{\sl frac2} \ldots 1$ }%
-\macrodef{ShadeObject}{ShadeObject}{({\sl drawroutine name, n, colorseq})}%
+\macrodef{ShadeObject}{ShadeObject}{({\sl drawroutine, n, colorseq})}%
{dpictools}%
- {$\;\;$ Fill an area in a {\tt []} block with graded color
+ {$\;\;$
+ Fill an area in a {\tt []} block with graded color
defined by {\sl colorseq,} an indexed sequence of rgb colors:
- {\sl 0,r0,g0,b0,}%
- {\sl frac1,r1,g1,b1,}%
- {\sl frac2,r2,g2,b2,}%
+ \fra{0}{\sl,r0,g0,b0,}
+ \fra{1}{\sl,r1,g1,b1,}
\ldots
- {\sl 1,rn,gn,bn}%
- with $0 < \hbox{\sl frac1}$ $< \hbox{\sl frac2} <$ $\ldots < 1.$ The macro
- {\sl drawroutine{\tt(}frac, r, g, b{\tt)}} typically draws a colored line
+ \fra{n}{\sl,rn,gn,bn} with\\
+ $0 \leq \fra{0} < \fra{1}$
+ $< \fra{2} <$
+ $\ldots$
+ $\fra{n} \leq 1.$\\
+ (Often $\fra{0} = 0$ and $\fra{n} = 1.$)
+ The dpic macro\\
+ {\sl drawroutine{\tt(}frac, r, g, b{\tt)}}\\
+ typically draws a colored line
and must be defined according to the area to be filled.
- The routine is called $n{+}1$ times for
- $\hbox{\sl frac}= 0, 1/n, 2/n, \ldots 1$ with rgb arguments interpolated
- in hsv space between {\sl colorseq} points.
+ This routine is called $n{+}1$ times for
+ $\fra{}= \fra{0},\;$
+ $\fra{0} + 1/n\times(\fra{n}{-}\fra{0}),$
+ $\fra{0} + 2/n\times(\fra{n}{-}\fra{0}),$
+ \ldots
+ \fra{n}\\
+ (i.e., often
+ $\fra{} = 0, 1/n, 2/n, \ldots 1$)\\
+ with rgb
+ arguments interpolated in hsv space between {\sl colorseq} points
+ (which are specified in rgb-space).
Example (shade a box with 101 graded-color lines):\\
{\tt B: box\\
define HorizShade \lbr\ line right B.wid \textbackslash\\
- $\;$ thick B.ht/100/(1bp\_\_) from (0,-(\$1)*B.ht) \textbackslash\\
- $\;$ outlined rgbstring(\$2,\$3,\$4) \rbr;}%
- {\tt ShadeObject(HorizShade,100, 0,1,0,0, 1,0,0,1) \textbackslash\\
- $\;$ at B}.}%
+ $\;$ from (0,-(\char36{}1)*B.ht) \textbackslash\\
+ $\;$ outlined rgbstring(\char36{}2,\char36{}3,\char36{}4) \rbr;}\\
+ {\tt ShadeObject(HorizShade, B.ht/lthick, 0,1,0,0, 1,0,0,1) at B}.
+ }%
\macrodef{shadowed}{shadowed}{(box|circle|ellipse|line,
{\sl position spec, keys})}%
{gen}%
{ Object with specified shadow. {\sl possspec} is e.g.,
{\tt with .w at ...} or {\tt at} {\sl position}.
The {\sl keys} are
- {\tt attrib=}{\sl object attributes}{\tt ;}%
+ {\tt attrib=}{\sl object attributes}{\tt ;}
{\tt shadowthick=}{\sl expr}{\tt ;} (default {\tt linethick*)}5/4),
{\tt shadowcolor=}{\sl string}{\tt ;} (default {\tt "gray"}),
{\tt shadowangle=}{\sl expr}{\tt ;} (default $-45$)
@@ -2370,6 +2433,7 @@ arrowhd len,
e.g., to draw a dashed sine curve, amplitude {\sl a},
of {\sl n} cycles of length {\sl x} from {\sl A}, {\tt
sinusoid(a,twopi\_*n/x,-pi\_/2,0,x,dashed) with .Start at A}}%
+
\macrodef{sl\_box}{sl_box}{({\sl stem linespec, keys, stem object})}%
{SLD}%
{One-terminal SLD element: argument 1 is a \linespec\ to define the stem
@@ -2402,7 +2466,7 @@ arrowhd len,
{\tt C} for a curved breaker; adding a {\tt D} puts drawout elements
in the input and output leads.
Otherwise, the arguments are as for
- \MR{sl_ttbox}{\tt sl\_ttbox}%
+ \MR{sl_ttbox}{\tt sl\_ttbox}
\seesect{SingleLine:}}%
\macrodef{sl\_busbar}{sl_busbar}{({\sl linespec, np, keys})}%
{SLD}%
@@ -2469,19 +2533,19 @@ arrowhd len,
Argument 3 is null for no breaker in the stem, {\tt C} for a default
closed breaker, {\tt O} for an open breaker, {\tt X,} {\tt /,} or \bsl\ for
these marks, or
- \MR{sl_ttbox}{\tt sl\_ttbox}%
+ \MR{sl_ttbox}{\tt sl\_ttbox}
key-value pairs defining box attributes for the breaker
(default name {\sl Br})
- \label{sl_disk}%
+ \label{sl_disk}
\seesect{SingleLine:}}%
\macrodef{sl\_drawout}{sl_drawout}{({\sl linespec, keys,} R)}%
{SLD}%
{Two-terminal SLD element: argument 1 is a \linespec\ as for ordinary
two-terminal elements.
- Argument 2 contains semicolon (;)-separated key-value body attributes:
+ Argument 2 contains semicolon (;)-separated key-value body attributes:\\
{\tt type=T} (for truncated leads);
- {\tt lgth={\sl{}expr},}%
+ {\tt lgth={\sl{}expr},}
{\tt wdth={\sl{}expr}} (body size);
{\tt name={\sl{}Name}} (default {\sl Body});
{\tt line={\sl{}pic line attributes}}; (e.g., {\tt thick 2})
@@ -2498,7 +2562,7 @@ arrowhd len,
Argument 3 is null for no breaker in the stem, {\tt C} for a default
closed breaker, {\tt O} for an open breaker, {\tt X,} {\tt /,} or \bsl\ for
these marks, or
- \MR{sl_ttbox}{\tt sl\_ttbox}%
+ \MR{sl_ttbox}{\tt sl\_ttbox}
key-value pairs defining box attributes for the breaker
(default name {\sl Br})
\seesect{SingleLine:}}%
@@ -2518,19 +2582,20 @@ arrowhd len,
Argument 3 is null for no breaker in the stem, {\tt C} for a default
closed breaker, {\tt O} for an open breaker, {\tt X,} {\tt /,} or \bsl\ for
these marks, or
- \MR{sl_ttbox}{\tt sl\_ttbox}%
+ \MR{sl_ttbox}{\tt sl\_ttbox}
key-value pairs defining box attributes for the breaker
(default name {\sl Br})
\seesect{SingleLine:}}%
\macrodef{sl\_inverter}{sl_inverter}{({\sl ttbox args})}%
{SLD}%
{Two-terminal SLD element: the arguments are as for
- \MR{sl_ttbox}{\tt sl\_ttbox}%
+ \MR{sl_ttbox}{\tt sl\_ttbox}
\seesect{SingleLine:}}%
+
\macrodef{sl\_lamp}{sl_lamp}{({\sl stem linespec, keys, breaker})}%
{SLD}%
{One-terminal SLD element: the arguments are as for
- \MR{sl_disk}{\tt sl\_disk}%
+ \MR{sl_disk}{\tt sl\_disk}
\seesect{SingleLine:}}%
\macrodef{sl\_load}{sl_load}{({\sl stem linespec, keys, breaker})}%
{SLD}%
@@ -2549,7 +2614,7 @@ arrowhd len,
Argument 3 is null for no breaker in the stem, {\tt C} for a default
closed breaker, {\tt O} for an open breaker, {\tt X,} {\tt /,} or \bsl\ for
these marks, or
- \MR{sl_ttbox}{\tt sl\_ttbox}%
+ \MR{sl_ttbox}{\tt sl\_ttbox}
key-value pairs defining box attributes for the breaker
(default name {\sl Br})
\seesect{SingleLine:}}%
@@ -2571,7 +2636,7 @@ arrowhd len,
Argument 3 is null for no breaker in the stem, {\tt C} for a default
closed breaker, {\tt O} for an open breaker, {\tt X,} {\tt /,} or \bsl\ for
these marks, or
- \MR{sl_ttbox}{\tt sl\_ttbox}%
+ \MR{sl_ttbox}{\tt sl\_ttbox}
key-value pairs defining box attributes for the breaker
(default name {\sl Br})
\seesect{SingleLine:}}%
@@ -2587,8 +2652,7 @@ arrowhd len,
Argument 3 is null for no breaker in the input lead, {\tt C} for a default
closed breaker, {\tt O} for an open breaker, {\tt X,} {\tt /,} or \bsl\ for
- these marks, or
- key-value pairs as above defining breaker attributes
+ these marks, or key-value pairs as above defining breaker attributes
except that the default breaker name is {\sl BrI}.
Argument 4 defines the breaker in the output lead as for argument 3
@@ -2597,7 +2661,7 @@ arrowhd len,
\macrodef{sl\_rectifier}{sl_rectifier}{({\sl ttbox args})}%
{SLD}%
{Two-terminal SLD element: the arguments are as for
- \MR{sl_ttbox}{\tt sl\_ttbox}%
+ \MR{sl_ttbox}{\tt sl\_ttbox}
\seesect{SingleLine:}}%
\macrodef{sl\_slash}{sl_slash}{(at {\sl position, keys,}%
[$n$:]R|L|U|D|{\sl degrees})}%
@@ -2625,8 +2689,8 @@ arrowhd len,
Argument 3 is colon (:)-separated sequence of up to three breaker
attribute specifications for the input, output, and teriary breaker
- in order. A null or blank means no breaker, {\tt tt\_breaker}%
- specifications otherwise. Default breaker names are {\sl BrI}%
+ in order. A null or blank means no breaker, {\tt tt\_breaker}
+ specifications otherwise. Default breaker names are {\sl BrI}
and {\sl BrO} as for
{\tt sl\_transformer,} and {\sl Br} for the third breaker.
@@ -2699,7 +2763,7 @@ arrowhd len,
Argument 4 defines the breaker in the output lead as for argument 3
except that the default breaker name is {\sl BrO}.
- \label{sl_ttbox}%
+ \label{sl_ttbox}
\seesect{SingleLine:}}%
\macrodef{s\_name}{s_name}{}%
{gen}%
@@ -2713,37 +2777,39 @@ arrowhd len,
{dpictools}%
{$\;\;$ Trapezoid formed from a box with top corners displaced right by
$x$ offset and right corners displaced up by $y$ offset.}%
-\macrodef{source}{source}{(\linespec,
- V|v|tv|I|i|ti|ii|AC|B|F|G|H|J|Q|L|N|P|S[C[r]]|E[r]]|T|X|U|{\sl other}, {\sl
- diameter},R)}%
+\macrodef{source}{source}{(\linespec, {\sl char or chars}, {\sl diameter},R,
+ {\sl body attributes, body name})}%
{cct}%
- {source, arg2 blank or:\\
- {\tt V}: voltage source;\\
- {\tt v}: alternate voltage source;\\
- {\tt tv}: truncated-bar alternate voltage source;\\
- {\tt I}: current source;\\
- {\tt i}: alternate current source;\\
- {\tt ti}: truncated-bar alternate current source;\\
- {\tt ii}: double arrow current source; AC: AC source;\\
+ {Source; arg2 blank or:\\
+ {\tt AC}: AC source;\\
{\tt B}: bulb;\\
{\tt F}: fluorescent;\\
{\tt G}: generator;\\
{\tt H}: step function;\\
+ {\tt I}: current source;\\
+ {\tt i}: alternate current source;\\
+ {\tt ii}: double arrow current source;\\
+ {\tt ti}: truncated-bar alternate current source;\\
{\tt L}: lamp;\\
{\tt N}: neon;\\
+ {\tt NA}: neon 2;\\
+ {\tt NB}: neon 3;\\
{\tt P}: pulse;\\
{\tt Q}: charge;\\
{\tt R}: ramp;
- {\tt r}: right orientation;
{\tt S}: sinusoid;\\
- {\tt SC}: quarter arc;\\
- {\tt SE}: arc;\\
+ {\tt SC}: quarter arc, {\tt SCr} right orientation;\\
+ {\tt SE}: arc, {\tt SEr} right orientation;\\
{\tt T}: triangle;\\
{\tt U}: square-wave;\\
+ {\tt V}: voltage source;\\
{\tt X}: interior X;\\
+ {\tt v}: alternate voltage source;\\
+ {\tt tv}: truncated-bar alternate voltage source;\\
other: custom interior label or waveform;\\
arg 4: R: reversed polarity;\\
- arg 5 modifies the circle with e.g., color or fill
+ arg 5 modifies the circle (body) with e.g., color or fill;\\
+ arg 6 names the body {\tt [ ]} block
\seesect{Twoterminal:}}%
\macrodef{speaker}{speaker}{( U|D|L|R|{\sl degrees},{\sl size},H,attributes)}%
{cct}%
@@ -2775,8 +2841,7 @@ arrowhd len,
{Stack arg 2, arg 3, ... onto the named stack up to a blank arg}%
\macrodef{stackcopy\_}{stackcopy_}{(`{\sl name 1}',`{\sl name 2}')}%
{gen}%
- {Copy stack 1 into stack 2, preserving the order of pushed
- elements}%
+ {Copy stack 1 into stack 2, preserving the order of pushed elements}%
\macrodef{stackdo\_}{stackdo}{(`{\sl stackname}',{\sl commands})}%
{gen}%
{Empty the stack to the first blank entry, performing arg 2}%
@@ -2838,8 +2903,9 @@ arrowhd len,
\macrodef{sw\_}{sw_}{}%
{gen}%
{.sw with respect to current direction}%
-%
+
\Letter{T}%
+
\macrodef{tapped}{tapped}{(`{\sl two-terminal element}',
[{\sl arrowhd} | type={\sl arrowhd};name={\sl Name}],
{\sl fraction, length, fraction, length,} $\cdots$)}%
@@ -2871,13 +2937,13 @@ arrowhd len,
block. The permissible {\sl chars} are:
{\tt > | >{}> | < | <{}< | A | AA | M | O | OF}.
Type {\tt O} draws a node (circle); {\tt OF} a filled circle.
- Type {\tt M} is a black bar; {\tt A} is an open arc end; type {\tt AA}%
+ Type {\tt M} is a black bar; {\tt A} is an open arc end; type {\tt AA}
a double open arc. Type {\tt >} (the default) is an arrow-like output
connector; {\tt <} and {\tt <<} input connectors. Arg 3 is arrowhead
width or circle diameter when key-value pairs are not used.
If keys are specified, they are {\tt type=}{\sl chars} as previously;
{\tt wdth=}{\sl expr}; {\tt lgth=}{\sl expr}; {\tt sep=}{\sl expr};
- {\tt head=}{\sl attributes except} {\tt lgth, wdth.}%
+ {\tt head=}{\sl attributes except} {\tt lgth, wdth.}
The key {\tt sep=} is the double-head separation
\seesect{Composite:}}%
\macrodef{testexpr}{testexpr}{({\sl variable, expr1, expr2, \ldots})}%
@@ -2894,8 +2960,8 @@ arrowhd len,
{cct}%
{ Thermocouple drawn to the left (by default) of the
{\sl linespec} line. A {\tt T} argument truncates the leads so
- only the two branches appear. {\tt R=}%
- right orientation. \seesect{Twoterminal:}}%
+ only the two branches appear. {\tt R=} right orientation.
+ \seesect{Twoterminal:}}%
\macrodef{thicklines\_}{thicklines_}{({\sl number})}%
{gen}%
{set line thickness in points}%
@@ -2972,7 +3038,7 @@ arrowhd len,
{terminal strip, chars:
I (invisible terminals), C (default circle terminals), D (dot terminals),
O (omitted separator lines), {\tt wid=}value{\tt ;} total strip width,
- {\tt ht=}value{\tt ;} strip height, {\tt box={\sl shaded etc.};}%
+ {\tt ht=}value{\tt ;} strip height, {\tt box={\sl shaded etc.};}
\seesect{Composite:}}%
\macrodef{ttmotor}{ttmotor}{({\sl linespec, string, diameter, brushwid,
brushht})}%
@@ -2981,8 +3047,9 @@ brushht})}%
\macrodef{twopi\_}{twopi_}{}%
{gen}%
{$2\pi$}%
-%
+
\Letter{U}%
+
\macrodef{ujt}{ujt}{(\linespec,R,P,E)}%
{cct}%
{unijunction transistor, right, P-channel, envelope
@@ -2995,8 +3062,9 @@ brushht})}%
\macrodef{up\_}{up_}{}%
{gen}%
{set current direction up \seesect{Placing:}}%
-%
+
\Letter{V}%
+
\macrodef{variable}{variable}{(`{\sl element}', {\sl chars}, [+|-]{\sl angle},
{\sl length}, at position)}%
% {\tt [A|P|L|[u]N|[u]NN][C|S]},
@@ -3019,8 +3087,7 @@ brushht})}%
{The $x, y$ coordinate pair of the position}%
\macrodef{Vdiff\_}{Vdiff_}{({\sl position},{\sl position})}%
{gen}%
- {{\tt Vdiff\_(A,B)} evaluates to {\tt A-(B)} with dpic, {\tt
- A-(B.x,B.y)}%
+ {{\tt Vdiff\_(A,B)} evaluates to {\tt A-(B)} with dpic, {\tt A-(B.x,B.y)}
with gpic}%
\macrodef{vec\_}{vec_}{({\sl x},{\sl y})}%
{gen}%
@@ -3041,8 +3108,7 @@ brushht})}%
{unit-vector pair CCW-perpendicular to linear object}%
\macrodef{Vperp}{Vperp}{({\sl position name}, {\sl position name})}%
{gen}%
- {unit-vector pair CCW-perpendicular to line joining two named
- positions}%
+ {unit-vector pair CCW-perpendicular to line joining two named positions}%
\macrodef{vrot\_}{vrot_}{({\sl x},{\sl y},{\sl xcosine},{\sl ycosine})}%
{gen}%
{rotation operator}%
@@ -3054,11 +3120,11 @@ brushht})}%
{The vector in arg 1 multiplied by the scalar in arg 2}%
\macrodef{Vsum\_}{Vsum_}{({\sl position},{\sl position})}%
{gen}%
- {{\tt Vsum\_(A,B)} evaluates to {\tt A+B} with dpic, {\tt
- A+(B.x,B.y)}%
+ {{\tt Vsum\_(A,B)} evaluates to {\tt A+B} with dpic, {\tt A+(B.x,B.y)}
with gpic}%
-%
+
\Letter{W}%
+
\macrodef{while\_}{while_}{(`{\sl test}',`{\sl actions}')}%
{gen}%
{Integer m4 while loop}%
@@ -3082,8 +3148,9 @@ brushht})}%
\macrodef{XOR\_off}{XOR_off}{}%
{log}%
{XOR and NXOR offset of input face}%
-%
+
\Letter{X}%
+
\macrodef{xtal}{xtal}{(\linespec,{\sl keys})}%
{cct}%
{Quartz crystal. The {\sl keys} are
@@ -3102,7 +3169,9 @@ brushht})}%
\macrodef{xtract}{xtract}{({\sl string, substr1, substr2, $\ldots$})}%
{gen}%
{returns substrings if present}%
+
\Letter{Y}%
+
\macrodef{Ysymbol}{Ysymbol}{(at {\sl position},keys,
U|D|L|R|{\sl degrees}) (default {\tt U} for up)}%
{cct}%
diff --git a/graphics/circuit_macros/doc/quick.m4 b/graphics/circuit_macros/doc/quick.m4
index 7de2399601..1d849e2809 100644
--- a/graphics/circuit_macros/doc/quick.m4
+++ b/graphics/circuit_macros/doc/quick.m4
@@ -1,16 +1,14 @@
.PS # Pic input begins with .PS
cct_init # Read in macro definitions and set defaults
elen = 0.75 # Variables are allowed; default units are inches
-Origin: Here # Position names are capitalized
- source(up_ elen); llabel(-,v_s,+)
- resistor(right_ elen); rlabel(,R,)
+Vs: source(up_ elen); llabel(-,v_s,+) # Name and label the source
+ resistor(right_ elen); rlabel(,R,) # Semicolon and line end are equivalent
dot
{ # Save the current position and direction
- capacitor(down_ to (Here,Origin)) #(Here,Origin) = (Here.x,Origin.y)
- rlabel(+,v,-); llabel(,C,)
+ capacitor(down_ Vs.len); rlabel(+,v,-); llabel(,C,)
dot
} # Restore position and direction
line right_ elen*2/3
- inductor(down_ Here.y-Origin.y); rlabel(,L,); b_current(i)
- line to Origin
+ inductor(down_ Vs.len); rlabel(,L,); b_current(i)
+ line to (Vs,Here) # (Vs,Here) = (Vs.x,Here.y)
.PE # Pic input ends
diff --git a/graphics/circuit_macros/doc/relaycoilMan.m4 b/graphics/circuit_macros/doc/relaycoilMan.m4
index 962b0732b9..0d0641b2ad 100644
--- a/graphics/circuit_macros/doc/relaycoilMan.m4
+++ b/graphics/circuit_macros/doc/relaycoilMan.m4
@@ -1,44 +1,46 @@
+
.PS
-# relaycoil.m4
+# relaycoilMan.m4
cct_init
spc = dimen_/3
{ relaycoil; S: `"\tt relaycoil"' at last [].s+(0,-16bp__)
- {`"\sl V1"' wid 10bp__ at last [].V1 rjust
- `"\sl V2"' at last [].V2 ljust }
- K: relaycoil(NX,,,,fill_(0.9)) with .nw at last [].ne+(spc*4,0)
- `"\tt (NX,{,},{,}"' at (last [],S) `"\tt fill\_(0.9))"'
+ { "\sl V1" wid 10bp__ at last [].V1 rjust
+ "\sl V2" at last [].V2 ljust }
+ relaycoil(S) with .nw at last [].ne+(spc*2,0); "\tt (S)" at (last [],S)
+ K: relaycoil(NX) with .nw at last [].ne+(spc*3,0); "\tt (NX)" at (last [],S)
{ thinlines_
- spline <- from K.A1 left 7bp__ then up 4bp__ left 4bp__;`"\sl A1"' rjust
- arrow <- from K.A2 left 10bp__;`"\sl A2"' rjust
- spline <- from K.A3 left 7bp__ then down 4bp__ left 4bp__;`"\sl A3"' rjust
- spline <- from K.B1 right 7bp__ then up 4bp__ right 4bp__;`"\sl B1"' ljust
- arrow <- from K.B2 right 10bp__;`"\sl B2"' ljust
- spline <- from K.B3 right 7bp__ then down 4bp__ right 4bp__;`"\sl B3"' ljust
+ spline <- from K.A1 left 7bp__ then up 4bp__ left 4bp__; "\sl A1" rjust
+ arrow <- from K.A2 left 10bp__; "\sl A2" rjust
+ spline <- from K.A3 left 7bp__ then down 4bp__ left 4bp__; "\sl A3" rjust
+ spline <- from K.B1 right 7bp__ then up 4bp__ right 4bp__; "\sl B1" ljust
+ arrow <- from K.B2 right 10bp__; "\sl B2" ljust
+ spline <- from K.B3 right 7bp__ then down 4bp__ right 4bp__; "\sl B3" ljust
thicklines_
}
- relaycoil(AXSR) with .nw at last [].ne+(spc*5,0);`"\tt (AXSR)"' at (last [],S)
- {`"\sl V1"' at last [].V1 rjust;`"\sl V2"' at last [].V2 rjust }
- relaycoil(BXSR) with .nw at last [].ne+(spc*2,0);`"\tt (BXSR)"' at (last [],S)
- {`"\sl V1"' at last [].V1 ljust;`"\sl V2"' at last [].V2 ljust }
- relaycoil(SR) with .nw at last [].ne+(spc*3,0);`"\tt (SR)"' at (last [],S)
- relaycoil(SO) with .nw at last [].ne+(spc,0);`"\tt (SO)"' at (last [],S)
- relaycoil(SOR) with .nw at last [].ne+(spc,0);`"\tt (SOR)"' at (last [],S)
- relaycoil(PC) with .nw at last [].ne+(spc,0);`"\tt (PC)"' at (last [],S)
+ relaycoil(AXSR) with .nw at last [].ne+(spc*4,0); "\tt (AXSR)" at (last [],S)
+ { "\sl V1" at last [].V1 rjust; "\sl V2" at last [].V2 rjust }
+ relaycoil(BXSR) with .nw at last [].ne+(spc*2,0); "\tt (BXSR)" at (last [],S)
+ { "\sl V1" at last [].V1 ljust; "\sl V2" at last [].V2 ljust }
+ relaycoil(SR) with .nw at last [].ne+(spc*2,0); "\tt (SR)" at (last [],S)
+ spx = spc*3/4
+ relaycoil(SO) with .nw at last [].ne+(spx,0); "\tt (SO)" at (last [],S)
+ relaycoil(SOR) with .nw at last [].ne+(spx,0); "\tt (SOR)" at (last [],S)
+ relaycoil(PC) with .nw at last [].ne+(spx,0); "\tt (PC)" at (last [],S)
}
spc = dimen_/4
{
move down_ 3/4; right_
- relaycoil(HS); S:`"\tt (HS)"' at last [].s+(0,-12bp__)
- relaycoil(NAC) with .nw at last [].ne+(spc,0);`"\tt (NAC)"' at (last [],S)
- relaycoil(AC) with .nw at last [].ne+(spc,0);`"\tt (AC)"' at (last [],S)
- relaycoil(ML) with .nw at last [].ne+(spc,0);`"\tt (ML)"' at (last [],S)
- relaycoil(PO) with .nw at last [].ne+(spc,0);`"\tt (PO)"' at (last [],S)
- relaycoil(RM) with .nw at last [].ne+(spc,0);`"\tt (RM)"' at (last [],S)
- relaycoil(RH) with .nw at last [].ne+(spc,0);`"\tt (RH)"' at (last [],S)
- relaycoil(TH) with .nw at last [].ne+(spc,0);`"\tt (TH)"' at (last [],S)
- relaycoil(EL) with .nw at last [].ne+(spc,0);`"\tt (EL)"' at (last [],S)
- relaycoil(MR) with .sw at last [].se+(spc,0);`"\tt (MR)"' at (last [],S)
+ relaycoil(HS); S: "\tt (HS)" at last [].s+(0,-12bp__)
+ relaycoil(NAC) with .nw at last [].ne+(spc,0); "\tt (NAC)" at (last [],S)
+ relaycoil(AC) with .nw at last [].ne+(spc,0); "\tt (AC)" at (last [],S)
+ relaycoil(ML) with .nw at last [].ne+(spc,0); "\tt (ML)" at (last [],S)
+ relaycoil(PO) with .nw at last [].ne+(spc,0); "\tt (PO)" at (last [],S)
+ relaycoil(RM) with .nw at last [].ne+(spc,0); "\tt (RM)" at (last [],S)
+ relaycoil(RH) with .nw at last [].ne+(spc,0); "\tt (RH)" at (last [],S)
+ relaycoil(TH) with .nw at last [].ne+(spc,0); "\tt (TH)" at (last [],S)
+ relaycoil(EL) with .nw at last [].ne+(spc,0); "\tt (EL)" at (last [],S)
+ relaycoil(MR) with .sw at last [].se+(spc,0); "\tt (MR)" at (last [],S)
}
.PE
diff --git a/graphics/circuit_macros/dpictools.pic b/graphics/circuit_macros/dpictools.pic
index c6ba472200..415cd0329a 100644
--- a/graphics/circuit_macros/dpictools.pic
+++ b/graphics/circuit_macros/dpictools.pic
@@ -3,7 +3,7 @@
# m4 macro NeedDpicTools or the pic statement copy "HOMELIB_/dpictools.pic"
# when HOMELIB_ is defined or, generically, copy "<path>dpictools.pic"
-# Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under #
+# Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under #
# the LaTeX Project Public Licence in file Licence.txt. The files of #
# this distribution may be redistributed or modified provided that this #
# copyright notice is included and provided that modifications are clearly #
@@ -370,52 +370,57 @@ define DefineCMYKColor { cmyktorgb($2,$3,$4,r_CMYKRGB,g_CMYKRGB,b_CMYKRGB)
DefineRGBColor($1,r_CMYKRGB,g_CMYKRGB,b_CMYKRGB) }
# ShadeObject(DrawRoutineName, n, colorseq)
-# colorseq = 0,r0,g0,b0,
-# frac1,r1,g1,b1,
-# frac2,r2,g2,b2,
+# colorseq = frac0,r0,g0,b0,
+# frac1,r1,g1,b1,
# ...
-# 1,rn,gn,bn
-# with 0 < frac1 < frac2 < ... < 1
+# fracn,rn,gn,bn
+# with 0 <= frac0 < frac1 < ... < fracn <= 1
+# (Often frac0 = 0 and fracn = 1)
#
# calls DrawRoutineName(frac,r,g,b)
-# n+1 times for frac = 0, 1/n, 2/n, ... 1
+# n+1 times for frac =
+# frac0, frac0+1/n*(fracn-frac0),
+# frac0+2/n*(fracn-frac0), ... fracn
+# (i.e., often frac = 0, 1/n, 2/n, ... 1)
# with rgb args interpolated (in hsv space)
# between colorseq points
-#
# eg B: box; define HorizShade { line right B.wid thick B.ht/100/(1bp__) \
# from (0,-($1)*B.ht) outlined rgbstring($2,$3,$4) }
# ShadeObject(HorizShade, 100, 0,1,0,0, 1,0,0,1) at B
#
-define ShadeObject { [ Origin: Here; nSteps = abs($2)
- nextP = $3; nextR = $4; nextG = $5; nextB = $6
+define ShadeObject { [ Origin: Here; nSteps = max(abs($2),1)
+ nextF = $3; nextR = $4; nextG = $5; nextB = $6; lastF = nextF; frac0 = nextF
+ fracn = frac0; nextarg = 3; for done = 0 to 1 do { if nextarg < $+ then \
+ { exec sprintf("fracn = $%g",nextarg); nextarg +=4; done = 0 } }
+ if frac0 <= fracn then { $1(frac0,nextR,nextG,nextB) }
nextarg = 7
- thisP = nextP
- if $2 < 0 then { rgbtohsv(nextR,nextG,nextB,nextH,nextS,nextV) } \
- else { rgbtohsv(nextR^2,nextG^2,nextB^2,nextH,nextS,nextV) }
- if nextP*nSteps >= 1 then { nextP = 0 }
- $1(nextP,nextR,nextG,nextB)
- for stepnum = 1 to nSteps do {
- if stepnum > nextP*nSteps then {
- thisP = nextP; thisH = nextH; thisS = nextS; thisV = nextV
- exec sprintf("nextP = $%g; nextR = $%g; nextG = $%g; nextB = $%g",\
- nextarg,nextarg+1,nextarg+2,nextarg+3);
- nextarg +=4 }
- if nextP != thisP then {
- rgbtohsv(nextR^2,nextG^2,nextB^2,nextH,nextS,nextV)
- if thisS == 0 then { thisH = nextH }
- if nextS == 0 then { nextH = thisH }
- if thisH-nextH > 180 then { nextH += 360 } \
- else { if nextH-thisH > 180 then { thisH +=360 } } }
- if nextP > thisP then {
- x = (stepnum/nSteps-thisP)/(nextP-thisP)
- currP = thisP*(1-x) + nextP*x
- currH = thisH*(1-x) + nextH*x
- currS = thisS*(1-x) + nextS*x
- currV = thisV*(1-x) + nextV*x
- hsvtorgb(currH,currS,currV,cRsq,cGsq,cBsq)
- if $2 < 0 then { $1(currP,cRsq,cGsq,cBsq) } \
- else { $1(currP,sqrt(cRsq),sqrt(cGsq),sqrt(cBsq)) } }
- }
+ if $2 < 0 then { rgbtohsv(nextR,nextG,nextB, nextH,nextS,nextV) } \
+ else { rgbtohsv(nextR^2,nextG^2,nextB^2, nextH,nextS,nextV) }
+ for stepnum = 0 to nSteps do {
+ currF = frac0+stepnum/nSteps*(fracn-frac0)
+ if currF >= nextF then {
+ if nextarg >= $+ then { stepnum = nSteps } \
+ else { lastF = nextF; lastH = nextH; lastS = nextS; lastV = nextV
+ exec sprintf("nextF = $%g; nextR = $%g; nextG = $%g; nextB = $%g",\
+ nextarg,nextarg+1,nextarg+2,nextarg+3);
+ nextarg +=4 } }
+ if stepnum <= nSteps then {
+ if nextF != lastF then {
+ rgbtohsv(nextR^2,nextG^2,nextB^2,nextH,nextS,nextV)
+ if lastS == 0 then { lastH = nextH }
+ if nextS == 0 then { nextH = lastH }
+ if lastH-nextH > 180 then { nextH += 360 } \
+ else { if nextH-lastH > 180 then { lastH +=360 } } }
+ if nextF > lastF then {
+ x = (currF-lastF)/(nextF-lastF)
+ currH = lastH*(1-x) + nextH*x
+ currS = lastS*(1-x) + nextS*x
+ currV = lastV*(1-x) + nextV*x
+ hsvtorgb(currH,currS,currV,cRsq,cGsq,cBsq)
+ if (currF >= frac0) && (currF <= fracn) then {
+ if $2 < 0 then { $1(currF,cRsq,cGsq,cBsq) } \
+ else { $1(currF,sqrt(abs(cRsq)),sqrt(abs(cGsq)),sqrt(abs(cBsq))) } } }
+ } }
exec sprintf("$%g",nextarg)
] }
diff --git a/graphics/circuit_macros/examples/Alogix.m4 b/graphics/circuit_macros/examples/Alogix.m4
index f77a159875..b22f5bf5f4 100644
--- a/graphics/circuit_macros/examples/Alogix.m4
+++ b/graphics/circuit_macros/examples/Alogix.m4
@@ -19,14 +19,14 @@ A: Autologix(
# Draw a tree of gates only. The ~ has been
# replaced by NOT gates.
definergbcolor(lightblue,0.72,0.72,0.9)
-B: Autologix(Or(And(B,Not(C)),And(Not(A),B,C)),N,shaded "lightblue") \
+G: Autologix(Or(And(B,Not(C)),And(Not(A),B,C)),N,shaded "lightblue") \
with .sw at A.e+(1.3,-0.5)
- "{\sl Out}" at B.Out above ljust
- `"\shortstack[l]{\tt B: Autologix( \\ \tt \
+ "{\sl G.Out}" at G.Out above ljust
+ `"\shortstack[l]{\tt G: Autologix( \\ \tt \
Or(And(B,Not(C)),And(Not(A),B,C)),N,\\ \tt \
- shaded \"lightblue\")}"' wid 242pt__ ht 20pt__ at B.s+(0,-0.3)
- for_(1,4,1,`"{\sf\small\sl B.In`'m4x}" at B.In`'m4x rjust')
- "{\sf\small\sl B.In5}" at B.In5+(0,-1.5bp__) rjust
+ shaded \"lightblue\")}"' wid 242pt__ ht 20pt__ at G.s+(0,-0.3)
+ for_(1,4,1,`"{\sf\small\sl G.In`'m4x}" at G.In`'m4x rjust')
+ "{\sf\small\sl G.In5}" at G.In5+(0,-1.5bp__) rjust
# Here is how to include an arbitrary circuit
# (an SR-flipflop, for example)
diff --git a/graphics/circuit_macros/examples/AmpTable.m4 b/graphics/circuit_macros/examples/AmpTable.m4
index 023533c634..b7ff904cfc 100644
--- a/graphics/circuit_macros/examples/AmpTable.m4
+++ b/graphics/circuit_macros/examples/AmpTable.m4
@@ -1,23 +1,25 @@
.PS
# `Amptable.m4'
cct_init
+divert(-1)
+
+divert(0)dnl
+
movewid = 2pt__
-{
+{
{amp ; move ; "{\tt `amp'}" ljust}
- move down 0.4; right_
- {amp(,0.3) ; move ; "\tt `amp'(,0.3)" ljust}
- }
move right_ 2.0
-{ {delay(,,fill_(0.9)) ; move ;
- "`\tt\shortstack[l]{delay(,{,}\\ fill\_(0.9))}'" ljust}
- move down 0.4; right_
- {delay(,0.2) ; move ; "{\tt `delay'(,0.2)}" ljust}
- }
-
+ {amp(,5mm__) ; move ; "\tt `amp'(,5mm\_\_)" ljust}
move right_ 2.0
-{ {integrator ; move ; "\tt `integrator'" ljust}
+ {integrator ; move ; "\tt `integrator'" ljust}
+ }
move down 0.5; right_
- {integrator(,0.3) ; move ; "\tt `integrator'(,0.3)" wid 82pt__ ljust}
- }
+{
+ {delay(,,fill_(0.9)) ; move ;
+ "`\tt\shortstack[l]{delay(,{,}\\ fill\_(0.9))}'" ljust}
+ move right_ 2.0
+ {delay(,,type=S;body=shaded "blue!25"); move
+ "{\tt `delay'(,,type=S;}" ljust "{\tt body=shaded \"blue!25\")}" ljust}
+ }
.PE
diff --git a/graphics/circuit_macros/examples/Buttons.m4 b/graphics/circuit_macros/examples/Buttons.m4
index e7e5b004dc..7ccea6c28a 100644
--- a/graphics/circuit_macros/examples/Buttons.m4
+++ b/graphics/circuit_macros/examples/Buttons.m4
@@ -3,7 +3,6 @@
gen_init
NeedDpicTools
-
divert(-1)
#################################################################
@@ -67,36 +66,21 @@ define(`BoxButton',`[
linedensity = ifelse(`$4',,150/scale,`$4')
nsteps=10
define BxBshadow {
- box ht boxh wid boxw rad boxh/2 \
+ B: box ht boxh wid boxw rad boxh/2 \
outlined rgbstring($`'2,$`'3,$`'4) at (0,($`'1)*4*linethick bp__)
}
Q: ShadeObject(BxBshadow,nsteps,
0, 1,1,1,
1, r3,g3,b3)
# Shaded body
- lthk = boxh/nsteps/(1bp__)
- define BxBshade {
- v = boxh*(1-($`'1))
- h = (boxw-boxh)/2+sqrt((boxh/2)^2-(v-boxh/2)^2)
- line from (-h,v) to (h,v) thick lthk outlined rgbstring($`'2,$`'3,$`'4)
- }
- nsteps = boxh*linedensity
- C: ShadeObject(BxBshade,nsteps,
- 0, r1, g1, b1,
- 0.45,r2, g2, b2,
- 1, r3, g3, b3) with .n at Q.n
+ C: ColoredV(box,
+ (( 0,r1,g1,b1, 0.45,r2,g2,b2, 1,r3,g3,b3)):boxh/(Q.B.thick bp__)*2,
+ wid boxw ht boxh rad boxh/2 invis) with .n at Q.n
# Shaded highlight
- bh = boxh*0.4
- bw = boxw*4/4.5
- define BxBhighlight {
- v = bh*(1-($`'1)); h = (bw-bh)/2+sqrt((bh/2)^2-(v-bh/2)^2)
- line from (-h,v) to (h,v) thick lthk outlined rgbstring($`'2,$`'3,$`'4)
- }
- nsteps = bh*linedensity
- ShadeObject(BxBhighlight,nsteps,
- 0,1,1,1,
- 8/nsteps,1,1,1,
- 1, r2,g2,b2) with .n at Q.n+(0,-boxh/20)
+ bh = boxht*0.4
+ ColoredV(box,((0,1,1,1, 8/(bh*linedensity),1,1,1, 1,r2,g2,b2)),
+ ht bh wid boxw*4/4.5 rad bh/2 invis) \
+ with .n at Q.n+(0,-boxh/20)
`$5']')
#################################################################
diff --git a/graphics/circuit_macros/examples/Chips.m4 b/graphics/circuit_macros/examples/Chips.m4
index 57f9e29e97..7718cfc095 100644
--- a/graphics/circuit_macros/examples/Chips.m4
+++ b/graphics/circuit_macros/examples/Chips.m4
@@ -9,8 +9,11 @@ Chips: [
ic4017
{"\sf 4017" at last [].Chip.sw below ljust}
move
- ic4510
- {"\sf 4510" at last [].Chip.sw below ljust}
+# ic4510
+# {"\sf 4510" at last [].Chip.sw below ljust}
+# move
+ ic555
+ {"\sf 555" at last [].Chip.sw below ljust}
move
icVS1053
{"\sf VS1053" at last [].Chip.sw below ljust}
diff --git a/graphics/circuit_macros/examples/Consumption.m4 b/graphics/circuit_macros/examples/Consumption.m4
index 3b165abb7f..5ae20e31c3 100644
--- a/graphics/circuit_macros/examples/Consumption.m4
+++ b/graphics/circuit_macros/examples/Consumption.m4
@@ -473,14 +473,18 @@ Cl: s_box(Coal) at dtop(2000,0.36+3pt__)
rs_box(Population) at dtop(1975,0.9)
define(`text_ang',90)
+ command "\newcommand{\pct}{$\mskip\thinmuskip$\char37}"
brpos = 2016
Q:s_box(`$\left.\vbox to 1.50in{}\right\}$') with .w at dtop(brpos,1.04)
- Label: rs_box(`\shortstack{90\,\%\\ nonrenewable}') with .w at Q.e
+# Label: rs_box(`\shortstack{90\,\%\\ nonrenewable}') with .w at Q.e
+ Label: rs_box(`90\pct') at Q.e+(5bp__,0)
+ rs_box(`nonrenewable') with .w at last "".e+(2bp__,0)
s_box(`$\left.\vbox to 0.2in{}\right\}$') with .w at dtop(brpos+0.5,0.1)
- rs_box(`\shortstack[l]{10\,\%\\ renewable}') \
- with .sw at (Label.w,dtop(brpos,0.05))
+# rs_box(`\shortstack[l]{10\,\%\\ renewable}')
+ rs_box(`10\pct') with .sw at (Label.w,dtop(brpos,0.05))
+ rs_box(`renewable') with .sw at last "".se+(2bp__,0)
linethick_(0.6)
arrow <- from dtop(1998,1.55) left 0.15 up 0.2
@@ -519,6 +523,6 @@ Q: NPopulation.end + (-1.25,-0.1)
#print maxpswid-(last [].wid-maxx)
#print (last [].wid,last [].ht)
-showbox_
+#showbox_
}
.PE
diff --git a/graphics/circuit_macros/examples/Dini.m4 b/graphics/circuit_macros/examples/Dini.m4
index 85bf0d30c7..4b272ae2f1 100644
--- a/graphics/circuit_macros/examples/Dini.m4
+++ b/graphics/circuit_macros/examples/Dini.m4
@@ -6,7 +6,7 @@
# https://tex.stackexchange.com/questions/516734/plot-dinis-surface
threeD_init
NeedDpicTools
-scale = 1.5
+scale = 2.0
[
viewazimuth = 0 # View angles in degrees
viewelevation = 20
@@ -190,5 +190,58 @@ array2(h,m4inx,53,54,55,58,59,57)
for_(2,5,1,`to Project((v[x[m4x],1]),(v[x[m4x],2]),(v[x[m4x],3]))\')\
to Project((v[x[1],1]),(v[x[1],2]),(v[x[1],3])) thick 0.2 fill_(0)
}
-] scaled 2.5 with .sw at last [].se+(1,0)
+] scaled 2.5 with .sw at last [].se+(0.5,0)
+[
+#.PE
+#.PS
+## BlueBall.m4
+## https://latex.org/forum/viewtopic.php?f=5&t=30639
+#threeD_init
+#NeedDpicTools
+
+ ballrad = 2.5
+ cylrad = ballrad*0.87
+ hht =sqrt(ballrad^2-cylrad^2)
+ azimuth = 0
+ elevation = atan2(hht,cylrad)*rtod_ # disks touch at C
+ setview(azimuth,elevation)
+ sinelev = sind(elevation)
+
+ linethick_(1)
+ C: shadedball(ballrad,,,,(0,1,1)) at (0,0)
+ Op: C+Project(0,0,hht)
+ O: C+Project(0,0,-hht)
+ line dashed from Op+( cylrad,0) down Op.y-O.y
+ line dashed from Op+(-cylrad,0) down Op.y-O.y
+
+ define(`Normal',`cosd(`$1')*cylrad,sind(`$1')*cylrad,-hht')
+ define Cylvis { $`'2 = dot3D(Normal($`'1),View3D) }
+ findroot(Cylvis,5,170,1e-8,rA)
+ A: Project(Normal(rA))
+ B: O+(-(A.x-O.x),A.y-O.y)
+ aA = atan2(A.y-O.y,(A.x-O.x)*sinelev)
+ ellipsearc(cylrad*2,cylrad*2*sinelev,aA,-pi_-aA,0,cw) with .C at O
+ ellipsearc(cylrad*2,cylrad*2*sinelev,-pi_-aA-4*dtor_,aA+4*dtor_,,cw,dashed) \
+ with .C at O
+ ellipsearc(cylrad*2,cylrad*2*sinelev,-aA,pi_+aA,0,cw) with .C at Op
+ ellipsearc(cylrad*2,cylrad*2*sinelev,pi_+aA+4*dtor_,-aA-4*dtor_,,cw,dashed) \
+ with .C at Op
+
+ dot(at C); # "$T$" at last [].w rjust below
+ dot(at O); # "$O$" at last [].s below
+ dot(at A); # "$A$" at last [].s ljust below
+ dot(at B); # "$B$" at last [].s rjust below
+ dot(at Op); # "$O'$" at last [].n above
+ Ap: dot(at Op+(A-O)); # "$A'$" at Ap.n ljust above
+ Bp: dot(at Op+(B-O)); # "$B'$" at Bp.n rjust above
+
+ linethick_(0.4)
+ line dashed from Ap to A then to O then to Op
+ line dashed from A to C
+ line dashed from Bp to B
+ V: Between_(O,A,0.15)
+ U: C+Project(0,0,-hht+0.15)
+ line from U to U+(V-O) then to V
+ ] with .w at last [].e+(0.5,0)
+
.PE
diff --git a/graphics/circuit_macros/examples/EVplugs.m4 b/graphics/circuit_macros/examples/EVplugs.m4
index d3e40c8dd2..50afde5355 100644
--- a/graphics/circuit_macros/examples/EVplugs.m4
+++ b/graphics/circuit_macros/examples/EVplugs.m4
@@ -14,7 +14,7 @@ divert(-1)
twdth=expr; # tab width
thgt=expr; # tab hght
thick=expr; # outer line thickness (pt)
- inthick=expr; # inner line thickness (pt)
+ thickin=expr; # inner line thickness (pt)
BG=attributes; # shaded gray etc
L1=attributes; # L1 attributes ...
N=attributes;
@@ -23,21 +23,21 @@ divert(-1)
CP=attributes; '
define(`pEVskale',25.4) dnl default plug size (20 mm)
define(`EV_J1772',`[ pushkeys_(`$1', `wdth:20/pEVskale;
- twdth:3.5/20*m4wdth; thgt:1.5/20*m4wdth; diamLNP:6/20*m4wdth;
- thick:2; inthick:1.5; BG::N; L1::N; N::N; PE::N; PP::N; CP::N; ')
+ twdth:3.5/20*m4`'wdth; thgt:1.5/20*m4`'wdth; diamLNP:6/20*m4`'wdth;
+ thick:2; thickin:1.5; BG::N; L1::N; N::N; PE::N; PP::N; CP::N; ')
tang = atan2(m4twdth/2,m4wdth/2)*rtod_
TS: (Rect_(m4wdth/2,-90-tang)); TE: (Rect_(m4wdth/2,-90+tang))
Tab: line thick m4thick from TS down_ m4thgt \
then to TE-(0,m4thgt) then to TE m4BG
Arc: arc thick m4thick to TS with .c at (0,0) m4BG
round(at TS,last arc.thick); round(at TE,last arc.thick)
- L1: circle diam m4diamLNP thick m4inthick at (Rect_(m4wdth/4,150)) m4L1
- N: circle diam m4diamLNP thick m4inthick at (Rect_(m4wdth/4, 30)) m4N
- PE: circle diam m4diamLNP thick m4inthick at (0,-m4wdth/4) m4PE
- PP: circle diam m4diamLNP*0.55 thick m4inthick at (Rect_(m4wdth/3,210)) m4PP
- CP: circle diam m4diamLNP*0.55 thick m4inthick at (Rect_(m4wdth/3,-30)) m4CP
+ L1: circle diam m4diamLNP thick m4thickin at (Rect_(m4wdth/4,150)) m4L1
+ N: circle diam m4diamLNP thick m4thickin at (Rect_(m4wdth/4, 30)) m4N
+ PE: circle diam m4diamLNP thick m4thickin at (0,-m4wdth/4) m4PE
+ PP: circle diam m4diamLNP*0.55 thick m4thickin at (Rect_(m4wdth/3,210)) m4PP
+ CP: circle diam m4diamLNP*0.55 thick m4thickin at (Rect_(m4wdth/3,-30)) m4CP
`$2' popdef(`m4CP',`m4PP',`m4PE',`m4N',`m4L1',`m4BG',
- `m4wdth',`m4diamLNP',`m4twdth',`m4thgt',`m4thick',`m4inthick') ]')
+ `m4wdth',`m4diamLNP',`m4twdth',`m4thgt',`m4thick',`m4thickin') ]')
`EV_J3068(keys,shade)
EV charging plug in a [] block
@@ -46,7 +46,7 @@ define(`EV_J1772',`[ pushkeys_(`$1', `wdth:20/pEVskale;
twdth=expr; # tab width
thgt=expr; # tab hght
thick=expr; # outer line thickness (pt)
- inthick=expr; # inner line thickness (pt)
+ thickin=expr; # inner line thickness (pt)
BG=attributes; # shaded gray etc
L1|L2|L3=attributes; # pin attributes ...
N=attributes;
@@ -55,7 +55,7 @@ define(`EV_J1772',`[ pushkeys_(`$1', `wdth:20/pEVskale;
CP=attributes;
arg2= R:G:B background fill color '
define(`EV_J3068',`[ pushkeys_(`$1',
- `wdth:25/pEVskale; diamLNP:m4wdth*0.25; thick:2; inthick:1.5;
+ `wdth:25/pEVskale; diamLNP:m4`'wdth*0.25; thick:2; thickin:1.5;
BG::N; L1::N; L2::N; L3::N; N::N; PE::N; PP::N; CP::N; ')
C: Here
NE: C+(Rect_(m4wdth/2,45)); NW: C+(Rect_(m4wdth/2,135))
@@ -68,14 +68,14 @@ define(`EV_J3068',`[ pushkeys_(`$1',
arc thick m4thick to Ac+(0,m4diamLNP/2) with .c at Ac m4BG
Top: line thick m4thick to (NW+NE-Ac, Here) m4BG
arc thick m4thick to NW with .c at Here+(0,-m4diamLNP/2) m4BG
- PE: circle diam m4diamLNP thick m4inthick at C m4PE
- PP: circle diam m4diamLNP*0.55 thick m4inthick at C+(Rect_(m4wdth/3,45)) m4PP
- CP: circle diam m4diamLNP*0.55 thick m4inthick at C+(Rect_(m4wdth/3,135)) m4CP
- L1: circle diam m4diamLNP thick m4inthick at C+(m4wdth*.3,0) m4L1
- L2: circle diam m4diamLNP thick m4inthick at C+(Rect_(m4wdth*.3,-60)) m4L2
- L3: circle diam m4diamLNP thick m4inthick at C+(Rect_(m4wdth*.3,-120)) m4L3
- N: circle diam m4diamLNP thick m4inthick at C-(m4wdth*.3,0) m4N
- `$3' popdef(`m4wdth',`m4diamLNP',`m4thick',`m4inthick',
+ PE: circle diam m4diamLNP thick m4thickin at C m4PE
+ PP: circle diam m4diamLNP*0.55 thick m4thickin at C+(Rect_(m4wdth/3,45)) m4PP
+ CP: circle diam m4diamLNP*0.55 thick m4thickin at C+(Rect_(m4wdth/3,135)) m4CP
+ L1: circle diam m4diamLNP thick m4thickin at C+(m4wdth*.3,0) m4L1
+ L2: circle diam m4diamLNP thick m4thickin at C+(Rect_(m4wdth*.3,-60)) m4L2
+ L3: circle diam m4diamLNP thick m4thickin at C+(Rect_(m4wdth*.3,-120)) m4L3
+ N: circle diam m4diamLNP thick m4thickin at C-(m4wdth*.3,0) m4N
+ `$3' popdef(`m4wdth',`m4diamLNP',`m4thick',`m4thickin',
`m4BG',`m4L1',`m4L2',`m4L3',`m4N',`m4PE',`m4PP',`m4CP') ]')
`EV_CCS1(J1772 keys,DC keys)
@@ -84,20 +84,20 @@ define(`EV_J3068',`[ pushkeys_(`$1',
diamPM=expr; # diam of DC+, DC- circles
sep=expr; # separation of Jack and DC
thick=expr; # outer line thickness (pt)
- inthick=expr; # inner line thickness (pt)
+ thickin=expr; # inner line thickness (pt)
BG=attributes; # shaded gray etc
DCplus=attributes;
DCminus=attributes; '
define(`EV_CCS1',`[
J: EV_J1772(`$1')
- pushkeys_(`$2',`wdth:J.wid:23.5/20; hght:J.wid*11/20; diamPM:m4hght*7/11;
- sep:J.wid*3/30; thick:J.Arc.thick; inthick:J.PE.thick;
+ pushkeys_(`$2',`wdth:J.wid:23.5/20; hght:J.wid*11/20; diamPM:m4`'hght*7/11;
+ sep:J.wid*3/30; thick:J.Arc.thick; thickin:J.PE.thick;
BG::N; DCplus::N; DCminus::N;')
DC: [ Box: box thick m4thick wid m4wdth ht m4hght rad m4hght/2 m4BG
- DCplus: circle thick m4inthick diam m4diamPM at Box.w+(m4hght/2,0) m4DCplus
- DCminus:circle thick m4inthick diam m4diamPM at Box.e-(m4hght/2,0) m4DCminus
+ DCplus: circle thick m4thickin diam m4diamPM at Box.w+(m4hght/2,0) m4DCplus
+ DCminus:circle thick m4thickin diam m4diamPM at Box.e-(m4hght/2,0) m4DCminus
] with .n at J.s+(0,-m4sep)
- popdef(`m4wdth',`m4hght',`m4diamPM',`m4sep',`m4thick',`m4inthick',`m4BG',
+ popdef(`m4wdth',`m4hght',`m4diamPM',`m4sep',`m4thick',`m4thickin',`m4BG',
`m4DCplus',`m4DCminus')
]')
@@ -107,22 +107,22 @@ define(`EV_CCS1',`[
diamPM=expr; # diam of DC+, DC- circles
sep=expr; # separation of Jack and DC
thick=expr; # outer line thickness (pt)
- inthick=expr; # inner line thickness (pt)
+ thickin=expr; # inner line thickness (pt)
BG=attributes; # shaded gray etc
DCplus=attributes;
DCminus=attributes;
arg2= R:G:B background fill color '
define(`EV_CCS2',`[
J: EV_J3068(`$1',`$2')
- pushkeys_(`$3',`wdth:J.wid:23.5/20; hght:J.wid*11/20; diamPM:m4hght*7/11;
- sep:J.wid*3/30; thick:J.Arc.thick; inthick:J.PE.thick;
+ pushkeys_(`$3',`wdth:J.wid:23.5/20; hght:J.wid*11/20; diamPM:m4`'hght*7/11;
+ sep:J.wid*3/30; thick:J.Arc.thick; thickin:J.PE.thick;
BG::N; DCplus::N; DCminus::N;')
DC: [ Box: box thick m4thick wid m4wdth ht m4hght rad m4hght/2 dnl
m4BG ifelse(`$2',,,`shaded rgbstring(patsubst(`$2',:,`,'))')
- DCplus: circle thick m4inthick diam m4diamPM at Box.w+(m4hght/2,0) m4DCplus
- DCminus:circle thick m4inthick diam m4diamPM at Box.e-(m4hght/2,0) m4DCminus
+ DCplus: circle thick m4thickin diam m4diamPM at Box.w+(m4hght/2,0) m4DCplus
+ DCminus:circle thick m4thickin diam m4diamPM at Box.e-(m4hght/2,0) m4DCminus
] with .n at J.s+(0,-m4sep)
- popdef(`m4wdth',`m4hght',`m4diamPM',`m4sep',`m4thick',`m4inthick',`m4BG',
+ popdef(`m4wdth',`m4hght',`m4diamPM',`m4sep',`m4thick',`m4thickin',`m4BG',
`m4DCplus',`m4DCminus')
]')
@@ -130,12 +130,12 @@ define(`EV_CCS2',`[
EV charging plug in a [] block
keys: wdth=expr; # plug width
thick=expr; # outer line thickness (pt)
- inthick=expr; # inner line thickness (pt)
+ thickin=expr; # inner line thickness (pt)
BG=attributes; # background shaded gray etc
DCplus=|DCminusNS=|FG=|NC=|SS1=|DCP=|PP=|
CL=|CH=|SS2=attributes # pin attributes ...'
define(`EV_CHAdeMO',`[ pushdef(`m4sk',33/140/pEVskale) pushkeys_(`$1',
- `wdth:140*m4sk; thick:m4wdth*9/140/(1bp__); inthick:m4thick*1.5/9;
+ `wdth:140*m4sk; thick:m4`'wdth*9/140/(1bp__); thickin:m4`'thick*1.5/9;
BG::N; DCplus::N; DCminus::N;N::N;S::N;
FG::N; NC::N; SS1::N; DCP::N; PP::N; CL::N; CH::N; SS2::N')
C: circle thick m4thick diam m4wdth-m4thick bp__ m4BG
@@ -144,18 +144,18 @@ define(`EV_CHAdeMO',`[ pushdef(`m4sk',33/140/pEVskale) pushkeys_(`$1',
line thick m4thick*0.6 from C+(Rect_(C.rad+m4thick bp__*3/4,138)) \
to C+(Rect_(C.rad+m4thick bp__*3/4,130)) then right m4thick bp__ m4BG
idiam = (m4wdth-m4thick bp__*2)*47/(27+47*2)
- N: circle diam idiam thick m4inthick with .n at C.n-(0,m4thick bp__/2) m4N
- S: circle diam idiam thick m4inthick with .s at C.s+(0,m4thick bp__/2) m4S
- E: circle diam idiam thick m4inthick at Cintersect(N,N.diam,S,S.diam) m4DCminus
- W: circle diam idiam thick m4inthick at Cintersect(S,S.diam,N,N.diam) m4DCplus
+ N: circle diam idiam thick m4thickin with .n at C.n-(0,m4thick bp__/2) m4N
+ S: circle diam idiam thick m4thickin with .s at C.s+(0,m4thick bp__/2) m4S
+ E: circle diam idiam thick m4thickin at Cintersect(N,N.diam,S,S.diam) m4DCminus
+ W: circle diam idiam thick m4thickin at Cintersect(S,S.diam,N,N.diam) m4DCplus
foreach_(`Z',
- `line thick m4inthick up Z.diam*0.6 right Z.diam*0.6 with .c at Z
- line thick m4inthick up Z.diam*0.6 left Z.diam*0.6 with .c at Z',N,S)
+ `line thick m4thickin up Z.diam*0.6 right Z.diam*0.6 with .c at Z
+ line thick m4thickin up Z.diam*0.6 left Z.diam*0.6 with .c at Z',N,S)
foreach_(`L',`L: circle diam idiam/4 thick linethick/2 \
at N+(Rect_(idiam/4,90*m4Lx)) m4xpand(m4`'L)',FG,NC,DCP,SS1)
foreach_(`L',`L: circle diam idiam/4 thick linethick/2 \
at S+(Rect_(idiam/4,90*m4Lx)) m4xpand(m4`'L)',PP,CL,SS2,CH)
- `$3' popdef(`m4sk',`m4wdth',`m4thick',`m4inthick',`m4BG',
+ `$3' popdef(`m4sk',`m4wdth',`m4thick',`m4thickin',`m4BG',
`m4DCplus',`m4DCminus',`m4N',`m4S',
`m4FG',`m4NC',`m4SS1',`m4DCP',`m4PP',`m4CL',`m4CH',`m4SS2') ]')
@@ -173,7 +173,7 @@ define(`EV_CHAdeMO',`[ pushdef(`m4sk',33/140/pEVskale) pushkeys_(`$1',
Gndinner=attributes;
PP=attributes;
CP=attributes; '
-define(`EV_NAC',`[ pushkeys_(`$1', `wdth:1.6; diamL:m4wdth*0.28; BG::N;
+define(`EV_NAC',`[ pushkeys_(`$1', `wdth:1.6; diamL:m4`'wdth*0.28; BG::N;
L1::N; L1inner::N; L2::N; L2inner::N; Gndinner::N; inner::N;
Gnd::N; PP::N; CP::N; ')
sN = 1/pEVskale*m4wdth/1.6 # drawing coord scale factor
diff --git a/graphics/circuit_macros/examples/Fuses.m4 b/graphics/circuit_macros/examples/Fuses.m4
index 68629f407d..dcffba66cb 100644
--- a/graphics/circuit_macros/examples/Fuses.m4
+++ b/graphics/circuit_macros/examples/Fuses.m4
@@ -42,7 +42,7 @@ movewid = 0.25
jumper(,CJBED) ; {"`\tt $\ldots$(,CJBED)'" at last line.c+(0,-0.2) }
move
jumper(,body=outlined "gray" shaded "gray";)
- "`\tt $\ldots$(,body=outlined \"gray\" \textbackslash'" \
+ "`\tt $\ldots$(,body=outlined \"gray\" \textbackslash'" wid 168bp__ \
at last line.start+(0,-20bp__) ljust \
"`\tt \hphantom{body=}shaded \"gray\";)'" ljust
}
diff --git a/graphics/circuit_macros/examples/Geometry.m4 b/graphics/circuit_macros/examples/Geometry.m4
index 3a50622603..df026547fe 100644
--- a/graphics/circuit_macros/examples/Geometry.m4
+++ b/graphics/circuit_macros/examples/Geometry.m4
@@ -144,7 +144,7 @@ Fig4: [ ls = 2/3 # local scale
Y: LCintersect(HZ,CC4,C4.rad,R); "$Y$" at Y above
X: LCintersect(HZ,CC2,C2.rad); "$X$" at X above rjust
- Loopover_(`P',`dot(at P)',X,Y,Z)
+ foreach_(`P',`dot(at P)',X,Y,Z)
line dashed from X to Y chop -linewid/2
RightAngle(A,Z,Y)
diff --git a/graphics/circuit_macros/examples/Incleps.m4 b/graphics/circuit_macros/examples/Incleps.m4
index 7f02f308c1..28543ca6f3 100644
--- a/graphics/circuit_macros/examples/Incleps.m4
+++ b/graphics/circuit_macros/examples/Incleps.m4
@@ -10,6 +10,9 @@ sinclude(examples.dim) # Change examples to the name of the main LaTeX file.
define(`backarrow',`darrow(`$1',,,2pt__,6pt__,6pt__,<-|)')
S: s_box(`\includegraphics[width=3in]{Incl}')
+# A blank box the size of the included eps figure:
+#S: s_box("\hskip %gin\vrule width 0pt height %gin",\
+# boxdim(InclA,w),boxdim(InclA,v))
ifgpic(`S: box invis ht s_ht wid s_wd with .c at S.n')
thinlines_
diff --git a/graphics/circuit_macros/examples/Makefile b/graphics/circuit_macros/examples/Makefile
index 252fe33fe9..f2f54e02d0 100644
--- a/graphics/circuit_macros/examples/Makefile
+++ b/graphics/circuit_macros/examples/Makefile
@@ -36,6 +36,11 @@ PIC = dpic
#PIC = $$HOME/dpic/pascaldev/test/dpic
#PIC = $$HOME/dpic/pascal/test/dpic
+# Quiet mode for MiKTeX:
+# QLATEX = latex --quiet
+# Quiet mode for texlive:
+QLATEX = latex -interaction=batchmode
+
#MODE = -p
MODE = -g
@@ -62,11 +67,11 @@ TEXPICS = \
Audio.tex Bip.tex Btree.tex Buttons.tex Byte.tex \
Capacitors.tex CanLogic.tex Chips.tex Conn.tex Connectors.tex \
Contacts.tex Contact.tex control.tex Crow.tex \
- csc.tex Csource.tex Decoder.tex \
+ cbresistor.tex csc.tex Csource.tex Decoder.tex \
Demultiplexer.tex diamond.tex Dini.tex Diodes.tex Drive.tex \
EEP.tex Emarrows.tex Escher.tex EVplugs.tex \
- ex00.tex ex01.tex ex02.tex ex03.tex ex04.tex ex05.tex ex06.tex ex08.tex \
- ex09.tex ex10.tex ex11.tex ex12.tex ex15.tex ex16.tex ex17.tex ex18.tex \
+ ex01.tex ex02.tex ex03.tex ex04.tex ex05.tex ex06.tex ex08.tex \
+ ex09.tex ex10.tex ex11.tex ex12.tex ex15.tex ex16.tex ex18.tex \
ex21.tex exp.tex fet.tex Flow.tex Fuses.tex \
Geometry.tex GrayCode.tex graysurf.tex Grounds.tex \
Headers.tex Heathkit.tex \
@@ -78,9 +83,9 @@ TEXPICS = \
Quantum.tex quick.tex \
random.tex Rectifiers.tex recycle.tex relaycoil.tex Relay.tex \
Resistors.tex Rotbox.tex \
- Schottky.tex sfg.tex shadowed.tex shapes.tex ShiftR.tex Sierpinski.tex \
- Sixpole.tex \
- Smithchart.tex Sources.tex SQUID.tex Switches.tex \
+ Schottky.tex Sevensegment.tex sfg.tex Shadowed.tex shapes.tex \
+ ShiftR.tex Sierpinski.tex Sixpole.tex \
+ Smithchart.tex Sources.tex Switches.tex \
Tgate.tex Three.tex thyristor.tex TTLnand.tex Tubediags.tex \
UNO.tex ujt.tex Variable.tex Windings.tex worm.tex Xform.tex XOR.tex
@@ -135,10 +140,10 @@ LTXFILE=printf "|documentclass[11pt]{article}\n\
@touch $(DIMFILE) F_$*.dim
$(M4) pstricks.m4 $(DIMFILE) F_$*.dim $*.m4 | $(PIC) -p > $*.tex
@$(LTXFILE) > F_$*.tex
- latex --quiet F_$*
+ $(QLATEX) F_$*
touch F_$*.dim $(DIMFILE)
$(M4) pstricks.m4 $(DIMFILE) F_$*.dim $*.m4 | $(PIC) -p > $*.tex
- latex --quiet F_$*
+ $(QLATEX) F_$*
mv F_$*.dvi $*.dvi
rm -f F_*
.dvi.ps:
@@ -148,7 +153,7 @@ LTXFILE=printf "|documentclass[11pt]{article}\n\
@touch $(DIMFILE) F_$*.dim
$(M4) pstricks.m4 $(DIMFILE) F_$*.dim $*.m4 | $(PIC) -p > $*.tex
@$(LTXFILE) > F_$*.tex
- latex --quiet F_$*
+ $(QLATEX) F_$*
dvips $(DVIPSOPTS) F_$* -o $*.ps
chmod 644 $*.ps
rm -f F_*
@@ -156,9 +161,9 @@ LTXFILE=printf "|documentclass[11pt]{article}\n\
@touch $(DIMFILE) F_$*.dim
$(M4) pstricks.m4 $(DIMFILE) F_$*.dim $*.m4 | $(PIC) -p > $*.tex
@$(LTXFILE) > F_$*.tex
- latex --quiet F_$*
+ $(QLATEX) F_$*
$(M4) pstricks.m4 $(DIMFILE) F_$*.dim $*.m4 | $(PIC) -p > $*.tex
- latex --quiet F_$*
+ $(QLATEX) F_$*
dvips F_$* -T128cm,28cm -o $*.ps
# Recent changes to PSTricks(?) have clashed with the use of TeXtoEPS
# so use ps2epsi
@@ -171,9 +176,9 @@ LTXFILE=printf "|documentclass[11pt]{article}\n\
@touch $(DIMFILE) F_$*.dim
$(M4) pgf.m4 $(DIMFILE) F_$*.dim $*.m4 | $(PIC) -g > $*.tex
@$(PDFLTXSRC) > F_$*.tex
- pdflatex --quiet F_$*
+ pdf$(QLATEX) F_$*
$(M4) pgf.m4 $(DIMFILE) F_$*.dim $*.m4 | $(PIC) -g > $*.tex
- pdflatex --quiet F_$*
+ pdf$(QLATEX) F_$*
mv F_$*.pdf $*.pdf
rm -f F_*
.m4.png:
@@ -192,7 +197,8 @@ LTXFILE=printf "|documentclass[11pt]{article}\n\
# rm $*.pdf
.m4.svg:
make $*.pdf
- dvisvgm --pdf $*.pdf $*.svg
+# dvisvgm --pdf $*.pdf $*.svg
+ pdf2svg $*.pdf $*.svg
chmod 644 $*.svg
# rm $*.pdf
@@ -244,25 +250,25 @@ $(DOC).dvi: $(DOC).tex files.tex header.tex psmode
tst:
@$(LTXFILE) | sed -e 's/{\.tex}/{test.tex}/' > tst.tex
- make CONF=pstricks.m4 PIC=dpic MODE=-p test.tex; latex --quiet tst
+ make CONF=pstricks.m4 PIC=dpic MODE=-p test.tex; $(QLATEX) tst
rm -f test.tex test.pic
- make CONF=pstricks.m4 PIC=dpic MODE=-p test.tex; latex --quiet tst
+ make CONF=pstricks.m4 PIC=dpic MODE=-p test.tex; $(QLATEX) tst
dvips $(DVIPSOPTS) tst -o tst.ps
tst1:
@$(LTXFILE) | sed -e 's/{\.tex}/{test.tex}/' > tst.tex
- make CONF=pstricks.m4 PIC=dpic MODE=-p test.tex; latex --quiet tst
+ make CONF=pstricks.m4 PIC=dpic MODE=-p test.tex; $(QLATEX) tst
dvips $(DVIPSOPTS) tst -o tst.ps
tikz:
@$(LTXFILE) | sed -e 's/{\.tex}/{test.tex}/' -e 's/pstricks/tikz/' > tst.tex
- make CONF=pgf.m4 PIC=dpic MODE=-g test.tex; latex --quiet tst
+ make CONF=pgf.m4 PIC=dpic MODE=-g test.tex; $(QLATEX) tst
dvips $(DVIPSOPTS) tst -o tst.ps
gpic:
@$(LTXFILE) | sed -e 's/{\.tex}/{test.tex}/' > tst.tex
rm -f test.tex test.pic
- make CONF=gpic.m4 PIC=pic MODE=-t test.tex; latex --quiet tst
+ make CONF=gpic.m4 PIC=pic MODE=-t test.tex; $(QLATEX) tst
dvips $(DVIPSOPTS) tst -o tst.ps
echopics:
diff --git a/graphics/circuit_macros/examples/MoreTable.m4 b/graphics/circuit_macros/examples/MoreTable.m4
index cc198c198b..d1c7be02c9 100644
--- a/graphics/circuit_macros/examples/MoreTable.m4
+++ b/graphics/circuit_macros/examples/MoreTable.m4
@@ -72,5 +72,5 @@ vm = 0.28
{xtal(,type=R;outerdiam=0.2) ; move ;"`{\tt xtal(,type=R)}'" ljust}
}
-] with .nw at Heater.sw+(0,-0.3)
+] with .nw at Heater.sw+(0,-0.4)
.PE
diff --git a/graphics/circuit_macros/examples/Quantum.m4 b/graphics/circuit_macros/examples/Quantum.m4
index 9de7aeddab..02826d9768 100644
--- a/graphics/circuit_macros/examples/Quantum.m4
+++ b/graphics/circuit_macros/examples/Quantum.m4
@@ -17,6 +17,7 @@ define(`Meter',`[ Box: box wid boxwid*3/2 fill_(1)
arc cw from C+(-r,0) to C+(r,0) with .c at C
arrow from C+(-r/4,0) to C+(0.9*r,0.9*r) ]')
+[
X: Bus(,shaded rgbstring(0.5,0.5,1) "X")
A1: Bus(from X.start+(0,-boxht*3/2), shaded "red" "A")
A2: Bus(from 2 between X.start and A1.start,shaded "red" "A")
@@ -27,5 +28,27 @@ A2: Bus(from 2 between X.start and A1.start,shaded "red" "A")
Meter with .e at X.end
box wid boxwid*1.2 ht boxht*1.2 fill_(1) "$R_{\psi}^{\pi/2}$" \
at A2.end-(4.5*boxwid,0)
+]
+
+#.PE
+#.PS
+# SQUID.m4
+cct_init
+
+[
+down_
+#source
+S1: SQUID
+ "J1" at S1.J1 above rjust
+ "J2" at S1.J2 above ljust
+
+S2: SQUID(3,dimen_*1.5,-120) at S1.e+(elen_,0)
+ "J1" at S2.J1 above rjust
+ "J2" at S2.J2 below ljust
+ "J3" at S2.J3 above ljust
+ arcrad = S2.C.rad*0.7
+ arc from S2.c+(Rect_(arcrad,-135)) to S2.c+(Rect_(arcrad,-45)) \
+ with .c at S2.C ->
+ ] with .w at last [].e+(boxht,0)
.PE
diff --git a/graphics/circuit_macros/examples/Resistors.m4 b/graphics/circuit_macros/examples/Resistors.m4
index 5e96f95822..8dd31005c8 100644
--- a/graphics/circuit_macros/examples/Resistors.m4
+++ b/graphics/circuit_macros/examples/Resistors.m4
@@ -5,36 +5,32 @@ cct_init
movewid = 2 pt__
hm = 2.05
vm = 0.28
-{ {resistor ; move ;"`{\tt resistor}'" ljust}
+{ {A:resistor ; move ;"`{\tt resistor}'" ljust}
move right_ hm
- {resistor(,,Q) ; move ;"`\tt resistor(,{,}Q) '" ljust}
+ {Q:resistor(,5,Q) ; move ;"`\tt $\ldots$(,5{,}Q) '" ljust}
move right_ hm
- {resistor(,,V) ; move ;"`{\tt resistor(,{,}V)}'" ljust}
+ {V:resistor(,,V) ; move ;"`{\tt $\ldots$(,{,}V)}'" ljust}
}
move down vm; right_
-{ {resistor(,,ES) ; move ;"`\tt resistor(,{,}ES) '" ljust}
+{ {ES:resistor(,,ES); move ;"`\tt $\ldots$(,{,}ES) '" ljust}
move right_ hm
- {resistor(,,H) ; move ;"`\tt resistor(,{,}H) '" ljust}
+ {H:resistor(,4,H) ; move ;"`\tt $\ldots$(,4{,}H) '" ljust}
move right_ hm
- {resistor(,,AC) ; move ;"`{\tt resistor(,{,}AC)}'" ljust}
+ {AC:resistor(,,AC) ; move ;"`{\tt $\ldots$(,{,}AC)}'" ljust}
}
move down vm; right_
-{ {resistor(,5,B) ; move ;"`{\tt resistor(,5,B)}'" ljust}
+{ {B:resistor(,,B) ; move ;"`{\tt $\ldots$(,{,}B)}'" ljust}
move right_ hm
- {resistor(,,E) ; move
- "`\shortstack[l]{\tt resistor(,{,}E)\\ {\tt $\equiv$ ebox}}'" ljust}
+ {F:resistor(,,F) ; move ;"`\tt $\ldots$(,{,}F) '" ljust}
move right_ hm
- {ebox(,0.5,0.3) ; move ;"`{\tt ebox(,0.5,0.3)}'" ljust}
+ {E:resistor(,,E) ; move ; "`\tt $\ldots$(,{,}E) $\equiv$ ebox'" ljust}
}
- move down vm; right_
+ move down vm*1.1; right_
{ {ebox(,,,0.9) ; move ;"`{\tt ebox(,{,},0.9)}'" ljust}
move right_ hm
- {ebox(,,,,shaded "yellow") ; move
- "`{\tt ebox(,{,},{,}shaded \"yellow\")}'" ljust}
-}
- move down vm; right_
-{ {ebox(,wdth=0.2;box=dashed shaded "green";text="X") ; move
- "`{\tt ebox(,wdth=0.2;box=dashed shaded \"green\";text=\"X\")}'" ljust}
+ {ebox(,wdth=0.2;box=dashed shaded "green";text="H") ; move
+ "`\shortstack[l]{\tt ebox(,wdth=0.2;box=dashed shaded \"green\";\\' \
+ `\tt text=\"H\")}'" ljust}
}
.PE
diff --git a/graphics/circuit_macros/examples/SQUID.m4 b/graphics/circuit_macros/examples/SQUID.m4
deleted file mode 100644
index 54f50f9fa6..0000000000
--- a/graphics/circuit_macros/examples/SQUID.m4
+++ /dev/null
@@ -1,22 +0,0 @@
-.PS
-# SQUID.m4
-cct_init
-
-divert(-1)
-divert(0)dnl
-
-down_
-#source
-S1: SQUID
- "J1" at S1.J1 above rjust
- "J2" at S1.J2 above ljust
-
-S2: SQUID(3,dimen_*1.5,-120) at S1.e+(elen_,0)
- "J1" at S2.J1 above rjust
- "J2" at S2.J2 below ljust
- "J3" at S2.J3 above ljust
- arcrad = S2.C.rad*0.7
- arc from S2.c+(Rect_(arcrad,-135)) to S2.c+(Rect_(arcrad,-45)) \
- with .c at S2.C ->
-
-.PE
diff --git a/graphics/circuit_macros/examples/Sevensegment.m4 b/graphics/circuit_macros/examples/Sevensegment.m4
new file mode 100644
index 0000000000..af45f48edb
--- /dev/null
+++ b/graphics/circuit_macros/examples/Sevensegment.m4
@@ -0,0 +1,82 @@
+.PS
+# Sevensegment.m4
+# https://tex.stackexchange.com/questions/644009/seven-segments-anchors-how-to-use-them
+gen_init
+divert(-1)
+ `sevensegment(keys)
+ Seven-segment display in a [] block. keys:
+ hght=expr; (default boxht)
+ wdth=expr; (default hght*3.3/5.85)
+ slant=fraction; top is skewed slant fraction of ht
+ segwid=expr; segment width
+ gap=expr; gap between segments
+ bevel=fraction; corner truncation
+ on=attributes; "on" segment attributes
+ off=attributes; "off" segment attributes
+ code=[0-8][.]; displayed number .=decimal point
+ or
+ code=Xddddddd[.] where each d=0 or 1 to define
+ Segment1 to Segment7 off or on
+ Segments are labeled Seg1 Seg2 ... Seg7
+ and the decimal point is Seg8'
+define(`sevensegment', # hght, wdth, slant, segwid, gap, bevel, on, off, code
+ `[ pushkeys_(`$1',`hght:boxht; wdth:m4`'hght*3.3/5.85; slant:0;
+ segwid:0.75/3.2*m4`'wdth; gap:0.12/3.2*m4`'wdth; bevel:0.4;
+ on:outlined "red" shaded "red":N; off:outlined "lightgray":N;
+ code:00000010:N;')
+ gapch = m4gap/2*sqrt(2)
+ ifinstr(m4code,.,`define(`m4tmp',substr(m4code,0,decr(len(m4code))))dnl
+ pushdef(`dodp',1)poppushdef(`m4code',m4tmp)')dnl
+ ifinstr(m4code,X,`pushdef(`opcode',substr(m4code,1))',
+ `foreach_(`m4cd',`pushdef(`Cd'decr(m4Lx),m4cd)',1111110,0110000,1101101,
+ 1111001,0110011,1011011,1011111,1110000,1111111,1111011)dnl
+ pushdef(`opcode',Cd`'m4code)')dnl
+ for_(1,7,1,`pushdef(`attrib'm4x,
+ ifelse(substr(opcode,decr(m4x),1),1,`m4on',`m4off'))')dnl
+ Seg1: m4segment(R,m4bevel,m4bevel,attrib1) \
+ with .S at m4slu(0,m4hght-m4segwid)
+ inner = distance(Seg1.SW,Seg1.SE) + gapch*2
+ Seg2: m4segment(D,0.5,m4bevel,attrib2) with .S at \
+ m4slu(m4wdth/2-m4segwid,m4hght-m4segwid-inner/2)
+ Seg3: m4segment(D,m4bevel,0.5,attrib3) with .S at \
+ m4slu(m4wdth/2-m4segwid,m4segwid+inner/2)
+ Seg4: m4segment(L,m4bevel,m4bevel,attrib4) with .S at m4slu(0,m4segwid)
+ Seg5: m4segment(U,0.5,m4bevel,attrib5) with .S at \
+ m4slu(-m4wdth/2+m4segwid,m4segwid+inner/2)
+ Seg6: m4segment(U,m4bevel,0.5,attrib6) with .S at \
+ m4slu(-m4wdth/2+m4segwid,m4hght-m4segwid-inner/2)
+ Seg7: m4segment(R,0.5,0.5,attrib7) with .c at m4slu(0,m4hght/2)
+ ifelse(dodp,1,`Seg8: circle diam m4segwid m4on \
+ at m4slu(Seg3.e.x+m4segwid/2+m4gap,Seg4.s.y+m4segwid/2)') popdef(`dodp')
+ popdef(`m4hght',`m4wdth',`m4slant',`m4segwid',`m4gap',`m4bevel',
+ `m4on',`m4off',`m4code',`opcode')dnl
+ for_(1,7,1,`popdef(`attrib'm4x)') for_(0,9,1,`popdef(`Cd'm4x)')dnl
+ ]')
+define(`m4segment',`[ setdir_(`$1')
+ m4seven_pos(SE,E,NE,,`$2'); m4seven_pos(SW,W,NW,-,`$3')
+ resetdir_
+ S: 1/2 between SW and SE
+ Line: line from m4slu(S.x,S.y) to m4slu(SE.x,SE.y) then to m4slu(E.x,E.y) \
+ then to m4slu(NE.x,NE.y) then to m4slu(NW.x,NW.y) then to m4slu(W.x,W.y) \
+ then to m4slu(SW.x,SW.y) then to m4slu(S.x,S.y) `$4' ] ')
+define(`m4seven_pos',
+ `AA: (`$4'(m4wdth/2-m4segwid-gapch),0); `$1': rot_(AA.x,AA.y,rp_ang)
+ BA: AA + (`$4'1,1)*m4segwid*(1-`$5'); `$2': rot_(BA.x,BA.y,rp_ang)
+ CA: BA - (`$4'1,-1)*m4segwid*`$5'; `$3': rot_(CA.x,CA.y,rp_ang) ')
+define(`m4slu',`(`$1'+(`$2')*m4slant,`$2')')
+
+divert(0)dnl
+
+
+[
+ S: sevensegment(code=4.;hght=1)
+ { for_(1,8,1,`"m4x" at S.Seg`'m4x') }
+ move right 0.25
+ P: sevensegment(code=X1100011;off=invis;hght=1)
+ ]
+[
+ for_(0,9,1,`sevensegment(code=m4x`'ifelse(m4x,1,.);slant=1/4;off=invis)
+ move movewid/4')
+ ] with .nw at last [].sw+(0,-boxht/3)
+
+.PE
diff --git a/graphics/circuit_macros/examples/shadowed.m4 b/graphics/circuit_macros/examples/Shadowed.m4
index 1f26d36049..fbac6a5b5d 100644
--- a/graphics/circuit_macros/examples/shadowed.m4
+++ b/graphics/circuit_macros/examples/Shadowed.m4
@@ -1,15 +1,12 @@
.PS
-# shadowed.m4
+# Shadowed.m4
gen_init
NeedDpicTools
-divert(-1)
-
-divert(0)dnl
Boxes: [
movewid = movewid/2
B1: shadowed(,,
- rad=0bp__; shadowthick=lthick*4; shadowcolor="lightgray"; shadowangle=-60; \
+ shadowthick=lthick*4; shadowcolor="lightgray"; shadowangle=-60; \
attrib=fill_(0.85) "box")
move
@@ -55,6 +52,12 @@ move
move
ColoredV(ellipse,,outlined "magenta" shaded "yellow" "Goodbye")
+
+move
+ ColoredV(box,
+ ((0,0,0,0, 0.25,0,0,0, 0.251,1,1,1, 0.8,1,1,1, 0.801,1,0,0, 1,1,0,0)),
+ ht 3/4 wid 1 rad 3/32)
+ "\textcolor{white}{Heading}" at last [].n below
] with .nw at Boxes.sw #+(0,-moveht)
.PE
diff --git a/graphics/circuit_macros/examples/Sources.m4 b/graphics/circuit_macros/examples/Sources.m4
index 8c4f9634db..ceeea28cb0 100644
--- a/graphics/circuit_macros/examples/Sources.m4
+++ b/graphics/circuit_macros/examples/Sources.m4
@@ -19,18 +19,17 @@ define(`NL',`; move down $1; right_')
{source(,SC) ; move ; "`\tt source(,SC)'" ljust} NL
{source(,AC); move ; "`\tt source(,AC)'" ljust} NL
{source(,X) ; move ; "`\tt source(,X)'" ljust} NL
- {source(,F) ; move ; "`\tt source(,F)'" ljust} NL
{source(,G) ; move ; "`\tt source(,G)'" ljust} NL
{source(,Q) ; move ; "`\tt source(,Q)'" ljust} NL #(0.3)
+ {source(,F) ; move ; "`\tt source(,F)'" ljust} NL
+ {geiger(,,,,fill_(0.9)); move;
+ "`\tt \shortstack[l]{geiger(,{,},{,}\\ fill\_(0.9))}'" ljust} NL
}
move right_ 2.0
{
-# {source(,,0.4) ; move ; "`\tt source(,{,}0.4)'" ljust} NL(0.35)
{source(,,0.4,,shaded "yellow") ; move ;
"`\tt\shortstack[l]{source(,{,}0.4,{,}\\ shaded \"yellow\")}'" ljust} NL(0.35)
-# {source(,P) ; move ; "`\tt source(,P)'" ljust} NL
- {source(,P,,,fill_(0.9)) ; move ;
- "`\tt\shortstack[l]{source(,P,{,},\\ fill\_(0.9))}'" ljust} NL
+ {source(,P) ; move ; "`\tt source(,P)'" ljust} NL
{source(,U) ; move ; "`\tt source(,U)'" ljust} NL
{source(,H) ; move ; "`\tt source(,H)'" ljust} NL
{source(,R) ; move ; "`\tt source(,R)'" ljust} NL
@@ -38,17 +37,18 @@ define(`NL',`; move down $1; right_')
{source(,SCr) ; move ; "`\tt source(,SCr)'" ljust} NL
{source(,T) ; move ; "`\tt source(,T)'" ljust} NL
{source(,L) ; move ; "`\tt source(,L)'" ljust} NL
- {source(,B) ; move ; "`\tt source(,B)'" ljust} NL
+ {source(,B) ; move ; "`\tt source(,B)'" ljust} NL(moveht*0.8)
{nullator ; move ; "`\tt nullator'" ljust} NL(moveht*0.8)
{norator ; move ; "`\tt norator'" ljust} NL(moveht*0.9)
{ttmotor(,G) ; move ; "`\tt ttmotor(,G)'" ljust} NL(moveht*1.1)
- {proximity ; move ; "`\tt \shortstack[l]{proximity\\ = consource(,P)}'" ljust}
+ {battery ; move ; "`\tt battery'" ljust} NL(0.3)
+ {battery(,3,R) ; move ; "`\tt battery(,3,R)'" ljust} #NL(0.35)
}
move right_ 2.0
{source(,N) ; move ; "`\tt source(,N)'" ljust} NL
+ {source(,NA) ; move ; "`\tt source(,NA)'" ljust} NL
+ {source(,NB) ; move ; "`\tt source(,NB)'" ljust} NL
{source(,"\rm mA");move; "`\tt source(,\"mA\")'" ljust} NL(0.31)
-# {source(,"mA");move; "`\tt source(,'" ljust \
-# "`\tt \enskip \"mA\")'" ljust} NL(0.31)
{consource ; move ; "`\tt consource'" ljust} NL(0.32)
{consource(,I) ; move ; "`\tt consource(,I)'" ljust} NL(0.32)
{consource(,i) ; move ; "`\tt consource(,i)'" ljust} NL(0.32)
@@ -57,8 +57,8 @@ define(`NL',`; move down $1; right_')
{consource(,V) ; move ; "`\tt consource(,V)'" ljust} NL(0.32)
{consource(,v) ; move ; "`\tt consource(,v)'" ljust} NL(0.3)
{consource(,tv) ; move ; "`\tt consource(,tv)'" ljust} NL(0.3)
- {battery ; move ; "`\tt battery'" ljust} NL(0.3)
- {battery(,3,R) ; move ; "`\tt battery(,3,R)'" ljust} #NL(0.35)
+ {proximity ; move ;
+ "`\tt \shortstack[l]{proximity\\ = consource(,P)}'" ljust} NL(0.35)
iflatex(`ifpsfrag(,`latexcommand(})')')
.PE
diff --git a/graphics/circuit_macros/examples/Switches.m4 b/graphics/circuit_macros/examples/Switches.m4
index 0b2d00d0e0..7b25160394 100644
--- a/graphics/circuit_macros/examples/Switches.m4
+++ b/graphics/circuit_macros/examples/Switches.m4
@@ -138,7 +138,7 @@ movewid = 0.25
"\tt circle=\"M\")" ljust}
move right_
dswitch(,,WBcDIGC,circle="M")
- {"\tt (,{,}WBcDIGC," ljust at last line.start+(0,-15bp__) \
+ {"\tt (,{,}WBcDIGC," wid 72bp__ ljust at last line.start+(0,-15bp__) \
"\tt circle=\"M\")" ljust}
}
diff --git a/graphics/circuit_macros/examples/cbresistor.m4 b/graphics/circuit_macros/examples/cbresistor.m4
new file mode 100644
index 0000000000..152e42758c
--- /dev/null
+++ b/graphics/circuit_macros/examples/cbresistor.m4
@@ -0,0 +1,80 @@
+.PS
+# cbresistor.m4
+# https://tex.stackexchange.com/questions/709339/create-command-with-decoration-in-tikz
+# https://www.google.com/search?client=firefox-b-d&q=resistor+color+code
+cct_init
+divert(-1)
+
+ `cbresistor(linespec, keys)
+ keys:
+ lgth=expr; wdth=expr;
+ body=body attributes, e.g. shaded "green"
+ type=A|B; pinched body shape
+ colors=color:color:...;
+ Up to 6 colors, a color may be nul '
+define(`cbresistor',`eleminit_(`$1')
+ pushkeys_(`$2',`lgth:dimen_/2; wdth:dimen_/5; body::N; colors::N; type::N')dnl
+{line to rvec_(max(0,rp_len/2-m4lgth/2),0) thick linethick*3/2; M4cbW: Here
+ ifelse(m4type,B,
+ `[L:rotbox(m4lgth*3/23, m4wdth, shaded "darkgray" m4body,r=m4wdth/20)
+ C:rotbox(m4lgth*17/23, m4wdth*9/10, shaded "darkgray" m4body) \
+ with .W at L.E
+ R:rotbox(m4lgth*3/23, m4wdth, shaded "darkgray" m4body,r=m4wdth/20) \
+ with .W at C.E] with .L.W at Here; move to last [].R.E',
+ `rotbox(m4lgth, m4wdth, shaded "darkgray" m4body) with .W at Here')
+ ifelse(m4colors,,,`define(`m4bw',(m4lgth/23))dnl
+ definergbcolor(silver,0.75,0.75,0.75)
+ definergbcolor(gold,1,215/255,0)
+ stacksplit_(`cbrstack',m4colors,:)stackreverse_(`cbrstack')dnl
+ stackargs_(`m4pos',22,17,12,7,5,2)dnl
+ stackdo_(`cbrstack',`ifelse(cbrstack,nul,,
+ `{ move to M4cbW+vec_(m4pos*m4bw-m4bw/2,0)
+ define(`m4ctr',ifelse(m4type,B,eval((m4pos>3)*(m4pos<20)),0))dnl
+ line m4colorfix(outlined,cbrstack) thick m4bw*1.8/(1bp__) \
+ from rvec_(0,-ifelse(m4ctr,1,0.9*)m4wdth/2) \
+ to rvec_(0, ifelse(m4ctr,1,0.9*)m4wdth/2)
+ ifelse(ifelse(cbrstack,silver,1,cbrstack,gold,1),1,
+ `line outlined rgbstring(0.8,0.8,0.8) thick last line.thick \
+ from 0.2 along_(last line) to 0.4 along_(last line)
+ line outlined "white" thick last line.thick \
+ from 0.25 along_(2nd last line) to 0.3 along_(2nd last line)')
+ }')
+ popdef(`m4pos')') stackdo_(`m4pos')')
+ line to rvec_(max(0,rp_len/2-m4lgth/2),0) thick linethick*3/2}
+ popdef(`m4lgth',`m4wdth',`m4body',`m4colors',`m4type')dnl
+ line to rvec_(rp_len,0) invis ')
+
+divert(0)dnl
+
+linewid = 3/2*linewid
+ifsvg(definergbcolor(Dandelion,0.95,0.65,0.2))
+ifsvg(definergbcolor(Peach,0.76,0.5,0.1))
+
+define(`dpr',
+ `{ cbresistor(,type=B;
+ body=m4colorfix(shaded,Dandelion) m4colorfix(outlined,Peach);
+ colors=`$2') }
+ {iflatex(`sprintf("\SI{%g}{\ohm}",`$1')')ifsvg("``$1'svg_Omega'") \
+ at last line.end+(10bp__,-5bp__) rjust}
+ move right_ moveht*5/6; down_ ')
+
+ define(`elen_',(3/2*linewid))
+ define(`dimen_',(5/4*linewid))
+ down_
+ foreach_(`pair',`dpr(patsubst(pair,-,`,'):nul:black:silver)',
+ 10-brown:black,
+ 12-brown:red,
+ 15-brown:green,
+ 18-brown:gray,
+ 22-red:red,
+ 27-red:Violet,
+ 33-orange:orange,
+ 39-orange:white,
+ 47-yellow:Violet,
+ 56-green:blue,
+ 68-blue:gray,
+ 82-gray:red)
+ dpr(100,brown:black:nul:brown:gold)
+ {"iflatex(\SI{5}{\percent},5 %)" at last line.end+(10bp__,-15bp__) rjust}
+
+.PE
diff --git a/graphics/circuit_macros/examples/dpv/AmpTableDPV.m4 b/graphics/circuit_macros/examples/dpv/AmpTableDPV.m4
index 2850ff5ad7..ab6d34b9e2 100644
--- a/graphics/circuit_macros/examples/dpv/AmpTableDPV.m4
+++ b/graphics/circuit_macros/examples/dpv/AmpTableDPV.m4
@@ -1,25 +1,24 @@
.PS
-# `Amptable.m4'
+# `AmptableDPV.m4'
cct_init(svg_font(sans-serif,11bp__))
textwid = 0.7
movewid = 2pt__
-{
+{
{amp ; move ; "`amp'" ljust}
- move down 0.4; right_
- {amp(,0.3) ; move ; "`amp'(,0.3)" ljust}
- }
move right_ 2.0
-{ {delay ; move ; "`delay'" ljust}
- move down 0.4; right_
- {delay(,0.2) ; move ; "`delay'(,0.2)" ljust}
- }
-
+ {amp(,5mm__) ; move ; "`amp(,5mm__)'" ljust}
move right_ 2.0
-{ {integrator ; move ; "`integrator'" ljust}
+ {integrator ; move ; "`integrator'" ljust}
+ }
move down 0.5; right_
- {integrator(,0.3) ; move ; "`integrator'(,0.3)" wid 1.2 at Here ljust}
- }
+{
+ {delay(,,fill_(0.9)) ; move ;
+ "`delay(,,'" ljust "`fill_(0.9))'" ljust}
+ move right_ 2.0
+ {delay(,,type=S;body=shaded rgbstring(0.75,0.75,1)); move
+ "`delay(,,type=S;" ljust "body=shaded rgbstring(0.75,0.75,1)')" ljust}
+ }
command "</g>" # end font
.PE
diff --git a/graphics/circuit_macros/examples/dpv/DiniDPV.m4 b/graphics/circuit_macros/examples/dpv/DiniDPV.m4
index 1846917a4a..7d48ca590d 100644
--- a/graphics/circuit_macros/examples/dpv/DiniDPV.m4
+++ b/graphics/circuit_macros/examples/dpv/DiniDPV.m4
@@ -3,9 +3,10 @@
# This diagram can be produced using, e.g.
# m4 pdf.m4 Dini.m4 | dpic -d > Dini.pdf
+# https://tex.stackexchange.com/questions/516734/plot-dinis-surface
threeD_init
NeedDpicTools
-scale = 1.5
+scale = 2.0
[
viewazimuth = 0 # View angles in degrees
viewelevation = 20
@@ -189,5 +190,58 @@ array2(h,m4inx,53,54,55,58,59,57)
for_(2,5,1,`to Project((v[x[m4x],1]),(v[x[m4x],2]),(v[x[m4x],3]))\')\
to Project((v[x[1],1]),(v[x[1],2]),(v[x[1],3])) thick 0.2 fill_(0)
}
-] scaled 2.5 with .sw at last [].se+(1,0)
+] scaled 2.5 with .sw at last [].se+(0.5,0)
+[
+#.PE
+#.PS
+## BlueBall.m4
+## https://latex.org/forum/viewtopic.php?f=5&t=30639
+#threeD_init
+#NeedDpicTools
+
+ ballrad = 2.5
+ cylrad = ballrad*0.87
+ hht =sqrt(ballrad^2-cylrad^2)
+ azimuth = 0
+ elevation = atan2(hht,cylrad)
+ setview(azimuth,elevation*rtod_)
+ sinelev = sin(elevation)
+
+ linethick_(1)
+ C: shadedball(ballrad,,,,(0,1,1)) at (0,0)
+ Op: C+Project(0,0,hht)
+ O: C+Project(0,0,-hht)
+ line dashed from Op+( cylrad,0) down Op.y-O.y
+ line dashed from Op+(-cylrad,0) down Op.y-O.y
+
+ define(`Normal',`cosd(`$1')*cylrad,sind(`$1')*cylrad,-hht')
+ define Cylvis { $`'2 = dot3D(Normal($`'1),View3D) }
+ findroot(Cylvis,5,170,1e-8,rA)
+ A: Project(Normal(rA))
+ B: O+(-(A.x-O.x),A.y-O.y)
+ aA = atan2(A.y-O.y,(A.x-O.x)*sinelev)
+ ellipsearc(cylrad*2,cylrad*2*sinelev,aA,-pi_-aA,0,cw) with .C at O
+ ellipsearc(cylrad*2,cylrad*2*sinelev,-pi_-aA-4*dtor_,aA+4*dtor_,,cw,dashed) \
+ with .C at O
+ ellipsearc(cylrad*2,cylrad*2*sinelev,-aA,pi_+aA,0,cw) with .C at Op
+ ellipsearc(cylrad*2,cylrad*2*sinelev,pi_+aA+4*dtor_,-aA-4*dtor_,,cw,dashed) \
+ with .C at Op
+
+ dot(at C); # "$T$" at last [].w rjust below
+ dot(at O); # "$O$" at last [].s below
+ dot(at A); # "$A$" at last [].s ljust below
+ dot(at B); # "$B$" at last [].s rjust below
+ dot(at Op); # "$O'$" at last [].n above
+ Ap: dot(at Op+(A-O)); # "$A'$" at Ap.n ljust above
+ Bp: dot(at Op+(B-O)); # "$B'$" at Bp.n rjust above
+
+ linethick_(0.4)
+ line dashed from Ap to A then to O then to Op
+ line dashed from A to C
+ line dashed from Bp to B
+ V: Between_(O,A,0.15)
+ U: C+Project(0,0,-hht+0.15)
+ line from U to U+(V-O) then to V
+ ] with .w at last [].e+(0.5,0)
+
.PE
diff --git a/graphics/circuit_macros/examples/dpv/EVplugsDPV.m4 b/graphics/circuit_macros/examples/dpv/EVplugsDPV.m4
index d3e40c8dd2..50afde5355 100644
--- a/graphics/circuit_macros/examples/dpv/EVplugsDPV.m4
+++ b/graphics/circuit_macros/examples/dpv/EVplugsDPV.m4
@@ -14,7 +14,7 @@ divert(-1)
twdth=expr; # tab width
thgt=expr; # tab hght
thick=expr; # outer line thickness (pt)
- inthick=expr; # inner line thickness (pt)
+ thickin=expr; # inner line thickness (pt)
BG=attributes; # shaded gray etc
L1=attributes; # L1 attributes ...
N=attributes;
@@ -23,21 +23,21 @@ divert(-1)
CP=attributes; '
define(`pEVskale',25.4) dnl default plug size (20 mm)
define(`EV_J1772',`[ pushkeys_(`$1', `wdth:20/pEVskale;
- twdth:3.5/20*m4wdth; thgt:1.5/20*m4wdth; diamLNP:6/20*m4wdth;
- thick:2; inthick:1.5; BG::N; L1::N; N::N; PE::N; PP::N; CP::N; ')
+ twdth:3.5/20*m4`'wdth; thgt:1.5/20*m4`'wdth; diamLNP:6/20*m4`'wdth;
+ thick:2; thickin:1.5; BG::N; L1::N; N::N; PE::N; PP::N; CP::N; ')
tang = atan2(m4twdth/2,m4wdth/2)*rtod_
TS: (Rect_(m4wdth/2,-90-tang)); TE: (Rect_(m4wdth/2,-90+tang))
Tab: line thick m4thick from TS down_ m4thgt \
then to TE-(0,m4thgt) then to TE m4BG
Arc: arc thick m4thick to TS with .c at (0,0) m4BG
round(at TS,last arc.thick); round(at TE,last arc.thick)
- L1: circle diam m4diamLNP thick m4inthick at (Rect_(m4wdth/4,150)) m4L1
- N: circle diam m4diamLNP thick m4inthick at (Rect_(m4wdth/4, 30)) m4N
- PE: circle diam m4diamLNP thick m4inthick at (0,-m4wdth/4) m4PE
- PP: circle diam m4diamLNP*0.55 thick m4inthick at (Rect_(m4wdth/3,210)) m4PP
- CP: circle diam m4diamLNP*0.55 thick m4inthick at (Rect_(m4wdth/3,-30)) m4CP
+ L1: circle diam m4diamLNP thick m4thickin at (Rect_(m4wdth/4,150)) m4L1
+ N: circle diam m4diamLNP thick m4thickin at (Rect_(m4wdth/4, 30)) m4N
+ PE: circle diam m4diamLNP thick m4thickin at (0,-m4wdth/4) m4PE
+ PP: circle diam m4diamLNP*0.55 thick m4thickin at (Rect_(m4wdth/3,210)) m4PP
+ CP: circle diam m4diamLNP*0.55 thick m4thickin at (Rect_(m4wdth/3,-30)) m4CP
`$2' popdef(`m4CP',`m4PP',`m4PE',`m4N',`m4L1',`m4BG',
- `m4wdth',`m4diamLNP',`m4twdth',`m4thgt',`m4thick',`m4inthick') ]')
+ `m4wdth',`m4diamLNP',`m4twdth',`m4thgt',`m4thick',`m4thickin') ]')
`EV_J3068(keys,shade)
EV charging plug in a [] block
@@ -46,7 +46,7 @@ define(`EV_J1772',`[ pushkeys_(`$1', `wdth:20/pEVskale;
twdth=expr; # tab width
thgt=expr; # tab hght
thick=expr; # outer line thickness (pt)
- inthick=expr; # inner line thickness (pt)
+ thickin=expr; # inner line thickness (pt)
BG=attributes; # shaded gray etc
L1|L2|L3=attributes; # pin attributes ...
N=attributes;
@@ -55,7 +55,7 @@ define(`EV_J1772',`[ pushkeys_(`$1', `wdth:20/pEVskale;
CP=attributes;
arg2= R:G:B background fill color '
define(`EV_J3068',`[ pushkeys_(`$1',
- `wdth:25/pEVskale; diamLNP:m4wdth*0.25; thick:2; inthick:1.5;
+ `wdth:25/pEVskale; diamLNP:m4`'wdth*0.25; thick:2; thickin:1.5;
BG::N; L1::N; L2::N; L3::N; N::N; PE::N; PP::N; CP::N; ')
C: Here
NE: C+(Rect_(m4wdth/2,45)); NW: C+(Rect_(m4wdth/2,135))
@@ -68,14 +68,14 @@ define(`EV_J3068',`[ pushkeys_(`$1',
arc thick m4thick to Ac+(0,m4diamLNP/2) with .c at Ac m4BG
Top: line thick m4thick to (NW+NE-Ac, Here) m4BG
arc thick m4thick to NW with .c at Here+(0,-m4diamLNP/2) m4BG
- PE: circle diam m4diamLNP thick m4inthick at C m4PE
- PP: circle diam m4diamLNP*0.55 thick m4inthick at C+(Rect_(m4wdth/3,45)) m4PP
- CP: circle diam m4diamLNP*0.55 thick m4inthick at C+(Rect_(m4wdth/3,135)) m4CP
- L1: circle diam m4diamLNP thick m4inthick at C+(m4wdth*.3,0) m4L1
- L2: circle diam m4diamLNP thick m4inthick at C+(Rect_(m4wdth*.3,-60)) m4L2
- L3: circle diam m4diamLNP thick m4inthick at C+(Rect_(m4wdth*.3,-120)) m4L3
- N: circle diam m4diamLNP thick m4inthick at C-(m4wdth*.3,0) m4N
- `$3' popdef(`m4wdth',`m4diamLNP',`m4thick',`m4inthick',
+ PE: circle diam m4diamLNP thick m4thickin at C m4PE
+ PP: circle diam m4diamLNP*0.55 thick m4thickin at C+(Rect_(m4wdth/3,45)) m4PP
+ CP: circle diam m4diamLNP*0.55 thick m4thickin at C+(Rect_(m4wdth/3,135)) m4CP
+ L1: circle diam m4diamLNP thick m4thickin at C+(m4wdth*.3,0) m4L1
+ L2: circle diam m4diamLNP thick m4thickin at C+(Rect_(m4wdth*.3,-60)) m4L2
+ L3: circle diam m4diamLNP thick m4thickin at C+(Rect_(m4wdth*.3,-120)) m4L3
+ N: circle diam m4diamLNP thick m4thickin at C-(m4wdth*.3,0) m4N
+ `$3' popdef(`m4wdth',`m4diamLNP',`m4thick',`m4thickin',
`m4BG',`m4L1',`m4L2',`m4L3',`m4N',`m4PE',`m4PP',`m4CP') ]')
`EV_CCS1(J1772 keys,DC keys)
@@ -84,20 +84,20 @@ define(`EV_J3068',`[ pushkeys_(`$1',
diamPM=expr; # diam of DC+, DC- circles
sep=expr; # separation of Jack and DC
thick=expr; # outer line thickness (pt)
- inthick=expr; # inner line thickness (pt)
+ thickin=expr; # inner line thickness (pt)
BG=attributes; # shaded gray etc
DCplus=attributes;
DCminus=attributes; '
define(`EV_CCS1',`[
J: EV_J1772(`$1')
- pushkeys_(`$2',`wdth:J.wid:23.5/20; hght:J.wid*11/20; diamPM:m4hght*7/11;
- sep:J.wid*3/30; thick:J.Arc.thick; inthick:J.PE.thick;
+ pushkeys_(`$2',`wdth:J.wid:23.5/20; hght:J.wid*11/20; diamPM:m4`'hght*7/11;
+ sep:J.wid*3/30; thick:J.Arc.thick; thickin:J.PE.thick;
BG::N; DCplus::N; DCminus::N;')
DC: [ Box: box thick m4thick wid m4wdth ht m4hght rad m4hght/2 m4BG
- DCplus: circle thick m4inthick diam m4diamPM at Box.w+(m4hght/2,0) m4DCplus
- DCminus:circle thick m4inthick diam m4diamPM at Box.e-(m4hght/2,0) m4DCminus
+ DCplus: circle thick m4thickin diam m4diamPM at Box.w+(m4hght/2,0) m4DCplus
+ DCminus:circle thick m4thickin diam m4diamPM at Box.e-(m4hght/2,0) m4DCminus
] with .n at J.s+(0,-m4sep)
- popdef(`m4wdth',`m4hght',`m4diamPM',`m4sep',`m4thick',`m4inthick',`m4BG',
+ popdef(`m4wdth',`m4hght',`m4diamPM',`m4sep',`m4thick',`m4thickin',`m4BG',
`m4DCplus',`m4DCminus')
]')
@@ -107,22 +107,22 @@ define(`EV_CCS1',`[
diamPM=expr; # diam of DC+, DC- circles
sep=expr; # separation of Jack and DC
thick=expr; # outer line thickness (pt)
- inthick=expr; # inner line thickness (pt)
+ thickin=expr; # inner line thickness (pt)
BG=attributes; # shaded gray etc
DCplus=attributes;
DCminus=attributes;
arg2= R:G:B background fill color '
define(`EV_CCS2',`[
J: EV_J3068(`$1',`$2')
- pushkeys_(`$3',`wdth:J.wid:23.5/20; hght:J.wid*11/20; diamPM:m4hght*7/11;
- sep:J.wid*3/30; thick:J.Arc.thick; inthick:J.PE.thick;
+ pushkeys_(`$3',`wdth:J.wid:23.5/20; hght:J.wid*11/20; diamPM:m4`'hght*7/11;
+ sep:J.wid*3/30; thick:J.Arc.thick; thickin:J.PE.thick;
BG::N; DCplus::N; DCminus::N;')
DC: [ Box: box thick m4thick wid m4wdth ht m4hght rad m4hght/2 dnl
m4BG ifelse(`$2',,,`shaded rgbstring(patsubst(`$2',:,`,'))')
- DCplus: circle thick m4inthick diam m4diamPM at Box.w+(m4hght/2,0) m4DCplus
- DCminus:circle thick m4inthick diam m4diamPM at Box.e-(m4hght/2,0) m4DCminus
+ DCplus: circle thick m4thickin diam m4diamPM at Box.w+(m4hght/2,0) m4DCplus
+ DCminus:circle thick m4thickin diam m4diamPM at Box.e-(m4hght/2,0) m4DCminus
] with .n at J.s+(0,-m4sep)
- popdef(`m4wdth',`m4hght',`m4diamPM',`m4sep',`m4thick',`m4inthick',`m4BG',
+ popdef(`m4wdth',`m4hght',`m4diamPM',`m4sep',`m4thick',`m4thickin',`m4BG',
`m4DCplus',`m4DCminus')
]')
@@ -130,12 +130,12 @@ define(`EV_CCS2',`[
EV charging plug in a [] block
keys: wdth=expr; # plug width
thick=expr; # outer line thickness (pt)
- inthick=expr; # inner line thickness (pt)
+ thickin=expr; # inner line thickness (pt)
BG=attributes; # background shaded gray etc
DCplus=|DCminusNS=|FG=|NC=|SS1=|DCP=|PP=|
CL=|CH=|SS2=attributes # pin attributes ...'
define(`EV_CHAdeMO',`[ pushdef(`m4sk',33/140/pEVskale) pushkeys_(`$1',
- `wdth:140*m4sk; thick:m4wdth*9/140/(1bp__); inthick:m4thick*1.5/9;
+ `wdth:140*m4sk; thick:m4`'wdth*9/140/(1bp__); thickin:m4`'thick*1.5/9;
BG::N; DCplus::N; DCminus::N;N::N;S::N;
FG::N; NC::N; SS1::N; DCP::N; PP::N; CL::N; CH::N; SS2::N')
C: circle thick m4thick diam m4wdth-m4thick bp__ m4BG
@@ -144,18 +144,18 @@ define(`EV_CHAdeMO',`[ pushdef(`m4sk',33/140/pEVskale) pushkeys_(`$1',
line thick m4thick*0.6 from C+(Rect_(C.rad+m4thick bp__*3/4,138)) \
to C+(Rect_(C.rad+m4thick bp__*3/4,130)) then right m4thick bp__ m4BG
idiam = (m4wdth-m4thick bp__*2)*47/(27+47*2)
- N: circle diam idiam thick m4inthick with .n at C.n-(0,m4thick bp__/2) m4N
- S: circle diam idiam thick m4inthick with .s at C.s+(0,m4thick bp__/2) m4S
- E: circle diam idiam thick m4inthick at Cintersect(N,N.diam,S,S.diam) m4DCminus
- W: circle diam idiam thick m4inthick at Cintersect(S,S.diam,N,N.diam) m4DCplus
+ N: circle diam idiam thick m4thickin with .n at C.n-(0,m4thick bp__/2) m4N
+ S: circle diam idiam thick m4thickin with .s at C.s+(0,m4thick bp__/2) m4S
+ E: circle diam idiam thick m4thickin at Cintersect(N,N.diam,S,S.diam) m4DCminus
+ W: circle diam idiam thick m4thickin at Cintersect(S,S.diam,N,N.diam) m4DCplus
foreach_(`Z',
- `line thick m4inthick up Z.diam*0.6 right Z.diam*0.6 with .c at Z
- line thick m4inthick up Z.diam*0.6 left Z.diam*0.6 with .c at Z',N,S)
+ `line thick m4thickin up Z.diam*0.6 right Z.diam*0.6 with .c at Z
+ line thick m4thickin up Z.diam*0.6 left Z.diam*0.6 with .c at Z',N,S)
foreach_(`L',`L: circle diam idiam/4 thick linethick/2 \
at N+(Rect_(idiam/4,90*m4Lx)) m4xpand(m4`'L)',FG,NC,DCP,SS1)
foreach_(`L',`L: circle diam idiam/4 thick linethick/2 \
at S+(Rect_(idiam/4,90*m4Lx)) m4xpand(m4`'L)',PP,CL,SS2,CH)
- `$3' popdef(`m4sk',`m4wdth',`m4thick',`m4inthick',`m4BG',
+ `$3' popdef(`m4sk',`m4wdth',`m4thick',`m4thickin',`m4BG',
`m4DCplus',`m4DCminus',`m4N',`m4S',
`m4FG',`m4NC',`m4SS1',`m4DCP',`m4PP',`m4CL',`m4CH',`m4SS2') ]')
@@ -173,7 +173,7 @@ define(`EV_CHAdeMO',`[ pushdef(`m4sk',33/140/pEVskale) pushkeys_(`$1',
Gndinner=attributes;
PP=attributes;
CP=attributes; '
-define(`EV_NAC',`[ pushkeys_(`$1', `wdth:1.6; diamL:m4wdth*0.28; BG::N;
+define(`EV_NAC',`[ pushkeys_(`$1', `wdth:1.6; diamL:m4`'wdth*0.28; BG::N;
L1::N; L1inner::N; L2::N; L2inner::N; Gndinner::N; inner::N;
Gnd::N; PP::N; CP::N; ')
sN = 1/pEVskale*m4wdth/1.6 # drawing coord scale factor
diff --git a/graphics/circuit_macros/examples/dpv/GeometryDPV.m4 b/graphics/circuit_macros/examples/dpv/GeometryDPV.m4
index 18e0cb2fcd..eb87bd8f45 100644
--- a/graphics/circuit_macros/examples/dpv/GeometryDPV.m4
+++ b/graphics/circuit_macros/examples/dpv/GeometryDPV.m4
@@ -145,7 +145,7 @@ Fig4: [ ls = 2/3 # local scale
Y: LCintersect(HZ,CC4,C4.rad,R); "Y" at Y above
X: LCintersect(HZ,CC2,C2.rad); "X" at X above rjust
- Loopover_(`P',`dot(at P)',X,Y,Z)
+ foreach_(`P',`dot(at P)',X,Y,Z)
line dashed from X to Y chop -linewid/2
RightAngle(A,Z,Y)
diff --git a/graphics/circuit_macros/examples/dpv/Makefile b/graphics/circuit_macros/examples/dpv/Makefile
index 30cd004402..f9e04756c7 100644
--- a/graphics/circuit_macros/examples/dpv/Makefile
+++ b/graphics/circuit_macros/examples/dpv/Makefile
@@ -4,9 +4,9 @@ LIBDIR = $$HOME/lib
M4LIBS = svg.m4 DPVconfig.m4
M4LIBS = svg.m4
M4 = m4
-# PDFCONVERT = pdf2svg
+PDFCONVERT = pdf2svg
# The current dvisvgm outputs CRLF line endings
-PDFCONVERT = dvisvgm
+# PDFCONVERT = dvisvgm
# To process a single file, copy it to test.m4 and type "make tst"
# to produce tstDPV.html
@@ -17,6 +17,10 @@ DPIC = dpic
#DPIC = ../dpic/bison/dpic
#DPIC = ../dpic/bi*dev/dpic
+# Quiet mode for MiKTeX or texlive
+# QLATEX = latex --quiet
+QLATEX = latex -interaction=batchmode
+
# To test the Windows executable. Change these as needed for the operating
# system. NOTE: cscDPV.m4 and Connectors.m4 use awk and sed which
# do not work at present with the Windows version.
@@ -41,13 +45,15 @@ DPIC = dpic
echo "\begin{document}" >> F_$*.tex
echo "\input $*.tex" >> F_$*.tex
echo "\end{document}" >> F_$*.tex
- pdflatex --quiet F_$*
+ pdf$(QLATEX) F_$*
$(M4) pgf.m4 F_$*.dim $*.m4 > $*.pic
$(DPIC) -g $*.pic >> $*.tex
- pdflatex --quiet F_$*
+ pdf$(QLATEX) F_$*
if test "$(PDFCONVERT)" = "pdf2svg" ; then \
+ echo "Using pdf2svg" ; \
pdf2svg F_$*.pdf $*.xsvg && cat $*.xsvg | tr -d '\r' > $*.svg ; \
else \
+ echo "Using dvisvgm" ; \
dvisvgm --pdf F_$*.pdf && cat F_$**.svg | tr -d '\r' > $*.svg ; \
cp $*.svg $*.xsvg ; \
fi
@@ -72,14 +78,14 @@ CCTDPV = \
NLGDPV.svg NPDTDPV.svg NportDPV.svg OpampDPV.svg OptoisoDPV.svg \
PconnDPV.svg PlateDPV.svg PushPullDPV.svg QuantumDPV.svg \
RectifiersDPV.svg RelayDPV.svg ResistorsDPV.svg RotboxDPV.svg\
- SchottkyDPV.svg ShiftRDPV.svg SierpinskiDPV.svg \
- SixpoleDPV.svg SourcesDPV.svg SQUIDDPV.svg SwitchesDPV.svg \
+ SchottkyDPV.svg SevensegmentDPV.svg ShiftRDPV.svg SierpinskiDPV.svg \
+ SixpoleDPV.svg SourcesDPV.svg Spec555DPV.svg SwitchesDPV.svg \
TTLnandDPV.svg TgateDPV.svg ThreeDPV.svg \
TubediagsDPV.svg VariableDPV.svg WindingsDPV.svg XformDPV.svg \
- controlDPV.svg cscDPV.svg diamondDPV.svg ex00DPV.svg \
+ cbresistorDPV.svg controlDPV.svg cscDPV.svg diamondDPV.svg \
ex01DPV.svg ex02DPV.svg ex03DPV.svg ex04DPV.svg ex05DPV.svg ex06DPV.svg \
ex08DPV.svg ex09DPV.svg ex10DPV.svg ex11DPV.svg ex12DPV.svg \
- ex15DPV.svg ex16DPV.svg ex17DPV.svg ex18DPV.svg ex21DPV.svg \
+ ex15DPV.svg ex16DPV.svg ex18DPV.svg ex21DPV.svg \
expDPV.svg fetDPV.svg graysurfDPV.svg keyboardDPV.svg lcctDPV.svg \
pwrsupplyDPV.svg quickDPV.svg randomDPV.svg recycleDPV.svg relaycoilDPV.svg \
roseDPV.svg sfgDPV.svg shapesDPV.svg SmithchartDPV.svg paletteDPV.svg \
diff --git a/graphics/circuit_macros/examples/dpv/QuantumDPV.m4 b/graphics/circuit_macros/examples/dpv/QuantumDPV.m4
index 7d2de93cbd..49ed173ffd 100644
--- a/graphics/circuit_macros/examples/dpv/QuantumDPV.m4
+++ b/graphics/circuit_macros/examples/dpv/QuantumDPV.m4
@@ -17,6 +17,7 @@ define(`Meter',`[ Box: box wid boxwid*3/2 fill_(1)
arc cw from C+(-r,0) to C+(r,0) with .c at C
arrow from C+(-r/4,0) to C+(0.9*r,0.9*r) ]')
+[
X: Bus(,shaded rgbstring(0.5,0.5,1) "X")
A1: Bus(from X.start+(0,-boxht*3/2), shaded "red" "A")
A2: Bus(from 2 between X.start and A1.start, shaded "red" "A")
@@ -27,5 +28,27 @@ A2: Bus(from 2 between X.start and A1.start, shaded "red" "A")
Meter with .e at X.end
box wid boxwid*1.2 ht boxht*1.2 fill_(1) at A2.end-(4.5*boxwid,0) \
"svg_it(R)svg_sub(svg_psi)svg_sup(svg_pi/2,,,-1.2ex)"
+ ]
+#.PE
+#.PS
+# SQUIDDPV.m4
+[
+cct_init(svg_font(sans-serif,11bp__))
+
+down_
+S1: SQUID
+ "J1" at S1.J1 above rjust wid 15bp__
+ "J2" at S1.J2 above ljust
+
+S2: SQUID(3,dimen_*1.5,-120) at S1.e+(elen_,0)
+ "J1" at S2.J1 above rjust
+ "J2" at S2.J2 below ljust
+ "J3" at S2.J3 above ljust
+ arcrad = S2.C.rad*0.7
+ arc from S2.c+(Rect_(arcrad,-135)) to S2.c+(Rect_(arcrad,-45)) \
+ with .c at S2.C ->
+ ] with .w at last [].e+(boxht,0)
+
+ command "</g>" # end font
.PE
diff --git a/graphics/circuit_macros/examples/dpv/ResistorsDPV.m4 b/graphics/circuit_macros/examples/dpv/ResistorsDPV.m4
index e9f54c3399..793128e2ea 100644
--- a/graphics/circuit_macros/examples/dpv/ResistorsDPV.m4
+++ b/graphics/circuit_macros/examples/dpv/ResistorsDPV.m4
@@ -2,46 +2,37 @@
# `ResistorsDPV.m4'
cct_init(svg_font(sans-serif,11pt__))
textwid = 1.5
+
movewid = 2 pt__
hm = 2.1
vm = 0.28
-
-hm = 2.05
-vm = 0.28
{
{resistor ; move ; svgLink(NportDPV.svg,"`resistor'" ljust)}
move right_ hm
- {resistor(,,Q) ; move ; "`resistor(,,Q) '" ljust}
+ {resistor(,5,Q) ; move ;"`...(,5,Q) '" ljust}
move right_ hm
- {resistor(,,V) ; move ; "`resistor(,,V) '" ljust}
+ {resistor(,,V) ; move ;"`...(,,V)'" ljust}
}
move down vm; right_
-{
- {resistor(,,ES) ; move ; "`resistor(,,ES) '" ljust}
+{ {resistor(,,ES) ; move ;"`...(,,ES) '" ljust}
move right_ hm
- {resistor(,,H) ; move ; "`resistor(,,H) '" ljust}
+ {resistor(,4,H) ; move ;"`...(,4,H) '" ljust}
move right_ hm
- {resistor(,,AC) ; move ; "`resistor(,,AC) '" ljust}
+ {resistor(,,AC) ; move ;"`...(,,AC)'" ljust}
}
move down vm; right_
-{
- {resistor(,5,B) ; move ; "`resistor(,5,B) '" ljust}
+{ {resistor(,,B) ; move ;"`...(,,B)'" ljust}
move right_ hm
- {resistor(,,E) ; move
- "`resistor(,,E)'" ljust " svg_equiv `ebox'" ljust}
+ {resistor(,,F) ; move ;"`...(,,F) '" ljust}
move right_ hm
- {ebox(,0.5,0.3) ; move ;"`ebox(,0.5,0.3) '" ljust}
+ {resistor(,,E) ; move ;"`...(,,E) svg_equiv ebox'" ljust}
}
- move down vm; right_
-{
- {ebox(,,,0.6) ; move ; "`ebox(,,,0.6) '" ljust}
+ move down vm*1.1; right_
+{ {ebox(,,,0.9) ; move ;"`ebox(,,,0.9)'" ljust}
move right_ hm
- {ebox(,,,,shaded "yellow") ; move ;"`ebox(,,,,shaded \"yellow\") '" ljust}
-}
- move down vm; right_
-{
{ebox(,wdth=0.2;box=dashed shaded "green";text="X") ; move
- "`ebox(,wdth=0.2;box=dashed shaded \"green\";text=\"X\")'" ljust}
+ "`ebox(,wdth=0.2;box=dashed shaded \"green\";'" ljust \
+ "`text=\"X\")'" ljust}
}
command "</g>" # end font
diff --git a/graphics/circuit_macros/examples/dpv/SQUIDDPV.m4 b/graphics/circuit_macros/examples/dpv/SQUIDDPV.m4
deleted file mode 100644
index a6beabbfe0..0000000000
--- a/graphics/circuit_macros/examples/dpv/SQUIDDPV.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-.PS
-# SQUIDDPV.m4
-cct_init(svg_font(sans-serif,11bp__))
-
-down_
-S1: SQUID
- "J1" at S1.J1 above rjust wid 15bp__
- "J2" at S1.J2 above ljust
-
-S2: SQUID(3,dimen_*1.5,-120) at S1.e+(elen_,0)
- "J1" at S2.J1 above rjust
- "J2" at S2.J2 below ljust
- "J3" at S2.J3 above ljust
- arcrad = S2.C.rad*0.7
- arc from S2.c+(Rect_(arcrad,-135)) to S2.c+(Rect_(arcrad,-45)) \
- with .c at S2.C ->
-
- command "</g>" # end font
-.PE
diff --git a/graphics/circuit_macros/examples/dpv/SevensegmentDPV.m4 b/graphics/circuit_macros/examples/dpv/SevensegmentDPV.m4
new file mode 100644
index 0000000000..af45f48edb
--- /dev/null
+++ b/graphics/circuit_macros/examples/dpv/SevensegmentDPV.m4
@@ -0,0 +1,82 @@
+.PS
+# Sevensegment.m4
+# https://tex.stackexchange.com/questions/644009/seven-segments-anchors-how-to-use-them
+gen_init
+divert(-1)
+ `sevensegment(keys)
+ Seven-segment display in a [] block. keys:
+ hght=expr; (default boxht)
+ wdth=expr; (default hght*3.3/5.85)
+ slant=fraction; top is skewed slant fraction of ht
+ segwid=expr; segment width
+ gap=expr; gap between segments
+ bevel=fraction; corner truncation
+ on=attributes; "on" segment attributes
+ off=attributes; "off" segment attributes
+ code=[0-8][.]; displayed number .=decimal point
+ or
+ code=Xddddddd[.] where each d=0 or 1 to define
+ Segment1 to Segment7 off or on
+ Segments are labeled Seg1 Seg2 ... Seg7
+ and the decimal point is Seg8'
+define(`sevensegment', # hght, wdth, slant, segwid, gap, bevel, on, off, code
+ `[ pushkeys_(`$1',`hght:boxht; wdth:m4`'hght*3.3/5.85; slant:0;
+ segwid:0.75/3.2*m4`'wdth; gap:0.12/3.2*m4`'wdth; bevel:0.4;
+ on:outlined "red" shaded "red":N; off:outlined "lightgray":N;
+ code:00000010:N;')
+ gapch = m4gap/2*sqrt(2)
+ ifinstr(m4code,.,`define(`m4tmp',substr(m4code,0,decr(len(m4code))))dnl
+ pushdef(`dodp',1)poppushdef(`m4code',m4tmp)')dnl
+ ifinstr(m4code,X,`pushdef(`opcode',substr(m4code,1))',
+ `foreach_(`m4cd',`pushdef(`Cd'decr(m4Lx),m4cd)',1111110,0110000,1101101,
+ 1111001,0110011,1011011,1011111,1110000,1111111,1111011)dnl
+ pushdef(`opcode',Cd`'m4code)')dnl
+ for_(1,7,1,`pushdef(`attrib'm4x,
+ ifelse(substr(opcode,decr(m4x),1),1,`m4on',`m4off'))')dnl
+ Seg1: m4segment(R,m4bevel,m4bevel,attrib1) \
+ with .S at m4slu(0,m4hght-m4segwid)
+ inner = distance(Seg1.SW,Seg1.SE) + gapch*2
+ Seg2: m4segment(D,0.5,m4bevel,attrib2) with .S at \
+ m4slu(m4wdth/2-m4segwid,m4hght-m4segwid-inner/2)
+ Seg3: m4segment(D,m4bevel,0.5,attrib3) with .S at \
+ m4slu(m4wdth/2-m4segwid,m4segwid+inner/2)
+ Seg4: m4segment(L,m4bevel,m4bevel,attrib4) with .S at m4slu(0,m4segwid)
+ Seg5: m4segment(U,0.5,m4bevel,attrib5) with .S at \
+ m4slu(-m4wdth/2+m4segwid,m4segwid+inner/2)
+ Seg6: m4segment(U,m4bevel,0.5,attrib6) with .S at \
+ m4slu(-m4wdth/2+m4segwid,m4hght-m4segwid-inner/2)
+ Seg7: m4segment(R,0.5,0.5,attrib7) with .c at m4slu(0,m4hght/2)
+ ifelse(dodp,1,`Seg8: circle diam m4segwid m4on \
+ at m4slu(Seg3.e.x+m4segwid/2+m4gap,Seg4.s.y+m4segwid/2)') popdef(`dodp')
+ popdef(`m4hght',`m4wdth',`m4slant',`m4segwid',`m4gap',`m4bevel',
+ `m4on',`m4off',`m4code',`opcode')dnl
+ for_(1,7,1,`popdef(`attrib'm4x)') for_(0,9,1,`popdef(`Cd'm4x)')dnl
+ ]')
+define(`m4segment',`[ setdir_(`$1')
+ m4seven_pos(SE,E,NE,,`$2'); m4seven_pos(SW,W,NW,-,`$3')
+ resetdir_
+ S: 1/2 between SW and SE
+ Line: line from m4slu(S.x,S.y) to m4slu(SE.x,SE.y) then to m4slu(E.x,E.y) \
+ then to m4slu(NE.x,NE.y) then to m4slu(NW.x,NW.y) then to m4slu(W.x,W.y) \
+ then to m4slu(SW.x,SW.y) then to m4slu(S.x,S.y) `$4' ] ')
+define(`m4seven_pos',
+ `AA: (`$4'(m4wdth/2-m4segwid-gapch),0); `$1': rot_(AA.x,AA.y,rp_ang)
+ BA: AA + (`$4'1,1)*m4segwid*(1-`$5'); `$2': rot_(BA.x,BA.y,rp_ang)
+ CA: BA - (`$4'1,-1)*m4segwid*`$5'; `$3': rot_(CA.x,CA.y,rp_ang) ')
+define(`m4slu',`(`$1'+(`$2')*m4slant,`$2')')
+
+divert(0)dnl
+
+
+[
+ S: sevensegment(code=4.;hght=1)
+ { for_(1,8,1,`"m4x" at S.Seg`'m4x') }
+ move right 0.25
+ P: sevensegment(code=X1100011;off=invis;hght=1)
+ ]
+[
+ for_(0,9,1,`sevensegment(code=m4x`'ifelse(m4x,1,.);slant=1/4;off=invis)
+ move movewid/4')
+ ] with .nw at last [].sw+(0,-boxht/3)
+
+.PE
diff --git a/graphics/circuit_macros/examples/dpv/SourcesDPV.m4 b/graphics/circuit_macros/examples/dpv/SourcesDPV.m4
index ac6769e6ef..94326ce8d6 100644
--- a/graphics/circuit_macros/examples/dpv/SourcesDPV.m4
+++ b/graphics/circuit_macros/examples/dpv/SourcesDPV.m4
@@ -8,51 +8,57 @@ define(`NL',`; move down $1; right_')
{
{source ; move ; "`source'" ljust} NL
{source(,I) ; move ; "`source(,I)'" ljust} NL
- {source(,i) ; move ; "`source(,i)'" ljust} NL
- {source(,ti) ; move ; "`source(,ti)'" ljust} NL
- {source(,i) ; move ; "`source(,ii)'" ljust} NL
+ {C:source(,i) ; move ; "`source(,i)'" ljust} NL
+ {D:source(,ti) ; move ; "`source(,ti)'" ljust} NL
+ {source(,ii) ; move ; "`source(,ii)'" ljust} NL
{source(,V) ; move ; "`source(,V)'" ljust} NL
{source(,v) ; move ; "`source(,v)'" ljust} NL
{source(,tv) ; move ; "`source(,tv)'" ljust} NL
+ {source(,SC) ; move ; "`source(,SC)'" ljust} NL
{source(,AC); move ; "`source(,AC)'" ljust} NL
{source(,X) ; move ; "`source(,X)'" ljust} NL
- {source(,F) ; move ; "`source(,F)'" ljust} NL
{source(,G) ; move ; "`source(,G)'" ljust} NL
- {source(,Q) ; move ; "`source(,Q)'" ljust}
+ {source(,Q) ; move ; "`source(,Q)'" ljust} NL #(0.3)
+ {source(,F) ; move ; "`source(,F)'" ljust} NL
+ {geiger(,,,,fill_(0.9)); move;
+ "`geiger(,,,,'" ljust "`fill_(0.9))'" ljust} NL
}
move right_ 2.0
+
{
-# {source(,,0.4) ; move ; "`source(,,0.4)'" ljust} NL(0.35)
{source(,,0.4,,shaded "yellow") ; move ;
- "`source(,,0.4,," ljust "shaded \"yellow\")'" ljust} NL(0.35)
-# {source(,P) ; move ; "`source(,P)'" ljust} NL
- {source(,P,,,fill_(0.9)) ; move ;
- "`source(,P,,," ljust "fill_(0.9))'" ljust} NL
+ "`source(,,0.4,,'" ljust "`shaded \"yellow\")'" ljust} NL(0.35)
+ {source(,P) ; move ; "`source(,P)'" ljust} NL
{source(,U) ; move ; "`source(,U)'" ljust} NL
{source(,H) ; move ; "`source(,H)'" ljust} NL
{source(,R) ; move ; "`source(,R)'" ljust} NL
{source(,S) ; move ; "`source(,S)'" ljust} NL
+ {source(,SCr) ; move ; "`source(,SCr)'" ljust} NL
{source(,T) ; move ; "`source(,T)'" ljust} NL
{source(,L) ; move ; "`source(,L)'" ljust} NL
- {source(,B) ; move ; "`source(,B)'" ljust} NL
+ {source(,B) ; move ; "`source(,B)'" ljust} NL(moveht*0.8)
{nullator ; move ; "`nullator'" ljust} NL(moveht*0.8)
{norator ; move ; "`norator'" ljust} NL(moveht*0.9)
{ttmotor(,G) ; move ; "`ttmotor(,G)'" ljust} NL(moveht*1.1)
- {proximity ; move ; "`proximity" ljust "= consource(,P)'" ljust}
+ {battery ; move ; "`battery'" ljust} NL(0.3)
+ {battery(,3,R) ; move ; "`battery(,3,R)'" ljust}
+
}
move right_ 2.0
{source(,N) ; move ; "`source(,N)'" ljust} NL
- {source(,"svg_micro(A)"); move; "`source(,\"svg_micro(A)\")'" \
- wid 1.7 at Here ljust}NL(0.31)
- {consource ; move ; "`consource'" ljust } NL(0.32)
+ {source(,NA) ; move ; "`source(,NA)'" ljust} NL
+ {source(,NB) ; move ; "`source(,NB)'" ljust} NL
+ {source(,"mA");move; "`source(,\"mA\")'" ljust} NL(0.31)
+ {consource ; move ; "`consource'" ljust} NL(0.32)
{consource(,I) ; move ; "`consource(,I)'" ljust} NL(0.32)
{consource(,i) ; move ; "`consource(,i)'" ljust} NL(0.32)
{consource(,ti) ; move ; "`consource(,ti)'" ljust} NL(0.32)
+ {source(,SE) ; move ; "`source(,SE)'" ljust} NL
{consource(,V) ; move ; "`consource(,V)'" ljust} NL(0.32)
{consource(,v) ; move ; "`consource(,v)'" ljust} NL(0.3)
{consource(,tv) ; move ; "`consource(,tv)'" ljust} NL(0.3)
- {battery ; move ; "`battery'" ljust} NL(0.3)
- {battery(,3,R) ; move ; "`battery(,3,R)'" ljust} NL(0.35)
+ {proximity ; move ;
+ "`proximity'" ljust "` = consource(,P)'" wid 80bp__ ljust} NL(0.35)
command "</g>" # end font
.PE
diff --git a/graphics/circuit_macros/examples/dpv/Spec555DPV.m4 b/graphics/circuit_macros/examples/dpv/Spec555DPV.m4
new file mode 100644
index 0000000000..7a49b002b3
--- /dev/null
+++ b/graphics/circuit_macros/examples/dpv/Spec555DPV.m4
@@ -0,0 +1,57 @@
+.PS
+# Spec555.m4
+# https://tex.stackexchange.com/questions/64801/display-ics-with-circuitikz?rq=1
+log_init
+
+define(`spec555',`[ Chip: box wid 8*lg_pinsep ht 10*lg_pinsep fill_(0.9)
+ svg_font(sans-serif,8bp__)
+ P1: 3/4<Chip.sw,Chip.se>; {"1" below rjust at P1}; "GND" above at P1
+ P5: Chip.s; {"5" below rjust at P5}; "CTRL" above at P5
+ P2: 1/8<Chip.sw,Chip.nw>; {"2" above rjust at P2}; "TRG" ljust at P2
+ P6: 3/8<Chip.sw,Chip.nw>; {"6" above rjust at P6}; "THR" ljust at P6
+ P7: 7/8<Chip.sw,Chip.nw>; {"7" above rjust at P7}; "DIS" ljust at P7
+ P3: Chip.e; {"3" above ljust at P3}; "OUT" rjust at P3
+ P4: 3/4<Chip.nw,Chip.ne>; {"4" above rjust at P4}; "svg_emsp`'RESET" below \
+ at P4
+ P8: Chip.n; {"8" above rjust at P8}; "Vcc" below at P8
+ "NE-555" at Chip.c "TIMER"
+ command "</g>"
+ line left dimen_ from P7; X:dot
+ { R1:resistor(up_ P7.y-P6.y); rlabel(,68 k`'svg_ohm); dot }
+ R2:resistor(down_ P7.y-P6.y); llabel(,68 k`'svg_ohm); dot; {line to P6}
+ line to (Here,P2); SW: dot; {line to P2}
+ line from P8 to (P8,R1.end); dot ]')
+
+ svg_font(sans-serif,10bp__)
+ T1: spec555; "U1" at T1.Chip.nw above ljust
+ T2: spec555 with .Chip.w at T1.Chip.e+(2.5*dimen_,0)
+ "U2" at T2.Chip.nw above ljust
+ {line left_ dimen_/2 from (T1.X,T1.P7); diode(down_ T1.P7.y-T1.P6.y)
+ {"D1" wid 15bp__ rjust at last [].w "1N4148" rjust wid 36bp__}
+ line to (T1.X,Here); dot}
+ capacitor(down_ elen_*1.2 from T1.SW,E+); llabel(,10 uF); dot
+ dot(at Here-(dimen_/2,0),,1); G: dot(,,1); "GND" rjust at G.w
+ capacitor(from T1.P5 to (T1.P5,G),E+); rlabel(,0.01 nF); dot
+ line from T1.P1 to (T1.P1,G); dot
+ Vcc: dot(at (G,T1.R1.end),,1); "Vcc" wid 0.3 rjust at Vcc.w
+ dot(at (T1.P4,Vcc)); line to T1.P4
+ line right_ dimen_/2 from T1.P3;
+ R3: resistor(down_ to (Here,T2.s-(0,dimen_/4))); llabel(,10 k`'svg_ohm)
+ line to (T2.P5,Here) then to T2.P5
+ dot(at (T2.X,G)); ground
+ reversed(`capacitor',up_ to (Here,T2.P5),E+); rlabel(,100 nF)
+ line to (Here,T2.P2)
+ line from T2.P1 to (T2.P1,G); dot
+ line from T2.P4 to (T2.P4,Vcc) then to Vcc chop 0 chop dotrad_
+ dot(at (T2.X,T2.R1.end)+(0,dimen_/2),,1); {line to T2.R1.end chop dotrad_}
+ "+5 V to +15V" at last [].n above
+ capacitor(right_ dimen_ from T2.P3,C); llabel(," 100 uF")
+ Pot1: potentiometer(down_ (Here.y-G.y)/2) with .Start at Here
+ "Rx" wid 0.2 at Pot1.T1 ljust
+ Sp: speaker(R,,,fill_(0.9)) with .In5 at Pot1.End
+ "1" above rjust at Sp.In5; "2" below rjust at Sp.In7
+ "E1" at Sp.In2 rjust "Speaker" rjust
+ line from Sp.In7 to (Sp.In7,G) then to G chop 0 chop dotrad_
+ command "</g>"
+
+.PE
diff --git a/graphics/circuit_macros/examples/dpv/cbresistorDPV.m4 b/graphics/circuit_macros/examples/dpv/cbresistorDPV.m4
new file mode 100644
index 0000000000..c03122377c
--- /dev/null
+++ b/graphics/circuit_macros/examples/dpv/cbresistorDPV.m4
@@ -0,0 +1,82 @@
+.PS
+# cbresistor.m4
+# https://tex.stackexchange.com/questions/709339/create-command-with-decoration-in-tikz
+# https://www.google.com/search?client=firefox-b-d&q=resistor+color+code
+cct_init
+divert(-1)
+
+ `cbresistor(linespec, keys)
+ keys:
+ lgth=expr; wdth=expr;
+ body=body attributes, e.g. shaded "green"
+ type=A|B; pinched body shape
+ colors=color:color:...;
+ Up to 6 colors, a color may be nul '
+define(`cbresistor',`eleminit_(`$1')
+ pushkeys_(`$2',`lgth:dimen_/2; wdth:dimen_/5; body::N; colors::N; type::N')dnl
+{line to rvec_(max(0,rp_len/2-m4lgth/2),0) thick linethick*3/2; M4cbW: Here
+ ifelse(m4type,B,
+ `[L:rotbox(m4lgth*3/23, m4wdth, shaded "darkgray" m4body,r=m4wdth/20)
+ C:rotbox(m4lgth*17/23, m4wdth*9/10, shaded "darkgray" m4body) \
+ with .W at L.E
+ R:rotbox(m4lgth*3/23, m4wdth, shaded "darkgray" m4body,r=m4wdth/20) \
+ with .W at C.E] with .L.W at Here; move to last [].R.E',
+ `rotbox(m4lgth, m4wdth, shaded "darkgray" m4body) with .W at Here')
+ ifelse(m4colors,,,`define(`m4bw',(m4lgth/23))dnl
+ definergbcolor(silver,0.75,0.75,0.75)
+ definergbcolor(gold,1,215/255,0)
+ stacksplit_(`cbrstack',m4colors,:)stackreverse_(`cbrstack')dnl
+ stackargs_(`m4pos',22,17,12,7,5,2)dnl
+ stackdo_(`cbrstack',`ifelse(cbrstack,nul,,
+ `{ move to M4cbW+vec_(m4pos*m4bw-m4bw/2,0)
+ define(`m4ctr',ifelse(m4type,B,eval((m4pos>3)*(m4pos<20)),0))dnl
+ line m4colorfix(outlined,cbrstack) thick m4bw*1.8/(1bp__) \
+ from rvec_(0,-ifelse(m4ctr,1,0.9*)m4wdth/2) \
+ to rvec_(0, ifelse(m4ctr,1,0.9*)m4wdth/2)
+ ifelse(ifelse(cbrstack,silver,1,cbrstack,gold,1),1,
+ `line outlined rgbstring(0.8,0.8,0.8) thick last line.thick \
+ from 0.2 along_(last line) to 0.4 along_(last line)
+ line outlined "white" thick last line.thick \
+ from 0.25 along_(2nd last line) to 0.3 along_(2nd last line)')
+ }')
+ popdef(`m4pos')') stackdo_(`m4pos')')
+ line to rvec_(max(0,rp_len/2-m4lgth/2),0) thick linethick*3/2}
+ popdef(`m4lgth',`m4wdth',`m4body',`m4colors',`m4type')dnl
+ line to rvec_(rp_len,0) invis ')
+
+divert(0)dnl
+
+linewid = 3/2*linewid
+ifsvg(definergbcolor(Dandelion,0.95,0.65,0.2))
+ifsvg(definergbcolor(Peach,0.76,0.5,0.1))
+
+define(`dpr',
+ `{ cbresistor(,type=B;
+ body=m4colorfix(shaded,Dandelion) m4colorfix(outlined,Peach);
+ colors=`$2') }
+ {iflatex(`sprintf("\SI{%g}{\ohm}",`$1')')ifsvg("``$1'svg_Omega'") \
+ at last line.end+(10bp__,-5bp__) rjust}
+ move right_ moveht*5/6; down_ ')
+
+ define(`elen_',(3/2*linewid))
+ define(`dimen_',(5/4*linewid))
+[]
+[ down_
+ foreach_(`pair',`dpr(patsubst(pair,-,`,'):nul:black:silver)',
+ 10-brown:black,
+ 12-brown:red,
+ 15-brown:green,
+ 18-brown:gray,
+ 22-red:red,
+ 27-red:Violet,
+ 33-orange:orange,
+ 39-orange:white,
+ 47-yellow:Violet,
+ 56-green:blue,
+ 68-blue:gray,
+ 82-gray:red)
+ dpr(100,brown:black:nul:brown:gold)
+ {"iflatex(\SI{5}{\percent},5 %)" at last line.end+(10bp__,-15bp__) rjust}
+ ] with .nw at last [].ne+(30bp__,0)
+
+.PE
diff --git a/graphics/circuit_macros/examples/dpv/ex00DPV.m4 b/graphics/circuit_macros/examples/dpv/ex00DPV.m4
deleted file mode 100644
index 97c5268725..0000000000
--- a/graphics/circuit_macros/examples/dpv/ex00DPV.m4
+++ /dev/null
@@ -1,94 +0,0 @@
-.PS
-# ex00.m4
-gen_init(svg_font(sans-serif,11bp__))
-
-[
-thicklines_
-ewid = 2
-eht = 0.5
-E: ellipse wid ewid ht eht
-
- [ narrows = 5
- de = ewid/narrows
- for i=0 to narrows do {
- arrow down from i*de,0 }
- ] with .s at E.n+(0,0.25)
-
- "svg_bf(B)svg_it((t))" at last [].c
-
-thinlines_
- arrow from E.c to E.ne
- box invis fill_(1) ht 0.12 wid 0.12 with .c at last arrow.c "svg_it(r)"
-
- command "</g>" # end font
-]
-[
-# ex07.m4
-#gen_init
-
-Barrel: box invis ht 0.4 wid 1.5
- up
-Face: arc rad 2.6 from Barrel.e+(2.4,-1.7/2) to Barrel.e+(2.4,1.7/2)
-
- eps = 0.03
- arc ccw rad 2.6 from Face.start-(eps,0) to Face.end-(eps,0) \
- with .c at Face.c-(eps,0)
- line from Barrel.nw to Barrel.ne then to Face.end
- line from Barrel.sw to Barrel.se then to Face.start
- arc cw from Barrel.sw to Barrel.nw rad Barrel.ht*1.2
-
-Cathode: Barrel.w+(0.3,0)
-Term: Barrel.w+(-0.25,0)
- dcath = 0.13
- dan = 0.12
-
- line from Cathode up dcath/2 left dcath/2 then to Term.x,Cathode.y+dcath/2
- dot
- line from Cathode down dcath/2 left dcath/2 then to Term.x,Cathode.y-dcath/2
- dot
-
- hole = 0.06
-Hole: line invis up hole from Cathode+(0.5,-hole/2)
- line from Hole.end up dan-hole/2 then to Term.x,Cathode.y+dan; dot
- line from Hole.start down dan-hole/2 then to Term.x,Cathode.y-dan; dot
-
- platewid = 0.25
- platesep = 0.15
-Plates: box invis wid platewid ht platesep at Barrel.e+(-platewid/2,0)
- line right platewid from Plates.nw
- line right platewid from Plates.sw
- line up 0.3 from Plates.n
- line down 0.3 from Plates.s
-
-linethick_(1.4)
-
- move to Cathode+(0.03,0)
-Spot: 0.9<Face.start,Face.end>
- arcto(Plates.c,Spot,(Plates.c.x-Cathode.x)*0.90,outlined "lightgrey" thick 2)
- line to Spot chop 0 chop -0.02 outlined "lightgrey" thick 2
-
-thinlines_
-
- arrow <- from Cathode+(0.2,0.06) up 0.5 left 0.3
- "electron" above "gun" above
-
- arrow <- from Plates.nw+(0,0.06) up 0.5 left 0.3
- "deflection" above "plates" above
-
- arrow <- from 0.5<Plates.e,Spot>+(0,0.06) up 0.5 left 0.3
- "electron beam" at Here+(-0.3,0) above
-
- spline <- from 1.015<Plates.e,Spot> right 0.1 up 0.1 then up 0.1 \
- then up 0.1 left 0.1
- "spot of light" rjust
-
- "vacuum" at 0.5<Face.start,Face.end>+(-0.4,0) rjust
-
- arrow <- from Face.start+(0.1,0.5) left 0.6*1.4 down 0.3*1.4
- "phosphor coating" rjust
-
- arrow <- from 0.2<Barrel.se,Face.start> left 0.6 down 0.3
- "glass enclosure (tube)" rjust
-
-] with .sw at last [].se+(0.5,0)
-.PE
diff --git a/graphics/circuit_macros/examples/dpv/examplesDPV.htmx b/graphics/circuit_macros/examples/dpv/examplesDPV.htmx
index 52f7b939b8..3406d8ec8a 100644
--- a/graphics/circuit_macros/examples/dpv/examplesDPV.htmx
+++ b/graphics/circuit_macros/examples/dpv/examplesDPV.htmx
@@ -71,18 +71,13 @@ ifinstr(`$3',y,,`<hr>')')
<hr>
<p>
- This file shows diagrams in .svg format produced without the use of
- LaTeX or equivalent.
-<!--
- <A HREF="examples.html">png</A>
- versions are also available.
- The PDF equivalent can be found in examples.pdf of the distribution.
+ This file shows diagrams in .svg format produced
+ without the use of LaTeX or equivalent.
+ The diagrams have been selected and adapted from the Circuit_macros
+ examples in order to test the svg output of dpic.
</p>
-
<p>
--->
-The diagrams have been adapted from the Circuit_macros
-examples in order to test the svg output of dpic. Generating svg line
+Generating svg line
art is straightforward but formatting text is not because TeX, LaTeX,
and related word processors do not produce svg directly. Either
less-sophisticated text formatting must be employed for svg or an
@@ -136,7 +131,8 @@ There are other issues:
Change font face and dpic m4tt`'textht</g>, m4tt`'dptextratio</g>,
and m4tt`'textoffset</g> parameters.
If arg4 is blank, the font is changed and
- requires m4tt`'command "&lt;/g&gt;"</g> to cancel the font change.
+ requires m4tt`'command "&lt;/g&gt;"</g> at the end
+ to cancel the font change.
<br>
Note:
Nominal height = text height in drawing units; actual height =
@@ -305,7 +301,8 @@ SVG produced by dpic changecom(,)&`#'8194;changecom(`#')
<br><br>
(<a href="quick.txt" TYPE="text/plain" TARGET="_blank"
alt="quick">quick.m4</a>):
-SVG produced from quick.pdf by dvisvgm changecom(,)&`#'8194;changecom(`#')
+SVG produced from quick.pdf by dvisvgm or pdf2svg
+ changecom(,)&`#'8194;changecom(`#')
</p>
</td>
</table>
@@ -390,6 +387,9 @@ cfig(ConnDPV,
cfig(PconnDPV,
The m4tt`'pconnex</g> macro)
+cfig(cbresistorDPV,
+ Color-coded through-hole resistors)
+
cfig(EVplugsDPV,
Electric vehicle charging plug patterns make extensive
use of key=value pairs to set options)
@@ -430,6 +430,9 @@ cfig(WindingsDPV,
The macro
m4tt`'winding(L|R`,'diam`,'pitch`,'turns`,'core wid`,'core color)</g>)
+cfig(Spec555DPV,
+ A 555 timer example)
+
cfig(ex01DPV,
Two simple labeled circuits)
@@ -448,9 +451,6 @@ cfig(PushPullDPV,
cfig(QuantumDPV,
A quantum circuit)
-cfig(SQUIDDPV,
- Superconducting quantum interface device (drawing direction down))
-
cfig(SixpoleDPV,
A six-pole filter)
@@ -469,10 +469,6 @@ cfig(ThreeDPV,
cfig(MCDPV,
A three-phase switched AC-AC converter and a DC-DC converter)
-cfig(ex17DPV,
- A repetitive network created by Pic looping and
- a skewed circuit used to test the macro m4tt`'parallel_</g>)
-
cfig(ex12DPV,
A CMOS NAND gate`,' a test circuit`,' and an XMOSFET example)
@@ -586,9 +582,6 @@ cfig(ABlogixDPV,
cfig(XORDPV,
Realizations of the XOR function using m4tt`'Autologix</g>)
-cfig(ex00DPV,
- Line diagrams)
-
cfig(EEPDPV,
Part of a single-line diagram of a power distribution system
using draft elements)
@@ -603,6 +596,10 @@ cfig(GrayCodeDPV,
cfig(controlDPV,
Control-system block diagrams)
+cfig(SevensegmentDPV,
+ A customizable seven-segment display showing the numbered segments with
+ a custom shape and the numerals from 0 to 9)
+
cfig(ByteDPV,
Elementary splines)
@@ -690,7 +687,7 @@ cfig(keyboardDPV,
More objects drawn in relief)
cfig(DiniDPV,
- Dini surface and an icosahedron)
+ Dini surface`,' an icosahedron`,' and a sphere with inscribed cylinder)
cfig(SierpinskiDPV,
The Sierpinski triangle and a Cayley graph:
diff --git a/graphics/circuit_macros/examples/dpv/examplesDPVs.htmx b/graphics/circuit_macros/examples/dpv/examplesDPVs.htmx
index a52445d744..96a572b462 100644
--- a/graphics/circuit_macros/examples/dpv/examplesDPVs.htmx
+++ b/graphics/circuit_macros/examples/dpv/examplesDPVs.htmx
@@ -1,14 +1,3 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<HTML>
-<HEAD>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<!--meta http-equiv="Content-Script-Type" content="text/javascript"-->
-<TITLE>SVG Examples: Circuit_macros Version XXX</TITLE>
-<meta name="keywords" content="HTML"
-content='Circuit elements, basic circuits, logic circuits and other diagrams,
-electric circuits, resistor, capacitor, inductor, diode, sources, amplifier,
-integrator, fuse, switch, antenna, opamp, transformer, relay, contact, jack,
plug, FET, UJT, thyristor, bipolar transistor, nport, windings, timer,
optical isolator, rectifier, bistable, oscillator, CMOS, MOSFET, power supply,
NAND gate, controlled source, synchronous machine, digital circuit, signal-flow
@@ -132,7 +121,8 @@ There are other issues:
Change font face and dpic m4tt`'textht</g>, m4tt`'dptextratio</g>,
and m4tt`'textoffset</g> parameters.
If arg4 is blank, the font is changed and
- requires m4tt`'command "&lt;/g&gt;"</g> to cancel the font change.
+ requires m4tt`'command "&lt;/g&gt;"</g> at the end
+ to cancel the font change.
<br>
Note:
Nominal height = text height in drawing units; actual height =
@@ -384,6 +374,9 @@ cfig(ConnDPV,
cfig(PconnDPV,
The m4tt`'pconnex</g> macro)
+cfig(cbresistorDPV,
+ Color-coded through-hole resistors)
+
cfig(EVplugsDPV,
Electric vehicle charging plug patterns make extensive
use of key=value pairs to set options)
@@ -448,9 +441,6 @@ cfig(PushPullDPV,
cfig(QuantumDPV,
A quantum circuit)
-cfig(SQUIDDPV,
- Superconducting quantum interface device (drawing direction down))
-
cfig(SixpoleDPV,
A six-pole filter)
@@ -469,10 +459,6 @@ cfig(ThreeDPV,
cfig(MCDPV,
A three-phase switched AC-AC converter and a DC-DC converter)
-cfig(ex17DPV,
- A repetitive network created by Pic looping and
- a skewed circuit used to test the macro m4tt`'parallel_</g>)
-
cfig(ex12DPV,
A CMOS NAND gate`,' a test circuit`,' and an XMOSFET example)
@@ -590,9 +576,6 @@ cfig(ABlogixDPV,
cfig(XORDPV,
Realizations of the XOR function using m4tt`'Autologix</g>)
-cfig(ex00DPV,
- Line diagrams)
-
')
cfig(EEPDPV,
Part of a single-line diagram of a power distribution system
@@ -613,6 +596,10 @@ cfig(controlDPV,
cfig(ByteDPV,
Elementary splines)
+cfig(SevensegmentDPV,
+ A customizable seven-segment display showing the numbered segments with
+ a custom shape and the numerals from 0 to 9)
+
ifelse(0,1,`
cfig(RotboxDPV,
The macro
@@ -698,7 +685,7 @@ cfig(keyboardDPV,
More objects drawn in relief)
cfig(DiniDPV,
- Dini surface and an icosahedron)
+ Dini surface`,' an icosahedron`,' and a sphere with inscribed cylinder)
cfig(SierpinskiDPV,
The Sierpinski triangle and a Cayley graph:
diff --git a/graphics/circuit_macros/examples/dpv/quickDPV.m4 b/graphics/circuit_macros/examples/dpv/quickDPV.m4
index 65a181f214..db9c15ce9d 100644
--- a/graphics/circuit_macros/examples/dpv/quickDPV.m4
+++ b/graphics/circuit_macros/examples/dpv/quickDPV.m4
@@ -4,18 +4,16 @@ cct_init # Set defaults
elen = 0.75 # Variables are allowed; default units are inches
move right 0.4
-Origin: Here # Position names are capitalized
- svgLink(SourcesDPV.svg,source(up_ elen))
+ svgLink(SourcesDPV.svg,Vs: source(up_ elen))
llabel(-,svg_it(v`'svg_sub(s)),+)
svgLink(ResistorsDPV.svg,resistor(right_ elen)); rlabel(,svg_it(R),)
dot
{ # Save current position and direction
- capacitor(down_ to (Here,Origin)) #(Here,Origin) = (Here.x,Origin.y)
- rlabel(+,svg_it(v),-); llabel(,svg_it(C))
+ capacitor(down_ Vs.len); rlabel(+,svg_it(v),-); llabel(,svg_it(C))
dot
} # Restore position and direction
line right_ elen*2/3
{move right 0.2}
- inductor(down_ Here.y-Origin.y); rlabel(,svg_it(L),); b_current("svg_it(i)")
- line to Origin
+ inductor(down_ Vs.len); rlabel(,svg_it(L),); b_current("svg_it(i)")
+ line to (Vs,Here) # (Vs,Here) = (Vs.x,Here.y)
.PE # Pic input ends
diff --git a/graphics/circuit_macros/examples/dpv/relaycoilDPV.m4 b/graphics/circuit_macros/examples/dpv/relaycoilDPV.m4
index fc2bc2738f..5ecd5aeec4 100644
--- a/graphics/circuit_macros/examples/dpv/relaycoilDPV.m4
+++ b/graphics/circuit_macros/examples/dpv/relaycoilDPV.m4
@@ -1,12 +1,13 @@
.PS
-# relaycoil.m4
+# relaycoilDPV.m4
cct_init
spc = dimen_/3
{ relaycoil; S: "svg_tt(`relaycoil')" at last [].s+(0,-20bp__)
{ "svg_it(V1)" wid 15bp__ at last [].V1 rjust
"svg_it(V2)" at last [].V2 ljust }
- K: relaycoil(NX) with .nw at last [].ne+(spc*4,0); "svg_tt((NX))" \
+ relaycoil(S) with .nw at last [].ne+(spc*2,0); "svg_tt((S))" at (last [],S)
+ K: relaycoil(NX) with .nw at last [].ne+(spc*3,0); "svg_tt((NX))" \
at (last [],S)
{ thinlines_
spline <- from K.A1 left 7bp__ then up 4bp__ left 4bp__
@@ -21,27 +22,30 @@ cct_init
"svg_it(B3)" ljust
thicklines_
}
- relaycoil(AXSR) with .nw at last [].ne+(spc*5,0); "svg_tt((AXSR))" \
+ relaycoil(AXSR) with .nw at last [].ne+(spc*4,0); "svg_tt((AXSR))" \
at (last [],S)
{ "svg_it(V1)" at last [].V1 rjust; "svg_it(V2)" at last [].V2 rjust }
relaycoil(BXSR) with .nw at last [].ne+(spc*2,0); "svg_tt((BXSR))" \
at (last [],S)
{ "svg_it(V1)" at last [].V1 ljust; "svg_it(V2)" at last [].V2 ljust }
- relaycoil(SR) with .nw at last [].ne+(spc*4,0); "svg_tt((SR))" at (last [],S)
- relaycoil(SO) with .nw at last [].ne+(spc,0); "svg_tt((SO))" at (last [],S)
- relaycoil(SOR) with .nw at last [].ne+(spc,0); "svg_tt((SOR))" at (last [],S)
+ relaycoil(SR) with .nw at last [].ne+(spc*2,0); "svg_tt((SR))" at (last [],S)
+ spx = spc*3/4
+ relaycoil(SO) with .nw at last [].ne+(spx,0); "svg_tt((SO))" at (last [],S)
+ relaycoil(SOR) with .nw at last [].ne+(spx,0); "svg_tt((SOR))" at (last [],S)
+ relaycoil(PC) with .nw at last [].ne+(spx,0); "svg_tt((PC))" at (last [],S)
}
{
move down_ 3/4; right_
relaycoil(HS); S: "svg_tt((HS))" at last [].s+(0,-12bp__)
- relaycoil(NAC) with .nw at last [].ne+(spc,0); "svg_tt((NAC))" at (last [],S)
- relaycoil(AC) with .nw at last [].ne+(spc,0); "svg_tt((AC))" at (last [],S)
- relaycoil(ML) with .nw at last [].ne+(spc,0); "svg_tt((ML))" at (last [],S)
- relaycoil(PO) with .nw at last [].ne+(spc,0); "svg_tt((PO))" at (last [],S)
- relaycoil(RM) with .nw at last [].ne+(spc,0); "svg_tt((RM))" at (last [],S)
- relaycoil(RH) with .nw at last [].ne+(spc,0); "svg_tt((RH))" at (last [],S)
- relaycoil(TH) with .nw at last [].ne+(spc,0); "svg_tt((TH))" at (last [],S)
- relaycoil(EL) with .nw at last [].ne+(spc,0); "svg_tt((EL))" at (last [],S)
+ relaycoil(NAC) with .nw at last [].ne+(spx,0); "svg_tt((NAC))" at (last [],S)
+ relaycoil(AC) with .nw at last [].ne+(spx,0); "svg_tt((AC))" at (last [],S)
+ relaycoil(ML) with .nw at last [].ne+(spx,0); "svg_tt((ML))" at (last [],S)
+ relaycoil(PO) with .nw at last [].ne+(spx,0); "svg_tt((PO))" at (last [],S)
+ relaycoil(RM) with .nw at last [].ne+(spx,0); "svg_tt((RM))" at (last [],S)
+ relaycoil(RH) with .nw at last [].ne+(spx,0); "svg_tt((RH))" at (last [],S)
+ relaycoil(TH) with .nw at last [].ne+(spx,0); "svg_tt((TH))" at (last [],S)
+ relaycoil(EL) with .nw at last [].ne+(spx,0); "svg_tt((EL))" at (last [],S)
+ relaycoil(MR) with .sw at last [].se+(spx,0); "svg_tt((MR))" at (last [],S)
}
.PE
diff --git a/graphics/circuit_macros/examples/ex00.m4 b/graphics/circuit_macros/examples/ex00.m4
deleted file mode 100644
index 21131aa8a1..0000000000
--- a/graphics/circuit_macros/examples/ex00.m4
+++ /dev/null
@@ -1,91 +0,0 @@
-.PS
-# ex00.m4
-gen_init
-
-[
-thicklines_
-ewid = 2
-eht = 0.5
-E: ellipse wid ewid ht eht
-
- [ narrows = 5
- de = ewid/narrows
- for i=0 to narrows do {
- arrow down from i*de,0 }
- ] with .s at E.n+(0,0.25)
-
- "{\bf B$(t)$}" at last [].c
-
-thinlines_
- arrow from E.c to E.ne
- box invis fill_(1) ht 0.12 wid 0.12 with .c at last arrow.c "$r$"
-]
-[
-# ex07.m4
-# gen_init
-
-Barrel: box invis ht 0.4 wid 1.5
- up
-Face: arc rad 2.6 from Barrel.e+(2.4,-1.7/2) to Barrel.e+(2.4,1.7/2)
-
- eps = 0.03
- arc ccw rad 2.6 from Face.start-(eps,0) to Face.end-(eps,0) \
- with .c at Face.c-(eps,0)
- line from Barrel.nw to Barrel.ne then to Face.end
- line from Barrel.sw to Barrel.se then to Face.start
- arc cw from Barrel.sw to Barrel.nw rad Barrel.ht*1.2
-
-Cathode: Barrel.w+(0.3,0)
-Term: Barrel.w+(-0.25,0)
- dcath = 0.13
- dan = 0.12
-
- line from Cathode up dcath/2 left dcath/2 then to Term.x,Cathode.y+dcath/2
- dot
- line from Cathode down dcath/2 left dcath/2 then to Term.x,Cathode.y-dcath/2
- dot
-
- hole = 0.06
-Hole: line invis up hole from Cathode+(0.5,-hole/2)
- line from Hole.end up dan-hole/2 then to Term.x,Cathode.y+dan; dot
- line from Hole.start down dan-hole/2 then to Term.x,Cathode.y-dan; dot
-
- platewid = 0.25
- platesep = 0.15
-Plates: box invis wid platewid ht platesep at Barrel.e+(-platewid/2,0)
- line right platewid from Plates.nw
- line right platewid from Plates.sw
- line up 0.3 from Plates.n
- line down 0.3 from Plates.s
-
-linethick_(1.4)
- move to Cathode+(0.03,0)
-Spot: 0.9<Face.start,Face.end>
- arcto(Plates.c,Spot,(Plates.c.x-Cathode.x)*0.90,outlined "gray")
- line to Spot chop 0 chop -0.02 outlined "gray"
-
-thinlines_
-
- arrow <- from Cathode+(0.2,0.06) up 0.5 left 0.3
- "{\sl electron}" above "{\sl gun}" above
-
- arrow <- from Plates.nw+(0,0.06) up 0.5 left 0.3
- "{\sl deflection}" above "{\sl plates}" above
-
- arrow <- from 0.5<Plates.e,Spot>+(0,0.06) up 0.5 left 0.3
- "{\sl electron beam}" at Here+(-0.3,0) above
-
- spline <- from 1.015<Plates.e,Spot> right 0.1 up 0.1 then up 0.1 \
- then up 0.1 left 0.1
- "{\sl spot of light}sp_" rjust
-
- "{\sl vacuum}sp_" at 0.5<Face.start,Face.end>+(-0.4,0) rjust
-
- arrow <- from Face.start+(0.1,0.5) left 0.6*1.4 down 0.3*1.4
- "{\sl phosphor coating}sp_" rjust
-
- arrow <- from 0.2<Barrel.se,Face.start> left 0.6 down 0.3
- "{\sl glass enclosure (tube)}sp_" rjust
-
-] with .sw at last [].se+(0.5,0)
-.PE
diff --git a/graphics/circuit_macros/examples/examples.pdf b/graphics/circuit_macros/examples/examples.pdf
index c89e3360f3..dd6c413740 100644
--- a/graphics/circuit_macros/examples/examples.pdf
+++ b/graphics/circuit_macros/examples/examples.pdf
Binary files differ
diff --git a/graphics/circuit_macros/examples/extras/Ant.m4 b/graphics/circuit_macros/examples/extras/Ant.m4
deleted file mode 100644
index f4a22226a2..0000000000
--- a/graphics/circuit_macros/examples/extras/Ant.m4
+++ /dev/null
@@ -1,30 +0,0 @@
-.PS
-# Ant.m4 (Langton's ant)
-# https://tex.stackexchange.com/questions/361838/how-to-create-a-langtons-ant-in-latex/361891
-# https://en.wikipedia.org/wiki/Langton%27s_ant
-gen_init
-NeedDpicTools
- picwid = 5
- D: (0,0); DD: (1,0); t[D] = 0
- minx = 0; miny = 0; maxx = 0; maxy = 0
- for i = 0 to 10500 do {
- if (t[D]%2) == 0 then { DD: (-DD.y,DD.x) } else { DD: (DD.y,-DD.x) }
- t[D] += 1
- D: D+DD
- if D.x > maxx then { maxx = D.x; for y = miny to maxy do { t[maxx,y] = 0 }} \
- else { if D.x < minx then {
- minx = D.x; for y = miny to maxy do { t[minx,y] = 0 }}}
- if D.y > maxy then { maxy = D.y; for x = minx to maxx do { t[x,maxy] = 0 }} \
- else { if D.y < miny then {
- miny = D.y; for x = minx to maxx do { t[x,miny] = 0 }}}
- }
- boxwid = picwid/(maxx-minx)
- boxht = picwid/(maxy-miny)
- if boxht > boxwid then { boxht = boxwid } else { boxwid = boxht }
- circlerad = boxht/2
- hue = 240; val = 1
- for i = minx to maxx do { for j = miny to maxy do {
- if t[i,j]!=0 then { sat = (t[i,j]%20)/20
- hsvtorgb(hue,sat,val,r,g,b)
- circle colored rgbstring(r,g,b) at (-i,j)*boxwid } }}
-.PE
diff --git a/graphics/circuit_macros/examples/extras/Asymptotes.m4 b/graphics/circuit_macros/examples/extras/Asymptotes.m4
new file mode 100644
index 0000000000..4afd0f5758
--- /dev/null
+++ b/graphics/circuit_macros/examples/extras/Asymptotes.m4
@@ -0,0 +1,93 @@
+.PS
+# Asymptotes.m4
+# https://tex.stackexchange.com/questions/706340/create-an-asymptotes-summary-diagram-for-a-function
+gen_init
+
+definergbcolor(armygreen,0.29,0.33,0.13)
+definergbcolor(vlightgray,0.95,0.95,0.95)
+boxrad = 7bp__
+
+define(`greenbox',`box wid 90bp__ \
+ outlined "armygreen!90" shaded "armygreen!90" \
+ "{\color{white} `$1'}" ')
+
+define(`graybox',`box thick 0.4 outlined "gray" shaded "vlightgray" \
+ `$1'')
+
+ changequote(,) command "\newcommand{\eace}{\'e}
+ \newcommand{\squote}{\char39}
+ \newcommand{\dequation}{d'\'equation}"
+ changequote(`,)
+
+foreach_(`txt',`L`'m4Lx: graybox(wid 72bp__ ht 130 bp__ \
+ "\parbox{72bp}{\begin{centering}
+ {\sf txt \\ \vfill\vbox{}}
+ \end{centering}}")
+ ifelse(m4Lx,6,,`move 10bp__')',
+
+ `$(C_f)$ admet\\ Une asymptote\\ horizontale\\ \dequation:\\
+ $y = a$\\ au voisinage\\ de $\infty$',
+
+ `$(C_f)$ admet\\ Une asymptote\\ oblique\\ \dequation:\\
+ $y = ax+b$\\ au voisinage\\ de $\infty$',
+
+ `\hbox{}\vspace*{0.5\baselineskip}
+ $(C_f)$ admet\\ Une branche\\ parabolique\\ de direction\\
+ la droite\\ \dequation:\\
+ $y = ax$\\ au voisinage\\ de $\infty$',
+
+ `$(C_f)$ admet\\ Une branche\\ parabolique\\ de direction\\
+ l\squote{}axe des\\ ordonn\eace{}s\\ au voisinage\\ de $\infty$',
+
+ `$(C_f)$ admet\\ Une branche\\ parabolique\\ de direction\\
+ l\squote{}axe des\\ abscisses\\ au voisinage\\ de $\infty$',
+
+ `\vspace*{1ex}$(C_f)$ admet\\ Une \\ asymptote\\ verticale\\
+ \dequation:\\[1ex]
+ $x = a$\\ \hbox{}\hfill\hbox{}')
+
+ M: [ M1: graybox(wid 105bp__ \
+ "$\lim\limits_{x\rightarrow\infty} [f(x)-ax] = b$")
+ move 3bp__
+ M2: graybox(wid 105bp__ \
+ "$\lim\limits_{x\rightarrow\infty} [f(x)-ax] = \infty$")
+ ] with .s at ((L2.x+L4.x)/2,L2.n.y+boxht)
+
+ U:[ foreach_(`txt',`U`'m4Lx:graybox(wid 100bp__ ifelse(m4Lx,1,`+20bp__') "txt")
+ ifelse(m4Lx,4,,`move 2bp__')',
+ `$\lim\limits_{x\rightarrow\infty} [f(x)-(ax{+}b)] = 0$',
+ `\(\lim\limits_{x\rightarrow\infty} \frac{f(x)}{x} =
+ \raisebox{-0.5ex}{$a \atop {(a \neq 0)}$}\)',
+ `\(\lim\limits_{x\rightarrow\infty} \frac{f(x)}{x} = \infty \)',
+ `\(\lim\limits_{x\rightarrow\infty} \frac{f(x)}{x} = 0 \)')
+ ] with .s at ((L1.x+L6.x)/2,M.n.y+boxht)
+
+ T1: greenbox($\lim\limits_{x\rightarrow\infty} f(x) = a$) \
+ with .s at (L1.x,U.n.y+boxht)
+ T2: greenbox($\lim\limits_{x\rightarrow\infty} f(x) = \infty$) \
+ with .s at ((L1.x+L6.x)/2,T1.s.y)
+ T3: greenbox($\lim\limits_{x\rightarrow a} f(x) = \infty$) \
+ with .e at (L6.e.x,T2.y)
+
+ linethick_(1)
+ arrow from (U.w.x-5bp__,T1.s.y) down T1.s.y-L1.n.y
+ A: (T2.w.x,T2.s.y+boxrad); B1: U.U1.n+(boxht,0)
+ move to A; arcto((B1,A),B1,boxrad*3/2); arrow to B1
+ A: (U.U3.w.x+boxrad,T2.s.y); arrow from A to (A,U.U3.n)
+ B2: (1/2 between M.M1.e and M.M2.w,U.U2.n)
+ line from A+(-5bp__,0) down_ 10bp__ then left 10bp__
+ arcto((B2,Here),B2,boxrad*3/2); arrow to B2
+ B3: (L5.e.x-2*boxrad,U.U4.n.y)
+ line from A+( 5bp__,0) down_ 10bp__ then right_ 10 bp__
+ arcto((B3,Here),B3,boxrad*3/2); arrow to B3
+ arrow from (B3,U.U4.s) to (B3,L5.n)
+ arrow from (U.U4.e.x+5bp__,T3.s.y) down T3.s.y-L6.n.y
+ line from U.U2.s+(-5bp__,0) down_ 10bp__ then left_ 10bp__
+ arcto((M.M1.n,Here),M.M1.n,boxrad*3/2); arrow to M.M1.n
+ arrow from (Here,M.M1.s) down M.M1.s.y-L2.n.y
+ line from U.U2.s+( 5bp__,0) down_ 10bp__ then right_ 10bp__
+ arcto((M.M2.n,Here),M.M2.n,boxrad*3/2); arrow to M.M2.n
+ arrow from (L3.e.x-boxrad*3/2,M.M2.s.y) down M.M2.s.y-L3.n.y
+ arrow from (M.M2.e.x+5bp__,U.U3.s.y) down U.U3.s.y-L4.n.y
+ arrow from (M.w.x-5bp__,U.U1.s.y) down U.U1.s.y-L2.n.y
+.PE
diff --git a/graphics/circuit_macros/examples/extras/birds.m4 b/graphics/circuit_macros/examples/extras/Birds.m4
index 4b42ea35af..4b42ea35af 100644
--- a/graphics/circuit_macros/examples/extras/birds.m4
+++ b/graphics/circuit_macros/examples/extras/Birds.m4
diff --git a/graphics/circuit_macros/examples/extras/bistable.m4 b/graphics/circuit_macros/examples/extras/Bistable.m4
index ac49023863..ac49023863 100644
--- a/graphics/circuit_macros/examples/extras/bistable.m4
+++ b/graphics/circuit_macros/examples/extras/Bistable.m4
diff --git a/graphics/circuit_macros/examples/extras/brace.m4 b/graphics/circuit_macros/examples/extras/Brace.m4
index b0089fe96d..b0089fe96d 100644
--- a/graphics/circuit_macros/examples/extras/brace.m4
+++ b/graphics/circuit_macros/examples/extras/Brace.m4
diff --git a/graphics/circuit_macros/examples/extras/Ccurve.m4 b/graphics/circuit_macros/examples/extras/Ccurve.m4
deleted file mode 100644
index 6f3b537aac..0000000000
--- a/graphics/circuit_macros/examples/extras/Ccurve.m4
+++ /dev/null
@@ -1,14 +0,0 @@
-.PS
-# Ccurve.m4
-gen_init
-scale = 1.5
-# Gosper C curve
-
-`define' c_curve {if $3==0 then { continue by ($1,$2) } else {
- c_curve( ($1-$2)/2, ($1+$2)/2, $3-1)
- c_curve( ($1+$2)/2, ($2-$1)/2, $3-1)}}
-
-line from 0,4 to 0,4
-c_curve(0,4,10)
-
-.PE
diff --git a/graphics/circuit_macros/examples/extras/chaos.m4 b/graphics/circuit_macros/examples/extras/Chaos.m4
index 17ae070e58..17ae070e58 100644
--- a/graphics/circuit_macros/examples/extras/chaos.m4
+++ b/graphics/circuit_macros/examples/extras/Chaos.m4
diff --git a/graphics/circuit_macros/examples/extras/Chuck.m4 b/graphics/circuit_macros/examples/extras/Chuck.m4
index df83a8ce0e..3d85390e80 100644
--- a/graphics/circuit_macros/examples/extras/Chuck.m4
+++ b/graphics/circuit_macros/examples/extras/Chuck.m4
@@ -216,11 +216,5 @@ dimension_thick
r_dimen(from D[3]+(0,-14) right 35,0,35)
r_dimen(from (0,D[3].y-14) right 35,0,35)
-# arrow <- down 30 left 30 from D[3] chop 16/2 chop 0 then left 5
-# "16 DRILL 23 CBORE" rjust "4 HOLES" rjust
-
-# arrow <- from (-305/2,30.6+10+2) up 5 left 5 then up 13
-# s_box(SEE (A)) with .sw at Here+(-5pt__,2pt__)
-
command "}%"
.PE
diff --git a/graphics/circuit_macros/examples/extras/ClassDAmp.m4 b/graphics/circuit_macros/examples/extras/ClassDAmp.m4
index b8e845cf06..93f73a17cb 100644
--- a/graphics/circuit_macros/examples/extras/ClassDAmp.m4
+++ b/graphics/circuit_macros/examples/extras/ClassDAmp.m4
@@ -9,7 +9,7 @@ Q1: mosfet(down_ dimen_*5/4,R,TFSDdPyQdB)
dot(at Q1.S)
{ line up_ dimen_/4
dot(,,1); "ifsvg(`svg_it(V)svg_sub(DD)',`$V_{\hbox{\scriptsize DD}}$')" \
- at last [].n+(0,0.05) above }
+ at last [].e ljust }
line left_ dimen_*2/3
SW: switch(left_ dimen_,`$1',D); ifelse(`$1',,`rlabel(,SW1)',`llabel(,SW2)')
Q2: mosfet(up_ dimen_*5/4,,TFSDPyQuB) with .D at Q1.D
@@ -27,7 +27,7 @@ T: dot; right_
]')
S1: String
-S2: String(R) with .Q1.S at S1.Q2.D+(0,-2*elen_)
+S2: String(R) with .Q1.S at S1.Q2.D+(0,-3/2*elen_)
I1: line left_ dimen_/2 from S1.Comp.In1
sinusoid(dimen_/4,twopi_/(dimen_/2),-pi_/2,0,dimen_/2) \
with .Start at I1.end-(textoffset,0)
@@ -51,7 +51,7 @@ NO: dot(at N.Out+(dimen_/12,0))
dot
{ line up_ dimen_/2; diode(to (NO,Here),Z); line to NO }
{ capacitor(down_ dimen_); ground(,T,S)
- llabel(,iflatex(C_{\hbox{\scriptsize On}},ifsvg(svg_it(R)`'svg_sub(On)))) }
+ llabel(iflatex(C_{\hbox{\scriptsize On}},ifsvg(svg_it(R)`'svg_sub(On)))) }
line dashed to (S1.SW,Here)
arrow <-> dashed from S1.SW to S2.SW chop dimen_/4
diff --git a/graphics/circuit_macros/examples/extras/Cruller.m4 b/graphics/circuit_macros/examples/extras/Cruller.m4
deleted file mode 100644
index d2c215ae13..0000000000
--- a/graphics/circuit_macros/examples/extras/Cruller.m4
+++ /dev/null
@@ -1,67 +0,0 @@
-.PS
-# Cruller.m4
-threeD_init
-NeedDpicTools
-scale = 2.54
-
-define(`lobe',`(sind(6*(`$1'))+4)/5*2.25')
-
- viewazimuth = 20 # Set view angles in degrees
- viewelevation = 30
- setview(viewazimuth,viewelevation,0)
-
- dt = 3 # major angle degrees per facet
- ds = 10 # minor angle degrees per facet
-
- tradius = 6
-define(`cruller',`rot3Dz((`$1')*dtor_,
- sum3D(0,tradius,0,0,Rect_(lobe(`$2'+2*(`$1')),`$2')))')
-
-define(`tvisible',`dot3D(View3D,
- cross3D(diff3D(cruller(`$1'+dt/2,`$2'),cruller(`$1',`$2')),
- diff3D(cruller(`$1',`$2'+ds/2),cruller(`$1',`$2'))))')
-
- # create the arrays and sort
- n = 0
- for t = dt to 360+dt/2 by dt do {
- for s=ds/2 to 360.1 by ds do {
- if tvisible(t,s) > -0.01 then {
- n +=1
- t[n] = t
- s[n] = s
- d[n] = dot3D(cruller(t,s),view3D1,view3D2,view3D3) # view distance
- ix[n] = n
- }
- } }
-# prval(n)
- dpquicksort(d,1,n,ix)
-
- # Background
-Bne: (9,6)
-Bsw: (-9,-6)
-B: 0.5 between Bne and Bsw
-iflatex(`line fill_(0.75) \
- from (Bsw,Bne) to Bsw then to (Bne,Bsw) then to Bne then to (Bsw,Bne)',
- `ShadedPolygon((Bsw,Bne):Bsw:(Bne,Bsw):Bne,,-30,
- 0,1,1,1,
- .5,.1,.4,0,
- 1,0,0,0) at B')
- # draw the facets
-thinlines_
-[
- rgbtohsv(0.6,0.4,0,h,s,v)
- for i = 1 to n do {
- tc = t[ix[i]]; sc = s[ix[i]]
- SE: (Project(cruller(tc+dt/2,sc-ds/2)))
- SW: (Project(cruller(tc-dt/2,sc-ds/2)))
- NW: (Project(cruller(tc-dt/2,sc+ds/2)))
- NE: (Project(cruller(tc+dt/2,sc+ds/2)))
- f = ((dcosine3D(3,cruller(tc,sc))/2.25+1)/2)^2
- hsvtorgb(h,(1-f)*s,1,r,g,b)
- line outlined rgbstring(r,g,b) shaded rgbstring(r,g,b) ifpdf( invis ) \
- from SE to SW then to NW then to NE then to SE }
- ] at B
-
-thicklines_
-
-.PE
diff --git a/graphics/circuit_macros/examples/extras/Cylinder.m4 b/graphics/circuit_macros/examples/extras/Cylinder.m4
deleted file mode 100644
index abe9a9bac7..0000000000
--- a/graphics/circuit_macros/examples/extras/Cylinder.m4
+++ /dev/null
@@ -1,43 +0,0 @@
-.PS
-# Cylinder.m4
-gen_init(SIdefaults) # lengths are in mm
-
-define(`cylinder',`[ angle = ifelse(`$3',,20,`$3')
- w = ifelse(`$1',,boxwid,`$1')
- h = ifelse(`$2',,boxht,`$2')
- B: ellipse wid w ht sind(angle)*w
- S: box invis wid w ht h fill_(1) with .s at B
- line from S.nw to S.sw
- line from S.ne to S.se
- T: ellipse wid w ht sind(angle)*w at B+(0,h)
- ]')
-
-define Cylinder { [ dtor = atan2(1,0)/90
- if "$1"=="" then { w = boxwid } else { w = $1 }
- if "$2"=="" then { h = boxht } else { h = $2 }
- if "$3"=="" then { angle = 20 } else { angle = $3 }
- B: ellipse wid w ht sin(angle*dtor)*w
- S: box invis wid w ht h fill 1 with .s at B
- line from S.nw to S.sw
- line from S.ne to S.se
- T: ellipse wid w ht sin(angle*dtor)*w at B+(0,h)
- ] }
-
-M4: [
- cylinder
- move
- cylinder(,,15)
- move
- cylinder(3,50)
- ]
-"M4 macro" at last [].s below
-
-Pic: [
- Cylinder
- move
- Cylinder(,,15)
- move
- Cylinder(3,50)
- ] with .w at M4.e+(5,0)
-"pic macro" at last [].s below
-.PE
diff --git a/graphics/circuit_macros/examples/extras/hsv.m4 b/graphics/circuit_macros/examples/extras/HSV.m4
index 662184dd7d..662184dd7d 100644
--- a/graphics/circuit_macros/examples/extras/hsv.m4
+++ b/graphics/circuit_macros/examples/extras/HSV.m4
diff --git a/graphics/circuit_macros/examples/extras/Highgain.m4 b/graphics/circuit_macros/examples/extras/Highgain.m4
index 06bc62985e..71cbc74a49 100644
--- a/graphics/circuit_macros/examples/extras/Highgain.m4
+++ b/graphics/circuit_macros/examples/extras/Highgain.m4
@@ -48,23 +48,23 @@ define(`vectorsize',
[
R: darrow(right linewid,,,,,,|-)
- { s_box($R$) dabove(at R.start+(5pt__,0)) }
+ { "$R$" dabove(at R.start+(5pt__,0)) }
Sum: circle invis "$\sum$"
darrow(right_ linewid*5/4)
- { s_box($E$) dabove(at last line) }
+ { "$E$" dabove(at last line) }
vectorsize(p,at 1/4 along_(last line))
Gain: shadebox(box "$G = \diag\mat{g_i}$" wid boxwid*1.5 ht boxht*0.75 )
darrow(,,,,,,!-)
- { s_box($U^{\prime}$) dabove(at last line) }
+ { "$U^{\prime}$" dabove(at last line) }
Compensator: shadebox(box wid boxwid*1.5 "\sl Compensator" "$K(s)$")
darrow(right_ linewid*5/4,,,,,,!-)
vectorsize(m,at 1/4 along_(last line))
- { s_box($U$) dabove(at last line) }
+ { "$U$" dabove(at last line) }
Plant: shadebox(box "\sl Plant" "$H(s)$" )
dline(right_ linewid*3/4 from Plant.e,,,,!-)
vectorsize(p,at last line)
Y: dtee(R)
- {s_box($Y$) dabove}
+ {"$Y$" dabove}
darrow(right_ linewid*2/3,t)
dline(down boxht from Y,t)
diff --git a/graphics/circuit_macros/examples/extras/Koch.m4 b/graphics/circuit_macros/examples/extras/Koch.m4
deleted file mode 100644
index cb122c10b6..0000000000
--- a/graphics/circuit_macros/examples/extras/Koch.m4
+++ /dev/null
@@ -1,33 +0,0 @@
-.PS
-# Koch snowflake
-gen_init
-
- leng = 4
- X: 3,5
- nsides = 3; rot[1] = 0; rot[2] = -120; rot[3] = -120
- depth=4
-
- for i=1 to depth do {
- for j=1 to nsides do { tmp[j] = rot[j] }
- leng = leng/3
- k = 0
- for j=1 to nsides do {
- rot[k+1] = tmp[j]
- rot[k+2] = 60
- rot[k+3] = -120
- rot[k+4] = 60
- k += 4
- }
- nsides = k
- }
-
- a = 0
- line from X to X
- for i=1 to nsides do {
- a += rot[i]
-# X: X+(Rect_(leng,a))
-# continue to X
- continue by (Rect_(leng,a))
- }
-
-.PE
diff --git a/graphics/circuit_macros/examples/extras/Makefile b/graphics/circuit_macros/examples/extras/Makefile
index efc8a2b23e..a29b0a81fd 100644
--- a/graphics/circuit_macros/examples/extras/Makefile
+++ b/graphics/circuit_macros/examples/extras/Makefile
@@ -51,7 +51,7 @@ BOXDIMS =
DVIPSOPTS = -G0 -t letter
DIMFILE = $(DOC).dim
-BS = tr '|' '\134'
+TRSLASH = tr '|' '\134'
# Might be needed (change latex commands to $(LTX) )
# LTX = latex --shell-escape
@@ -62,13 +62,13 @@ XTRASRC=printf "|documentclass[11pt]{article}\n\
|usepackage{times,boxdims,siunitx,amssymb,tikz}\n\
|setlength{|textwidth}{8in} |setlength{|textheight}{10.5in}\n\
|setlength{|hoffset}{-2cm} |setlength{|voffset}{-3cm}\n\
-|begin{document}\n" | $(BS)
+|begin{document}\n" | $(TRSLASH)
PDFLTXSRC=printf "|documentclass[11pt]{standalone}\n\
|usepackage{times,boxdims,siunitx,amssymb,tikz,geometry}\n\
|geometry{paperwidth=15in,paperheight=14in,margin=1in}\n\
|pagestyle{empty}|thispagestyle{empty}\n\
-|begin{document}|noindent|input{"$*".tex}|end{document}\n" | $(BS)
+|begin{document}|noindent|input{"$*".tex}|end{document}\n" | $(TRSLASH)
LTXFILE=printf "|documentclass[11pt]{article}\n\
|usepackage[dvipsnames]{xcolor}\n\
@@ -81,7 +81,7 @@ LTXFILE=printf "|documentclass[11pt]{article}\n\
|newbox|graph\n\
|begin{document}\n\
|noindent|input{"$*".tex}|box|graph\n\
-|end{document}\n" | $(BS)
+|end{document}\n" | $(TRSLASH)
.SUFFIXES: .ps .dvi .tex .m4 .pic .eps .png .pdf .svg .tif .gif
.m4.pic:
@@ -158,33 +158,39 @@ LTXFILE=printf "|documentclass[11pt]{article}\n\
#########################################################################
-$(DOC).pdf:
+$(DOC).pdf: texfiles
@$(XTRASRC) > extras.tex
touch extras.dim
-for fl in `ls *.m4` ; do \
file=`basename $$fl .m4` ; \
- echo $$file.m4 ; \
- $(M4) pgf.m4 extras.dim $$file.m4 | $(PIC) -g > $$file.tex ; \
- printf "\n\n|noindent|parbox{|textwidth}{\n" | $(BS) >> extras.tex ; \
- printf "|input{$$file.tex}\n" | $(BS) >> extras.tex ; \
+ printf "\n\n|noindent|parbox{|textwidth}{\n" | $(TRSLASH) >> extras.tex; \
+ printf "|input{$$file.tex}\n" | $(TRSLASH) >> extras.tex ; \
printf "\n $$file.m4\n}\n|vspace{|baselineskip}" \
- | sed -e 's/_/|_/g' | $(BS) >> extras.tex ; \
- done
- printf "\n|end{document}\n" | $(BS) >> extras.tex
- pdflatex extras
- -for file in $(XBOXDIMS) ; do \
- rm -f $$file.tex ; \
- $(M4) pgf.m4 extras.dim $$file.m4 | $(PIC) -g > $$file.tex ; \
+ | sed -e 's/_/|_/g' | $(TRSLASH) >> extras.tex ; \
done
+ printf "\n|end{document}\n" | $(TRSLASH) >> extras.tex
pdflatex extras
+# -for file in $(XBOXDIMS) ; do \
+# rm -f $$file.tex ; \
+# $(M4) pgf.m4 extras.dim $$file.m4 | $(PIC) -g > $$file.tex ; \
+# done
+# pdflatex extras
+
+texfiles:
+ touch extras.dim
+ for fl in `ls *.m4` ; do \
+ file=`basename $$fl .m4` ; \
+ echo $$file.m4 ; \
+ $(M4) pgf.m4 extras.dim $$file.m4 | $(PIC) -g > $$file.tex ; done
+ touch texfiles
$(DOC).ps: psmode $(DOC).dvi
psmode:
- printf "|usepackage{pstricks,pst-grad}\n" | $(BS) > mode.tex
+ printf "|usepackage{pstricks,pst-grad}\n" | $(TRSLASH) > mode.tex
pdfmode:
- printf "|usepackage{tikz}\n" | $(BS) > mode.tex
+ printf "|usepackage{tikz}\n" | $(TRSLASH) > mode.tex
$(DOC).dvi: $(DOC).tex files.tex header.tex psmode
touch $(DOC).dim
@@ -208,4 +214,4 @@ tst1:
dvips $(DVIPSOPTS) tst -o tst.ps
clean:
- rm -f *.ps *.pdf *.tex *.dim *.pic *.log *.dms *.aux *.svg
+ rm -f *.ps *.pdf *.tex *.dim *.pic *.log *.dms *.aux *.svg texfiles
diff --git a/graphics/circuit_macros/examples/extras/Parallel-series.m4 b/graphics/circuit_macros/examples/extras/Parallel-series.m4
new file mode 100644
index 0000000000..fb20cc21eb
--- /dev/null
+++ b/graphics/circuit_macros/examples/extras/Parallel-series.m4
@@ -0,0 +1,15 @@
+.PS
+# parallel-series.m4
+# https://tex.stackexchange.com/questions/709074/how-to-plot-a-block-diagram-with-tikz
+cct_init
+
+ dot; line right_ dimen_/2
+ parallel_(
+ parallel_(
+ `ebox(,wdth=0.2;text="$x_1$")',
+ `Sep=dimen_*3/4;ebox(,wdth=0.2;text="$x_2$")'),
+ Sep=dimen_;series_(
+ `ebox(,wdth=0.2;text="$x_3$")',
+ `ebox(,wdth=0.2;text="$x_4$")'))
+ line right_ dimen_/2; dot
+.PE
diff --git a/graphics/circuit_macros/examples/extras/person.m4 b/graphics/circuit_macros/examples/extras/Person.m4
index 4fdf09d387..4fdf09d387 100644
--- a/graphics/circuit_macros/examples/extras/person.m4
+++ b/graphics/circuit_macros/examples/extras/Person.m4
diff --git a/graphics/circuit_macros/examples/extras/README_extras b/graphics/circuit_macros/examples/extras/README_extras
index 45074a49b2..ebef7cfcd1 100644
--- a/graphics/circuit_macros/examples/extras/README_extras
+++ b/graphics/circuit_macros/examples/extras/README_extras
@@ -11,4 +11,4 @@ often be done reasonably in several possible languages.
This directory is assumed to be a subdirectory of the examples directory
in order to include the necessary definition files.
-Type "make" and, to clean up, "make clean".
+Type "make" to create extras.pdf and, to clean up, "make clean".
diff --git a/graphics/circuit_macros/examples/extras/rotellipse.m4 b/graphics/circuit_macros/examples/extras/Rotellipse.m4
index a49ce308b3..a49ce308b3 100644
--- a/graphics/circuit_macros/examples/extras/rotellipse.m4
+++ b/graphics/circuit_macros/examples/extras/Rotellipse.m4
diff --git a/graphics/circuit_macros/examples/extras/SampleFlow.m4 b/graphics/circuit_macros/examples/extras/SampleFlow.m4
index 077a0ba6e3..94e334c46a 100644
--- a/graphics/circuit_macros/examples/extras/SampleFlow.m4
+++ b/graphics/circuit_macros/examples/extras/SampleFlow.m4
@@ -2,11 +2,11 @@
# SampleFlow.m4
darrow_init
-boxwid = 1.9
-boxht = 1.0
+boxwid = 1.15
+boxht = 0.6
linethick = 1.2
- define(`dlthick',0.25)
+ define(`dlthick',0.125)
define(`dfillcolor',`0.7,0.7,0.7')
define rbox {box rad boxht/10}
@@ -17,7 +17,7 @@ linethick = 1.2
dleft
darrow(to last box.w) } }
- command "{\sf\huge"
+ command "{\sf"
B1: rbox
{ "Sample" ljust indent "Acquisition" ljust }
diff --git a/graphics/circuit_macros/examples/extras/Spec555.m4 b/graphics/circuit_macros/examples/extras/Spec555.m4
new file mode 100644
index 0000000000..713ccb2967
--- /dev/null
+++ b/graphics/circuit_macros/examples/extras/Spec555.m4
@@ -0,0 +1,56 @@
+.PS
+# Spec555.m4
+# https://tex.stackexchange.com/questions/64801/display-ics-with-circuitikz?rq=1
+log_init
+
+define(`spec555',`[ Chip: box wid 8*lg_pinsep ht 10*lg_pinsep fill_(0.9)
+ command "{\scriptsize\sf"
+ P1: "1" at 3/4<Chip.sw,Chip.se> below rjust; "GND" above
+ P5: "5" at Chip.s below rjust ; "CTRL" above
+ P2: "2" at 1/8<Chip.sw,Chip.nw> above rjust; "TRG" ljust
+ P6: "6" at 3/8<Chip.sw,Chip.nw> above rjust; "THR" ljust
+ P7: "7" at 7/8<Chip.sw,Chip.nw> above rjust; "DIS" ljust
+ P3: "3" at Chip.e above ljust ; "OUT" rjust
+ P4: "4" at 3/4<Chip.nw,Chip.ne> above rjust; "\phantom{M}RESET" below
+ P8: "8" at Chip.n above rjust ; "Vcc" below
+ "NE-555" at Chip.c "TIMER"
+ command "}%"
+ line left dimen_ from P7; X:dot
+ { R1:resistor(up_ P7.y-P6.y); rlabel(,\SI{68}{\kilo\ohm}); dot }
+ R2:resistor(down_ P7.y-P6.y); llabel(,\SI{68}{\kilo\ohm}); dot; {line to P6}
+ line to (Here,P2); SW: dot; {line to P2}
+ line from P8 to (P8,R1.end); dot ]')
+
+ command "{\small\sf"
+ T1: spec555; "U1" at T1.Chip.nw above ljust
+ T2: spec555 with .Chip.w at T1.Chip.e+(2.5*dimen_,0)
+ "U2" at T2.Chip.nw above ljust
+ {line left_ dimen_/2 from (T1.X,T1.P7); diode(down_ T1.P7.y-T1.P6.y)
+ rlabel(,\shortstack{D1\\1N4148})
+ line to (T1.X,Here); dot}
+ capacitor(down_ elen_ from T1.SW,E+); llabel(,\SI{10}{\micro\farad}); dot
+ dot(at Here-(dimen_/2,0),,1); G: dot(,,1); "GND" rjust at G.w
+ capacitor(from T1.P5 to (T1.P5,G),E+); rlabel(,\SI{0.01}{\nano\farad}); dot
+ line from T1.P1 to (T1.P1,G); dot
+ Vcc: dot(at (G,T1.R1.end),,1); "Vcc" rjust at Vcc.w
+ dot(at (T1.P4,Vcc)); line to T1.P4
+ line right_ dimen_/2 from T1.P3;
+ R3: resistor(down_ to (Here,T2.s-(0,dimen_/4))); llabel(,\SI{10}{\kilo\ohm})
+ line to (T2.P5,Here) then to T2.P5
+ dot(at (T2.X,G)); ground
+ reversed(`capacitor',up_ to (Here,T2.P5),E+); rlabel(,\SI{100}{\nano\farad})
+ line to (Here,T2.P2)
+ line from T2.P1 to (T2.P1,G); dot
+ line from T2.P4 to (T2.P4,Vcc) then to Vcc chop 0 chop dotrad_
+ dot(at (T2.X,T2.R1.end)+(0,dimen_/2),,1); {line to T2.R1.end chop dotrad_}
+ "$+$\SI{5}{\volt} to $+$\SI{15}{\volt}" at last [].n above
+ capacitor(right_ dimen_ from T2.P3,C); llabel(,\SI{100}{\micro\farad})
+ Pot1: potentiometer(down_ (Here.y-G.y)/2) with .Start at Here
+ "Rx" at Pot1.T1 ljust
+ Sp: speaker(R,,,fill_(0.9)) with .In5 at Pot1.End
+ "1" above rjust at Sp.In5; "2" below rjust at Sp.In7
+ "\shortstack{E1\\Speaker}" at Sp.In2 rjust
+ line from Sp.In7 to (Sp.In7,G) then to G chop 0 chop dotrad_
+ command "}%"
+
+.PE
diff --git a/graphics/circuit_macros/examples/extras/squiggle.m4 b/graphics/circuit_macros/examples/extras/Squiggle.m4
index 671ae2addd..671ae2addd 100644
--- a/graphics/circuit_macros/examples/extras/squiggle.m4
+++ b/graphics/circuit_macros/examples/extras/Squiggle.m4
diff --git a/graphics/circuit_macros/examples/extras/venus.m4 b/graphics/circuit_macros/examples/extras/Venus.m4
index 676cd98143..676cd98143 100644
--- a/graphics/circuit_macros/examples/extras/venus.m4
+++ b/graphics/circuit_macros/examples/extras/Venus.m4
diff --git a/graphics/circuit_macros/examples/ex17.m4 b/graphics/circuit_macros/examples/extras/ex17.m4
index a304d7359b..a304d7359b 100644
--- a/graphics/circuit_macros/examples/ex17.m4
+++ b/graphics/circuit_macros/examples/extras/ex17.m4
diff --git a/graphics/circuit_macros/examples/files.tex b/graphics/circuit_macros/examples/files.tex
index 37bff79b12..45000c231b 100644
--- a/graphics/circuit_macros/examples/files.tex
+++ b/graphics/circuit_macros/examples/files.tex
@@ -158,6 +158,14 @@
\src{Pconn.m4}.}
}
+\ifmpost\else\bfig{
+ \centerline{\getpic{cbresistor}}
+ \caption{Color-coded through-hole resistors. All are
+ 10 percent tolerance except for the last,
+ which illustrates 5 percent
+ \src{cbresistor.m4}.}
+ }\fi
+
\ifmpost\else\ifpostscript\else\bfig{
\centerline{\getpic{EVplugs}}
\caption{Electric vehicle charging plug patterns make extensive
@@ -265,17 +273,12 @@
\bfig{
\centerline{\getpic{Quantum}}
- \caption{A quantum circuit
+ \caption{A quantum circuit and a
+ superconducting quantum interface device (drawing direction down)
\src{Quantum.m4}.}
}
\bfig{
- \centerline{\getpic{SQUID}}
- \caption{Superconducting quantum interface device (drawing direction down)
- \src{SQUID.m4}.}
- }
-
-\bfig{
\centerline{\getpic{Sixpole}}
\caption{A six-pole filter
\src{Sixpole.m4}.}
@@ -308,13 +311,6 @@
}
\bfig{
- \centerline{\getpic{ex17}}
- \caption{A repetitive network created by Pic looping and
- a skewed circuit used to test the macro {\tt parallel\_}
- \src{ex17.m4}.}
- }
-
-\bfig{
\centerline{\getpic{ex12}}
\caption{ A CMOS NAND gate, a test circuit, and an XMOSFET example
\src{ex12.m4}.}
@@ -521,12 +517,6 @@
\src{XOR.m4}.}
}
-\bfig{
- \centerline{\getpic{ex00}}
- \caption{Line diagrams
- \src{ex00.m4}.}
- }
-
\ifmpost\else\ifpostscript\else\bfig{
\centerline{\getpic{EEP}}
\caption{A test of experimental single-line diagram macros
@@ -541,8 +531,8 @@
\bfig{
\centerline{\getpic{GrayCode}}
- \caption{Gray code 10-bit encoder disk pattern and a crossbar switch
- illustrating the power of looping and branching
+ \caption{The power of looping and branching:
+ Gray code 10-bit encoder disk pattern and a crossbar switch
\src{GrayCode.m4}.}
}
@@ -559,6 +549,13 @@
}
\bfig{
+ \centerline{\getpic{Sevensegment}}
+ \caption{A customizable seven-segment display showing the
+ numbered segments, a custom shape, and the numerals from 0 to 9
+ \src{Sevensegment.m4}.}
+ }
+
+\bfig{
\centerline{\getpic{Rotbox}}
\caption{The macro
{\tt rotbox(}{\sl wid,ht,type,}{\tt [r|t=}{\sl val}{\tt ])}
@@ -567,12 +564,12 @@
}
\ifmpost\else\ifpostscript\else\bfig{
- \centerline{\getpic{shadowed}}
+ \centerline{\getpic{Shadowed}}
\caption{Embellishments: the top row illustrates
{\tt shadowed(box|circle|ellipse|line,[at {\sl position}],{\sl keys})}
and the second row
{\tt ColoredV(box|circle|ellipse,({\sl r,g,b})|(({\sl colorseq})),{\sl attributes})}
- \src{shadowed.m4}.}
+ \src{Shadowed.m4}.}
}\fi\fi
\bfig{
@@ -661,7 +658,7 @@
\ifpostscript%
\bfig{% For psfrag
\includegraphics[width=\textwidth]{rose.eps} %\centerline{\getpic{rose}}%ignore%
- \caption{The left object, used for testing {\tt dipic,} is redrawn from%ignore%
+ \caption{The left object, used for testing {\tt dpic,} is redrawn from%ignore%
a detail of the set design for the musical {\it Dracula.} This %ignore%
consumes much \LaTeX\ main memory but can be produced directly %ignore%
as pdf using \hbox{\tt dpic -d}, as svg using \hbox{\tt dpic -v}, %ignore%
@@ -712,7 +709,7 @@
\bfig{
\centerline{\getpic{Dini}}
- \caption{Dini surface and an icosahedron
+ \caption{Dini surface, an icosahedron, and a sphere with inscribed cylinder
\src{Dini.m4}.}
}
@@ -789,10 +786,10 @@
\caption{Overlaying a figure with line graphics %ignore%
\src{Incleps.m4}.}
}
-\else\ifpostscript\else% Postscript with psfrag (.eps.gz not allowed)
+\else\ifpostscript\else% Postscript with psfrag (.eps.gz not allowed)
\bfig{%
\centerline{\boxdims{InclA}{%ignore%
- \includegraphics[width=3in]{Incl.eps}}%
+ \includegraphics[width=3in]{Incl.eps}}% the background picture
\hspace*{-3in}\includegraphics{Incleps.eps}}%
\caption{Overlaying a figure with line graphics %ignore%
\src{Incleps.m4}.}}
diff --git a/graphics/circuit_macros/examples/ics.m4 b/graphics/circuit_macros/examples/ics.m4
index 42286d5a8f..5db6a17cea 100644
--- a/graphics/circuit_macros/examples/ics.m4
+++ b/graphics/circuit_macros/examples/ics.m4
@@ -78,29 +78,38 @@ define(`ic74LS138',`[ Chip: box wid_ lg_chipwd ht_ 11*lg_pinsep
lg_pin(Chip.se_+(0,9*lg_pinsep),Y7,Pin7,eN,7)
`$1']')
+define(`ic555',`[ Chip: DIP_chip_outline(8)
+ foreach_(`x',
+ `lg_pin(Chip.nw-(0,lg_pinsep*m4Lx),x,Pin`'m4Lx,w,m4Lx)',
+ GND, TR, OUT, RESET)
+ foreach_(`x',
+ `lg_pin(Chip.se+(0,lg_pinsep*m4Lx),x,Pin`'eval(m4Lx+4),e,eval(m4Lx+4))',
+ CTRL, THR, DIS, Vcc)
+ `$1']')
+
define(`ic4017',`[ Chip: DIP_chip_outline(16)
- Loopover_(`x',
+ foreach_(`x',
`lg_pin(Chip.nw-(0,lg_pinsep*m4Lx),x,Pin`'m4Lx,w,m4Lx)',
PL, Q3, I3, I0, CLE, Q0, TC, GND)
- Loopover_(`x',
+ foreach_(`x',
`lg_pin(Chip.se+(0,lg_pinsep*m4Lx),x,Pin`'eval(m4Lx+8),e,eval(m4Lx+8))',
MR, U/D, Q1, I1, I2, Q2, CLK, Vcc)
`$1']')
define(`ic4510',`[ Chip: DIP_chip_outline(16)
- Loopover_(`x',
+ foreach_(`x',
`lg_pin(Chip.nw-(0,lg_pinsep*m4Lx),x,Pin`'m4Lx,w,m4Lx)',
PL, Q3, I3, I0, CLE, Q0, TC, GND)
- Loopover_(`x',
+ foreach_(`x',
`lg_pin(Chip.se+(0,lg_pinsep*m4Lx),x,Pin`'eval(m4Lx+8),e,eval(m4Lx+8))',
MR, U/D, Q1, I1, I2, Q2, CLK, Vcc)
`$1']')
define(`icVS1053',`[ Chip: DIP_chip_outline(32)
- Loopover_(`x',
+ foreach_(`x',
`lg_pin(Chip.nw-(0,lg_pinsep*m4Lx),x,Pin`'m4Lx,w,m4Lx)',
LOUT,ROUT,GBUF,AGND,AGND,DREG,Vcc,3V3,GND,MISO,MOSI,sclk,RST,CS,DCS,DCS)
- Loopover_(`x',
+ foreach_(`x',
`lg_pin(Chip.se+(0,lg_pinsep*m4Lx),x,Pin`'eval(m4Lx+16),e,eval(m4Lx+16))',
SDCD,RX,TX,7,6,5,4,3,2,1,0,GND,3V3,AGND,MIC`$-$',MIC`$+$')
`$1']')
@@ -114,13 +123,13 @@ define(`ArduinoUno',`[
#
plen = ifelse(`$4',,`2*L_unit',`$4')
#
-Loopover_(`x',`ifelse(x,nul,,
+foreach_(`x',`ifelse(x,nul,,
`Pin`'eval(5+m4Lx): line left_ plen from Connector.nw-(0,(5+m4Lx)*lg_pinsep)
{ "x" ljust at last line.start }')',
IOREF, RESET,$+${3}V3,$+${5}V, GND, GND, VIN,
nul, A0, A1, A2, A3, A4, A5)
#
-Loopover_(`x',`ifelse(x,nul,,
+foreach_(`x',`ifelse(x,nul,,
`Pin`'eval(22-m4Lx): line right_ plen from Connector.ne-(0,m4Lx*lg_pinsep)
{ "x" rjust at last line.start }')',
SCL, SDA, AREF, GND, D13, D12, ic_tilde`'D11, ic_tilde`'D10, ic_tilde`'D9, D8,
@@ -137,22 +146,22 @@ define(`ArduinoLeonardo',`[
#
plen = ifelse(`$4',,`2*L_unit',`$4')
#
-Loopover_(`x',`ifelse(x,nul,,
+foreach_(`x',`ifelse(x,nul,,
`Pin`'eval(5+m4Lx): line left_ plen from Connector.nw-(0,(5+m4Lx)*lg_pinsep)
{ "x" ljust at last line.start }')',
IOREF, RESET,$+${3}V3,$+${5}V, GND, GND, VIN,
nul, A0, A1, A2, A3, A4, A5)
#
-Loopover_(`x',`ifelse(x,nul,,
+foreach_(`x',`ifelse(x,nul,,
`Pin`'eval(22-m4Lx): line right_ plen from Connector.ne-(0,m4Lx*lg_pinsep)
{ "x" rjust at last line.start }')',
SCL, SDA, AREF, GND,
ic_tilde`'D13, D12, ic_tilde`'D11, ic_tilde`'D10, ic_tilde`'D9, D8,
nul, D7, ic_tilde`'D6, ic_tilde`'D5, D4, ic_tilde`'D3, D2, TX D1, RX D0)
#
- `$4'] ')
+ `$4'] ') # `ArduinoLeonardo'
- `RPi( wid,ht,pinlen )'
+ `RPi( wid,ht,pinlen )' # Raspberry Pi connector
define(`RPi',`[
define(`m4bwid',`ifelse(`$1',,`34*L_unit',`$1')')dnl
define(`m4bht',`ifelse(`$2',,`21*lg_pinsep',`$2')')dnl
@@ -160,13 +169,13 @@ define(`RPi',`[
GPIO: box wid m4bwid ht m4bht
plen = ifelse(`$4',,`6*L_unit',`$4')
#
-define A_LeftGPIO {
+define A_LeftGPIO { dnl pin downcount, internal label , pin no above line
exec sprintf("Pin%g: line left_ plen from GPIO.nw-(0,%g)",\
2*(`$'1)-1,(`$'1)*lg_pinsep)
{ "`$'3" ljust at last line.start }
"`$'2" at last line.c above }
#
-Loopover_(`x',`ifelse(x,nul,,`A_LeftGPIO(m4Lx,patsubst(x,;,`,'))')',
+foreach_(`x',`ifelse(x,nul,,`A_LeftGPIO(m4Lx,patsubst(x,;,`,'))')',
;3V3,
2;SDA1, 3;SCL1, 4;GPIO\_GCLK,
;GND,
@@ -178,13 +187,13 @@ Loopover_(`x',`ifelse(x,nul,,`A_LeftGPIO(m4Lx,patsubst(x,;,`,'))')',
5;, 6;, 13;, 19;, 26;,
;GND )
#
-define A_RightGPIO {
+define A_RightGPIO { dnl pin downcount, internal label , pin no above line
exec sprintf("Pin%g: line right_ plen from GPIO.ne-(0,%g)",\
2*(`$'1),(`$'1)*lg_pinsep)
{ "`$'3" rjust at last line.start }
"`$'2" at last line.c above }
#
-Loopover_(`x',`ifelse(x,nul,,`A_RightGPIO(m4Lx,patsubst(x,;,`,'))')',
+foreach_(`x',`ifelse(x,nul,,`A_RightGPIO(m4Lx,patsubst(x,;,`,'))')',
;5V,
;5V,
;GND,
@@ -199,7 +208,7 @@ Loopover_(`x',`ifelse(x,nul,,`A_RightGPIO(m4Lx,patsubst(x,;,`,'))')',
;GND,
16;, 20;, 21; )
#
- `$4'] ')
+ `$4'] ') # `RPi'
`USB_C_Socket( wid, ht, pinlen )'
define(`USB_C_Socket',`[
@@ -209,14 +218,14 @@ define(`USB_C_Socket',`[
Base: box wid m4bwid ht m4bht rad 5/3*lg_pinsep
plen = ifelse(`$4',,`6*L_unit',`$4')
#
- Loopover_(`x',
+ foreach_(`x',
`B`'eval(13-m4Lx): dnl
line left_ plen from Base.n-(m4bwid/2,(m4Lx+0.5)*lg_pinsep)
{"x" ljust at last line.start}',
GND, RX1`$+$', RX1`$-$', VBUS, SBU2, D`$-$', D`$+$', CC2, VBUS, TX2`$-$',
TX2`$+$', GND)
#
- Loopover_(`x',
+ foreach_(`x',
`A`'m4Lx: line right_ plen from Base.n+(m4bwid/2,-(m4Lx+0.5)*lg_pinsep)
{"x" rjust at last line.start}',
GND, TX1`$+$', TX1`$-$', VBUS, CC1, D`$+$', D`$-$', SBU1, VBUS, RX2`$-$',
@@ -235,7 +244,7 @@ define(`HDMI_micro',`[
then left m4bwid*2/3 then to Here]
plen = ifelse(`$4',,`6*L_unit',`$4')
#
- Loopover_(`x',
+ foreach_(`x',
`Pin`'m4Lx: line left_ plen from Base.nw-(0,m4bwid/3+m4Lx*lg_pinsep)
{"x" ljust at last line.start}
"m4Lx" at last line.c above',
diff --git a/graphics/circuit_macros/examples/keyboard.m4 b/graphics/circuit_macros/examples/keyboard.m4
index 7966a7aa3b..613ab9c21c 100644
--- a/graphics/circuit_macros/examples/keyboard.m4
+++ b/graphics/circuit_macros/examples/keyboard.m4
@@ -19,8 +19,8 @@ define(`kbdshadewid',`(kbd_u/9)')
top=attribs; # top attributes '
define(`kbdkey',
`pushkeys_(`$2',
- wdth:kbd_u; hght:kbd_u*14/13+lthick; rad:kbd_u/10;
- shadewid:kbdshadewid; base:fill_(0.3):N; top:fill_(0.9):N)dnl
+ `wdth:kbd_u; hght:kbd_u*14/13+lthick; rad:kbd_u/10;
+ shadewid:kbdshadewid; base:fill_(0.3):N; top:fill_(0.9):N')dnl
[ Base: box wid m4wdth ht m4hght rad m4rad m4base
Top: box wid m4wdth-2*m4shadewid ht m4hght-m4shadewid-lthick \
rad m4rad*(kbd_u-2*m4shadewid)/(kbd_u) with .n \
@@ -53,14 +53,14 @@ define(`stkbdkey',
top=attribs; # top attributes '
define(`enterkey',
`pushkeys_(`$2',
- wdth:kbd_u*2.26;
+ `wdth:kbd_u*2.26;
hght:kbd_u*14/13*2+kbdrowsep+linethick bp__;
bhght: kbd_u*14/13;
twdth: kbd_u*3/2;
rad:kbd_u/10;
shadewid:kbdshadewid;
base:fill_(0.3):N;
- top:fill_(0.9):N)dnl
+ top:fill_(0.9):N')dnl
[ ltx = lthick; r = m4rad*(kbd_u-2*m4shadewid)/(kbd_u)
# thick outer
linethick = (m4shadewid+r)/(1bp__); lth2 = lthick/2
diff --git a/graphics/circuit_macros/examples/mf/cct.mf b/graphics/circuit_macros/examples/mf/cct.mf
index fc30c9dbad..37b64057d3 100644
--- a/graphics/circuit_macros/examples/mf/cct.mf
+++ b/graphics/circuit_macros/examples/mf/cct.mf
@@ -1,5 +1,5 @@
% cct.mf, generated by Mfpic, v1.10 2012/12/03,
-% from TeX source "font" on 2024/01/01 at 16:59
+% from TeX source "font" on 2024/05/30 at 10:30
numeric mfpicversion; mfpicversion := 110;
if unknown mode: mode := localfont; fi
if unknown mag: mag := 1000/1000; fi
@@ -299,7 +299,7 @@ resizedrawpen (0.4bp);
store (curpath)
drawn
-circle ((-0.3084,-0),0.002767);
+circle ((-0.3084,0),0.002767);
resizedrawpen (0.8bp);
@@ -426,7 +426,7 @@ endmfpic; % (8) line 123 in the TeX source.
%----------------------------<9>
unitlen := 1.0pt#;
xscale := 72; yscale := 72;
-bounds (0, 0.333333, -0, 0.03125);
+bounds (0, 0.333333, 0, 0.03125);
beginmfpic(9); % line 124 in the TeX source.
@@ -441,19 +441,19 @@ polyline (false)
store (curpath)
drawn
-arcplr ((0.072917,0),-180,-360,0.03125);
+arcplr ((0.072917,0),180,0,0.03125);
store (curpath)
drawn
-arcplr ((0.135417,0),-180,-360,0.03125);
+arcplr ((0.135417,0),180,0,0.03125);
store (curpath)
drawn
-arcplr ((0.197917,0),180,-0,0.03125);
+arcplr ((0.197917,0),180,0,0.03125);
store (curpath)
drawn
-arcplr ((0.260417,0),-180,-360,0.03125);
+arcplr ((0.260417,0),180,0,0.03125);
store (curpath)
drawn
@@ -491,11 +491,11 @@ arcplr ((0,-0.135417),90,-90,0.03125);
store (curpath)
drawn
-arcplr ((-0,-0.197917),90,-90,0.03125);
+arcplr ((0,-0.197917),90,-90,0.03125);
store (curpath)
drawn
-arcplr ((-0,-0.260417),90,-90,0.03125);
+arcplr ((0,-0.260417),90,-90,0.03125);
store (curpath)
drawn
@@ -525,7 +525,7 @@ polyline (false)
store (curpath)
drawn
-arcplr ((-0.072917,0),0,-180,0.03125);
+arcplr ((-0.072917,0),-0,-180,0.03125);
store (curpath)
drawn
@@ -1402,12 +1402,12 @@ polyline (false)
store (curpath)
drawn
polyline (false)
-((0.145833,0),
-(0.145833,0.0625),
-(0.1875,0.0625),
-(0.1875,-0.0625),
-(0.145833,-0.0625),
-(0.145833,0));
+((0.104167,0),
+(0.104167,0.0625),
+(0.229167,0.0625),
+(0.229167,-0.0625),
+(0.104167,-0.0625),
+(0.104167,0));
store (curpath)
drawn
@@ -1450,12 +1450,12 @@ polyline (false)
store (curpath)
drawn
polyline (false)
-((0,-0.145833),
-(0.0625,-0.145833),
-(0.0625,-0.1875),
-(-0.0625,-0.1875),
-(-0.0625,-0.145833),
-(0,-0.145833));
+((0,-0.104167),
+(0.0625,-0.104167),
+(0.0625,-0.229167),
+(-0.0625,-0.229167),
+(-0.0625,-0.104167),
+(0,-0.104167));
store (curpath)
drawn
@@ -3197,7 +3197,7 @@ polyline (false)
store (curpath)
drawn
-arcplr ((0,0.1375),-180,-360,0.175);
+arcplr ((0,0.1375),180,0,0.175);
store (curpath)
drawn
@@ -3379,19 +3379,19 @@ polyline (false)
store (curpath)
drawn
-arcplr ((0.072917,-0.104167),-180,-360,0.03125);
+arcplr ((0.072917,-0.104167),180,0,0.03125);
store (curpath)
drawn
-arcplr ((0.135417,-0.104167),-180,-360,0.03125);
+arcplr ((0.135417,-0.104167),180,0,0.03125);
store (curpath)
drawn
-arcplr ((0.197917,-0.104167),180,-0,0.03125);
+arcplr ((0.197917,-0.104167),180,0,0.03125);
store (curpath)
drawn
-arcplr ((0.260417,-0.104167),-180,-360,0.03125);
+arcplr ((0.260417,-0.104167),180,0,0.03125);
store (curpath)
drawn
@@ -3423,15 +3423,15 @@ arcplr ((0.260417,0.104167),-0,-180,0.03125);
store (curpath)
drawn
-arcplr ((0.197917,0.104167),0,-180,0.03125);
+arcplr ((0.197917,0.104167),-0,-180,0.03125);
store (curpath)
drawn
-arcplr ((0.135417,0.104167),0,-180,0.03125);
+arcplr ((0.135417,0.104167),-0,-180,0.03125);
store (curpath)
drawn
-arcplr ((0.072917,0.104167),0,-180,0.03125);
+arcplr ((0.072917,0.104167),-0,-180,0.03125);
store (curpath)
drawn
@@ -4844,7 +4844,7 @@ arcplr ((-0.310672,-0.001089),25.772366,-25.376934,0.35);
store (curpath)
drawn
polyline (false)
-((0,-0.151089),
+((-0,-0.151089),
(0.122222,-0.151089));
store (curpath)
@@ -5204,7 +5204,7 @@ arcplr ((-0.310672,-0.001089),25.772366,-25.376934,0.35);
store (curpath)
drawn
polyline (false)
-((0,-0.151089),
+((-0,-0.151089),
(0.122222,-0.151089));
store (curpath)
diff --git a/graphics/circuit_macros/examples/quick.m4 b/graphics/circuit_macros/examples/quick.m4
index 7de2399601..1d849e2809 100644
--- a/graphics/circuit_macros/examples/quick.m4
+++ b/graphics/circuit_macros/examples/quick.m4
@@ -1,16 +1,14 @@
.PS # Pic input begins with .PS
cct_init # Read in macro definitions and set defaults
elen = 0.75 # Variables are allowed; default units are inches
-Origin: Here # Position names are capitalized
- source(up_ elen); llabel(-,v_s,+)
- resistor(right_ elen); rlabel(,R,)
+Vs: source(up_ elen); llabel(-,v_s,+) # Name and label the source
+ resistor(right_ elen); rlabel(,R,) # Semicolon and line end are equivalent
dot
{ # Save the current position and direction
- capacitor(down_ to (Here,Origin)) #(Here,Origin) = (Here.x,Origin.y)
- rlabel(+,v,-); llabel(,C,)
+ capacitor(down_ Vs.len); rlabel(+,v,-); llabel(,C,)
dot
} # Restore position and direction
line right_ elen*2/3
- inductor(down_ Here.y-Origin.y); rlabel(,L,); b_current(i)
- line to Origin
+ inductor(down_ Vs.len); rlabel(,L,); b_current(i)
+ line to (Vs,Here) # (Vs,Here) = (Vs.x,Here.y)
.PE # Pic input ends
diff --git a/graphics/circuit_macros/examples/relaycoil.m4 b/graphics/circuit_macros/examples/relaycoil.m4
index 7966a32294..9a30b21795 100644
--- a/graphics/circuit_macros/examples/relaycoil.m4
+++ b/graphics/circuit_macros/examples/relaycoil.m4
@@ -6,7 +6,8 @@ cct_init
{ relaycoil; S: `"\tt relaycoil"' at last [].s+(0,-16bp__)
{ "\sl V1" wid 10bp__ at last [].V1 rjust
"\sl V2" at last [].V2 ljust }
- K: relaycoil(NX) with .nw at last [].ne+(spc*4,0); "\tt (NX)" at (last [],S)
+ relaycoil(S) with .nw at last [].ne+(spc*2,0); "\tt (S)" at (last [],S)
+ K: relaycoil(NX) with .nw at last [].ne+(spc*3,0); "\tt (NX)" at (last [],S)
{ thinlines_
spline <- from K.A1 left 7bp__ then up 4bp__ left 4bp__; "\sl A1" rjust
arrow <- from K.A2 left 10bp__; "\sl A2" rjust
@@ -16,14 +17,15 @@ cct_init
spline <- from K.B3 right 7bp__ then down 4bp__ right 4bp__; "\sl B3" ljust
thicklines_
}
- relaycoil(AXSR) with .nw at last [].ne+(spc*5,0); "\tt (AXSR)" at (last [],S)
+ relaycoil(AXSR) with .nw at last [].ne+(spc*4,0); "\tt (AXSR)" at (last [],S)
{ "\sl V1" at last [].V1 rjust; "\sl V2" at last [].V2 rjust }
relaycoil(BXSR) with .nw at last [].ne+(spc*2,0); "\tt (BXSR)" at (last [],S)
{ "\sl V1" at last [].V1 ljust; "\sl V2" at last [].V2 ljust }
- relaycoil(SR) with .nw at last [].ne+(spc*3,0); "\tt (SR)" at (last [],S)
- relaycoil(SO) with .nw at last [].ne+(spc,0); "\tt (SO)" at (last [],S)
- relaycoil(SOR) with .nw at last [].ne+(spc,0); "\tt (SOR)" at (last [],S)
- relaycoil(PC) with .nw at last [].ne+(spc,0); "\tt (PC)" at (last [],S)
+ relaycoil(SR) with .nw at last [].ne+(spc*2,0); "\tt (SR)" at (last [],S)
+ spx = spc*3/4
+ relaycoil(SO) with .nw at last [].ne+(spx,0); "\tt (SO)" at (last [],S)
+ relaycoil(SOR) with .nw at last [].ne+(spx,0); "\tt (SOR)" at (last [],S)
+ relaycoil(PC) with .nw at last [].ne+(spx,0); "\tt (PC)" at (last [],S)
}
spc = dimen_/4
{
diff --git a/graphics/circuit_macros/examples/xfig/xfiglib.fig b/graphics/circuit_macros/examples/xfig/xfiglib.fig
index 91a4e52740..d67703acc6 100644
--- a/graphics/circuit_macros/examples/xfig/xfiglib.fig
+++ b/graphics/circuit_macros/examples/xfig/xfiglib.fig
@@ -75,7 +75,7 @@ Single
5 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 1500 263 1500 300 1463 263 1500 225
-6
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2
- 1437 525 1438 225
+ 1437 525 1437 225
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2
1400 525 1400 225
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2
@@ -135,11 +135,11 @@ Single
6 3300 75 3450 675
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2
3375 675 3375 425
-6 3300 325 3450 425
+6 3300 300 3450 450
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2
3425 425 3325 425
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 6
- 3375 400 3300 400 3300 350 3450 350 3450 400 3375 400
+ 3375 450 3300 450 3300 300 3450 300 3450 450 3375 450
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2
3425 325 3325 325
-6
@@ -297,9 +297,11 @@ Single
6 1650 1575 2250 2025
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2
1650 1800 1775 1800
+6 1775 1590 2125 2010
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 4
1915 2010 1775 2010 1775 1590 1915 1590
5 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 1915 1800 1915 1590 2125 1800 1915 2010
+-6
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2
2125 1800 2250 1800
-6
diff --git a/graphics/circuit_macros/gpic.m4 b/graphics/circuit_macros/gpic.m4
index 4a69dcd786..b53634ead2 100644
--- a/graphics/circuit_macros/gpic.m4
+++ b/graphics/circuit_macros/gpic.m4
@@ -1,7 +1,7 @@
divert(-1)
gpic.m4 Initialization for gpic.
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/lib3D.m4 b/graphics/circuit_macros/lib3D.m4
index a7f3d95ac2..7cc49756ec 100644
--- a/graphics/circuit_macros/lib3D.m4
+++ b/graphics/circuit_macros/lib3D.m4
@@ -3,7 +3,7 @@ lib3D.m4 Macros for rotation, projection, and other
operations on argument triples representing
3D vectors or colors.
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
@@ -244,26 +244,34 @@ define(`M4F_P',
`shadedball( rad,
highlight rad, highlight degrees,
- initial shade, final shade )
+ initial gray, final gray | (rf,gf,bf) )
The highlight is by default at
radius rad*3/5 and angle 110 deg
(or arg2 deg); if setlight has been
- invoked then the highlight is as
- given by its azimuth and elevation arguments'
+ invoked then its azimuth and elevation arguments
+ determine highlight position.
+ Arg5 can be a parenthesized rgb color '
define(`shadedball',`[ C: (0,0); r = ifelse(`$1',,circlerad,`$1')
ifdef(`setlight_',
`H: (project(sprod3D(r,light3D1,light3D2,light3D3)))
hr = distance(C,H)',
`hr = ifelse(`$2',,r*3/5,`$2'); ha = ifelse(`$3',,110,`$3')
H: (cosd(ha)*hr,sind(ha)*hr)')
- u0 = ifelse(`$4',,1,`$4'); uf = ifelse(`$5',,0.25,`$5')
+ rgbtohsv(ifelse(`$4',,`1,1,1',``$4',`$4',`$4''),h0,s0,v0)
+ pushdef(`rgbf',`ifelse(`$5',,`(0.25,0.25,0.25)pushdef(`oneshade',1)',
+ substr(`$5',0,1)substr(`$5',decr(len(`$5')),1),(),`$5'pushdef(`oneshade',0),
+ `(`$5',`$5',`$5')pushdef(`oneshade',1)')')
+ rgbtohsv(patsubst(rgbf,`^ *('\|`) *$'),hf,sf,vf)
rm = r+hr; n = int(rm/(linethick bp__))
- for i=1 to n-1 do { x = i/n*rm; u = u0+(i/n)^2*(uf-u0)
+ for i=1 to n-1 do { x = i/n*rm; ifelse(oneshade,1,
+ `hs = h0+(i/n)^2*(hf-h0); ss = s0+(i/n)^2*(sf-s0); vs = v0+(i/n)^2*(vf-v0)
+ hsvtorgb(hs,ss,vs,ri,gi,bi)',
+ `hsvtorgb(hf,(i/n)^2,vf,ri,gi,bi)')
if x <= (r-hr) then {
- circle rad x thick linethick*1.6 outlined rgbstring(u,u,u) at H } \
- else { arc cw thick linethick*ifpgf(2,1.6) outlined rgbstring(u,u,u) \
+ circle rad x thick linethick*1.6 outlined rgbstring(ri,gi,bi) at H } \
+ else { arc cw thick linethick*ifpgf(2,1.6) outlined rgbstring(ri,gi,bi) \
from Cintersect(H,x,C,r) to Cintersect(H,x,C,r,R) with .c at H } }
- circle rad r ifpgf(+linethick bp__/2) at C
- `$6']')
+ circle rad r ifpgf(+linethick bp__/2) outlined rgbstring(ri,gi,bi) at C
+ `$6' popdef(`rgbf',`oneshade') ]')
divert(0)dnl
diff --git a/graphics/circuit_macros/libSLD.m4 b/graphics/circuit_macros/libSLD.m4
index d13d57a51b..c2b29ddcf8 100644
--- a/graphics/circuit_macros/libSLD.m4
+++ b/graphics/circuit_macros/libSLD.m4
@@ -2,7 +2,7 @@ divert(-1)
libSLD.m4 Draft macros for single-line diagram elements
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/libcct.m4 b/graphics/circuit_macros/libcct.m4
index 463ff4515e..d46990f88a 100644
--- a/graphics/circuit_macros/libcct.m4
+++ b/graphics/circuit_macros/libcct.m4
@@ -1,7 +1,7 @@
divert(-1)
libcct.m4
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
@@ -206,132 +206,126 @@ define(`capacitor',
{[box invis ht_ m4cht wid_ m4cwd ] at rvec_(rp_len/2,0)}
line to rvec_(rp_len,0) invis ')')
- `resistor( linespec, cycles, chars, cycle wid)
- cycles: default 3
- chars : AC: complex element
- E: ebox
- ES: ebox with slash
- Q: offset
- H: squared
- N: IEEE (default)
- B: not burnable
- V: varistor variant
- R: to right of drawing direction
- arg4: cycle width (default dimen_/6)'
+ `resistor( linespec, cycles, chars, cycle wid )
+ chars: AC: complex element
+ E: ebox
+ ES: ebox with slash
+ F: FDNR (freq-dependent neg resistor)
+ Q: offset
+ H: squared
+ N: IEEE (default)
+ B: not burnable
+ V: varistor variant
+ R: to right of drawing direction'
define(`resistor',
-`define(`m4h',`ifelse(`$4',,`dimen_/6',`($4)')/4')dnl
- ifinstr(
- `$2',E, # This is obsolete but kept for now
+`eleminit_(`$1'); M4S: last line.start; M4E: last line.end
+ define(`m4type',ifelse(`$3',,N,`$3',R,N,`$3')`')dnl
+ define(`m4neg',sc_draw(`m4type',R,-))dnl
+ define(`m4cycles',`ifelse(`$2',,3,(`$2'))')dnl
+ define(`m4cyclewid',`ifelse(`$4',,(dimen_/6),`($4)')')dnl
+ define(`m4lgth',`(m4cycles*m4cyclewid)')dnl
+ ifelse(
+ `$2',E, # This is obsolete but kept for now
`ebox(`$1',shift(shift($@)))',
- `$3',ES,
- `ebox(`$1')
- {line from last line.c+vec_( m4lgth*0.3, m4wdth/2) \
- to last line.c+vec_(-m4lgth*0.3,-m4wdth/2)}
- line invis from 2nd last line.start to 2nd last line.end',
- `$3',E,
- `ebox(`$1')',
- `$3',V,
- `M4_varistor($@)',
- `$3',AC,
- `ebox(`$1')
- { ACsymbol(at last [],m4h*3.5,m4h*2,R)
- [] wid 2nd last [].wid ht 2nd last [].ht at 2nd last [] }',
- `define(`dna_',ifelse(`$3',,N,`$3',R,N,`$3')`')dnl
- eleminit_(`$1')
- sc_draw(`dna_',N,
- `define(`m4n',`ifelse(`$2',,6,`eval(2*($2))')')dnl Default resistor:
- define(`m4v',2)dnl
- if m4h*m4n*2 > rp_len then { eleminit_(to rvec_(m4h*m4n*2,0)) }
- tr_xy_init(last line.c, m4h, sc_draw(`dna_',R,-))dnl
- { line from last line.start to tr_xy(-m4n,0)\
- for_(2,m4n,2,
- `then to tr_xy(eval(2*m4x-3-m4n), m4v) \
- then to tr_xy(eval(2*m4x-1-m4n),-m4v) \')dnl
- then to tr_xy(m4n, 0) \
- then to last line.end
- [box invis ht_ m4h*m4v*2 wid_ m4h*m4n*2] at 2nd last line.c
- }')
- sc_draw(`dna_',Q,
- `define(`m4n',`ifelse(`$2',,6,`eval(2*($2))')')dnl
- define(`m4v',2)dnl
- if m4h*m4n*2 > rp_len then { eleminit_(to rvec_(m4h*m4n*2,0)) }
- tr_xy_init(last line.c, m4h, sc_draw(`dna_',R,-))dnl
- { line from last line.start to tr_xy(-m4n,0)\
- for_(2,m4n,2,
- `then to tr_xy(eval(2*m4x-2-m4n), m4v*2) \
- then to tr_xy(eval(2*m4x-m4n),0) \')dnl
- then to tr_xy(m4n, 0) \
- then to last line.end
- [box invis ht_ m4h*m4v*2 wid_ m4h*m4n*2] at 2nd last line.c + ta_xy(0,m4v)
- }')
- sc_draw(`dna_',H,
- `define(`m4n',`ifelse(`$2',,5,`eval(2*($2)-1)')')dnl
- define(`m4hh',`m4h*6/5')dnl
- define(`m4v',7/3)dnl
- if m4hh*m4n*2 > rp_len then { eleminit_(to rvec_(m4hh*m4n*2,0)) }
- tr_xy_init(last line.c, m4hh, sc_draw(`dna_',R,-))dnl
- { line from last line.start to tr_xy(-m4n,0)\
- for_(-m4n,m4n,2,
- `ifelse(eval(((m4x+m4n)/2)%2),0,
- `then to tr_xy(m4x,m4v) \
- then to tr_xy(eval(m4x+2),m4v) \',
- `then to tr_xy(m4x,0) \
- ifelse(m4x,m4n,,`then to tr_xy(eval(m4x+2),0)')\')')dnl
- then to tr_xy(m4n, 0) \
- then to last line.end
- [box invis ht_ m4hh*m4v wid_ m4hh*m4n*2] at 2nd last line.c+(0,m4hh*m4v/2)
- }')
- sc_draw(`dna_',B,
- `resistor(`$1',`$2',dna_,`$4'); M4LBC: last line.c
- m4lbwd = last [].wid_+lthick*2; m4lbht = last [].ht_+lthick*2
- [lbox(m4lbwd,m4lbht,thick 0.4)] with .c at M4LBC
- [lbox(m4lbwd+2bp__,m4lbht+2bp__,thick 0.4)] with .c at M4LBC ')
-#
- line invis from 2nd last line.start to 2nd last line.end ')')
-
-define(`M4_varistor',`eleminit_(`$1')
- define(`m4wd',`dimen_/2')dnl
- define(`m4ht',`dimen_/4')dnl
- {line to rvec_(max(0,rp_len/2-m4wd/2),0)
- {m4fshade(m4fill,line to rvec_(0,ifinstr(`$3',R,,-)m4ht/2) \
- then to rvec_(m4wd/2,0) \
- then to Here)}
- move to rvec_(m4wd,0)
- m4fshade(m4fill,line to rvec_(0,ifinstr(`$3',R,-)m4ht/2) \
- then to rvec_(-m4wd/2,0) \
- then to Here)
- line to rvec_(max(0,rp_len/2-m4wd/2),0) }
- {[box invis ht_ m4ht wid_ m4wd] at rvec_(rp_len/2,0)}
- line to rvec_(rp_len,0) invis ')
+ m4type,N,
+ `define(`m4nN',`eval(2*m4cycles)')dnl Default resistor:
+ define(`m4v',2)dnl
+ if m4lgth > rp_len then { eleminit_(to rvec_(m4lgth,0)) }
+ tr_xy_init(last line.c, m4cyclewid/4, m4neg)dnl
+ { line from last line.start to tr_xy(-m4nN,0)\
+ for_(2,m4nN,2,
+ `then to tr_xy(eval(2*m4x-3-m4nN), m4v) \
+ then to tr_xy(eval(2*m4x-1-m4nN),-m4v) \')dnl
+ then to tr_xy(m4nN, 0) \
+ then to last line.end # This could be replaced for obtuse directions:
+ [box invis ht_ m4cyclewid*m4v/2 wid_ m4cyclewid*m4nN/2] at 2nd last line.c
+ }',
+ m4type,Q,
+ `define(`m4nQ',`eval(2*m4cycles)') define(`m4v',2)dnl
+ if m4cyclewid*m4nQ/2 > rp_len then {
+ eleminit_(to rvec_(m4cyclewid*m4nQ/2,0)) }
+ tr_xy_init(last line.c, m4cyclewid/4, m4neg)dnl
+ { line from last line.start to tr_xy(-m4nQ,0)\
+ for_(2,m4nQ,2,
+ `then to tr_xy(eval(2*m4x-2-m4nQ), m4v*2) \
+ then to tr_xy(eval(2*m4x-m4nQ),0) \')dnl
+ then to tr_xy(m4nQ, 0) \
+ then to last line.end
+ [box invis ht_ m4cyclewid*m4v/2 wid_ m4cyclewid*m4nQ/2] \
+ at 2nd last line.c + ta_xy(0,m4v)
+ }',
+ m4type,ES,
+ `ebox(`$1',m4lgth,dimen_/5)
+ {line from last line.c+vec_( dimen_/2*0.3, dimen_/5/2) \
+ to last line.c+vec_(-dimen_/2*0.3,-dimen_/5/2)}',
+ m4type,F,
+ `define(`m4cht',`dimen_/3') define(`m4cwd',`m4cht*0.9')dnl
+ {line to rvec_(rp_len/2-m4cwd/2,0)
+ {[for i=0 to m4cycles do {line from vec_(i*m4cwd/m4cycles,0) \
+ to vec_(i*m4cwd/m4cycles,m4cht)}] at rvec_(m4cwd/2,0)}
+ line from rvec_(m4cwd,0) to rvec_(rp_len/2+m4cwd/2,0)}',
+ m4type,H,
+ `define(`m4nH',`eval(2*m4cycles-1)')dnl
+ define(`m4hh',`m4cyclewid*6/5/4') define(`m4v',7/3)dnl
+ if m4hh*m4nH/2 > rp_len then { eleminit_(to rvec_(m4hh*m4nH/2,0)) }
+ tr_xy_init(last line.c, m4hh, m4neg)dnl
+ { line from last line.start to tr_xy(-m4nH,0)\
+ for_(-m4nH,m4nH,2,
+ `ifelse(eval(((m4x+m4nH)/2)%2),0,
+ `then to tr_xy(m4x,m4v) \
+ then to tr_xy(eval(m4x+2),m4v) \',
+ `then to tr_xy(m4x,0) \
+ ifelse(m4x,m4nH,,`then to tr_xy(eval(m4x+2),0)')\')')dnl
+ then to last line.end
+ [move from tr_xy(-m4nH,0) to tr_xy(m4nH,0) \
+ then to tr_xy(m4nH,m4v) then to tr_xy(-m4nH,m4v)] \
+ at 2nd last line.c+vec_(0,m4neg`'m4hh*m4v/2) }',
+ m4type,V,
+ `define(`m4ht',`(m4lgth/2)')dnl
+ {line to rvec_(max(0,rp_len/2-m4lgth/2),0)
+ {[m4fshade(m4fill,line to rvec_(0,ifinstr(`$3',R,,-)m4ht/2) \
+ then to rvec_(m4lgth,ifinstr(`$3',R,-)m4ht/2) \
+ then to rvec_(m4lgth,0) then to Here)] at rvec_(m4lgth/2,0) }
+ line from rvec_(m4lgth,0) to rvec_(max(0,rp_len/2+m4lgth/2),0) } ',
+ m4type,B,
+ `resistor(`$1',`$2',sc_draw(`m4type',B),`$4'); M4LBC: last line.c
+ m4lbwd = last [].wid_+lthick*2; m4lbht = last [].ht_+lthick*2
+ [lbox(m4lbwd,m4lbht,thick 0.4)] with .c at M4LBC
+ [lbox(m4lbwd+lthick*4,m4lbht+lthick*4,thick linethick/2)] with .c at M4LBC',
+ m4type,AC,
+ `ebox(`$1')
+ { ACsymbol(at last [],m4cyclewid*3.5/4,m4cyclewid/2,R)
+ [] wid 2nd last [].wid ht 2nd last [].ht at 2nd last [] } ')
+ ifelse(m4type,E,`ebox(`$1')',
+ `line invis from M4S to M4E') ')
`potentiometer(linespec, cycles,
fractional pos, length, fractional pos, length,...)
Resistor in a block, tapped at fractional positions
with specified (possibly negative) arrow lengths.
- Taps are labelled T1, T2, ...
- Uses side effects of resistor macro'
+ Taps are labelled T1, T2, ...'
define(`potentiometer',`[R: resistor(`$1',`$2')
- Start: R.start; End: R.end; C: 0.5 between Start and End
+ define(`m4n',`ifelse(`$2',,3,(`$2'))')dnl
+ Start: R.start; End: R.end; C: R.c
m4pot_arrows(1,ifelse(`$3',,0.5,`$3'),ifelse(`$4',,`dimen_*5/12',`$4'),
- shift(shift(shift(shift($@)))))] ')
-define(`m4pot_arrows',`ifelse(`$2',,,`
- x = (`$2')*2*m4n+1; x = (int(x)%4)+(x-int(x))
- M4_Tmp: `$2' between last [].c-vec_(prod_(m4n,m4h),0) \
- and last [].c+vec_(prod_(m4n,m4h),0)
- T`$1': M4_Tmp + vec_(0,ifelse(`$3',,`dimen_*5/12',`$3'))
- { arrow from T`$1' to M4_Tmp+vec_(0,m4h*m4v*(1-(x-2)*sign(x-2))) }
+ shift(shift(shift(shift($@)))))] ')
+define(`m4pot_arrows',`ifelse(`$2',,,`FrP: C+vec_((`$2'-0.5)*m4n*dimen_/6,0)
+ T`$1': FrP + vec_(0,ifelse(`$3',,`dimen_*5/12',`$3'))
+ x = (`$2')*4*m4n+1; x = (int(x)%4)+(x-int(x))
+ {arrow from T`$1' to FrP+vec_(0,dimen_/12*(1-(x-2)*sign(x-2)))}
m4pot_arrows(incr($1),shift(shift(shift($@))))')')
`KelvinR(cycles,[R],cycle wid)
IEEE resistor with kelvin taps added
- if arg1 is blank then a [] block is used'
+ if arg1 is blank then a [] block is used
+ Uses m4nN and tr_xy from resistor'
define(`KelvinR',`[
- M4R: resistor(,`$1',,`$3') define(`m4kRm',`ifinstr(`$2',R,-,+)')
- { dot(at tr_xy(-m4n,0),lthick)
- line to tr_xy(-m4n-1,m4kRm`'2) then to tr_xy(-m4n-1,m4kRm`'4)
+ M4R: resistor(,`$1',,`$3') define(`m4KRm',`ifinstr(`$2',R,-,+)')
+ { dot(at tr_xy(-m4nN,0),lthick)
+ line to tr_xy(-m4nN-1,m4KRm`'2) then to tr_xy(-m4nN-1,m4KRm`'4)
T1: Here
- dot(at tr_xy(m4n,0),lthick)
- line to tr_xy(m4n+1,m4kRm`'2) then to tr_xy(m4n+1,m4kRm`'4)
+ dot(at tr_xy(m4nN,0),lthick)
+ line to tr_xy(m4nN+1,m4KRm`'2) then to tr_xy(m4nN+1,m4KRm`'4)
T2: Here }
Start: M4R.start; End: M4R.end; C: M4R.c
`$4' ]') ')
@@ -375,20 +369,21 @@ define(`FTcap',`[ define(`FTctyp',`ifelse(`$1',,A,`$1')')dnl
`addtaps([ahead | type=ahead;name=Name],
fractional pos, length, fractional pos, length,...)
+ ahead = blank or one of . - <- -> <->
Tap names are Tap1, Tap2, ... or
- Name1, Name2, ... if specified
- ahead = blank or one of . - <- -> <-> '
+ Name1, Name2, ... if specified'
define(`addtaps',`
ifelse(`$2',,`undefine(`m4tap_x')popdef(`m4type',`m4name')',
`ifdef(`m4tap_x',`define(`m4tap_x',incr(m4tap_x))',
- `define(`m4tap_x',1) M4tap_w: last [].w_; M4tap_e: last [].e_
+ `define(`m4tap_x',1) dnl 1st time through
+ M4tap_w: last [].w_; M4tap_e: last [].e_
pushkeys_(`$1',type::N; name:Tap:N)dnl
- ifelse(m4type,,`ifinstr(`$1',=,,`define(`m4type',`$1')')')dnl
+ ifelse(m4type,,`ifinstr(`$1',=,,`poppushdef(`m4type',`$1')')')dnl
M4tap_xy: (last [].wid_,last [].ht_)')
{define(`m4tapl',`ifelse(`$3',,`dimen_/3',`$3')')dnl
move to (`$2' between M4tap_w and M4tap_e) + vec_(0,sign(m4tapl)*M4tap_xy.y/2)
- ifinstr(m4type,.,`{dot(,lthick)}define(`m4type')');dnl
- line ifelse(m4type,-,,m4type) to rvec_(0,m4tapl)
+ ifinstr(m4type,.,`{dot(,lthick)}');dnl
+ line ifelse(m4type,.,,m4type,-,,m4type) to rvec_(0,m4tapl)
m4name`'m4tap_x: Here }
addtaps(,shift(shift(shift($@))))')')
@@ -565,20 +560,30 @@ define(`transformer', `[ P1: Here define(`m4drt',m4_dir_)
define(`m4trdot',`{`$6'dot(at (0.5 between `$1' and `$2') \
+vec_(`$3'(`$4'+m4hlw)/2,`$5'dimen_/16), dotrad_/2)}')
- `delay( linespec, width, attributes )'
+ `delay( linespec, width, attributes or keys )
+ keys:
+ wdth=expr;
+ lgth=expr;
+ type=A|S;
+ body=attributes; e.g. shaded '
define(`delay',`eleminit_(`$1')
- define(`m4ht',`ifelse(`$2',,`delay_rad_*2',`($2)')')dnl
- define(`m4wd',`m4ht*5/6')dnl
- { line to rvec_(rp_len/2-m4wd/2,0)
- { line from rvec_(m4ht/3,-m4ht/2) \
- to rvec_(0,-m4ht/2)\
- then to rvec_(0,m4ht/2) \
- then to rvec_(m4ht/3,m4ht/2) `$3'
- arc cw from Here to rvec_(0,-m4ht) with .c at rvec_(0,-m4ht/2) `$3' }
- move to rvec_(m4wd,0)
- line to rvec_(rp_len/2-m4wd/2,0) }
- { [box invis ht_ m4ht wid_ m4wd ] at rvec_(rp_len/2,0)}
- line to rvec_(rp_len,0) invis ')
+ pushkeys_(`$3',`wdth:ifelse(`$2',,delay_rad_*2,`$2'); lgth:m4`'wdth*5/6;
+ type:A:N; body::N;') dnl
+ ifinstr(`$3',=,,`ifelse(m4body,,`poppushdef(`m4body',`$3')')')dnl
+ ifelse(m4type,S,`popdef(`m4lgth',`m4wdth')dnl
+ pushkeys_(`$3',`lgth:dimen_*6/5; wdth:m4`'lgth/4')')dnl
+ { line to rvec_(rp_len/2-m4lgth/2,0)
+ {ifelse(m4type,A,`[ W: Here
+ line from rvec_(m4wdth/3,-m4wdth/2) to rvec_(0,-m4wdth/2) \
+ then to rvec_(0,m4wdth/2) then to rvec_(m4wdth/3,m4wdth/2) m4body
+ arc cw to rvec_(0,-m4wdth) with .c at rvec_(0,-m4wdth/2) m4body ]',
+ m4type,S,
+ `rotbox(m4lgth,m4wdth,m4body,r=m4wdth/2,
+ {rotbox(m4wdth/4,m4wdth,) with .W at rvec_(-m4lgth+m4wdth/2,0)})')\
+ with .W at Here }
+ line from rvec_(m4lgth,0) to rvec_(rp_len/2+m4lgth/2,0) }
+ line to rvec_(rp_len,0) invis dnl
+ popdef(`m4wd',`m4wdth',`m4type',`m4body') ')
`xtal( linespec, keys ) (2-terminal crystal)
keys:
@@ -594,15 +599,15 @@ define(`delay',`eleminit_(`$1')
outer= outer circle attributes; (dotted ...)
inner= inner circle attributes; (shaded ...)'
define(`xtal',`eleminit_(`$1') pushkey_(`$2',type,N,N)
- ifelse(m4type,R,`pushkeys_(`$2',`outerdiam:dimen_/3; innerdiam:m4outerdiam*0.4;
- outer::N; inner::N') define(`m4wd',m4outerdiam) ',
+ ifelse(m4type,R,`pushkeys_(`$2',`outerdia:dimen_/3;innerdia:m4`'outerdia*0.4;
+ outer::N; inner::N;') define(`m4wd',m4outerdia) ',
`pushkeys_(`$2',`wdth:dimen_/4; lgth:m4wdth*2/3; bxwd:m4lgth/2; box::N;')dnl
define(`m4wd',m4lgth) ')
{ line to rvec_(rp_len/2-m4wd/2,0)
{[ Orig: Here; ifelse(m4type,R,
- `{circle diam m4outerdiam at rvec_(m4outerdiam/2,0) m4outer}
- {circle diam m4innerdiam at rvec_(m4outerdiam/2,0) m4inner}
- popdef(`m4type',`m4outerdiam',`m4innerdiam',`m4outer',`m4inner') ',
+ `{circle diam m4outerdia at rvec_(m4outerdia/2,0) m4outer}
+ {circle diam m4innerdia at rvec_(m4outerdia/2,0) m4inner}
+ popdef(`m4type',`m4outerdia',`m4innerdia',`m4outer',`m4inner') ',
`{line from rvec_(0,-m4wdth/3) \
to rvec_(0,m4wdth/3)}
{ move to rvec_(m4lgth/2-m4bxwd/2,0)
@@ -631,7 +636,8 @@ define(`xtal',`eleminit_(`$1') pushkey_(`$2',type,N,N)
ii = double arrowhead current source;
AC = AC source; B = bulb; F = fluorescent; G =
generator; H = step function; L = lamp;
- N = neon; P = pulse; Q = charge; R = ramp; r = right
+ N = neon; NA = neon 2; NB = neon 3;
+ P = pulse; Q = charge; R = ramp; r = right
orientation; S = sinusoid; SC = quarter arc; SE =
arc; T = triangle; U = square-wave; X = interior X;
other = custom interior label or waveform;
@@ -691,14 +697,28 @@ define(`source',`ifelse(`$4',R,
then to rvec_(m4h/2,0)
round
line to rvec_(m4h*3/4,0)}',
+ `$2',NA,`{ line from rvec_(-m4h,0) \
+ to rvec_(-m4h/5,0)
+ { line to rvec_(0,m4h) with .c at Here } }
+ { line from rvec_(m4h,0) \
+ to rvec_(m4h/5,0)
+ { line to rvec_(0,m4h) with .c at Here } }
+ { dot(at rvec_(-m4h/2,-m4h/2)) } ',
+ `$2',NB,`{ line from rvec_(-m4h,0) \
+ to rvec_(-m4h/2,0)
+ { line to rvec_(0,m4h) with .c at Here } }
+ { line from rvec_(m4h,0) \
+ to rvec_(m4h/2,0)
+ { dot(,,1) } }
+ { dot(at rvec_(0,-m4h/2)) } ',
`$2',N,`{ {line from rvec_(-m4h,0) \
to rvec_(-m4h/2,0)}
for_(70,250,180,
`{ line from rvec_(Rect_(m4h/2,-m4x)) \
- to rvec_(Rect_(m4h/2,m4x))
+ to rvec_(Rect_(m4h/2,m4x))
round }
{ arc cw from rvec_(Rect_(m4h/2,m4x)) \
- to rvec_(Rect_(m4h/2,-m4x)) \
+ to rvec_(Rect_(m4h/2,-m4x)) \
with .c at Here
round }')
{line from rvec_(m4h/2,0) \
@@ -834,6 +854,18 @@ define(`consource',`ifelse(`$3',R,
{[box invis ht_ 2*csdim_ wid_ 2*csdim_] at rvec_(rp_len/2,0)}
line to rvec_(rp_len,0) invis ')')
+ `geiger( linespec, r, diameter, R, attributes, body name)
+ Arguments as for source except arg2 r = right orientation '
+define(`geiger',`pushdef(`m4h',ifelse(`$3',,`sourcerad_',`($3)/2'))dnl
+ pushdef(`m4R',`ifelse(`$4',R,+180)')dnl
+ source(`$1',F,shift(shift($@)))
+ {dot(at rvec_(-rp_len/2,0)+vec_(Rect_(m4h*2/3,ifelse(`$2',r,,-)110 m4R)))}
+ {"iflatex($+$,+)" at rvec_(-rp_len/2,0) \
+ +vec_(Rect_(m4h*3/2,ifelse(`$2',r,,-)30 m4R))}
+ {em_arrows(ND,rp_ang*rtod_ ifelse(`$2',r,+,-)135 m4R,m4h) with .Head \
+ at rvec_(-rp_len/2,0)+vec_(Rect_(m4h*5/4,ifelse(`$2',r,-)45 m4R))} dnl
+ popdef(`m4h',`m4R') ')
+
`Proxim(size, U|D|L|R|degrees, attributes)
Proximity symbol
Arg2 default: current direction'
@@ -888,7 +920,7 @@ define(`battery',`ifelse(`$3',R,
`ebox(linespec, length, ht, greyvalue,
box attributes)
- Length and ht (of the elemet) are relative to
+ Length and ht (of the element) are relative to
the direction of linespec'
Alternative:
`ebox(linespec, keys)
@@ -902,23 +934,23 @@ define(`ebox',`eleminit_(`$1')
line to rvec_(max(0,rp_len/2-m4lgth/2),0); M4ebC: rvec_(m4lgth/2,0)
lbox(m4lgth,m4wdth,m4box)
ifelse(m4text,,,`{m4text at M4ebC};')',
- `define(`m4lgth',`ifelse(`$2',,dimen_/2,`$2')')dnl
- define(`m4wdth',`ifelse(`$3',,dimen_/5,`$3')')dnl
+ `pushdef(`m4lgth',`ifelse(`$2',,dimen_/2,`$2')')dnl
+ pushdef(`m4wdth',`ifelse(`$3',,dimen_/5,`$3')')dnl
line to rvec_(max(0,rp_len/2-m4lgth/2),0)
ifelse(`$4',,`lbox(m4lgth,m4wdth,`$5')',
`m4fshade(`$4',lbox(m4lgth,m4wdth,`$5'))')')
line to rvec_(max(0,rp_len/2-m4lgth/2),0)}
{[ box invis ht_ m4wdth wid_ m4lgth ] at rvec_(rp_len/2,0)}
- ifinstr(`$2',=,`popdef(`m4lgth',`m4wdth',`m4text',`m4box')')dnl
+ popdef(`m4wdth',`m4lgth')ifinstr(`$2',=,`popdef(`m4text',`m4box')')dnl
line to rvec_(rp_len,0) invis ')
`fuse( linespec, chars, wid, ht, attributes )
chars dA|B|C|D|S|SB|HB|HC or dA (=D)'
define(`fuse',`eleminit_(`$1')
- define(`m4fusetype',`ifelse(`$2',,A,`$2',D,dA,`$2')')dnl
- define(`m4ht',ifelse(`$4',,`dimen_/5'ifinstr(`$2',H,*5/3),`($4)'))dnl
- define(`m4d',ifinstr(`$2',H,`m4ht/5',0))dnl
- define(`m4wd',ifelse(`$3',,`m4ht*2',`($3)'))dnl
+ pushdef(`m4fusetype',`ifelse(`$2',,A,`$2',D,dA,`$2')')dnl
+ pushdef(`m4ht',ifelse(`$4',,`dimen_/5'ifinstr(`$2',H,*5/3),`($4)'))dnl
+ pushdef(`m4d',ifinstr(`$2',H,`m4ht/5',0))dnl
+ pushdef(`m4wd',ifelse(`$3',,`m4ht*2',`($3)'))dnl
{line to rvec_(max(0,rp_len/2-m4wd/2),0)
sc_draw(`m4fusetype',HB,
`{move to rvec_(m4d,0); lbox(m4wd-2*m4d,m4ht-2*m4d)}
@@ -959,6 +991,7 @@ define(`fuse',`eleminit_(`$1')
move to rvec_(m4wd,0); line to rvec_(max(0,rp_len/2-m4wd/2),0)')
}
{[box invis ht_ m4ht wid_ m4wd] at rvec_(rp_len/2,0)}
+ popdef(`m4wd',`m4d',`m4ht',`m4fusetype')dnl
line to rvec_(rp_len,0) invis ')
`arrester( linespec, [G|E|S][D[L|R]],
@@ -1113,7 +1146,7 @@ define(`heater',`ifinstr(`$5',E,
cycles=expr;
line=attributes'
define(`heatere',
-`pushkeys_(`$2',`lgth:dimen_/2; wdth:m4lgth*2/5; cycles:3; line::N;')dnl
+`pushkeys_(`$2',`lgth:dimen_/2; wdth:m4`'lgth*2/5; cycles:3; line::N;')dnl
ifinstr(`$3',R,`pushdef(`m4ng',-)pushdef(`m4cw')pushdef(`m4ccw',cw)',
`pushdef(`m4ng') pushdef(`m4cw',cw)pushdef(`m4ccw')')dnl
eleminit_(ifinstr(`$3',T,m4wdth,`$1'))
@@ -1738,16 +1771,16 @@ define(`amp',`eleminit_(`$1') define(`m4wd',`ifelse(`$2',,`dimen_',`($2)')')dnl
`integrator( linespec,size,attributes )'
define(`integrator',`eleminit_(`$1')
define(`m4wd',`ifelse(`$2',,`dimen_',`($2)')')dnl
- {line from rvec_(m4wd/4,m4wd/2) \
+ {[ In: Here
+ {line from rvec_(m4wd/4,m4wd/2) \
to rvec_(0,m4wd/2) \
then to rvec_(0,-m4wd/2) \
then to rvec_(m4wd/4,-m4wd/2) `$3' }
- {line from rvec_(m4wd*5/4,0) \
- to rvec_(m4wd/4,m4wd/2) \
- then to rvec_(m4wd/4,-m4wd/2) \
- then to rvec_(m4wd*5/4,0) `$3' }
+ line from rvec_(m4wd*5/4,0) \
+ to rvec_(m4wd/4,m4wd/2) \
+ then to rvec_(m4wd/4,-m4wd/2) \
+ then to rvec_(m4wd*5/4,0) `$3' ; Out: Here ] with .In at Here}
{line from rvec_(m4wd*5/4,0) to rvec_(max(rp_len,m4wd*5/4),0) }
- { [box invis ht_ m4wd wid_ m4wd*5/4] at rvec_(m4wd*5/8,0) }
line to rvec_(max(rp_len,m4wd*5/4),0) invis ')
`opamp(linespec,
@@ -1765,7 +1798,7 @@ define(`integrator',`eleminit_(`$1')
T: truncated point '
define(`opamp',
`[ pushdef(`m4dlgth',`ifinstr(`$4',=,dimen_,ifelse(`$4',,dimen_,`($4)'))')dnl
- pushkeys_(`$4',body::N; lgth:m4dlgth; wdth:m4lgth;)dnl
+ pushkeys_(`$4',`body::N; lgth:m4dlgth; wdth:m4`'lgth;')dnl
pushdef(`dna_',`$5')dnl
eleminit_(`$1',max(elen_-m4lgth/4,m4lgth))
W: Here
@@ -2224,23 +2257,23 @@ define(`sbs',`eleminit_(`$1'); M4_sbsS: last line.start; M4_sbsE: last line.end
`tgate( linespec, [B][R|L] ) Transmission gate
B= box form
L= left orientation'
-define(`tgate',`[ eleminit_(`$1') define(`m4tgm',ifinstr(`$2',L,-))
+define(`tgate',`[ eleminit_(`$1') pushdef(`m4tgm',ifinstr(`$2',L,-))
A: last line.start
B: last line.end
C: last line.center
ifinstr(`$2',B,
- `ebox(from A to B)
- Gb: C+vec_(0,m4tgm`'m4wdth/2)
+ `ebox(from A to B,,dimen_/5)
+ Gb: C+vec_(0,m4tgm`'dimen_/5/2)
L1: line from 2 between Gb and C to 4 between Gb and C',
- `m4gen_d(uLAQuR)
+ `m4gen_d(uLAQuR) pushdef(`m4dv',`dimen_/6')pushdef(`m4dh',sqrt(3)*m4dv/2)
Circle: circle thick max(4pt__,linethick/2) rad m4dh/4 \
at C+vec_(0,m4tgm`'m4dh/4*4/3)
L2: line from last circle+vec_(0,m4tgm`'m4dh/4) \
to C+vec_(0,m4tgm`'m4dh*3/2)
Gb: Here
- L3: line from C to C-vec_(0,m4tgm`'m4dh) ')
+ L3: line from C to C-vec_(0,m4tgm`'m4dh) popdef(`m4dv',`m4dh')')
G: Here
- `$3']')
+ `$3' popdef(`m4tgm')]')
`ptrans( linespec, [R|L] ) Pass transistor
L= left orientation'
define(`ptrans',`[ eleminit_(`$1') define(`m4ptm',ifinstr(`$2',L,-))
@@ -2739,7 +2772,9 @@ define(`$1',substr($1,0,m4I_)`'substr($1,m4t))')')dnl
sc_draw(dna string, chars, iftrue, iffalse)'
define(`sc_draw',`m4_dna(`$1',`$2')ifelse(m4I_,-1,`$4',`$3')')
- `Element labels at the start, centre, and end
+ `(r|l|c)label( label, label, label,
+ relative position, block name )
+ Element labels at the start, centre, and end
of the last [] block (or a named [] block)
in the current direction. Labels are
spaced and treated as math, but copied
@@ -2799,16 +2834,16 @@ define(`dlabel',`ifsvg(`changecom(,)')dnl
ifinstr(`$6',L,ljust,`$6',R,rjust) dnl
ifinstr(`$6',A,above,`$6',B,below) };') ifsvg(`changecom(`#',)')')
- `eleminit_( linespec, default length )
- compute element direction and length.
- Eleminit_ defines the position, length,
- and angle of two-terminal elements. It calls
- rpoint_ with its linespec or circuit-element
- default. The rpoint_ macro draws the invisible
- line determined by its argument, calculates the
- length and angle, and gives the angle to the
- point_ macro to set the rotation parameters used
- by vec_ and rvec_.'
+ `eleminit_( linespec, default length )
+ compute element direction and length.
+ eleminit_ defines the position, length,
+ and angle of two-terminal elements. It calls
+ rpoint_ with its linespec or circuit-element
+ default. The rpoint_ macro draws the invisible
+ line determined by its argument, calculates the
+ length and angle, and gives the angle to the
+ point_ macro to set the rotation parameters used
+ by vec_ and rvec_.'
define(`eleminit_',
`rpoint_(ifelse(`$1',,`to rvec_(ifelse(`$2',,`elen_',`$2'),0)',`$1'))')
@@ -2866,48 +2901,6 @@ define(`parallel_',
] with .Start at Here; move to last [].End
')
-ifelse(0,1,` dnl ignore the following two macro defs ##################
- `par_( element, element, separation )
- Parallel combination of two branches that have
- the same direction and length. The
- branch arguments must be quoted, e.g.
- par_(`resistor',`capacitor',dimen_)'
-` ***WARNING: this macro is considered obsolete'
-define(`par_',`[Start: Here; r = ifelse(`$3',,`dimen_',`$3')
- { move to Start + vec_(0,r/2); $1 }
- line from Start + vec_(0,r/2) \
- to Start + vec_(0,-r/2) ; $2
- line to rvec_(0,r)
- End: last line.c; `$4'] with .Start at Here
- move to last [].End')
-
- `gpar_( element, element, separation )
- Parallel combination of two branches that have
- the same direction, e.g.:
- down_; gpar_(
- resistor;llabel(,R_1);resistor;llabel(,R_2),
- capacitor;rlabel(,C))
- This macro trades simplicity for generality
- and robustness to gpic'
-` ***WARNING: this macro is considered obsolete'
-define(`gpar_',
- `[ M4_B1: Here; `$1'; M4_E1: Here
- M4_C: 0.5 between M4_B1 and M4_E1; eleminit_(from M4_B1 to M4_E1)
- E2:[ M4_B: Here; `$2'; M4_E: Here; `$4'] \
- with .c at M4_C + (rect_(ifelse(`$3',,`dimen_',`$3'),rp_ang-pi_/2))
- M4_B2: E2.M4_B; M4_E2: E2.M4_E
- s = distance(M4_B2,M4_E2)
- if rp_len*s == 0 then { r = 1 } else { r = (1+max(rp_len/s, s/rp_len))/2 }
- if rp_len < s then { Tmp:M4_B2; M4_B2:M4_B1; M4_B1:Tmp
- Tmp:M4_E2; M4_E2:M4_E1; M4_E1:Tmp }
- line from M4_B2 to r between M4_E2 and M4_B2
- Start: 0.5 between Here and M4_B1; line to M4_B1
- line from M4_E2 to r between M4_B2 and M4_E2
- End: 0.5 between Here and M4_E1
- C: 0.5 between Start and End; line to M4_E1 ] with .Start at Here
- move to last [].End ')
-') dnl end of ignore ########################
-
define(`m4sepdefault',`dimen_') `Default separation in the parallel_ macro'
define(`m4lendefault',`dimen_') `Default length in the series_ macro'
@@ -3180,6 +3173,7 @@ define(`contact',`[ dnl
SO slow operating
SOR slow operating and release
SR slow release
+ S diagonal slash
HS high speed
NAC unaffected by AC current
AC AC current
@@ -3230,6 +3224,8 @@ define(`relaycoil',`[ ifelse(`$4',,,`setdir_(`$4')')
sc_draw(`rcdna_',HS,
`{ move to rvec_(0,-(m4ht*5/8)); lbox(m4wd,m4ht/4) }
{ move to rvec_(m4wd/2,-(m4ht/2)); line to rvec_(0,-m4ht/4)} ')
+ sc_draw(`rcdna_',S,
+ `{ line from rvec_(0,m4ht/2) to rvec_(m4wd,-m4ht/2)}')
sc_draw(`rcdna_',NAC,
`{ m4fshade(0,lbox(m4wd/4,m4ht)) }
{ move to rvec_(m4wd*3/4,0); m4fshade(0,lbox(m4wd/4,m4ht)) } ')
@@ -3549,8 +3545,8 @@ define(`nport',`[Box: box `$1'
move to Box.nw+(0,-d); down_
m4portpins(-plg,d*r,d,W,`$8')
# `North side'
- ifelse(`$3',,,`define(`m4n',`($3)')
- d = Box.wid/(m4n*(r+1)+1)
+ define(`m4n',`($3)')
+ ifelse(`$3',,,`d = Box.wid/(m4n*(r+1)+1)
move to Box.nw+(d,0); right_
m4portpins(plg,d*r,d,N,`$8')')
# `East side'
@@ -3559,11 +3555,11 @@ define(`nport',`[Box: box `$1'
move to Box.ne+(0,-d); down_
m4portpins(plg,d*r,d,E,`$8')
# `South side'
- ifelse(`$5',,,`define(`m4n',`($5)')
- d = Box.wid/(m4n*(r+1)+1)
+ define(`m4n',`($5)')
+ ifelse(`$5',,,`d = Box.wid/(m4n*(r+1)+1)
move to Box.sw+(d,0); right_
m4portpins(-plg,d*r,d,S,`$8')')
- `$9']')
+ `$9' undefine(`m4n')]')
define(`m4portpins',`for_(1,m4n,1,
`{ if (`$1' != 0) then { line to rvec_(0,`$1') }
`$4'`'m4x`'a: ifelse(xtract(`$5',N),N,Here,`dot') }
@@ -3599,8 +3595,8 @@ define(`gyrator',
define(`proximity',`consource(`$1',P)')
`nullator(linespec, wid, ht, attributes)'
define(`nullator',`eleminit_(`$1')
- define(`m4wd',ifelse(`$2',,`dimen_/2',`($2)'))dnl
- define(`m4ht',ifelse(`$3',,`dimen_/4',`($3)'))dnl
+ pushdef(`m4wd',ifelse(`$2',,`dimen_/2',`($2)'))dnl
+ pushdef(`m4ht',ifelse(`$3',,`dimen_/4',`($3)'))dnl
{line to rvec_(max(0,rp_len/2-m4wd/2),0)
move to rvec_(m4wd/2,0)
{ spline ifdpic(0.58) from rvec_(ifdpic(0,-m4wd/20),m4ht/2) \
@@ -3617,11 +3613,11 @@ define(`nullator',`eleminit_(`$1')
line from rvec_(m4wd/2,0) \
to rvec_(max(0,rp_len/2),0)}
{[box invis ht_ m4ht wid_ m4wd] at rvec_(rp_len/2,0)}
- line to rvec_(rp_len,0) invis ')
+ line to rvec_(rp_len,0) invis popdef(`m4wd',`m4ht') ')
`norator(linespec, wid, ht, attributes)'
define(`norator',`eleminit_(`$1')
- define(`m4wd',ifelse(`$2',,`dimen_/2',`($2)'))dnl
- define(`m4ht',ifelse(`$3',,`dimen_/4',`($3)'))dnl
+ pushdef(`m4wd',ifelse(`$2',,`dimen_/2',`($2)'))dnl
+ pushdef(`m4ht',ifelse(`$3',,`dimen_/4',`($3)'))dnl
{line to rvec_(max(0,rp_len/2-m4wd/2),0)
move to rvec_(m4wd/2,0)
for i=-1 to 1 by 2 do { {
@@ -3633,7 +3629,7 @@ define(`norator',`eleminit_(`$1')
line from rvec_(m4wd/2,0) \
to rvec_(max(0,rp_len/2),0)}
{[box invis ht_ m4ht wid_ m4wd] at rvec_(rp_len/2,0)}
- line to rvec_(rp_len,0) invis ')
+ line to rvec_(rp_len,0) invis popdef(`m4wd',`m4ht') ')
`ACsymbol(at position, len, ht, [n:][A]U|D|L|R|degrees,
attributes)
@@ -3736,8 +3732,8 @@ define(`nterm',`[Box: box ifelse(`$1',,wid dimen_ ht dimen_*2/3,`$1')
move to Box.nw+(0,-d); down_
m4termpins(-plg,d,W,`$7')
# `North side'
- ifelse(`$3',,,`define(`m4n',`($3)')
- d = Box.wid/(m4n+1)
+ define(`m4n',`($3)') ifelse(`$3',,,
+ `d = Box.wid/(m4n+1)
move to Box.nw+(d,0); right_
m4termpins(plg,d,N,`$7')')
# `East side'
@@ -3750,7 +3746,7 @@ define(`nterm',`[Box: box ifelse(`$1',,wid dimen_ ht dimen_*2/3,`$1')
d = Box.wid/(m4n+1)
move to Box.sw+(d,0); right_
m4termpins(-plg,d,S,`$7')
- `$8']')
+ `$8' undefine(`m4n')]')
define(`m4termpins',`for_(1,m4n,1,
`{ if (`$1' != 0) then { line to rvec_(0,`$1') }
`$3'`'m4x: ifelse(xtract(`$4',N),N,Here,`dot') }
@@ -3759,8 +3755,8 @@ define(`m4termpins',`for_(1,m4n,1,
`speaker(U|D|L|R|degrees, vert size, type, attributes)
type=H horn'
define(`speaker',`[setdir_($1,R)
- define(`m4v',`ifelse(`$2',,`dimen_/3',`($2)/4')')dnl
- define(`m4h',`m4v*sqrt(2)')dnl
+ pushdef(`m4v',`ifelse(`$2',,`dimen_/3',`($2)/4')')dnl
+ pushdef(`m4h',`m4v*sqrt(2)')dnl
ifelse(`$3',H,
`{H1: line from rvec_(m4h,m4v/2) \
to rvec_(m4h*3/2,m4v*7/8) \
@@ -3779,24 +3775,24 @@ define(`speaker',`[setdir_($1,R)
In5: rvec_(m4h*3/4,m4v)
In6: rvec_(m4h/4,-m4v)
In7: rvec_(m4h*3/4,-m4v)
- `$5'; resetdir_ ]')
+ `$5'; resetdir_ popdef(`m4v',`m4h') ]')
`bell(U|D|L|R|degrees, vert size, attributes)'
define(`bell',`[setdir_($1,R)
- define(`m4h',`ifelse(`$2',,`dimen_/2',`($2)')')dnl
+ pushdef(`m4h',`ifelse(`$2',,`dimen_/2',`($2)')')dnl
{lbox(m4h,m4h,`$3')}
{Box: box invis ht_ m4h wid_ m4h at rvec_(m4h/2,0)}
{Circle: circle diameter m4h at rvec_(m4h*3/2,0) `$3'}
In1: rvec_(0,m4h/4)
In2: Here
In3: rvec_(0,-m4h/4)
- `$4'; resetdir_ ]')
+ `$4'; resetdir_ popdef(`m4h') ]')
`microphone(A|U|D|L|R|degrees, vert size,
attributes)
Arg1= A, upright mic
Thanks to Arnold Knott'
define(`microphone',`ifinstr(`$1',A,
- `[ define(`m4sfact',`(ifelse(`$2',,dimen_,(`$2'))*8/5)')
+ `[ pushdef(`m4sfact',`(ifelse(`$2',,dimen_,(`$2'))*8/5)')
circlerad = m4sfact/1000
cspace = m4sfact/100
bwd = m4sfact/10
@@ -3812,22 +3808,22 @@ define(`microphone',`ifinstr(`$1',A,
for j=-1 to 1 do {
{ circle at Here+(3*j*cspace,(abs(j)-3)*cspace) }
if j != 0 then {{ circle at Here+(j*3/2*cspace,0) }} }
- move up 5*cspace }; ]',
+ move up 5*cspace }; popdef(`m4sfact')]',
`[setdir_($1,R)
- define(`m4h',`ifelse(`$2',,`dimen_/2',`($2)')')dnl
+ pushdef(`m4h',`ifelse(`$2',,`dimen_/2',`($2)')')dnl
{L1: line from rvec_(m4h,-m4h/2) \
to rvec_(m4h,m4h/2)}
{Circle: circle diameter m4h at rvec_(m4h/2,0) `$3'}
In1: rvec_(m4h*(2-sqrt(3))/4,m4h/4)
In2: Here
In3: rvec_(m4h*(2-sqrt(3))/4,-m4h/4)
- `$4'; resetdir_ ]')')
+ `$4'; resetdir_ popdef(`m4h') ]')')
`buzzer(U|D|L|R|degrees, vert size,[C],
attributes)'
define(`buzzer',`[setdir_($1,R)
ifelse(`$3',,
- `define(`m4h',`ifelse(`$2',,`dimen_/2',`($2)')')dnl
+ `pushdef(`m4h',`ifelse(`$2',,`dimen_/2',`($2)')')dnl
{L1: line from rvec_(m4h,0) \
to rvec_(m4h,m4h/2) \
then to rvec_(0,m4h/2) \
@@ -3839,20 +3835,20 @@ define(`buzzer',`[setdir_($1,R)
to rvec_(m4h,m4h/2)+vec_(Rect_(m4h,-75))}
In1: rvec_(0,m4h/4)
In2: Here
- In3: rvec_(0,-m4h/4)',
- `$3',C,`define(`m4h',`ifelse(`$2',,`(dimen_/3)',`(($2)/2)')')dnl
+ In3: rvec_(0,-m4h/4) popdef(`m4h')',
+ `$3',C,`pushdef(`m4h',`ifelse(`$2',,`(dimen_/3)',`(($2)/2)')')dnl
{Face: line from rvec_(m4h,-m4h) \
to rvec_(m4h,m4h)}
{arc ccw from Face.end to Face.start with .c at Face.c `$4'}
In1: rvec_(m4h-sqrt(m4h^2-(m4h/3)^2),m4h/3)
In2: Here
- In3: rvec_(m4h-sqrt(m4h^2-(m4h/3)^2),-m4h/3)')
+ In3: rvec_(m4h-sqrt(m4h^2-(m4h/3)^2),-m4h/3) popdef(`m4h') ')
`$5'; resetdir_ ]')
`earphone(U|D|L|R|degrees, size, [C][R],
attributes)
earphone pair if arg3 contains C'
define(`earphone',`[ setdir_($1,R)
- define(`m4h',`ifelse(`$2',,`dimen_',`($2)')')dnl
+ pushdef(`m4h',`ifelse(`$2',,`dimen_',`($2)')')dnl
ifinstr(`$3',C,
`L: circle diam m4h*0.4 `$4'
R: circle diam m4h*0.4 at L+vec_(m4h,0) `$4'
@@ -3868,7 +3864,7 @@ define(`earphone',`[ setdir_($1,R)
In1: rvec_(0,m4h/8)
In2: Here
In3: rvec_(0,-m4h/8)')
- `$5'; resetdir_ ]')
+ `$5'; resetdir_ popdef(`m4h') ]')
`Signal-flow graph macros: labeled node,
directed labeled chopped straight line,
@@ -4023,9 +4019,7 @@ define(`winding',`[ define(`m4rt',`ifinstr(`$1',R,-)')
define(`tstrip',`[ setdir_(`$1')
define(`m4n',`ifelse(`$2',,4,`eval($2)')')dnl
ifelse(eval(m4n<1),1,`define(`m4n',1)')dnl
- pushkeys_(`$3',ht:dimen_/2; wid:m4n*m4ht*0.6; box::N;)
-# pushkey_(`$3',ht,dimen_/2)dnl
-# pushkey_(`$3',wid,m4n*m4ht*0.6)dnl
+ pushkeys_(`$3',`ht:dimen_/2; wid:m4n*m4`'ht*0.6; box::N;')
{Box: [shade(1,lbox(m4wid,m4ht,m4box))] }
bw = m4wid/(m4n)
ifinstr(`$3',O,,`for i=1 to m4n-1 do {
@@ -4122,12 +4116,11 @@ define(`plug',`[ setdir_(`$1')
with respect to the current drawing direction. The
default diameter is dimen_'
define(`SQUID',
-`[ define(`m4sqn',`ifelse(`$1',,2,`$1')')dnl
- define(`m4ssz',`ifelse(`$2',,`dimen_',`$2')')dnl
- define(`m4sof',`ifelse(`$3',,-90,`$3')')dnl
- define(`m4ssg',`ifelse(`$4',,+,`$4',ccw,+,-)(m4x-1)/(m4sqn)*360')dnl
- define(`m4sxlen',C.rad/4)dnl
-
+`[ pushdef(`m4sqn',`ifelse(`$1',,2,`$1')')dnl
+ pushdef(`m4ssz',`ifelse(`$2',,`dimen_',`$2')')dnl
+ pushdef(`m4sof',`ifelse(`$3',,-90,`$3')')dnl
+ pushdef(`m4ssg',`ifelse(`$4',,+,`$4',ccw,+,-)(m4x-1)/(m4sqn)*360')dnl
+ pushdef(`m4sxlen',C.rad/4)dnl
C: circle diam m4ssz
for_(1,m4sqn,1,
`move to C+vec_(Rect_(C.rad,m4sof`'m4ssg))
@@ -4136,7 +4129,7 @@ define(`SQUID',
to rvec_(Rect_(m4sxlen,m4sof`'m4ssg+225)) }
{ line from rvec_(Rect_(m4sxlen,m4sof`'m4ssg-45)) \
to rvec_(Rect_(m4sxlen,m4sof`'m4ssg-225)) }')
- `$5' ]')
+ `$5' popdef(`m4sqn',`m4ssz',`m4sof',`m4ssg',`m4sxlen') ]')
`==============================================================================
Customizations:
diff --git a/graphics/circuit_macros/libgen.m4 b/graphics/circuit_macros/libgen.m4
index c37bb1359d..f5f1be0d34 100644
--- a/graphics/circuit_macros/libgen.m4
+++ b/graphics/circuit_macros/libgen.m4
@@ -2,7 +2,7 @@ divert(-1)
libgen.m4 Base macros for dpic and gpic diagrams
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
@@ -156,7 +156,7 @@ ifdef(`threeD_init',,
hght=expr; arrowhead height
wdth=expr; arrowhead width'
define(`sfg_init',`cct_init
- pushkeys_(`$1',blen:m4bxx; rad:m4rxx; hght:m4hxx; wdth:m4wxx)dnl
+ pushkeys_(`$1',`blen:m4bxx; rad:m4rxx; hght:m4hxx; wdth:m4wxx')dnl
sfg_wid = ifelse(m4blen,(m4bxx),ifelse(`$1',,linewid/3*2.75,`$1'),m4blen)
sfg_rad = ifelse(m4rad,(m4rxx),ifelse(`$2',,1/32,`$2'),m4rad)
sfg_aht = ifelse(m4hght,(m4hxx),ifelse(`$3',,1/16,`$3'),m4hght)
@@ -192,7 +192,7 @@ define(`latexcommand',
`$2')')
define(`m4announceprocessor',`dnl Do not change the format of the next line:
-`#' `$1' Version 10.5: ifelse(m4picprocessor,gpic,`Gpic',
+`#' `$1' Version 10.6: ifelse(m4picprocessor,gpic,`Gpic',
m4postprocessor,pstricks,`PSTricks',
m4postprocessor,pgf,`TikZ PGF',
m4postprocessor,mfpic,`Mfpic',
@@ -872,7 +872,8 @@ define(`poppushdef',`popdef(`$1')pushdef(`$1',`$2')')
identifier:default value:N
containing up to 3 fields separated by arg 4
(default :). The separators may not appear
- elsewhere in the terms.'
+ elsewhere in the terms and a key must not
+ be the tail of another key.'
define(`pushkeys_',`Loopover_(`M4Z',
`pushkey_(`$1',patsubst(M4Z,ifelse(`$4',,:,`$4'),`,'))dnl',
patsubst(`$2',ifelse(`$3',,;,`$3'),`,'))')
@@ -884,7 +885,8 @@ define(`pushkeys_',`Loopover_(`M4Z',
identifier:default value:N
containing up to 3 fields separated by arg 4
(default :). The separators may not appear
- elsewhere in the terms.'
+ elsewhere in the terms and a key must not
+ be the tail of another key.'
define(`setkeys_',`Loopover_(`M4Z',
`setkey_(`$1',patsubst(M4Z,ifelse(`$4',,:,`$4'),`,'))dnl',
patsubst(`$2',ifelse(`$3',,;,`$3'),`,'))')
@@ -960,7 +962,7 @@ define(`f_box',`box ifelse(`$2',,
circle=attributes; '
define(`dotrad_',(0.02*scale))
define(`dot',`[ define(`m4ft',`ifelse(`$3',,0,(`$3'))')dnl
- pushkeys_(`$2',rad:m4nul:N;circle:fill_(m4ft):N)dnl
+ pushkeys_(`$2',`rad:m4nul:N;circle:fill_(m4ft):N')dnl
ifelse(m4rad,m4nul,`popdef(`m4rad')pushdef(`m4rad',
`ifinstr(`$2',=,`dotrad_',`ifelse(`$2',,`dotrad_',(`$2'))')')')dnl
ifdef(`r_',`rgbfill(r_+(1-r_)*m4ft, g_+(1-g_)*m4ft, b_+(1-b_)*m4ft,
@@ -973,7 +975,7 @@ define(`dot',`[ define(`m4ft',`ifelse(`$3',,0,(`$3'))')dnl
keys: size=expr;
line=attributes; (line attributes) '
define(`cross',`[
- pushkeys_(`$2',size:m4nul:N;line::N)dnl
+ pushkeys_(`$2',`size:m4nul:N;line::N')dnl
ifelse(m4size,m4nul,`popdef(`m4size')pushdef(`m4size',
`ifinstr(`$2',=,(0.05*scale),ifelse(`$2',,(0.05*scale),(`$2')))')')dnl
line from (0,-m4size/2) to (0,m4size/2) m4line
@@ -1009,25 +1011,28 @@ define(`shadebox',`ifelse(`$1',,box,`$1')
shadowed(box shaded "yellow" rad 0.1 "Text",
shadowthick=3bp__;shadowcolor="lightgray")'
define(`shadowed',`define(`m4object',`ifelse(`$1',,box,`$1')')dnl
- pushkeys_(`$3',attrib::N; rad:;
- shadowthick:lthick*5/4; shadowcolor:"gray":N; shadowangle:-45 )dnl
- ifelse(m4object,box,`box m4attrib ifelse(m4rad,,,`rad m4rad invis') `$2'
+ pushkeys_(`$3',`attrib::N; rad:;
+ shadowthick:lthick*5/4; shadowcolor:"gray":N; shadowangle:-45')dnl
+ ifelse(m4object,box,
+ `box m4attrib ifelse(m4rad,,,`rad m4rad invis') `$2'
if last box.thick < 0 then { m4shv = (m4shadowthick+lthick)/2 } \
else { m4shv=(m4shadowthick+last box.thick bp__)/2 }
+ M4T: (Rect_(m4shv,m4shadowangle))
ifelse(m4rad,,`{ line thick m4shadowthick/(1bp__) outlined m4shadowcolor \
- from last box.sw+(m4shv,-m4shv) to last box.se+(m4shv,-m4shv) \
- then to last box.ne+(m4shv,-m4shv) } ',
+ from last box.sw+(M4T.x,M4T.y) to last box.se+(M4T.x,M4T.y) \
+ then to last box.ne+(M4T.x,M4T.y) }
+ box fill_(1) m4attrib at last box.c ',
`M4C: last box.c
{ box m4attrib thick m4shadowthick/(1bp__) outlined m4shadowcolor \
- rad m4rad solid at M4C+(Rect_(m4shv,m4shadowangle)) }
+ rad m4rad solid at M4C+(M4T.x,M4T.y) }
box fill_(1) rad m4rad m4attrib at M4C ') ',
- `m4object m4attrib invis `$2'
- M4C: last m4object.c
- if last m4object.thick < 0 then { m4shv = (m4shadowthick+lthick)/2 } \
- else { m4shv=(m4shadowthick+last m4object.thick bp__)/2 }
- { m4object m4attrib thick m4shadowthick/(1bp__) outlined m4shadowcolor \
- solid at M4C+(Rect_(m4shv,m4shadowangle)) }
- m4object ifelse(m4object,line,,fill_(1)) m4attrib at M4C ')dnl
+ `m4object m4attrib invis `$2'
+ M4C: last m4object.c
+ if last m4object.thick < 0 then { m4shv = (m4shadowthick+lthick)/2 } \
+ else { m4shv=(m4shadowthick+last m4object.thick bp__)/2 }
+ { m4object m4attrib thick m4shadowthick/(1bp__) outlined m4shadowcolor \
+ solid at M4C+(Rect_(m4shv,m4shadowangle)) }
+ m4object ifelse(m4object,line,,fill_(1)) m4attrib at M4C ')dnl
popdef(`m4attrib',`m4rad',`m4shadowthick',`m4shadowcolor',`m4shadowangle') ')
`hatchbox(boxspec,hatchsep,hatchspec,angle)
@@ -1042,8 +1047,9 @@ define(`shadowed',`define(`m4object',`ifelse(`$1',,box,`$1')')dnl
hatchsep=expr;
hatchspec=attributes;
angle=expr; '
-define(`hatchbox',`[pushkeys_(`$1',wid:boxwid:N;ht:boxht:N;box::N;fillcolor::N;
- hatchsep:0.075*scale;hatchspec::N;angle:45)
+define(`hatchbox',`[
+ pushkeys_(`$1',`wid:boxwid:N; ht:boxht:N; box::N;fillcolor::N;
+ hatchsep:0.075*scale; hatchspec::N; angle:45')
b = ifelse(`$4',,m4angle,`$4')
a = pmod((ifelse(b,,45,b)+90),180)-90
if a >=0 then { B: box ifinstr(`$1',=,`wid m4wid ht m4ht m4box dnl
@@ -1099,12 +1105,12 @@ define(`lbox',`pushdef(`m4bwd',ifelse(`$1',,boxwid,(`$1')))dnl
then to rvec_(0,neg_(m4bht)/2) \
then to rvec_(m4bwd,neg_(m4bht)/2) \
then to rvec_(m4bwd,0) `$3' dnl
- popdef(`m4bwd')popdef(`m4bht') ')
+ popdef(`m4bwd',`m4bht') ')
`rotbox(wid,ht,type attribs,[r=val|t=val])
box oriented in current direction in [] block;
wd and ht are distances between line centers.
- type=attributes eg dotted shaded "green"
+ attributes: eg dotted shaded "green"
if arg4 is r=val then the corner radius is val
if arg4 is t=val then a "superellipse"
is drawn using a spline of tension val
@@ -1174,24 +1180,29 @@ define(`rotellipse',
e.g. ellipsearc(2,1,0,pi_,pi_/4,,dashed)
arg5 is the angle of the ellipse wid axis
Internal locations Start, End, C'
+
+ `ellipsearc(wid,ht,startrads,endrads,
+ rotangle,cw|ccw,linetype)
+ e.g. ellipsearc(2,1,0,pi_,pi_/4,,dashed)
+ arg5 is the angle of the ellipse wid axis
+ Internal locations Start, End, C'
define(`ellipsearc',`[ C: (0,0)
- a_earc = ifelse(`$1',,ellipsewid,`($1)')/2
- b_earc = ifelse(`$2',,ellipseht,`($2)')/2
- sa_earc = ifelse(`$3',,0,`$3')
- ea_earc = ifelse(`$4',,pi_/2,`$4')
- define(`m4ca',`ifelse(`$5',,1,cos(`$5'))')dnl
- define(`m4sa',`ifelse(`$5',,0,sin(`$5'))')dnl
- ifinstr(`$6',ccw,`define(`m4cw',ccw)',
- `ifinstr(`$6',cw,`define(`m4cw',cw)',`define(`m4cw',ccw)')')
+ a = ifelse(`$1',,ellipsewid,`($1)')/2
+ b = ifelse(`$2',,ellipseht,`($2)')/2
+ sa = ifelse(`$3',,0,`$3')
+ ea = ifelse(`$4',,pi_/2,`$4')
+ pushdef(`m4ca',`ifelse(`$5',,1,cos(`$5'))')dnl
+ pushdef(`m4sa',`ifelse(`$5',,0,sin(`$5'))')dnl
+ pushdef(`m4cw',`ifinstr(`$6',ccw,c,`$6',cw,,c)'cw)dnl
ifelse(m4cw,ccw,
- `if ea_earc < sa_earc then { ea_earc += twopi_ }',
- `if ea_earc > sa_earc then { ea_earc -= twopi_ }')
- n = max(4,floor(abs((ea_earc-sa_earc)/(10*dtor_)))+1)
- for i=0 to n do { aa_earc = sa_earc+i/n*(ea_earc-sa_earc)
- P[i]: (vrot_(a_earc*cos(aa_earc),b_earc*sin(aa_earc),m4ca,m4sa)) }
+ `if ea < sa then { ea += twopi_ }',
+ `if ea > sa then { ea -= twopi_ }')
+ n = max(4,floor(abs((ea-sa)/(10*dtor_)))+1)
+ for i=0 to n do { aa = sa+i/n*(ea-sa)
+ P[i]: (vrot_(a*cos(aa),b*sin(aa),m4ca,m4sa)) }
Start: P[0]
End: P[n]
- fitcurve(P,n,`$7') ]')
+ fitcurve(P,n,`$7') `$8' popdef(`m4cw',`m4sa',`m4ca') ]')
Small space for string justification
#efine(`sp_',`ifgpic(`\hbox{$\:$}')iflatex(`\hbox{$\;$}')')
@@ -1288,19 +1299,26 @@ define(`arcdimension_',`arc invis `$1' ; {
to M4ArcC+(rect_(m4hr,m4eang)) rad m4hr with .c at M4ArcC } }
ifelse(`$3',,,`m4lstring(`$3',"`$3'") at M4ArcC+(rect_(m4hr,m4hang))')
}')
+
`polygon(nsides,keys) regular polygon in [] block
keys: line=attribs; e.g. dashed shaded "red"
rot=degrees; angle of first vertex V[0]
side|rad=expr; size by radius or side
- Defined points: C, V[0], ... V[nsides-1]'
+ radv=expr; vertex radius
+ Defined internal points: C, V[0], ... V[nsides]'
define(`polygon',`[ C: Here; nsides=ifelse(`$1',,3,`$1')
a=360/nsides; b=(180-a)/2 # interior angles
pushkeys_(`$2',
- `line::N; rot:90; side:linewid; rad:m4side*sind(b)/sind(a);')dnl
+ `line::N; rot:90; side:linewid; radv:0; rad:m4`'side*sind(b)/sind(a);')dnl
for i=0 to nsides-1 do { V[i]: Rect_(m4rad,m4rot+a*i) }
V[nsides]: 0.5 between V[nsides-1] and V[0]
- line m4line from V[nsides] to V[0]; for i=1 to nsides do { continue to V[i] }
- `$3' popdef(`m4line',`m4rot',`m4side',`m4rad') ]')
+#for i=0 to nsides do { sprintf("%g",i) at V[i] above }
+ if m4radv!=0 then { move to V[nsides]
+ for i=0 to nsides-1 do { arcto(V[i],V[i+1],m4radv,m4line) }
+ line m4line to V[nsides] } \
+ else { line m4line from V[nsides] to V[0]; for i=1 to nsides do {
+ continue to V[i] } }
+ `$3' popdef(`m4line',`m4rot',`m4side',`m4radv',`m4rad') ]')
`shade(gray value,closed line specs)
Fill an arbitray closed curve with a gray value
@@ -1447,8 +1465,8 @@ m4postprocessor,xfig,
head= attributes (shaded etc)
name=Name (default Sarrow_)'
define(`sarrow',
- `pushkeys_(`$2',
- type:O:N;head::N;shaft:m4head:N;wdth:arrowwid;lgth:arrowht;name:Sarrow_:N)dnl
+ `pushkeys_(`$2',`type:O:N; head::N; shaft:m4`'head:N; wdth:arrowwid;
+ lgth:arrowht; name:Sarrow_:N')dnl
arrow `$1' m4head invis
m4_dx = last arrow.end.x-last arrow.start.x
m4_dy = last arrow.end.y-last arrow.start.y
@@ -1681,7 +1699,8 @@ define(`ArcAngle',`arcr(`$2',ifelse(`$4',,arcrad,`$4'),
`RightAngle(Pos1,Pos2,Pos3,linelen,attributes)
Draw a right angle symbol at Pos2
arg4: size
- arg5: line attributes, e.g. outlined "gray"'
+ arg5: line attributes, e.g. outlined "gray" or
+ e.g., ;dot(at last line.c)'
define(`RightAngle',
`RightA_C: `$1'; RightA_N: `$2'; RightA_B: `$3'
define(`m4AngleLen',`ifelse(`$4',,linewid/5,`$4')')
@@ -1859,7 +1878,8 @@ define(`sinusoid',
`graystring(value in [0,1])'
define(`graystring',`rgbstring(`$1',`$1',`$1')')
- `ColoredV(box|circle|ellipse,(r,g,b)|((colorseq)),
+ `ColoredV(box|circle|ellipse,
+ (r,g,b) | ((colorseq))[:nlines],
attributes)
box or circle or ellipse in a [] block.
If arg2 is blank then all formatting is in
@@ -1873,10 +1893,12 @@ define(`graystring',`rgbstring(`$1',`$1',`$1')')
frac2,r2,g2,b2,
...
1,rn,gn,bn
+ The number of colorseq lines drawn can be specified
+ with the colon (default height/lthick*2).
Examples: ColoredV(circle,(1,0,0))
ColoredV(ellipse,(1,0.04,1),
wid 0.75 ht 1 outlined "magenta" "Goodbye")
- ColoredV(box,((0,1,1,0, 1,0,0,1)),
+ ColoredV(box,((0,1,1,0, 1,0,0,1)):50,
outlined "blue" rad 0.1)'
define(`ColoredV',`[NeedDpicTools pushdef(`m4obj',ifelse(`$1',,box,`$1'))
C: m4obj `$3' ifsvg(,invis) # To avoid invalid svg
@@ -1889,13 +1911,15 @@ define(`ColoredV',`[NeedDpicTools pushdef(`m4obj',ifelse(`$1',,box,`$1'))
with .c at C.n-(0,C.ht*($`'1))}',
`define m4SObjLine {line outlined rgbstring($`'2,$`'3,$`'4) right \
C.wid*sqrt(abs(1-(1-($`'1)*2)^2)) with .c at C.n-(0,C.ht*($`'1))}')
- ShadeObject(m4SObjLine,int(C.ht/lthick*5/4),\
- ifelse(index(`$2',`(('),0,`patsubst(`$2',^ *`(('\|`))' *$)',
- `0,1,1,1,1,patsubst(`$2',^ *`('\|`)' *$)')) at C')
- m4obj ifelse(`$2',,,`m4colorfix(outlined,`$2')') `$3' with .c at C
- `$5' popdef(`m4obj') ]')
-
- `rgbstring(color triple: values in [0,1])
+ pushdef(`linect',`ifinstr(`$2',:,`patsubst(`$2',^.*:\(.*\)$,\1)',
+ `int(C.ht/lthick*2)')')
+ ShadeObject(m4SObjLine,linect,ifelse(index(`$2',`(('),0,
+ `patsubst(`$2',`(('\|`))'.*$)',`0,1,1,1,1,patsubst(`$2',^ *`('\|`)' *$)')) \
+ with .n at C.n') popdef(`linect')
+ m4obj ifelse(`$2',,,index(`$2',`(('),0,,`m4colorfix(outlined,`$2')') `$3' at C
+ `$4' popdef(`m4obj') ]')
+
+ `rgbstring(color triple with values in [0,1])
(example rgbstring(0.2,0.3,0.4) )
or, when allowed by the postprocessor,
rgbstring(color name)
@@ -2017,16 +2041,21 @@ define(`definergbcolor',
`ifpdf(`define(`$1',``'`$2' `$3' `$4'`'')',
`ifmpost(`command \
sprintf("color `$1'; `$1':=(%7.5f,%7.5f,%7.5f);",`$2',`$3',`$4')',
+`ifsvg(`define(`$1',`rgbstring(`$2',`$3',`$4')')',
`command \
sprintf("\definecolor{`$1'}{rgb}{%7.5f,%7.5f,%7.5f}%%",`$2',`$3',`$4')')')')')
+')
Pstricks conditional command
define(`psset_',`ifpstricks(`dnl
command sprintf("\psset{$@}%%")
')')
Internal color adjustments
- `m4colorfix(outlined|shaded,
- "colorname"|colorname|(r,g,b),sprintf(...))'
+ `m4colorfix(outlined|shaded|colored,
+ "colorname"|colorname|(r,g,b),sprintf(...))
+ Not really necessary most of the time; e.g.,
+ colored rgbstring(r,g,b)" works fine for tikz, pstricks,
+ and svg'
define(`m4colorfix',`ifelse(`$1',,,
`ifelse(`$2',,``$1' "grey"',index(`$2',`"'),0,``$1' `$2'',
index(`$2',sprintf),0,``$1' `$2'',
diff --git a/graphics/circuit_macros/liblog.m4 b/graphics/circuit_macros/liblog.m4
index 9c68aff0e2..31dd9b2aca 100644
--- a/graphics/circuit_macros/liblog.m4
+++ b/graphics/circuit_macros/liblog.m4
@@ -1,7 +1,7 @@
divert(-1)
liblog.m4 Logic gates
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/mfpic.m4 b/graphics/circuit_macros/mfpic.m4
index aa24fb7d34..2754139ec0 100644
--- a/graphics/circuit_macros/mfpic.m4
+++ b/graphics/circuit_macros/mfpic.m4
@@ -1,7 +1,7 @@
divert(-1)
mfpic.m4 Initialization for mfpic.
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/mpost.m4 b/graphics/circuit_macros/mpost.m4
index d6e0f1ed59..02a2375c27 100644
--- a/graphics/circuit_macros/mpost.m4
+++ b/graphics/circuit_macros/mpost.m4
@@ -1,7 +1,7 @@
divert(-1)
mpost.m4 Initialization for metapost.
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/pdf.m4 b/graphics/circuit_macros/pdf.m4
index 375c41e4a5..71916a2f3d 100644
--- a/graphics/circuit_macros/pdf.m4
+++ b/graphics/circuit_macros/pdf.m4
@@ -1,7 +1,7 @@
divert(-1)
pdf.m4 Initialization for pdf output.
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/pgf.m4 b/graphics/circuit_macros/pgf.m4
index 4ffc956930..845427083c 100644
--- a/graphics/circuit_macros/pgf.m4
+++ b/graphics/circuit_macros/pgf.m4
@@ -1,7 +1,7 @@
divert(-1)
pgf.m4 Initialization for Tikz-pgf.
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/postscript.m4 b/graphics/circuit_macros/postscript.m4
index 033e753d2d..7e4882451d 100644
--- a/graphics/circuit_macros/postscript.m4
+++ b/graphics/circuit_macros/postscript.m4
@@ -1,7 +1,7 @@
divert(-1)
postscript.m4 Initialization for Postscript output.
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/psfrag.m4 b/graphics/circuit_macros/psfrag.m4
index 86956e45b4..31eff163d0 100644
--- a/graphics/circuit_macros/psfrag.m4
+++ b/graphics/circuit_macros/psfrag.m4
@@ -2,7 +2,7 @@ divert(-1)
psfrag.m4 Initialization for dpic -f processing:
Postscript with psfrag strings
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/pstricks.m4 b/graphics/circuit_macros/pstricks.m4
index 7012c2c9b3..528fdcd147 100644
--- a/graphics/circuit_macros/pstricks.m4
+++ b/graphics/circuit_macros/pstricks.m4
@@ -1,7 +1,7 @@
divert(-1)
pstricks.m4 Initialization for PSTricks.
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/svg.m4 b/graphics/circuit_macros/svg.m4
index 30d832a9ea..4c3adb994b 100644
--- a/graphics/circuit_macros/svg.m4
+++ b/graphics/circuit_macros/svg.m4
@@ -1,7 +1,7 @@
divert(-1)
svg.m4 Initialization for svg output.
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/xfig.m4 b/graphics/circuit_macros/xfig.m4
index b437249f14..c98819df7f 100644
--- a/graphics/circuit_macros/xfig.m4
+++ b/graphics/circuit_macros/xfig.m4
@@ -1,7 +1,7 @@
divert(-1)
xfig.m4 Initialization for xfig.
-* Circuit_macros Version 10.5, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/latexscreenshooter/Code/src-compiled/latexscreenshooter-exemple.tex b/graphics/latexscreenshooter/Code/src-compiled/latexscreenshooter-exemple.tex
new file mode 100644
index 0000000000..fa455d8cac
--- /dev/null
+++ b/graphics/latexscreenshooter/Code/src-compiled/latexscreenshooter-exemple.tex
@@ -0,0 +1,8 @@
+\documentclass{article}
+\usepackage[utf8]{inputenc}
+\usepackage{graphicx}
+\usepackage{screenshooter}
+
+\begin{document}
+ \screenshooter{https://google.com}{420}{262}{screenshot01}{C:/Users/Username/paths}
+\end{document}
diff --git a/graphics/latexscreenshooter/Code/src-compiled/latexscreenshooter.sty b/graphics/latexscreenshooter/Code/src-compiled/latexscreenshooter.sty
new file mode 100644
index 0000000000..19e117e997
--- /dev/null
+++ b/graphics/latexscreenshooter/Code/src-compiled/latexscreenshooter.sty
@@ -0,0 +1,32 @@
+%Authors : quentin.vaney@gmail.com;xavier.freléchoz@gmail.com%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{screenshooter}[2024/05/06 Package that takes screenshot]
+
+\RequirePackage{graphicx}
+\RequirePackage{catchfile}
+
+\newcommand{\screenshooter}[5]{%
+ \immediate\write18{java -jar latexscreenshooter.jar #1 #2 #3 #4 #5}%
+ \IfFileExists{#5#4.png}{%
+ \begin{center}
+ \includegraphics[width=#2px, height=#3px]{#5#4.png}%
+ \end{center}
+ }{%
+ \IfFileExists{#5/#4.png}{%
+ \begin{center}
+ \includegraphics[width=#2px, height=#3px]{#5/#4.png}%
+ \end{center}
+ }{%
+ \IfFileExists{#4.png}{%
+ \begin{center}
+ \includegraphics[width=#2px, height=#3px]{#4.png}%
+ \end{center}
+ }{%
+ \begin{center}
+ \fbox{\textbf{Image not found}}%
+ \end{center}
+ }%
+ }%
+ }%
+}
+
diff --git a/graphics/latexscreenshooter/Code/src/LaTexScreenshooter/LaTeXScreenshooter.java b/graphics/latexscreenshooter/Code/src/LaTexScreenshooter/LaTeXScreenshooter.java
new file mode 100644
index 0000000000..4e5bab08ca
--- /dev/null
+++ b/graphics/latexscreenshooter/Code/src/LaTexScreenshooter/LaTeXScreenshooter.java
@@ -0,0 +1,43 @@
+/**
+ * Authors : quentin.vaney@gmail.com;xavier.frelechoz@gmail.com
+ * Version : V1
+ */
+
+package LaTexScreenshooter;
+import java.util.Objects;
+
+public class LaTeXScreenshooter {
+ public static void main(String[] args) {
+ if (args.length == 0) {
+ System.out.println("No arguments were passed.");
+ } else {
+ String url = args[0];
+ int width = args.length > 1 ? Integer.parseInt(args[1]) : 600;
+ int height = args.length > 2 ? Integer.parseInt(args[2]) : 600;
+ String fileName = args.length > 3 ? args[3] : "Screenshot";
+ String path = args.length > 3 ? args[4] : System.getProperty("user.dir");
+
+ String os = System.getProperty("os.name").toLowerCase();
+ String slash = "";
+ if (os.contains("win")) {
+ slash = "\\";
+ } else {
+ slash = "/";
+ }
+
+ if (!path.endsWith("\\") && !path.endsWith("/")) {
+ path = path + slash;
+ }
+
+ path = PathValidator.isPathValid(path) ? path : System.getProperty("user.dir") + slash;
+ System.out.println(path);
+ String sessionType = System.getenv("XDG_SESSION_TYPE");
+ if (Objects.equals(sessionType, "wayland")) {
+ WaylandScreenshooter.captureScreenshot(url, width, height, fileName, path);
+ } else {
+ System.out.println("Unable to determine the session type.");
+ ScreenShooter.captureScreenshot(url, width, height, fileName, path);
+ }
+ }
+ }
+}
diff --git a/graphics/latexscreenshooter/Code/src/LaTexScreenshooter/PathValidator.java b/graphics/latexscreenshooter/Code/src/LaTexScreenshooter/PathValidator.java
new file mode 100644
index 0000000000..25bd2adce8
--- /dev/null
+++ b/graphics/latexscreenshooter/Code/src/LaTexScreenshooter/PathValidator.java
@@ -0,0 +1,32 @@
+/**
+ * Authors : quentin.vaney@gmail.com;xavier.frelechoz@gmail.com
+ * Version : V1
+ */
+
+package LaTexScreenshooter;
+import java.nio.file.Files;
+import java.nio.file.InvalidPathException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+ public class PathValidator {
+
+ public static boolean isPathValid(String pathString) {
+ try {
+ Path path = Paths.get(pathString);
+ if (Files.exists(path) && Files.isDirectory(path)) {
+ System.out.println("Success: Path is a valid directory.");
+ System.out.println(pathString);
+ return true;
+ } else {
+ System.out.println("Fail: Path exists but is not a directory.");
+ System.out.println(pathString);
+ return false;
+ }
+ } catch (InvalidPathException | NullPointerException ex) {
+ System.out.println("Fail: File path is incorrect.");
+ System.out.println(pathString);
+ return false;
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/latexscreenshooter/Code/src/LaTexScreenshooter/ScreenShooter.java b/graphics/latexscreenshooter/Code/src/LaTexScreenshooter/ScreenShooter.java
new file mode 100644
index 0000000000..2a870f0743
--- /dev/null
+++ b/graphics/latexscreenshooter/Code/src/LaTexScreenshooter/ScreenShooter.java
@@ -0,0 +1,81 @@
+/**
+ * Authors : quentin.vaney@gmail.com;xavier.frelechoz@gmail.com
+ * Version : V1
+ */
+
+package LaTexScreenshooter;
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.event.KeyEvent;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
+public class ScreenShooter {
+
+ // Method to load a web page in a specified browser
+ private static void loadWebPage(String url) {
+ try {
+ Desktop.getDesktop().browse(new URL(url).toURI());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static void closeWebPage(int delay) {
+ try {
+ Thread.sleep(delay);
+ Robot robot = new Robot();
+ robot.keyPress(KeyEvent.VK_CONTROL);
+ robot.keyPress(KeyEvent.VK_W);
+ robot.keyRelease(KeyEvent.VK_CONTROL);
+ robot.keyRelease(KeyEvent.VK_W);
+ } catch (InterruptedException | AWTException e) {
+ e.printStackTrace();
+ }
+ }
+
+ // Method to capture the browser window and save the screenshot
+ public static void captureScreenshot(String url, int width, int height, String fileName, String path) {
+ try {
+ Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+ loadWebPage(url);
+
+ // Wait for a certain time for the page to load (adjust as needed)
+ try {
+ Thread.sleep(4000); // Wait for 4 seconds
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ Robot robot = new Robot();
+ Rectangle area = new Rectangle(screenSize.width, screenSize.height);
+ BufferedImage screenshot = robot.createScreenCapture(area);
+ ImageIO.write(screenshot, "png", new File(path + fileName + ".png"));
+ closeWebPage(2000);
+
+ System.out.println("Screenshot saved at: " + path + fileName + ".png");
+ System.out.println("Screenshot saved: " + fileName + ".png");
+ //resizeImage(width, height, fileName);
+ } catch (AWTException | IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static void resizeImage(int scaledWidth, int scaledHeight, String fileName) throws IOException {
+ // Read the input image from the specified path
+ File inputFile = new File(System.getProperty("user.dir") + "/" + fileName + ".png");
+ BufferedImage inputImage = ImageIO.read(inputFile);
+
+ // Create a BufferedImage with the new dimensions
+ BufferedImage outputImage = new BufferedImage(scaledWidth, scaledHeight, inputImage.getType());
+
+ // Resize the image
+ Graphics2D graphics2D = outputImage.createGraphics();
+ graphics2D.drawImage(inputImage, 0, 0, scaledWidth, scaledHeight, null);
+ graphics2D.dispose();
+
+ // Write the resized image to the specified path
+ ImageIO.write(outputImage, "png", new File(fileName + ".png"));
+ }
+}
diff --git a/graphics/latexscreenshooter/Code/src/LaTexScreenshooter/WaylandScreenshooter.java b/graphics/latexscreenshooter/Code/src/LaTexScreenshooter/WaylandScreenshooter.java
new file mode 100644
index 0000000000..09672f2ea1
--- /dev/null
+++ b/graphics/latexscreenshooter/Code/src/LaTexScreenshooter/WaylandScreenshooter.java
@@ -0,0 +1,78 @@
+/**
+ * Authors : quentin.vaney@gmail.com;xavier.frelechoz@gmail.com
+ * Version : V1
+ */
+
+package LaTexScreenshooter;
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.awt.Desktop;
+import java.awt.Dimension;
+import java.awt.Toolkit;
+
+public class WaylandScreenshooter {
+
+ // Opens a URL in the default browser
+ private static void openWebPage(String url) throws IOException {
+ System.out.println("Opening web page: " + url);
+ Desktop.getDesktop().browse(URI.create(url));
+ }
+
+ // Captures the screen and saves the image
+ private static void captureScreenshot(String fileName, String path, String s) throws IOException {
+ System.out.println("Capturing screenshot...");
+ Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+ String command = "gnome-screenshot -w -f " + path + fileName + ".png";
+ try {
+ Process process = Runtime.getRuntime().exec(command);
+ process.waitFor();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ System.out.println("Screenshot saved at location: " + path + fileName + ".png");
+ }
+
+ // Closes the web page
+ private static void closeWebPage() {
+ System.out.println("Closing web page...");
+ try {
+ Runtime.getRuntime().exec("ydotool key ctrl+w");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ System.out.println("Web page closed.");
+ }
+
+ // Captures the screen after opening a web page
+ public static void captureScreenshot(String url, int width, int height, String fileName, String path) {
+ try {
+ openWebPage(url);
+ Thread.sleep(4000); // Wait for 4 seconds for the page to load
+ captureScreenshot(fileName, path, path);
+ closeWebPage();
+ } catch (IOException | InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static void resizeImage(int scaledWidth, int scaledHeight, String fileName) throws IOException {
+ // Read the input image from the specified path
+ File inputFile = new File(System.getProperty("user.dir") + "/" + fileName + ".png");
+ BufferedImage inputImage = ImageIO.read(inputFile);
+
+ // Create a BufferedImage with the new dimensions
+ BufferedImage outputImage = new BufferedImage(scaledWidth, scaledHeight, inputImage.getType());
+
+ // Resize the image
+ Graphics2D graphics2D = outputImage.createGraphics();
+ graphics2D.drawImage(inputImage, 0, 0, scaledWidth, scaledHeight, null);
+ graphics2D.dispose();
+
+ // Write the resized image to the specified path
+ ImageIO.write(outputImage, "png", new File(fileName + ".png"));
+ }
+}
diff --git a/graphics/latexscreenshooter/README.md b/graphics/latexscreenshooter/README.md
new file mode 100644
index 0000000000..fba8e215a1
--- /dev/null
+++ b/graphics/latexscreenshooter/README.md
@@ -0,0 +1,33 @@
+# LaTeXScreenshooter
+
+## Description
+
+**LaTeXScreenshooter** is a Java-based application designed to capture screenshots of web pages specified within LaTeX documents. It supports both X11 and Wayland display servers, ensuring compatibility across different Linux environments and windows. The project includes several components to validate paths, read LaTeX files, and capture screenshots.
+
+## Location
+
+In the `Code/src-compiled` folder, you can find the `.jar` file, the `.sty` file, and a `.tex` test file that you can use. The `.sty` file is the package that you need to include in your LaTeX document. The `.jar` file is the application that you need to run to take the screenshots.
+
+In the `Code/src` folder, you can find the source code of the project.
+
+## Command .jar
+
+To execute the .jar file directly, open a shell and enter:
+
+`java -jar latexscreenshooter.jar <URL> <WIDTH> <HEIGHT> <NAME> <PATH>`
+
+## License
+
+The project is licensed under the The LaTeX Project Public License 1.3c.
+
+## Futur works
+
+- Allow "!" as in the LaTeX \resizebox command
+- Allow the indication of a path for latexscreenshooter.jar
+- Allow choice of the browser (instead of the system default)
+- Capture only the browser window rather than the entire screen
+- Send the LaTeX-PDF-viewer window to the front of the window stack
+
+## Authors
+
+The authors of the project are Quentin Vaney and Xavier Freléchoz. You can contact us by mail at `quentin.vaney@gmail.com` & `Xavier.freléchoz@gmail.com`
diff --git a/graphics/latexscreenshooter/latexscreenshooter.pdf b/graphics/latexscreenshooter/latexscreenshooter.pdf
new file mode 100644
index 0000000000..cfd4176713
--- /dev/null
+++ b/graphics/latexscreenshooter/latexscreenshooter.pdf
Binary files differ
diff --git a/graphics/metapost/contrib/macros/mpkiviat/LICENSE b/graphics/metapost/contrib/macros/mpkiviat/LICENSE
new file mode 100644
index 0000000000..130ede1e51
--- /dev/null
+++ b/graphics/metapost/contrib/macros/mpkiviat/LICENSE
@@ -0,0 +1,11 @@
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3c
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status “maintainedâ€.
+
diff --git a/graphics/metapost/contrib/macros/mpkiviat/README.md b/graphics/metapost/contrib/macros/mpkiviat/README.md
new file mode 100644
index 0000000000..eb9666947d
--- /dev/null
+++ b/graphics/metapost/contrib/macros/mpkiviat/README.md
@@ -0,0 +1,18 @@
+# MPkiviat
+
+This package allows you to Kiviat diagrams.
+
+_This package is in beta version, do not hesitate to report bugs, as well as
+requests for improvement_.
+
+## Documentation
+
+* [English documentation](doc/mpkiviat-doc-en.pdf)
+
+## Contact
+
+Maxime Chupin, `notezik(at)gmail.com`
+
+## Licenses
+
+This projet is under LATEX Project Public License 1.3c. \ No newline at end of file
diff --git a/graphics/metapost/contrib/macros/mpkiviat/doc/ctan.bib b/graphics/metapost/contrib/macros/mpkiviat/doc/ctan.bib
new file mode 100644
index 0000000000..546a180815
--- /dev/null
+++ b/graphics/metapost/contrib/macros/mpkiviat/doc/ctan.bib
@@ -0,0 +1,72 @@
+
+@manual{ctan-latexmp,
+ title = {The \texttt{latexMP} package},
+ subtitle = {Interface for \LaTeX{}-based typesetting in MetaPost},
+ author = {Jens-Uwe Morawski},
+ date = {2020-06-21},
+ version = {1.2.1},
+ license = {pd},
+ mirror = {https://mirror.ctan.org/graphics/metapost/contrib/macros/latexmp},
+ url = {https://ctan.org/pkg/latexmp},
+ annotation = {The MetaPost package latexMP implements a user-friendly
+ interface to access \LaTeX{}-based typesetting capabilities in
+ MetaPost. The text to be typeset is given as string. This
+ allows even dynamic text elements, for example counters, to be
+ used in labels. Compared to other implementations it is much
+ more flexible, since it can be used as direct replacement for
+ , and much faster, compared for example to the
+ solution provided by .},
+}
+
+@manual{ctan-minim-mp,
+ title = {The \texttt{minim-mp} package},
+ subtitle = {Low-level mplib integration for LuaTeX},
+ author = {Esger Renkema},
+ date = {2024-04-06},
+ version = {2024/1.6},
+ license = {eupl},
+ mirror = {https://mirror.ctan.org/macros/luatex/generic/minim-mp},
+ url = {https://ctan.org/pkg/minim-mp},
+}
+@manual{ctan-lualatex-doc,
+ title = {The \texttt{lualatex-doc} package},
+ subtitle = {A guide to use of \LaTeX{} with LuaTeX},
+ author = {Manuel Pégourié-Gonnard},
+ date = {2023-12-07},
+ version = {},
+ license = {fdl},
+ mirror = {https://mirror.ctan.org/obsolete/info/luatex/lualatex-doc},
+ url = {https://ctan.org/pkg/lualatex-doc},
+}
+
+@manual{ctan-luatex,
+ title = {The \texttt{luatex} package},
+ subtitle = {The LuaTeX engine},
+ author = {{The LuaTeX Team}},
+ date = {2021-12-09},
+ license = {gpl2+},
+ url = {https://ctan.org/pkg/luatex},
+}
+@manual{ctan-metapost,
+ title = {The \texttt{metapost} package},
+ subtitle = {A development of Metafont for creating graphics},
+ author = {{The MetaPost Team} and John Hobby},
+ date = {2021-08-26},
+ license = {lgpl},
+ url = {https://ctan.org/pkg/metapost},
+ annotation = {MetaPost uses a language based on that of
+ to produce precise
+ technical illustrations. Its output is scalable PostScript or
+ SVG, rather than the bitmaps Metafont creates.},
+}
+
+@manual{ctan-luamplib,
+ title = {The \texttt{luamplib} package},
+ subtitle = {Use LuaTeX’s built-in MetaPost interpreter},
+ author = {Hans Hagen and Taco Hoekwater and Élie Roux and Manuel Pégourié-Gonnard and Philipp Gesang and Dohyun Kim},
+ date = {2024-05-10},
+ version = {2.30.0},
+ license = {gpl2},
+ mirror = {https://mirror.ctan.org/macros/luatex/generic/luamplib},
+ url = {https://ctan.org/pkg/luamplib},
+}
diff --git a/graphics/metapost/contrib/macros/mpkiviat/doc/fond.pdf b/graphics/metapost/contrib/macros/mpkiviat/doc/fond.pdf
new file mode 100644
index 0000000000..22218152cc
--- /dev/null
+++ b/graphics/metapost/contrib/macros/mpkiviat/doc/fond.pdf
Binary files differ
diff --git a/graphics/metapost/contrib/macros/mpkiviat/doc/mpkiviat-doc.pdf b/graphics/metapost/contrib/macros/mpkiviat/doc/mpkiviat-doc.pdf
new file mode 100644
index 0000000000..259f2c2846
--- /dev/null
+++ b/graphics/metapost/contrib/macros/mpkiviat/doc/mpkiviat-doc.pdf
Binary files differ
diff --git a/graphics/metapost/contrib/macros/mpkiviat/doc/mpkiviat-doc.tex b/graphics/metapost/contrib/macros/mpkiviat/doc/mpkiviat-doc.tex
new file mode 100644
index 0000000000..fadc0a0b71
--- /dev/null
+++ b/graphics/metapost/contrib/macros/mpkiviat/doc/mpkiviat-doc.tex
@@ -0,0 +1,571 @@
+% LTeX: language=en
+
+\documentclass[a4paper,english]{article}
+
+\usepackage{xcharter-otf}
+\usepackage[left=4cm]{geometry}
+\usepackage{xspace}
+\usepackage[svgnames]{xcolor}
+\usepackage{multicol}
+\usepackage{hologo}
+\usepackage{listings}
+\usepackage{showexpl} % examples
+\usepackage{mflogo}
+\usepackage{babel}
+\usepackage{tikz}
+\usepackage{url}
+\usepackage{tikz}
+\usepackage{luamplib}
+\usepackage{siunitx}
+\usepackage{accsupp}
+\usepackage{pdflscape}
+\usepackage{fancyvrb,xparse,xargs}
+\usepackage[colorlinks]{hyperref}
+\setmonofont{FiraCode-Regular}[
+BoldFont=FiraCode-Bold,
+Contextuals=Alternate, % Activate the calt feature
+Scale=MatchLowercase
+]
+\usepackage{biblatex}
+\usepackage{imakeidx}
+\makeindex[title=Index, columns=2]
+\usepackage[verbatim]{lstfiracode} % Activate ligatures in verbatim
+\usepackage[most]{tcolorbox}
+\tcbuselibrary{listings,breakable}
+\addbibresource{ctan.bib}
+\newcommand\package[1]{\href{https://ctan.org/pkg/#1}{#1}}
+\newcommand{\ctan}{\textsc{ctan}}
+\newtcolorbox{colourband}[1][]{%
+arc=0pt,outer arc=0pt,enhanced, breakable, spread sidewards, left*=0pt, right*=0pt, boxrule=0pt, colback=LightSteelBlue!10, #1}
+
+
+\definecolor{hellgelb}{rgb}{1,1,0.85}
+\definecolor{colKeys}{rgb}{0,0,1}
+\definecolor{colIdentifier}{rgb}{0,0,0}
+\definecolor{colComments}{rgb}{0.3,0.7,0.3}
+\definecolor{colString}{rgb}{0,0.5,0}
+\definecolor{mpcode}{rgb}{0.5,0.1,0.1}
+
+\lstset{%
+ language=metapost,%
+ float=hbp,%
+ basicstyle=\ttfamily, %
+ identifierstyle=\color{DarkSlateGrey}, %
+ keywordstyle=\color{DarkBlue}\itshape, %
+ stringstyle=\color{Green}, %
+ commentstyle=\color{LightSlateGrey}\itshape, %
+ columns=flexible, %
+ tabsize=4, %
+ extendedchars=true, %
+ showspaces=false, %
+ showstringspaces=false, %
+ numbers=left,
+ numbersep=1em,
+ numberstyle=\tiny\color{gray}, %
+ breaklines=true, %
+ breakautoindent=true,
+ captionpos=b,
+ xleftmargin=0em,
+ sensitive=true,
+ morekeywords=[10]{},
+ keywordstyle=[10]\color{Salmon},
+ morekeywords=[7]{draw_axis,
+ draw_grad,
+ draw_legends,
+ draw_line,
+ set_axis_color,
+ set_axis_legends,
+ set_kiviat_unit,
+ set_lattice_color,
+ set_lattice_grid, set_line_mark,
+ set_line_mark_scale,
+ set_line_mark_type,
+ filldraw_line,
+ set_axis,},
+ keywordstyle=[7]\color{FireBrick},
+ morekeywords=[8]{},
+ keywordstyle=[8]\color{Sienna},
+ morekeywords=[9]{},
+ keywordstyle=[9]\color{Olive}
+}
+\lstset{explpreset={pos=t,wide=false,rframe={},preset=\centering}}
+\lstdefinestyle{syntax}{backgroundcolor=\color{blue!15},numbers=none,xleftmargin=0pt,xrightmargin=0pt,
+ frame=single}
+\lstdefinestyle{code}{backgroundcolor=\color{red!15},%numbers=left,
+ xleftmargin=0pt,xrightmargin=0pt,
+ frame=single}
+
+\newtcblisting{mpcode}{
+ arc=0pt,outer arc=0pt,
+ colback=mpcode!3,
+ breakable,
+ boxsep=0pt,left=2pt,right=2pt,top=0pt,bottom=0pt, bottomtitle =
+ 3pt, toptitle=3pt,
+ boxrule=0pt,bottomrule=0.pt,toprule=0.pt, toprule at break =
+ 0pt, bottomrule at break = 0pt,
+ listing only,boxsep=0pt,listing
+ options={breaklines}
+}
+
+
+\newtcblisting{commandshell}{colback=black,colupper=white,colframe=black,
+ arc=0pt,
+ listing only,boxsep=0pt,listing
+ options={style=tcblatex,language=sh},
+ every listing line={\BeginAccSupp{ActualText={}}\textcolor{red}{\small\ttfamily\bfseries user \$> }}\EndAccSupp{}}
+
+\makeatletter
+\tcbset{%
+ listing metapost/.code={%
+ \def\tcbuselistingtext@input{\begin{mplibcode}
+ background:=(.988,.976,.976); input \jobname.listing;
+ \end{mplibcode}}%
+ }
+}
+\makeatother
+\newtcblisting[auto counter,]{ExempleMP}[1][]{%
+ arc=0pt,outer arc=0pt,
+ colback=FireBrick!3,
+ colframe=FireBrick,
+ breakable,fontupper=\small,
+ boxsep=0pt,left=2pt,right=2pt,top=0pt,bottom=2pt, bottomtitle =
+ 3pt, toptitle=3pt, lefttitle=5pt,
+ boxrule=0pt,bottomrule=0.5pt,toprule=0.5pt, toprule at break =
+ 0pt, bottomrule at break = 0pt,
+ listing side text,
+ listing metapost,
+ title={\bfseries\sffamily Exemple~\thetcbcounter},
+ listing options={breaklines},#1
+}
+
+
+\newcommand\mpkiviat{\texttt{mpkiviat}\xspace}
+\newcommand\fichier[1]{\texttt{#1}}
+\newcommand\variableGDD[1]{\texttt{\color{Sienna}#1}}
+\newcommand\typeMP[1]{\texttt{\color{Tomato}#1}}
+\newcommand\typeGDD[1]{\texttt{\color{Sienna}#1}}
+\newcommand\foncGDD[1]{\texttt{\color{Sienna}#1}}
+
+\newenvironment{Note}{
+ \noindent\textbf{Note~---~}}
+ {}
+
+
+
+%
+\colorlet{code}{blue!80!black}
+\newcommand\cmd{\texttt}
+\newcommand\code[1]{\texorpdfstring{\texttt{\color{code}#1}}{#1}}
+\newcommand*\cs[1]{\code{\textbackslash #1}}
+\newcommand*\macro{\par\bigskip\noindent\hspace{-30pt}%
+ \SaveVerb[aftersave={%
+ \UseVerb{Vitem}%
+ }%
+ ]{Vitem}%
+ % \bigskip
+}
+\newcommand\vitem[1][]{\SaveVerb[%
+ aftersave={\item[\textnormal{\UseVerb[#1]{vsave}}]}]{vsave}}
+\newcommand*\textme[1]{\textcolor{black}{\rmfamily\textit{#1}}}
+\newcommand*\meta[1]{% % meta
+ \textme{\ensuremath{\langle}#1\ensuremath{\rangle}}%
+}
+\newcommand*\optstar{% % optional star
+ \meta{\ensuremath{*}}\xspace
+}
+\DefineShortVerb{\|}
+\setlength{\fboxsep}{2pt}
+\fvset{%
+ codes={\catcode`\«\active \catcode`\×\active },
+ defineactive={\makefancyog\makefancytimes},
+ formatcom=\color{FireBrick},
+ frame=single
+}
+% rendre «...» équivalent à \meta{...}
+{\catcode`\«\active
+ \newcommandx\makefancyog[0][addprefix=\global]{%
+ \def«##1»{\meta{##1}}}}
+% rendre × équivalent à \optstar
+{\catcode`\×\active
+ \newcommandx\makefancytimes[0][addprefix=\global]{%
+ \def×{\optstar{}}}}
+
+\NewDocumentEnvironment{Macro}{ov}{%
+\Verb+#2+
+}{%
+}
+\newcommand{\return}[1]{~$\rightarrow$~#1}
+\newcommand{\indication}[1]{\hfill(\itshape #1)}
+
+\newcommand{\R}{\mathbf{R}}
+
+\begin{document}
+%% === Page de garde ===================================================
+\thispagestyle{empty}
+\begin{tikzpicture}[remember picture, overlay]
+ \node[below right, shift={(-4pt,4pt)}] at (current page.north west) {%
+ \includegraphics{fond.pdf}%
+ };
+\end{tikzpicture}%
+
+\noindent
+{\Huge \bfseries \mpkiviat}\\
+{\large Package \MP{} to draw Kiviat diagrams}\\[1cm]
+\parbox{0.6\textwidth}{
+\includegraphics[scale=0.86]{test-2.pdf}
+}\hfill
+\parbox{0.4\textwidth}{\Large\raggedleft
+ \textbf{Contributors}\\
+ Maxime \textsc{Chupin}\\
+ \url{notezik@gmail.com}
+}
+\vfill
+\begin{center}
+Version 0.1, 22th of may 2024\\
+\url{https://gitlab.gutenberg-asso.fr/mchupin/mpkiviat}
+\end{center}
+%% == Page de garde ====================================================
+\newpage
+
+\begin{abstract}
+ This \hologo{METAPOST} package allows to draw Kiviat diagram (or radar chart,
+ web chart, spider chart, etc.).
+\end{abstract}
+
+\tableofcontents
+
+
+\section{Introduction}
+
+\mpkiviat is a package to draw Kiviat diagram (web chart, spider chart, spider
+graph, spider web chart, star chart, star plot, cobweb chart, irregular polygon,or
+polar chart) with \MP~\cite{ctan-metapost}.
+
+\section{Installation}
+
+\mpkiviat is on \ctan{} and can also be installed via the package manager of
+your distribution.
+
+\begin{center}
+ \url{https://www.ctan.org/pkg/mpkiviat}
+\end{center}
+
+
+\subsection{With \TeX live under Linux or macOS}
+
+To install \mpkiviat with \TeX Live, you will have to create the directory
+\lstinline+texmf+ in your \lstinline+home+.
+
+\begin{commandshell}
+mkdir ~/texmf
+\end{commandshell}
+
+Then, you will have to place the \lstinline+mpkiviat.mp+ file in
+\begin{center}
+ \lstinline+~/texmf/metapost/mpkiviat/+
+\end{center}
+
+
+Once this is done, \mpkiviat will be loaded with the classic \MP{}
+input code
+\begin{mpcode}
+input mpkiviat
+\end{mpcode}
+
+\subsection{With Mik\TeX{} and Windows}
+
+These two systems are unknown to the author of \mpkiviat, so we
+refer you to the Mik\TeX documentation concerning the addition of local packages:
+\begin{center}
+ \url{http://docs.miktex.org/manual/localadditions.html}
+\end{center}
+
+
+
+\subsection{Dependencies}
+
+
+\mpkiviat depends, of course on \MP~\cite{ctan-metapost}, as well as the
+packages and---if \mpkiviat is not used with
+\hologo{LuaLaTeX}~\cite{ctan-lualatex-doc,ctan-luatex} and the
+\package{luamplib} or \package{minim-mp}~\cite{ctan-luamplib,ctan-minim-mp}
+packages---the \package{latexmp}~\cite{ctan-latexmp} package.
+
+
+\section{Axis and lattice}
+
+\begin{colourband}
+ \macro|set_axis(«list of axis names»)|
+\medskip
+
+ The \meta{list of axis names} is a list delimited by commas with the names of
+ the different axis as \typeMP{string} (e.g.
+ \lstinline+"Légumes","Fruits","Produits laitiers"+).
+ \index{set_axis@\lstinline+set_axis+}
+\end{colourband}
+
+The command to draw the Kiviat background is the following:
+
+
+\begin{colourband}
+ \macro|draw_axis|
+ \index{draw_axis@\lstinline+draw_axis+}
+\end{colourband}
+
+The combinaison of these two commands produces, for example:
+\begin{ExempleMP}[sidebyside=false]
+input mpkiviat;
+beginfig(1);
+set_axis("Légumes","Viande","Lait","Pain","Poissons");
+draw_axis;
+endfig;
+\end{ExempleMP}
+
+By default, legend of each axis are written, but you can avoid that using the
+following command:
+
+\begin{colourband}
+ \macro|set_axis_legends(«boolean»)|
+ \medskip
+
+ \begin{description}
+ \item[\meta{boolean}:] \typeMP{true} or \typeMP{false}
+ \end{description}
+ \index{set_axis_legends@\lstinline+set_axis_legends+}
+\end{colourband}
+
+
+Default value for each axis is 10, and there is 10 steps for the lattice. You
+can redefine that with the following command that \emph{should be set before the
+drawing command} :
+\begin{colourband}
+ \macro|set_lattice_grid(«unit»,«max»)|
+\medskip
+
+ \begin{description}
+ \item[\meta{unit}:] (\typeMP{numeric}) is the interval between two lines of the lattice;
+ \item[\meta{max}:] (\typeMP{numeric}) is the maximum value for each axis.
+ \end{description}
+ \index{set_lattice_grid@\lstinline+set_lattice_grid+}
+\end{colourband}
+
+You can print the graduations for the lattice with the following command:
+\begin{colourband}
+ \macro|draw_grad(«prefix»,«suffix»,«axis number»)|
+\medskip
+
+\begin{description}
+ \item[\meta{prefix}:] (\typeMP{string}) is a string to add before each graduation;
+ \item[\meta{suffix}:] (\typeMP{suffix}) is a string to add after each graduation;
+ \item[\meta{axis number}:] (\typeMP{numeric}) is an integer to choose the axis
+ used for printing the graduations.
+\end{description}
+\index{draw_grad@\lstinline+draw_grad+}
+\end{colourband}
+
+\mpkiviat defines a unit that can be modified to scale the entire graph with the
+following command (that must be used before the command \lstinline+set_axis+).
+
+\begin{colourband}
+ \macro|set_kiviat_unit(«unit»)|
+\medskip
+
+\begin{description}
+ \item[\meta{unit}:] (\typeMP{string}, default \SI{0.3}{cm}) is the unit to
+ draw the graph.
+\end{description}
+\index{set_kiviat_unit@\lstinline+set_kiviat_unit+}
+\end{colourband}
+
+One can set colors for the axis and the lattice with the two following commands.
+
+
+\begin{colourband}
+ \macro|set_axis_color(«color»)|
+\medskip
+
+ \begin{description}
+ \item[\meta{color}:] (\typeMP{color}) is the color for drawing the axis arrows.
+ \end{description}
+ \index{set_axis_color@\lstinline+set_axis_color+}
+\end{colourband}
+
+
+\begin{colourband}
+ \macro|set_lattice_color(«color»)|
+\medskip
+
+ \begin{description}
+ \item[\meta{color}:] (\typeMP{color}) is the color for drawing the lattice.
+ \end{description}
+ \index{set_lattice_color@\lstinline+set_lattice_color+}
+\end{colourband}
+
+
+
+The following example illustrates some of the previous commands.
+
+\begin{ExempleMP}[sidebyside=false]
+input mpkiviat;
+beginfig(1);
+set_kiviat_unit(0.4cm);
+set_axis("Légumes","Viande","Lait","Pain","Poissons");
+set_axis_color((0.7,0.1,0.1));
+set_lattice_color((0.5,0.5,0.9));
+set_lattice_grid(100,600);
+draw_axis;
+draw_grad("","~€",3);
+endfig;
+\end{ExempleMP}
+
+
+\section{Add lines}
+
+Once you have drawn the background, you can add lines for your Kiviat diagram.
+The basic command to do that is the following:
+
+\begin{colourband}
+ \macro|draw_line(«list of values»)(«color»)|
+\medskip
+
+ \begin{description}
+ \item[\meta{list of value}:] (list of \typeMP{string}) values for the
+ different axis of the Kiviat diagram (e.g. \lstinline+"9","2","3"+). The
+ values must match the settings of the lattice.
+ \item[\meta{color}:] (\typeMP{color}) is the color for drawing the line.
+ \end{description}
+ \index{draw_line@\lstinline+draw_line+}
+\end{colourband}
+
+You can also draw and fill a Kiviat line with the following command:
+
+\begin{colourband}
+ \macro|filldraw_line(«list of values»)(«color»)|
+\medskip
+
+ \begin{description}
+ \item[\meta{list of value}:] (list of \typeMP{string}) values for the
+ different axis of the Kiviat diagram (e.g. \lstinline+"9","2","3"+). The
+ values must match the settings of the lattice.
+ \item[\meta{color}:] (\typeMP{color}) is the color for drawing the line. The
+ filling color is transparent\footnote{Thanks to Anthony Phan \MP{} code : \url{http://www-math.univ-poitiers.fr/~phan/metalpha.html}.}
+ \end{description}
+ \index{filldraw_line@\lstinline+filldraw_line+}
+\end{colourband}
+
+By default, there is mark on a Kiviat line. You can remove marks with the
+following command, setting the booelan argument to \lstinline+false+.
+
+
+
+\begin{colourband}
+ \macro|set_line_mark(«boolean»)|
+\medskip
+
+
+\begin{description}
+ \item[\meta{boolean}:] \typeMP{true} or \typeMP{false}
+\end{description}
+ \index{set_line_mark@\lstinline+set_line_mark+}
+\end{colourband}
+
+You can also choose the type of mark. \mpkiviat provides three types :
+\lstinline+"square"+, by default, \lstinline+"circle"+ and \lstinline+"custom"+.
+To choose one of them, you have to use the following command:
+\begin{colourband}
+ \macro|set_line_mark_type(«type»)|
+\medskip
+
+
+\begin{description}
+ \item[\meta{type}:] (\typeMP{string}) \lstinline+"square"+, by default,
+ \lstinline+"circle"+ and \lstinline+"custom"+.
+\end{description}
+ \index{set_line_mark_type@\lstinline+set_line_mark_type+}
+\end{colourband}
+
+If you choose \lstinline+custom+, you will have to define a macro
+\lstinline+line_mark_custom+ that take a \typeMP{pair} as argument and that
+define a cycled path shifted around the \typeMP{pair}. For instance, the
+\lstinline+line_mark_square+ command is defined as:
+\begin{mpcode}
+def line_mark_square(expr p)=
+ (((-1,-1)--(1,-1)--(1,1)--(-1,1)--cycle scaled _line_mark_scale) shifted p)
+enddef;
+\end{mpcode}
+
+You can adjust the size of the marks using the following scaling macro:
+\begin{colourband}
+ \macro|set_line_mark_scale(«scaling factor»)|
+\medskip
+
+
+\begin{description}
+ \item[\meta{scaling factor}:] is a \typeMP{numeric} that is, by default, 1.
+\end{description}
+ \index{set_line_mark_scale@\lstinline+set_line_mark_scale+}
+\end{colourband}
+
+Here is an example that illustrates some of the previous commands.
+
+\begin{ExempleMP}[sidebyside=false]
+input mpkiviat;
+beginfig(1);
+set_lattice_grid(100,500);
+set_kiviat_unit(0.4cm);
+set_axis("McCabe","LOC","Live Variables","Halstead N","Variablenspanne");
+draw_axis;
+
+filldraw_line(400,300,380,200,250)(red);
+set_line_mark_type("circle");
+filldraw_line(300,320,180,400,150)(blue);
+set_line_mark_type("square");
+set_line_mark_scale(2);
+filldraw_line(100,420,280,200,50)(green);
+endfig;
+\end{ExempleMP}
+
+\section{Legends}
+
+\mpkiviat provides the following command to add legends to a Kiviat diagram:
+
+\begin{colourband}
+ \macro|draw_legends.«place»(«list of names»)|
+\medskip
+
+
+\begin{description}
+ \item[\meta{place}:] is one of the standard \MP{} suffixes :
+ empty, \lstinline+lft+, \lstinline+rt+, \lstinline+top+,
+ \lstinline+bot+, \lstinline+ulft+, \lstinline+urt+, \lstinline+llft+ and
+ \lstinline+lrt+. The legend is placed at the given place of the bounding box
+ of the complete Kiviat diagram (without the legend). If it is empty, the
+ default place is \lstinline+rt+.
+ \item[\meta{list of names}:] is the list of \typeMP{string} of names for the
+ different lines in the order of the construction.
+\end{description}
+ \index{draw_legends@\lstinline+draw_legends+}
+\end{colourband}
+
+\begin{ExempleMP}[sidebyside=false]
+input mpkiviat;
+beginfig(1);
+set_lattice_grid(100,500);
+set_kiviat_unit(0.4cm);
+set_axis("McCabe","LOC","Live Variables","Halstead N","Variablenspanne");
+draw_axis;
+
+filldraw_line(400,300,380,200,250)(red);
+set_line_mark_type("circle");
+filldraw_line(300,320,180,400,150)(blue);
+set_line_mark_type("square");
+set_line_mark_scale(2);
+filldraw_line(100,420,280,200,50)(green);
+draw_legends.lrt("Première", "Deuxième", "Troisième");
+endfig;
+\end{ExempleMP}
+
+\printbibliography
+\printindex
+
+\end{document}
diff --git a/graphics/metapost/contrib/macros/mpkiviat/doc/test-2.pdf b/graphics/metapost/contrib/macros/mpkiviat/doc/test-2.pdf
new file mode 100644
index 0000000000..7b6dec4a9a
--- /dev/null
+++ b/graphics/metapost/contrib/macros/mpkiviat/doc/test-2.pdf
Binary files differ
diff --git a/graphics/metapost/contrib/macros/mpkiviat/metapost/mpkiviat.mp b/graphics/metapost/contrib/macros/mpkiviat/metapost/mpkiviat.mp
new file mode 100644
index 0000000000..135a071df1
--- /dev/null
+++ b/graphics/metapost/contrib/macros/mpkiviat/metapost/mpkiviat.mp
@@ -0,0 +1,318 @@
+% mpkiviat.mp v0.1
+% @Author: Maxime Chupin
+% @Date: 22 may 2024
+% @License: LATEX Project Public License 1.3c.
+
+if not known mplib: input latexmp fi;
+pair _axis[];
+
+numeric _axis_number;
+numeric _kiviat_unit;
+
+numeric _lattice_unit,_lattice_max,_value_max,_unit_value;
+_lattice_unit := 1;
+_lattice_max :=10;
+_value_max := 10;
+_unit_value := 1;
+_kiviat_unit:=0.3cm;
+
+
+pair _kiviat_lines[][];
+path _kiviat_path[];
+color _kiviat_lines_color[];
+numeric _line_nbr;
+_line_nbr:=0;
+
+def set_lattice_grid(expr u,m)=
+ save _nbr;
+ _nbr := (m/u);
+ _value_max := m;
+ _unit_value := u;
+ _lattice_max := floor(_nbr);
+enddef;
+
+
+string _axis_names[];
+
+color _kiviat_lattice_color, _kiviat_axis_color;
+_kiviat_axis_color:= black;
+_kiviat_lattice_color:= 0.8*white;
+
+vardef set_axis_color(expr c)=
+ _kiviat_axis_color:= c;
+enddef;
+
+def set_kiviat_unit(expr u)=
+ _kiviat_unit:=u;
+enddef;
+
+vardef set_lattice_color(expr c)=
+ _kiviat_lattice_color:= c;
+enddef;
+
+vardef set_axis(text t)=
+ _line_nbr:=0;
+ save _st,_i;
+ _axis_number:=0;
+ for _st=t:
+ _axis_number:= _axis_number+1;
+ _axis_names[_axis_number]:=_st;
+ endfor
+ for i:=1 upto _axis_number:
+ _axis[i]:=(cosd(i/_axis_number*360)*_lattice_max*_kiviat_unit,sind(i/_axis_number*360)*_lattice_max*_kiviat_unit);
+ endfor
+enddef;
+
+
+
+
+
+boolean _legend;
+_legend:=true;
+
+% function to determine the point of the bb that intersect the line
+% determined by the angle of the corresponding axis
+vardef _pointbb (expr p, a)=
+ save _bb,_d,_point;
+ path _bb,_d;
+ pair _point;
+ _bb := bbox p;
+ _d := (0,0)--(3000*cosd(a),3000*sind(a));
+ _point := _bb intersectionpoint _d;
+ _point
+enddef;
+
+% set legends true/false
+vardef set_axis_legends(expr b)=
+ _legend:=b;
+enddef;
+
+def draw_axis =
+ save _plabel;
+ picture _plabel;
+ for i:=_lattice_unit step _lattice_unit until _lattice_max :
+ draw for j:=1 upto _axis_number: (i/_lattice_max)*_axis[j]--endfor cycle withcolor
+ _kiviat_lattice_color;
+ endfor
+ for i:=1 upto _axis_number:
+ drawarrow (0,0)--1.2*_axis[i] withcolor _kiviat_axis_color;
+ endfor
+ if(_legend):
+ for i:=1 upto _axis_number:
+ _plabel := image(label(textext(_axis_names[i]),origin)); % passage
+ % par image et label pour centrer la bbox
+ draw _plabel
+ shifted (1.2*_axis[i]+labeloffset*(cosd(angle _axis[i]),sind(angle
+ _axis[i]))+_pointbb(_plabel,angle _axis[i])) ;
+ endfor;
+ fi
+enddef;
+
+def draw_grad(expr p,s)(expr j)=
+ for i:=1 upto _lattice_max:
+ unfill bbox (textext(p&decimal(i*_unit_value)&s) shifted (i/_lattice_max*_axis[j]));
+ draw textext(p&decimal(i*_unit_value)&s) shifted (i/_lattice_max*_axis[j]);
+ endfor
+enddef;
+
+
+
+vardef _build_line(text t)=
+ save _values,_i;
+ _line_nbr:=_line_nbr+1;
+ _i:=0;
+ for _values=t:
+ _i:=_i+1;
+ _kiviat_lines[_line_nbr][_i]:=(_values/_value_max)*_axis[_i];
+ if(_i=1):
+ _kiviat_path[_line_nbr]:=_kiviat_lines[_line_nbr][_i];
+ else:
+ _kiviat_path[_line_nbr]:=_kiviat_path[_line_nbr]--_kiviat_lines[_line_nbr][_i];
+ fi
+ endfor
+ _kiviat_path[_line_nbr]:=_kiviat_path[_line_nbr]--cycle;
+enddef;
+
+
+boolean _line_mark_b;
+_line_mark_b:=true;
+numeric _line_mark_scale;
+_line_mark_scale:=1;
+
+def set_line_mark_scale(expr n)=
+ _line_mark_scale:=n;
+enddef;
+
+def set_line_mark(expr b)=
+ _line_mark_b:=b;
+enddef;
+
+def line_mark_square(expr p)=
+ ((((-1,-1)--(1,-1)--(1,1)--(-1,1)--cycle) scaled _line_mark_scale) shifted p)
+enddef;
+
+def line_mark_circle(expr p)=
+ ((fullcircle scaled 2.5 scaled _line_mark_scale) shifted p)
+enddef;
+
+string _mark_type;
+_mark_type := "square";
+string _save_type[];
+boolean _save_mark_b[];
+numeric _save_scale[];
+
+def set_line_mark_type(expr s)=
+ _mark_type:=s;
+enddef;
+
+def _mark_line(expr c)=
+ _save_type[_line_nbr]:=_mark_type;
+ _save_scale[_line_nbr]:=_line_mark_scale;
+ for i:=1 upto _axis_number:
+ fill
+ if(_mark_type="square"):
+ line_mark_square
+ elseif(_mark_type="circle"):
+ line_mark_circle
+ elseif(_mark_type="custom"):
+ line_mark_custom
+ fi
+ (_kiviat_lines[_line_nbr][i]) withcolor c;
+ endfor;
+enddef;
+
+vardef draw_line(text t)(expr c)=
+ _build_line(t);
+ _kiviat_lines_color[_line_nbr]:=c;
+ draw _kiviat_path[_line_nbr] withcolor c;
+ _save_mark_b[_line_nbr]:=_line_mark_b;
+ if(_line_mark_b):
+ _mark_line(c);
+ fi;
+enddef;
+
+
+vardef filldraw_line(text t)(expr c)=
+ _build_line(t);
+ _kiviat_lines_color[_line_nbr]:=c;
+ alphafill(_kiviat_path[_line_nbr],c,0.1);
+ draw _kiviat_path[_line_nbr] withcolor c;
+ _save_mark_b[_line_nbr]:=_line_mark_b;
+ if(_line_mark_b):
+ _mark_line(c);
+ fi;
+enddef;
+
+vardef _anchor@# (expr p)=
+ if(str @# = "top"):
+ (1/2*(urcorner p)+1/2*(ulcorner p))
+ elseif(str @# = "bot"):
+ (1/2*(lrcorner p)+1/2*(llcorner p))
+ elseif(str @# = "lft"):
+ (1/2*(llcorner p)+1/2*(ulcorner p))
+ elseif(str @# = "rt" ):
+ (1/2*(lrcorner p)+1/2*(urcorner p))
+ elseif(str @# = "urt"):
+ (urcorner p)
+ elseif(str @# = "ulft"):
+ (ulcorner p)
+ elseif(str @# = "lrt"):
+ (lrcorner p)
+ elseif(str @# = "llft"):
+ (llcorner p)
+ elseif(str @# = "c"):
+ (1/4*(lrcorner p)+1/4*(urcorner p)+1/4*(llcorner p)+1/4*(ulcorner p))
+ else:
+ (1/4*(lrcorner p)+1/4*(urcorner p)+1/4*(llcorner p)+1/4*(ulcorner p))
+ fi
+
+enddef;
+
+vardef draw_legends@# (text l) =
+ save _mypic,i,_s_scale;
+ _s_scale := _line_mark_scale;
+ picture _mypic;
+ _mypic = image(
+ i:=0;
+ for s=l:
+ i:=i+1;
+ draw ((0,0)--(0.7*_kiviat_unit,0)) shifted (0,i*(_kiviat_unit)) withcolor
+ _kiviat_lines_color[i];
+ if(_save_mark_b[i]):
+ _line_mark_scale:=_save_scale[i];
+ fill
+ if(_save_type[i]="square"):
+ line_mark_square
+ elseif(_save_type[i]="circle"):
+ line_mark_circle
+ elseif(_save_type[i]="custom"):
+ line_mark_custom
+ fi
+ (0.5[(0,0),(0.7*_kiviat_unit,0)] )shifted (0,i*(_kiviat_unit))
+ withcolor _kiviat_lines_color[i];
+ fi
+ label.rt(textext(s),(0.7*_kiviat_unit,0) shifted (0,i*(_kiviat_unit)));
+ endfor
+ draw bbox currentpicture;
+ _line_mark_scale := _s_scale ;
+ );
+ draw _mypic
+ if(str @# = "top"):
+ shifted (_anchor.top(currentpicture)-_anchor.bot(_mypic))
+ elseif(str @# = "bot"):
+ shifted (_anchor.bot(currentpicture)-_anchor.top(_mypic))
+ elseif(str @# = "lft"):
+ shifted (_anchor.lft(currentpicture)-_anchor.rt(_mypic))
+ elseif(str @# = "rt" ):
+ shifted (_anchor.rt(currentpicture)-_anchor.lft(_mypic))
+ elseif(str @# = "urt"):
+ shifted (_anchor.urt(currentpicture)-_anchor.ulft(_mypic))
+ elseif(str @# = "ulft"):
+ shifted (_anchor.ulft(currentpicture)-_anchor.urt(_mypic))
+ elseif(str @# = "lrt"):
+ shifted (_anchor.lrt(currentpicture)-_anchor.llft(_mypic))
+ elseif(str @# = "llft"):
+ shifted (_anchor.llft(currentpicture)-_anchor.lrt(_mypic))
+ else:
+ shifted (_anchor.rt(currentpicture)-_anchor.lft(_mypic))
+ fi
+ ;
+enddef;
+% transparency Phan : http://www-math.univ-poitiers.fr/~phan/metalpha.html
+% revisité par Jean-Michel Sarlat
+color _tc;
+numeric _ta;
+picture _ap;
+
+def _AlphaFill expr c =
+ _ap := nullpicture;
+ _AlphaPicture(currentpicture,c);
+ addto currentpicture also _ap;
+enddef;
+
+vardef _AlphaPicture(expr p,c) =
+ save p_; picture p_;
+ p_ := nullpicture;
+ addto p_ contour c withcolor _ta[background,_tc];
+ for p__ within p:
+ if (not clipped p__) and (not bounded p__):
+ addto p_ also p__ withcolor
+ _ta[(redpart p__,greenpart p__,bluepart p__), _tc];
+ else:
+ begingroup save _ap;
+ picture _ap; _ap = nullpicture;
+ _AlphaPicture(p__,pathpart p__);
+ addto p_ also _ap;
+ endgroup;
+ fi
+ endfor;
+ clip p_ to c;
+ addto _ap also p_;
+enddef;
+
+vardef alphafill(expr p,c,a) =
+ _tc := c; _ta := a;
+ _AlphaFill p
+enddef;
+
+endinput; \ No newline at end of file
diff --git a/graphics/pgf/contrib/argumentation/README.md b/graphics/pgf/contrib/argumentation/README.md
index 3e6a97e5ec..b0df71dbd0 100644
--- a/graphics/pgf/contrib/argumentation/README.md
+++ b/graphics/pgf/contrib/argumentation/README.md
@@ -4,5 +4,5 @@ The argumentation package provides utility to create abstract argumentation fram
For bug reports and feedback, please contact:
Lars Bengel <lars.bengel@fernuni-hagen.de>
-Version: 1.1 [2023/12/03]
+Version: 1.2 [2024/06/07]
This package is subject to the LaTeX Project Public License 1.3c \ No newline at end of file
diff --git a/graphics/pgf/contrib/argumentation/argumentation-doc.pdf b/graphics/pgf/contrib/argumentation/argumentation-doc.pdf
index 39c89e37e3..48f396a1fe 100644
--- a/graphics/pgf/contrib/argumentation/argumentation-doc.pdf
+++ b/graphics/pgf/contrib/argumentation/argumentation-doc.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/argumentation/argumentation-doc.tex b/graphics/pgf/contrib/argumentation/argumentation-doc.tex
index 128765d43c..d524e50afd 100644
--- a/graphics/pgf/contrib/argumentation/argumentation-doc.tex
+++ b/graphics/pgf/contrib/argumentation/argumentation-doc.tex
@@ -2,7 +2,7 @@
\title{The \argumentation Package}
\author{Lars Bengel\footnote{Please report any issues at \url{https://github.com/aig-hagen/tikz_argumentation}}\\\small lars.bengel@fernuni-hagen.de}
-\date{Version 1.1 [2023/12/03]}
+\date{Version 1.2 [2024/06/07]}
%%%%%%%%% IMPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[]{argumentation} % Main Package
@@ -12,6 +12,8 @@
\usepackage[hidelinks]{hyperref} % Hyperlinks
\usepackage{subcaption} % For two-part figures
+%%% Various commands used in the document
+\newcommand{\todo}[1]{\textcolor{magenta}{TODO: #1}} % for todos
\newcommand{\tikzname}{Ti\emph{k}Z\xspace}
\newcommand{\argumentation}{\texttt{argumentation}\xspace}
\newcommand{\opt}[2][red]{\ensuremath{\textcolor{#1}{\langle #2\rangle}}}
@@ -21,43 +23,135 @@
\begin{document}
\maketitle
+\begin{minipage}{.28\textwidth}
+ \centering
+ \begin{af}
+ \argument{$a$}
+ \argument[right=of a1]{$b$}
+ \argument[below=of a1]{$c$}
+ \argument[right=of a3]{$d$}
+
+ \attack{a1}{a2}
+ \attack{a2}{a3}
+ \attack[bend right]{a3}{a4}
+ \end{af}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+ \begin{verbatim}
+ \begin{af}
+ \argument{$a$}
+ \argument[right=of a1]{$b$}
+ \argument[below=of a1]{$c$}
+ \argument[right=of a3]{$d$}
+
+ \attack{a1}{a2}
+ \attack{a2}{a3}
+ \attack[bend right]{a3}{a4}
+ \end{af}
+ \end{verbatim}
+\end{minipage}
+
+
\tableofcontents
\newpage
-\section{Example}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Quick Guide}\label{sec:quick}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\noindent
+To create an argumentation framework in your \LaTeX document, you have to import the \argumentation package:\\
+
+\vspace{-0.3cm}
+\verb|\usepackage{argumentation}|\\
+
+\noindent
+You can then create a new \texttt{af} environment in which the argumentation framework can then be built:\\
+
+\vspace{-0.3cm}
+\verb|\begin{af}|
+
+\quad\opt[green]{environment~content}
+
+\verb|\end{af}|\\
+
+\noindent
+You may want to wrap the \texttt{af} environment in a \texttt{figure} environment in order to add a caption and reference label.
+The easiest way to create an argument in the argumentation framework is:\\
+
+\vspace{-0.3cm}
+\verb|\argument{|\opt{name}\verb|}|\\
+
+\noindent
+Here, \opt{name} is the name of the argument displayed in the graph and the argument is automatically assigned an \emph{identifier} of the form: $a1$, $a2$, \dots.
+
+To properly add further arguments, you also need to specify a position.
+The \argumentation package offers two easy ways of doing that:\\
+
+\vspace{-0.3cm}
+\verb|\argument[|\opt{dir}\verb|=of |\opt{arg\_id}\verb|]{|\opt{name}\verb|}|
+
+\verb|\argument{|\opt{name}\verb|}| \verb|at (|\opt{posX},\opt{posY}\verb|)|\\
+
+\noindent
+The first instance is \emph{relative position} where \opt{dir} is the direction of placement relative to the argument with the identifier \opt{arg\_id}, with \opt{dir} typically being one of the values: \textsf{right}, \textsf{left}, \textsf{above}, \textsf{below}.
+
+The second instance is \emph{absolute positioning} where (\opt{posX}, \opt{posY}) is a set of coordinates, for example something like $(2, 0)$, $(0, -2)$ or $(2, 4)$.\\
+
+\noindent
+To create an attack between two arguments, you simply use the command:\\
+
+\vspace{-0.3cm}
+\verb|\attack{|\opt{a1}\verb|}{|\opt{a2}\verb|}|\\
+
+\noindent
+Substitute \opt{a1} and \opt{a2} with the identifier of the two arguments.
+Alternatively, you can also directly create bidirectional attacks and self-attacks with the following two commands:\\
+
+\vspace{-0.3cm}
+\verb|\dualattack{|\opt{a1}\verb|}{|\opt{a2}\verb|}|
+
+\verb|\selfattack{|\opt{a1}\verb|}|\\
+
+\noindent
+To customize the look of the arguments and attacks and for a detailed overview over all options and commands provided by this package, please refer to the following example or to the full documentation in Section~\ref{sec:documentation}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage\section{Example}\label{sec:example}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\vspace{-0.7cm}
\begin{figure}[ht]
\centering
\begin{af}
- \argument{args1}{a}
- \argument[right=of args1]{args2}{b}
- \argument[right=of args2]{args3}{c}
- \argument[right=of args3]{args4}{d}
- \argument[right=of args4,incomplete]{args5}{e}
- \argument[below=of args1]{args6}{f}
- \argument[inactive,right=of args6]{args7}{g}
- \argument[inactive,argin,right=of args7]{args8}{h}
- \argument[right=of args8]{args9}{i}
- \argument[right=of args9]{args10}{j}
-
- %\annotation[right]{args5}{$a\lor b$}
-
- \afname[left of=args1,yshift=-0.8cm,xshift=-0.2cm]{cap}{\textbf{F:}}
-
- \selfattack{args1}
- \dualattack{args1}{args6}
- \dualattack[inactive]{args6}{args7}
+ \argument{a}
+ \argument[right=of a1]{b}
+ \argument[right=of a2]{c}
+ \argument[right=of a3]{d}
+ \argument[right=of a4,incomplete]{e}
+ \argument[below=of a1]{f}
+ \argument[inactive,right=of a6]{g}
+ \argument[inactive,argin,right=of a7]{h}
+ \argument[right=of a8]{i}
+ \argument[right=of a9]{j}
+
+ %\annotation[right]{a5}{$a\lor b$}
+
+ \afname[left of=a1,yshift=-0.8cm,xshift=-0.2cm]{\textbf{F:}}
+
+ \selfattack{a1}
+ \dualattack{a1}{a6}
+ \dualattack[inactive]{a6}{a7}
- \attack[inactive]{args8}{args7}
- \attack[inactive]{args7}{args2}
- \annotatedattack{args3}{args2}{$3$}
- \attack[incomplete]{args4}{args5}
- \attack{args5}{args10}
- \attack{args10}{args9}
- \attack{args9}{args4}
-
- \support{args4}{args3}
- \support{args9}{args3}
+ \attack[inactive]{a8}{a7}
+ \attack[inactive]{a7}{a2}
+ \annotatedattack{a3}{a2}{$3$}
+ \attack[incomplete]{a4}{a5}
+ \attack{a5}{a10}
+ \attack{a10}{a9}
+ \attack{a9}{a4}
+
+ \support{a4}{a3}
+ \support{a9}{a3}
\end{af}
\caption{An exemplary AF created with the \argumentation package.}
\label{fig:example}
@@ -68,95 +162,170 @@
\begin{figure}[ht]
\centering
\begin{af}
- \argument{args1}{a}
- \argument[right=of args1]{args2}{b}
- \argument[right=of args2]{args3}{c}
- \argument[right=of args3]{args4}{d}
- \argument[right=of args4,incomplete]{args5}{e}
- \argument[below=of args1]{args6}{f}
- \argument[inactive,right=of args6]{args7}{g}
- \argument[inactive,argin,right=of args7]{args8}{h}
- \argument[right=of args8]{args9}{i}
- \argument[right=of args9]{args10}{j}
-
- \afname[left of=args1,yshift=-0.8cm,xshift=-0.2cm]{cap}{\textbf{F:}}
-
- \selfattack{args1}
- \dualattack{args1}{args6}
- \dualattack[inactive]{args6}{args7}
+ \argument{a}
+ \argument[right=of a1]{b}
+ \argument[right=of a2]{c}
+ \argument[right=of a3]{d}
+ \argument[right=of a4,incomplete]{e}
+ \argument[below=of a1]{f}
+ \argument[inactive,right=of a6]{g}
+ \argument[inactive,argin,right=of a7]{h}
+ \argument[right=of a8]{i}
+ \argument[right=of a9]{j}
+
+ \afname[left of=a1,yshift=-0.8cm,xshift=-0.2cm]{\textbf{F:}}
+
+ \selfattack{a1}
+ \dualattack{a1}{a6}
+ \dualattack[inactive]{a6}{a7}
- \attack[inactive]{args8}{args7}
- \attack[inactive]{args7}{args2}
- \annotatedattack{args3}{args2}{$3$}
- \attack[incomplete]{args4}{args5}
- \attack{args5}{args10}
- \attack{args10}{args9}
- \attack{args9}{args4}
-
- \support{args4}{args3}
- \support{args9}{args3}
+ \attack[inactive]{a8}{a7}
+ \attack[inactive]{a7}{a2}
+ \annotatedattack{a3}{a2}{$3$}
+ \attack[incomplete]{a4}{a5}
+ \attack{a5}{a10}
+ \attack{a10}{a9}
+ \attack{a9}{a4}
+
+ \support{a4}{a3}
+ \support{a9}{a3}
\end{af}
\caption{An exemplary AF created with the \argumentation package.}
\label{fig:example}
\end{figure}
\end{verbatim}
-\section{Documentation for Version 1.1 [2023/12/03]}
-In the following, we give an overview over the functionality of the \argumentation package.
-In general, the functionality provided by this package is fully compatible with \tikzname.
-Meaning every command from this package can be used inside the \textsf{tikzpicture} environment and every \tikzname command or option can be used inside the \texttt{af} environment or in context of the argument nodes and attack edges.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage\section{Documentation for Version 1.2 [2024/06/07]}\label{sec:documentation}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\subsection{Package Options}
- The \argumentation package can be imported via the command
+The \argumentation package provides an easy way for creating argumentation frameworks\footnote{Dung, P. M. (1995). On the acceptability of arguments and its fundamental role in nonmonotonic reasoning, logic programming and n-person games. Artificial intelligence.} in \LaTeX documents.
+It builds on the \tikzname package for drawing the graphs and provides simplified syntax while keeping the same customisation options and keeping full compatibility with all \tikzname commands.
+The package comes with multiple predefined style options for arguments, attacks and supports.
+In the following, we give an overview over the functionality of the \argumentation package.
+The \argumentation package can be imported via the command
- \noindent
\verb|\usepackage{argumentation}|
+ \noindent
Alternatively, one can also adjust the appearance by providing some package options via
- \noindent
\verb|\usepackage[|\opt{options}\verb|]{argumentation}|
-
+
+\subsection{Style Options}\label{sec:style}
\begin{list}{}{\leftmargin=\parindent\rightmargin=0pt}
- \item The package provides the following \emph{optional} options to customize the look of the argumentation frameworks.
+ \item The \argumentation package provides the following options to customize the look of the argumentation frameworks. They can both be set globally (as an option for the \emph{usepackage} command) and also locally for each \texttt{af} environment (see Section~\ref{sec:af}).
\end{list}
+ \vspace{-0.3cm}
\begin{align*}
- \mathsf{namestyle} &\quad \text{Customizes the font of the argument names.}\\
- \mathsf{argumentstyle} &\quad \text{Customizes the appearance of the argument nodes.}\\
- \mathsf{attackstyle} &\quad \text{Customizes the appearance of the attack edges.}\\
- \mathsf{supportstyle} &\quad \text{Customizes the appearance of the support edges.}\\
+ \mathsf{argumentstyle} &\quad \text{Customizes the appearance of argument nodes.}\\
+ \mathsf{attackstyle} &\quad \text{Customizes the appearance of attack edges.}\\
+ \mathsf{supportstyle} &\quad \text{Customizes the appearance of support edges.}\\
+ \mathsf{namestyle} &\quad \text{Customizes the font style of the argument names.}\\
\end{align*}
In the following, we list the available options for each of the style parameters.\\
-\noindent\texttt{namestyle=}\opt{option}
-
- The \textsf{namestyle} parameter accepts three different options
- \begin{align*}
- \mathsf{normal} &\quad \text{(default) The argument name is rendered normally.}\\
- \mathsf{italics} &\quad \text{The argument name is rendered in \emph{italics}.}\\
- \mathsf{bold} &\quad \text{The argument name is rendered in \textbf{bold}.}\\
- \mathsf{bolditalics} &\quad \text{The argument name is rendered with \textbf{\emph{both}}.}\\
- \mathsf{monospace} &\quad \text{The argument name is rendered in \texttt{monospace} font.}\\
- \end{align*}
-
\noindent\texttt{argumentstyle=}\opt{option}
- The \textsf{argumentstyle} parameter accepts two options
+ The \textsf{argumentstyle} parameter accepts three options
\begin{align*}
\mathsf{standard} &\quad \text{(default) Standard style for the argument nodes.}\\
- %\mathsf{retro} &\quad \text{Thicker outline and slightly larger nodes.}\\
+ \mathsf{large} &\quad \text{Same node size, but larger font.}\\
+ \mathsf{thick} &\quad \text{Same node size, thicker outline.}\\
\end{align*}
+\begin{figure}[!h]
+ \begin{subfigure}{0.32\textwidth}
+ \centering
+ \begin{af}[argumentstyle=standard]
+ \argument{a}
+ \argument[right=of a1]{b}
+
+ \attack[]{a1}{a2}
+ \label{af:test}
+ \end{af}
+ \caption{\textsf{argumentstyle}=\textit{standard}}
+ \label{fig:argumentstyle_standard}
+ \end{subfigure}
+ \hfill
+ \begin{subfigure}{0.3\textwidth}
+ \centering
+ \begin{af}[argumentstyle=large]
+ \argument{a}
+ \argument[right=of a1]{b}
+
+ \attack[]{a1}{a2}
+ \end{af}
+ \caption{\textsf{argumentstyle}=\textit{large}}
+ \label{fig:argumentstyle_large}
+ \end{subfigure}
+ \hfill
+ \begin{subfigure}{0.3\textwidth}
+ \centering
+ \begin{af}[argumentstyle=thick]
+ \argument{a}
+ \argument[right=of a1]{b}
+
+ \attack[]{a1}{a2}
+ \end{af}
+ \caption{\textsf{argumentstyle}=\textit{thick}}
+ \label{fig:argumentstyle_thick}
+ \end{subfigure}
+ \caption{The available options for \textsf{argumentstyle}.}
+ \label{fig:argumentstyle}
+\end{figure}
+
\newpage
\noindent\texttt{attackstyle=}\opt{option}
- The \textsf{attackstyle} parameter accepts two options
+ The \textsf{attackstyle} parameter accepts three options
\begin{align*}
\mathsf{standard} &\quad \text{(default) Standard style for the attack arrow tips.}\\
- \mathsf{large} &\quad \text{Alternative style, arrow tip is larger and sharper.}\\
+ \mathsf{large} &\quad \text{Arrow tip is larger and sharper.}\\
+ \mathsf{modern} &\quad \text{\tikzname ModernCS arrow tip.}\\
\end{align*}
+\begin{figure}[!h]
+ \begin{subfigure}{0.32\textwidth}
+ \centering
+ \begin{af}[attackstyle=standard]
+ \argument{a}
+ \argument[right=of a1]{b}
+
+ \attack[]{a1}{a2}
+ \end{af}
+ \caption{\textsf{attackstyle}=\textit{standard}}
+ \label{fig:attackstyle_standard}
+ \end{subfigure}
+ \hfill
+ \begin{subfigure}{0.3\textwidth}
+ \centering
+ \begin{af}[attackstyle=large]
+ \argument{a}
+ \argument[right=of a1]{b}
+
+ \attack[]{a1}{a2}
+ \end{af}
+ \caption{\textsf{attackstyle}=\textit{large}}
+ \label{fig:attackstyle_large}
+ \end{subfigure}
+ \hfill
+ \begin{subfigure}{0.3\textwidth}
+ \centering
+ \begin{af}[attackstyle=modern]
+ \argument{a}
+ \argument[right=of a1]{b}
+
+ \attack[]{a1}{a2}
+ \end{af}
+ \caption{\textsf{attackstyle}=\textit{modern}}
+ \label{fig:attackstyle_thick}
+ \end{subfigure}
+ \caption{The available options for \textsf{attackstyle}.}
+ \label{fig:attackstyle}
+\end{figure}
+
\noindent\texttt{supportstyle=}\opt{option}
The \textsf{supportstyle} parameter accepts three options
@@ -166,25 +335,131 @@ Meaning every command from this package can be used inside the \textsf{tikzpictu
\mathsf{double} &\quad \text{Double arrow line and large flat tip.}\\
\end{align*}
-You can override the \textsf{argumentstyle}, \textsf{attackstyle} and \textsf{supportstyle} parameters and set a custom style via the following commands respectively.
-
-\noindent
-\verb|\setargumentstyle{|\opt{style}\verb|}|
+\begin{figure}[!h]
+ \begin{subfigure}{0.32\textwidth}
+ \centering
+ \begin{af}[supportstyle=standard]
+ \argument{a}
+ \argument[right=of a1]{b}
+
+ \support[]{a1}{a2}
+ \end{af}
+ \caption{\textsf{supportstyle}=\textit{standard}}
+ \label{fig:supportstyle_standard}
+ \end{subfigure}
+ \hfill
+ \begin{subfigure}{0.3\textwidth}
+ \centering
+ \begin{af}[supportstyle=dashed]
+ \argument{a}
+ \argument[right=of a1]{b}
+
+ \support[]{a1}{a2}
+ \end{af}
+ \caption{\textsf{supportstyle}=\textit{dashed}}
+ \label{fig:supportstyle_dashed}
+ \end{subfigure}
+ \hfill
+ \begin{subfigure}{0.3\textwidth}
+ \centering
+ \begin{af}[supportstyle=double]
+ \argument{a}
+ \argument[right=of a1]{b}
+
+ \support[]{a1}{a2}
+ \end{af}
+ \caption{\textsf{supportstyle}=\textit{double}}
+ \label{fig:supportstyle_double}
+ \end{subfigure}
+ \caption{The available options for \textsf{supportstyle}. Note that for \textit{standard} and \textit{dashed} the arrow tip of the selected \textsf{attackstyle} will be used.}
+ \label{fig:supportstyle}
+\end{figure}
-\noindent
-\verb|\setattackstyle{|\opt{style}\verb|}|
+\newpage
+\noindent\texttt{namestyle=}\opt{option}
+
+ The \textsf{namestyle} parameter offers five different options
+ \begin{align*}
+ \mathsf{none} &\quad \text{(default) No effect applied to argument name.}\\
+ \mathsf{math} &\quad \text{The argument name is rendered as $math$ text.}\\
+ &\quad\quad \text{(name must be given without mathmode).}\\
+ \mathsf{italics} &\quad \text{The argument name is rendered in \textit{italics}.}\\
+ &\quad\quad \text{(name must be given in mathmode to apply effect).}\\
+ \mathsf{bold} &\quad \text{The argument name is rendered in $\boldsymbol{bold}$.}\\
+ &\quad\quad \text{(name must be given in mathmode to apply effect).}\\
+ \mathsf{monospace} &\quad \text{The argument name is rendered in \texttt{monospace} font.}\\
+ &\quad\quad \text{(name must be given in mathmode to apply effect).}\\
+ \end{align*}
-\noindent
-\verb|\setsupportstyle{|\opt{style}\verb|}|
-\begin{list}{}{\leftmargin=\parindent\rightmargin=0pt}
- \item
- where \opt{style} is a list of \tikzname style parameters.
-\end{list}
+\begin{figure}[!h]
+ \begin{subfigure}{0.3\textwidth}
+ \centering
+ \begin{af}[namestyle=none]
+ \argument{a}
+ \argument[right=of a1]{b}
+
+ \attack[]{a1}{a2}
+ \end{af}
+ \caption{\textsf{namestyle}=\textit{none}}
+ \label{fig:namestyle_none}
+ \end{subfigure}
+ \hfill
+ \begin{subfigure}{0.3\textwidth}
+ \centering
+ \begin{af}[namestyle=math]
+ \argument{a}
+ \argument[right=of a1]{b}
+
+ \attack[]{a1}{a2}
+ \end{af}
+ \caption{\textsf{namestyle}=\textit{math}}
+ \label{fig:namestyle_math}
+ \end{subfigure}
+ \hfill
+ \begin{subfigure}{0.3\textwidth}
+ \centering
+ \begin{af}[namestyle=italics]
+ \argument{$a$}
+ \argument[right=of a1]{$b$}
+
+ \attack[]{a1}{a2}
+ \end{af}
+ \caption{\textsf{namestyle}=\textit{italics}}
+ \label{fig:namestyle_italics}
+ \end{subfigure}
+ \par\bigskip
+ \begin{subfigure}{0.49\textwidth}
+ \centering
+ \begin{af}[namestyle=bold]
+ \argument{$a$}
+ \argument[right=of a1]{$b$}
+
+ \attack[]{a1}{a2}
+ \end{af}
+ \caption{\textsf{namestyle}=\textit{bold}}
+ \label{fig:namestyle_bold}
+ \end{subfigure}
+ \hfill
+ \begin{subfigure}{0.49\textwidth}
+ \centering
+ \begin{af}[namestyle=monospace]
+ \argument{$a$}
+ \argument[right=of a1]{$b$}
+
+ \attack[]{a1}{a2}
+ \end{af}
+ \caption{\textsf{namestyle}=\textit{monospace}}
+ \label{fig:namestyle_monospace}
+ \end{subfigure}
+ \caption{The available options for \textsf{namestyle}. You can of course apply any formatting yourself when using the default \textsf{namestyle}=\textit{none}.}
+ \label{fig:namestyle}
+\end{figure}
-\subsection{The \texttt{af} Environment}
-The \argumentation package provides an environment for creating abstract argumentation frameworks and bipolar argumentation frameworks in \LaTeX-documents.\\
+\subsection{The \texttt{af} Environment}\label{sec:af}
+The \argumentation package provides an environment for creating abstract argumentation frameworks and many of its extensions in \LaTeX-documents.\\
+\vspace{-0.2cm}
\noindent
\verb|\begin{af}[|\opt{options}\verb|]|
@@ -195,54 +470,58 @@ The \argumentation package provides an environment for creating abstract argumen
\begin{list}{}{\leftmargin=\parindent\rightmargin=0pt}
\item
- The \argumentation package provides the \texttt{af} environment for creating abstract argumentation framework.
+ The above described style options can be set locally for each instance of the \texttt{af} environment by setting the respective parameters in the options of the environment.
+ Local settings override the defaults and globally set values (See Section~\ref{sec:style}
+ for examples).
+
The \texttt{af} environment extends the \textsf{tikzpicture} environment, meaning all \tikzname commands can be used inside the \texttt{af} environment as well.
- Furthermore, all options for the \textsf{tikzpicture} environment can be used for the \texttt{af} environment as well.
- For instance, the option parameter \verb|node distance|, which is set to \verb|1cm| per default.
+ Furthermore, all options for the \textsf{tikzpicture} environment can be used for the \texttt{af} environment as well, e.\,g the option \verb|node distance|, which is set to \verb|1cm| per default.
- If you want to create an argumentation framework with limited space available, you can provide one of the following predefined options for the environment. This is especially useful for two-column layout documents.
+ If you want to create an argumentation framework with limited space available, you can use one of the following predefined options for the \texttt{af} environment.
+ This is especially useful for two-column layout documents.
\begin{align*}
\mathsf{tiny} &\quad \text{\textsf{node distance} is set to $0.35cm$ and nodes are smaller.}\\
- \mathsf{small} &\quad \text{\textsf{node distance} is set to $0.55cm$ and nodes are smaller.}\\
+ \mathsf{small} &\quad \text{\textsf{node distance} is set to $0.55cm$ and nodes are smaller.}
+ %TODO:& argument size as parameter
\end{align*}
- \begin{example}
- Consider the two AFs in Figure~\ref{fig:mini_afs} created with the \textsf{small} and \textsf{tiny} option respectively.
- \end{example}
+ %\begin{example}
+ % Consider the two AFs in Figure~\ref{fig:mini_afs} created with the \textsf{small} and \textsf{tiny} option respectively.
+ %\end{example}
\end{list}
\begin{figure}[ht]
\begin{subfigure}{0.48\textwidth}
\centering
\begin{af}[small]
- \argument{args1}{a}
- \argument[right=of args1]{args2}{b}
- \argument[right=of args2]{args3}{c}
- \argument[right=of args3]{args4}{d}
- \argument[right=of args4]{args5}{e}
- \argument[below=of args1]{args6}{f}
- \argument[inactive,right=of args6]{args7}{g}
- \argument[inactive,argin,right=of args7]{args8}{h}
- \argument[right=of args8]{args9}{i}
- \argument[right=of args9]{args10}{j}
-
- \afname[left of=args1,yshift=-0.5cm,xshift=-0.2cm]{cap}{\textbf{F:}}
-
- \selfattack{args1}
- \dualattack[]{args1}{args6}
- \dualattack[inactive]{args6}{args7}
- \attack[inactive]{args8}{args7}
-
- \attack[inactive]{args7}{args2}
- \attack[]{args3}{args2}
-
- \support[]{args4}{args3}
- \support[]{args9}{args3}
-
- \attack[]{args4}{args5}
- \attack[]{args5}{args10}
- \attack[]{args10}{args9}
- \attack[]{args9}{args4}
+ \argument{a}
+ \argument[right=of a1]{b}
+ \argument[right=of a2]{c}
+ \argument[right=of a3]{d}
+ \argument[right=of a4]{e}
+ \argument[below=of a1]{f}
+ \argument[inactive,right=of a6]{g}
+ \argument[inactive,argin,right=of a7]{h}
+ \argument[right=of a8]{i}
+ \argument[right=of a9]{j}
+
+ \afname[left of=a1,yshift=-0.55cm,xshift=-0.2cm]{\textbf{F:}}
+
+ \selfattack{a1}
+ \dualattack[]{a1}{a6}
+ \dualattack[inactive]{a6}{a7}
+ \attack[inactive]{a8}{a7}
+
+ \attack[inactive]{a7}{a2}
+ \attack[]{a3}{a2}
+
+ \support[]{a4}{a3}
+ \support[]{a9}{a3}
+
+ \attack[]{a4}{a5}
+ \attack[]{a5}{a10}
+ \attack[]{a10}{a9}
+ \attack[]{a9}{a4}
\end{af}
\caption{An exemplary AF created with the \textsf{small} option set.}
\label{fig:example_small}
@@ -251,65 +530,90 @@ The \argumentation package provides an environment for creating abstract argumen
\begin{subfigure}{0.48\textwidth}
\centering
\begin{af}[tiny]
- \argument{args1}{a}
- \argument[right=of args1]{args2}{b}
- \argument[right=of args2]{args3}{c}
- \argument[right=of args3]{args4}{d}
- \argument[right=of args4]{args5}{e}
- \argument[below=of args1]{args6}{f}
- \argument[inactive,right=of args6]{args7}{g}
- \argument[inactive,argin,right=of args7]{args8}{h}
- \argument[right=of args8]{args9}{i}
- \argument[right=of args9]{args10}{j}
-
- \afname[left of=args1,yshift=-0.5cm,xshift=-0.2cm]{cap}{\textbf{F:}}
-
- \selfattack{args1}
- \dualattack[]{args1}{args6}
- \dualattack[inactive]{args6}{args7}
- \attack[inactive]{args8}{args7}
-
- \attack[inactive]{args7}{args2}
- \attack[]{args3}{args2}
-
- \support[]{args4}{args3}
- \support[]{args9}{args3}
-
- \attack[]{args4}{args5}
- \attack[]{args5}{args10}
- \attack[]{args10}{args9}
- \attack[]{args9}{args4}
+ \argument{a}
+ \argument[right=of a1]{b}
+ \argument[right=of a2]{c}
+ \argument[right=of a3]{d}
+ \argument[right=of a4]{e}
+ \argument[below=of a1]{f}
+ \argument[inactive,right=of a6]{g}
+ \argument[inactive,argin,right=of a7]{h}
+ \argument[right=of a8]{i}
+ \argument[right=of a9]{j}
+
+ \afname[left of=a1,yshift=-0.4cm,xshift=-0.2cm]{\textbf{F:}}
+
+ \selfattack{a1}
+ \dualattack[]{a1}{a6}
+ \dualattack[inactive]{a6}{a7}
+ \attack[inactive]{a8}{a7}
+
+ \attack[inactive]{a7}{a2}
+ \attack[]{a3}{a2}
+
+ \support[]{a4}{a3}
+ \support[]{a9}{a3}
+
+ \attack[]{a4}{a5}
+ \attack[]{a5}{a10}
+ \attack[]{a10}{a9}
+ \attack[]{a9}{a4}
\end{af}
\caption{An exemplary AF created with the \textsf{tiny} option set.}
\label{fig:example_tiny}
\end{subfigure}
\caption{Two AFs with smaller nodes, created by using the \textsf{small} and \textsf{tiny} options of the \texttt{af} environment.}
\label{fig:mini_afs}
-
\end{figure}
While the following commands are intended to be used inside the \texttt{af} environment, they can also be used inside the \textsf{tikzpicture} environment.
-\subsection{Arguments}
- Arguments can be created with the following command\\
-
- \noindent
- \verb|\argument{|\opt{id}\verb|}{|\opt{name}\verb|}|
+\subsection{Creating Arguments}
+ Arguments can be created with the \verb|\argument| command.
+ The full command is defined as follows\\
- \begin{list}{}{\leftmargin=\parindent\rightmargin=0pt}
- \item\opt{id}~ is the identifier of the new argument
- \item\opt{name}~ is the displayed name of the argument
- \item To create an argument, you must provide a unique identifier and the name to be displayed in the picture.
- The \opt{id} of an argument is then referred to when creating attacks as well as for the relative positioning of other arguments.
+ \noindent
+ \verb|\argument[|\opt{options}\verb|](|\opt{id}\verb|){|\opt{name}\verb|}| \verb|at| (\opt{posX}, \opt{posY})
+ \begin{list}{}{\leftmargin=\parindent\rightmargin=0pt}
+ \item\opt{options}~ (optional) a list of \tikzname style parameters and/or relative positioning information (see Section~\ref{sec:relpos}).
+ \item\opt{id}~ (optional) the identifier of the new argument. When omitted, arguments will automatically be assigned an identifier of the form: $a1, a2, a3,...$
+ \item\opt{name}~ the displayed name of the argument.
+ \item\opt{posX}, \opt{posY}~ (optional) the coordinates where the argument is placed. Should be omitted if relative positioning is used.
+
+ \item When creating an argument you only have to provide the \opt{name}, all other parameters are optional.
+ The \opt{id} of an argument is used for referencing, e.\,g., when creating attacks or for the relative positioning of other arguments.
\end{list}
-\subsubsection{Relative Positioning}
- This package supports relative placement of the arguments via the \tikzname-library \textsf{positioning}.
- The relative positioning information is provided as an optional parameter via\\
+\newpage
+\begin{example}~
+ \begin{verbatim}
+ \begin{af}
+ \argument{$a$}
+ \argument{$b$} at (1, 1)
+ \argument[right=of a2]{$c$}
+ \argument(argD){$d$} at (-2, 0)
+ \argument[above=of argD]{$e$}
+ \end{af}
+ \end{verbatim}
+
+ \begin{center}
+ \begin{af}
+ \argument{$a$}
+ \argument{$b$} at (1, 1)
+ \argument[right=of a2]{$c$}
+ \argument(argD){$d$} at (-2, 0)
+ \argument[above=of argD]{$e$}
+ \end{af}
+ \end{center}
+\end{example}
+
+\subsubsection{Relative Positioning}\label{sec:relpos}
+ Placement of argument nodes with the \argumentation package relies on relative placement via the \tikzname-library \textsf{positioning}.
+ The relative positioning information is provided as an optional parameter as follows\\
\noindent
- \verb|\argument[|\opt{dir}\verb|=of |\opt{arg\_id}\verb|]{|\opt{id}\verb|}{|\opt{name}\verb|}|
+ \verb|\argument[|\opt{dir}\verb|=of |\opt{arg\_id}\verb|](|\opt{id}\verb|){|\opt{name}\verb|}|
\begin{list}{}{\leftmargin=\parindent\rightmargin=0pt}
\item\opt{dir}~ has to be one of: \emph{right}, \emph{left}, \emph{below} and \emph{above}
@@ -323,36 +627,44 @@ While the following commands are intended to be used inside the \texttt{af} envi
\begin{verbatim}
\begin{af}
- \argument{arg1}{a}
- \argument[below=of arg1]{arg2}{b}
- \argument[right=of arg1, yshift=-24pt,xshift=-8pt]{arg3}{c}
- \argument[right=of arg3, xshift=-0.5cm]{arg4}{d}
- \argument[right=of arg4, yshift=5ex]{arg4}{e}
+ \argument{a}
+ \argument[below=of a1]{b}
+ \argument[right=of a1, yshift=-24pt,xshift=-8pt]{c}
+ \argument[right=of a3, xshift=-0.5cm]{d}
+ \argument[right=of a4, yshift=5ex]{e}
\end{af}
\end{verbatim}
\begin{center}
\begin{af}
- \argument{arg1}{a}
- \argument[below=of arg1]{arg2}{b}
- \argument[right=of arg1, yshift=-24pt,xshift=-8pt]{arg3}{c}
- \argument[right=of arg3, xshift=-0.5cm]{arg4}{d}
- \argument[right=of arg4, yshift=5ex]{arg4}{e}
+ \argument{a}
+ \argument[below=of a1]{b}
+ \argument[right=of a1, yshift=-24pt,xshift=-8pt]{c}
+ \argument[right=of a3, xshift=-0.5cm]{d}
+ \argument[right=of a4, yshift=5ex]{e}
\end{af}
\end{center}
\end{example}
-\subsubsection{Argument Styling}
+%\subsubsection{Absolute Positioning}
+
+\subsubsection{Argument Identifiers}
+ When creating an argument, it is automatically assigned an identifier for the sake of simplicity.
+ You can override this identifier by giving another identifier in parenthesis to the \verb|\argument| command.
+ Per default, the argument identifiers will be numerical of the form $a1, a2, a3, \dots$ based on their order of creation inside the \texttt{af} environment.
+ If you preferred alphabetical identifiers, you can set the package option \textsf{indexing}=\emph{alphabetic} and the argument identifiers will instead be $a, b, c, \dots$.
+
+\subsubsection{Additional Argument Styles}
Furthermore, you can provide optional parameters to adjust the style of the argument node.
For that you can use all \tikzname-style options and additionally the following predefined style parameters:
\begin{align*}
\mathsf{inactive} &\quad \text{The argument is displayed with grey outline and text.}\\
\mathsf{incomplete} &\quad \text{The argument is displayed with a dotted outline.}\\
\mathsf{invisible} &\quad \text{The argument node is completely transparent.}\\
- \mathsf{argin} &\quad \text{The argument is displayed with green background color.}\\
- \mathsf{argout} &\quad \text{The argument is displayed with red background color.}\\
- \mathsf{argundec} &\quad \text{The argument is displayed with cyan background color.}\\
+ \mathsf{accepted} &\quad \text{The argument is displayed with green background color.}\\
+ \mathsf{rejected} &\quad \text{The argument is displayed with red background color.}\\
+ \mathsf{undecided} &\quad \text{The argument is displayed with cyan background color.}\\
\end{align*}
%Some relevant \tikzname style-parameters are
@@ -369,7 +681,7 @@ While the following commands are intended to be used inside the \texttt{af} envi
%\end{align*}
-\subsection{Attacks}
+\subsection{Creating Attacks}
Attacks between two arguments can be created with the command\\
\noindent
@@ -380,7 +692,7 @@ While the following commands are intended to be used inside the \texttt{af} envi
\end{list}
-\subsubsection{Attack Styling}
+\subsubsection{Additional Attack Styles}
To customize an attack you can provide additional optional parameters:
\begin{align*}
\mathsf{inactive} &\quad \text{The attack is displayed in grey.}\\
@@ -389,7 +701,7 @@ While the following commands are intended to be used inside the \texttt{af} envi
\mathsf{selfattack} &\quad \text{Use if source and target of the attack are the same node.}\\
\mathsf{bend~right} &\quad \text{The attack arrow is bent to the right.}\\
&\quad \text{Can additionally provide the angle, e.\,g., \textsf{bend~right=40}.}\\
- \mathsf{bend~left} &\quad \text{The attack arrow is bent to the left. Can also provide an angle.}\\
+ \mathsf{bend~left} &\quad \text{The attack arrow is bent to the left. Can also provide an angle.}
\end{align*}
Of course, all \tikzname style parameters can be used here as well.
@@ -397,27 +709,27 @@ While the following commands are intended to be used inside the \texttt{af} envi
\begin{example}~
\begin{verbatim}
\begin{af}
- \argument{arg1}{a}
- \argument[right=of arg1]{arg2}{b}
- \argument[right=of arg2]{arg3}{c}
- \argument[right=of arg3]{arg4}{d}
-
- \attack{arg1}{arg2}
- \attack[bend right]{arg2}{arg3}
- \attack[bend left=10,inactive]{arg3}{arg4}
- \end{af}
+ \argument{a}
+ \argument[right=of a1]{b}
+ \argument[right=of a2]{c}
+ \argument[right=of a3]{d}
+
+ \attack{a1}{a2}
+ \attack[bend right]{a2}{a3}
+ \attack[bend left=10,inactive]{a3}{a4}
+ \end{af}
\end{verbatim}
\begin{center}
\begin{af}
- \argument{arg1}{a}
- \argument[right=of arg1]{arg2}{b}
- \argument[right=of arg2]{arg3}{c}
- \argument[right=of arg3]{arg4}{d}
-
- \attack{arg1}{arg2}
- \attack[bend right]{arg2}{arg3}
- \attack[bend left=10,inactive]{arg3}{arg4}
+ \argument{a}
+ \argument[right=of a1]{b}
+ \argument[right=of a2]{c}
+ \argument[right=of a3]{d}
+
+ \attack{a1}{a2}
+ \attack[bend right]{a2}{a3}
+ \attack[bend left=10,inactive]{a3}{a4}
\end{af}
\end{center}
\end{example}
@@ -439,27 +751,27 @@ While the following commands are intended to be used inside the \texttt{af} envi
\begin{example}~
\begin{verbatim}
\begin{af}
- \argument{arg1}{a}
- \argument[right=of arg1]{arg2}{b}
+ \argument{a}
+ \argument[right=of a1]{b}
- \selfattack{arg1}
- \dualattack{arg1}{arg2}
- \end{af}
+ \selfattack{a2}
+ \dualattack{a1}{a2}
+ \end{af}
\end{verbatim}
\begin{center}
\begin{af}
- \argument{arg1}{a}
- \argument[right=of arg1]{arg2}{b}
+ \argument{a}
+ \argument[right=of a1]{b}
- \selfattack{arg2}
- \dualattack{arg1}{arg2}
+ \selfattack{a2}
+ \dualattack{a1}{a2}
\end{af}
\end{center}
\end{example}
-\subsection{Supports}
+\subsection{Creating Support Relations}
You can create a support relation between two arguments with the command\\
\noindent
@@ -473,23 +785,23 @@ While the following commands are intended to be used inside the \texttt{af} envi
\begin{example}~
\begin{verbatim}
\begin{af}
- \argument{arg1}{a}
- \argument[right=of arg1]{arg2}{b}
- \argument[right=of arg2]{arg3}{c}
+ \argument{a}
+ \argument[right=of a1]{b}
+ \argument[right=of a2]{c}
- \support{arg1}{arg2}
- \support[bend right]{arg2}{arg3}
- \end{af}
+ \support{a1}{a2}
+ \support[bend right]{a2}{a3}
+ \end{af}
\end{verbatim}
\begin{center}
\begin{af}
- \argument{arg1}{a}
- \argument[right=of arg1]{arg2}{b}
- \argument[right=of arg2]{arg3}{c}
+ \argument{a}
+ \argument[right=of a1]{b}
+ \argument[right=of a2]{c}
- \support{arg1}{arg2}
- \support[bend right]{arg2}{arg3}
+ \support{a1}{a2}
+ \support[bend right]{a2}{a3}
\end{af}
\end{center}
\end{example}
@@ -498,55 +810,63 @@ While the following commands are intended to be used inside the \texttt{af} envi
Many extensions of the original abstract argumentation framework rely on attacks with an associated value.
This may, for instance, be probabilities in the case of probabilistic argumentation frameworks or numerical weights in the case of weighted argumentation frameworks.
These annotations can be added manually via \tikzname or via the following command\\
-
+
\noindent
- \verb|\annotatedattack{|\opt{arg1}\verb|}{|\opt{arg2}\verb|}{|\opt{value}\verb|}|
+ \verb|\annotatedattack[|\opt{position}\verb|]{|\opt{arg1}\verb|}{|\opt{arg2}\verb|}{|\opt{value}\verb|}|
\begin{list}{}{\leftmargin=\parindent\rightmargin=0pt}
- \item where \opt{arg1} and \opt{arg2} are the identifiers of two previously defined arguments and \opt{value} is the number or string that should be annotated to the attack.
- With this command, the annotation is placed above the attack arrow.
+ \item where \opt{arg1} and \opt{arg2} are the identifiers of two previously defined arguments and \opt{value} is the text or number that should be annotated to the attack.
+ \opt{position} specifies where the annotation should be placed relative to the attack arrow and should be one of: \textsf{above}, \textsf{below}, \textsf{left}, \textsf{right}.
\end{list}
\begin{example}~
\begin{verbatim}
\begin{af}
- \argument{arg1}{a}
- \argument[right=of arg1]{arg2}{b}
- \argument[right=of arg2]{arg3}{c}
+ \argument{a}
+ \argument[right=of a1]{b}
+ \argument[right=of a2]{c}
- \annotatedattack{arg1}{arg2}{$x$}
- \annotatedattack[bend right]{arg2}{arg3}{$0.6$}
- \end{af}
+ \annotatedattack[below]{a1}{a2}{$x$}
+ \annotatedattack[above,bend right]{a2}{a3}{$0.6$}
+ \end{af}
\end{verbatim}
\begin{center}
\begin{af}
- \argument{arg1}{a}
- \argument[right=of arg1]{arg2}{b}
- \argument[right=of arg2]{arg3}{c}
+ \argument{a}
+ \argument[right=of a1]{b}
+ \argument[right=of a2]{c}
- \annotatedattack{arg1}{arg2}{$x$}
- \annotatedattack[bend right]{arg2}{arg3}{$0.6$}
- \end{af}
+ \annotatedattack[below]{a1}{a2}{$x$}
+ \annotatedattack[above,bend right]{a2}{a3}{$0.6$}
+ \end{af}
\end{center}
\end{example}
\subsection{Further Commands}
- If you want to display an identifier for your argumentation framework in the picture, you can use the command\\
+ If you want to display an name (or some other text) for your argumentation framework in the picture, you can use the \verb|\afname| command.
+ Just like the \verb|\argument| command it can include an optional identifier and supports both relative and absolute positioning.
+ Some example usages:\\
- \noindent
- \verb|\afname{|\opt{id}\verb|}{|\opt{name}\verb|}|
+ \vspace{-0.25cm}
+ \noindent\verb|\afname{|\opt{name}\verb|}|
+
+ \noindent\verb|\afname(|\opt{id}\verb|){|\opt{name}\verb|}|
+
+ \noindent\verb|\afname[|\opt{relPos}\verb|]{|\opt{name}\verb|}|
+
+ \noindent\verb|\afname{|\opt{name}\verb|}| \verb|at (|\opt{posX},\opt{posY}\verb|)|
\begin{list}{}{\leftmargin=\parindent\rightmargin=0pt}
- \item where \opt{id} is an identifier for the created node and \opt{name} is the text displayed in the picture.
- Additionally, positioning information can be provided via the optional parameters.
+ \item where \opt{id} is an (optional) identifier for the created node (if omitted, the default identifier will be \textit{cap}) and \opt{name} is the text displayed in the picture.
+ Additional positioning information, via \textsf{xshift} or \textsf{yshift}, can be provided via the optional parameters.
\end{list}
\noindent
To create an annotation, e.\,g., an acceptance condition or a weight, next to an argument, the following command can be used.\\
\noindent
- \verb|\annotation{|\opt{arg\_id}\verb|}{|\opt{text}\verb|}|
+ \verb|\annotation[|\opt{optional}\verb|]{|\opt{arg\_id}\verb|}{|\opt{text}\verb|}|
\begin{list}{}{\leftmargin=\parindent\rightmargin=0pt}
\item where \opt{arg\_id} is the identifier of some argument and \opt{text} is the text to be displayed.
@@ -556,35 +876,58 @@ While the following commands are intended to be used inside the \texttt{af} envi
\begin{example}~
\begin{verbatim}
\begin{af}
- \argument{arg1}{a}
- \argument[right=of arg1]{arg2}{b}
- \afname[left=of arg1]{caption}{$F:$}
- \annotation[yshift=-0.4cm,xshift=0.4cm]{arg2}{$\neg a$}
+ \argument{a}
+ \argument[right=of a1]{b}
+ \afname{$F:$} at (-1,0)
+ \annotation[yshift=-0.4cm,xshift=0.4cm]{a2}{$\neg a$}
- \attack{arg1}{arg2}
- \end{af}
+ \support{a1}{a2}
+ \end{af}
\end{verbatim}
\begin{center}
\begin{af}
- \argument{arg1}{a}
- \argument[right=of arg1]{arg2}{b}
- \afname[left=of arg1]{caption}{$F:$}
- \annotation[yshift=-0.4cm,xshift=0.4cm]{arg2}{$\neg a$}
+ \argument{a}
+ \argument[right=of a1]{b}
+ \afname{$F:$} at (-1,0)
+ \annotation[yshift=-0.4cm,xshift=0.4cm]{a2}{$\neg a$}
- \support{arg1}{arg2}
- \end{af}
+ \support{a1}{a2}
+ \end{af}
\end{center}
\end{example}
+ You can manually override the \textsf{argumentstyle}, \textsf{attackstyle} and \textsf{supportstyle} parameters and set a custom style globally via the following commands respectively.\\
+
+ \vspace{-0.3cm}
+ \noindent
+ \verb|\setargumentstyle{|\opt{style}\verb|}|
+
+ \noindent
+ \verb|\setattackstyle{|\opt{style}\verb|}|
+
+ \noindent
+ \verb|\setsupportstyle{|\opt{style}\verb|}|
+
+ \begin{list}{}{\leftmargin=\parindent\rightmargin=0pt}
+ \item
+ where \opt{style} is a list of \tikzname style parameters.
+ \end{list}
+
%\section{Style Definitions}
\newpage
-\section{Version History}
+\section{Version History}\label{sec:history}
-\subsection*{[v1.0 2023/11/05]}
+\subsection*{[v1.2 2024/06/07]}
\begin{itemize}
- \item First Version.
+ \item Changed Syntax of \verb|\argument| command. The \textit{id} parameter is now given inside parenthesis instead of curly braces and is optional.
+ \item Added absolute positioning to \verb|\argument| command, like for \tikzname nodes.
+ \item Added package option $\textsf{indexing}$ to toggle automatic generation of identifiers for created argument nodes. Can be set to \textit{none}, or selected between \textit{alphabetic} and \textit{numeric} (default).
+ \item All package style options can now also be set locally in the \texttt{af} environment.
+ \item Adjusted \verb|\annotatedattack| to require position parameter.
+ \item Various minor bugfixes regarding the \textsf{namestyle} package option.
+ \item Added new argumentstyle \textsf{large}.
\end{itemize}
\subsection*{[v1.1 2023/12/03]}
@@ -596,4 +939,9 @@ While the following commands are intended to be used inside the \texttt{af} envi
\item Updated and improved documentation.
\end{itemize}
+\subsection*{[v1.0 2023/11/05]}
+\begin{itemize}
+ \item First Version.
+\end{itemize}
+
\end{document}
diff --git a/graphics/pgf/contrib/argumentation/argumentation.sty b/graphics/pgf/contrib/argumentation/argumentation.sty
index 7cd678de3c..f247cd959a 100644
--- a/graphics/pgf/contrib/argumentation/argumentation.sty
+++ b/graphics/pgf/contrib/argumentation/argumentation.sty
@@ -1,5 +1,5 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{argumentation}[2023/12/03 Argumentation]
+\ProvidesPackage{argumentation}[2024/05/03 Argumentation]
% Author: Lars Bengel
% E-Mail: lars.bengel@fernuni-hagen.de
% Version: 1.1
@@ -7,77 +7,195 @@
% License: LaTeX Project Public License 1.3c
%%%%%%%%%%% Package Requirements %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\RequirePackage{amsbsy,amsmath} % For proper bold letters in math mode
\RequirePackage{pgfopts} % For managing package options
\RequirePackage{tikz} % For drawing the argumentation frameworks
\usetikzlibrary{positioning} % For relative node positioning
\usetikzlibrary{arrows.meta} % For directed edges / attack arrows
\usetikzlibrary{arrows} % For directed edges / attack arrows
\usetikzlibrary{decorations.markings} % For creating the support edge markings
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%% Package Tikz Style Definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcounter{argument}
+%\newcommand{\argument}{\relax}
+\newcommand{\argstyle}[1]{#1} % Defines the font style in which argument names are displayed
+
+%%% Argument Style Definitions
+\tikzset{ % global base styles
+ argument size/.style={minimum size=0.7cm}, % Standard size of argument nodes
+ argument/.style={}, % Base style for argument nodes
+ argument standard/.style={circle,draw=black,inner sep=0,outer sep=0, argument size},
+ argument large/.style={circle,draw=black,inner sep=0,outer sep=0, argument size, font=\large},
+ argument thick/.style={circle,draw=black,inner sep=0,outer sep=0, argument size, thick},
+}
-\newcommand{\argstyle}[1]{#1} % Defines the font style in which argument names are displayed
+%%% Attack/Support Edge Definitions
+\tikzset{ % global base styles
+ attack/.style={}, % Base style for attack arrow
+ attack standard/.style={-{stealth'}}, % Standard attack arrow
+ attack large/.style={-{Stealth[scale=1.25]}}, % Larger arrow tip
+ attack modern/.style={-{To[sharp,length=0.9mm,line width=0.7pt]}}, % Mordern rightarrow style tip
+ support/.style={},
+ support standard/.style = {attack, postaction = {decorate,decoration={markings,mark=at position 0.36 with {\draw[-] (0,-0.1) -- (0.1,0.1);}}}}, % Standard support arrow
+ support dashed/.style={attack,densely dashed},
+ support double/.style={-{Classical TikZ Rightarrow},double},
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% Package Options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfkeys{/argumentation/argumentstyle/.is choice,
- /argumentation/argumentstyle/standard/.code={\tikzset{argument/.style={circle,draw=black,inner sep=0,outer sep=0}}},
- /argumentation/argumentstyle/custom/.code={},
- /argumentation/argumentstyle=standard,
+%%% Options for style of the argument node itself
+\pgfkeys{/tikz/.cd,
+ argumentstyle/.is choice,
+ argumentstyle/standard/.code={\tikzset{argument/.style={argument standard}}},
+ argumentstyle/large/.code={\tikzset{argument/.style={argument large}}},
+ argumentstyle/thick/.code={\tikzset{argument/.style={argument thick}}},
+}
+\pgfkeys{/argumentation/.cd,
+ .unknown/.code={},
+ argumentstyle/.is choice,
+ argumentstyle/standard/.code={\tikzset{argument/.style={argument standard}}},
+ argumentstyle/large/.code={\tikzset{argument/.style={argument large}}},
+ argumentstyle/thick/.code={\tikzset{argument/.style={argument thick}}},
+ argumentstyle=standard,
}
-\pgfkeys{/argumentation/attackstyle/.is choice,
- /argumentation/attackstyle/standard/.code={\tikzset{attack/.style={-{stealth'}}}},
- /argumentation/attackstyle/large/.code={\tikzset{attack/.style={-{Stealth[scale=1.25]}}}},
- /argumentation/attackstyle=standard,
+%%% Options for the style of the attack edges
+\pgfkeys{/tikz/.cd,
+ attackstyle/.is choice,
+ attackstyle/standard/.code={\tikzset{attack/.style={attack standard}}},
+ attackstyle/large/.code={\tikzset{attack/.style={attack large}}},
+ attackstyle/modern/.code={\tikzset{attack/.style={attack modern}}},
+ attackstyle=standard,
+}
+\pgfkeys{/argumentation/.cd,
+ attackstyle/.is choice,
+ attackstyle/standard/.code={\tikzset{attack/.style={attack standard}}},
+ attackstyle/large/.code={\tikzset{attack/.style={attack large}}},
+ attackstyle/modern/.code={\tikzset{attack/.style={attack modern}}},
+ attackstyle=standard,
+}
+
+%%% Options for the style of the support edges
+\pgfkeys{/tikz/.cd,
+ supportstyle/.is choice,
+ supportstyle/standard/.code={\tikzset{support/.style={support standard}}},
+ supportstyle/dashed/.code={\tikzset{support/.style={support dashed}}},
+ supportstyle/double/.code={\tikzset{support/.style={support double}}},
+ supportstyle=standard,
+}
+\pgfkeys{/argumentation/.cd,
+ supportstyle/.is choice,
+ supportstyle/standard/.code={\tikzset{support/.style={support standard}}},
+ supportstyle/dashed/.code={\tikzset{support/.style={support dashed}}},
+ supportstyle/double/.code={\tikzset{support/.style={support double}}},
+ supportstyle=standard,
}
-\pgfkeys{/argumentation/supportstyle/.is choice,
- /argumentation/supportstyle/standard/.code={\tikzset{support/.style = {attack,postaction = {decorate,decoration={markings,mark=at position 0.36 with {\draw[-] (0,-0.1) -- (0.1,0.1);}}}}}},
- /argumentation/supportstyle/dashed/.code={\tikzset{support/.style = {attack,densely dashed}}},
- /argumentation/supportstyle/double/.code={\tikzstyle{support}=[-{Classical TikZ Rightarrow},double]},
- /argumentation/supportstyle=standard,
+%%% Options for the automatic text formatting for the argument names
+\pgfkeys{/tikz/.cd,
+ namestyle/.is choice,
+ namestyle/none/.code={\renewcommand{\argstyle}[1]{##1}},
+ namestyle/math/.code={\renewcommand{\argstyle}[1]{\ensuremath{##1}}},
+ namestyle/italics/.code={\renewcommand{\argstyle}[1]{\ensuremath{\mathit{\text{##1}}}}},
+ namestyle/bold/.code={\renewcommand{\argstyle}[1]{\ensuremath{\boldsymbol{\text{##1}}}}},
+ namestyle/monospace/.code={\renewcommand{\argstyle}[1]{\ensuremath{\mathtt{\text{##1}}}}},
+ namestyle=none,
+}
+\pgfkeys{/argumentation/.cd,
+ namestyle/.is choice,
+ namestyle/none/.code={\renewcommand{\argstyle}[1]{##1}},
+ namestyle/math/.code={\renewcommand{\argstyle}[1]{\ensuremath{##1}}},
+ namestyle/italics/.code={\renewcommand{\argstyle}[1]{\ensuremath{\mathit{##1}}}},
+ namestyle/bold/.code={\renewcommand{\argstyle}[1]{\ensuremath{\boldsymbol{\text{##1}}}}},
+ namestyle/monospace/.code={\renewcommand{\argstyle}[1]{\ensuremath{\mathtt{##1}}}},
+ namestyle=none,
}
-\pgfkeys{/argumentation/namestyle/.is choice,
- /argumentation/namestyle/normal/.code={\relax},
- /argumentation/namestyle/italics/.code={\renewcommand{\argstyle}[1]{\emph{#1}}},
- /argumentation/namestyle/bold/.code={\renewcommand{\argstyle}[1]{\textbf{#1}}},
- /argumentation/namestyle/bolditalics/.code={\renewcommand{\argstyle}[1]{\emph{\textbf{#1}}}},
- /argumentation/namestyle/monospace/.code={\renewcommand{\argstyle}[1]{\texttt{#1}}},
- /argumentation/namestyle=normal,
+%%% Options for automatic indexing (and naming) of argument nodes
+\NewDocumentCommand { \argument } {} {\relax}
+\pgfkeys{/argumentation/.cd,
+ indexing/.is choice,
+ indexing/none/.code={
+ \RenewDocumentCommand { \argument } {O{} r() m dat d()} {
+ \IfNoValueTF {##5}{%
+ \node[argument size,argument,##1](##2) {\argstyle{##3}};
+ }{%
+ \node[argument size,argument,##1](##2) at (##5) {\argstyle{##3}};
+ }
+ }
+ },
+ indexing/numeric/.code={
+ \RenewDocumentCommand { \argument } {O{} d() m dat d()} {
+ \stepcounter{argument}
+ \IfNoValueTF {##2}{%
+ \IfNoValueTF {##5}{%
+ \node[argument size,argument,##1](a\arabic{argument}) {\argstyle{##3}};
+ }{%
+ \node[argument size,argument,##1](a\arabic{argument}) at (##5) {\argstyle{##3}};
+ }
+ }{%
+ \IfNoValueTF {##5}{%
+ \node[argument size,argument,##1](##2) {\argstyle{##3}};
+ }{%
+ \node[argument size,argument,##1](##2) at (##5) {\argstyle{##3}};
+ }
+ }
+ }
+ },
+ indexing/alphabetic/.code={
+ \RenewDocumentCommand { \argument } {O{} d() m dat d()} {
+ \stepcounter{argument}
+ \IfNoValueTF {##2}{%
+ \IfNoValueTF {##5}{%
+ \node[argument size,argument,##1](\alph{argument}) {\argstyle{##3}};
+ }{%
+ \node[argument size,argument,##1](\alph{argument}) at (##5) {\argstyle{##3}};
+ }
+ }{%
+ \IfNoValueTF {##5}{%
+ \node[argument size,argument,##1](##2) {\argstyle{##3}};
+ }{%
+ \node[argument size,argument,##1](##2) at (##5) {\argstyle{##3}};
+ }
+ }
+ }
+ },
+ indexing/.default=numeric,
+ indexing=numeric,
}
\ProcessPgfPackageOptions{/argumentation}
-%%%%%%%%%% Package Content %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%% AF Environment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Additional AF Style Parameters
\tikzset{ % global predefined tikz-styles
- argument size/.style={minimum size=0.7cm}, % Standard size of argument nodes
selfattack/.style={loop,min distance=2mm,in=0,out=60,looseness=5}, % Standard style for self-attacks
- inactive/.style={draw=black!30, text=black!40}, % Make a node or edge inactive, i.e., greyed out
+ inactive/.style={draw=black!30,text=black!40}, % Make a node or edge inactive, i.e., greyed out
incomplete/.style={densely dashed}, % Style for displaying incomplete nodes or attacks
- argin/.style={fill=green}, % Color an argument that is labelled in
- argout/.style={fill=red}, % Color an argument that is labelled out
- argundec/.style={fill=cyan}, % Color an argument that is labelled undecided
+ accepted/.style={fill=green}, % Color an argument that is labelled in
+ rejected/.style={fill=red}, % Color an argument that is labelled out
+ undecided/.style={fill=cyan}, % Color an argument that is labelled undecided
caption/.style={draw=none}, % Style for displaying AF name in Figure
invisible/.style={draw=none,text=black!0}, % Make a node or edge invisible
- annotation/.style={above,font=\small},
+ annotation/.style={font=\small}, % text annotation style
+ argin/.style={accepted},
+ argout/.style={rejected},
+ argundec/.style={undecided},
}
-% Commands for setting custom tikz-style parameters (experimental)
-\newcommand{\setargumentstyle}[1]{\tikzset{argument/.style={#1}}}
-\newcommand{\setattackstyle}[1]{\tikzset{attack/.style={#1}}}
-\newcommand{\setsupportstyle}[1]{\tikzset{support/.style={#1}}}
-
-%\newcommand{\setloopstyle}[1]{\tikzset{selfattack/.style={#1}}}
-%\newcommand{\adjustargumentstyle}[1]{\tikzset{argument/.append style={#1}}}
-%\newcommand{\adjustattackstyle}[1]{\tikzset{attack/.append style={#1}}}
-
-
-%%%%%%%%%%%%%%% Environment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfkeys{
- /tikz/small/.style = {node distance=0.55cm,argument size/.style={minimum size=0.55cm},caption/.append style={font=\small}},
- /tikz/tiny/.style = {node distance=0.35cm,argument size/.style={font=\small, minimum size=0.4cm},caption/.append style={font=\small}},
+%%% Options for af environment
+\pgfkeys{/tikz/.cd,
+ small/.style = {node distance=0.55cm,argument size/.style={minimum size=0.55cm},caption/.append style={font=\small}},
+ tiny/.style = {node distance=0.35cm,argument size/.style={minimum size=0.4cm,font=\small},caption/.append style={font=\small}},
}
+%%% Initializing the af environment
+\newcounter{af}
\newenvironment{af}[1][]{
+ \refstepcounter{af}
+ \setcounter{argument}{0}
+ \pgfkeys{/argumentation/.cd, #1}
\tikzpicture[#1]
}{%
\endtikzpicture
@@ -86,13 +204,17 @@
%%%%%%%%%%%%%%%% Commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Creates a node displaying the name of the AF
-\newcommand{\afname}[3][]{\node[caption,#1](#2){#3};}
+\NewDocumentCommand { \afname } { O{} D(){caption} m dat d()} {
+ \IfNoValueTF {#5}{%
+ \node[caption,#1](#2){#3};
+ }{%
+ \node[caption,#1](#2) at (#5) {#3};
+ }
+
+}
\newcommand{\annotation}[3][]{\node[annotation,above of=#2,#1](an_#2){#3};}
-% Creates an argument node
-\newcommand{\argument}[3][]{\node[argument,argument size,#1](#2){\argstyle{#3}};}
-
% Creates an attack edge
\newcommand{\attack}[3][]{\path(#2) edge [attack,#1] (#3);}
@@ -107,3 +229,14 @@
% Creates a support edge between two arguments
\newcommand{\support}[3][]{\path(#2) edge [support=0.35,#1] (#3);}
+
+%%% Commands for setting custom tikz-style parameters
+\newcommand{\setargumentstyle}[1]{\tikzset{argument/.style={#1}}}
+\newcommand{\setattackstyle}[1]{\tikzset{attack/.style={#1}}}
+\newcommand{\setsupportstyle}[1]{\tikzset{support/.style={#1}}}
+\newcommand{\setannotationstyle}[1]{\tikzset{annotation/.style={#1}}}
+
+%\newcommand{\setloopstyle}[1]{\tikzset{selfattack/.style={#1}}}
+%\newcommand{\adjustargumentstyle}[1]{\tikzset{argument/.append style={#1}}}
+%\newcommand{\adjustattackstyle}[1]{\tikzset{attack/.append style={#1}}}
+
diff --git a/graphics/pgf/contrib/circuitikz/doc/changelog.tex b/graphics/pgf/contrib/circuitikz/doc/changelog.tex
index d9594dc1fc..0806a20b78 100644
--- a/graphics/pgf/contrib/circuitikz/doc/changelog.tex
+++ b/graphics/pgf/contrib/circuitikz/doc/changelog.tex
@@ -5,6 +5,35 @@ full list of changes.
\begin{itemize}
\item
+ Version 1.6.9 (2024-05-25)
+
+ Several new components and a bug fix for a nasty long-standing bug
+ about switching diode types.
+
+ \begin{itemize}
+ \tightlist
+ \item
+ Added a Relais-Shape (contributed by
+ \href{https://github.com/circuitikz/circuitikz/pull/795}{Jakob
+ ``DraUX'' on GitHub}
+ \item
+ Added a center tap anchor for tube filament (suggested by
+ \href{https://github.com/circuitikz/circuitikz/issues/792}{user
+ bogger33 on GitHub})
+ \item
+ Added neon lamps (two versions, suggested by
+ \href{https://github.com/circuitikz/circuitikz/issues/793}{user
+ bogger33 on GitHub})
+ \item
+ Added a configurable spark gap (suggested by
+ \href{https://github.com/circuitikz/circuitikz/issues/800}{user
+ bogger33 on GitHub})
+ \item
+ Fix a long-standing problem when
+ \href{https://github.com/circuitikz/circuitikz/issues/794}{(locally)
+ switching diode type}
+ \end{itemize}
+\item
Version 1.6.8 (2024-05-05)
Several new components, more anchors, a bit of documentation
diff --git a/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf b/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf
index d4f9bc36a2..cc6865c72f 100644
--- a/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf
+++ b/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf
index 9d1e52303d..9f3d2b57e0 100644
--- a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf
+++ b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex
index 20a79f3d68..ac116af09e 100644
--- a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex
+++ b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex
@@ -3266,6 +3266,8 @@ Here you'll find bipoles that are not easily grouped in the categories above.
\circuitdescbip*{fuse}{Fuse}{}
\circuitdescbip*{afuse}{Asymmetric fuse}{asymmetric fuse}
\circuitdescbip{wfuse}{``wiggly'' fuse}{wiggly fuse}()[left/110/0.2, right/70/0.2]
+ \circuitdescbip*{relais}{Relais\footnotemark}{}
+ \footnotetext{Contributed by \href{https://github.com/circuitikz/circuitikz/pull/795}{Jakob «DraUX»}}
\circuitdescbip{squid}{Squid}{}
\circuitdescbip{barrier}{Barrier}{}
\circuitdescbip{openbarrier}{Open barrier}{}
@@ -3287,6 +3289,13 @@ If otherwise \texttt{americangfsurgearrester} option is active (or the style \te
\begin{groupdesc}
\circuitdescbip*{lamp}{Lamp}{}
\circuitdescbip*{bulb}{Bulb}{}
+ \circuitdescbip*{neonlampcc}{Neon lamp\footnotemark\ (double cathode style)}{}
+ \footnotetext{The neon lamps have been added in \texttt{v1.6.9} thanks to a suggestion by \href{https://github.com/circuitikz/circuitikz/issues/793}{user bogger33 on GitHub}.}
+ \circuitdescbip*{neonlampac}{Neon lamp (anode and cathode style)}{}
+ \circuitdescbip*{sparkgap}{Spark gap\footnotemark (unenclosed)}{}
+ \footnotetext{The spark gap has been added in \texttt{v1.6.9} thanks to a suggestion by \href{https://github.com/circuitikz/circuitikz/issues/800}{user bogger33 on GitHub}.}
+ \circuitdescbip*[sparkgap]{sparkgap, sparkgap/circle}{Spark gap}{}
+ \circuitdescbip*[sparkgap]{sparkgap, sparkgap/dot, sparkgap/circle}{Spark gap (gas filled)}{}
\circuitdescbip*{loudspeaker}{loudspeaker}{}( north/90/0.4, ne/45/0.4, east/0/0.4, se/-45/0.4, south/-90/0.4, sw/-135/0.4, west/180/0.4, nw/135/0.4, left/135/0.2, right/45/0.2, center/-135/0.2)
\circuitdescbip*{mic}{mic}{}( north/90/0.4, east/0/0.4, south/-90/0.4, west/180/0.4, left/135/0.2, right/45/0.2, center/-135/0.2)
\circuitdescbip*{tlmic}{tail-less mic\footnotemark}{}( north/90/0.4, east/0/0.4, south/-90/0.4, west/180/0.4, left/135/0.2, right/45/0.2, center/-135/0.2)
@@ -3324,9 +3333,9 @@ You have two types of microphones; \texttt{mic} has protruding connection and \t
\subsubsection{Miscellaneous element customization}\label{sec:tweak-misc}
-You can change the scale of all the miscellaneous elements by setting the key \texttt{misc/scale} to something different from the default \texttt{1.0}.
+You can change the scale of all the miscellaneous elements by setting the key \texttt{misc/scale} to something different from the default \texttt{1.0}; relative thickness can be controlled with \texttt{misc/thickness}.
-\paragraph{Wiggly fuses} can have (or not have) poles; you can switch between the two forms by setting to \texttt{true} or \texttt{false} (default \texttt{true}) the key \texttt{bipoles/wfuse/dots}; if they have poles, you can choose any of the pole shapes with the key \texttt{bipoles/wfuse/shape}.
+\paragraph{Wiggly fuses.} Wiggly fuses can have (or not have) poles; you can switch between the two forms by setting to \texttt{true} or \texttt{false} (default \texttt{true}) the key \texttt{bipoles/wfuse/dots}; if they have poles, you can choose any of the pole shapes with the key \texttt{bipoles/wfuse/shape}.
The pole nodes are named \texttt{-left} and \texttt{-right} so that you can access their borders.
\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
@@ -3342,6 +3351,30 @@ The pole nodes are named \texttt{-left} and \texttt{-right} so that you can acce
\end{circuitikz}
\end{LTXexample}
+\paragraph{Neon lamps.} Neon lamp ``dot'' size is the same as the size of poles (\texttt{circ} and \texttt{ocirc}), and they can be changed locally:
+\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{tikzpicture}
+ \draw (0,0) to[neonlampcc, nodes width=0.03] ++(2,0)
+ to[neonlampac, misc/thickness=3] ++(2,0);
+\end{tikzpicture}
+\end{LTXexample}
+
+\paragraph{Spark gap.} The \texttt{sparkgap} component is similar to the (American) surge arrester, but it's more configurable; it will render bare (unenclosed) by default, but you can add a (fillable) enclosure with the key \texttt{sparkgap/circle} and a dot with \texttt{sparkgap/dot} (they are boolean keys, false by default).
+Moreover, the arrows are configurable like other arrows in the package (see~\ref{sec:tunablearrows}) using the \texttt{sparkgap end arrow} key (default \texttt{Triangle[scale=2]}). The gap is tunable with \texttt{sparkgap/gap} (default \texttt{0.05}).
+\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{tikzpicture}
+ \draw (0,2) to[sparkgap, l=gap\textsubscript{1}] ++(2,0)
+ to[sparkgap, sparkgap/circle,
+ sparkgap/dot, l=S2] ++(2,0);
+ \ctikzset{sparkgap end arrow={Kite[scale=1.5]}}
+ \draw (0,0) to[sparkgap, l=S3] ++(2,0)
+ to[sparkgap, l=S4, sparkgap/circle,
+ sparkgap/gap=0.15] ++(2,0);
+\end{tikzpicture}
+\end{LTXexample}
+As in neon lamps, the dot (if activated by the key \texttt{sparkgap/dot}) follows the size of poles and can be changed locally.
+
+
\subsection{Multiple wires (buses)}
These are simple drawings to indicate multiple wires.
@@ -4827,7 +4860,8 @@ Note that the \verb|diodetube| is used as component name to avoid clashes with t
Normally, the filament is not drawn. If you want a filament, put the \verb|filament| option in the node description:
\begin{groupdesc}
- \circuitdesc*{diodetube,filament}{Tube Diode}{}(anode/90/0.2, filament 1/-135/0.2, filament 2/-45/0.2 )
+ \circuitdesc*{diodetube,filament}{Tube Diode\footnotemark}{}(anode/90/0.2, filament 1/-90/0.4, filament 2/-45/0.2, filament center/0/0.5 )
+ \footnotetext{The \texttt{filament center} anchor has been added in \texttt{v1.6.9} thanks to a suggestion by \href{https://github.com/circuitikz/circuitikz/issues/792}{user bogger33 on GitHub}.}
\end{groupdesc}
Sometimes, you don't want the cathode to be drawn (but you do want the filament). Use the \verb|nocathode| option in the node description:
@@ -4869,18 +4903,27 @@ fully configurable, and the attributes are described below:
\verb|tubes/filament angle| & \verb|15| & angle from the centerpoint \\
\end{tabular}
-Conventionally, the model of the tube is indicated at the \verb|east| anchor:
+Conventionally, the model of the tube is indicated at the \verb|east| anchor, and you can access filament anchors if you need them:
-\begin{LTXexample}[varwidth]
-\ctikzset{tubes/width=1.4}
-\ctikzset{tubes/height=1}
-\begin{circuitikz}
-\draw (0,0) node[triode] (Tri) {};
-\draw (Tri.east) node[right] {12AX7};
-\end{circuitikz}
+\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\ctikzset{tubes/width=1.4, tubes/height=1}
+\begin{circuitikz}
+ \draw (0,2) node[triode, filament] (Tri) {};
+ \draw (Tri.east) node[right] {12AX7};
+ \ctikzset{tubes/filament angle=40,
+ tubes/filament distance=0.2}
+ \draw (0,0) node[triode, filament] (Pent) {};
+ \draw (Pent.east) node[right] {BOH};
+ \path (Tri.filament 1) node[red,ocirc]{};
+ \path (Pent.filament 1) node[red,ocirc]{};
+ \path (Tri.filament center) node[blue,ocirc]{};
+ \draw (Pent.filament center) -- ++(0,-1) node[tlground]{};
+ \end{circuitikz}
\end{LTXexample}
+
+
Example triode amplifier:
\begin{lstlisting}
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz.sty b/graphics/pgf/contrib/circuitikz/tex/circuitikz.sty
index 69ce1bbddd..afa91d4b2b 100644
--- a/graphics/pgf/contrib/circuitikz/tex/circuitikz.sty
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz.sty
@@ -16,8 +16,8 @@
\providecommand\DeclareRelease[3]{}
\providecommand\DeclareCurrentRelease[2]{}
-\def\pgfcircversion{1.6.8}
-\def\pgfcircversiondate{2024/05/05}
+\def\pgfcircversion{1.6.9}
+\def\pgfcircversiondate{2024/05/25}
\DeclareRelease{0.4}{2012/12/20}{circuitikz-0.4-body.tex}
\DeclareRelease{v0.4}{2012/12/20}{circuitikz-0.4-body.tex}
diff --git a/graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex b/graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex
index 4978311dca..626ed28812 100644
--- a/graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex
+++ b/graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex
@@ -3696,9 +3696,9 @@
\pgf@circuit@fulldiodefalse
\ctikzset{diode/.is choice}
-\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
-\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
-\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
+\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
+\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue\pgf@circuit@strokediodefalse}
+\ctikzset{diode/stroke/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodetrue}
\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full}}
\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty}}
@@ -6977,7 +6977,7 @@
\ctikzset{bipoles/tlmic/width/.initial=.5}% it MUST be mic width *5/8
\ctikzset{bipoles/mic/bar thickness/.initial=1}
-% arresters, fuses, lamps, etc
+% arresters, fuses, relais, lamps, etc
\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
@@ -6994,6 +6994,7 @@
\ctikzset{bipoles/afuse/height/.initial=.20}
\ctikzset{bipoles/afuse/width/.initial=.50}
\ctikzset{bipoles/lamp/height/.initial=.60}
+\ctikzset{bipoles/lamp/width/.initial=.60}
\ctikzset{bipoles/wfuse/height/.initial=.20}
\ctikzset{bipoles/wfuse/width/.initial=.50}
\ctikzset{bipoles/wfuse/shape/.initial=ocirc}
@@ -7001,9 +7002,22 @@
\ctikzset{bipoles/wfuse/dots/.is choice}
\ctikzset{bipoles/wfuse/dots/.is if=pgf@circ@wfuse@dots}
%
-\ctikzset{bipoles/lamp/width/.initial=.60}
+\ctikzset{bipoles/relais/height/.initial=.8}
+\ctikzset{bipoles/relais/width/.initial=.3}
+%
\ctikzset{bipoles/bulb/height/.initial=.8}
\ctikzset{bipoles/bulb/width/.initial=.8}
+% suggested by @bogger33, see https://github.com/circuitikz/circuitikz/issues/793
+\ctikzset{bipoles/neonlampcc/height/.initial=.60}
+\ctikzset{bipoles/neonlampac/height/.initial=.60}
+\pgf@circ@declare@family@arrows{sparkgap}
+\newif\ifpgf@sparkgap@dot
+\newif\ifpgf@sparkgap@circle
+\ctikzset{sparkgap/circle/.is if=pgf@sparkgap@circle}
+\ctikzset{sparkgap/dot/.is if=pgf@sparkgap@dot}
+\ctikzset{sparkgap/gap/.initial=.05}
+\ctikzset{bipoles/sparkgap/height/.initial=.60}
+%
\ctikzset{bipoles/squid/height/.initial=.60}
\ctikzset{bipoles/squid/width/.initial=.60}
\ctikzset{bipoles/barrier/height/.initial=.60}
@@ -7233,6 +7247,25 @@
\pgfnode{\cshape}{center}{}{\thisshape-right}{\pgfusepath{draw}}
\fi
}
+
+%% Relais
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/relais/height}}
+{relais}
+{\ctikzvalof{bipoles/relais/height}}
+{\ctikzvalof{bipoles/relais/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
%% SQUID added by Cor Molenaar 5 March 2010
\pgfcircdeclarebipolescaled{misc}
{}
@@ -7340,11 +7373,116 @@
\pgfsetbeveljoin
\pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
\pgfusepath{draw}
-}% %>>>
+}%
+% neon lamps, suggested by @bogger33 https://github.com/circuitikz/circuitikz/issues/793
+% implemented by Romano
+% double-cathode (capacitor) style
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/neonlampcc/height}}
+{neonlampcc}
+{\ctikzvalof{bipoles/neonlampcc/height}}
+{\ctikzvalof{bipoles/neonlampcc/height}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ %% leads in
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \def\@@w{0.2}\def\@@h{0.6}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\@@w\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\@@w\pgf@circ@res@right}{0pt}}
+ %% "capacitor style" symbol
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\@@w\pgf@circ@res@right}{\@@h\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\@@w\pgf@circ@res@right}{\@@h\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\@@w\pgf@circ@res@left}{\@@h\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\@@w\pgf@circ@res@left}{\@@h\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ %% dot
+ \pgftransformshift{\pgfpoint{\@@w\pgf@circ@res@left-3*\ctikzvalof{nodes width}\pgf@circ@Rlen}
+ {\@@h\pgf@circ@res@down + 2*\ctikzvalof{nodes width}\pgf@circ@Rlen}}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{draw,fill}}
+}
+% anode-cathode style
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/neonlampac/height}}
+{neonlampac}
+{\ctikzvalof{bipoles/neonlampac/height}}
+{\ctikzvalof{bipoles/neonlampac/height}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ %% leads in
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \def\@@w{0.5}\def\@@h{0.5}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\@@w\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\@@w\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ %% one terminal is a straight plate
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\@@w\pgf@circ@res@left}{\@@h\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\@@w\pgf@circ@res@left}{\@@h\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ %% the other is an "ocirc" shape
+ \pgftransformshift{\pgfpoint{\@@w\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw,fill}}
+ %% dot
+ \pgftransformshift{\pgfpoint{-\@@w\pgf@circ@res@right}{\@@h\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{draw,fill}}
+}
+% spark gap, suggested by @bogger33 https://github.com/circuitikz/circuitikz/issues/800
+\pgfcircdeclarebipolescaled{misc}
+{
+ \savedmacro{\changeh}{\edef\changeh{\ifpgf@sparkgap@circle 1 \else 0.5 \fi}}
+ \pgfcirc@border@extend@updown{\changeh}{\changeh}
+}
+{\ctikzvalof{bipoles/sparkgap/height}}
+{sparkgap}
+{\ctikzvalof{bipoles/sparkgap/height}}
+{\ctikzvalof{bipoles/sparkgap/height}}{
+ % circle (if requested)
+ \pgfscope
+ \ifpgf@sparkgap@circle
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@up}
+ \pgf@circ@draworfill
+ \fi
+ \endpgfscope
+ % arrows
+ \pgfscope
+ \pgfcirc@set@arrows{sparkgap}{}{Triangle[scale=2]}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{sparkgap/gap}\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{sparkgap/gap}\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope{}
+ % dot (if requested)
+ \ifpgf@sparkgap@dot
+ \pgftransformshift{\pgfpoint
+ {\ctikzvalof{sparkgap/gap}\pgf@circ@res@left-1*\ctikzvalof{nodes width}\pgf@circ@Rlen}
+ {-4*\ctikzvalof{nodes width}\pgf@circ@Rlen}}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{draw,fill}}
+ \fi
+}
+
+%>>>
%% Path definitions for Miscellaneous%<<<
\pgfcirc@activate@bipole@simple{l}{lamp}
+\pgfcirc@activate@bipole@simple{l}{neonlampcc}
+\pgfcirc@activate@bipole@simple{l}{neonlampac}
+\pgfcirc@activate@bipole@simple{l}{sparkgap}
\pgfcirc@activate@bipole@simple{l}{bulb}
\pgfcirc@activate@bipole@simple{l}{squid}
\pgfcirc@activate@bipole@simple{l}{barrier}
@@ -7355,6 +7493,7 @@
\pgfcirc@style@to@style{asymmetric fuse}{afuse}
\pgfcirc@activate@bipole@simple{l}{wfuse}
\pgfcirc@activate@bipole{l}{wfuse}{wfuse}{wiggly fuse}
+\pgfcirc@activate@bipole@simple{l}{relais}
\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
\pgfcirc@activate@bipole{l}{europeangfsurgearrester}{european gas filled surge arrester}{european gas filled surge arrester}
\pgfcirc@activate@bipole{l}{americangfsurgearrester}{american gas filled surge arrester}{american gas filled surge arrester}
diff --git a/graphics/pgf/contrib/circuitikz/tex/pgfcirctripoles.tex b/graphics/pgf/contrib/circuitikz/tex/pgfcirctripoles.tex
index 7457dabb46..d8d089dd92 100644
--- a/graphics/pgf/contrib/circuitikz/tex/pgfcirctripoles.tex
+++ b/graphics/pgf/contrib/circuitikz/tex/pgfcirctripoles.tex
@@ -4025,6 +4025,8 @@
\pgfmathsetmacro{\@@BDscale}{\ctikzvalof{tripoles/#1/bodydiode scale}* \ctikzvalof{\ctikzclass/scale}/\ctikzvalof{diodes/scale}}
\pgftransformscale{\@@BDscale}
\ifpgf@circuit@fulldiode
+ % I'm not sure why this is needed, but...
+ \pgf@circ@maybe@color{transistor bodydiode/color}
\pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
\else
\pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
@@ -8613,6 +8615,11 @@
\pgf@y=\pgf@circ@res@up\advance\pgf@y by -\pgf@circ@res@right
\fi
}
+ \savedmacro{\tubes@filament@angle}{\edef\tubes@filament@angle{\ctikzvalof{tubes/filament angle}}}
+ \savedmacro{\tubes@filament@distance}{\edef\tubes@filament@distance{\ctikzvalof{tubes/filament distance}}}
+ \savedmacro{\tubes@tube@radius}{\edef\tubes@tube@radius{\ctikzvalof{tubes/tube radius}}}
+ \savedmacro{\tubes@cathode@width}{\edef\tubes@cathode@width{\ctikzvalof{tubes/cathode width}}}
+ \savedmacro{\tubes@cathode@distance}{\edef\tubes@cathode@distance{\ctikzvalof{tubes/cathode distance}}}
\anchor{tube ne}{\tubene}
\anchor{tubesq ne}{\tubesquarene}
% tube shape anchors: geo
@@ -8647,30 +8654,37 @@
\anchor{cathode}{%
\northwest
\pgf@y=-\pgf@y
- \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
+ \pgf@x=\tubes@cathode@width\pgf@x
}
\anchor{cathode 1}{%
\northwest
\pgf@y=-\pgf@y
- \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
+ \pgf@x=\tubes@cathode@width\pgf@x
}
\anchor{cathode 2}{%
\northwest
\pgf@y=-\pgf@y
- \pgf@x=-\ctikzvalof{tubes/cathode width}\pgf@x
+ \pgf@x=-\tubes@cathode@width\pgf@x
}
\anchor{filament 1}{%
\northwest
- \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgfmathparse{(\tubes@tube@radius*sin(\tubes@filament@angle)}
\pgf@x=\pgfmathresult\pgf@x
\pgf@y=-\pgf@y
}
\anchor{filament 2}{%
\northwest
- \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgfmathparse{(\tubes@tube@radius*sin(\tubes@filament@angle)}
\pgf@x=-\pgfmathresult\pgf@x
\pgf@y=-\pgf@y
}
+ \anchor{filament center}{%
+ \northwest
+ \pgf@ya=0.5\pgf@y
+ \pgf@ya=-\tubes@cathode@distance\pgf@y
+ \advance\pgf@ya by -\tubes@filament@distance\pgf@y
+ \pgf@x=0pt\pgf@y=\pgf@ya
+ }
% Extra anchors
#2%
diff --git a/graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex b/graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex
index a738c664ea..4e4861071f 100644
--- a/graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex
+++ b/graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex
@@ -16,8 +16,8 @@
\startmodule[circuitikz]
\usemodule[tikz]
-\def\pgfcircversion{1.6.8}
-\def\pgfcircversiondate{2024/05/05}
+\def\pgfcircversion{1.6.9}
+\def\pgfcircversiondate{2024/05/25}
\writestatus{loading}{\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion}
diff --git a/graphics/pgf/contrib/dynkin-diagrams/README b/graphics/pgf/contrib/dynkin-diagrams/README
index e43f31e0b8..5abe74143c 100644
--- a/graphics/pgf/contrib/dynkin-diagrams/README
+++ b/graphics/pgf/contrib/dynkin-diagrams/README
@@ -1,6 +1,6 @@
Dynkin diagrams
-v3.1415926535897932384
-2 June 2023
+v3.14159265358979323846
+6 July 2024
Authors:
Ben McKay
diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib
index 9660120699..952e4a90bf 100644
--- a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib
+++ b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib
@@ -1,6 +1,5 @@
% Encoding: ISO-8859-1
-
@Book{Adams:1996,
Title = {Lectures on exceptional {L}ie groups},
Author = {Adams, J. F.},
@@ -477,4 +476,67 @@ MRREVIEWER = {Stephen Gelbart},
url = {https://doi.org/10.1007/978-1-4612-0979-9},
}
+@Book{Knapp:2002,
+ author = {Knapp, Anthony W.},
+ publisher = {Birkh\"{a}user Boston, Inc., Boston, MA},
+ title = {Lie groups beyond an introduction},
+ year = {2002},
+ edition = {Second},
+ isbn = {0-8176-4259-5},
+ series = {Progress in Mathematics},
+ volume = {140},
+ mrclass = {22-01},
+ mrnumber = {1920389},
+ pages = {xviii+812},
+}
+
+@Article{Witt:1941,
+ author = {Witt, Ernst},
+ journal = {Abh. Math. Sem. Hansischen Univ.},
+ title = {Spiegelungsgruppen und {A}ufz\"ahlung halbeinfacher {L}iescher {R}inge},
+ year = {1941},
+ issn = {0025-5858},
+ pages = {289--322},
+ volume = {14},
+ doi = {10.1007/BF02940749},
+ fjournal = {Abhandlungen aus dem Mathematischen Seminar der Hansischen Universit\"at},
+ mrclass = {09.1X},
+ mrnumber = {5099},
+ mrreviewer = {O.\ F. G. Schilling},
+ url = {https://doi.org/10.1007/BF02940749},
+}
+
+@Article{Johnson.et.al.1999,
+ author = {Johnson, N. W. and Ratcliffe, J. G. and Kellerhals, R. and Tschantz, S. T.},
+ journal = {Transform. Groups},
+ title = {The size of a hyperbolic {C}oxeter simplex},
+ year = {1999},
+ issn = {1083-4362,1531-586X},
+ number = {4},
+ pages = {329--353},
+ volume = {4},
+ doi = {10.1007/BF01238563},
+ fjournal = {Transformation Groups},
+ mrclass = {20F55 (57M60)},
+ mrnumber = {1726696},
+ mrreviewer = {Andrei\ Yu.\ Vesnin},
+ url = {https://doi.org/10.1007/BF01238563},
+}
+
+@Book{McMullen.Schulte:2002,
+ author = {McMullen, Peter and Schulte, Egon},
+ publisher = {Cambridge University Press, Cambridge},
+ title = {Abstract regular polytopes},
+ year = {2002},
+ isbn = {0-521-81496-0},
+ series = {Encyclopedia of Mathematics and its Applications},
+ volume = {92},
+ doi = {10.1017/CBO9780511546686},
+ mrclass = {52B15 (20F55 51F15 51M20)},
+ mrnumber = {1965665},
+ mrreviewer = {Rade\ \v Zivaljevi\'c},
+ pages = {xiv+551},
+ url = {https://doi.org/10.1017/CBO9780511546686},
+}
+
@Comment{jabref-meta: databaseType:bibtex;}
diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf
index 2109c1ba1c..dceef35936 100644
--- a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf
+++ b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty
index e45f21ee18..7a92e22048 100644
--- a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty
+++ b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty
@@ -1,6 +1,6 @@
% The Dynkin Diagrams package.
%
-% Version 3.141 592 653 589 793 238 4
+% Version 3.141 592 653 589 793 238 46
%
% This package draws Dynkin diagrams in LaTeX
% documents, using the TikZ package.
@@ -13,7 +13,7 @@
% Released under the LaTeX Project Public License v1.3c or later, see
% http://www.latex-project.org/lppl.txt
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
-\ProvidesPackage{dynkin-diagrams}[2023/06/02 Dynkin diagrams]
+\ProvidesPackage{dynkin-diagrams}[2024/07/05 Dynkin diagrams]
\RequirePackage{tikz}
\RequirePackage{xstring}
\RequirePackage{etoolbox}
@@ -1873,6 +1873,7 @@
}%
+
%% \dynkinQuadrupleEdge{<p>}{<q>}
%% \dynkinQuadrupleEdge*{<p>}{<q>}
%% Draws an oriented edge of valence 4 from root <p> to root <q> on the current Dynkin diagram.
@@ -2041,6 +2042,8 @@
% Is the right side of the Dynkin diagram folded?
\newif\ifdynkin@Coxeter
% Should we draw Coxeter diagrams?
+\newif\ifdynkin@Coxeter@above
+% Should we draw Coxeter diagram extra labels above or below?
\newif\ifdynkin@Kac@arrows
% Should we draw arrows following Kac?
\newif\ifdynkin@odd
@@ -2097,6 +2100,8 @@
},
Coxeter/.is if = dynkin@Coxeter,
Coxeter=false,
+ Coxeter above/.is if = dynkin@Coxeter@above,
+ Coxeter above=true,
double edges/.style = {
fold style/.style = {
draw=black,
@@ -2598,6 +2603,10 @@
{%
\global\dynkin@rank=\dynkin@string\relax%
\global\dynkin@nodes=\dynkin@string\relax%
+ \ifWitt@symbol%
+ \global\advance\dynkin@rank by -1\relax%
+ \global\advance\dynkin@nodes by -1\relax%
+ \fi
\ifdynkin@is@twisted%
\IfStrEqCase{\dynkin@series}%
{%
@@ -2800,7 +2809,6 @@
% Turn Satake codes into Dynkin diagram expressions in \dynkin@string.
\dynkin@grok@Satake@codes%
}%
-
% Expand out any digits in \dynkin@string into multiples of the various root marks.
\expand@Dynkin@Roots@Digits%
% Assign to \dynkin@roots the input string \dynkin@string with all . symbols removed,
@@ -2881,20 +2889,41 @@
\global\dynkin@rank@minus@three\the\dynkin@rank@minus@two\relax%
\global\advance\dynkin@rank@minus@three by -1\relax%
}%
+
+\newif\ifWitt@symbol
\newcount\dynkin@lenny%
%% \dynkin@grok@series
%% Interprets the dynkin@series, to see if it is extended, twisted, and what twisted series it is.
\NewDocumentCommand\dynkin@grok@series{}%
{%
- \StrLen{\dynkin@series}[\dynkin@lenny]
+ \StrLen{\dynkin@series}[\dynkin@lenny]\relax%
\ifnum\dynkin@lenny>1\relax%
\dynkin@error@series%
\fi%
+% We need to check if the series is a Witt symbol.
+ \IfSubStr{PSRQTUVW}{\dynkin@series}%
+ {%
+ \global\Witt@symboltrue%
+ \IfStrEqCase{\dynkin@series}%
+ {%
+ {P}{\global\xdef\dynkin@series{A}}%
+ {S}{\global\xdef\dynkin@series{B}}%
+ {R}{\global\xdef\dynkin@series{C}}%
+ {Q}{\global\xdef\dynkin@series{D}}%
+ {T}{\global\xdef\dynkin@series{E}}%
+ {U}{\global\xdef\dynkin@series{F}}%
+ {V}{\global\xdef\dynkin@series{G}}%
+ {W}{\global\xdef\dynkin@series{I}}%
+ }%
+ }%
+ {%
+ \global\Witt@symbolfalse%
+ }%
\edef\series{\dynkin@series}%
\IfStrEqCase{\dynkin@twisted@series}%
{%
{0}{}%
- {1}{ \global\dynkin@is@extendedtrue}%
+ {1}{\global\dynkin@is@extendedtrue}%
{2}{%
\IfSubStr{ADE}{\dynkin@series}%
{%
@@ -3459,19 +3488,6 @@
}%
[\global#5=#4\relax]%
}%
- {G}%
- {%
- \IfStrEqCase{#3}%
- {%
- {Carter}{\global#5=%
- \stringCharacterInPosition{21}{#4}%
- \relax}%
- {Dynkin}{\global#5=%
- \stringCharacterInPosition{21}{#4}%
- \relax}%
- }%
- [\global#5=#4\relax]%
- }%
}%
[\global#5=#4\relax]%
}%
@@ -3640,25 +3656,6 @@
}%
[\global#5=#3\relax]%
}%
- {G}%
- {%
- \IfStrEqCase{#4}%
- {%
- {Carter}%
- {%
- \global#5=%
- \stringCharacterInPosition{21}{#3}%
- \relax%
- }%
- {Dynkin}%
- {%
- \global#5=%
- \stringCharacterInPosition{21}{#3}%
- \relax%
- }%
- }%
- [\global#5=#3\relax]%
- }%
}%
[\global#5=#3\relax]%
}%
@@ -3777,12 +3774,14 @@
}%
{G}%
{%
- \IfStrEqCase{\dynkin@ordering}%
- {%
- {Carter}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}%
- {Dynkin}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}%
- }%
- [\global\dynkin@Root@Number=#1\relax]%
+ \global\dynkin@Root@Number=#1\relax%
+% \IfStrEqCase{\dynkin@ordering}%
+% {%
+% {Carter}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}%
+% {Dynkin}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}%
+% {Kac}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}%
+% }%
+% [\global\dynkin@Root@Number=#1\relax]%
}%
}%
[\global\dynkin@Root@Number=#1\relax]%
@@ -4338,9 +4337,15 @@
\else%
\ifdynkin@Coxeter%
\Adynkin%
- \dynkinEdgeLabel%
- {\the\dynkin@rank@minus@one}%
- {\the\dynkin@rank}{4}%
+ \ifdynkin@Coxeter@above%
+ \dynkinEdgeLabel%
+ {\the\dynkin@rank@minus@one}%
+ {\the\dynkin@rank}{4}%
+ \else%
+ \dynkinEdgeLabel*%
+ {\the\dynkin@rank@minus@one}%
+ {\the\dynkin@rank}{4}%
+ \fi%
\else
% Create the roots.
\ifnum\dynkin@ply>1\relax%
@@ -4994,7 +4999,11 @@
\dynkinEdge*{SingleEdge}{1}{2}%
\dynkinEdge*{SingleEdge}{2}{3}%
\dynkinEdge*{SingleEdge}{3}{4}%
- \dynkinEdgeLabel{2}{3}{4}%
+ \ifdynkin@Coxeter@above%
+ \dynkinEdgeLabel{2}{3}{4}%
+ \else%
+ \dynkinEdgeLabel*{2}{3}{4}%
+ \fi%
\else%
\dynkinEdge*{SingleEdge}{1}{2}%
\dynkinEdge*{SingleEdge}{3}{4}%
@@ -5002,6 +5011,9 @@
\fi%
\fi%
}%
+
+\newif\ifGtwo@old@dynkin@reverse@arrows
+
%% \Gdynkin
%% Draws a G series Dynkin diagram.
\NewDocumentCommand\Gdynkin{}%
@@ -5013,14 +5025,72 @@
\dynkin@jump{1}%
\dynkinPlaceRootHere*{1}{left}{above}%
\dynkinPlaceRootRelativeTo*{2}{1}{southfold}{left}{below}%
+ \ifdynkin@reverse@arrows%
+ \global\Gtwo@old@dynkin@reverse@arrowstrue\relax%
+ \else%
+ \global\Gtwo@old@dynkin@reverse@arrowsfalse\relax%
+ \fi%
+ \IfStrEqCase{\dynkin@ordering}%
+ {%
+ {Adams}{%
+ \ifdynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \else%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \fi\relax}%
+ {Bourbaki}{%
+ \ifdynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \else%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \fi\relax}%
+ {Carter}{\relax}%
+ {Dynkin}{\relax}%
+ {Kac}{\relax}%
+ }%
+ [\relax]%
\dynkinEdge*{TripleDownRightSemiCircle}{1}{2}%
+ \ifGtwo@old@dynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \else%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \fi%
\ifdynkin@arrows%
\dynkinLeftFold*{1}{2}%
\fi%
\else%
\dynkinPlaceRootHere*{1}{below}{above}%
\dynkinPlaceRootRelativeTo*{2}{1}{east}{below}{above}%
- \dynkinTripleEdge*{1}{2}%
+ \ifdynkin@reverse@arrows%
+ \global\Gtwo@old@dynkin@reverse@arrowstrue\relax%
+ \else%
+ \global\Gtwo@old@dynkin@reverse@arrowsfalse\relax%
+ \fi%
+ \IfStrEqCase{\dynkin@ordering}%
+ {%
+ {Adams}{%
+ \ifdynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \else%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \fi\relax}%
+ {Bourbaki}{%
+ \ifdynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \else%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \fi\relax}%
+ {Carter}{\relax}%
+ {Dynkin}{\relax}%
+ {Kac}{\relax}%
+ }%
+ [\relax]%
+ \dynkinTripleEdge*{1}{2}\relax%
+ \ifGtwo@old@dynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \else%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \fi%
\fi%
\fi%
}%
@@ -5030,7 +5100,11 @@
\newcommand*{\Hdynkin}%
{%
\Adynkin%
- \dynkinEdgeLabel{1}{2}{5}%
+ \ifdynkin@Coxeter@above%
+ \dynkinEdgeLabel{1}{2}{5}%
+ \else%
+ \dynkinEdgeLabel*{1}{2}{5}%
+ \fi%
}%
%% \Idynkin
%% Draws an I series Coxeter diagram.
@@ -5038,7 +5112,11 @@
{%
\dynkin@rank=2\relax%
\Adynkin%
- \dynkinEdgeLabel{1}{2}{\dynkin@gonality}%
+ \ifdynkin@Coxeter@above%
+ \dynkinEdgeLabel{1}{2}{\dynkin@gonality}%
+ \else%
+ \dynkinEdgeLabel*{1}{2}{\dynkin@gonality}%
+ \fi%
}%
%% \extendedAdynkin
@@ -5183,9 +5261,15 @@
\dynkinEdge*{SingleEdge}%
{\the\dynkin@rank@minus@one}%
{\the\dynkin@rank}%
- \dynkinEdgeLabel%
- {\the\dynkin@rank@minus@one}%
- {\the\dynkin@rank}{4}%
+ \ifdynkin@Coxeter@above%
+ \dynkinEdgeLabel%
+ {\the\dynkin@rank@minus@one}%
+ {\the\dynkin@rank}{4}%
+ \else%
+ \dynkinEdgeLabel*%
+ {\the\dynkin@rank@minus@one}%
+ {\the\dynkin@rank}{4}%
+ \fi%
\else%
\ifnum\dynkin@ply<3\relax%
\dynkinEdge*{DoubleEdge}%
@@ -5211,7 +5295,11 @@
\Cdynkin{}%
\ifdynkin@Coxeter%
\dynkinEdge*{SingleEdge}{0}{1}%
- \dynkinEdgeLabel{0}{1}{4}%
+ \ifdynkin@Coxeter@above%
+ \dynkinEdgeLabel{0}{1}{4}%
+ \else%
+ \dynkinEdgeLabel*{0}{1}{4}%
+ \fi%
\else%
\dynkinEdge*{DoubleEdge}{0}{1}%
\fi%
@@ -5391,8 +5479,11 @@
\xdef\dynkin@gonality{6}%
\dynkinPlaceRootHere*{0}{below}{above}%
\dynkinEast%
+ \let\extended@G@old@order\dynkin@ordering%
+ \xdef\dynkin@ordering{Carter}%
\Gdynkin%
\dynkinEdge*{SingleEdge}{0}{1}%
+ \xdef\dynkin@ordering{\extended@G@old@order}%
}%
%% \extendedHdynkin
@@ -5423,7 +5514,11 @@
\dynkin@rank=1\relax%
\Adynkin%
\dynkinEdge*{SingleEdge}{0}{1}%
- \dynkinEdgeLabel{0}{1}{\infty}%
+ \ifdynkin@Coxeter@above%
+ \dynkinEdgeLabel{0}{1}{\infty}%
+ \else%
+ \dynkinEdgeLabel*{0}{1}{\infty}%
+ \fi%
}%
\newcount\dynkin@height@minus@one%
%% \twistedAdynkin
@@ -5531,6 +5626,8 @@
\fi%
\fi%
}%
+
+\newif\iftwisted@D@old@dynkin@reverse@arrows
%% \twistedDdynkin
%% Draws a twisted D series affine Dynkin diagram.
\NewDocumentCommand\twistedDdynkin{}%
@@ -5546,7 +5643,17 @@
\dynkinPlaceRootRelativeTo*{1}{0}{east}{below}{above}%
\dynkinPlaceRootRelativeTo*{2}{1}{east}{below}{above}%
\dynkinEdge*{SingleEdge}{0}{1}%
- \dynkinTripleEdge*{2}{1}%
+ \ifdynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \else%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \fi%
+ \dynkinTripleEdge*{1}{2}%
+ \ifdynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \else%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \fi%
\else%
\ClassError%
{Dynkin diagrams}%
diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex
index 5f4bb33e41..b3f0be4341 100644
--- a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex
+++ b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex
@@ -1,7 +1,7 @@
\documentclass{amsart}
\title[The Dynkin diagrams package]%
{The Dynkin diagrams package \\
-Version 3.141\,592\,653\,589\,793\,238\,4}
+Version 3.141\,592\,653\,589\,793\,238\,46}
%% My name:
\makeatletter
\DeclareRobustCommand{\scotsMc}{\scotsMcx{c}}
@@ -20,7 +20,8 @@ Version 3.141\,592\,653\,589\,793\,238\,4}
\author{Ben \scotsMc{}Kay}
\address{School of Mathematical Sciences, University College Cork, Cork, Ireland}
\email{b.mckay@ucc.ie}
-\date{2 June 2023}
+\date{6 July 2024}
+\thanks{Thanks to Jeffrey Adams, Paul Aspinwall, Mikhail Borovoi, Fran Burstall, Michiel Van Couwenberghe, Xu Gao, Skip Garibaldi, Enrico Gregorio, Mamuka Jibladze, Tasho Kaletha, Jordan Lambert, Sriotchilism O'Zaic, Gopal Prasad, Anthony Pulido, Andres Sambarino, Paul Schwahn, Felix Weinstein, Niels Wen and Gordon Williams.}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenx}
\usepackage{etoolbox}
@@ -168,6 +169,11 @@ before upper={\widowpenalties=3 10000 10000 150}}
\begin{document}
\maketitle
+\renewcommand\do[1]{\dyn#1}
+\renewcommand{\wdtA}{3cm}
+\begin{dynkinTable}{The Dynkin diagrams of the reduced simple root systems \cite{Bourbaki:2002} pp. 265--290, plates I--IX}{2.25cm}{2.5cm}
+\docsvlist{A{},B{},C{},D{},E6,E7,E8,F4,G2}
+\end{dynkinTable}
\begin{center}
\begin{varwidth}{\textwidth}
\tableofcontents
@@ -176,6 +182,8 @@ before upper={\widowpenalties=3 10000 10000 150}}
\setlength{\arrayrulewidth}{1.5pt}
+\newpage
+
\section{Quick introduction}
\begin{tcolorbox}[title={Load the Dynkin diagram package (see options below)}]
\begin{Verbatim}
@@ -202,7 +210,6 @@ The Dynkin diagram of \(B_3\) is
\draw[very thick,red] (root 1) to [out=-45, in=-135] (root 3);
\end{dynkinDiagram}
\end{tcblisting}
-\newpage
\section{Interaction with \TikZ}
Inside a \TikZ environment, default behaviour is to draw from the origin, so you can draw around the diagram:
\begin{tcblisting}{title={Inside a \TikZ environment}}
@@ -228,15 +235,6 @@ The Dynkin diagram of \(B_3\) is
\end{tikzpicture}
\end{tcblisting}
-\newpage
-
-\renewcommand\do[1]{\dyn#1}
-\renewcommand{\wdtA}{3cm}
-\begin{dynkinTable}{The Dynkin diagrams of the reduced simple root systems \cite{Bourbaki:2002} pp. 265--290, plates I--IX}{2.25cm}{2.5cm}
-\docsvlist{A{},B{},C{},D{},E6,E7,E8,F4,G2}
-\end{dynkinTable}
-
-
\section{Set options globally}
\begin{tcolorbox}[title={Most options set globally \dots}]
@@ -251,6 +249,7 @@ The Dynkin diagram of \(B_3\) is
densely dashed}}
\end{Verbatim}
\end{tcolorbox}
+
You can also pass options to the package in \verb!\usepackage!.
\emph{Danger:} spaces in option names are replaced with hyphens: \texttt{edge length=1cm} is \texttt{edge-length=1cm} as a global option; moreover you should drop the extension \verb!/.style! on any option with spaces in its name (but not otherwise). For example,
\begin{tcolorbox}[title={\dots or pass global options to the package}]
@@ -275,6 +274,9 @@ The Dynkin diagram of \(B_3 \times A_2\) is \dynkins{B3|A2}.
The Dynkin diagram of \(B_3 \times A_2\) is
\begin{DynkinDiagrams}{B3|A2}\end{DynkinDiagrams}
\end{tcblisting}
+
+\newpage
+
Each factor can have its own options.
\begin{tcblisting}{title={Environment}}
The Dynkin diagram of \(B_3 \times A_2\) is
@@ -297,11 +299,11 @@ They are spaced out by the length of one edge between successive diagrams; chang
\endfoot
\endlastfoot
A_1\times A_1&\dynkins{A1|A1}&\texttt{\detokenize{\dynkins}\{A1|A1\}}\\
-A_2&\dynkins{A2}&\texttt{\detokenize{\dynkins}\{A2\}}\\
-B_2&\dynkins{B2}&\texttt{\detokenize{\dynkins}\{B2\}}\\
-C_2&\dynkins{C2}&\texttt{\detokenize{\dynkins}\{C2\}}\\
-D_2&\dynkins{D2}&\texttt{\detokenize{\dynkins}\{D2\}}\\
-G_2&\dynkins{G2}&\texttt{\detokenize{\dynkins}\{G2\}}\\
+A_2&\dynkin A2&\texttt{\detokenize{\dynkin} A2}\\
+B_2&\dynkin B2&\texttt{\detokenize{\dynkin} B2}\\
+C_2&\dynkin C2&\texttt{\detokenize{\dynkin} C2}\\
+D_2&\dynkin D2&\texttt{\detokenize{\dynkin} D2}\\
+G_2&\dynkin G2&\texttt{\detokenize{\dynkin} G2}\\
\end{longtable}
\section{Coxeter diagrams}
@@ -333,6 +335,35 @@ G_2&\dynkins{G2}&\texttt{\detokenize{\dynkins}\{G2\}}\\
[Coxeter,gonality=n]I{}}
\end{dynkinTable}
+\newpage
+
+Some people prefer Coxeter diagrams to have these labels appear on the bottom of the diagram, so say \verb!Coxeter above=false!, most likely as a global option.
+
+\pgfkeys{/Dynkin diagram,
+Coxeter above=false}
+
+\renewcommand\do[1]{\dyn#1}
+\begin{dynkinTable}{The Coxeter diagrams of the simple reflection groups}{2.25cm}{6cm}
+\forDynkinSemicolonsvlist{\do}{
+[Coxeter]A{};
+[Coxeter]B{};
+[Coxeter]C{};
+[Coxeter]D{};
+[Coxeter]E6;
+[Coxeter]E7;
+[Coxeter]E8;
+[Coxeter]F4;
+[Coxeter,gonality=n]G2;
+[Coxeter]H2;
+[Coxeter]H3;
+[Coxeter]H4;
+[Coxeter,gonality=n]I{}}
+\end{dynkinTable}
+
+\pgfkeys{/Dynkin diagram,
+Coxeter above=true}
+
+
\section{Satake diagrams}\label{section:Satake}
\begin{tcblisting}{title={Satake diagrams use the standard name instead of a rank}}
\(A_{IIIb}=\dynkin A{IIIb}\)
@@ -340,6 +371,8 @@ G_2&\dynkins{G2}&\texttt{\detokenize{\dynkins}\{G2\}}\\
We use a solid gray bar to denote the folding of a Dynkin diagram, rather than the usual double arrow, since the diagrams turn out simpler and easier to read.
+\newpage
+
\renewcommand\do[1]{\dyn#1}
\begin{dynkinTable}{The Satake diagrams of the real simple Lie algebras \cite{Helgason:2001} p. 532--534}{2.75cm}{3cm}
\docsvlist{A{I},A{II},A{IIIa},A{IIIb},A{IV},B{I},B{II},C{I},C{IIa},C{IIb},
@@ -968,7 +1001,7 @@ D_4 &
\dynkin[label,ordering=Kac]E6
\end{tcblisting}
Default is Bourbaki.
-Sources are Adams \cite{Adams:1996} p. 56--57, Bourbaki \cite{Bourbaki:2002} p. pp. 265--290 plates I-IX, Carter \cite{Carter:2005} p. 540--609, Dynkin \cite{Dynkin:1952}, Kac \cite{Kac:1990} p. 43.
+Sources are Adams \cite{Adams:1996} p. 56--57, Bourbaki \cite{Bourbaki:2002} p. 265--290 plates I-IX, Carter \cite{Carter:2005} p. 540--609, Dynkin \cite{Dynkin:1952} (reprinted, translated into English, in Dynkin \cite{Dynkin:2000} p. 180), Kac \cite{Kac:1990} p. 43.
\NewDocumentCommand\tablerow{mm}%
{%
@@ -1108,9 +1141,31 @@ D[3]4,E[2]6}
\renewcommand{\do}[1]{\dyn[extended,Coxeter]#1}
\begin{dynkinTable}{The extended (affine) Coxeter diagrams}{3cm}{6cm}
-\docsvlist{A{},B{},C{},D{},E6,E7,E8,F4,G2,H3,H4,I1}
+\docsvlist{A{},B{},C{},D{},E6,E7,E8,F4,G2,H2,H3,H4,I1}
\end{dynkinTable}
+
+\section{Witt symbols}
+
+The \emph{Witt symbol} \cite{Johnson.et.al.1999,McMullen.Schulte:2002,Witt:1941} is a different notation for the various series:
+\[
+\begin{array}{rll}
+\text{Witt symbol}&\text{Cartan symbol}\\
+P_{n+1}&A_n\\
+S_{n+1}&B_n\\
+R_{n+1}&C_n\\
+Q_{n+1}&D_n\\
+T_{n+1}&E_n&n=6,7,8\\
+U_5&F_4\\
+V_3&G_2\\
+W_2&I_1
+\end{array}
+\]
+\begin{tcblisting}{title={Witt symbols}}
+\dynkin[extended]P7, \dynkin[extended]Q7, \dynkin[extended]T7
+\end{tcblisting}
+
+
\newpage
\section{Kac style}
diff --git a/graphics/pgf/contrib/lie-hasse/README b/graphics/pgf/contrib/lie-hasse/README
index e63a82cc60..1bd63c4cba 100644
--- a/graphics/pgf/contrib/lie-hasse/README
+++ b/graphics/pgf/contrib/lie-hasse/README
@@ -2,9 +2,9 @@ ___________________________________
Lie Hasse
- v1.0
+ v1.01
- 3 February 2020
+ 9 July 2024
___________________________________
Authors : Ben McKay
diff --git a/graphics/pgf/contrib/lie-hasse/lie-hasse.pdf b/graphics/pgf/contrib/lie-hasse/lie-hasse.pdf
index 5be5791e7f..ed444cc7d1 100644
--- a/graphics/pgf/contrib/lie-hasse/lie-hasse.pdf
+++ b/graphics/pgf/contrib/lie-hasse/lie-hasse.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/lie-hasse/lie-hasse.sty b/graphics/pgf/contrib/lie-hasse/lie-hasse.sty
index d1050d8839..6d727c841c 100644
--- a/graphics/pgf/contrib/lie-hasse/lie-hasse.sty
+++ b/graphics/pgf/contrib/lie-hasse/lie-hasse.sty
@@ -1,24 +1,20 @@
-% The Lie Hasse package.
+% The Lie Hasse package.
+% Version 1.01
%
-% Version 1.0
%
+% This package draws Hasse diagrams of root system posets of simple
+% Lie algebraS, in LaTeX documents, using the TikZ package.
%
-% This package draws Hasse diagrams of root system posets of simple
-% Lie algebraS, in LaTeX documents, using the TikZ package.
+% Benjamin McKay
+% b.mckay@ucc.ie
%
-% Benjamin McKay
-% b.mckay@ucc.ie
-%
-% Released under the LaTeX Project Public License v1.3c or later, see
+% Released under the LaTeX Project Public License v1.3c or later, see
% http://www.latex-project.org/lppl.txt
-%
-%
-%
-%
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
-\ProvidesPackage{lie-hasse}[2020/02/02 Lie Hasse]
+\ProvidesPackage{lie-hasse}[2024/07/09 Lie Hasse]
\RequirePackage[rgb]{xcolor}
\RequirePackage{dynkin-diagrams}
+\RequirePackage[outline]{contour}
\usetikzlibrary{
positioning,
fadings,
@@ -26,7 +22,7 @@
%%%
%%% Application programming interface:
%%%
-
+\NewDocumentCommand\edgeQuote{m}{\contour{white}{\(#1\)}}
\newif\iflie@hasse@threeD
\lie@hasse@threeDtrue
\xdef\lie@hasse@three@D@shift{.3}%
@@ -40,14 +36,27 @@
\lie@hasse@show@heightfalse
\newif\iflie@hasse@attach@dynkin@diagram
\lie@hasse@attach@dynkin@diagramfalse
-
+\newif\iflie@hasse@show@levi
+\lie@hasse@show@levitrue
+\newif\iflie@hasse@show@unipotent@radical
+\lie@hasse@show@unipotent@radicaltrue
\pgfkeys{
/Lie Hasse diagram/.is family,
/Lie Hasse diagram,
- attach Dynkin diagram/.is if = lie@hasse@attach@dynkin@diagram,
+ attach Dynkin diagram/.is if
+ = lie@hasse@attach@dynkin@diagram,
attach Dynkin diagram/.default = false,
- edge/.style={ultra thick},
- edge quotes/.style={/Dynkin diagram/text style,auto,inner sep=2pt},
+ edge/.style = {
+ ultra thick
+ },
+ edge length/.estore in
+ = \lie@hasse@edge@length,
+ edge length = 1cm,
+ edge quotes/.style={
+ /Dynkin diagram/text style,
+ auto,
+ inner sep=2pt
+ },
compact edge/.style={},
noncompact edge/.style={opacity=0},
compact root/.code={\dynkinDrawSolidRootMark{#1}},
@@ -67,7 +76,13 @@
show widths/.default = false,
show height/.is if = lie@hasse@show@height,
show height/.default = false,
- z shift/.estore in = \lie@hasse@three@D@shift,
+ show Levi/.is if = lie@hasse@show@levi,
+ show Levi/.default = true,
+ show unipotent radical/.is if
+ = lie@hasse@show@unipotent@radical,
+ show unipotent radical/.default = true,
+ z shift/.estore in
+ = \lie@hasse@three@D@shift,
z shift/.default = .3,
top/.style={black!20,opacity=.4},
left/.style={black!20,opacity=.9},
@@ -90,13 +105,17 @@
\dynkin@integer@rank%
}%
{%
- % Turn Satake codes into Dynkin diagram expressions in \dynkin@string.
+ % Turn Satake codes into Dynkin diagram
+ % expressions in \dynkin@string.
\dynkin@grok@Satake@codes%
}%
- % Expand out any digits in \dynkin@string into multiples of the various root marks.
+ % Expand out any digits in \dynkin@string
+ % into multiples of the various root marks.
\expand@Dynkin@Roots@Digits%
- % Assign to \dynkin@roots the input string \dynkin@string with all . symbols removed,
- % so we only get the symbols representing the marks for the various roots.
+ % Assign to \dynkin@roots the input string
+ % \dynkin@string with all . symbols removed,
+ % so we only get the symbols representing
+ % the marks for the various roots.
\StrDel{\dynkin@string}{.}[\temp]%
\xdef\dynkin@roots{\temp}%
\StrLen{\dynkin@roots}[\temp]%
@@ -115,58 +134,33 @@
{%
\pgfkeys{/Lie Hasse diagram/for all roots={#1}{#2}}%
}%
+\newif\iflie@hasse@B
+\newcount\dynkin@rank@plus@one%
\NewDocumentCommand\hasse{O{}mm}%
{%
\ifdefined\filldraw%
- \IfStrEq{#1}{}%
- {%
+ \ifx#1\empty\relax%
\studyHasseDiagramOfRootSystem{#2}{#3}%
- }%
- {%
+ \else%
\studyHasseDiagramOfRootSystem[#1]{#2}{#3}%
- }%
+ \fi%
\label@item@count 0\relax%
\expandafter\forcsvlist%
- \expandafter\add@label%
+ \expandafter\lie@hasse@add@label%
\expandafter{\dynkin@label@list}%
\ifnum\dynkin@rank=1%
\dynkin{A}{1}%
\else%
+ \global\dynkin@rank@plus@one\the\dynkin@rank\relax%
+ \global\advance\dynkin@rank@plus@one by 1\relax%
\add@compact@simple@roots@to@compact@roots{}%
\IfStrEqCase{#2}%
{%%
{A}{\hasse@A}%
- {B}{\hasse@BC}%
- {C}{\hasse@BC*}%
+ {B}{\global\lie@hasse@Btrue\hasse@BC}%
+ {C}{\global\lie@hasse@Bfalse\hasse@BC}%
{D}{\hasse@D}%
- {E}%
- {%
- \ifnum\dynkin@rank=6%
- \hasse@E@six%
- \else%
- \ifnum\dynkin@rank=7%
- \hasse@E@seven%
- \else%
- \ifnum\dynkin@rank=8%
- \hasse@E@eight%
- \else
- \ifnum\dynkin@rank>8%
- \ClassError%
- {Lie Hasse}%
- {Rank of E series Hasse diagram: #3{}%
- exceeds 8; not defined yet}%
- {}%
- \fi%
- \ifnum\dynkin@rank<6%
- \ClassError%
- {Lie Hasse}%
- {Rank of E series Hasse diagram: #3{} less than 6}%
- {}%
- \fi%
- \fi%
- \fi%
- \fi%
- }%
+ {E}{\hasse@E@series}%
{F}%
{%
\ifnum\dynkin@rank=4%
@@ -194,10 +188,11 @@
{Lie Hasse}%
{Lie algebra series #2{} not A,B,C,D,E,F or G}%
{}]%
+ \forAllPositiveRoots{\draw@lie@hasse@root}%
\draw@simple@root@labels%
\fi%
\lie@hasse@write@widths{}%
- \forAllPositiveRootsInHasseDiagram{\doRootThing}%
+ \forAllPositiveRoots{\doRootThing}%
\iflie@hasse@attach@dynkin@diagram%
\attachDynkin%
\fi%
@@ -205,13 +200,42 @@
\begin{tikzpicture}\hasse[#1]{#2}{#3}\end{tikzpicture}%
\fi%
}%
+\NewDocumentCommand\hasse@E@series{}%
+{%
+ \ifnum\dynkin@rank=6%
+ \hasse@E@six%
+ \else%
+ \ifnum\dynkin@rank=7%
+ \hasse@E@seven%
+ \else%
+ \ifnum\dynkin@rank=8%
+ \hasse@E@eight%
+ \else%
+ \ifnum\dynkin@rank>8%
+ \ClassError%
+ {Lie Hasse}%
+ {Rank of E series Hasse diagram: \the\dynkin@rank{}%
+ exceeds 8; not defined yet}%
+ {}%
+ \fi%
+ \ifnum\dynkin@rank<6%
+ \ClassError%
+ {Lie Hasse}%
+ {Rank of E series Hasse diagram: \the\dynkin@rank{}%
+ less than 6; not define yet}%
+ {}%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+}%
\NewDocumentCommand\drawRootAsDynkinSum{mm}%
{%
\rootSum{#1}{#2}{\rs}%
\node at (#1;#2)
{%
\dynkin[%
- labels=\rs,%
+ expand labels=\rs,%
/Lie Hasse diagram/embedded Dynkin diagram]%
{\dynkin@series}{\the\dynkin@rank}%
};%
@@ -239,25 +263,38 @@
}%
\fi%
}%
-
-\NewDocumentCommand\backwardsGtwo{}%
+\NewDocumentCommand\hasseAttachGtwo{}%
{%
- \dynkin[label,backwards,x shift in edge lengths=-1]{G}{\dynkin@roots}%
+ \dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length,%
+% label,%
+% backwards,%
+% x shift in edge lengths=-1
+]{G}{\dynkin@roots}%
}%
-
\newcount\lie@hasse@E@shift%
\NewDocumentCommand\attachDynkin{}%
{%
\IfStrEqCase{\dynkin@series}{%
- {A}{\dynkin{A}{\dynkin@roots}}%
- {B}{\dynkin{B}{\dynkin@roots}}%
- {C}{\dynkin{C}{\dynkin@roots}}%
- {D}{\dynkin[y shift in edge lengths=-1.5,label]%
- {D}{\dynkin@roots}}%
+ {A}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length]%
+ {A}{\dynkin@roots}}%
+ {B}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length]%
+ {B}{\dynkin@roots}}%
+ {C}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length]%
+ {C}{\dynkin@roots}}%
+ {D}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length,%
+ y shift in edge lengths=-1.5,label]%
+ {D}{\dynkin@roots}}%
{E}%
{%%
\ifnum\dynkin@rank=6%
\dynkin[%
+ vertical shift=0,%
+ edge length=\lie@hasse@edge@length,%
upsidedown,%
labels*={1,...,6},%
y shift in edge lengths=.5]%
@@ -266,6 +303,8 @@
\lie@hasse@E@shift\the\dynkin@rank\relax%
\advance\lie@hasse@E@shift by -2\relax%
\dynkin[%
+ vertical shift=0,%
+ edge length=\lie@hasse@edge@length,%
backwards,%
upsidedown,%
label,%
@@ -274,16 +313,17 @@
{E}{\dynkin@roots}%
\fi%
}%%
- {F}{\dynkin{F}{\dynkin@roots}}%
- {G}{\backwardsGtwo{}}%
+ {F}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length]%
+ {F}{\dynkin@roots}}%
+ {G}{\hasseAttachGtwo}%
}%
[\ClassError%
{Lie Hasse}%
- {Lie algebra series \dynkin@series{} not A,B,C,D,E,F or G when attaching Dynkin diagram}%
+ {Lie algebra series \dynkin@series{} %
+ not A,B,C,D,E,F or G when attaching Dynkin diagram}%
{}]%
}%
-
-
\newif\iflie@hasse@multiple@diagrams
\newcommand\doHasseDiagram[1]%%
{%
@@ -291,8 +331,7 @@
\ %
\fi%
\begin{tikzpicture}%
- [show background rectangle,%
- baseline=(current bounding box.east)]]%
+ [show background rectangle,baseline=(current bounding box.east)]%
\hasse#1%
\iflie@hasse@show@height%
\rootSystemHeight{\lie@hasse@height}%
@@ -327,33 +366,25 @@
}%
\begin{center}%
\expandafter\forscsvlist%
- \expandafter\doHasseDiagram%
- \expandafter{#1}%
+ \expandafter\doHasseDiagram\expandafter{#1}%
\end{center}%
}%
-
-
%%%
%%% Package internals:
%%%
-
-
\pgfdeclarelayer{Dynkin middle}
\pgfdeclarelayer{Dynkin above}
\pgfsetlayers{background,Dynkin behind,Dynkin middle,Dynkin above,main}
-
-
\newcommand*\label@list@at[1]{\csname FOOBAR-#1\endcsname}
\newcommand*\defn@label@list@entry[1]{\expandafter\def\csname FOOBAR-#1\endcsname}
\def\add@to@label@list#1#2{\global\defn@label@list@entry{#1}{#2}}%
\newcount\label@item@count%
\label@item@count 0\relax%
-\newcommand\add@label[1]%
+\newcommand\lie@hasse@add@label[1]%
{%
- \advance\label@item@count by 1\relax%
+ \global\advance\label@item@count by 1\relax%
\global\add@to@label@list{\the\label@item@count}{#1}%
}%
-
\xdef\lie@hasse@compact@roots{}%
\NewDocumentCommand\if@compact@root{mmm}%
{%
@@ -369,9 +400,8 @@
\dynkinOrder{\dynkin@series}{\the\dynkin@rank}.Carter::#1->\dynkin@ordering.%
{\current@simple@root}%
\StrChar{\dynkin@roots}{\current@simple@root}[\lie@hasse@root@marker]%
-\IfStrEq{*}{\lie@hasse@root@marker}{#2}{#3}%
+\IfStrEq{x}{\lie@hasse@root@marker}{#3}{#2}%
}%
-
\NewDocumentCommand\add@compact@root{m}%
{%
\if@compact@root{#1}%
@@ -382,53 +412,65 @@
\xdef\lie@hasse@compact@roots{\temp@lie@hasse@compact@roots{ }(#1)}%
}%
}%
-
\newcount\lie@hasse@sr%
-\newcount\drpo%
\NewDocumentCommand\add@compact@simple@roots@to@compact@roots{}%
{%
-\lie@hasse@sr 1\relax%
-\drpo\the\dynkin@rank\relax%
-\advance\drpo by 1\relax%
-\loop%
- \if@compact@simple@root{\the\lie@hasse@sr}%
- {%%
- \add@compact@root{1;\the\lie@hasse@sr}%
- }%%
- {%%
- }%%
- \advance\lie@hasse@sr by 1\relax%
-\ifnum\lie@hasse@sr<\the\drpo%
-\repeat%
+ \lie@hasse@sr 1\relax%
+ \loop%
+ \if@compact@simple@root{\the\lie@hasse@sr}%
+ {%%
+ \add@compact@root{1;\the\lie@hasse@sr}%
+ }%%
+ {%%
+ }%%
+ \advance\lie@hasse@sr by 1\relax%
+ \ifnum\lie@hasse@sr<\the\dynkin@rank@plus@one%
+ \repeat%
}%
-
-\newcount\drmo%
\newcount\lie@hasse@root@count%
\newcount\lie@hasse@root@count@b%
\newcount\max@lie@hasse@root@count%
\newcount\lie@hasse@reorder
-
\NewDocumentCommand\lie@hasse@fix@order{mm}%
{%
\dynkinOrder{\dynkin@series}{\dynkin@rank}.Carter::{#1}->\dynkin@ordering.{#2}%
}%
-
\NewDocumentCommand\draw@one@simple@root@label{mm}%
%% \draw@one@simple@root@label{r}{s}, draw at Carter number r
%% the root with text s.
{%
- \node[below,%
- label=%
- {%
- [below,%
- lie@hasse@color,%
- /Lie Hasse diagram/edge quotes]%
- \(\pgfkeys{/Dynkin diagram/label macro=#2}\)%
- }%
- ]%
- at%
- (1;#1)%
- {};%
+ \if@compact@simple@root{#1}%
+ {%
+ \iflie@hasse@show@levi%
+ \global\lie@hasse@ok@roottrue%
+ \else%
+ \global\lie@hasse@ok@rootfalse%
+ \fi%
+ }%
+ {%
+ \iflie@hasse@show@unipotent@radical%
+ \global\lie@hasse@ok@roottrue%
+ \else%
+ \global\lie@hasse@ok@rootfalse%
+ \fi%
+ }%
+ \iflie@hasse@ok@root%
+ \node[%
+ below,%
+ label=%
+ {%
+ [%
+ below,%
+ lie@hasse@color,%
+ /Lie Hasse diagram/edge quotes%
+ ]%
+ \(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{#2}}}\)%
+ }%
+ ]%
+ at%
+ (1;#1)%
+ {};%
+ \fi%
}%
\NewDocumentCommand\draw@simple@root@labels{}%
{%
@@ -471,27 +513,56 @@
\pgfmathsetmacro{\lie@hasse@huenum}{#1/\the\dynkin@rank}%
\global\definecolor{lie@hasse@color}{hsb}{\lie@hasse@huenum,1,.6}%
}%
-\NewDocumentCommand\draw@lie@hasse@root{m}%
+\NewDocumentCommand\draw@lie@hasse@root{mm}%
{%
-\if@compact@root{#1}%
-{%%
-\pgfkeys{/Lie Hasse diagram/compact root=#1}%
-}%%
-{%%
-\pgfkeys{/Lie Hasse diagram/noncompact root=#1}%
-}%%
+ \if@compact@root{#1;#2}%
+ {%%
+ \iflie@hasse@show@levi%
+ \pgfkeys{/Lie Hasse diagram/compact root={#1;#2}}%
+ \fi%
+ }%%
+ {%%
+ \iflie@hasse@show@unipotent@radical%
+ \pgfkeys{/Lie Hasse diagram/noncompact root={#1;#2}}%
+ \fi%
+ }%%
}%
-\xdef\lie@hasse@grade@a{}
-\xdef\lie@hasse@grade@b{}
-\xdef\lie@hasse@index@a{}
-\xdef\lie@hasse@index@b{}
\newcount\root@gpo%
\xdef\label@text{}%
+\newif\iflie@hasse@is@levi
+\newif\iflie@hasse@ok@root
\NewDocumentCommand\draw@lie@hasse@edge{O{}mmmm}%
%[edge label options]{from grade}{from index}{to index}{simple root}
{%
\root@gpo #2\relax%
\advance\root@gpo by 1\relax%
+ \if@compact@root{#2;#3}%
+ {%
+ \if@compact@simple@root{#5}%
+ {%
+ \global\lie@hasse@is@levitrue%
+ \add@compact@root{\the\root@gpo;#4}%
+ }%
+ {%
+ \global\lie@hasse@is@levifalse%
+ }%
+ }%
+ {%
+ \global\lie@hasse@is@levifalse%
+ }%
+ \iflie@hasse@is@levi%
+ \iflie@hasse@show@levi%
+ \global\lie@hasse@ok@roottrue%
+ \else%
+ \global\lie@hasse@ok@rootfalse%
+ \fi%
+ \else%
+ \iflie@hasse@show@unipotent@radical%
+ \global\lie@hasse@ok@roottrue%
+ \else%
+ \global\lie@hasse@ok@rootfalse%
+ \fi%
+ \fi%
\set@lie@hasse@color{#5}%
\lie@hasse@fix@order{#5}{\lie@hasse@root@count@b}%
\IfStrEq{\dynkin@label@list}{}%
@@ -505,31 +576,33 @@
}%
}%
\if@compact@simple@root{#5}%
- {%%% Compact
- \draw[%
- lie@hasse@color,%
- /Lie Hasse diagram/edge,%
- /Lie Hasse diagram/compact edge]%
- (#2;#3) --%
- node[lie@hasse@color,/Lie Hasse diagram/edge quotes,#1]%
- {\(\pgfkeys{/Dynkin diagram/label macro=\label@text}\)}%
- (\the\root@gpo;#4);%
- \IfSubStr{\lie@hasse@compact@roots}{#2;#3}%
- {%% adding to a compact
- \add@compact@root{\the\root@gpo;#4}%
- }%%
- {%%
- }%%
+ {%%% Compact simple root, i.e. edge
+ \iflie@hasse@ok@root%
+ \draw[%
+ lie@hasse@color,%
+ /Lie Hasse diagram/edge,%
+ /Lie Hasse diagram/compact edge]%
+ (#2;#3)--%
+ node[lie@hasse@color,/Lie Hasse diagram/edge quotes,#1]%
+ {\(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{\label@text}}}\)}%
+ (\the\root@gpo;#4);%
+ \fi%
+ \iflie@hasse@is@levi%
+ \fi%
}%%%
{%%% Noncompact
- \draw[%
- lie@hasse@color,%
- /Lie Hasse diagram/edge,%
- /Lie Hasse diagram/noncompact edge]%
- (#2;#3) --%
+ \iflie@hasse@ok@root%
+ \draw
+ [%
+ lie@hasse@color,%
+ /Lie Hasse diagram/edge,%
+ /Lie Hasse diagram/noncompact edge%
+ ]%
+ (#2;#3)--%
node[lie@hasse@color,/Lie Hasse diagram/edge quotes,#1]%
- {\(\pgfkeys{/Dynkin diagram/label macro=\label@text}\)}%
+ {\(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{\label@text}}}\)}%
(\the\root@gpo;#4);%
+ \fi%
}%%%
}%
\newcount\A@series@grade%
@@ -555,8 +628,8 @@
\coordinate
(\the\A@series@grade;\the\A@series@j)
at
- ({.5*\the\A@series@x*\dynkin@edge@length},
- {.25*\the\A@series@y*\dynkin@edge@length})
+ ({.5*\the\A@series@x*\lie@hasse@edge@length},
+ {.25*\the\A@series@y*\lie@hasse@edge@length})
{};%
\advance\A@series@j by 1\relax%
\advance\A@series@x by 2\relax%
@@ -569,59 +642,35 @@
\ifnum\A@series@grade<\the\max@A@series@grade%
\repeat%
}%
-\newcount\A@series@grade%
-\newcount\max@A@series@grade%
-\NewDocumentCommand\draw@A@roots{}%
-{%
- \A@series@grade 1\relax%
- \max@A@series@grade \the\dynkin@rank\relax%
- \advance\max@A@series@grade by 1\relax%
- \loop%
- \max@A@series@j\the\dynkin@rank\relax%
- \advance\max@A@series@j by -\the\A@series@grade\relax%
- \advance\max@A@series@j by 2\relax%
- \A@series@j 1\relax%
- {%
- \loop%
- \draw@lie@hasse@root%
- {\the\A@series@grade;\the\A@series@j}%
- \advance\A@series@j by 1\relax%
- \ifnum\A@series@j<\the\max@A@series@j%
- \repeat%
- }%
- \advance\A@series@grade by 1\relax%
- \ifnum\A@series@grade<\the\max@A@series@grade%
- \repeat%
-}%
\newcount\maxA@i%
\newcount\maxA@j%
\newcount\A@lbl%
-\newcount\A@i%
-\newcount\A@j%
-\newcount\A@ipo%
+\newcount\lie@hasse@i%
+\newcount\lie@hasse@j%
+\newcount\lie@hasse@ipo%
\newcount\A@rj%
\newcount\A@rjmo%
\NewDocumentCommand\draw@A@edges{}%
{%
\maxA@i\the\dynkin@rank\relax%
- \A@i 1\relax%
+ \lie@hasse@i 1\relax%
\loop%
\maxA@j \the\dynkin@rank\relax%
- \advance\maxA@j by -\the\A@i\relax%
+ \advance\maxA@j by -\the\lie@hasse@i\relax%
\advance\maxA@j by 1\relax%
\ifnum\maxA@j>-1%
- \A@j 1\relax%
+ \lie@hasse@j 1\relax%
{%
\loop%
- \A@lbl\the\A@i\relax%
- \advance\A@lbl by \the\A@j\relax%
- \A@ipo \A@i\relax%
- \advance\A@ipo by 1\relax%
+ \A@lbl\the\lie@hasse@i\relax%
+ \advance\A@lbl by \the\lie@hasse@j\relax%
+ \lie@hasse@ipo \lie@hasse@i\relax%
+ \advance\lie@hasse@ipo by 1\relax%
\draw@lie@hasse@edge[left]%
- {\the\A@i}{\the\A@j}%
- {\the\A@j}{\the\A@lbl}%
+ {\the\lie@hasse@i}{\the\lie@hasse@j}%
+ {\the\lie@hasse@j}{\the\A@lbl}%
\A@rj\the\maxA@j\relax%
- \advance\A@rj by -\the\A@j\relax%
+ \advance\A@rj by -\the\lie@hasse@j\relax%
\advance\A@rj by 1\relax%
\A@rjmo\the\A@rj\relax%
\advance\A@rjmo by -1\relax%
@@ -629,15 +678,15 @@
\advance\A@lbl by \the\dynkin@rank%
\advance\A@lbl by 1%
\draw@lie@hasse@edge[right]%
- {\the\A@i}{\the\A@rj}%
+ {\the\lie@hasse@i}{\the\A@rj}%
{\the\A@rjmo}{\the\A@lbl}%
- \advance\A@j by 1\relax%
- \ifnum\A@j<\the\maxA@j%
+ \advance\lie@hasse@j by 1\relax%
+ \ifnum\lie@hasse@j<\the\maxA@j%
\repeat%
}%
\fi%
- \advance\A@i by 1\relax%
- \ifnum\A@i<\the\maxA@i%
+ \advance\lie@hasse@i by 1\relax%
+ \ifnum\lie@hasse@i<\the\maxA@i%
\repeat%
}%
%% \hasse@A@width@at@grade{g}{\w} sets the counter \w to
@@ -653,7 +702,6 @@
{%
\place@A@roots%
\draw@A@edges%
- \draw@A@roots%
}%
%% \hasse@BC@width@at@grade{g}{\w} sets the counter \w to
%% the value of the width (number of roots) at grade g of
@@ -666,138 +714,116 @@
\global\advance#2 by 1\relax%
\global\divide#2 by 2\relax%
}%
-\newcount\tdrmt%
-\newcount\tdrmo%
+\newcount\twice@dynkin@rank@minus@one%
\newcount\max@BC@r%
\newcount\BC@r%
\newcount\BC@series@x%
\newcount\BC@series@y%
\NewDocumentCommand\place@BC@roots{}%
{%
-\drmo \the\dynkin@rank\relax%
-\advance\drmo by -1\relax%
-\tdrmt \the\drmo\relax%
-\advance\tdrmt by \the\drmo\relax%
-\tdrmo \the\tdrmt\relax%
-\advance\tdrmo 1\relax%
-\max@BC@r \the\dynkin@rank\relax%
-\advance\max@BC@r by 1\relax%
-\BC@r 1\relax%
-\loop%
- \BC@series@x \the\BC@r\relax%
- \advance\BC@series@x by -1\relax%
- \advance\BC@series@x by \the\BC@series@x\relax%
- \BC@series@y 1\relax%
- {%%
+ \twice@dynkin@rank@minus@one \the\dynkin@rank\relax%
+ \advance\twice@dynkin@rank@minus@one by \the\dynkin@rank\relax%
+ \advance\twice@dynkin@rank@minus@one by -1\relax%
+ \max@BC@r \the\dynkin@rank\relax%
+ \advance\max@BC@r by 1\relax%
+ \BC@r 1\relax%
\loop%
- \coordinate
- (\the\BC@series@y;\the\BC@r)
- at
- ({.5*\the\BC@series@x*\dynkin@edge@length},
- {.5*(\the\BC@series@y-1)*\dynkin@edge@length})
- {};%
- \advance\BC@series@y by 1\relax%
- \advance\BC@series@x by 1\relax%
- \ifnum\BC@series@x<\the\tdrmo\repeat%
- }%%
- \advance\BC@r by 1\relax%
- \ifnum\BC@r<\the\max@BC@r%
-\repeat%
+ \BC@series@x \the\BC@r\relax%
+ \advance\BC@series@x by -1\relax%
+ \advance\BC@series@x by \the\BC@series@x\relax%
+ \BC@series@y 1\relax%
+ {%%
+ \loop%
+ \coordinate
+ (\the\BC@series@y;\the\BC@r)
+ at
+ ({.5*\the\BC@series@x*\lie@hasse@edge@length},
+ {.5*(\the\BC@series@y-1)*\lie@hasse@edge@length})
+ {};%
+ \advance\BC@series@y by 1\relax%
+ \advance\BC@series@x by 1\relax%
+ \ifnum\BC@series@x<\the\twice@dynkin@rank@minus@one\repeat%
+ }%%
+ \advance\BC@r by 1\relax%
+ \ifnum\BC@r<\the\max@BC@r%
+ \repeat%
+}%
+\newcount\BC@height%
+\newcount\BC@g%
+\NewDocumentCommand\draw@BC@edges{}%
+{%
+ \rootSystemHeight{\BC@height}%
+ \ifnum\BC@height>1%
+ \BC@g 1\relax%
+ \loop%
+ \draw@BC@edges@at@grade{\the\BC@g}%
+ \global\advance\BC@g by 1\relax%
+ \ifnum\BC@g<\BC@height%
+ \repeat%
+ \fi%
}%
-\newcount\max@BC@i%
\newcount\BC@i%
-\newcount\BC@series@x%
-\newcount\BC@series@y%
+\newcount\BC@width%
+\newcount\BC@width@plus@one%
+\NewDocumentCommand\draw@BC@edges@at@grade{m}%
+{%
+ \rootSystemWidthAtGrade{#1}{\BC@width}%
+ \BC@width@plus@one \BC@width\relax%
+ \advance \BC@width@plus@one by 1\relax%
+ \BC@i 1\relax%
+ {%
+ \loop%
+ \draw@BC@edges@at@root{#1}{\the\BC@i}%
+ \global\advance\BC@i by 1\relax%
+ \ifnum\BC@i<\BC@width@plus@one\repeat%
+ }%
+}%
+\newcount\BC@height%
\newcount\BC@ii%
-\newcount\BC@series@yy%
-\newcount\BC@series@yy%
-\newcount\lbl%
+\newif\ifBC@draw%
+\newcount\lie@hasse@lbl%
\newcount\temp@lbl%
-\NewDocumentCommand\draw@BC@edges{s}%
-{%
-\tdrmo \the\dynkin@rank\relax%
-\advance\tdrmo by \the\dynkin@rank\relax%
-\advance\tdrmo by -1\relax%
-\max@BC@i \the\dynkin@rank\relax%
-\advance\max@BC@i by 1\relax%
-\BC@i 1\relax%
-\loop%
- \BC@series@x \the\BC@i\relax%
- \advance\BC@series@x by \the\BC@i\relax%
- \advance\BC@series@x by -2\relax%
- \BC@series@y 1\relax%
- {%%
- \loop%
- \ifnum\BC@i>1%
- % draw an edge upward to the left
- \BC@ii \the\BC@i\relax%
- \advance\BC@ii by -1\relax%
- \BC@series@yy \the\BC@series@y\relax%
- \advance\BC@series@yy by 1\relax%
- \draw@lie@hasse@edge[right]%
- {\the\BC@series@y}{\the\BC@i}%
- {\the\BC@ii}%
- {\the\BC@ii}%
+\NewDocumentCommand\draw@BC@edges@at@root{mm}%
+{%
+ \ifnum#2>1%
+ % draw an edge upward to the left
+ \BC@ii #2\relax%
+ \advance\BC@ii by -1\relax%
+ \draw@lie@hasse@edge[right]%
+ {#1}{#2}%
+ {\the\BC@ii}
+ {\the\BC@ii}%
+ \fi%
+ \BC@drawtrue%
+ \ifodd#1
+ \ifnum#2=\the\BC@width%
+ \global\BC@drawfalse%
\fi%
- \ifnum\BC@series@y>1%
- % draw an edge downward to the left
- \BC@series@yy \the\BC@series@y\relax%
- \advance\BC@series@yy by -1\relax%
- \lbl \the\BC@i\relax%
- \advance\lbl by \the\BC@series@y\relax%
- \advance\lbl by -1\relax%
- \ifnum\dynkin@rank<\the\lbl%
- \temp@lbl \the\lbl\relax%
- \lbl \the\dynkin@rank\relax%
- \advance\lbl by \the\dynkin@rank%
- \advance\lbl by -\the\temp@lbl%
+ \fi%
+ \ifBC@draw%
+ % draw an edge upward to the right
+ \lie@hasse@lbl #2\relax%
+ \advance\lie@hasse@lbl by #1\relax%
+ \ifnum\dynkin@rank<\the\lie@hasse@lbl%
+ \temp@lbl \the\lie@hasse@lbl\relax%
+ \lie@hasse@lbl \the\dynkin@rank\relax%
+ \advance\lie@hasse@lbl by \the\dynkin@rank%
+ \advance\lie@hasse@lbl by -\the\temp@lbl%
%% For the B series:
- \IfBooleanF{#1}{\global\advance\lbl by 1\relax}%
- \draw@lie@hasse@edge[left]%
- {\the\BC@series@yy}{\the\BC@i}%
- {\the\BC@i}%
- {\the\lbl}%
- \else%
- \draw@lie@hasse@edge[left]%
- {\the\BC@series@yy}{\the\BC@i}%
- {\the\BC@i}%
- {\the\lbl}%
+ \iflie@hasse@B%
+ \global\advance\lie@hasse@lbl by 1\relax%
\fi%
+ \draw@lie@hasse@edge[left]%
+ {#1}{#2}%
+ {#2}%
+ {\the\lie@hasse@lbl}%
+ \else%
+ \draw@lie@hasse@edge[left]%
+ {#1}{#2}%
+ {#2}%
+ {\the\lie@hasse@lbl}%
\fi%
- \advance\BC@series@y by 1\relax%
- \advance\BC@series@x by 1\relax%
- \ifnum\BC@series@x<\the\tdrmo\repeat%
- }%%
- \advance\BC@i by 1\relax%
- \ifnum\BC@i<\the\max@BC@i%
-\repeat%
-}%
-\newcount\tdrpt%
-\newcount\BC@r%
-\newcount\BC@series@y%
-\newcount\maxy%
-\NewDocumentCommand\draw@BC@roots{}%
-{%
-\tdrpt \the\dynkin@rank\relax%
-\advance\tdrpt by \the\dynkin@rank\relax%
-\advance\tdrpt by 2\relax%
-\max@BC@r \the\dynkin@rank\relax%
-\advance\max@BC@r by 1\relax%
-\BC@r 1\relax%
-\loop%
- \BC@series@y 1\relax%
- \maxy \tdrpt\relax%
- \advance\maxy -\the\BC@r\relax%
- \advance\maxy -\the\BC@r\relax%
- {%%
- \loop%
- \draw@lie@hasse@root{\the\BC@series@y;\the\BC@r}%
- \advance\BC@series@y by 1\relax%
- \ifnum\BC@series@y<\the\maxy\repeat%
- }%%
- \advance\BC@r by 1\relax%
- \ifnum\BC@r<\the\max@BC@r%
-\repeat%
+ \fi%
}%
\NewDocumentCommand\hasse@BC{s}% star for C:
{%
@@ -809,7 +835,6 @@
{%
\draw@BC@edges%
}%
- \draw@BC@roots%
}%
\NewDocumentCommand\hasse@D{}%
{%
@@ -818,51 +843,45 @@
\iflie@hasse@threeD%
\draw@D@hasse@three@D%
\fi%
- \draw@D@roots%
}%
-\newcount\drmt%
\NewDocumentCommand\draw@D@hasse@three@D{}%
{%
- \drmo \the\dynkin@rank\relax%
- \advance\drmo by -1\relax%
- \drmt \the\dynkin@rank\relax%
- \advance\drmt by -2\relax%
\begin{pgfonlayer}{Dynkin middle}%
\fill[/Lie Hasse diagram/left]
- (\the\drmt;1) --
- (\the\drmo;1) --
+ (\the\dynkin@rank@minus@two;1) --
+ (\the\dynkin@rank@minus@one;1) --
(\the\dynkin@rank;1) --
- (\the\drmo;2) --
+ (\the\dynkin@rank@minus@one;2) --
cycle;%
\fill[/Lie Hasse diagram/top]
- (\the\drmt;1) --
- (1;\the\drmt) --
- (2;\the\drmo) --
- (\the\drmo;2) --
+ (\the\dynkin@rank@minus@two;1) --
+ (1;\the\dynkin@rank@minus@two) --
+ (2;\the\dynkin@rank@minus@one) --
+ (\the\dynkin@rank@minus@one;2) --
cycle;%
\fill[/Lie Hasse diagram/top]
- (\the\drmo;2) --
+ (\the\dynkin@rank@minus@one;2) --
(\the\dynkin@rank;1) --
- (3;\the\drmo) --
- (2;\the\drmo) --
+ (3;\the\dynkin@rank@minus@one) --
+ (2;\the\dynkin@rank@minus@one) --
cycle;%
\fill[/Lie Hasse diagram/top]
- (\the\drmo;1) --
+ (\the\dynkin@rank@minus@one;1) --
(\the\dynkin@rank;1) --
- (3;\the\drmo) --
- (2;\the\drmt) --
+ (3;\the\dynkin@rank@minus@one) --
+ (2;\the\dynkin@rank@minus@two) --
cycle;%
\fill[/Lie Hasse diagram/top]
- (\the\drmt;1) --
- (\the\drmo;1) --
- (2;\the\drmt) --
- (1;\the\drmt) --
+ (\the\dynkin@rank@minus@two;1) --
+ (\the\dynkin@rank@minus@one;1) --
+ (2;\the\dynkin@rank@minus@two) --
+ (1;\the\dynkin@rank@minus@two) --
cycle;%
\fill[/Lie Hasse diagram/left]
- (1;\the\drmt) --
- (2;\the\drmt) --
- (3;\the\drmo) --
- (2;\the\drmo) --
+ (1;\the\dynkin@rank@minus@two) --
+ (2;\the\dynkin@rank@minus@two) --
+ (3;\the\dynkin@rank@minus@one) --
+ (2;\the\dynkin@rank@minus@one) --
cycle;%
\end{pgfonlayer}%
}%
@@ -883,9 +902,7 @@
\newcount\D@g%
\newcount\maxD@grd%
\newcount\D@grd%
-\newcount\maxxD%
-\newcount\iD%
-\newcount\xxD%
+\newcount\lie@hasse@D@x%
\newcount\sum@D%
\NewDocumentCommand\place@D@roots{}%
{%
@@ -918,37 +935,34 @@
\repeat%
}%
}%
-\newcount\drpo%
\NewDocumentCommand\place@D@root@at{mm}%
{%
- \xxD #1\relax%
- \advance\xxD by #2\relax%
- \advance\xxD by #2\relax%
- \advance\xxD by -3\relax%
- \drpo \the\dynkin@rank\relax%
- \advance\drpo by 1\relax%
+ \lie@hasse@D@x #1\relax%
+ \advance\lie@hasse@D@x by #2\relax%
+ \advance\lie@hasse@D@x by #2\relax%
+ \advance\lie@hasse@D@x by -3\relax%
\sum@D #1\relax%
\advance\sum@D by #2\relax%
\ifnum\sum@D=\the\dynkin@rank%
\global\def\D@root@x%
- {\the\xxD-\lie@hasse@three@D@shift}%
+ {\the\lie@hasse@D@x-\lie@hasse@three@D@shift}%
\else%
- \ifnum\sum@D=\the\drpo%
+ \ifnum\sum@D=\the\dynkin@rank@plus@one%
\ifnum#1<\the\dynkin@rank%
\global\def\D@root@x%
- {\the\xxD-2+\lie@hasse@three@D@shift}%
+ {\the\lie@hasse@D@x-2+\lie@hasse@three@D@shift}%
\else%
- \global\def\D@root@x{\the\xxD}%
+ \global\def\D@root@x{\the\lie@hasse@D@x}%
\fi%
\else%
\ifnum\sum@D<\the\dynkin@rank%
- \global\def\D@root@x{\the\xxD}%
+ \global\def\D@root@x{\the\lie@hasse@D@x}%
\else%
% if \sum@D exceeds rank+1
\ifnum#1<\the\dynkin@rank%
- \global\def\D@root@x{\the\xxD-2}%
+ \global\def\D@root@x{\the\lie@hasse@D@x-2}%
\else%
- \global\def\D@root@x{\the\xxD}%
+ \global\def\D@root@x{\the\lie@hasse@D@x}%
\fi%
\fi%
\fi%
@@ -956,7 +970,7 @@
\coordinate
(#1;#2)
at
- ({(\D@root@x)*\dynkin@edge@length/2},{(#1-1)*\dynkin@edge@length/2})
+ ({(\D@root@x)*\lie@hasse@edge@length/2},{(#1-1)*\lie@hasse@edge@length/2})
{};%
}%
\NewDocumentCommand\draw@D@edges{}%
@@ -983,7 +997,8 @@
\D@r 1\relax%
{%
\loop%
- \draw@D@edges@at{#1}{\the\D@r}{\the\max@D@roots}%
+%%% \draw@D@edges@at{#1}{\the\D@r}{\the\max@D@roots}%
+ \draw@D@edges@at{#1}{\the\D@r}%
\advance\D@r by 1\relax%
\ifnum\D@r<\the\max@D@roots@plus@one%
\repeat%
@@ -1000,10 +1015,6 @@
\newcount\hasse@D@label%
\NewDocumentCommand\draw@D@edges@at{mm}%
{%
- \drmo\the\dynkin@rank\relax%
- \advance\drmo by -1\relax%
- \drpo \the\dynkin@rank\relax%
- \advance\drpo by 1\relax%
\hasse@D@gpo#1\relax%
\advance\hasse@D@gpo by 1\relax%
\hasse@D@gpi#1\relax%
@@ -1035,7 +1046,7 @@
\xdef\hasse@D@layer{Dynkin above}%
\else%
% below or middle.
- \ifnum\hasse@D@gpi=\the\drpo%
+ \ifnum\hasse@D@gpi=\the\dynkin@rank@plus@one%
\xdef\hasse@D@layer{Dynkin behind}%
\fi%
\fi%
@@ -1045,7 +1056,7 @@
\fi%
\fi%
\ifnum\dynkin@rank>#1%
- \ifnum\hasse@D@gpi<\the\drpo%
+ \ifnum\hasse@D@gpi<\the\dynkin@rank@plus@one%
\else%
\global\advance\hasse@D@label -1\relax%
\fi%
@@ -1069,7 +1080,7 @@
\fi%
\fi%
\ifnum#1=1%
- \ifnum\drmo=#2%
+ \ifnum\dynkin@rank@minus@one=#2%
\global\hasse@Dfalse\relax%
\else%
\xdef\hasse@D@LR{right}%
@@ -1080,13 +1091,13 @@
\ifnum\hasse@D@label>\the\dynkin@rank%
\hasse@D@label -\hasse@D@label\relax%
\advance\hasse@D@label \the\dynkin@rank\relax%
- \advance\hasse@D@label \the\drmo\relax%
+ \advance\hasse@D@label \the\dynkin@rank@minus@one\relax%
\fi%
- \ifnum\drmo<#1%
+ \ifnum\dynkin@rank@minus@one<#1%
\else%
\ifnum#2=1%
\else%
- \ifnum\hasse@D@gpi<\the\drpo%
+ \ifnum\hasse@D@gpi<\the\dynkin@rank@plus@one%
\else%
\advance\hasse@D@label 1\relax%
\fi%
@@ -1099,11 +1110,11 @@
\global\advance\hasse@D@target by 1\relax%
\fi%
\else%
- \ifnum\drmo=#1%
+ \ifnum\dynkin@rank@minus@one=#1%
\global\advance\hasse@D@target by -1\relax%
\fi%
\fi%
- \ifnum\hasse@D@gpi=\the\drpo%
+ \ifnum\hasse@D@gpi=\the\dynkin@rank@plus@one%
\ifnum#2>1%
\xdef\hasse@D@layer{Dynkin behind}%
\xdef\hasse@D@LR{right}%
@@ -1112,7 +1123,7 @@
\ifnum\hasse@D@gpi=\the\dynkin@rank%
\xdef\hasse@D@layer{Dynkin above}%
\else%
- \ifnum\hasse@D@gpi=\the\drmo%
+ \ifnum\hasse@D@gpi=\the\dynkin@rank@minus@one%
\xdef\hasse@D@layer{Dynkin above}%
\else%
\xdef\hasse@D@layer{Dynkin middle}%
@@ -1129,7 +1140,7 @@
\end{pgfonlayer}%
\fi%
% % Draw any other edges.
- \ifnum\hasse@D@gpi=\the\drmo%
+ \ifnum\hasse@D@gpi=\the\dynkin@rank@minus@one%
\hasse@D@target#2\relax%
\advance\hasse@D@target by 1\relax%
\begin{pgfonlayer}{Dynkin behind}
@@ -1142,38 +1153,7 @@
}%
\newcount\maxD@grd%
\newcount\D@grd%
-\newcount\maxxD%
\newcount\sum@D%
-\NewDocumentCommand\draw@D@roots{}%
-{%
- \drmo \the\dynkin@rank\relax%
- \advance\drmo by -1\relax%
- \maxD@grd \the\dynkin@rank\relax%
- \advance\maxD@grd by \the\dynkin@rank\relax%
- \advance\maxD@grd by -2\relax%
- \D@grd 1\relax%
- \loop%
- % Construct the roots at grade \D@grd.
- \draw@D@roots@at@grade{\D@grd}%
- \advance\D@grd by 1\relax%
- \ifnum\D@grd<\the\maxD@grd%
- \repeat%
-}%
-\NewDocumentCommand\draw@D@roots@at@grade{m}%
-{%
- \hasse@D@width@at@grade{#1}{\max@D@roots}%
- \max@D@roots@plus@one \the\max@D@roots\relax%
- \advance\max@D@roots@plus@one 1\relax%
- \D@r 1\relax%
- {%
- \loop%
- \draw@lie@hasse@root{\the\D@grd;\the\D@r}%
- \advance\D@r by 1\relax%
- \ifnum\D@r<\the\max@D@roots@plus@one%
- \repeat%
- }%
-}%
-%}%
\newcount\lie@hasse@grade@no
\newcount\lie@hasse@root@no
\def\lie@hasse@XX{}
@@ -1205,14 +1185,14 @@
\coordinate
(\the\lie@hasse@grade@no;\the\lie@hasse@root@no)
at
- ({\lie@hasse@XX*\dynkin@edge@length/2},
- {(\the\lie@hasse@grade@no-1)*\dynkin@edge@length/2}) {};%
+ ({\lie@hasse@XX*\lie@hasse@edge@length/2},
+ {(\the\lie@hasse@grade@no-1)*\lie@hasse@edge@length/2}) {};%
\global\advance\lie@hasse@root@no by 1%
}%
\NewDocumentCommand\lie@hasse@place@root@list{m}%
{%
\global\lie@hasse@root@no 1\relax%
- \expandafter\forcsvlist\expandafter{\lie@hasse@place@root}{#1}%
+ \expandafter\forcsvlist\expandafter\lie@hasse@place@root{#1}%
\global\advance\lie@hasse@grade@no by 1%
}%
\NewDocumentCommand\lie@hasse@place@roots{m}%
@@ -1224,26 +1204,6 @@
}%
\expandafter\docsvlist\expandafter{#1}%
}%
-\NewDocumentCommand\lie@hasse@draw@root{m}%
-{%
- \draw@lie@hasse@root{\the\lie@hasse@grade@no;\the\lie@hasse@root@no}%
- \global\advance\lie@hasse@root@no by 1%
-}%
-\NewDocumentCommand\lie@hasse@root@draw@list{m}%
-{%
- \global\lie@hasse@root@no 1\relax%
- \expandafter\forcsvlist\expandafter{\lie@hasse@draw@root}{#1}%
- \global\advance\lie@hasse@grade@no by 1%
-}%
-\NewDocumentCommand\lie@hasse@draw@roots{m}%
-{%
- \global\lie@hasse@grade@no 1\relax%
- \renewcommand*{\do}[1]%
- {%
- \lie@hasse@root@draw@list{##1}%
- }%
- \expandafter\docsvlist\expandafter{#1}%
-}%
\newcount\lie@hasse@grade@no@plus@one%
\newcount\lie@hasse@edge@count%
\def\lie@hasse@edge@go{%
@@ -1256,7 +1216,8 @@
{%
\global\advance\lie@hasse@edge@count by 1\relax%
\begin{pgfonlayer}{Dynkin above}%
- \lie@hasse@finish@edge#1!%
+%%? \lie@hasse@finish@edge#1!%
+ \lie@hasse@finish@edge#1\relax%
\end{pgfonlayer}%
}%
\def\lie@hasse@process@edge@behind#1!%
@@ -1289,13 +1250,12 @@
\NewDocumentCommand\lie@hasse@process@edge@lists{m}%
{%
\global\lie@hasse@grade@no 1\relax%
- \expandafter\forcsvlist\expandafter{\lie@hasse@process@edge@list}{#1}%
+ \expandafter\forcsvlist\expandafter\lie@hasse@process@edge@list{#1}%
}%
\NewDocumentCommand\hasse@X{mm}%
{%
\lie@hasse@place@roots{#1}%
\lie@hasse@process@edge@lists{#2}%
- \lie@hasse@draw@roots{#1}%
}%
\NewDocumentCommand\hasse@E@six@width@at@grade{mm}%
{%
@@ -1323,7 +1283,11 @@
#2 1%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
}%
-% In the following code, edges are described by grade: in grade g, the expression i+r<j. means an edge from g;i to (g+1);j labelled by root r, with a label on the left; use > instead of < to get the right. Use a star in front to get this edge on the higher layer.
+% In the following code, edges are described by grade:
+% in grade g, the expression i+r<j. means an edge from
+% g;i to (g+1);j labelled by root r, with a label on
+% the left; use > instead of < to get the right. Use a
+% star in front to get this edge on the higher layer.
\NewDocumentCommand\hasse@E@six{}%
{%
\hasse@X%
@@ -1353,13 +1317,45 @@
}%%%
\iflie@hasse@threeD%
\begin{pgfonlayer}{Dynkin middle}%
-\fill[/Lie Hasse diagram/top] (2;1) -- (5;3) -- (2;5) -- (1;5) -- (2;4) -- (1;3) -- (2;2) -- (1;2) -- cycle;%
-\fill[/Lie Hasse diagram/top] (2;3) -- (4;1) -- (6;2) -- (4;5) -- cycle;%
-\fill[/Lie Hasse diagram/right] (1;3) -- (2;3) -- (4;5) -- (3;5) -- cycle;%
-\fill[/Lie Hasse diagram/left] (3;1) -- (4;1) -- (2;3) -- (1;3) -- cycle;%
-\fill[/Lie Hasse diagram/left] (4;3) -- (5;1) -- (6;1) -- (5;2) -- cycle;%
-\fill[/Lie Hasse diagram/right] (4;3) -- (5;2) -- (6;3) -- (5;4) -- cycle;%
-\fill[/Lie Hasse diagram/top] (5;2) -- (7;1) -- (9;1) -- (7;3) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (2;1) --
+ (5;3) --
+ (2;5) --
+ (1;5) --
+ (2;4) --
+ (1;3) --
+ (2;2) --
+ (1;2) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (2;3) --
+ (4;1) --
+ (6;2) --
+ (4;5) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (1;3) --
+ (2;3) --
+ (4;5) --
+ (3;5) -- cycle;%
+ \fill[/Lie Hasse diagram/left]
+ (3;1) --
+ (4;1) --
+ (2;3) --
+ (1;3) -- cycle;%
+ \fill[/Lie Hasse diagram/left]
+ (4;3) --
+ (5;1) --
+ (6;1) --
+ (5;2) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (4;3) --
+ (5;2) --
+ (6;3) --
+ (5;4) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (5;2) --
+ (7;1) --
+ (9;1) --
+ (7;3) -- cycle;%
\end{pgfonlayer}%
\fi%
}%
@@ -1399,7 +1395,6 @@
#2 1%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
}%
-
\NewDocumentCommand\hasse@E@seven{}%
{%
\hasse@X%
@@ -1457,20 +1452,64 @@
}%%%
\iflie@hasse@threeD%
\begin{pgfonlayer}{Dynkin middle}%
-\fill[/Lie Hasse diagram/top] (2;1) -- (6;3) -- (2;6) -- (1;6) -- (2;5) -- (1;4) -- (2;3) -- (1;3) --
- (2;2) -- (1;2) -- cycle;%
-\fill[/Lie Hasse diagram/top] (5;1) -- (7;3) -- (4;6) -- (2;4) -- cycle;%
-\fill[/Lie Hasse diagram/top] (7;1) -- (9;3) -- (7;5) -- (5;4) -- cycle;%
-\fill[/Lie Hasse diagram/top] (9;1) -- (12;1) -- (13;1) -- (14;1) -- (11;3) -- (7;2) -- cycle;%
-\fill[/Lie Hasse diagram/right] (1;4) -- (2;4) -- (4;6) -- (3;6) -- cycle;%
-\fill[/Lie Hasse diagram/left] (4;1) -- (5;1) -- (2;4) -- (1;4) -- cycle;%
-\fill[/Lie Hasse diagram/left] (4;4) -- (6;1) -- (8;1) -- (7;2) -- (6;2) -- (5;4) -- cycle;%
-\fill[/Lie Hasse diagram/right] (4;4) -- (5;4) -- (6;5) -- (5;6) -- cycle;%
-\fill[/Lie Hasse diagram/right] (6;2) -- (7;2) -- (9;4) -- (8;4) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (2;1) --
+ (6;3) --
+ (2;6) --
+ (1;6) --
+ (2;5) --
+ (1;4) --
+ (2;3) --
+ (1;3) --
+ (2;2) --
+ (1;2) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (5;1) --
+ (7;3) --
+ (4;6) --
+ (2;4) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (7;1) --
+ (9;3) --
+ (7;5) --
+ (5;4) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (9;1) --
+ (12;1) --
+ (13;1) --
+ (14;1) --
+ (11;3) --
+ (7;2) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (1;4) --
+ (2;4) --
+ (4;6) --
+ (3;6) -- cycle;%
+ \fill[/Lie Hasse diagram/left]
+ (4;1) --
+ (5;1) --
+ (2;4) --
+ (1;4) -- cycle;%
+ \fill[/Lie Hasse diagram/left]
+ (4;4) --
+ (6;1) --
+ (8;1) --
+ (7;2) --
+ (6;2) --
+ (5;4) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (4;4) --
+ (5;4) --
+ (6;5) --
+ (5;6) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (6;2) --
+ (7;2) --
+ (9;4) --
+ (8;4) -- cycle;%
\end{pgfonlayer}%
\fi%
}%
-
\NewDocumentCommand\hasse@E@eight@width@at@grade{mm}%
{%
\ifnum#1=1%
@@ -1527,7 +1566,6 @@
#2 1%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
}%
-
\NewDocumentCommand\hasse@E@eight{}%
{%
\hasse@X{%
@@ -1754,11 +1792,11 @@
{{0,2,4,6},{1,3,5},{2,3:1,4},{2:1,3,4:1},{1:1,3:1,5:1},{2:1,4:1},{1:1,3:1},{2:1},{2:2},{2:3},{2:4}}%
{% grades:
{% 1
-1+2<1,*2+3<2,*3+4<3,*2+1>1,*3+2>2,4+3>3},
+1+2<1,*2+3>2,*3+4>3,*2+1<1,*3+2<2,4+3>3},
{% 2
-*1+3<1,*2+4<3,*2+3<2,*2+1<1,3+2>3},
+*1+3<1,*2+4>3,*2+1<1,*2+3>2,3+2>3},
{% 3
-*1+3<1,1+4<2,*2+4<3,*2+1<1,3+1>2,*3+3>3},
+*1+3<1,1+4>2,*2+4>3,*2+1<1,3+1>2,*3+3>3},
{% 4
*1+2<1,*1+4<2,2+3<2,*3+1>2,*3+4>3},
{% 5
@@ -2026,8 +2064,8 @@
}%
\global\root@sum@resetfalse%
}%
-\xdef\my@root@sum{}%
-\xdef\my@fixed@root@sum{}%
+\xdef\lie@hasse@root@sum{}%
+\xdef\lie@hasse@fixed@root@sum{}%
\NewDocumentCommand\rootSum{oommm}%
{%
\IfValueT{#1}%
@@ -2053,15 +2091,15 @@
\fi%
\IfStrEqCase{\dynkin@series}%
{%
- {A}{\hasse@A@root@sum{#3}{#4}{\my@root@sum}}%
- {B}{\hasse@B@root@sum{#3}{#4}{\my@root@sum}}%
- {C}{\hasse@C@root@sum{#3}{#4}{\my@root@sum}}%
- {D}{\hasse@D@root@sum{#3}{#4}{\my@root@sum}}%
- {E}{\xdef\my@root@sum{\exceptional@root@sum{#3;#4}}}%
- {F}{\xdef\my@root@sum{\exceptional@root@sum{#3;#4}}}%
- {G}{\xdef\my@root@sum{\exceptional@root@sum{#3;#4}}}%
+ {A}{\hasse@A@root@sum{#3}{#4}{\lie@hasse@root@sum}}%
+ {B}{\hasse@B@root@sum{#3}{#4}{\lie@hasse@root@sum}}%
+ {C}{\hasse@C@root@sum{#3}{#4}{\lie@hasse@root@sum}}%
+ {D}{\hasse@D@root@sum{#3}{#4}{\lie@hasse@root@sum}}%
+ {E}{\xdef\lie@hasse@root@sum{\exceptional@root@sum{#3;#4}}}%
+ {F}{\xdef\lie@hasse@root@sum{\exceptional@root@sum{#3;#4}}}%
+ {G}{\xdef\lie@hasse@root@sum{\exceptional@root@sum{#3;#4}}}%
}%
- \StrSubstitute{\my@root@sum}{.}{,}[#5]%
+ \StrSubstitute{\lie@hasse@root@sum}{.}{,}[#5]%
}%
%% \rootSystemHeight[G][2]{\h} sets the counter \h to the height of the poset
%% of the root system G2. \rootSystemHeight{\h} uses the current root system.
@@ -2451,7 +2489,7 @@
4;1=3.1,%
5;1=3.2}%
}%
-\NewDocumentCommand\forAllPositiveRootsInHasseDiagram{m}%
+\NewDocumentCommand\forAllPositiveRoots{m}%
{%
\rootSystemHeight{\lie@hasse@height}%
\foreach \root@grady in {1,...,\the\lie@hasse@height}%
diff --git a/graphics/pgf/contrib/lie-hasse/lie-hasse.tex b/graphics/pgf/contrib/lie-hasse/lie-hasse.tex
index 82643fee14..762639c603 100644
--- a/graphics/pgf/contrib/lie-hasse/lie-hasse.tex
+++ b/graphics/pgf/contrib/lie-hasse/lie-hasse.tex
@@ -1,5 +1,5 @@
\documentclass{amsart}
-\title[The Lie Hasse package]{The Lie Hasse package \\ Version 1.0}
+\title[The Lie Hasse package]{The Lie Hasse package \\ Version 1.01}
%% My name:
\makeatletter
\DeclareRobustCommand{\scotsMc}{\scotsMcx{c}}
@@ -19,8 +19,7 @@
\author{\authorsname}
\address{School of Mathematical Sciences, University College Cork, Cork, Ireland}
\email{b.mckay@ucc.ie}
-\date{3 February 2020}
-\usepackage{etex}
+\date{9 July 2024}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenx}
\usepackage{etoolbox}
@@ -87,7 +86,7 @@
root radius=.02cm,
edge length=.5cm,
edge quotes/.style={opacity=0}%
- ]{E}{8}%
+ ]E8%
\end{tikzpicture}%
\end{center}%
\begin{center}
@@ -106,26 +105,26 @@ This package draws the Hasse diagram of the poset of the positive simple roots o
\begin{document}
The Hasse diagram of \(F_4\) is
\begin{center}
-\hasse[edge length=1cm]{F}{4}
+\hasse F4
\end{center}
\end{document}
\end{Verbatim}
\end{tcolorbox}
\par\noindent{}The Hasse diagram of \(F_4\) is
\begin{center}
-\hasse[edge length=1cm]{F}{4}
+\hasse[edge length=1cm]F4
\end{center}
Each edge is labelled with the simple root by which vertices differ.
\begin{tcblisting}{title={Inside a \TikZ statement}}
-\(B_4\) has Dynkin diagram \tikz \dynkin[edge length=.35cm]{B}{4};, Hasse diagram
+\(B_4\) has Dynkin diagram \tikz \dynkin{B}{4};, Hasse diagram
\begin{center}
-\hasse[edge length=1cm]{B}{4}
+\hasse[edge length=1cm]B4
\end{center}
\end{tcblisting}
\begin{tcblisting}{title={Inside a Dynkin diagram environment, diagrams fit together}}
The Hasse diagram of \(B_4\) is
\begin{dynkinDiagram}[vertical shift=0,edge length=1cm]{B}{4}
-\hasse{B}{4}
+\hasse[edge length=1cm]B4
\end{dynkinDiagram}
\end{tcblisting}
We shut off the default vertical shift of the Dynkin diagram, so that it starts at the origin.
@@ -133,35 +132,26 @@ There is an option to \verb!\hasse! for this:
\begin{tcblisting}{title={Attaching the Dynkin diagram}}
The Hasse diagram of \(B_4\) is
\begin{center}
-\hasse[attach Dynkin diagram=true]{B}{4}
+\hasse[attach Dynkin diagram=true]B4
\end{center}
\end{tcblisting}
Unfortunately, attaching a Dynkin diagram looks terrible for \(D\) or \(E\) series, so a Dynkin diagram appears below.
\begin{tcblisting}{title={Attaching the Dynkin diagram}}
The Hasse diagram of \(D_5\) is
\begin{center}
-\hasse[attach Dynkin diagram=true]{D}{5}
+\hasse[attach Dynkin diagram=true]D5
\end{center}
\end{tcblisting}
\begin{tcblisting}{title={Inside a \TikZ environment}}
\begin{tikzpicture}
-\hasse{A}{4}
+\hasse A4
\draw (4;1) circle (5pt);
\draw[red] (2;3) circle (5pt);
\end{tikzpicture}
\end{tcblisting}
In this example, we see that the roots of the Hasse diagram are \TikZ{} nodes labelled \(g;i\) for grade \(g\) (i.e. \(g\) units up the page) and index \(i\) (i.e. \(i^{\text{th}}\) root of grade \(g\) drawn on the page, starting from the left).
-\section{Inherited options}
-The Lie Hasse package inherits options from the Dynkin diagrams package: the edge lengths are set with
-\begin{Verbatim}
-\tikzset{/Dynkin diagram/edge lengths=1.2cm}
-\end{Verbatim}
-and similarly the ordering of roots with
-\begin{Verbatim}
-\tikzset{/Dynkin diagram/ordering=Bourbaki}
-\end{Verbatim}
-
+\newpage
\section{Prettier}
The package includes a more elaborate \verb!\hasseDiagrams! command, taking a list of semicolon separated Dynkin diagram identfiers.
\begin{tcolorbox}[title={With some global options to make prettier diagrams}]
@@ -198,11 +188,20 @@ The package includes a more elaborate \verb!\hasseDiagrams! command, taking a li
\endgroup
Global options:
\begin{verbatim}
- edge/.style={ultra thick},
- edge quotes/.style={/Dynkin diagram/text style,auto,inner sep=2pt},
+\tikzset{/Lie Hasse,
+ edge/.style={ultra thick},
+ edge quotes/.style={
+ /Dynkin diagram/text style,
+ auto,
+ inner sep=2pt},
\end{verbatim}
allow to change the edges, and to change the way that labels are printed, and how close labels are to the edges.
-
+To give even greater control, the user can define a command \verb!\edgeQuote! of one argument, which is applied to the label placed on every edge of the Hasse diagram.
+The default is
+\begin{verbatim}
+\NewDocumentCommand\edgeQuote{m}{\contour{white}{#1}}
+\end{verbatim}
+which ensures that every label, which is black text by default, has a slight white outline to make it easier to read against a coloured background.
\section{Root order}
@@ -222,6 +221,10 @@ We can use this like:
\hasseDiagrams{[ordering=Carter]E6;[ordering=Dynkin]E6}
\hasseDiagrams{[ordering=Kac]E6}
\endgroup
+The Lie Hasse package inherits the ordering of roots from the Dynkin diagrams package, so we can set it with
+\begin{Verbatim}
+\tikzset{/Dynkin diagram/ordering=Bourbaki}
+\end{Verbatim}
\section{Graph height and width}
The \emph{height} of a Hasse diagram is the number of grades.
@@ -238,7 +241,7 @@ to store the height of \(G_2\) in a counter called \verb!\h!, and
\end{Verbatim}
to store the width of \(G_2\) at grade \(3\) in a counter called \verb!\w!.
-Once you use \verb!\dynkin{G}{2}! or \verb!\hasse{G}{2}! or the other commands, like
+Once you use \verb!\dynkin G2! or \verb!\hasse G2! or the other commands, like
\begin{Verbatim}
\rootSystemHeight[G][2]{\h}
\end{Verbatim}
@@ -260,7 +263,8 @@ The \verb!show height! option:
\hasseDiagrams{G2}
\end{Verbatim}
\tikzset{/Lie Hasse diagram,show name=true,show height=true}
-\hasseDiagrams{G2}
+\hasse G2
+
The \verb!show widths! option:
\begin{Verbatim}
\tikzset{/Lie Hasse diagram/show widths=true}
@@ -293,11 +297,11 @@ Here is the Dynkin diagram of \(E_8\), indicating the order of the roots in Cart
Here is the same Dynkin diagram, except showing, at each simple root, the coefficient of that simple root in the highest root.
\begin{Verbatim}
\rootSum[E][8]{29}{1}{\rs}
-\dynkin[labels=\rs,ordering=Carter,edge length=.35cm]{E}{8}
+\dynkin[expand labels=\rs,ordering=Carter,edge length=.35cm]{E}{8}
\end{Verbatim}
\rootSum[E][8]{29}{1}{\rs}
\begin{center}
-\dynkin[labels=\rs,ordering=Carter,edge length=.35cm]{E}{8}
+\dynkin[expand labels=\rs,ordering=Carter,edge length=.35cm]{E}{8}
\end{center}
The option \verb!for all roots! allows execution of code once on every root.
@@ -312,7 +316,7 @@ The option \verb!for all roots! allows execution of code once on every root.
root radius=.05cm
},
for all roots/.code 2 args={\drawRootAsDynkinSum{#1}{#2}}}
-\hasseDiagrams{D5}
+\hasse D5
\end{Verbatim}
\begingroup
\tikzset{/Lie Hasse diagram,
@@ -341,23 +345,23 @@ A simple example:
\end{Verbatim}
\newcommand{\foo}[2]%
{%
- \node[below,scale=.75] at (#1;#2) {\(#1,#2\)};%
+ \node[below,scale=.5] at (#1;#2) {\(#1,#2\)};%
}%
Inside a \TikZ{} or \verb!dynkinDiagram! environment:
\begin{Verbatim}
\tikzset{/Lie Hasse diagram/edge quotes/.style={opacity=0},
/Dynkin diagram/edge length=1.5cm}
\begin{tikzpicture}
- \hasse{D}{6}%
- \forAllPositiveRootsInHasseDiagram{\foo}%
+ \hasse D6%
+ \forAllPositiveRoots{\foo}%
\end{tikzpicture}
\end{Verbatim}
\begingroup
\tikzset{/Lie Hasse diagram/edge quotes/.style={opacity=0},
/Dynkin diagram/edge length=1.5cm}
\begin{tikzpicture}
- \hasse{D}{6}%
- \forAllPositiveRootsInHasseDiagram{\foo}%
+ \hasse D6%
+ \forAllPositiveRoots{\foo}%
\end{tikzpicture}
If you put this into the \verb!for all roots! option, it executes on its own:
@@ -378,19 +382,19 @@ Opposite sides of any square have the same edge label, by commutativity of addit
Hence we don't need to see every edge perfectly.
The three dimensional effect is the default:
\begin{Verbatim}
-\hasse{D}{4}\hasse{E}{6}
+\hasse D4\hasse E6
\end{Verbatim}
\begin{center}
-\hasse{D}{4}\hasse{E}{6}
+\hasse D4\hasse E6
\end{center}
We can turn it off:
\begin{Verbatim}
-\hasse[three D=false]{D}{4}
-\hasse[three D=false]{E}{6}
+\hasse[three D=false] D4
+\hasse[three D=false] E6
\end{Verbatim}
\begin{center}
-\hasse[three D=false]{D}{4}
-\hasse[three D=false]{E}{6}
+\hasse[three D=false] D4
+\hasse[three D=false] E6
\end{center}
or globally with \verb!\tikzset{/Lie Hasse diagram/three D=false}!.
@@ -430,9 +434,9 @@ You can change these:
\section{Label the simple roots}
Ringel \cite{Ringel:2013} labels his edges like
\begin{Verbatim}
-\hasseDiagrams{[labels={f,e,d,c,u,b,a}]E7}
+\hasse[labels={f,e,d,c,u,b,a}]E7
\end{Verbatim}
-\hasseDiagrams{[labels={f,e,d,c,u,b,a}]E7}
+\hasse[labels={f,e,d,c,u,b,a}]E7
\section{Parabolic subgroups}
This package offers nothing over Ringel's original pictures, except that the user can pick some simple roots whose associated edges are drawn differently.
@@ -440,47 +444,48 @@ The chosen simple roots are called \emph{compact}, following terminology from th
We let the reader explore the notation for parabolic subgroups in the Dynkin diagrams package, and use this to declare various roots compact.
\begin{Verbatim}
\tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,three D=false}
-\hasseDiagrams{D{**x*x*x*}}
+\hasse D{**x*x*x*}
\end{Verbatim}
\begingroup
\tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,three D=false}
-\hasseDiagrams{D{**x*x*x*}}
+\hasse D{**x*x*x*}
\endgroup
+
Our motivation comes from trying to identify the invariant vector subbundles of the tangent bundle of a rational homogeneous variety \cite{MathOverflow:123801}.
Such diagrams are often unreadable if we don't turn off the three dimensional graphics.
By default, noncompact root edges are not drawn.
\begingroup
\tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,show name=false,three D=false}
\begin{Verbatim}
-\hasseDiagrams{E{*xx*x*}}
+\hasse E{*xx*x*}
\end{Verbatim}
-\hasseDiagrams{E{*xx*x*}}
+\hasse E{*xx*x*}
\begin{Verbatim}
-\hasseDiagrams{A{x*x*}}
+\hasse A{x*x*}
\end{Verbatim}
-\hasseDiagrams{A{x*x*}}
+\hasse A{x*x*}
\begin{Verbatim}
-\hasseDiagrams{[parabolic=113]B8}
+\hasse[parabolic=113]B8
\end{Verbatim}
-\hasseDiagrams{[parabolic=113]B8}
+\hasse[parabolic=113]B8
\begin{Verbatim}
-\hasseDiagrams{C{**xx*x**}}
+\hasse C{**xx*x**}
\end{Verbatim}
-\hasseDiagrams{C{**xx*x**}}
+\hasse C{**xx*x**}
\newpage
\begin{Verbatim}
-\hasseDiagrams{E{*x*x*x**}}
+\hasse E{*x*x*x**}
\end{Verbatim}
-\hasseDiagrams{E{*x*x*x**}}
+\hasse E{*x*x*x**}
\newpage
\begin{Verbatim}
-\hasseDiagrams{F{**xx}}
+\hasse F{**xx}
\end{Verbatim}
-\hasseDiagrams{F{**xx}}
+\hasse F{**xx}
\begin{Verbatim}
-\hasseDiagrams{G{*x}}
+\hasse G{*x}
\end{Verbatim}
-\hasseDiagrams{G{*x}}
+\hasse G{*x}
\endgroup
\section{Examples}
diff --git a/graphics/pgf/contrib/liftarm/README.md b/graphics/pgf/contrib/liftarm/README.md
index 2759458717..af687942b7 100644
--- a/graphics/pgf/contrib/liftarm/README.md
+++ b/graphics/pgf/contrib/liftarm/README.md
@@ -1,20 +1,20 @@
-# liftarm
+# `liftarm`
-Draw liftarms with TikZ
+## Geometric constructions with liftarms using Ti*k*Z and LaTeX3
-Version 2.0 (2022/04/07)
+Version 3.0 (2024/05/20)
-This package is based on the package TikZ and can be used to draw liftarms with TikZ. It provides several options for the appearance of the liftarms, a command which connects two liftarms, an environment to describe a construction and a method to animate a construction with one or more traces.
+This package is based on the package [Ti*k*Z](https://ctan.org/pkg/pgf) and can be used to draw geometric constructions with liftarms using Ti*k*Z. There are several options for the appearance of the liftarms. It provides an environment to connect multiple liftarms using the Newton-Raphson method and LU decomposition. It also provides an environment to describe a construction and a method to animate a construction with one or more traces.
%% README.md
%% Copyright 2022 Matthias Floré
%
% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
+% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
+% and version 1.3c or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
diff --git a/graphics/pgf/contrib/liftarm/liftarm.pdf b/graphics/pgf/contrib/liftarm/liftarm.pdf
index d428d1f7af..eddb6d4f1d 100644
--- a/graphics/pgf/contrib/liftarm/liftarm.pdf
+++ b/graphics/pgf/contrib/liftarm/liftarm.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/liftarm/liftarm.sty b/graphics/pgf/contrib/liftarm/liftarm.sty
index b850c8f16a..63d6b51f44 100644
--- a/graphics/pgf/contrib/liftarm/liftarm.sty
+++ b/graphics/pgf/contrib/liftarm/liftarm.sty
@@ -1,12 +1,12 @@
%% liftarm.sty
-%% Copyright 2022 Matthias Floré
+%% Copyright 2022-2024 Matthias Floré
%
% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
+% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
+% and version 1.3c or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
@@ -16,321 +16,897 @@
% This work consists of the files liftarm.pdf, liftarm.sty,
% liftarm.tex and README.md.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{liftarm}[2022/04/07 v2.0 Draw liftarms with TikZ]
-\RequirePackage{etoolbox}
\RequirePackage[dvipsnames]{xcolor}
\RequirePackage{tikz}
\usetikzlibrary{calc}
-\newif\ifliftarm@animate
-\newif\ifliftarm@brick
-\newif\ifliftarm@connectreverse
-\newif\ifliftarm@contour
-\pgfkeys{
-/liftarm/.is family,
-/liftarm/.unknown/.code={\edef\liftarm@colorkey{\pgfkeyscurrentname}},
-/liftarm,
-axle holes/.store in=\liftarm@axleholes,
-brick/.is if=liftarm@brick,
-color/.store in=\liftarm@colorkey,
-color 0/.initial=Gray,
-color 1/.initial=darkgray,
-color 2/.initial=Yellow,
-color 3/.initial=Orange,
-color 4/.initial=Red,
-color 5/.initial=Green,
-color 6/.initial=Blue,
-color 7/.initial=Brown,
-color modulo/.initial=8,
-connect/.store in=\liftarm@connect,
-connect coordinate/.store in=\liftarm@connectcoordinate,
-connect reverse/.is if=liftarm@connectreverse,
-contour/.is if=liftarm@contour,
-coordinate/.store in=\liftarm@coordinate,
-globalize/.code n args={2}{\xdef#1{#2}},
-hole radius/.initial=0.3,
-liftarm 1/.style={liftarm 1 options/.style={#1}},
-liftarm 1 options/.style={},
-liftarm 2/.style={liftarm 2 options/.style={#1}},
-liftarm 2 options/.style={},
-liftarm thickness/.initial=0.92,
-mark color/.initial=Black,
-mark holes/.store in=\liftarm@markholes,
-origin/.initial=0,
-scalefactor/.initial=0.5,
-screw color/.initial=Black,
-screw holes/.store in=\liftarm@screwholes,
-screw holes angle/.initial=45,
-trace/.store in=\liftarm@trace,
-}
-\pgfmathsetmacro{\liftarm@axleholeangle}{14}%2*\liftarm@axleholeradius*sin(\liftarm@axleholeangle)=1.78/8
-\pgfmathsetmacro{\liftarm@screwholestartangle}{10}
-\newcommand{\liftarm}[4][]{
-\pgfmathsetmacro{\liftarm@length}{#3}
-\ifdim \liftarm@length pt<0 pt
-\PackageWarning{liftarm}{The length (\liftarm@length) of the liftarm is smaller than 0.}
-\else
-\pgfmathsetmacro{\liftarm@ang}{#4}
-\begin{scope}[shift={(#2)},rotate=\liftarm@ang]
-\pgfkeys{/liftarm,#1}
-\pgfmathsetmacro{\liftarm@origin}{\pgfkeysvalueof{/liftarm/origin}}
-\begin{scope}[shift={(-\liftarm@origin,0)}]
-\pgfmathsetmacro{\liftarm@halfthickness}{0.5*\pgfkeysvalueof{/liftarm/scalefactor}*\pgfkeysvalueof{/liftarm/liftarm thickness}}
-\pgfmathsetmacro{\liftarm@holeradius}{\pgfkeysvalueof{/liftarm/scalefactor}*\pgfkeysvalueof{/liftarm/hole radius}}
-\pgfmathsetmacro{\liftarm@halfstudwidth}{\pgfkeysvalueof{/liftarm/scalefactor}*0.3}
-\pgfmathsetmacro{\liftarm@studheight}{\pgfkeysvalueof{/liftarm/scalefactor}*0.2}
-\pgfmathsetmacro{\liftarm@halfplateheight}{\pgfkeysvalueof{/liftarm/scalefactor}*0.2}
-\pgfmathsetmacro{\liftarm@halfplatewidth}{\pgfkeysvalueof{/liftarm/scalefactor}*0.5}
-\pgfmathsetmacro{\liftarm@axleholeradius}{\liftarm@halfthickness}
-\pgfmathsetmacro{\liftarm@screwholeradius}{0.8*\liftarm@holeradius}
-\colorlet{liftarm@markcolor}{\pgfkeysvalueof{/liftarm/mark color}}
-\colorlet{liftarm@screwcolor}{\pgfkeysvalueof{/liftarm/screw color}}
-\pgfmathsetmacro{\liftarm@screwholesangle}{\pgfkeysvalueof{/liftarm/screw holes angle}}
-\ifcsname liftarm@colorkey\endcsname
-\colorlet{liftarm@color}{\liftarm@colorkey}
-\else
-\pgfmathsetmacro{\liftarm@colornumber}{int(mod(\liftarm@length,\pgfkeysvalueof{/liftarm/color modulo}))}
-\colorlet{liftarm@color}{\pgfkeysvalueof{/liftarm/color \liftarm@colornumber}}
-\fi
-\ifliftarm@brick
-\def\liftarm@shape{(-1,{-\liftarm@halfplatewidth-\liftarm@halfplateheight})--(-1,\liftarm@halfplatewidth)
-\foreach\liftarm@n in {-1,...,\liftarm@length}{
---({\liftarm@n+0.5-\liftarm@halfstudwidth},\liftarm@halfplatewidth)--({\liftarm@n+0.5-\liftarm@halfstudwidth},{\liftarm@halfplatewidth+\liftarm@studheight})--({\liftarm@n+0.5+\liftarm@halfstudwidth},{\liftarm@halfplatewidth+\liftarm@studheight})--({\liftarm@n+0.5+\liftarm@halfstudwidth},\liftarm@halfplatewidth)--({\liftarm@n+1},\liftarm@halfplatewidth)
-}
---({\liftarm@length+1},{-\liftarm@halfplatewidth-\liftarm@halfplateheight})--cycle}
-\else
-\def\liftarm@shape{(0,\liftarm@halfthickness) arc (90:270:\liftarm@halfthickness)--(\liftarm@length,-\liftarm@halfthickness) arc (-90:90:\liftarm@halfthickness)--cycle}
-\fi
-\fill[liftarm@color,even odd rule] \liftarm@shape
-\foreach\liftarm@n in {0,...,\liftarm@length}{
-(\liftarm@n,0) circle[radius=\liftarm@holeradius]
-};
-\ifliftarm@contour
-%\ifliftarm@brick
-%\else
-\draw[liftarm@color!75!Black,ultra thick] \liftarm@shape;
-%\fi
-\fi
-\ifcsname liftarm@axleholes\endcsname
-\foreach\liftarm@n in \liftarm@axleholes{
-\pgfmathsetmacro{\liftarm@axlehole}{\liftarm@n}
-\ifdim \liftarm@axlehole pt<0 pt
-\else
-\ifdim \liftarm@axlehole pt>\liftarm@length pt
-\else
-\foreach\liftarm@angle in {0,90,180,270}{
-\begin{scope}[shift={(\liftarm@axlehole,0)},rotate=\liftarm@angle]
-\fill[liftarm@color] (\liftarm@axleholeangle:\liftarm@axleholeradius) arc (\liftarm@axleholeangle:{90-\liftarm@axleholeangle}:\liftarm@axleholeradius)--({\liftarm@axleholeradius*sin(\liftarm@axleholeangle)},{\liftarm@axleholeradius*sin(\liftarm@axleholeangle)})--cycle;
-\end{scope}
-}
-\fi
-\fi
-}
-\fi
-\ifcsname liftarm@markholes\endcsname
-\foreach\liftarm@n in \liftarm@markholes{
-\pgfmathsetmacro{\liftarm@markhole}{\liftarm@n}
-\ifdim \liftarm@markhole pt<0 pt
-\else
-\ifdim \liftarm@markhole pt>\liftarm@length pt
-\else
-\fill[liftarm@markcolor] (\liftarm@markhole,0) circle[radius=\liftarm@holeradius];
-\fi
-\fi
-}
-\fi
-\ifcsname liftarm@screwholes\endcsname
-\foreach\liftarm@n in \liftarm@screwholes{
-\pgfmathsetmacro{\liftarm@screwhole}{\liftarm@n}
-\ifdim \liftarm@screwhole pt<0 pt
-\else
-\ifdim \liftarm@screwhole pt>\liftarm@length pt
-\else
-\begin{scope}[shift={(\liftarm@screwhole,0)},rotate=\liftarm@screwholesangle]
-\foreach\liftarm@n in {-1,1}{
-\fill[liftarm@screwcolor] ({\liftarm@screwholeradius*cos(\liftarm@screwholestartangle)},{\liftarm@n*\liftarm@screwholeradius*sin(\liftarm@screwholestartangle)}) arc ({\liftarm@n*\liftarm@screwholestartangle}:{\liftarm@n*(180-\liftarm@screwholestartangle)}:\liftarm@screwholeradius);
-}
-\end{scope}
-\fi
-\fi
-}
-\fi
-\ifcsname liftarm@coordinate\endcsname
-\foreach\liftarm@n/\liftarm@name in \liftarm@coordinate{
-\pgfmathsetmacro{\liftarm@value}{\liftarm@n}
-\coordinate (\liftarm@name) at (\liftarm@value,0);
-}
-\fi
-\ifcsname liftarm@trace\endcsname
-\ifliftarm@animate
-\foreach\liftarm@n/\liftarm@numberofframes/\liftarm@tracefigure in \liftarm@trace{
-\pgfmathsetmacro{\liftarm@value}{\liftarm@n}
-\gappto\liftarm@animateframestrace{\newframe\begin{scope}}
-\addtocounter{liftarm@animateframenumber}{1}
-\xappto\liftarm@animateframestrace{[shift={(#2)},rotate=\liftarm@ang]}
-\gappto\liftarm@animateframestrace{\begin{scope}}
-\xappto\liftarm@animateframestrace{[shift={(\liftarm@value-\liftarm@origin,0)}]}
-\ifdefempty{\liftarm@tracefigure}{
-\gappto\liftarm@animateframestrace{\fill[Black] (0,0) circle}
-\xappto\liftarm@animateframestrace{[radius=0.66*\liftarm@holeradius];}
-}
-{
-\xappto\liftarm@animateframestrace{\expandonce\liftarm@tracefigure}
-}
-\gappto\liftarm@animateframestrace{\end{scope}\end{scope}}
-\ifdefempty{\liftarm@numberofframes}{
-\csxappto{liftarm@animatetimeline0}{\theliftarm@animateframenumber x0,}
-}
-{
-\csxappto{liftarm@animatetimeline\theliftarm@animatestepnumber}{\theliftarm@animateframenumber x\liftarm@numberofframes,}
-}
-}
-\fi
-\fi
-\end{scope}
-\end{scope}
-\fi
-}
-\newcommand{\liftarmconnect}[5][]{
-\begin{scope}
-\pgfkeys{/liftarm,#1}
-\coordinate (liftarm@A) at (#2);
-\coordinate (liftarm@B) at (#4);
-\begin{scope}
-\pgfkeys{/liftarm,liftarm 1 options}
-\ifcsname liftarm@connect\endcsname
-\pgfmathsetmacro{\liftarm@connectlengthAtemp}{\liftarm@connect-\pgfkeysvalueof{/liftarm/origin}}
-\else
-\pgfmathsetmacro{\liftarm@connectlengthAtemp}{#3-\pgfkeysvalueof{/liftarm/origin}}
-\fi
-\xdef\liftarm@connectlengthA{\liftarm@connectlengthAtemp}
-\ifdim \liftarm@connectlengthA pt=0 pt
-\PackageWarning{liftarm}{The length of the first liftarm is 0.}
-\fi
-\end{scope}
-\begin{scope}
-\pgfkeys{/liftarm,liftarm 2 options}
-\ifcsname liftarm@connect\endcsname
-\pgfmathsetmacro{\liftarm@connectlengthBtemp}{\liftarm@connect-\pgfkeysvalueof{/liftarm/origin}}
-\else
-\pgfmathsetmacro{\liftarm@connectlengthBtemp}{#5-\pgfkeysvalueof{/liftarm/origin}}
-\fi
-\xdef\liftarm@connectlengthB{\liftarm@connectlengthBtemp}
-\ifdim \liftarm@connectlengthB pt=0 pt
-\PackageWarning{liftarm}{The length of the second liftarm is 0.}
-\fi
-\end{scope}
-\path
-let
-\p1=(liftarm@A),
-\p2=(liftarm@B),
-\n1={\x1/\pgf@xx},
-\n2={\y1/\pgf@yy},
-\n3={\x2/\pgf@xx},
-\n4={\y2/\pgf@yy}
-in
-[
-/liftarm/globalize={\liftarm@connectxalet}{\n3},
-/liftarm/globalize={\liftarm@connectyalet}{\n4},
-/liftarm/globalize={\liftarm@connectxblet}{\n1},
-/liftarm/globalize={\liftarm@connectyblet}{\n2}
-]
-;
-\pgfmathsetmacro{\liftarm@connectxa}{\liftarm@connectxalet}
-\pgfmathsetmacro{\liftarm@connectya}{\liftarm@connectyalet}
-\pgfmathsetmacro{\liftarm@connectxb}{\liftarm@connectxblet}
-\pgfmathsetmacro{\liftarm@connectyb}{\liftarm@connectyblet}
-\pgfmathsetmacro{\liftarm@absdiff}{abs(\liftarm@connectxa-\liftarm@connectxb)}
-\ifdim \liftarm@absdiff pt<0.001 pt
-\pgfmathsetmacro{\liftarm@connectanglegamma}{90}
-\ifdim \liftarm@connectya pt<\liftarm@connectyb pt
-\pgfmathsetmacro{\liftarm@connectangleshift}{0}
-\else
-\pgfmathsetmacro{\liftarm@connectangleshift}{180}
-\fi
-\else
-\pgfmathsetmacro{\liftarm@connectanglegamma}{atan((\liftarm@connectyb-\liftarm@connectya)/(\liftarm@connectxb-\liftarm@connectxa))}
-\ifdim \liftarm@connectxa pt<\liftarm@connectxb pt
-\pgfmathsetmacro{\liftarm@connectangleshift}{0}
-\else
-\pgfmathsetmacro{\liftarm@connectangleshift}{180}
-\fi
-\fi
-\pgfmathsetmacro{\liftarm@connectlength}{sqrt((\liftarm@connectyb-\liftarm@connectya)^2+(\liftarm@connectxb-\liftarm@connectxa)^2)}
-\ifdim \liftarm@connectlength pt=0 pt
-\PackageWarning{liftarm}{The length between the origins of the liftarms is 0.}
-\fi
-\pgfmathsetmacro{\liftarm@connectabsconnectlengthAminusconnectlengthB}{abs(\liftarm@connectlengthA-\liftarm@connectlengthB)}
-\ifdim \liftarm@connectabsconnectlengthAminusconnectlengthB pt>\liftarm@connectlength pt
-\PackageWarning{liftarm}{The liftarms can not be connected.}
-\fi
-\pgfmathsetmacro{\liftarm@connectconnectlengthAplusconnectlengthB}{\liftarm@connectlengthA+\liftarm@connectlengthB}
-\ifdim \liftarm@connectconnectlengthAplusconnectlengthB pt<\liftarm@connectlength pt
-\PackageWarning{liftarm}{The liftarms can not be connected.}
-\fi
-\pgfmathsetmacro{\liftarm@connectanglealpha}{acos(((\liftarm@connectlengthB)^2+(\liftarm@connectlength)^2-(\liftarm@connectlengthA)^2)/(2*(\liftarm@connectlength)*(\liftarm@connectlengthB)))}
-\pgfmathsetmacro{\liftarm@connectanglebeta}{acos(((\liftarm@connectlength)^2+(\liftarm@connectlengthA)^2-(\liftarm@connectlengthB)^2)/(2*\liftarm@connectlength*(\liftarm@connectlengthA)))}
-\pgfmathsetmacro{\liftarm@connectangledelta}{\liftarm@connectangleshift+180+\liftarm@connectanglegamma-\liftarm@connectanglebeta}
-\def\liftarm@liftarmA{\liftarm[liftarm 1 options]{#2}{#3}{\liftarm@connectangledelta}}
-\def\liftarm@liftarmB{\liftarm[liftarm 2 options]{#4}{#5}{\liftarm@connectangleshift+\liftarm@connectanglegamma+\liftarm@connectanglealpha}}
-\ifliftarm@connectreverse
-\liftarm@liftarmB
-\liftarm@liftarmA
-\else
-\liftarm@liftarmA
-\liftarm@liftarmB
-\fi
-\ifcsname liftarm@connectcoordinate\endcsname
-\coordinate (\liftarm@connectcoordinate) at ($(#2)+(\liftarm@connectangledelta:\liftarm@connectlengthA)$);
-\fi
-\end{scope}
-}
-\newcommand{\liftarm@construction}[2][]{\begin{tikzpicture}[#1]
-\liftarm@constructfigure
-#2
-\end{tikzpicture}}
-\newcommand{\liftarmconstruct}[3][]{\item #2\nopagebreak
+\ProvidesExplPackage{liftarm}{2024/05/20}{3.0}{Geometric constructions with liftarms using TikZ and LaTeX3}
+
+%%> \subsection{Variables}
+
+\newcounter { g__liftarm_animate_frame_number_counter }
+\newcounter { g__liftarm_animate_number_of_animation_counter }
+\newcounter { g__liftarm_animate_number_of_steps_counter }
+\newcounter { g__liftarm_animate_step_number_counter }
+
+\bool_new:N \l__liftarm_animate_bool
+\bool_new:N \l__liftarm_brick_bool
+\bool_new:N \l__liftarm_contour_bool
+\bool_new:N \l__liftarm_LU_bool
+
+\clist_new:N \l__liftarm_trace_clist
+
+\fp_new:N \l__liftarm_angle_fp
+\fp_const:Nn \c__liftarm_axle_hole_angle_fp { 21.76702028497987 }%asind ( 1.78 / ( 16 * 0.3 ) )
+\fp_new:N \l__liftarm_connect_det_fp
+\fp_new:N \l__liftarm_connect_norm_fp
+\fp_new:N \l__liftarm_connect_start_constant_x_fp
+\fp_new:N \l__liftarm_connect_start_constant_y_fp
+\fp_new:N \l__liftarm_connect_stop_value_fp
+\fp_new:c { l__liftarm_connect_two_1_option_0_angle_fp }
+\fp_new:c { l__liftarm_connect_two_1_option_1_angle_fp }
+\fp_new:c { l__liftarm_connect_two_2_option_0_angle_fp }
+\fp_new:c { l__liftarm_connect_two_2_option_1_angle_fp }
+\fp_new:N \l__liftarm_connect_two_angle_fp
+\fp_new:N \l__liftarm_connect_two_A_angle_fp
+\fp_new:N \l__liftarm_connect_two_A_length_fp
+\fp_new:N \l__liftarm_connect_two_A_x_fp
+\fp_new:N \l__liftarm_connect_two_A_y_fp
+\fp_new:N \l__liftarm_connect_two_B_angle_fp
+\fp_new:N \l__liftarm_connect_two_B_length_fp
+\fp_new:N \l__liftarm_connect_two_B_x_fp
+\fp_new:N \l__liftarm_connect_two_B_y_fp
+\fp_new:N \l__liftarm_connect_two_length_fp
+\fp_new:N \g__liftarm_coord_x_fp
+\fp_new:N \g__liftarm_coord_y_fp
+\fp_new:N \l__liftarm_half_thickness_fp
+\fp_new:N \l__liftarm_hole_radius_fp
+\fp_new:N \l__liftarm_length_fp
+\fp_new:N \l__liftarm_LU_maxA_fp
+\fp_new:N \l__liftarm_LU_tmp_fp
+\fp_new:N \l__liftarm_mark_radius_fp
+\fp_new:N \l__liftarm_origin_fp
+\fp_new:N \l__liftarm_origin_connect_initial_fp
+\fp_new:N \l__liftarm_scalefactor_fp
+\fp_new:N \l__liftarm_screw_angle_fp
+\fp_new:N \l__liftarm_screw_radius_fp
+
+\int_new:N \l__liftarm_connect_count_int
+\int_new:N \l__liftarm_connect_equation_int
+\int_new:N \l__liftarm_LU_count_int
+\int_new:N \l__liftarm_LU_imax_int
+\int_new:N \l__liftarm_LU_j_int
+\int_new:N \l__liftarm_LU_N_int
+
+\iow_new:N \g__liftarm_animate_write_timeline_iow
+
+\seq_new:N \l__liftarm_connect_coordinate_seq
+\seq_new:N \l__liftarm_connect_start_arg_seq
+\seq_new:N \l__liftarm_connect_start_coeff_seq
+\seq_new:N \l__liftarm_coordinate_seq
+\seq_new:N \l__liftarm_trace_item_seq
+
+\str_new:N \l__liftarm_connect_stop_type_str
+\str_new:N \l__liftarm_type_str
+
+\tl_new:N \g__liftarm_animate_frames_tl
+\tl_new:N \g__liftarm_animate_frames_trace_tl
+\tl_new:N \l__liftarm_animate_value_tl
+\tl_new:N \l__liftarm_color_tl
+\tl_new:N \g__liftarm_construct_tl
+\tl_const:Nn \c__liftarm_cos_sin_diff_x_tl { - sin }
+\tl_const:Nn \c__liftarm_cos_sin_diff_y_tl { cos }
+\tl_const:Nn \c__liftarm_cos_sin_x_tl { cos }
+\tl_const:Nn \c__liftarm_cos_sin_y_tl { sin }
+\tl_new:N \l__liftarm_holes_tl
+\tl_new:N \l__liftarm_shape_tl
+\tl_new:N \l__liftarm_tmp_tl
+
+%%> \subsection{Pgfkeys}
+
+\pgfkeys
+ {
+ / liftarm /. is~family ,
+ / liftarm ,
+ axle~holes /. initial = {} ,
+ brick /. code = { \bool_set:Nn \l__liftarm_brick_bool { \cs:w c_#1_bool\cs_end: } } ,
+ brick /. default = true ,
+ brick = false ,
+ color /. code~2~args =
+ {
+ \tl_clear_new:c { l__liftarm_color_\int_eval:n {#1}_tl }
+ \tl_set:cn { l__liftarm_color_\int_eval:n {#1}_tl } {#2}
+ } ,
+ color = { 0 } { Gray } ,
+ color = { 1 } { darkgray } ,
+ color = { 2 } { Yellow } ,
+ color = { 3 } { Orange } ,
+ color = { 4 } { Red } ,
+ color = { 5 } { Green } ,
+ color = { 6 } { Blue } ,
+ color = { 7 } { Brown } ,
+ color~modulo /. initial = 8 ,
+ connect~stop /. is~choice ,
+ connect~stop / 1-norm /. code =
+ {
+ \str_set:Nn \l__liftarm_connect_stop_type_str { 1-norm }
+ \fp_set:Nn \l__liftarm_connect_stop_value_fp {#1}
+ } ,
+ connect~stop / 1-norm /. default = 0.001 ,
+ connect~stop / 2-norm /. code =
+ {
+ \str_set:Nn \l__liftarm_connect_stop_type_str { 2-norm }
+ \fp_set:Nn \l__liftarm_connect_stop_value_fp {#1}
+ } ,
+ connect~stop / 2-norm /. default = 0.001 ,
+ connect~stop / iterations /. code =
+ {
+ \str_set:Nn \l__liftarm_connect_stop_type_str { iterations }
+ \fp_set:Nn \l__liftarm_connect_stop_value_fp {#1}
+ } ,
+ connect~stop / iterations /. default = 10 ,
+ connect~stop = 1-norm ,
+ contour /. code = { \bool_set:Nn \l__liftarm_contour_bool { \cs:w c_#1_bool\cs_end: } } ,
+ contour /. default = true ,
+ contour = false ,
+ contour~style /. style = { contour_style /. style = {#1} } ,
+ contour_style /. style = {} ,
+ coordinate /. initial = {} ,
+ hole~radius /. initial = 0.3 ,
+ liftarm~style /. style = { liftarm_style /. style = {#1} } ,
+ liftarm_style /. style = {} ,
+ liftarm~thickness /. initial = 0.92 ,
+ mark~holes /. initial = {} ,
+ mark~radius /. code =
+ {
+ \pgfmathparse {#1}
+ \fp_set:Nn \l__liftarm_mark_radius_fp { \pgfmathresult }
+ } ,
+ mark~radius = 1 ,
+ mark~style /. style = { mark_style /. style = {#1} } ,
+ mark_style /. style = {} ,
+ origin /. code =
+ {
+ \pgfmathparse {#1}
+ \fp_set:Nn \l__liftarm_origin_fp { \pgfmathresult }
+ } ,
+ origin = 0 ,
+ scalefactor /. code =
+ {
+ \pgfmathparse {#1}
+ \fp_set:Nn \l__liftarm_scalefactor_fp { \pgfmathresult }
+ } ,
+ scalefactor = 0.5 ,
+ screw~angle /. code =
+ {
+ \pgfmathparse {#1}
+ \fp_set:Nn \l__liftarm_screw_angle_fp { \pgfmathresult }
+ } ,
+ screw~angle = 10 ,
+ screw~holes /. initial = {} ,
+ screw~radius /. code =
+ {
+ \pgfmathparse {#1}
+ \fp_set:Nn \l__liftarm_screw_radius_fp { \pgfmathresult }
+ } ,
+ screw~radius = 0.8 ,
+ screw~style /. style = { screw_style /. style = {#1} } ,
+ screw_style /. style = {} ,
+ trace /. code = { \clist_set:Nn \l__liftarm_trace_clist {#1} } ,
+ type /. is~choice ,
+ type / liftarm /. code = { \str_set:Nn \l__liftarm_type_str { liftarm } } ,
+ type / liftarm /. value~forbidden ,
+ type / line~segment /. code = { \str_set:Nn \l__liftarm_type_str { line~segment } } ,
+ type / line~segment /. value~forbidden ,
+ type = liftarm ,
+ }
+
+\pgfkeys
+ {
+ / liftarm / connect_algorithm /. is~family ,
+ / liftarm / connect_algorithm /. unknown /. code = {} ,
+ / liftarm / connect_algorithm ,
+ coordinate /. initial = {} ,
+ origin /. code =
+ {
+ \pgfmathparse {#1}
+ \fp_set:Nn \l__liftarm_origin_fp { \pgfmathresult }
+ } ,
+ }
+
+%%> \subsection{Functions}
+
+\cs_generate_variant:Nn \clist_if_in:nnTF { enTF }
+\cs_generate_variant:Nn \clist_map_inline:nn { en }
+\cs_generate_variant:Nn \seq_map_indexed_inline:Nn { cn }
+\cs_generate_variant:Nn \tl_build_begin:N { c }
+\cs_generate_variant:Nn \tl_build_gbegin:N { c }
+\cs_generate_variant:Nn \tl_build_end:N { c }
+\cs_generate_variant:Nn \tl_build_gend:N { c }
+\cs_generate_variant:Nn \tl_build_put_right:Nn { ce , cn }
+\cs_generate_variant:Nn \tl_build_gput_right:Nn { ce , cn }
+
+\cs_new_protected:Npn \__liftarm_connect:nnnn #1#2#3#4
+ {
+ \int_incr:N \l__liftarm_connect_count_int
+ \fp_zero_new:c { l__liftarm_connect_angle_\int_use:N \l__liftarm_connect_count_int _fp }
+ \pgfmathparse {#4}
+ \fp_set:cn { l__liftarm_connect_angle_\int_use:N \l__liftarm_connect_count_int _fp } { \pgfmathresult * deg }
+ \fp_set_eq:NN \l__liftarm_origin_fp \l__liftarm_origin_connect_initial_fp
+ \pgfkeys
+ {
+ / liftarm / connect_algorithm ,
+ coordinate = \pgfkeysvalueof { / liftarm / coordinate } ,
+ #1
+ }
+ \seq_if_in:NnTF \l__liftarm_connect_coordinate_seq {#2}
+ {
+ \fp_set_eq:Nc \l__liftarm_connect_start_constant_x_fp { l__liftarm_connect_constant_x_coord_#2_fp }
+ \fp_set_eq:Nc \l__liftarm_connect_start_constant_y_fp { l__liftarm_connect_constant_y_coord_#2_fp }
+ \seq_set_eq:Nc \l__liftarm_connect_start_arg_seq { l__liftarm_connect_arg_coord_#2_seq }
+ \seq_set_eq:Nc \l__liftarm_connect_start_coeff_seq { l__liftarm_connect_coeff_coord_#2_seq }
+ }
+ {
+ \__liftarm_def_coord:n {#2}
+ \fp_set_eq:NN \l__liftarm_connect_start_constant_x_fp \g__liftarm_coord_x_fp
+ \fp_set_eq:NN \l__liftarm_connect_start_constant_y_fp \g__liftarm_coord_y_fp
+ \seq_clear:N \l__liftarm_connect_start_arg_seq
+ \seq_clear:N \l__liftarm_connect_start_coeff_seq
+ }
+ \clist_map_inline:en { \pgfkeysvalueof { / liftarm / connect_algorithm / coordinate } }
+ {
+ \seq_set_split:Nnn \l__liftarm_coordinate_seq { / } {##1}
+ \pgfmathparse { \seq_item:Nn \l__liftarm_coordinate_seq { 1 } }
+ \fp_set:Nn \l__liftarm_length_fp { \pgfmathresult - \l__liftarm_origin_fp }
+ \seq_if_in:NeTF \l__liftarm_connect_coordinate_seq { \seq_item:Nn \l__liftarm_coordinate_seq { 2 } }
+ {
+ \clist_map_inline:nn { x , y }
+ {
+ \int_incr:N \l__liftarm_connect_equation_int
+ \tl_clear_new:c { l__liftarm_connect_F_\int_use:N \l__liftarm_connect_equation_int _tl }
+ \tl_build_begin:c { l__liftarm_connect_F_\int_use:N \l__liftarm_connect_equation_int _tl }
+ \int_step_inline:nn { \l__liftarm_LU_N_int }
+ {
+ \tl_clear_new:c { l__liftarm_connect_Jacobian_\int_use:N \l__liftarm_connect_equation_int _########1_tl }
+ \tl_build_begin:c { l__liftarm_connect_Jacobian_\int_use:N \l__liftarm_connect_equation_int _########1_tl }
+ \tl_build_put_right:cn { l__liftarm_connect_Jacobian_\int_use:N \l__liftarm_connect_equation_int _########1_tl }
+ { 0 }
+ \fp_zero_new:c { l__liftarm_LU_A_\int_use:N \l__liftarm_connect_equation_int _########1_fp }
+ }
+ \tl_build_put_right:ce { l__liftarm_connect_F_\int_use:N \l__liftarm_connect_equation_int _tl }
+ {
+ \fp_use:c { l__liftarm_connect_constant_####1_coord_\seq_item:Nn \l__liftarm_coordinate_seq { 2 }_fp }
+ - \fp_use:c { l__liftarm_connect_start_constant_####1_fp }
+ - \fp_use:N \l__liftarm_length_fp * \cs:w c__liftarm_cos_sin_####1_tl\cs_end:
+ ( \exp_not:N \cs:w l__liftarm_connect_angle_\int_use:N \l__liftarm_connect_count_int _fp \exp_not:N \cs_end: )
+ }
+ \tl_build_put_right:ce
+ {
+ l__liftarm_connect_Jacobian_\int_use:N \l__liftarm_connect_equation_int _
+ \int_use:N \l__liftarm_connect_count_int _tl
+ }
+ {
+ - \fp_use:N \l__liftarm_length_fp * \cs:w c__liftarm_cos_sin_diff_####1_tl\cs_end:
+ ( \exp_not:N \cs:w l__liftarm_connect_angle_\int_use:N \l__liftarm_connect_count_int _fp \exp_not:N \cs_end: )
+ }
+ \seq_map_indexed_inline:cn { l__liftarm_connect_arg_coord_\seq_item:Nn \l__liftarm_coordinate_seq { 2 }_seq }
+ {
+ \tl_build_put_right:ce { l__liftarm_connect_F_\int_use:N \l__liftarm_connect_equation_int _tl }
+ {
+ + \seq_item:cn { l__liftarm_connect_coeff_coord_\seq_item:Nn \l__liftarm_coordinate_seq { 2 }_seq } {########1}
+ * \cs:w c__liftarm_cos_sin_####1_tl\cs_end:
+ ( \exp_not:N \cs:w l__liftarm_connect_angle_########2_fp \exp_not:N \cs_end: )
+ }
+ \tl_build_put_right:ce { l__liftarm_connect_Jacobian_\int_use:N \l__liftarm_connect_equation_int _########2_tl }
+ {
+ + \seq_item:cn { l__liftarm_connect_coeff_coord_\seq_item:Nn \l__liftarm_coordinate_seq { 2 }_seq } {########1}
+ * \cs:w c__liftarm_cos_sin_diff_####1_tl\cs_end:
+ ( \exp_not:N \cs:w l__liftarm_connect_angle_########2_fp \exp_not:N \cs_end: )
+ }
+ }
+ \seq_map_indexed_inline:Nn \l__liftarm_connect_start_arg_seq
+ {
+ \tl_build_put_right:ce { l__liftarm_connect_F_\int_use:N \l__liftarm_connect_equation_int _tl }
+ {
+ - \seq_item:Nn \l__liftarm_connect_start_coeff_seq {########1} * \cs:w c__liftarm_cos_sin_####1_tl\cs_end:
+ ( \exp_not:N \cs:w l__liftarm_connect_angle_########2_fp \exp_not:N \cs_end: )
+ }
+ \tl_build_put_right:ce { l__liftarm_connect_Jacobian_\int_use:N \l__liftarm_connect_equation_int _########2_tl }
+ {
+ - \seq_item:Nn \l__liftarm_connect_start_coeff_seq {########1} * \cs:w c__liftarm_cos_sin_diff_####1_tl\cs_end:
+ ( \exp_not:N \cs:w l__liftarm_connect_angle_########2_fp \exp_not:N \cs_end: )
+ }
+ }
+ \tl_build_end:c { l__liftarm_connect_F_\int_use:N \l__liftarm_connect_equation_int _tl }
+ \int_step_inline:nn { \l__liftarm_LU_N_int }
+ { \tl_build_end:c { l__liftarm_connect_Jacobian_\int_use:N \l__liftarm_connect_equation_int _########1_tl } }
+ }
+ }
+ {
+ \clist_map_inline:nn { x , y }
+ {
+ \fp_zero_new:c { l__liftarm_connect_constant_####1_coord_\seq_item:Nn \l__liftarm_coordinate_seq { 2 }_fp }
+ \fp_set_eq:cc { l__liftarm_connect_constant_####1_coord_\seq_item:Nn \l__liftarm_coordinate_seq { 2 }_fp }
+ { l__liftarm_connect_start_constant_####1_fp }
+ }
+ \clist_map_inline:nn { arg , coeff }
+ {
+ \seq_clear_new:c { l__liftarm_connect_####1_coord_\seq_item:Nn \l__liftarm_coordinate_seq { 2 }_seq }
+ \seq_set_eq:cc { l__liftarm_connect_####1_coord_\seq_item:Nn \l__liftarm_coordinate_seq { 2 }_seq }
+ { l__liftarm_connect_start_####1_seq }
+ }
+ \seq_put_right:ce { l__liftarm_connect_arg_coord_\seq_item:Nn \l__liftarm_coordinate_seq { 2 }_seq }
+ { \int_use:N \l__liftarm_connect_count_int }
+ \seq_put_right:ce { l__liftarm_connect_coeff_coord_\seq_item:Nn \l__liftarm_coordinate_seq { 2 }_seq }
+ { \fp_use:N \l__liftarm_length_fp }
+ \seq_put_right:Ne \l__liftarm_connect_coordinate_seq { \seq_item:Nn \l__liftarm_coordinate_seq { 2 } }
+ }
+ }
+ }
+
+\cs_new_protected:Npn \__liftarm_connect_stop_criterion:
+ {
+ \int_step_inline:nn { \l__liftarm_LU_N_int }
+ { \fp_set:cn { l__liftarm_LU_b_##1_fp } { \cs:w l__liftarm_connect_F_##1_tl\cs_end: } }
+ \str_case:Vn \l__liftarm_connect_stop_type_str
+ {
+ { 1-norm }
+ {
+ \fp_zero:N \l__liftarm_connect_norm_fp
+ \int_step_inline:nn { \l__liftarm_LU_N_int }
+ { \fp_add:Nn \l__liftarm_connect_norm_fp { abs ( \cs:w l__liftarm_LU_b_##1_fp\cs_end: ) } }
+ \bool_set:Nn \l__liftarm_LU_bool
+ { \fp_compare_p:nNn { \l__liftarm_connect_norm_fp } > { \l__liftarm_connect_stop_value_fp } }
+ }
+ { 2-norm }
+ {
+ \fp_zero:N \l__liftarm_connect_norm_fp
+ \int_step_inline:nn { \l__liftarm_LU_N_int }
+ { \fp_add:Nn \l__liftarm_connect_norm_fp { ( \cs:w l__liftarm_LU_b_##1_fp\cs_end: ) ^ 2 } }
+ \bool_set:Nn \l__liftarm_LU_bool
+ { \fp_compare_p:nNn { sqrt ( \l__liftarm_connect_norm_fp ) } > { \l__liftarm_connect_stop_value_fp } }
+ }
+ { iterations }
+ {
+ \bool_set:Nn \l__liftarm_LU_bool
+ { \fp_compare_p:nNn { \l__liftarm_LU_count_int } < { \l__liftarm_connect_stop_value_fp } }
+ }
+ }
+ }
+
+\cs_new_protected:Npn \__liftarm_def_coord:n #1
+ {
+ \path let \p { l__liftarm_coord } = (#1) in
+ [
+ / utils / exec =
+ {
+ \fp_gset:Nn \g__liftarm_coord_x_fp
+ { ( \pgf@yy * \x { l__liftarm_coord } - \pgf@yx * \y { l__liftarm_coord } ) / \l__liftarm_connect_det_fp }
+ \fp_gset:Nn \g__liftarm_coord_y_fp
+ { ( \pgf@xx * \y { l__liftarm_coord } - \pgf@xy * \x { l__liftarm_coord } ) / \l__liftarm_connect_det_fp }
+ }
+ ] ;
+ }
+
+\cs_new_protected:Npn \__liftarm_default:nnnn #1#2#3#4
+ {
+ \pgfmathparse {#3}
+ \fp_set:Nn \l__liftarm_length_fp { \pgfmathresult }
+ \fp_compare:nNnTF { \l__liftarm_length_fp } < { 0 }
+ { \PackageWarning { liftarm } { The~length~( \fp_use:N \l__liftarm_length_fp )~of~the~liftarm~is~smaller~than~0. } }
+ {
+ \pgfmathparse {#4}
+ \fp_set:Nn \l__liftarm_angle_fp { \pgfmathresult }
+ \begin { scope }
+ [
+ shift = { (#2) } ,
+ rotate = \fp_use:N \l__liftarm_angle_fp
+ ]
+ \pgfkeys { / liftarm , #1 }
+ \tl_set:Ne \l__liftarm_color_tl
+ {
+ \cs:w
+ l__liftarm_color_
+ \int_mod:nn { \fp_eval:n { trunc ( \l__liftarm_length_fp , 0 ) } } { \pgfkeysvalueof { / liftarm / color~modulo } }_tl
+ \cs_end:
+ }
+ \begin { scope } [ shift = { ( - \fp_use:N \l__liftarm_origin_fp , 0 ) } ]
+ \str_case:Vn \l__liftarm_type_str
+ {
+ { liftarm }
+ {
+ \pgfmathparse { \pgfkeysvalueof { / liftarm / liftarm~thickness } }
+ \fp_set:Nn \l__liftarm_half_thickness_fp { 0.5 * \l__liftarm_scalefactor_fp * \pgfmathresult }
+ \pgfmathparse { \pgfkeysvalueof { / liftarm / hole~radius } }
+ \fp_set:Nn \l__liftarm_hole_radius_fp { \l__liftarm_scalefactor_fp * \pgfmathresult }
+ \bool_if:NTF \l__liftarm_brick_bool
+ {
+ \tl_build_begin:N \l__liftarm_shape_tl
+ \tl_build_put_right:Ne \l__liftarm_shape_tl
+ {
+ ( -1 , \fp_eval:n { - \l__liftarm_scalefactor_fp * 0.7 } )
+ -- ( -1 , \fp_eval:n { \l__liftarm_scalefactor_fp * 0.5 } )
+ }
+ \int_step_inline:nnn { -1 } { \fp_eval:n { trunc ( \l__liftarm_length_fp , 0 ) } }
+ {
+ \tl_build_put_right:Ne \l__liftarm_shape_tl
+ {
+ -- (
+ \fp_eval:n { ##1 + 0.5 - \l__liftarm_scalefactor_fp * 0.3 } ,
+ \fp_eval:n { \l__liftarm_scalefactor_fp * 0.5 }
+ )
+ --++ ( 0 , \fp_eval:n { \l__liftarm_scalefactor_fp * 0.2 } )
+ --++ ( \fp_eval:n { \l__liftarm_scalefactor_fp * 0.6 } , 0 )
+ --++ ( 0 , \fp_eval:n { - \l__liftarm_scalefactor_fp * 0.2 } )
+ }
+ }
+ \tl_build_put_right:Ne \l__liftarm_shape_tl
+ {
+ -- ( \fp_eval:n { \l__liftarm_length_fp + 1 } , \fp_eval:n { \l__liftarm_scalefactor_fp * 0.5 } )
+ --++ ( 0 , \fp_eval:n { - \l__liftarm_scalefactor_fp * 1.2 } )
+ -- cycle
+ }
+ \tl_build_end:N \l__liftarm_shape_tl
+ }
+ {
+ \tl_set:Ne \l__liftarm_shape_tl
+ {
+ ( 0 , \fp_use:N \l__liftarm_half_thickness_fp )
+ arc
+ [
+ start~angle = 90 ,
+ end~angle = 270 ,
+ radius = \fp_use:N \l__liftarm_half_thickness_fp
+ ]
+ -- ( \fp_use:N \l__liftarm_length_fp , - \fp_use:N \l__liftarm_half_thickness_fp )
+ arc
+ [
+ start~angle = -90 ,
+ end~angle = 90 ,
+ radius = \fp_use:N \l__liftarm_half_thickness_fp
+ ]
+ -- cycle
+ }
+ }
+ \tl_build_begin:N \l__liftarm_holes_tl
+ \int_step_inline:nnn { 0 } { \fp_eval:n { trunc ( \l__liftarm_length_fp , 0 ) } }
+ {
+ \clist_if_in:enTF { \pgfkeysvalueof { / liftarm / axle~holes } } {##1}
+ {
+ \int_step_inline:nn { 4 }
+ {
+ \tl_build_put_right:Ne \l__liftarm_holes_tl
+ {
+ (
+ \fp_eval:n
+ {
+ ##1 + sqrt ( 2 ) * \l__liftarm_hole_radius_fp * sind ( \c__liftarm_axle_hole_angle_fp )
+ * cosd ( ####1 * 90 - 45 )
+ } ,
+ \fp_eval:n { sqrt ( 2 ) * \l__liftarm_hole_radius_fp * sind ( \c__liftarm_axle_hole_angle_fp )
+ * sind ( ####1 * 90 - 45 ) }
+ )
+ -- (
+ \fp_eval:n
+ {
+ ##1
+ + \l__liftarm_hole_radius_fp * cosd ( ####1 * 90 - \c__liftarm_axle_hole_angle_fp )
+ } ,
+ \fp_eval:n { \l__liftarm_hole_radius_fp * sind ( ####1 * 90 - \c__liftarm_axle_hole_angle_fp ) }
+ )
+ arc
+ [
+ start~angle = \fp_eval:n { ####1 * 90 - \c__liftarm_axle_hole_angle_fp } ,
+ end~angle = \fp_eval:n { ####1 * 90 + \c__liftarm_axle_hole_angle_fp } ,
+ radius = \fp_use:N \l__liftarm_hole_radius_fp
+ ]
+ --
+ }
+ }
+ \tl_build_put_right:Nn \l__liftarm_holes_tl { cycle }
+ }
+ {
+ \tl_build_put_right:Ne \l__liftarm_holes_tl
+ { ( ##1 , 0 ) circle [ radius = \fp_use:N \l__liftarm_hole_radius_fp ] }
+ }
+ }
+ \tl_build_end:N \l__liftarm_holes_tl
+ \fill [ \l__liftarm_color_tl , even~odd~rule , / liftarm / liftarm_style ]
+ \l__liftarm_shape_tl \l__liftarm_holes_tl ;
+ \bool_if:NT \l__liftarm_contour_bool
+ { \draw [ \l__liftarm_color_tl ! 75 ! black , ultra~thick , / liftarm / contour_style ] \l__liftarm_shape_tl ; }
+ \clist_map_inline:en { \pgfkeysvalueof { / liftarm / mark~holes } }
+ {
+ \fill [ black , / liftarm / mark_style ]
+ ( {##1} , 0 ) circle [ radius = \fp_eval:n { \l__liftarm_mark_radius_fp * \l__liftarm_hole_radius_fp } ] ;
+ }
+ \clist_map_inline:en { \pgfkeysvalueof { / liftarm / screw~holes } }
+ {
+ \clist_map_inline:nn { -1 , 1 }
+ {
+ \fill [ black , shift = { ( {##1} , 0 ) } , rotate = 45 , / liftarm / screw_style ]
+ (
+ \fp_eval:n { ####1 * \l__liftarm_screw_angle_fp }
+ \c_colon_str
+ \fp_eval:n { \l__liftarm_screw_radius_fp * \l__liftarm_hole_radius_fp }
+ )
+ arc
+ [
+ start~angle = \fp_eval:n { ####1 * \l__liftarm_screw_angle_fp } ,
+ end~angle = \fp_eval:n { ####1 * ( 180 - \l__liftarm_screw_angle_fp ) } ,
+ radius = \fp_eval:n { \l__liftarm_screw_radius_fp * \l__liftarm_hole_radius_fp }
+ ]
+ ;
+ }
+ }
+ }
+ { line~segment }
+ {
+ \draw [ \l__liftarm_color_tl , / liftarm / liftarm_style ] ( 0 , 0 ) -- ( \fp_use:N \l__liftarm_length_fp , 0 ) ;
+ }
+ }
+ \clist_map_inline:en { \pgfkeysvalueof { / liftarm / coordinate } }
+ {
+ \seq_set_split:Nnn \l__liftarm_coordinate_seq { / } {##1}
+ \coordinate ( \seq_item:Nn \l__liftarm_coordinate_seq { 2 } )
+ at ( { \seq_item:Nn \l__liftarm_coordinate_seq { 1 } } , 0 ) ;
+ }
+ \bool_if:NT \l__liftarm_animate_bool
+ {
+ \clist_map_inline:Nn \l__liftarm_trace_clist
+ {
+ \seq_set_split:Nnn \l__liftarm_trace_item_seq { / } {##1}
+ \stepcounter { g__liftarm_animate_frame_number_counter }
+ \tl_build_gput_right:Ne \g__liftarm_animate_frames_trace_tl
+ {
+ \exp_not:n { \newframe \begin } { scope }
+ [ shift = { (#2) } , rotate = \fp_use:N \l__liftarm_angle_fp ]
+ \exp_not:N \begin { scope }
+ [ shift = { ( \fp_eval:n { \seq_item:Nn \l__liftarm_trace_item_seq { 1 } - \l__liftarm_origin_fp } , 0 ) } ]
+ \tl_if_empty:eTF { \seq_item:Nn \l__liftarm_trace_item_seq { 3 } }
+ {
+ \exp_not:N \fill
+ [ black ] ( 0 , 0 ) circle [ radius = \fp_eval:n { \l__liftarm_hole_radius_fp * 2 / 3 } ] ;
+ }
+ { \seq_item:Nn \l__liftarm_trace_item_seq { 3 } }
+ \exp_not:n { \end { scope } \end { scope } }
+ }
+ \tl_if_empty:eTF { \seq_item:Nn \l__liftarm_trace_item_seq { 2 } }
+ {
+ \tl_build_gput_right:ce { g__liftarm_animate_timeline_0_tl }
+ { \theg__liftarm_animate_frame_number_counter x 0 , }
+ }
+ {
+ \pgfmathparse { \use:e { \seq_item:Nn \l__liftarm_trace_item_seq { 2 } } }
+ \tl_build_gput_right:ce { g__liftarm_animate_timeline_\theg__liftarm_animate_step_number_counter _tl }
+ { \theg__liftarm_animate_frame_number_counter x \fp_eval:n { \pgfmathresult } , }
+ }
+ }
+ }
+ \end { scope }
+ \end { scope }
+ }
+ }
+
+\cs_new_protected:Npn \__liftarm_LU_decomposition:
+ {
+ \int_step_inline:nn { \l__liftarm_LU_N_int }
+ {
+ \int_zero_new:c { l__liftarm_LU_P_##1_int }
+ \int_set:cn { l__liftarm_LU_P_##1_int } {##1}
+ }
+ \int_step_inline:nn { \l__liftarm_LU_N_int }
+ {
+ \fp_zero:N \l__liftarm_LU_maxA_fp
+ \int_set:Nn \l__liftarm_LU_imax_int {##1}
+ \int_step_inline:nnn {##1} { \l__liftarm_LU_N_int }
+ {
+ \fp_set:Nn \l__liftarm_LU_tmp_fp { abs ( \cs:w l__liftarm_LU_A_####1_##1_fp\cs_end: ) }
+ \fp_compare:nNnT { \l__liftarm_LU_tmp_fp } > { \l__liftarm_LU_maxA_fp }
+ {
+ \fp_set_eq:NN \l__liftarm_LU_maxA_fp \l__liftarm_LU_tmp_fp
+ \int_set:Nn \l__liftarm_LU_imax_int {####1}
+ }
+ }
+ \int_compare:nNnF { \l__liftarm_LU_imax_int } = {##1}
+ {
+ \int_set_eq:Nc \l__liftarm_LU_j_int { l__liftarm_LU_P_##1_int }
+ \int_set_eq:cc { l__liftarm_LU_P_##1_int } { l__liftarm_LU_P_\int_use:N \l__liftarm_LU_imax_int _int }
+ \int_set_eq:cN { l__liftarm_LU_P_\int_use:N \l__liftarm_LU_imax_int _int } \l__liftarm_LU_j_int
+ \int_step_inline:nn { \l__liftarm_LU_N_int }
+ {
+ \fp_set_eq:Nc \l__liftarm_LU_tmp_fp { l__liftarm_LU_A_##1_####1_fp }
+ \fp_set_eq:cc { l__liftarm_LU_A_##1_####1_fp } { l__liftarm_LU_A_\int_use:N \l__liftarm_LU_imax_int _####1_fp }
+ \fp_set_eq:cN { l__liftarm_LU_A_\int_use:N \l__liftarm_LU_imax_int _####1_fp } \l__liftarm_LU_tmp_fp
+ }
+ }
+ \int_step_inline:nnn { ##1 + 1 } { \l__liftarm_LU_N_int }
+ {
+ \fp_set:cn { l__liftarm_LU_A_####1_##1_fp }
+ { \cs:w l__liftarm_LU_A_####1_##1_fp\cs_end: / \cs:w l__liftarm_LU_A_##1_##1_fp\cs_end: }
+ \int_step_inline:nnn { ##1 + 1 } { \l__liftarm_LU_N_int }
+ {
+ \fp_sub:cn { l__liftarm_LU_A_####1_########1_fp }
+ { \cs:w l__liftarm_LU_A_####1_##1_fp\cs_end: * \cs:w l__liftarm_LU_A_##1_########1_fp\cs_end: }
+ }
+ }
+ }
+ }
+
+\cs_new_protected:Npn \__liftarm_LU_solve:
+ {
+ \int_step_inline:nn { \l__liftarm_LU_N_int }
+ {
+ \fp_zero_new:c { l__liftarm_LU_x_##1_fp }
+ \fp_set_eq:cc { l__liftarm_LU_x_##1_fp } { l__liftarm_LU_b_\int_use:c { l__liftarm_LU_P_##1_int }_fp }
+ \int_step_inline:nn { ##1 - 1 }
+ {
+ \fp_sub:cn { l__liftarm_LU_x_##1_fp }
+ { \cs:w l__liftarm_LU_A_##1_####1_fp\cs_end: * \cs:w l__liftarm_LU_x_####1_fp\cs_end: }
+ }
+ }
+ \int_step_inline:nnnn { \l__liftarm_LU_N_int } { -1 } { 1 }
+ {
+ \int_step_inline:nnn { ##1 + 1 } { \l__liftarm_LU_N_int }
+ {
+ \fp_sub:cn { l__liftarm_LU_x_##1_fp }
+ { \cs:w l__liftarm_LU_A_##1_####1_fp\cs_end: * \cs:w l__liftarm_LU_x_####1_fp\cs_end: }
+ }
+ \fp_set:cn { l__liftarm_LU_x_##1_fp } { \cs:w l__liftarm_LU_x_##1_fp\cs_end: / \cs:w l__liftarm_LU_A_##1_##1_fp\cs_end: }
+ }
+ }
+
+\cs_new:Npn \__liftarm_Mod:nn #1#2
+ {
+ min
+ (
+ Mod
+ (
+ \fp_eval:n { \cs:w l__liftarm_connect_two_#1_option_#2_angle_fp\cs_end: - \cs:w l__liftarm_connect_angle_#1_fp\cs_end: } ,
+ 360
+ ) ,
+ Mod
+ (
+ \fp_eval:n { \cs:w l__liftarm_connect_angle_#1_fp\cs_end: - \cs:w l__liftarm_connect_two_#1_option_#2_angle_fp\cs_end: } ,
+ 360
+ )
+ )
+ }
+
+%%> \subsection{Document commands and environment}
+
+\NewDocumentCommand \liftarm { O {} m m m }
+ { \__liftarm_default:nnnn {#1} {#2} {#3} {#4} }
+
+\NewDocumentCommand \liftarmanimate { O {} m m m }
+ {
+ \bool_set_true:N \l__liftarm_animate_bool
+ \stepcounter { g__liftarm_animate_number_of_animation_counter }
+ \setcounter { g__liftarm_animate_number_of_steps_counter } { -1 }
+ \tl_build_gbegin:N \g__liftarm_animate_frames_tl
+ \tl_build_gbegin:N \g__liftarm_animate_frames_trace_tl
+ \setcounter { g__liftarm_animate_step_number_counter } { -1 }
+ \foreach \l__liftarm_animate_value_tl in {#3}
+ {
+ \stepcounter { g__liftarm_animate_number_of_steps_counter }
+ \tl_build_gput_right:Ne \g__liftarm_animate_frames_tl
+ {
+ \exp_not:n { \newframe \stepcounter { g__liftarm_animate_step_number_counter } #4 }
+ { \l__liftarm_animate_value_tl }
+ }
+ }
+ \tl_build_gend:N \g__liftarm_animate_frames_tl
+ \int_step_inline:nnn { 0 } { \theg__liftarm_animate_number_of_steps_counter }
+ {
+ \tl_clear_new:c { g__liftarm_animate_timeline_##1_tl }
+ \tl_build_gbegin:c { g__liftarm_animate_timeline_##1_tl }
+ }
+ \tl_build_gput_right:cn { g__liftarm_animate_timeline_0_tl } { c , }
+ \setcounter { g__liftarm_animate_frame_number_counter } { \theg__liftarm_animate_number_of_steps_counter }
+ \file_if_exist:nF { \c_sys_jobname_str \theg__liftarm_animate_number_of_animation_counter . tln }
+ {
+ \iow_open:Nn \g__liftarm_animate_write_timeline_iow
+ { \c_sys_jobname_str \theg__liftarm_animate_number_of_animation_counter . tln }
+ \iow_now:Ne \g__liftarm_animate_write_timeline_iow { \c_colon_str \c_colon_str c , 0 }
+ \iow_close:N \g__liftarm_animate_write_timeline_iow
+ }
+ \begin { animateinline } [ #1 , timeline = \c_sys_jobname_str \theg__liftarm_animate_number_of_animation_counter . tln ] {#2}
+ \tl_tail:N \g__liftarm_animate_frames_tl%remove the first \newframe
+ \tl_build_gend:N \g__liftarm_animate_frames_trace_tl
+ \g__liftarm_animate_frames_trace_tl
+ \end { animateinline }
+ \iow_open:Nn \g__liftarm_animate_write_timeline_iow { \c_sys_jobname_str \theg__liftarm_animate_number_of_animation_counter . tln }
+ \int_step_inline:nnn { 0 } { \theg__liftarm_animate_number_of_steps_counter }
+ {
+ \tl_build_gend:c { g__liftarm_animate_timeline_##1_tl }
+ \iow_now:Ne \g__liftarm_animate_write_timeline_iow
+ { \c_colon_str \c_colon_str \cs:w g__liftarm_animate_timeline_##1_tl\cs_end: ##1 }
+ }
+ \iow_close:N \g__liftarm_animate_write_timeline_iow
+ \bool_set_false:N \l__liftarm_animate_bool
+ }
+
+\NewDocumentCommand \liftarmconstruct { m }
+ {
+ \tl_gput_right:Nn \g__liftarm_construct_tl {#1}
+ \g__liftarm_construct_tl
+ }
+
+\NewDocumentCommand \liftarmconstructclear {}
+ { \tl_gclear:N \g__liftarm_construct_tl }
+
+\NewDocumentEnvironment { liftarmconnect } { O {} +b }
+ {
+ \pgfkeys { / liftarm , #1 }
+ %verify that the contents consists only of commands \liftarm because the contents of this environment are processed several times
+ \DeclareExpandableDocumentCommand \liftarm { O {} m m m } {}%expandable for usage in \tl_set:Ne
+ \tl_set:Ne \l__liftarm_tmp_tl {#2}
+ \tl_remove_all:Nn \l__liftarm_tmp_tl { \par }
+ \tl_if_blank:VF \l__liftarm_tmp_tl
+ { \PackageError { liftarm } { The~environment~liftarmconnect~should~only~consist~of~commands~\protect \liftarm } {} }
+ \int_zero:N \l__liftarm_LU_N_int
+ \RenewDocumentCommand \liftarm { O {} m m m } { \int_incr:N \l__liftarm_LU_N_int }
+ #2
+ \fp_set:Nn \l__liftarm_connect_det_fp { \pgf@yy * \pgf@xx - \pgf@yx * \pgf@xy }
+ \int_case:nnF { \l__liftarm_LU_N_int }
+ {
+ { 0 }
+ {}
+ { 1 }
+ {
+ \RenewDocumentCommand \liftarm { O {} m m m }
+ { \__liftarm_default:nnnn {##1} {##2} {##3} {##4} }
+ }
+ { 2 }
+ {
+ \int_zero:N \l__liftarm_connect_count_int
+ \int_zero:N \l__liftarm_connect_equation_int
+ \seq_clear:N \l__liftarm_connect_coordinate_seq
+ \fp_set_eq:NN \l__liftarm_origin_connect_initial_fp \l__liftarm_origin_fp
+ \RenewDocumentCommand \liftarm { O {} m m m }
+ {
+ \int_incr:N \l__liftarm_connect_count_int
+ \fp_zero_new:c { l__liftarm_connect_angle_\int_use:N \l__liftarm_connect_count_int _fp }
+ \pgfmathparse {##4}
+ \fp_set:cn { l__liftarm_connect_angle_\int_use:N \l__liftarm_connect_count_int _fp } { \pgfmathresult }
+ \fp_set_eq:NN \l__liftarm_origin_fp \l__liftarm_origin_connect_initial_fp
+ \pgfkeys
+ {
+ / liftarm / connect_algorithm ,
+ coordinate = \pgfkeysvalueof { / liftarm / coordinate } ,
+ ##1
+ }
+ \__liftarm_def_coord:n {##2}
+ \fp_set_eq:cN { l__liftarm_connect_two_\int_to_Alph:n { \l__liftarm_connect_count_int }_x_fp } \g__liftarm_coord_x_fp
+ \fp_set_eq:cN { l__liftarm_connect_two_\int_to_Alph:n { \l__liftarm_connect_count_int }_y_fp } \g__liftarm_coord_y_fp
+ \int_compare:nNnTF { \l__liftarm_connect_count_int } = { 1 }
+ {
+ \clist_map_inline:en { \pgfkeysvalueof { / liftarm / connect_algorithm / coordinate } }
+ {
+ \seq_set_split:Nnn \l__liftarm_coordinate_seq { / } {####1}
+ \tl_clear_new:c { l__liftarm_connect_two_A_length_coord_\seq_item:Nn \l__liftarm_coordinate_seq { 2 }_tl }
+ \tl_set:ce { l__liftarm_connect_two_A_length_coord_\seq_item:Nn \l__liftarm_coordinate_seq { 2 }_tl }
+ { \seq_item:Nn \l__liftarm_coordinate_seq { 1 } - \fp_use:N \l__liftarm_origin_fp }
+ \seq_put_right:Ne \l__liftarm_connect_coordinate_seq { \seq_item:Nn \l__liftarm_coordinate_seq { 2 } }
+ }
+ }
+ {
+ \clist_map_inline:en { \pgfkeysvalueof { / liftarm / connect_algorithm / coordinate } }
+ {
+ \seq_set_split:Nnn \l__liftarm_coordinate_seq { / } {####1}
+ \seq_if_in:NeT \l__liftarm_connect_coordinate_seq { \seq_item:Nn \l__liftarm_coordinate_seq { 2 } }
+ {
+ \int_incr:N \l__liftarm_connect_equation_int
+ \int_compare:nNnT { \l__liftarm_connect_equation_int } > { 1 }
+ { \PackageError { liftarm } { There~are~too~many~conditions~for~2~liftarms } {} }
+ \pgfmathparse
+ { \cs:w l__liftarm_connect_two_A_length_coord_\seq_item:Nn \l__liftarm_coordinate_seq { 2 }_tl\cs_end: }
+ \fp_set:Nn \l__liftarm_connect_two_A_length_fp { \pgfmathresult }
+ \pgfmathparse { \seq_item:Nn \l__liftarm_coordinate_seq { 1 } }
+ \fp_set:Nn \l__liftarm_connect_two_B_length_fp { \pgfmathresult - \l__liftarm_origin_fp }
+ }
+ }
+ }
+ }
+ #2
+ \fp_set:Nn \l__liftarm_connect_two_length_fp
+ {
+ sqrt (
+ ( \l__liftarm_connect_two_A_x_fp - \l__liftarm_connect_two_B_x_fp ) ^ 2
+ + ( \l__liftarm_connect_two_A_y_fp - \l__liftarm_connect_two_B_y_fp ) ^ 2
+ )
+ }
+ \fp_set:Nn \l__liftarm_connect_two_angle_fp
+ {
+ atand (
+ \l__liftarm_connect_two_B_y_fp - \l__liftarm_connect_two_A_y_fp ,
+ \l__liftarm_connect_two_B_x_fp - \l__liftarm_connect_two_A_x_fp
+ )
+ }
+ \fp_set:Nn \l__liftarm_connect_two_A_angle_fp
+ {
+ acosd (
+ (
+ ( \l__liftarm_connect_two_A_length_fp ) ^ 2 + ( \l__liftarm_connect_two_length_fp ) ^ 2
+ - ( \l__liftarm_connect_two_B_length_fp ) ^ 2
+ ) / ( 2 * \l__liftarm_connect_two_A_length_fp * \l__liftarm_connect_two_length_fp )
+ )
+ }
+ \fp_set:Nn \l__liftarm_connect_two_B_angle_fp
+ {
+ acosd (
+ (
+ ( \l__liftarm_connect_two_B_length_fp ) ^ 2 + ( \l__liftarm_connect_two_length_fp ) ^ 2
+ - ( \l__liftarm_connect_two_A_length_fp ) ^ 2
+ ) / ( 2 * \l__liftarm_connect_two_B_length_fp * \l__liftarm_connect_two_length_fp )
+ )
+ }
+ \fp_set:cn { l__liftarm_connect_two_1_option_0_angle_fp }
+ { \l__liftarm_connect_two_angle_fp + \l__liftarm_connect_two_A_angle_fp }
+ \fp_set:cn { l__liftarm_connect_two_1_option_1_angle_fp }
+ { \l__liftarm_connect_two_angle_fp - \l__liftarm_connect_two_A_angle_fp }
+ \fp_set:cn { l__liftarm_connect_two_2_option_0_angle_fp }
+ { 180 + \l__liftarm_connect_two_angle_fp - \l__liftarm_connect_two_B_angle_fp }
+ \fp_set:cn { l__liftarm_connect_two_2_option_1_angle_fp }
+ { 180 + \l__liftarm_connect_two_angle_fp + \l__liftarm_connect_two_B_angle_fp }
+ \pgfmathparse
+ {
+ \__liftarm_Mod:nn { 1 } { 0 } + \__liftarm_Mod:nn { 2 } { 0 }
+ >
+ \__liftarm_Mod:nn { 1 } { 1 } + \__liftarm_Mod:nn { 2 } { 1 }
+ }
+ \tl_set:Ne \l__liftarm_tmp_tl { \pgfmathresult }
+ \int_zero:N \l__liftarm_connect_count_int
+ \RenewDocumentCommand \liftarm { O {} m m m }
+ {
+ \int_incr:N \l__liftarm_connect_count_int
+ \__liftarm_default:nnnn {##1} {##2} {##3}
+ { \fp_use:c { l__liftarm_connect_two_\int_use:N \l__liftarm_connect_count_int _option_\l__liftarm_tmp_tl _angle_fp } }
+ }
+ }
+ }
+ {
+ \int_zero:N \l__liftarm_connect_count_int
+ \int_zero:N \l__liftarm_connect_equation_int
+ \seq_clear:N \l__liftarm_connect_coordinate_seq
+ \fp_set_eq:NN \l__liftarm_origin_connect_initial_fp \l__liftarm_origin_fp
+ \RenewDocumentCommand \liftarm { O {} m m m } { \__liftarm_connect:nnnn {##1} {##2} {##3} {##4} }
+ #2
+ \int_compare:nNnF { \l__liftarm_connect_equation_int } = { \l__liftarm_LU_N_int }
+ {
+ \PackageError { liftarm }
+ {
+ The~Jacobian~matrix~is~not~square~
+ (the~size~is~\int_use:N \l__liftarm_connect_equation_int \space by~\int_use:N \l__liftarm_LU_N_int )
+ } {}
+ }
+ \int_zero:N \l__liftarm_LU_count_int
+ \int_step_inline:nn { \l__liftarm_LU_N_int }
+ { \fp_zero_new:c { l__liftarm_LU_b_##1_fp } }
+ \__liftarm_connect_stop_criterion:
+ \bool_while_do:Nn \l__liftarm_LU_bool
+ {
+ \int_step_inline:nn { \l__liftarm_LU_N_int }
+ {
+ \int_step_inline:nn { \l__liftarm_LU_N_int }
+ { \fp_set:cn { l__liftarm_LU_A_##1_####1_fp } { \cs:w l__liftarm_connect_Jacobian_##1_####1_tl\cs_end: } }
+ }
+ \__liftarm_LU_decomposition:
+ \__liftarm_LU_solve:
+ \int_step_inline:nn { \l__liftarm_LU_N_int }
+ { \fp_sub:cn { l__liftarm_connect_angle_##1_fp } { \cs:w l__liftarm_LU_x_##1_fp\cs_end: } }
+ \int_incr:N \l__liftarm_LU_count_int
+ \__liftarm_connect_stop_criterion:
+ }
+ \int_zero:N \l__liftarm_connect_count_int
+ \RenewDocumentCommand \liftarm { O {} m m m }
+ {
+ \int_incr:N \l__liftarm_connect_count_int
+ \__liftarm_default:nnnn {##1} {##2} {##3}
+ { \fp_eval:n { \cs:w l__liftarm_connect_angle_\int_use:N \l__liftarm_connect_count_int _fp\cs_end: / deg } }
+ }
+ }
+ #2
+ }
+ {}
-\gappto\liftarm@constructfigure{#3}
-\expandafter\liftarm@construction\expandafter[\liftarm@constructoptions]{#1}
-}
-\newenvironment{liftarmconstruction}[1][]{\def\liftarm@constructoptions{#1}\def\liftarm@constructfigure{}\begin{enumerate}}{\end{enumerate}}
-\newcounter{liftarm@animatenumberofsteps}
-\newcounter{liftarm@animateframenumber}
-\newcounter{liftarm@animatestepnumber}
-\newwrite\liftarm@animatewritetimeline
-\newcounter{liftarm@animatenumberofanimation}
-\newcommand{\liftarmanimate}[4][]{%
-\liftarm@animatetrue%
-\addtocounter{liftarm@animatenumberofanimation}{1}%
-\setcounter{liftarm@animatenumberofsteps}{-1}%
-\gdef\liftarm@animateframes{}%
-\gdef\liftarm@animateframestrace{}%
-\setcounter{liftarm@animatestepnumber}{-1}%
-\foreach\liftarm@n in {#3}{%
-\addtocounter{liftarm@animatenumberofsteps}{1}%
-\gappto\liftarm@animateframes{\newframe\addtocounter{liftarm@animatestepnumber}{1}#4}%
-\xappto\liftarm@animateframes{{\liftarm@n}}%
-}%
-\patchcmd{\liftarm@animateframes}{\newframe}{}{}{}%
-\csgdef{liftarm@animatetimeline0}{c,}%
-\foreach\liftarm@n in {1,...,\theliftarm@animatenumberofsteps}{%
-\csgdef{liftarm@animatetimeline\liftarm@n}{}%
-}%
-\setcounter{liftarm@animateframenumber}{\theliftarm@animatenumberofsteps}%
-\IfFileExists{\jobname\theliftarm@animatenumberofanimation.tln}{}{%
-\immediate\openout\liftarm@animatewritetimeline=\jobname\theliftarm@animatenumberofanimation.tln%
-\immediate\write\liftarm@animatewritetimeline{::c,0}%
-\immediate\closeout\liftarm@animatewritetimeline%
-}%
-\begin{animateinline}[#1,timeline=\jobname\theliftarm@animatenumberofanimation.tln]{#2}%
-\liftarm@animateframes%
-\liftarm@animateframestrace%
-\end{animateinline}%
-\immediate\openout\liftarm@animatewritetimeline=\jobname\theliftarm@animatenumberofanimation.tln%
-\foreach\liftarm@n in {0,...,\theliftarm@animatenumberofsteps}{%
-\immediate\write\liftarm@animatewritetimeline{::\csname liftarm@animatetimeline\liftarm@n\endcsname\liftarm@n}%
-}%
-\immediate\closeout\liftarm@animatewritetimeline%
-\liftarm@animatefalse%
-}
\endinput \ No newline at end of file
diff --git a/graphics/pgf/contrib/liftarm/liftarm.tex b/graphics/pgf/contrib/liftarm/liftarm.tex
index b45bb85793..a7719fc926 100644
--- a/graphics/pgf/contrib/liftarm/liftarm.tex
+++ b/graphics/pgf/contrib/liftarm/liftarm.tex
@@ -1,12 +1,12 @@
%% liftarm.tex
-%% Copyright 2022 Matthias Floré
+%% Copyright 2022-2024 Matthias Floré
%
% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
+% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
+% and version 1.3c or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
@@ -20,37 +20,42 @@
\usepackage{graphicx}
\usepackage[a4paper,left=2.25cm,right=2.25cm,top=2.5cm,bottom=2.5cm,nohead]{geometry}
\usepackage{parskip}
+\usepackage{iftex}
+\ifluatex
+\else
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
+\fi
\usepackage{mathtools}
\usepackage{amssymb}
\allowdisplaybreaks
-\usepackage{multicol}
+\usepackage{pdflscape}
\usepackage{animate}
\usepackage{liftarm}
\input{pgfmanual-en-macros.tex}
-\usepackage[page]{totalcount}
+\usepackage{codehigh}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
-\cfoot{\iftotalpages\begin{tikzpicture}\liftarm[mark holes=\thepage-1]{0,0}{\totalpages-2}{0}\end{tikzpicture}\fi}%\liftarm{0,0}{\thepage}{0}
\fancyhead{}
+\fancyfoot[C]{\IfRefUndefinedExpandable{Thesourcecode}{}{\begin{tikzpicture}\liftarm[mark holes=\thepage -1]{0,0}{\getpagerefnumber{Thesourcecode}-2}{0}\end{tikzpicture}}}%\liftarm{0,0}{\thepage}{0}
+\usepackage[nottoc]{tocbibind}
\usepackage{imakeidx}
\makeindex[program=makeindex,columns=2,intoc=true]
\indexsetup{othercode={\thispagestyle{fancy}}}
\usepackage[linktoc=all,pdfstartview=FitH,colorlinks=true,linkcolor=Mahogany,citecolor=ForestGreen,urlcolor=MidnightBlue,bookmarksnumbered=true]{hyperref}
-\hypersetup{pdftitle={The liftarm package},pdfauthor={Matthias Flor\'e},pdfsubject={Manual},pdfkeywords={liftarm}}
+\hypersetup{pdftitle={The liftarm package},pdfauthor={Matthias Floré},pdfsubject={Manual},pdfkeywords={liftarm}}
\setcounter{tocdepth}{2}
\setcounter{secnumdepth}{2}
\DeclareMathOperator{\atan}{atan}
-\title{The \texttt{liftarm} package\\[12pt]\large Draw liftarms with \tikzname}
-\author{Matthias Flor\'e}
-\date{Version 2.0 (2022/04/07)}%\\[12pt]
+\title{The \texttt{liftarm} package\\[12pt]\large Geometric constructions with liftarms using \tikzname{} and \LaTeX3}
+\author{Matthias Floré}
+\date{Version 3.0 (2024/05/20)}%\\[12pt]
\begin{document}
\maketitle
\thispagestyle{fancy}
\begin{abstract}
-\noindent This package is based on the package |tikz| (see \cite{TtTaPGFp}) and can be used to draw liftarms with \tikzname. It provides several options for the appearance of the liftarms, a command which connects two liftarms, an environment to describe a construction and a method to animate a construction with one or more traces.% This is the manual for version .
+\noindent This package is based on the package |tikz| (see \cite{TtTaPGFp}) and can be used to draw geometric constructions with liftarms using \tikzname. There are several options for the appearance of the liftarms. It provides an environment to connect multiple liftarms using the Newton-Raphson method and LU decomposition. It also provides an environment to describe a construction and a method to animate a construction with one or more traces.% This is the manual for version .
\end{abstract}
\tableofcontents
\section{Usage}
@@ -58,7 +63,7 @@ The package |liftarm| can be used by putting the following in the preamble.
\begin{codeexample}[code only]
\usepackage{liftarm}
\end{codeexample}
-The package |liftarm| loads the packages |etoolbox|, |xcolor| with the option |dvipsnames|, |tikz| and the \tikzname{} library |calc|. Since |xcolor| is loaded with the option |dvipsnames|, packages such as |pgfplots| and |tcolorbox| must be loaded \emph{after} |liftarm|.
+The package |liftarm| loads the package |xcolor| with the option |dvipsnames|, the package |tikz| and the \tikzname{} library |calc|. Since |xcolor| is loaded with the option |dvipsnames|, packages such as |pgfplots| and |tcolorbox| must be loaded \emph{after} |liftarm|.
\section{Drawing liftarms}
\begin{command}{\liftarm\opt{\oarg{options}}\marg{point}\marg{length}\marg{angle}}
This command can be placed inside a |tikzpicture| environment. It draws a liftarm of \meta{length} starting at \meta{point}. The angle between the liftarm and the $x$-axis can be specified by \meta{angle} in degrees. The distance between the holes is $1$.
@@ -84,53 +89,25 @@ If true, a brick will be drawn instead of a liftarm.
\end{tikzpicture}
\end{codeexample}
\end{key}
-\begin{key}{/liftarm/color=\marg{name}}
-This key defines the color of the liftarm. The color can also be specified without key.
-\begin{codeexample}[width=10cm]
-\begin{tikzpicture}
-\liftarm[color=Green]{0,1}{4}{0}
-\liftarm[Blue]{0,2}{3}{0}
-\end{tikzpicture}
-\end{codeexample}
-\end{key}
-\begin{key}{/liftarm/color 0=\marg{name} (initially Gray)}
-\end{key}
-\begin{key}{/liftarm/color 1=\marg{name} (initially darkgray)}
-\end{key}
-\begin{key}{/liftarm/color 2=\marg{name} (initially Yellow)}
-\end{key}
-\begin{key}{/liftarm/color 3=\marg{name} (initially Orange)}
-\end{key}
-\begin{key}{/liftarm/color 4=\marg{name} (initially Red)}
-\end{key}
-\begin{key}{/liftarm/color 5=\marg{name} (initially Green)}
-\end{key}
-\begin{key}{/liftarm/color 6=\marg{name} (initially Blue)}
-\end{key}
-\begin{key}{/liftarm/color 7=\marg{name} (initially Brown)}
-These keys define the colors of the liftarms which have as their length the number following |color|.
+\begin{key}{/liftarm/color=\marg{number}\marg{color}}
+This key defines the color of liftarms of length \meta{number}.
+
+Initially, the colors |Gray|, |darkgray|, |Yellow|, |Orange|, |Red|, |Green|, |Blue| and |Brown| are defined for respectively the lengths |0| till |7|.
\end{key}
\begin{key}{/liftarm/color modulo=\marg{number} (initially 8)}
-The default colors of the liftarms are determined by computing the length of the liftarm modulo the value of this key and selecting the color from the previous keys.
-\begin{codeexample}[width=10cm]
-\begin{tikzpicture}[scale=0.5]
-\foreach\n in {0,...,16}{
- \liftarm{0,-\n}{\n}{0}
-}
-\end{tikzpicture}
-\end{codeexample}
+The default colors of the liftarms are determined by computing the length of the liftarm modulo the value of this key and selecting the color defined by the key |color|.
\begin{codeexample}[width=10cm]
\begin{tikzpicture}[scale=0.5]
\pgfkeys{
- /liftarm,
- color 0=Yellow,
- color 1=Red,
- color 2=Green,
- color 3=Blue,
- color modulo=4
+ /liftarm,
+ color={0}{Yellow},
+ color={1}{Red},
+ color={2}{Green},
+ color={3}{Blue},
+ color modulo=4
}
\foreach\n in {0,...,8}{
- \liftarm{0,-\n}{\n}{0}
+ \liftarm{0,-\n}{\n}{0}
}
\end{tikzpicture}
\end{codeexample}
@@ -144,12 +121,28 @@ If true, a contour will be drawn around the liftarm.
\end{tikzpicture}
\end{codeexample}
\end{key}
-\begin{key}{/liftarm/coordinate=\marg{number 1/name 1}\dots}
+\begin{stylekey}{/liftarm/contour style=\marg{options} (initially \normalfont empty)}
+The style of the contour is determined as follows. First, the color is defined as \meta{initial color of the liftarm}|!75!black|. Then the option |ultra thick| is added. Thereafter, the style of the key |contour style| is added.
+
+The style |contour style| only applies to the border of the liftarm. The style |liftarm style| also applies to the holes of the liftarm.
+\begin{codeexample}[width=10cm]
+\begin{tikzpicture}
+\liftarm[
+ contour,
+ contour style={dashed,black}
+]{0,1}{4}{0}
+\liftarm[
+ liftarm style={draw=black,thick}
+]{0,2}{4}{0}
+\end{tikzpicture}
+\end{codeexample}
+\end{stylekey}
+\begin{key}{/liftarm/coordinate=\marg{number 1/name 1,\dots}}
This key defines coordinates with name \meta{name i} at hole \meta{number i} of the liftarm.
\begin{codeexample}[width=10cm]
\begin{tikzpicture}
\liftarm[
- coordinate={1/A,3/B}
+ coordinate={1/A,3/B}
]{0,1}{6}{40}
\liftarm{A}{3}{0}
\liftarm{B}{2}{180}
@@ -164,40 +157,46 @@ The \meta{value} of this key, multiplied with the \meta{value} of the key |scale
\end{tikzpicture}
\end{codeexample}
\end{key}
+\begin{stylekey}{/liftarm/liftarm style=\marg{options} (initially \normalfont empty)}
+The style of the liftarm is determined as follows. First, the color is defined by the keys |color| and |color modulo|. Thereafter, the style of the key |liftarm style| is added.
+\end{stylekey}
\begin{key}{/liftarm/liftarm thickness=\marg{value} (initially 0.92)}
The \meta{value} of this key, multiplied with the \meta{value} of the key |scalefactor| defines the thickness of the liftarm.
\begin{codeexample}[width=10cm]
\begin{tikzpicture}
\liftarm[
- hole radius=0.1,
- liftarm thickness=0.3
+ hole radius=0.1,
+ liftarm thickness=0.3
]{0,0}{5}{0}
\end{tikzpicture}
\end{codeexample}
\end{key}
-\begin{key}{/liftarm/mark color=\marg{name} (initially Black)}
-\end{key}
\begin{key}{/liftarm/mark holes=\marg{values}}
-The key |mark holes| defines the holes in the liftarm which will be marked. The key |mark color| defines the color of these marks.
+\end{key}
+\begin{key}{/liftarm/mark radius=\marg{factor} (initially 1)}
+\end{key}
+\begin{stylekey}{/liftarm/mark style=\marg{options} (initially \normalfont empty)}
+The key |mark holes| defines the holes in the liftarm which will be marked. The radius is the product of the \meta{factor} given to the key |mark radius| and the value of the key |hole radius|. The style of these marks is determined as follows. First, the color is set to |black|. Thereafter, the style of the key |mark style| is added.
\begin{codeexample}[width=10cm]
\begin{tikzpicture}
\liftarm[
- mark holes={0,1,3}
+ mark holes={0,1,3}
]{0,0}{5}{0}
\liftarm[
- mark holes={1,2,4},
- mark color=Blue
+ mark holes={1,2,4},
+ mark radius=2/3,
+ mark style=Blue
]{0,1}{4}{0}
\end{tikzpicture}
\end{codeexample}
-\end{key}
+\end{stylekey}
\begin{key}{/liftarm/origin=\marg{number} (initially 0)}
This key defines the number of the hole which will be placed at the coordinate given as argument to the liftarm.
\begin{codeexample}[width=10cm]
\begin{tikzpicture}
\liftarm{-2,0}{4}{0}
-\liftarm[origin=1]{0,0}{6}{30}
-\liftarm[origin=2]{0,0}{5}{60}
+\liftarm[origin=1]{0,0}{3}{30}
+\liftarm[origin=2]{0,0}{5}{-20}
\end{tikzpicture}
\end{codeexample}
\end{key}
@@ -210,216 +209,254 @@ The \meta{value} of this key defines the factor which scales the thickness of th
\end{tikzpicture}
\end{codeexample}
\end{key}
-\begin{key}{/liftarm/screw color=\marg{name} (initially Black)}
+\begin{key}{/liftarm/screw angle=\marg{angle} (initially 10)}
\end{key}
\begin{key}{/liftarm/screw holes=\marg{values}}
\end{key}
-\begin{key}{/liftarm/screw holes angle=\marg{angle} (initially 45)}
-The key |screw holes| defines the holes in the liftarm where a screw will be drawn. The key |screw color| defines the color of these screws. The key |screw holes angle| defines the angle in degrees around which the screws are drawn.
+\begin{key}{/liftarm/screw radius=\marg{factor} (initially 0.8)}
+\end{key}
+\begin{stylekey}{/liftarm/screw style=\marg{options} (initially \normalfont empty)}
+The key |screw holes| defines the holes in the liftarm where a screw will be drawn. The angle of these screws is determined by the key |screw angle| which is an angle in degrees. The radius is the product of the \meta{factor} given to the key |screw radius| and the value of the key |hole radius|. The style of these screws is determined as follows. First, the color is set to |black|. Then the option |rotate=45| is added. Thereafter, the style of the key |screw style| is added.
\begin{codeexample}[width=10cm]
\begin{tikzpicture}
\liftarm[
- screw holes={0,1,3}
+ screw holes={0,1,3}
]{0,0}{5}{0}
\liftarm[
- screw holes={1,2,4},
- screw color=Blue,
- screw holes angle=0
+ screw angle=15,
+ screw holes={1,2,4},
+ screw radius=0.7,
+ screw style={Blue,rotate=-45}
]{0,1}{4}{0}
\end{tikzpicture}
\end{codeexample}
+\end{stylekey}
+\begin{key}{/liftarm/type=\mchoice{liftarm,line segment} (initially liftarm)}
+\begin{description}
+\item[\texttt{liftarm}] In this case, the command |\liftarm| draws a liftarm.
+\item[\texttt{line segment}] In this case, the command |\liftarm| draws a line segment.
+\end{description}
\end{key}
\end{command}
\section{Connecting liftarms}
-\begin{command}{\liftarmconnect\opt{\oarg{options}}\marg{point1}\marg{length1}\marg{point2}\marg{length2}}
-This command can be placed inside a |tikzpicture| environment. It draws a liftarm of \meta{length1} starting at \meta{point1} and a liftarm of \meta{length2} starting at \meta{point2} in such a way that their last holes have the same coordinate in case that such a point exists. If such a point does not exist then nothing is drawn. In case that there exist 2 such points then this point is chosen counterclockwise. In that case, the other configuration of the 2 liftarms can be obtained by simply swapping \marg{point1}\marg{length1} and \marg{point2}\marg{length2}. The keys for the command |\liftarm| can be given to the \meta{options}. In this case these keys will be passed to both liftarms.
-\begin{codeexample}[width=9cm]
+\begin{environment}{{liftarmconnect}\opt{\oarg{options}}}
+This environment can be placed inside a |tikzpicture| environment. It can be used to connect liftarms where the angles are computed automatically. The \meta{options} can be a list of keys from the liftarm key family.
+
+The contents should consist only of commands |\liftarm| and spaces.
+
+The conditions to connect the liftarms are specified by the key |coordinate|. The resulting equations are determined automatically by the environment |liftarmconnect|. The number of liftarms needs to be equal to the number of equations. In the example below, there are 2 liftarms and 1 condition specified with the coordinate |A| resulting in 2 equations.
+\begin{codeexample}[width=10cm]
\begin{tikzpicture}
-\coordinate (A) at (0,0);
-\coordinate (B) at (4,2);
-\coordinate (C) at (1,-3);
-\coordinate (D) at (5,-1);
-\liftarmconnect[Yellow]{A}{2}{B}{3}
-\liftarmconnect[Red]{B}{3}{A}{2}
-\liftarmconnect[Green]{C}{3}{D}{2}
-\liftarmconnect[Blue]{D}{2}{C}{3}
-\foreach\coord in {A,B,C,D}{
- \node at (\coord) {{\small $\coord$}};
-}
+\coordinate (X) at (5,0);
+\begin{liftarmconnect}
+ \liftarm[coordinate=4/A]{0,0}{4}{60}
+ \liftarm[coordinate=4/A]{X}{4}{120}
+\end{liftarmconnect}
\end{tikzpicture}
\end{codeexample}
-Additionally, the \meta{options} can be given with the following keys.
-\begin{key}{/liftarm/connect coordinate=\marg{name}}
-This key defines a coordinate with name \meta{name} at the connection point of both liftarms.
-\begin{codeexample}[width=10cm]
+The similar code below does not work because the coordinate |A| is used as the starting point of the second liftarm but is unknown since it is used in a condition for the first liftarm and furthermore, there is no liftarm to complement the condition involving |A| in the first liftarm.
+\begin{codeexample}[code only]
\begin{tikzpicture}
-\liftarm{-3,0}{5}{0}
-\liftarmconnect[
- connect coordinate=A
-]{2,0}{2}{-2,0}{3}
-\liftarm{A}{4}{180}
+\coordinate (X) at (5,0);
+\begin{liftarmconnect}
+ \liftarm[coordinate=4/A]{0,0}{4}{60}
+ \liftarm[coordinate=4/X]{A}{4}{-60}
+\end{liftarmconnect}
\end{tikzpicture}
\end{codeexample}
+If the environment |liftarmconnect| consists of 2 liftarms then the law of cosines is used to compute the angles.
+
+If there are more than 2 liftarms then the set of equations is solved with the Newton-Raphson method. The initial values for the angles are given by the last arguments of the commands |\liftarm|. The Jacobian matrix is defined by the environment |liftarmconnect|. The resulting set of linear equations is solved with LU decomposition. The iteration stops if the condition determined by the key |connect stop| is satisfied.
+
+Since the \emph{let operation} from the \tikzname{} library |calc| is used, it is not possible to use the variable names |\n|, |\p|, |\x| and |\y| inside the starting point of a command |\liftarm| which is used in the environment |liftarmconnect|.
+\begin{key}{/liftarm/connect stop=\mchoice{1-norm,2-norm,iterations} (initially 1-norm)}
+\begin{description}
+\item[\texttt{1-norm}] In this case, the iteration stops if the 1-norm is smaller than the value given to this key. Its default value is $0.001$.
+\item[\texttt{2-norm}] In this case, the iteration stops if the 2-norm is smaller than the value given to this key. Its default value is $0.001$.
+\item[\texttt{iterations}] In this case, a number of iterations is executed where the number is the one given to this key. Its default value is $10$.
+\end{description}
\end{key}
-\begin{key}{/liftarm/connect reverse=\opt{\meta{boolean}} (default true, initially false)}
-If true, the first liftarm of |\liftarmconnect| will be drawn second and the second liftarm will be drawn first. This option can be used to change the appearance at the connection point of both liftarms.
\begin{codeexample}[width=10cm]
\begin{tikzpicture}
-\liftarmconnect{2,0}{1}{0,0}{2}
-\liftarmconnect[
- connect reverse
-]{5,0}{1}{3,0}{2}
+\begin{liftarmconnect}
+ \liftarm[coordinate=2/A]{0,0}{2}{70}
+ \liftarm[coordinate=3/A]{4,0}{3}{120}
+\end{liftarmconnect}
+\begin{liftarmconnect}
+ \liftarm[coordinate=4/B]{4,0}{4}{200}
+ \liftarm[coordinate=1/B]{0,0}{1}{-90}
+\end{liftarmconnect}
+\node at (A) {\small $A$};
+\node at (B) {\small $B$};
\end{tikzpicture}
\end{codeexample}
-\end{key}
-\begin{stylekey}{/liftarm/liftarm 1=\marg{options} (initially \normalfont empty)}
-\end{stylekey}
-\begin{stylekey}{/liftarm/liftarm 2=\marg{options} (initially \normalfont empty)}
-These keys accept a list of keys which will be applied to the first respectively second liftarm. These lists of keys accept the same options as the command |\liftarm|. Additionally, the key |connect| below can be given.
-\begin{key}{/liftarm/connect=\marg{number}}
-This key defines the number of the hole which will be connected to the matching liftarm. If this key is not given then the last hole of the liftarm is taken as the connecting point.
-\begin{codeexample}[width=10cm]
+The example below shows the regular pentagon from \cite{Tmm1}. In the first environment |liftarmconnect| there are $4$ liftarms and $2$ conditions resulting in $4$ equations. Hence the Jacobian matrix has size $4\times 4$.
+\begin{codeexample}[width=7cm]
+\begin{tikzpicture}[scale=0.5]
+\pgfkeys{/liftarm,liftarm style={draw=black},scalefactor=1}
+\liftarm{0,0}{3}{0}
+\begin{liftarmconnect}
+ \liftarm[coordinate={3/A,4/B,12/C}]{0,0}{12}{100}
+ \liftarm[coordinate={3/D,4/E,12/F}]{3,0}{12}{80}
+ \liftarm[coordinate=11/F]{B}{11}{60}
+ \liftarm[coordinate=11/C]{E}{11}{120}
+\end{liftarmconnect}
+\begin{liftarmconnect}
+ \liftarm[coordinate=3/G]{A}{3}{30}
+ \liftarm[coordinate=3/G]{D}{3}{150}
+\end{liftarmconnect}
+\end{tikzpicture}
+\end{codeexample}
+The example below shows iterations $0$ till $3$ of a construction with $6$ liftarms and $3$ conditions resulting in $6$ equations. Hence the Jacobian matrix has size $6\times 6$.
+\begin{codeexample}[]
\begin{tikzpicture}
-\liftarm{0,-7}{10}{90}
-\liftarmconnect[
- connect coordinate=A,
- liftarm 1={
- origin=1,
- connect=5
- },
- liftarm 2={
- origin=2,
- connect=6
- }
-]{0,2}{6}{0,0}{7}
-\liftarmconnect[
- liftarm 1={
- origin=2,
- connect=8
- },
- liftarm 2={
- origin=1,
- connect=5,
- coordinate=4/B
- }
-]{A}{9}{0,-6}{6}
-\liftarm[origin=1]{B}{4}{70}
+\liftarm{0,0}{15}{0}
+\liftarm{0,5}{15}{0}
+\foreach\k in {0,...,3}{
+ \begin{scope}[shift={(\k*4,0)}]
+ \begin{liftarmconnect}[connect stop={iterations=\k},liftarm style=ultra thick,type=line segment]
+ \liftarm[coordinate=3/A]{1,0}{3}{90}
+ \liftarm[coordinate=3/B]{3,0}{3}{90}
+ \liftarm[coordinate=1/B]{A}{1}{0}
+ \liftarm[coordinate=1/C]{A}{1}{70}
+ \liftarm[coordinate=1/C]{B}{1}{110}
+ \liftarm[coordinate=2/C]{0,5}{2}{0}
+ \end{liftarmconnect}
+ \node at (1.5,-1) {\texttt{iterations=\k}};
+ \end{scope}
+}
\end{tikzpicture}
\end{codeexample}
-\end{key}
-\end{stylekey}
-\end{command}
+The example below shows the regular heptagon from \cite{Tmm1}. In the first environment |liftarmconnect| there are $8$ liftarms and $4$ conditions resulting in $8$ equations. Hence the Jacobian matrix has size $8\times 8$.
+\begin{codeexample}[width=8cm]
+\begin{tikzpicture}[scale=0.4]
+\pgfkeys{/liftarm,scalefactor=1}
+\liftarm{-4,0}{8}{0}
+\begin{liftarmconnect}
+ \liftarm[coordinate={1/A,7/B,8/G}]{-4,0}{8}{135}
+ \liftarm[coordinate=11/F]{A}{11}{50}
+ \liftarm[coordinate=11/F]{B}{11}{20}
+ \liftarm[coordinate={1/C,7/D,8/H}]{4,0}{8}{45}
+ \liftarm[coordinate=11/E]{C}{11}{130}
+ \liftarm[coordinate=11/E]{D}{11}{160}
+ \liftarm[coordinate=8/E]{G}{8}{30}
+ \liftarm[coordinate=8/F]{H}{8}{150}
+\end{liftarmconnect}
+\begin{liftarmconnect}
+ \liftarm[coordinate=8/I]{E}{8}{70}
+ \liftarm[coordinate=8/I]{F}{8}{110}
+\end{liftarmconnect}
+\begin{liftarmconnect}
+ \liftarm[coordinate=8/J]{G}{8}{70}
+ \liftarm[coordinate=8/J]{I}{8}{210}
+\end{liftarmconnect}
+\begin{liftarmconnect}
+ \liftarm[coordinate=8/K]{H}{8}{110}
+ \liftarm[coordinate=8/K]{I}{8}{-30}
+\end{liftarmconnect}
+\end{tikzpicture}
+\end{codeexample}
+\end{environment}
\section{Describing a construction}
-If a construction involves many liftarms then it is convenient to describe this construction in separate steps and |tikzpicture|s. Then the content of previous |tikzpicture|s would need to be copied in each new |tikzpicture|. This process can be automated by using the |liftarmconstruction| environment and the command |\liftarmconstruct| below.
-\begin{environment}{{liftarmconstruction}\opt{\oarg{options}}}
-This environment is in fact an |enumerate| environment with the addition that it resets the content of the |tikzpicture| which is displayed by the command |\liftarmconstruct| below. Thus in particular, |\item| can be used inside the |liftarmconstruction| environment. The \meta{options} will be passed to each |tikzpicture| drawn by the command |\liftarmconstruct| inside this environment. The following command can be used inside this environment.
-\begin{command}{\liftarmconstruct\opt{\oarg{options}}\marg{text}\marg{commands}}
-This command starts an |\item| and shows \meta{text}. Then it displays a |tikzpicture| containing \meta{commands} and also the \meta{commands} of previous |\liftarmconstruct| commands inside the same |liftarmconstruction| environment. The \meta{options} will be added to this |tikzpicture| but \emph{only} in the current step.
+If a construction involves many liftarms then it is convenient to describe this construction in separate steps. Then the content of previous steps would need to be copied in each new step. This process can be automated by using the command |\liftarmconstruct| below.
+\begin{command}{\liftarmconstruct\marg{commands}}
+This command appends \meta{commands} to an internal token list. Then it uses this token list.
+\end{command}
+\begin{command}{\liftarmconstructclear}
+This command clears the token list which is used by the command |\liftarmconstruct|.
As an example, we describe below the construction of a regular pentagon from \cite{Tmm1}.
-\begin{codeexample}[width=10cm]
-\begin{minipage}{0.5\linewidth}%only for
-%usage in this manual%\linewidth-6pt
-%\begin{multicols}{2}%only for
-%usage in this manual
-\begin{liftarmconstruction}[scale=0.75]
-\liftarmconstruct[
- {\node[left,align=left]
- at (-0.5,-1.3)
- {Rectangular triangle.\\
- This text is only\\
- visible in this step.};}
-]{
- We start with 3 liftarms to form
- a rectangular triangle.
-}{
-\liftarm{-3,0}{4}{0}
-\liftarmconnect[
- liftarm 1={
- origin=2,
- mark holes={2,6}
- },
- liftarm 2={
- mark holes=0
- }
-]{0,0}{6}{-3,0}{5}}
-\item An |\item| can be added since this
- is an |enumerate| environment.
+\begin{codeexample}[width=7cm]
+\begin{minipage}{5.5cm}%only for usage in this manual
+\liftarmconstructclear
+\begin{enumerate}
+\item First we form a rectangular triangle with 3 liftarms.
+\begin{center}
+\begin{tikzpicture}[scale=0.7]
\liftarmconstruct{
- Now we add 2 liftarms of length $3$.
-}{\liftarmconnect[
- connect coordinate=A,
- liftarm 1={
- mark holes={0,3}
- },
- liftarm 2={
- mark holes=0
- }
-]{0,-2}{3}{0,2}{3}}
+ \liftarm[mark holes=3]{-3,0}{4}{0}
+ \begin{liftarmconnect}
+ \liftarm[coordinate=6/A,origin=2]{0,0}{6}{90}
+ \liftarm[coordinate=5/A,mark holes={0,5}]{-3,0}{5}{60}
+ \end{liftarmconnect}
+}
+\end{tikzpicture}
+\end{center}
+\item Then we add 2 liftarms of length $3$.
+\begin{center}
+\begin{tikzpicture}[scale=0.7]
\liftarmconstruct{
- In this step we construct the first
- side of the regular pentagon.
-}{\liftarmconnect[
- connect coordinate=B,
- liftarm 2={
- mark holes={0,2}
- }
-]{A}{2}{1,0}{2}}
+ \begin{liftarmconnect}
+ \liftarm[coordinate=3/B,mark holes={0,3}]{0,-2}{3}{45}
+ \liftarm[coordinate=3/B,mark holes=0]{0,2}{3}{-45}
+ \end{liftarmconnect}
+}
+\end{tikzpicture}
+\end{center}
+\item Here appears the first side of the regular pentagon.
+\begin{center}
+\begin{tikzpicture}[scale=0.7]
\liftarmconstruct{
- Now we finish the construction
- of the regular pentagon.
-}{\liftarmconnect[
- liftarm 2={
- mark holes={0,2}
- }
-]{B}{2}{-1,0}{2}
-\liftarmconnect[
- liftarm 1={
- mark holes=2
- }
-]{-1,0}{2}{A}{2}}
-\end{liftarmconstruction}
-%\end{multicols}
+ \begin{liftarmconnect}
+ \liftarm[coordinate=2/C]{B}{2}{100}
+ \liftarm[coordinate=2/C,mark holes={0,2}]{1,0}{2}{80}
+ \end{liftarmconnect}
+}
+\end{tikzpicture}
+\end{center}
+\item Now we end the construction of the regular pentagon.
+\begin{center}
+\begin{tikzpicture}[scale=0.7]
+\liftarmconstruct{
+ \begin{liftarmconnect}
+ \liftarm[coordinate=2/D]{C}{2}{180}
+ \liftarm[coordinate=2/D,mark holes={0,2}]{-1,0}{2}{80}
+ \end{liftarmconnect}
+ \begin{liftarmconnect}
+ \liftarm[coordinate=2/E,mark holes=2]{-1,0}{2}{-80}
+ \liftarm[coordinate=2/E]{B}{2}{210}
+ \end{liftarmconnect}
+}
+\end{tikzpicture}
+\end{center}
+\end{enumerate}
\end{minipage}
\end{codeexample}
\end{command}
-\end{environment}
\section{Animations}
\begin{command}{\liftarmanimate\opt{\oarg{options}}\marg{frame rate}\marg{list}\marg{command}}
-This command shows an animation using the |animateinline| environment of the package |animate|. The package |animate| is \emph{not} loaded by default and needs to be loaded to use the command |\liftarmanimate|. The \meta{options} are passed to the |animateinline| environment. The \meta{frame rate} of the animation is described in the documentation of the package |animate|. The \meta{command} must be a previously defined command with one mandatory argument. The \meta{list} is passed to a |\foreach| loop. The frames of the animation consist of the \meta{command} evaluated one by one in the result of the |\foreach| loop. The command |\liftarmanimate| creates a timeline which is used in the |animateinline| environment. This timeline is stored in the file |liftarm|\meta{number of the animation in the document}|.tln|. It requires two compiler runs to create and use this timeline correctly.
+This command shows an animation using the |animateinline| environment of the package |animate|. The package |animate| is \emph{not} loaded by default and needs to be loaded to use the command |\liftarmanimate|. The \meta{options} are passed to the |animateinline| environment. The \meta{frame rate} of the animation is described in the documentation of the package |animate|. The \meta{command} must be a previously defined command with one mandatory argument. The \meta{list} is passed to a |\foreach| loop. The frames of the animation consist of the \meta{command} evaluated one by one in the result of the |\foreach| loop. The command |\liftarmanimate| creates a timeline which is used in the |animateinline| environment. This timeline is stored in the file \meta{job name}\meta{number of the animation in the document}|.tln|. It requires two compiler runs to create and use this timeline correctly.
\begin{key}{/liftarm/trace=\marg{number/number of frames/code}\dots}
This key draws \meta{code} at hole \meta{number} of the liftarm on the frames of the animation determined by \meta{number of frames}.
If \meta{number of frames} is 0 then the \meta{code} is drawn starting at the current frame until the end of the animation. If \meta{number of frames} is an integer greater than or equal to 1 then the \meta{code} is drawn starting at the current frame and remaining during the next frames determined by \meta{number of frames}. If \meta{number of frames} is left empty then the \meta{code} is drawn starting at the beginning of the animation until the end of the animation.
-The \meta{code} can be some \tikzname{} code. In this \meta{code}, $(0,0)$ is positioned at hole \meta{number} of the liftarm. If \meta{code} is left empty then the following code is used.
-\begin{codeexample}[code only]
-\fill[Black] (0,0) circle[radius=0.66*\liftarm@holeradius];
-\end{codeexample}
+The \meta{code} can be some \tikzname{} code. In this \meta{code}, $(0,0)$ is positioned at hole \meta{number} of the liftarm. If \meta{code} is left empty then a black circle with radius $\frac{2}{3}$ times the |hole radius| is used.
+
A list of multiple triples \meta{number/number of frames/code} can be given to the key |trace|.
\begin{codeexample}[width=10cm,preamble={\usepackage{animate}}]
\newcommand{\exampleliftarmanimate}[1]{
- \liftarm[
- origin=1,
- mark holes=1,
- trace={
- 2/0/,
- 3//,
- 4/3/{\fill[Blue] (0,0)
- circle[radius=0.15];}
- }
- ]{0,0}{4}{#1}
+ \liftarm[
+ origin=1,
+ mark holes=1,
+ trace={
+ 2/0/,
+ 3//,
+ 4/3/{\fill[Blue] (0,0)
+ circle[radius=0.15];}
+ }
+ ]{0,0}{4}{#1}
}
\liftarmanimate[
- autoplay,
- controls,
- loop,
- begin={
- \begin{tikzpicture}
- \useasboundingbox (-4,-4)
- rectangle (4,4);
- },
- end={\end{tikzpicture}}
+ autoplay,
+ controls,
+ loop,
+ begin={
+ \begin{tikzpicture}
+ \useasboundingbox (-4,-4)
+ rectangle (4,4);
+ },
+ end={\end{tikzpicture}}
]
{5}
{0,30,...,330}
@@ -429,11 +466,14 @@ A list of multiple triples \meta{number/number of frames/code} can be given to t
\end{command}
\section{Additional examples}
The following example shows a regular hexagon.
-\begin{codeexample}[width=9cm]
+\begin{codeexample}[width=8cm]
\begin{tikzpicture}
\def\r{3}
-\foreach\n in {1,...,6}{
- \liftarmconnect{0,0}{\r}{\n*60:\r}{\r}
+\foreach\m in {1,...,6}{
+ \begin{liftarmconnect}
+ \liftarm[coordinate=\r/A]{0,0}{\r}{(\m+1)*60}
+ \liftarm[coordinate=\r/A]{\m*60:\r}{\r}{(\m+2)*60}
+ \end{liftarmconnect}
}
\end{tikzpicture}
\end{codeexample}
@@ -448,18 +488,6 @@ The following example illustrates that $2\atan(\frac{1}{2})=\atan(\frac{4}{3})$.
\liftarm{2,1}{1}{90+atan(4/3)}
\end{tikzpicture}
\end{codeexample}
-Below is an example of an angled liftarm.
-\begin{codeexample}[width=9cm]
-\begin{tikzpicture}
-\pgfkeys{
- /liftarm,
- scalefactor=1,
- Blue
-}
-\liftarm[axle holes=0]{0,0}{3}{0}
-\liftarm[axle holes=5]{3,0}{5}{atan(4/3)}
-\end{tikzpicture}
-\end{codeexample}
The following example illustrates an angle bisection.
\begin{codeexample}[width=9cm]
\begin{tikzpicture}
@@ -468,26 +496,45 @@ The following example illustrates an angle bisection.
\liftarm[mark holes={0,\r}]{0,0}{2*\r}{0}
\liftarm[mark holes=\r]{0,0}{2*\r}{\ang}
\liftarm[
- mark holes=\r,
- mark color=Red
+ mark holes=\r,
+ mark style=Red
]{\r,0}{\r}{\ang}
\liftarm{\ang:\r}{\r}{0}
\end{tikzpicture}
\end{codeexample}
+The following example illustrates that $7^{2}=3^{2}+8^{2}-2\cdot 3\cdot 8\cos(\frac{\pi}{3})$.
+\begin{codeexample}[width=9cm]
+\begin{tikzpicture}
+\begin{liftarmconnect}
+ \liftarm[coordinate=3/A]{0,0}{3}{80}
+ \liftarm[coordinate=3/A]{3,0}{3}{100}
+\end{liftarmconnect}
+\begin{liftarmconnect}
+ \liftarm[coordinate=8/B]{0,0}{8}{0}
+ \liftarm[coordinate=7/B]{A}{7}{0}
+\end{liftarmconnect}
+\end{tikzpicture}
+\end{codeexample}
The following example illustrates that $7^{2}+4^{2}=8^{2}+1^{2}$.
\begin{codeexample}[width=9cm]
-\begin{tikzpicture}[scale=0.75]
+\begin{tikzpicture}
\def\a{4}
\def\b{7}
\def\c{1}
\def\d{8}
%\liftarm{0,0}{\b}{0}
%\liftarm{\b,0}{\a}{90}
-\liftarmconnect{0,0}{\b}{\b,\a}{\a}
+\begin{liftarmconnect}
+ \liftarm[coordinate=\b/A]{0,0}{\b}{0}
+ \liftarm[coordinate=\a/A]{\b,\a}{\a}{-90}
+\end{liftarmconnect}
\liftarm{4,0}{3}{90}
%\liftarm{\b,\a}{1}{atan(\a/\b)+atan(\c/\d)+90}
%\liftarm{0,0}{\d}{atan(\a/\b)+atan(\c/\d)}
-\liftarmconnect{\b,\a}{\c}{0,0}{\d}
+\begin{liftarmconnect}
+ \liftarm[coordinate=\d/B]{0,0}{\d}{45}
+ \liftarm[coordinate=\c/B]{\b,\a}{\c}{135}
+\end{liftarmconnect}
\end{tikzpicture}
\end{codeexample}
Below is an animation of the Peaucellier-Lipkin linkage, see e.g.~\cite{Koagmopermbl}.
@@ -497,31 +544,35 @@ Below is an animation of the Peaucellier-Lipkin linkage, see e.g.~\cite{Koagmope
\def\a{3}
\def\b{4}
\def\c{9}
-\pgfmathsetmacro{\x}{
- 2*\a+((\c^2-\b^2-(2*\a)^2)/(2*\a))
+\edef\l{
+ \fpeval{2*\a+(\c^2-\b^2-(2*\a)^2)/(2*\a)}
}
\useasboundingbox (-0.23,-6) rectangle
- ({\x+0.23},6);
-\draw (\x,-5)--(\x,5);
+ (\l+0.23,6);
+\draw (\l,-5)--(\l,5);
\liftarm{0,0}{\a}{0}
\liftarm[coordinate=\a/A]{\a,0}{\a}{#1}
-\liftarmconnect[
- connect coordinate=B,
- connect reverse
-]{A}{\b}{0,0}{\c}
-\liftarmconnect[
- connect coordinate=C
-]{0,0}{\c}{A}{\b}
-\liftarmconnect{C}{\b}{B}{\b}
+\begin{liftarmconnect}
+ \liftarm[coordinate=\c/B]{0,0}{\c}{0}
+ \liftarm[coordinate=\b/B]{A}{\b}{90}
+\end{liftarmconnect}
+\begin{liftarmconnect}
+ \liftarm[coordinate=\c/C]{0,0}{\c}{0}
+ \liftarm[coordinate=\b/C]{A}{\b}{-90}
+\end{liftarmconnect}
+\begin{liftarmconnect}
+ \liftarm[coordinate=\b/D]{C}{\b}{0}
+ \liftarm[coordinate=\b/D]{B}{\b}{0}
+\end{liftarmconnect}
\end{tikzpicture}
}
\begin{animateinline}[
- autoplay,
- controls,
- palindrome
+ autoplay,
+ controls,
+ palindrome
]{30}
\multiframe{80}{rAng=-40+1}{
- \PLlinkage{\rAng}
+ \PLlinkage{\rAng}
}
\end{animateinline}
\end{codeexample}
@@ -534,13 +585,19 @@ Below is an animation of Kempe's trisector, as shown in \cite{Tmm3}.
\liftarm[coordinate=12/B]{0,0}{27}{180-(#1)}
\liftarm[coordinate=18/C]{0,0}{27}{180-2*(#1)}
\liftarm[coordinate=27/D]{0,0}{27}{180-3*(#1)}
-\liftarmconnect{C}{27}{D}{18}
-\liftarmconnect[liftarm 2={connect=8}]{A}{12}{B}{18}
+\begin{liftarmconnect}
+ \liftarm[coordinate=27/E]{C}{27}{0}
+ \liftarm[coordinate=18/E]{D}{18}{0}
+\end{liftarmconnect}
+\begin{liftarmconnect}
+ \liftarm[coordinate=12/F]{A}{12}{0}
+ \liftarm[coordinate=8/F]{B}{18}{0}
+\end{liftarmconnect}
\end{tikzpicture}
}
\begin{animateinline}[autoplay,controls,palindrome]{5}
\multiframe{20}{rAng=15+1}{
-\trisector{\rAng}
+ \trisector{\rAng}
}
\end{animateinline}
\end{codeexample}
@@ -549,40 +606,85 @@ Below is an animation of Chebyshev's Lambda Mechanism.
\newcommand{\CL}[1]{
\liftarm{0,0}{4*\r}{0}
\liftarm[
- mark holes={0,2*\r}
+ mark holes={0,2*\r}
]{0,0}{2*\r}{#1}
-\liftarmconnect[
- liftarm 1={mark holes={0,5*\r}},
- liftarm 2={
- connect=5*\r,
- mark holes=10*\r,
- mark color=Red,
- trace={6*\r/0/,10*\r//}
- }
-]{4*\r,0}{5*\r}{#1:2*\r}{10*\r}
+\begin{liftarmconnect}
+ \liftarm[
+ coordinate=5*\r/A,
+ mark holes={0,5*\r}
+ ]{4*\r,0}{5*\r}{90}
+ \liftarm[
+ coordinate=5*\r/A,
+ mark holes=10*\r,
+ mark style=Red,
+ trace={6*\r/0/,10*\r//}
+ ]{#1:2*\r}{10*\r}{90}
+\end{liftarmconnect}
}
\liftarmanimate[
- autoplay,
- controls,
- loop,
- begin={
- \begin{tikzpicture}[scale=0.8]
- \def\r{1}
- \useasboundingbox
- (-2*\r-0.5,-2*\r-0.5)
- rectangle
- (10*\r-0.5,10*\r+0.5);
- },
- end={\end{tikzpicture}}
+ autoplay,
+ controls,
+ loop,
+ begin={
+ \begin{tikzpicture}[scale=0.8]
+ \def\r{1}
+ \useasboundingbox
+ (-2*\r-0.5,-2*\r-0.5)
+ rectangle
+ (10*\r-0.5,10*\r+0.5);
+ },
+ end={\end{tikzpicture}}
]
{20}
{0,5,...,355}
{\CL}
\end{codeexample}
+Below is an animation of a multilink steering mechanism.
+\begin{codeexample}[preamble={\usepackage{animate}}]
+\newcommand{\multilink}[1]{
+\begin{tikzpicture}[scale=0.9]
+\useasboundingbox (-8.5,-0.5) rectangle (8.5,5.7);
+\liftarm[brick,screw holes={0,6}]{-3,0}{6}{0}
+\liftarm[brick,screw holes={0,6}]{-3,3}{6}{0}
+\liftarm[coordinate={0/X,6/Y},screw holes={0,6}]{{-3+(#1)*0.1},4}{6}{0}
+\begin{liftarmconnect}
+ \liftarm[coordinate=3/A]{-3,0}{3}{160}
+ \liftarm[coordinate=3/B]{-3,3}{3}{200}
+ \liftarm[coordinate={1/B,4/C},screw holes={0,1,4}]{A}{4}{90}
+ \liftarm[coordinate=3/C]{X}{3}{180}
+\end{liftarmconnect}
+\begin{liftarmconnect}
+ \liftarm[coordinate=3/D]{3,0}{3}{20}
+ \liftarm[coordinate=3/E]{3,3}{3}{-20}
+ \liftarm[coordinate={1/E,4/F},screw holes={0,1,4}]{D}{4}{90}
+ \liftarm[coordinate=3/F]{Y}{3}{0}
+\end{liftarmconnect}
+\end{tikzpicture}
+}
+\begin{animateinline}[autoplay,controls,palindrome]{10}
+\multiframe{41}{rAng=-20+1}{
+ \multilink{\rAng}
+}
+\end{animateinline}
+\end{codeexample}
\section{Version history}
\begin{itemize}
\item[] \textbf{Version 1.0 (2022/03/08)} First version.
-\item[] \textbf{Version 2.0 (2022/04/07)} Removed some redundant |;| in the code.\footnote{Thanks to Denis Bitouz\'e for pointing this out.} Added the command |\liftarmanimate| and the key |trace|.
+\item[] \textbf{Version 2.0 (2022/04/07)} Removed some redundant |;| in the code.\footnote{Thanks to Denis Bitouzé for pointing this out.} Added the command |\liftarmanimate| and the key |trace|.
+\item[] \textbf{Version 3.0 (2024/05/20)}
+\begin{itemize}
+\item The package now mainly uses \LaTeX3 syntax. The package |etoolbox| is not loaded anymore.
+\item Improved the code for the key |axle holes|. In particular, the combinations with the keys |contour| and |hole radius| are fixed.
+\item Improved the path for the shape of a liftarm if the key |brick| is used.
+\item Changed the key |color| to accept two arguments. The color can no longer be specified without a key.
+\item Removed the keys |color 0|, |color 1|, |color 2|, |color 3|, |color 4|, |color 5|, |color 6| and |color 7|.
+\item In v2.0, the colors could only be defined up to length $7$. In v3.0, this is not a restriction anymore.
+\item Changed some initial colors from |Black| to |black|.
+\item Added the keys |contour style| and |liftarm style|.
+\item Removed the keys |mark color|, |screw color| and |screw holes angle|. Added the keys |mark radius|, |mark style|, |screw angle|, |screw radius| and |screw style|.
+\item Improved the algorithm to connect liftarms in multiple ways. In v2.0, transformations such as |x={(0.8,0.5)},y={(-0.6,1.2)}| were not taken into account correctly. This is fixed in v3.0. In v2.0, only 2 liftarms could be connected automatically. In v3.0, this is not a restriction anymore. Therefore the command |\liftarmconnect| and the keys |connect|, |connect coordinate|, |connect reverse|, |liftarm 1| and |liftarm 2| are removed. Instead, the environment |liftarmconnect| and the key |connect stop| were added in v3.0.
+\item Changed the command |\liftarmconstruct| to allow more customization. Removed the environment |liftarmconstruction| and added the command |\liftarmconstructclear|.
+\end{itemize}
\end{itemize}
\begin{thebibliography}{9}
\bibitem{Tmm1}
@@ -607,9 +709,16 @@ Alfred Bray Kempe,
\bibitem{TtTaPGFp}
Till Tantau,
\emph{The \tikzname{} and {\upshape\pgfname} Packages},
-Manual for version 3.1.9a,
+Manual for version 3.1.10,
\url{https://ctan.org/pkg/pgf},
-2021.
+2023.
\end{thebibliography}
\printindex
+\newgeometry{left=2.25cm,right=2.25cm,top=2.25cm,bottom=2.25cm}
+\pagestyle{plain}
+\appendix
+\begin{landscape}
+\section{The source code}\label{Thesourcecode}
+\dochighinput[language=latex/latex3]{liftarm.sty}
+\end{landscape}
\end{document} \ No newline at end of file
diff --git a/graphics/pgf/contrib/pgf-periodictable/README b/graphics/pgf/contrib/pgf-periodictable/README
index f33f53fa72..b1a6ef2279 100644
--- a/graphics/pgf/contrib/pgf-periodictable/README
+++ b/graphics/pgf/contrib/pgf-periodictable/README
@@ -1,4 +1,4 @@
-This is pgf-PeriodicTable, version 2.1.0a (2024/04/03).
+This is pgf-PeriodicTable, version 2.1.1 (2024/07/07).
The purpose of this package is to provide the Periodic Table of Elements in
a simple way. It relies on pgf/TikZ to offer a full or partial periodic table with
@@ -22,6 +22,12 @@ ____________________________________________________________
Major changes:
+*** v2.1.1 (07/07/2024) ***
+New keys:
+- group numbers (to display group numbers in arabic numerals, Roman numerals or both)
+- Roman label color (sets the color of the Roman numerals)
+- O Roman (the oxidation numbers are presnted in Roman numerals)
+
*** v2.1.0a (03/04/2024) ***
Translation files have been renamed from 'lang.{undefined,nl}.tex' to 'pgfPT.lang.{undefined,nl}.tex' to match the runtime tree of TeX Live (names must be globally unique for reliable searching).
diff --git a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_O.tex b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_O.tex
new file mode 100644
index 0000000000..06f322d5ee
--- /dev/null
+++ b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_O.tex
@@ -0,0 +1,33 @@
+\vfill%
+\subsubsection{\texorpdfstring{\ding{224} The oxidation states}{The oxidation states}}%\vspace{6pt}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% O color
+\pgfPTMoption{4}{O color}{black}{%
+Sets the color of the oxidation states.
+}
+\\ [10pt]\pgfPTMbuildcell(5,3)[(1;1-2;Z),(1;3;radio),(2-3;1.5-3.5;CS),(4;1-3;name),(5;1-3;O)]%
+\pgfPTbuildcell(5,3)[(1;1-2;Z),(1;3;radio),(2-3;1.5-3.5;CS),(4;1-3;name),(5;1-3;O)]%
+\\ [5pt]\pgfPTMmacrobox{pgfPTstyle}[show title=false]%
+\pgfPTstyle[show title=false]%
+\\ [-1pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},O color=red]%
+\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},O color=red]}}%
+\\ [0pt]\pgfPTendoption%
+% O font \tiny\bfseries
+\pgfPTMoption{4}{O font}{\string\tiny\string\bfseries}{%
+Sets the font of the oxidation states.
+}
+\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},O font=\string\itshape\string\tiny]%
+\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},O font=\itshape\tiny]}}%
+\\ [0pt]\pgfPTendoption%
+% O Roman
+\newpage\vspace{-34pt}\ %
+\pgfPTMoption[\mbox{\pgfPTnewinversion{2.1.1}}]{4}{O Roman}{false}{%
+When set to \red{true} the oxidation states are displayed in Roman numerals, otherwise they are displayed in arabic numerals.
+}
+%\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},O Roman]%
+%\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},O Roman]}}%
+\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list=spd,O Roman,group numbers=CAS]%
+\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list=spd,O Roman,group numbers=CAS]}}%
+\\ [5pt]\pgfPTendoption%
+\pgfPTresetcell%
+\endinput
diff --git a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_OtherCont.tex b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_OtherCont.tex
index e74b8bf418..c90a4cae94 100644
--- a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_OtherCont.tex
+++ b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_OtherCont.tex
@@ -12,7 +12,7 @@ For all the \textit{other contents} available for the cells of the periodic tabl
\item\red{\textbf{Ei}}:\hspace{.5ex}first ionization energy
\item\red{\textbf{eneg}}:\hspace{.5ex}electronegativity (Pauling)
\item\red{\textbf{eaff}}:\hspace{.5ex}electroaffnity
-\item\red{\textbf{O}}:\hspace{.5ex}oxidation states
+%\item\red{\textbf{O}}:\hspace{.5ex}oxidation states
\item\red{\textbf{Tmelt}}:\hspace{.5ex}melting point (Kelvin)
\item\red{\textbf{TmeltC}}:\hspace{.5ex}melting point (Celsius degrees)
\item\red{\textbf{Tboil}}:\hspace{.5ex}boiling point (Kelvin)
diff --git a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_density.tex b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_density.tex
index 2a33c0371e..511bd765c6 100644
--- a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_density.tex
+++ b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_density.tex
@@ -14,28 +14,28 @@ Sets the density value text color.}
\pgfPTMoption{4}{d font}{\string\tiny\string\bfseries}{%
Sets the density value text font.
}
-\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},cell style=myd,show title=false]%
-\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},Z list={1,...,36},cell style=myd,show title=false]}}%
-\\ [10pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},cell style=myd,show title=false,d font=\string\tiny\string\itshape]%
+%\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},cell style=myd,show title=false]%
+%\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},Z list={1,...,36},cell style=myd,show title=false]}}%
+\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},cell style=myd,show title=false,d font=\string\tiny\string\itshape]%
\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},Z list={1,...,36},cell style=myd,show title=false,d font=\tiny\itshape]}}%
\\ [0pt]\pgfPTendoption%
-% d unit=<g/cm3|g/dm3|both> .default=g/dm3
\vfill%
+% d unit=<g/cm3|g/dm3|both> .default=g/dm3
\pgfPTMoption[\pgfPTnewinversion{1.0.1}]{4}{d unit}{both}{%
Sets the unit for the density of the elements. The two possible values to this key are \red{g/dm3} ($\mathsf{g/dm^3}$), \red{g/cm3} ($\mathsf{g/cm^3}$) and \red{both} ($\mathsf{g/dm^3}$ for elements in the gaseous state and $\mathsf{g/cm^3}$ for all other elements).
}%
\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},cell style=myd,show title=false]%
-\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},cell style=myd,show title=false]}}%
+\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},cell style=myd,show title=false]}}%
\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},cell style=myd,show title=false,d unit=g/cm3]%
-\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},cell style=myd,show title=false,d unit=g/cm3]}}%
+\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},cell style=myd,show title=false,d unit=g/cm3]}}%
\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},cell style=myd,show title=false,d unit=g/dm3]%
-\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},cell style=myd,show title=false,d unit=g/dm3]}}%
+\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},cell style=myd,show title=false,d unit=g/dm3]}}%
\\ [0pt]\pgfPTendoption%
-\vfill\newpage\ \\ [-32pt]%
+\newpage\ \\ [-32pt]%
% d precision
\pgfPTMoption{4}{d precision}{-1}{%
Sets the density precision, \ie, the decimal places displayed in their value, performing the respective rounding, without zero padding the value.
-\\ [10pt]\tikz{\node[text width=\linewidth-.6666em,fill=orange!5!white,draw=orange,rounded corners=2pt] {\textbf{\red{NOTE}}:\\ Rounding is performed over density values witch actually have a maximum 5 or 8 decimal places, when the values are in $\mathsf{g/dm^3}$ or in $\mathsf{g/cm^3}$, respectively.. So giving this key a value of -1 (the value of the melting or boiling point as-is) or 5 or 8 has the same effect.
+\\ [10pt]\tikz{\node[text width=\linewidth-.6666em,fill=orange!5!white,draw=orange,rounded corners=2pt] {\textbf{\red{NOTE}}:\\ Rounding is performed over density values witch actually have a maximum 5 or 8 decimal places, when the values are in $\mathsf{g/dm^3}$ or in $\mathsf{g/cm^3}$, respectively.. So giving this key a value of -1 (the value of the density as-is) or 5 or 8 has the same effect.
\\ \textit{Therefore the values provided to this key should be any integer between -1 and 4 ($\mathsf{g/dm^3}$) or 7 ($\mathsf{g/cm^3}$). Any other integer provided will be processed as -1.}};}
}
\vfill%\\ [10pt]
diff --git a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_periodgroup.tex b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_periodgroup.tex
index 59e27e553e..ff09b0b2e1 100644
--- a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_periodgroup.tex
+++ b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_periodgroup.tex
@@ -1,4 +1,3 @@
-%\vfill\vfill%
\subsubsection{\texorpdfstring{\ding{224} Periods and Groups}{Periods and Groups}}%\vspace{6pt}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% show period numbers
@@ -10,17 +9,38 @@
\\ [10pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},show period numbers=false]%
\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},show period numbers=false]}}%
\\ [5pt]\pgfPTendoption%
-%\vfill%
-%\newpage\ \\ [-32pt]%
% show group numbers
\label{option_show group numbers}%
\pgfPTMoption{4}{show group numbers}{true}%
{When set to \red{true} the group numbers are shown, otherwise they are not shown.}%
\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36}]%
-\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36}]}}%
+\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36}]}}%
\\ [10pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},show group numbers=false]%
-\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},show group numbers=false]}}%
-\\ [5pt]\pgfPTendoption%
+\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},show group numbers=false]}}%
+\\ [0pt]\pgfPTendoption%
+\vfill%
+% group numbers
+\label{option_group numbers}%
+\pgfPTMoption[\pgfPTnewinversion{2.1.1}]{4}{group numbers}{arabic}%
+{This key controls how group numbering is displayed:
+\vspace{4pt}\begin{itemlist}
+\item\red{\textbf{arabic}}: group numbers are shown in arabic numerals as recommended by IUPAC since 1988.
+\item\red{\textbf{CAS}}: group numbers are shown in Roman numerals and `A' or `B' suffix. This is an older naming scheme, used by the Chemical Abstract Service (CAS), more popular in the United States.
+\item\red{\textbf{IUPAC}}: group numbers are shown in Roman numerals and `A' or `B' suffix. This is an older naming scheme, used by IUPAC before 1988, more popular in Europe.
+\item\red{\textbf{CAS*}}: combines the option \red{CAS} and \red{arabic}. Roman numerals and `A' or `B' suffix are above the group and the arabic numerals above them.
+\item\red{\textbf{IUPAC*}}: combines the option \red{IUPAC} and \red{arabic}. Roman numerals and `A' or `B' suffix are above the group and the arabic numerals above them.
+\end{itemlist}
+}%
+\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group numbers=CAS]%
+\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},group numbers=CAS]}}%
+\newpage\vspace{-34pt}\ %\\ [10pt]
+\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group numbers=IUPAC]%
+\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},group numbers=IUPAC]}}%
+\\ [10pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group numbers=CAS*]%
+\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},group numbers=CAS*]}}%
+\\ [10pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group numbers=IUPAC*]%
+\\ [5pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},group numbers=IUPAC*]}}%
+\\ [0pt]\pgfPTendoption%
\vfill%
% period label color
\label{option_period label color}%
@@ -28,19 +48,26 @@
{Sets the period label color.}%
\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},period label color=black]%
\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},period label color=black]}}%
-\\ [5pt]\pgfPTendoption%
-\vfill%
-%\newpage\ \\ [-32pt]%
+\\ [0pt]\pgfPTendoption%
+\newpage\vspace{-34pt}\ %\vfill%
% group label color
\label{option_group label color}%
\pgfPTMoption{4}{group label color}{blue!50!black}%
{Sets the group label color.}%
-\vfill%
-\newpage%\\ [5pt]
-\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group label color=black]%
+\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group label color=black]%
\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},group label color=black]}}%
\\ [0pt]\pgfPTendoption%
\vfill%
+% Roman label color
+\label{option_Roman label color}%
+\pgfPTMoption[\pgfPTnewinversion{2.1.1}]{4}{Roman label color}{blue!70!black}%
+{Sets the Roman group label color.}%
+\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group numbers=CAS*,Roman label color=purple]%
+\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},group numbers=CAS*,Roman label color=purple]}}%
+\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},group numbers=CAS*,Roman label color=purple, group label color=teal]%
+\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},group numbers=CAS*,Roman label color=purple,group label color=teal]}}%
+\\ [0pt]\pgfPTendoption%
+\vfill%
% label font
\label{option_label font}%
\pgfPTMoption{4}{label font}{\string\small\string\bfseries}%
@@ -62,7 +89,6 @@ The key \red{show period numbers} is set to \red{true}.
\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},per={gr=false,c=green!50!black}]}}%
\\ [0pt]\pgfPTendstyle%
\vfill%
-%\newpage\ \\ [-32pt]%
% gr={per=??,c=??,f=??} -> auto sets 'show groups numbers=true'; 'show period numbers' can be set to 'false' by the user
% gr/.default={per=true,c=blue!50!black,f=\small\bfseries}
% gr (pseudo style)
@@ -72,11 +98,10 @@ The key \red{show period numbers} is set to \red{true}.
The key \red{show group numbers} is set to \red{true}.
\\ [3pt]\makebox[\linewidth][c]{\use{gr=\{per=<true|false>,c=<color>,f=<font commands>\}}}%
}%
-\vfill%
-\newpage%\\ [5pt]
-\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},gr={per=false,c=green!50!black}]%
+\\ [5pt]\pgfPTMmacrobox{pgfPT}[Z list={1,...,36},gr={per=false,c=green!50!black}]%
\\ [10pt]\makebox[\linewidth][c]{\scalebox{.6}{\pgfPT[Z list={1,...,36},gr={per=false,c=green!50!black}]}}%
\\ [0pt]\pgfPTendstyle%
+\newpage\vspace{-34pt}\ %%
% per+gr={c=??,pc=??,gc=??,f=??} -> auto sets 'show period numbers=true' & 'show groups numbers=true'
% per+gr/.default={pc=red!50!black,gc=blue!50!black,f=\small\bfseries}
% per+gr (pseudo style)
diff --git a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgfPTmanual.macros.tex b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgfPTmanual.macros.tex
index 70d6e325ca..ddaee71477 100644
--- a/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgfPTmanual.macros.tex
+++ b/graphics/pgf/contrib/pgf-periodictable/manualfiles/pgfPTmanual.macros.tex
@@ -1,12 +1,13 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Definitions for pgf-PeriodicTable Manual
-% Hugo Gomes @ 04/03/2024 v2.1.0a
+% Hugo Gomes @ 07/07/2024 v2.1.1
+% Hugo Gomes @ 03/04/2024 v2.1.0a
% Hugo Gomes @ 14/02/2024 v2.1.0
% Hugo Gomes @ 29/05/2023 v2.0.1
% Hugo Gomes @ 20/02/2023 v2.0.0
% Hugo Gomes @ 08/11/2022 v1.0.1
% Hugo Gomes @ 10/10/2022 v1.0.0
-\def\pgfPTversion{2.1.0a}%
+\def\pgfPTversion{2.1.1}%
\def\pgfPTnewinversion#1{new in v#1}%
\def\pgfPTchangedinversion#1{changed in v#1}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTable.sty b/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTable.sty
index 3768fc4f24..d3e8d4cbe1 100644
--- a/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTable.sty
+++ b/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTable.sty
@@ -1,4 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Hugo Gomes @ 07/07/2024 v2.1.1
% Hugo Gomes @ 03/04/2024 v2.1.0a
% Hugo Gomes @ 14/02/2024 v2.1.0
% Hugo Gomes @ 29/05/2023 v2.0.1
@@ -7,7 +8,7 @@
% Hugo Gomes @ 10/10/2022 v1.0.0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}%
-\ProvidesPackage{pgf-PeriodicTable}[03/04/2024 pgf-PeriodicTable v2.1.0a]%%
+\ProvidesPackage{pgf-PeriodicTable}[07/07/2024 pgf-PeriodicTable v2.1.1]%%
\RequirePackage{tikz}%
\usetikzlibrary{fadings}%
\tikzfading[name=aumentax, left color=transparent!80, right color=transparent!1]%
@@ -190,10 +191,10 @@ font,IUPAC,capitalize element names=false,show title,show period numbers,show gr
show legend,legend acronyms,legend back color,show legend pins,show extra legend,legend radio color,%
legend CS color,legend Z color,show blocks=false,show families=false,show MNM line,show periodic variations=false,%
show label LaAc,title font,title color,cell width,cell height,cell style,label font,period label color,group label color,%
-label LaAc font,Z list,CS solid, CS liquid,CS gas,CS synt,CS font,CS render mode,CS outline color,CS outline width,%
+label LaAc font,group numbers,Roman label color,Z list,CS solid, CS liquid,CS gas,CS synt,CS font,CS render mode,CS outline color,CS outline width,%
Z backcolor,Z color,Z font,Z align,Z padding,Z use box width=false,name color,name font,name align,Ar color,Ar font,Ar label,Ar precision,%
R color,R font,Rcov color,Rcov font,Rion color,Rion font,Ei color,Ei font,eneg color,eneg font,eaff color,eaff font,%
-O color,O font,Tmelt color,Tmelt font,TmeltC color,TmeltC font,Tboil color,Tboil font,TboilC color,TboilC font,%
+O color,O font,O Roman=false,Tmelt color,Tmelt font,TmeltC color,TmeltC font,Tboil color,Tboil font,TboilC color,TboilC font,%
eDist color,eDist font,eDist sep,eConfign color,eConfign font,eConfignl color,eConfignl font,d color,d font,Cp color,Cp font,%
kT color,kT font,ls color,ls font,ls align,ls,lsa color,lsa font,lsb color,lsb font,lsc color,lsc font,lsca color,lsca font,%
DiscY color,DiscY font,DiscY BC scale,DiscC color,DiscC font,spectra color,spectra font,MNM line color,MNM line width,%DiscC,
@@ -661,6 +662,16 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT
\fi%
% O -> Oxidation States
\ifpgfPT@O\relax%
+ \ifpgfPTORoman% new in v2.1.1
+ \ifnum\Z=25\relax% Mn
+ \node[font=\pgfPTOfont,text=\pgfPTOcolor,text width=\pgfPT@data@O@wd,text centered]%
+ at ([xshift=\pgfPT@data@O@x,yshift=-\pgfPT@data@O@y]\Z) {\vbox to\pgfPT@data@O@ht{\vfil\pgfPT@box@zerodepth{\resizebox{.95\linewidth}{\height}{\pgfPT@data@ORoman}}
+ \vfil}};%
+ \else%
+ \node[font=\pgfPTOfont,text=\pgfPTOcolor,text width=\pgfPT@data@O@wd,text centered]%
+ at ([xshift=\pgfPT@data@O@x,yshift=-\pgfPT@data@O@y]\Z) {\vbox to\pgfPT@data@O@ht{\vfil\pgfPT@box@zerodepth{\pgfPT@data@ORoman}\vfil}};%
+ \fi%
+ \else%
\ifnum\Z=25\relax% Mn
\node[font=\pgfPTOfont,text=\pgfPTOcolor,text width=\pgfPT@data@O@wd,text centered]%
at ([xshift=\pgfPT@data@O@x,yshift=-\pgfPT@data@O@y]\Z) {\vbox to\pgfPT@data@O@ht{\vfil\pgfPT@box@zerodepth{\resizebox{.95\linewidth}{\height}{\pgfPT@data@O}}
@@ -669,6 +680,7 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT
\node[font=\pgfPTOfont,text=\pgfPTOcolor,text width=\pgfPT@data@O@wd,text centered]%
at ([xshift=\pgfPT@data@O@x,yshift=-\pgfPT@data@O@y]\Z) {\vbox to\pgfPT@data@O@ht{\vfil\pgfPT@box@zerodepth{\pgfPT@data@O}\vfil}};%
\fi%
+ \fi%
\fi%
% Tmelt -> Melting Point (Kelvin)
\ifpgfPT@Tmelt\relax%
@@ -1188,15 +1200,21 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT
% groups -->
\ifpgfPTgrlabels%
\global\pgfPTis@labeldrawnfalse%
+\pgfPT@gr@numbers{\pgfPTgrnum}% new in v2.1.1
\ifpgfPTIUPACMMIX%
\foreach \group in {1,2,4,5,...,18} {%
\edef\pgfPT@@grlist{\csname pgfPT@cells@G\@Roman\group\endcsname}%
\foreach \Zsearch in \pgfPT@@grlist{%
\foreach \Z in \pgfPT@@cellslist {%
\ifnum\Z=\Zsearch\global\pgfPTis@labeldrawntrue%
- {\pgfPTlabfont\pgfPTnumberfont\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else\let\pgfPT@printnum\relax\fi%
- \node[above,font=\pgfPTlabfont,text=\pgfPTlabgrcolor] at%
- ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{\group}};}\breakforeach\fi%
+ {\pgfPTlabfont\pgfPTnumberfont\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else%
+ \ifpgfPT@grRoman\let\pgfPT@printnum\pgfPT@gr@Roman\colorlet{pgfPT@grcolor}{\pgfPTRomanlabgrcolor}\else\let\pgfPT@printnum\relax\fi\fi%
+ \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at%
+ ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{\group}};
+ \ifpgfPT@grarabic\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}%
+ \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at%
+ ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift+2ex]\Z) {\group};\fi}%
+ \breakforeach\fi%
}%
\ifpgfPTis@labeldrawn\global\pgfPTis@labeldrawnfalse\breakforeach\fi%
}%
@@ -1205,9 +1223,14 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT
\foreach \Zsearch in \pgfPT@cells@GIIILaAc{%
\foreach \Z in \pgfPT@@cellslist {%
\ifnum\Z=\Zsearch\global\pgfPTis@labeldrawntrue%
- {\pgfPTlabfont\pgfPTnumberfont\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else\let\pgfPT@printnum\relax\fi%
- \node[above,font=\pgfPTlabfont,text=\pgfPTlabgrcolor] at%
- ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{3}};}\breakforeach\fi%
+ {\pgfPTlabfont\pgfPTnumberfont\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else%
+ \ifpgfPT@grRoman\let\pgfPT@printnum\pgfPT@gr@Roman\colorlet{pgfPT@grcolor}{\pgfPTRomanlabgrcolor}\else\let\pgfPT@printnum\relax\fi\fi%
+ \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at%
+ ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{3}};
+ \ifpgfPT@grarabic\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}%
+ \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at%
+ ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift+2ex]\Z) {3};\fi}%
+ \breakforeach\fi%
}%
\ifpgfPTis@labeldrawn\global\pgfPTis@labeldrawnfalse\breakforeach\fi%
}%
@@ -1217,9 +1240,14 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT
\foreach \Zsearch in \pgfPT@@grlist{%
\foreach \Z in \pgfPT@@cellslist {%
\ifnum\Z=\Zsearch\global\pgfPTis@labeldrawntrue%
- {\pgfPTlabfont\pgfPTnumberfont\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else\let\pgfPT@printnum\relax\fi%
- \node[above,font=\pgfPTlabfont,text=\pgfPTlabgrcolor] at%
- ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{\group}};}\breakforeach\fi%
+ {\pgfPTlabfont\pgfPTnumberfont\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else%
+ \ifpgfPT@grRoman\let\pgfPT@printnum\pgfPT@gr@Roman\colorlet{pgfPT@grcolor}{\pgfPTRomanlabgrcolor}\else\let\pgfPT@printnum\relax\fi\fi%
+ \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at%
+ ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{\group}};%
+ \ifpgfPT@grarabic\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}%
+ \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at%
+ ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift+2ex]\Z) {\group};\fi}%
+ \breakforeach\fi%
}%
\ifpgfPTis@labeldrawn\global\pgfPTis@labeldrawnfalse\breakforeach\fi%
}%
diff --git a/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.pdf b/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.pdf
index 7c0b250d7c..c588490c48 100644
--- a/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.pdf
+++ b/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.tex b/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.tex
index 659f09fd72..c2b22dd9ad 100644
--- a/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.tex
+++ b/graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.tex
@@ -10,7 +10,7 @@
\date{\today}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}%
-\usefont{T1}{verdana}{m}{n}%
+\usefont{T1}{vna}{m}{n}
\begin{titlepage}
\vspace{\stretch{1}}%
\maketitle\thispagestyle{empty}%
@@ -114,8 +114,8 @@ This option works with the \textrm{Xe\LaTeX} and \textrm{Lua\LaTeX} engines to t
\\ [3pt]\pgfPTMline
\subsection{Interaction with other packages}
\subsubsection{fontspec}
-To correctly set the font in each cell contents the command \bs{fontspec} must be used. For example if you want to use \textit{Arial} for the \red{name font}, it must be set using \red{font name=\bs{fontspec}\lb Arial\rb\bs{selectfont}}.\\ All other font selection commands, \eg, \bs{large}, \mbox{\bs{itshape}}, are used as usual. For example if you want to use \textit{Arial}\hfil\ in\hfil\ \textit{large}\hfil\ size\hfil\ and\hfil\ \textit{bold}\hfil\ weight\hfil\ for\hfil\ the \red{name font}, then you type
-\\ \makebox[\linewidth][s]{\red{font name=\bs{large}\bs{bfseries}\bs{fontspec}\lb Arial\rb\bs{selectfont}}\hfil\ or\hfil\ \red{font name=\bs{fontspec}\lb Arial\rb}}
+To correctly set the font in each cell contents the command \bs{fontspec} must be used. For example if you want to use \textit{Arial} for the \red{name font}, it must be set using \red{name font=\bs{fontspec}\lb Arial\rb\bs{selectfont}}.\\ All other font selection commands, \eg, \bs{large}, \mbox{\bs{itshape}}, are used as usual. For example if you want to use \textit{Arial}\hfil\ in\hfil\ \textit{large}\hfil\ size\hfil\ and\hfil\ \textit{bold}\hfil\ weight\hfil\ for\hfil\ the \red{name font}, then you type
+\\ \makebox[\linewidth][s]{\red{name font=\bs{large}\bs{bfseries}\bs{fontspec}\lb Arial\rb\bs{selectfont}}\hfil\ or\hfil\ \red{name font=\bs{fontspec}\lb Arial\rb}}
\\ \bs{large}\bs{bfseries}\bs{selectfont}.
\subsubsection{ragged2e}
Using \texttt{\large\textcolor{green!40!black}{\textbackslash usepackage}\textcolor{blue!70!black}{[}\textcolor{brown!60!black}{document}%
@@ -203,6 +203,8 @@ The following options and styles are used for customizing the contents available
\input{manualfiles/pgf-PeriodicTableManual_name.tex}%
\label{file:Ar}%
\input{manualfiles/pgf-PeriodicTableManual_Ar.tex}%
+\label{file:O}%
+\input{manualfiles/pgf-PeriodicTableManual_O.tex}%
\label{file:density}%
\input{manualfiles/pgf-PeriodicTableManual_density.tex}%
\label{file:ls}%
diff --git a/graphics/pgf/contrib/pgf-periodictable/pgfPT.data.tex b/graphics/pgf/contrib/pgf-periodictable/pgfPT.data.tex
index 62d62e0f89..0a87ee38dd 100644
--- a/graphics/pgf/contrib/pgf-periodictable/pgfPT.data.tex
+++ b/graphics/pgf/contrib/pgf-periodictable/pgfPT.data.tex
@@ -142,122 +142,122 @@
}%
% ############################ THE DATA #############################
%
-\def\pgfPT@data@i{H/CS,1.008/Ar,[1.0078\noexpand\pgfPT@virgula1.0082]/Arstar,0/radio,53/R,32/Rcov,139.9\noexpand\pgfPT@espaco(1-)/Rion,1312/Ei,2.2/eneg,72.77/eaff,\noexpand\pgfPT@pm1/O,13.99/Tmelt,-259.16/TmeltC,20.271/Tboil,-252.879/TboilC,1/eDist,::1s+1/eConfign,::1s+1/eConfignl,0.08988/d,28.836/Cp,0.1805/kT,hex/ls,470/lsa,470/lsb,340/lsc,0.72/lsca,1766/DiscY,21/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@ii{He/CS,4.0026/Ar,4.0026/Arstar,0/radio,31/R,46/Rcov,---/Rion,2372.3/Ei,---/eneg,0/eaff,---/O,---/Tmelt,---/TmeltC,4.222/Tboil,-268.928/TboilC,2/eDist,::1s+2/eConfign,::1s+2/eConfignl,0.1786/d,20.786/Cp,0.1513/kT,fcc/ls,424.4/lsa,/lsb,/lsc,/lsca,1895/DiscY,19/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@iii{Li/CS,6.94/Ar,[6.938\noexpand\pgfPT@virgula6.997] /Arstar,0/radio,167/R,133/Rcov,76\noexpand\pgfPT@espaco(1+)/Rion,520.2/Ei,0.98/eneg,59.63/eaff,+1/O,453.65/Tmelt,180.5/TmeltC,1603/Tboil,1330/TboilC,2\noexpand\pgfPTeDistsep1/eDist,[He]::2s+1/eConfign,[He]::2s+1/eConfignl,534/d,24.86/Cp,84.8/kT,bcc/ls,350.93/lsa,/lsb,/lsc,/lsca,1817/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@iv{Be/CS,9.0122/Ar,9.0122/Arstar,0/radio,112/R,10/Rcov,45\noexpand\pgfPT@espaco(2+)/Rion,899.5/Ei,1.57/eneg,0/eaff,+2/O,1560/Tmelt,1287/TmeltC,2742/Tboil,2469/TboilC,2\noexpand\pgfPTeDistsep2/eDist,[He]::2s+2/eConfign,[He]::2s+2/eConfignl,1850/d,16.443/Cp,200/kT,hcp/ls,228.56/lsa,/lsb,358.32/lsc,1.57/lsca,1798/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@v{B/CS,10.81/Ar,[10.806\noexpand\pgfPT@virgula10.821] /Arstar,0/radio,87/R,85/Rcov,27\noexpand\pgfPT@espaco(3+)/Rion,800.6/Ei,2.04/eneg,26.99/eaff,+3/O,2349/Tmelt,2076/TmeltC,4200/Tboil,3927/TboilC,2\noexpand\pgfPTeDistsep3/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+1/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+1/eConfignl,2340/d,11.087/Cp,27.4/kT,rho/ls,505.66/lsa,/lsb,/lsc,/lsca,1808/DiscY,7/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@vi{C/CS,12.011/Ar,[12.009\noexpand\pgfPT@virgula12.012]/Arstar,0/radio,67/R,75/Rcov,16\noexpand\pgfPT@espaco(4+)/Rion,1086.5/Ei,2.55/eneg,121.78/eaff,0\noexpand\pgfPT@virgula\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,3823/Tmelt,3550/TmeltC,4300/Tboil,4027/TboilC,2\noexpand\pgfPTeDistsep4/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+2/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+2/eConfignl,2267/d,8.517/Cp,140/kT,hex/ls,246.12/lsa,/lsb,670.79/lsc,2.73/lsca,3750\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@vii{N/CS,14.007/Ar,[14.006\noexpand\pgfPT@virgula14.008]/Arstar,0/radio,56/R,71/Rcov,146\noexpand\pgfPT@espaco(3-)\noexpand\pgfPT@virgula16\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula13\noexpand\pgfPT@espaco(5+)/Rion,1402.3/Ei,3.04/eneg,0/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5/O,63.15/Tmelt,-210/TmeltC,77.355/Tboil,-195.795/TboilC,2\noexpand\pgfPTeDistsep5/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+3/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+3/eConfignl,1.251/d,29.124/Cp,0.02583/kT,hex/ls,386.1/lsa,386.1/lsb,626.5/lsc,1.62/lsca,1772/DiscY,21/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@viii{O/CS,15.999/Ar,[15.999\noexpand\pgfPT@virgula16.000]/Arstar,0/radio,48/R,63/Rcov,140\noexpand\pgfPT@espaco(2-)/Rion,1313.9/Ei,3.44/eneg,140.98/eaff,--2/O,54.36/Tmelt,-218.79/TmeltC,90.188/Tboil,-182.962/TboilC,2\noexpand\pgfPTeDistsep6/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+4/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+4/eConfignl,1.429/d,29.378/Cp,0.02658/kT,mono/ls,540.3/lsa,342.9/lsb,508.6/lsc,0.94/lsca,1771/DiscY,19/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@ix{F/CS,18.998/Ar,18.998/Arstar,0/radio,42/R,64/Rcov,133\noexpand\pgfPT@espaco(1-)/Rion,1681/Ei,3.98/eneg,328.16/eaff,--1/O,53.48/Tmelt,-219.67/TmeltC,85.04/Tboil,-188.11/TboilC,2\noexpand\pgfPTeDistsep7/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+5/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+5/eConfignl,1.7/d,31.304/Cp,0.0277/kT,mono/ls,550/lsa,328/lsb,728/lsc,1.32/lsca,1886/DiscY,5/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@x{Ne/CS,20.18/Ar,20.18/Arstar,0/radio,38/R,67/Rcov,---/Rion,2080.7/Ei,---/eneg,0/eaff,---/O,24.56/Tmelt,-248.59/TmeltC,27.104/Tboil,-246.046/TboilC,2\noexpand\pgfPTeDistsep8/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+6/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+6/eConfignl,0.9002/d,20.786/Cp,0.0491/kT,fcc/ls,442.9/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@xi{Na/CS,22.99/Ar,22.99/Arstar,0/radio,190/R,155/Rcov,102\noexpand\pgfPT@espaco(1+)/Rion,495.8/Ei,0.93/eneg,52.87/eaff,+1/O,370.944/Tmelt,97.794/TmeltC,1156.09/Tboil,882.94/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Ne]::3s+1/eConfign,[Ne]::3s+1/eConfignl,968/d,28.23/Cp,142/kT,bcc/ls,429.06/lsa,/lsb,/lsc,/lsca,1807/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xii{Mg/CS,24.305/Ar,[24.304\noexpand\pgfPT@virgula24.307] /Arstar,0/radio,145/R,139/Rcov,72\noexpand\pgfPT@espaco(2+)/Rion,737.7/Ei,1.31/eneg,0/eaff,+2/O,923/Tmelt,650/TmeltC,1363/Tboil,1090/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Ne]::3s+2/eConfign,[Ne]::3s+2/eConfignl,1738/d,24.869/Cp,156/kT,hcp/ls,320.94/lsa,/lsb,521.05/lsc,1.62/lsca,1755/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xiii{Al/CS,26.982/Ar,26.982/Arstar,0/radio,118/R,126/Rcov,53.5\noexpand\pgfPT@espaco(3+)/Rion,577.5/Ei,1.61/eneg,41.76/eaff,+3/O,933.47/Tmelt,660.32/TmeltC,2743/Tboil,2470/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep3/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+1/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+1/eConfignl,2700/d,24.2/Cp,237/kT,fcc/ls,404.95/lsa,/lsb,/lsc,/lsca,1824/DiscY,2/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xiv{Si/CS,28.085/Ar,[28.084\noexpand\pgfPT@virgula28.086]/Arstar,0/radio,111/R,116/Rcov,40\noexpand\pgfPT@espaco(4+)/Rion,786.5/Ei,1.9/eneg,134.07/eaff,\noexpand\pgfPT@pm4/O,1687/Tmelt,1414/TmeltC,3538/Tboil,3265/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep4/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+2/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+2/eConfignl,2330/d,19.789/Cp,149/kT,dia/ls,543.095/lsa,/lsb,/lsc,/lsca,1823/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xv{P/CS,30.974/Ar,30.974/Arstar,0/radio,98/R,111/Rcov,212\noexpand\pgfPT@espaco(3-)\noexpand\pgfPT@virgula44\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula38\noexpand\pgfPT@espaco(5+)/Rion,1011.8/Ei,2.19/eneg,72.04/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,317.3/Tmelt,44.15/TmeltC,550/Tboil,277/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep5/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+3/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+3/eConfignl,1823/d,23.824/Cp,0.236/kT,tric/ls,1145/lsa,550.3/lsb,1126.1/lsc,0.98/lsca,1669/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xvi{S/CS,32.06/Ar,[32.059\noexpand\pgfPT@virgula32.076]/Arstar,0/radio,88/R,103/Rcov,184\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula37\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula29\noexpand\pgfPT@espaco(6+)/Rion,999.6/Ei,2.58/eneg,200.41/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,388.36/Tmelt,115.21/TmeltC,717.8/Tboil,444.6/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep6/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+4/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+4/eConfignl,1960/d,22.75/Cp,0.205/kT,fcort/ls,1046.5/lsa,1286.6/lsb,2448.6/lsc,2.34/lsca,500\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xvii{Cl/CS,35.45/Ar,[35.446\noexpand\pgfPT@virgula35.457]/Arstar,0/radio,79/R,99/Rcov,181\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula12\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula27\noexpand\pgfPT@espaco(7+)/Rion,1251.2/Ei,3.16/eneg,348.58/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,171.6/Tmelt,-101.5/TmeltC,239.11/Tboil,-34.04/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep7/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+5/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+5/eConfignl,3.2/d,33.949/Cp,0.0089/kT,bcort/ls,622.35/lsa,445.61/lsb,817.85/lsc,1.31/lsca,1774/DiscY,18/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@xviii{Ar/CS,39.95/Ar,[39.792\noexpand\pgfPT@virgula39.963]/Arstar,0/radio,71/R,96/Rcov,---/Rion,1520.6/Ei,---/eneg,0/eaff,0/O,83.81/Tmelt,-189.34/TmeltC,87.302/Tboil,-185.848/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+6/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+6/eConfignl,1.784/d,20.786/Cp,0.01772/kT,fcc/ls,525.6/lsa,/lsb,/lsc,/lsca,1894/DiscY,21/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@xix{K/CS,39.098/Ar,39.098/Arstar,0/radio,243/R,196/Rcov,138\noexpand\pgfPT@espaco(1+)/Rion,418.8/Ei,0.82/eneg,48.38/eaff,+1/O,336.7/Tmelt,63.5/TmeltC,1032/Tboil,759/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Ar]::4s+1/eConfign,[Ar]::4s+1/eConfignl,890/d,29.6/Cp,102.5/kT,bcc/ls,532.8/lsa,/lsb,/lsc,/lsca,1807/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xx{Ca/CS,40.078/Ar,40.078(4) /Arstar,0/radio,194/R,171/Rcov,100\noexpand\pgfPT@espaco(2+)/Rion,589.8/Ei,1/eneg,2.37/eaff,+2/O,1115/Tmelt,842/TmeltC,1757/Tboil,1484/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Ar]::4s+2/eConfign,[Ar]::4s+2/eConfignl,1550/d,25.929/Cp,201/kT,fcc/ls,558.84/lsa,/lsb,/lsc,/lsca,1808/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxi{Sc/CS,44.956/Ar,44.956/Arstar,0/radio,184/R,148/Rcov,74.5\noexpand\pgfPT@espaco(3+)/Rion,633.1/Ei,1.36/eneg,18/eaff,+3/O,1814/Tmelt,1541/TmeltC,3109/Tboil,2836/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+1\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+1/eConfignl,2985/d,25.52/Cp,15.8/kT,hcp/ls,330.9/lsa,/lsb,527.33/lsc,1.59/lsca,1879/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxii{Ti/CS,47.867/Ar,47.867/Arstar,0/radio,176/R,136/Rcov,86\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula67\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula60.5\noexpand\pgfPT@espaco(4+)/Rion,658.8/Ei,1.54/eneg,7.29/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4/O,1941/Tmelt,1668/TmeltC,3560/Tboil,3287/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+2\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+2/eConfignl,4506/d,25.06/Cp,21.9/kT,hcp/ls,295.03/lsa,/lsb,468.31/lsc,1.59/lsca,1791/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxiii{V/CS,50.942/Ar,50.942/Arstar,0/radio,171/R,134/Rcov,79\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula64\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula58\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula54\noexpand\pgfPT@espaco(5+)/Rion,650.9/Ei,1.63/eneg,50.91/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5/O,2183/Tmelt,1910/TmeltC,3680/Tboil,3407/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+3\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+3/eConfignl,6110/d,24.89/Cp,30.7/kT,bcc/ls,302.31/lsa,/lsb,/lsc,/lsca,1830/DiscY,23/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxiv{Cr/CS,51.996/Ar,51.996/Arstar,0/radio,166/R,122/Rcov,73\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula61.5\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula44\noexpand\pgfPT@espaco(6+)/Rion,652.9/Ei,1.66/eneg,65.21/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+6/O,2180/Tmelt,1907/TmeltC,2755/Tboil,2482/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep1/eDist,[Ar]::3d+5\noexpand\pgfPT@virgula4s+1/eConfign,[Ar]::4s+1\noexpand\pgfPT@virgula3d+5/eConfignl,7150/d,23.35/Cp,93.9/kT,bcc/ls,288.46/lsa,/lsb,/lsc,/lsca,1797/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxv{Mn/CS,54.938/Ar,54.938/Arstar,0/radio,161/R,119/Rcov,67\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula58\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula25.5\noexpand\pgfPT@espaco(6+)\noexpand\pgfPT@virgula46\noexpand\pgfPT@espaco(7+)/Rion,717.3/Ei,1.55/eneg,0/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6\noexpand\pgfPT@virgula+7/O,1519/Tmelt,1246/TmeltC,2334/Tboil,2061/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+5\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+5/eConfignl,7210/d,26.32/Cp,7.81/kT,bcc/ls,891.39/lsa,/lsb,/lsc,/lsca,1774/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxvi{Fe/CS,55.845/Ar,55.845(2)/Arstar,0/radio,156/R,116/Rcov,61\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula55\noexpand\pgfPT@espaco(3+)/Rion,762.5/Ei,1.83/eneg,14.79/eaff,+2\noexpand\pgfPT@virgula+3/O,1811/Tmelt,1538/TmeltC,3134/Tboil,2861/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+6\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+6/eConfignl,7860/d,25.1/Cp,80.4/kT,bcc/ls,286.64/lsa,/lsb,/lsc,/lsca,2000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxvii{Co/CS,58.933/Ar,58.933/Arstar,0/radio,152/R,111/Rcov,65\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula54.5\noexpand\pgfPT@espaco(3+)/Rion,760.4/Ei,1.88/eneg,63.9/eaff,+2\noexpand\pgfPT@virgula+3/O,1768/Tmelt,1495/TmeltC,3200/Tboil,2927/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+7\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+7/eConfignl,8900/d,24.81/Cp,100/kT,hcp/ls,250.71/lsa,/lsb,406.95/lsc,1.62/lsca,1735/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxviii{Ni/CS,58.693/Ar,58.693/Arstar,0/radio,149/R,110/Rcov,69\noexpand\pgfPT@espaco(2+)/Rion,737.1/Ei,1.91/eneg,111.65/eaff,+2/O,1728/Tmelt,1455/TmeltC,3003/Tboil,2730/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+8\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+8/eConfignl,8908/d,26.07/Cp,90.9/kT,fcc/ls,352.4/lsa,/lsb,/lsc,/lsca,1751/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxix{Cu/CS,63.546/Ar,63.546(3)/Arstar,0/radio,145/R,112/Rcov,77\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula73\noexpand\pgfPT@espaco(2+)/Rion,745.5/Ei,1.9/eneg,119.24/eaff,+1\noexpand\pgfPT@virgula+2/O,1357.77/Tmelt,1084.62/TmeltC,2835/Tboil,2562/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+1/eConfign,[Ar]::4s+1\noexpand\pgfPT@virgula3d+10/eConfignl,8960/d,24.44/Cp,401/kT,fcc/ls,361.47/lsa,/lsb,/lsc,/lsca,8000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxx{Zn/CS,65.38/Ar,65.38(2)/Arstar,0/radio,142/R,118/Rcov,74\noexpand\pgfPT@espaco(2+)/Rion,906.4/Ei,1.65/eneg,0/eaff,+2/O,692.68/Tmelt,419.53/TmeltC,1180/Tboil,907/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10/eConfignl,7140/d,25.39/Cp,116/kT,hcp/ls,266.49/lsa,/lsb,494.68/lsc,1.86/lsca,1746/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxxi{Ga/CS,69.723/Ar,69.723/Arstar,0/radio,136/R,124/Rcov,62\noexpand\pgfPT@espaco(3+)/Rion,578.8/Ei,1.81/eneg,29.06/eaff,+3/O,302.9146/Tmelt,29.7646/TmeltC,2673/Tboil,2400/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+1/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+1/eConfignl,5910/d,25.86/Cp,40.6/kT,bcort/ls,452.58/lsa,451.86/lsb,765.7/lsc,1.69/lsca,1875/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxxii{Ge/CS,72.63/Ar,72.630(8)/Arstar,0/radio,125/R,121/Rcov,73\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(4+)/Rion,762/Ei,2.01/eneg,118.94/eaff,+2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,1211.4/Tmelt,938.25/TmeltC,3106/Tboil,2833/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+2/eConfignl,5323/d,23.222/Cp,60.2/kT,dia/ls,565.791/lsa,/lsb,/lsc,/lsca,1886/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxxiii{As/CS,74.922/Ar,74.922/Arstar,0/radio,114/R,121/Rcov,58\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula46\noexpand\pgfPT@espaco(5+)/Rion,947/Ei,2.18/eneg,77.65/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,1090/Tmelt,817/TmeltC,887/Tboil,614/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+3/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+3/eConfignl,5727/d,24.64/Cp,50.2/kT,rho/ls,375.98/lsa,375.98/lsb,1054.75/lsc,2.81/lsca,1250/DiscY,12/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxxiv{Se/CS,78.971/Ar,78.971(8)/Arstar,0/radio,103/R,116/Rcov,198\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula50\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula42\noexpand\pgfPT@espaco(6+)/Rion,941/Ei,2.55/eneg,194.96/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,494/Tmelt,221/TmeltC,958/Tboil,685/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+4/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+4/eConfignl,4810/d,25.363/Cp,0.519/kT,mono/ls,905.4/lsa,908.3/lsb,1160.1/lsc,1.28/lsca,1817/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxxv{Br/CS,79.904/Ar,[79.901\noexpand\pgfPT@virgula79.907]/Arstar,0/radio,94/R,114/Rcov,196\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula59\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula31\noexpand\pgfPT@espaco(5+)/Rion,1139.9/Ei,2.96/eneg,324.54/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5/O,265.8/Tmelt,-7.3/TmeltC,332/Tboil,58.8/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+5/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+5/eConfignl,3102.8/d,75.69/Cp,0.122/kT,bcort/ls,672.65/lsa,464.51/lsb,870.23/lsc,1.29/lsca,1825/DiscY,5/DiscC,1/spectra,liquido/cor}%
-\def\pgfPT@data@xxxvi{Kr/CS,83.798/Ar,83.798(2)/Arstar,0/radio,88/R,117/Rcov,---/Rion,1350.8/Ei,3/eneg,0/eaff,0/O,115.78/Tmelt,-157.37/TmeltC,119.735/Tboil,-153.415/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+6/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+6/eConfignl,3.749/d,20.786/Cp,0.00943/kT,fcc/ls,570.6/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@xxxvii{Rb/CS,85.468/Ar,85.468/Arstar,0/radio,265/R,210/Rcov,152\noexpand\pgfPT@espaco(1+)/Rion,403/Ei,0.82/eneg,46.88/eaff,+1/O,312.45/Tmelt,39.3/TmeltC,961/Tboil,688/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Kr]::5s+1/eConfign,[Kr]::5s+1/eConfignl,1532/d,31.06/Cp,58.2/kT,bcc/ls,558.5/lsa,/lsb,/lsc,/lsca,1861/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxxviii{Sr/CS,87.62/Ar,87.62/Arstar,0/radio,219/R,185/Rcov,118\noexpand\pgfPT@espaco(2+)/Rion,549.5/Ei,0.95/eneg,5.02/eaff,+2/O,1050/Tmelt,777/TmeltC,1650/Tboil,1382/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Kr]::5s+2/eConfign,[Kr]::5s+2/eConfignl,2640/d,26.4/Cp,35.4/kT,fcc/ls,608.49/lsa,/lsb,/lsc,/lsca,1787/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxxix{Y/CS,88.906/Ar,88.906/Arstar,0/radio,212/R,163/Rcov,90\noexpand\pgfPT@espaco(3+)/Rion,600/Ei,1.22/eneg,29.6/eaff,+3/O,1799/Tmelt,1526/TmeltC,3203/Tboil,2930/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+1\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+1/eConfignl,4472/d,26.53/Cp,17.2/kT,hcp/ls,364.74/lsa,/lsb,573.06/lsc,1.57/lsca,1794/DiscY,4/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xl{Zr/CS,91.224/Ar,91.224(2)/Arstar,0/radio,206/R,154/Rcov,72\noexpand\pgfPT@espaco(4+)/Rion,640.1/Ei,1.33/eneg,41.81/eaff,+4/O,2128/Tmelt,1855/TmeltC,4650/Tboil,4377/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+2\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+2/eConfignl,6520/d,25.36/Cp,22.6/kT,hcp/ls,323.2/lsa,/lsb,514.7/lsc,1.59/lsca,1789/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xli{Nb/CS,92.906/Ar,92.906/Arstar,0/radio,198/R,147/Rcov,64\noexpand\pgfPT@espaco(5+)/Rion,652.1/Ei,1.6/eneg,88.52/eaff,+5/O,2750/Tmelt,2477/TmeltC,5017/Tboil,4744/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+4\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+4/eConfignl,8570/d,24.6/Cp,53.7/kT,bcc/ls,330.04/lsa,/lsb,/lsc,/lsca,1801/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xlii{Mo/CS,95.95/Ar,95.95/Arstar,0/radio,190/R,138/Rcov,65\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula59\noexpand\pgfPT@espaco(6+)/Rion,684.3/Ei,2.16/eneg,72.1/eaff,+4\noexpand\pgfPT@virgula+6/O,2896/Tmelt,2623/TmeltC,4912/Tboil,4639/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+5\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+5/eConfignl,10280/d,24.06/Cp,138/kT,bcc/ls,314.69/lsa,/lsb,/lsc,/lsca,1781/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xliii{Tc/CS,[98]/Ar,/Arstar,1/radio,183/R,128/Rcov,64.5\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula56\noexpand\pgfPT@espaco(7+)/Rion,702/Ei,1.9/eneg,53/eaff,+4\noexpand\pgfPT@virgula+7/O,2430/Tmelt,2157/TmeltC,4538/Tboil,4265/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+5\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+5/eConfignl,11000/d,24.27/Cp,50.6/kT,hcp/ls,273.5/lsa,/lsb,438.8/lsc,1.6/lsca,1937/DiscY,11/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@xliv{Ru/CS,101.07/Ar,101.07/Arstar,0/radio,178/R,125/Rcov,68\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula62\noexpand\pgfPT@espaco(4+)/Rion,710.2/Ei,2.2/eneg,100.96/eaff,+3\noexpand\pgfPT@virgula+4/O,2607/Tmelt,2334/TmeltC,4423/Tboil,4150/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+7\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+7/eConfignl,12450/d,24.06/Cp,117/kT,hcp/ls,270.55/lsa,/lsb,428.16/lsc,1.58/lsca,1844/DiscY,15/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xlv{Rh/CS,102.91/Ar,102.91/Arstar,0/radio,173/R,125/Rcov,66.5\noexpand\pgfPT@espaco(3+)/Rion,719.7/Ei,2.28/eneg,110.27/eaff,+3/O,2237/Tmelt,1964/TmeltC,3968/Tboil,3695/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+8\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+8/eConfignl,12410/d,24.98/Cp,150/kT,fcc/ls,380.34/lsa,/lsb,/lsc,/lsca,1804/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xlvi{Pd/CS,106.42/Ar,106.42/Arstar,0/radio,169/R,120/Rcov,86\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula61.5\noexpand\pgfPT@espaco(4+)/Rion,804.4/Ei,2.2/eneg,54.24/eaff,0\noexpand\pgfPT@virgula+2\noexpand\pgfPT@virgula+4/O,1828.05/Tmelt,1554.9/TmeltC,3236/Tboil,2963/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18/eDist,[Kr]::4d+10/eConfign,[Kr]::4d+10/eConfignl,12023/d,25.98/Cp,71.8/kT,fcc/ls,389.02/lsa,/lsb,/lsc,/lsca,1802/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xlvii{Ag/CS,107.87/Ar,107.87/Arstar,0/radio,165/R,128/Rcov,115\noexpand\pgfPT@espaco(1+)/Rion,731/Ei,1.93/eneg,125.86/eaff,+1/O,1234.93/Tmelt,961.78/TmeltC,2483/Tboil,2210/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+10/eConfignl,10490/d,25.35/Cp,429/kT,fcc/ls,408.57/lsa,/lsb,/lsc,/lsca,3000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,0/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xlviii{Cd/CS,112.41/Ar,112.41/Arstar,0/radio,161/R,136/Rcov,95\noexpand\pgfPT@espaco(2+)/Rion,867.8/Ei,1.69/eneg,0/eaff,+2/O,594.22/Tmelt,321.07/TmeltC,1040/Tboil,767/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10/eConfignl,8650/d,26.02/Cp,96.6/kT,hcp/ls,297.88/lsa,/lsb,561.67/lsc,1.89/lsca,1817/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xlix{In/CS,114.82/Ar,114.82/Arstar,0/radio,156/R,142/Rcov,80\noexpand\pgfPT@espaco(3+)/Rion,558.3/Ei,1.78/eneg,37.04/eaff,+3/O,429.75/Tmelt,156.6/TmeltC,2345/Tboil,2072/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+1/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+1/eConfignl,7310/d,26.74/Cp,81.8/kT,tetr/ls,325.17/lsa,/lsb,494.59/lsc,1.52/lsca,1863/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@l{Sn/CS,118.71/Ar,118.71/Arstar,0/radio,145/R,140/Rcov,118\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula69\noexpand\pgfPT@espaco(4+)/Rion,708.6/Ei,1.96/eneg,107.3/eaff,+2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,505.08/Tmelt,231.93/TmeltC,2875/Tboil,2602/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+2/eConfignl,7265/d,25.77/Cp,66.8/kT,ctetr/ls,583.1/lsa,/lsb,318.1/lsc,0.55/lsca,3000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,0/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@li{Sb/CS,121.76/Ar,121.76/Arstar,0/radio,133/R,140/Rcov,76\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula60\noexpand\pgfPT@espaco(5+)/Rion,834/Ei,2.05/eneg,101.06/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,903.78/Tmelt,630.63/TmeltC,1908/Tboil,1635/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+3/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+3/eConfignl,6697/d,25.23/Cp,24.4/kT,rho/ls,430.7/lsa,/lsb,1127.3/lsc,2.62/lsca,815/DiscY,12/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lii{Te/CS,127.6/Ar,127.60(3)/Arstar,0/radio,123/R,136/Rcov,221\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula97\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula56\noexpand\pgfPT@espaco(6+)/Rion,869.3/Ei,2.1/eneg,190.16/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,722.66/Tmelt,449.51/TmeltC,1261/Tboil,988/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+4/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+4/eConfignl,6240/d,25.73/Cp,3/kT,rho/ls,445.72/lsa,/lsb,592.9/lsc,1.33/lsca,1782/DiscY,14/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@liii{I/CS,126.9/Ar,126.9/Arstar,0/radio,115/R,133/Rcov,220\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula95\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(7+)/Rion,1008.4/Ei,2.66/eneg,295.15/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,386.85/Tmelt,113.7/TmeltC,457.4/Tboil,184.3/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+5/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+5/eConfignl,4933/d,54.44/Cp,0.449/kT,bcort/ls,726.97/lsa,479.03/lsb,979.42/lsc,1.35/lsca,1811/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@liv{Xe/CS,131.29/Ar,131.29/Arstar,0/radio,108/R,131/Rcov,---/Rion,1170.4/Ei,2.6/eneg,0/eaff,0/O,161.4/Tmelt,-111.75/TmeltC,165.051/Tboil,-108.099/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+6/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+6/eConfignl,5.894/d,20.786/Cp,0.00565/kT,fcc/ls,620.23/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@lv{Cs/CS,132.91/Ar,132.91/Arstar,0/radio,298/R,232/Rcov,167\noexpand\pgfPT@espaco(1+)/Rion,375.7/Ei,0.79/eneg,45.51/eaff,+1/O,301.7/Tmelt,28.5/TmeltC,944/Tboil,671/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Xe]::6s+1/eConfign,[Xe]::6s+1/eConfignl,1930/d,32.21/Cp,35.9/kT,bcc/ls,614.1/lsa,/lsb,/lsc,/lsca,1860/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lvi{Ba/CS,137.33/Ar,137.33/Arstar,0/radio,253/R,196/Rcov,135\noexpand\pgfPT@espaco(2+)/Rion,502.9/Ei,0.89/eneg,13.95/eaff,+2/O,1000/Tmelt,727/TmeltC,1910/Tboil,1637/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::6s+2/eConfign,[Xe]::6s+2/eConfignl,3510/d,28.07/Cp,18.4/kT,bcc/ls,501.9/lsa,/lsb,/lsc,/lsca,1808/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lvii{La/CS,138.91/Ar,138.91/Arstar,0/radio,226/R,180/Rcov,103.2\noexpand\pgfPT@espaco(3+)/Rion,538.1/Ei,1.1/eneg,53.8/eaff,+3/O,1193/Tmelt,920/TmeltC,3737/Tboil,3464/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula5d+1/eConfignl,6162/d,27.11/Cp,13.4/kT,hex/ls,377.2/lsa,/lsb,1214.4/lsc,3.22/lsca,1838/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lviii{Ce/CS,140.12/Ar,140.12/Arstar,0/radio,210/R,163/Rcov,101\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula87\noexpand\pgfPT@espaco(4+)/Rion,534.4/Ei,1.12/eneg,55/eaff,+3\noexpand\pgfPT@virgula+4/O,1068/Tmelt,795/TmeltC,3716/Tboil,3443/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep19\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+1\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+1\noexpand\pgfPT@virgula5d+1/eConfignl,6770/d,26.94/Cp,11.3/kT,hex/ls,362/lsa,/lsb,599/lsc,1.65/lsca,1803/DiscY,9/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lix{Pr/CS,140.91/Ar,140.91/Arstar,0/radio,247/R,17/Rcov,99\noexpand\pgfPT@espaco(3+)/Rion,527/Ei,1.13/eneg,10.54/eaff,+3/O,1208/Tmelt,935/TmeltC,3403/Tboil,3130/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep21\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+3\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+3/eConfignl,6770/d,27.2/Cp,12.5/kT,hex/ls,367.21/lsa,/lsb,1183.26/lsc,3.22/lsca,1885/DiscY,1/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lx{Nd/CS,144.24/Ar,144.24/Arstar,0/radio,206/R,17/Rcov,98.3\noexpand\pgfPT@espaco(3+)/Rion,533.1/Ei,1.14/eneg,9.41/eaff,+3/O,1297/Tmelt,1024/TmeltC,3347/Tboil,3074/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep22\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+4\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+4/eConfignl,7010/d,27.45/Cp,16.5/kT,hex/ls,365.82/lsa,/lsb,1179.66/lsc,3.22/lsca,1885/DiscY,1/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxi{Pm/CS,[145]/Ar,[145]/Arstar,1/radio,205/R,173/Rcov,97\noexpand\pgfPT@espaco(3+)/Rion,540/Ei,1.13/eneg,12.45/eaff,+3/O,1315/Tmelt,1042/TmeltC,3273/Tboil,3000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep23\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+5\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+5/eConfignl,7260/d,---/Cp,17.9/kT,hex/ls,365/lsa,/lsb,1165/lsc,3.19/lsca,1945/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@lxii{Sm/CS,150.36/Ar,150.36(2)/Arstar,0/radio,238/R,172/Rcov,95.8\noexpand\pgfPT@espaco(3+)/Rion,544.5/Ei,1.17/eneg,15.63/eaff,+3/O,1345/Tmelt,1072/TmeltC,2173/Tboil,1900/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep24\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+6\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+6/eConfignl,7520/d,29.54/Cp,13.3/kT,rho/ls,362.1/lsa,/lsb,2625/lsc,7.25/lsca,1879/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxiii{Eu/CS,151.96/Ar,151.96/Arstar,0/radio,231/R,168/Rcov,117\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula94.7\noexpand\pgfPT@espaco(3+)/Rion,547.1/Ei,1.2/eneg,11.2/eaff,+2\noexpand\pgfPT@virgula+3/O,1099/Tmelt,826/TmeltC,1802/Tboil,1529/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+7\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+7/eConfignl,5244/d,27.66/Cp,13.9/kT,bcc/ls,458.1/lsa,/lsb,/lsc,/lsca,1901/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxiv{Gd/CS,157.25/Ar,157.25(3)/Arstar,0/radio,233/R,169/Rcov,93.5\noexpand\pgfPT@espaco(3+)/Rion,593.4/Ei,1.2/eneg,13.22/eaff,+3/O,1585/Tmelt,1312/TmeltC,3273/Tboil,3000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+7\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+7\noexpand\pgfPT@virgula5d+1/eConfignl,7900/d,37.03/Cp,10.6/kT,hcp/ls,363.6/lsa,/lsb,578.26/lsc,1.59/lsca,1880/DiscY,20/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxv{Tb/CS,158.93/Ar,158.93/Arstar,0/radio,225/R,168/Rcov,92.3\noexpand\pgfPT@espaco(3+)/Rion,565.8/Ei,1.2/eneg,12.67/eaff,+3/O,1629/Tmelt,1356/TmeltC,3396/Tboil,3123/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep27\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+9\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+9/eConfignl,8230/d,28.91/Cp,11.1/kT,hcp/ls,360.1/lsa,/lsb,569.36/lsc,1.58/lsca,1843/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxvi{Dy/CS,162.5/Ar,162.5/Arstar,0/radio,228/R,167/Rcov,91.2\noexpand\pgfPT@espaco(3+)/Rion,573/Ei,1.22/eneg,33.96/eaff,+3/O,1680/Tmelt,1407/TmeltC,2840/Tboil,2567/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep28\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+10\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+10/eConfignl,8540/d,27.7/Cp,10.7/kT,hcp/ls,359.3/lsa,/lsb,565.37/lsc,1.57/lsca,1886/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxvii{Ho/CS,164.93/Ar,164.93/Arstar,0/radio,226/R,166/Rcov,90.1\noexpand\pgfPT@espaco(3+)/Rion,581/Ei,1.23/eneg,32.61/eaff,+3/O,1734/Tmelt,1461/TmeltC,2873/Tboil,2600/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep29\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+11\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+11/eConfignl,8790/d,27.15/Cp,16.2/kT,hcp/ls,357.73/lsa,/lsb,561.58/lsc,1.57/lsca,1878/DiscY,20/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxviii{Er/CS,167.26/Ar,167.26/Arstar,0/radio,226/R,165/Rcov,89\noexpand\pgfPT@espaco(3+)/Rion,589.3/Ei,1.24/eneg,30.1/eaff,+3/O,1802/Tmelt,1529/TmeltC,3141/Tboil,2868/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep30\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+12\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+12/eConfignl,9066/d,28.12/Cp,14.5/kT,hcp/ls,355.88/lsa,/lsb,558.74/lsc,1.57/lsca,1843/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxix{Tm/CS,168.93/Ar,168.93/Arstar,0/radio,222/R,164/Rcov,88\noexpand\pgfPT@espaco(3+)/Rion,596.7/Ei,1.25/eneg,99/eaff,+3/O,1818/Tmelt,1545/TmeltC,2223/Tboil,1950/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep31\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+13\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+13/eConfignl,9320/d,27.03/Cp,16.9/kT,hcp/ls,353.75/lsa,/lsb,555.46/lsc,1.57/lsca,1879/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxx{Yb/CS,173.05/Ar,173.05/Arstar,0/radio,222/R,170/Rcov,86.8\noexpand\pgfPT@espaco(3+)/Rion,603.4/Ei,1.1/eneg,0/eaff,+3/O,1097/Tmelt,824/TmeltC,1703/Tboil,1430/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14/eConfignl,6900/d,26.74/Cp,38.5/kT,fcc/ls,548.47/lsa,/lsb,/lsc,/lsca,1878/DiscY,20/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxi{Lu/CS,174.97/Ar,174.97/Arstar,0/radio,217/R,162/Rcov,86.1\noexpand\pgfPT@espaco(3+)/Rion,523.5/Ei,1.27/eneg,23.04/eaff,+3/O,1925/Tmelt,1652/TmeltC,3675/Tboil,3402/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+1/eConfignl,9841/d,26.86/Cp,16.4/kT,hcp/ls,350.31/lsa,/lsb,555.09/lsc,1.58/lsca,1906/DiscY,6/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxii{Hf/CS,178.49/Ar,178.49(2)/Arstar,0/radio,208/R,152/Rcov,71\noexpand\pgfPT@espaco(4+)/Rion,658.5/Ei,1.3/eneg,17.18/eaff,+4/O,2506/Tmelt,2233/TmeltC,4876/Tboil,4603/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+2\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+2/eConfignl,13310/d,25.73/Cp,23/kT,hcp/ls,319.64/lsa,/lsb,505.11/lsc,1.58/lsca,1922/DiscY,2/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxiii{Ta/CS,180.95/Ar,180.95/Arstar,0/radio,200/R,146/Rcov,64\noexpand\pgfPT@espaco(5+)/Rion,761/Ei,1.5/eneg,31/eaff,+5/O,3290/Tmelt,3017/TmeltC,5731/Tboil,5458/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+3\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+3/eConfignl,16690/d,25.36/Cp,57.5/kT,bcc/ls,330.26/lsa,/lsb,/lsc,/lsca,1802/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxiv{W/CS,183.84/Ar,183.84/Arstar,0/radio,193/R,137/Rcov,66\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula60\noexpand\pgfPT@espaco(6+)/Rion,770/Ei,2.36/eneg,78.76/eaff,+4\noexpand\pgfPT@virgula+6/O,3695/Tmelt,3422/TmeltC,6203/Tboil,5930/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+4\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+4/eConfignl,19250/d,24.27/Cp,173/kT,bcc/ls,316.52/lsa,/lsb,/lsc,/lsca,1783/DiscY,17/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxv{Re/CS,186.21/Ar,186.21/Arstar,0/radio,188/R,131/Rcov,63\noexpand\pgfPT@espaco(4+)/Rion,760/Ei,1.9/eneg,5.83/eaff,+4/O,3459/Tmelt,3186/TmeltC,5869/Tboil,5596/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+5\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+5/eConfignl,21020/d,25.48/Cp,48/kT,hcp/ls,276.1/lsa,/lsb,445.8/lsc,1.62/lsca,1925/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxvi{Os/CS,190.23/Ar,190.23(3)/Arstar,0/radio,185/R,129/Rcov,63\noexpand\pgfPT@espaco(4+)/Rion,840/Ei,2.2/eneg,103.99/eaff,+4/O,3306/Tmelt,3033/TmeltC,5285/Tboil,5012/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+6\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+6/eConfignl,22590/d,24.7/Cp,87.6/kT,hcp/ls,273.43/lsa,/lsb,431.73/lsc,1.58/lsca,1803/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxvii{Ir/CS,192.22/Ar,192.22/Arstar,0/radio,180/R,122/Rcov,68\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula62.5\noexpand\pgfPT@espaco(4+)/Rion,880/Ei,2.2/eneg,150.91/eaff,+3\noexpand\pgfPT@virgula+4/O,2719/Tmelt,2446/TmeltC,4403/Tboil,4130/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+7\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+7/eConfignl,22560/d,25.1/Cp,147/kT,fcc/ls,383.92/lsa,/lsb,/lsc,/lsca,1803/DiscY,7/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxviii{Pt/CS,195.08/Ar,195.08/Arstar,0/radio,177/R,123/Rcov,80\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula62.5\noexpand\pgfPT@espaco(4+)/Rion,870/Ei,2.28/eneg,205.04/eaff,+2\noexpand\pgfPT@virgula+4/O,2041.4/Tmelt,1768.3/TmeltC,4098/Tboil,3825/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep17\noexpand\pgfPTeDistsep1/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+9\noexpand\pgfPT@virgula6s+1/eConfign,[Xe]::6s+1\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+9/eConfignl,21450/d,25.86/Cp,71.6/kT,fcc/ls,392.35/lsa,/lsb,/lsc,/lsca,1735/DiscY,13/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxix{Au/CS,196.97/Ar,196.97/Arstar,0/radio,174/R,124/Rcov,137\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula85\noexpand\pgfPT@espaco(3+)/Rion,890.1/Ei,2.54/eneg,222.75/eaff,+1\noexpand\pgfPT@virgula+3/O,1337.33/Tmelt,1064.18/TmeltC,3243/Tboil,2970/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+1/eConfign,[Xe]::6s+1\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10/eConfignl,19300/d,25.418/Cp,318/kT,fcc/ls,407.83/lsa,/lsb,/lsc,/lsca,4000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,100/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxx{Hg/CS,200.59/Ar,200.59/Arstar,0/radio,171/R,133/Rcov,119\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula102\noexpand\pgfPT@espaco(2+)/Rion,1007.1/Ei,2/eneg,0/eaff,+1\noexpand\pgfPT@virgula+2/O,234.32/Tmelt,-38.83/TmeltC,629.88/Tboil,356.73/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10/eConfignl,13534/d,27.983/Cp,8.3/kT,rho/ls,300.9/lsa,/lsb,/lsc,/lsca,1500\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,liquido/cor}%
-\def\pgfPT@data@lxxxi{Tl/CS,204.38/Ar,[204.38\noexpand\pgfPT@virgula204.39]/Arstar,0/radio,156/R,144/Rcov,150\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula88.5\noexpand\pgfPT@espaco(3+)/Rion,589.4/Ei,1.62/eneg,30.88/eaff,+1\noexpand\pgfPT@virgula+3/O,577/Tmelt,304/TmeltC,1746/Tboil,1473/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+1/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+1/eConfignl,11850/d,26.32/Cp,46.1/kT,hcp/ls,345.66/lsa,/lsb,552.48/lsc,1.6/lsca,1861/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxxii{Pb/CS,207.2/Ar,207.2/Arstar,0/radio,154/R,144/Rcov,119\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula77.5\noexpand\pgfPT@espaco(4+)/Rion,715.6/Ei,1.87/eneg,34.42/eaff,+2\noexpand\pgfPT@virgula+4/O,600.61/Tmelt,327.46/TmeltC,2022/Tboil,1749/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+2/eConfignl,11340/d,26.65/Cp,35.3/kT,fcc/ls,495.02/lsa,/lsb,/lsc,/lsca,3800\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxxiii{Bi/CS,208.98/Ar,208.98/Arstar,0/radio,143/R,151/Rcov,103\noexpand\pgfPT@espaco(3+)/Rion,703/Ei,2.02/eneg,90.92/eaff,+3/O,544.7/Tmelt,271.5/TmeltC,1837/Tboil,1564/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+3/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+3/eConfignl,9780/d,25.52/Cp,7.97/kT,mono/ls,667.4/lsa,611.7/lsb,330.4/lsc,0.5/lsca,1400/DiscY,12/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxxiv{Po/CS,[209]/Ar,/Arstar,1/radio,135/R,145/Rcov,223\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula94\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula67\noexpand\pgfPT@espaco(6+)/Rion,812.1/Ei,2/eneg,136/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+6/O,527/Tmelt,254/TmeltC,1235/Tboil,962/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+4/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+4/eConfignl,9196/d,26.4/Cp,0/kT,sc/ls,335.9/lsa,/lsb,/lsc,/lsca,1898/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxxv{At/CS,[210]/Ar,/Arstar,1/radio,127/R,147/Rcov,62\noexpand\pgfPT@espaco(7+)/Rion,899.003/Ei,2.2/eneg,233.09/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,575/Tmelt,302/TmeltC,503/Tboil,230/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+5/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+5/eConfignl,---/d,---/Cp,1.7/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1940/DiscY,22/DiscC,0/spectra,solido/cor}%
-\def\pgfPT@data@lxxxvi{Rn/CS,[222]/Ar,/Arstar,1/radio,120/R,142/Rcov,---/Rion,1037/Ei,2.2/eneg,0/eaff,+2\noexpand\pgfPT@virgula+6/O,202/Tmelt,-71/TmeltC,211.5/Tboil,-61.7/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+6/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+6/eConfignl,9.73/d,20.786/Cp,0.00361/kT,fcc/ls,---/lsa,/lsb,/lsc,/lsca,1899/DiscY,8/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@lxxxvii{Fr/CS,[223]/Ar,/Arstar,1/radio,---/R,---/Rcov,180\noexpand\pgfPT@espaco(1+)/Rion,380/Ei,0.7/eneg,46.89/eaff,+1/O,281/Tmelt,8/TmeltC,890/Tboil,620/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Rn]::7s+1/eConfign,[Rn]::7s+1/eConfignl,---/d,31.8/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1939/DiscY,5/DiscC,0/spectra,solido/cor}%
-\def\pgfPT@data@lxxxviii{Ra/CS,[226]/Ar,/Arstar,1/radio,---/R,201/Rcov,148\noexpand\pgfPT@espaco(2+)/Rion,509.3/Ei,0.9/eneg,9.65/eaff,+2/O,973/Tmelt,700/TmeltC,2010/Tboil,1737/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::7s+2/eConfign,[Rn]::7s+2/eConfignl,5500/d,---/Cp,18.6/kT,bcc/ls,514.8/lsa,/lsb,/lsc,/lsca,1898/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxxix{Ac/CS,[227]/Ar,/Arstar,1/radio,---/R,186/Rcov,106.5\noexpand\pgfPT@espaco(3+)/Rion,499/Ei,1.1/eneg,33.77/eaff,+3/O,1323/Tmelt,1050/TmeltC,3471/Tboil,3198/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula6d+1/eConfignl,10000/d,27.2/Cp,12/kT,fcc/ls,587/lsa,/lsb,/lsc,/lsca,1902/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xc{Th/CS,232.04/Ar,232.04/Arstar,1/radio,---/R,175/Rcov,/Rion,587/Ei,1.3/eneg,58.63/eaff,+4/O,2115/Tmelt,1842/TmeltC,5061/Tboil,4788/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Rn]::6d+2\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula6d+2/eConfignl,11700/d,26.23/Cp,54/kT,fcc/ls,508.42/lsa,/lsb,/lsc,/lsca,1829/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xci{Pa/CS,231.04/Ar,231.04/Arstar,1/radio,---/R,169/Rcov,90\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula78\noexpand\pgfPT@espaco(5+)/Rion,568/Ei,1.5/eneg,53.03/eaff,+5/O,1841/Tmelt,1568/TmeltC,4273/Tboil,4000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep20\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+2\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+2\noexpand\pgfPT@virgula6d+1/eConfignl,15370/d,---/Cp,47/kT,tetr/ls,392.5/lsa,/lsb,323.8/lsc,0.82/lsca,1913/DiscY,10/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xcii{U/CS,238.03/Ar,238.03/Arstar,1/radio,---/R,170/Rcov,76\noexpand\pgfPT@espaco(5+)/Rion,597.6/Ei,1.38/eneg,30.39/eaff,+4\noexpand\pgfPT@virgula+6/O,1405.3/Tmelt,1132.2/TmeltC,4404/Tboil,4131/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep21\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+3\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+3\noexpand\pgfPT@virgula6d+1/eConfignl,19100/d,27.665/Cp,27.5/kT,bcort/ls,285.37/lsa,586.95/lsb,495.48/lsc,1.74/lsca,1789/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xciii{Np/CS,[237]/Ar,/Arstar,1/radio,---/R,171/Rcov,110\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula87\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula71\noexpand\pgfPT@espaco(7+)/Rion,604.5/Ei,1.36/eneg,45.85/eaff,+5/O,917/Tmelt,644/TmeltC,4273/Tboil,4000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep22\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+4\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+4\noexpand\pgfPT@virgula6d+1/eConfignl,20200/d,29.46/Cp,6.3/kT,bcort/ls,666.3/lsa,472.3/lsb,488.7/lsc,0.73/lsca,1940/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@xciv{Pu/CS,[244]/Ar,/Arstar,1/radio,---/R,172/Rcov,100\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula74\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula71\noexpand\pgfPT@espaco(6+)/Rion,584.7/Ei,1.28/eneg,0/eaff,+4/O,912.5/Tmelt,639.4/TmeltC,3501/Tboil,3228/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep24\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+6\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+6/eConfignl,19816/d,35.5/Cp,6.74/kT,mono/ls,618.3/lsa,482.2/lsb,1096.3/lsc,1.77/lsca,1940/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@xcv{Am/CS,[243]/Ar,/Arstar,1/radio,---/R,166/Rcov,126\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula97.5\noexpand\pgfPT@espaco(3+)/Rion,578/Ei,1.13/eneg,9.93/eaff,+3/O,1449/Tmelt,1176/TmeltC,2880/Tboil,2607/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+7\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+7/eConfignl,12000/d,62.7/Cp,10/kT,hex/ls,346.81/lsa,/lsb,1124.1/lsc,3.24/lsca,1944/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@xcvi{Cm/CS,[247]/Ar,/Arstar,1/radio,---/R,166/Rcov,97\noexpand\pgfPT@espaco(3+)/Rion,581/Ei,1.28/eneg,27.17/eaff,+3/O,1613/Tmelt,1340/TmeltC,3383/Tboil,3110/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+7\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+7\noexpand\pgfPT@virgula6d+1/eConfignl,13510/d,---/Cp,---/kT,hex/ls,349.6/lsa,/lsb,1133.1/lsc,3.24/lsca,1944/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@xcvii{Bk/CS,[247]/Ar,/Arstar,1/radio,---/R,---/Rcov,96\noexpand\pgfPT@espaco(3+)/Rion,601/Ei,1.3/eneg,0/eaff,+3/O,1323/Tmelt,1050/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep27\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+9\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+9/eConfignl,14780/d,---/Cp,10/kT,hex/ls,341.6/lsa,/lsb,1106.9/lsc,3.24/lsca,1949/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@xcviii{Cf/CS,[251]/Ar,/Arstar,1/radio,---/R,---/Rcov,95\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula82.1\noexpand\pgfPT@espaco(4+)/Rion,608/Ei,1.3/eneg,0/eaff,+3/O,1173/Tmelt,900/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep28\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+10\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+10/eConfignl,15100/d,---/Cp,---/kT,hex/ls,338/lsa,/lsb,1102.5/lsc,3.26/lsca,1950/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@xcix{Es/CS,[252]/Ar,/Arstar,1/radio,---/R,---/Rcov,83.5\noexpand\pgfPT@espaco(3+)/Rion,619/Ei,1.3/eneg,0/eaff,+3/O,1133/Tmelt,860/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep29\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+11\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+11/eConfignl,8840/d,---/Cp,---/kT,fcc/ls,575/lsa,/lsb,/lsc,/lsca,1952/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@c{Fm/CS,[257]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,627/Ei,1.3/eneg,33.96/eaff,+3/O,1800/Tmelt,1527/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep30\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+12\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+12/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1952/DiscY,22/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@ci{Md/CS,[258]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,635/Ei,1.3/eneg,93.91/eaff,+3/O,1100/Tmelt,827/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep31\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+13\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+13/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1955/DiscY,22/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cii{No/CS,[259]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,642/Ei,1.3/eneg,0/eaff,+2/O,1100/Tmelt,827/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1966/DiscY,24/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@ciii{Lr/CS,[266]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,470/Ei,1.3/eneg,0/eaff,+3/O,1900/Tmelt,1627/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep3/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+1/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula7p+1/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1961/DiscY,22/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@civ{Rf/CS,[267]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-580/Ei,---/eneg,---/eaff,+4/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+2\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+2/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1969/DiscY,16/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cv{Db/CS,[268]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-665/Ei,---/eneg,---/eaff,+5/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+3\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+3/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1970/DiscY,16/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cvi{Sg/CS,[269]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-757/Ei,---/eneg,---/eaff,+6/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+4\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+4/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1974/DiscY,22/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cvii{Bh/CS,[270]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-740/Ei,---/eneg,---/eaff,+7/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+5\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+5/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1981/DiscY,8/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cviii{Hs/CS,[270]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-730/Ei,---/eneg,---/eaff,+8/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+6\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+6/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1984/DiscY,8/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cix{Mt/CS,[278]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-800/Ei,---/eneg,---/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+7\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+7/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1982/DiscY,8/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cx{Ds/CS,[281]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-960/Ei,---/eneg,---/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+8\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+8/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1994/DiscY,8/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxi{Rg/CS,[282]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-1020/Ei,---/eneg,151/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep17\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+9\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+9/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1994/DiscY,8/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxii{Cn/CS,[285]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-1155/Ei,---/eneg,---/eaff,+2/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1996/DiscY,8/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxiii{Nh/CS,[286]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-707.2/Ei,---/eneg,66.6/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+1/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+1/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2004/DiscY,16/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxiv{Fl/CS,[289]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-832.2/Ei,---/eneg,---/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+2/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1998/DiscY,15/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxv{Mc/CS,[290]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-538.3/Ei,---/eneg,35.3/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+3/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+3/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2003/DiscY,16/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxvi{Lv/CS,[293]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-663.9/Ei,---/eneg,74.9/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+4/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+4/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2000/DiscY,15/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxvii{Ts/CS,[294]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-736.9/Ei,---/eneg,165.9/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+5/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+5/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2009/DiscY,100/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxviii{Og/CS,[294]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-860.1/Ei,---/eneg,5.4/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+6/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+6/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2002/DiscY,16/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@i{H/CS,1.008/Ar,[1.0078\noexpand\pgfPT@virgula1.0082]/Arstar,0/radio,53/R,32/Rcov,139.9\noexpand\pgfPT@espaco(1-)/Rion,1312/Ei,2.2/eneg,72.77/eaff,\noexpand\pgfPT@pm1/O,\noexpand\pgfPT@pm I/ORoman,13.99/Tmelt,-259.16/TmeltC,20.271/Tboil,-252.879/TboilC,1/eDist,::1s+1/eConfign,::1s+1/eConfignl,0.08988/d,28.836/Cp,0.1805/kT,hex/ls,470/lsa,470/lsb,340/lsc,0.72/lsca,1766/DiscY,21/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@ii{He/CS,4.0026/Ar,4.0026/Arstar,0/radio,31/R,46/Rcov,---/Rion,2372.3/Ei,---/eneg,0/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,4.222/Tboil,-268.928/TboilC,2/eDist,::1s+2/eConfign,::1s+2/eConfignl,0.1786/d,20.786/Cp,0.1513/kT,fcc/ls,424.4/lsa,/lsb,/lsc,/lsca,1895/DiscY,19/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@iii{Li/CS,6.94/Ar,[6.938\noexpand\pgfPT@virgula6.997] /Arstar,0/radio,167/R,133/Rcov,76\noexpand\pgfPT@espaco(1+)/Rion,520.2/Ei,0.98/eneg,59.63/eaff,+1/O,+I/ORoman,453.65/Tmelt,180.5/TmeltC,1603/Tboil,1330/TboilC,2\noexpand\pgfPTeDistsep1/eDist,[He]::2s+1/eConfign,[He]::2s+1/eConfignl,534/d,24.86/Cp,84.8/kT,bcc/ls,350.93/lsa,/lsb,/lsc,/lsca,1817/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@iv{Be/CS,9.0122/Ar,9.0122/Arstar,0/radio,112/R,10/Rcov,45\noexpand\pgfPT@espaco(2+)/Rion,899.5/Ei,1.57/eneg,0/eaff,+2/O,+II/ORoman,1560/Tmelt,1287/TmeltC,2742/Tboil,2469/TboilC,2\noexpand\pgfPTeDistsep2/eDist,[He]::2s+2/eConfign,[He]::2s+2/eConfignl,1850/d,16.443/Cp,200/kT,hcp/ls,228.56/lsa,/lsb,358.32/lsc,1.57/lsca,1798/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@v{B/CS,10.81/Ar,[10.806\noexpand\pgfPT@virgula10.821] /Arstar,0/radio,87/R,85/Rcov,27\noexpand\pgfPT@espaco(3+)/Rion,800.6/Ei,2.04/eneg,26.99/eaff,+3/O,+III/ORoman,2349/Tmelt,2076/TmeltC,4200/Tboil,3927/TboilC,2\noexpand\pgfPTeDistsep3/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+1/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+1/eConfignl,2340/d,11.087/Cp,27.4/kT,rho/ls,505.66/lsa,/lsb,/lsc,/lsca,1808/DiscY,7/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@vi{C/CS,12.011/Ar,[12.009\noexpand\pgfPT@virgula12.012]/Arstar,0/radio,67/R,75/Rcov,16\noexpand\pgfPT@espaco(4+)/Rion,1086.5/Ei,2.55/eneg,121.78/eaff,0\noexpand\pgfPT@virgula\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,0\noexpand\pgfPT@virgula\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula\noexpand\pgfPT@pm IV/ORoman,3823/Tmelt,3550/TmeltC,4300/Tboil,4027/TboilC,2\noexpand\pgfPTeDistsep4/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+2/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+2/eConfignl,2267/d,8.517/Cp,140/kT,hex/ls,246.12/lsa,/lsb,670.79/lsc,2.73/lsca,3750\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@vii{N/CS,14.007/Ar,[14.006\noexpand\pgfPT@virgula14.008]/Arstar,0/radio,56/R,71/Rcov,146\noexpand\pgfPT@espaco(3-)\noexpand\pgfPT@virgula16\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula13\noexpand\pgfPT@espaco(5+)/Rion,1402.3/Ei,3.04/eneg,0/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+V/ORoman,63.15/Tmelt,-210/TmeltC,77.355/Tboil,-195.795/TboilC,2\noexpand\pgfPTeDistsep5/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+3/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+3/eConfignl,1.251/d,29.124/Cp,0.02583/kT,hex/ls,386.1/lsa,386.1/lsb,626.5/lsc,1.62/lsca,1772/DiscY,21/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@viii{O/CS,15.999/Ar,[15.999\noexpand\pgfPT@virgula16.000]/Arstar,0/radio,48/R,63/Rcov,140\noexpand\pgfPT@espaco(2-)/Rion,1313.9/Ei,3.44/eneg,140.98/eaff,--2/O,--II/ORoman,54.36/Tmelt,-218.79/TmeltC,90.188/Tboil,-182.962/TboilC,2\noexpand\pgfPTeDistsep6/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+4/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+4/eConfignl,1.429/d,29.378/Cp,0.02658/kT,mono/ls,540.3/lsa,342.9/lsb,508.6/lsc,0.94/lsca,1771/DiscY,19/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@ix{F/CS,18.998/Ar,18.998/Arstar,0/radio,42/R,64/Rcov,133\noexpand\pgfPT@espaco(1-)/Rion,1681/Ei,3.98/eneg,328.16/eaff,--1/O,--I/ORoman,53.48/Tmelt,-219.67/TmeltC,85.04/Tboil,-188.11/TboilC,2\noexpand\pgfPTeDistsep7/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+5/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+5/eConfignl,1.7/d,31.304/Cp,0.0277/kT,mono/ls,550/lsa,328/lsb,728/lsc,1.32/lsca,1886/DiscY,5/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@x{Ne/CS,20.18/Ar,20.18/Arstar,0/radio,38/R,67/Rcov,---/Rion,2080.7/Ei,---/eneg,0/eaff,---/O,---/ORoman,24.56/Tmelt,-248.59/TmeltC,27.104/Tboil,-246.046/TboilC,2\noexpand\pgfPTeDistsep8/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+6/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+6/eConfignl,0.9002/d,20.786/Cp,0.0491/kT,fcc/ls,442.9/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@xi{Na/CS,22.99/Ar,22.99/Arstar,0/radio,190/R,155/Rcov,102\noexpand\pgfPT@espaco(1+)/Rion,495.8/Ei,0.93/eneg,52.87/eaff,+1/O,+I/ORoman,370.944/Tmelt,97.794/TmeltC,1156.09/Tboil,882.94/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Ne]::3s+1/eConfign,[Ne]::3s+1/eConfignl,968/d,28.23/Cp,142/kT,bcc/ls,429.06/lsa,/lsb,/lsc,/lsca,1807/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xii{Mg/CS,24.305/Ar,[24.304\noexpand\pgfPT@virgula24.307] /Arstar,0/radio,145/R,139/Rcov,72\noexpand\pgfPT@espaco(2+)/Rion,737.7/Ei,1.31/eneg,0/eaff,+2/O,+II/ORoman,923/Tmelt,650/TmeltC,1363/Tboil,1090/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Ne]::3s+2/eConfign,[Ne]::3s+2/eConfignl,1738/d,24.869/Cp,156/kT,hcp/ls,320.94/lsa,/lsb,521.05/lsc,1.62/lsca,1755/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xiii{Al/CS,26.982/Ar,26.982/Arstar,0/radio,118/R,126/Rcov,53.5\noexpand\pgfPT@espaco(3+)/Rion,577.5/Ei,1.61/eneg,41.76/eaff,+3/O,+III/ORoman,933.47/Tmelt,660.32/TmeltC,2743/Tboil,2470/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep3/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+1/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+1/eConfignl,2700/d,24.2/Cp,237/kT,fcc/ls,404.95/lsa,/lsb,/lsc,/lsca,1824/DiscY,2/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xiv{Si/CS,28.085/Ar,[28.084\noexpand\pgfPT@virgula28.086]/Arstar,0/radio,111/R,116/Rcov,40\noexpand\pgfPT@espaco(4+)/Rion,786.5/Ei,1.9/eneg,134.07/eaff,\noexpand\pgfPT@pm4/O,\noexpand\pgfPT@pm IV/ORoman,1687/Tmelt,1414/TmeltC,3538/Tboil,3265/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep4/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+2/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+2/eConfignl,2330/d,19.789/Cp,149/kT,dia/ls,543.095/lsa,/lsb,/lsc,/lsca,1823/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xv{P/CS,30.974/Ar,30.974/Arstar,0/radio,98/R,111/Rcov,212\noexpand\pgfPT@espaco(3-)\noexpand\pgfPT@virgula44\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula38\noexpand\pgfPT@espaco(5+)/Rion,1011.8/Ei,2.19/eneg,72.04/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula+V/ORoman,317.3/Tmelt,44.15/TmeltC,550/Tboil,277/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep5/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+3/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+3/eConfignl,1823/d,23.824/Cp,0.236/kT,tric/ls,1145/lsa,550.3/lsb,1126.1/lsc,0.98/lsca,1669/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xvi{S/CS,32.06/Ar,[32.059\noexpand\pgfPT@virgula32.076]/Arstar,0/radio,88/R,103/Rcov,184\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula37\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula29\noexpand\pgfPT@espaco(6+)/Rion,999.6/Ei,2.58/eneg,200.41/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+VI/ORoman,388.36/Tmelt,115.21/TmeltC,717.8/Tboil,444.6/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep6/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+4/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+4/eConfignl,1960/d,22.75/Cp,0.205/kT,fcort/ls,1046.5/lsa,1286.6/lsb,2448.6/lsc,2.34/lsca,500\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xvii{Cl/CS,35.45/Ar,[35.446\noexpand\pgfPT@virgula35.457]/Arstar,0/radio,79/R,99/Rcov,181\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula12\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula27\noexpand\pgfPT@espaco(7+)/Rion,1251.2/Ei,3.16/eneg,348.58/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+V\noexpand\pgfPT@virgula+VII/ORoman,171.6/Tmelt,-101.5/TmeltC,239.11/Tboil,-34.04/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep7/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+5/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+5/eConfignl,3.2/d,33.949/Cp,0.0089/kT,bcort/ls,622.35/lsa,445.61/lsb,817.85/lsc,1.31/lsca,1774/DiscY,18/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@xviii{Ar/CS,39.95/Ar,[39.792\noexpand\pgfPT@virgula39.963]/Arstar,0/radio,71/R,96/Rcov,---/Rion,1520.6/Ei,---/eneg,0/eaff,0/O,0/ORoman,83.81/Tmelt,-189.34/TmeltC,87.302/Tboil,-185.848/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+6/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+6/eConfignl,1.784/d,20.786/Cp,0.01772/kT,fcc/ls,525.6/lsa,/lsb,/lsc,/lsca,1894/DiscY,21/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@xix{K/CS,39.098/Ar,39.098/Arstar,0/radio,243/R,196/Rcov,138\noexpand\pgfPT@espaco(1+)/Rion,418.8/Ei,0.82/eneg,48.38/eaff,+1/O,+I/ORoman,336.7/Tmelt,63.5/TmeltC,1032/Tboil,759/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Ar]::4s+1/eConfign,[Ar]::4s+1/eConfignl,890/d,29.6/Cp,102.5/kT,bcc/ls,532.8/lsa,/lsb,/lsc,/lsca,1807/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xx{Ca/CS,40.078/Ar,40.078(4) /Arstar,0/radio,194/R,171/Rcov,100\noexpand\pgfPT@espaco(2+)/Rion,589.8/Ei,1/eneg,2.37/eaff,+2/O,+II/ORoman,1115/Tmelt,842/TmeltC,1757/Tboil,1484/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Ar]::4s+2/eConfign,[Ar]::4s+2/eConfignl,1550/d,25.929/Cp,201/kT,fcc/ls,558.84/lsa,/lsb,/lsc,/lsca,1808/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxi{Sc/CS,44.956/Ar,44.956/Arstar,0/radio,184/R,148/Rcov,74.5\noexpand\pgfPT@espaco(3+)/Rion,633.1/Ei,1.36/eneg,18/eaff,+3/O,+III/ORoman,1814/Tmelt,1541/TmeltC,3109/Tboil,2836/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+1\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+1/eConfignl,2985/d,25.52/Cp,15.8/kT,hcp/ls,330.9/lsa,/lsb,527.33/lsc,1.59/lsca,1879/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxii{Ti/CS,47.867/Ar,47.867/Arstar,0/radio,176/R,136/Rcov,86\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula67\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula60.5\noexpand\pgfPT@espaco(4+)/Rion,658.8/Ei,1.54/eneg,7.29/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4/O,+II\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+IV/ORoman,1941/Tmelt,1668/TmeltC,3560/Tboil,3287/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+2\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+2/eConfignl,4506/d,25.06/Cp,21.9/kT,hcp/ls,295.03/lsa,/lsb,468.31/lsc,1.59/lsca,1791/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxiii{V/CS,50.942/Ar,50.942/Arstar,0/radio,171/R,134/Rcov,79\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula64\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula58\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula54\noexpand\pgfPT@espaco(5+)/Rion,650.9/Ei,1.63/eneg,50.91/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5/O,+II\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+V/ORoman,2183/Tmelt,1910/TmeltC,3680/Tboil,3407/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+3\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+3/eConfignl,6110/d,24.89/Cp,30.7/kT,bcc/ls,302.31/lsa,/lsb,/lsc,/lsca,1830/DiscY,23/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxiv{Cr/CS,51.996/Ar,51.996/Arstar,0/radio,166/R,122/Rcov,73\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula61.5\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula44\noexpand\pgfPT@espaco(6+)/Rion,652.9/Ei,1.66/eneg,65.21/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+6/O,+II\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+VI/ORoman,2180/Tmelt,1907/TmeltC,2755/Tboil,2482/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep1/eDist,[Ar]::3d+5\noexpand\pgfPT@virgula4s+1/eConfign,[Ar]::4s+1\noexpand\pgfPT@virgula3d+5/eConfignl,7150/d,23.35/Cp,93.9/kT,bcc/ls,288.46/lsa,/lsb,/lsc,/lsca,1797/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxv{Mn/CS,54.938/Ar,54.938/Arstar,0/radio,161/R,119/Rcov,67\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula58\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula25.5\noexpand\pgfPT@espaco(6+)\noexpand\pgfPT@virgula46\noexpand\pgfPT@espaco(7+)/Rion,717.3/Ei,1.55/eneg,0/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6\noexpand\pgfPT@virgula+7/O,+II\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+VI\noexpand\pgfPT@virgula+VII/ORoman,1519/Tmelt,1246/TmeltC,2334/Tboil,2061/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+5\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+5/eConfignl,7210/d,26.32/Cp,7.81/kT,bcc/ls,891.39/lsa,/lsb,/lsc,/lsca,1774/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxvi{Fe/CS,55.845/Ar,55.845(2)/Arstar,0/radio,156/R,116/Rcov,61\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula55\noexpand\pgfPT@espaco(3+)/Rion,762.5/Ei,1.83/eneg,14.79/eaff,+2\noexpand\pgfPT@virgula+3/O,+II\noexpand\pgfPT@virgula+III/ORoman,1811/Tmelt,1538/TmeltC,3134/Tboil,2861/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+6\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+6/eConfignl,7860/d,25.1/Cp,80.4/kT,bcc/ls,286.64/lsa,/lsb,/lsc,/lsca,2000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxvii{Co/CS,58.933/Ar,58.933/Arstar,0/radio,152/R,111/Rcov,65\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula54.5\noexpand\pgfPT@espaco(3+)/Rion,760.4/Ei,1.88/eneg,63.9/eaff,+2\noexpand\pgfPT@virgula+3/O,+II\noexpand\pgfPT@virgula+III/ORoman,1768/Tmelt,1495/TmeltC,3200/Tboil,2927/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+7\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+7/eConfignl,8900/d,24.81/Cp,100/kT,hcp/ls,250.71/lsa,/lsb,406.95/lsc,1.62/lsca,1735/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxviii{Ni/CS,58.693/Ar,58.693/Arstar,0/radio,149/R,110/Rcov,69\noexpand\pgfPT@espaco(2+)/Rion,737.1/Ei,1.91/eneg,111.65/eaff,+2/O,+II/ORoman,1728/Tmelt,1455/TmeltC,3003/Tboil,2730/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+8\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+8/eConfignl,8908/d,26.07/Cp,90.9/kT,fcc/ls,352.4/lsa,/lsb,/lsc,/lsca,1751/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxix{Cu/CS,63.546/Ar,63.546(3)/Arstar,0/radio,145/R,112/Rcov,77\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula73\noexpand\pgfPT@espaco(2+)/Rion,745.5/Ei,1.9/eneg,119.24/eaff,+1\noexpand\pgfPT@virgula+2/O,+I\noexpand\pgfPT@virgula+II/ORoman,1357.77/Tmelt,1084.62/TmeltC,2835/Tboil,2562/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+1/eConfign,[Ar]::4s+1\noexpand\pgfPT@virgula3d+10/eConfignl,8960/d,24.44/Cp,401/kT,fcc/ls,361.47/lsa,/lsb,/lsc,/lsca,8000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxx{Zn/CS,65.38/Ar,65.38(2)/Arstar,0/radio,142/R,118/Rcov,74\noexpand\pgfPT@espaco(2+)/Rion,906.4/Ei,1.65/eneg,0/eaff,+2/O,+II/ORoman,692.68/Tmelt,419.53/TmeltC,1180/Tboil,907/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10/eConfignl,7140/d,25.39/Cp,116/kT,hcp/ls,266.49/lsa,/lsb,494.68/lsc,1.86/lsca,1746/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxxi{Ga/CS,69.723/Ar,69.723/Arstar,0/radio,136/R,124/Rcov,62\noexpand\pgfPT@espaco(3+)/Rion,578.8/Ei,1.81/eneg,29.06/eaff,+3/O,+III/ORoman,302.9146/Tmelt,29.7646/TmeltC,2673/Tboil,2400/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+1/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+1/eConfignl,5910/d,25.86/Cp,40.6/kT,bcort/ls,452.58/lsa,451.86/lsb,765.7/lsc,1.69/lsca,1875/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxxii{Ge/CS,72.63/Ar,72.630(8)/Arstar,0/radio,125/R,121/Rcov,73\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(4+)/Rion,762/Ei,2.01/eneg,118.94/eaff,+2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,+II\noexpand\pgfPT@virgula\noexpand\pgfPT@pm IV/ORoman,1211.4/Tmelt,938.25/TmeltC,3106/Tboil,2833/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+2/eConfignl,5323/d,23.222/Cp,60.2/kT,dia/ls,565.791/lsa,/lsb,/lsc,/lsca,1886/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxxiii{As/CS,74.922/Ar,74.922/Arstar,0/radio,114/R,121/Rcov,58\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula46\noexpand\pgfPT@espaco(5+)/Rion,947/Ei,2.18/eneg,77.65/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula+V/ORoman,1090/Tmelt,817/TmeltC,887/Tboil,614/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+3/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+3/eConfignl,5727/d,24.64/Cp,50.2/kT,rho/ls,375.98/lsa,375.98/lsb,1054.75/lsc,2.81/lsca,1250/DiscY,12/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxxiv{Se/CS,78.971/Ar,78.971(8)/Arstar,0/radio,103/R,116/Rcov,198\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula50\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula42\noexpand\pgfPT@espaco(6+)/Rion,941/Ei,2.55/eneg,194.96/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+VI/ORoman,494/Tmelt,221/TmeltC,958/Tboil,685/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+4/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+4/eConfignl,4810/d,25.363/Cp,0.519/kT,mono/ls,905.4/lsa,908.3/lsb,1160.1/lsc,1.28/lsca,1817/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxxv{Br/CS,79.904/Ar,[79.901\noexpand\pgfPT@virgula79.907]/Arstar,0/radio,94/R,114/Rcov,196\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula59\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula31\noexpand\pgfPT@espaco(5+)/Rion,1139.9/Ei,2.96/eneg,324.54/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+V/ORoman,265.8/Tmelt,-7.3/TmeltC,332/Tboil,58.8/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+5/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+5/eConfignl,3102.8/d,75.69/Cp,0.122/kT,bcort/ls,672.65/lsa,464.51/lsb,870.23/lsc,1.29/lsca,1825/DiscY,5/DiscC,1/spectra,liquido/cor}%
+\def\pgfPT@data@xxxvi{Kr/CS,83.798/Ar,83.798(2)/Arstar,0/radio,88/R,117/Rcov,---/Rion,1350.8/Ei,3/eneg,0/eaff,0/O,0/ORoman,115.78/Tmelt,-157.37/TmeltC,119.735/Tboil,-153.415/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+6/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+6/eConfignl,3.749/d,20.786/Cp,0.00943/kT,fcc/ls,570.6/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@xxxvii{Rb/CS,85.468/Ar,85.468/Arstar,0/radio,265/R,210/Rcov,152\noexpand\pgfPT@espaco(1+)/Rion,403/Ei,0.82/eneg,46.88/eaff,+1/O,+I/ORoman,312.45/Tmelt,39.3/TmeltC,961/Tboil,688/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Kr]::5s+1/eConfign,[Kr]::5s+1/eConfignl,1532/d,31.06/Cp,58.2/kT,bcc/ls,558.5/lsa,/lsb,/lsc,/lsca,1861/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxxviii{Sr/CS,87.62/Ar,87.62/Arstar,0/radio,219/R,185/Rcov,118\noexpand\pgfPT@espaco(2+)/Rion,549.5/Ei,0.95/eneg,5.02/eaff,+2/O,+II/ORoman,1050/Tmelt,777/TmeltC,1650/Tboil,1382/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Kr]::5s+2/eConfign,[Kr]::5s+2/eConfignl,2640/d,26.4/Cp,35.4/kT,fcc/ls,608.49/lsa,/lsb,/lsc,/lsca,1787/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxxix{Y/CS,88.906/Ar,88.906/Arstar,0/radio,212/R,163/Rcov,90\noexpand\pgfPT@espaco(3+)/Rion,600/Ei,1.22/eneg,29.6/eaff,+3/O,+III/ORoman,1799/Tmelt,1526/TmeltC,3203/Tboil,2930/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+1\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+1/eConfignl,4472/d,26.53/Cp,17.2/kT,hcp/ls,364.74/lsa,/lsb,573.06/lsc,1.57/lsca,1794/DiscY,4/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xl{Zr/CS,91.224/Ar,91.224(2)/Arstar,0/radio,206/R,154/Rcov,72\noexpand\pgfPT@espaco(4+)/Rion,640.1/Ei,1.33/eneg,41.81/eaff,+4/O,+IV/ORoman,2128/Tmelt,1855/TmeltC,4650/Tboil,4377/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+2\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+2/eConfignl,6520/d,25.36/Cp,22.6/kT,hcp/ls,323.2/lsa,/lsb,514.7/lsc,1.59/lsca,1789/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xli{Nb/CS,92.906/Ar,92.906/Arstar,0/radio,198/R,147/Rcov,64\noexpand\pgfPT@espaco(5+)/Rion,652.1/Ei,1.6/eneg,88.52/eaff,+5/O,+V/ORoman,2750/Tmelt,2477/TmeltC,5017/Tboil,4744/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+4\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+4/eConfignl,8570/d,24.6/Cp,53.7/kT,bcc/ls,330.04/lsa,/lsb,/lsc,/lsca,1801/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xlii{Mo/CS,95.95/Ar,95.95/Arstar,0/radio,190/R,138/Rcov,65\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula59\noexpand\pgfPT@espaco(6+)/Rion,684.3/Ei,2.16/eneg,72.1/eaff,+4\noexpand\pgfPT@virgula+6/O,+IV\noexpand\pgfPT@virgula+VI/ORoman,2896/Tmelt,2623/TmeltC,4912/Tboil,4639/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+5\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+5/eConfignl,10280/d,24.06/Cp,138/kT,bcc/ls,314.69/lsa,/lsb,/lsc,/lsca,1781/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xliii{Tc/CS,[98]/Ar,/Arstar,1/radio,183/R,128/Rcov,64.5\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula56\noexpand\pgfPT@espaco(7+)/Rion,702/Ei,1.9/eneg,53/eaff,+4\noexpand\pgfPT@virgula+7/O,+IV\noexpand\pgfPT@virgula+VII/ORoman,2430/Tmelt,2157/TmeltC,4538/Tboil,4265/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+5\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+5/eConfignl,11000/d,24.27/Cp,50.6/kT,hcp/ls,273.5/lsa,/lsb,438.8/lsc,1.6/lsca,1937/DiscY,11/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@xliv{Ru/CS,101.07/Ar,101.07/Arstar,0/radio,178/R,125/Rcov,68\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula62\noexpand\pgfPT@espaco(4+)/Rion,710.2/Ei,2.2/eneg,100.96/eaff,+3\noexpand\pgfPT@virgula+4/O,+III\noexpand\pgfPT@virgula+IV/ORoman,2607/Tmelt,2334/TmeltC,4423/Tboil,4150/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+7\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+7/eConfignl,12450/d,24.06/Cp,117/kT,hcp/ls,270.55/lsa,/lsb,428.16/lsc,1.58/lsca,1844/DiscY,15/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xlv{Rh/CS,102.91/Ar,102.91/Arstar,0/radio,173/R,125/Rcov,66.5\noexpand\pgfPT@espaco(3+)/Rion,719.7/Ei,2.28/eneg,110.27/eaff,+3/O,+III/ORoman,2237/Tmelt,1964/TmeltC,3968/Tboil,3695/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+8\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+8/eConfignl,12410/d,24.98/Cp,150/kT,fcc/ls,380.34/lsa,/lsb,/lsc,/lsca,1804/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xlvi{Pd/CS,106.42/Ar,106.42/Arstar,0/radio,169/R,120/Rcov,86\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula61.5\noexpand\pgfPT@espaco(4+)/Rion,804.4/Ei,2.2/eneg,54.24/eaff,0\noexpand\pgfPT@virgula+2\noexpand\pgfPT@virgula+4/O,0\noexpand\pgfPT@virgula+II\noexpand\pgfPT@virgula+IV/ORoman,1828.05/Tmelt,1554.9/TmeltC,3236/Tboil,2963/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18/eDist,[Kr]::4d+10/eConfign,[Kr]::4d+10/eConfignl,12023/d,25.98/Cp,71.8/kT,fcc/ls,389.02/lsa,/lsb,/lsc,/lsca,1802/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xlvii{Ag/CS,107.87/Ar,107.87/Arstar,0/radio,165/R,128/Rcov,115\noexpand\pgfPT@espaco(1+)/Rion,731/Ei,1.93/eneg,125.86/eaff,+1/O,+I/ORoman,1234.93/Tmelt,961.78/TmeltC,2483/Tboil,2210/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+10/eConfignl,10490/d,25.35/Cp,429/kT,fcc/ls,408.57/lsa,/lsb,/lsc,/lsca,3000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,0/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xlviii{Cd/CS,112.41/Ar,112.41/Arstar,0/radio,161/R,136/Rcov,95\noexpand\pgfPT@espaco(2+)/Rion,867.8/Ei,1.69/eneg,0/eaff,+2/O,+II/ORoman,594.22/Tmelt,321.07/TmeltC,1040/Tboil,767/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10/eConfignl,8650/d,26.02/Cp,96.6/kT,hcp/ls,297.88/lsa,/lsb,561.67/lsc,1.89/lsca,1817/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xlix{In/CS,114.82/Ar,114.82/Arstar,0/radio,156/R,142/Rcov,80\noexpand\pgfPT@espaco(3+)/Rion,558.3/Ei,1.78/eneg,37.04/eaff,+3/O,+III/ORoman,429.75/Tmelt,156.6/TmeltC,2345/Tboil,2072/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+1/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+1/eConfignl,7310/d,26.74/Cp,81.8/kT,tetr/ls,325.17/lsa,/lsb,494.59/lsc,1.52/lsca,1863/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@l{Sn/CS,118.71/Ar,118.71/Arstar,0/radio,145/R,140/Rcov,118\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula69\noexpand\pgfPT@espaco(4+)/Rion,708.6/Ei,1.96/eneg,107.3/eaff,+2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,+II\noexpand\pgfPT@virgula\noexpand\pgfPT@pm IV/ORoman,505.08/Tmelt,231.93/TmeltC,2875/Tboil,2602/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+2/eConfignl,7265/d,25.77/Cp,66.8/kT,ctetr/ls,583.1/lsa,/lsb,318.1/lsc,0.55/lsca,3000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,0/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@li{Sb/CS,121.76/Ar,121.76/Arstar,0/radio,133/R,140/Rcov,76\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula60\noexpand\pgfPT@espaco(5+)/Rion,834/Ei,2.05/eneg,101.06/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula+V/ORoman,903.78/Tmelt,630.63/TmeltC,1908/Tboil,1635/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+3/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+3/eConfignl,6697/d,25.23/Cp,24.4/kT,rho/ls,430.7/lsa,/lsb,1127.3/lsc,2.62/lsca,815/DiscY,12/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lii{Te/CS,127.6/Ar,127.60(3)/Arstar,0/radio,123/R,136/Rcov,221\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula97\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula56\noexpand\pgfPT@espaco(6+)/Rion,869.3/Ei,2.1/eneg,190.16/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+VI/ORoman,722.66/Tmelt,449.51/TmeltC,1261/Tboil,988/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+4/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+4/eConfignl,6240/d,25.73/Cp,3/kT,rho/ls,445.72/lsa,/lsb,592.9/lsc,1.33/lsca,1782/DiscY,14/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@liii{I/CS,126.9/Ar,126.9/Arstar,0/radio,115/R,133/Rcov,220\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula95\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(7+)/Rion,1008.4/Ei,2.66/eneg,295.15/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+V\noexpand\pgfPT@virgula+VII/ORoman,386.85/Tmelt,113.7/TmeltC,457.4/Tboil,184.3/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+5/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+5/eConfignl,4933/d,54.44/Cp,0.449/kT,bcort/ls,726.97/lsa,479.03/lsb,979.42/lsc,1.35/lsca,1811/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@liv{Xe/CS,131.29/Ar,131.29/Arstar,0/radio,108/R,131/Rcov,---/Rion,1170.4/Ei,2.6/eneg,0/eaff,0/O,0/ORoman,161.4/Tmelt,-111.75/TmeltC,165.051/Tboil,-108.099/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+6/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+6/eConfignl,5.894/d,20.786/Cp,0.00565/kT,fcc/ls,620.23/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@lv{Cs/CS,132.91/Ar,132.91/Arstar,0/radio,298/R,232/Rcov,167\noexpand\pgfPT@espaco(1+)/Rion,375.7/Ei,0.79/eneg,45.51/eaff,+1/O,+I/ORoman,301.7/Tmelt,28.5/TmeltC,944/Tboil,671/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Xe]::6s+1/eConfign,[Xe]::6s+1/eConfignl,1930/d,32.21/Cp,35.9/kT,bcc/ls,614.1/lsa,/lsb,/lsc,/lsca,1860/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lvi{Ba/CS,137.33/Ar,137.33/Arstar,0/radio,253/R,196/Rcov,135\noexpand\pgfPT@espaco(2+)/Rion,502.9/Ei,0.89/eneg,13.95/eaff,+2/O,+II/ORoman,1000/Tmelt,727/TmeltC,1910/Tboil,1637/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::6s+2/eConfign,[Xe]::6s+2/eConfignl,3510/d,28.07/Cp,18.4/kT,bcc/ls,501.9/lsa,/lsb,/lsc,/lsca,1808/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lvii{La/CS,138.91/Ar,138.91/Arstar,0/radio,226/R,180/Rcov,103.2\noexpand\pgfPT@espaco(3+)/Rion,538.1/Ei,1.1/eneg,53.8/eaff,+3/O,+III/ORoman,1193/Tmelt,920/TmeltC,3737/Tboil,3464/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula5d+1/eConfignl,6162/d,27.11/Cp,13.4/kT,hex/ls,377.2/lsa,/lsb,1214.4/lsc,3.22/lsca,1838/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lviii{Ce/CS,140.12/Ar,140.12/Arstar,0/radio,210/R,163/Rcov,101\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula87\noexpand\pgfPT@espaco(4+)/Rion,534.4/Ei,1.12/eneg,55/eaff,+3\noexpand\pgfPT@virgula+4/O,+III\noexpand\pgfPT@virgula+IV/ORoman,1068/Tmelt,795/TmeltC,3716/Tboil,3443/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep19\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+1\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+1\noexpand\pgfPT@virgula5d+1/eConfignl,6770/d,26.94/Cp,11.3/kT,hex/ls,362/lsa,/lsb,599/lsc,1.65/lsca,1803/DiscY,9/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lix{Pr/CS,140.91/Ar,140.91/Arstar,0/radio,247/R,17/Rcov,99\noexpand\pgfPT@espaco(3+)/Rion,527/Ei,1.13/eneg,10.54/eaff,+3/O,+III/ORoman,1208/Tmelt,935/TmeltC,3403/Tboil,3130/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep21\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+3\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+3/eConfignl,6770/d,27.2/Cp,12.5/kT,hex/ls,367.21/lsa,/lsb,1183.26/lsc,3.22/lsca,1885/DiscY,1/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lx{Nd/CS,144.24/Ar,144.24/Arstar,0/radio,206/R,17/Rcov,98.3\noexpand\pgfPT@espaco(3+)/Rion,533.1/Ei,1.14/eneg,9.41/eaff,+3/O,+III/ORoman,1297/Tmelt,1024/TmeltC,3347/Tboil,3074/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep22\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+4\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+4/eConfignl,7010/d,27.45/Cp,16.5/kT,hex/ls,365.82/lsa,/lsb,1179.66/lsc,3.22/lsca,1885/DiscY,1/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxi{Pm/CS,[145]/Ar,[145]/Arstar,1/radio,205/R,173/Rcov,97\noexpand\pgfPT@espaco(3+)/Rion,540/Ei,1.13/eneg,12.45/eaff,+3/O,+III/ORoman,1315/Tmelt,1042/TmeltC,3273/Tboil,3000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep23\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+5\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+5/eConfignl,7260/d,---/Cp,17.9/kT,hex/ls,365/lsa,/lsb,1165/lsc,3.19/lsca,1945/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@lxii{Sm/CS,150.36/Ar,150.36(2)/Arstar,0/radio,238/R,172/Rcov,95.8\noexpand\pgfPT@espaco(3+)/Rion,544.5/Ei,1.17/eneg,15.63/eaff,+3/O,+III/ORoman,1345/Tmelt,1072/TmeltC,2173/Tboil,1900/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep24\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+6\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+6/eConfignl,7520/d,29.54/Cp,13.3/kT,rho/ls,362.1/lsa,/lsb,2625/lsc,7.25/lsca,1879/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxiii{Eu/CS,151.96/Ar,151.96/Arstar,0/radio,231/R,168/Rcov,117\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula94.7\noexpand\pgfPT@espaco(3+)/Rion,547.1/Ei,1.2/eneg,11.2/eaff,+2\noexpand\pgfPT@virgula+3/O,+II\noexpand\pgfPT@virgula+III/ORoman,1099/Tmelt,826/TmeltC,1802/Tboil,1529/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+7\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+7/eConfignl,5244/d,27.66/Cp,13.9/kT,bcc/ls,458.1/lsa,/lsb,/lsc,/lsca,1901/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxiv{Gd/CS,157.25/Ar,157.25(3)/Arstar,0/radio,233/R,169/Rcov,93.5\noexpand\pgfPT@espaco(3+)/Rion,593.4/Ei,1.2/eneg,13.22/eaff,+3/O,+III/ORoman,1585/Tmelt,1312/TmeltC,3273/Tboil,3000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+7\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+7\noexpand\pgfPT@virgula5d+1/eConfignl,7900/d,37.03/Cp,10.6/kT,hcp/ls,363.6/lsa,/lsb,578.26/lsc,1.59/lsca,1880/DiscY,20/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxv{Tb/CS,158.93/Ar,158.93/Arstar,0/radio,225/R,168/Rcov,92.3\noexpand\pgfPT@espaco(3+)/Rion,565.8/Ei,1.2/eneg,12.67/eaff,+3/O,+III/ORoman,1629/Tmelt,1356/TmeltC,3396/Tboil,3123/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep27\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+9\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+9/eConfignl,8230/d,28.91/Cp,11.1/kT,hcp/ls,360.1/lsa,/lsb,569.36/lsc,1.58/lsca,1843/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxvi{Dy/CS,162.5/Ar,162.5/Arstar,0/radio,228/R,167/Rcov,91.2\noexpand\pgfPT@espaco(3+)/Rion,573/Ei,1.22/eneg,33.96/eaff,+3/O,+III/ORoman,1680/Tmelt,1407/TmeltC,2840/Tboil,2567/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep28\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+10\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+10/eConfignl,8540/d,27.7/Cp,10.7/kT,hcp/ls,359.3/lsa,/lsb,565.37/lsc,1.57/lsca,1886/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxvii{Ho/CS,164.93/Ar,164.93/Arstar,0/radio,226/R,166/Rcov,90.1\noexpand\pgfPT@espaco(3+)/Rion,581/Ei,1.23/eneg,32.61/eaff,+3/O,+III/ORoman,1734/Tmelt,1461/TmeltC,2873/Tboil,2600/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep29\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+11\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+11/eConfignl,8790/d,27.15/Cp,16.2/kT,hcp/ls,357.73/lsa,/lsb,561.58/lsc,1.57/lsca,1878/DiscY,20/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxviii{Er/CS,167.26/Ar,167.26/Arstar,0/radio,226/R,165/Rcov,89\noexpand\pgfPT@espaco(3+)/Rion,589.3/Ei,1.24/eneg,30.1/eaff,+3/O,+III/ORoman,1802/Tmelt,1529/TmeltC,3141/Tboil,2868/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep30\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+12\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+12/eConfignl,9066/d,28.12/Cp,14.5/kT,hcp/ls,355.88/lsa,/lsb,558.74/lsc,1.57/lsca,1843/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxix{Tm/CS,168.93/Ar,168.93/Arstar,0/radio,222/R,164/Rcov,88\noexpand\pgfPT@espaco(3+)/Rion,596.7/Ei,1.25/eneg,99/eaff,+3/O,+III/ORoman,1818/Tmelt,1545/TmeltC,2223/Tboil,1950/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep31\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+13\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+13/eConfignl,9320/d,27.03/Cp,16.9/kT,hcp/ls,353.75/lsa,/lsb,555.46/lsc,1.57/lsca,1879/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxx{Yb/CS,173.05/Ar,173.05/Arstar,0/radio,222/R,170/Rcov,86.8\noexpand\pgfPT@espaco(3+)/Rion,603.4/Ei,1.1/eneg,0/eaff,+3/O,+III/ORoman,1097/Tmelt,824/TmeltC,1703/Tboil,1430/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14/eConfignl,6900/d,26.74/Cp,38.5/kT,fcc/ls,548.47/lsa,/lsb,/lsc,/lsca,1878/DiscY,20/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxi{Lu/CS,174.97/Ar,174.97/Arstar,0/radio,217/R,162/Rcov,86.1\noexpand\pgfPT@espaco(3+)/Rion,523.5/Ei,1.27/eneg,23.04/eaff,+3/O,+III/ORoman,1925/Tmelt,1652/TmeltC,3675/Tboil,3402/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+1/eConfignl,9841/d,26.86/Cp,16.4/kT,hcp/ls,350.31/lsa,/lsb,555.09/lsc,1.58/lsca,1906/DiscY,6/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxii{Hf/CS,178.49/Ar,178.49(2)/Arstar,0/radio,208/R,152/Rcov,71\noexpand\pgfPT@espaco(4+)/Rion,658.5/Ei,1.3/eneg,17.18/eaff,+4/O,+IV/ORoman,2506/Tmelt,2233/TmeltC,4876/Tboil,4603/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+2\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+2/eConfignl,13310/d,25.73/Cp,23/kT,hcp/ls,319.64/lsa,/lsb,505.11/lsc,1.58/lsca,1922/DiscY,2/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxiii{Ta/CS,180.95/Ar,180.95/Arstar,0/radio,200/R,146/Rcov,64\noexpand\pgfPT@espaco(5+)/Rion,761/Ei,1.5/eneg,31/eaff,+5/O,+V/ORoman,3290/Tmelt,3017/TmeltC,5731/Tboil,5458/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+3\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+3/eConfignl,16690/d,25.36/Cp,57.5/kT,bcc/ls,330.26/lsa,/lsb,/lsc,/lsca,1802/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxiv{W/CS,183.84/Ar,183.84/Arstar,0/radio,193/R,137/Rcov,66\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula60\noexpand\pgfPT@espaco(6+)/Rion,770/Ei,2.36/eneg,78.76/eaff,+4\noexpand\pgfPT@virgula+6/O,+IV\noexpand\pgfPT@virgula+VI/ORoman,3695/Tmelt,3422/TmeltC,6203/Tboil,5930/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+4\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+4/eConfignl,19250/d,24.27/Cp,173/kT,bcc/ls,316.52/lsa,/lsb,/lsc,/lsca,1783/DiscY,17/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxv{Re/CS,186.21/Ar,186.21/Arstar,0/radio,188/R,131/Rcov,63\noexpand\pgfPT@espaco(4+)/Rion,760/Ei,1.9/eneg,5.83/eaff,+4/O,+IV/ORoman,3459/Tmelt,3186/TmeltC,5869/Tboil,5596/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+5\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+5/eConfignl,21020/d,25.48/Cp,48/kT,hcp/ls,276.1/lsa,/lsb,445.8/lsc,1.62/lsca,1925/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxvi{Os/CS,190.23/Ar,190.23(3)/Arstar,0/radio,185/R,129/Rcov,63\noexpand\pgfPT@espaco(4+)/Rion,840/Ei,2.2/eneg,103.99/eaff,+4/O,+IV/ORoman,3306/Tmelt,3033/TmeltC,5285/Tboil,5012/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+6\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+6/eConfignl,22590/d,24.7/Cp,87.6/kT,hcp/ls,273.43/lsa,/lsb,431.73/lsc,1.58/lsca,1803/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxvii{Ir/CS,192.22/Ar,192.22/Arstar,0/radio,180/R,122/Rcov,68\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula62.5\noexpand\pgfPT@espaco(4+)/Rion,880/Ei,2.2/eneg,150.91/eaff,+3\noexpand\pgfPT@virgula+4/O,+III\noexpand\pgfPT@virgula+IV/ORoman,2719/Tmelt,2446/TmeltC,4403/Tboil,4130/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+7\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+7/eConfignl,22560/d,25.1/Cp,147/kT,fcc/ls,383.92/lsa,/lsb,/lsc,/lsca,1803/DiscY,7/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxviii{Pt/CS,195.08/Ar,195.08/Arstar,0/radio,177/R,123/Rcov,80\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula62.5\noexpand\pgfPT@espaco(4+)/Rion,870/Ei,2.28/eneg,205.04/eaff,+2\noexpand\pgfPT@virgula+4/O,+II\noexpand\pgfPT@virgula+IV/ORoman,2041.4/Tmelt,1768.3/TmeltC,4098/Tboil,3825/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep17\noexpand\pgfPTeDistsep1/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+9\noexpand\pgfPT@virgula6s+1/eConfign,[Xe]::6s+1\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+9/eConfignl,21450/d,25.86/Cp,71.6/kT,fcc/ls,392.35/lsa,/lsb,/lsc,/lsca,1735/DiscY,13/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxix{Au/CS,196.97/Ar,196.97/Arstar,0/radio,174/R,124/Rcov,137\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula85\noexpand\pgfPT@espaco(3+)/Rion,890.1/Ei,2.54/eneg,222.75/eaff,+1\noexpand\pgfPT@virgula+3/O,+I\noexpand\pgfPT@virgula+III/ORoman,1337.33/Tmelt,1064.18/TmeltC,3243/Tboil,2970/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+1/eConfign,[Xe]::6s+1\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10/eConfignl,19300/d,25.418/Cp,318/kT,fcc/ls,407.83/lsa,/lsb,/lsc,/lsca,4000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,100/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxx{Hg/CS,200.59/Ar,200.59/Arstar,0/radio,171/R,133/Rcov,119\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula102\noexpand\pgfPT@espaco(2+)/Rion,1007.1/Ei,2/eneg,0/eaff,+1\noexpand\pgfPT@virgula+2/O,+I\noexpand\pgfPT@virgula+II/ORoman,234.32/Tmelt,-38.83/TmeltC,629.88/Tboil,356.73/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10/eConfignl,13534/d,27.983/Cp,8.3/kT,rho/ls,300.9/lsa,/lsb,/lsc,/lsca,1500\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,liquido/cor}%
+\def\pgfPT@data@lxxxi{Tl/CS,204.38/Ar,[204.38\noexpand\pgfPT@virgula204.39]/Arstar,0/radio,156/R,144/Rcov,150\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula88.5\noexpand\pgfPT@espaco(3+)/Rion,589.4/Ei,1.62/eneg,30.88/eaff,+1\noexpand\pgfPT@virgula+3/O,+I\noexpand\pgfPT@virgula+III/ORoman,577/Tmelt,304/TmeltC,1746/Tboil,1473/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+1/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+1/eConfignl,11850/d,26.32/Cp,46.1/kT,hcp/ls,345.66/lsa,/lsb,552.48/lsc,1.6/lsca,1861/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxxii{Pb/CS,207.2/Ar,207.2/Arstar,0/radio,154/R,144/Rcov,119\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula77.5\noexpand\pgfPT@espaco(4+)/Rion,715.6/Ei,1.87/eneg,34.42/eaff,+2\noexpand\pgfPT@virgula+4/O,+II\noexpand\pgfPT@virgula+IV/ORoman,600.61/Tmelt,327.46/TmeltC,2022/Tboil,1749/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+2/eConfignl,11340/d,26.65/Cp,35.3/kT,fcc/ls,495.02/lsa,/lsb,/lsc,/lsca,3800\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxxiii{Bi/CS,208.98/Ar,208.98/Arstar,0/radio,143/R,151/Rcov,103\noexpand\pgfPT@espaco(3+)/Rion,703/Ei,2.02/eneg,90.92/eaff,+3/O,+III/ORoman,544.7/Tmelt,271.5/TmeltC,1837/Tboil,1564/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+3/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+3/eConfignl,9780/d,25.52/Cp,7.97/kT,mono/ls,667.4/lsa,611.7/lsb,330.4/lsc,0.5/lsca,1400/DiscY,12/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxxiv{Po/CS,[209]/Ar,/Arstar,1/radio,135/R,145/Rcov,223\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula94\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula67\noexpand\pgfPT@espaco(6+)/Rion,812.1/Ei,2/eneg,136/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+6/O,\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+V\noexpand\pgfPT@virgula+VI/ORoman,527/Tmelt,254/TmeltC,1235/Tboil,962/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+4/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+4/eConfignl,9196/d,26.4/Cp,0/kT,sc/ls,335.9/lsa,/lsb,/lsc,/lsca,1898/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxxv{At/CS,[210]/Ar,/Arstar,1/radio,127/R,147/Rcov,62\noexpand\pgfPT@espaco(7+)/Rion,899.003/Ei,2.2/eneg,233.09/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+V\noexpand\pgfPT@virgula+VII/ORoman,575/Tmelt,302/TmeltC,503/Tboil,230/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+5/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+5/eConfignl,---/d,---/Cp,1.7/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1940/DiscY,22/DiscC,0/spectra,solido/cor}%
+\def\pgfPT@data@lxxxvi{Rn/CS,[222]/Ar,/Arstar,1/radio,120/R,142/Rcov,---/Rion,1037/Ei,2.2/eneg,0/eaff,+2\noexpand\pgfPT@virgula+6/O,+II\noexpand\pgfPT@virgula+VI/ORoman,202/Tmelt,-71/TmeltC,211.5/Tboil,-61.7/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+6/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+6/eConfignl,9.73/d,20.786/Cp,0.00361/kT,fcc/ls,---/lsa,/lsb,/lsc,/lsca,1899/DiscY,8/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@lxxxvii{Fr/CS,[223]/Ar,/Arstar,1/radio,---/R,---/Rcov,180\noexpand\pgfPT@espaco(1+)/Rion,380/Ei,0.7/eneg,46.89/eaff,+1/O,+I/ORoman,281/Tmelt,8/TmeltC,890/Tboil,620/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Rn]::7s+1/eConfign,[Rn]::7s+1/eConfignl,---/d,31.8/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1939/DiscY,5/DiscC,0/spectra,solido/cor}%
+\def\pgfPT@data@lxxxviii{Ra/CS,[226]/Ar,/Arstar,1/radio,---/R,201/Rcov,148\noexpand\pgfPT@espaco(2+)/Rion,509.3/Ei,0.9/eneg,9.65/eaff,+2/O,+II/ORoman,973/Tmelt,700/TmeltC,2010/Tboil,1737/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::7s+2/eConfign,[Rn]::7s+2/eConfignl,5500/d,---/Cp,18.6/kT,bcc/ls,514.8/lsa,/lsb,/lsc,/lsca,1898/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxxix{Ac/CS,[227]/Ar,/Arstar,1/radio,---/R,186/Rcov,106.5\noexpand\pgfPT@espaco(3+)/Rion,499/Ei,1.1/eneg,33.77/eaff,+3/O,+III/ORoman,1323/Tmelt,1050/TmeltC,3471/Tboil,3198/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula6d+1/eConfignl,10000/d,27.2/Cp,12/kT,fcc/ls,587/lsa,/lsb,/lsc,/lsca,1902/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xc{Th/CS,232.04/Ar,232.04/Arstar,1/radio,---/R,175/Rcov,/Rion,587/Ei,1.3/eneg,58.63/eaff,+4/O,+IV/ORoman,2115/Tmelt,1842/TmeltC,5061/Tboil,4788/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Rn]::6d+2\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula6d+2/eConfignl,11700/d,26.23/Cp,54/kT,fcc/ls,508.42/lsa,/lsb,/lsc,/lsca,1829/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xci{Pa/CS,231.04/Ar,231.04/Arstar,1/radio,---/R,169/Rcov,90\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula78\noexpand\pgfPT@espaco(5+)/Rion,568/Ei,1.5/eneg,53.03/eaff,+5/O,+V/ORoman,1841/Tmelt,1568/TmeltC,4273/Tboil,4000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep20\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+2\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+2\noexpand\pgfPT@virgula6d+1/eConfignl,15370/d,---/Cp,47/kT,tetr/ls,392.5/lsa,/lsb,323.8/lsc,0.82/lsca,1913/DiscY,10/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xcii{U/CS,238.03/Ar,238.03/Arstar,1/radio,---/R,170/Rcov,76\noexpand\pgfPT@espaco(5+)/Rion,597.6/Ei,1.38/eneg,30.39/eaff,+4\noexpand\pgfPT@virgula+6/O,+IV\noexpand\pgfPT@virgula+VI/ORoman,1405.3/Tmelt,1132.2/TmeltC,4404/Tboil,4131/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep21\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+3\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+3\noexpand\pgfPT@virgula6d+1/eConfignl,19100/d,27.665/Cp,27.5/kT,bcort/ls,285.37/lsa,586.95/lsb,495.48/lsc,1.74/lsca,1789/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xciii{Np/CS,[237]/Ar,/Arstar,1/radio,---/R,171/Rcov,110\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula87\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula71\noexpand\pgfPT@espaco(7+)/Rion,604.5/Ei,1.36/eneg,45.85/eaff,+5/O,+V/ORoman,917/Tmelt,644/TmeltC,4273/Tboil,4000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep22\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+4\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+4\noexpand\pgfPT@virgula6d+1/eConfignl,20200/d,29.46/Cp,6.3/kT,bcort/ls,666.3/lsa,472.3/lsb,488.7/lsc,0.73/lsca,1940/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@xciv{Pu/CS,[244]/Ar,/Arstar,1/radio,---/R,172/Rcov,100\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula74\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula71\noexpand\pgfPT@espaco(6+)/Rion,584.7/Ei,1.28/eneg,0/eaff,+4/O,+IV/ORoman,912.5/Tmelt,639.4/TmeltC,3501/Tboil,3228/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep24\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+6\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+6/eConfignl,19816/d,35.5/Cp,6.74/kT,mono/ls,618.3/lsa,482.2/lsb,1096.3/lsc,1.77/lsca,1940/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@xcv{Am/CS,[243]/Ar,/Arstar,1/radio,---/R,166/Rcov,126\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula97.5\noexpand\pgfPT@espaco(3+)/Rion,578/Ei,1.13/eneg,9.93/eaff,+3/O,+III/ORoman,1449/Tmelt,1176/TmeltC,2880/Tboil,2607/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+7\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+7/eConfignl,12000/d,62.7/Cp,10/kT,hex/ls,346.81/lsa,/lsb,1124.1/lsc,3.24/lsca,1944/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@xcvi{Cm/CS,[247]/Ar,/Arstar,1/radio,---/R,166/Rcov,97\noexpand\pgfPT@espaco(3+)/Rion,581/Ei,1.28/eneg,27.17/eaff,+3/O,+III/ORoman,1613/Tmelt,1340/TmeltC,3383/Tboil,3110/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+7\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+7\noexpand\pgfPT@virgula6d+1/eConfignl,13510/d,---/Cp,---/kT,hex/ls,349.6/lsa,/lsb,1133.1/lsc,3.24/lsca,1944/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@xcvii{Bk/CS,[247]/Ar,/Arstar,1/radio,---/R,---/Rcov,96\noexpand\pgfPT@espaco(3+)/Rion,601/Ei,1.3/eneg,0/eaff,+3/O,+III/ORoman,1323/Tmelt,1050/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep27\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+9\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+9/eConfignl,14780/d,---/Cp,10/kT,hex/ls,341.6/lsa,/lsb,1106.9/lsc,3.24/lsca,1949/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@xcviii{Cf/CS,[251]/Ar,/Arstar,1/radio,---/R,---/Rcov,95\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula82.1\noexpand\pgfPT@espaco(4+)/Rion,608/Ei,1.3/eneg,0/eaff,+3/O,+III/ORoman,1173/Tmelt,900/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep28\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+10\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+10/eConfignl,15100/d,---/Cp,---/kT,hex/ls,338/lsa,/lsb,1102.5/lsc,3.26/lsca,1950/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@xcix{Es/CS,[252]/Ar,/Arstar,1/radio,---/R,---/Rcov,83.5\noexpand\pgfPT@espaco(3+)/Rion,619/Ei,1.3/eneg,0/eaff,+3/O,+III/ORoman,1133/Tmelt,860/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep29\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+11\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+11/eConfignl,8840/d,---/Cp,---/kT,fcc/ls,575/lsa,/lsb,/lsc,/lsca,1952/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@c{Fm/CS,[257]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,627/Ei,1.3/eneg,33.96/eaff,+3/O,+III/ORoman,1800/Tmelt,1527/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep30\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+12\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+12/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1952/DiscY,22/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@ci{Md/CS,[258]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,635/Ei,1.3/eneg,93.91/eaff,+3/O,+III/ORoman,1100/Tmelt,827/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep31\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+13\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+13/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1955/DiscY,22/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cii{No/CS,[259]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,642/Ei,1.3/eneg,0/eaff,+2/O,+II/ORoman,1100/Tmelt,827/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1966/DiscY,24/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@ciii{Lr/CS,[266]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,470/Ei,1.3/eneg,0/eaff,+3/O,+III/ORoman,1900/Tmelt,1627/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep3/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+1/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula7p+1/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1961/DiscY,22/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@civ{Rf/CS,[267]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-580/Ei,---/eneg,---/eaff,+4/O,+IV/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+2\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+2/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1969/DiscY,16/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cv{Db/CS,[268]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-665/Ei,---/eneg,---/eaff,+5/O,+V/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+3\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+3/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1970/DiscY,16/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cvi{Sg/CS,[269]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-757/Ei,---/eneg,---/eaff,+6/O,+VI/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+4\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+4/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1974/DiscY,22/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cvii{Bh/CS,[270]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-740/Ei,---/eneg,---/eaff,+7/O,+VII/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+5\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+5/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1981/DiscY,8/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cviii{Hs/CS,[270]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-730/Ei,---/eneg,---/eaff,+8/O,+VIII/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+6\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+6/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1984/DiscY,8/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cix{Mt/CS,[278]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-800/Ei,---/eneg,---/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+7\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+7/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1982/DiscY,8/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cx{Ds/CS,[281]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-960/Ei,---/eneg,---/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+8\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+8/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1994/DiscY,8/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxi{Rg/CS,[282]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-1020/Ei,---/eneg,151/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep17\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+9\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+9/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1994/DiscY,8/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxii{Cn/CS,[285]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-1155/Ei,---/eneg,---/eaff,+2/O,+II/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1996/DiscY,8/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxiii{Nh/CS,[286]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-707.2/Ei,---/eneg,66.6/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+1/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+1/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2004/DiscY,16/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxiv{Fl/CS,[289]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-832.2/Ei,---/eneg,---/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+2/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1998/DiscY,15/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxv{Mc/CS,[290]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-538.3/Ei,---/eneg,35.3/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+3/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+3/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2003/DiscY,16/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxvi{Lv/CS,[293]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-663.9/Ei,---/eneg,74.9/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+4/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+4/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2000/DiscY,15/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxvii{Ts/CS,[294]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-736.9/Ei,---/eneg,165.9/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+5/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+5/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2009/DiscY,100/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxviii{Og/CS,[294]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-860.1/Ei,---/eneg,5.4/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+6/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+6/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2002/DiscY,16/DiscC,0/spectra,sintetico/cor}%
\endinput
diff --git a/graphics/pgf/contrib/pgf-periodictable/pgfPT.drawing.keys.tex b/graphics/pgf/contrib/pgf-periodictable/pgfPT.drawing.keys.tex
index 8c09f620e1..8406d1a9a7 100644
--- a/graphics/pgf/contrib/pgf-periodictable/pgfPT.drawing.keys.tex
+++ b/graphics/pgf/contrib/pgf-periodictable/pgfPT.drawing.keys.tex
@@ -189,6 +189,12 @@ group label color/.default=blue!50!black,%
label LaAc font/.get=\pgfPTlabLaAcfont,%
label LaAc font/.store in=\pgfPTlabLaAcfont,%
label LaAc font/.default=\footnotesize\itshape,%
+group numbers/.get=\pgfPTgrnum,% new in v2.1.1
+group numbers/.store in=\pgfPTgrnum,%
+group numbers/.default=arabic,%
+Roman label color/.get=\pgfPTRomanlabgrcolor,% new in v2.1.1
+Roman label color/.store in=\pgfPTRomanlabgrcolor,%
+Roman label color/.default=blue!70!white,%
LaAc/.code=\pgfPT@LaAcstyle{#1},%
LaAc/.default={s=true,f=\footnotesize\itshape},%
per/.code=\pgfPT@perstyle{#1},%
@@ -199,7 +205,30 @@ per+gr/.code=\pgfPT@pergrstyle{#1},%
per+gr/.default={pc=red!50!black,gc=blue!50!black,f=\small\bfseries}%
}%
% setting keys with default values ---------------------------------------------------------------
-\pgfkeys{/pgfPerTable/.cd,label font,period label color,group label color,label LaAc font}%
+\pgfkeys{/pgfPerTable/.cd,label font,period label color,group label color,label LaAc font,group numbers,Roman label color}%
+% Groups in 'old' Roman numerals
+% CAS (USA) ; old IUPAC (Europe) ->
+\newif\ifpgfPT@grRoman@CAS\newif\ifpgfPT@grRoman\newif\ifpgfPT@grarabic%
+\def\pgfPT@gr@numbers#1{\edef\@pgfPT@grnum@atual{#1}\relax%
+\edef\@pgfPT@grnum@CAS{CAS}\edef\@pgfPT@grnum@IUPAC{IUPAC}%
+\edef\@pgfPT@grnum@CASarabic{CAS*}\edef\@pgfPT@grnum@IUPACarabic{IUPAC*}%
+\pgfPT@grRoman@CASfalse\pgfPT@grRomanfalse\pgfPT@grarabicfalse%
+\ifx\@pgfPT@grnum@atual\@pgfPT@grnum@CAS\relax\pgfPT@grRoman@CAStrue\pgfPT@grRomantrue\else%
+\ifx\@pgfPT@grnum@atual\@pgfPT@grnum@IUPAC\relax\pgfPT@grRomantrue\else%
+\ifx\@pgfPT@grnum@atual\@pgfPT@grnum@CASarabic\relax\pgfPT@grRoman@CAStrue\pgfPT@grRomantrue\pgfPT@grarabictrue\else%
+\ifx\@pgfPT@grnum@atual\@pgfPT@grnum@IUPACarabic\relax\pgfPT@grRomantrue\pgfPT@grarabictrue\fi\fi\fi\fi%
+}%
+\def\pgfPT@gr@Roman#1{\edef\@pgfPT@Z@atual{#1}\relax%
+\ifpgfPT@grRoman@CAS% CAS
+\ifcase\@pgfPT@Z@atual\relax\or I\hspace{.1ex}A\or II\hspace{.1ex}A\or III\hspace{.1ex}B\or IV\hspace{.1ex}B\or V\hspace{.1ex}B\or VI\hspace{.1ex}B\or VII\hspace{.1ex}B\or%
+\tikz{\path (0,0);\draw[line width=.2ex] (.1*\pgfPTcellwd,-.55ex) -- (.1*\pgfPTcellwd,0) -- (1.2*\pgfPTcellwd,0);}\or VIII\hspace{.1ex}B\or\tikz[xscale=-1]{\path (0,0);\draw[line width=.2ex] (.1*\pgfPTcellwd,-.55ex) -- (.1*\pgfPTcellwd,0) -- (1.2*\pgfPTcellwd,0);}%
+\or I\hspace{.1ex}B\or II\hspace{.1ex}B\or III\hspace{.1ex}A\or IV\hspace{.1ex}A\or V\hspace{.1ex}A\or VI\hspace{.1ex}A\or VII\hspace{.1ex}A\or VIII\hspace{.1ex}A\fi%
+\else% old IUPAC
+\ifcase\@pgfPT@Z@atual\relax\or I\hspace{.1ex}A\or II\hspace{.1ex}A\or III\hspace{.1ex}A\or IV\hspace{.1ex}A\or V\hspace{.1ex}A\or VI\hspace{.1ex}A\or VII\hspace{.1ex}A\or
+\tikz{\path (0,0);\draw[line width=.2ex] (.1*\pgfPTcellwd,-.55ex) -- (.1*\pgfPTcellwd,0) -- (1.2*\pgfPTcellwd,0);}\or VIII\hspace{.1ex}A\or\tikz[xscale=-1]{\path (0,0);\draw[line width=.2ex] (.1*\pgfPTcellwd,-.55ex) -- (.1*\pgfPTcellwd,0) -- (1.2*\pgfPTcellwd,0);}%
+\or I\hspace{.1ex}B\or II\hspace{.1ex}B\or III\hspace{.1ex}B\or IV\hspace{.1ex}B\or V\hspace{.1ex}B\or VI\hspace{.1ex}B\or VII\hspace{.1ex}B\or0\fi%
+\fi%
+}%
% end !! PGF keys: labels of periods and groups ------------------------------------------------
%
% defining PGF keys: the cells of the periodic table to be drawn -------------------------------
@@ -444,16 +473,18 @@ eaff font/.default=\tiny\bfseries%
% setting keys with default values -----------------------------------------------------------------
\pgfkeys{/pgfPerTable/.cd,eaff color,eaff font}%
% end !!
+\newif\ifpgfPTORoman% new in v2.1.1
\pgfkeys{/pgfPerTable/.cd,%
O color/.get=\pgfPTOcolor,%
O color/.store in=\pgfPTOcolor,%
O color/.default=black,%
O font/.get=\pgfPTOfont,%
O font/.store in=\pgfPTOfont,%
-O font/.default=\tiny\bfseries%
+O font/.default=\tiny\bfseries,%
+O Roman/.is if=pgfPTORoman% new in v2.1.1
}%
% setting keys with default values -----------------------------------------------------------------
-\pgfkeys{/pgfPerTable/.cd,O color,O font}%
+\pgfkeys{/pgfPerTable/.cd,O color,O font,O Roman=false}%
% end !!
\pgfkeys{/pgfPerTable/.cd,%
Tmelt color/.get=\pgfPTTmeltcolor,%
diff --git a/graphics/pgf/contrib/pgf-spectra/README b/graphics/pgf/contrib/pgf-spectra/README
index 3f4fef79e2..12c4c6b8ad 100644
--- a/graphics/pgf/contrib/pgf-spectra/README
+++ b/graphics/pgf/contrib/pgf-spectra/README
@@ -1,4 +1,4 @@
-This is pgf-spectra, version 3.0.1 (27/04/2023).
+This is pgf-spectra, version 3.0.1a (07/07/2024).
This package provides the \pgfspectra[<options>] command which draws continuous and emission or absorption spectra for 98 elements and their ions.
It was developed mainly for the writing of my own documentation and exams sheets supporting directly PDF output format.
@@ -7,7 +7,7 @@ It also allows the user to draw a spectrum with their own personal data.
The lines data extends from Extreme UV to Near IR (from 10 to 4000 nanometers).
It is possible to redshift the lines of a spectrum, by directly entering the redshift value or the velocity and the angle to compute the redshift value.
Spectral lines data can be presented in a table or exported to a file.
-This package also provides color conversion (correlated color temperature), shadings for use with TikZ and/or PGFPLOTS, color maps for use with PGFPLOTS,
+This package also provides color conversion (correlated color temperature), shadings for use with TikZ and/or PGFPLOTS, color maps for use with PGFPLOTS,
displaying the spectral lines in a table and exporting the lines data files.
____________________________________________________________
@@ -18,13 +18,24 @@ ____________________________________________________________
** Licence: released under the LaTeX Project Public License v1.3 or later, see http://www.latex-project.org/lppl.txt
____________________________________________________________
+*** v3.0.1a (07/07/2024) ***
+Removed lines data outside the range 10nm - 4000nm (H, He, Be, C, Si, Kr, Sn, I) in LSE data file, which generate a package warning, e.g.
+«Package pgf-spectra Warning: invalid wavelength (4051.1602nm). The wavelength must be lesser or equal to 4000nm (NIR)... on input line 27».
+Fixed chemical symbol label width producing incorrect alignment on consecutive lines for the spectrum of some elements, e.g.
+-------------------------------------------------------
+\pgfspectraStyle[axis,begin=400,end=700,axis step=20,axis ticks=9,axis color=lightgray, axis font color=black,label,width=.88\textwidth,height=0.7cm]
+\noindent\pgfspectra[element=Cl]
+
+\noindent\pgfspectra[element=Rn]
+-------------------------------------------------------
+
*** v3.0.1 (27/04/2023) ***
-Fixed a small bug dealing with the 'axis label'/'axis label text' background color, which occurred when setting a visible background with the 'back' key, e.g.,
+Fixed a small bug dealing with the 'axis label'/'axis label text' background color, which occurred when setting a visible background with the 'back' key, e.g.,
\pgfspectra[element=H,axis label text={wavenumber in nanometer},back=visible50]
*** v3.0.0 (25/04/2023) ***
-In the \pgfspectra command, syntax for the key 'lines' has been updated: it is now possible to specify a continuous range using 'start wavelength to end
+In the \pgfspectra command, syntax for the key 'lines' has been updated: it is now possible to specify a continuous range using 'start wavelength to end
wavelength', for instance, 'lines={380 to 500}' or 'lines={380 to 500,633}' or 'lines={633,555,380 to 500}'.
New keys for \pgfspectra:
- axis label
@@ -45,12 +56,12 @@ ____________________________________________________________
Previous versions
*** v2.2.0 (21/02/2023) ***
-LSE data renormalized to lower values within TeX capabilities. This prevents 'Dimension too large' errors and subsequent errors in spectrum drawing when
+LSE data renormalized to lower values within TeX capabilities. This prevents 'Dimension too large' errors and subsequent errors in spectrum drawing when
using the 'relative intensity' key.
-Added maximum intensities in IR, visible an UV ranges for both data sources (NIST and LSE). Now, when using the 'relative intensity' key, the interval of
-wavelengths is detected and the respective maximum intensity is used. For example, if the spectrum is within the visible range, say between 400 and 700
-nanometers, the maximum visible intensity will be used. The same is true for ranges only in IR or UV ranges. But, if the spectrum to be drawn is in more
-than one region - for example, from 300 to 1000 or from 400 to 1000 or from 300 to 700 nanometers - the maximum intensity that will be used is defined
+Added maximum intensities in IR, visible an UV ranges for both data sources (NIST and LSE). Now, when using the 'relative intensity' key, the interval of
+wavelengths is detected and the respective maximum intensity is used. For example, if the spectrum is within the visible range, say between 400 and 700
+nanometers, the maximum visible intensity will be used. The same is true for ranges only in IR or UV ranges. But, if the spectrum to be drawn is in more
+than one region - for example, from 300 to 1000 or from 400 to 1000 or from 300 to 700 nanometers - the maximum intensity that will be used is defined
as the maximum intensity of all data.
Fixed some typos in the manual.
diff --git a/graphics/pgf/contrib/pgf-spectra/pgf-spectra.data.LSE.tex b/graphics/pgf/contrib/pgf-spectra/pgf-spectra.data.LSE.tex
index 53303b35f6..9bb4004bfb 100644
--- a/graphics/pgf/contrib/pgf-spectra/pgf-spectra.data.LSE.tex
+++ b/graphics/pgf/contrib/pgf-spectra/pgf-spectra.data.LSE.tex
@@ -31,12 +31,12 @@
% (see Es, Bk...)
%
\protected\def\pgfspectra@elt@data#1{\relax\ignorespaces\global\pgfspectra@datanotfoundtrue\relax%
-\pgfspectra@elt@search{#1}{H}{[92.6226 15 0],[93.0748 20 0],[93.7803 30 0],[94.9743 50 0],[97.2537 100 0],[102.5722 300 0],[121.5668 1000 0],[121.5674 500 0],[383.5384 5 0],[388.9049 6 0],[397.0072 8 0],[410.174 15 0],[434.047 30 0],[486.133 80 0],[656.272 120 0],[656.2852 180 0],[954.597 5 0],[1004.94 7 0],[1093.81 12 0],[1281.81 20 0],[1875.1 40 0],[2165.5301 5 0],[2625.15 8 0],[4051.1602 15 0],[4652.5102 4 0],[7457.8 6 0],[12368.5 3 0]}{ALLx1000x1000x0x0x0x0x0}{UVx1000x1000x0x0x0x0x0}{VISx180x180x0x0x0x0x0}{IVx40x40x0x0x0x0x0}%
-\pgfspectra@elt@search{#1}{He}{[23.1454 15 1],[23.2584 20 1],[23.4347 30 1],[23.7331 50 1],[24.3027 100 1],[25.6317 300 1],[30.378 1000 1],[30.3786 500 1],[32.0293 10 0],[50.55 2 0],[50.5684 3 0],[50.5912 4 0],[50.62 5 0],[50.657 7 0],[50.7058 10 0],[50.7718 15 0],[50.8643 20 0],[50.9998 25 0],[51.2098 35 0],[51.5616 50 0],[52.2213 100 0],[53.703 400 0],[58.4334 1000 0],[59.1412 50 0],[95.87 5 1],[97.211 6 1],[99.236 8 1],[102.527 15 1],[108.494 30 1],[121.509 35 1],[121.517 50 1],[164.034 120 1],[164.047 180 1],[238.54 7 1],[251.12 9 1],[257.76 50 0],[272.319 1 0],[273.33 12 1],[276.38 2 0],[281.82 10 0],[282.908 4 0],[294.511 10 0],[301.37 40 0],[318.774 20 0],[320.296 3 1],[320.31 15 1],[335.455 1 0],[344.759 2 0],[358.727 1 0],[361.364 3 0],[363.423 2 0],[370.5 3 0],[373.286 1 0],[381.9607 10 0],[381.976 1 0],[388.865 500 0],[396.4729 20 0],[400.927 1 0],[402.6191 50 0],[402.636 5 0],[412.082 12 0],[412.099 2 0],[414.376 3 0],[438.7929 10 0],[443.755 3 0],[447.1479 200 0],[447.168 25 0],[468.54 6 1],[468.57 30 1],[471.3146 30 0],[471.338 4 0],[492.1931 20 0],[501.5678 100 0],[504.774 10 0],[541.152 5 1],[587.562 500 0],[587.597 100 0],[656.01 8 1],[667.815 100 0],[686.748 3 0],[706.519 200 0],[706.571 30 0],[728.135 50 0],[781.615 1 0],[836.169 2 0],[906.327 2 0],[921.034 2 0],[946.361 10 0],[951.66 4 0],[952.617 3 0],[952.927 1 0],[960.342 1 0],[970.26 3 0],[1002.773 6 0],[1003.116 2 0],[1012.36 15 1],[1013.85 1 0],[1031.123 10 0],[1031.154 2 0],[1066.765 3 0],[1082.909 300 0],[1083.025 1000 0],[1083.034 2000 0],[1091.305 9 0],[1091.71 3 0],[1162.64 4 1],[1196.912 30 0],[1252.752 20 0],[1278.499 50 0],[1279.057 20 0],[1284.596 7 0],[1296.845 10 0],[1298.489 2 0],[1508.364 12 0],[1700.2471 200 0],[1855.5551 1 0],[1863.6801 6 1],[1868.534 500 0],[1869.723 200 0],[1908.9381 100 0],[1954.308 20 0],[2058.1301 1000 0],[2112.007 80 0],[2112.143 10 0],[2113.2029 20 0],[3090.85 3 1],[4047.8898 4 0]}{ALLx2000x2000x1000x0x0x0x0}{UVx1000x1000x1000x0x0x0x0}{VISx500x500x30x0x0x0x0}{IVx2000x2000x15x0x0x0x0}%
+\pgfspectra@elt@search{#1}{H}{[92.6226 15 0],[93.0748 20 0],[93.7803 30 0],[94.9743 50 0],[97.2537 100 0],[102.5722 300 0],[121.5668 1000 0],[121.5674 500 0],[383.5384 5 0],[388.9049 6 0],[397.0072 8 0],[410.174 15 0],[434.047 30 0],[486.133 80 0],[656.272 120 0],[656.2852 180 0],[954.597 5 0],[1004.94 7 0],[1093.81 12 0],[1281.81 20 0],[1875.1 40 0],[2165.5301 5 0],[2625.15 8 0]}{ALLx1000x1000x0x0x0x0x0}{UVx1000x1000x0x0x0x0x0}{VISx180x180x0x0x0x0x0}{IVx40x40x0x0x0x0x0}%,[4051.1602 15 0],[4652.5102 4 0],[7457.8 6 0],[12368.5 3 0]
+\pgfspectra@elt@search{#1}{He}{[23.1454 15 1],[23.2584 20 1],[23.4347 30 1],[23.7331 50 1],[24.3027 100 1],[25.6317 300 1],[30.378 1000 1],[30.3786 500 1],[32.0293 10 0],[50.55 2 0],[50.5684 3 0],[50.5912 4 0],[50.62 5 0],[50.657 7 0],[50.7058 10 0],[50.7718 15 0],[50.8643 20 0],[50.9998 25 0],[51.2098 35 0],[51.5616 50 0],[52.2213 100 0],[53.703 400 0],[58.4334 1000 0],[59.1412 50 0],[95.87 5 1],[97.211 6 1],[99.236 8 1],[102.527 15 1],[108.494 30 1],[121.509 35 1],[121.517 50 1],[164.034 120 1],[164.047 180 1],[238.54 7 1],[251.12 9 1],[257.76 50 0],[272.319 1 0],[273.33 12 1],[276.38 2 0],[281.82 10 0],[282.908 4 0],[294.511 10 0],[301.37 40 0],[318.774 20 0],[320.296 3 1],[320.31 15 1],[335.455 1 0],[344.759 2 0],[358.727 1 0],[361.364 3 0],[363.423 2 0],[370.5 3 0],[373.286 1 0],[381.9607 10 0],[381.976 1 0],[388.865 500 0],[396.4729 20 0],[400.927 1 0],[402.6191 50 0],[402.636 5 0],[412.082 12 0],[412.099 2 0],[414.376 3 0],[438.7929 10 0],[443.755 3 0],[447.1479 200 0],[447.168 25 0],[468.54 6 1],[468.57 30 1],[471.3146 30 0],[471.338 4 0],[492.1931 20 0],[501.5678 100 0],[504.774 10 0],[541.152 5 1],[587.562 500 0],[587.597 100 0],[656.01 8 1],[667.815 100 0],[686.748 3 0],[706.519 200 0],[706.571 30 0],[728.135 50 0],[781.615 1 0],[836.169 2 0],[906.327 2 0],[921.034 2 0],[946.361 10 0],[951.66 4 0],[952.617 3 0],[952.927 1 0],[960.342 1 0],[970.26 3 0],[1002.773 6 0],[1003.116 2 0],[1012.36 15 1],[1013.85 1 0],[1031.123 10 0],[1031.154 2 0],[1066.765 3 0],[1082.909 300 0],[1083.025 1000 0],[1083.034 2000 0],[1091.305 9 0],[1091.71 3 0],[1162.64 4 1],[1196.912 30 0],[1252.752 20 0],[1278.499 50 0],[1279.057 20 0],[1284.596 7 0],[1296.845 10 0],[1298.489 2 0],[1508.364 12 0],[1700.2471 200 0],[1855.5551 1 0],[1863.6801 6 1],[1868.534 500 0],[1869.723 200 0],[1908.9381 100 0],[1954.308 20 0],[2058.1301 1000 0],[2112.007 80 0],[2112.143 10 0],[2113.2029 20 0],[3090.85 3 1]}{ALLx2000x2000x1000x0x0x0x0}{UVx1000x1000x1000x0x0x0x0}{VISx500x500x30x0x0x0x0}{IVx2000x2000x15x0x0x0x0}%,[4047.8898 4 0]
\pgfspectra@elt@search{#1}{Li}{[149.293 3 1],[149.297 5 1],[149.304 1 1],[165.308 3 1],[165.313 5 1],[165.321 1 1],[233.688 3 1],[233.691 5 1],[233.7 2 1],[239.439 1 0],[242.543 3 0],[247.506 10 0],[255.17 24 1],[256.231 15 0],[265.729 2 1],[265.73 3 1],[272.824 0 1],[272.829 5 1],[272.832 2 1],[273.047 3 1],[273.055 1 1],[274.12 5 0],[293.402 2 1],[293.407 2 1],[293.412 5 1],[293.425 1 1],[302.912 3 1],[302.914 3 1],[315.531 3 1],[315.533 4 1],[319.626 1 1],[319.633 9 1],[319.636 4 1],[319.933 5 1],[319.943 2 1],[323.266 17 0],[371.4 1 1],[371.416 5 1],[371.427 6 1],[371.429 8 1],[371.44 7 1],[371.441 10 1],[371.451 1 1],[371.458 0 1],[371.87 3 0],[379.472 6 0],[391.53 20 0],[391.535 20 0],[398.548 10 0],[398.554 10 0],[413.256 40 0],[413.262 40 0],[427.307 20 0],[427.313 20 0],[432.542 5 1],[432.547 5 1],[432.554 1 1],[460.283 13 0],[460.289 13 0],[467.151 0 1],[467.165 6 1],[467.17 2 1],[467.806 3 1],[467.829 1 1],[488.132 4 1],[488.139 4 1],[488.149 1 1],[497.166 8 0],[497.175 8 0],[548.355 600 1],[548.565 600 1],[610.354 320 0],[610.365 320 0],[670.776 3600 0],[670.791 3600 0],[812.623 48 0],[812.645 48 0]}{ALLx3600x3600x600x0x0x0x0}{UVx24x17x24x0x0x0x0}{VISx3600x3600x600x0x0x0x0}{IVx48x48x0x0x0x0x0}%
-\pgfspectra@elt@search{#1}{Be}{[7.61 1 2],[7.648 2 2],[7.853 3 2],[7.866 4 2],[7.892 1 2],[8.189 5 2],[8.238 10 2],[8.32 20 2],[8.476 30 2],[8.831 50 2],[10.025 100 2],[50.999 3 2],[54.931 2 2],[58.208 6 2],[66.132 4 2],[67.559 8 2],[72.559 4 2],[72.571 5 1],[74.358 5 1],[74.623 7 2],[76.775 2 2],[77.537 8 1],[84.206 20 1],[92.525 2 1],[94.356 10 1],[97.327 10 1],[102.693 8 1],[103.632 5 1],[104.823 15 1],[111.469 1 2],[114.303 20 1],[119.719 60 1],[121.312 2 2],[121.432 1 2],[136.225 2 2],[140.152 1 2],[142.126 10 2],[142.286 5 2],[143.517 1 2],[144.077 2 2],[151.23 20 1],[151.243 60 1],[166.149 100 0],[175.469 2 2],[177.612 15 1],[177.634 20 1],[191.703 3 2],[192.967 5 0],[194.368 10 0],[195.497 60 2],[196.459 50 0],[198.513 5 0],[199.801 60 0],[205.59 50 0],[205.601 100 0],[207.694 75 2],[208.038 60 2],[211.856 25 2],[212.227 15 2],[212.557 10 0],[212.568 20 0],[212.72 15 2],[213.725 5 2],[214.5 25 0],[217.499 55 0],[217.51 55 0],[219.157 5 2],[234.861 950 0],[235.066 20 0],[235.071 60 0],[235.083 200 0],[241.334 2 1],[241.346 16 1],[245.384 20 1],[249.454 35 0],[249.458 35 0],[249.473 100 0],[250.743 16 1],[261.799 5 1],[261.813 20 1],[265.045 100 0],[265.055 60 0],[265.062 200 0],[265.069 60 0],[265.076 100 0],[269.746 5 1],[269.758 20 1],[272.888 20 1],[273.805 30 0],[289.813 20 0],[289.819 10 0],[289.825 20 0],[298.606 30 0],[298.642 10 0],[301.933 60 0],[301.949 30 0],[301.953 30 0],[301.96 20 0],[304.652 10 1],[304.669 30 1],[311.081 10 0],[311.092 10 0],[311.099 20 0],[313.042 480 1],[313.107 320 1],[319.381 20 0],[319.71 20 1],[319.715 30 1],[320.86 20 0],[322.963 60 0],[323.352 2 1],[324.162 10 1],[324.183 30 1],[326.902 15 0],[327.458 100 1],[327.467 30 1],[328.291 30 0],[332.101 30 0],[332.109 30 0],[332.134 220 0],[334.543 20 0],[336.763 60 0],[345.137 5 0],[345.518 300 0],[347.656 20 0],[351.554 300 0],[355.5 10 0],[372.036 100 2],[373.63 100 0],[381.345 700 0],[386.513 40 0],[386.542 80 0],[386.551 1 0],[386.572 6 0],[386.603 100 0],[424.914 90 2],[425.305 100 0],[425.376 60 0],[436.066 300 1],[436.099 500 1],[440.794 400 0],[448.552 2 2],[448.73 100 2],[449.509 1 2],[449.78 140 2],[457.266 12 0],[467.333 700 1],[467.342 1000 1],[470.937 6 0],[482.816 200 1],[484.916 40 0],[485.822 2 1],[508.775 80 0],[521.812 8 1],[521.833 20 1],[525.586 3 1],[527.028 64 1],[527.081 500 1],[540.304 20 1],[541.021 20 1],[614.201 140 2],[622.911 10 0],[627.943 16 1],[627.973 30 1],[647.354 30 0],[654.789 60 1],[655.836 60 1],[656.452 30 0],[663.644 2 1],[675.672 1 1],[675.713 2 1],[678.656 30 0],[688.422 1 0],[688.444 6 0],[698.275 100 0],[715.44 6 0],[715.465 40 0],[720.913 100 0],[740.12 3 1],[740.143 2 1],[755.19 10 0],[761.868 10 0],[761.888 20 0],[809.006 60 0],[815.899 5 0],[815.924 10 0],[825.407 4 0],[828.707 10 0],[854.736 30 0],[854.767 60 0],[880.137 300 0],[888.218 6 0],[919.045 40 0],[924.392 20 0],[934.389 1 1],[939.274 40 0],[947.643 2 1],[947.703 16 1],[984.732 20 0],[989.563 10 0],[989.596 20 0],[993.978 80 0],[1009.552 16 1],[1009.573 20 1],[1011.992 60 1],[1033.103 80 0],[1106.646 30 0],[1117.373 1 1],[1149.639 120 0],[1162.516 2 1],[1166.025 2 1],[1209.536 100 1],[1209.818 30 1],[1464.392 100 0],[1464.475 60 0],[1615.772 200 0],[1785.5381 80 0],[1785.6631 120 0],[1814.3539 100 0],[3177.5051 160 0],[3177.8699 200 0]}{ALLx1000x950x1000x140x0x0x0}{UVx950x950x480x100x0x0x0}{VISx1000x700x1000x140x0x0x0}{IVx300x300x100x0x0x0x0}%
-\pgfspectra@elt@search{#1}{B}{[4.859 30 4],[5.268 10 3],[6.031 30 3],[34.4 160 3],[38.5 450 3],[41.18 40 2],[41.87 285 3],[51.077 20 2],[51.085 40 2],[51.824 150 2],[51.827 75 2],[67.7 110 2],[67.714 160 2],[69.395 70 1],[73.136 40 1],[73.144 40 1],[75.848 40 2],[75.867 70 2],[88.254 110 1],[88.268 110 1],[98.467 40 1],[108.188 110 1],[108.207 110 1],[111.22 70 3],[116.89 450 3],[117.09 70 3],[123.016 110 1],[136.246 220 1],[160.046 70 0],[160.073 120 0],[162.358 160 1],[162.377 110 1],[162.402 220 1],[162.416 70 1],[162.434 160 1],[166.304 100 0],[166.687 150 0],[166.729 200 0],[181.786 150 0],[181.837 200 0],[182.591 300 0],[182.641 300 0],[184.281 110 1],[195.383 20 2],[206.578 550 2],[206.638 250 0],[206.665 250 0],[206.693 100 0],[206.719 300 0],[206.723 450 2],[207.709 160 2],[208.891 500 0],[208.957 500 0],[222.03 70 1],[223.409 40 2],[223.459 70 2],[232.303 40 1],[232.867 40 1],[239.32 40 1],[239.505 220 1],[245.969 40 1],[245.99 40 1],[249.677 1000 0],[249.773 1000 0],[252.47 70 3],[253.03 160 3],[282.168 450 3],[282.457 70 3],[282.585 285 3],[291.808 160 1],[303.226 110 1],[317.933 70 1],[332.318 110 1],[332.36 110 1],[345.129 450 1],[412.193 285 1],[419.479 110 1],[424.298 40 2],[424.361 70 2],[447.21 110 1],[447.285 110 1],[448.705 220 2],[449.773 360 2],[478.421 70 1],[494.038 110 1],[608.044 110 1],[628.547 70 1],[703.02 70 1],[703.19 40 1],[783.525 110 2],[784.141 70 2],[866.722 20 0],[866.857 70 0],[1166.004 800 0],[1166.247 570 0],[1562.908 125 0],[1624.038 200 0],[1624.467 250 0],[1899.433 235 0]}{ALLx1000x1000x450x550x450x30x0}{UVx1000x1000x450x550x450x30x0}{VISx360x0x285x360x0x0x0}{IVx800x800x0x110x0x0x0}%
-\pgfspectra@elt@search{#1}{C}{[3.4973 110 4],[4.0268 450 4],[22.719 110 4],[24.491 250 3],[24.866 160 4],[24.874 160 4],[28.914 200 3],[28.923 250 3],[31.242 570 3],[31.246 500 3],[37.169 250 2],[37.175 250 2],[37.178 150 2],[38.403 650 3],[38.418 700 3],[38.6203 500 2],[41.952 400 3],[41.971 500 3],[45.0734 200 2],[45.946 400 2],[45.952 500 2],[45.963 570 2],[51.1522 250 2],[53.5288 250 2],[53.808 300 2],[53.8149 350 2],[53.8312 400 2],[57.4281 350 2],[59.5022 9 1],[68.7053 30 1],[68.7345 50 1],[85.8092 10 1],[85.8559 20 1],[90.3624 30 1],[90.3962 60 1],[90.4142 150 1],[90.448 30 1],[97.703 800 2],[100.986 9 1],[101.008 10 1],[101.037 10 1],[103.6337 80 1],[103.7018 150 1],[115.791 150 0],[115.8019 150 0],[115.8035 150 0],[117.493 370 2],[117.526 350 2],[117.559 330 2],[117.571 500 2],[117.599 350 2],[117.637 370 2],[118.8992 150 0],[118.9447 150 0],[118.9631 200 0],[119.3009 300 0],[119.3031 300 0],[119.324 300 0],[119.3264 300 0],[119.3393 100 0],[119.3649 150 0],[119.3679 150 0],[119.4064 100 0],[119.4488 100 0],[126.1552 100 0],[127.7245 250 0],[127.7282 250 0],[127.7513 300 0],[127.755 300 0],[128.0333 200 0],[131.1363 100 0],[132.3951 9 1],[132.9578 120 0],[132.96 120 0],[133.4532 150 1],[133.5708 300 1],[135.4288 100 0],[135.584 150 0],[136.4164 120 0],[145.9032 100 0],[146.3336 200 0],[146.7402 120 0],[148.1764 150 0],[154.8202 1000 3],[155.0774 900 3],[156.031 150 0],[156.0683 400 0],[156.0708 400 0],[156.1341 100 0],[156.1438 400 0],[165.6266 150 0],[165.6928 120 0],[165.7008 300 0],[165.738 120 0],[165.7907 120 0],[165.8122 150 0],[175.1823 500 0],[193.0905 1000 0],[216.294 250 2],[227.091 40 4],[227.725 5 4],[227.792 20 4],[229.687 800 2],[247.856 800 0],[250.912 250 1],[251.206 350 1],[252.441 200 3],[252.998 300 3],[257.483 250 1],[269.775 150 2],[272.485 110 2],[272.53 150 2],[272.59 150 2],[274.128 350 1],[274.649 250 1],[283.671 1000 1],[283.76 800 1],[298.211 200 2],[299.262 800 1],[387.619 350 1],[387.641 350 1],[387.666 350 1],[391.898 570 1],[392.069 800 1],[405.606 150 2],[406.794 200 2],[406.891 250 2],[407.026 250 2],[407.452 250 1],[407.585 350 1],[416.286 150 2],[418.69 250 2],[426.7 800 1],[426.726 1000 1],[432.556 200 2],[464.742 600 2],[465.025 520 2],[465.147 375 2],[465.83 200 3],[466.586 200 2],[477.175 200 0],[493.205 200 0],[494.388 5 4],[494.456 5 4],[505.217 200 0],[513.294 350 1],[513.328 350 1],[514.349 350 1],[514.516 570 1],[515.109 400 1],[538.034 300 0],[564.807 250 1],[566.247 350 1],[569.592 450 2],[580.133 250 3],[581.198 200 3],[582.642 150 2],[588.977 570 1],[589.159 350 1],[600.113 200 0],[600.603 250 0],[600.718 110 0],[601.068 150 0],[601.322 300 0],[601.484 250 0],[657.805 800 1],[658.288 570 1],[658.761 200 0],[674.438 150 2],[678.39 250 1],[703.725 150 2],[711.318 250 0],[711.519 250 0],[711.563 250 1],[711.699 200 0],[711.99 350 1],[723.132 800 1],[723.642 1000 1],[761.265 150 2],[772.62 90 3],[786.089 200 0],[805.862 200 0],[819.648 300 2],[833.299 150 2],[833.515 520 0],[850.032 300 2],[906.143 250 0],[906.247 200 0],[907.828 200 0],[908.851 250 0],[909.483 450 0],[911.18 300 0],[940.573 800 0],[960.303 150 0],[962.08 250 0],[965.844 300 0],[1068.308 200 0],[1069.125 300 0],[1161.929 12 0],[1162.883 23 0],[1165.885 13 0],[1165.968 47 0],[1166.963 24 0],[1174.822 85 0],[1175.332 142 0],[1175.476 114 0],[1177.754 11 0],[1189.291 17 0],[1189.575 30 0],[1261.41 26 0],[1350.227 20 0],[1439.965 38 0],[1440.325 16 0],[1442.012 61 0],[1442.903 12 0],[1444.224 13 0],[1655.966 12 0],[1689.0381 50 0],[1733.8561 10 0],[1744.86 11 0],[1813.9801 13 0],[1972.199 23 0]}{ALLx1000x1000x1000x800x1000x450x0}{UVx1000x1000x1000x800x1000x450x0}{VISx1000x300x1000x600x250x5x0}{IVx800x800x0x300x0x0x0}%
+\pgfspectra@elt@search{#1}{Be}{[10.025 100 2],[50.999 3 2],[54.931 2 2],[58.208 6 2],[66.132 4 2],[67.559 8 2],[72.559 4 2],[72.571 5 1],[74.358 5 1],[74.623 7 2],[76.775 2 2],[77.537 8 1],[84.206 20 1],[92.525 2 1],[94.356 10 1],[97.327 10 1],[102.693 8 1],[103.632 5 1],[104.823 15 1],[111.469 1 2],[114.303 20 1],[119.719 60 1],[121.312 2 2],[121.432 1 2],[136.225 2 2],[140.152 1 2],[142.126 10 2],[142.286 5 2],[143.517 1 2],[144.077 2 2],[151.23 20 1],[151.243 60 1],[166.149 100 0],[175.469 2 2],[177.612 15 1],[177.634 20 1],[191.703 3 2],[192.967 5 0],[194.368 10 0],[195.497 60 2],[196.459 50 0],[198.513 5 0],[199.801 60 0],[205.59 50 0],[205.601 100 0],[207.694 75 2],[208.038 60 2],[211.856 25 2],[212.227 15 2],[212.557 10 0],[212.568 20 0],[212.72 15 2],[213.725 5 2],[214.5 25 0],[217.499 55 0],[217.51 55 0],[219.157 5 2],[234.861 950 0],[235.066 20 0],[235.071 60 0],[235.083 200 0],[241.334 2 1],[241.346 16 1],[245.384 20 1],[249.454 35 0],[249.458 35 0],[249.473 100 0],[250.743 16 1],[261.799 5 1],[261.813 20 1],[265.045 100 0],[265.055 60 0],[265.062 200 0],[265.069 60 0],[265.076 100 0],[269.746 5 1],[269.758 20 1],[272.888 20 1],[273.805 30 0],[289.813 20 0],[289.819 10 0],[289.825 20 0],[298.606 30 0],[298.642 10 0],[301.933 60 0],[301.949 30 0],[301.953 30 0],[301.96 20 0],[304.652 10 1],[304.669 30 1],[311.081 10 0],[311.092 10 0],[311.099 20 0],[313.042 480 1],[313.107 320 1],[319.381 20 0],[319.71 20 1],[319.715 30 1],[320.86 20 0],[322.963 60 0],[323.352 2 1],[324.162 10 1],[324.183 30 1],[326.902 15 0],[327.458 100 1],[327.467 30 1],[328.291 30 0],[332.101 30 0],[332.109 30 0],[332.134 220 0],[334.543 20 0],[336.763 60 0],[345.137 5 0],[345.518 300 0],[347.656 20 0],[351.554 300 0],[355.5 10 0],[372.036 100 2],[373.63 100 0],[381.345 700 0],[386.513 40 0],[386.542 80 0],[386.551 1 0],[386.572 6 0],[386.603 100 0],[424.914 90 2],[425.305 100 0],[425.376 60 0],[436.066 300 1],[436.099 500 1],[440.794 400 0],[448.552 2 2],[448.73 100 2],[449.509 1 2],[449.78 140 2],[457.266 12 0],[467.333 700 1],[467.342 1000 1],[470.937 6 0],[482.816 200 1],[484.916 40 0],[485.822 2 1],[508.775 80 0],[521.812 8 1],[521.833 20 1],[525.586 3 1],[527.028 64 1],[527.081 500 1],[540.304 20 1],[541.021 20 1],[614.201 140 2],[622.911 10 0],[627.943 16 1],[627.973 30 1],[647.354 30 0],[654.789 60 1],[655.836 60 1],[656.452 30 0],[663.644 2 1],[675.672 1 1],[675.713 2 1],[678.656 30 0],[688.422 1 0],[688.444 6 0],[698.275 100 0],[715.44 6 0],[715.465 40 0],[720.913 100 0],[740.12 3 1],[740.143 2 1],[755.19 10 0],[761.868 10 0],[761.888 20 0],[809.006 60 0],[815.899 5 0],[815.924 10 0],[825.407 4 0],[828.707 10 0],[854.736 30 0],[854.767 60 0],[880.137 300 0],[888.218 6 0],[919.045 40 0],[924.392 20 0],[934.389 1 1],[939.274 40 0],[947.643 2 1],[947.703 16 1],[984.732 20 0],[989.563 10 0],[989.596 20 0],[993.978 80 0],[1009.552 16 1],[1009.573 20 1],[1011.992 60 1],[1033.103 80 0],[1106.646 30 0],[1117.373 1 1],[1149.639 120 0],[1162.516 2 1],[1166.025 2 1],[1209.536 100 1],[1209.818 30 1],[1464.392 100 0],[1464.475 60 0],[1615.772 200 0],[1785.5381 80 0],[1785.6631 120 0],[1814.3539 100 0],[3177.5051 160 0],[3177.8699 200 0]}{ALLx1000x950x1000x140x0x0x0}{UVx950x950x480x100x0x0x0}{VISx1000x700x1000x140x0x0x0}{IVx300x300x100x0x0x0x0}%[7.61 1 2],[7.648 2 2],[7.853 3 2],[7.866 4 2],[7.892 1 2],[8.189 5 2],[8.238 10 2],[8.32 20 2],[8.476 30 2],[8.831 50 2],
+\pgfspectra@elt@search{#1}{B}{[34.4 160 3],[38.5 450 3],[41.18 40 2],[41.87 285 3],[51.077 20 2],[51.085 40 2],[51.824 150 2],[51.827 75 2],[67.7 110 2],[67.714 160 2],[69.395 70 1],[73.136 40 1],[73.144 40 1],[75.848 40 2],[75.867 70 2],[88.254 110 1],[88.268 110 1],[98.467 40 1],[108.188 110 1],[108.207 110 1],[111.22 70 3],[116.89 450 3],[117.09 70 3],[123.016 110 1],[136.246 220 1],[160.046 70 0],[160.073 120 0],[162.358 160 1],[162.377 110 1],[162.402 220 1],[162.416 70 1],[162.434 160 1],[166.304 100 0],[166.687 150 0],[166.729 200 0],[181.786 150 0],[181.837 200 0],[182.591 300 0],[182.641 300 0],[184.281 110 1],[195.383 20 2],[206.578 550 2],[206.638 250 0],[206.665 250 0],[206.693 100 0],[206.719 300 0],[206.723 450 2],[207.709 160 2],[208.891 500 0],[208.957 500 0],[222.03 70 1],[223.409 40 2],[223.459 70 2],[232.303 40 1],[232.867 40 1],[239.32 40 1],[239.505 220 1],[245.969 40 1],[245.99 40 1],[249.677 1000 0],[249.773 1000 0],[252.47 70 3],[253.03 160 3],[282.168 450 3],[282.457 70 3],[282.585 285 3],[291.808 160 1],[303.226 110 1],[317.933 70 1],[332.318 110 1],[332.36 110 1],[345.129 450 1],[412.193 285 1],[419.479 110 1],[424.298 40 2],[424.361 70 2],[447.21 110 1],[447.285 110 1],[448.705 220 2],[449.773 360 2],[478.421 70 1],[494.038 110 1],[608.044 110 1],[628.547 70 1],[703.02 70 1],[703.19 40 1],[783.525 110 2],[784.141 70 2],[866.722 20 0],[866.857 70 0],[1166.004 800 0],[1166.247 570 0],[1562.908 125 0],[1624.038 200 0],[1624.467 250 0],[1899.433 235 0]}{ALLx1000x1000x450x550x450x30x0}{UVx1000x1000x450x550x450x30x0}{VISx360x0x285x360x0x0x0}{IVx800x800x0x110x0x0x0}%[4.859 30 4],[5.268 10 3],[6.031 30 3],
+\pgfspectra@elt@search{#1}{C}{[22.719 110 4],[24.491 250 3],[24.866 160 4],[24.874 160 4],[28.914 200 3],[28.923 250 3],[31.242 570 3],[31.246 500 3],[37.169 250 2],[37.175 250 2],[37.178 150 2],[38.403 650 3],[38.418 700 3],[38.6203 500 2],[41.952 400 3],[41.971 500 3],[45.0734 200 2],[45.946 400 2],[45.952 500 2],[45.963 570 2],[51.1522 250 2],[53.5288 250 2],[53.808 300 2],[53.8149 350 2],[53.8312 400 2],[57.4281 350 2],[59.5022 9 1],[68.7053 30 1],[68.7345 50 1],[85.8092 10 1],[85.8559 20 1],[90.3624 30 1],[90.3962 60 1],[90.4142 150 1],[90.448 30 1],[97.703 800 2],[100.986 9 1],[101.008 10 1],[101.037 10 1],[103.6337 80 1],[103.7018 150 1],[115.791 150 0],[115.8019 150 0],[115.8035 150 0],[117.493 370 2],[117.526 350 2],[117.559 330 2],[117.571 500 2],[117.599 350 2],[117.637 370 2],[118.8992 150 0],[118.9447 150 0],[118.9631 200 0],[119.3009 300 0],[119.3031 300 0],[119.324 300 0],[119.3264 300 0],[119.3393 100 0],[119.3649 150 0],[119.3679 150 0],[119.4064 100 0],[119.4488 100 0],[126.1552 100 0],[127.7245 250 0],[127.7282 250 0],[127.7513 300 0],[127.755 300 0],[128.0333 200 0],[131.1363 100 0],[132.3951 9 1],[132.9578 120 0],[132.96 120 0],[133.4532 150 1],[133.5708 300 1],[135.4288 100 0],[135.584 150 0],[136.4164 120 0],[145.9032 100 0],[146.3336 200 0],[146.7402 120 0],[148.1764 150 0],[154.8202 1000 3],[155.0774 900 3],[156.031 150 0],[156.0683 400 0],[156.0708 400 0],[156.1341 100 0],[156.1438 400 0],[165.6266 150 0],[165.6928 120 0],[165.7008 300 0],[165.738 120 0],[165.7907 120 0],[165.8122 150 0],[175.1823 500 0],[193.0905 1000 0],[216.294 250 2],[227.091 40 4],[227.725 5 4],[227.792 20 4],[229.687 800 2],[247.856 800 0],[250.912 250 1],[251.206 350 1],[252.441 200 3],[252.998 300 3],[257.483 250 1],[269.775 150 2],[272.485 110 2],[272.53 150 2],[272.59 150 2],[274.128 350 1],[274.649 250 1],[283.671 1000 1],[283.76 800 1],[298.211 200 2],[299.262 800 1],[387.619 350 1],[387.641 350 1],[387.666 350 1],[391.898 570 1],[392.069 800 1],[405.606 150 2],[406.794 200 2],[406.891 250 2],[407.026 250 2],[407.452 250 1],[407.585 350 1],[416.286 150 2],[418.69 250 2],[426.7 800 1],[426.726 1000 1],[432.556 200 2],[464.742 600 2],[465.025 520 2],[465.147 375 2],[465.83 200 3],[466.586 200 2],[477.175 200 0],[493.205 200 0],[494.388 5 4],[494.456 5 4],[505.217 200 0],[513.294 350 1],[513.328 350 1],[514.349 350 1],[514.516 570 1],[515.109 400 1],[538.034 300 0],[564.807 250 1],[566.247 350 1],[569.592 450 2],[580.133 250 3],[581.198 200 3],[582.642 150 2],[588.977 570 1],[589.159 350 1],[600.113 200 0],[600.603 250 0],[600.718 110 0],[601.068 150 0],[601.322 300 0],[601.484 250 0],[657.805 800 1],[658.288 570 1],[658.761 200 0],[674.438 150 2],[678.39 250 1],[703.725 150 2],[711.318 250 0],[711.519 250 0],[711.563 250 1],[711.699 200 0],[711.99 350 1],[723.132 800 1],[723.642 1000 1],[761.265 150 2],[772.62 90 3],[786.089 200 0],[805.862 200 0],[819.648 300 2],[833.299 150 2],[833.515 520 0],[850.032 300 2],[906.143 250 0],[906.247 200 0],[907.828 200 0],[908.851 250 0],[909.483 450 0],[911.18 300 0],[940.573 800 0],[960.303 150 0],[962.08 250 0],[965.844 300 0],[1068.308 200 0],[1069.125 300 0],[1161.929 12 0],[1162.883 23 0],[1165.885 13 0],[1165.968 47 0],[1166.963 24 0],[1174.822 85 0],[1175.332 142 0],[1175.476 114 0],[1177.754 11 0],[1189.291 17 0],[1189.575 30 0],[1261.41 26 0],[1350.227 20 0],[1439.965 38 0],[1440.325 16 0],[1442.012 61 0],[1442.903 12 0],[1444.224 13 0],[1655.966 12 0],[1689.0381 50 0],[1733.8561 10 0],[1744.86 11 0],[1813.9801 13 0],[1972.199 23 0]}{ALLx1000x1000x1000x800x1000x450x0}{UVx1000x1000x1000x800x1000x450x0}{VISx1000x300x1000x600x250x5x0}{IVx800x800x0x300x0x0x0}%[3.4973 110 4],[4.0268 450 4],
\pgfspectra@elt@search{#1}{N}{[16.6947 52 4],[18.175 400 3],[18.6069 52 4],[18.6153 62 4],[19.17 400 3],[19.29 400 3],[19.687 500 3],[19.723 500 3],[20.26 500 3],[20.594 500 3],[20.597 500 3],[20.603 500 3],[20.9303 90 4],[21.72 500 3],[21.79 500 3],[22.34 500 3],[22.512 800 3],[22.521 800 3],[23.412 600 3],[23.42 600 3],[23.425 600 3],[23.607 550 3],[23.799 500 3],[23.87 500 3],[23.88 600 3],[23.962 500 3],[24.72 900 3],[24.7561 90 4],[24.7706 120 4],[24.843 500 3],[24.846 500 3],[24.848 500 3],[25.795 500 2],[25.85 650 2],[25.919 700 2],[26.009 800 2],[26.045 600 3],[26.128 800 2],[26.291 500 2],[26.523 500 2],[26.527 500 2],[26.6196 150 4],[26.6379 200 4],[26.87 500 2],[27.099 650 3],[28.342 250 3],[28.348 300 3],[28.358 350 3],[28.556 600 3],[29.77 600 3],[29.782 700 3],[30.032 650 3],[30.3123 90 3],[30.328 500 3],[31.4715 150 2],[31.485 200 2],[31.4877 90 2],[31.5053 150 3],[32.2503 120 3],[32.257 150 3],[32.2724 200 3],[32.3175 120 3],[32.326 600 2],[33.505 300 3],[33.835 500 2],[34.02 500 2],[35.193 500 3],[35.198 500 2],[35.306 700 3],[36.2833 120 2],[36.2881 150 2],[36.2946 150 2],[36.2985 90 2],[37.4204 300 2],[37.4441 350 2],[38.748 500 2],[42.077 500 3],[45.1869 250 2],[45.2226 300 2],[46.374 650 3],[64.4634 285 1],[64.4837 360 1],[64.5178 450 1],[64.75 140 0],[66.0286 360 1],[67.1016 170 1],[67.1386 285 1],[67.163 150 1],[67.1773 160 1],[67.2001 170 1],[68.4996 500 2],[68.5513 570 2],[68.5816 650 2],[68.6335 500 2],[69.27 350 0],[71.3518 90 4],[71.386 150 4],[74.6984 285 1],[74.8195 150 4],[74.8291 200 4],[76.3336 500 2],[76.4359 570 2],[76.5148 570 3],[77.1544 250 2],[77.1901 300 2],[77.2385 350 2],[77.2891 200 2],[77.2975 150 2],[77.5965 650 1],[88.567 90 0],[90.9697 90 0],[91.0278 80 0],[91.0645 40 0],[91.5612 450 1],[91.5962 450 1],[91.6012 550 1],[91.6701 650 1],[92.1992 520 3],[92.1992 520 3],[92.2519 500 3],[92.2519 500 3],[92.3057 480 3],[92.4283 520 3],[95.3415 90 0],[95.3655 100 0],[95.397 130 0],[95.5335 1000 3],[96.399 130 0],[96.4626 115 0],[96.5041 70 0],[97.9842 650 2],[97.9919 700 2],[98.979 900 2],[99.1514 700 2],[99.1579 1000 2],[103.616 150 3],[106.7614 90 0],[106.8612 60 0],[107.871 90 3],[108.399 450 1],[108.458 600 1],[108.5546 430 1],[108.5701 650 1],[109.7237 175 0],[109.8095 115 0],[109.826 115 0],[110.036 105 0],[110.0465 40 0],[110.1291 90 0],[113.4165 360 0],[113.4415 385 0],[113.498 410 0],[114.365 105 0],[116.3884 130 0],[116.4206 60 0],[116.4325 105 0],[116.7448 270 0],[116.8334 105 0],[116.8417 60 0],[116.8536 195 0],[117.651 230 0],[117.663 105 0],[117.7695 195 0],[118.3031 500 2],[118.455 570 2],[118.801 90 3],[119.955 410 0],[120.0223 385 0],[120.071 360 0],[122.5026 175 0],[122.537 160 0],[122.841 130 0],[122.879 160 0],[123.8821 1000 4],[124.2804 900 4],[124.3179 360 0],[124.3306 315 0],[131.054 290 0],[131.095 250 0],[131.9 230 0],[131.968 315 0],[132.657 115 0],[132.792 115 0],[138.7371 150 2],[141.194 360 0],[149.2625 700 0],[149.282 490 0],[149.4675 640 0],[154.9336 90 4],[161.633 200 4],[161.969 350 4],[171.855 1000 3],[172.9945 250 2],[174.2729 775 0],[174.5252 700 0],[174.7848 570 2],[175.1218 350 2],[175.1657 650 2],[180.4486 150 2],[180.5669 200 2],[184.642 150 2],[186.037 90 4],[188.506 350 2],[188.522 400 2],[190.799 200 2],[191.955 150 2],[191.977 150 2],[192.065 300 2],[192.084 150 2],[192.13 200 2],[206.401 200 2],[206.442 250 2],[206.868 120 2],[207.109 90 2],[208.034 90 3],[209.553 160 1],[209.62 70 1],[209.686 110 1],[211.759 90 2],[212.15 90 2],[213.018 110 1],[214.278 160 1],[214.731 90 2],[218.82 200 2],[218.838 150 2],[220.609 160 1],[228.669 160 1],[228.844 110 1],[231.649 220 1],[231.669 160 1],[231.705 285 1],[231.809 90 3],[246.127 160 1],[247.769 150 3],[249.683 110 1],[249.697 70 1],[252.022 110 1],[252.079 160 1],[252.223 220 1],[259.094 110 1],[264.565 250 3],[264.618 300 3],[264.696 350 3],[268.218 250 2],[268.92 90 2],[270.984 160 1],[279.922 110 1],[282.364 110 1],[285.916 60 4],[288.527 160 1],[297.452 90 4],[298.078 150 4],[298.131 250 4],[299.843 60 4],[300.683 220 1],[307.825 90 3],[336.734 120 2],[343.715 360 1],[346.337 90 3],[347.871 570 3],[348.299 500 3],[348.496 400 3],[374.754 90 3],[375.467 90 2],[377.105 120 2],[383.837 285 1],[391.9 360 1],[393.852 90 2],[395.585 450 1],[399.5 1000 1],[399.863 150 2],[400.358 200 2],[403.508 360 1],[404.131 550 1],[404.353 360 1],[405.776 150 3],[409.733 250 2],[409.994 140 0],[410.343 200 2],[410.995 185 0],[417.616 285 1],[419.576 120 2],[420.01 150 2],[422.774 285 1],[423.691 285 1],[423.705 220 1],[424.178 450 1],[433.291 90 2],[434.568 120 2],[437.911 300 2],[443.274 285 1],[444.703 650 1],[451.091 90 2],[451.486 120 2],[453.041 360 1],[460.148 550 1],[460.373 350 4],[460.633 90 3],[460.716 450 1],[461.387 360 1],[461.998 250 4],[462.139 450 1],[463.054 870 1],[463.414 90 2],[464.064 120 2],[464.308 550 1],[478.813 285 1],[480.329 450 1],[484.738 180 0],[485.882 90 2],[486.715 150 2],[489.511 285 1],[491.494 160 0],[493.512 210 0],[494.456 200 4],[495.023 160 0],[496.398 350 0],[498.737 285 1],[499.436 450 1],[500.148 650 1],[500.27 360 1],[500.515 870 1],[500.732 550 1],[501.062 450 1],[501.639 360 1],[502.566 360 1],[504.51 550 1],[528.12 185 0],[529.268 140 0],[531.435 90 2],[532.082 200 2],[532.718 150 2],[549.567 450 1],[553.536 285 1],[566.663 650 1],[567.602 550 1],[567.956 870 1],[568.621 450 1],[571.077 450 1],[574.73 285 1],[575.25 700 0],[576.475 240 0],[582.954 265 0],[585.404 235 0],[592.781 360 1],[593.178 550 1],[594.024 285 1],[594.165 650 1],[595.239 285 1],[599.943 160 0],[600.847 210 0],[616.776 285 1],[637.962 360 1],[638.077 150 3],[641.165 185 0],[642.064 210 0],[642.302 210 0],[642.832 210 0],[643.768 185 0],[644.094 235 0],[645.411 90 2],[645.79 185 0],[646.702 120 2],[646.844 300 0],[648.171 265 0],[648.205 750 1],[648.27 360 0],[648.375 300 0],[648.48 325 0],[649.122 160 0],[649.954 210 0],[650.631 185 0],[661.056 750 1],[662.254 185 0],[663.694 185 0],[664.496 235 0],[664.65 185 0],[665.346 235 0],[665.651 210 0],[672.262 185 0],[739.864 210 0],[740.612 160 0],[740.624 265 0],[742.364 685 0],[744.229 785 0],[746.831 900 0],[760.88 185 0],[761.846 60 4],[776.224 450 1],[818.487 400 0],[818.802 400 0],[820.036 250 0],[821.072 300 0],[821.634 570 0],[822.314 400 0],[824.239 400 0],[843.874 550 1],[856.774 500 0],[859.4 570 0],[862.924 650 0],[865.589 500 0],[867.608 220 1],[868.028 700 0],[868.34 650 0],[868.615 500 0],[868.743 110 1],[869.9 110 1],[870.325 500 0],[871.054 160 1],[871.17 570 0],[871.883 500 0],[872.889 250 0],[874.736 200 0],[938.68 500 0],[939.279 570 0],[946.068 250 0],[986.333 200 0],[986.541 160 1],[986.821 110 1],[988.739 160 1],[989.109 220 1],[996.186 160 1],[996.934 220 1],[1002.327 285 1],[1003.545 220 1],[1006.515 220 1],[1007.012 160 1],[1010.513 250 0],[1010.889 300 0],[1011.248 350 0],[1011.464 400 0],[1012.627 110 1],[1053.957 250 0],[1207.451 200 0],[1218.682 380 0],[1228.897 225 0],[1232.876 290 0],[1238.165 310 0],[1243.84 180 0],[1246.125 510 0],[1246.962 920 0],[1342.961 500 0],[1358.133 840 0],[1358.773 180 0],[1360.227 180 0],[1362.418 290 0],[1475.707 250 0],[1486.887 100 0],[1496.66 160 0],[1558.227 180 0],[1751.658 120 0],[1758.4859 100 0],[1787.826 100 0]}{ALLx1000x920x1000x1000x1000x1000x0}{UVx1000x775x650x1000x1000x1000x0}{VISx1000x900x1000x300x150x350x0}{IVx920x920x550x0x0x0x0}%
\pgfspectra@elt@search{#1}{O}{[12.4616 80 4],[13.5523 110 4],[13.8109 80 4],[13.9029 110 4],[15.1447 80 4],[15.1477 110 4],[15.1546 150 4],[16.4574 80 4],[16.4657 110 4],[16.4709 80 4],[16.6235 80 4],[16.799 150 4],[17.0219 110 4],[17.2169 450 4],[18.5745 250 4],[19.2751 375 4],[19.2799 450 4],[19.2906 520 4],[19.3003 80 4],[19.4593 200 4],[19.586 150 3],[19.601 200 3],[20.2161 80 4],[20.2224 80 4],[20.2283 80 4],[20.2334 80 4],[20.2393 150 4],[20.378 110 4],[20.382 150 4],[20.385 100 4],[20.389 200 4],[20.394 100 4],[20.718 110 3],[20.724 150 3],[20.7794 300 4],[21.504 150 4],[21.5103 200 4],[21.5245 250 4],[21.6018 250 4],[22.0352 520 4],[22.7372 80 4],[22.7469 80 4],[22.7511 150 4],[22.7549 80 4],[22.7634 80 4],[22.7689 80 4],[23.1823 150 4],[23.346 140 3],[23.35 150 3],[23.352 110 3],[23.356 200 3],[23.36 110 3],[23.836 90 3],[23.857 180 3],[24.8459 110 4],[25.256 110 3],[25.295 110 3],[25.308 150 3],[26.039 300 3],[26.056 250 3],[26.434 80 2],[26.448 110 2],[26.697 110 2],[26.698 150 2],[26.703 150 2],[27.738 150 2],[27.963 300 3],[27.994 375 3],[28.571 110 3],[28.584 150 3],[28.6448 110 4],[29.562 80 2],[29.566 110 2],[29.572 120 2],[30.341 150 2],[30.346 150 2],[30.352 140 2],[30.362 160 2],[30.369 160 2],[30.38 250 2],[30.56 200 2],[30.566 250 2],[30.57 190 2],[30.577 300 2],[30.584 190 2],[30.662 200 3],[30.688 150 3],[32.0979 450 2],[32.845 300 2],[32.874 250 2],[34.531 300 2],[35.514 110 2],[35.533 90 2],[35.547 80 2],[35.902 200 2],[35.922 190 2],[35.938 150 2],[37.38 210 2],[37.4 200 2],[37.408 300 2],[37.416 190 2],[37.433 200 2],[37.444 210 2],[39.5558 450 2],[43.498 300 2],[50.7391 800 2],[50.7683 900 2],[50.8182 1000 2],[52.5795 1000 2],[53.783 250 1],[53.826 300 1],[53.909 220 1],[53.955 200 1],[53.985 150 1],[55.333 700 3],[55.4075 775 3],[55.4514 850 3],[55.5261 700 3],[59.7818 700 2],[59.9598 1000 2],[60.8398 580 3],[60.97 110 2],[60.9829 640 3],[61.004 160 2],[61.075 200 2],[61.085 100 2],[61.6952 270 3],[61.7005 150 3],[61.7036 200 3],[62.4617 520 3],[62.513 580 3],[62.5852 640 3],[62.973 1000 4],[64.4148 150 1],[67.295 200 1],[67.377 150 1],[68.1272 230 4],[68.5544 70 0],[70.2332 800 2],[70.2822 800 2],[70.2899 900 2],[70.385 1000 2],[71.8484 900 1],[71.8562 600 1],[74.4794 70 0],[75.8678 700 4],[75.9441 640 4],[76.0228 580 4],[76.0445 775 4],[76.1128 640 4],[76.2003 700 4],[77.0793 70 0],[77.1056 90 0],[77.4518 520 4],[77.5321 70 0],[77.9734 200 3],[77.9821 315 3],[77.9912 360 3],[77.9997 200 3],[78.7711 640 3],[79.0109 520 3],[79.0199 700 3],[79.1973 70 0],[79.666 300 1],[80.22 200 3],[80.2255 160 3],[80.4267 90 0],[80.4848 70 0],[80.5295 70 0],[80.581 80 0],[83.2762 240 1],[83.2927 600 2],[83.3332 450 1],[83.3742 780 2],[83.4467 600 1],[83.5096 600 2],[83.5292 800 2],[87.7879 40 0],[92.1296 130 3],[92.1366 160 3],[92.2008 80 0],[92.3367 200 3],[92.3433 130 3],[93.5193 90 0],[94.8686 40 0],[97.1738 90 0],[97.6448 40 0],[98.8773 160 0],[99.0204 40 0],[102.5762 250 0],[102.7431 90 0],[103.923 160 0],[104.0942 60 0],[115.2152 40 0],[130.2168 900 0],[130.4858 600 0],[130.6029 300 0],[133.8612 200 3],[134.2992 130 3],[134.3512 230 3],[137.1292 640 4],[147.689 160 2],[150.672 160 4],[159.001 285 2],[159.133 160 2],[164.368 315 4],[170.7996 160 4],[176.012 220 2],[176.042 110 2],[176.322 220 2],[176.448 220 2],[176.778 750 2],[176.824 550 2],[177.167 360 2],[177.3 110 2],[177.385 110 2],[177.916 220 2],[178.103 160 2],[178.485 160 2],[178.966 220 2],[184.826 110 2],[185.662 110 2],[187.278 285 2],[187.287 285 2],[187.494 285 2],[192.004 160 2],[192.075 110 2],[192.152 110 2],[192.349 220 2],[192.382 110 2],[192.694 110 2],[201.327 360 2],[202.696 160 2],[204.567 220 2],[205.274 160 2],[228.342 30 1],[228.489 30 1],[229.332 110 1],[230.035 200 1],[231.305 30 1],[231.612 30 1],[231.679 30 1],[231.968 50 1],[232.215 30 1],[233.931 30 1],[239.044 200 2],[239.433 80 2],[241.16 110 1],[242.284 80 2],[242.555 80 1],[243.356 250 1],[243.606 80 1],[243.883 80 2],[244.426 80 1],[244.555 300 1],[244.9372 200 3],[245.004 200 3],[245.499 200 2],[249.344 200 3],[249.377 200 3],[250.773 200 3],[250.919 230 3],[251.72 200 3],[255.806 200 2],[268.753 80 2],[269.549 110 2],[273.334 300 1],[274.746 110 1],[278.101 1000 4],[278.699 920 4],[278.985 775 4],[283.626 160 3],[292.145 160 3],[294.133 200 4],[294.165 210 4],[295.968 80 2],[297.229 265 0],[298.378 250 2],[301.763 80 2],[302.345 80 2],[304.302 80 2],[304.713 200 2],[305.93 110 2],[306.342 460 3],[307.161 410 3],[312.171 80 2],[312.262 160 1],[312.944 220 1],[313.286 110 2],[313.482 450 1],[313.844 285 1],[314.466 160 4],[320.966 160 3],[323.857 80 2],[326.098 200 2],[326.546 300 2],[326.731 80 2],[327.098 220 1],[327.352 220 1],[327.769 220 1],[328.759 360 1],[330.515 160 1],[330.66 160 1],[331.23 80 2],[334.074 110 2],[334.808 230 3],[334.911 270 3],[335.427 160 3],[337.54 200 3],[337.72 220 1],[337.806 130 3],[338.12 360 3],[338.552 360 3],[339.025 285 1],[339.679 270 3],[340.352 360 3],[340.738 220 1],[340.966 230 3],[340.984 160 1],[341.169 410 3],[341.364 230 3],[344.41 80 2],[345.512 80 2],[347.081 285 1],[348.983 200 3],[349.224 160 3],[356.039 230 3],[356.333 270 3],[369.87 80 2],[370.275 80 2],[370.337 80 2],[370.724 110 2],[371.275 220 1],[371.508 110 2],[372.593 315 3],[372.733 285 1],[372.903 360 3],[373.685 410 3],[373.992 160 1],[374.4 110 2],[374.489 230 3],[374.949 360 1],[375.467 150 2],[375.721 80 2],[375.987 250 2],[379.126 110 2],[380.314 160 1],[382.341 120 0],[391.196 450 1],[391.929 160 1],[394.729 185 0],[394.748 160 0],[394.759 140 0],[395.437 220 1],[395.461 100 0],[396.159 200 2],[397.326 450 1],[398.22 220 1],[406.99 160 1],[407.216 285 1],[407.587 450 1],[408.391 80 1],[408.714 50 1],[408.927 150 1],[409.724 110 1],[410.5 220 1],[411.922 285 1],[412.399 100 4],[413.281 160 1],[414.606 50 1],[415.33 220 1],[418.546 285 1],[418.979 450 1],[423.327 80 0],[425.374 50 1],[425.398 50 1],[427.547 50 1],[430.378 50 1],[431.714 285 1],[433.686 160 1],[434.556 220 1],[434.943 285 1],[436.69 220 1],[436.825 100 0],[439.595 220 1],[441.491 450 1],[441.698 285 1],[444.821 160 1],[445.238 160 1],[446.545 50 1],[446.628 50 1],[446.783 50 1],[446.941 50 1],[459.097 360 1],[459.617 285 1],[460.939 80 1],[463.885 160 1],[464.181 360 1],[464.914 450 1],[465.084 160 1],[466.164 360 1],[467.623 285 1],[469.921 220 1],[470.536 285 1],[492.46 160 1],[493.027 230 4],[494.306 220 1],[532.91 135 0],[532.968 160 0],[533.074 190 0],[543.518 90 0],[543.578 110 0],[543.686 135 0],[557.734 120 0],[559.237 110 2],[559.791 130 4],[595.839 160 0],[595.858 190 0],[599.528 80 0],[604.623 160 0],[604.644 190 0],[604.649 110 0],[610.627 100 0],[615.598 400 0],[615.677 450 0],[615.818 490 0],[625.683 80 0],[626.155 100 0],[636.634 100 0],[637.432 100 0],[645.36 320 0],[645.444 360 0],[645.598 400 0],[650.024 130 4],[660.491 80 0],[665.383 100 0],[700.192 360 0],[700.223 450 0],[715.67 210 0],[725.415 400 0],[725.445 450 0],[725.453 320 0],[747.644 210 0],[747.724 100 0],[747.908 120 0],[748.067 120 0],[770.675 100 0],[777.194 870 0],[777.417 810 0],[777.539 750 0],[788.627 80 0],[794.315 100 0],[794.717 100 0],[794.755 235 0],[795.08 210 0],[795.216 185 0],[798.194 110 0],[798.24 135 0],[798.698 190 0],[798.733 135 0],[799.507 250 0],[822.182 400 0],[822.765 265 0],[823.002 265 0],[823.3 325 0],[823.535 120 0],[842.616 120 0],[844.625 810 0],[844.636 1000 0],[844.676 935 0],[882.043 325 0],[905.701 160 0],[911.829 120 0],[913.471 80 0],[915.014 80 0],[915.148 80 0],[915.601 235 0],[926.081 450 0],[926.084 490 0],[926.094 450 0],[926.258 400 0],[926.267 540 0],[926.277 590 0],[926.594 490 0],[926.601 640 0],[939.919 185 0],[948.116 120 0],[948.288 120 0],[948.743 235 0],[949.271 140 0],[949.797 265 0],[949.93 160 0],[950.559 235 0],[952.196 210 0],[952.336 120 0],[952.396 120 0],[952.828 100 0],[962.213 100 0],[962.529 120 0],[967.738 160 0],[969.466 80 0],[969.491 65 0],[974.15 235 0],[976.065 235 0],[990.905 120 0],[993.698 140 0],[994.041 120 0],[999.531 160 0],[1042.118 120 0],[1128.634 590 0],[1128.691 640 0],[1128.702 490 0],[1128.732 490 0],[1129.51 490 0],[1129.768 540 0],[1130.238 590 0],[1135.869 265 0],[1246.402 490 0],[1257.004 450 0],[1299.077 120 0],[1307.691 160 0],[1316.389 700 0],[1316.485 750 0],[1316.511 640 0],[1621.206 160 0],[1796.6699 120 0],[1802.1211 590 0],[1804.148 120 0],[1804.2189 120 0],[1804.623 120 0],[1822.923 140 0],[1824.3631 540 0],[2617.3561 140 0]}{ALLx1000x1000x900x1000x850x1000x0}{UVx1000x900x900x1000x850x1000x0}{VISx870x870x450x200x0x230x0}{IVx1000x1000x0x0x0x0x0}%
\pgfspectra@elt@search{#1}{F}{[13.454 8 4],[14.795 8 4],[14.8 10 4],[15.251 8 4],[15.854 8 4],[16.227 8 4],[16.35 8 4],[16.356 10 4],[16.598 18 4],[16.618 20 4],[16.979 6 3],[16.984 6 3],[17.107 6 3],[17.47 8 4],[17.637 8 3],[17.843 10 4],[17.859 8 4],[18.152 8 3],[18.157 8 3],[18.298 8 4],[18.672 8 4],[18.679 8 4],[18.684 10 4],[18.697 8 4],[18.701 8 4],[18.724 6 3],[19.057 12 4],[19.084 14 4],[19.197 8 4],[19.639 10 3],[19.645 12 3],[19.976 10 3],[19.98 10 3],[19.985 10 3],[19.993 10 3],[20 10 3],[20.009 14 3],[20.101 12 3],[20.106 14 3],[20.11 12 3],[20.116 16 3],[20.122 12 3],[20.555 8 4],[20.825 18 3],[21.385 14 3],[21.406 14 3],[22.077 14 3],[22.694 12 3],[22.71 10 3],[23.012 10 2],[23.322 12 3],[23.339 10 3],[23.986 14 3],[24.002 14 3],[24.008 18 3],[24.015 14 3],[24.028 14 3],[24.037 14 3],[25.103 20 3],[25.572 10 2],[25.577 12 2],[25.586 14 2],[26.171 14 2],[26.175 12 2],[26.381 16 2],[27.023 12 3],[27.969 14 2],[31.522 16 2],[31.554 14 2],[31.575 12 2],[37.53 6 1],[38.09 6 1],[40.704 8 1],[41.965 28 3],[42.005 30 3],[42.073 32 3],[42.951 20 2],[43.015 22 2],[43.022 16 2],[43.076 30 3],[43.091 10 1],[43.155 8 1],[43.564 8 1],[45.718 14 1],[46.429 18 2],[46.437 20 4],[46.511 20 2],[46.537 22 4],[46.598 24 4],[46.699 20 4],[47.195 8 1],[47.2 12 1],[47.271 10 1],[47.302 8 1],[48.46 18 1],[49.057 26 3],[49.1 32 3],[49.738 10 3],[49.783 12 3],[49.88 14 3],[50.616 18 4],[50.808 20 4],[50.839 24 2],[51.364 10 1],[51.397 14 4],[51.408 12 4],[51.494 14 1],[52.459 16 4],[52.529 18 4],[52.63 20 4],[54.685 14 1],[54.787 12 1],[54.832 10 1],[54.852 8 1],[56.769 24 2],[56.775 22 2],[57.064 28 3],[57.13 28 3],[57.139 30 3],[57.266 32 3],[60.567 18 1],[60.629 16 1],[60.68 20 1],[60.692 14 1],[60.747 16 1],[60.806 18 1],[63.014 16 2],[63.02 18 2],[64.767 14 4],[64.777 20 4],[64.787 22 4],[64.797 14 4],[65.403 26 4],[65.612 24 2],[65.687 26 2],[65.723 22 4],[65.733 28 4],[65.833 28 2],[67.612 28 3],[67.715 26 3],[67.722 30 3],[67.899 26 3],[67.921 32 3],[75.704 12 4],[78.039 3 0],[78.052 2 0],[78.238 2 0],[79.188 2.4 0],[79.254 2 0],[79.442 2 0],[80.696 30 0],[80.96 25 0],[95.187 100 0],[95.483 200 0],[95.555 150 0],[95.852 100 0],[97.24 4 0],[97.39 70 0],[97.622 20 0],[97.651 8 0],[97.775 20 0],[108.231 12 4],[108.839 14 4],[112.976 8 1],[121.903 16 2],[126.687 16 2],[126.771 18 2],[129.754 14 2],[132.706 8 1],[132.811 10 1],[133.359 8 1],[134.36 10 1],[134.404 8 1],[135.992 14 2],[140.061 10 1],[140.714 8 1],[149.309 12 1],[149.324 10 1],[149.331 8 1],[149.893 22 2],[150.201 24 2],[150.418 22 2],[150.479 28 2],[150.63 26 2],[150.677 22 2],[155.302 20 2],[155.759 22 2],[156.373 20 2],[156.554 20 2],[162.34 20 2],[165.076 20 2],[167.039 26 2],[167.74 28 2],[170.213 8 1],[171.699 20 2],[174.475 8 1],[174.555 10 1],[174.739 12 1],[177.009 24 2],[177.067 30 2],[177.293 22 2],[177.336 28 2],[179.165 32 2],[180.303 22 2],[180.47 20 2],[180.59 34 2],[183.93 22 2],[183.997 24 2],[184.014 22 2],[190.076 16 2],[202.744 20 2],[203.032 24 2],[217.144 8 3],[221.717 24 2],[222.918 2 4],[225.272 4 4],[229.829 10 3],[245.063 4 4],[245.158 8 3],[245.207 24 2],[245.692 10 3],[246.133 2 4],[246.485 26 2],[247.029 26 2],[247.873 24 2],[248.437 30 2],[254.277 24 2],[255.611 20 1],[258.004 24 2],[258.381 26 2],[259.323 24 2],[259.553 26 2],[259.928 28 2],[262.501 26 2],[262.97 28 2],[265.644 24 2],[269.398 2 4],[270.23 2 4],[270.396 2 4],[270.717 4 4],[275.555 26 2],[275.963 32 2],[278.815 24 2],[281.145 32 2],[282.074 8 3],[282.613 10 3],[283.399 28 2],[283.563 30 2],[286.033 30 2],[286.286 24 2],[287.14 20 1],[288.758 28 2],[288.945 30 2],[290.53 24 2],[291.329 28 2],[291.634 32 2],[293.249 28 2],[299.428 28 2],[299.721 24 2],[299.753 26 2],[299.947 24 2],[303.925 26 2],[303.975 24 2],[304.28 32 2],[304.914 30 2],[305.999 24 1],[311.362 28 2],[311.57 32 2],[312.154 36 2],[312.479 28 2],[313.423 28 2],[314.699 28 2],[315.349 28 1],[317.417 36 2],[317.476 34 2],[320.276 34 1],[321.4 24 2],[326.408 28 1],[341.465 28 1],[341.645 30 1],[341.68 28 1],[341.7 32 1],[347.296 32 1],[347.331 30 1],[347.478 34 1],[350.139 38 1],[350.145 40 1],[350.157 40 1],[350.284 36 1],[350.296 40 1],[350.311 42 1],[350.537 34 1],[350.552 40 1],[350.563 44 1],[352.289 32 1],[353.687 30 1],[354.177 32 1],[359.052 32 1],[359.41 1.2 0],[359.869 34 1],[360.139 36 1],[360.284 38 1],[366.817 2.4 0],[370.453 36 1],[371.035 32 1],[373.957 32 1],[380.583 28 1],[384.709 54 1],[384.999 52 1],[385.167 50 1],[389.848 1 0],[389.883 38 1],[390.193 36 1],[390.382 34 1],[393.069 1.6 0],[393.426 1 0],[394.856 1 0],[397.204 30 1],[397.267 32 1],[397.478 34 1],[402.473 48 1],[402.501 44 1],[402.549 46 1],[408.391 32 1],[410.307 38 1],[410.322 34 1],[410.351 40 1],[410.371 36 1],[410.387 34 1],[410.916 34 1],[411.654 32 1],[411.921 30 1],[420.715 28 1],[422.516 34 1],[424.412 30 1],[424.623 40 1],[424.639 38 1],[424.659 36 1],[424.677 34 1],[424.684 32 1],[427.536 34 1],[427.753 32 1],[427.893 32 1],[429.917 40 1],[442.03 28 2],[442.735 24 2],[443.232 24 2],[444.653 32 1],[444.672 34 1],[444.719 36 1],[447.999 28 2],[473.438 28 1],[485.939 34 1],[493.326 32 1],[496.065 1.2 0],[500.2 28 1],[501.254 30 2],[511.099 32 2],[517.325 30 1],[523.041 3 0],[527.901 2.4 0],[554.052 3.6 0],[555.243 2.4 0],[557.733 2 0],[558.927 32 1],[562.406 4 0],[562.693 2.4 0],[565.915 3 0],[566.753 8 0],[567.167 18 0],[568.914 3.6 0],[570.082 5 0],[570.731 5 0],[575.317 28 2],[576.12 24 2],[595.015 2.4 0],[595.919 5 0],[596.528 14 0],[599.443 10 0],[601.583 30 0],[603.804 16 0],[604.754 180 0],[608.011 20 0],[609.182 30 2],[612.55 28 2],[614.976 160 0],[621.087 80 0],[623.357 26 2],[623.965 2600 0],[624.79 28 1],[634.851 2000 0],[636.305 28 2],[641.365 1600 0],[656.969 90 0],[658.039 60 0],[665.041 80 0],[669.048 360 0],[670.828 80 0],[677.398 1400 0],[679.553 300 0],[683.426 1800 0],[685.603 10000 0],[687.022 1600 0],[690.248 3000 0],[690.982 1200 0],[696.635 800 0],[703.747 9000 0],[712.789 6000 0],[717.99 26 1],[720.236 3000 0],[721.179 26 1],[730.903 200 0],[731.102 3000 0],[731.43 140 0],[733.196 1000 0],[733.677 24 2],[735.494 26 2],[739.869 2000 0],[742.565 800 0],[748.272 440 0],[748.916 500 0],[751.492 180 0],[755.224 1000 0],[757.338 1000 0],[760.717 1400 0],[775.47 3600 0],[780.021 3000 0],[787.918 60 0],[789.859 100 0],[793.631 70 0],[795.632 60 0],[801.601 16 1],[804.093 200 0],[807.552 180 0],[807.752 70 0],[812.656 70 0],[812.926 120 0],[815.951 60 0],[817.934 120 0],[819.124 60 0],[820.863 70 0],[821.473 500 0],[823.077 600 0],[823.219 100 0],[827.462 300 0],[829.858 400 0],[830.24 120 0],[880.758 180 0],[890.092 200 0],[891.278 60 0],[902.549 70 0],[904.21 80 0],[917.868 70 0],[943.367 40 0],[950.53 5 0],[966.204 2.4 0],[973.434 5 0],[982.211 3 0],[990.265 2.4 0],[1004.798 16 1],[1028.545 3 0],[1086.231 4 0]}{ALLx10000x10000x54x36x32x28x0}{UVx200x200x44x36x32x28x0}{VISx10000x10000x54x32x0x0x0}{IVx3000x3000x16x0x0x0x0}%
@@ -44,7 +44,7 @@
\pgfspectra@elt@search{#1}{Na}{[10.628 100 4],[10.63 100 4],[10.64 100 4],[10.649 100 4],[10.793 200 4],[10.802 200 4],[11.082 200 4],[11.088 200 4],[11.151 100 4],[11.201 300 4],[11.47 100 4],[11.474 100 4],[11.799 400 4],[12.004 100 4],[12.518 400 4],[12.522 400 4],[12.529 500 4],[12.543 300 4],[12.546 300 4],[12.59 200 4],[12.621 100 4],[12.656 200 4],[12.661 100 4],[12.744 400 4],[12.747 400 4],[12.803 400 4],[12.805 400 4],[13.068 200 4],[13.135 300 4],[13.141 200 4],[13.164 300 4],[13.316 500 4],[13.339 400 4],[13.427 200 4],[13.579 300 4],[13.585 300 4],[13.6551 4 3],[13.6854 4 3],[13.881 200 4],[13.892 300 4],[13.9961 4 3],[14.2232 7 3],[14.2359 6 3],[14.6064 8 3],[14.6302 7 3],[14.864 400 4],[14.886 300 4],[15.0298 9 3],[15.0543 7 3],[15.064 7 3],[15.0687 8 3],[15.113 400 4],[15.1299 7 3],[15.5083 7 3],[15.524 7 3],[15.5448 7 3],[15.551 8 3],[15.6537 8 3],[15.721 300 4],[16.2448 12 3],[16.319 10 3],[16.362 300 4],[16.8411 12 3],[16.8546 10 3],[18.395 5 2],[18.935 5 2],[19.0445 10 3],[19.38 5 2],[19.404 5 2],[19.417 5 2],[19.429 5 2],[19.468 6 2],[19.553 6 2],[19.9772 10 3],[20.215 6 2],[20.219 6 2],[20.249 8 2],[20.271 5 2],[20.272 7 2],[20.276 8 2],[20.306 8 2],[20.328 8 2],[20.333 8 2],[20.549 10 3],[20.73 10 2],[21.534 10 2],[21.586 12 2],[21.612 12 2],[22.987 15 2],[23.059 12 2],[25.052 50 2],[25.137 30 2],[26.69 25 2],[26.765 70 2],[26.787 50 2],[26.863 50 2],[27.208 20 2],[27.245 20 2],[30.015 160 1],[30.02 160 1],[30.132 90 1],[30.144 100 1],[30.245 60 1],[30.715 800 4],[30.826 1000 4],[31.9644 10 3],[33.255 800 4],[33.391 900 4],[36.032 800 4],[36.037 800 4],[36.076 10 3],[37.208 300 1],[37.638 350 1],[37.814 100 2],[38.01 70 2],[40.072 1000 4],[40.8684 12 3],[40.9614 10 3],[41.0372 15 3],[41.1334 10 3],[41.2242 13 3],[44.505 500 4],[44.519 600 4],[45.99 600 4],[46.105 850 4],[46.326 1000 4],[129.397 60 1],[132.774 50 1],[133.676 7 2],[133.736 7 2],[134.067 8 2],[134.239 9 2],[134.273 10 2],[134.754 45 1],[135.528 11 2],[136.19 12 2],[137.234 11 2],[137.469 90 1],[140.468 90 1],[142.089 10 2],[144.419 10 2],[144.931 12 2],[149.521 45 1],[149.601 40 1],[149.773 45 1],[150.641 80 1],[150.691 60 1],[151.31 70 1],[151.963 60 1],[156.287 11 2],[156.529 10 2],[158.05 10 3],[158.218 11 3],[158.233 10 3],[158.398 11 3],[158.414 12 3],[158.699 10 3],[158.705 12 3],[159.818 10 2],[161.395 10 3],[161.592 11 3],[161.857 12 3],[165.547 11 3],[165.792 60 1],[168.894 11 2],[169.929 10 2],[170.197 15 3],[170.241 10 3],[171.112 10 2],[172.827 11 2],[173.111 10 2],[175.548 10 2],[177.657 90 1],[177.824 40 1],[178.304 60 1],[178.719 80 1],[178.885 45 1],[179.841 80 1],[180.126 45 1],[180.707 15 2],[180.709 90 1],[180.838 60 1],[181.077 10 2],[181.167 11 2],[181.681 10 2],[182.17 50 1],[183.387 45 1],[183.522 10 2],[183.522 80 1],[183.789 45 1],[183.894 10 2],[184.182 60 1],[184.436 11 2],[184.502 70 1],[184.753 12 2],[184.759 10 2],[184.956 15 2],[185.015 45 1],[185.038 12 2],[185.119 70 1],[185.317 80 1],[185.592 10 2],[185.671 10 2],[186.121 10 2],[186.645 45 1],[187.337 45 1],[187.508 60 1],[188.066 10 2],[188.191 160 1],[188.509 50 1],[188.574 45 1],[188.739 10 2],[188.747 20 2],[189.075 15 2],[190.016 15 2],[191.845 10 2],[192.396 11 2],[192.626 14 2],[192.724 12 2],[193.274 12 2],[193.389 13 2],[194.352 10 2],[194.643 12 2],[195.091 12 2],[195.124 14 2],[196.076 12 3],[196.508 11 3],[196.76 10 3],[197.716 10 2],[198.557 13 2],[199.568 10 2],[200.421 10 2],[200.522 11 2],[200.847 11 2],[201.187 15 2],[201.417 11 2],[201.703 12 2],[201.839 10 3],[202.856 12 2],[203.113 12 2],[203.59 11 2],[204.166 12 2],[204.329 12 2],[204.482 10 2],[204.544 10 2],[205.148 11 2],[206.036 10 2],[206.66 15 2],[208.291 13 2],[210.633 12 3],[211.453 10 3],[214.072 15 2],[214.454 14 2],[215.576 10 3],[220.283 15 2],[222.593 15 2],[222.853 80 1],[223.033 30 2],[223.219 16 2],[224.67 20 2],[225.147 14 2],[227.842 15 2],[228.566 13 2],[230.358 80 1],[230.999 15 2],[231.565 300 1],[238.699 18 2],[239.328 130 1],[239.403 17 2],[240.101 100 1],[240.659 15 2],[242.099 300 1],[242.473 300 1],[243.914 200 1],[244.15 250 1],[244.872 200 1],[245.218 200 1],[245.931 25 2],[246.885 18 2],[247.473 20 2],[249.315 1000 1],[249.703 25 2],[250.284 300 1],[250.63 450 1],[251.026 17 2],[251.546 600 1],[253.025 15 2],[253.154 600 1],[254.28 14 2],[258.631 550 1],[259.496 600 1],[261.181 850 1],[262.741 300 1],[263.181 300 1],[264.853 160 1],[265.131 200 1],[265.981 200 1],[266.1 850 1],[266.346 200 1],[266.646 350 1],[267.183 1000 1],[267.404 200 1],[267.809 850 1],[280.871 650 1],[280.952 850 1],[281.829 350 1],[282.987 600 1],[283.956 800 1],[284.172 1000 1],[285.281 16 0],[285.301 15 0],[285.651 650 1],[285.949 800 1],[286.102 350 1],[287.128 750 1],[287.295 650 1],[288.115 900 1],[288.626 850 1],[289.395 700 1],[290.114 900 1],[290.472 800 1],[290.492 1100 1],[291.752 1100 1],[291.905 1100 1],[291.985 1200 1],[292.095 1300 1],[292.349 1000 1],[293.088 750 1],[293.408 850 1],[293.774 950 1],[294.266 450 1],[294.57 800 1],[294.75 950 1],[295.124 1200 1],[295.24 1100 1],[296.012 850 1],[296.574 450 1],[297.073 500 1],[297.424 600 1],[297.499 750 1],[297.713 1000 1],[297.966 1100 1],[298.063 1100 1],[298.419 1300 1],[300.415 550 1],[300.744 750 1],[300.914 750 1],[300.948 450 1],[301.54 600 1],[301.734 450 1],[302.907 400 1],[303.708 400 1],[304.56 400 1],[305.367 550 1],[305.535 550 1],[305.616 550 1],[305.738 550 1],[305.795 550 1],[305.872 550 1],[306.025 700 1],[306.135 800 1],[306.438 500 1],[306.622 500 1],[306.654 500 1],[307.433 550 1],[307.832 550 1],[308.025 550 1],[308.706 550 1],[308.826 450 1],[309.204 550 1],[309.273 550 1],[309.445 650 1],[309.555 650 1],[310.358 500 1],[310.44 500 1],[311.145 450 1],[311.369 500 1],[312.294 400 1],[312.442 1700 1],[312.521 600 1],[312.938 600 1],[313.548 2500 1],[313.786 1700 1],[314.571 950 1],[314.928 2000 1],[316.374 2000 1],[317.509 700 1],[317.906 1000 1],[318.979 1700 1],[321.219 1600 1],[323.493 700 1],[325.796 1500 1],[326.021 650 1],[327.422 950 1],[328.56 1700 1],[330.135 1700 1],[330.237 19 0],[330.298 18 0],[330.496 1500 1],[331.804 1000 1],[332.769 950 1],[342.686 6 0],[353.305 1500 1],[363.127 1200 1],[371.107 850 1],[408.137 200 1],[411.37 300 1],[412.308 250 1],[423.326 250 1],[423.899 2 0],[424.037 200 1],[424.09 250 1],[424.208 3 0],[427.364 4 0],[427.679 5 0],[428.784 2 0],[429.101 3 0],[429.248 250 1],[429.286 250 1],[430.881 250 1],[430.904 250 1],[432.091 250 1],[432.14 6 0],[432.462 7 0],[433.729 250 1],[434.149 4 0],[434.411 250 1],[434.474 5 0],[436.86 200 1],[437.522 200 1],[438.749 200 1],[439.003 8 0],[439.281 250 1],[439.334 9 0],[440.512 200 1],[441.989 6 0],[442.325 7 0],[444.67 200 1],[444.741 200 1],[445.474 200 1],[445.523 200 1],[445.721 200 1],[447.463 200 1],[447.88 200 1],[448.167 200 1],[449.015 200 1],[449.087 200 1],[449.418 10 0],[449.766 11 0],[449.962 200 1],[450.697 200 1],[451.921 200 1],[452.498 200 1],[453.332 200 1],[454.163 7 0],[454.519 8 0],[455.153 200 1],[459.092 160 1],[472.223 160 1],[473.11 160 1],[473.25 100 1],[474.167 160 1],[476.879 160 1],[478.879 100 1],[481.475 50 1],[483.526 50 1],[514.311 60 1],[519.165 100 1],[520.333 50 1],[520.855 80 1],[539.063 60 1],[540.046 70 1],[541.455 90 1],[568.2633 5 0],[568.8204 9 0],[588.995 32 0],[589.5924 16 0],[617.525 60 1],[619.926 70 1],[623.468 70 1],[626.001 80 1],[627.474 80 1],[631.08 60 1],[635.283 60 1],[635.805 60 1],[636.115 70 1],[636.641 70 1],[637.891 60 1],[647.529 50 1],[651.421 90 1],[652.468 80 1],[653.07 130 1],[654.404 130 1],[654.575 130 1],[655.243 80 1],[780.978 4 0],[781.024 3 0],[818.3256 5 0],[819.4824 9 0],[864.992 7 0],[865.089 6 0],[915.388 4 0],[946.594 6 0],[996.128 7 0],[1057.228 3 0],[1074.644 10 0],[1074.929 9 0],[1083.487 8 0],[1138.145 11 0],[1140.378 12 0],[1476.748 115 0],[2205.6439 30 0],[2208.367 27 0],[2334.841 24 0],[2337.9131 24 0]}{ALLx2500x115x2500x100x15x1000x0}{UVx2500x19x2500x100x15x1000x0}{VISx300x32x300x0x0x0x0}{IVx115x115x0x0x0x0x0}%
\pgfspectra@elt@search{#1}{Mg}{[11.816 40 3],[11.881 80 3],[12.359 70 3],[12.465 240 3],[12.986 300 3],[13.281 300 3],[14.695 400 3],[14.741 300 3],[14.754 300 3],[17.08 15 2],[17.139 15 2],[18.007 350 3],[18.062 400 3],[18.08 400 3],[18.134 350 3],[18.224 15 2],[18.297 12 2],[18.651 20 2],[18.72 20 2],[18.853 10 2],[23.173 100 2],[23.426 80 2],[25.158 5 4],[27.658 35 4],[31.23 10 4],[32.099 4000 3],[32.331 3000 3],[35.109 20 4],[35.22 18 4],[35.309 30 4],[35.33 15 4],[35.422 18 4],[35.533 20 4],[80.041 40 3],[85.729 150 3],[86.674 30 3],[91.903 50 3],[92.978 30 3],[94.67 8 1],[94.677 9 1],[100.876 40 3],[102.596 14 1],[102.611 12 1],[102.641 30 3],[103.741 250 3],[104.437 80 3],[105.576 60 3],[121.099 300 3],[123.994 25 1],[124.04 20 1],[124.851 6 1],[124.993 8 1],[127.124 8 1],[127.194 9 1],[127.272 8 1],[127.343 11 1],[127.483 10 2],[128.07 11 2],[130.671 11 1],[130.788 12 1],[130.828 12 1],[130.944 14 1],[134.219 300 3],[134.657 800 3],[134.668 300 3],[135.205 600 3],[136.545 14 1],[136.726 15 1],[136.77 15 1],[136.942 18 1],[138.446 900 3],[138.577 500 3],[138.753 800 3],[139.127 12 2],[139.339 15 2],[140.468 300 3],[140.936 1000 3],[143.114 10 2],[143.753 500 3],[143.764 1000 3],[144.742 300 3],[145.954 300 3],[145.962 400 3],[147.6 20 1],[147.801 25 1],[148.089 20 1],[148.151 400 3],[148.29 30 1],[149.045 350 3],[149.55 300 3],[157.271 16 2],[158.624 12 2],[160.711 300 3],[164.593 1 0],[165.116 1 0],[165.831 2 0],[166.843 5 0],[168.302 500 3],[168.341 10 0],[168.709 13 2],[169.728 13 2],[169.881 400 3],[170.706 15 0],[172.204 10 2],[173.484 40 1],[173.762 50 1],[173.884 22 2],[174.756 12 2],[174.78 20 0],[174.893 18 2],[175.065 40 1],[175.346 50 1],[177.298 15 2],[178.325 20 2],[179.458 14 2],[180.066 15 2],[182.793 30 0],[184.417 300 3],[185.819 13 2],[187.949 12 2],[190.85 10 2],[192.39 12 2],[193.067 13 2],[193.784 11 2],[202.582 9 0],[203.955 15 2],[205.549 15 2],[206.49 25 2],[208.59 15 2],[209.196 20 2],[209.793 13 2],[211.277 15 2],[213.406 16 2],[217.77 20 2],[232.958 3 1],[239.515 20 2],[244.957 6 1],[246.775 15 2],[249.054 10 2],[251.84 12 3],[252.919 10 2],[253.479 4 3],[255.723 1 0],[256.094 1 0],[256.226 1 0],[256.494 1 0],[257.091 1 0],[257.225 1 0],[257.494 2 0],[257.789 1 0],[258.059 1 0],[258.422 1 0],[258.556 2 0],[258.828 3 0],[259.189 1 0],[259.323 1 0],[259.597 2 0],[260.25 2 0],[260.385 4 0],[260.662 5 0],[261.336 1 0],[261.473 2 0],[261.751 3 0],[262.866 3 0],[263.005 6 0],[263.287 8 0],[264.48 2 0],[264.621 3 0],[264.906 4 0],[266.076 8 1],[266.082 8 1],[266.812 6 0],[266.955 8 0],[267.246 10 0],[269.372 3 0],[269.518 5 0],[269.814 6 0],[273.199 8 0],[273.349 10 0],[273.653 12 0],[276.522 5 0],[276.834 7 0],[277.669 38 0],[277.827 32 0],[277.983 90 0],[278.129 8 0],[278.142 32 0],[278.297 36 0],[279.079 13 1],[279.553 1000 1],[279.806 16 1],[280.27 600 1],[280.976 3 0],[281.111 2 0],[281.178 1 0],[284.672 12 0],[284.675 12 0],[284.834 14 0],[284.842 14 0],[285.165 16 0],[285.166 16 0],[285.213 6000 0],[290.292 2 0],[290.636 4 0],[291.545 3 0],[291.545 3 0],[292.875 2 1],[293.654 3 1],[293.674 10 0],[293.674 10 0],[293.847 12 0],[293.847 12 0],[294.2 2 0],[294.2 13 0],[296.787 1 1],[297.17 1 1],[309.108 20 0],[309.299 22 0],[309.69 14 0],[310.471 9 1],[310.481 8 1],[316.898 6 1],[317.271 6 1],[317.578 7 1],[319.762 2 0],[329.905 12 2],[330.639 13 2],[332.993 17 0],[333.215 6 0],[333.59 12 2],[333.668 9 0],[334.258 11 2],[336.141 12 2],[338.124 10 2],[338.29 11 2],[338.737 11 2],[353.504 7 1],[353.886 8 1],[354.952 7 1],[355.337 8 1],[370.674 10 2],[382.93 140 0],[383.23 300 0],[383.829 500 0],[384.824 8 1],[384.891 1 0],[385.04 7 1],[385.396 2 0],[385.496 1 0],[385.886 2 0],[387.831 3 0],[389.191 2 0],[389.33 2 0],[389.557 3 0],[390.386 4 0],[393.84 6 0],[398.421 1 0],[398.675 8 0],[405.469 2 0],[405.75 10 0],[407.506 3 0],[408.183 2 0],[416.51 4 0],[416.727 15 0],[435.191 20 0],[435.453 6 0],[438.038 6 0],[438.464 9 1],[439.059 10 1],[442.8 8 1],[443.399 9 1],[443.649 5 1],[443.66 4 1],[448.116 14 1],[448.133 13 1],[453.429 6 1],[457.11 28 0],[462.13 3 0],[470.299 7 0],[473.003 10 0],[473.959 6 1],[473.971 5 1],[485.11 7 1],[491.6 10 2],[516.733 75 0],[517.268 220 0],[518.361 400 0],[526.421 8 1],[526.437 7 1],[534.598 1 0],[540.154 9 1],[550.96 2 0],[552.841 6 0],[571.109 30 0],[578.531 5 0],[578.556 4 0],[583.982 10 2],[591.643 7 1],[591.816 6 1],[625.675 15 2],[631.872 10 0],[631.924 9 0],[631.949 7 0],[634.674 10 1],[634.696 9 1],[654.597 11 1],[662.044 5 1],[662.057 6 1],[663.083 2 0],[678.145 7 1],[678.785 8 1],[681.286 7 1],[681.927 8 1],[689.49 4 0],[696.54 6 0],[706.041 8 0],[719.317 10 0],[729.106 10 0],[738.7 5 0],[738.769 12 0],[758.076 4 1],[765.76 20 0],[765.915 19 0],[765.99 17 0],[769.016 8 0],[769.155 15 0],[772.261 1 0],[774.634 1 0],[775.93 1 0],[778.65 5 1],[779.098 4 1],[781.114 3 0],[787.705 12 1],[788.167 2 0],[789.637 13 1],[793.081 7 0],[804.773 3 0],[804.985 5 0],[805.423 7 0],[809.872 10 0],[811.522 9 1],[812.043 8 1],[815.464 1 0],[815.913 2 0],[820.984 10 0],[821.303 20 0],[821.399 10 1],[822.292 7 1],[823.319 7 1],[823.464 11 1],[830.331 7 0],[830.56 9 0],[831.026 10 0],[834.612 15 0],[846.648 2 0],[846.884 5 0],[847.369 7 0],[871.018 10 0],[871.269 12 0],[871.783 13 0],[873.499 10 1],[873.602 17 0],[874.566 11 1],[880.676 14 0],[882.432 10 1],[883.508 11 1],[892.357 20 0],[898.903 7 0],[899.169 9 0],[899.716 10 0],[921.825 14 1],[924.427 13 1],[924.65 12 0],[925.578 30 0],[932.754 10 1],[934.054 10 1],[941.496 25 0],[942.981 17 0],[943.276 19 0],[943.878 20 0],[950.245 8 0],[950.311 7 0],[950.343 5 0],[963.189 12 1],[963.243 11 1],[995.32 15 0],[998.32 15 0],[998.647 17 0],[999.321 18 0],[1009.216 14 1],[1039.176 5 1],[1039.223 6 1],[1081.108 35 0],[1091.423 11 1],[1091.527 7 1],[1095.178 10 1],[1095.332 25 0],[1095.73 27 0],[1096.545 28 0],[1103.21 15 0],[1103.366 14 0],[1125.593 5 1],[1125.635 4 1],[1182.818 45 0],[1208.366 30 0],[1487.762 28 0],[1502.499 35 0],[1504.024 30 0],[1504.77 25 0],[1574.071 6 0],[1574.899 8 0],[1576.584 10 0],[1710.866 30 0],[2639.29 5 0]}{ALLx6000x6000x1000x100x4000x35x0}{UVx6000x6000x1000x100x4000x35x0}{VISx500x500x14x15x0x0x0}{IVx45x45x14x0x0x0x0}%
\pgfspectra@elt@search{#1}{Al}{[10.38 300 4],[10.388 400 4],[10.407 250 4],[10.418 250 4],[10.795 600 4],[10.806 300 4],[10.811 300 4],[11.85 250 4],[12.403 400 3],[12.553 900 4],[12.607 800 4],[12.973 700 3],[13.041 800 4],[13.085 1000 4],[13.1 900 4],[13.144 900 4],[13.263 500 4],[16.007 800 3],[16.169 700 3],[27.869 1000 4],[28.139 900 4],[48.6884 70 2],[48.6912 30 2],[51.1138 250 2],[51.1191 150 2],[56.0317 500 2],[56.0433 200 2],[67.0068 100 2],[67.1118 200 2],[69.5829 500 2],[69.6217 400 2],[72.5683 200 2],[72.6915 300 2],[85.5034 400 2],[85.6746 500 2],[89.2024 400 2],[89.3887 50 2],[89.3897 450 2],[102.734 500 3],[104.217 800 3],[104.852 700 3],[105.89 500 3],[106.143 500 3],[106.489 600 3],[106.657 500 3],[106.826 250 4],[106.944 600 3],[108.867 500 4],[109.014 300 4],[110.574 400 3],[111.882 600 3],[112.561 500 3],[113.682 400 3],[115.03 300 4],[116.259 10 2],[116.262 5 2],[116.542 350 4],[116.848 250 4],[117.743 40 1],[119.1812 50 1],[119.85 400 3],[122.055 400 3],[123.719 900 3],[124.021 600 3],[124.086 700 3],[124.879 700 3],[125.762 900 3],[126.418 800 3],[127.276 1000 3],[128.77 500 4],[133.006 400 4],[133.79 400 3],[135.018 150 1],[135.052 400 4],[135.281 100 2],[135.282 5 2],[135.286 70 2],[136.335 400 4],[136.92 600 4],[137.37 300 4],[137.662 500 3],[137.967 600 2],[138.413 800 2],[138.879 500 3],[143.194 600 3],[144.182 700 3],[144.587 400 4],[144.751 800 3],[145.526 300 4],[145.796 600 3],[147.564 600 4],[148.605 300 4],[148.689 700 3],[149.479 800 3],[150.837 700 4],[151.907 400 3],[152.614 1000 4],[153.754 800 3],[153.912 500 4],[153.983 800 1],[155.019 500 3],[155.725 1000 3],[155.903 500 3],[156.416 700 3],[156.9385 100 1],[157.79 300 4],[158.204 900 3],[158.446 800 3],[158.928 400 3],[158.987 350 4],[159.6059 125 1],[160.5766 700 2],[160.665 400 3],[161.1814 100 2],[161.1874 800 2],[161.781 400 3],[162.5627 150 1],[162.754 600 3],[163.682 500 3],[163.906 800 3],[164.4235 100 1],[164.4809 100 1],[167.0787 1000 1],[168.625 100 1],[171.944 800 1],[172.1244 500 1],[172.1271 900 1],[172.4952 500 1],[172.4984 900 1],[176.0104 350 1],[176.1975 300 1],[176.3 290 0],[176.3869 500 1],[176.3952 700 1],[176.564 450 0],[176.5815 300 1],[176.638 450 0],[176.7731 400 1],[176.914 450 0],[181.856 1000 3],[182.8588 600 1],[183.2837 400 1],[183.4808 250 1],[185.4716 1000 2],[185.5929 300 1],[185.8026 700 1],[185.998 120 1],[186.2311 1000 1],[186.279 600 2],[188.116 700 3],[192.9978 200 1],[193.1048 150 1],[193.2377 200 1],[193.4503 400 1],[193.4713 150 1],[193.584 300 2],[193.5863 15 2],[193.5949 200 2],[193.6907 150 1],[193.9261 220 1],[199.0531 700 1],[201.6052 150 1],[201.6234 150 1],[201.6368 100 1],[207.4008 200 1],[209.4264 700 1],[209.4744 150 1],[209.4791 300 1],[209.5104 100 1],[209.5141 200 1],[215.07 60 0],[218.1 60 0],[226.91 400 0],[226.922 120 0],[231.249 60 0],[231.353 70 0],[231.748 90 0],[231.906 60 0],[232.156 140 0],[236.705 460 0],[236.761 110 0],[236.811 110 0],[236.93 180 0],[237.022 140 0],[237.073 70 0],[237.207 160 0],[237.312 850 0],[237.335 170 0],[237.357 110 0],[237.84 60 0],[239.9 110 2],[251.33 60 0],[251.587 400 3],[256.798 240 0],[257.51 480 0],[257.54 60 0],[263.155 80 1],[263.77 110 1],[265.248 150 0],[266.039 200 0],[266.917 160 1],[276.277 285 2],[276.287 220 2],[281.619 650 1],[283.796 90 0],[284.01 90 0],[290.693 450 2],[304.128 150 1],[305.007 360 0],[305.468 60 0],[305.714 450 0],[306.429 90 0],[306.614 60 0],[307.464 150 1],[308.2153 4500 0],[309.271 7200 0],[309.2839 1800 0],[320.82 500 3],[326.721 500 3],[328.513 600 3],[334.446 400 3],[334.852 360 2],[335.088 290 2],[342.892 150 1],[343.935 70 0],[344.364 150 0],[344.486 70 0],[345.822 70 0],[347.354 500 3],[347.981 60 0],[348.263 60 0],[349.223 900 3],[350.846 800 3],[351.128 500 3],[351.756 700 3],[352.703 400 3],[354.108 500 3],[358.656 450 1],[358.707 360 1],[358.745 290 1],[360.163 870 2],[360.193 550 2],[361.236 750 2],[365.106 220 1],[365.11 110 1],[365.498 150 1],[365.5 290 1],[370.211 450 2],[371.312 550 2],[390.068 450 1],[393.2 60 0],[394.4006 4500 0],[396.152 9000 0],[398.014 110 2],[399.586 110 1],[408.245 110 2],[408.861 150 2],[414.237 110 2],[414.992 650 2],[415.017 650 2],[422.681 290 1],[436.464 110 2],[447.989 650 2],[447.997 650 2],[451.256 760 2],[452.894 550 2],[452.919 870 2],[458.582 150 1],[458.819 110 1],[466.68 550 1],[470.115 110 2],[470.141 150 2],[489.876 110 1],[490.277 110 1],[490.41 110 2],[510.752 70 0],[515.101 110 2],[516.389 110 2],[528.021 150 1],[528.377 290 1],[528.585 150 1],[531.232 110 1],[531.607 220 1],[537.184 150 1],[555.706 180 0],[555.795 110 0],[559.323 450 1],[569.66 1200 2],[572.273 1000 2],[585.362 110 1],[597.194 220 1],[600.176 290 1],[600.188 220 1],[600.642 450 1],[605.521 110 2],[606.111 150 1],[606.843 290 1],[606.853 110 1],[607.323 450 1],[618.157 110 1],[618.168 150 1],[618.228 290 1],[618.245 220 1],[618.342 450 1],[620.152 450 1],[620.17 360 1],[622.618 290 1],[623.178 360 1],[624.336 450 1],[633.574 450 1],[669.602 360 0],[669.867 230 0],[708.397 60 0],[708.464 70 0],[736.157 110 0],[736.23 140 0],[760.616 60 0],[761.482 90 0],[763.537 220 2],[766.026 150 2],[768.197 220 2],[783.531 230 0],[783.613 290 0],[788.179 360 2],[788.252 150 2],[790.551 290 2],[799.305 60 0],[800.319 90 0],[806.597 70 0],[807.535 110 0],[824.359 290 2],[827.511 360 2],[864.07 290 1],[877.287 360 0],[877.39 450 0],[882.891 110 0],[884.128 180 0],[891.29 90 0],[892.356 140 0],[908.991 60 0],[913.995 70 0],[929.065 150 1],[929.075 110 1],[957.152 290 2],[960.599 360 2],[1007.629 150 1],[1076.836 110 0],[1078.204 140 0],[1087.298 110 0],[1089.173 230 0],[1125.319 450 0],[1125.488 570 0],[1312.341 570 0],[1315.076 450 0],[1671.8961 230 0],[1675.0561 300 0],[1676.3359 140 0],[2109.3039 300 0],[2116.375 360 0]}{ALLx9000x9000x1000x1200x1000x1000x0}{UVx7200x7200x1000x1000x1000x1000x0}{VISx9000x9000x550x1200x0x0x0}{IVx570x570x290x360x0x0x0}%
-\pgfspectra@elt@search{#1}{Si}{[7.861 1 4],[7.89 1 4],[8.081 2 4],[8.111 2 4],[8.518 10 4],[8.558 6 4],[9.045 4 4],[9.085 4 4],[9.644 15 4],[9.714 10 4],[9.821 2 4],[11.786 20 4],[11.897 20 4],[45.782 4 3],[45.816 3 3],[51.512 2 3],[51.635 3 3],[56.661 8 2],[64.576 2 3],[65.222 6 2],[65.333 8 2],[67.348 5 2],[74.994 5 3],[80.007 5 2],[80.51 10 1],[81.505 7 3],[81.813 8 3],[82.052 20 1],[82.341 9 2],[84.372 20 1],[84.577 40 1],[85.014 10 1],[88.34 5 2],[88.972 100 1],[89.2 200 1],[89.941 10 1],[90.174 20 1],[91.301 10 1],[91.385 20 1],[92.981 20 1],[93.909 7 2],[96.795 9 2],[98.987 100 1],[99.268 200 1],[99.352 10 2],[99.479 13 2],[99.739 16 2],[100.537 7 2],[102.07 25 1],[102.369 50 1],[103.116 7 2],[103.392 8 2],[103.705 7 2],[105.705 30 1],[105.75 15 1],[106.663 8 3],[108.322 6 2],[110.837 14 2],[110.997 16 2],[111.323 18 2],[112.249 8 3],[112.744 20 1],[112.791 40 1],[112.834 10 3],[114.055 6 2],[114.158 7 2],[114.228 6 2],[114.431 8 2],[114.496 6 2],[114.511 8 2],[114.518 7 2],[115.5 6 2],[115.596 6 2],[115.81 7 2],[116.026 6 2],[116.158 8 2],[117.437 5 2],[117.443 6 2],[117.8 8 2],[119.042 100 1],[119.328 200 1],[119.45 250 1],[119.739 100 1],[120.651 30 2],[120.653 30 2],[120.752 9 2],[121.046 10 2],[121.612 10 1],[122.391 20 1],[122.425 20 1],[122.497 10 1],[122.681 50 1],[122.689 20 1],[122.699 40 1],[122.76 100 1],[122.844 10 1],[122.862 25 1],[122.875 150 1],[122.939 200 1],[123.543 7 2],[123.592 10 1],[124.674 100 1],[124.843 150 1],[125.009 100 1],[125.043 150 1],[125.116 200 1],[125.528 10 0],[125.649 40 0],[125.88 50 0],[126.042 1000 1],[126.473 2000 1],[126.502 200 1],[128.035 6 2],[129.454 17 2],[129.673 14 2],[129.889 15 2],[129.896 18 2],[130.115 14 2],[130.332 16 2],[130.437 100 1],[130.559 50 1],[130.927 200 1],[130.946 20 1],[131.259 13 2],[134.147 8 2],[134.239 7 2],[134.339 6 2],[134.687 100 1],[134.854 100 1],[135.006 150 1],[135.052 20 1],[135.066 20 1],[135.264 100 1],[135.372 100 1],[136.16 8 2],[136.237 5 2],[136.347 7 2],[136.526 8 2],[136.705 7 2],[136.944 5 2],[137.303 5 2],[138.799 5 2],[139.376 15 3],[140.277 12 3],[140.907 10 1],[141.022 20 1],[141.697 10 1],[141.724 13 2],[143.369 6 2],[143.577 8 2],[143.617 7 2],[144.173 5 2],[144.72 6 2],[145.725 5 2],[147.465 15 1],[148.487 15 1],[148.502 90 1],[148.522 30 1],[148.551 100 1],[150.024 12 2],[150.119 10 2],[150.187 9 2],[150.606 6 2],[150.91 100 1],[151.207 50 1],[151.357 30 1],[151.691 60 1],[152.672 500 1],[153.345 1000 1],[156.245 10 1],[156.285 15 1],[156.377 10 1],[157.387 50 0],[157.482 50 0],[159.241 50 0],[159.455 150 0],[159.493 50 0],[159.795 30 0],[162.287 100 0],[162.571 30 0],[162.943 300 0],[162.992 200 0],[163.113 75 0],[163.398 50 0],[163.461 1 3],[165.335 30 0],[166.452 30 0],[166.637 50 0],[166.762 100 0],[166.852 100 0],[167.259 100 0],[167.332 7 2],[167.52 200 0],[168.268 30 0],[168.682 30 0],[168.929 50 0],[169.079 30 0],[169.329 50 0],[169.551 50 0],[169.62 200 0],[169.794 200 0],[170.042 50 0],[170.063 30 0],[170.286 30 0],[170.443 50 0],[171.083 10 1],[171.13 20 1],[172.253 6 3],[172.738 5 3],[174.388 30 0],[174.74 50 0],[175.311 30 0],[176.366 50 0],[176.503 40 0],[176.56 30 0],[176.606 30 0],[177.063 30 0],[177.092 100 0],[177.683 100 0],[178.323 50 0],[179.912 100 0],[180.8 150 1],[180.909 50 0],[181.407 500 0],[181.692 200 1],[181.745 10 1],[182.245 50 0],[183.651 200 0],[183.801 30 0],[184.115 100 0],[184.144 200 0],[184.255 9 2],[184.377 200 0],[184.551 300 0],[184.61 100 0],[184.747 400 0],[184.814 200 0],[184.874 100 0],[185.067 500 0],[185.179 30 0],[185.246 200 0],[185.315 50 0],[186.932 20 1],[187.023 15 1],[187.31 100 0],[187.484 500 0],[187.581 100 0],[188.185 200 0],[188.77 200 0],[189.325 200 0],[190.133 1000 0],[190.246 100 1],[190.466 50 0],[191.062 50 1],[194.167 50 1],[194.459 15 1],[194.933 10 1],[194.956 100 1],[195.497 100 0],[198.443 30 0],[199.185 50 0],[201.097 30 0],[205.483 50 0],[205.865 50 1],[205.901 50 1],[206.119 40 0],[206.552 30 0],[207.202 200 1],[207.27 200 1],[210.321 30 0],[211.463 30 0],[212.018 3 3],[212.412 100 0],[212.747 4 3],[213.399 10 1],[213.64 30 1],[213.656 50 1],[214.791 50 0],[217.689 5 2],[220.798 110 0],[221.089 115 0],[221.174 110 0],[221.667 120 0],[221.806 120 0],[221.891 50 0],[228.704 5 3],[229.103 35 0],[229.548 6 2],[229.687 10 2],[230.093 8 2],[230.306 55 0],[230.819 10 2],[232.856 2 3],[233.44 30 1],[233.461 30 1],[234.42 10 1],[234.954 10 1],[235.017 20 1],[235.309 20 1],[235.63 100 1],[235.718 30 1],[235.797 50 1],[236.02 10 1],[236.676 2 3],[236.697 30 1],[237.099 3 3],[237.426 20 1],[242.845 10 1],[243.515 300 0],[243.877 65 0],[244.336 65 0],[244.948 11 2],[245.212 70 0],[248.282 2 3],[248.32 6 2],[248.538 1 3],[250.69 425 0],[251.432 375 0],[251.6113 500 0],[251.751 7 3],[251.9202 350 0],[252.4108 425 0],[252.8509 450 0],[253.2381 110 0],[254.182 25 2],[254.609 10 2],[255.921 14 2],[256.3679 30 0],[256.8641 85 0],[257.7151 45 0],[263.1282 190 0],[264.079 11 2],[265.551 14 2],[267.219 1 3],[267.512 4 3],[267.525 4 3],[267.757 1 3],[268.221 10 1],[272.381 3 3],[281.711 9 2],[283.149 7 2],[283.962 5 2],[288.1579 1000 0],[288.751 10 1],[289.513 3 3],[290.428 300 1],[290.447 2 3],[290.569 500 1],[295.915 5 2],[297.0355 55 0],[297.152 1 3],[298.052 5 2],[298.7645 150 0],[300.6739 50 0],[301.309 5 2],[302.0004 75 0],[302.155 20 1],[303 100 1],[303.473 6 2],[303.729 8 2],[304.093 9 2],[304.157 20 1],[304.219 30 1],[304.369 100 1],[304.385 10 1],[304.393 7 2],[304.508 5 2],[304.577 10 1],[304.83 50 1],[305.318 150 1],[306.824 7 2],[308.624 25 2],[308.646 6 2],[309.342 20 2],[309.365 5 2],[309.683 16 2],[312.627 6 2],[314.737 7 2],[314.956 7 3],[316.161 8 2],[316.571 9 3],[318.513 16 2],[318.602 13 2],[318.897 150 1],[319.225 50 1],[319.309 150 1],[319.421 50 1],[319.469 50 1],[319.541 100 1],[319.65 14 2],[319.951 200 1],[320.249 20 1],[320.387 100 1],[321.003 200 1],[321.055 15 2],[321.466 75 1],[321.625 7 2],[321.799 15 1],[322.044 10 1],[322.301 20 1],[323.05 12 2],[323.395 14 2],[324.162 15 2],[324.419 1 3],[325.34 7 2],[325.374 5 2],[325.48 7 2],[325.866 12 2],[327.046 6 2],[327.626 10 2],[327.926 7 2],[333.314 300 1],[333.982 500 1],[348.691 15 2],[352.594 9 2],[356.967 8 2],[359.047 20 2],[362.254 8 2],[363.945 5 2],[364.512 6 2],[368.14 7 2],[368.215 5 2],[376.244 8 3],[377.315 6 3],[379.141 20 2],[379.611 25 2],[380.654 30 2],[384.246 7 2],[385.366 100 1],[385.602 500 1],[386.26 200 1],[390.5523 300 0],[392.447 20 2],[394.749 6 2],[395.574 10 1],[396.384 6 2],[397.746 10 1],[398.124 5 2],[399.177 15 1],[399.801 10 1],[403.139 1 3],[403.806 2 3],[407.545 20 1],[407.678 15 1],[408.885 10 3],[410.186 5 2],[410.242 8 2],[410.2936 70 0],[411.55 5 2],[411.61 9 3],[412.807 300 1],[413.089 500 1],[418.335 10 1],[419.072 100 1],[419.813 50 1],[421.241 7 3],[431.41 3 3],[432.818 5 3],[433.85 9 2],[434.14 8 2],[437.763 8 2],[440.373 2 3],[440.59 6 2],[440.672 8 2],[441.165 1 3],[449.405 6 2],[455.262 30 2],[455.4 8 2],[456.782 25 2],[457.476 20 2],[461.127 1 3],[461.966 7 2],[462.142 100 1],[462.172 150 1],[462.862 3 3],[463.124 9 3],[463.828 7 2],[465.432 10 3],[465.692 3 3],[466.587 8 2],[466.714 1 3],[467.33 2 3],[468.302 9 2],[468.38 7 2],[471.665 16 2],[473.052 7 2],[478.2991 50 0],[479.2212 35 0],[479.2324 80 0],[480.043 8 2],[481.333 15 2],[481.972 16 2],[482.897 18 2],[488.32 15 1],[490.699 20 1],[493.28 20 1],[494.745 1 3],[494.7607 30 0],[495.011 3 3],[500.6061 40 0],[504.103 1000 1],[505.598 1000 1],[509.142 10 2],[511.376 7 2],[511.412 8 2],[518.19 100 1],[518.525 100 1],[519.286 200 1],[519.726 5 2],[520.241 500 1],[529.519 30 1],[530.497 2 3],[530.949 1 3],[540.534 100 1],[541.724 15 1],[542.892 15 1],[543.289 15 1],[543.862 100 1],[544.726 20 1],[545.146 6 2],[545.449 15 1],[545.645 100 1],[546.643 500 1],[546.687 500 1],[546.921 100 1],[547.305 7 2],[549.323 40 0],[549.645 200 1],[551.7535 35 0],[554.074 100 1],[557.666 150 1],[562.2221 30 0],[563.297 100 1],[563.948 200 1],[564.5611 90 0],[566.066 150 1],[566.5554 80 0],[566.956 1000 1],[568.144 30 1],[568.4484 120 0],[568.881 300 1],[569.0425 100 0],[570.1105 90 0],[570.137 200 1],[570.46 7 2],[570.637 100 1],[570.8397 160 0],[571.629 8 2],[573.973 20 2],[574.7667 45 0],[575.3625 45 0],[575.422 45 0],[576.2977 45 0],[577.2145 70 0],[578.0384 70 0],[578.573 30 1],[579.3071 90 0],[579.49 30 1],[579.7859 100 0],[580.047 150 1],[580.674 200 1],[582.78 30 1],[584.613 50 1],[586.748 10 1],[586.84 300 1],[587.3764 40 0],[589.879 10 2],[591.522 150 1],[594.8545 200 0],[595.756 500 1],[597.893 500 1],[606.745 10 1],[608.006 20 1],[608.667 10 1],[612.5021 90 0],[613.1574 85 0],[613.185 90 0],[614.2487 100 0],[614.5015 100 0],[615.5134 160 0],[623.732 160 0],[623.8287 40 0],[624.3813 125 0],[624.4468 125 0],[625.4188 180 0],[631.446 7 2],[633.1954 45 0],[634.71 1000 1],[637.136 1000 1],[652.436 6 2],[652.6609 45 0],[652.7199 45 0],[655.5462 45 0],[666.052 50 1],[666.5 15 1],[666.756 5 3],[667.188 100 1],[669.938 20 1],[670.121 7 3],[671.704 50 1],[672.1853 100 0],[674.164 30 0],[675.028 20 1],[681.845 30 1],[682.982 50 1],[683.156 6 2],[684.8568 30 0],[685.165 7 2],[697.6523 80 0],[699.836 3 3],[700.3567 180 0],[700.5883 180 0],[701.728 30 0],[701.7646 90 0],[703.4903 250 0],[704.794 6 3],[706.841 4 3],[716.469 70 0],[716.5545 200 0],[718.489 70 0],[719.358 65 0],[719.39 30 0],[722.6206 100 0],[723.5326 100 0],[723.582 60 0],[725.0625 180 0],[727.5294 160 0],[728.281 40 0],[728.9173 400 0],[729.026 55 0],[737.3 35 0],[740.5774 375 0],[740.9082 200 0],[741.535 40 0],[741.5946 275 0],[742.3497 425 0],[742.46 85 0],[746.189 5 2],[746.262 8 2],[746.632 9 2],[761.236 12 2],[763.05 2 3],[765.456 4 3],[767.875 4 3],[768.0267 100 0],[771.879 5 3],[772.382 6 3],[772.564 2 3],[773.047 1 3],[774.271 40 0],[775.291 1 3],[780.0008 30 0],[784.88 400 1],[784.972 500 1],[784.9967 30 0],[791.8386 90 0],[793.2349 120 0],[794.4001 140 0],[797.0306 35 0],[803.5619 35 0],[809.3241 70 0],[810.286 9 2],[810.345 11 2],[819.043 7 2],[819.116 6 2],[819.168 8 2],[823.0642 35 0],[824.061 1 3],[826.257 9 2],[826.564 5 2],[826.932 8 2],[827.138 5 2],[827.194 6 2],[844.3982 40 0],[850.1547 40 0],[850.2221 60 0],[853.6165 40 0],[855.678 120 0],[864.8462 50 0],[872.8011 40 0],[874.2451 75 0],[875.2009 100 0],[879.0389 35 0],[895.725 2 3],[901.816 1 3],[941.272 100 1],[941.3506 100 0],[1037.1269 30 0],[1058.5141 120 0],[1060.3431 120 0],[1066.0975 120 0],[1069.4251 30 0],[1072.7408 30 0],[1074.9384 60 0],[1078.455 30 0],[1078.6856 80 0],[1082.7091 140 0],[1084.3854 60 0],[1086.879 30 0],[1086.9541 130 0],[1088.2802 30 0],[1088.5336 30 0],[1097.9308 80 0],[1098.2061 30 0],[1101.7965 80 0],[1118.76 13 0],[1128.984 12 0],[1161.109 12 0],[1198.419 370 0],[1199.157 220 0],[1203.151 440 0],[1210.353 150 0],[1227.068 120 0],[1317.69 11 0],[1588.839 190 0],[1596.004 40 0],[1606.003 95 0],[1609.48 20 0],[1616.371 60 0],[1621.568 11 0],[1638.155 16 0],[1668.077 29 0],[1732.7289 28 0],[1872.29 26 0],[1938.5939 15 0],[1943.2971 48 0],[1949.3381 13 0],[1972.25 110 0],[1992.8881 31 0],[2091.7131 12 0],[2135.424 21 0],[2206.2711 12 0]}{ALLx2000x1000x2000x30x15x20x0}{UVx2000x1000x2000x30x15x20x0}{VISx1000x425x1000x30x10x0x0}{IVx500x440x500x11x2x0x0}%
+\pgfspectra@elt@search{#1}{Si}{[11.786 20 4],[11.897 20 4],[45.782 4 3],[45.816 3 3],[51.512 2 3],[51.635 3 3],[56.661 8 2],[64.576 2 3],[65.222 6 2],[65.333 8 2],[67.348 5 2],[74.994 5 3],[80.007 5 2],[80.51 10 1],[81.505 7 3],[81.813 8 3],[82.052 20 1],[82.341 9 2],[84.372 20 1],[84.577 40 1],[85.014 10 1],[88.34 5 2],[88.972 100 1],[89.2 200 1],[89.941 10 1],[90.174 20 1],[91.301 10 1],[91.385 20 1],[92.981 20 1],[93.909 7 2],[96.795 9 2],[98.987 100 1],[99.268 200 1],[99.352 10 2],[99.479 13 2],[99.739 16 2],[100.537 7 2],[102.07 25 1],[102.369 50 1],[103.116 7 2],[103.392 8 2],[103.705 7 2],[105.705 30 1],[105.75 15 1],[106.663 8 3],[108.322 6 2],[110.837 14 2],[110.997 16 2],[111.323 18 2],[112.249 8 3],[112.744 20 1],[112.791 40 1],[112.834 10 3],[114.055 6 2],[114.158 7 2],[114.228 6 2],[114.431 8 2],[114.496 6 2],[114.511 8 2],[114.518 7 2],[115.5 6 2],[115.596 6 2],[115.81 7 2],[116.026 6 2],[116.158 8 2],[117.437 5 2],[117.443 6 2],[117.8 8 2],[119.042 100 1],[119.328 200 1],[119.45 250 1],[119.739 100 1],[120.651 30 2],[120.653 30 2],[120.752 9 2],[121.046 10 2],[121.612 10 1],[122.391 20 1],[122.425 20 1],[122.497 10 1],[122.681 50 1],[122.689 20 1],[122.699 40 1],[122.76 100 1],[122.844 10 1],[122.862 25 1],[122.875 150 1],[122.939 200 1],[123.543 7 2],[123.592 10 1],[124.674 100 1],[124.843 150 1],[125.009 100 1],[125.043 150 1],[125.116 200 1],[125.528 10 0],[125.649 40 0],[125.88 50 0],[126.042 1000 1],[126.473 2000 1],[126.502 200 1],[128.035 6 2],[129.454 17 2],[129.673 14 2],[129.889 15 2],[129.896 18 2],[130.115 14 2],[130.332 16 2],[130.437 100 1],[130.559 50 1],[130.927 200 1],[130.946 20 1],[131.259 13 2],[134.147 8 2],[134.239 7 2],[134.339 6 2],[134.687 100 1],[134.854 100 1],[135.006 150 1],[135.052 20 1],[135.066 20 1],[135.264 100 1],[135.372 100 1],[136.16 8 2],[136.237 5 2],[136.347 7 2],[136.526 8 2],[136.705 7 2],[136.944 5 2],[137.303 5 2],[138.799 5 2],[139.376 15 3],[140.277 12 3],[140.907 10 1],[141.022 20 1],[141.697 10 1],[141.724 13 2],[143.369 6 2],[143.577 8 2],[143.617 7 2],[144.173 5 2],[144.72 6 2],[145.725 5 2],[147.465 15 1],[148.487 15 1],[148.502 90 1],[148.522 30 1],[148.551 100 1],[150.024 12 2],[150.119 10 2],[150.187 9 2],[150.606 6 2],[150.91 100 1],[151.207 50 1],[151.357 30 1],[151.691 60 1],[152.672 500 1],[153.345 1000 1],[156.245 10 1],[156.285 15 1],[156.377 10 1],[157.387 50 0],[157.482 50 0],[159.241 50 0],[159.455 150 0],[159.493 50 0],[159.795 30 0],[162.287 100 0],[162.571 30 0],[162.943 300 0],[162.992 200 0],[163.113 75 0],[163.398 50 0],[163.461 1 3],[165.335 30 0],[166.452 30 0],[166.637 50 0],[166.762 100 0],[166.852 100 0],[167.259 100 0],[167.332 7 2],[167.52 200 0],[168.268 30 0],[168.682 30 0],[168.929 50 0],[169.079 30 0],[169.329 50 0],[169.551 50 0],[169.62 200 0],[169.794 200 0],[170.042 50 0],[170.063 30 0],[170.286 30 0],[170.443 50 0],[171.083 10 1],[171.13 20 1],[172.253 6 3],[172.738 5 3],[174.388 30 0],[174.74 50 0],[175.311 30 0],[176.366 50 0],[176.503 40 0],[176.56 30 0],[176.606 30 0],[177.063 30 0],[177.092 100 0],[177.683 100 0],[178.323 50 0],[179.912 100 0],[180.8 150 1],[180.909 50 0],[181.407 500 0],[181.692 200 1],[181.745 10 1],[182.245 50 0],[183.651 200 0],[183.801 30 0],[184.115 100 0],[184.144 200 0],[184.255 9 2],[184.377 200 0],[184.551 300 0],[184.61 100 0],[184.747 400 0],[184.814 200 0],[184.874 100 0],[185.067 500 0],[185.179 30 0],[185.246 200 0],[185.315 50 0],[186.932 20 1],[187.023 15 1],[187.31 100 0],[187.484 500 0],[187.581 100 0],[188.185 200 0],[188.77 200 0],[189.325 200 0],[190.133 1000 0],[190.246 100 1],[190.466 50 0],[191.062 50 1],[194.167 50 1],[194.459 15 1],[194.933 10 1],[194.956 100 1],[195.497 100 0],[198.443 30 0],[199.185 50 0],[201.097 30 0],[205.483 50 0],[205.865 50 1],[205.901 50 1],[206.119 40 0],[206.552 30 0],[207.202 200 1],[207.27 200 1],[210.321 30 0],[211.463 30 0],[212.018 3 3],[212.412 100 0],[212.747 4 3],[213.399 10 1],[213.64 30 1],[213.656 50 1],[214.791 50 0],[217.689 5 2],[220.798 110 0],[221.089 115 0],[221.174 110 0],[221.667 120 0],[221.806 120 0],[221.891 50 0],[228.704 5 3],[229.103 35 0],[229.548 6 2],[229.687 10 2],[230.093 8 2],[230.306 55 0],[230.819 10 2],[232.856 2 3],[233.44 30 1],[233.461 30 1],[234.42 10 1],[234.954 10 1],[235.017 20 1],[235.309 20 1],[235.63 100 1],[235.718 30 1],[235.797 50 1],[236.02 10 1],[236.676 2 3],[236.697 30 1],[237.099 3 3],[237.426 20 1],[242.845 10 1],[243.515 300 0],[243.877 65 0],[244.336 65 0],[244.948 11 2],[245.212 70 0],[248.282 2 3],[248.32 6 2],[248.538 1 3],[250.69 425 0],[251.432 375 0],[251.6113 500 0],[251.751 7 3],[251.9202 350 0],[252.4108 425 0],[252.8509 450 0],[253.2381 110 0],[254.182 25 2],[254.609 10 2],[255.921 14 2],[256.3679 30 0],[256.8641 85 0],[257.7151 45 0],[263.1282 190 0],[264.079 11 2],[265.551 14 2],[267.219 1 3],[267.512 4 3],[267.525 4 3],[267.757 1 3],[268.221 10 1],[272.381 3 3],[281.711 9 2],[283.149 7 2],[283.962 5 2],[288.1579 1000 0],[288.751 10 1],[289.513 3 3],[290.428 300 1],[290.447 2 3],[290.569 500 1],[295.915 5 2],[297.0355 55 0],[297.152 1 3],[298.052 5 2],[298.7645 150 0],[300.6739 50 0],[301.309 5 2],[302.0004 75 0],[302.155 20 1],[303 100 1],[303.473 6 2],[303.729 8 2],[304.093 9 2],[304.157 20 1],[304.219 30 1],[304.369 100 1],[304.385 10 1],[304.393 7 2],[304.508 5 2],[304.577 10 1],[304.83 50 1],[305.318 150 1],[306.824 7 2],[308.624 25 2],[308.646 6 2],[309.342 20 2],[309.365 5 2],[309.683 16 2],[312.627 6 2],[314.737 7 2],[314.956 7 3],[316.161 8 2],[316.571 9 3],[318.513 16 2],[318.602 13 2],[318.897 150 1],[319.225 50 1],[319.309 150 1],[319.421 50 1],[319.469 50 1],[319.541 100 1],[319.65 14 2],[319.951 200 1],[320.249 20 1],[320.387 100 1],[321.003 200 1],[321.055 15 2],[321.466 75 1],[321.625 7 2],[321.799 15 1],[322.044 10 1],[322.301 20 1],[323.05 12 2],[323.395 14 2],[324.162 15 2],[324.419 1 3],[325.34 7 2],[325.374 5 2],[325.48 7 2],[325.866 12 2],[327.046 6 2],[327.626 10 2],[327.926 7 2],[333.314 300 1],[333.982 500 1],[348.691 15 2],[352.594 9 2],[356.967 8 2],[359.047 20 2],[362.254 8 2],[363.945 5 2],[364.512 6 2],[368.14 7 2],[368.215 5 2],[376.244 8 3],[377.315 6 3],[379.141 20 2],[379.611 25 2],[380.654 30 2],[384.246 7 2],[385.366 100 1],[385.602 500 1],[386.26 200 1],[390.5523 300 0],[392.447 20 2],[394.749 6 2],[395.574 10 1],[396.384 6 2],[397.746 10 1],[398.124 5 2],[399.177 15 1],[399.801 10 1],[403.139 1 3],[403.806 2 3],[407.545 20 1],[407.678 15 1],[408.885 10 3],[410.186 5 2],[410.242 8 2],[410.2936 70 0],[411.55 5 2],[411.61 9 3],[412.807 300 1],[413.089 500 1],[418.335 10 1],[419.072 100 1],[419.813 50 1],[421.241 7 3],[431.41 3 3],[432.818 5 3],[433.85 9 2],[434.14 8 2],[437.763 8 2],[440.373 2 3],[440.59 6 2],[440.672 8 2],[441.165 1 3],[449.405 6 2],[455.262 30 2],[455.4 8 2],[456.782 25 2],[457.476 20 2],[461.127 1 3],[461.966 7 2],[462.142 100 1],[462.172 150 1],[462.862 3 3],[463.124 9 3],[463.828 7 2],[465.432 10 3],[465.692 3 3],[466.587 8 2],[466.714 1 3],[467.33 2 3],[468.302 9 2],[468.38 7 2],[471.665 16 2],[473.052 7 2],[478.2991 50 0],[479.2212 35 0],[479.2324 80 0],[480.043 8 2],[481.333 15 2],[481.972 16 2],[482.897 18 2],[488.32 15 1],[490.699 20 1],[493.28 20 1],[494.745 1 3],[494.7607 30 0],[495.011 3 3],[500.6061 40 0],[504.103 1000 1],[505.598 1000 1],[509.142 10 2],[511.376 7 2],[511.412 8 2],[518.19 100 1],[518.525 100 1],[519.286 200 1],[519.726 5 2],[520.241 500 1],[529.519 30 1],[530.497 2 3],[530.949 1 3],[540.534 100 1],[541.724 15 1],[542.892 15 1],[543.289 15 1],[543.862 100 1],[544.726 20 1],[545.146 6 2],[545.449 15 1],[545.645 100 1],[546.643 500 1],[546.687 500 1],[546.921 100 1],[547.305 7 2],[549.323 40 0],[549.645 200 1],[551.7535 35 0],[554.074 100 1],[557.666 150 1],[562.2221 30 0],[563.297 100 1],[563.948 200 1],[564.5611 90 0],[566.066 150 1],[566.5554 80 0],[566.956 1000 1],[568.144 30 1],[568.4484 120 0],[568.881 300 1],[569.0425 100 0],[570.1105 90 0],[570.137 200 1],[570.46 7 2],[570.637 100 1],[570.8397 160 0],[571.629 8 2],[573.973 20 2],[574.7667 45 0],[575.3625 45 0],[575.422 45 0],[576.2977 45 0],[577.2145 70 0],[578.0384 70 0],[578.573 30 1],[579.3071 90 0],[579.49 30 1],[579.7859 100 0],[580.047 150 1],[580.674 200 1],[582.78 30 1],[584.613 50 1],[586.748 10 1],[586.84 300 1],[587.3764 40 0],[589.879 10 2],[591.522 150 1],[594.8545 200 0],[595.756 500 1],[597.893 500 1],[606.745 10 1],[608.006 20 1],[608.667 10 1],[612.5021 90 0],[613.1574 85 0],[613.185 90 0],[614.2487 100 0],[614.5015 100 0],[615.5134 160 0],[623.732 160 0],[623.8287 40 0],[624.3813 125 0],[624.4468 125 0],[625.4188 180 0],[631.446 7 2],[633.1954 45 0],[634.71 1000 1],[637.136 1000 1],[652.436 6 2],[652.6609 45 0],[652.7199 45 0],[655.5462 45 0],[666.052 50 1],[666.5 15 1],[666.756 5 3],[667.188 100 1],[669.938 20 1],[670.121 7 3],[671.704 50 1],[672.1853 100 0],[674.164 30 0],[675.028 20 1],[681.845 30 1],[682.982 50 1],[683.156 6 2],[684.8568 30 0],[685.165 7 2],[697.6523 80 0],[699.836 3 3],[700.3567 180 0],[700.5883 180 0],[701.728 30 0],[701.7646 90 0],[703.4903 250 0],[704.794 6 3],[706.841 4 3],[716.469 70 0],[716.5545 200 0],[718.489 70 0],[719.358 65 0],[719.39 30 0],[722.6206 100 0],[723.5326 100 0],[723.582 60 0],[725.0625 180 0],[727.5294 160 0],[728.281 40 0],[728.9173 400 0],[729.026 55 0],[737.3 35 0],[740.5774 375 0],[740.9082 200 0],[741.535 40 0],[741.5946 275 0],[742.3497 425 0],[742.46 85 0],[746.189 5 2],[746.262 8 2],[746.632 9 2],[761.236 12 2],[763.05 2 3],[765.456 4 3],[767.875 4 3],[768.0267 100 0],[771.879 5 3],[772.382 6 3],[772.564 2 3],[773.047 1 3],[774.271 40 0],[775.291 1 3],[780.0008 30 0],[784.88 400 1],[784.972 500 1],[784.9967 30 0],[791.8386 90 0],[793.2349 120 0],[794.4001 140 0],[797.0306 35 0],[803.5619 35 0],[809.3241 70 0],[810.286 9 2],[810.345 11 2],[819.043 7 2],[819.116 6 2],[819.168 8 2],[823.0642 35 0],[824.061 1 3],[826.257 9 2],[826.564 5 2],[826.932 8 2],[827.138 5 2],[827.194 6 2],[844.3982 40 0],[850.1547 40 0],[850.2221 60 0],[853.6165 40 0],[855.678 120 0],[864.8462 50 0],[872.8011 40 0],[874.2451 75 0],[875.2009 100 0],[879.0389 35 0],[895.725 2 3],[901.816 1 3],[941.272 100 1],[941.3506 100 0],[1037.1269 30 0],[1058.5141 120 0],[1060.3431 120 0],[1066.0975 120 0],[1069.4251 30 0],[1072.7408 30 0],[1074.9384 60 0],[1078.455 30 0],[1078.6856 80 0],[1082.7091 140 0],[1084.3854 60 0],[1086.879 30 0],[1086.9541 130 0],[1088.2802 30 0],[1088.5336 30 0],[1097.9308 80 0],[1098.2061 30 0],[1101.7965 80 0],[1118.76 13 0],[1128.984 12 0],[1161.109 12 0],[1198.419 370 0],[1199.157 220 0],[1203.151 440 0],[1210.353 150 0],[1227.068 120 0],[1317.69 11 0],[1588.839 190 0],[1596.004 40 0],[1606.003 95 0],[1609.48 20 0],[1616.371 60 0],[1621.568 11 0],[1638.155 16 0],[1668.077 29 0],[1732.7289 28 0],[1872.29 26 0],[1938.5939 15 0],[1943.2971 48 0],[1949.3381 13 0],[1972.25 110 0],[1992.8881 31 0],[2091.7131 12 0],[2135.424 21 0],[2206.2711 12 0]}{ALLx2000x1000x2000x30x15x20x0}{UVx2000x1000x2000x30x15x20x0}{VISx1000x425x1000x30x10x0x0}{IVx500x440x500x11x2x0x0}%[7.861 1 4],[7.89 1 4],[8.081 2 4],[8.111 2 4],[8.518 10 4],[8.558 6 4],[9.045 4 4],[9.085 4 4],[9.644 15 4],[9.714 10 4],[9.821 2 4],
\pgfspectra@elt@search{#1}{P}{[25.559 80 4],[25.567 50 4],[28.2301 90 3],[30.4996 90 3],[31.058 110 4],[31.134 150 4],[32.847 300 4],[32.878 250 4],[34.723 150 4],[34.82 200 4],[35.9293 120 3],[35.9899 150 3],[36.1514 120 3],[36.1629 150 3],[37.1299 120 3],[37.1504 150 3],[37.2001 200 3],[37.856 110 4],[38.8318 500 3],[38.95 250 4],[39.07 300 4],[41.003 150 4],[41.4604 120 3],[41.4999 200 3],[41.5805 250 3],[44.4245 250 3],[44.5158 300 3],[47.1146 90 2],[47.56 375 4],[48.4278 90 2],[49.818 120 2],[53.463 110 4],[53.499 80 4],[54.257 520 4],[54.492 600 4],[56.8038 250 3],[56.9853 200 2],[58.1831 200 2],[62.9008 350 3],[62.9914 400 3],[63.1779 500 3],[64.8482 350 3],[67.39 450 4],[75.651 300 3],[77.6353 300 3],[81.024 10 1],[82.3179 650 3],[82.473 700 3],[82.7932 800 3],[84.4646 200 2],[84.5038 150 2],[84.5664 250 2],[84.7019 250 3],[84.7669 300 2],[84.8016 200 2],[84.8465 120 2],[84.8639 150 2],[84.9799 350 3],[85.0392 200 3],[85.2686 250 2],[85.5624 350 2],[85.9406 200 2],[85.9652 500 2],[85.9729 250 2],[86.544 10 1],[86.545 450 4],[87.139 600 4],[87.7476 700 3],[91.3971 300 2],[91.712 300 2],[91.8665 350 2],[92.1849 250 2],[95.0655 1000 3],[99.762 250 4],[99.7999 200 2],[100.038 150 4],[100.3598 250 2],[102.5563 570 3],[102.8096 500 3],[103.0517 570 3],[103.3111 500 3],[103.5517 500 3],[111.798 900 4],[111.8551 570 3],[112.801 700 4],[120.6422 200 3],[124.982 20 1],[130.187 20 1],[130.447 20 1],[130.468 15 1],[130.548 35 1],[130.987 25 1],[131.07 60 1],[133.4808 500 2],[133.5705 200 3],[134.4327 650 2],[134.4845 300 2],[136.6695 500 3],[137.2674 400 3],[137.349 20 0],[137.706 20 0],[137.7282 350 3],[137.793 20 0],[137.94 25 0],[137.962 150 4],[138.0463 250 2],[138.1089 150 2],[138.147 25 0],[138.505 250 4],[143.013 50 0],[144.783 375 4],[145.289 30 1],[148.4507 500 3],[148.7788 400 3],[148.9098 300 3],[149.136 50 0],[149.299 40 0],[150.2228 350 2],[150.4663 250 2],[153.251 80 1],[153.59 120 1],[153.639 80 1],[154.229 120 1],[154.843 60 0],[161.05 450 4],[161.8632 150 2],[161.8907 200 2],[167.107 70 0],[167.168 180 0],[167.248 90 0],[167.461 230 0],[167.971 300 0],[168.599 120 0],[169.406 100 0],[170.641 60 0],[177.499 250 0],[178.287 200 0],[178.768 180 0],[184.719 100 0],[185.122 80 0],[185.891 150 0],[185.943 150 0],[186.2762 250 3],[186.2893 120 3],[186.358 200 3],[188.8523 650 3],[191.0183 200 3],[198.5682 120 3],[198.5851 150 3],[198.6114 200 3],[198.7022 150 3],[202.348 100 0],[203.347 150 0],[213.547 100 0],[213.618 200 0],[214.914 200 0],[215.294 100 0],[215.408 150 0],[218.029 200 4],[218.642 150 4],[242.44 375 4],[244.093 450 4],[244.124 200 4],[247.7823 200 3],[247.807 150 3],[247.8256 250 3],[248.419 100 1],[253.399 500 0],[253.561 700 0],[255.325 600 0],[255.49 500 0],[260.5506 250 3],[260.606 150 1],[261.1147 200 2],[262.618 100 1],[263.2713 300 2],[263.676 90 1],[264.4295 400 3],[268.0133 200 2],[272.4764 300 3],[272.877 400 3],[272.912 200 3],[273.9309 500 3],[273.9872 250 3],[274.0223 200 3],[289.5241 250 2],[296.1 300 4],[296.1242 200 3],[297.855 450 4],[317.509 700 4],[318.6186 250 2],[320.404 520 4],[321.9307 300 2],[323.3536 150 2],[323.3602 400 2],[330.892 150 1],[334.7736 650 3],[336.4467 570 3],[337.1122 400 3],[341.3543 200 3],[341.934 125 1],[342.5 100 1],[355.6546 200 2],[357.7526 200 2],[373.3393 200 3],[390.4812 200 2],[391.4314 250 2],[395.7641 300 2],[397.8307 350 2],[405.744 200 2],[405.9312 400 2],[408.0084 300 2],[408.318 150 4],[409.495 110 4],[417.848 100 1],[422.2195 500 2],[424.672 350 2],[424.9656 300 3],[428.86 200 1],[438.535 200 1],[442.071 400 1],[442.8171 200 2],[445.246 100 1],[446.3 150 1],[446.3668 200 2],[446.798 120 1],[447.526 200 1],[447.9776 250 2],[449.924 200 1],[453.081 120 1],[454.0288 250 3],[454.1112 250 3],[454.8056 150 3],[454.8449 200 3],[455.483 120 1],[455.807 120 1],[458.171 120 1],[458.804 500 1],[458.986 500 1],[460.208 600 1],[462.67 300 1],[465.831 300 1],[486.442 200 1],[492.72 150 1],[494.353 500 1],[495.439 300 1],[496.971 300 1],[515.672 110 4],[519.141 150 1],[523.5499 150 3],[525.352 300 1],[529.613 400 1],[531.607 250 1],[534.475 300 1],[537.82 250 1],[538.688 300 1],[540.972 200 1],[542.591 400 1],[545.074 400 1],[545.831 100 0],[546.12 125 1],[547.775 200 0],[548.355 200 1],[549.973 200 1],[550.719 200 1],[554.114 200 1],[558.327 200 1],[558.834 250 1],[572.771 100 1],[598.9774 150 3],[602.418 500 1],[603.404 400 1],[604.312 500 1],[605.55 250 1],[605.786 100 1],[608.3409 150 2],[608.782 350 1],[609.768 150 0],[614.2605 150 3],[616.559 350 1],[619.901 180 0],[623.229 100 1],[636.727 200 1],[640.9204 150 2],[643.532 250 1],[643.631 130 1],[645.999 600 1],[648.444 150 2],[648.6381 150 2],[650.346 600 1],[650.797 600 1],[671.328 150 1],[671.3939 150 3],[671.5906 120 3],[671.742 120 0],[699.269 150 2],[716.545 100 0],[717.512 150 0],[717.666 120 0],[744.3657 200 3],[750.576 100 0],[784.563 250 1],[811.3528 150 2],[827.807 120 0],[836.784 150 0],[853.146 100 0],[861.385 100 0],[863.762 150 0],[874.154 250 0],[887.217 50 0],[952.578 30 0],[959.354 25 0],[973.474 20 0],[975.073 25 0],[979.679 50 0],[1008.422 25 0],[1052.945 6 0],[1058.152 8 0]}{ALLx1000x700x600x650x1000x900x0}{UVx1000x700x150x650x1000x900x0}{VISx600x200x600x500x300x150x0}{IVx250x250x250x150x0x0x0}%
\pgfspectra@elt@search{#1}{S}{[43.74 5 4],[43.82 5 4],[43.96 5 4],[51.93 20 3],[52.01 20 3],[52.08 40 3],[52.2 20 3],[52.25 20 3],[55.12 20 3],[65.25 40 3],[65.3 40 3],[65.36 70 3],[65.4 40 3],[65.56 70 3],[65.59 20 3],[65.73 110 3],[65.83 40 4],[65.98 70 4],[66.09 40 3],[66.14 160 3],[66.32 110 4],[66.37 40 3],[66.48 40 3],[66.61 70 3],[67.62 5 4],[67.73 5 4],[67.81 20 4],[68.03 40 4],[68.09 110 4],[68.16 40 4],[68.62 5 4],[68.69 5 4],[68.98 5 4],[69.17 5 4],[69.35 20 4],[72.95 70 2],[73.242 110 2],[73.52 70 2],[73.85 70 2],[74.49 110 3],[74.84 110 3],[75.02 110 3],[75.38 110 3],[78.65 285 4],[78.9 70 2],[79.67 70 2],[79.83 40 3],[80.05 70 3],[80.4 70 3],[80.97 70 3],[81.6 110 3],[82.49 70 2],[83.63 70 2],[84.92 160 4],[85.22 110 4],[85.48 220 4],[85.79 110 4],[86.05 110 4],[88.36 20 4],[88.45 20 4],[88.58 5 4],[90.09 20 4],[90.28 5 4],[90.59 20 4],[90.69 40 1],[91.05 40 1],[91.27 40 1],[93.74 40 1],[93.77 40 1],[99.6 20 1],[100.05 20 1],[101.44 20 1],[101.95 20 1],[106.27 160 3],[107.3 160 3],[107.35 70 3],[107.71 285 2],[109.66 20 1],[110.23 40 1],[110.84 20 3],[111.09 20 3],[113.1 20 1],[113.16 20 1],[119.4 70 2],[120.1 70 2],[123.41 40 1],[125.05 40 1],[125.38 110 1],[125.95 110 1],[127.0782 275 0],[127.7216 250 0],[129.5653 280 0],[130.2337 275 0],[130.2863 235 0],[130.311 235 0],[130.343 245 0],[130.5883 260 0],[131.0194 265 0],[131.6542 355 0],[131.6618 290 0],[132.3515 375 0],[132.6643 355 0],[138.1552 775 0],[138.551 710 0],[138.8435 960 0],[138.9154 640 0],[139.2588 775 0],[139.6112 1000 0],[140.9337 300 0],[142.503 510 0],[143.328 425 0],[143.6968 300 0],[144.8229 300 0],[147.2972 425 0],[147.3995 550 0],[147.438 300 0],[148.1665 355 0],[148.3039 485 0],[148.3233 300 0],[148.5622 330 0],[148.715 390 0],[162.4 20 3],[162.92 20 3],[166.6688 680 0],[168.753 640 0],[180.7311 710 0],[182.0343 680 0],[182.6245 640 0],[190.0286 710 0],[191.4698 550 0],[238.7 20 3],[239.89 40 3],[246.05 110 2],[248.96 110 2],[249.62 160 2],[249.91 160 2],[250.82 220 2],[262.91 20 1],[263.69 70 2],[266.54 220 2],[267 40 1],[268.05 70 2],[269.18 110 2],[270.28 110 2],[271.89 220 2],[272.14 110 2],[272.68 220 2],[273.11 220 2],[274.1 110 2],[275.69 285 2],[277.52 110 2],[278.55 160 2],[279.74 70 2],[284.77 40 1],[285.6 70 2],[286.35 110 2],[290.43 160 2],[296.48 70 2],[298.6 160 2],[309.75 110 3],[311.77 40 3],[323.42 70 2],[332.49 70 2],[349.73 110 2],[363.2 160 2],[366.2 70 2],[370.94 110 2],[371.78 160 2],[383.83 160 2],[386.76 285 0],[390.2 285 0],[392.86 160 2],[393.33 360 1],[412.08 450 0],[414.23 280 1],[414.51 360 1],[415.31 450 1],[416.27 450 1],[425.36 360 2],[428.5 110 2],[433.27 70 2],[469.41 450 0],[469.54 285 0],[469.62 160 0],[471.62 280 1],[481.55 450 1],[492.41 360 1],[492.53 450 1],[499.35 285 0],[542.86 360 1],[543.28 650 1],[545.38 1000 1],[547.36 1000 1],[550.97 1000 1],[556.49 280 1],[560.61 1000 1],[564 450 1],[564.03 450 1],[564.7 280 1],[565.99 650 1],[566.47 450 1],[570.61 160 0],[581.92 450 1],[605.27 450 0],[628.64 280 1],[628.71 450 1],[630.55 450 1],[631.27 450 1],[638.49 280 1],[639.73 280 1],[639.8 280 1],[641.37 360 1],[674.36 160 0],[674.88 285 0],[675.72 450 0],[757.9 450 0],[762.98 450 0],[768.61 285 0],[769.67 450 0],[792.4 1000 0],[792.88 160 0],[793.03 285 0],[793.17 450 0],[796.74 450 0],[796.74 450 1],[831.47 450 0],[831.47 450 1],[858.56 450 0],[868.05 285 0],[869.47 450 0],[887.45 360 0],[888.25 110 0],[888.42 220 0],[903.59 160 0],[921.29 450 0],[922.81 450 0],[923.75 450 0],[941.35 285 0],[942.19 285 0],[943.71 285 0],[964.99 650 0],[967.23 450 0],[968.08 450 0],[969.37 450 0],[969.73 285 0],[973.97 285 0],[974.19 110 0],[993.23 285 0],[994.98 285 0],[995.89 285 0],[1045.55 285 0],[1045.68 70 0],[1045.95 285 0]}{ALLx1000x1000x1000x360x160x285x0}{UVx1000x1000x110x285x160x285x0}{VISx1000x450x1000x360x0x0x0}{IVx1000x1000x450x0x0x0x0}%
\pgfspectra@elt@search{#1}{Cl}{[28.733 30 4],[31.962 30 3],[33.184 20 3],[37.378 30 4],[39.015 40 4],[39.243 50 4],[40.627 10 2],[41.137 40 2],[41.181 40 2],[43.783 40 3],[46.486 40 3],[48.617 80 3],[53.473 80 3],[53.567 70 3],[53.615 60 3],[53.653 30 4],[53.701 40 4],[53.746 30 4],[53.761 90 3],[53.803 50 4],[53.812 60 3],[53.868 40 4],[54.223 80 4],[54.23 60 4],[54.287 40 4],[54.511 100 4],[54.633 60 4],[54.763 100 4],[54.922 50 3],[55.002 40 3],[55.202 70 3],[55.33 60 3],[55.462 70 3],[55.623 60 2],[55.661 70 2],[55.712 70 2],[55.9305 35 1],[56.153 70 2],[56.168 70 2],[56.174 70 2],[57.1904 40 1],[57.4406 80 1],[58.624 50 1],[60.15 50 3],[60.459 50 3],[60.635 50 2],[60.89 40 3],[61.207 40 3],[61.8057 70 1],[61.9982 60 1],[62.0298 80 1],[62.128 40 2],[62.6735 70 1],[63.319 40 4],[63.532 40 4],[63.5881 80 1],[63.6626 100 1],[65.0894 100 1],[65.37 40 3],[65.9811 100 1],[66.1841 130 1],[66.3074 200 1],[67.038 30 2],[67.313 30 2],[68.192 40 4],[68.2053 150 1],[68.317 40 4],[68.7656 150 1],[68.893 40 4],[69.3594 150 1],[72.5271 200 1],[72.8951 250 1],[74.521 40 3],[77.7562 200 1],[78.758 500 1],[78.874 500 1],[79.3342 500 1],[83.143 40 3],[83.484 50 3],[83.497 50 3],[83.9297 600 1],[83.9599 800 1],[84.081 40 3],[84.093 60 3],[84.141 700 1],[85.1691 500 1],[88.313 40 4],[88.8026 200 1],[89.3549 200 1],[89.434 40 4],[89.491 10 4],[93.628 10 2],[96.1499 200 1],[96.992 3 0],[97.321 50 3],[97.756 60 3],[97.79 40 3],[97.8284 4 0],[98.495 70 3],[98.575 40 3],[99.8372 2.5 0],[99.8432 2.5 0],[100.2346 7.5 0],[100.528 50 2],[100.878 60 2],[101.3664 15 0],[101.502 70 2],[102.5553 9 0],[106.3831 600 1],[106.7945 300 1],[107.1036 900 1],[107.1767 600 1],[107.523 500 1],[107.908 500 1],[108.4667 20 0],[108.5171 20 0],[108.5304 25 0],[108.806 40 0],[109.0271 35 0],[109.0982 25 0],[109.2437 25 0],[109.4769 40 0],[109.5148 35 0],[109.5662 35 0],[109.5797 40 0],[109.681 25 0],[109.7369 30 0],[109.8068 20 0],[109.9523 20 0],[110.7528 50 0],[113.9214 80 1],[116.7148 80 0],[117.9293 300 0],[118.8774 120 0],[120.1353 90 0],[133.5726 300 0],[134.724 1000 0],[135.1657 500 0],[136.3447 1200 0],[137.3116 250 0],[137.9528 2000 0],[138.9693 2500 0],[138.9957 2000 0],[139.6527 1200 0],[144.147 50 1],[152.8569 50 1],[153.721 30 3],[153.93 20 3],[154.2942 50 1],[154.519 20 3],[154.915 20 3],[155.8144 50 1],[156.505 50 1],[162.286 20 3],[182.25 60 2],[182.84 50 2],[185.7488 50 1],[190.161 50 2],[198.361 50 2],[199.737 45 1],[200.684 40 2],[203.2116 45 1],[208.8583 35 1],[209.1458 35 1],[225.307 70 2],[226.895 50 2],[227.834 50 2],[228.393 70 2],[232.35 60 2],[233.645 50 2],[234.064 60 2],[235.967 60 2],[237.037 60 2],[241.642 70 2],[242.779 17 1],[243.407 36 1],[244.714 60 2],[244.858 60 2],[248.691 50 2],[249.853 34 1],[250.274 47 1],[253.248 50 2],[254.696 26 1],[254.988 50 1],[256.484 46 1],[258.067 60 2],[260.331 32 1],[260.359 50 2],[263.267 50 2],[263.318 50 2],[265.872 95 1],[266.554 60 2],[267.695 75 1],[268.804 120 1],[270.136 40 3],[271.037 70 2],[272.403 50 3],[275.123 50 3],[277.064 40 3],[278.247 70 3],[283.54 40 3],[291.205 41 1],[296.556 60 2],[299.665 95 1],[300.606 50 1],[305.796 95 1],[306.313 50 3],[307.132 130 1],[307.668 60 3],[309.219 140 1],[310.446 60 2],[312.372 120 1],[313.934 80 2],[316.787 20 3],[319.145 90 2],[328.98 70 2],[331.543 190 1],[332.057 70 2],[332.906 80 2],[332.91 120 1],[334.042 90 2],[335.335 250 1],[339.289 80 2],[339.345 80 2],[353.003 90 2],[356.068 80 2],[360.21 90 2],[361.285 80 2],[362.269 70 2],[365.695 70 2],[367.028 70 2],[368.205 70 2],[370.545 60 2],[370.734 60 2],[372.045 80 2],[372.654 2 0],[374.881 80 2],[374.996 120 1],[377.935 50 2],[378.117 100 1],[379.876 150 1],[380.518 190 1],[380.946 130 1],[382.02 170 1],[382.759 280 1],[383.335 450 1],[384.32 250 1],[384.537 310 1],[384.565 390 1],[384.58 150 1],[385.099 1000 1],[385.137 790 1],[385.165 120 1],[386.083 2500 1],[386.099 440 1],[386.137 100 1],[391.387 150 1],[391.663 110 1],[392.587 50 2],[394.482 2 0],[399.15 70 2],[401.85 60 2],[405.907 60 2],[410.423 50 2],[410.479 2 0],[410.683 50 2],[413.25 1000 1],[420.967 6.5 0],[422.642 5 0],[426.458 6 0],[436.327 10 0],[436.95 10 0],[437.091 40 2],[437.293 500 1],[437.99 10 0],[438.975 10 0],[439.04 9 0],[440.303 9 0],[443.849 10 0],[447.53 9 0],[448.991 150 1],[452.619 10 0],[460.098 8 0],[460.821 50 2],[462.3938 4 0],[465.404 5 0],[466.1208 8 0],[469.1523 4.5 0],[470.314 30 2],[472.1255 4 0],[474.0729 4.5 0],[476.865 430 1],[478.132 1300 1],[479.455 9900 1],[481.006 2900 1],[481.947 1600 1],[486.375 10 2],[489.677 8100 1],[490.478 4700 1],[491.773 2600 1],[497.164 1 2],[499.548 1000 1],[507.826 2600 1],[509.9789 3 0],[521.794 5600 1],[522.136 2300 1],[539.212 1500 1],[542.323 9900 1],[542.351 1000 1],[544.337 1900 1],[544.421 1000 1],[545.702 560 1],[553.2162 4 0],[579.6305 5 0],[579.9914 4.5 0],[585.6742 3 0],[594.858 10 0],[601.9812 5 0],[608.261 3.5 0],[609.469 190 1],[611.443 16 0],[614.0245 20 0],[619.4757 16 0],[639.866 16 0],[643.4833 15 0],[653.143 15 0],[666.167 140 1],[667.843 15 0],[668.602 130 1],[671.341 120 1],[684.029 15 0],[693.2903 30 0],[698.1886 30 0],[708.6814 60 0],[725.662 750 0],[741.411 500 0],[746.237 55 0],[748.947 55 0],[749.2118 70 0],[754.7072 1100 0],[767.242 230 0],[770.2828 45 0],[771.7581 700 0],[774.497 1000 0],[776.916 220 0],[777.109 65 0],[782.136 220 0],[783.075 170 0],[787.822 300 0],[789.334 22 0],[789.931 230 0],[791.508 180 0],[792.4645 300 0],[793.389 210 0],[793.5012 170 0],[795.252 65 0],[797.472 150 0],[797.697 130 0],[798.06 60 0],[799.785 290 0],[801.561 220 0],[802.333 110 0],[805.107 40 0],[808.451 170 0],[808.556 220 0],[808.667 300 0],[808.773 130 0],[809.467 25 0],[819.442 250 0],[819.913 220 0],[820.021 220 0],[820.378 80 0],[821.204 1800 0],[822.045 300 0],[822.174 2000 0],[833.331 1800 0],[836.071 100 1],[836.184 56 1],[837.594 9990 0],[838.267 18 1],[839.202 10 1],[840.6199 40 0],[842.825 1500 0],[846.734 220 0],[855.044 220 0],[857.524 2000 0],[857.802 75 0],[858.597 7500 0],[862.854 45 0],[864.171 30 0],[868.626 350 0],[891.292 220 0],[894.806 300 0],[903.8982 200 0],[904.543 250 0],[906.9656 100 0],[907.317 200 0],[912.115 750 0],[919.1731 300 0],[919.7596 50 0],[928.886 400 0],[939.3862 150 0],[945.21 350 0],[948.6964 50 0],[958.4801 100 0],[959.222 350 0],[963.2509 25 0],[970.2439 100 0],[974.4426 25 0],[980.7057 20 0],[987.597 40 0],[1039.2549 33.1 0],[1043.283 3.8 1],[1050.662 1 1],[1050.912 1.4 1],[1051.246 1.9 1],[1051.417 2.5 1],[1080.147 0.9 1],[1088.542 0.5 1],[1095.571 0.1 1],[1112.305 30 0],[1139.262 23.1 0],[1140.969 26.9 0],[1143.633 100 0],[1172.056 18 0],[1186.676 19.5 0],[1202.17 17.2 0],[1324.38 35 0],[1329.6 31 0],[1334.68 55 0],[1382.17 52.5 0],[1436.97 14.8 0],[1493.17 29.4 0],[1510.8 26.9 0],[1546.51 38.1 0],[1546.76 16.9 0],[1552.03 109.4 0],[1573.01 148.7 0],[1581.84 19.3 0],[1586.97 278 0],[1588.33 27.7 0],[1592.89 34.2 0],[1596 73.5 0],[1597.05 28.3 0],[1607.76 12.9 0],[1619.85 25.9 0],[1937.0301 22.7 0],[1975.5301 71.7 0],[1976.6801 18.5 0],[2019.94 22.7 0],[2037.01 8.5 0],[2447 10 0]}{ALLx9990x9990x9900x90x90x100x0}{UVx2500x2500x900x90x90x100x0}{VISx9900x1100x9900x70x0x0x0}{IVx9990x9990x100x0x0x0x0}%
@@ -66,7 +66,7 @@
\pgfspectra@elt@search{#1}{As}{[60.07 25 4],[61.6 40 4],[71.55 120 4],[73.48 150 4],[73.72 60 4],[76.124 165 1],[80.283 165 1],[84.99 185 2],[86.63 185 2],[87.17 510 2],[88.9 325 2],[92.75 325 2],[93.72 325 2],[95.36 325 2],[96.38 325 2],[98.77 250 4],[102.196 340 1],[102.95 250 4],[105.16 40 4],[105.66 60 4],[108.235 340 1],[113.94 500 1],[114.931 615 1],[117.22 120 2],[118.151 555 1],[118.987 555 1],[119.638 615 1],[119.656 615 1],[120.744 340 1],[120.93 185 2],[121.117 800 1],[121.81 800 1],[122.315 340 1],[124.131 760 1],[124.308 965 1],[124.567 870 1],[125.858 800 1],[126.377 965 1],[126.634 800 1],[126.759 800 1],[128.099 715 1],[128.754 715 1],[130.57 715 1],[130.774 340 1],[133.315 760 1],[134.155 965 1],[135.593 760 1],[136.977 965 1],[137.365 800 1],[137.507 1000 1],[137.578 760 1],[139.464 800 1],[140.031 800 1],[144.859 500 1],[155.888 500 1],[157.099 500 1],[159.36 100 0],[166.055 500 1],[175.86 100 0],[180.615 170 0],[186.034 340 1],[189.042 1000 0],[191.294 500 1],[193.759 800 0],[197.262 585 0],[199.035 170 0],[199.113 100 0],[199.543 100 0],[200.334 230 0],[200.919 100 0],[201.332 100 0],[211.299 100 0],[214.408 100 0],[216.552 135 0],[225.31 150 3],[226.32 200 3],[228.812 350 0],[230.1 200 3],[234.984 350 0],[237.077 100 0],[238.118 135 0],[241.75 250 3],[244.61 150 3],[245.4 250 3],[245.653 170 0],[246.14 200 3],[260.2 340 1],[278.022 170 0],[283.0359 300 1],[283.1164 300 1],[286.044 100 0],[288.4406 300 1],[292.63 80 2],[295.9572 615 1],[298.2 185 2],[300.3819 300 1],[310.88 150 3],[311.6516 300 1],[384.26 340 1],[392.26 325 2],[403.72 185 2],[419.0082 715 1],[419.74 615 1],[424.2982 615 1],[431.5657 500 1],[432.3867 500 1],[433.664 500 1],[435.2145 500 1],[435.2864 425 1],[437.117 375 1],[442.7106 615 1],[443.1562 615 1],[445.8469 715 1],[446.1075 340 1],[446.6348 715 1],[447.446 500 1],[449.423 800 1],[450.7659 850 1],[453.974 615 1],[454.3483 715 1],[460.2427 615 1],[462.9787 340 1],[470.7586 340 1],[473.067 340 1],[488.8557 340 1],[506.898 100 0],[510.558 340 1],[510.755 500 1],[512.134 100 0],[514.163 100 0],[523.138 425 1],[533.123 500 1],[540.813 100 0],[545.132 135 0],[549.7727 340 1],[555.809 425 1],[565.132 425 1],[611.007 425 1],[617.027 500 1],[651.174 300 1],[709.227 300 1],[710.272 300 1],[799.053 340 1],[817.451 300 1],[842.891 100 0],[856.471 100 0],[865.414 100 0],[882.173 135 0],[886.966 100 0],[926.728 135 0],[930.061 200 0],[959.795 230 0],[962.67 290 0],[983.376 230 0],[988.605 100 0],[990.055 140 0],[991.571 170 0],[992.305 290 0],[1001.063 100 0],[1002.404 290 0],[1045.309 100 0],[1057.502 100 0],[1061.407 170 0]}{ALLx1000x1000x1000x510x250x250x0}{UVx1000x1000x1000x510x250x250x0}{VISx850x135x850x325x0x0x0}{IVx340x290x340x0x0x0x0}%
\pgfspectra@elt@search{#1}{Se}{[59.6 285 4],[60.1 285 4],[60.87 220 4],[61.3 360 4],[61.43 285 4],[63.6 285 3],[65.27 360 3],[65.42 285 3],[67.01 450 3],[67.19 285 3],[70.92 220 2],[70.94 220 2],[72.06 220 2],[72.28 220 3],[72.43 360 2],[72.64 285 2],[73.46 285 3],[73.72 220 2],[74.19 220 2],[74.64 450 3],[75.9 285 3],[75.91 450 4],[77.65 285 3],[77.73 285 2],[78.58 285 4],[79.08 220 2],[80.38 285 3],[80.43 285 4],[80.87 360 4],[81.48 220 4],[82.07 220 4],[82.85 285 1],[83.03 360 4],[83.27 360 1],[83.95 450 4],[84.3 360 2],[84.58 360 4],[87.92 220 2],[90.66 285 1],[91.29 360 1],[95.37 285 2],[95.44 220 2],[95.47 220 2],[95.96 360 3],[97.41 160 2],[97.48 360 2],[99.67 450 3],[101.34 360 1],[101.4 360 1],[103.36 450 1],[104.96 450 1],[105.74 360 1],[107.98 285 2],[109.47 360 4],[109.78 285 1],[109.91 360 2],[111.92 450 2],[114.19 360 1],[115.1 220 4],[115.6 220 1],[115.69 285 1],[116.85 285 1],[119.23 450 1],[120.57 220 1],[122.76 450 4],[123.49 220 1],[129.1 285 1],[130.72 220 3],[130.89 285 1],[131.44 285 3],[140.54 100 0],[140.64 100 0],[140.66 100 0],[143.53 120 0],[143.58 120 0],[144.48 100 0],[144.68 100 0],[144.7 100 0],[144.92 150 0],[145.63 120 0],[150.09 150 0],[153.04 250 0],[153.13 150 0],[153.18 200 0],[154.71 120 0],[156.03 120 0],[157.53 150 0],[157.76 150 0],[157.79 150 0],[157.95 150 0],[158 200 0],[158.75 150 0],[159.32 150 0],[160.65 250 0],[161.07 100 0],[161.13 100 0],[161.74 200 0],[162.12 150 0],[162.27 100 0],[162.62 120 0],[164.34 150 0],[167.12 250 0],[167.53 250 0],[169.07 250 0],[179.33 250 0],[179.53 300 0],[185.52 300 0],[185.88 250 0],[189.86 400 0],[191.38 350 0],[191.92 300 0],[196.09 500 0],[199.51 150 0],[203.98 500 0],[205.75 285 2],[207.48 500 0],[209 220 3],[213.66 285 3],[216.42 500 0],[216.52 160 3],[216.66 160 3],[233.28 150 0],[241.35 600 0],[254.8 300 0],[266.55 360 3],[272.43 285 3],[276.72 285 2],[277.38 220 2],[295.16 160 3],[303.87 220 1],[304.13 220 1],[337.98 285 2],[338.72 450 2],[341.39 450 2],[342.84 285 2],[345.78 450 2],[354.36 360 2],[357.02 285 2],[363.76 450 2],[371.17 360 2],[373.87 450 2],[374.3 285 2],[380.09 450 2],[404.67 360 2],[407.02 285 1],[408.32 220 2],[416.91 450 2],[417.53 360 1],[418.09 450 1],[432.87 120 0],[433.03 100 0],[438.29 285 1],[444.6 285 1],[444.92 220 1],[446.76 285 1],[463.79 220 2],[473.08 500 0],[473.9 400 0],[474.22 300 0],[484.06 285 1],[484.5 360 1],[522.75 450 1],[530.54 360 1],[536.55 100 0],[536.99 120 0],[537.41 110 0],[552.24 285 1],[556.69 285 1],[586.63 285 1],[605.6 450 1],[630.38 285 2],[632.56 200 0],[644.42 360 1],[649.05 285 1],[653.5 285 1],[683.13 150 0],[699.069 120 0],[699.1792 100 0],[701.0809 200 0],[701.3875 150 0],[706.2065 300 0],[757.51 200 0],[758.34 250 0],[759.22 150 0],[760.68 120 0],[800.1 300 0],[803.64 200 0],[806.09 120 0],[806.53 120 0],[808.11 120 0],[809.32 150 0],[809.47 150 0],[814.93 180 0],[815.2 150 0],[815.77 200 0],[816.31 180 0],[818.29 150 0],[818.5 100 0],[819.46 120 0],[844.047 150 0],[845.038 150 0],[874.233 150 0],[891.886 300 0],[896.969 100 0],[900.197 200 0],[903.861 200 0],[908.314 80 0],[908.879 120 0],[914.083 80 0],[918.188 60 0],[927.112 60 0],[943.25 100 0],[982.558 60 0],[1021.725 200 0],[1030.745 377 0],[1032.726 900 0],[1038.636 640 0],[1065.03 124 0],[1193.456 125 0],[1194.687 275 0],[1194.792 100 0],[1195.227 105 0],[1195.264 170 0],[1196.604 100 0],[1197.293 205 0],[1197.307 115 0],[1481.793 315 0],[1491.747 410 0],[1515.144 500 0],[1546.906 115 0],[1547.1 320 0],[1552.097 265 0],[1561.84 395 0],[1562.038 115 0],[1665.9439 360 0],[1681.3779 505 0],[1681.776 165 0],[1686.6539 205 0],[1697.2711 115 0],[2137.424 235 0],[2144.2561 680 0],[2147.348 415 0],[2171.6359 270 0],[2173.06 240 0],[2313.366 105 0],[2338.885 150 0],[2362.817 110 0],[2414.818 265 0],[2415.923 170 0],[2420.4439 185 0],[2438.599 375 0],[2441.367 160 0],[2447.117 225 0],[2501.751 255 0],[2512.743 510 0]}{ALLx900x900x450x450x450x450x0}{UVx600x600x450x450x450x450x0}{VISx500x500x450x450x0x0x0}{IVx900x900x0x0x0x0x0}%
\pgfspectra@elt@search{#1}{Br}{[37.973 70 3],[40.037 70 3],[46.837 60 4],[48.211 80 4],[53.197 90 4],[54.543 100 3],[54.79 100 4],[54.977 70 4],[55.976 100 3],[56.919 100 3],[57.659 100 3],[58.51 100 3],[58.671 100 3],[59.751 100 3],[60.009 100 3],[60.127 100 3],[60.703 100 3],[61.11 45 2],[61.785 100 3],[61.987 100 3],[62.04 30 2],[62.103 80 4],[63.014 100 3],[63.222 80 4],[64.223 100 3],[64.544 70 4],[65.264 40 4],[65.754 80 4],[66.153 100 3],[66.554 50 2],[67.719 50 2],[67.78 30 2],[67.962 80 4],[68.351 100 3],[68.768 45 2],[69.02 40 2],[69.699 35 2],[69.772 100 3],[71.168 30 1],[71.539 100 3],[72.7 30 2],[73.1 100 3],[73.64 30 2],[76.963 25 2],[80.012 100 3],[81.295 70 4],[81.366 100 3],[81.548 25 1],[81.779 25 2],[85.081 100 4],[85.527 15 4],[85.619 35 1],[88.923 100 1],[89.664 50 1],[90.599 50 1],[92.256 30 1],[94.897 100 1],[94.9 35 2],[96.04 40 2],[98.49 45 2],[98.493 50 1],[101.21 50 1],[101.554 100 1],[103.702 50 1],[104.16 60 4],[104.9 100 1],[106.476 45 1],[106.915 100 4],[107.187 50 1],[108.054 50 4],[110.15 25 0],[111.213 90 4],[113.459 30 0],[113.629 25 0],[114.356 100 4],[117.723 25 0],[117.89 40 0],[118.928 100 0],[118.938 25 0],[118.95 100 0],[119.837 50 0],[120.976 80 0],[121.073 100 0],[121.601 75 0],[122.113 100 0],[122.187 90 0],[122.324 100 0],[122.441 120 0],[122.69 120 0],[122.805 75 0],[123.243 750 0],[124.39 120 0],[124.959 80 0],[125.166 150 0],[125.58 100 0],[125.92 150 0],[126.166 120 0],[126.62 120 0],[127.482 90 3],[127.948 100 0],[128.626 100 0],[130.991 300 0],[131.35 25 2],[131.674 300 0],[131.737 100 0],[131.77 200 0],[138.46 1200 0],[140.29 25 2],[142.975 15 4],[144.26 40 4],[144.99 300 0],[147.035 15 4],[148.845 5000 0],[153.174 3000 0],[154.065 2500 0],[157.484 3000 0],[157.639 2000 0],[158.231 2500 0],[163.34 7500 0],[170.351 100 3],[213.379 100 3],[214.502 100 3],[225.721 100 3],[227.273 100 3],[228.517 35 1],[228.76 35 1],[229.344 40 2],[230.74 100 3],[231.329 30 2],[231.73 50 1],[233.693 40 1],[238.645 35 1],[238.67 50 1],[238.869 30 1],[238.896 45 1],[238.969 50 1],[239.221 35 1],[239.242 40 1],[240.816 100 3],[241.158 100 3],[246.239 30 2],[248.26 30 2],[248.85 30 1],[249.114 70 3],[249.522 30 1],[249.925 35 2],[252.17 45 1],[252.949 35 2],[254.148 40 1],[255.109 35 2],[255.692 40 1],[257.083 35 2],[257.317 30 2],[258.119 100 3],[258.499 40 2],[258.914 50 2],[259.448 30 2],[259.598 40 2],[260.62 45 2],[260.815 35 2],[261.313 50 2],[261.626 35 2],[262.652 50 2],[262.923 35 2],[263.96 35 2],[266.14 60 3],[267.153 35 2],[269.017 35 1],[271.377 40 1],[273.583 35 2],[274.652 35 1],[277.05 30 2],[278.528 30 2],[280.416 30 2],[280.755 30 1],[282.087 70 3],[284.288 100 3],[289.34 40 1],[290.771 110 3],[291.718 40 1],[292.696 40 2],[293.622 30 2],[296.721 40 1],[296.9 35 2],[297.226 50 1],[298.186 30 1],[298.587 30 1],[298.653 30 1],[299.404 40 2],[301.648 30 1],[302.076 50 2],[303.363 30 2],[303.645 35 2],[304.118 50 3],[307.442 50 2],[309.194 35 2],[311.729 35 2],[314.781 30 2],[317.408 40 2],[332.108 30 2],[333.307 45 2],[334.964 50 2],[338.056 50 3],[338.525 30 2],[342.382 35 1],[344.736 45 2],[348.758 40 2],[350.647 30 2],[351.736 45 2],[354.016 50 2],[355.108 30 2],[356.243 50 2],[360.071 45 2],[360.68 30 1],[369.353 25 2],[371.43 35 1],[381.565 120 0],[382.026 45 2],[383.469 35 1],[387.121 30 1],[389.163 40 1],[390.124 30 1],[390.395 20 2],[391.42 30 1],[391.438 50 1],[391.951 35 1],[392.409 40 1],[392.955 30 1],[393.969 35 1],[395.061 35 1],[398.038 50 1],[399.236 150 0],[402.404 30 1],[413.566 30 1],[414.02 30 1],[417.963 40 1],[419.345 30 1],[422.389 100 1],[423.689 30 1],[429.139 30 1],[436.514 200 0],[436.56 100 1],[442.514 150 0],[444.174 1000 0],[447.261 1000 0],[447.772 2000 0],[449.042 100 0],[450.655 35 2],[451.344 300 0],[451.974 20 2],[452.559 1500 0],[452.96 30 1],[454.292 50 1],[457.574 300 0],[460.136 30 1],[461.458 250 0],[462.27 35 1],[464.202 30 1],[465.198 30 1],[467.87 50 1],[469.317 40 1],[470.485 50 1],[471.976 35 1],[472.036 40 1],[472.82 30 1],[473.541 30 1],[474.264 40 1],[475.228 250 0],[476.6 35 1],[477.94 40 1],[478.031 400 0],[478.519 160 0],[478.55 50 1],[480.233 30 1],[481.67 50 1],[481.846 30 1],[484.481 35 1],[484.875 35 1],[492.112 40 1],[492.879 40 1],[493.066 45 1],[494.551 30 1],[497.976 400 0],[503.874 30 1],[505.464 30 1],[516.438 40 1],[517.587 15 2],[518.001 30 1],[518.235 50 1],[519.39 30 1],[523.823 50 1],[527.268 30 1],[530.41 35 1],[533.057 40 1],[533.205 50 1],[539.548 120 0],[542.278 40 1],[542.499 35 1],[543.507 30 1],[544.68 10 2],[546.622 120 0],[547.847 35 1],[548.879 30 1],[549.506 30 1],[550.669 50 1],[558.994 35 1],[571.871 30 1],[583.078 30 1],[585.208 180 0],[594.048 160 0],[612.214 240 0],[614.86 4000 0],[616.174 30 1],[617.739 200 0],[633.548 150 0],[635.073 6000 0],[635.294 40 1],[641.032 250 0],[648.356 180 0],[651.462 100 0],[654.457 2000 0],[654.809 150 0],[655.98 5000 0],[657.131 100 0],[657.914 180 0],[658.217 2000 0],[662.047 150 0],[663.162 5000 0],[668.228 2000 0],[669.213 1000 0],[672.828 800 0],[676.006 200 0],[677.948 200 0],[678.674 220 0],[679.004 650 0],[679.148 160 0],[686.115 180 0],[700.519 1000 0],[719.28 10 2],[726.045 200 0],[734.851 1000 0],[751.296 4000 0],[759.161 160 0],[759.507 180 0],[761.641 200 0],[767.31 10 2],[780.302 3000 0],[782.723 120 0],[788.145 250 0],[788.157 250 0],[792.581 250 0],[793.868 3000 0],[794.794 300 0],[795.018 300 0],[797.844 800 0],[797.857 1000 0],[798.994 3000 0],[802.635 200 0],[802.654 250 0],[813.152 3000 0],[815.265 100 0],[815.375 1000 0],[815.4 2500 0],[824.686 500 0],[826.496 1500 0],[827.244 7500 0],[833.47 2000 0],[834.37 1000 0],[838.404 120 0],[844.655 4000 0],[847.745 400 0],[851.338 150 0],[855.773 100 0],[856.628 100 0],[863.866 2000 0],[869.853 400 0],[879.347 1000 0],[881.996 1500 0],[882.522 2500 0],[888.898 400 0],[889.762 3000 0],[893.24 600 0],[894.939 180 0],[896.4 900 0],[902.442 35 1],[916.606 3000 0],[917.363 1500 0],[917.816 2000 0],[926.542 4000 0],[932.086 1500 0],[943.404 30 1],[979.348 600 0],[989.64 1000 0],[1014.008 300 0],[1023.774 600 0],[1029.962 100 0],[1037.765 150 0],[1045.796 3000 0],[1074.214 100 0],[1075.592 300 0],[1321.717 170 0],[1435.457 180 0],[1488.87 125 0],[1673.1189 180 0],[1856.8311 120 0],[1973.3619 350 0],[2028.173 100 0],[2062.467 100 0],[2178.724 120 0],[2286.565 400 0],[2351.315 100 0],[2834.65 50 0],[3038.085 50 0],[3163.0131 60 0],[3269.39 12 0],[3418.1871 15 0],[3834.575 15 0],[3996.4359 12 0]}{ALLx7500x7500x100x50x110x100x0}{UVx7500x7500x100x50x110x100x0}{VISx6000x6000x100x45x0x0x0}{IVx7500x7500x35x0x0x0x0}%
-\pgfspectra@elt@search{#1}{Kr}{[46.735 30 2],[47.216 150 4],[48.439 100 4],[49.625 250 4],[50.077 120 4],[50.72 200 4],[54.086 30 2],[54.804 60 4],[56.564 30 2],[56.916 30 2],[57.198 30 2],[57.983 30 2],[58.514 30 2],[58.596 30 2],[59.37 30 2],[59.41 30 2],[59.641 30 2],[60.017 40 2],[60.367 30 2],[60.586 50 2],[60.647 35 2],[61.112 50 2],[61.672 35 2],[62.145 40 2],[62.28 45 2],[62.502 50 2],[62.576 30 2],[62.859 45 2],[63.004 50 2],[63.309 35 2],[63.787 120 4],[63.998 50 2],[64.641 60 2],[65.12 50 2],[65.972 50 2],[66.486 30 2],[67.234 40 2],[67.285 35 2],[67.657 35 2],[68.013 35 2],[68.368 35 2],[68.625 45 2],[68.798 45 2],[69.193 45 2],[69.561 50 2],[69.805 30 2],[70.836 50 2],[70.885 600 4],[71.4 50 2],[72.204 100 2],[72.94 60 1],[74.67 30 2],[76.118 200 1],[76.398 100 1],[76.62 60 1],[77.103 200 1],[77.369 60 1],[78.21 200 1],[78.372 100 1],[78.597 60 2],[80.576 7 3],[81.682 18 3],[81.815 60 1],[83.038 60 1],[83.766 50 2],[84.204 22 3],[84.406 100 1],[85.473 50 2],[86.258 60 2],[86.482 60 1],[86.887 60 1],[87.084 40 2],[87.608 50 2],[88.414 200 1],[88.63 1000 1],[89.101 400 1],[89.781 75 2],[91.139 200 1],[91.743 2000 1],[94.544 50 0],[94.654 50 0],[95.106 20 0],[95.34 50 0],[96.337 50 0],[96.497 2000 1],[98.729 50 2],[100.106 100 0],[100.355 100 0],[103.002 100 0],[115.874 30 2],[116.487 200 0],[123.584 650 0],[163.882 6 2],[191.409 6 2],[223.734 3 3],[229.126 6 3],[232.93 3 3],[233.675 4 3],[234.827 4 3],[235.85 3 3],[238.805 3 3],[239.394 40 2],[241.69 4 3],[242.804 3 3],[244.268 5 3],[245.17 4 3],[245.974 6 3],[246.477 100 1],[247.406 5 3],[249.248 60 1],[249.401 40 2],[251.7 4 3],[251.802 5 3],[251.938 6 3],[252.45 5 3],[254.6 5 3],[254.7 6 3],[255.808 4 3],[256.325 30 2],[258.69 3 3],[260.617 5 3],[260.95 10 3],[261.53 8 3],[262.111 7 3],[263.976 60 2],[268.032 30 2],[268.119 40 2],[271.24 80 1],[273.055 3 3],[274.818 8 3],[277.47 6 3],[282.96 3 3],[283.3 100 1],[283.608 3 3],[284.1 30 2],[285.116 30 2],[285.3 5 3],[285.93 3 3],[287.061 50 2],[289.218 100 2],[290.917 30 2],[295.256 50 2],[299.222 60 2],[302.23 50 2],[302.445 80 2],[304.693 50 2],[305.672 30 2],[306.313 60 2],[309.716 40 2],[311.225 60 2],[312.061 30 2],[312.439 100 2],[314.135 60 2],[314.201 3 3],[318.911 100 2],[319.121 80 2],[322.499 6 3],[323.952 40 2],[324.044 40 2],[324.569 300 2],[326.17 3 3],[326.481 150 2],[326.848 100 2],[327.165 30 2],[328.589 30 2],[330.475 30 2],[331.147 50 2],[332.575 200 2],[333.076 60 2],[334.248 50 2],[335.193 100 2],[337.496 40 2],[343.946 100 2],[347.465 70 2],[348.859 100 2],[350.742 200 2],[356.423 100 2],[360.788 100 1],[363.1889 200 1],[364.134 30 2],[365.3928 250 1],[366.5324 80 0],[366.901 150 1],[367.9559 100 0],[368.6182 80 1],[369.065 30 2],[371.802 300 1],[371.8595 200 1],[372.135 150 1],[374.1638 200 1],[374.48 150 1],[375.4245 80 1],[377.8089 500 1],[378.3095 500 1],[380.93 3 3],[386.058 5 3],[386.87 40 2],[387.544 150 1],[390.6177 150 1],[392.0081 200 1],[393.429 5 3],[399.484 100 1],[399.7793 100 1],[405.7037 300 1],[406.5128 300 1],[406.737 50 2],[408.8337 500 1],[409.8729 250 1],[410.9248 100 1],[413.133 40 2],[414.5122 250 1],[415.446 40 2],[425.058 150 1],[427.3969 1000 0],[428.2967 100 0],[429.2923 600 1],[430.049 200 1],[431.781 500 1],[431.8551 400 0],[431.9579 1000 0],[432.298 150 1],[435.1359 100 0],[435.5477 3000 1],[436.2641 500 0],[436.969 200 1],[437.6121 800 0],[438.654 300 1],[439.9965 200 0],[442.5189 100 0],[443.1685 500 1],[443.6812 600 1],[445.3917 600 0],[446.3689 800 0],[447.5014 800 1],[448.988 400 1],[450.2353 600 0],[452.314 400 1],[455.661 200 1],[457.7209 800 1],[458.2978 300 1],[459.28 150 1],[461.5292 500 1],[461.9166 1000 1],[463.3885 800 1],[465.8876 2000 1],[468.0406 500 1],[469.1301 100 1],[469.436 200 1],[473.9002 3000 1],[476.2435 300 1],[476.5744 1000 1],[481.176 300 1],[482.518 300 1],[483.2077 800 1],[484.6612 700 1],[485.72 150 1],[494.559 300 1],[501.645 20 2],[502.24 200 1],[508.652 250 1],[512.573 400 1],[520.832 500 1],[530.866 200 1],[533.341 500 1],[546.817 200 1],[550.143 10 2],[556.2224 500 0],[557.0288 2000 0],[558.0386 80 0],[564.9561 100 0],[568.189 400 1],[569.035 200 1],[583.2855 100 0],[587.0914 3000 0],[599.222 200 1],[599.3849 60 0],[603.717 10 2],[605.6125 60 0],[607.838 10 2],[631.022 10 2],[642.018 300 1],[642.1026 100 0],[645.6288 200 0],[657.007 150 1],[669.9228 60 0],[690.4678 100 0],[721.313 250 1],[722.4104 100 0],[728.7258 80 0],[728.978 400 1],[740.702 400 1],[742.5541 60 0],[743.578 200 1],[748.6862 100 0],[752.446 300 1],[758.7411 1000 0],[760.1544 2000 0],[764.116 150 1],[768.5244 1000 0],[769.4538 1200 0],[773.569 250 1],[774.6827 150 0],[785.4821 800 0],[791.3423 200 0],[792.8597 180 0],[793.322 200 1],[797.362 120 1],[798.2401 100 0],[805.9503 1500 0],[810.4364 4000 0],[811.2899 6000 0],[813.2967 60 0],[819.0054 3000 0],[820.272 200 1],[821.8365 80 0],[826.324 3000 0],[827.2353 100 0],[828.105 1500 0],[829.8107 5000 0],[841.243 100 0],[850.887 3000 0],[876.411 150 0],[877.6748 6000 0],[892.8692 2000 0],[923.848 500 1],[929.382 500 1],[932.099 200 1],[936.195 300 1],[936.2082 100 0],[940.282 200 1],[947.093 200 1],[957.752 500 1],[960.58 500 1],[961.961 400 1],[966.334 200 1],[971.16 200 1],[975.1758 2000 0],[980.314 500 1],[985.6314 500 0],[1022.146 1000 1],[1118.7108 100 0],[1125.7711 200 0],[1125.9126 150 0],[1145.7481 500 0],[1179.2425 150 0],[1181.9377 1500 0],[1199.7105 600 0],[1207.7224 160 0],[1286.1892 100 0],[1317.7412 1100 0],[1362.2415 1000 0],[1363.422 2400 0],[1365.8394 800 0],[1371.1036 200 0],[1373.8851 600 0],[1397.4027 150 0],[1404.5657 550 0],[1410.4298 140 0],[1440.222 180 0],[1442.6793 2000 0],[1451.784 100 0],[1473.4436 1600 0],[1476.2672 550 0],[1476.5472 450 0],[1496.1894 400 0],[1500.5307 120 0],[1520.9526 140 0],[1523.9615 1700 0],[1532.648 130 0],[1533.4958 1500 0],[1537.2037 700 0],[1547.4026 200 0],[1568.102 180 0],[1582.009 120 0],[1672.6514 200 0],[1678.5129 2000 0],[1685.3488 1000 0],[1689.0441 2400 0],[1689.6754 1600 0],[1693.5807 1800 0],[1709.8771 600 0],[1736.7605 700 0],[1740.4443 120 0],[1761.6854 150 0],[1784.2736 650 0],[1800.2229 700 0],[1816.7314 2600 0],[1839.9785 100 0],[1858.0896 150 0],[1869.6295 300 0],[1878.5461 170 0],[1879.7703 200 0],[2020.9879 140 0],[2042.3965 300 0],[2044.6971 140 0],[2116.5471 600 0],[2190.2514 1800 0],[2248.5775 120 0],[2334.0416 180 0],[2426.0506 120 0],[2429.2221 180 0],[2523.382 600 0],[2861.0551 180 0],[2865.5721 1000 0],[2876.9711 150 0],[2882.249 140 0],[2923.6689 300 0],[3066.3539 300 0],[3097.916 300 0],[3930.0602 500 0],[3948.652 1100 0],[3955.725 220 0],[3957.2602 100 0],[3958.8398 1400 0],[3958.9602 1100 0],[3995.4801 500 0],[3996.6602 300 0],[4030.6102 1300 0],[4068.516 250 0]}{ALLx6000x6000x3000x300x22x600x0}{UVx2000x650x2000x300x22x600x0}{VISx3000x3000x3000x50x5x0x0}{IVx6000x6000x1000x0x0x0x0}%
+\pgfspectra@elt@search{#1}{Kr}{[46.735 30 2],[47.216 150 4],[48.439 100 4],[49.625 250 4],[50.077 120 4],[50.72 200 4],[54.086 30 2],[54.804 60 4],[56.564 30 2],[56.916 30 2],[57.198 30 2],[57.983 30 2],[58.514 30 2],[58.596 30 2],[59.37 30 2],[59.41 30 2],[59.641 30 2],[60.017 40 2],[60.367 30 2],[60.586 50 2],[60.647 35 2],[61.112 50 2],[61.672 35 2],[62.145 40 2],[62.28 45 2],[62.502 50 2],[62.576 30 2],[62.859 45 2],[63.004 50 2],[63.309 35 2],[63.787 120 4],[63.998 50 2],[64.641 60 2],[65.12 50 2],[65.972 50 2],[66.486 30 2],[67.234 40 2],[67.285 35 2],[67.657 35 2],[68.013 35 2],[68.368 35 2],[68.625 45 2],[68.798 45 2],[69.193 45 2],[69.561 50 2],[69.805 30 2],[70.836 50 2],[70.885 600 4],[71.4 50 2],[72.204 100 2],[72.94 60 1],[74.67 30 2],[76.118 200 1],[76.398 100 1],[76.62 60 1],[77.103 200 1],[77.369 60 1],[78.21 200 1],[78.372 100 1],[78.597 60 2],[80.576 7 3],[81.682 18 3],[81.815 60 1],[83.038 60 1],[83.766 50 2],[84.204 22 3],[84.406 100 1],[85.473 50 2],[86.258 60 2],[86.482 60 1],[86.887 60 1],[87.084 40 2],[87.608 50 2],[88.414 200 1],[88.63 1000 1],[89.101 400 1],[89.781 75 2],[91.139 200 1],[91.743 2000 1],[94.544 50 0],[94.654 50 0],[95.106 20 0],[95.34 50 0],[96.337 50 0],[96.497 2000 1],[98.729 50 2],[100.106 100 0],[100.355 100 0],[103.002 100 0],[115.874 30 2],[116.487 200 0],[123.584 650 0],[163.882 6 2],[191.409 6 2],[223.734 3 3],[229.126 6 3],[232.93 3 3],[233.675 4 3],[234.827 4 3],[235.85 3 3],[238.805 3 3],[239.394 40 2],[241.69 4 3],[242.804 3 3],[244.268 5 3],[245.17 4 3],[245.974 6 3],[246.477 100 1],[247.406 5 3],[249.248 60 1],[249.401 40 2],[251.7 4 3],[251.802 5 3],[251.938 6 3],[252.45 5 3],[254.6 5 3],[254.7 6 3],[255.808 4 3],[256.325 30 2],[258.69 3 3],[260.617 5 3],[260.95 10 3],[261.53 8 3],[262.111 7 3],[263.976 60 2],[268.032 30 2],[268.119 40 2],[271.24 80 1],[273.055 3 3],[274.818 8 3],[277.47 6 3],[282.96 3 3],[283.3 100 1],[283.608 3 3],[284.1 30 2],[285.116 30 2],[285.3 5 3],[285.93 3 3],[287.061 50 2],[289.218 100 2],[290.917 30 2],[295.256 50 2],[299.222 60 2],[302.23 50 2],[302.445 80 2],[304.693 50 2],[305.672 30 2],[306.313 60 2],[309.716 40 2],[311.225 60 2],[312.061 30 2],[312.439 100 2],[314.135 60 2],[314.201 3 3],[318.911 100 2],[319.121 80 2],[322.499 6 3],[323.952 40 2],[324.044 40 2],[324.569 300 2],[326.17 3 3],[326.481 150 2],[326.848 100 2],[327.165 30 2],[328.589 30 2],[330.475 30 2],[331.147 50 2],[332.575 200 2],[333.076 60 2],[334.248 50 2],[335.193 100 2],[337.496 40 2],[343.946 100 2],[347.465 70 2],[348.859 100 2],[350.742 200 2],[356.423 100 2],[360.788 100 1],[363.1889 200 1],[364.134 30 2],[365.3928 250 1],[366.5324 80 0],[366.901 150 1],[367.9559 100 0],[368.6182 80 1],[369.065 30 2],[371.802 300 1],[371.8595 200 1],[372.135 150 1],[374.1638 200 1],[374.48 150 1],[375.4245 80 1],[377.8089 500 1],[378.3095 500 1],[380.93 3 3],[386.058 5 3],[386.87 40 2],[387.544 150 1],[390.6177 150 1],[392.0081 200 1],[393.429 5 3],[399.484 100 1],[399.7793 100 1],[405.7037 300 1],[406.5128 300 1],[406.737 50 2],[408.8337 500 1],[409.8729 250 1],[410.9248 100 1],[413.133 40 2],[414.5122 250 1],[415.446 40 2],[425.058 150 1],[427.3969 1000 0],[428.2967 100 0],[429.2923 600 1],[430.049 200 1],[431.781 500 1],[431.8551 400 0],[431.9579 1000 0],[432.298 150 1],[435.1359 100 0],[435.5477 3000 1],[436.2641 500 0],[436.969 200 1],[437.6121 800 0],[438.654 300 1],[439.9965 200 0],[442.5189 100 0],[443.1685 500 1],[443.6812 600 1],[445.3917 600 0],[446.3689 800 0],[447.5014 800 1],[448.988 400 1],[450.2353 600 0],[452.314 400 1],[455.661 200 1],[457.7209 800 1],[458.2978 300 1],[459.28 150 1],[461.5292 500 1],[461.9166 1000 1],[463.3885 800 1],[465.8876 2000 1],[468.0406 500 1],[469.1301 100 1],[469.436 200 1],[473.9002 3000 1],[476.2435 300 1],[476.5744 1000 1],[481.176 300 1],[482.518 300 1],[483.2077 800 1],[484.6612 700 1],[485.72 150 1],[494.559 300 1],[501.645 20 2],[502.24 200 1],[508.652 250 1],[512.573 400 1],[520.832 500 1],[530.866 200 1],[533.341 500 1],[546.817 200 1],[550.143 10 2],[556.2224 500 0],[557.0288 2000 0],[558.0386 80 0],[564.9561 100 0],[568.189 400 1],[569.035 200 1],[583.2855 100 0],[587.0914 3000 0],[599.222 200 1],[599.3849 60 0],[603.717 10 2],[605.6125 60 0],[607.838 10 2],[631.022 10 2],[642.018 300 1],[642.1026 100 0],[645.6288 200 0],[657.007 150 1],[669.9228 60 0],[690.4678 100 0],[721.313 250 1],[722.4104 100 0],[728.7258 80 0],[728.978 400 1],[740.702 400 1],[742.5541 60 0],[743.578 200 1],[748.6862 100 0],[752.446 300 1],[758.7411 1000 0],[760.1544 2000 0],[764.116 150 1],[768.5244 1000 0],[769.4538 1200 0],[773.569 250 1],[774.6827 150 0],[785.4821 800 0],[791.3423 200 0],[792.8597 180 0],[793.322 200 1],[797.362 120 1],[798.2401 100 0],[805.9503 1500 0],[810.4364 4000 0],[811.2899 6000 0],[813.2967 60 0],[819.0054 3000 0],[820.272 200 1],[821.8365 80 0],[826.324 3000 0],[827.2353 100 0],[828.105 1500 0],[829.8107 5000 0],[841.243 100 0],[850.887 3000 0],[876.411 150 0],[877.6748 6000 0],[892.8692 2000 0],[923.848 500 1],[929.382 500 1],[932.099 200 1],[936.195 300 1],[936.2082 100 0],[940.282 200 1],[947.093 200 1],[957.752 500 1],[960.58 500 1],[961.961 400 1],[966.334 200 1],[971.16 200 1],[975.1758 2000 0],[980.314 500 1],[985.6314 500 0],[1022.146 1000 1],[1118.7108 100 0],[1125.7711 200 0],[1125.9126 150 0],[1145.7481 500 0],[1179.2425 150 0],[1181.9377 1500 0],[1199.7105 600 0],[1207.7224 160 0],[1286.1892 100 0],[1317.7412 1100 0],[1362.2415 1000 0],[1363.422 2400 0],[1365.8394 800 0],[1371.1036 200 0],[1373.8851 600 0],[1397.4027 150 0],[1404.5657 550 0],[1410.4298 140 0],[1440.222 180 0],[1442.6793 2000 0],[1451.784 100 0],[1473.4436 1600 0],[1476.2672 550 0],[1476.5472 450 0],[1496.1894 400 0],[1500.5307 120 0],[1520.9526 140 0],[1523.9615 1700 0],[1532.648 130 0],[1533.4958 1500 0],[1537.2037 700 0],[1547.4026 200 0],[1568.102 180 0],[1582.009 120 0],[1672.6514 200 0],[1678.5129 2000 0],[1685.3488 1000 0],[1689.0441 2400 0],[1689.6754 1600 0],[1693.5807 1800 0],[1709.8771 600 0],[1736.7605 700 0],[1740.4443 120 0],[1761.6854 150 0],[1784.2736 650 0],[1800.2229 700 0],[1816.7314 2600 0],[1839.9785 100 0],[1858.0896 150 0],[1869.6295 300 0],[1878.5461 170 0],[1879.7703 200 0],[2020.9879 140 0],[2042.3965 300 0],[2044.6971 140 0],[2116.5471 600 0],[2190.2514 1800 0],[2248.5775 120 0],[2334.0416 180 0],[2426.0506 120 0],[2429.2221 180 0],[2523.382 600 0],[2861.0551 180 0],[2865.5721 1000 0],[2876.9711 150 0],[2882.249 140 0],[2923.6689 300 0],[3066.3539 300 0],[3097.916 300 0],[3930.0602 500 0],[3948.652 1100 0],[3955.725 220 0],[3957.2602 100 0],[3958.8398 1400 0],[3958.9602 1100 0],[3995.4801 500 0],[3996.6602 300 0]}{ALLx6000x6000x3000x300x22x600x0}{UVx2000x650x2000x300x22x600x0}{VISx3000x3000x3000x50x5x0x0}{IVx6000x6000x1000x0x0x0x0}%,[4030.6102 1300 0],[4068.516 250 0]
\pgfspectra@elt@search{#1}{Rb}{[46.585 3 2],[47.488 1 1],[48.1118 4 1],[48.243 3.5 2],[48.247 3 2],[48.283 50 2],[48.484 30 2],[48.966 50 2],[48.996 10 2],[49.348 60 2],[49.743 9 1],[49.782 5 2],[50.028 10 2],[50.833 3 2],[50.8434 2 1],[51.3266 15 1],[51.679 40 2],[53.0173 30 1],[53.364 80 2],[53.3801 7.5 1],[53.586 120 2],[54.2887 4 1],[55.5036 20 1],[55.619 120 2],[55.836 50 2],[56.477 70 2],[56.671 150 2],[57.282 100 2],[57.665 150 2],[57.963 250 2],[58.126 150 2],[58.234 50 2],[58.677 80 2],[58.9419 250 1],[59.142 10 2],[59.365 90 2],[59.494 100 2],[59.518 1 3],[59.588 130 2],[59.849 120 2],[60.209 45 2],[60.551 5 2],[60.728 50 2],[61.331 40 2],[61.967 50 2],[62.083 2 2],[62.224 10 2],[63.006 25 2],[64.3878 150 1],[64.567 50 2],[66.376 2.5 3],[67.481 2 2],[69.7049 300 1],[71.1187 600 1],[71.624 2.5 3],[73.341 2 3],[74.085 5 3],[74.1456 1000 1],[74.986 2 3],[75.375 2 3],[76.904 500 2],[77.154 1 3],[77.689 2.5 3],[81.528 250 2],[81.792 0.9 3],[85.018 1.5 3],[98.8 1 3],[160.412 100 1],[164.496 20 1],[170.752 20 1],[171.685 60 1],[176.05 500 1],[180.347 20 1],[180.968 50 1],[186.533 50 1],[188.942 50 1],[195.424 50 1],[195.654 30 1],[197.142 20 1],[198.319 50 1],[204.223 30 1],[205.221 30 1],[205.28 50 1],[206.892 200 1],[207.15 100 1],[207.595 1000 1],[209.029 100 1],[210.806 20 1],[211.65 30 1],[212.525 100 1],[212.982 40 1],[214.31 20 1],[214.383 3000 1],[215.321 10 2],[216.459 25 2],[219.036 20 1],[219.799 60 1],[219.826 60 1],[220.786 30 1],[221.708 1000 1],[222.379 20 1],[223.772 40 1],[225.065 50 1],[225.143 20 1],[225.419 80 1],[225.455 20 1],[226.354 20 1],[226.394 50 1],[226.8 10 2],[228.682 50 1],[229.171 500 1],[229.88 30 1],[230.012 15 2],[230.414 50 2],[230.445 15 2],[231.246 25 2],[233.301 25 1],[233.339 200 1],[233.707 20 2],[234.19 10 2],[234.537 20 2],[234.981 10 2],[235.311 35 1],[235.396 30 1],[235.697 40 1],[235.804 30 1],[236.427 30 1],[236.432 20 1],[236.515 20 1],[236.751 30 1],[237.321 20 1],[238.044 15 2],[238.129 10 2],[238.534 200 1],[240.594 25 1],[241.846 15 2],[243.417 40 1],[245.914 80 1],[247.22 5000 1],[248.456 30 1],[248.47 70 1],[249.638 200 1],[250.267 20 1],[251.418 25 1],[252.424 100 1],[256.186 30 2],[257.371 10 2],[257.707 10 2],[258.683 20 2],[259.456 20 1],[262.376 40 1],[263.175 100 2],[263.683 35 2],[264.558 40 1],[265.668 10 2],[268.41 100 1],[271.176 100 1],[271.386 10 2],[274.101 25 1],[279.886 50 2],[280.027 15 2],[280.758 50 2],[281.215 50 1],[283.851 35 1],[284.544 10 2],[286.977 15 2],[287.388 75 1],[290.369 50 2],[294.962 15 2],[295.101 10 2],[295.607 200 2],[296.745 50 2],[296.813 15 2],[297.074 50 2],[298.74 25 2],[302.361 35 2],[303.962 20 2],[304.148 20 2],[305.136 100 1],[307.07 25 2],[308.202 0.2 0],[308.684 50 2],[308.858 25 1],[309.849 10 2],[311.136 50 2],[311.257 1 0],[311.306 0.3 0],[311.482 25 2],[311.892 12 2],[314.89 500 1],[315.754 2.5 0],[315.826 0.5 0],[316.1 120 1],[316.934 10 2],[322.26 20 2],[322.798 5 0],[322.916 0.6 0],[327.099 200 1],[328.641 50 2],[332.149 150 1],[333.016 10 2],[334.055 120 1],[334.692 20 2],[334.872 6 0],[335.082 7.5 0],[335.389 75 1],[339.303 120 1],[341.558 75 1],[343.418 100 1],[343.926 25 2],[346.15 150 1],[349.268 10 2],[352.139 300 1],[353.155 300 1],[354.115 100 1],[358.705 10 0],[359.157 4 0],[360.06 500 1],[360.064 1000 1],[363.98 60 1],[364.626 40 1],[364.756 35 1],[366.274 100 1],[366.381 90 1],[366.672 35 1],[367.566 30 1],[369.958 250 1],[374.633 35 1],[379.681 350 1],[380.19 250 1],[382.666 100 1],[386.074 45 1],[390.729 25 1],[392.22 50 1],[392.644 250 1],[394.051 2500 1],[397.815 100 1],[402.949 170 1],[408.388 250 1],[410.428 200 1],[413.611 170 1],[419.308 350 1],[420.18 100 0],[421.553 50 0],[424.44 9000 1],[426.658 50 1],[427.025 25 1],[427.314 1500 1],[428.797 250 1],[429.397 150 1],[430.626 50 1],[434.696 100 1],[437.712 250 1],[444.01 30 1],[446.947 100 1],[449.392 40 1],[451.904 70 1],[453.034 300 1],[453.379 50 1],[454.074 40 1],[457.177 2000 1],[462.242 300 1],[463.189 35 1],[464.857 1000 1],[465.928 50 1],[473.045 100 1],[475.53 100 1],[475.782 40 1],[477.595 3000 1],[478.283 500 1],[485.534 30 1],[488.559 150 1],[508.7987 0.2 0],[513.2471 0.2 0],[515.0134 1 0],[515.208 1000 1],[516.458 30 1],[516.5023 0.1 0],[516.5142 0.2 0],[516.965 0.1 0],[519.5278 1.5 0],[523.3968 0.2 0],[526.0034 2 0],[526.0228 0.1 0],[527.051 20 1],[532.238 0.3 0],[536.2601 4 0],[539.0568 0.4 0],[543.1532 7.5 0],[543.183 0.3 0],[551.255 50 1],[552.278 500 1],[557.8788 0.6 0],[563.599 500 1],[564.7774 4 0],[565.375 2 0],[569.915 300 1],[572.4121 6 0],[572.4614 0.3 0],[573.964 20 1],[607.0755 7.5 0],[613.527 20 1],[615.9626 3 0],[619.908 100 1],[620.6309 7.5 0],[626.94 30 1],[629.8325 12 0],[629.9224 0.5 0],[645.833 1000 1],[655.562 100 1],[656.081 500 1],[677.507 300 1],[727.9997 10 0],[731.652 30 1],[740.8173 15 0],[761.8933 20 0],[775.7651 30 0],[775.9436 6 0],[780.027 9000 0],[792.526 0.5 0],[792.554 0.4 0],[794.76 4500 0],[827.141 4 0],[827.171 3 0],[860.396 200 1],[886.8512 4 0],[886.8852 3 0],[897.888 30 1],[902.177 30 1],[922.464 0.3 0],[923.425 0.2 0],[924.641 50 1],[933.887 30 1],[937.35 20 1],[939.136 30 1],[947.932 100 1],[949.372 70 1],[952.265 3 0],[952.305 0.5 0],[954.018 2 0],[961.299 30 1],[967.154 30 1],[968.905 200 1],[977.606 20 1],[993.476 20 1],[1007.5282 3.5 0],[1007.5708 3 0],[1323.517 10 0],[1344.281 2 0],[1344.357 3 0],[1366.501 7.5 0],[1475.241 100 0],[1528.843 80 0],[1528.948 15 0],[2252.965 2 0],[2293.2471 1 0],[2731.4311 0.4 0],[2790.5369 0.2 0]}{ALLx9000x9000x9000x500x5x0x0}{UVx5000x10x5000x500x5x0x0}{VISx9000x100x9000x0x0x0x0}{IVx9000x9000x200x0x0x0x0}%
\pgfspectra@elt@search{#1}{Sr}{[28.431 2.4 3],[29.109 2.4 3],[29.119 2.4 3],[29.322 2.4 3],[29.812 3 3],[30.012 3 3],[30.027 2.4 3],[30.167 2.4 3],[30.718 5 2],[31.611 10 2],[32.161 10 2],[33.067 25 2],[35.162 100 2],[35.88 15 2],[36.349 50 2],[37.121 30 2],[37.853 4 3],[39.244 15 3],[39.3 10 3],[39.49 9 3],[39.622 10 3],[39.992 8 3],[40.385 7 3],[40.694 7 3],[41.293 6 3],[41.307 8 3],[41.532 8 3],[41.978 6 3],[43.021 5 3],[43.065 6 3],[43.724 200 2],[44.273 5 3],[47.176 5 3],[48.42 5 3],[49.179 375 2],[50.704 250 2],[50.814 5 3],[51.438 750 2],[51.728 2 4],[53.419 5 3],[54.051 1.2 4],[56.275 500 2],[57.801 5 4],[62.493 6 4],[64.223 5 4],[64.921 10 4],[65.915 4 4],[66.094 5 4],[66.443 40 3],[66.993 1.8 4],[68.623 7 4],[71.035 20 3],[71.579 1.2 4],[74.782 2.4 4],[86.232 1.8 4],[96.837 4 2],[97.578 4 2],[99.298 5 2],[102.523 10 2],[104.491 7 2],[105.774 4 2],[106.02 5 2],[109.877 4 2],[112.549 7 2],[114.024 4 2],[116.827 4 2],[118.209 4 2],[118.921 4 3],[123.623 10 2],[124.414 6 3],[124.475 4 3],[124.487 4 3],[125.778 4 3],[126.862 4 3],[133.113 4 3],[134.79 6 3],[136.115 4 3],[140.867 5 3],[159.274 4 3],[167.703 5 3],[170.516 4 3],[172.423 4 3],[172.953 5 3],[173.212 4 3],[177.725 4 3],[194.058 4 2],[195.844 6 2],[196.692 6 2],[199.461 4 3],[206.863 5 2],[209.959 10 2],[210.438 4 3],[211.431 5 2],[211.79 4 3],[211.848 6 2],[211.952 10 2],[213.312 10 2],[214.28 6 2],[214.574 4 2],[215.284 280 1],[216.596 280 1],[217.891 6 2],[218.014 6 2],[219.088 10 2],[220.386 10 2],[221.799 4 3],[221.95 10 2],[222.005 10 2],[223.041 4 3],[224.049 4 3],[225.338 4 3],[226.703 10 2],[227.371 20 2],[227.787 10 2],[231.033 6 2],[231.495 10 2],[233.479 10 2],[234.013 20 2],[234.697 10 3],[235.734 4 3],[240.417 10 2],[241.052 6 2],[242.81 32 0],[243.893 4 3],[244.141 5 3],[245.403 10 2],[248.279 6 3],[248.357 5 3],[248.652 20 2],[250.057 3.6 3],[250.359 10 2],[250.802 4 3],[253.403 4 3],[254.802 3.6 3],[255.56 8 3],[256.947 24 0],[257.104 8 3],[257.158 5 3],[258.934 3 3],[259.91 6 2],[262.035 5 3],[262.116 4 3],[262.269 7 2],[264.216 4 3],[264.296 6 2],[264.851 6 2],[265.466 7 2],[272.247 8 2],[278.6 10 2],[282.142 10 2],[283.053 3 3],[287.486 6 2],[292.934 6 2],[293.183 40 0],[293.46 1.8 3],[298.3 6 2],[300.261 20 2],[301.232 40 2],[301.929 2 3],[302.173 20 2],[305.983 6 2],[306.143 10 2],[310.425 6 2],[318.261 10 2],[323.539 20 2],[326.652 1.8 3],[330.173 60 0],[330.272 6 2],[332.999 60 0],[335.125 80 0],[336.633 60 0],[338.071 130 1],[343.076 10 2],[346.446 190 1],[347.489 24 1],[356.643 1.8 3],[374.105 1.8 3],[387.426 6 2],[393.64 6 2],[393.672 6 2],[394.08 60 0],[395.875 6 2],[396.926 120 0],[397.004 60 0],[403.038 260 0],[403.238 60 0],[407.771 9200 1],[409.403 6 2],[409.702 6 2],[410.563 6 2],[416.18 40 1],[421.552 6400 1],[429.857 1.8 3],[430.545 68 1],[433.58 7 2],[443.804 70 0],[460.733 13000 0],[468.508 1.8 3],[472.228 640 0],[474.192 440 0],[478.432 280 0],[481.188 960 0],[483.208 720 0],[485.504 100 0],[486.87 120 0],[487.249 600 0],[487.606 120 0],[487.632 400 0],[489.198 200 0],[496.226 1600 0],[496.794 260 0],[507.109 6 2],[513.034 6 2],[515.607 160 0],[515.826 7 2],[522.22 280 0],[522.511 400 0],[522.927 400 0],[523.855 560 0],[525.69 960 0],[525.771 8 2],[526.221 6 2],[528.832 6 2],[532.982 70 0],[539.103 6 2],[544.348 8 2],[545.084 300 0],[546.39 6 2],[548.084 1400 0],[548.612 220 0],[550.417 700 0],[552.183 520 0],[553.481 400 0],[554.005 400 0],[554.336 50 0],[566.466 6 2],[568.972 6 2],[597.01 40 0],[634.575 50 0],[636.394 50 0],[636.996 70 0],[638.075 200 0],[638.65 180 0],[638.824 120 0],[640.847 1800 0],[644.668 50 0],[646.579 50 0],[650.4 1100 0],[654.679 200 0],[655.026 340 0],[661.726 600 0],[664.354 160 0],[679.105 360 0],[687.838 960 0],[689.259 240 0],[707.01 1100 0],[715.309 12 0],[716.724 50 0],[723.227 40 0],[730.941 500 0],[762.15 100 0],[767.306 80 0],[785 10 0],[786.69 6 0],[787.4 4 0],[842.28 40 0],[850.569 24 1],[868.891 40 1],[871.956 6 1],[917 8 0],[920.45 6 0],[928.39 4 0],[929.41 20 0],[930.66 3 0],[931.92 6 0],[938.045 12 0],[941.125 8 0],[944.895 80 0],[959.6 120 0],[962.47 60 0],[963.81 20 0],[964.77 20 1],[1003.666 60 1],[1032.731 200 1],[1087.27 1.4 1],[1091.488 40 1],[1098.4 2 0],[1122.457 2.6 1],[1124.125 140 0],[1201.476 20 1],[1223.62 4 0],[1244.59 12 1],[1247.96 4 0],[1249.5 8 0],[1265.22 3 0],[1297.47 15 1],[1312.38 20 1],[1352.28 3 0],[1714.09 3 0],[1717.05 6 0],[1744.74 10 0],[1762.6 0.8 1],[1774.3 6 0],[1975.96 3 0],[2026.14 46 0],[2070.0699 24 0],[2076.45 8 0],[2077.8699 3 0],[2602.36 6 0]}{ALLx13000x13000x9200x750x40x10x0}{UVx750x80x280x750x40x10x0}{VISx13000x13000x9200x8x1.8x0x0}{IVx200x140x200x0x0x0x0}%
\pgfspectra@elt@search{#1}{Y}{[21.18 0.3 3],[21.451 0.3 3],[21.597 0.6 3],[21.739 0.6 3],[22.171 1.2 3],[22.218 0.3 3],[22.298 0.6 3],[22.884 0.2 3],[22.894 2 3],[22.978 0.3 3],[23.517 0.3 3],[23.577 2.5 3],[24.212 0.1 3],[24.23 3 3],[24.414 0.3 3],[26.372 0.3 3],[26.464 15 3],[27.24 3 3],[27.303 15 3],[27.86 1 3],[28.918 0.5 4],[29.999 5 4],[31.289 0.3 4],[31.335 20 4],[32.047 4 4],[32.169 4 4],[32.558 15 4],[32.657 20 4],[32.834 17.5 4],[33.04 5 4],[33.309 90 4],[33.38 50 4],[33.512 10 4],[33.514 40 4],[33.662 50 4],[33.902 50 4],[34.002 20 4],[34.042 0.5 4],[34.459 50 4],[34.965 10 4],[34.975 0.2 4],[35.136 1 4],[35.398 10 4],[35.556 10 4],[35.586 90 3],[37.042 30 3],[37.205 30 4],[37.996 40 4],[38.682 50 3],[39.777 20 4],[40.345 30 4],[40.881 0.1 4],[40.931 20 4],[41.503 20 4],[41.818 10 4],[41.859 15 4],[41.979 5 4],[42.074 30 4],[42.503 60 3],[42.787 0.1 4],[43.075 5 4],[43.766 10 4],[44.162 0.3 4],[44.296 3 4],[45.197 0.2 4],[45.584 1.5 4],[45.784 8.5 4],[47.31 30 3],[58.498 400 4],[63.097 200 4],[64.368 0.1 2],[64.669 0.4 2],[65.387 0.6 2],[65.698 1 2],[66.874 2.5 2],[67.198 4 2],[69.172 10 2],[69.385 0.4 2],[69.52 20 2],[72.791 0.9 2],[72.847 0.4 2],[72.883 0.2 2],[72.973 2 2],[73.049 60 2],[73.27 1.5 2],[73.436 80 2],[77.078 1.5 2],[77.179 1 2],[80.426 2 2],[80.52 500 2],[80.618 7.5 2],[80.897 15 2],[80.992 700 2],[85.564 10 2],[85.782 6 2],[98.423 2.5 2],[98.796 1.5 2],[98.921 1500 2],[99.637 2500 2],[99.919 2 2],[100.056 15 2],[100.335 2.5 2],[100.658 100 2],[100.786 120 2],[107.752 12 2],[108.135 50 2],[108.463 7.5 2],[108.839 35 2],[109.525 25 2],[109.587 2.5 2],[110.321 15 2],[128.974 300 2],[130.696 250 2],[131.451 500 2],[131.61 150 2],[133.404 400 2],[154.908 0.8 2],[155.381 1.5 2],[163.514 3 2],[164.043 7.5 2],[177.98 20 2],[178.605 60 2],[204.193 1 2],[204.207 0.5 2],[206.058 150 2],[206.898 400 2],[212.798 1000 2],[219.116 1600 2],[220.076 800 2],[220.603 800 2],[224.306 35 1],[226.141 15 2],[226.157 8 2],[228.434 1000 2],[231.992 0.3 2],[232.731 1000 2],[235.42 5 0],[236.723 5000 2],[237.383 3 -1],[238.524 5 -1],[241.393 2.5 1],[241.464 4000 2],[242.22 56 1],[246.061 6 1],[249.042 2.5 0],[254.028 1.2 -1],[254.757 1.4 -1],[255.017 1 -1],[268.165 2 0],[269.421 6 0],[269.539 2.6 0],[271.03 10 2],[271.054 9 2],[272.3 9.5 0],[273.008 2.2 0],[273.485 2.2 1],[274.253 7 0],[276.01 14 0],[278.011 0.5 2],[278.521 3 1],[278.559 1.2 1],[279.12 1.2 0],[279.144 7 2],[280.011 3 1],[280.327 2 2],[280.7 10 2],[281.364 2.6 0],[281.704 9000 2],[281.886 1.8 0],[282.256 4.5 0],[282.537 2.2 1],[282.638 4.5 1],[285.443 7 1],[285.63 2.6 1],[285.787 1.1 1],[286.767 600 2],[288.648 9.5 0],[289.769 1.8 1],[289.882 1.4 1],[291.341 600 2],[291.774 150 2],[291.856 160 2],[291.905 16 0],[293.003 1.8 1],[294.053 1.5 2],[294.601 9900 2],[294.84 39 0],[294.848 2 2],[296.496 35 0],[297.042 600 2],[297.391 1.8 1],[297.459 48 0],[298.055 3 1],[298.426 75 0],[299.526 7 0],[299.694 14 0],[300.526 7 0],[301.393 140 2],[301.885 150 2],[301.895 5.5 0],[302.173 13 0],[302.228 9 0],[302.649 2.6 1],[303.659 3 1],[304.484 4.5 0],[304.537 19 0],[304.711 2.2 0],[305.522 6 1],[308.685 6 1],[309.17 5.5 0],[309.376 2.2 1],[309.588 9.5 1],[311.181 4.5 0],[311.204 5.5 1],[311.428 2.2 0],[312.877 6 1],[312.993 8 1],[313.517 9.5 1],[317.306 11 1],[317.941 22 1],[319.131 7 0],[319.562 230 1],[320.027 220 1],[320.332 220 1],[321.669 390 1],[324.228 620 1],[326.71 0.3 2],[327.68 2.5 2],[328.091 31 1],[330.847 1.9 1],[332.789 470 1],[334.038 5.5 0],[336.2 16 1],[338.859 8.5 0],[339.704 4.5 0],[341.247 8.5 0],[344.882 20 1],[345.095 7 0],[346.788 11 1],[348.573 17 0],[349.609 170 1],[352.153 8 0],[354.601 4.5 1],[354.901 390 1],[355.18 13 0],[355.269 54 0],[355.876 17 0],[357.143 19 0],[357.605 26 0],[358.452 330 1],[358.775 30 0],[358.969 10 0],[359.292 280 0],[360.073 1000 1],[360.192 620 1],[361.105 780 1],[362.094 430 0],[362.871 190 1],[363.312 780 1],[366.461 300 1],[366.849 4.5 1],[369.253 17 0],[371.03 1300 1],[371.812 6 0],[373.861 6 0],[374.755 120 1],[374.989 5 0],[377.433 1000 1],[377.656 140 1],[378.23 5 1],[378.87 740 1],[381.835 130 1],[383.288 400 1],[384.787 7 1],[386.696 50 2],[387.682 8 0],[387.828 48 1],[388.777 3 0],[390.074 300 2],[390.459 6 0],[391.458 400 2],[391.825 5 0],[393.011 6 0],[393.066 24 1],[395.036 440 1],[395.16 15 1],[395.509 6 0],[398.26 360 1],[398.75 4 0],[403.96 380 2],[403.983 94 0],[404.011 300 2],[404.764 240 0],[407.738 940 0],[408.122 9 0],[408.371 200 0],[410.238 990 0],[410.639 6 0],[411.081 8 0],[412.161 12 2],[412.492 32 1],[412.831 890 0],[414.285 750 0],[415.763 10 0],[416.752 240 0],[417.414 200 0],[417.754 800 1],[419.928 12 1],[420.47 38 1],[421.302 8 0],[421.354 4 0],[421.78 16 0],[422.063 28 0],[422.425 8 0],[423.573 60 1],[423.594 220 0],[425.12 30 0],[430.23 36 0],[430.963 280 1],[431.63 5 0],[433.078 11 0],[433.729 3 0],[434.465 6 0],[434.879 44 0],[435.233 6 0],[435.27 6 0],[435.773 12 0],[435.873 80 1],[436.603 12 0],[437.494 1200 1],[437.561 15 0],[437.933 8 0],[438.548 3 0],[438.774 10 0],[439.401 3 0],[439.467 3 0],[439.802 180 1],[442.259 89 1],[443.734 8 0],[444.366 10 0],[444.663 13 0],[446.527 2 0],[447.389 4 0],[447.572 17 0],[447.696 18 0],[447.745 16 0],[448.728 11 0],[448.747 30 0],[449.175 3 0],[449.242 2.5 0],[450.595 50 0],[451.358 5 0],[451.401 8 0],[452.205 4 0],[452.725 89 0],[452.78 44 0],[454.432 10 0],[455.937 10 0],[456.439 3 0],[457.356 6 0],[458.132 3.5 0],[458.177 3 0],[459.655 13 0],[460.48 9.5 0],[461.3 4 0],[464.37 200 0],[465.832 20 0],[465.889 7 0],[466.747 8.5 0],[467.082 6 0],[467.484 200 0],[467.835 6 0],[468.232 26 1],[468.977 8.5 0],[469.681 18 0],[470.885 3.5 0],[472.585 6 0],[472.853 17 0],[473.237 6 0],[473.762 200 2],[474.14 8.5 0],[475.279 16 0],[476.098 41 0],[478.018 1.7 0],[478.104 12 0],[478.658 16 1],[478.689 17 0],[479.93 18 0],[480.431 5 0],[480.481 7 0],[481.738 8.5 -1],[481.82 14 -1],[481.964 14 0],[482.213 12 0],[482.331 19 1],[483.915 6 0],[483.987 77 0],[484.568 55 0],[485.269 41 0],[485.425 12 0],[485.487 89 1],[485.67 5 0],[485.984 33 0],[487.965 5 0],[488.369 190 1],[488.628 5 0],[488.665 4 0],[489.344 9.5 0],[490.012 110 1],[490.611 10 0],[490.9 4.5 0],[492.187 15 0],[493.093 3.5 0],[495.066 4.5 0],[497.43 12 0],[498.213 12 1],[500.697 10 0],[507.021 7.5 0],[507.219 7.5 0],[508.742 110 1],[508.818 3 0],[510.288 750 2],[511.911 21 1],[512.04 130 2],[512.321 45 1],[513.52 18 0],[519.643 12 1],[520.041 96 1],[520.572 150 1],[523.81 1000 2],[524.081 18 0],[526.358 300 2],[528.982 6 1],[532.078 4.5 1],[538.062 7.5 0],[538.364 400 2],[540.278 22 1],[541.703 2.4 0],[542.437 9 0],[543.824 19 0],[546.646 71 0],[546.847 10 0],[547.339 9 1],[548.074 9 1],[549.317 6 0],[549.559 3.5 0],[549.741 24 1],[550.345 30 0],[550.99 25 1],[551.364 6 0],[552.163 12 0],[552.676 2.4 0],[552.754 74 0],[554.163 3.5 0],[554.45 12 0],[554.602 9 1],[555.643 7.5 0],[556.281 600 2],[556.727 60 2],[556.775 6 0],[557.224 400 2],[557.742 18 0],[558.108 2.4 0],[558.187 62 0],[559.096 2.1 0],[559.412 2.1 0],[559.548 40 2],[560.208 300 2],[560.633 12 0],[562.391 1.5 0],[563.013 56 0],[563.225 2.4 0],[563.289 2.1 0],[564.469 12 0],[564.847 12 0],[566.294 74 1],[567.527 9 0],[569.363 1.8 0],[570.673 16 0],[572.061 2.4 0],[572.889 7.5 1],[573.012 15 -1],[573.209 2.1 0],[574.385 9 0],[574.693 1.8 -1],[576.422 2.4 -1],[576.564 7.5 0],[577.395 3.5 0],[578.169 10 1],[580 1.5 -1],[581.858 1.5 -1],[582.187 3 0],[583.227 2.1 0],[583.807 0.9 -1],[585.883 1.5 -1],[587.183 1.5 0],[587.614 2.4 -1],[587.996 2.4 0],[589.394 2.4 -1],[590.296 3.5 0],[591.219 2.4 -1],[593.11 2.4 -1],[593.908 9 -1],[594.572 4.5 0],[595.002 2.4 0],[595.641 7.5 -1],[597.204 130 -1],[598.186 5 0],[598.764 100 -1],[600.36 74 -1],[600.465 12 -1],[600.919 12 0],[601.987 62 -1],[602.341 12 0],[603.66 50 -1],[605.381 42 -1],[607.278 13 -1],[608.8 5 0],[608.935 21 -1],[609.678 16 -1],[610.782 13 -1],[611.473 13 -1],[612.738 7.5 -1],[613.206 140 -1],[613.504 12 0],[613.843 15 0],[614.836 110 -1],[615.172 12 -1],[616.508 82 -1],[618.223 56 -1],[619.173 120 0],[619.982 59 -1],[621.796 45 -1],[622.259 30 0],[623.672 27 -1],[625.105 4.5 0],[627.501 12 -1],[629.546 6 -1],[631.62 2.4 -1],[633.81 2.4 -1],[635.948 1.5 -1],[636.987 1.5 -1],[640.201 7.5 0],[643.5 100 0],[643.718 2.4 0],[650.123 1.8 -1],[651.833 1.8 -1],[653.584 1.8 -1],[653.86 9 0],[655.384 1.2 -1],[655.739 7 0],[657.258 1.2 -1],[657.685 3.5 0],[658.487 2.3 0],[661.375 9.5 1],[662.249 1.4 0],[663.649 1.9 0],[665.061 4 0],[666.44 2.1 0],[668.758 15 0],[669.183 1.4 0],[669.475 0.7 0],[669.926 1.6 0],[670.071 7 0],[671.32 3.5 0],[673.599 4 0],[679.371 19 0],[679.541 7 1],[680.315 1.2 0],[681.516 2.1 0],[683.249 1.4 1],[684.524 4.5 0],[685.824 1.4 1],[688.722 2.9 0],[689.6 2.1 1],[690.826 0.9 0],[693.352 1.4 0],[695.031 2.4 0],[695.168 1 1],[695.804 1 0],[697.988 2.4 0],[700.897 1.3 0],[700.993 1 0],[703.518 1.9 0],[705.294 2.9 0],[705.428 1.3 0],[707.513 0.9 0],[712.792 1.1 0],[719.166 3.5 0],[719.593 1 0],[725.458 200 2],[726.417 3.5 1],[729.308 0.9 0],[733.062 0.9 0],[733.296 0.5 1],[734.646 5 0],[739.877 1.1 0],[745.03 2.9 1],[749.488 1.7 0],[753.671 0.7 0],[755.871 900 2],[756.313 3.5 0],[761.772 0.8 0],[762.294 1.9 0],[765.289 0.7 0],[768.949 0.5 0],[769.8 0.8 0],[771.989 1.9 0],[772.408 1.9 0],[778.842 1.3 0],[779.632 1.3 0],[780.252 0.6 0],[781.216 1.7 0],[785.552 2.9 0],[786.453 600 2],[788.19 11 1],[791.671 800 2],[798.941 40 2],[799.143 1000 2],[799.933 1 0],[817.141 800 2],[832.961 0.9 0],[834.443 2.4 0],[836.564 0.8 0],[845.036 1.7 0],[852.894 0.8 0],[864.509 400 2],[879.621 1000 2],[880.062 9.5 0],[883.585 1.9 1],[911.659 800 2]}{ALLx9900x990x1300x9900x90x400x140}{UVx9900x430x1300x9900x90x400x5}{VISx1200x990x1200x1000x0x0x140}{IVx1000x9.5x11x1000x0x0x0}%
@@ -80,10 +80,10 @@
\pgfspectra@elt@search{#1}{Ag}{[70.98 40 2],[71.385 40 2],[71.773 20 2],[71.853 40 2],[72.696 60 2],[73.004 70 2],[73.028 30 2],[73.083 5 1],[73.094 30 2],[73.657 40 2],[73.813 20 2],[74.098 40 2],[74.229 40 2],[74.83 40 2],[75.28 6 1],[75.573 30 2],[75.827 20 2],[76.719 40 2],[76.833 50 2],[76.961 30 2],[77.638 70 2],[78.291 40 2],[78.576 30 2],[78.908 40 2],[79.235 50 2],[79.654 40 2],[79.791 50 2],[79.941 80 2],[80.888 60 2],[81.612 30 2],[82.239 36 2],[83.811 40 2],[100.532 3 1],[106.549 2 1],[107.223 2.4 1],[107.422 50 1],[110.703 30 1],[111.246 30 1],[119.583 12 1],[122.333 10 1],[124.08 10 1],[124.687 10 1],[125.681 11 1],[125.755 11 1],[126.663 10 1],[127.367 14 1],[129.751 13 1],[131.12 17 1],[131.381 11 1],[131.461 10 1],[132.384 12 1],[134.209 12 1],[134.257 10 1],[134.662 14 1],[135.354 10 1],[136.45 30 1],[137.322 24 2],[137.476 24 2],[139.6 20 1],[140.493 22 2],[141.093 20 1],[141.39 24 2],[141.429 24 2],[141.972 18 1],[142.861 24 2],[143.26 19 1],[145.274 24 2],[145.641 40 2],[146.472 20 1],[146.623 10 1],[147.144 20 2],[148.901 60 2],[150.737 10 0],[151.508 30 2],[151.563 20 0],[152.423 20 2],[152.704 24 2],[154.114 30 2],[154.858 10 0],[155.089 30 2],[155.304 26 2],[155.516 20 1],[158.741 26 2],[158.928 24 2],[161.379 20 2],[161.914 26 2],[163.446 20 2],[164.45 20 1],[165.152 12 0],[165.21 10 0],[165.224 20 2],[165.36 26 2],[165.443 60 2],[165.618 140 2],[165.71 30 2],[166.154 20 2],[167.075 26 2],[167.614 30 2],[168.107 20 2],[168.282 24 1],[169.351 100 2],[170.506 40 2],[170.811 2 0],[170.886 30 2],[170.927 10 0],[171.768 26 2],[172.227 40 2],[172.676 30 2],[172.814 50 2],[173.644 25 1],[174.734 40 2],[174.964 24 2],[175.089 30 2],[175.103 150 2],[176.057 20 2],[176.262 30 2],[176.614 2 0],[176.87 30 2],[177.181 20 2],[178.385 20 2],[179.037 15 1],[179.17 20 2],[179.269 20 2],[179.39 30 2],[180.224 30 2],[180.226 30 2],[180.277 20 2],[180.823 60 2],[181.683 50 2],[182.245 30 2],[182.883 70 2],[183.233 50 2],[183.25 24 2],[183.431 20 2],[183.61 50 2],[183.864 30 2],[184.014 80 2],[184.696 20 2],[184.771 4 0],[184.993 24 2],[185.633 30 2],[185.891 24 2],[186.039 20 2],[186.064 20 2],[186.712 70 2],[186.81 30 2],[187.255 20 2],[187.345 80 2],[188.036 50 2],[188.957 60 2],[191.692 80 2],[191.708 120 2],[192.53 40 2],[194.632 30 2],[194.844 20 2],[195.762 140 2],[195.927 24 2],[196.086 20 2],[196.689 80 2],[196.738 20 1],[197.592 120 2],[197.703 100 2],[198.187 30 2],[198.702 40 2],[199.516 26 2],[200.024 120 2],[200.73 60 2],[201.149 40 2],[201.365 30 2],[201.596 30 1],[203.398 30 1],[204.133 30 2],[205.317 30 2],[205.383 30 2],[205.699 40 2],[206.117 40 0],[206.985 20 0],[208.104 40 2],[211.382 16 1],[214.56 12 1],[214.647 60 2],[214.919 30 2],[216.189 120 2],[216.621 30 2],[217 3 0],[218.676 10 1],[221.123 30 2],[222.953 12 1],[223.84 20 2],[224.643 20 1],[224.651 100 2],[224.874 15 1],[228.003 15 1],[228.65 20 2],[230.956 6 0],[231.004 140 2],[231.26 2 0],[231.705 14 1],[232.029 16 1],[232.468 14 1],[233.14 16 1],[235.792 14 1],[237.502 10 0],[238.685 20 2],[239.569 60 2],[241.141 15 1],[241.323 18 1],[243.781 20 1],[244.793 16 1],[246.962 20 2],[247.384 16 1],[250.663 12 1],[256.287 20 2],[257.563 10 0],[266.049 12 1],[272.177 12 0],[276.754 15 1],[282.439 20 0],[292.677 2 0],[293.842 4 0],[309.91 4 0],[313.002 6 0],[317.058 2 0],[318.07 18 1],[321.567 3 0],[322.515 2 0],[323.318 3 0],[326.735 20 1],[328.068 11000 0],[330.567 2 0],[338.289 5600 0],[340.378 2 0],[346.916 6 0],[347.582 14 1],[349.528 16 1],[350.192 4 0],[350.803 4 0],[351.338 3 0],[352.112 2 0],[354.261 10 0],[354.716 2 0],[355.701 2 0],[358.667 4 0],[362.349 2 0],[362.468 10 0],[368.246 15 1],[368.25 6 0],[368.334 16 1],[370.92 10 0],[372.742 2 0],[375.314 4 0],[381.094 40 0],[381.178 10 0],[384.074 20 0],[384.785 3 0],[390.741 10 0],[390.931 10 1],[391.44 10 0],[392.01 14 1],[392.801 2 0],[394.043 2 0],[394.297 2 0],[394.943 12 1],[398.158 20 0],[398.519 14 1],[399.215 2 0],[405.548 20 0],[408.343 2 0],[408.591 16 1],[418.548 20 1],[421.096 18 0],[421.282 20 0],[431.107 10 0],[439.623 4 0],[447.604 10 0],[455.6 4 0],[461.569 6 0],[462.004 16 1],[462.046 10 1],[466.848 12 0],[467.76 6 0],[478.84 20 1],[479.62 4 0],[484.782 6 0],[487.41 20 0],[488.821 4 0],[491.75 2 0],[493.575 2 0],[499.289 4 0],[502.735 16 1],[512.35 3 0],[520.908 200 0],[533.362 2 0],[546.55 200 0],[547.155 20 0],[547.538 4 0],[554.567 4 0],[555.958 2 0],[566.734 20 0],[608.378 2 0],[626.85 2 0],[662.108 4 0],[735.996 4 0],[768.778 64 0],[800.54 5 1],[825.47 3 1],[827.352 100 0],[832.44 4 1],[837.95 3 1],[840.38 5 1],[849.25 3 1],[864.57 6 0],[870.485 2 0],[874.76 2.4 1],[900.09 3 1],[1255.1 2 0],[1681.95 12 0],[1741.6699 4 0],[1830.79 3 0],[1838.2301 3 0]}{ALLx11000x11000x50x150x0x0x0}{UVx11000x11000x50x150x0x0x0}{VISx200x200x20x0x0x0x0}{IVx100x100x5x0x0x0x0}%
\pgfspectra@elt@search{#1}{Cd}{[42.701 50 3],[43.788 20 3],[44.785 50 3],[48.09 60 3],[48.949 10 3],[49.3 70 3],[49.513 70 3],[49.814 70 3],[49.853 70 3],[50.409 80 3],[50.42 70 3],[50.45 70 3],[50.631 80 3],[50.801 60 3],[50.895 50 3],[50.955 70 3],[50.981 25 3],[51.14 70 3],[51.3 80 3],[51.45 70 3],[51.942 60 3],[52.097 15 3],[52.441 80 3],[52.447 70 3],[52.477 50 3],[52.51 70 3],[52.519 60 3],[52.707 70 3],[53.079 50 3],[53.109 80 3],[53.151 80 3],[53.429 70 3],[53.677 70 3],[53.724 50 3],[54.09 60 3],[54.174 70 3],[54.26 80 3],[54.655 80 3],[54.801 40 3],[54.833 20 3],[54.89 15 3],[55.127 25 3],[55.29 20 3],[55.306 60 3],[55.405 80 3],[56.026 25 3],[56.416 10 3],[56.701 60 3],[67.739 8 2],[68.458 15 2],[72.07 10 2],[106.223 20 3],[111.816 150 3],[112.6 30 3],[113.408 20 3],[113.904 15 3],[115.464 20 3],[115.573 10 3],[116.465 100 3],[116.578 20 3],[116.73 40 3],[117.973 20 3],[118.307 15 3],[118.34 100 3],[119.413 40 3],[119.563 20 3],[119.647 30 3],[119.893 20 3],[121.538 15 3],[122.352 20 3],[124.606 20 3],[124.656 15 3],[124.994 15 3],[125.6 100 1],[126.647 30 3],[127.441 15 3],[128.563 20 3],[128.758 20 3],[129.643 150 1],[129.946 20 3],[130.436 40 3],[130.607 30 3],[131.689 15 3],[132.185 15 3],[132.555 20 3],[132.65 100 1],[134.097 30 3],[134.615 15 3],[135.478 30 3],[135.811 20 3],[136.255 30 3],[137.048 60 3],[137.091 150 1],[138.098 30 3],[138.36 5 2],[139.21 15 2],[139.678 10 2],[139.765 20 3],[140.368 30 3],[140.658 15 3],[141.628 25 2],[141.889 60 3],[142.029 5 2],[142.054 8 2],[142.983 15 3],[143.286 5 2],[144.608 20 2],[144.754 20 3],[144.755 25 2],[145.263 20 3],[145.574 30 2],[146.597 15 3],[146.614 8 2],[146.667 15 3],[147.197 5 2],[148.295 15 3],[149.179 20 3],[149.181 15 2],[151.101 5 2],[151.165 10 2],[151.313 5 2],[151.426 200 1],[152.355 10 2],[152.84 15 2],[152.93 30 2],[153.21 5 2],[154.517 50 2],[154.757 25 2],[155.007 10 2],[155.045 20 2],[155.089 15 2],[155.218 5 2],[155.648 5 2],[156.066 15 2],[156.603 5 2],[156.898 15 2],[157.02 20 3],[157.158 200 1],[158.239 10 2],[159.873 20 3],[160.042 20 3],[160.159 40 2],[160.487 20 2],[160.664 20 2],[160.728 10 2],[160.891 15 2],[160.961 10 2],[161.251 15 2],[162.287 15 3],[162.527 15 2],[162.854 25 2],[165.187 20 2],[165.563 25 2],[166.86 100 1],[167.815 30 2],[169.97 10 2],[170.247 50 1],[170.716 40 2],[172.193 10 2],[172.295 40 2],[172.441 50 1],[172.566 30 2],[173.9 25 2],[174.569 5 2],[174.767 40 2],[174.815 15 2],[176.882 30 2],[177.306 40 2],[178.584 100 1],[178.919 30 2],[179.34 75 2],[179.61 15 2],[180.057 5 2],[182.341 40 2],[182.77 100 1],[184.466 50 2],[185.113 40 2],[185.137 20 2],[185.585 40 2],[185.667 200 2],[187.408 150 2],[188.649 15 2],[190.348 15 2],[190.998 25 2],[191.057 15 2],[192.223 300 1],[193.959 10 2],[194.354 100 1],[196.554 40 1],[198.689 30 1],[198.881 15 2],[199.543 200 1],[200.06 20 2],[200.407 15 2],[200.749 100 1],[201.612 15 2],[203.245 50 1],[203.623 75 1],[203.983 40 2],[204.561 50 2],[206.125 10 2],[208.791 75 2],[209.6 150 1],[209.745 10 2],[210.047 5 2],[211.16 50 2],[214.441 1000 1],[215.506 50 1],[218.779 100 1],[218.813 5 2],[219.456 1000 1],[221.843 5 2],[222.443 5 2],[226.502 1000 1],[228.8022 1500 0],[231.277 1000 1],[232.107 200 1],[237.682 40 1],[241.824 7 2],[241.869 50 1],[242.636 10 2],[246.973 50 1],[248.793 40 1],[249.1 3 0],[249.558 40 1],[249.981 25 2],[250.891 10 0],[250.911 50 1],[251.622 30 1],[251.859 15 0],[252.5196 25 0],[254.4613 50 0],[255.198 50 1],[255.3465 25 0],[256.5789 3 0],[257.293 500 1],[258.0106 50 0],[258.487 3 0],[259.2026 30 0],[260.2048 25 0],[261.881 15 2],[262.8979 50 0],[263.056 5 2],[263.219 40 0],[263.942 75 0],[265.923 40 1],[266.0325 50 0],[266.82 25 1],[267.262 50 1],[267.754 100 0],[267.7748 25 0],[270.7 50 1],[271.2505 75 0],[273.382 50 0],[274.854 1000 1],[276.3894 100 0],[276.423 50 0],[276.699 20 2],[277.4958 50 0],[280.559 30 2],[282.319 30 1],[283.69 200 0],[285.646 25 1],[286.818 100 0],[288.0767 200 0],[288.1224 50 0],[291.467 200 1],[292.787 50 1],[292.927 200 1],[298.062 1000 0],[298.1362 200 0],[298.1845 50 0],[303.06 50 1],[303.572 10 2],[308.0822 150 0],[308.148 25 1],[308.2593 30 0],[309.234 100 1],[313.3167 200 0],[314.679 50 1],[325.033 150 1],[325.2524 300 0],[326.1055 300 0],[334.321 50 1],[338.549 50 1],[338.888 30 1],[340.3652 800 0],[341.749 50 1],[344.242 50 1],[346.443 100 1],[346.62 1000 0],[346.7655 800 0],[348.308 25 1],[349.544 150 1],[349.9952 25 0],[352.411 100 1],[353.569 100 1],[361.0508 1000 0],[361.2873 800 0],[361.4453 60 0],[364.9558 20 0],[398.1926 10 0],[402.912 100 1],[413.477 200 1],[414.149 50 1],[428.508 100 1],[430.6672 8 0],[441.241 100 1],[441.2989 3 0],[441.563 1000 1],[444.045 30 1],[466.2352 8 0],[467.8149 200 0],[474.469 30 1],[479.9912 300 0],[488.172 50 1],[502.55 50 1],[508.5822 1000 0],[515.466 6 0],[526.801 100 1],[527.16 100 1],[533.748 1000 1],[537.813 1000 1],[538.189 200 1],[584.33 40 1],[588.022 50 1],[609.9142 300 0],[611.149 100 0],[632.5166 100 0],[633.0013 30 0],[635.472 400 1],[635.998 500 1],[643.847 2000 0],[646.494 400 1],[656.765 25 1],[672.578 500 1],[675.919 100 1],[677.8116 30 0],[723.701 50 1],[728.438 100 1],[734.567 1000 0],[806.699 50 1],[820.0309 5 0],[929.2 20 0],[1165.5 15 0],[1449.1 35 0],[1571.2 80 0],[1912.5 55 0],[2437.8 25 0],[2545.5 35 0]}{ALLx2000x2000x1000x200x150x0x0}{UVx1500x1500x1000x200x150x0x0}{VISx2000x2000x1000x0x0x0x0}{IVx80x80x50x0x0x0x0}%
\pgfspectra@elt@search{#1}{In}{[36.867 3 4],[37.01 3 4],[37.282 5 4],[37.294 5 4],[37.495 1 4],[37.584 3 4],[37.607 3 4],[37.679 5 4],[37.861 8.5 4],[37.924 1.5 4],[38.027 4.5 4],[38.156 5.5 4],[38.214 4.5 4],[38.276 5.5 4],[38.305 5 4],[38.621 8.5 4],[38.67 5 4],[38.866 1.5 4],[38.891 7 4],[39.003 5.5 4],[39.092 5.5 4],[39.229 4.5 4],[39.246 4.5 4],[39.36 0.5 4],[39.389 12.5 4],[39.574 5.5 4],[39.773 1.5 4],[39.979 5 4],[40.005 4.5 4],[40.057 12.5 4],[40.239 12.5 4],[40.533 1.5 4],[40.728 4.5 4],[40.736 1.5 4],[40.795 4.5 4],[41.743 4.5 4],[41.845 1 4],[42.316 1 4],[67.733 4 3],[68.453 7.5 3],[68.531 3.5 2],[69.162 2.5 2],[72.064 4 3],[78.217 0.5 2],[88.224 5 2],[89.084 5 2],[91.587 5 2],[91.745 1 2],[92.683 2.5 2],[140.308 15 2],[143.485 15 2],[147.034 2 3],[148.77 10 2],[149.414 10 2],[151.262 2.5 3],[152.35 2.5 3],[152.478 5 2],[153.021 10 2],[153.203 3.5 3],[153.295 15 2],[156.892 4 3],[156.933 1.5 3],[160.15 6 3],[160.508 0.5 3],[160.659 3.5 3],[162.542 50 2],[162.848 5 3],[164.228 10 2],[164.8 1 0],[165.18 4 3],[165.562 5 3],[166.738 0.5 3],[167.064 2.5 3],[167.616 0.5 0],[167.807 6 3],[170.202 2 3],[170.253 10 2],[170.711 7.5 3],[171.154 2.5 0],[172.189 3.5 3],[174.123 1 0],[174.765 6 3],[174.81 5 3],[174.883 50 2],[175.849 0.5 0],[176.788 1 2],[176.877 5 3],[177.301 6 3],[178.915 4 3],[179.338 6 3],[181.071 0.5 2],[184.241 15 2],[184.467 6 3],[185.03 20 2],[185.11 4.5 3],[185.584 4.5 3],[185.664 7.5 3],[186.298 7.5 2],[187.408 7.5 3],[190.352 2.5 3],[193.958 2.5 3],[194.331 1.5 3],[200.473 3 3],[210.117 0.5 3],[210.389 5 1],[211.231 4 3],[215.408 15 2],[215.442 1 2],[216.688 5 1],[217.99 1 0],[218.24 1 0],[218.74 1 0],[219.084 1 0],[219.567 7.5 1],[219.741 1 0],[219.952 5 2],[220.224 1 0],[220.528 25 1],[221.114 1.5 0],[222.513 2 3],[223.07 2.5 0],[223.218 2.5 2],[224.166 1.5 0],[225.579 15 1],[225.999 5 0],[226.126 10 2],[226.626 2.5 2],[227.241 2.5 2],[227.284 2.5 2],[227.82 2.5 0],[228.164 20 1],[228.375 1 0],[229.833 1 0],[229.87 1 0],[230.09 5 2],[230.249 1 0],[230.605 50 1],[230.686 12.5 0],[230.932 1.5 0],[230.975 1 0],[231.321 45 1],[231.509 1 0],[232.34 15 1],[232.441 2.5 0],[232.492 1.5 0],[232.795 35 1],[233.276 1.5 0],[233.457 40 1],[234.019 5 0],[234.59 4 0],[234.656 2.5 0],[235.075 25 1],[235.87 2.5 0],[237.814 7.5 0],[237.9 5 0],[238.263 55 1],[238.954 20 0],[239.318 20 1],[239.918 5 0],[240.647 25 1],[240.876 25 1],[241.906 25 1],[241.92 25 1],[242.72 35 1],[242.986 10 0],[243.099 5 0],[243.273 25 1],[244.263 30 1],[244.79 50 1],[245.323 30 1],[246.008 30 0],[246.802 15 0],[248.615 35 1],[248.862 55 1],[248.895 45 1],[249.859 40 1],[249.96 50 1],[250.099 45 1],[250.816 30 1],[251.231 55 1],[252.137 50 0],[252.298 5 0],[252.741 50 2],[255.356 35 1],[255.444 80 1],[256.015 550 0],[256.513 35 1],[259.875 35 1],[260.176 100 0],[260.404 25 1],[265.47 45 1],[266.263 50 1],[266.865 70 1],[267.456 70 1],[268.312 40 1],[271.026 800 0],[271.394 150 0],[272.552 25 2],[272.615 40 2],[274.975 65 1],[275.388 350 0],[277.537 20 0],[279.876 30 1],[281.897 45 1],[283.692 90 0],[285.814 15 0],[286.568 40 1],[289.018 60 1],[293.263 550 0],[294.105 50 1],[295.701 10 0],[296.617 30 1],[298.28 50 2],[299.94 55 1],[300.808 50 2],[300.882 15 2],[303.936 4000 0],[305.115 4 0],[309.98 55 1],[310.18 90 1],[313.86 65 1],[314.275 40 1],[314.67 65 1],[315.577 75 1],[315.84 50 1],[317.63 45 1],[319.811 45 1],[325.609 6500 0],[325.856 1500 0],[329.355 15 2],[333.85 45 1],[335.091 4 2],[337.659 37.5 1],[340.428 50 1],[343.84 55 1],[356.232 2.5 2],[369.391 90 1],[370.813 47.5 1],[371.614 190 1],[371.83 60 1],[371.872 80 1],[372.34 80 1],[379.521 85 1],[379.921 115 1],[383.465 125 1],[384.218 100 1],[385.282 50 2],[388.978 50 1],[390.207 50 1],[392.212 30 1],[393.44 32.5 1],[396.235 125 1],[400.466 60 1],[401.392 70 1],[402.377 50 2],[403.232 75 2],[405.694 205 1],[406.23 25 2],[407.157 50 2],[407.293 50 2],[410.176 8500 0],[420.514 70 1],[421.304 50 1],[421.966 55 1],[425.268 50 2],[437.287 75 1],[450.078 75 1],[450.958 20 2],[451.131 9000 0],[454.901 55 1],[457.085 70 1],[457.802 90 1],[457.84 90 1],[461.608 70 1],[461.717 85 1],[462.014 125 1],[462.07 75 1],[462.73 85 1],[463.704 70 1],[463.816 190 1],[464.458 110 1],[465.562 180 1],[465.674 160 1],[468.111 95 1],[468.48 225 1],[487.837 1.5 0],[490.706 45 1],[492.493 35 1],[497.377 75 1],[510.936 40 1],[511.514 50 1],[511.74 70 1],[512.08 135 1],[512.175 100 1],[512.985 40 1],[517.542 120 1],[518.444 70 1],[524.877 100 2],[525.432 15 0],[526.274 6 0],[530.945 75 1],[541.141 40 1],[541.845 70 1],[543.67 110 1],[549.75 65 1],[550.708 70 1],[551.3 160 1],[552.328 125 1],[553.65 65 1],[555.545 95 1],[557.69 120 1],[563.67 100 1],[564.515 50 2],[570.85 80 1],[570.991 25 0],[572.18 50 1],[572.317 20 2],[572.768 25 0],[581.95 50 2],[585.315 105 1],[590.34 245 1],[591.54 130 1],[591.878 60 1],[606.29 65 1],[609.595 125 1],[610.866 105 1],[611.59 90 1],[612.87 115 1],[612.94 120 1],[613.21 160 1],[614 75 1],[614.323 45 1],[614.81 70 1],[614.95 95 1],[616.115 40 1],[616.245 90 1],[619.772 100 2],[622.428 50 1],[622.83 140 1],[623.11 70 1],[630.48 135 1],[636.23 145 1],[646.9 150 1],[654.12 105 1],[675.188 95 1],[676.59 90 1],[678.372 50 1],[684.744 4 0],[689.15 160 1],[690.013 2 0],[718.29 190 1],[725.5 90 1],[727.65 105 1],[730.34 90 1],[735.06 160 1],[763.27 50 1],[768.29 50 1],[774.07 105 1],[777.696 50 1],[778.9 90 1],[780.68 35 1],[781.45 35 1],[784.09 45 1],[805.078 10 0],[822.7 120 1],[823.866 15 0],[831.492 7.5 0],[843.455 25 1],[867.895 15 0],[868.263 10 0],[870.025 25 0],[881.35 50 1],[883.26 40 1],[889.447 20 0],[917.008 5 0],[919.77 60 1],[920.2 60 1],[921.3 110 1],[924.11 80 1],[934.983 20 0],[937.027 30 0],[942.799 10 0],[997.786 50 0],[1025.703 100 0],[1071.742 30 0],[1074.431 50 0],[1133.472 10 0],[1173.148 10 0],[1291.259 5 0],[1342.996 4.5 0],[1382.448 2.5 0],[1431.625 3 0],[1441.92 1.5 0],[1466.866 3 0],[1471.908 3.5 0],[1650.4311 1 0],[2229.1061 3 0],[2387.9131 3.5 0]}{ALLx9000x9000x245x100x7.5x12.5x0}{UVx6500x6500x190x50x7.5x12.5x0}{VISx9000x9000x245x100x0x0x0}{IVx120x100x120x0x0x0x0}%
-\pgfspectra@elt@search{#1}{Sn}{[1.6 7 1],[35.514 120 4],[36.101 150 4],[37.255 100 4],[60.523 50 3],[61.904 50 3],[62.873 50 3],[75.301 100 2],[76.062 50 2],[77.579 75 2],[78.468 50 2],[89.992 1 1],[90.822 50 3],[91.092 200 2],[91.74 2 1],[93.563 1 1],[94.583 3 1],[95.45 4 1],[95.625 500 3],[98.513 7 1],[99.721 4 1],[101.092 50 2],[101.626 2 1],[101.972 500 3],[104.078 4 1],[104.132 1 1],[104.449 1000 3],[104.884 50 2],[105.837 100 3],[105.859 50 3],[106.21 3 1],[107.341 1000 3],[108.75 200 3],[108.935 200 4],[109.692 300 3],[110.324 50 3],[110.819 8 1],[111.934 0 3],[112.068 200 3],[113.279 100 4],[113.929 1000 2],[115.833 1000 2],[115.905 4 1],[116.074 200 4],[116.109 200 2],[116.143 10 1],[116.158 100 2],[116.294 3 1],[117.626 100 4],[118.051 4 1],[118.062 100 2],[118.425 1000 2],[118.992 100 4],[118.999 200 2],[120.406 200 2],[120.572 100 4],[121.052 2000 2],[121.51 100 2],[121.814 100 2],[121.907 9 1],[122.37 13 1],[123.017 100 2],[123.138 100 2],[124.3 11 1],[124.363 500 2],[125.138 2000 4],[125.992 1000 2],[127.631 40 2],[128.381 100 4],[129.086 20 1],[129.436 200 4],[130.22 100 4],[130.597 1000 2],[131.455 1000 3],[131.659 20 1],[132.734 1000 2],[133.47 200 2],[134.605 200 2],[134.765 1000 2],[136.971 200 2],[138.674 1000 2],[140.052 25 1],[141.061 500 2],[143.752 1000 3],[144.977 200 2],[147.515 20 1],[148.922 9 1],[153.29 100 3],[157.036 1000 2],[167.429 50 2],[173.721 10 0],[175.146 15 0],[175.33 10 0],[175.8 7 1],[176.498 20 0],[177.34 20 0],[179.075 30 0],[180.46 80 0],[181.134 15 1],[181.171 500 2],[181.304 30 0],[181.574 40 0],[181.931 25 0],[182.3 120 0],[183.189 9 1],[184.875 50 0],[185.2 30 0],[186.032 200 0],[186.142 20 0],[186.552 20 0],[186.596 30 0],[187.329 15 0],[188.264 30 0],[188.605 80 0],[189.14 100 0],[189.729 20 0],[189.991 12 1],[190.93 50 0],[191.161 40 0],[191.352 20 0],[192.531 80 0],[192.677 20 0],[192.795 15 0],[192.89 40 0],[193.317 25 0],[194.186 500 2],[194.269 20 0],[195.215 150 0],[195.552 50 2],[196.021 15 0],[197.146 30 0],[197.76 50 0],[198.42 80 0],[199.188 15 0],[199.498 20 0],[200.805 25 0],[201.576 30 0],[202.698 30 0],[204.066 50 0],[204.09 20 0],[205.403 50 0],[205.831 70 0],[206.4 20 0],[206.858 80 0],[207.289 100 0],[207.308 100 0],[208.062 25 0],[209.158 30 0],[209.435 40 0],[209.639 200 0],[210.093 100 0],[211.393 100 0],[212.126 50 0],[214.073 25 0],[214.143 20 0],[214.846 15 0],[214.863 1 1],[214.873 40 0],[215.143 20 0],[215.154 30 1],[217.132 80 0],[219.449 150 0],[219.934 300 0],[220.965 400 0],[220.967 4 1],[221.105 40 0],[223.172 80 0],[224.605 400 0],[224.607 6 1],[225.117 60 0],[226.719 30 0],[226.891 400 0],[228.226 20 0],[228.668 200 0],[231.723 600 0],[233.48 300 0],[235.484 1000 0],[235.79 20 0],[236.034 3 1],[236.833 22 1],[238.072 60 0],[238.454 4 1],[240.815 100 0],[242.17 800 0],[242.949 1000 0],[243.352 1 1],[244.898 15 1],[245.524 60 0],[247.64 20 0],[248.339 300 0],[248.348 13 1],[248.699 10 1],[249.57 200 0],[252.261 5 1],[252.392 90 0],[253.117 80 0],[254.655 400 0],[255.801 40 0],[257.158 500 0],[259.442 200 0],[263.694 50 0],[266.124 200 0],[266.493 2 1],[270.651 700 0],[272.782 2 1],[276.178 20 0],[277.981 150 0],[278.503 80 0],[278.796 60 0],[281.259 60 0],[281.358 80 0],[282.552 2 1],[283.999 1400 0],[284.642 1 1],[285.062 200 0],[286.332 1000 0],[291.28 1 1],[291.354 200 0],[291.982 6 1],[299.1 3 1],[299.444 7 1],[300.914 700 0],[301.218 1 1],[302.394 8 1],[303.28 200 0],[303.412 850 0],[304.75 12 1],[309.469 6 1],[314.184 60 0],[317.505 550 0],[321.871 40 0],[326.234 550 0],[328.321 50 1],[333.062 110 0],[335.197 60 1],[340.748 2 1],[347.246 10 1],[353.757 7 1],[357.545 11 1],[358.239 3 1],[362.008 2 1],[362.054 6 1],[365.578 40 0],[371.523 6 1],[380.102 280 0],[384.144 4 1],[429.465 1 1],[452.474 40 0],[457.913 1 1],[458.029 1 1],[487.722 2 1],[494.431 3 1],[497.973 20 0],[507.114 2 1],[507.267 2 1],[517.454 20 0],[533.236 10 1],[556.195 20 1],[558.892 25 1],[559.62 2 1],[563.171 500 0],[575.359 15 0],[579.72 1 1],[579.918 15 1],[592.544 50 0],[597.03 100 0],[603.77 150 0],[605.486 200 -1],[606.9 250 0],[607.346 100 0],[607.748 6 1],[607.97 5 1],[614.971 400 0],[615.46 200 0],[617.15 150 0],[631.078 100 0],[635.435 40 0],[645.35 70 1],[676.145 8 1],[684.405 25 1],[719.14 20 1],[738.779 10 1],[739.86 20 0],[740.862 1 1],[768.53 30 0],[774.18 13 1],[775.497 100 0],[790.4 3 1],[803.05 100 0],[803.93 30 0],[811.409 200 0],[812.1 30 0],[834.935 30 0],[835.704 80 0],[842.272 300 0],[855.26 400 0],[868.17 50 0],[901.895 30 0],[941.086 50 0],[941.537 80 0],[961.64 150 0],[974.11 50 0],[974.28 100 0],[980.538 300 0],[985.052 500 0],[1045.647 25 0],[1080.758 11 0],[1089.4 54 0],[1119.185 70 0],[1127.766 56 0],[1133.697 17 0],[1145.459 200 0],[1161.626 200 0],[1167.077 76 0],[1169.445 25 0],[1173.978 258 0],[1182.518 96 0],[1183.582 106 0],[1193.299 254 0],[1200.95 48 0],[1231.324 111 0],[1233.56 33 0],[1253.087 42 0],[1253.65 42 0],[1278.82 37 0],[1288.85 89 0],[1298.17 187 0],[1300.03 20 0],[1301.85 187 0],[1308.15 68 0],[1346.02 378 0],[1360.82 144 0],[1501.82 13 0],[1546.42 30 0],[1700.05 20 0],[1780.75 10 0],[2062.2199 20 0],[2086.1699 40 0],[2168.6199 8 0],[2213.1699 4 0],[2299.7199 3 0],[2432.7199 4 0],[2473.8199 4 0]}{ALLx2000x1400x70x2000x1000x2000x200}{UVx2000x1400x60x2000x1000x2000x0}{VISx500x500x70x0x0x0x200}{IVx500x500x3x0x0x0x0}%
+\pgfspectra@elt@search{#1}{Sn}{[35.514 120 4],[36.101 150 4],[37.255 100 4],[60.523 50 3],[61.904 50 3],[62.873 50 3],[75.301 100 2],[76.062 50 2],[77.579 75 2],[78.468 50 2],[89.992 1 1],[90.822 50 3],[91.092 200 2],[91.74 2 1],[93.563 1 1],[94.583 3 1],[95.45 4 1],[95.625 500 3],[98.513 7 1],[99.721 4 1],[101.092 50 2],[101.626 2 1],[101.972 500 3],[104.078 4 1],[104.132 1 1],[104.449 1000 3],[104.884 50 2],[105.837 100 3],[105.859 50 3],[106.21 3 1],[107.341 1000 3],[108.75 200 3],[108.935 200 4],[109.692 300 3],[110.324 50 3],[110.819 8 1],[111.934 0 3],[112.068 200 3],[113.279 100 4],[113.929 1000 2],[115.833 1000 2],[115.905 4 1],[116.074 200 4],[116.109 200 2],[116.143 10 1],[116.158 100 2],[116.294 3 1],[117.626 100 4],[118.051 4 1],[118.062 100 2],[118.425 1000 2],[118.992 100 4],[118.999 200 2],[120.406 200 2],[120.572 100 4],[121.052 2000 2],[121.51 100 2],[121.814 100 2],[121.907 9 1],[122.37 13 1],[123.017 100 2],[123.138 100 2],[124.3 11 1],[124.363 500 2],[125.138 2000 4],[125.992 1000 2],[127.631 40 2],[128.381 100 4],[129.086 20 1],[129.436 200 4],[130.22 100 4],[130.597 1000 2],[131.455 1000 3],[131.659 20 1],[132.734 1000 2],[133.47 200 2],[134.605 200 2],[134.765 1000 2],[136.971 200 2],[138.674 1000 2],[140.052 25 1],[141.061 500 2],[143.752 1000 3],[144.977 200 2],[147.515 20 1],[148.922 9 1],[153.29 100 3],[157.036 1000 2],[167.429 50 2],[173.721 10 0],[175.146 15 0],[175.33 10 0],[175.8 7 1],[176.498 20 0],[177.34 20 0],[179.075 30 0],[180.46 80 0],[181.134 15 1],[181.171 500 2],[181.304 30 0],[181.574 40 0],[181.931 25 0],[182.3 120 0],[183.189 9 1],[184.875 50 0],[185.2 30 0],[186.032 200 0],[186.142 20 0],[186.552 20 0],[186.596 30 0],[187.329 15 0],[188.264 30 0],[188.605 80 0],[189.14 100 0],[189.729 20 0],[189.991 12 1],[190.93 50 0],[191.161 40 0],[191.352 20 0],[192.531 80 0],[192.677 20 0],[192.795 15 0],[192.89 40 0],[193.317 25 0],[194.186 500 2],[194.269 20 0],[195.215 150 0],[195.552 50 2],[196.021 15 0],[197.146 30 0],[197.76 50 0],[198.42 80 0],[199.188 15 0],[199.498 20 0],[200.805 25 0],[201.576 30 0],[202.698 30 0],[204.066 50 0],[204.09 20 0],[205.403 50 0],[205.831 70 0],[206.4 20 0],[206.858 80 0],[207.289 100 0],[207.308 100 0],[208.062 25 0],[209.158 30 0],[209.435 40 0],[209.639 200 0],[210.093 100 0],[211.393 100 0],[212.126 50 0],[214.073 25 0],[214.143 20 0],[214.846 15 0],[214.863 1 1],[214.873 40 0],[215.143 20 0],[215.154 30 1],[217.132 80 0],[219.449 150 0],[219.934 300 0],[220.965 400 0],[220.967 4 1],[221.105 40 0],[223.172 80 0],[224.605 400 0],[224.607 6 1],[225.117 60 0],[226.719 30 0],[226.891 400 0],[228.226 20 0],[228.668 200 0],[231.723 600 0],[233.48 300 0],[235.484 1000 0],[235.79 20 0],[236.034 3 1],[236.833 22 1],[238.072 60 0],[238.454 4 1],[240.815 100 0],[242.17 800 0],[242.949 1000 0],[243.352 1 1],[244.898 15 1],[245.524 60 0],[247.64 20 0],[248.339 300 0],[248.348 13 1],[248.699 10 1],[249.57 200 0],[252.261 5 1],[252.392 90 0],[253.117 80 0],[254.655 400 0],[255.801 40 0],[257.158 500 0],[259.442 200 0],[263.694 50 0],[266.124 200 0],[266.493 2 1],[270.651 700 0],[272.782 2 1],[276.178 20 0],[277.981 150 0],[278.503 80 0],[278.796 60 0],[281.259 60 0],[281.358 80 0],[282.552 2 1],[283.999 1400 0],[284.642 1 1],[285.062 200 0],[286.332 1000 0],[291.28 1 1],[291.354 200 0],[291.982 6 1],[299.1 3 1],[299.444 7 1],[300.914 700 0],[301.218 1 1],[302.394 8 1],[303.28 200 0],[303.412 850 0],[304.75 12 1],[309.469 6 1],[314.184 60 0],[317.505 550 0],[321.871 40 0],[326.234 550 0],[328.321 50 1],[333.062 110 0],[335.197 60 1],[340.748 2 1],[347.246 10 1],[353.757 7 1],[357.545 11 1],[358.239 3 1],[362.008 2 1],[362.054 6 1],[365.578 40 0],[371.523 6 1],[380.102 280 0],[384.144 4 1],[429.465 1 1],[452.474 40 0],[457.913 1 1],[458.029 1 1],[487.722 2 1],[494.431 3 1],[497.973 20 0],[507.114 2 1],[507.267 2 1],[517.454 20 0],[533.236 10 1],[556.195 20 1],[558.892 25 1],[559.62 2 1],[563.171 500 0],[575.359 15 0],[579.72 1 1],[579.918 15 1],[592.544 50 0],[597.03 100 0],[603.77 150 0],[605.486 200 -1],[606.9 250 0],[607.346 100 0],[607.748 6 1],[607.97 5 1],[614.971 400 0],[615.46 200 0],[617.15 150 0],[631.078 100 0],[635.435 40 0],[645.35 70 1],[676.145 8 1],[684.405 25 1],[719.14 20 1],[738.779 10 1],[739.86 20 0],[740.862 1 1],[768.53 30 0],[774.18 13 1],[775.497 100 0],[790.4 3 1],[803.05 100 0],[803.93 30 0],[811.409 200 0],[812.1 30 0],[834.935 30 0],[835.704 80 0],[842.272 300 0],[855.26 400 0],[868.17 50 0],[901.895 30 0],[941.086 50 0],[941.537 80 0],[961.64 150 0],[974.11 50 0],[974.28 100 0],[980.538 300 0],[985.052 500 0],[1045.647 25 0],[1080.758 11 0],[1089.4 54 0],[1119.185 70 0],[1127.766 56 0],[1133.697 17 0],[1145.459 200 0],[1161.626 200 0],[1167.077 76 0],[1169.445 25 0],[1173.978 258 0],[1182.518 96 0],[1183.582 106 0],[1193.299 254 0],[1200.95 48 0],[1231.324 111 0],[1233.56 33 0],[1253.087 42 0],[1253.65 42 0],[1278.82 37 0],[1288.85 89 0],[1298.17 187 0],[1300.03 20 0],[1301.85 187 0],[1308.15 68 0],[1346.02 378 0],[1360.82 144 0],[1501.82 13 0],[1546.42 30 0],[1700.05 20 0],[1780.75 10 0],[2062.2199 20 0],[2086.1699 40 0],[2168.6199 8 0],[2213.1699 4 0],[2299.7199 3 0],[2432.7199 4 0],[2473.8199 4 0]}{ALLx2000x1400x70x2000x1000x2000x200}{UVx2000x1400x60x2000x1000x2000x0}{VISx500x500x70x0x0x0x200}{IVx500x500x3x0x0x0x0}%[1.6 7 1],
\pgfspectra@elt@search{#1}{Sb}{[69.118 10 2],[69.12 1 1],[69.869 10 2],[69.922 3 4],[72.286 15 2],[72.481 8 2],[73.233 15 2],[74.606 1 4],[76.443 1 1],[81.485 1 1],[83.1 6 4],[84.939 1 1],[85.508 2 1],[87.684 4 1],[89.802 1 4],[92.107 4 1],[98.357 6 1],[99.962 15 2],[100.113 6 1],[100.943 6 1],[101.194 40 2],[105.221 6 1],[105.627 8 1],[105.658 10 2],[105.732 8 1],[106.59 40 2],[106.993 20 2],[107.043 20 2],[107.376 5 2],[107.381 6 1],[107.582 30 2],[107.81 5 2],[108.406 20 2],[109.834 10 2],[110.432 8 4],[113.543 10 2],[115.149 30 2],[115.774 40 2],[116.696 12 2],[120.52 50 2],[121.064 50 2],[122.6 12 4],[123.03 6 1],[127.498 8 1],[130.669 20 2],[132.74 8 1],[135.804 6 1],[137.958 8 2],[138.47 8 1],[140.418 20 2],[140.783 6 1],[142.957 10 2],[143.076 10 0],[143.649 8 1],[146.419 10 0],[148.657 20 0],[149.136 40 0],[150.57 12 4],[151.257 50 0],[152.447 12 4],[153.274 120 0],[153.506 80 0],[156.551 6 1],[157.611 8 1],[158.136 7 1],[159.996 80 0],[160.698 10 1],[161.28 200 0],[162.33 100 0],[165.12 50 0],[165.704 20 1],[166.26 100 0],[167.389 15 2],[169.885 50 0],[171.023 3 2],[171.184 15 2],[171.693 80 0],[171.745 150 0],[172.343 150 0],[172.533 15 2],[173.619 100 0],[173.643 8 1],[175.779 50 0],[176.23 12 2],[176.576 100 0],[178.087 100 0],[178.824 100 0],[180.018 150 0],[181.05 50 0],[181.42 80 0],[182.95 100 0],[183.932 12 2],[185.889 60 0],[186.817 50 0],[187.115 300 0],[188.256 150 0],[189.128 70 0],[189.939 70 0],[192.708 100 0],[194.613 10 2],[195.039 200 0],[196.43 80 0],[198.605 60 0],[199.06 6 1],[202.4 50 0],[202.949 60 0],[203.977 70 0],[204.957 150 0],[205.41 3 2],[206.343 50 0],[206.833 1000 0],[207.956 100 0],[209.185 2 2],[209.841 50 0],[211.848 80 0],[212.7 5 2],[212.739 100 0],[213.705 50 0],[213.969 100 0],[214.18 10 1],[214.183 50 0],[214.486 100 0],[215.891 50 0],[217.581 1500 0],[217.919 250 0],[217.925 6 1],[220.132 200 0],[220.845 300 0],[220.85 6 1],[222.073 150 0],[222.198 100 0],[222.493 120 0],[222.515 6 1],[226.251 300 0],[228.898 120 0],[229.344 150 0],[230.646 300 0],[231.147 2500 0],[231.589 150 0],[237.367 400 0],[238.364 300 0],[239.522 100 0],[242.213 150 0],[242.635 250 0],[244.551 400 0],[247.832 400 0],[248.044 150 0],[248.046 8 1],[250.771 5 2],[251.054 100 0],[252.852 2000 0],[252.854 15 1],[256.775 10 1],[257.406 150 0],[259.013 15 2],[259.805 1500 0],[259.809 500 0],[261.231 300 0],[261.42 1 2],[261.717 12 2],[261.763 1 2],[265.26 200 0],[265.655 12 1],[266.939 20 2],[267.064 300 0],[268.276 200 0],[269.225 120 0],[271.89 150 0],[276.995 400 0],[278.587 5 2],[279.027 20 2],[285.109 12 1],[285.111 100 0],[287.792 1000 0],[296.61 12 1],[298.096 15 1],[302.983 500 0],[303.401 12 1],[304.067 12 1],[323.252 600 0],[324.128 20 1],[326.751 700 0],[333.661 20 2],[338.309 12 1],[338.315 100 0],[349.846 15 1],[350.407 50 2],[351.906 15 2],[352.047 12 1],[353.345 15 2],[355.918 40 2],[356.625 40 2],[363.78 25 1],[363.783 250 0],[372.278 20 1],[372.279 200 0],[373.89 30 2],[385.022 20 1],[403.355 200 0],[403.356 20 1],[413.363 20 1],[414.054 15 1],[419.517 15 1],[421.907 20 1],[426.509 40 2],[431.432 20 1],[434.483 12 1],[435.216 50 2],[441.142 12 1],[444.648 12 1],[450.692 12 1],[451.45 15 1],[459.189 30 2],[459.69 30 1],[459.909 20 1],[460.477 15 1],[464.732 30 1],[467.574 20 1],[469.291 30 2],[471.126 40 1],[473.544 12 1],[475.781 20 1],[476.536 20 1],[476.691 12 1],[478.403 30 1],[480.201 20 1],[483.282 20 1],[487.724 20 1],[494.74 15 1],[504.456 15 1],[516.632 12 1],[517.655 15 1],[523.894 20 1],[524.771 1 2],[535.424 20 1],[546.408 15 1],[549.032 30 0],[555.61 40 0],[556.813 15 1],[560.219 30 0],[563.202 100 0],[563.975 30 1],[569.08 1 2],[571.73 1 2],[583.034 60 0],[584.55 3 2],[589.509 15 1],[600.521 100 1],[605.341 20 1],[607.98 30 1],[613.004 50 1],[615.494 20 1],[624.67 5 2],[628.76 3 2],[630.276 12 1],[661.149 20 0],[664.744 30 1],[668.801 15 1],[680.667 6 1],[764.828 30 0],[784.444 80 0],[792.465 200 0],[796.955 40 0],[841.169 60 0],[857.264 150 0],[861.955 100 0],[868.27 30 0],[913.221 30 0],[951.868 400 0],[986.678 30 0],[994.914 400 0],[1007.849 200 0],[1026.101 300 0],[1036.433 50 0],[1048.83 50 0],[1058.56 200 0],[1067.741 1000 0],[1074.194 800 0],[1079.411 80 0],[1083.973 600 0],[1086.858 200 0],[1087.955 400 0],[1101.279 300 0],[1107.995 40 0],[1108.498 30 0],[1110.484 50 0],[1110.852 50 0],[1118.961 30 0],[1126.623 150 0],[1186.337 30 0],[1195.77 1 0],[1211.606 5 0],[1227.66 2 0],[1246.675 2 0]}{ALLx2500x2500x100x50x0x12x0}{UVx2500x2500x25x50x0x12x0}{VISx200x200x100x50x0x0x0}{IVx1000x1000x0x0x0x0x0}%
\pgfspectra@elt@search{#1}{Te}{[79.96 3 1],[80.228 4 1],[94.262 3 1],[100.373 3 1],[100.78 3 1],[101.427 2.5 1],[102.279 2.5 1],[105.7 3 1],[105.951 4 1],[106.886 3 1],[107.766 4 1],[109.011 3 1],[114.404 3 1],[115.31 2.5 1],[116.142 5 1],[117.434 5 1],[117.579 6 1],[120.854 4.5 1],[121.3 2.5 1],[122.098 4.5 1],[125.362 4.5 1],[127.052 4.5 1],[127.476 3.5 1],[130.653 4 1],[132.492 5 1],[133.642 3.5 1],[134.52 3.5 1],[136.324 4.5 1],[136.673 4 1],[137.48 5 1],[139.522 3 1],[143.952 3 1],[146.525 3 1],[148.956 3.5 1],[160.799 4 1],[160.841 5 1],[161.315 5 1],[163.891 3 1],[165.54 2.5 0],[168.85 2.5 0],[170 3 0],[170.158 3 1],[170.8 2.5 0],[175.1 3 0],[175.94 2.5 0],[177.5 2.5 0],[179.57 3 0],[179.63 3 0],[182.24 5 0],[182.55 3 0],[185.06 3 0],[185.21 3 0],[185.38 3 0],[185.72 4 0],[186.04 3 0],[196.288 1.5 1],[199.483 3.5 0],[200.02 3 0],[200.202 13000 0],[207.09 4 0],[208.116 3250 0],[214.281 9000 0],[214.725 1600 0],[215.985 180 0],[220.874 4.5 0],[225.549 5 0],[225.902 250 0],[226.552 5 0],[237.306 10 1],[238.326 600 0],[238.578 750 0],[238.782 10 1],[240.163 5 1],[243.647 5 1],[243.869 25 1],[253.072 60 0],[256.782 10 1],[257.496 5 1],[257.61 2.5 1],[257.924 3.5 1],[259.112 5 1],[259.285 5 1],[260.572 5 1],[262.192 2.5 1],[262.486 5 1],[262.796 10 1],[264.189 10 1],[264.848 10 1],[264.966 50 1],[265.77 20 1],[266.11 40 1],[267.713 55 0],[271.158 10 1],[276.965 3 0],[284.117 5 1],[284.615 5 1],[285.829 50 1],[286.1 10 1],[286.882 20 1],[289.541 75 1],[291.989 15 1],[294.211 25 1],[294.668 25 1],[296.729 35 1],[297.367 10 1],[297.59 25 1],[299.704 7.5 1],[301.202 7.5 1],[301.758 25 1],[302.331 10 1],[304.7 35 1],[305.246 10 1],[306.316 5 1],[307.356 7.5 1],[310.444 4 1],[313.258 5 1],[316.066 10 1],[317.514 50 0],[318.983 5 1],[321.121 2.5 1],[325.68 30 1],[326.877 15 1],[328.263 15 1],[332.192 20 1],[332.311 20 1],[332.922 30 1],[335.21 30 1],[336.279 30 1],[337.41 12.5 1],[340.679 75 1],[341.963 10 1],[344.225 25 1],[345.512 20 1],[345.688 10 1],[348.032 10 1],[348.367 20 1],[348.611 10 1],[352.111 25 1],[355.219 25 1],[361.178 50 1],[361.757 25 1],[364.446 20 1],[367.926 10 1],[372.566 15 1],[379.722 20 1],[380.092 10 1],[390.567 10 1],[391.854 10 1],[393.149 15 1],[394.798 10 1],[396.922 20 1],[397.594 12.5 1],[398.177 10 1],[400.652 25 1],[401.169 10 1],[402.973 15 1],[404.717 20 1],[404.888 15 1],[407.348 7.5 1],[410.104 15 1],[412.732 35 1],[416.355 15 1],[416.977 50 1],[417.929 15 1],[421.131 12.5 1],[422.573 40 1],[424.647 15 1],[425.115 10 1],[426.111 50 1],[426.436 15 1],[427.343 30 1],[428.585 40 1],[432.09 20 1],[436.128 15 1],[436.4 75 1],[437.712 15 1],[438.51 37.5 1],[439.6 30 1],[447.863 85 1],[453.707 40 1],[455.778 50 1],[463.062 35 1],[464.112 50 1],[465.437 90 1],[468.691 100 1],[469.638 50 1],[470.653 50 1],[476.605 50 1],[477.156 35 1],[478.487 50 1],[482.714 50 1],[483.128 75 1],[484.29 75 1],[486.512 65 1],[486.624 100 1],[488.522 40 1],[490.444 40 1],[496.188 30 1],[500.082 30 1],[508.3 4 0],[514.87 3.5 0],[544.984 25 1],[548.795 25 1],[557.635 75 1],[564.926 75 1],[566.62 50 1],[570.812 100 1],[573.35 3.5 0],[575.585 75 1],[578.91 4 0],[593.615 25 1],[597.468 50 1],[627.35 4 0],[634.97 4 0],[636.713 25 1],[640.59 4 0],[645.67 3.5 0],[661.34 4 0],[664.858 5 1],[666.02 4 0],[669 4 0],[679 5 0],[683.76 10 0],[685.47 10 0],[701.606 5 1],[703.913 5 1],[719.11 7.5 0],[723.662 5 1],[726.35 10 0],[728.09 4 0],[728.926 5 1],[744.539 5 1],[746.098 6 1],[746.875 7.5 1],[748.126 5 1],[755.68 5 0],[768.861 3 1],[775.91 7.5 0],[781.879 4 1],[786.161 4 1],[792.169 7.5 1],[794.314 7.5 1],[795.034 5 1],[797.29 10 0],[805.615 3 1],[806.14 15 0],[808.25 5 0],[812.244 5 1],[813.039 4 1],[815.447 4 1],[818.644 10 1],[819.094 3 1],[825.15 5 0],[827.353 7.5 1],[827.66 5 0],[829.11 5 0],[835.58 7.5 0],[837.212 5 1],[846.98 3.5 0],[849.22 4 0],[850.08 4 0],[852.14 6 0],[853.568 5 1],[857.578 6 1],[860.463 5 1],[862.168 4 1],[863.21 3.5 0],[867.295 7.5 1],[870.109 6 0],[873.381 5 1],[875.818 102.5 0],[883.152 6 0],[885.115 9 0],[889.792 3 1],[900.437 40.5 0],[904.339 9 0],[919.68 6 0],[920.678 7.5 0],[920.764 8.5 0],[946.9 6 0],[972.274 2830 0],[978.554 92.5 0],[984.23 54.5 0],[986.892 266 0],[990.261 59 0],[995.63 344.5 0],[995.993 18.5 0],[997.713 162.5 0],[997.931 68 0],[998.585 22.5 0],[1005.141 2975 0],[1009.101 2048.5 0],[1009.957 52 0],[1010.605 139.5 0],[1011.808 190.5 0],[1015.106 148 0],[1030.056 198.5 0],[1032.305 102.5 0],[1049.357 372.5 0],[1050.986 98.5 0],[1091.834 940 0],[1100.78 149 0],[1108.956 5100 0],[1116.374 254 0],[1148.723 3310 0],[1197.896 140 0],[1256.624 94 0],[1258.919 194.5 0],[1280.55 80.5 0],[1310.418 200 0],[1324.775 790 0],[1331.663 241.5 0],[1403.709 108.5 0],[1407.253 72 0],[1433.574 217 0],[1441.746 110 0],[1451.351 525 0],[1455.468 64.5 0],[1545.245 740 0],[1554.623 1215 0],[1640.39 1880 0],[1730.3539 980 0],[1829.159 1390 0],[1877.7301 197 0],[1962.352 134.5 0],[2014.7539 119.5 0],[2104.373 510 0],[2160.25 232 0],[2179.9641 18.5 0],[2255.5289 37 0],[2275.566 24 0],[2329.4939 13.5 0],[2397.8699 8.5 0],[2405.9039 12.5 0],[2642.8619 6.5 0],[2653.917 19 0],[2655.374 7.5 0],[2717.926 3.5 0]}{ALLx13000x13000x100x0x0x0x0}{UVx13000x13000x75x0x0x0x0}{VISx100x10x100x0x0x0x0}{IVx5100x5100x10x0x0x0x0}%
-\pgfspectra@elt@search{#1}{I}{[36.378 3 4],[38.074 3.6 4],[56.553 4.5 4],[60.186 0.5 3],[60.757 5 4],[61.246 0.6 3],[61.517 0.4 3],[65.422 0.4 3],[65.456 0.4 3],[65.58 0.2 1],[65.9 0.6 1],[66.398 0.8 1],[66.452 0.8 1],[66.506 0.8 1],[66.57 15 1],[66.681 0.6 2],[70.511 0.8 2],[71.955 100 1],[72.298 100 1],[78.464 0.7 2],[78.48 0.7 2],[79.552 0.8 2],[79.816 100 1],[83.41 120 1],[84.78 60 1],[86.597 0.5 2],[87.349 150 1],[87.594 100 1],[87.984 200 1],[88.188 150 1],[89.1 100 1],[89.317 100 1],[91.928 0.7 3],[92.038 0.5 2],[96.117 0.6 2],[100.057 120 1],[100.335 100 1],[101.858 400 1],[103.466 1000 1],[105.474 150 1],[106.634 200 1],[107.521 300 1],[107.858 0.6 2],[109.42 0.8 2],[110.5 500 1],[111.116 250 1],[111.722 150 1],[112.525 350 1],[113.15 200 1],[113.975 120 1],[113.98 1000 1],[115.467 150 1],[115.987 100 1],[116.056 1000 1],[116.648 2000 1],[116.705 150 1],[117.584 500 1],[117.865 1000 1],[118.734 1500 1],[119.085 1000 1],[119.529 1.5 0],[119.888 500 1],[120.022 700 1],[121.841 20 0],[122.089 2000 1],[122.405 60 0],[122.408 60 0],[122.889 50 0],[123.406 2000 1],[124.466 0.4 2],[125.134 60 0],[125.235 0.8 2],[125.915 250 0],[125.951 300 0],[126.127 80 0],[126.757 60 0],[126.76 60 0],[127.526 150 0],[128.94 300 0],[130.034 1000 0],[130.298 300 0],[130.693 0.5 2],[131.395 300 0],[131.754 300 0],[133.019 200 0],[133.652 2000 1],[135.51 500 0],[135.797 300 0],[136.097 500 0],[136.111 300 0],[136.771 250 0],[136.822 250 0],[138.323 400 0],[139.075 300 0],[139.29 200 0],[140.001 200 0],[142.549 800 0],[144.626 500 0],[145.318 500 0],[145.739 500 0],[145.747 500 0],[145.798 1000 0],[145.879 250 0],[145.915 400 0],[146.583 250 0],[148.592 100 0],[149.289 500 0],[150.704 500 0],[151.468 500 0],[151.805 1500 0],[152.645 250 0],[159.358 500 0],[161.76 500 0],[164.078 250 0],[170.207 1500 0],[178.276 1200 0],[179.909 500 0],[183.038 7500 0],[184.445 1500 0],[206.163 200 0],[222.443 0.1 2],[223.812 0.1 2],[224.93 0.5 3],[224.931 0.3 2],[230.938 0.2 2],[234.084 0.4 3],[234.085 0.3 2],[235.043 0.3 2],[235.346 0.2 2],[236.113 0.7 3],[236.774 0.4 2],[236.775 0.5 3],[237.145 0.2 2],[237.245 0.3 2],[237.245 0.6 3],[237.646 0.7 3],[237.647 0.4 2],[238.528 0.4 3],[238.711 0.8 3],[238.712 0.4 2],[239.2 0.6 3],[239.201 0.3 2],[240.305 0.4 3],[240.306 0.2 2],[240.363 0.2 2],[240.801 10 1],[241.485 0.2 2],[241.845 0.2 3],[241.849 0.2 2],[241.885 0.2 2],[241.918 10 1],[242.389 0.3 3],[242.391 0.2 2],[242.61 0.9 3],[242.612 0.5 2],[243.485 0.6 3],[243.488 0.3 2],[246.25 0.2 2],[246.668 0.3 3],[246.669 0.3 2],[246.696 0.3 3],[246.699 0.3 2],[247.535 0.8 3],[247.536 0.6 2],[248.551 0.4 3],[248.924 0.5 3],[248.927 0.4 2],[249.32 0.4 3],[249.321 0.2 2],[249.427 0.2 2],[249.474 10 1],[249.516 0.3 2],[249.607 0.2 2],[250.138 0.2 3],[250.141 0.3 2],[251.374 0.3 3],[251.682 0.2 2],[251.974 0.8 3],[251.975 0.6 2],[252.172 0.4 2],[252.172 0.6 3],[253.198 0.4 3],[253.199 0.3 2],[253.36 10 1],[253.427 20 1],[253.754 0.5 3],[253.756 0.2 2],[254.567 0.8 3],[254.571 0.7 2],[256.624 100 1],[258.279 200 1],[259.346 30 1],[264.077 0.4 2],[264.077 0.4 3],[264.211 0.4 2],[264.211 0.5 3],[265.223 0.8 3],[265.225 0.6 2],[268.898 20 1],[273.012 50 1],[276.515 2 1],[280.859 20 1],[281.845 0.3 3],[281.848 0.2 2],[283.944 0.2 2],[286.467 0.4 2],[286.468 0.6 3],[287.863 150 1],[288.515 0.4 2],[291.097 0.4 3],[291.098 0.3 2],[291.733 0.5 3],[291.735 0.3 2],[293.111 0.2 2],[299.387 100 1],[300.568 0.2 2],[306.917 0.4 3],[306.923 0.3 2],[307.875 500 1],[315.388 0.3 2],[316.103 20 1],[317.011 0.4 3],[317.014 0.3 2],[317.507 100 1],[318.164 0.4 3],[318.166 0.3 2],[321.012 0.4 3],[321.014 0.3 2],[321.348 0.6 3],[321.349 0.4 2],[322.49 0.6 3],[322.493 0.4 2],[330.047 0.2 2],[335.553 30 1],[342.499 25 1],[347.953 0.2 2],[349.741 30 1],[352.69 50 1],[354.69 0.4 3],[354.692 0.3 2],[361.381 0.3 2],[374.214 20 1],[375.44 0.2 2],[375.455 0.2 2],[396.316 0.3 2],[407.714 0.3 2],[410.223 20 0],[412.921 20 0],[413.415 10 0],[432.184 50 0],[445.286 30 1],[459.977 20 1],[463.245 30 1],[466.648 50 1],[467.553 100 1],[476.331 25 0],[486.232 100 0],[491.694 20 0],[498.692 100 1],[506.537 40 1],[511.929 1000 0],[514.973 20 1],[516.12 300 1],[517.619 30 1],[521.627 60 1],[522.897 50 1],[523.457 100 0],[524.571 300 1],[526.936 50 1],[529.978 40 1],[532.28 40 1],[533.822 1000 1],[534.515 500 1],[536.986 100 1],[540.542 80 1],[540.736 80 1],[542.706 60 0],[543.583 300 1],[543.8 100 1],[546.462 200 1],[549.15 80 1],[549.694 100 1],[550.472 100 1],[552.206 60 1],[559.852 60 1],[560.032 100 1],[561.289 150 1],[562.569 1000 1],[567.808 100 1],[569.091 200 1],[570.205 50 1],[571.053 400 1],[573.827 100 1],[576.072 100 1],[576.433 100 0],[577.483 50 1],[578.702 50 1],[589.403 200 0],[595.025 500 1],[598.486 30 0],[602.408 200 0],[606.893 50 1],[607.498 200 1],[608.243 100 0],[612.749 200 1],[619.188 80 0],[620.486 100 1],[621.31 50 0],[624.448 80 0],[625.749 90 1],[629.398 100 0],[631.313 50 0],[633.037 80 0],[633.35 40 0],[633.785 200 0],[633.944 100 0],[635.916 50 0],[656.649 100 0],[658.375 200 0],[658.527 100 0],[661.966 500 0],[666.111 50 0],[666.596 60 1],[669.729 50 0],[671.883 30 1],[673.203 40 0],[681.257 400 1],[695.878 100 1],[698.978 50 0],[708.521 20 1],[712.005 50 0],[712.205 120 0],[714.206 200 0],[716.479 100 0],[719.166 40 0],[722.73 70 0],[723.678 100 0],[723.784 50 0],[735.135 50 1],[740.206 500 0],[741.05 100 0],[741.648 50 0],[746.899 500 0],[749.052 50 0],[755.418 200 0],[755.665 50 0],[770.02 200 0],[779.898 50 1],[789.798 60 0],[796.948 50 0],[800.363 100 0],[804.374 9900 0],[806.57 30 0],[809.076 100 0],[816.938 80 0],[822.257 50 0],[824.005 400 0],[839.33 1000 0],[841.46 15 1],[848.611 100 0],[866.495 150 0],[870.08 50 0],[874.822 25 0],[885.324 100 0],[885.38 200 0],[885.75 300 0],[889.85 100 0],[896.469 40 0],[899.313 40 0],[902.24 500 0],[905.833 1500 0],[909.886 100 0],[911.391 1200 0],[912.803 60 0],[919.53 3 1],[922.774 60 0],[933.505 100 0],[942.671 400 0],[942.715 300 0],[948.033 1 1],[959.822 200 0],[964.961 200 0],[965.306 300 0],[973.173 500 0],[1000.305 50 0],[1013.116 75 0],[1023.882 100 0],[1037.52 40 0],[1039.174 40 0],[1040.549 0.6 1],[1046.654 500 0],[1108.468 0.1 1],[1123.656 40 0],[1155.846 35 0],[1177.834 32 0],[1199.686 45 0],[1203.369 30 0],[1230.458 15 0],[1314.916 6 0],[1395.827 14 0],[1428.702 20 0],[1446 10 0],[1503.257 22.5 0],[1552.865 10.5 0],[1603.733 15 0],[1827.5711 1.5 0],[1834.852 2 0],[1898.241 1.5 0],[1907.017 3.5 0],[1910.5119 11 0],[1937.002 5 0],[2064.8689 1 0],[2218.3029 22 0],[2222.6529 15 0],[2230.9211 3 0],[2442.082 3.2 0],[2736.542 1.2 0],[2757.3051 0.9 0],[3036.193 1 0],[3038.3881 0.8 0],[3429.573 1 0],[3451.3109 0.9 0],[4022.8539 0.3 0],[4163.3801 0.2 0]}{ALLx9900x9900x2000x0.8x0.9x5x0}{UVx7500x7500x2000x0.8x0.9x5x0}{VISx1000x1000x1000x0.3x0x0x0}{IVx9900x9900x15x0x0x0x0}%
+\pgfspectra@elt@search{#1}{I}{[36.378 3 4],[38.074 3.6 4],[56.553 4.5 4],[60.186 0.5 3],[60.757 5 4],[61.246 0.6 3],[61.517 0.4 3],[65.422 0.4 3],[65.456 0.4 3],[65.58 0.2 1],[65.9 0.6 1],[66.398 0.8 1],[66.452 0.8 1],[66.506 0.8 1],[66.57 15 1],[66.681 0.6 2],[70.511 0.8 2],[71.955 100 1],[72.298 100 1],[78.464 0.7 2],[78.48 0.7 2],[79.552 0.8 2],[79.816 100 1],[83.41 120 1],[84.78 60 1],[86.597 0.5 2],[87.349 150 1],[87.594 100 1],[87.984 200 1],[88.188 150 1],[89.1 100 1],[89.317 100 1],[91.928 0.7 3],[92.038 0.5 2],[96.117 0.6 2],[100.057 120 1],[100.335 100 1],[101.858 400 1],[103.466 1000 1],[105.474 150 1],[106.634 200 1],[107.521 300 1],[107.858 0.6 2],[109.42 0.8 2],[110.5 500 1],[111.116 250 1],[111.722 150 1],[112.525 350 1],[113.15 200 1],[113.975 120 1],[113.98 1000 1],[115.467 150 1],[115.987 100 1],[116.056 1000 1],[116.648 2000 1],[116.705 150 1],[117.584 500 1],[117.865 1000 1],[118.734 1500 1],[119.085 1000 1],[119.529 1.5 0],[119.888 500 1],[120.022 700 1],[121.841 20 0],[122.089 2000 1],[122.405 60 0],[122.408 60 0],[122.889 50 0],[123.406 2000 1],[124.466 0.4 2],[125.134 60 0],[125.235 0.8 2],[125.915 250 0],[125.951 300 0],[126.127 80 0],[126.757 60 0],[126.76 60 0],[127.526 150 0],[128.94 300 0],[130.034 1000 0],[130.298 300 0],[130.693 0.5 2],[131.395 300 0],[131.754 300 0],[133.019 200 0],[133.652 2000 1],[135.51 500 0],[135.797 300 0],[136.097 500 0],[136.111 300 0],[136.771 250 0],[136.822 250 0],[138.323 400 0],[139.075 300 0],[139.29 200 0],[140.001 200 0],[142.549 800 0],[144.626 500 0],[145.318 500 0],[145.739 500 0],[145.747 500 0],[145.798 1000 0],[145.879 250 0],[145.915 400 0],[146.583 250 0],[148.592 100 0],[149.289 500 0],[150.704 500 0],[151.468 500 0],[151.805 1500 0],[152.645 250 0],[159.358 500 0],[161.76 500 0],[164.078 250 0],[170.207 1500 0],[178.276 1200 0],[179.909 500 0],[183.038 7500 0],[184.445 1500 0],[206.163 200 0],[222.443 0.1 2],[223.812 0.1 2],[224.93 0.5 3],[224.931 0.3 2],[230.938 0.2 2],[234.084 0.4 3],[234.085 0.3 2],[235.043 0.3 2],[235.346 0.2 2],[236.113 0.7 3],[236.774 0.4 2],[236.775 0.5 3],[237.145 0.2 2],[237.245 0.3 2],[237.245 0.6 3],[237.646 0.7 3],[237.647 0.4 2],[238.528 0.4 3],[238.711 0.8 3],[238.712 0.4 2],[239.2 0.6 3],[239.201 0.3 2],[240.305 0.4 3],[240.306 0.2 2],[240.363 0.2 2],[240.801 10 1],[241.485 0.2 2],[241.845 0.2 3],[241.849 0.2 2],[241.885 0.2 2],[241.918 10 1],[242.389 0.3 3],[242.391 0.2 2],[242.61 0.9 3],[242.612 0.5 2],[243.485 0.6 3],[243.488 0.3 2],[246.25 0.2 2],[246.668 0.3 3],[246.669 0.3 2],[246.696 0.3 3],[246.699 0.3 2],[247.535 0.8 3],[247.536 0.6 2],[248.551 0.4 3],[248.924 0.5 3],[248.927 0.4 2],[249.32 0.4 3],[249.321 0.2 2],[249.427 0.2 2],[249.474 10 1],[249.516 0.3 2],[249.607 0.2 2],[250.138 0.2 3],[250.141 0.3 2],[251.374 0.3 3],[251.682 0.2 2],[251.974 0.8 3],[251.975 0.6 2],[252.172 0.4 2],[252.172 0.6 3],[253.198 0.4 3],[253.199 0.3 2],[253.36 10 1],[253.427 20 1],[253.754 0.5 3],[253.756 0.2 2],[254.567 0.8 3],[254.571 0.7 2],[256.624 100 1],[258.279 200 1],[259.346 30 1],[264.077 0.4 2],[264.077 0.4 3],[264.211 0.4 2],[264.211 0.5 3],[265.223 0.8 3],[265.225 0.6 2],[268.898 20 1],[273.012 50 1],[276.515 2 1],[280.859 20 1],[281.845 0.3 3],[281.848 0.2 2],[283.944 0.2 2],[286.467 0.4 2],[286.468 0.6 3],[287.863 150 1],[288.515 0.4 2],[291.097 0.4 3],[291.098 0.3 2],[291.733 0.5 3],[291.735 0.3 2],[293.111 0.2 2],[299.387 100 1],[300.568 0.2 2],[306.917 0.4 3],[306.923 0.3 2],[307.875 500 1],[315.388 0.3 2],[316.103 20 1],[317.011 0.4 3],[317.014 0.3 2],[317.507 100 1],[318.164 0.4 3],[318.166 0.3 2],[321.012 0.4 3],[321.014 0.3 2],[321.348 0.6 3],[321.349 0.4 2],[322.49 0.6 3],[322.493 0.4 2],[330.047 0.2 2],[335.553 30 1],[342.499 25 1],[347.953 0.2 2],[349.741 30 1],[352.69 50 1],[354.69 0.4 3],[354.692 0.3 2],[361.381 0.3 2],[374.214 20 1],[375.44 0.2 2],[375.455 0.2 2],[396.316 0.3 2],[407.714 0.3 2],[410.223 20 0],[412.921 20 0],[413.415 10 0],[432.184 50 0],[445.286 30 1],[459.977 20 1],[463.245 30 1],[466.648 50 1],[467.553 100 1],[476.331 25 0],[486.232 100 0],[491.694 20 0],[498.692 100 1],[506.537 40 1],[511.929 1000 0],[514.973 20 1],[516.12 300 1],[517.619 30 1],[521.627 60 1],[522.897 50 1],[523.457 100 0],[524.571 300 1],[526.936 50 1],[529.978 40 1],[532.28 40 1],[533.822 1000 1],[534.515 500 1],[536.986 100 1],[540.542 80 1],[540.736 80 1],[542.706 60 0],[543.583 300 1],[543.8 100 1],[546.462 200 1],[549.15 80 1],[549.694 100 1],[550.472 100 1],[552.206 60 1],[559.852 60 1],[560.032 100 1],[561.289 150 1],[562.569 1000 1],[567.808 100 1],[569.091 200 1],[570.205 50 1],[571.053 400 1],[573.827 100 1],[576.072 100 1],[576.433 100 0],[577.483 50 1],[578.702 50 1],[589.403 200 0],[595.025 500 1],[598.486 30 0],[602.408 200 0],[606.893 50 1],[607.498 200 1],[608.243 100 0],[612.749 200 1],[619.188 80 0],[620.486 100 1],[621.31 50 0],[624.448 80 0],[625.749 90 1],[629.398 100 0],[631.313 50 0],[633.037 80 0],[633.35 40 0],[633.785 200 0],[633.944 100 0],[635.916 50 0],[656.649 100 0],[658.375 200 0],[658.527 100 0],[661.966 500 0],[666.111 50 0],[666.596 60 1],[669.729 50 0],[671.883 30 1],[673.203 40 0],[681.257 400 1],[695.878 100 1],[698.978 50 0],[708.521 20 1],[712.005 50 0],[712.205 120 0],[714.206 200 0],[716.479 100 0],[719.166 40 0],[722.73 70 0],[723.678 100 0],[723.784 50 0],[735.135 50 1],[740.206 500 0],[741.05 100 0],[741.648 50 0],[746.899 500 0],[749.052 50 0],[755.418 200 0],[755.665 50 0],[770.02 200 0],[779.898 50 1],[789.798 60 0],[796.948 50 0],[800.363 100 0],[804.374 9900 0],[806.57 30 0],[809.076 100 0],[816.938 80 0],[822.257 50 0],[824.005 400 0],[839.33 1000 0],[841.46 15 1],[848.611 100 0],[866.495 150 0],[870.08 50 0],[874.822 25 0],[885.324 100 0],[885.38 200 0],[885.75 300 0],[889.85 100 0],[896.469 40 0],[899.313 40 0],[902.24 500 0],[905.833 1500 0],[909.886 100 0],[911.391 1200 0],[912.803 60 0],[919.53 3 1],[922.774 60 0],[933.505 100 0],[942.671 400 0],[942.715 300 0],[948.033 1 1],[959.822 200 0],[964.961 200 0],[965.306 300 0],[973.173 500 0],[1000.305 50 0],[1013.116 75 0],[1023.882 100 0],[1037.52 40 0],[1039.174 40 0],[1040.549 0.6 1],[1046.654 500 0],[1108.468 0.1 1],[1123.656 40 0],[1155.846 35 0],[1177.834 32 0],[1199.686 45 0],[1203.369 30 0],[1230.458 15 0],[1314.916 6 0],[1395.827 14 0],[1428.702 20 0],[1446 10 0],[1503.257 22.5 0],[1552.865 10.5 0],[1603.733 15 0],[1827.5711 1.5 0],[1834.852 2 0],[1898.241 1.5 0],[1907.017 3.5 0],[1910.5119 11 0],[1937.002 5 0],[2064.8689 1 0],[2218.3029 22 0],[2222.6529 15 0],[2230.9211 3 0],[2442.082 3.2 0],[2736.542 1.2 0],[2757.3051 0.9 0],[3036.193 1 0],[3038.3881 0.8 0],[3429.573 1 0],[3451.3109 0.9 0]}{ALLx9900x9900x2000x0.8x0.9x5x0}{UVx7500x7500x2000x0.8x0.9x5x0}{VISx1000x1000x1000x0.3x0x0x0}{IVx9900x9900x15x0x0x0x0}%,[4022.8539 0.3 0],[4163.3801 0.2 0]
\pgfspectra@elt@search{#1}{Xe}{[65.78 8 2],[66.01 8 2],[67.38 9 2],[67.4 9 2],[67.66 9 2],[69.4 10 2],[69.85 20 2],[70.51 12 2],[72.12 10 2],[73.1 15 2],[73.33 10 2],[74.041 350 1],[74.26 15 2],[75.6 10 2],[76.15 10 2],[76.91 10 2],[77.91 25 2],[79.29 15 2],[79.61 12 2],[80.2 15 2],[80.307 350 1],[82.32 25 2],[82.49 30 2],[85.3 25 2],[88.08 600 1],[88.554 350 1],[88.93 15 2],[89.4 20 2],[89.6 20 2],[92.587 600 1],[93.54 250 1],[96.55 10 2],[97.277 800 1],[97.668 700 1],[100.34 35 2],[101.77 35 2],[103.244 500 1],[103.768 700 1],[104.131 1100 1],[104.78 10 2],[104.827 1000 1],[105.192 1200 1],[106.64 12 2],[107.448 2000 1],[108.386 600 1],[110.043 1200 1],[113.03 30 2],[115.847 600 1],[116.963 250 1],[118.305 800 1],[119.204 250 0],[123.21 25 2],[124.476 600 1],[125.02 250 0],[129.559 1000 0],[146.961 600 0],[266.898 80 2],[271.733 100 2],[281.445 30 2],[281.591 40 2],[282.745 30 2],[284.765 40 2],[286.24 30 2],[286.473 200 1],[287.11 80 2],[287.124 60 2],[287.17 30 2],[289.522 150 1],[289.662 30 2],[290.66 50 2],[291.189 40 2],[291.236 80 2],[294.02 40 2],[294.52 60 2],[294.75 40 2],[294.81 40 2],[297.047 80 2],[297.932 400 1],[299.287 40 2],[300.425 30 2],[301.743 100 1],[302.381 100 2],[308.35 40 2],[309.11 50 2],[310.646 30 2],[312.887 300 1],[313.83 100 2],[315.082 80 2],[318.52 40 2],[324.286 100 2],[326.898 80 2],[328.782 30 2],[330.155 80 2],[333.16 40 2],[335.8 30 2],[336.672 200 1],[338.412 80 2],[340.007 2 0],[341.837 2 0],[342 2 0],[344.266 3 0],[344.42 60 2],[345.42 70 2],[345.87 100 2],[346.126 100 1],[346.822 40 2],[346.981 4 0],[347.236 4 0],[350.674 5 0],[352.283 80 2],[354.23 50 2],[354.986 10 0],[355.21 50 2],[355.404 10 0],[356.14 40 2],[357.97 100 2],[358.36 80 2],[359.54 100 2],[360.606 100 2],[360.7 40 2],[361.032 15 0],[361.306 8 0],[361.59 100 2],[362.31 40 2],[362.408 600 2],[363.306 6 0],[366.991 10 0],[367.667 50 2],[368.59 40 0],[369.349 40 0],[377.63 40 2],[378.102 300 2],[384.15 100 2],[387.78 200 2],[388.05 60 2],[390.791 100 1],[392.255 500 2],[395.059 300 2],[403.759 100 1],[405.007 200 2],[405.746 200 1],[406.04 60 2],[409.889 100 1],[410.91 100 2],[414.57 100 2],[415.804 200 1],[418.01 1000 1],[419.315 500 1],[420.848 300 1],[420.947 100 1],[421.372 300 1],[421.56 100 1],[422.3 300 1],[423.825 400 1],[424.538 500 1],[425.157 100 1],[428.59 30 2],[429.64 500 1],[431.051 500 1],[433.052 1000 1],[436.92 200 1],[437.378 100 1],[439.32 500 1],[439.577 500 1],[440.688 200 1],[441.607 150 1],[443.42 50 2],[444.813 500 1],[446.21 100 2],[446.219 1000 1],[448.086 500 1],[452.186 100 1],[456.91 100 2],[457.01 100 2],[464.14 100 2],[467.37 30 2],[468.357 60 2],[472.36 30 2],[473.4152 600 0],[475.73 100 2],[479.2619 150 0],[480.702 500 0],[482.971 400 0],[484.329 300 0],[486.95 40 2],[491.651 500 0],[492.3152 500 0],[497.171 200 1],[497.271 400 1],[498.877 300 1],[499.117 100 1],[502.828 200 0],[504.492 200 1],[508.062 1000 1],[512.242 300 1],[512.57 100 1],[517.882 100 1],[518.804 300 1],[519.137 400 1],[519.21 100 1],[523.9 60 2],[526.044 500 1],[526.195 500 1],[529.222 2000 1],[530.927 300 1],[531.387 1000 1],[533.933 2000 1],[536.32 200 1],[536.71 30 2],[536.807 200 1],[537.239 500 1],[539.28 100 0],[540.1 50 2],[541.915 3000 1],[543.896 800 1],[544.545 300 1],[545.045 200 1],[546.039 400 1],[547.261 1000 1],[549.486 100 1],[552.44 40 2],[552.553 200 1],[553.107 600 1],[556.662 100 0],[561.667 300 1],[565.938 300 1],[566.756 600 1],[567.091 150 1],[569.575 100 0],[569.961 200 1],[571.61 200 1],[572.691 500 1],[575.103 500 1],[575.865 300 1],[577.639 300 1],[581.596 100 1],[582.389 300 0],[582.48 150 0],[587.502 100 0],[589.329 300 1],[589.499 100 0],[590.513 200 1],[593.417 100 0],[594.553 500 1],[597.113 300 1],[597.646 2000 1],[600.892 200 1],[603.62 1000 1],[605.115 2000 1],[609.35 600 1],[609.759 1500 1],[610.143 400 1],[611.508 100 1],[614.645 100 1],[617.83 150 0],[617.966 120 0],[618.242 300 0],[619.407 500 1],[619.826 100 0],[620.597 60 2],[622.002 100 1],[622.17 25 2],[623.82 60 2],[625.905 60 2],[627.082 500 1],[627.754 400 1],[628.441 100 1],[628.601 100 0],[630.086 250 1],[631.806 500 0],[634.396 400 1],[635.635 600 1],[637.528 200 1],[639.799 100 1],[646.97 300 0],[647.284 150 0],[648.776 120 0],[649.872 100 0],[650.418 200 0],[651.283 300 1],[652.865 200 1],[653.316 100 0],[659.501 1000 1],[659.556 100 0],[659.725 400 1],[659.884 100 1],[666.892 150 0],[669.432 300 1],[672.801 200 0],[678.871 150 1],[679.037 100 1],[680.574 1000 1],[682.732 200 0],[687.211 100 0],[688.216 300 0],[691.022 80 1],[692.553 100 0],[694.211 800 1],[697.618 100 0],[699.088 2000 1],[708.215 150 1],[711.96 500 0],[714.75 50 1],[714.903 200 1],[716.483 500 1],[728.434 100 1],[730.18 200 1],[733.93 200 1],[738.6 100 0],[739.379 150 0],[754.845 300 1],[758.468 200 0],[761.857 80 1],[764.202 500 0],[764.391 100 0],[767.066 200 1],[778.704 60 1],[780.265 100 0],[788.132 100 0],[788.74 300 0],[796.734 500 0],[802.967 100 0],[805.726 200 0],[806.134 150 0],[810.198 100 0],[815.18 150 1],[817.102 100 0],[820.634 700 0],[823.1635 10000 0],[826.652 500 0],[828.0116 7000 0],[834.682 2000 0],[834.724 100 1],[840.919 2000 0],[851.519 50 1],[857.601 200 0],[860.423 50 1],[864.854 250 0],[869.22 100 0],[869.686 200 0],[871.619 50 1],[873.939 300 0],[875.82 100 0],[881.941 5000 0],[886.232 300 0],[890.873 200 0],[893.083 200 0],[895.225 1000 0],[898.105 100 0],[898.757 200 0],[904.545 400 0],[916.265 500 0],[916.752 100 0],[937.476 100 0],[951.338 200 0],[959.135 50 1],[968.532 150 0],[969.868 50 1],[971.816 100 0],[979.97 2000 0],[992.319 3000 0],[1083.837 100 0],[1174.201 90 0],[1223.524 375 0],[1225.776 100 0],[1259.02 300 0],[1262.3391 2500 0],[1354.415 250 0],[1365.7055 2000 0],[1414.2444 1250 0],[1424.096 800 0],[1436.499 375 0],[1466.081 140 0],[1473.2806 3000 0],[1509.972 100 0],[1541.8394 2500 0],[1555.713 150 0],[1597.954 250 0],[1603.99 100 0],[1605.328 1000 0],[1655.449 125 0],[1672.815 1500 0],[1732.577 1500 0],[1878.8131 350 0],[2018.7189 150 0],[2026.2242 3000 0],[2147.009 250 0],[2319.333 1250 0],[2327.9539 110 0],[2482.4711 1800 0],[2514.584 175 0],[2626.908 2000 0],[2651.0859 2500 0],[2838.1539 250 0],[2858.225 750 0],[2938.441 300 0],[2944.8061 150 0],[2964.958 100 0],[2981.3619 100 0],[3025.3141 600 0],[3047.5461 1500 0],[3050.4119 100 0],[3079.418 500 0],[3106.923 6000 0],[3133.601 125 0],[3160.791 550 0],[3229.308 100 0],[3273.926 1800 0],[3366.6691 3500 0],[3401.4672 150 0],[3433.527 450 0],[3474.4 170 0],[3507.025 5000 0],[3524.6922 110 0],[3620.9211 250 0],[3623.1738 150 0],[3650.8359 450 0],[3678.8828 850 0],[3868.598 140 0],[3873.782 175 0],[3893.9602 270 0],[3995.5141 120 0]}{ALLx10000x10000x3000x600x0x0x0}{UVx2000x1000x2000x600x0x0x0}{VISx3000x600x3000x500x0x0x0}{IVx10000x10000x150x0x0x0x0}%
\pgfspectra@elt@search{#1}{Cs}{[55.691 15 2],[58.415 50 2],[58.44 10 2],[59.1044 5 1],[60.301 240 2],[60.7291 1 1],[60.785 120 2],[60.794 160 2],[61.2786 0.8 1],[61.401 2000 2],[62.115 300 2],[63.586 120 2],[63.767 60 2],[63.817 400 2],[63.9356 40 1],[65.7112 2 1],[65.794 5 2],[66.382 90 2],[66.46 90 2],[66.625 500 2],[66.8386 10 1],[67.306 360 2],[67.96 80 2],[68.755 160 2],[69.16 1000 2],[69.943 160 2],[70.34 30 3],[70.389 700 2],[71.025 200 2],[71.8138 300 1],[72.179 4000 2],[72.22 4000 2],[73.156 1000 2],[73.195 60 2],[73.666 200 2],[74.029 2400 2],[74.223 30 2],[74.994 200 2],[75.038 300 2],[75.518 300 2],[75.882 240 2],[75.99 1.2 2],[77.361 1.4 3],[78.773 60 2],[80.195 15 2],[80.8761 300 1],[81.3837 300 1],[81.402 40 2],[81.735 3 2],[82.034 160 2],[82.364 0.8 3],[82.48 30 3],[82.599 40 2],[83.039 1500 2],[83.739 20 2],[84.337 0.8 2],[84.792 50 2],[86.183 3 3],[87.484 40 3],[89.692 30 3],[90.127 700 1],[92.035 3000 2],[92.166 100 2],[92.302 20 3],[92.6657 800 1],[93.267 5 2],[98.614 40 3],[99.514 10 3],[105.479 5000 2],[106.891 30 3],[117.865 26 1],[119.155 16 1],[202.505 5 1],[203.515 12 1],[207.743 16 1],[208.005 16 1],[208.871 16 1],[209.197 16 1],[209.95 3 1],[211.265 5 1],[214.675 20 1],[217.96 26 1],[218.214 5 1],[218.947 26 1],[221.315 5 1],[222.051 20 1],[222.888 26 1],[225.458 50 1],[225.782 40 1],[225.835 5 1],[226.761 70 1],[227.383 70 1],[228.668 5 1],[230.771 5 1],[231.568 8 1],[232.107 26 1],[234.313 16 1],[235.444 26 1],[235.785 5 1],[236.481 26 1],[239.286 50 1],[241.489 16 1],[243.271 5 1],[244.324 5 1],[247.607 26 1],[248.041 8 1],[251.572 26 1],[252.366 3 1],[253.908 26 1],[253.917 5 1],[255.065 12 1],[255.117 26 1],[256.817 26 1],[256.869 50 1],[257.303 200 1],[257.454 26 1],[257.674 26 1],[259.009 26 1],[260.944 50 1],[261.627 26 1],[262.795 5 1],[263.714 16 1],[264.469 5 1],[264.807 26 1],[265.171 40 1],[266.024 5 1],[266.979 26 1],[267.117 3 1],[267.324 8 1],[268.66 26 1],[268.941 5 1],[270.119 3 1],[272.421 26 1],[273.007 5 1],[273.388 5 1],[274.823 50 1],[274.984 16 1],[275.781 12 1],[276.197 16 1],[276.61 5 1],[277.699 50 1],[278.824 26 1],[278.98 26 1],[279.332 5 1],[279.45 26 1],[279.941 26 1],[281.694 100 1],[282.027 5 1],[282.904 5 1],[282.942 5 1],[284.619 26 1],[285.242 16 1],[286.637 16 1],[288.119 50 1],[288.374 5 1],[289.975 16 1],[291.465 16 1],[293.109 100 1],[294.095 100 1],[294.225 16 1],[294.98 6 1],[296.838 4 1],[297.085 5 1],[300.127 20 1],[301.204 16 1],[302.037 3 1],[306.098 3 1],[306.66 20 1],[308.087 5 1],[309.231 20 1],[318.094 16 1],[326.592 160 1],[326.713 160 1],[327.163 100 1],[332.943 20 1],[336.856 160 1],[355.98 20 1],[356.511 20 1],[365.107 3 1],[368.01 3 1],[368.764 3 1],[369.948 20 1],[373.254 3 1],[373.434 20 1],[375.14 3 1],[378.542 70 1],[380.51 100 1],[387.016 3 1],[387.6143 30 0],[388.8608 16 0],[389.698 200 1],[390.693 70 1],[392.558 100 1],[395.95 70 1],[396.519 100 1],[397.8 30 1],[404.718 70 1],[405.396 40 1],[406.796 100 1],[406.877 100 1],[407.336 14 1],[411.929 12 1],[412.121 100 1],[413.2 20 1],[415.127 70 1],[415.861 70 1],[419.32 12 1],[421.313 100 1],[422.112 40 1],[423.219 100 1],[423.441 70 1],[424.197 20 1],[427.174 20 1],[427.71 400 1],[428.835 200 1],[429.2 40 1],[430.064 100 1],[430.794 10 1],[432.758 10 1],[433.024 70 1],[436.328 400 1],[437.302 100 1],[438.443 80 1],[438.876 20 1],[439.691 40 1],[439.95 70 1],[440.385 70 1],[440.525 200 1],[441.021 70 1],[442.405 20 1],[443.571 70 1],[444.4 20 1],[445.344 40 1],[445.768 40 1],[445.918 40 1],[449.366 20 1],[450.152 200 1],[450.671 40 1],[450.683 20 1],[451.55 20 1],[452.285 30 1],[452.672 200 1],[453.894 160 1],[455.5276 80 0],[456.698 30 1],[457.179 30 1],[459.3169 40 0],[460.376 500 1],[460.999 20 1],[461.613 30 1],[462.309 70 1],[464.651 100 1],[465.654 30 1],[467.028 70 1],[469.561 20 1],[470.179 100 1],[473.298 70 1],[473.966 70 1],[474.913 20 1],[476.362 100 1],[478.636 40 1],[483.016 160 1],[487.002 160 1],[495.284 160 1],[497.259 100 1],[504.38 160 1],[505.27 100 1],[505.987 100 1],[508.177 20 1],[509.66 80 1],[522.7 300 1],[524.937 160 1],[527.404 80 1],[530.661 70 1],[534.916 70 1],[537.097 160 1],[541.969 100 1],[546.5944 1 0],[550.2884 1 0],[556.302 200 1],[563.5212 2.2 0],[566.4018 6 0],[574.5724 1.6 0],[581.418 70 1],[583.116 100 1],[583.8835 1 0],[584.5141 6 0],[592.565 100 1],[601.049 16 0],[603.4089 6 0],[612.862 80 1],[621.31 24 0],[621.7599 3 0],[635.4555 10 0],[641.954 20 1],[643.1969 3 0],[647.2623 3 0],[649.553 40 1],[653.644 40 1],[658.602 6 0],[658.651 40 0],[662.866 7 0],[672.3284 40 0],[682.4652 20 0],[687.0455 20 0],[695.552 80 1],[697.3297 40 0],[698.3491 7 0],[722.8536 40 0],[727.99 12 0],[727.9957 40 0],[760.8903 30 0],[794.3882 60 0],[799.068 12 0],[801.5724 20 0],[805.335 12 0],[807.892 12 0],[807.9033 70 0],[852.1122 200 0],[876.1415 40 0],[894.346 120 0],[917.2322 70 0],[920.8538 20 0],[1002.4359 70 0],[1012.3414 20 0],[1012.3602 80 0],[1358.831 28 0],[1360.257 3 0],[1375.883 3 0],[1469.493 70 0],[1792.3619 2.4 0],[1792.4211 1.8 0],[1916.2529 5 0],[1916.3199 4 0],[2131.1461 10 0],[2131.2289 9 0],[2576.349 20 0],[2576.4699 18 0],[3942.1219 40 0],[3942.4078 36 0]}{ALLx5000x200x800x5000x40x0x0}{UVx5000x0x800x5000x40x0x0}{VISx500x80x500x0x0x0x0}{IVx200x200x0x0x0x0x0}%
\pgfspectra@elt@search{#1}{Ba}{[40.382 1 2],[40.712 0.4 2],[42.012 1.4 2],[42.384 0.8 2],[44.895 1.8 2],[45.696 1.6 2],[55.548 2.8 2],[58.757 2.8 2],[64.727 3.6 2],[65.336 1.8 2],[74.312 3 2],[79.489 8000 3],[92.374 10000 3],[109.741 2.4 2],[111.367 3 2],[111.601 2.2 2],[113.305 2.8 2],[115.176 2.4 2],[117.062 2.4 2],[120.729 2.6 2],[121.892 2.2 2],[122.455 2.4 2],[128.853 2.4 2],[129.918 2.2 2],[130.74 2.2 2],[130.887 2.4 2],[131.572 2.4 2],[133.401 2.4 2],[135.471 2.2 2],[136.953 2.2 2],[141.661 2.2 2],[147.885 2.4 2],[148.672 40 1],[150.401 80 1],[151.068 2.4 2],[151.422 2.4 2],[155.438 60 1],[156.561 2.4 2],[156.612 2.4 2],[157.273 40 1],[157.455 2.4 2],[159.68 2.4 2],[161.095 2.4 2],[161.578 2.4 2],[167.451 20 1],[169.437 80 1],[171.153 2.4 2],[186.174 2.4 2],[188.392 2.4 2],[190.415 20 1],[192.47 100 1],[197.476 2.2 2],[199.954 60 1],[200.13 2 2],[200.84 3 2],[202.245 2.6 2],[202.395 80 1],[203.884 2 2],[207.043 2.4 2],[207.168 2.4 2],[207.6 2 2],[208.135 2.4 2],[213.487 2 2],[215.637 3.2 2],[216.076 2 2],[221.47 100 1],[223.033 4 2],[224.561 160 1],[225.473 200 1],[228.068 6 2],[230.424 280 1],[232.351 7 2],[233.11 12 2],[233.527 400 1],[234.758 38 1],[247.673 5 2],[250.507 5 2],[251.228 8 2],[252.383 8 2],[252.851 12 1],[253.092 5 2],[255.954 10 2],[257.048 5 2],[259.664 1.6 0],[263.478 20 1],[268.189 8 2],[270.263 1.6 0],[274.578 6 2],[277.136 3.6 1],[278.528 3 0],[293.895 5 2],[296.005 5 2],[296.248 6 2],[301.422 4 2],[304.342 6 2],[307.158 20 0],[307.914 8 2],[310.392 6 2],[310.821 2 0],[311.922 6 2],[313.26 1.6 0],[313.572 1.6 0],[313.77 2 0],[315.27 6 2],[315.534 2 0],[315.567 2 0],[315.805 2.4 0],[315.854 2.4 0],[316.56 5 0],[317.369 3 0],[318.316 6 0],[318.396 3 0],[319.391 2 0],[319.517 5 2],[320.37 5 0],[322.163 6 0],[322.219 8 0],[323.504 5 2],[326.196 10 0],[326.234 12 0],[328.15 8 0],[328.165 5 2],[328.177 3 0],[328.679 4 2],[332.28 10 0],[335.68 16 0],[336.818 10 2],[336.968 6 2],[337.708 12 0],[337.739 4 0],[342.032 14 0],[342.101 5 0],[342.148 6 0],[346.374 8 0],[350.111 40 0],[352.497 16 0],[353.135 6 0],[354.466 16 0],[354.768 4 0],[355.245 20 1],[356.773 40 1],[357.628 20 1],[357.762 6 0],[357.967 16 0],[359.657 40 1],[363.064 8 0],[363.683 8 0],[364.918 5 2],[368.847 4 0],[373.575 80 1],[381.669 40 1],[384.28 40 1],[385.476 20 1],[388.933 4 0],[389.178 280 1],[389.265 4 0],[390.991 8 0],[391.473 100 1],[392.685 5 2],[393.572 10 0],[393.787 4 0],[393.967 40 1],[394.951 100 1],[399.306 5 2],[399.34 16 0],[399.566 6 0],[403.626 60 1],[405.371 3.6 2],[408.377 40 1],[408.486 6 0],[413.066 300 1],[413.243 4 0],[416.6 40 1],[421.604 100 1],[426.795 160 1],[428.31 20 0],[428.78 60 1],[429.76 40 1],[430.932 160 1],[432.3 4 0],[432.573 120 1],[432.674 40 1],[432.962 60 1],[435.033 16 0],[440.254 12 0],[440.523 80 1],[443.189 8 0],[448.898 12 0],[449.364 10 0],[450.592 8 0],[450.963 40 1],[452.317 12 0],[452.493 26 1],[455.403 13000 1],[457.385 8 0],[457.964 16 0],[459.975 6 0],[461.992 4 0],[462.833 5 0],[464.41 60 1],[467.362 6 0],[469.162 7 0],[469.744 3 2],[470.043 4 0],[470.894 160 1],[472.644 8 0],[484.346 160 1],[484.714 60 1],[485.084 40 1],[487.765 6 0],[489.997 80 1],[490.29 3 0],[493.409 4000 1],[494.735 1.6 0],[495.715 200 1],[499.781 60 1],[501.3 200 1],[504.955 2 2],[509.754 2 2],[510.225 2.4 2],[513.454 2 2],[515.994 4 0],[526.703 4 0],[536.135 160 1],[539.16 200 1],[542.105 40 1],[542.455 20 0],[542.879 40 1],[548.03 60 1],[551.905 40 0],[553.548 200 0],[562.04 4 0],[568.018 2 0],[577.762 80 0],[578.418 160 1],[580.023 20 0],[580.569 4 0],[582.628 30 0],[585.368 560 1],[590.764 3 0],[597.17 20 0],[598.125 160 1],[599.709 20 0],[599.8 2 2],[599.985 60 1],[601.947 20 0],[606.312 40 0],[610.199 2.6 2],[611.078 60 0],[613.583 80 1],[614.172 4000 1],[634.168 30 0],[637.711 2 2],[637.891 100 1],[638.376 2 2],[645.085 18 0],[648.291 30 0],[649.69 2400 1],[649.876 60 0],[652.617 1.6 2],[652.731 30 0],[659.533 600 0],[665.41 30 0],[667.527 300 0],[669.384 360 0],[676.962 200 1],[686.569 120 0],[686.785 60 0],[687.409 200 1],[705.994 1200 0],[709.549 1.6 2],[712.033 480 0],[719.524 120 0],[722.884 120 0],[728.03 600 0],[739.241 240 0],[741.753 60 0],[745.978 180 0],[748.808 120 0],[763.69 90 0],[764.291 120 0],[767.209 360 0],[778.048 240 0],[783.957 36 0],[790.575 300 0],[791.134 120 0],[821.024 180 0],[830.869 1.6 2],[855.997 360 0],[871.074 20 1],[873.771 20 1],[879.976 60 0],[886.098 60 0],[891.499 90 0],[921.969 60 0],[930.808 60 0],[932.458 60 0],[937.006 300 0],[945.592 60 0],[952.176 1.6 2],[958.937 90 0],[960.888 180 0],[964.572 60 0],[983.037 300 0],[1000.108 180 0],[1003.21 120 0],[1023.323 240 0],[1047.126 60 0],[1079.125 24 0],[1101.269 36 0],[1111.442 30 0],[1130.304 48 0],[1169.745 24 0],[1320.73 24 0],[1381.05 24 0],[1407.79 24 0],[1500.04 24 0],[2071.2 24 0],[2551.5699 30 0],[2922.39 30 0]}{ALLx13000x1200x13000x12x10000x0x0}{UVx10000x40x400x12x10000x0x0}{VISx13000x1200x13000x5x0x0x0}{IVx360x360x20x1.6x0x0x0}%
@@ -115,7 +115,7 @@
\pgfspectra@elt@search{#1}{Pb}{[36.74 0.2 4],[37.253 0.2 4],[38.787 0.2 4],[39.438 0.2 4],[42.464 0.5 4],[43.103 0.3 4],[43.66 0.3 4],[43.847 0.2 4],[43.891 0.6 4],[45.345 0.4 4],[46.17 0.3 4],[47.536 0.8 3],[47.835 0.7 3],[49.62 0.3 4],[49.638 1 3],[49.994 1.2 3],[51.507 0.9 3],[52.978 1.4 3],[57.016 2 3],[57.39 0.8 3],[58.452 0.8 3],[64.85 1 3],[65.61 0.9 3],[69.442 0.4 4],[69.62 0.8 4],[70.373 2 4],[70.629 0.4 4],[70.766 0.6 4],[73.085 0.5 4],[74.946 1.2 4],[75.252 1 4],[75.58 1 4],[76.109 1 3],[76.276 0.6 4],[76.587 1 4],[76.745 1.8 4],[76.949 1.8 4],[77.142 1.4 4],[78.279 1.4 4],[78.705 1 4],[79.702 1.5 4],[79.98 0.5 4],[80.207 1.8 3],[80.282 1.2 3],[80.963 1.8 4],[81.232 0.5 4],[81.259 1 3],[81.41 0.8 4],[82.009 0.8 4],[82.207 0.8 3],[82.552 0.5 4],[82.741 1 3],[82.932 0.8 4],[83.26 1.2 3],[84.099 0.8 3],[84.288 0.8 3],[84.594 1.2 3],[84.604 0.2 1],[84.988 0.2 1],[85.198 0.5 4],[85.557 0.3 1],[85.764 1.8 3],[85.902 0.8 3],[86.233 1.6 3],[86.3 0.3 1],[86.397 2 4],[86.71 1 4],[87.044 1.4 3],[87.371 0.6 1],[87.796 0.2 1],[87.996 1.2 3],[88.035 0.7 3],[88.05 0.6 4],[88.39 1.8 4],[88.496 1.4 3],[88.499 1.4 3],[88.837 1.4 4],[88.968 0.8 1],[89.072 1.6 3],[89.44 1.4 4],[89.608 1.2 4],[89.63 0.3 1],[90.851 1.2 3],[91.509 0.8 4],[91.571 1.4 4],[91.79 1.2 3],[91.809 1.2 4],[92.028 1.2 4],[92.066 1.2 4],[92.212 1 3],[92.249 1.2 3],[92.452 0.7 3],[92.644 0.5 1],[92.764 1 3],[93.22 1.4 3],[93.7 0.8 3],[94.074 0.6 4],[94.62 0.8 4],[95.093 0.6 4],[95.285 0.7 3],[95.435 1.2 4],[95.495 0.4 4],[95.528 1 4],[95.876 0.2 1],[96.021 0.2 1],[96.101 0.1 2],[96.438 0.4 4],[96.536 0.3 1],[96.723 1 1],[97.256 0.9 1],[98.217 0.8 1],[98.671 1 1],[98.914 0.6 4],[99.589 1 1],[100.181 0.6 1],[100.542 0.8 4],[101.244 0.8 3],[101.661 1 1],[102.861 1.4 3],[103.05 0.3 2],[103.205 2 3],[104.124 1.6 3],[104.414 1.8 3],[104.89 1.2 2],[104.982 1 1],[105.077 1 1],[105.126 1 4],[105.653 1.5 3],[105.926 0.4 4],[106.066 1 1],[106.558 0.9 1],[106.92 0.4 2],[107.209 1.2 3],[107.47 0.3 2],[107.988 0.7 3],[108.081 1.8 3],[108.417 2 3],[108.886 1 4],[108.994 0.6 3],[109.652 0.9 4],[109.947 0.7 3],[110.394 1 1],[110.479 0.6 4],[110.843 1 1],[110.984 1 1],[111.53 0.6 3],[111.608 2 3],[111.867 0.4 2],[111.957 1 1],[112.133 0.4 4],[112.136 1 1],[113.314 1 1],[113.75 1 4],[113.784 1.8 3],[114.277 0.8 3],[114.493 1.4 3],[114.591 0.4 1],[115.236 0.4 4],[115.788 1.2 4],[116.7 0.4 2],[118.543 1.4 4],[118.995 2 3],[120.363 1 1],[123.12 1 1],[123.35 1.1 4],[124.847 1 4],[125.06 0.4 2],[126.69 0.1 2],[126.755 0.8 3],[129.082 0.8 3],[129.11 1 3],[131.305 2 3],[132.392 0.8 3],[133.165 1 1],[133.52 1 1],[134.306 1.2 3],[134.837 1 1],[138.894 1.6 3],[139.702 0.6 3],[140.026 1.8 3],[140.434 1 3],[143.396 1 1],[144.935 0.3 1],[151.076 0.7 3],[151.242 1 1],[153.571 1.4 3],[155.31 2 2],[161.01 0.1 2],[163.575 0.8 4],[167.153 1 1],[168.215 1 1],[171.123 0.4 2],[172.675 2 1],[174 0.2 0],[176.664 0.2 0],[179.467 0.2 0],[179.667 1 1],[179.839 0.8 3],[180.287 0.2 4],[181.297 0.5 0],[182.205 1 1],[184.3 0.2 4],[186.876 0.4 0],[188.867 0.2 4],[189.319 0.8 3],[189.702 0.2 4],[190.477 1 0],[191.433 0.2 4],[191.974 0.4 4],[192.1471 0.7 1],[195.796 0.5 4],[195.934 1.2 3],[197.244 0.4 0],[197.316 1.6 3],[197.788 0.2 0],[199.16 0.2 0],[199.231 0.2 0],[199.858 0.2 4],[199.883 1 4],[202.202 0.5 0],[204.258 1 3],[204.934 1.2 3],[205.088 0.5 0],[205.328 0.8 0],[207.845 0.8 4],[207.922 1.2 3],[211.1758 0.6 0],[211.5066 1 0],[214.255 1 4],[215.196 0.8 3],[215.401 1.5 3],[216.797 1 4],[217 50 0],[217.558 0.7 0],[217.746 1.2 3],[218.7888 0.7 0],[218.9603 0.8 0],[220.3534 1 1],[223.7425 2 0],[224.686 2 0],[224.689 2.5 0],[225.901 2 4],[227.666 1 4],[230.149 0.8 4],[233.2418 15 0],[235.953 1.6 3],[238.8797 18 0],[239.3792 55 0],[239.9597 14 0],[240.194 32 0],[241.1734 32 0],[241.761 1.6 3],[242.481 1.5 4],[244.3829 15 0],[244.6181 16 0],[247.6378 13 0],[252.669 0.8 1],[257.66 0.8 1],[257.726 8 0],[260.838 0.2 1],[261.3655 50 0],[261.4175 90 0],[262.8262 16 0],[263.4256 0.4 1],[265.7094 1 0],[266.3154 70 0],[269.7541 1 0],[280.1995 2500 0],[282.258 10 0],[282.3189 1400 0],[283.3053 3500 0],[284.0557 0.6 1],[286.424 0.4 3],[286.45 0.4 3],[287.3311 1400 0],[288.73 0.3 1],[291.4442 0.3 1],[294.743 0.2 1],[294.853 0.3 1],[296.646 1.5 0],[297.2991 1.5 0],[297.814 0.4 3],[298.0157 1.5 0],[298.6876 0.4 1],[301.639 1 1],[304.385 1 2],[305.256 0.4 3],[308.908 0.4 2],[310.274 0.4 2],[311.8894 15 0],[313.781 1 2],[317.65 1 2],[322.0528 60 0],[322.117 0.4 3],[322.9613 10 0],[324.0186 40 0],[324.284 0.5 2],[326.2355 20 0],[353.017 0.1 2],[357.2729 3500 0],[358.987 0.7 2],[363.9568 5000 0],[367.1491 2000 0],[368.3462 7000 0],[368.931 0.7 2],[370.602 0.3 2],[371.3982 1 1],[372.869 0.5 2],[373.9935 2500 0],[385.408 1.2 2],[395.192 0.8 2],[396.248 0.4 3],[401.9632 1500 0],[403.116 0.3 2],[404.98 0.4 3],[405.7807 9500 0],[406.2136 1400 0],[409.454 0.3 2],[411.076 0.5 1],[411.335 0.4 1],[412.811 0.2 2],[415.282 1 1],[415.7814 1 0],[416.8033 1000 0],[424.214 0.9 1],[424.492 2 1],[427.266 0.8 2],[429.382 0.7 1],[429.665 0.6 1],[434.0413 20 0],[435.274 1 1],[438.646 2 1],[449.615 1 3],[449.934 0.6 2],[453.46 1.6 3],[457.121 0.7 2],[457.9051 1 1],[458.227 1 1],[459.645 0.1 2],[460.54 0.8 3],[476.112 0.6 2],[479.859 0.4 2],[480.936 0.4 4],[482.686 0.1 2],[485.506 0.2 2],[500.5416 100 0],[500.6572 10 0],[504.258 5 1],[506.512 0.3 2],[507.058 1 1],[507.453 1 1],[507.635 1 0],[508.9484 5 0],[509.001 2 0],[510.7242 1 0],[511.164 1 1],[519.156 0.4 2],[520.1437 200 0],[536.764 1 1],[537.2099 1 1],[552.397 0.5 2],[554.425 1 1],[560.885 2 1],[569.2346 4 0],[577.941 0.3 2],[585.796 0.6 2],[589.5624 20 0],[591.454 0.2 3],[600.1862 200 0],[600.958 0.9 1],[601.1667 50 0],[604.117 0.8 1],[605.9356 50 0],[607.574 4 1],[608.1409 4 1],[611.052 5 0],[615.989 1 1],[623.5266 10 0],[665.099 0.5 4],[666.02 5 1],[675.32 0.4 4],[689.211 1 0],[712.894 0.5 0],[719.36 2 1],[722.8965 2000 0],[730.468 0.5 0],[733.015 0.8 0],[734.6676 1 0],[755.897 1 1],[763.256 1 1],[773.296 0.4 1],[780.9259 2 0],[781.797 0.5 0],[782.901 0.6 0],[789.6737 0.5 0],[815.691 0.2 1],[816.8001 1 0],[819.1886 0.6 0],[821.7711 0.5 0],[825.561 0.8 0],[827.269 4 0],[833.554 0.6 1],[839.568 1 1],[840.9384 2 0],[847.8492 1 0],[853.217 0.8 0],[854.495 0.7 1],[870.99 0.7 1],[871.939 0.5 1],[872.281 0.5 0],[885.7457 1 0],[905.082 1 1],[906.343 1 1],[924.528 0.2 1],[929.3476 0.8 0],[938.435 0.5 0],[938.589 0.5 0],[943.805 1.5 0],[960.4297 1.5 0],[960.873 0.6 0],[967.4351 1.5 0],[1029.0458 20 0],[1043.432 0.5 0],[1049.8965 10 0],[1064.9249 5 0],[1075.941 0.5 0],[1075.974 0.7 0],[1088.6688 1.5 0],[1096.953 4 0],[1105.922 0.6 0],[1133.308 0.3 0],[1147.949 0.2 1],[1148.876 0.2 0],[1162.791 0.5 1],[1256.137 0.1 0]}{ALLx9500x9500x5x2x2x2x0}{UVx7000x7000x2x2x2x2x0}{VISx9500x9500x5x1.2x1.6x0.5x0}{IVx20x20x1x0x0x0x0}%
\pgfspectra@elt@search{#1}{Bi}{[35.577 1 4],[36.952 1 4],[42.07 6 3],[42.978 1 4],[43.12 6 3],[43.563 1 4],[48.839 2 4],[49.272 1 4],[56.362 3 4],[59.073 1 2],[67.076 5 2],[67.887 2 4],[68.688 6 4],[70.654 1 4],[73.071 5 4],[73.817 10 4],[77.516 4 2],[79.05 6 3],[79.06 6 3],[79.25 8 3],[80.365 6 2],[82.03 10 3],[82.29 9 3],[82.49 12 3],[84.986 6 4],[85.568 5 4],[86.445 15 4],[87.26 15 3],[87.68 8 3],[88.017 6 4],[91.67 9 3],[92.093 7 2],[92.39 12 3],[92.548 6 2],[92.981 6 4],[94.33 15 3],[96.76 9 3],[96.88 8 3],[98.98 8 3],[103.999 25 2],[104.576 50 2],[105.181 30 2],[105.888 15 1],[108.547 20 1],[109.92 10 1],[110.34 24 3],[112.88 7 3],[113.86 6 3],[113.901 20 2],[113.946 15 4],[113.98 6 3],[114.591 15 2],[114.97 7 3],[116.319 8 1],[116.706 8 1],[122.464 50 2],[122.543 10 1],[123.278 15 1],[124.105 10 1],[126.535 10 1],[128.373 15 1],[130.618 10 1],[131.7 60 3],[132.546 20 1],[132.684 40 2],[132.947 20 1],[134.612 60 2],[135.007 20 1],[137.261 25 1],[137.602 15 1],[139.392 20 1],[142.333 35 2],[142.352 35 2],[143.683 45 1],[144.794 25 1],[145.511 50 1],[146.1 60 2],[146.214 25 1],[148.693 35 1],[150.25 20 1],[152.057 40 1],[153.317 40 1],[153.677 30 1],[153.806 35 1],[156.367 20 1],[157.37 40 1],[159.179 60 1],[160.158 25 1],[160.64 60 2],[160.97 40 1],[161.138 40 1],[165.281 20 1],[169.15 20 2],[174.929 20 1],[177.711 80 1],[178.747 60 1],[179.193 70 1],[182.38 70 1],[183.432 20 2],[186.39 10 2],[190.241 100 1],[191 30 3],[191.212 10 2],[195.453 9000 0],[196.013 7000 0],[198.826 10 2],[198.935 25 1],[202.075 20 2],[202.115 20 2],[202.121 7000 0],[206.17 9000 0],[206.89 45 1],[207.322 10 2],[207.337 14 2],[209.3 30 3],[210.342 15 2],[211.026 4600 0],[213.363 2500 0],[214.34 15 1],[214.346 15 1],[218.69 60 1],[221.355 30 2],[221.4 40 1],[222.825 360 0],[223.061 1700 0],[227.658 340 0],[231.1 100 3],[232.6 100 3],[236.812 16 1],[236.825 12 1],[237.6 100 3],[240.088 190 0],[241.46 75 2],[243.76 10 2],[250.1 10 1],[251.569 25 0],[252.449 70 0],[254.45 20 1],[262.791 700 0],[262.9 100 3],[267.7 100 3],[269.3 12 1],[269.676 280 0],[271.33 20 1],[273.05 140 0],[276.7 100 3],[277.2 100 3],[278.052 360 0],[278.6 100 3],[280.342 15 1],[280.37 11 1],[280.53 12 1],[280.962 140 0],[284.2 100 3],[284.74 30 2],[285.56 80 2],[289.798 4000 0],[292.4 100 3],[293.3 100 3],[293.6 100 3],[293.67 15 1],[293.83 3200 0],[295.04 20 1],[296.34 12 1],[298.903 2800 0],[299.334 700 0],[301.2 100 3],[302.464 2400 0],[303.487 60 0],[304.2 100 3],[306.772 9000 0],[307.666 140 0],[311.5 35 2],[323.9 100 3],[339.721 550 0],[343.083 10 1],[343.123 12 1],[345.1 40 2],[347.38 40 2],[348.55 35 2],[351.085 500 0],[354.08 15 2],[359.611 380 0],[361.34 45 2],[364.3 100 3],[365.42 12 1],[368.2 100 3],[369.532 50 2],[369.568 50 2],[373.4 100 3],[379.25 70 1],[381.11 12 1],[381.58 20 1],[384.58 10 1],[386.39 30 1],[386.8 100 3],[407.91 40 1],[409.72 10 1],[412.153 140 0],[412.186 140 0],[422.46 12 2],[425.94 75 1],[427.2 25 1],[430.17 70 1],[432.78 25 2],[433.98 12 1],[434.05 25 1],[434.2 30 3],[437.94 12 1],[447.68 25 1],[456.084 30 2],[456.154 30 2],[470.53 60 1],[472.252 600 0],[473.03 30 1],[474.97 20 1],[479.74 40 2],[490.82 12 1],[491.66 10 1],[496.97 12 1],[499.36 20 1],[507.93 45 2],[509.16 10 1],[512.43 50 1],[514.43 60 1],[520.15 20 1],[520.92 75 1],[527.03 40 1],[534.7 30 3],[539.78 10 1],[555.235 10 0],[559.941 3 0],[565.52 20 1],[571.92 40 1],[574.255 6 0],[581.83 12 1],[586.02 20 1],[597.3 20 1],[605.91 15 1],[612.8 15 1],[613.482 6 0],[647.573 3 0],[647.624 3 0],[649.77 15 1],[657.72 10 1],[660.02 40 1],[662.34 12 2],[680.86 50 1],[699.112 4 0],[703.3 12 1],[703.615 2 0],[738.1 10 1],[738.1 10 2],[750.233 2 0],[755.1 12 2],[759.8 25 2],[763.7 10 1],[763.7 10 2],[775 10 1],[783.87 3 0],[784.033 2 0],[796.5 20 1],[800.8 40 2],[805 12 1],[807 50 2],[810 20 2],[832.8 15 1],[838.8 15 1],[853.2 30 1],[854.454 2 0],[857.974 1 0],[865.3 25 1],[867.1 15 2],[875.488 2 0],[876.154 3 0],[886.3 25 1],[890.781 2 0],[893.4 20 2],[965.704 2000 0],[982.778 40 0],[1010.45 20 0],[1013.88 15 0],[1030.06 20 0],[1053.619 20 0],[1107.244 50 0],[1155.16 15 0],[1171.037 1500 0],[1199.949 40 0],[1216.508 200 0],[1237.464 10 0],[1269.004 200 0],[1281.78 100 0],[1433.05 200 0],[1600.15 50 0],[2255.16 60 0]}{ALLx9000x9000x100x80x100x15x0}{UVx9000x9000x100x80x100x15x0}{VISx600x600x75x45x100x0x0}{IVx2000x2000x30x50x0x0x0}%
\pgfspectra@elt@search{#1}{Po}{[213.902 250 0],[220.38 300 -1],[222.067 300 0],[222.213 200 0],[228.422 200 -1],[234.461 250 0],[242.172 250 0],[242.609 300 0],[245.008 1500 0],[248.394 700 0],[249.053 700 0],[250.218 200 -1],[253.495 300 0],[255.733 300 0],[255.801 1500 0],[256.231 400 -1],[257.88 300 -1],[258.764 400 0],[263.701 200 -1],[264.536 300 0],[266.333 700 -1],[267.167 200 0],[276.192 600 0],[280.026 400 0],[282.411 250 0],[286.601 300 0],[291.931 400 0],[295.892 600 0],[300.321 2500 0],[306.931 450 0],[311.595 200 -1],[318.902 400 0],[324.024 600 0],[328.638 250 0],[332.86 600 0],[348.979 300 -1],[349.365 200 -1],[358.833 400 -1],[367.136 200 -1],[386.193 500 0],[405.198 200 -1],[417.052 1200 0],[423.613 250 -1],[441.558 200 -1],[449.321 800 0],[461.144 350 0],[486.712 200 -1],[487.624 400 0],[494.681 450 -1],[532.323 350 0],[574.485 300 0],[796.262 600 0],[843.387 300 0],[861.826 500 0],[922.787 250 -1]}{ALLx2500x2500x0x0x0x0x700}{UVx2500x2500x0x0x0x0x700}{VISx1200x1200x0x0x0x0x450}{IVx600x600x0x0x0x0x250}%
-\pgfspectra@elt@search{#1}{At}{[216.225 8 0],[224.401 10 0]}{ALLx10x10x0x0x0x0x0x0}{UVx10x10x0x0x0x0x0x0}{VISx0x0x0x0x0x0x0}{IVx0x0x0x0x0x0x0}
+\pgfspectra@elt@search{#1}{At}{[216.225 8 0],[224.401 10 0]}{ALLx10x10x0x0x0x0x0x0}{UVx10x10x0x0x0x0x0x0}{VISx0x0x0x0x0x0x0}{IVx0x0x0x0x0x0x0}%
\pgfspectra@elt@search{#1}{Rn}{[351.46 5 0],[373.989 10 0],[375.365 20 0],[391.72 10 0],[394.172 10 0],[395.236 10 0],[422.606 10 0],[430.776 80 0],[433.578 7 0],[434.96 100 0],[443.505 40 0],[445.925 50 0],[450.848 50 0],[457.772 50 0],[460.938 50 0],[472.176 30 0],[572.258 6 0],[606.192 10 0],[620.075 6 0],[638.045 6 0],[655.749 10 0],[660.643 10 0],[662.723 15 0],[666.96 6 0],[670.428 8 0],[675.181 20 0],[680.679 6 0],[683.695 8 0],[683.757 8 0],[689.116 10 0],[699.89 10 0],[705.542 200 0],[726.811 100 0],[729.1 20 0],[732.098 6 0],[741.904 10 0],[745 300 0],[747.089 8 0],[748.313 8 0],[751.413 8 0],[751.692 8 0],[752.393 6 0],[759.755 6 0],[760.128 8 0],[765.748 10 0],[773.843 10 0],[774.664 20 0],[780.982 100 0],[804.9 20 0],[809.951 100 0],[817.384 6 0],[827.096 100 0],[831.451 8 0],[834.974 6 0],[838.105 10 0],[848.748 10 0],[849.489 10 0],[852.095 20 0],[860.007 100 0],[863.976 10 0],[867.583 15 0],[880.775 10 0],[932.702 50 0],[994.857 6 0],[1010.613 5 0]}{ALLx300x300x0x0x0x0x0}{UVx20x20x0x0x0x0x0}{VISx300x300x0x0x0x0x0}{IVx100x100x0x0x0x0x0}%
\pgfspectra@elt@search{#1}{Ra}{[236.973 8 1],[246.055 8 1],[247.55 10 1],[258.661 8 1],[264.373 10 1],[270.896 20 1],[279.521 10 1],[281.376 30 1],[303.344 10 1],[310.18 5 0],[364.955 100 1],[381.442 200 1],[419.409 8 1],[424.472 8 1],[434.064 100 1],[443.627 20 1],[453.311 30 1],[464.129 8 0],[468.228 100 1],[469.928 8 0],[482.591 100 0],[485.607 10 0],[485.941 10 1],[492.753 10 1],[509.756 10 0],[520.593 10 0],[528.328 10 0],[532.029 10 0],[539.98 10 0],[540.023 20 0],[540.681 20 0],[548.213 8 0],[550.198 10 0],[555.357 10 0],[555.585 20 0],[561.666 10 0],[566.081 50 0],[581.363 20 1],[620.03 30 0],[633.69 10 0],[644.62 20 0],[648.732 20 0],[659.334 10 1],[671.932 10 1],[698.022 20 0],[711.85 20 0],[714.121 50 0],[722.516 20 0],[731.027 10 0],[783.812 20 0],[801.97 50 1],[817.731 6 0],[833.507 5 0],[993.221 5 0]}{ALLx200x100x200x0x0x0x0}{UVx100x5x100x0x0x0x0}{VISx200x100x200x0x0x0x0}{IVx50x20x50x0x0x0x0}%
\pgfspectra@elt@search{#1}{Ac}{[206.2 20 3],[210 8 1],[250.212 30 3],[255.808 100 3],[262.644 1000 2],[268.29 50 2],[271.25 20 1],[272.623 10 1],[276.018 10 1],[278.156 10 1],[279.083 5 3],[279.39 50 3],[279.759 20 1],[280.676 20 1],[283.347 8 1],[284.716 150 1],[289.52 8 1],[289.682 30 1],[292.302 30 1],[295.255 2000 2],[299.417 200 1],[304.33 500 1],[306.936 200 1],[307.807 100 1],[308.604 100 1],[308.737 100 1],[311.283 200 1],[312.016 100 1],[315.309 500 1],[315.441 600 1],[316.481 200 1],[322.47 20 3],[323.059 300 1],[323.77 150 1],[326.091 500 1],[331.801 100 1],[338.353 200 1],[339.278 2000 2],[341.384 200 1],[341.777 500 1],[348.116 500 1],[348.759 3000 2],[348.953 200 1],[352.924 100 1],[353.463 100 1],[355.499 200 1],[356.559 1000 1],[369.488 100 1],[375.667 300 1],[379.982 200 1],[386.312 2000 1],[391.447 100 1],[406.16 400 1],[408.844 3000 1],[416.84 3000 1],[417.998 100 0],[418.312 20 0],[419.44 20 0],[420.969 300 1],[435.913 300 1],[438.453 20 0],[438.641 1000 1],[439.671 20 0],[441.309 2000 2],[446.273 20 0],[450.72 1000 1],[456.987 3000 2],[460.545 500 1],[471.658 10 0],[472.016 400 1],[481.222 300 1],[494.518 100 1],[495.823 100 1],[496.087 100 1],[519.321 8 2],[544.638 150 1],[573.205 300 1],[575.897 400 1],[591.085 1000 1],[616.475 600 1],[616.783 200 1],[624.283 400 1],[635.986 20 0],[669.127 20 0],[729.04 6 0],[786.61 6 0]}{ALLx3000x100x3000x3000x100x0x0}{UVx3000x0x1000x3000x100x0x0}{VISx3000x100x3000x3000x0x0x0}{IVx6x6x0x0x0x0x0}%
diff --git a/graphics/pgf/contrib/pgf-spectra/pgf-spectra.sty b/graphics/pgf/contrib/pgf-spectra/pgf-spectra.sty
index 308c9bcc78..2135d34667 100644
--- a/graphics/pgf/contrib/pgf-spectra/pgf-spectra.sty
+++ b/graphics/pgf/contrib/pgf-spectra/pgf-spectra.sty
@@ -7,9 +7,10 @@
% Hugo Gomes @ 21/02/2023 (v2.2.0)
% Hugo Gomes @ 25/04/2023 (v3.0.0)
% Hugo Gomes @ 27/04/2023 (v3.0.1)
+% Hugo Gomes @ 07/07/2024 (v3.0.1a)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}%
-\ProvidesPackage{pgf-spectra}[27/04/2023 pgf-spectra v3.0.1]%
+\ProvidesPackage{pgf-spectra}[07/07/2024 pgf-spectra v3.0.1a]%
\RequirePackage{tikz}%
\DeclareOption{LSE}{\input{pgf-spectra.data.LSE.tex}\xdef\pgfspectra@DATASET{1}}%
\DeclareOption{NIST}{\input{pgf-spectra.data.NIST.tex}\xdef\pgfspectra@DATASET{0}}%
@@ -640,15 +641,15 @@ precision=1,unit={}% NEW v3.0.0 (for data library)
\fi%
}%
\def\pgfspectra@utils@put@label{\ignorespaces%
- \ifx\pgfspectra@elt@chemsym\undefined\def\pgfspectra@elt@chemsym{}\fi%
+ \ifx\pgfspectra@elt@chemsym\undefined\def\pgfspectra@elt@chemsym{}\else\fi%
\pgfspectra@get@label@position%
\ifnum\pgfspectra@begin>\pgfspectra@end%
\ifcase\pgfspectra@label@position%
%west
\ifpgfspectra@drawaxis%\ifpgfspectra@axislabel%
- \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2em,align=right] at (-2.5*\@pgfspectra@axis@height-\pgfspectra@width,0.5*\pgfspectra@height-1.25*\@pgfspectra@axis@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
+ \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2.1em,align=right] at (-2.5*\@pgfspectra@axis@height-\pgfspectra@width,0.5*\pgfspectra@height-1.25*\@pgfspectra@axis@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
\else%
- \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2em,align=right] at (-\pgfspectra@width,0.5*\pgfspectra@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
+ \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2.1em,align=right] at (-\pgfspectra@width,0.5*\pgfspectra@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
\fi%
\or%north west
\ifpgfspectra@drawaxis%
@@ -693,9 +694,9 @@ precision=1,unit={}% NEW v3.0.0 (for data library)
\ifcase\pgfspectra@label@position%
%west
\ifpgfspectra@drawaxis%
- \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2em,align=right] at (-2.5*\@pgfspectra@axis@height,0.5*\pgfspectra@height-1.25*\@pgfspectra@axis@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
+ \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2.1em,align=right] at (-2.5*\@pgfspectra@axis@height,0.5*\pgfspectra@height-1.25*\@pgfspectra@axis@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
\else%
- \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2em,align=right] at (0,0.5*\pgfspectra@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
+ \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2.1em,align=right] at (0,0.5*\pgfspectra@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
\fi%
\or%north west
\ifpgfspectra@drawaxis%
diff --git a/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.pdf b/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.pdf
index e003e00f80..a627994bbf 100644
--- a/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.pdf
+++ b/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.tex b/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.tex
index 1661670404..4ffb5d4c87 100644
--- a/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.tex
+++ b/graphics/pgf/contrib/pgf-spectra/pgf-spectraManual.tex
@@ -20,12 +20,12 @@
\setlength{\parindent}{0pt}
\setlength{\oddsidemargin}{0pt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\version{3.0.1}%
+\def\version{3.0.1a}%
\def\inversion#1{#1}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[pdfstartview={ },colorlinks=true, linkcolor=black!50!green, citecolor=gray, urlcolor=teal, hyperindex, plainpages=false,bookmarksopenlevel=1,bookmarksopen=true]{hyperref}%
\hypersetup{%Start options on pdf
-pdftitle = {Manual for pgf-spectra (v\inversion{3.0.1})},%
+pdftitle = {Manual for pgf-spectra (v\inversion{3.0.1a})},%
pdfsubject = {Emission and absorption lines of the elements},%
pdfkeywords = {Draw the spectrum of elements in a simple way via pgf/TikZ environment. It's possible to draw a desired spectrum, continuous or discrete.},%
pdfauthor = {\textcopyright Hugo Gomes},%
@@ -80,7 +80,7 @@ pdfproducer = {pdfeTeX-1.\the\pdftexversion\pdftexrevision},
\end{titlepage}
\newpage%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pagestyle{empty}%
+\pagestyle{empty}\enlargethispage{\baselineskip}%
\pdfbookmark[1]{Table of contents}{pdfContents}%
\tableofcontents%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -97,6 +97,18 @@ pdfproducer = {pdfeTeX-1.\the\pdftexversion\pdftexrevision},
\vfill\vfill\vfill\newpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{What's new}
+\vspace{-32pt}\ \subsection*{}{\normalfont\large\bfseries\raisebox{1.25pt}{$\mathbf{\blacktriangleright}$}\ In version 3.0.1a}%
+\addcontentsline{toc}{subsection}{In version 3.0.1a}%
+\begin{itemize}
+\item Removed lines data outside the range $10\,nm$ -- $4000\,nm$ (H, He, Be, C, Si, Kr, Sn, I) in LSE data file, which generate a package warning, e.g.
+«\texttt{Package pgf-spectra Warning: invalid wavelength (4051.1602nm). The wavelength must be lesser or\\ equal to 4000nm (NIR)... on input line 27}».
+\item Fixed chemical symbol label width producing incorrect alignment on consecutive lines for the spectrum of some elements, e.g.
+\\ \makebox[\linewidth][s]{\hrulefill}
+\\ \txtspecstyle[axis,begin=400,end=700,axis step=20,axis ticks=9,\\ axis color=lightgray,axis font color=black,label,width=.88\string\textwidth,height=0.7cm]
+\\ \bs{noindent}\bs{pgfspectra}\lp\red{element=Cl}\rp
+\\ \bs{noindent}\bs{pgfspectra}\lp\red{element=Rn}\rp
+\\ \makebox[\linewidth][s]{\hrulefill}
+\end{itemize}
\vspace{-32pt}\ \subsection*{}{\normalfont\large\bfseries\raisebox{1.25pt}{$\mathbf{\blacktriangleright}$}\ In version 3.0.1}%
\addcontentsline{toc}{subsection}{In version 3.0.1}%
\begin{itemize}
@@ -242,7 +254,7 @@ with the following specific keys% \pgfspectraplotshade[options]{name}
\\ [10pt]According to the information on the page the listed lines are based on "Line Spectra of the Ele\-ments", Joseph Reader and Charles H. Corliss CRC Handbook of Chemistry and Physics. This book refers that «The table contains the outstanding spectral lines of neutral ($I$) and singly ionized ($II$) atoms of the elements from hydrogen through plutonium ($Z=1-94$); selected strong lines from doubly ionized ($III$), triply ionized ($IV$), and quadruply ionized ($V$) atoms are also included.»
\\ [6pt]\makebox[66pt][s]{}\begin{minipage}{\linewidth-66pt}\color{black!70}\small Note: pst-spectra documentation refers "\textit{Line Spectra of the Elements from the Astronomical Data Center of NASA}" as the source material, but I'm assuming the original source is "\textit{Line Spectra of the Ele\-ments}"\textit{, Joseph Reader and Charles H. Corliss CRC Handbook of Chemistry and Physics}, obtained from \href{http://cdsarc.u-strasbg.fr/viz-bin/Cat?VI/16}{http://cdsarc.u-strasbg.fr/viz-bin/Cat?VI/16}.\end{minipage}
\\ [12pt]\tikz{\node[text width=\linewidth-4mm,draw=purple,rounded corners=2pt,fill=black!10!purple!10,inner sep=2mm,text justified] {To use this data set load the package \pack{} with the option \verb|LSE| (acronym to Line Spectra of the Elements):%
- \\ [6pt]\large\color{purple}\verb|\usepackage[LSE]{pgf-spectra}|\\ [6pt]\small\color{orange}\hfill Number of lines provided: 46065 (see file pgf-spectraDataLSE.pdf)};}
+ \\ [6pt]\large\color{purple}\verb|\usepackage[LSE]{pgf-spectra}|\\ [6pt]\small\color{orange}\hfill Number of lines provided: 46031 (see file pgf-spectraDataLSE.pdf)};}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Data based on NIST}
\tikz{\node[text width=\linewidth-4mm,draw=teal,rounded corners=2pt,fill=black!10,inner sep=2mm,text centered] {This set was obtained from \href{https://physics.nist.gov/PhysRefData/Handbook/Tables/findinglist.htm}{https://physics.nist.gov/PhysRefData/Handbook/Tables/findinglist.htm}};}
@@ -2318,7 +2330,7 @@ colorbar horizontal,colormap access=map]
\\ \header
\\ [-1pt]\linhaimpar{\hyperlink{optionlib:backcolor}{back color}}{background color of the table header, of the \textit{element(s)} column, of the table border lines and of the lines between rows}{color}{black!10}{any named color or user defined color}%
\\ [-1pt]\linhapar{\hyperlink{optionlib:databackcolor}{data back color}}{the background color of each data row}{color}{white}{any named color or user defined color}%
-\\ [-1pt]\linhaimpar{\hyperlink{optionlib:elementscolumnwidth}{elements column width}}{the width of the \textit{element(s)} column}{length}{2.5em}{up to maximum \TeX\ dimension (16384pt)}%
+\\ [-1pt]\linhaimpar{\hyperlink{optionlib:elementscolumnwidth}{elements column\vskip0pt width}}{the width of the \textit{element(s)} column}{length}{2.5em}{up to maximum \TeX\ dimension (16384pt)}%
\\ [-1pt]\linhapar{\hyperlink{optionlib:textcolor}{text color}}{the color of all text in the table}{color}{black}{any named color or user defined color}%
\\ [-1pt]\linhaimpar{\hyperlink{optionlib:title}{title}}{the title in the table header}{text}{<REDSHIFTED>\\ SPECTRAL LINES OF ELEMENT(S) \ldots}{}%
\\ [-1pt]\linhapar{\hyperlink{optionlib:width}{width}}{the total width of the table}{length}{\textbackslash linewidth}{up to maximum \TeX\ dimension (16384pt)}%
diff --git a/graphics/pgf/contrib/pgfgantt/README b/graphics/pgf/contrib/pgfgantt/README
index b46f25054c..017c065fc6 100644
--- a/graphics/pgf/contrib/pgfgantt/README
+++ b/graphics/pgf/contrib/pgfgantt/README
@@ -1,19 +1,22 @@
-The pgfgantt package v5.0
+The pgfgantt package v5.0a
------------------------------------------------------------------------------
This package is released under the LaTeX Project Public License v1.3c or later
-(see http://www.latex-project.org/lppl.txt).
+(see https://www.latex-project.org/lppl.txt).
The pgfgantt package provides the ganttchart environment, which
draws a Gantt chart within a TikZ picture. The user may add various
-elements to the chart, for example, titles, bars, groups, milestones and different
-links between these elements. The appearance of the chart elements
+elements to the chart, for example, titles, bars, groups, milestones and
+different links between these elements. The appearance of the chart elements
is highly customizable, and even new chart elements may be defined.
-The package makes use of pgf/TikZ (http://tug.ctan.org/pkg/pgf).
+The package requires pgf/TikZ (https://ctan.org/pkg/pgf).
Installation: Run pgfgantt.ins through LaTeX and follow the instructions.
+This package is unmaintained. If you want to volunteer to take over
+the maintenance, contact me at https://wolfgang.esser-skala.at/contact/ .
+
--
-Wolfgang Skala
-10th January 2018
+Wolfgang Esser-Skala
+2024-06-19
diff --git a/graphics/pgf/contrib/pgfgantt/pgfgantt-doc.pdf b/graphics/pgf/contrib/pgfgantt/pgfgantt-doc.pdf
new file mode 100644
index 0000000000..62c09d84c7
--- /dev/null
+++ b/graphics/pgf/contrib/pgfgantt/pgfgantt-doc.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/pgfgantt/pgfgantt.dtx b/graphics/pgf/contrib/pgfgantt/pgfgantt.dtx
index 7bb4d52138..e734668f59 100644
--- a/graphics/pgf/contrib/pgfgantt/pgfgantt.dtx
+++ b/graphics/pgf/contrib/pgfgantt/pgfgantt.dtx
@@ -1,19 +1,19 @@
% \iffalse meta-comment
%
-% Copyright (C) 2018 by Wolfgang Skala
+% Copyright (C) 2024 by Wolfgang Esser-Skala
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2008/05/04 or later.
%
% \fi
%
% \iffalse
-%<pgfgantt>\ProvidesPackage{pgfgantt}[2018/01/10 v5.0 Draw Gantt diagrams with TikZ]
+%<pgfgantt>\ProvidesPackage{pgfgantt}[2024/06/19 v5.0a Draw Gantt diagrams with TikZ]
%<pgfgantt>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%
%<*driver>
@@ -181,30 +181,10 @@
\ignorespaces}
\let\endoption\endmacro
\let\endintmacro\endmacro
-\renewenvironment{theglossary}{\glossary@prologue\GlossaryParms\let\item\@idxitem\ignorespaces}{}
\makeatother
\AtBeginDocument{\lstMakeShortInline|}
-\begingroup
- \makeatletter
- \def\x\begingroup#1\@nil{%
- \endgroup
- \def\DoNotIndex{%
- \begingroup
- \@makeother\#%
- \@makeother\$%
- \@makeother\%%
- \@makeother\^%
- \@makeother\_%
- \@makeother\~%
- \@makeother\ %
- \@makeother\&%
- #1%
- }%
- }%
-\expandafter\x\DoNotIndex\@nil
-
\usepackage[
hyperfootnotes=false,
bookmarksnumbered,%
@@ -237,27 +217,13 @@
\def\TikZ{Ti\textit{k}Z}
\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
-\def\GlossaryParms{%
- \def\pfill##1{}
- \parindent 0pt
- \parskip 0pt plus 1pt
- \small\raggedright
- \def\@idxitem{\par\hangindent 30pt}%
- \def\subitem{\@idxitem\hspace*{15pt}}%
- \def\subsubitem{\@idxitem\hspace*{25pt}}%
- \def\indexspace{\par\vspace{10pt plus 2pt minus 3pt}}%
-}
-
\usepackage{pgfgantt}
\usetikzlibrary{shadows,shadings,decorations.pathmorphing,shapes.misc}
\EnableCrossrefs
\CodelineIndex
-\RecordChanges
\IndexPrologue{\clearpage\section{Index}\markboth{Index}{Index}Bold numbers refer to the page where the corresponding entry is described; italic numbers refer to the code line of the definition; upright numbers refer to the code lines where the entry is used.}
-\GlossaryPrologue{\clearpage\section{Change History}\markboth{Change history}{Change history}}
-
\setkomafont{title}{\rmfamily\bfseries}
\addtokomafont{sectioning}{\rmfamily}
@@ -270,34 +236,15 @@
%</driver>
% \fi
%
-% \CheckSum{2245}
-%
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
-%
-%
% \GetFileInfo{pgfgantt.sty}
%
% \DoNotIndex{\@auxout,\@empty,\@firstoftwo,\@ifundefined,\@namedef,\@nameuse,\@tempa,\@tempb,\@tempc,\@tempcnta,\@tempcntb,\@tempdima,\advance,\anchor,\backgroundpath,\begin,\begingroup,\bfseries,\breakforeach,\clip,\csname,\def,\divide,\draw,\edef,\else,\end,\endcsname,\endgroup,\expandafter,\fi,\foreach,\global,\i,\ifcase,\ifdate,\ifdim,\ifnum,\ifx,\inheritanchor,\inheritanchorborder,\inheritbackgroundpath,\inheritsavedanchors,\itshape,\kernel@ifnextchar,\let,\multiply,\newcommand,\newcount,\newenvironment,\newif,\node,\normalcolor,\normalfont,\normalsize,\northeast,\outernortheast,\PackageError,\PackageWarning,\path,\pgf@process,\pgf@x,\pgf@y,\pgf@xa,\pgf@xb,\pgf@xc,\pgf@ya,\pgf@yb,\pgf@yc,\pgfcalendar,\pgfcalendarbeginjulian,\pgfcalendarcurrentday,\pgfcalendarcurrentjulian,\pgfcalendarcurrentmonth,\pgfcalendarcurrentweekday,\pgfcalendarcurrentyear,\pgfcalendardatetojulian,\pgfcalendarendiso,\pgfcalendarifdateday,\pgfcalendarifdatemonth,\pgfcalendarifdateyear,\pgfcalendarjuliantodate,\pgfcalendarmatchestrue,\pgfdeclareshape,\pgfextractx,\pgfkeys,\pgfkeyscurrentname,\pgfkeyssetvalue,\pgfkeysvalueof,\pgfmathparse,\pgfmathprintnumber,\pgfmathresult,\pgfmathsetlength,\pgfmathsetmacro,\pgfpathclose,\pgfpathlineto,\pgfpathmoveto,\pgfpoint,\pgfpointadd,\pgfpointanchor,\pgfpointdiff,\pgfpointscale,\pgfqkeys,\protected@write,\relax,\RequirePackage,\savedanchor,\scriptsize,\setcounter,\small,\southwest,\stepcounter,\string,\strut,\t,\the,\tikz@align@newline,\usetikzlibrary,\value,\x,\xdef}
%
-%
+%
% \title{Drawing Gantt Charts in \LaTeX\\with \TikZ}
% \subtitle{The \texttt{pgfgantt} Package}
-% \author{Wolfgang Skala\thanks{Department of Biosciences, University of Salzburg, Austria; \texttt{Wolfgang.Skala@sbg.ac.at}}}
-% \date{\fileversion\\\filedate}
+% \author{\texorpdfstring{Wolfgang Esser-Skala\thanks{Computational Systems Biology Group, Department of Biosciences and Medical Biology, University of Salzburg, Austria; \texttt{Wolfgang.Esser-Skala@plus.ac.at}}}{Wolfgang Esser-Skala}}
+% \date{\fileversion\\\filedate}
% \maketitle
%
% \begin{abstract}
@@ -305,72 +252,13 @@
% \end{abstract}
%
% \clearpage\tableofcontents
-% \changes{v5.0}{2018/01/10}{\cs{gantttitlecalendar} now recognizes the \texttt{decade} key.}
-% \changes{v5.0}{2018/01/10}{Key \texttt{compress calendar} has been replaced by \texttt{time slot unit} to allow an additional level of compression (year).}
-% \changes{v5.0}{2018/01/10}{The command \cs{ganttvrule} allows to draw general vertical rules (similar to the today rule). The keys \texttt{vrule}, \texttt{vrule offset}, \texttt{vrule label font} and \texttt{vrule label text} configure those rules.}
-% \changes{v5.0}{2018/01/10}{The key \texttt{expand chart} was added, which specifies that a chart should expand horizontally to a given dimension.}
-% \changes{v5.0}{2018/01/10}{The key \texttt{title label text} was added to allow fine-tuning of title label formatting.}
-% \changes{v5.0}{2018/01/10}{Made \pack{pgfgantt} robust to \pack{amsgen}'s redefinition of \cs{@ifstar}.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{link label anchor} was renamed to \texttt{link label node}.}
-% \changes{v4.0}{2013/06/01}{\cs{newganttchartelement} defines completely new chart elements.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{progress label anchor} was replaced by \texttt{bar}/\texttt{group}/\texttt{milestone progress label node}.}
-% \changes{v4.0}{2013/06/01}{The keys \texttt{bar}/\texttt{group}/\texttt{milestone progress label anchor} were added.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{progress label font} was replaced by the keys \texttt{bar}/\texttt{group}/\texttt{milestone progress label font}.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{incomplete} was removed.}
-% \changes{v4.0}{2013/06/01}{The keys \texttt{group right}/\texttt{left peak} and \texttt{group peaks} were replaced by \texttt{group right}/\texttt{left peak tip position}, \texttt{group peaks tip position}, \texttt{group right}/\texttt{left peak width}, \texttt{group peaks width}, \texttt{group right}/\texttt{left peak height} and \texttt{group peaks height}.}
-% \changes{v4.0}{2013/06/01}{Chart elements are now nodes, so the corresponding styles must specify a node shape.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{time slot modifier} was renamed to \texttt{chart element start border}.}
-% \changes{v4.0}{2013/06/01}{The keys \texttt{bar}/\texttt{group}/\texttt{milestone label inline anchor} were renamed to \texttt{bar}/\texttt{group}/\texttt{milestone inline label node}.}
-% \changes{v4.0}{2013/06/01}{The keys \texttt{bar}/\texttt{group}/\texttt{milestone label shape anchor} were renamed to \texttt{bar}/\texttt{group}/\texttt{milestone inline label anchor}.}
-% \changes{v4.0}{2013/06/01}{The keys \texttt{bar}/\texttt{group}/\texttt{milestone label anchor} were renamed to \texttt{bar}/\texttt{group}/\texttt{milestone label node}.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{title label anchor} was renamed to \texttt{title label node}.}
-% \changes{v4.0}{2013/06/01}{\cs{gantttitlecalendar} prints a title calendar.}
-% \changes{v4.0}{2013/06/01}{The keys \texttt{calendar week text} and \texttt{compress calendar} were added.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{newline shortcut} determines whether the shortcut for line breaks is defined in the chart. In this case, \cs{ganttalignnewline} allows line breaks in the node text.}
-% \changes{v4.0}{2013/06/01}{The keys \texttt{today offset}, \texttt{today label font} and \texttt{today label node} were added.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{today} accepts a time slot specifier.}
-% \changes{v4.0}{2013/06/01}{The canvas is now a node with shape \texttt{rectangle} by default.}
-% \changes{v4.0}{2013/06/01}{\cs{newgantttimeslotformat} allows the user to define custom time slot formats.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{time slot format/start date} specifies the internal date representation of digit 1 in the \texttt{simple} time slot format.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{time slot format/base century} provides the century for autocompletion of two-digit years.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{time slot format} changes the format of time slot specifiers.}
-% \changes{v4.0}{2013/06/01}{The \texttt{ganttchart} environment now requires two mandatory arguments.}
-%
-% \changes{v3.0}{2012/01/25}{\cs{setganttlinklabel} specifies the label for all links of a certain type. The \texttt{link label} key locally overrides any label set by this command.}
-% \changes{v3.0}{2012/01/25}{The \texttt{chart element} shape supports four additional anchors (\texttt{on left}, \texttt{on top}, \texttt{on right} and \texttt{on bottom}).}
-% \changes{v3.0}{2012/01/25}{\cs{@gtt@get} has been renamed to \cs{ganttvalueof} to provide a convenient access for link type authors.}
-% \changes{v3.0}{2012/01/25}{\cs{@gtt@keydef} and \cs{@gtt@stylekeydef} have been rewritten to support \texttt{pgfkey}'s abilities to store key values.}
-% \changes{v3.0}{2012/01/25}{New auxiliary macros for \cs{newganttlinkstyle}: \cs{xLeft}, \cs{xRight}, \cs{yUpper}, \cs{yLower}, \cs{ganttsetstartanchor}, \cs{ganttsetendanchor} and \cs{ganttlinklabel}.}
-% \changes{v3.0}{2012/01/25}{Completely rewrote the code for links (again). Definition of new link types is now possible (via \cs{newganttlinktype} and \cs{newganttlinktypealias}).}
-% \changes{v3.0}{2012/01/25}{The \texttt{bar/group/milestone label shape anchor} keys allow for a fine-tuned placement of chart element labels.}
-% \changes{v3.0}{2012/01/25}{All style keys (\texttt{canvas}, \texttt{bar} etc.) only support the common \TikZ\ style key syntax.}
-% \changes{v2.1}{2011/11/10}{The \texttt{inline} key moves labels close to their respective chart elements.}
-% \changes{v2.1}{2011/11/10}{Added three keys (\texttt{bar/group/milestone label inline anchor}) for placing inline labels.}
-% \changes{v2.1}{2011/11/10}{The \texttt{ganttchart} environment may be used outside a \texttt{tikzpicture}.}
-% \changes{v2.0}{2011/10/10}{The syntax of \cs{ganttlink} was completely changed. The command now takes one optional and \textit{two} mandatory arguments. The latter specify the name of the chart elements to be linked. Consequently, the keys \texttt{b-b}, \texttt{b-m}, \texttt{m-b} and \texttt{m-m} were removed. The keys \texttt{s-s}, \texttt{s-f}, \texttt{f-s} and \texttt{f-f} are now values for the \texttt{link type} key.}
-% \changes{v2.0}{2011/10/10}{The optional argument of \cs{ganttnewline} now also accepts a style.}
-% \changes{v2.0}{2011/10/10}{Removed the \texttt{hgrid shift} and \texttt{last line height} keys.}
-% \changes{v2.0}{2011/10/10}{Removed the \texttt{vgrid lines list} key, as its behaviour can be simulated by an appropriate \meta{style list} for \texttt{vgrid}.}
-% \changes{v2.0}{2011/10/10}{Added style lists for the horizontal and vertical grid.}
-% \changes{v2.0}{2011/10/10}{Removed the \texttt{vgrid style} key.}
-% \changes{v2.0}{2011/10/10}{Completely rewrote the calculation of coordinates.}
-% \changes{v2.0}{2011/10/10}{The \texttt{x unit}, \texttt{y unit title} and \texttt{y unit chart} keys specify the width of time slots and the height of title or chart lines, respectively. Thus, one can draw titles whose height differs from the rest of the chart. Furthermore, the $x$- and $y$-dimensions of the chart are independent of the dimensions of the surrounding \texttt{tikzpicture}.}
-% \changes{v1.1}{2011/04/18}{\texttt{link tolerance} decides whether a five- or a three-part link is drawn.}
-% \changes{v1.1}{2011/04/18}{\texttt{milestone label text} configures the text of a milestone label.}
-% \changes{v1.1}{2011/04/18}{\texttt{bar label text} configures the text of a bar label.}
-% \changes{v1.1}{2011/04/18}{The \texttt{time slot modifier} key has been added. If set to zero, all $x$-coordinates are interpreted as given, without regarding them as time slots.}
-% \changes{v1.1}{2011/04/18}{The \texttt{vgrid lines list} key determines the number of vertical grid lines drawn.}
-% \changes{v1.1}{2011/04/18}{The introduction clarifies what I mean by ``a current \textsc{pgf} installation''.}
-% \changes{v1.1}{2011/04/18}{\texttt{group label text} configures the text of a group label.}
-% \changes{v1.0}{2011/03/01}{Initial release}
-%
%
% \clearpage\section{Introduction}
%
-% The \pack{pgfgantt} package allows you to draw Gantt charts in \LaTeX. Thus, you can describe simple project schedules without having to include images produced by external programs. Similar to Martin Kumm's \pack{gantt} package\footnote{\url{http://www.martin-kumm.de/tex_gantt_package.php}} (which inspired \pack{pgfgantt}'s fundamental aspects), \pack{pgfgantt} bases upon \textsc{pgf} and its \TikZ\ frontend\footnote{\url{http://ctan.org/tex-archive/graphics/pgf/}}. Besides, it provides a comprehensive (and portable) alternative to \pack{pst-gantt}\footnote{\url{http://ctan.org/tex-archive/graphics/pstricks/contrib/pst-gantt/}}.
+% The \pack{pgfgantt} package allows you to draw Gantt charts in \LaTeX. Thus, you can describe simple project schedules without having to include images produced by external programs. Similar to Martin Kumm's \pack{gantt} package\footnote{\url{https://www.martin-kumm.de/tex_gantt_package.php}} (which inspired \pack{pgfgantt}'s fundamental aspects), \pack{pgfgantt} bases upon \textsc{pgf} and its \TikZ\ frontend\footnote{\url{https://ctan.org/pkg/pgf/}}. Besides, it provides a comprehensive (and portable) alternative to \pack{pst-gantt}\footnote{\url{https://ctan.org/pkg/pst-gantt/}}.
%
% \paragraph{Requirements} \pack{pgfgantt} requires a \textit{current} \textsc{pgf} installation. Note that the version number must at least be 2.10, dated October 25th, 2010. Furthermore, \pack{pgfgantt}~\fileversion\ and above is not fully downwards compatible.
-%
+%
% \paragraph{Suggestions} Please report any suggestions and improvements at the project's GitHub page (\url{https://github.com/skafdasschaf/latex-pgfgantt}).
%
% \paragraph{Acknowledgements} I would like to thank the following people for their ideas concerning new features:
@@ -425,7 +313,7 @@
% \end{ganttchart}
% \end{center}
%
-%
+%
% \subsection{Specifying Keys}
%
% \textit{Keys} (sometimes called \textit{options}) modify the output from \pack{pgfgantt}'s commands. You may specify a key in two ways: (1) Pass it to the optional argument present in each command, e.\,g.
@@ -439,7 +327,7 @@
% Since \pack{pgfgantt} uses the \pack{pgfkeys} package for key management, all its keys reside in the |/pgfgantt/| path. However, if you set your keys by one of the methods explained above, this path is automatically prepended to each key.
%
% \subsection{The Canvas}
-%
+%
% Let us have a look at the basic anatomy of a Gantt chart and define some common terms. Each \textit{chart} consists of several \textit{lines}, which may contain one or more \textit{title elements} (at the top) or \textit{chart elements} (such as bars, groups and milestones). From left to right, the chart is divided into an integer number of \textit{time slots} that represent the basic $x$-unit.
%
% The \DescribeEnv{ganttchart}|ganttchart| environment draws a single Gantt chart:
@@ -449,7 +337,7 @@
% \end{ganttchart}
% \end{texcode}
% The environment has one optional argument, which specifies the \meta{options} for the chart, and two mandatory arguments, which indicate the start and end time slot specifier. Although you will often put a |ganttchart| into a |tikzpicture| environment, you may actually use this environment on its own. \pack{pgfgantt} checks whether a chart is surrounded by a |tikzpicture| and adds this environment if necessary.
-%
+%
% \begin{key}{time slot format}{\meta{format}}{simple}
% Sets the \meta{format} of time slot specifiers. A \textbf{time slot specifier} (abbreviated ``tss'') denotes a certain time slot along the horizontal axis. \pack{pgfgantt} defines a range of formats:
% \begin{itemize}
@@ -469,23 +357,23 @@
% \textit{Examples:} \texttt{2013-03-14}, \texttt{13/03/14}, \texttt{2013.3.14}
% \end{itemize}
% \end{key}
-%
+%
% \noindent Two subkeys of \opt{time slot format} let you configure \pack{pgfgantt}'s behavior regarding automatic completion of abbreviated dates:
-%
+%
% \begin{key}{time slot format/base century}{\meta{year}}{2000}
% Sets the century for auto-completion of two-digit years (used by the time slot formats \texttt{little-endian}, \texttt{middle-endian} and \texttt{big-endian}). Consequently, default settings convert a year like \texttt{13} to \texttt{2013}.
% \end{key}
-%
+%
% \begin{key}{time slot format/start date}{\meta{ISO-standard date}}{2000-01-01}
% Numbers denoting time slots in the \texttt{simple} format are internally converted to a date, where \texttt{1} is converted to \meta{ISO-standard date}, \texttt{2} to $\meta{ISO-standard date} + 1$ etc.
% \end{key}
-%
+%
% \bigskip\noindent Advanced users may add their own time slot \DescribeMacro{\newgantttimeslotformat}formats:
% \begin{texcode}
% \newgantttimeslotformat`\marg{name}\marg{converter code}'
% \end{texcode}
% Defines a new time slot format called \meta{name}. The \meta{converter code} must convert the time slot specifier stored in |#1| to its corresponding Julian day number (see section~57 of the \TikZ\ manual) and assign this number to the count register |#2|. The \meta{converter code} is executed within a \TeX\ group, so you may use temporary macros like |\@tempa|, counts like |\@tempcnta| etc.
-%
+%
% For example, we would like to create a format called \texttt{stardate}, where dates are given as ``\meta{year}\texttt{.}\meta{day of year}''. Thus, we will enter 24th February 2259 as ``\texttt{2259.55}''. To this end, we write the following code:
% \par\bigskip\noindent
% \begin{texcode}[numbers=left]
@@ -498,10 +386,10 @@
% \advance#2 by-1\relax%
% \advance#2 by\stardateday\relax%
% }
-%
+%
% \begin{ganttchart}[
% hgrid,
-% vgrid,
+% vgrid,
% time slot format=stardate
% ]{2259.55}{2259.67}
% \gantttitlecalendar{year, month=name, day} \\
@@ -517,18 +405,18 @@
% \advance#2 by-1\relax%
% \advance#2 by\stardateday\relax%
% }
-%
+%
% \begin{ganttchart}[
% hgrid,
-% vgrid,
+% vgrid,
% time slot format=stardate
% ]{2259.55}{2259.67}
% \gantttitlecalendar{year, month=name, day} \\
% \end{ganttchart}
% \end{center}
-%
+%
% \noindent The macro |\decomposestardate| (lines 2--4) has two delimited arguments: The first one is delimited by a period and the second one by |\relax|. The call in line 5 decomposes the tss stored in |#1| and saves the day in |\stardateday| and the year in |\stardateyear|. |\pgfcalendardatetojulian| (section~57.1.1 of the \TikZ\ manual) calculates the Julian date of the first day of |\stardateyear| and stores it in |#2| (line 6). We then subtract 1 from |#2| (line 7) and add the |\stardateday| (line 8).
-%
+%
% \begin{key}[./style=]{canvas}{\meta{style}}{shape=rectangle, draw, fill=white}
% The \opt{canvas} key changes the appearance of the canvas. \meta{style} is a list of \TikZ\ keys suitable for the \meta{options} of a \TikZ\ node (such as |shape=rectangle|, |fill| or |draw|; see chapter~16 of the \TikZ\ manual). By default, the canvas is a white rectangle with a black frame.
% \par\bigskip\noindent
@@ -617,9 +505,9 @@
% \opt{hgrid} draws a horizontal grid which starts immediately below the last title element. The key can be specified in four different ways: Firstly, \opt{hgrid}|=false| eliminates the horizontal grid. You may omit this declaration, since it is the default. Secondly, both \opt{hgrid} and \opt{hgrid}|=true| activate the horizontal grid, which is then drawn in the default style |dotted|. Finally, \opt{hgrid}|=|\meta{style list} draws the horizontal grid in the given \meta{style list} (see below).
%
% \opt{hgrid style} changes the style of single horizontal grid lines that are drawn with |\ganttnewline[grid]| (see section~\ref{ssc:LineBreaks}).
-%
+%
% The \opt{vgrid} key governs the vertical grid; otherwise, use it exactly like \opt{hgrid}.
-%
+%
% \textit{Style lists} allow you to draw the grid lines in different styles. Each style list consists of several \textit{style list items} separated by a comma. A style list item has the general syntax |*{|\meta{n}|}{|\meta{style}|}| and orders the package to repeat the \meta{style} \meta{n}-times. (This syntax is reminiscent of column specifications in a |tabular| environment.) Thus, the list |*2{red}, *1{green}, *{10}{blue, dashed}| instructs \pack{pgfgantt} to draw first two red vertical grid lines, then a green one and finally ten dashed blue lines. If any grid lines remain to be drawn at the end of the list, the package starts again at the beginning of the list.
% \par\bigskip\noindent
% \begin{texcode}
@@ -642,7 +530,7 @@
% \ganttbar{}{9}{20}
% \end{ganttchart}
% \end{center}
-%
+%
% In most situations, you can omit the multiplier |*1|. Hence, the following style lists are equal:\\
% |{*1{red}, *1{blue, dashed}}|\\
% |{{red}, {blue, dashed}}|\\
@@ -653,7 +541,7 @@
% \begin{minipage}[t]{.45\textwidth}
% \begin{texcode}
% % wrong code
-%
+%
% \begin{ganttchart}[
% hgrid=true,
% vgrid={{red, dotted}}
@@ -667,7 +555,7 @@
% \begin{minipage}[t]{.45\textwidth}
% \begin{texcode}
% % correct code
-%
+%
% \begin{ganttchart}[
% hgrid=true,
% vgrid={*1{red, dotted}}
@@ -717,7 +605,7 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
+%
% \begin{key}{today}{\meta{tss}}{none}
% \keyline{today offset}{\meta{number}}{1}
% \keyline[/.style=]{today rule}{\meta{style}}{dashed, line width=1pt}
@@ -787,13 +675,13 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
-%
+%
+%
% \subsection{Line Breaks between Chart Elements}
% \label{ssc:LineBreaks}
%
% \pack{pgfgantt} does not automatically begin a new line after finishing a \DescribeMacro{\ganttnewline}chart element. Instead, you must insert an explicit line break with |\ganttnewline|.
-%
+%
% \begin{key}{newline shortcut}{\meta{boolean}}{true}
% If true, \DescribeMacro{\\}|\\| is defined as a shortcut for |\ganttnewline| within a |ganttchart| environment, so that the syntax is reminiscent of \LaTeX's |tabular| enviroment.
% \par\bigskip\noindent
@@ -868,7 +756,7 @@
% }{1}{3}
% \end{ganttchart}
% \end{center}
-%
+%
% Even if you prefer a canvas without a horizontal grid, you may nevertheless want to separate certain lines by a grid rule. For this purpose, specify the optional argument |[grid]| for |\ganttnewline| (or |\\|), which draws a grid rule in \opt{hgrid style} between the current and the new line. Alternatively, directly give the desired style as optional argument.
% \par\bigskip\noindent
% \begin{texcode}
@@ -921,7 +809,7 @@
% \gantttitlelist`\oarg{options}\marg{pgffor list}\marg{length of each element}'
% \end{texcode}
% This macro generates one title element for each element of the \meta{pgffor list}. The second mandatory argument specifies the \meta{length of each element}. Refer to section~56 of the \TikZ\ manual for the detailed syntax for the \meta{pgffor list}.
-%
+%
% A simple application is to draw twelve title elements that contain the numbers from 1 to 12. The \meta{pgffor list} is |1,...,12|.
% \par\bigskip\noindent
% \begin{texcode}
@@ -942,9 +830,9 @@
% \begin{texcode}
% \gantttitle{1}{1} \gantttitle{2}{1} `\dots' \gantttitle{12}{1} \\
% \end{texcode}
-%
+%
% As an advanced example, we will draw seven title elements containing the names of the weekdays (``Mon'' to ``Sun''). To this end, we introduce an additional key:
-%
+%
% \begin{key}{title list options}{\meta{pgffor options}}{var=\string\x, evaluate=\string\x}
% Changes the \meta{pgffor options} of the |\foreach| command called by |\gantttitlelist| (see section~56 of the \TikZ\ manual). The macro that yields the labels to be printed by |\gantttitlelist| must be called |\x|.
% \par\bigskip\noindent\shorthandoff{"}
@@ -971,7 +859,7 @@
% \end{ganttchart}
% \end{center}\shorthandon{"}
% \end{key}
-%
+%
% \bigskip While you actually may build any chart title with the two commands described previously, \DescribeMacro{\gantttitlecalendar}|\gantttitlecalendar| saves a lot of time when you wish to create elaborate calendars:
% \begin{texcode}
% \gantttitlecalendar`\oarg{options}\marg{calendar lines}'
@@ -999,7 +887,7 @@
% \bottomrule
% \end{tabular}
% \end{center}
-%
+%
% The \meta{number} for the \texttt{week} line type is the number of the first week in the calendar.
% \par\bigskip\noindent
% \begin{texcode}
@@ -1024,16 +912,16 @@
% \ganttbar{}{2013-01-14}{2013-01-17}
% \end{ganttchart}\hspace*{-51.4pt}
% \end{center}
-%
+%
% You can easily add new output formats for \texttt{month} and \texttt{weekday}. The predefined ones use the macros described in section~57.1.3 of the \TikZ\ manual. For example, |weekday=name| calls |\pgfcalendarweekdayname|. Thus, new macros called |\pgfcalendarmonth|\textcolor{RoyalBlue}{\meta{output format}} or |\pgfcalendarweekday|\textcolor{RoyalBlue}{\meta{output format}} will provide additional \meta{output format}s for |month| and |weekday|, respectively.
-%
+%
% A weekday output format called |letter|, which displays a weekday as single letter, might be implemented as follows:
% \par\bigskip\noindent
% \begin{texcode}
% \def\pgfcalendarweekdayletter#1{%
% \ifcase#1M\or T\or W\or T\or F\or S\or S\fi%
% }
-%
+%
% \begin{ganttchart}[
% hgrid,
% vgrid,
@@ -1050,7 +938,7 @@
% \def\pgfcalendarweekdayletter#1{%
% \ifcase#1M\or T\or W\or T\or F\or S\or S\fi%
% }
-%
+%
% \begin{ganttchart}[
% hgrid,
% vgrid,
@@ -1063,7 +951,7 @@
% }
% \end{ganttchart}
% \end{center}
-%
+%
% \begin{key}{calendar week text}{\meta{format}}{Week\string~\string\currentweek}
% Changes the text displayed in a week title element. In \meta{format}, four additional macros are available: \DescribeMacro{\currentweek}|\currentweek| is the current week number; \DescribeMacro{\startyear}|\startyear|, \DescribeMacro{\startmonth}|\startmonth| and \DescribeMacro{\startday}|\startday| expand to the year, month and day of the current week's Monday.
% \par\bigskip\noindent
@@ -1100,7 +988,7 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
+%
% \begin{key}{time slot unit}{\texttt{day}\space\textbar\space\texttt{month}\space\textbar\space\texttt{year}}{day}
% By default, one \textit{calendar day} is one time slot wide. With \opt{time slot unit}\texttt{=month}, one \textit{month} corresponds to one time slot. Consequently, in such calendars only |year| and |month| are sensible line types for |\gantttitlecalendar|, and the time slot format \texttt{isodate-yearmonth} is especially suited.
% \par\bigskip\noindent
@@ -1226,7 +1114,7 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
+%
% \begin{key}{title left shift}{\meta{factor}}{0}
% \keyline{title right shift}{\meta{factor}}{0}
% \keyline{title top shift}{\meta{factor}}{0}
@@ -1394,7 +1282,7 @@
%
%
% \subsection{Predefined Chart Elements}
-%
+%
% \pack{pgfgantt} predefines three chart elements:
% \begin{enumerate}
% \item \DescribeMacro{\ganttbar}\textit{Bars} indicate the duration of a task or one of its parts.
@@ -1411,7 +1299,7 @@
% \end{texcode}
% \end{enumerate}
% Each of these macros draws a \meta{label}ed chart element from the \meta{start tss} to the \meta{end tss} (or at the given \meta{tss} in case of |\ganttmilestone|).
-%
+%
% \par\bigskip\noindent
% \begin{texcode}
% \begin{ganttchart}[vgrid, hgrid]{1}{12}
@@ -1443,7 +1331,7 @@
% \begin{minipage}[t]{.49\textwidth}
% \begin{texcode}
% % Short version
-%
+%
% \begin{ganttchart}[
% vgrid,
% hgrid
@@ -1459,7 +1347,7 @@
% \begin{minipage}[t]{.47\textwidth}
% \begin{texcode}
% % Long version
-%
+%
% \begin{ganttchart}[
% vgrid,
% hgrid
@@ -1475,7 +1363,7 @@
% \end{ganttchart}
% \end{texcode}
% \end{minipage}
-%
+%
% \begin{center}
% \begin{ganttchart}[
% vgrid,
@@ -1488,7 +1376,7 @@
% \ganttlinkedbar{Task 3}{7}{11}
% \end{ganttchart}
% \end{center}
-%
+%
% \begin{key}{chart element start border}{\texttt{left}\space\textbar\space\texttt{right}}{left}
% Determines which border of the start time slot a chart element touches. \texttt{left} is the behavior usually expected, while \texttt{right} strictly interprets the start time slot as an $x$-coordinate.
% \par\bigskip\noindent
@@ -1511,10 +1399,10 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
-%
+%
+%
% \subsubsection{Options: Chart Element Appearance}
-%
+%
% The following options are similar for all predefined (and user-defined) chart elements:
%
% \begin{key}[/.style=]{bar}{\meta{style}}{shape=ganttbar, inner sep=0pt, draw, fill=white}
@@ -1558,9 +1446,9 @@
% \end{center}
% \end{key}
%
-%
+%
% \subsubsection{Options: Label Formatting}
-%
+%
% \begin{key}{bar label text}{\meta{text}}{\string\strut\#1}
% \keyline{group label text}{\meta{text}}{\string\strut\#1}
% \keyline{milestone label text}{\meta{text}}{\string\strut\#1}
@@ -1611,7 +1499,7 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
+%
% \begin{key}{inline}{\meta{boolean}}{false}
% \keyline{bar inline label anchor}{\meta{anchor}}{center}
% \keyline{group inline label anchor}{\meta{anchor}}{center}
@@ -1650,10 +1538,10 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
-%
+%
+%
% \subsubsection{Options: Chart Element Positioning}
-%
+%
% \begin{key}{bar left shift}{\meta{factor}}{0}
% \keyline{bar right shift}{\meta{factor}}{0}
% \keyline{bar top shift}{\meta{factor}}{.3}
@@ -1667,7 +1555,7 @@
% \keyline{milestone top shift}{\meta{factor}}{.3}
% \keyline{milestone height}{\meta{factor}}{.4}
% Shift the coordinates of a chart element's borders (\opt{\dots\ shift}) and change its height (\opt{\dots\ height}).
-%
+%
% \begin{center}
% \begin{tikzpicture}[x=.5cm, y=1cm]
% \begin{ganttchart}[vgrid, hgrid]{1}{8}
@@ -1701,7 +1589,7 @@
% \draw[-latex,teal] (8,-4.2) node[right] {End time slot (6)} -- (6,-3.8);
% \end{tikzpicture}
% \end{center}
-%
+%
% The three following figures illustrate the distances modified by these keys. The first figure shows a Gantt chart with a bar, two lines and one time slot.
% \begin{center}
% \begin{tikzpicture}[x=8cm, y=2cm]
@@ -1809,7 +1697,7 @@
% -- (.4,-.85);
% \end{tikzpicture}
% \end{center}
-%
+%
% \begin{key}{group right peak tip position}{\meta{fraction}}{0.5}
% \keyline{group right peak width}{\meta{factor}}{0.4}
% \keyline{group right peak height}{\meta{factor}}{0.1}
@@ -1820,7 +1708,7 @@
% \keyline{group peaks width}{\meta{factor}}{\textrm{(none)}}
% \keyline{group peaks height}{\meta{factor}}{\textrm{(none)}}
% Change the appearance of the peaks at both ends of a group. By default, both the left and right peak are 0.4~units wide and 0.1~units high, their tips lie between the peak sides. The \opt{group peaks \dots} keys set the dimensions for both peaks simultaneously. The figure below exemplifies the keys that apply to the left peak.
-%
+%
% \begin{center}
% \begin{tikzpicture}[x=8cm, y=2cm]
% \small
@@ -1845,7 +1733,7 @@
% \end{tikzpicture}
% \end{center}
% \end{key}
-%
+%
% For example, you might devise the following layout: Bars are small and rounded; they do not touch the borders of their start and end time slots. Groups stay within the start and end time slot, and the peaks are more acute.
% \par\bigskip\noindent
% \begin{texcode}
@@ -1887,12 +1775,12 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
-%
+%
+%
% \subsubsection{Options: Progress}
-%
+%
% The \textit{progress} of a chart element illustrates the extent to which this element has been completed.
-%
+%
% \begin{key}{progress}{\texttt{none}\space\textbar\space\texttt{today}\space\textbar\space\meta{number}}{none}
% Indicates that a chart element is \meta{number} percent complete. The value \texttt{none} turns progress calculations off.
% \par\bigskip\noindent
@@ -1950,7 +1838,7 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
+%
% \begin{key}[/.style=]{bar incomplete}{\meta{style}}{/pgfgantt/bar, fill=black!25}
% \keyline[/.style=]{group incomplete}{\meta{style}}{/pgfgantt/group, fill=black!25}
% \keyline[/.style=]{milestone incomplete}{\meta{style}}{/pgfgantt/milestone, fill=black!25}
@@ -1993,7 +1881,7 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
+%
% \begin{key}{progress label text}{\meta{text}}{\string\pgfmathprintnumber[precision=0, verbatim]\{\#1\}\string\% complete}
% \keyline{bar progress label anchor}{\meta{anchor}}{east}
% \keyline{bar progress label font}{\meta{font commands}}{\string\scriptsize}
@@ -2047,16 +1935,16 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
-%
+%
+%
% \subsubsection{New Node Shapes}
% \label{sss:NewNodeShapes}
-%
+%
% \pack{pgfgantt} defines three new node shapes:
-%
+%
% \bigskip\noindent
% (1) The \texttt{ganttbar} node shape derives from shape \texttt{rectangle} (section~48.2 of the \TikZ\ manual). It provides four additional anchors: \texttt{on top}, \texttt{on bottom}, \texttt{on left} and \texttt{on right}. The \meta{fraction} set by the following keys indicates a position between the left and right (for \texttt{on top} and \texttt{on bottom}) or upper and lower border (for \texttt{on left} and \texttt{on right}), similarly to the \opt{/tikz/pos} key.
-%
+%
% \begin{key}{on top fraction}{\meta{fraction}}{0.5}
% \keyline{on bottom fraction}{\meta{fraction}}{0.5}
% \keyline{on left fraction}{\meta{fraction}}{0.5}
@@ -2097,7 +1985,7 @@
% \end{tikzpicture}
% \end{center}
% \end{key}
-%
+%
% \bigskip\noindent
% (2) The \texttt{ganttgroup} node shape also derives from shape \texttt{rectangle}. It provides the additional anchors \texttt{on top}, \texttt{on bottom}, \texttt{on left}, \texttt{on right} (same as above), \texttt{left peak} and \texttt{right peak}.
% \begin{center}
@@ -2138,7 +2026,7 @@
% node [\placement] {\scriptsize\texttt{(s.\anchor)}};
% \end{tikzpicture}
% \end{center}
-%
+%
% \bigskip\noindent
% (3) The \texttt{ganttmilestone} node shape derives from shape \texttt{diamond} (section~48.3 of the \TikZ\ manual), but does not consider any aspect ratio. It provides the additional anchors \texttt{on top}, \texttt{on bottom}, \texttt{on left} and \texttt{on right} (same as above).
% \begin{center}
@@ -2172,19 +2060,19 @@
% node [\placement] {\scriptsize\texttt{(s.\anchor)}};
% \end{tikzpicture}
% \end{center}
-%
-%
+%
+%
% \subsection{Defining Custom Chart Elements}
-%
+%
% You may define completely new chart elements with
% \begin{texcode}
% \newganttchartelement`\marg{name}\marg{new default key values}'
% \newganttchartelement*`\marg{name}\marg{new default key values}'
% \end{texcode}
% \DescribeMacro{\newganttchartelement}|\newganttchartelement| (unstarred) defines a new chart element |\gantt|\textcolor{RoyalBlue}{\meta{name}} and the corresponding |\ganttlinked|\textcolor{RoyalBlue}{\meta{name}}. These chart element macros take one optional argument \meta{options} and \textit{three} mandatory arguments \meta{label}, \meta{start tss} and \meta{end tss} (like |\ganttbar|).
-%
+%
% Chart element macros defined by the starred form, \DescribeMacro{\newganttchartelement*}|\newganttchartelement*|, take the same single optional argument, but \textit{two} mandatory arguments \meta{label} and \meta{tss} (like |\ganttmilestone|).
-%
+%
% For each new chart element, |\newganttchartelement| also introduces a set of nine value-storing keys and five style keys and assigns default values to them:
% \begin{center}
% \begin{tabular}{l >{\ttfamily}l}
@@ -2212,13 +2100,13 @@
% \end{tabular}\hspace*{-120pt}
% \end{center}
% Consequently, a new chart element will look like the standard |\ganttbar| unless you introduce some \meta{new default key values}.
-%
+%
% Let us define a new chart element called ``foobar'', which is basically a fancy-colored and -shaped bar:
% \par\bigskip\noindent
% \begin{texcode}
% \definecolor{foobarblue}{RGB}{0,153,255}
% \definecolor{foobaryellow}{RGB}{234,187,0}
-%
+%
% \newganttchartelement{foobar}{
% foobar/.style={
% shape=rounded rectangle,
@@ -2237,7 +2125,7 @@
% foobar left shift=-.1,
% foobar right shift=.1
% }
-%
+%
% \begin{ganttchart}[
% vgrid,
% progress=today,
@@ -2253,7 +2141,7 @@
% \begin{center}
% \definecolor{foobarblue}{RGB}{0,153,255}
% \definecolor{foobaryellow}{RGB}{234,187,0}
-%
+%
% \newganttchartelement{foobar}{
% foobar/.style={
% shape=rounded rectangle,
@@ -2272,7 +2160,7 @@
% foobar left shift=-.1,
% foobar right shift=.1
% }
-%
+%
% \begin{ganttchart}[
% vgrid,
% progress=today,
@@ -2285,7 +2173,7 @@
% \ganttlinkedfoobar{Foobar 3}{9}{12}
% \end{ganttchart}
% \end{center}
-%
+%
%
% \subsection{Links}
% \label{ssc:Links}
@@ -2294,7 +2182,7 @@
% \begin{texcode}
% \ganttlink`\oarg{options}\marg{start element name}\marg{end element name}'
% \end{texcode}
-%
+%
% \begin{key}{name}{\meta{name}}{\textrm{(empty)}}
% The \DescribeMacro{\ganttlink}|\ganttlink| macro connects two elements, which are specified by their \meta{name}s. By default, chart elements are named automatically: The first one receives the name \texttt{elem0}, the second one is called \texttt{elem1} and so on. However, the \opt{name} key allows you to assign a name to each chart element.
% \par\bigskip\noindent
@@ -2348,7 +2236,7 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
+%
% \begin{key}[/.style=]{link}{\meta{style}}{-latex, rounded corners=1pt}
% Sets the appearance of the link.
% \par\bigskip\noindent
@@ -2490,7 +2378,7 @@
% \DescribeMacro{\newganttlinktype}It defines a new link \meta{type} which is drawn by the given \meta{TikZ code}. When you write this code, you do not have to know the final absolute coordinates of each link type instance. On the contrary, several commands that are only available in the second argument of |\newganttlinktype| help you to design generic link types:
% \begin{itemize}
% \item First, you have to choose the border points of the chart elements the link will connect. For this purpose, \DescribeMacro{\ganttsetstartanchor}|\ganttsetstartanchor{|\meta{anchor}|}| and \DescribeMacro{\ganttsetendanchor}|\ganttsetendanchor{|\meta{anchor}|}| select an \meta{anchor} of the start and end element, respectively. See the figures in section~\ref{sss:NewNodeShapes} for possible \meta{anchor}s of the default chart element shapes. You may specify a certain \meta{fraction} for anchors like \texttt{on top} by |\ganttsetstartanchor{on top=|\meta{fraction}|}|.
-%
+%
% \pack{pgfgantt} sets the default anchors to |\ganttsetstartanchor{east}| and |\ganttsetendanchor{west}|, so you even may omit these two commands.
% \item The two macro pairs \DescribeMacro{\xLeft}|\xLeft|/\DescribeMacro{\yUpper}|\yUpper| and \DescribeMacro{\xRight}|\xRight|/\DescribeMacro{\yLower}|\yLower| provide the $x$- and $y$-coordinates of the link start and end points, respectively.
% \begin{center}\makeatletter
@@ -2509,7 +2397,7 @@
% \end{itemize}
% \end{enumerate}
% \end{key}
-%
+%
% \begin{texcode}
% \newganttlinktypealias`\marg{new type}\marg{existing type}'
% \end{texcode}
@@ -2524,7 +2412,7 @@
% \newganttlinktypealias{sta-to-sta}{s-s}
% \newganttlinktypealias{fin-to-fin}{f-f}
% \setganttlinklabel{fin-to-fin}{f2f}
-%
+%
% \begin{ganttchart}[vgrid, hgrid]{1}{12}
% \gantttitle{Title}{12} \\
% \ganttbar{Task 1}{2}{3} \\
@@ -2538,7 +2426,7 @@
% \newganttlinktypealias{sta-to-sta}{s-s}
% \newganttlinktypealias{fin-to-fin}{f-f}
% \setganttlinklabel{fin-to-fin}{f2f}
-%
+%
% \begin{ganttchart}[vgrid, hgrid]{1}{12}
% \gantttitle{Title}{12} \\
% \ganttbar{Task 1}{2}{3} \\
@@ -2552,7 +2440,7 @@
% \par\bigskip\noindent
% \begin{texcode}
% \usetikzlibrary{decorations.pathmorphing}
-%
+%
% \newganttlinktype{zigzag}{
% \ganttsetstartanchor{on right=1}
% \ganttsetendanchor{on left=0}
@@ -2560,7 +2448,7 @@
% (\xLeft, \yUpper) --
% (\xRight, \yLower);
% }
-%
+%
% \begin{ganttchart}[vgrid, hgrid]{1}{12}
% \gantttitle{Title}{12} \\
% \ganttbar{Task 1}{2}{3} \\
@@ -2612,7 +2500,7 @@
% (\xRight, \yLower);
% }
% \setganttlinklabel{drur}{a fancy link}
-%
+%
% \begin{ganttchart}[
% vgrid,
% hgrid,
@@ -2648,7 +2536,7 @@
% (\xRight, \yLower);
% }
% \setganttlinklabel{drur}{a fancy link}
-%
+%
% \begin{ganttchart}[
% vgrid,
% hgrid,
@@ -2663,7 +2551,7 @@
% \end{ganttchart}
% \end{center}
% (Please remove the comments if you copy the code above -- they will confuse \TikZ\ and generate tons of errors.)
-%
+%
% \begin{key}{link label}{\meta{label}}{\textrm{(empty)}}
% \keyline{link label font}{\meta{font commands}}{\string\scriptsize\string\itshape}
% \keyline[/.style=]{link label node}{\meta{options}}{anchor=west, font=\string\ganttvalueof\{link label font\}}
@@ -2812,9 +2700,9 @@
% \ganttlink[link mid=.159]{pp}{T2A}
% \end{ganttchart}
% \end{center}
-%
+%
% \bigskip
-% The second example demonstrates that \pack{pgfgantt} is really flexible: Even an appearance quite different from the standard layout is possible. (More precisely, the code below tries to reproduce the Gantt chart from the English Wikipedia site, see \url{http://en.wikipedia.org/wiki/Gantt_chart}.)
+% The second example demonstrates that \pack{pgfgantt} is really flexible: Even an appearance quite different from the standard layout is possible. (More precisely, the code below tries to reproduce the Gantt chart from the English Wikipedia site, see \url{https://en.wikipedia.org/wiki/Gantt_chart}.)
% \par\bigskip\noindent
% \begin{texcode}
% \definecolor{barblue}{RGB}{153,204,254}
@@ -2967,8 +2855,8 @@
% \end{ganttchart}
% \end{center}
%
-%
-% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \StopEventually{\PrintIndex}
% \lstDeleteShortInline|
% \MakeShortVerb{\|}
% \clearpage\section{Implementation}
@@ -3050,7 +2938,7 @@
%
%
% \subsection{The Horizontal and Vertical Grid}
-%
+%
% \begin{intmacro}{\gtt@currentline}
% \begin{intmacro}{\gtt@lasttitleline}
% \begin{intmacro}{\gtt@currgrid}
@@ -3202,7 +3090,7 @@
%
%
% \subsection{Time Slot Formats}
-%
+%
% \begin{intmacro}{\gtt@smugglecount}
% |\gtt@smugglecount|\marg{count} smuggles the local value of a count register over the end of a \TeX\ group.
% \begin{macrocode}
@@ -3390,11 +3278,11 @@
% \end{macrocode}
% \end{intmacro}
% \end{option}
-%
-%
+%
+%
% \subsection{The Main Environment}
% \label{ssc:ImplMain}
-%
+%
% \begin{option}{x unit}
% \begin{option}{y unit title}
% \begin{option}{y unit chart}
@@ -4222,10 +4110,10 @@
}
% \end{macrocode}
-%
-%
+%
+%
% \subsection{Chart Elements}
-%
+%
% \begin{option}{progress}
% \begin{intmacro}{\gtt@progress}
% \begin{option}{progress label text}
@@ -4606,7 +4494,7 @@
% \end{option}
% \end{macro}
% \end{macro}
-% \clearpage
+% \clearpage
% \begin{macro}{\ganttgroup}
% \begin{macro}{\ganttlinkedgroup}
% \begin{option}{group}
@@ -4772,10 +4660,10 @@
% \end{option}
% \end{macro}
% \end{macro}
-%
-%
+%
+%
% \subsection{Node Shapes}
-%
+%
% \begin{option}{on top fraction}
% \begin{option}{on bottom fraction}
% \begin{option}{on left fraction}
@@ -5067,11 +4955,11 @@
}
% \end{macrocode}
-%
+%
%
% \subsection{Links}
% \label{ssc:ImplLinks}
-%
+%
% \begin{option}{link}
% \begin{option}{link type}
% \begin{option}{link label}
@@ -5302,7 +5190,7 @@
% \end{macrocode}
% \end{intmacro}
% \begin{intmacro}{\@gtt@link@anchor}
-% We need the following keys for setting the start and end anchor of a link: Whenever a key |/pgfgantt/link anchor/|\meta{anchor} is undefined, \pack{pgfgantt} stores \meta{anchor} in |\@gtt@link@anchor|.
+% We need the following keys for setting the start and end anchor of a link: Whenever a key |/pgfgantt/link anchor/|\meta{anchor} is undefined, \pack{pgfgantt} stores \meta{anchor} in |\@gtt@link@anchor|.
% \begin{macrocode}
\ganttset{%
link anchor/.unknown/.code={%
diff --git a/graphics/pgf/contrib/pgfgantt/pgfgantt.ins b/graphics/pgf/contrib/pgfgantt/pgfgantt.ins
index 6e4aa0dd2b..2c6c6a4c03 100644
--- a/graphics/pgf/contrib/pgfgantt/pgfgantt.ins
+++ b/graphics/pgf/contrib/pgfgantt/pgfgantt.ins
@@ -1,6 +1,6 @@
%% pgfgantt.ins
%%
-%% Copyright (C) 2083 by Wolfgang Skala
+%% Copyright (C) 2024 by Wolfgang Esser-Skala
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -10,9 +10,7 @@
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
%%
-%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainer of this work is Wolfgang Skala.
+%% This work has the LPPL maintenance status `unmaintained'.
%%
%% This work consists of the files pgfgantt.dtx and pgfgantt.ins
%% and the derived file pgfgantt.sty.
@@ -24,7 +22,7 @@
\preamble
-Copyright (C) 2018 by Wolfgang Skala
+Copyright (C) 2024 by Wolfgang Esser-Skala
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
@@ -51,11 +49,10 @@ version 2008/05/04 or later.
\Msg{*}
\Msg{* pdflatex pgfgantt.dtx}
\Msg{* makeindex -s gind.ist -o pgfgantt.ind pgfgantt.idx}
-\Msg{* makeindex -s gglo.ist -o pgfgantt.gls pgfgantt.glo}
\Msg{* pdflatex pgfgantt.dtx (2x)}
\Msg{*}
\Msg{* Happy TeXing!}
\Msg{*}
\Msg{****************************************************}
-\endbatchfile \ No newline at end of file
+\endbatchfile
diff --git a/graphics/pgf/contrib/pgfgantt/pgfgantt.pdf b/graphics/pgf/contrib/pgfgantt/pgfgantt.pdf
deleted file mode 100644
index 5536734a4c..0000000000
--- a/graphics/pgf/contrib/pgfgantt/pgfgantt.pdf
+++ /dev/null
Binary files differ
diff --git a/graphics/pmdraw/README.md b/graphics/pgf/contrib/pmdraw/README.md
index dd9954a495..dfc3e2924d 100644
--- a/graphics/pmdraw/README.md
+++ b/graphics/pgf/contrib/pmdraw/README.md
@@ -1,12 +1,12 @@
pmdraw
======
-*README V1.3 2024-04-09*
+*README V1.4 2024-06-02*
<!--
*------------------------------*
-|0````````````````````````````8|
+|6````````````````````````````5|
|`````____````____`````````````|
|````|MFMF\ /MFMF|````````````|
|````|MF|MF\/MF|MF|````````````|
@@ -18,7 +18,7 @@ pmdraw
|``````````````|MF|````````````|
|``````````````|MF|````````````|
|``````````````|MF|````````````|
-|1````````````````````````````3|
+|4````````````````````````````1|
*------------------------------*
-->
diff --git a/graphics/pmdraw/examples/example-1.tex b/graphics/pgf/contrib/pmdraw/examples/example-1.tex
index 402c418a15..402c418a15 100644
--- a/graphics/pmdraw/examples/example-1.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-1.tex
diff --git a/graphics/pmdraw/examples/example-10.tex b/graphics/pgf/contrib/pmdraw/examples/example-10.tex
index 01d1502f32..01d1502f32 100644
--- a/graphics/pmdraw/examples/example-10.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-10.tex
diff --git a/graphics/pmdraw/examples/example-11.tex b/graphics/pgf/contrib/pmdraw/examples/example-11.tex
index 9729320f40..9729320f40 100644
--- a/graphics/pmdraw/examples/example-11.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-11.tex
diff --git a/graphics/pmdraw/examples/example-12.tex b/graphics/pgf/contrib/pmdraw/examples/example-12.tex
index f21946849f..f21946849f 100644
--- a/graphics/pmdraw/examples/example-12.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-12.tex
diff --git a/graphics/pmdraw/examples/example-13.tex b/graphics/pgf/contrib/pmdraw/examples/example-13.tex
index c3a189e202..c3a189e202 100644
--- a/graphics/pmdraw/examples/example-13.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-13.tex
diff --git a/graphics/pmdraw/examples/example-14.tex b/graphics/pgf/contrib/pmdraw/examples/example-14.tex
index 0ad77f546d..0ad77f546d 100644
--- a/graphics/pmdraw/examples/example-14.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-14.tex
diff --git a/graphics/pmdraw/examples/example-15.tex b/graphics/pgf/contrib/pmdraw/examples/example-15.tex
index 672965eb13..672965eb13 100644
--- a/graphics/pmdraw/examples/example-15.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-15.tex
diff --git a/graphics/pmdraw/examples/example-16.tex b/graphics/pgf/contrib/pmdraw/examples/example-16.tex
index efacb4d246..efacb4d246 100644
--- a/graphics/pmdraw/examples/example-16.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-16.tex
diff --git a/graphics/pmdraw/examples/example-17.tex b/graphics/pgf/contrib/pmdraw/examples/example-17.tex
index 97c6052f8a..97c6052f8a 100644
--- a/graphics/pmdraw/examples/example-17.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-17.tex
diff --git a/graphics/pmdraw/examples/example-18.tex b/graphics/pgf/contrib/pmdraw/examples/example-18.tex
index 2d1014a1cb..2d1014a1cb 100644
--- a/graphics/pmdraw/examples/example-18.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-18.tex
diff --git a/graphics/pmdraw/examples/example-19.tex b/graphics/pgf/contrib/pmdraw/examples/example-19.tex
index 32c24bcf23..32c24bcf23 100644
--- a/graphics/pmdraw/examples/example-19.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-19.tex
diff --git a/graphics/pmdraw/examples/example-2.tex b/graphics/pgf/contrib/pmdraw/examples/example-2.tex
index c80de8e5a3..c80de8e5a3 100644
--- a/graphics/pmdraw/examples/example-2.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-2.tex
diff --git a/graphics/pmdraw/examples/example-20.tex b/graphics/pgf/contrib/pmdraw/examples/example-20.tex
index 8d0bc25cb3..8d0bc25cb3 100644
--- a/graphics/pmdraw/examples/example-20.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-20.tex
diff --git a/graphics/pmdraw/examples/example-21.tex b/graphics/pgf/contrib/pmdraw/examples/example-21.tex
index e4bd9556cc..e4bd9556cc 100644
--- a/graphics/pmdraw/examples/example-21.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-21.tex
diff --git a/graphics/pmdraw/examples/example-22.tex b/graphics/pgf/contrib/pmdraw/examples/example-22.tex
index c7aa5c4cba..c7aa5c4cba 100644
--- a/graphics/pmdraw/examples/example-22.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-22.tex
diff --git a/graphics/pmdraw/examples/example-23.tex b/graphics/pgf/contrib/pmdraw/examples/example-23.tex
index d2ae85c4e7..d2ae85c4e7 100644
--- a/graphics/pmdraw/examples/example-23.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-23.tex
diff --git a/graphics/pmdraw/examples/example-24.tex b/graphics/pgf/contrib/pmdraw/examples/example-24.tex
index 7b93adc805..7b93adc805 100644
--- a/graphics/pmdraw/examples/example-24.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-24.tex
diff --git a/graphics/pmdraw/examples/example-25.tex b/graphics/pgf/contrib/pmdraw/examples/example-25.tex
index bea76db2f3..bea76db2f3 100644
--- a/graphics/pmdraw/examples/example-25.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-25.tex
diff --git a/graphics/pmdraw/examples/example-3.tex b/graphics/pgf/contrib/pmdraw/examples/example-3.tex
index 09a5256eac..09a5256eac 100644
--- a/graphics/pmdraw/examples/example-3.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-3.tex
diff --git a/graphics/pmdraw/examples/example-4.tex b/graphics/pgf/contrib/pmdraw/examples/example-4.tex
index bbbf5bd819..bbbf5bd819 100644
--- a/graphics/pmdraw/examples/example-4.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-4.tex
diff --git a/graphics/pmdraw/examples/example-5.tex b/graphics/pgf/contrib/pmdraw/examples/example-5.tex
index e7a9c63e96..e7a9c63e96 100644
--- a/graphics/pmdraw/examples/example-5.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-5.tex
diff --git a/graphics/pmdraw/examples/example-6.tex b/graphics/pgf/contrib/pmdraw/examples/example-6.tex
index 18a47a794c..18a47a794c 100644
--- a/graphics/pmdraw/examples/example-6.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-6.tex
diff --git a/graphics/pmdraw/examples/example-7.tex b/graphics/pgf/contrib/pmdraw/examples/example-7.tex
index 171bf113a4..171bf113a4 100644
--- a/graphics/pmdraw/examples/example-7.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-7.tex
diff --git a/graphics/pmdraw/examples/example-8.tex b/graphics/pgf/contrib/pmdraw/examples/example-8.tex
index 6ed2f2cf5c..6ed2f2cf5c 100644
--- a/graphics/pmdraw/examples/example-8.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-8.tex
diff --git a/graphics/pmdraw/examples/example-9.tex b/graphics/pgf/contrib/pmdraw/examples/example-9.tex
index 8e7d87023f..8e7d87023f 100644
--- a/graphics/pmdraw/examples/example-9.tex
+++ b/graphics/pgf/contrib/pmdraw/examples/example-9.tex
diff --git a/graphics/pmdraw/pmdraw.pdf b/graphics/pgf/contrib/pmdraw/pmdraw.pdf
index 4809713987..1cc4de9135 100644
--- a/graphics/pmdraw/pmdraw.pdf
+++ b/graphics/pgf/contrib/pmdraw/pmdraw.pdf
Binary files differ
diff --git a/graphics/pmdraw/pmdraw.sty b/graphics/pgf/contrib/pmdraw/pmdraw.sty
index 0cfa1f2709..36f506b51f 100644
--- a/graphics/pmdraw/pmdraw.sty
+++ b/graphics/pgf/contrib/pmdraw/pmdraw.sty
@@ -1,8 +1,8 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{pmdraw}[2024-04-09 v1.3 pmdraw]
+\ProvidesPackage{pmdraw}[2024-06-02 v1.4 pmdraw]
% *------------------------------*
-% |2````````````````````````````3|
+% |7````````````````````````````4|
% |`````____````____`````````````|
% |````|MFMF\ /MFMF|````````````|
% |````|MF|MF\/MF|MF|````````````|
@@ -14,7 +14,7 @@
% |``````````````|MF|````````````|
% |``````````````|MF|````````````|
% |``````````````|MF|````````````|
-% |1````````````````````````````1|
+% |3````````````````````````````4|
% *------------------------------*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -42,8 +42,28 @@
\newcommand{\pmdraw@drawAedgesOptions}{}% Draw options for added edges in product diagram
\newcommand{\pmdraw@drawAedges}[2]{% Draws added edges in product diagram from #1 vertex to #2 vertex, assumes #1<#2
- \foreach \x in {#1,...,#2} {% For each vertex in range
- \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge
+ \@ifclassloaded{beamer}{% If in beamer
+ \uncover<\pmdraw@edgesAddedUncover>{% Uncovers added edges
+ \foreach \x in {#1,...,#2} {% For each vertex in range
+ \ifnum\value{pmdraw@ifEdgesAdded}=0% If drawing added edges
+ \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge
+ \else% If hiding top vertices
+ \phantom{%
+ \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge
+ }%
+ \fi%
+ }%
+ }%
+ }{% If not in beamer
+ \foreach \x in {#1,...,#2} {% For each vertex in range
+ \ifnum\value{pmdraw@ifEdgesAdded}=0% If drawing added edges
+ \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge
+ \else% If hiding top vertices
+ \phantom{%
+ \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge
+ }%
+ \fi%
+ }%
}%
\pmdraw@AedgesLoop% Restart for loop
}
@@ -111,6 +131,44 @@
}
\let\pmdraw@drawLedgesDraw\pmdraw@drawLedgesDrawDefault% Draws lower non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2
+\newcommand{\pmdraw@drawNoLabelBa}{-1}% 1st vertex to skip label in bottom row
+\newcommand{\pmdraw@drawNoLabelBb}{-1}% 2nd vertex to skip label in bottom row
+\newcommand{\pmdraw@drawNoLabelBc}{-1}% 3rd vertex to skip label in bottom row
+\newcommand{\pmdraw@drawNoLabelBd}{-1}% 4th vertex to skip label in bottom row
+\newcommand{\pmdraw@drawNoLabelBe}{-1}% 5th vertex to skip label in bottom row
+\newcommand{\pmdraw@drawNoLabelBf}{-1}% 6th vertex to skip label in bottom row
+\newcommand{\pmdraw@drawNoLabelBg}{-1}% 7th vertex to skip label in bottom row
+\newcommand{\pmdraw@drawNoLabelBh}{-1}% 8th vertex to skip label in bottom row
+\newcommand{\pmdraw@drawNoLabelBi}{-1}% 9th vertex to skip label in bottom row
+\newcommand{\pmdraw@drawNoLabelTa}{-1}% 1st vertex to skip label in top row
+\newcommand{\pmdraw@drawNoLabelTb}{-1}% 2nd vertex to skip label in top row
+\newcommand{\pmdraw@drawNoLabelTc}{-1}% 3rd vertex to skip label in top row
+\newcommand{\pmdraw@drawNoLabelTd}{-1}% 4th vertex to skip label in top row
+\newcommand{\pmdraw@drawNoLabelTe}{-1}% 5th vertex to skip label in top row
+\newcommand{\pmdraw@drawNoLabelTf}{-1}% 6th vertex to skip label in top row
+\newcommand{\pmdraw@drawNoLabelTg}{-1}% 7th vertex to skip label in top row
+\newcommand{\pmdraw@drawNoLabelTh}{-1}% 8th vertex to skip label in top row
+\newcommand{\pmdraw@drawNoLabelTi}{-1}% 9th vertex to skip label in top row
+
+\newcommand{\pmdraw@drawNoVertexBa}{-1}% 1st vertex to skip in bottom row
+\newcommand{\pmdraw@drawNoVertexBb}{-1}% 2nd vertex to skip in bottom row
+\newcommand{\pmdraw@drawNoVertexBc}{-1}% 3rd vertex to skip in bottom row
+\newcommand{\pmdraw@drawNoVertexBd}{-1}% 4th vertex to skip in bottom row
+\newcommand{\pmdraw@drawNoVertexBe}{-1}% 5th vertex to skip in bottom row
+\newcommand{\pmdraw@drawNoVertexBf}{-1}% 6th vertex to skip in bottom row
+\newcommand{\pmdraw@drawNoVertexBg}{-1}% 7th vertex to skip in bottom row
+\newcommand{\pmdraw@drawNoVertexBh}{-1}% 8th vertex to skip in bottom row
+\newcommand{\pmdraw@drawNoVertexBi}{-1}% 9th vertex to skip in bottom row
+\newcommand{\pmdraw@drawNoVertexTa}{-1}% 1st vertex to skip in top row
+\newcommand{\pmdraw@drawNoVertexTb}{-1}% 2nd vertex to skip in top row
+\newcommand{\pmdraw@drawNoVertexTc}{-1}% 3rd vertex to skip in top row
+\newcommand{\pmdraw@drawNoVertexTd}{-1}% 4th vertex to skip in top row
+\newcommand{\pmdraw@drawNoVertexTe}{-1}% 5th vertex to skip in top row
+\newcommand{\pmdraw@drawNoVertexTf}{-1}% 6th vertex to skip in top row
+\newcommand{\pmdraw@drawNoVertexTg}{-1}% 7th vertex to skip in top row
+\newcommand{\pmdraw@drawNoVertexTh}{-1}% 8th vertex to skip in top row
+\newcommand{\pmdraw@drawNoVertexTi}{-1}% 9th vertex to skip in top row
+
\newcommand{\pmdraw@drawTedgesDrawOptions}{}% Draw options for transversal edges
\newcommand{\pmdraw@drawTedgesDrawDefault}[2]{% Draws transversal edge from #1 vertex in top row to #2 vertex in bottom row - DEFAULT
\ifnum\pmdraw@ifTedgeHorizontal=0% If drawing a straight line edge
@@ -145,6 +203,10 @@
\fill[apply style/.expand once=\pmdraw@drawVertexOptions] (#1,#2) circle (.17);%
}
+\newcommand{\pmdraw@edgeUncover}{1-}% Sets the uncover options of edge
+\newcommand{\pmdraw@edgesAddedUncover}{1-}% Sets the uncover options of added edges
+\newcommand{\pmdraw@edgesUncover}{1-}% Sets the uncover options of edges
+
\newcommand{\pmdraw@hookAfterBrick}{}% Hook after drawing a brick
\newcommand{\pmdraw@hookAfterDiagram}{}% Hook after drawing a diagram
\newcommand{\pmdraw@hookBeforeBrick}{}% Hook before drawing a brick
@@ -165,6 +227,7 @@
\renewcommand{\pmdraw@diagSep}{1}% Resets vertical space between product diagrams
\renewcommand{\pmdraw@drawAedgesOptions}{}% Resets draw options for added edges in product diagram
\let\pmdraw@drawDots\pmdraw@drawDotsDefault% Resets drawing of dots between bricks
+ \renewcommand{\pmdraw@edgesAddedUncover}{1-}% Resets the uncover options of added edges
\renewcommand{\pmdraw@hookAfterDiagram}{}% Clears hook after drawing a diagram
\renewcommand{\pmdraw@hookBeforeDiagram}{}% Clears hook before drawing a diagram
\renewcommand{\pmdraw@ifGrid}{0}% Hides grid
@@ -177,12 +240,16 @@
\setcounter{pmdraw@bottomShift}{0}% Resets shift on right end of bottom row of brick
\setcounter{pmdraw@topShift}{0}% Resets shift on right end of top row of brick
\setcounter{pmdraw@ifDiagWDotsFirst}{1}% Reset if drawing first brick of diagram
+ \setcounter{pmdraw@ifEdgesAdded}{0}% Resets boolean if hiding added edges
}
\newcommand{\pmdraw@rowSep}{2}% Vertical separation between rows of vertices in brick
\newcommand{\pmdraw@tikz}{}% Tikz options
+\newcommand{\pmdraw@verticesBottomUncover}{1-}% Sets the uncover options of bottom vertices
+\newcommand{\pmdraw@verticesTopUncover}{1-}% Sets the uncover options of top vertices
+
\newcommand{\pmdraw@vertexSep}{0}% Vertical separation between bottom row of top diagram and top row of bottom diagram in product diagram not for added edges
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -210,6 +277,18 @@
\newcounter{pmdraw@ifDiagWDotsFirst}% In drawing with dots, boolean if drawing first brick of diagram
\setcounter{pmdraw@ifDiagWDotsFirst}{1}
+\newcounter{pmdraw@ifEdge}% Boolean if hiding edge
+\setcounter{pmdraw@ifEdge}{0}
+\newcounter{pmdraw@ifEdgesAdded}% Boolean if hiding added edges
+\setcounter{pmdraw@ifEdgesAdded}{0}
+\newcounter{pmdraw@ifEdges}% Boolean if hiding edges
+\setcounter{pmdraw@ifEdges}{0}
+
+\newcounter{pmdraw@ifVerticesBottom}% Boolean if hiding bottom row of vertices
+\setcounter{pmdraw@ifVerticesBottom}{0}
+\newcounter{pmdraw@ifVerticesTop}% Boolean if hiding top row of vertices
+\setcounter{pmdraw@ifVerticesTop}{0}
+
\newcounter{pmdraw@labelStartB}% Starting value of labels of vertices in bottom row
\setcounter{pmdraw@labelStartB}{1}
\newcounter{pmdraw@labelStartT}% Starting value of labels of vertices in top row
@@ -257,6 +336,61 @@
\define@key{pmdraw@brick}{vertices}{% Sets the draw options of vertices
\renewcommand{\pmdraw@drawVertexOptions}{#1}%
}
+\define@key{pmdraw@brick}{no vertex bottom 1}{% Sets 1st vertex to skip in bottom row
+ \renewcommand{\pmdraw@drawNoVertexBa}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex bottom 2}{% Sets 2nd vertex to skip in bottom row
+ \renewcommand{\pmdraw@drawNoVertexBb}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex bottom 3}{% Sets 3rd vertex to skip in bottom row
+ \renewcommand{\pmdraw@drawNoVertexBc}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex bottom 4}{% Sets 4th vertex to skip in bottom row
+ \renewcommand{\pmdraw@drawNoVertexBd}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex bottom 5}{% Sets 5th vertex to skip in bottom row
+ \renewcommand{\pmdraw@drawNoVertexBe}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex bottom 6}{% Sets 6th vertex to skip in bottom row
+ \renewcommand{\pmdraw@drawNoVertexBf}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex bottom 7}{% Sets 7th vertex to skip in bottom row
+ \renewcommand{\pmdraw@drawNoVertexBg}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex bottom 8}{% Sets 8th vertex to skip in bottom row
+ \renewcommand{\pmdraw@drawNoVertexBh}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex bottom 9}{% Sets 9th vertex to skip in bottom row
+ \renewcommand{\pmdraw@drawNoVertexBi}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex top 1}{% Sets 1st vertex to skip in top row
+ \renewcommand{\pmdraw@drawNoVertexTa}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex top 2}{% Sets 2nd vertex to skip in top row
+ \renewcommand{\pmdraw@drawNoVertexTb}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex top 3}{% Sets 3rd vertex to skip in top row
+ \renewcommand{\pmdraw@drawNoVertexTc}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex top 4}{% Sets 4th vertex to skip in top row
+ \renewcommand{\pmdraw@drawNoVertexTd}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex top 5}{% Sets 5th vertex to skip in top row
+ \renewcommand{\pmdraw@drawNoVertexTe}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex top 6}{% Sets 6th vertex to skip in top row
+ \renewcommand{\pmdraw@drawNoVertexTf}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex top 7}{% Sets 7th vertex to skip in top row
+ \renewcommand{\pmdraw@drawNoVertexTg}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex top 8}{% Sets 8th vertex to skip in top row
+ \renewcommand{\pmdraw@drawNoVertexTh}{#1}%
+}
+\define@key{pmdraw@brick}{no vertex top 9}{% Sets 9th vertex to skip in top row
+ \renewcommand{\pmdraw@drawNoVertexTi}{#1}%
+}
+
\define@key{pmdraw@brick}{vertices options}{% Sets the draw command of vertices
\renewcommand{\pmdraw@drawVertex}[2]{#1}%
}
@@ -283,6 +417,61 @@
\setcounter{pmdraw@labelStartT}{#1}%
}
+\define@key{pmdraw@brick}{no label bottom 1}{% Sets 1st label to skip in bottom row
+ \renewcommand{\pmdraw@drawNoLabelBa}{#1}%
+}
+\define@key{pmdraw@brick}{no label bottom 2}{% Sets 2nd label to skip in bottom row
+ \renewcommand{\pmdraw@drawNoLabelBb}{#1}%
+}
+\define@key{pmdraw@brick}{no label bottom 3}{% Sets 3rd label to skip in bottom row
+ \renewcommand{\pmdraw@drawNoLabelBc}{#1}%
+}
+\define@key{pmdraw@brick}{no label bottom 4}{% Sets 4th label to skip in bottom row
+ \renewcommand{\pmdraw@drawNoLabelBd}{#1}%
+}
+\define@key{pmdraw@brick}{no label bottom 5}{% Sets 5th label to skip in bottom row
+ \renewcommand{\pmdraw@drawNoLabelBe}{#1}%
+}
+\define@key{pmdraw@brick}{no label bottom 6}{% Sets 6th label to skip in bottom row
+ \renewcommand{\pmdraw@drawNoLabelBf}{#1}%
+}
+\define@key{pmdraw@brick}{no label bottom 7}{% Sets 7th label to skip in bottom row
+ \renewcommand{\pmdraw@drawNoLabelBg}{#1}%
+}
+\define@key{pmdraw@brick}{no label bottom 8}{% Sets 8th label to skip in bottom row
+ \renewcommand{\pmdraw@drawNoLabelBh}{#1}%
+}
+\define@key{pmdraw@brick}{no label bottom 9}{% Sets 9th label to skip in bottom row
+ \renewcommand{\pmdraw@drawNoLabelBi}{#1}%
+}
+\define@key{pmdraw@brick}{no label top 1}{% Sets 1st label to skip in top row
+ \renewcommand{\pmdraw@drawNoLabelTa}{#1}%
+}
+\define@key{pmdraw@brick}{no label top 2}{% Sets 2nd label to skip in top row
+ \renewcommand{\pmdraw@drawNoLabelTb}{#1}%
+}
+\define@key{pmdraw@brick}{no label top 3}{% Sets 3rd label to skip in top row
+ \renewcommand{\pmdraw@drawNoLabelTc}{#1}%
+}
+\define@key{pmdraw@brick}{no label top 4}{% Sets 4th label to skip in top row
+ \renewcommand{\pmdraw@drawNoLabelTd}{#1}%
+}
+\define@key{pmdraw@brick}{no label top 5}{% Sets 5th label to skip in top row
+ \renewcommand{\pmdraw@drawNoLabelTe}{#1}%
+}
+\define@key{pmdraw@brick}{no label top 6}{% Sets 6th label to skip in top row
+ \renewcommand{\pmdraw@drawNoLabelTf}{#1}%
+}
+\define@key{pmdraw@brick}{no label top 7}{% Sets 7th label to skip in top row
+ \renewcommand{\pmdraw@drawNoLabelTg}{#1}%
+}
+\define@key{pmdraw@brick}{no label top 8}{% Sets 8th label to skip in top row
+ \renewcommand{\pmdraw@drawNoLabelTh}{#1}%
+}
+\define@key{pmdraw@brick}{no label top 9}{% Sets 9th label to skip in top row
+ \renewcommand{\pmdraw@drawNoLabelTi}{#1}%
+}
+
\define@key{pmdraw@brick}{labels bottom draw}{% Sets the draw options for labels of bottom vertices
\renewcommand{\pmdraw@drawLabelBDrawOptions}{#1}%
}
@@ -299,7 +488,7 @@
\define@key{pmdraw@brick}{labels bottom options}{% Sets the draw command of labels of bottom vertices
\renewcommand{\pmdraw@drawLabelBottom}[3]{#1}%
}
-\define@key{pmdraw@brick}{labels top options}{% Sets the draw command of labels of bottom vertices
+\define@key{pmdraw@brick}{labels top options}{% Sets the draw command of labels of top vertices
\renewcommand{\pmdraw@drawLabelTop}[3]{#1}%
}
@@ -314,6 +503,20 @@
\renewcommand{\pmdraw@drawDotsNodeOptions}{#1}%
}
+\define@key{pmdraw@brick}{vertices bottom phantom}[]{% Does not draw bottom vertices
+ \setcounter{pmdraw@ifVerticesBottom}{1}%
+}
+\define@key{pmdraw@brick}{vertices top phantom}[]{% Does not draw top vertices
+ \setcounter{pmdraw@ifVerticesTop}{1}%
+}
+
+\define@key{pmdraw@brick}{vertices bottom uncover}{% Sets the uncover options of bottom vertices
+ \renewcommand{\pmdraw@verticesBottomUncover}{#1}%
+}
+\define@key{pmdraw@brick}{vertices top uncover}{% Sets the uncover options of top vertices
+ \renewcommand{\pmdraw@verticesTopUncover}{#1}%
+}
+
\define@key{pmdraw@brick}{levels}[1]{% Sets number of horizontal levels for non-transversal edges and evenly spaces them
\tikzmath{%
\pmdraw{edgeSepU} = (0.5*\pmdraw@rowSep)/(#1 + 1);% Calculates vertical separation between each edge
@@ -374,6 +577,14 @@
\renewcommand{\pmdraw@ifTedgesFirst}{1}%
}
+\define@key{pmdraw@brick}{edges phantom}[]{% Does not draw edges
+ \setcounter{pmdraw@ifEdges}{1}%
+}
+
+\define@key{pmdraw@brick}{edges uncover}{% Sets the uncover options of edges
+ \renewcommand{\pmdraw@edgesUncover}{#1}%
+}
+
\define@key{pmdraw@brick}{brace}{% Draws a brace
\setkeys{pmdraw@brace}{#1}% Processes details of brace
\pmdraw@drawBrace{\value{pmdraw@braceL}}{\value{pmdraw@braceR}}{\pmdraw@braceLabel}% Draws brace
@@ -414,6 +625,12 @@
\renewcommand{\pmdraw@drawUedgesDraw}[2]{#1}%
\renewcommand{\pmdraw@drawLedgesDraw}[2]{#1}%
}
+\define@key{pmdraw@NTedges}{phantom}[]{% Does not draw edge
+ \setcounter{pmdraw@ifEdge}{1}%
+}
+\define@key{pmdraw@NTedges}{uncover}{% Sets the uncover options of edge
+ \renewcommand{\pmdraw@edgeUncover}{#1}%
+}
\define@key{pmdraw@Tedges}{height}{% Sets manual height of transversal edge
\tikzmath{%
\pmdraw{Tlevel} = #1;%
@@ -426,6 +643,12 @@
\define@key{pmdraw@Tedges}{options}{% Sets the draw command of transversal edge
\renewcommand{\pmdraw@drawTedgesDraw}[2]{#1}%
}
+\define@key{pmdraw@Tedges}{phantom}[]{% Does not draw edge
+ \setcounter{pmdraw@ifEdge}{1}%
+}
+\define@key{pmdraw@Tedges}{uncover}{% Sets the uncover options of edge
+ \renewcommand{\pmdraw@edgeUncover}{#1}%
+}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -485,6 +708,12 @@
\define@key{pmdraw@diagram}{edges added}{% Sets the draw options for drawing of added edges in product diagram
\renewcommand{\pmdraw@drawAedgesOptions}{#1}%
}
+\define@key{pmdraw@diagram}{edges added phantom}[]{% Does not draw added edges
+ \setcounter{pmdraw@ifEdgesAdded}{1}%
+}
+\define@key{pmdraw@diagram}{edges added uncover}{% Sets the uncover options of added edges
+ \renewcommand{\pmdraw@edgesAddedUncover}{#1}%
+}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -684,11 +913,47 @@
\fi%
\fi%
\foreach \x in {1,...,\value{pmdraw@degreeB}} {% For each vertex in row
- \pmdraw@drawVertex{\x + \value{pmdraw@blankB}}{0}% Draw lower vertex
- \ifnum\pmdraw@ifLabelsB=1% If drawing labels
- \pmdraw@drawLabelBottom{\x + \value{pmdraw@blankT}}{0}{\thepmdraw@labelStartB}% Draw label
- \stepcounter{pmdraw@labelStartB}% Update label counter
+ \ifnum\pmdraw@drawNoVertexBa=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexBb=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexBc=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexBd=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexBe=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexBf=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexBg=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexBh=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexBi=\x\else% If not skipping vertex
+ \pmdraw@drawVertex{\x + \value{pmdraw@blankB}}{0}% Draw lower vertex
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
\fi%
+ \ifnum\pmdraw@drawNoLabelBa=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelBb=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelBc=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelBd=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelBe=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelBf=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelBg=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelBh=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelBi=\x\else% If not skipping label
+ \ifnum\pmdraw@ifLabelsB=1% If drawing labels
+ \pmdraw@drawLabelBottom{\x + \value{pmdraw@blankT}}{0}{\thepmdraw@labelStartB}% Draw label
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \stepcounter{pmdraw@labelStartB}% Update label counter
}%
}
\newcommand{\pmdraw@drawBrickInit}[1]{% Initialises the drawing of a brick
@@ -708,53 +973,269 @@
\setkeys{pmdraw@brick}{levels,#1}% Processes options and set default levels
\pmdraw@hookBeforeBrick% Hook before drawing brick
\ifnum\pmdraw@ifEdgesFirst=0% If drawing vertices first
- \pmdraw@drawTopVertices% Draw base diagram
- \pmdraw@drawBottomVertices% Draw base diagram
- \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first
- \pmdraw@UedgesLoop% Draws upper edges
- #2%
- \pmdEmpty%
- \pmdraw@LedgesLoop% Draws lower edges
- #3%
- \pmdEmpty%
- \pmdraw@TedgesLoop% Draws transversals
- #4%
- \pmdEmpty%
- \else% If drawing transversal first
- \pmdraw@TedgesLoop% Draws transversals
- #4%
- \pmdEmpty%
- \pmdraw@UedgesLoop% Draws upper edges
- #2%
- \pmdEmpty%
- \pmdraw@LedgesLoop% Draws lower edges
- #3%
- \pmdEmpty%
- \fi%
+ \@ifclassloaded{beamer}{% If in beamer
+ \uncover<\pmdraw@verticesTopUncover>{% Uncovers top vertices
+ \ifnum\value{pmdraw@ifVerticesTop}=0% If drawing top vertices
+ \pmdraw@drawTopVertices% Draw base diagram
+ \else% If hiding top vertices
+ \phantom{%
+ \pmdraw@drawTopVertices% Draw base diagram
+ }%
+ \fi%
+ }%
+ \uncover<\pmdraw@verticesBottomUncover>{% Uncovers bottom vertices
+ \ifnum\value{pmdraw@ifVerticesBottom}=0% If drawing bottom vertices
+ \pmdraw@drawBottomVertices% Draw base diagram
+ \else% If hiding top vertices
+ \phantom{%
+ \pmdraw@drawBottomVertices% Draw base diagram
+ }%
+ \fi%
+ }%
+ \uncover<\pmdraw@edgesUncover>{% Uncovers edges
+ \ifnum\value{pmdraw@ifEdges}=0% If drawing edges
+ \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \else% If drawing transversal first
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \fi%
+ \else% If hiding edges
+ \phantom{%
+ \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \else% If drawing transversal first
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \fi%
+ }%
+ \fi%
+ }%
+ }{% If not in beamer
+ \ifnum\value{pmdraw@ifVerticesTop}=0% If drawing top vertices
+ \pmdraw@drawTopVertices% Draw base diagram
+ \else% If hiding top vertices
+ \phantom{%
+ \pmdraw@drawTopVertices% Draw base diagram
+ }%
+ \fi%
+ \ifnum\value{pmdraw@ifVerticesBottom}=0% If drawing bottom vertices
+ \pmdraw@drawBottomVertices% Draw base diagram
+ \else% If hiding top vertices
+ \phantom{%
+ \pmdraw@drawBottomVertices% Draw base diagram
+ }%
+ \fi%
+ \ifnum\value{pmdraw@ifEdges}=0% If drawing edges
+ \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \else% If drawing transversal first
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \fi%
+ \else% If hiding edges
+ \phantom{%
+ \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \else% If drawing transversal first
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \fi%
+ }%
+ \fi%
+ }%
\else% If drawing edges first
- \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first
- \pmdraw@UedgesLoop% Draws upper edges
- #2%
- \pmdEmpty%
- \pmdraw@LedgesLoop% Draws lower edges
- #3%
- \pmdEmpty%
- \pmdraw@TedgesLoop% Draws transversals
- #4%
- \pmdEmpty%
- \else% If drawing transversal first
- \pmdraw@TedgesLoop% Draws transversals
- #4%
- \pmdEmpty%
- \pmdraw@UedgesLoop% Draws upper edges
- #2%
- \pmdEmpty%
- \pmdraw@LedgesLoop% Draws lower edges
- #3%
- \pmdEmpty%
- \fi%
- \pmdraw@drawTopVertices% Draw base diagram
- \pmdraw@drawBottomVertices% Draw base diagram
+ \@ifclassloaded{beamer}{% If in beamer
+ \uncover<\pmdraw@edgesUncover>{% Uncovers edges
+ \ifnum\value{pmdraw@ifEdges}=0% If drawing edges
+ \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \else% If drawing transversal first
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \fi%
+ \else% If hiding edges
+ \phantom{%
+ \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \else% If drawing transversal first
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \fi%
+ }%
+ \fi%
+ }%
+ \uncover<\pmdraw@verticesTopUncover>{% Uncovers top vertices
+ \ifnum\value{pmdraw@ifVerticesTop}=0% If drawing top vertices
+ \pmdraw@drawTopVertices% Draw base diagram
+ \else% If hiding top vertices
+ \phantom{%
+ \pmdraw@drawTopVertices% Draw base diagram
+ }%
+ \fi%
+ }%
+ \uncover<\pmdraw@verticesBottomUncover>{% Uncovers bottm vertices
+ \ifnum\value{pmdraw@ifVerticesBottom}=0% If drawing bottom vertices
+ \pmdraw@drawBottomVertices% Draw base diagram
+ \else% If hiding top vertices
+ \phantom{%
+ \pmdraw@drawBottomVertices% Draw base diagram
+ }%
+ \fi%
+ }%
+ }{% If not in beamer
+ \ifnum\value{pmdraw@ifEdges}=0% If drawing edges
+ \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \else% If drawing transversal first
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \fi%
+ \else% If hiding edges
+ \phantom{%
+ \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \else% If drawing transversal first
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \fi%
+ }%
+ \fi%
+ \ifnum\value{pmdraw@ifVerticesTop}=0% If drawing top vertices
+ \pmdraw@drawTopVertices% Draw base diagram
+ \else% If hiding top vertices
+ \phantom{%
+ \pmdraw@drawTopVertices% Draw base diagram
+ }%
+ \fi%
+ \ifnum\value{pmdraw@ifVerticesBottom}=0% If drawing bottom vertices
+ \pmdraw@drawBottomVertices% Draw base diagram
+ \else% If hiding top vertices
+ \phantom{%
+ \pmdraw@drawBottomVertices% Draw base diagram
+ }%
+ \fi%
+ }%
\fi%
\pmdraw@hookAfterBrick% Hook after drawing brick
% Resets user keys and other flags to default values
@@ -767,6 +1248,42 @@
\renewcommand{\pmdraw@drawLabelTDrawOptions}{}%
\renewcommand{\pmdraw@drawLabelTNodeOptions}{}%
\renewcommand{\pmdraw@drawLedgesDrawOptions}{}%
+ \renewcommand{\pmdraw@drawNoLabelBa}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelBb}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelBc}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelBd}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelBe}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelBf}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelBg}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelBh}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelBi}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelTa}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelTb}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelTc}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelTd}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelTe}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelTf}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelTg}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelTh}{-1}%
+ \renewcommand{\pmdraw@drawNoLabelTi}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexBa}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexBb}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexBc}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexBd}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexBe}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexBf}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexBg}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexBh}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexBi}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexTa}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexTb}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexTc}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexTd}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexTe}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexTf}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexTg}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexTh}{-1}%
+ \renewcommand{\pmdraw@drawNoVertexTi}{-1}%
\renewcommand{\pmdraw@drawTedgesDrawOptions}{}%
\renewcommand{\pmdraw@drawUedgesDrawOptions}{}%
\renewcommand{\pmdraw@drawVertexOptions}{}%
@@ -776,6 +1293,9 @@
\renewcommand{\pmdraw@ifLabelsB}{0}%
\renewcommand{\pmdraw@ifLabelsT}{0}%
\renewcommand{\pmdraw@ifTedgesFirst}{0}%
+ \renewcommand{\pmdraw@edgesUncover}{1-}%
+ \renewcommand{\pmdraw@verticesBottomUncover}{1-}%
+ \renewcommand{\pmdraw@verticesTopUncover}{1-}%
\let\pmdraw@drawLabelBottom\pmdraw@drawLabelBottomDefault%
\let\pmdraw@drawLabelTop\pmdraw@drawLabelTopDefault%
\let\pmdraw@drawLabelBottom\pmdraw@drawLabelBottomDefault%
@@ -783,6 +1303,9 @@
\setcounter{pmdraw@blankT}{0}%
\setcounter{pmdraw@labelStartB}{1}%
\setcounter{pmdraw@labelStartT}{1}%
+ \setcounter{pmdraw@ifEdges}{0}%
+ \setcounter{pmdraw@ifVerticesBottom}{0}%
+ \setcounter{pmdraw@ifVerticesTop}{0}%
}
\newcommand{\pmdraw@drawLedges}[3][]{% Draws lower non-transversal edge, #1 options, #2 L vertex, #3 R vertex
\setcounter{pmdraw@NTlevel}{1}% Store default level of edge
@@ -796,28 +1319,105 @@
\pmdraw{edgeHeight}=\pmdraw@NTedgesHeight;% Set manual height
}%
\fi%
- \pmdraw@drawLedgesDraw{#2}{#3}% Draw edge
+ \@ifclassloaded{beamer}{% If in beamer
+ \uncover<\pmdraw@edgeUncover>{% Uncovers edge
+ \ifnum\value{pmdraw@ifEdge}=0% If drawing edge
+ \pmdraw@drawLedgesDraw{#2}{#3}% Draw edge
+ \else% If hiding edge
+ \phantom{%
+ \pmdraw@drawLedgesDraw{#2}{#3}% Draw edge
+ }%
+ \fi%
+ }%
+ }{% If not in beamer
+ \ifnum\value{pmdraw@ifEdge}=0% If drawing edge
+ \pmdraw@drawLedgesDraw{#2}{#3}% Draw edge
+ \else% If hiding edge
+ \phantom{%
+ \pmdraw@drawLedgesDraw{#2}{#3}% Draw edge
+ }%
+ \fi%
+ }%
% Resets user keys and other flags to default values
\renewcommand{\pmdraw@NTedgesHeight}{-1000}%
+ \renewcommand{\pmdraw@edgeUncover}{1-}%
+ \setcounter{pmdraw@ifEdge}{0}%
\let\pmdraw@drawLedgesDraw\pmdraw@drawLedgesDrawDefault%
\pmdraw@LedgesLoop% Restart for loop
}
\newcommand{\pmdraw@drawTedges}[3][]{% Draws transversal edge, #1 options, #2 upper vertex, #3 lower vertex
\setkeys{pmdraw@Tedges}{#1}% Processes options
- \pmdraw@drawTedgesDraw{#2}{#3}% Draw edge
- \let\pmdraw@drawTedgesDraw\pmdraw@drawTedgesDrawDefault% Resets user keys and other flags to default values
+ \@ifclassloaded{beamer}{% If in beamer
+ \uncover<\pmdraw@edgeUncover>{% Uncovers edge
+ \ifnum\value{pmdraw@ifEdge}=0% If drawing edge
+ \pmdraw@drawTedgesDraw{#2}{#3}% Draw edge
+ \else% If hiding edge
+ \phantom{%
+ \pmdraw@drawTedgesDraw{#2}{#3}% Draw edge
+ }%
+ \fi%
+ }%
+ }{% If not in beamer
+ \ifnum\value{pmdraw@ifEdge}=0% If drawing edge
+ \pmdraw@drawTedgesDraw{#2}{#3}% Draw edge
+ \else% If hiding edge
+ \phantom{%
+ \pmdraw@drawTedgesDraw{#2}{#3}% Draw edge
+ }%
+ \fi%
+ }%
+ % Resets user keys and other flags to default values
+ \renewcommand{\pmdraw@edgeUncover}{1-}%
+ \setcounter{pmdraw@ifEdge}{0}%
+ \let\pmdraw@drawTedgesDraw\pmdraw@drawTedgesDrawDefault%
\pmdraw@TedgesLoop% Restart for loop
}
\newcommand{\pmdraw@drawTopVertices}{% Draws top row of vertices
- \setcounter{pmdraw@topTotal}{\value{pmdraw@blankT}}% Store size of top row of vertices
- \addtocounter{pmdraw@topTotal}{\value{pmdraw@degreeT}}% Store size of top row of vertices
- \foreach \x in {1,...,\value{pmdraw@degreeT}} {% For each vertex in row
- \pmdraw@drawVertex{\x + \value{pmdraw@blankT}}{\pmdraw@rowSep}% Draw upper vertex
- \ifnum\pmdraw@ifLabelsT=1% If drawing labels
- \pmdraw@drawLabelTop{\x + \value{pmdraw@blankT}}{\pmdraw@rowSep}{\thepmdraw@labelStartT}% Draw label
- \stepcounter{pmdraw@labelStartT}% Update label counter
- \fi%
- }%
+ \setcounter{pmdraw@topTotal}{\value{pmdraw@blankT}}% Store size of top row of vertices
+ \addtocounter{pmdraw@topTotal}{\value{pmdraw@degreeT}}% Store size of top row of vertices
+ \foreach \x in {1,...,\value{pmdraw@degreeT}} {% For each vertex in row
+ \ifnum\pmdraw@drawNoVertexTa=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexTb=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexTc=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexTd=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexTe=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexTf=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexTg=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexTh=\x\else% If not skipping vertex
+ \ifnum\pmdraw@drawNoVertexTi=\x\else% If not skipping vertex
+ \pmdraw@drawVertex{\x + \value{pmdraw@blankT}}{\pmdraw@rowSep}% Draw upper vertex
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \ifnum\pmdraw@drawNoLabelTa=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelTb=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelTc=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelTd=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelTe=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelTf=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelTg=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelTh=\x\else% If not skipping label
+ \ifnum\pmdraw@drawNoLabelTi=\x\else% If not skipping label
+ \ifnum\pmdraw@ifLabelsT=1% If drawing labels
+ \pmdraw@drawLabelTop{\x + \value{pmdraw@blankT}}{\pmdraw@rowSep}{\thepmdraw@labelStartT}% Draw label
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \stepcounter{pmdraw@labelStartT}% Update label counter
+ }%
}
\newcommand{\pmdraw@drawUedges}[3][]{% Draws upper non-transversal edge, #1 options, #2 L vertex, #3 R vertex
\setcounter{pmdraw@NTlevel}{1}% Store default level of edge
@@ -831,9 +1431,29 @@
\pmdraw{edgeHeight}=\pmdraw@rowSep-\pmdraw@NTedgesHeight;% Set manual height
}%
\fi%
- \pmdraw@drawUedgesDraw{#2}{#3}% Draw edge
+ \@ifclassloaded{beamer}{% If in beamer
+ \uncover<\pmdraw@edgeUncover>{% Uncovers edge
+ \ifnum\value{pmdraw@ifEdge}=0% If drawing edge
+ \pmdraw@drawUedgesDraw{#2}{#3}% Draw edge
+ \else% If hiding edge
+ \phantom{%
+ \pmdraw@drawUedgesDraw{#2}{#3}% Draw edge
+ }%
+ \fi%
+ }%
+ }{% If not in beamer
+ \ifnum\value{pmdraw@ifEdge}=0% If drawing edge
+ \pmdraw@drawUedgesDraw{#2}{#3}% Draw edge
+ \else% If hiding edge
+ \phantom{%
+ \pmdraw@drawUedgesDraw{#2}{#3}% Draw edge
+ }%
+ \fi%
+ }%
% Resets user keys and other flags to default values
\renewcommand{\pmdraw@NTedgesHeight}{-1000}%
+ \renewcommand{\pmdraw@edgeUncover}{1-}%
+ \setcounter{pmdraw@ifEdge}{0}%
\let\pmdraw@drawLedgesDraw\pmdraw@drawLedgesDrawDefault%
\let\pmdraw@drawUedgesDraw\pmdraw@drawUedgesDrawDefault%
\pmdraw@UedgesLoop% Restart for loop
diff --git a/graphics/pmdraw/pmdraw.tex b/graphics/pgf/contrib/pmdraw/pmdraw.tex
index bba50fdd59..b4111bcff2 100644
--- a/graphics/pmdraw/pmdraw.tex
+++ b/graphics/pgf/contrib/pmdraw/pmdraw.tex
@@ -1,7 +1,7 @@
\documentclass{ltxdoc}
% *------------------------------*
-% |7````````````````````````````6|
+% |6````````````````````````````2|
% |`````____````____`````````````|
% |````|MFMF\ /MFMF|````````````|
% |````|MF|MF\/MF|MF|````````````|
@@ -13,7 +13,7 @@
% |``````````````|MF|````````````|
% |``````````````|MF|````````````|
% |``````````````|MF|````````````|
-% |8````````````````````````````4|
+% |3````````````````````````````0|
% *------------------------------*
\usepackage{pmdraw}
@@ -26,7 +26,7 @@
\hypersetup{colorlinks, linkcolor=blue, urlcolor=blue}
\title{The \textsf{pmdraw} package\thanks{This document
- corresponds to \textsf{pmdraw}~v1.3, 2024-04-09.}}
+ corresponds to \textsf{pmdraw}~v1.4, 2024-06-02.}}
\author{Matthias Fresacher \\ \texttt{matthias.ypg37@slmail.me}}
\maketitle
@@ -773,6 +773,63 @@ passes through options to the \verb`\draw` command of vertices. The default is n
\end{minipage}%
\end{center}
+\DescribeMacro{no vertex bottom 1}
+\DescribeMacro{ \vdots}
+\DescribeMacro{no vertex bottom 9}
+\DescribeMacro{no vertex top 1}
+\DescribeMacro{ \vdots}
+\DescribeMacro{no vertex top 9}
+specifies a vertex that is not drawn. Any of the nine available keys can be used in any order. It can be used to draw single vertices that are different to the others. If more than nine vertices need to be excluded, simply draw multiple bricks next to each other. The default is no argument.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ no vertex top 1=2,
+ no vertex top 2=3,
+ no vertex bottom 1=4,
+ decorate after={
+ \fill[red] (4,0) circle (.1);
+ }
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdBrick[ % Options
+ degree=5,
+ no vertex top 1=2,
+ no vertex top 2=3,
+ no vertex bottom 1=4,
+ decorate after={
+ \fill[red] (4,0) circle (.1);
+ }
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{center}
+
\DescribeMacro{vertices options}
allows for the redefinition of the command that draws the vertices. It has two arguments, the \( x \) and \( y \)-position of the vertex. The default is
\begin{verbatim}
@@ -907,6 +964,65 @@ sets the starting value of the labels for the vertices. The default is one.
\end{minipage}%
\end{center}
+\DescribeMacro{no labels bottom 1}
+\DescribeMacro{ \vdots}
+\DescribeMacro{no labels bottom 9}
+\DescribeMacro{no labels top 1}
+\DescribeMacro{ \vdots}
+\DescribeMacro{no labels top 9}
+specifies a vertex for which no label is drawn. Any of the nine available keys can be used in any order. It can be used to insert single unique labels that are different to the others. If more than nine labels need to be excluded, simply draw multiple bricks next to each other. The default is no argument.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ labels,
+ no label top 1=2,
+ no label top 2=3,
+ no label bottom 1=4,
+ decorate after={
+ \draw (3,2) node[above=6pt,red] {\(x\)};
+ }
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdBrick[ % Options
+ degree=5,
+ labels,
+ no label top 1=2,
+ no label top 2=3,
+ no label bottom 1=4,
+ decorate after={
+ \draw (3,2) node[above=6pt,red] {\(x\)};
+ }
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{center}
+
\DescribeMacro{labels top draw}\DescribeMacro{labels top node}\DescribeMacro{labels bottom draw}\DescribeMacro{labels bottom node}
passes through options to the \verb`\draw` and \verb`node` command of the labels of vertices. The default is no argument.
\begin{center}
@@ -1164,6 +1280,89 @@ passes through options to the \verb`\draw` and \verb`node` command of the dots.
}
\end{center}
+\DescribeMacro{vertices top phantom}\DescribeMacro{vertices bottom phantom}
+These flags allow for all of the top or bottom vertices to be hidden using the \texttt{phantom} command. Simply wraps the vertex drawing macros with a \texttt{phantom} command. This hiding will also apply to the labels of that row (top or bottom) of vertices. To only hide a selected number of vertices, use seperate bricks. The default is false.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ vertices top phantom,
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ vertices top phantom
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{vertices top uncover}\DescribeMacro{vertices bottom uncover}
+allows for all of the top or bottom vertices to be uncovered in a \texttt{beamer} presentation using the command \verb`\uncover<n->{text}`. Simply passes the slide uncover information \verb`<n->` to the embedded \texttt{uncover} command within the vertex drawing macros. This uncover will also apply to the labels of that row (top or bottom) of vertices. To only uncover a selected number of vertices, use seperate bricks. The default is~\texttt{1-}.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ vertices top uncover={2,4-7,9-},
+ vertices bottom uncover={3-}
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ vertices top uncover={2,4-7,9-},
+ vertices bottom uncover={3-}
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+
\subsubsection{Edge options}
These options should be read in conjunction with Section~\ref{sec: edge/options}.
@@ -1472,6 +1671,86 @@ flag ensures transversal edges are drawn before non-transversal edges. The defau
\end{minipage}%
\end{center}
+\DescribeMacro{edges phantom}
+This flag allows for all edges to be hidden using the \texttt{phantom} command. Simply wraps the edge drawing macros with a \texttt{phantom} command. The default is false.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ edges phantom
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ edges phantom
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{edges uncover}
+allows for all edges to be uncovered in a \texttt{beamer} presentation using the command \verb`\uncover<n->{text}`. Simply passes the slide uncover information \verb`<n->` to the embedded \texttt{uncover} command within the edge drawing macros. The default is~\texttt{1-}.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ edges uncover={2,4-7,9-}
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ edges uncover={2,4-7,9-}
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
\subsubsection{Brace}
\DescribeMacro{brace}
@@ -1893,16 +2172,33 @@ passes through options to the \verb`\draw` command of the edge. The default is n
\DescribeMacro{options}
allows for the redefinition of the command that draws the non-transversal edge. It has two arguments, the start and end \( x \)-position of the edge. The default for an upper non-transversal is
\begin{verbatim}
- \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1,\pmdraw@rowSep) arc (180:270:\pmdraw{edgeHeight});% Draw left arch
- \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1+\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}) -- (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight});% Draw straight line
- \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}) arc (270:360:\pmdraw{edgeHeight});% Draw right arc
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions,
+ apply style/.expand once=\pmdraw@drawEdgeDrawOptions]
+ (#1,\pmdraw@rowSep) arc (180:270:\pmdraw{edgeHeight});% Draw left arch
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions,
+ apply style/.expand once=\pmdraw@drawEdgeDrawOptions]
+ (#1+\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight})
+ -- (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight});
+ % Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions,
+ apply style/.expand once=\pmdraw@drawEdgeDrawOptions]
+ (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight})
+ arc (270:360:\pmdraw{edgeHeight});% Draw right arc
\renewcommand{\pmdraw@drawEdgeDrawOptions}{}% Reset draw options for edge
\end{verbatim}
and for a lower non-transversal
\begin{verbatim}
- \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1,0) arc (180:90:\pmdraw{edgeHeight});% Draw left arch
- \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1+\pmdraw{edgeHeight},\pmdraw{edgeHeight}) -- (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight});% Draw straight line
- \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight}) arc (90:0:\pmdraw{edgeHeight});% Draw right arc
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions,
+ apply style/.expand once=\pmdraw@drawEdgeDrawOptions]
+ (#1,0) arc (180:90:\pmdraw{edgeHeight});% Draw left arch
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions,
+ apply style/.expand once=\pmdraw@drawEdgeDrawOptions]
+ (#1+\pmdraw{edgeHeight},\pmdraw{edgeHeight})
+ -- (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight});% Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions,
+ apply style/.expand once=\pmdraw@drawEdgeDrawOptions]
+ (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight})
+ arc (90:0:\pmdraw{edgeHeight});% Draw right arc
\renewcommand{\pmdraw@drawEdgeDrawOptions}{}% Reset draw options for edge
\end{verbatim}
An example use is
@@ -1948,6 +2244,82 @@ An example use is
}
\end{center}
+\DescribeMacro{phantom}
+This flag allows for the edge to be hidden using the \texttt{phantom} command. Simply wraps the edge drawing macros with a \texttt{phantom} command. The default is false.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ [phantom]{1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ [phantom]{1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ [phantom]{1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ [phantom]{1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{uncover}
+allows for that edge to be uncovered in a \texttt{beamer} presentation using the command \verb`\uncover<n->{text}`. Simply passes the slide uncover information \verb`<n->` to the embedded \texttt{uncover} command within the edge drawing macros. This uncover is nested inside the \texttt{edges uncover} and hence the limitations of nested uncovers are present here. For example, an individual edge will not uncover until the \texttt{edges uncover} has been uncovered. In such instances only use individual uncovers for each edge. The default is~\texttt{1-}.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ [uncover={2,4-7,9-}]{1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ [uncover={3-}]{1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ [uncover={2,4-7,9-}]{1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ [uncover={3-}]{1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
\subsubsection{Transversal edge options} \label{sec: T edge/options}
\DescribeMacro{height}
@@ -2178,6 +2550,81 @@ An example use is
}
\end{center}
+\DescribeMacro{phantom}
+This flag allows for the edge to be hidden using the \texttt{phantom} command. Simply wraps the edge drawing macros with a \texttt{phantom} command. The default is false.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ [phantom]{1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ [phantom]{1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{uncover}
+allows for that edge to be uncovered in a \texttt{beamer} presentation using the command \verb`\uncover<n->{text}`. Simply passes the slide uncover information \verb`<n->` to the embedded \texttt{uncover} command within the edge drawing macros. This uncover is nested inside the \texttt{edges uncover} and hence the limitations of nested uncovers are present here. For example, an individual edge will not uncover until the \texttt{edges uncover} has been uncovered. In such instances only use individual uncovers for each edge. The default is~\texttt{1-}.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ [uncover={2,4-7,9-}]{1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ [uncover={2,4-7,9-}]{1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
\subsection{Brace} \label{sec: brace}
@@ -3020,6 +3467,178 @@ passes through options to the \verb`\draw` command of the added edges. The defau
}
\end{center}
+\DescribeMacro{edges added phantom}
+This flag allows for the added edges to be hidden using the \texttt{phantom} command. Simply wraps the edge drawing macros with a \texttt{phantom} command. The default is false.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdProduct[ % Options
+ edges added phantom
+]{ % Added edges
+ {1}{5}
+}{ % Top diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ {3}{3}
+ {4}{4}
+ {5}{5}
+ }
+ }
+}{ % Bottom diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdProduct[ % Options
+ edges added phantom
+]{ % Added edges
+ {1}{5}
+}{ % Top diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ {3}{3}
+ {4}{4}
+ {5}{5}
+ }
+ }
+}{ % Bottom diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{center}
+
+\DescribeMacro{edges added uncover}
+allows for the added edges to be uncovered in a \texttt{beamer} presentation using the command \verb`\uncover<n->{text}`. Simply passes the slide uncover information \verb`<n->` to the embedded \texttt{uncover} command within the added edge drawing macros. The default is~\texttt{1-}.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdProduct[ % Options
+ edges added uncover={2,4-7,9-}
+]{ % Added edges
+ {1}{5}
+}{ % Top diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ {3}{3}
+ {4}{4}
+ {5}{5}
+ }
+ }
+}{ % Bottom diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdProduct[ % Options
+ edges added uncover={2,4-7,9-}
+]{ % Added edges
+ {1}{5}
+}{ % Top diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ {3}{3}
+ {4}{4}
+ {5}{5}
+ }
+ }
+}{ % Bottom diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{center}
+
\section{Future features/work}
I have attempted to make most use cases easy to use with dedicated functionality that does not require significant \LaTeX\ knowledge whilst at the same time provide more advanced interfaces to allow for hopefully almost complete customisability for those who put in the effort.
@@ -3032,13 +3651,16 @@ The following are some of the aims for the future for this package:
\item Add warning and error messages to log.
\item Allow all brick keys to work as diagram keys that apply to all bricks in a diagram. This will require setting up a flag for each key so that the diagram key sets the brick key but the brick key is not reset after drawing the first brick. This process also will need to be able to handle when a single brick has a custom special different key value and that this is reset to the digram key value and not the global default key value.
\item Allow appropriate diagram keys to work as brick keys. Notably the \texttt{grid} key.
- \item The creation of user profiles that allows for fast and efficient setting of default key values that are different to the package defaults. Hence within a diagram, there can be a number of different diagram styles that can be accessed with one command.
+ \item The creation of user profiles that allows for fast and efficient setting of default key values that are different to the package defaults. Hence within a diagram, there can be a number of different diagram styles that can be accessed with one command. That is, in the options for a diagram, have this profile key.
+ \item Have global settings so that all diagrams in a document have the specified options.
\item Allow for adjusting the horizontal spacing of vertices. Need to think about making that a simple scale factor so that integer interface for edge positions is the same but then hooks will have very messy coordinates or keep it as absolute coordinates with messy edges. Alternatively, do both, allowing the user to choose which option to do and somehow distinguish between the two in the background.
\item Create \texttt{pmdMirror} command that mirrors all upper non-transversals into lower non-transversals.
\item Create \texttt{invert} key for bricks, diagrams and product diagrams that inverts everything. Probably easiest done with a \texttt{scope} environment around everything and \texttt{yscale=-1}.
\item For product diagram, have interface where you input diagram instead of bricks so that you have access to diagram options.
\item Create a transversal edge key \texttt{identity} so that all edges in between the two values are straight vertical edges. Thus eliminating the need to write out each edge manually.
\item Create \texttt{shift} key for edges that shifts horizontal position.
+ \item Decouple the uncover of labels from \texttt{vertices top uncover}/\texttt{vertices bottom uncover}.
+ \item Decouple the phantom of labels from \texttt{vertices top phantom}/\texttt{vertices bottom phantom}.
\end{enumerate}
\section{Examples}
diff --git a/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe71.pdf b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe71.pdf
new file mode 100644
index 0000000000..a95ad30ad7
--- /dev/null
+++ b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe71.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe71.tex b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe71.tex
new file mode 100644
index 0000000000..f29587bab9
--- /dev/null
+++ b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe71.tex
@@ -0,0 +1,18 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: lualatex: {shell: no, synctex: no, interaction: batchmode}
+
+\documentclass[a4paper,french,12pt]{article}
+\usepackage[margin=1.5cm]{geometry}
+\usepackage{fontspec}
+\usepackage{ProfSio}
+\setsansfont{Fira Sans}[Scale=MatchLowercase]
+\newfontfamily\poltuto{QTSanDiego}
+\usepackage{babel}
+
+\begin{document}
+
+\pagestyle{empty}
+
+\GrilleCCFSIO[Session=2025,Type={7-1},PoliceManuscrite={\poltuto}]{LOVELACE Ada}{21 mai 2024}{Quelques propriétés de la suite de Syracuse}
+
+\end{document}
diff --git a/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe72.pdf b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe72.pdf
new file mode 100644
index 0000000000..7e7ca969ea
--- /dev/null
+++ b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe72.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe72.tex b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe72.tex
new file mode 100644
index 0000000000..00af2e5e36
--- /dev/null
+++ b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe72.tex
@@ -0,0 +1,19 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: lualatex: {shell: no, synctex: no, interaction: batchmode}
+
+\documentclass[a4paper,french,12pt]{article}
+\usepackage[margin=1.5cm]{geometry}
+\usepackage{fontspec}
+\usepackage{ProfSio}
+\setsansfont{Fira Sans}[Scale=MatchLowercase]
+\newfontfamily\poltuto{QTSanDiego}
+\usepackage{babel}
+
+\begin{document}
+
+\pagestyle{empty}
+
+\def\grccfcompetsyr{variables et types/listes et tableaux/tests et boucles/fonctions}
+\GrilleCCFSIO[Session=2025,Type={7-2},PoliceManuscrite={\poltuto}]{LOVELACE Ada}{21 mai 2024}{Quelques propriétés de la suite de Syracuse}<\grccfcompetsyr>
+
+\end{document}
diff --git a/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe73.pdf b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe73.pdf
new file mode 100644
index 0000000000..b9c6d73803
--- /dev/null
+++ b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe73.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe73.tex b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe73.tex
new file mode 100644
index 0000000000..24747750c8
--- /dev/null
+++ b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-annexe73.tex
@@ -0,0 +1,19 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: lualatex: {shell: no, synctex: no, interaction: batchmode}
+
+\documentclass[a4paper,french,12pt]{article}
+\usepackage[margin=1.5cm]{geometry}
+\usepackage{fontspec}
+\usepackage{ProfSio}
+\setsansfont{Fira Sans}[Scale=MatchLowercase]
+\newfontfamily\poltuto{QTSanDiego}
+\usepackage{babel}
+
+\begin{document}
+
+\pagestyle{empty}
+
+\def\grccfcompetsyr{variables et types/listes et tableaux/tests et boucles/fonctions}
+\GrilleCCFSIO[Session=2024,Type={7-3},PoliceManuscrite={\poltuto}]{LOVELACE Ada}{14 mai 2024}{Calculs booléens + Graphes + Chiffrements}
+
+\end{document}
diff --git a/graphics/pgf/contrib/profsio/doc/ProfSio-doc-fr.pdf b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-fr.pdf
index 7481152d91..265dc41596 100644
--- a/graphics/pgf/contrib/profsio/doc/ProfSio-doc-fr.pdf
+++ b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-fr.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/profsio/doc/ProfSio-doc-fr.tex b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-fr.tex
index a8212b8c56..59ae3cd132 100644
--- a/graphics/pgf/contrib/profsio/doc/ProfSio-doc-fr.tex
+++ b/graphics/pgf/contrib/profsio/doc/ProfSio-doc-fr.tex
@@ -5,8 +5,8 @@
\documentclass[french,a4paper,11pt]{article}
\usepackage[margin=2cm,includefoot]{geometry}
-\def\TPversion{0.2.6}
-\def\TPdate{20 avril 2024}
+\def\TPversion{0.2.8}
+\def\TPdate{18 mai 2024}
%\usepackage[utf8]{inputenc}
%\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}
@@ -21,6 +21,7 @@
\UseTblrLibrary{booktabs}
\usepackage{fancyvrb}
\usepackage{fancyhdr}
+\usepackage{pdfpages}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\lfoot{\sffamily\small [ProfSio]}
@@ -81,10 +82,10 @@
keywordstyle={\color{violet}},%
classoffset=2,%
alsoletter={-},%
- morekeywords={\MPMPlaceTache,\MPMPlaceNotice,\MPMPlaceDuree,GrapheMPM,TableKarnaugh,\KarnaughCasesResult,\KarnaughBlocRegroup,\KarnaughBlocRegroupAuto,\MPMPlaceTaches,\MPMPlaceDurees,GrapheTikz,\GrphPlaceSommets,\GrphTraceAretes,\tikzset,\DiagrammeSagittal,\draw,\DiagrammeSagittalCompo,\TableVerite,\SimplificationKarnaugh,\SimplificationBooleenne,\KarnaughCasesAuto,\MatriceAdjacence,\PuissanceMatrice,\NbCheminsLongueur,\FermetureTransitive,\ResolSystemeMatrices,\PresentProdMat,\OpeBinDecHex,\ExprBool},%
+ morekeywords={\MPMPlaceTache,\MPMPlaceNotice,\MPMPlaceDuree,GrapheMPM,TableKarnaugh,\KarnaughCasesResult,\KarnaughBlocRegroup,\KarnaughBlocRegroupAuto,\MPMPlaceTaches,\MPMPlaceDurees,GrapheTikz,\GrphPlaceSommets,\GrphTraceAretes,\tikzset,\DiagrammeSagittal,\draw,\DiagrammeSagittalCompo,\TableVerite,\SimplificationKarnaugh,\SimplificationBooleenne,\KarnaughCasesAuto,\MatriceAdjacence,\PuissanceMatrice,\NbCheminsLongueur,\FermetureTransitive,\ResolSystemeMatrices,\PresentProdMat,\OpeBinDecHex,\ExprBool,\GrilleCCFSIO},%
keywordstyle={\color{green!50!black}},%
classoffset=3,%
- morekeywords={CouleurDurees,CouleurFleches,LargeurCases,Epaisseur,Police,CouleurDates,CouleurBords,NoirBlanc,Grille,DecalHorizDeb,DecalVertDeb,DecalHorizFin,DecalVertFin,Coude,SensCoude,Unite,Variables,Swap,Aide,CouleurCases,Decalage,Couleur,Type,Legende,PosVarLaterale,CouleurLegende,CouleurSommets,TypeSommets,Unite,CouleurFT,DimensionSommets,PositionFleches,EchelleFleches,TypeFleche,Droit,Milieu,AngleGauche,AngleDroite,Boucle,GrphStyleArc,GrphStyleSommet,Poids,GrphStylepoids,DistElem,DistEns,LargEns,NomAppli,CouleurE,CouleurAppli,CouleurF,CouleursFleches,TypeFleche,Epaisseur,Labels,Ensembles,PosLabels,PoliceLabels,Offset,NomApplis,CouleursAppli,VF,LargeursColonnes,CouleurEnonce,CodeAvant,CodeApres,StyleAlternatif,PoliceTT,Espace,Couleurs,Contraire,Enonce,Bordure,Sommets,Num,PoliceBordure,De,Vers,Formule,Brut,NomMatrice,Longueur,Complet,NomsMatrices,NomInverse,NomSysteme,Inconnues,OptionNiceMatrix,Base,AffRetenues,AffEgal,SymbDecal,LimiteCapac,CouleurRetenue,Interm,Enonce,Decalages,Couleurs,Dense,Dernier,MathE,MathF,MathG,CouleurPlus,Vide,HauteurVide},%
+ morekeywords={CouleurDurees,CouleurFleches,LargeurCases,Epaisseur,Police,CouleurDates,CouleurBords,NoirBlanc,Grille,DecalHorizDeb,DecalVertDeb,DecalHorizFin,DecalVertFin,Coude,SensCoude,Unite,Variables,Swap,Aide,CouleurCases,Decalage,Couleur,Type,Legende,PosVarLaterale,CouleurLegende,CouleurSommets,TypeSommets,Unite,CouleurFT,DimensionSommets,PositionFleches,EchelleFleches,TypeFleche,Droit,Milieu,AngleGauche,AngleDroite,Boucle,GrphStyleArc,GrphStyleSommet,Poids,GrphStylepoids,DistElem,DistEns,LargEns,NomAppli,CouleurE,CouleurAppli,CouleurF,CouleursFleches,TypeFleche,Epaisseur,Labels,Ensembles,PosLabels,PoliceLabels,Offset,NomApplis,CouleursAppli,VF,LargeursColonnes,CouleurEnonce,CodeAvant,CodeApres,StyleAlternatif,PoliceTT,Espace,Couleurs,Contraire,Enonce,Bordure,Sommets,Num,PoliceBordure,De,Vers,Formule,Brut,NomMatrice,Longueur,Complet,NomsMatrices,NomInverse,NomSysteme,Inconnues,OptionNiceMatrix,Base,AffRetenues,AffEgal,SymbDecal,LimiteCapac,CouleurRetenue,Interm,Enonce,Decalages,Couleurs,Dense,Dernier,MathE,MathF,MathG,CouleurPlus,Vide,HauteurVide,Session,PoliceManuscrite},%
keywordstyle={\color{orange}}
},%
#1
@@ -255,7 +256,11 @@
\section{Historique}
-\verb|v0.2.6|~:~~~~Correction dans des simplifications de Karnaugh
+\verb|v0.2.8|~:~~~~Grilles d'évaluation des CCF
+
+\verb|v0.2.7|~:~~~~Correction d'un bug dans les simplifications de Karnaugh
+
+\verb|v0.2.6|~:~~~~Corrections dans des simplifications de Karnaugh
\verb|v0.2.5|~:~~~~Clé \textsf{[Vide]} pour les tables vérité, pour ne pas remplir
@@ -1163,9 +1168,9 @@ Par exemple :
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}
-%\begin{importantblock}
-%En interne, la commande utilise la simplification par table de Karnaugh, et la commande peut également se charger de formater le résultat brut de l'expression.
-%\end{importantblock}
+\begin{noteblock}
+La plupart des clés de la commande de simplification par Karnaugh sont utilisables avec cette commande, notamment celles de formatage des couleurs.
+\end{noteblock}
\subsection{Arguments et clés }
@@ -1184,6 +1189,7 @@ Les clés disponibles sont :
\item \Cle{Enonce} := booléen pour afficher l'expression booléenne brute ; \hfill~défaut : \Cle{true}
\item \Cle{Variables} := variables utilisées ; \hfill~défaut : \Cle{a/b/c}
\item \Cle{Contraire} := booléen pour travailler sur le contraire ; \hfill~défaut : \Cle{false}
+ \item \Cle{Couleurs} et \Cle{CouleurPlus} := couleurs(s) de la sortie ; \hfill~défaut : \Cle{black}
\item \Cle{Espace} := booléen pour rajouter un petit espace (1.5~mu) dans les produits.
\hfill~défaut : \Cle{true}
@@ -1216,7 +1222,9 @@ $\overline{E} = \SimplificationBooleenne[Contraire,Variables=g/b/n]{(g)+(gb)+(gb
\end{DemoCode}
\begin{DemoCode}
-On a $F = \SimplificationBooleenne{(a)+(abc*)+(a*b*c)+(abc)+(a*bc)}$.
+On a $F = \SimplificationBooleenne%
+ [Couleurs={blue/red/violet},CouleurPlus=orange]%
+ {(a)+(abc*)+(a*b*c)+(abc)+(a*bc)}$.
\end{DemoCode}
\pagebreak
@@ -2263,4 +2271,80 @@ On a, par produit matriciel le calcul
<cell-space-limits=3pt>
\end{DemoCode}
+\pagebreak
+
+\section{Fiches annexes pour les CCF de mathématiques}
+
+\subsection{Introduction}
+
+L'idée est de proposer des commandes pour générer \textit{facilement} les fiches d'évaluation pour les deux situations de CCF de mathématiques en SIO.
+
+\smallskip
+
+Il s'agit des annexes 7-1 (recto), 7-2 (recto verso) et 7-3 (recto verso).
+
+\smallskip
+
+Un exemple de rendu est donné en marge de la présente documentation (avec code source).
+
+\smallskip
+
+Le code source de base des exemples est donné ci-dessous.
+
+\begin{DemoCode}[listing only]
+\documentclass[a4paper,french,12pt]{article}
+\usepackage[margin=1.5cm]{geometry}
+\usepackage{fontspec}
+\usepackage{ProfSio}
+\setsansfont{Fira Sans}[Scale=MatchLowercase]
+\newfontfamily\poltuto{QTSanDiego}
+\usepackage{babel}
+\end{DemoCode}
+
+\subsection{Annexe 7-1}
+
+\begin{DemoCode}[listing only]
+\GrilleCCFSIO[Type={7-1},Session=...,PoliceManuscrite=...]
+ {NOM Prénom}
+ {date}
+ {intitulé court}
+\end{DemoCode}
+
+\subsection{Annexe 7-2}
+
+\begin{DemoCode}[listing only]
+\GrilleCCFSIO[Type={7-2},Session=...,PoliceManuscrite=...]
+ {NOM Prénom}
+ {date}
+ {intitulé court}
+ <compétenceA / compétenceB / compétence C / compétence D>
+\end{DemoCode}
+
+\subsection{Annexe 7-3}
+
+\begin{DemoCode}[listing only]
+\GrilleCCFSIO[Type={7-3},Session=...,PoliceManuscrite=...]
+ {NOM Prénom}
+ {date}
+ {identification du sujet proposé}
+\end{DemoCode}
+
+\newpage
+
+\thispagestyle{empty}
+
+\includepdf[frame,pages=-,width=\textwidth]{ProfSio-doc-annexe71.pdf}
+
+\newpage
+
+\thispagestyle{empty}
+
+\includepdf[frame,pages=-,width=\textwidth]{ProfSio-doc-annexe72.pdf}
+
+\newpage
+
+\thispagestyle{empty}
+
+\includepdf[frame,pages=-,width=\textwidth]{ProfSio-doc-annexe73.pdf}
+
\end{document} \ No newline at end of file
diff --git a/graphics/pgf/contrib/profsio/tex/ProfSio.sty b/graphics/pgf/contrib/profsio/tex/ProfSio.sty
index 2d3b5d6a17..3b70f9a1e3 100644
--- a/graphics/pgf/contrib/profsio/tex/ProfSio.sty
+++ b/graphics/pgf/contrib/profsio/tex/ProfSio.sty
@@ -3,8 +3,10 @@
% : Luatruthtable from Chetan Shirore and Dr. Ajit Kumar https://ctan.org/pkg/luatruthtable
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfSio}[2024/04/20 0.2.6 Pour les enseignants de Maths en BTS SIO]
-%0.2.6 Correction dans les simplifications de Karnaugh
+\ProvidesPackage{ProfSio}[2024/05/18 0.2.8 Pour les enseignants de Maths en BTS SIO]
+%0.2.8 Ajout des grilles de CCF (E2)
+%0.2.7 Correction d'un bug dans les simplifications de Karnaugh
+%0.2.6 Corrections dans les simplifications de Karnaugh
%0.2.5 Ajout de clés pour les tables de vérité, [Vide], pour ne pas le remplir
%0.2.4 Ajout d'une commande pour afficher (sans simplifier) une expression booléenne + tables en base donnée + Possibilité math dans diag sagitt
%0.2.3 Ajout d'une clé [Dense] pour condenser la résolution matricielle de système + commande \KarnaughBlocRegroupAuto pour créer les blocs automatiquement
@@ -1920,14 +1922,18 @@ end
\ExplSyntaxOff
\defKV[simplifbool]{%
- Variables=\def\simplifboolvars{#1}
+ Variables=\def\simplifboolvars{#1},
+ Couleurs=\def\simplifboolcoul{#1},%
+ CouleurPlus=\def\simplifboolcoulplus{#1},%
}
\setKVdefault[simplifbool]{%
Variables={a/b/c},%
Enonce=true,%
Espace=true,%
- Contraire=false
+ Contraire=false,%
+ Couleurs={black/black/black},%
+ CouleurPlus=black,%
}
\NewDocumentCommand\ExprBool{ O{} m D<>{} }{%semble ok
@@ -2075,11 +2081,11 @@ end
\StrSubstitute{\knghbinres}{2}{1}[\knghbinres]%
}%
{}%
- \ensuremath{%
+ \ensuremath{%\knghbinres=%
\ifboolKV[simplifbool]{Enonce}{\ifboolKV[simplifbool]{Contraire}{\overline{\knghenoncetransf}}{\knghenoncetransf}=}{}%
\ifboolKV[simplifbool]{Espace}%
- {\SimplificationKarnaugh[Variables={\simplifboolvars},Espace=true,#3]{\knghbinres}}%
- {\SimplificationKarnaugh[Variables={\simplifboolvars},Espace=false,#3]{\knghbinres}}%
+ {\SimplificationKarnaugh[Variables={\simplifboolvars},Espace=true,Swap,#3,Couleurs={\simplifboolcoul},CouleurPlus={\simplifboolcoulplus}]{\knghbinres}}%
+ {\SimplificationKarnaugh[Variables={\simplifboolvars},Espace=false,Swap,#3,Couleurs={\simplifboolcoul},CouleurPlus={\simplifboolcoulplus}]{\knghbinres}}%
}
}
@@ -2832,4 +2838,305 @@ end
\StrSubstitute{#2}{/}{#1}\relax%
}
+%===GRILLES CCF
+\newcommand\tkzsquarebox{{\tikz\draw (0,0) rectangle++(0.9em,0.9em);}}
+
+\defKV[GrillesCCFSIO]{%
+ Session=\def\grccfsioannee{#1},%
+ PoliceManuscrite=\def\grpoliceccf{#1},%
+ Type=\def\grtypeccf{#1}
+}
+
+\setKVdefault[GrillesCCFSIO]{%
+ Session={\year},%
+ PoliceManuscrite={},%
+ Type={7-1}
+}
+
+\NewDocumentCommand\GrilleCCFSIO{ O{} m m m D<>{default} }{%
+ %1=clés
+ %2=candidat
+ %3=date
+ %4=résumé
+ %5=compétences
+ \restoreKV[GrillesCCFSIO]%
+ \setKV[GrillesCCFSIO]{#1}%
+ \IfStrEq{\grtypeccf}{7-1}%
+ {%
+ \noindent\begin{tblr}{vlines,width=\linewidth,colspec={X[m]},row{1}={l},row{2-3}={c},cells={font=\sffamily\bfseries}}
+ \hline
+ BTS SERVICES INFORMATIQUES AUX ORGANISATIONS\hfill{}SESSION {\grccfsioannee}\hspace*{1cm} \\
+ ANNEXE 7-1 : Document de préparation au déroulement de la situation 1 \\
+ Épreuve E2 – Mathématiques pour l’informatique (CCF) \\
+ \hline
+ \end{tblr}
+
+ \vspace*{5mm}
+
+ \noindent\begin{tblr}{
+ vline{1,Z}={solid},%
+ vline{2}={3-4}{solid},%
+ width=\linewidth,
+ colspec={X[m]Q[7cm,m]},
+ hlines,stretch=1.25,
+ cells={font=\bfseries\sffamily},
+ rows={1cm},%
+ row{2}={t},%
+ row{4}={t}
+ }
+ \SetCell[c=2]{c}{SITUATION PROBLÈME} & \\
+ NOM et prénom : \textmd{\grpoliceccf #2} & \SetCell{l}{\phantom{BLABLA}OPTION SLAM\phantom{ISR}\raisebox{-0.1em}{\tkzsquarebox} \\ \phantom{BLABLA}OPTION SISR\phantom{LAM}\raisebox{-0.1em}{\tkzsquarebox}} \\
+ N° candidat : & N° commission \\
+ {Intitulé court de la situation proposée : \\~\\ \textmd{\grpoliceccf #4} \\} & {\\ Date : \textmd{\grpoliceccf #3}} \\
+ {Consignes\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\} & \\
+ {Documents ou composants fournis\\ \\ \textmd{\grpoliceccf Notice + Aide-mémoire + Clé USB}\\ \\ \\} & \\
+ \end{tblr}
+
+ \vspace*{5mm}
+
+ \noindent\textsf{\textit{Au cours de l’épreuve, la personne candidate est autorisée à utiliser les ressources électroniques disponibles dans le centre d’examen à l’exception de tout service d’échanges synchrones ou asynchrones avec un tiers. Elle est informée que l’ensemble des connexions réalisées peuvent faire l’objet d’un contrôle par la commission d’interrogation.}}
+
+ \pagebreak
+ }%
+ {}%
+ \IfStrEq{\grtypeccf}{7-2}%
+ {%
+ \IfStrEq{#5}{default}%
+ {%
+ \def\compteccfA{}%
+ \def\compteccfB{}%
+ \def\compteccfC{}%
+ \def\compteccfD{}%
+ }%
+ {%
+ \setsepchar[.]{/}%
+ \readlist*\lstcompetccf{#5}%
+ \itemtomacro\lstcompetccf[1]\compteccfA%
+ \itemtomacro\lstcompetccf[2]\compteccfB%
+ \itemtomacro\lstcompetccf[3]\compteccfC%
+ \itemtomacro\lstcompetccf[4]\compteccfD%
+
+ }%
+ \noindent\begin{tblr}{vlines,width=\linewidth,colspec={X[m]},row{1}={l},row{2-3}={c},cells={font=\sffamily\bfseries}}
+ \hline
+ BTS SERVICES INFORMATIQUES AUX ORGANISATIONS\hfill{}SESSION {\grccfsioannee}\hspace*{1cm} \\
+ ANNEXE 7-2 : Grille d’aide à l’évaluation de la situation 1 (recto) \\
+ Épreuve E2 – Mathématiques pour l’informatique (CCF) \\
+ \hline
+ \end{tblr}
+
+ \vspace*{5mm}
+
+ \noindent\begin{tblr}{vlines,width=\linewidth,colspec={X[m]Q[3.5cm,m]},cells={font=\sffamily\bfseries},stretch=1.25}
+ \hline
+ NOM et prénom : \textmd{\grpoliceccf #2} & N° commission\textsuperscript{\scriptsize 1} : \\
+ N° candidat : & \\
+ \hline
+ \end{tblr}
+
+ \vspace*{0.75cm}
+
+ \noindent\begin{tblr}{
+ hlines,vlines,
+ width=\linewidth,colspec={X[0.625,m]X[0.375,m]},
+ cells={font=\sffamily},%
+ row{2}={1.25cm},%
+ row{X}={0.75cm}
+ }
+ \SetCell[c=2]{l}{\bfseries Intitulé court de la situation problème proposée :} & \\
+ \SetCell[c=2]{l}{\grpoliceccf #4} & \\
+ \textbf{Évaluation\textsuperscript{\footnotesize 2}} & \textbf{Critères d'évaluation} \\
+ \textbf{Maîtrise des connaissances (sur 8)} & \\
+ \textmd{-- \grpoliceccf \compteccfA} & \\
+ \textmd{-- \grpoliceccf \compteccfB} & \\
+ \textmd{-- \grpoliceccf \compteccfC} & \\
+ \textmd{-- \grpoliceccf \compteccfD} & \\
+ \textbf{Production commentée (sur 6)} & \\
+ \textmd{Efficacité et pertinence de la solution proposée} & \\
+ \textmd{Pertinence de la solution proposée} & \\
+ \textmd{Correction et cohérence de l’utilisation du formalisme retenu} & \\
+ \textmd{Cohérence de l’utilisation du formalisme retenu} & \\
+ \textmd{Lisibilité de la solution proposée} & \\
+ \textbf{Mise en \oe{}uvre commentée (sur 6)} & \\
+ \textmd{Qualité de la mise en \oe{}uvre} & \\
+ \textmd{Efficacité de l’implémentation} & \\
+ \textmd{Pertinence de l’utilisation des composants logiciels fournis} & \\
+ \textmd{Adéquation des tests de validation effectués} & \\
+ \textmd{Capacité à proposer des corrections pertinentes} & \\
+ \textbf{Note globale} & \SetCell{r}{\textbf{Note ~~~~/\,20}} \\
+ \SetCell[c=2]{l}{\textbf{Date :} {\grpoliceccf #3} \\ ~ \\ \textbf{Nom et signature de la commission d’évaluation :} \\ ~} & \\
+ \SetCell[c=2]{l}{\textbf{\textit{Joindre le document descriptif de la situation problème proposée.}}} & \\
+ \end{tblr}
+
+ \vspace*{5mm}
+
+ \noindent\textsf{\textbf{\textit{Cette partie est à l’usage exclusif de la commission d’interrogation et ne peut être communiquée à la personne candidate.}}}
+
+ \vfill
+
+ \par\noindent\rule{0.33\linewidth}{0.4pt}
+
+ \noindent\textsf{\textsuperscript{\footnotesize 1}{\footnotesize Indiquer le nom du professeur responsable de l’évaluation.}}
+
+ \noindent\textsf{\textsuperscript{\footnotesize 2}{\footnotesize Des appels (2 au maximum) permettent de s’assurer de la compréhension du problème et d’évaluer la communication orale et les capacités liées à l’usage des outils numériques.}}
+
+ \vspace*{5mm}
+
+ \pagebreak
+
+ \noindent\begin{tblr}{vlines,width=\linewidth,colspec={X[m]},row{1}={l},row{2-3}={c},cells={font=\sffamily\bfseries}}
+ \hline
+ BTS SERVICES INFORMATIQUES AUX ORGANISATIONS\hfill{}SESSION {\grccfsioannee}\hspace*{1cm} \\
+ ANNEXE 7-2 : Grille d’aide à l’évaluation de la situation 1 (verso) \\
+ Épreuve E2 – Mathématiques pour l’informatique (CCF) \\
+ \hline
+ \end{tblr}
+
+ \vspace*{5mm}
+
+ \noindent\begin{tblr}{vlines,width=\linewidth,colspec={X[m]Q[6cm,m]},cells={font=\sffamily\bfseries},stretch=1.25}
+ \hline
+ NOM et prénom : \textmd{\grpoliceccf #2} & Date de l'interrogation : \\
+ N° candidat : & \textmd{\grpoliceccf #3} \\ \hline
+ \end{tblr}
+
+ \vspace*{0.75cm}
+
+ \noindent\begin{tblr}{%
+ width=\linewidth,colspec={XQ[7cm]},cells={font=\bfseries\sffamily},
+ row{1}={m,j,1cm},
+ row{2}={m,7cm},
+ row{3}={m,j,1cm},
+ row{4}={m,4cm},
+ vline{1,Z}={solid},
+ vline{2}={Z}{solid},
+ stretch=1.25}
+ \hline
+ Appréciation globale & \\ \hline
+ ~
+ \\ \hline
+ Questionnement complémentaire éventuel & \\ \hline
+ ~
+ \\ \hline
+ {\underline{Note sur 20 :}\\ \\ \\} & {Visa de la commission \\ \\ \\} \\
+ \hline
+ \end{tblr}
+
+ \vspace*{5mm}
+
+ \noindent\textsf{\textbf{Ce document d’évaluation peut être communiqué à la personne candidate, à sa demande, après délibération du jury.}}
+
+ \pagebreak
+ }%
+ {}%
+ \IfStrEq{\grtypeccf}{7-3}%
+ {%
+ \noindent\begin{tblr}{vlines,width=\linewidth,colspec={X[m]},row{1}={l},row{2-3}={c},cells={font=\sffamily\bfseries}}
+ \hline
+ BTS SERVICES INFORMATIQUES AUX ORGANISATIONS\hfill{}SESSION {\grccfsioannee}\hspace*{1cm} \\
+ ANNEXE 7-3 : Grille d’aide à l’évaluation de la situation 2 (recto) \\
+ Épreuve E2 – Mathématiques pour l’informatique (CCF) \\
+ \hline
+ \end{tblr}
+
+ \vspace*{5mm}
+
+ \noindent\begin{tblr}{vlines,width=\linewidth,colspec={X[m]Q[3.5cm,m]},cells={font=\sffamily\bfseries},stretch=1.25}
+ \hline
+ NOM et prénom : \textmd{\grpoliceccf #2} & N° commission\textsuperscript{\scriptsize 3} : \\
+ N° candidat : & \\
+ \hline
+ \end{tblr}
+
+ \vspace*{0.75cm}
+
+ \noindent\begin{tblr}{%
+ hline{1}={solid},%
+ hline{3-Y}={solid},
+ hline{Z}={2-Z}{solid},
+ vline{1}={1-Y}{solid},
+ vline{2}={3-Z}{solid},
+ vline{Z}={solid},
+ width=\linewidth,colspec={X[0.525]X[0.475]},
+ cells={font=\sffamily},
+ row{1}={m,j},
+ row{2}={m,j,1.5cm},
+ row{3-Z}={m,j,1cm},stretch=1.25}
+ \textbf{Identification du sujet proposé :} & \\
+ \textmd{\grpoliceccf #4} & \\
+ \SetCell{c}{\textbf{Compétences}} & \SetCell{c}{\textbf{Appréciation du niveau d’acquisition\textsuperscript{\scriptsize 4}}} \\
+ Maîtrise des connaissances figurant au programme & \\
+ Pertinence des sources d’information mobilisées & \\
+ Adaptation de la stratégie choisie au problème à résoudre & \\
+ Efficacité dans la mise en \oe{}uvre de cette stratégie & \\
+ Rigueur et pertinence dans l’utilisation des savoir-faire figurant au programme de mathématiques & \\
+ Cohérence de l’argumentation employée & \\
+ Aptitude à analyser un résultat avec pertinence & \\
+ Qualité d’expression écrite ou orale & \\
+ & \SetCell{r}{\textbf{/\,20}} \\
+ \end{tblr}
+
+ \vspace*{5mm}
+
+ \noindent\textsf{\textbf{\textit{Cette partie est à l’usage exclusif de la commission d’interrogation et ne peut être communiquée à la personne candidate.}}}
+
+ \vfill
+
+ \par\noindent\rule{0.33\linewidth}{0.4pt}
+
+ \noindent\textsf{\textsuperscript{\footnotesize 3}{\footnotesize Indiquer le nom du professeur responsable de l’évaluation.}}
+
+ \noindent\textsf{\textsuperscript{\footnotesize 4}{\footnotesize Le professeur peut utiliser toute forme d’annotation lui permettant d’évaluer par compétences.}}
+
+ \vspace*{5mm}
+
+ \pagebreak
+
+ \noindent\begin{tblr}{vlines,width=\linewidth,colspec={X[m]},row{1}={l},row{2-3}={c},cells={font=\sffamily\bfseries}}
+ \hline
+ BTS SERVICES INFORMATIQUES AUX ORGANISATIONS\hfill{}SESSION {\grccfsioannee}\hspace*{1cm} \\
+ ANNEXE 7-3 : Grille d’aide à l’évaluation de la situation 2 (verso) \\
+ Épreuve E2 – Mathématiques pour l’informatique (CCF) \\
+ \hline
+ \end{tblr}
+
+ \vspace*{5mm}
+
+ \noindent\begin{tblr}{vlines,width=\linewidth,colspec={X[m]Q[6cm,m]},cells={font=\sffamily\bfseries},stretch=1.25}
+ \hline
+ NOM et prénom : \textmd{\grpoliceccf #2} & Date de l'interrogation : \\
+ N° candidat : & \textmd{\grpoliceccf #3} \\ \hline
+ \end{tblr}
+
+ \vspace*{0.75cm}
+
+ \noindent\begin{tblr}{%
+ width=\linewidth,colspec={XQ[7cm]},cells={font=\bfseries\sffamily},
+ row{1}={m,j,1cm},
+ row{2}={m,7cm},
+ row{3}={m,j,1cm},
+ row{4}={m,4cm},
+ vline{1,Z}={solid},
+ vline{2}={Z}{solid},
+ stretch=1.25}
+ \hline
+ Appréciation globale & \\ \hline
+ ~
+ \\ \hline
+ Questionnement complémentaire éventuel & \\ \hline
+ ~
+ \\ \hline
+ {\underline{Note sur 20 :}\\ \\ \\} & {Visa de la commission \\ \\ \\} \\
+ \hline
+ \end{tblr}
+
+ \vspace*{5mm}
+
+ \noindent\textsf{\textbf{Ce document d’évaluation peut être communiqué à la personne candidate, à sa demande, après délibération du jury.}}
+
+ \pagebreak
+ }%
+ {}%
+}
+
\endinput \ No newline at end of file
diff --git a/graphics/pgf/contrib/spath3/README b/graphics/pgf/contrib/spath3/README.txt
index dad3e28a92..b1104b7f4d 100644
--- a/graphics/pgf/contrib/spath3/README
+++ b/graphics/pgf/contrib/spath3/README.txt
@@ -1,6 +1,6 @@
----------------------------------------------------------------
spath3 --- LaTeX3 functions for manipulating PGF soft paths
-E-mail: loopspace@mathforge.org
+E-mail: Andrew Stacey <loopspace@mathforge.org>
Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
----------------------------------------------------------------
diff --git a/graphics/pgf/contrib/spath3/spath3.pdf b/graphics/pgf/contrib/spath3/spath3.pdf
index 9282e0adfe..6ade2656ac 100644
--- a/graphics/pgf/contrib/spath3/spath3.pdf
+++ b/graphics/pgf/contrib/spath3/spath3.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/spath3/spath3.tex b/graphics/pgf/contrib/spath3/spath3.tex
index c8e9d65af7..897f5f7b3d 100644
--- a/graphics/pgf/contrib/spath3/spath3.tex
+++ b/graphics/pgf/contrib/spath3/spath3.tex
@@ -1,5 +1,5 @@
\RequirePackage{shellesc}
-\immediate\write18{tex spath3_code.dtx}
+%\immediate\write18{tex spath3_code.dtx}
\documentclass{l3doc}
\usepackage{tikz}
\usetikzlibrary{
@@ -50,27 +50,29 @@
\title{The \textsf{spath3} Package: Documentation}
\author{Andrew Stacey \\ \url{loopspace@mathforge.org}}
- \date{\fileversion~from \filedate}
+\date{\fileversion~from \filedate}
- \begin{document}
+\let\OriginalBar=|
- \maketitle
+\begin{document}
+
+\maketitle
\tableofcontents
- \section{Introduction}
+\section{Introduction}
- The \texttt{spath3} package was originally designed as a low-level package for manipulating the \emph{soft paths} defined by PGF/TikZ.
- Soft paths form one stage of the stack of translations between what the author writes in the \texttt{tikzpicture} environments in their \LaTeX\ document and what is eventually written to the output file.
- Most of the complicated processing has been done by the time a soft path is constructed, but it is still very definitely a \TeX\ object and there has not, for example, been any consideration as to what the eventual output file format is (such as PDF, DVI, or SVG).
- So it is very amenable to being modified at this stage and this package provides a set of routines for doing so.
+The \texttt{spath3} package was originally designed as a low-level package for manipulating the \emph{soft paths} defined by PGF/TikZ.
+Soft paths form one stage of the stack of translations between what the author writes in the \texttt{tikzpicture} environments in their \LaTeX\ document and what is eventually written to the output file.
+Most of the complicated processing has been done by the time a soft path is constructed, but it is still very definitely a \TeX\ object and there has not, for example, been any consideration as to what the eventual output file format is (such as PDF, DVI, or SVG).
+So it is very amenable to being modified at this stage and this package provides a set of routines for doing so.
- The original purpose was to provide a common core on which other packages would be built.
- Indeed, the packages \texttt{calligraphy}, \texttt{knots}, and \texttt{penrose} all use this package.
- However, over time I've found myself wanting to use the routines of this package at a higher level and so have designed some user-level interfaces.
- This document documents those.
+The original purpose was to provide a common core on which other packages would be built.
+Indeed, the packages \texttt{calligraphy}, \texttt{knots}, and \texttt{tilings} all use this package.
+However, over time I've found myself wanting to use the routines of this package at a higher level and so have designed some user-level interfaces.
+This document documents those.
- To clarify some terminology used in this document (and more generally, this package), I regard paths as being composed of \emph{segments} and \emph{components}.
+To clarify some terminology used in this document (and more generally, this package), I regard paths as being composed of \emph{segments} and \emph{components}.
A \emph{segment} is a minimal drawing piece.
Thus it might be a straight line or a B\'ezier curve.
A \emph{component} is a minimal connected section of the path.
@@ -634,6 +636,24 @@ The ones that keep the middle need two parameters to specify the break points.
\end{function}
+\begin{function}{
+ arrow shortening
+}
+\begin{syntax}
+|arrow shortening|
+|arrow shortening=|\marg{true{\OriginalBar}false}
+\end{syntax}
+
+When an arrow is added to a path then the path is shortened so that the arrow tip is at the end of where the path should end up.
+Placing an arrow, therefore, has two effects: modifying the path and rendering the arrow.
+The former should happen before a soft path is manipulated, the latter afterwards.
+This key allows for the necessary separation to occur.
+Invoking it when the path is used disables the shortening at that juncture.
+
+Note that if the path (or its last segment) is very short then when the arrow is eventually placed it may end up pointing backwards.
+Fixing this is on the \emph{ToDo} list!
+\end{function}
+
\subsection{Exporting Paths}
There are two keys to export a path.
@@ -908,6 +928,21 @@ The intention with the second key is that it is similar to what happens with the
\end{tikzpicture}
\end{example}
+\begin{example}
+\begin{tikzpicture}[>=Latex, line width=5pt]
+% Just a simple line
+\draw (0,1) to[bend left] +(5,0);
+% Same line but with arrows, also save the path
+\draw[->.>, spath/save=arrow] (0,0) to[bend left] +(5,0);
+% Let's redraw that path without the arrows - it's short! But also distorted
+\draw[spath/use={arrow,transform={yshift=-1cm}}];
+% So if we redraw it with arrows it gets doubly shortened
+\draw[->.>,spath/use={arrow,transform={yshift=-2cm}}];
+% If we disable the shortening, the arrows end up in the right place
+\draw[->.>,spath/use={arrow,transform={yshift=-3cm}}, spath/arrow shortening=false];
+\end{tikzpicture}
+\end{example}
+
\item Intersections.
One of the main motivations for implementing the intersection routines was to provide a different way of drawing knots and links and similar diagrams.
diff --git a/graphics/pgf/contrib/spath3/spath3_code.dtx b/graphics/pgf/contrib/spath3/spath3_code.dtx
index 031c0e7bd3..3b0178db5a 100644
--- a/graphics/pgf/contrib/spath3/spath3_code.dtx
+++ b/graphics/pgf/contrib/spath3/spath3_code.dtx
@@ -5,7 +5,7 @@
%<*readme>
----------------------------------------------------------------
spath3 --- LaTeX3 functions for manipulating PGF soft paths
-E-mail: loopspace@mathforge.org
+E-mail: Andrew Stacey <loopspace@mathforge.org>
Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
----------------------------------------------------------------
@@ -27,7 +27,7 @@ As applications of its use, included are a package for drawing calligraphic path
\preamble
----------------------------------------------------------------
spath3 --- Functions for manipulating PGF soft paths
-E-mail: loopspace@mathforge.org
+E-mail: Andrew Stacey <loopspace@mathforge.org>
Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
----------------------------------------------------------------
@@ -35,7 +35,7 @@ See http://www.latex-project.org/lppl.txt
\endpreamble
\postamble
-Copyright (C) 2011-2021 by Andrew Stacey <loopspace@mathforge.org>
+Copyright (C) 2011-2024 by Andrew Stacey <loopspace@mathforge.org>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License (LPPL), either
@@ -60,7 +60,7 @@ and the derived files spath3.ins,
calligraphy.pdf
knots.pdf
spath3.pdf
- README
+ README.txt
\endpostamble
\usedir{tex/latex/spath3}
@@ -143,7 +143,7 @@ and the derived files spath3.ins,
%</driver>
% \fi
%
-% \CheckSum{10189}
+% \CheckSum{10278}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -171,6 +171,7 @@ and the derived files spath3.ins,
% \changes{2.4}{2021/02/21}{Rejigged how the routines for using paths were implemented, added some more routines for joining paths.}
% \changes{2.6}{2021/11/23}{Modified core routines to cope with a "true rectangle" path; added routines for splitting at a parametrised point.}
% \changes{2.7}{2022/08/24}{Bug fixes}
+% \changes{2.8}{2024/05/31}{Routine to disable arrow shortening, bug fixes}
%
% \DoNotIndex{\newcommand,\newenvironment}
%
@@ -198,7 +199,7 @@ and the derived files spath3.ins,
% It was originally not really intended for use by end users but as a foundation on which other packages can be built.
% However, over the years I've found myself using it at ever higher levels and so a set of interfaces has been designed using TikZ keys.
%
-% It also provides the engine that drives a few other packages, such as the \Verb+calligraphy+, \Verb+knot+, and \Verb+penrose+ packages.
+% It also provides the engine that drives a few other packages, such as the \Verb+calligraphy+, \Verb+knot+, and \Verb+tilings+ (formerly, \Verb+penrose+) packages.
% The first two of these are subpackages of this one.
% The \Verb+calligraphy+ package simulates a calligraphic pen stroking a path.
% The \Verb+knots+ package can be used to draw knot (and similar) diagrams.
@@ -208,7 +209,7 @@ and the derived files spath3.ins,
% \begin{itemize}
% \item \Verb+calligraphy+
% \item \Verb+knots+
-% \item \Verb+penrose+
+% \item \Verb+tilings+
% \item \Verb+spath3+ (\emph{this} document is the code, there's another which focusses on usage)
% \end{itemize}
%
@@ -259,7 +260,7 @@ and the derived files spath3.ins,
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\RequirePackage{pgf}
-\ProvidesExplPackage {spath3} {2022/08/24} {2.7} {Functions for
+\ProvidesExplPackage {spath3} {2024/05/31} {2.8} {Functions for
manipulating PGF soft paths}
\RequirePackage{xparse}
% \end{macrocode}
@@ -375,6 +376,13 @@ manipulating PGF soft paths}
\bool_new:N \l_spath_movetorelevant_bool
% \end{macrocode}
%
+% When manipulating soft paths, we might need to separate the shortening due to an arrow from when the path is rendered.
+%
+% \begin{macrocode}
+\bool_new:N \l_spath_arrow_shortening_bool
+\bool_set_true:N \l_spath_arrow_shortening_bool
+% \end{macrocode}
+%
% The intersection routine can't happen inside a group so we need two token lists to hold the paths that we'll intersect.
%
% \begin{macrocode}
@@ -457,7 +465,7 @@ manipulating PGF soft paths}
{
\tl_set:Nx \l_@@_tmpc_tl {\tl_head:N \l_@@_tmpa_tl}
\tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
- \tl_case:NnF \l_@@_tmpc_tl
+ \token_case_meaning:NnF \l_@@_tmpc_tl
{
\c_spath_moveto_tl
{
@@ -718,7 +726,7 @@ manipulating PGF soft paths}
\int_set:Nn \l_@@_tmpa_int {0}
\tl_map_inline:nn {#1} {
\tl_set:Nn \l_@@_tmpa_tl {##1}
- \tl_case:NnT \l_@@_tmpa_tl
+ \token_case_meaning:NnT \l_@@_tmpa_tl
{
\c_spath_lineto_tl {}
\c_spath_curveto_tl {}
@@ -763,7 +771,7 @@ manipulating PGF soft paths}
\int_set:Nn \l_@@_tmpa_int {0}
\tl_map_inline:nn {#1} {
\tl_set:Nn \l_@@_tmpa_tl {##1}
- \tl_case:Nn \l_@@_tmpa_tl
+ \token_case_meaning:Nn \l_@@_tmpa_tl
{
\c_spath_moveto_tl
{
@@ -910,7 +918,7 @@ manipulating PGF soft paths}
}
{
\tl_set:Nx \l_@@_tmpb_tl {\tl_head:N \l_@@_tmpa_tl}
- \tl_case:Nn \l_@@_tmpb_tl
+ \token_case_meaning:Nn \l_@@_tmpb_tl
{
\c_spath_moveto_tl
{
@@ -1102,7 +1110,7 @@ manipulating PGF soft paths}
}
{
\tl_set:Nx \l_@@_tmpb_tl {\tl_head:N \l_@@_tmpa_tl}
- \tl_case:Nn \l_@@_tmpb_tl
+ \token_case_meaning:Nn \l_@@_tmpb_tl
{
\c_spath_moveto_tl
{
@@ -1229,7 +1237,7 @@ manipulating PGF soft paths}
\tl_set:Nx \l_@@_tmpc_tl {\tl_head:N \l_@@_tmpa_tl}
\bool_set_false:N \l_@@_rect_bool
- \tl_case:NnTF \l_@@_tmpc_tl
+ \token_case_meaning:NnTF \l_@@_tmpc_tl
{
\c_spath_moveto_tl {
@@ -1679,8 +1687,8 @@ manipulating PGF soft paths}
\tl_clear:N \l_@@_tmpa_tl
\tl_put_right:Nn \l_@@_tmpa_tl {
\ExplSyntaxOn
- \tl_clear_new:N #1
- \tl_set:Nn #1 {#2}
+ \tl_gclear_new:N #1
+ \tl_gset:Nn #1 {#2}
\ExplSyntaxOff
}
\protected@write\@auxout{}{
@@ -3054,6 +3062,35 @@ manipulating PGF soft paths}
}
\cs_generate_variant:Nn \spath_gbake_shorten:N {c}
% \end{macrocode}
+%
+% Shortening the path when it is baked can cause issues with arrows.
+% Putting an arrow in a path definition affects the path because the path gets shortened so that the arrow ends where the path was meant to end.
+% So an arrow affects the path definition, but the arrow is not itself part of the path so if an arrow is used when the path is defined and again when the path is used, the path will be shortened twice which might not be what is intended.
+% Therefore it is useful to have a way to disable the shortening and place an arrow tip at the actual end of the line.
+% The following code achieves that.
+%
+% Save the original command that computes the arrow shortening.
+% \begin{macrocode}
+\cs_set_eq:Nc \@@_pgf_arrow_compute_shortening:n {pgf@arrow@compute@shortening}
+% \end{macrocode}
+%
+% After \verb+\pgf@arrow@compute@shortening+ then \verb+\pgf@xa+ is the amount to shorten the line by, so we will be setting that to 0pt.
+% Then \verb+\pgf@xb+ is the length of the arrow head which is used to position the arrow and so before zeroing \verb+\pgf@xa+ we subtract it from \verb+\pgf@xb+ so that the arrow is placed so that its back point is at the current position.
+%
+% \begin{macrocode}
+\cs_new_nopar:Npn \@@_arrow_compute_shortening:n #1
+{
+ \@@_pgf_arrow_compute_shortening:n {#1}
+ \bool_if:NF \l_spath_arrow_shortening_bool
+ {
+ \dim_sub:cn {pgf@xb} {\dim_use:c {pgf@xa}}
+ \dim_zero:c {pgf@xa}
+ }
+}
+
+\cs_set_eq:cN {pgf@arrow@compute@shortening} \@@_arrow_compute_shortening:n
+% \end{macrocode}
+%
% \end{macro}
%
% \begin{macro}[internal]{
@@ -3209,7 +3246,7 @@ manipulating PGF soft paths}
\tl_set:Nx \l_@@_tmpc_tl {\tl_head:N \l_@@_tmpa_tl}
\tl_set:Nx \l_@@_tmpa_tl {\tl_tail:N \l_@@_tmpa_tl}
- \tl_case:NnF \l_@@_tmpc_tl
+ \token_case_meaning:NnF \l_@@_tmpc_tl
{
\c_spath_closepath_tl {
@@ -3930,7 +3967,7 @@ manipulating PGF soft paths}
}
{
\tl_set:Nx \l_@@_tmpc_tl {\tl_head:N \l_@@_tmpa_tl}
- \tl_case:NnF \l_@@_tmpc_tl
+ \token_case_meaning:NnF \l_@@_tmpc_tl
{
\c_spath_curvetoa_tl
{
@@ -4225,7 +4262,7 @@ manipulating PGF soft paths}
{
\tl_set:Nx \l_@@_tmpf_tl {\tl_head:N \l_@@_tmpe_tl}
\tl_set:Nx \l_@@_tmpe_tl {\tl_tail:N \l_@@_tmpe_tl }
- \tl_case:Nn \l_@@_tmpf_tl
+ \token_case_meaning:Nn \l_@@_tmpf_tl
{
\c_spath_lineto_tl
{
@@ -4279,7 +4316,7 @@ manipulating PGF soft paths}
}
{
- \tl_case:Nn \l_@@_tmpf_tl
+ \token_case_meaning:Nn \l_@@_tmpf_tl
{
\c_spath_lineto_tl
{
@@ -5018,7 +5055,7 @@ manipulating PGF soft paths}
\tl_clear:N \l_@@_tmpc_tl
- \tl_case:Nn \l_@@_tmpb_tl
+ \token_case_meaning:Nn \l_@@_tmpb_tl
{
\c_spath_moveto_tl
{
@@ -5263,7 +5300,7 @@ manipulating PGF soft paths}
\tl_clear:N \l_@@_tmpc_tl
- \tl_case:Nn \l_@@_tmpb_tl
+ \token_case_meaning:Nn \l_@@_tmpb_tl
{
\c_spath_moveto_tl
{
@@ -6383,7 +6420,7 @@ manipulating PGF soft paths}
\tl_map_inline:nn {#1}
{
\tl_set:Nn \l_@@_tmpb_tl {##1}
- \tl_case:NnF \l_@@_tmpb_tl
+ \token_case_meaning:NnF \l_@@_tmpb_tl
{
\c_spath_moveto_tl
{
@@ -6516,10 +6553,14 @@ manipulating PGF soft paths}
\cs_new_protected_nopar:Npn \spath_protocol_path:n #1
{
\spath_minbb:Nn \l_@@_tmpa_tl {#1}
- \exp_last_unbraced:NV \pgf@protocolsizes\l_@@_tmpa_tl
+ \dim_set:Nn \l_@@_tmpa_dim {\tl_item:Nn \l_@@_tmpa_tl {1}}
+ \dim_set:Nn \l_@@_tmpb_dim {\tl_item:Nn \l_@@_tmpa_tl {2}}
+ \pgf@protocolsizes\l_@@_tmpa_dim\l_@@_tmpb_dim
\spath_maxbb:Nn \l_@@_tmpa_tl {#1}
- \exp_last_unbraced:NV \pgf@protocolsizes\l_@@_tmpa_tl
+ \dim_set:Nn \l_@@_tmpa_dim {\tl_item:Nn \l_@@_tmpa_tl {1}}
+ \dim_set:Nn \l_@@_tmpb_dim {\tl_item:Nn \l_@@_tmpa_tl {2}}
+ \pgf@protocolsizes\l_@@_tmpa_dim\l_@@_tmpb_dim
}
\cs_generate_variant:Nn \spath_protocol_path:n {V}
% \end{macrocode}
@@ -6880,7 +6921,7 @@ manipulating PGF soft paths}
}
}
{
- \msg_warning:nnn { spath3 } { missing soft path } { #2 }
+ \msg_warning:nnx { spath3 } { missing soft path } { #2 }
}
\tl_use:N \l_@@_check_tl
}
@@ -9027,12 +9068,8 @@ manipulating PGF soft paths}
% This puts a conditional around the \texttt{spot weld} key because when figuring out a knot drawing then we will initially want to render it without the spot weld to keep the number of components constant.
%
% \begin{macrocode}
- draft~ mode/.is~ choice,
- draft~ mode/true/.code={
- \bool_set_true:N \l_@@_draft_bool
- },
- draft~ mode/false/.code={
- \bool_set_false:N \l_@@_draft_bool
+ draft~ mode/.code={
+ \@@_set_bool:Nn \l_@@_draft_bool {#1}
},
maybe~ spot~ weld/.code={
\bool_if:NF \l_@@_draft_bool
@@ -9113,6 +9150,12 @@ manipulating PGF soft paths}
},
% \end{macrocode}
%
+% \begin{macrocode}
+ arrow~ shortening/.code={
+ \@@_set_bool:Nn \l_spath_arrow_shortening_bool {#1}
+ },
+% \end{macrocode}
+%
% For single argument commands which take a path as their argument, set the default to be \Verb+current+ so that they use the current path.
%
% \begin{macrocode}
@@ -9616,7 +9659,7 @@ manipulating PGF soft paths}
\dim_set:Nn \l_@@_tmpb_dim {\tl_item:Nn \l_@@_tmpa_tl {3}}
\tl_set:Nx \l_@@_tmpb_tl {\tl_item:Nn \l_@@_tmpa_tl {4}}
- \tl_case:NnF \l_@@_tmpb_tl
+ \token_case_meaning:NnF \l_@@_tmpb_tl
{
\c_spath_lineto_tl
{
@@ -9668,7 +9711,7 @@ manipulating PGF soft paths}
\dim_set:Nn \l_@@_tmpb_dim {\tl_item:Nn \l_@@_tmpa_tl {-1}}
\tl_set:Nx \l_@@_tmpb_tl {\tl_item:Nn \l_@@_tmpa_tl {-3}}
- \tl_case:NnF \l_@@_tmpb_tl
+ \token_case_meaning:NnF \l_@@_tmpb_tl
{
\c_spath_lineto_tl
{
@@ -10411,6 +10454,15 @@ manipulating PGF soft paths}
}
}
+\cs_new_nopar:Npn \knot_show_strand:n #1
+{
+ \bool_if:NT \l_@@_debugging_bool
+ {
+ \iow_term:n {===Knot~ debug: #1===}
+ \spath_show:v {knot #1}
+ }
+}
+
\cs_generate_variant:Nn \knot_debug:n {x}
% \end{macrocode}
% \end{macro}
@@ -10592,6 +10644,7 @@ manipulating PGF soft paths}
knot~ diagram/only~ when~ rendering/.try,
only~ when~ rendering/.try,
}
+ \knot_show_strand:n {strand #1}
\spath_tikz_path:Vv \l_@@_tmpa_tl {knot strand #1}
\group_end:
\endpgfscope
@@ -10629,6 +10682,7 @@ manipulating PGF soft paths}
}
{
\tl_clear:N \l_@@_tmpa_tl
+ \spath_remove_empty_components:c {knot strand #1}
\spath_initialpoint:Nv \l_@@_tmpa_tl {knot strand #1}
\tl_put_left:NV \l_@@_tmpa_tl \c_spath_moveto_tl
\spath_segments_to_seq:Nv \l_@@_segments_seq {knot strand #1}
@@ -10649,7 +10703,7 @@ manipulating PGF soft paths}
{
\knot_debug:n {knot~ split~ self~ intersects}
\tl_set:Nx \l_@@_tmpc_tl {\tl_item:nn {#1} {4}}
- \tl_case:NnF \l_@@_tmpc_tl
+ \token_case_meaning:NnF \l_@@_tmpc_tl
{
\c_spath_curvetoa_tl
{
@@ -11271,6 +11325,7 @@ manipulating PGF soft paths}
\int_set_eq:NN \l_@@_component_start_int \g_@@_filaments_int
\int_incr:N \l_@@_component_start_int
\tl_set_eq:Nc \l_@@_tmpa_tl {l_@@_options_strand #1}
+ \spath_remove_empty_components:c {knot strand #1}
\spath_segments_to_seq:Nv \l_@@_segments_seq {knot strand #1}
\seq_map_function:NN \l_@@_segments_seq \knot_save_filament:N
}
@@ -11284,7 +11339,7 @@ manipulating PGF soft paths}
{
\knot_debug:n {knot~ save~ filament}
\tl_set:Nx \l_@@_tmpb_tl {\tl_item:nn {#1} {4}}
- \tl_case:NnF \l_@@_tmpb_tl
+ \token_case_meaning:NnF \l_@@_tmpb_tl
{
\c_spath_moveto_tl
{
diff --git a/graphics/pgf/contrib/spath3/spath3_code.pdf b/graphics/pgf/contrib/spath3/spath3_code.pdf
index f773a0b534..840b7842d3 100644
--- a/graphics/pgf/contrib/spath3/spath3_code.pdf
+++ b/graphics/pgf/contrib/spath3/spath3_code.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tkz-grapheur/README.md b/graphics/pgf/contrib/tkz-grapheur/README.md
new file mode 100644
index 0000000000..2a9d4e1e95
--- /dev/null
+++ b/graphics/pgf/contrib/tkz-grapheur/README.md
@@ -0,0 +1,7 @@
+tkz-grapheur is a package to work with curves, with TikZ.
+--------------------------------------------------------------------------------
+tkz-grapheur un package spécifique pour travailler avec des courbes, en TikZ.
+--------------------------------------------------------------------------------
+Author : Cédric Pierquet
+email : cpierquet@outlook.fr
+Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt \ No newline at end of file
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.pdf b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.pdf
new file mode 100644
index 0000000000..029671719e
--- /dev/null
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.tex b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.tex
new file mode 100644
index 0000000000..d89c17bff4
--- /dev/null
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.tex
@@ -0,0 +1,1692 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode}
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
+
+\documentclass[11pt,a4paper]{ltxdoc}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[english]{tkz-grapheur}
+\usepackage{amsmath}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\usepackage{hyperref}
+\usepackage{nicefrac}
+\usepackage{fontawesome5}
+\usepackage{tcolorbox}
+\tcbuselibrary{skins,minted}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [tkz-grapheur]}
+\rfoot{\sffamily\small - \thepage{} -}
+\usepackage{hologo}
+\providecommand\tikzlogo{Ti\textit{k}Z}
+\providecommand\TeXLive{\TeX{}Live\xspace}
+\providecommand\PSTricks{\textsf{PSTricks}\xspace}
+\let\pstricks\PSTricks
+\let\TikZ\tikzlogo
+
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=2cm]{geometry}
+\setlength{\parindent}{0pt}
+\def\TPversion{0.1.6}
+\def\TPdate{13/07/2024}
+\usepackage{soul}
+\usepackage{codehigh}
+\usepackage{tabularray}
+\sethlcolor{lightgray!25}
+\NewDocumentCommand\MontreCode{ m }{%
+ \hl{\vphantom{\texttt{pf}}\texttt{#1}}%
+}
+\usepackage[english]{babel}
+
+\renewcommand{\footnoterule}{\vfill\kern -3pt \hrule width 0.4\columnwidth \kern 2.6pt}
+
+\begin{document}
+
+\pagestyle{fancy}
+
+\thispagestyle{empty}
+
+\begin{center}
+ \begin{minipage}{0.88\linewidth}
+ \begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+ \begin{center}
+ \begin{tabular}{c}
+ {\Huge \texttt{tkz-grapheur [en]}}\\
+ \\
+ {\LARGE A grapher, based}\\
+ \\
+ {\LARGE on \textsf{\TikZ} and \textsf{xint}.}\\
+ \\
+ {\small \texttt{Version \TPversion{} -- \TPdate}}
+ \end{tabular}
+ \end{center}
+ \end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\begin{center}
+ \begin{tabular}{c}
+ \texttt{Cédric Pierquet}\\
+ {\ttfamily c pierquet -- at -- outlook . fr}\\
+ \texttt{\url{https://forge.apps.education.fr/pierquetcedric/package-latex-tkz-grapheur}} \\
+\end{tabular}
+\end{center}
+
+\hrule
+
+\vfill
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5,halign=center]
+\begin{GraphTikz}[x=0.85cm,y=0.35cm,Xmin=0,Xmax=10,Ymin=0,Ymax=16]
+ %préparation de la fenêtre
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{0,1,...,10}{0,2,...,16}
+ %déf des fonctions avec nom courbe + nom fonction + expression
+ \DefineCurve[Name=cf]<f>{3*x-6}
+ \DefineCurve[Name=cg]<g>{-(x-6)^2+12}
+ %antécédents et intersection
+ \FindIntersections[Disp=false,Name=K]{cf}{cg}
+ \FindCounterimage[DispLine,Color=orange,Name=I]{cg}{8}
+ \FindCounterimage[Disp=false,Name=J]{cg}{0}
+ %intégrale sous une courbe, avec intersection
+ \DrawIntegral%
+ [Colors=blue/purple,Bounds=nodes,Style=hatch,Hatch=bricks]%
+ {g(x)}%
+ {(I-2)}{(J-2)}
+ %intégrale entre les deux courbes
+ \DrawIntegral[Bounds=nodes,Type=fct/fct]{f(x)}[g(x)]{(K-1)}{(K-2)}
+ %tracé des courbes et des points
+ \DrawCurve[Color=red]{f(x)}
+ \DrawCurve[Color=teal]{g(x)}
+ \MarkPts<\small>{(K-1)/below right/L,(K-2)/above left/M}%
+ \MarkPts[violet]<\small>{(I-1)/above left/D,(I-2)/above right/E}%
+ %essai de tangente
+ \DrawTangent[Colors=pink!75!black/yellow,OffsetL=2,OffsetR=2,DispPt]{g}{5}
+ %essai d'image
+ \DrawRanges[Colors=cyan]{g}{7,7.25,7.5}
+ %surimpression des axes
+ \DrawAxisGrids[Grads=false,Grid=false,Enlarge=2.5mm]{0,1,...,10}{0,2,...,16}
+\end{GraphTikz}
+\end{tcolorbox}
+
+\vspace*{5mm}
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5,halign=center]
+\begin{GraphTikz}%
+ [x=3.5cm,y=4cm,
+ Xmin=0,Xmax=3.5,Xgrid=pi/12,Xgrids=pi/24,
+ Ymin=-1.05,Ymax=1.05,Ygrid=0.2,Ygrids=0.05]
+ %préparation de la fenêtre
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm,Format=ntrig/nsqrt]%
+ {pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+ {0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+ %rajouter des valeurs
+ \AddXvalues{0.25,1.4,3.3}{\num{0.25},\num{1.4},\num{3.3}}
+ %fonction trigo (déf + tracé)
+ \DefineCurve[Name=ccos,Start=0,End=pi]<fcos>{cos(x)}
+ \DefineCurve[Name=csin,Start=0,End=pi]<fsin>{sin(x)}
+ %intégrale
+ \FindIntersections[Disp=false,Name=JKL]{ccos}{csin}
+ %\DefinirPts{FIN/pi/0}
+ \DrawIntegral%
+ [Bounds=node/abs,Type=fct/fct,Colors=cyan/cyan!50]%
+ {fsin(x)}[fcos(x)]%
+ {(JKL-1)}{pi}
+ %tracé des courbes
+ \DrawCurve[Color=red,Start=0,End=pi]{fcos(x)}
+ \DrawCurve[Color=olive,Start=0,End=pi]{fsin(x)}
+ %antécédent(s)
+ \DrawCounterimage[Color=blue/teal!50!black,Lines]{ccos}{-0.25}
+ \DrawCounterimage[Colors=red/magenta!50!black,Lines]{csin}{0.5}
+ \DrawCounterimage[Colors=orange/orange!50!black,Lines]{csin}{sqrt(2)/2}
+ \DrawCounterimage[Colors=green!50!black/green,Lines]{csin}{sqrt(3)/2}
+ %surimpression axes
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm,Format=ntrig/nsqrt]%
+ {pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+ {0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+\end{GraphTikz}
+\end{tcolorbox}
+
+\vfill
+
+\hfill{\footnotesize\textit{\ttfamily To my Dad.}}
+
+\vspace*{5mm}
+
+\pagebreak
+
+\phantomsection
+
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\vspace*{5mm}
+
+\hrule
+
+\vspace*{5mm}
+
+\pagebreak
+
+\section{Introduction}
+
+\subsection{Description and general ideas}
+
+With this modest package, far from the capabilities offered by the excellent packages \MontreCode{tkz-*}\footnote{for example tkz-base \url{https://ctan.org/pkg/tkz-base} and tkz- fct \url{https://ctan.org/pkg/tkz-fct}.} (by Alain Matthes) or \MontreCode{tzplot}\footnote{CTAN: \url{https://ctan.org/pkg/ tzplot}.} (by In-Sung Cho), it is possible to work on function graphs, in \TikZ\ language, in an \textit{intuitive} and \textit{explicit} way.
+
+\smallskip
+
+Concerning the overall operation:
+
+\smallskip
+
+\begin{itemize}
+ \item particular styles for the objects used have been defined, but they can be modified locally;
+ \item the name of the commands is in \textit{operational} form, so that the construction of the graphic elements has an almost \textit{algorithmic} form.
+\end{itemize}
+
+\subsection{Overall operation}
+
+To schematize, it \textit{is enough}:
+
+\smallskip
+
+\begin{itemize}
+ \item to declare the parameters of the graphics window (\textbf{units in cm !});
+ \item to display grid/axes/graduations;
+ \item to declare functions or interpolation curves;
+ \item to possibly declare particular points;
+ \item to place a point scatter.
+\end{itemize}
+
+\smallskip
+
+It will then be possible:
+
+\begin{itemize}
+ \item to draw curves;
+ \item to graphically determine images or backgrounds;
+ \item to add elements of derivation (tangents) or integration (domain);
+ \item to draw a linear fit line or the curve of another fit.
+\end{itemize}
+
+\subsection{Packages used, and package options}
+
+The package uses:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{tikz}, with the libraries \MontreCode{calc,intersections,patterns,patterns.meta,bbox};
+ \item \MontreCode{simplekv}, \MontreCode{xintexpr}, \MontreCode{xstring}, \MontreCode{listofitems};
+ \item \MontreCode{xint-regression}\footnote{CTAN: \url{https://ctan.org/pkg/xint-regression}.} (for regressions, switchable via \MontreCode{[noxintreg]}).
+\end{itemize}
+
+\smallskip
+
+The package also loads \MontreCode{siunitx} with the classic options, but it is possible not to load it using the \MontreCode{[nosiunitx]} option.
+
+\smallskip
+
+The package also loads the \TikZ\ \MontreCode{babel} library, but it is possible not to load it using the \MontreCode{[notikzbabel]} option.
+
+\smallskip
+
+The different options are obviously cumulative.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%loading by default, with french setup of siunitx
+\usepackage{tkz-grapheur}
+%loading by default, with normal setup of siunitx
+\usepackage[english]{tkz-grapheur}
+
+%loading without sinuitx, to be loaded manually
+\usepackage[nosiunitx]{tkz-grapheur}
+
+%loading without tikz.babel
+\usepackage[notikzbabel]{tkz-grapheur}
+\end{tcblisting}
+
+Also note that certain commands can use packages like \MontreCode{nicefrac}, which will therefore have to be loaded if necessary.
+
+\smallskip
+
+Concerning the \textit{calculations} and \textit{plots} part, the \MontreCode{xint} package takes care of it.
+
+\subsection{Warnings}
+
+It is possible, due to the (multiple) calculations carried out internally, that the compilation time may be a little \textit{long}.
+
+\smallskip
+
+The precision of the (determination) results seems to be around $10^{-4}$, which should normally guarantee \textit{satisfactory} plots and readings. It is still advisable to be cautious about the results obtained and those expected.
+
+\subsection{Introductory example}
+
+For example, we can start from the following example to \textit{illustrate} the flow of the commands for this package. The commands and syntax will be detailed in the following sections!
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\begin{GraphTikz}%
+ [x=7.5cm,y=7.5cm,Xmin=0,Xmax=1.001,Xgrid=0.1,Xgrids=0.02,
+ Ymin=0,Ymax=1.001,Ygrid=0.1,Ygrids=0.02]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]%
+ {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
+ {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
+ \DefineCurve[Name=cf,Start=0,End=1]<f>{x*exp(x-1)}
+ \DefineCurve[Name=delta,Start=0,End=1]<D>{x}
+ \DrawIntegral[Type=fct/fct]{f(x)}[D(x)]{0}{1}
+ \DrawCurve[Color=red]{f(x)}
+ \DrawCurve[Color=teal]{D(x)}
+ \DrawRanges[Colors=blue/cyan,Lines]{f}{0.8,0.9}
+ \DrawCounterimage[Colors=green!50!black/olive,Lines]{cf}{0.5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,text only}
+ \begin{GraphTikz}%
+ [x=7.5cm,y=7.5cm,Xmin=0,Xmax=1.001,Xgrid=0.1,Xgrids=0.02,
+ Ymin=0,Ymax=1.001,Ygrid=0.1,Ygrids=0.02]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]%
+ {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
+ {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
+ \DefineCurve[Name=cf,Start=0,End=1]<f>{x*exp(x-1)}
+ \DefineCurve[Name=delta,Start=0,End=1]<D>{x}
+ \DrawIntegral[Type=fct/fct]{f(x)}[D(x)]{0}{1}
+ \DrawCurve[Color=red]{f(x)}
+ \DrawCurve[Color=teal]{D(x)}
+ \DrawRanges[Colors=blue/cyan,Lines]{f}{0.8,0.9}
+ \DrawCounterimage[Colors=green!50!black/olive,Lines]{cf}{0.5}
+ \end{GraphTikz}
+\end{tcblisting}
+
+\newpage
+
+\section{Basic Styles and Environment Creation}
+
+\subsection{Basic Styles}
+
+The styles used for plots are given below.
+
+\smallskip
+
+For \textit{simplicity} purposes, only the color of the elements can be configured, but if the user wishes, he can redefine the proposed styles.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%parameters declared and stored (usable in the environment a posteriori)
+\tikzset{
+ Xmin/.store in=\pflxmin,Xmin/.default=-3,Xmin=-3,
+ Xmax/.store in=\pflxmax,Xmax/.default=3,Xmax=3,
+ Ymin/.store in=\pflymin,Ymin/.default=-3,Ymin=-3,
+ Ymax/.store in=\pflymax,Ymax/.default=3,Ymax=3,
+ Origx/.store in=\pflOx,Origx/.default=0,Origx=0,
+ Origy/.store in=\pflOy,Origy/.default=0,Origy=0,
+ Xgrid/.store in=\pflgrillex,Xgrid/.default=1,Xgrid=1,
+ Xgrids/.store in=\pflgrillexs,Xgrids/.default=0.5,Xgrids=0.5,
+ Ygrid/.store in=\pflgrilley,Ygrid/.default=1,Ygrid=1,
+ Ygrids/.store in=\pflgrilleys,Ygrids/.default=0.5,Ygrids=0.5
+}
+\end{tcblisting}
+
+We therefore find:
+
+\smallskip
+
+\begin{itemize}
+ \item the origin of the mark (\MontreCode{Origx}/\MontreCode{Origy});
+ \item the extreme values of the axes (\MontreCode{Xmin}/\MontreCode{Xmax}/\MontreCode{Ymin}/\MontreCode{Ymax});
+ \item the parameters of the main and secondary grids (\MontreCode{Xgrid}/\MontreCode{Xgrids}/\MontreCode{Ygrid}/\MontreCode{Ygrids}).
+\end{itemize}
+
+\smallskip
+
+Concerning the styles of \textit{objects}, they are given below.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\tikzset{tkzgrphnode/.style={}}
+\tikzset{tkzgrphpoint/.style={line width=0.95pt}}
+\tikzset{tkzgrphpointc/.style={radius=1.75pt}}
+\tikzset{tkzgrphscatter/.style={radius=1.75pt}}
+\tikzset{tkzgrphframe/.style={line width=0.8pt,gray}}
+\tikzset{tkzgrphcurve/.style={line width=1.05pt}}
+\tikzset{tkzgrphline/.style={line width=0.8pt}}
+\tikzset{tkzgrpharrowl/.style={<-,>=latex}}
+\tikzset{tkzgrpharrowr/.style={->,>=latex}}
+\tikzset{tkzgrpharrowlr/.style={<->,>=latex}}
+\tikzset{tkzgrphcounterimage/.style={line width=0.9pt,densely dashed}}
+\tikzset{tkzgrphrange/.style={line width=0.9pt,densely dashed,->,>=latex}}
+\tikzset{tkzgrphgridp/.style={thin,lightgray}}
+\tikzset{tkzgrphgrids/.style={very thin,lightgray}}
+\tikzset{tkzgrphaxes/.style={line width=0.8pt,->,>=latex}}
+\end{tcblisting}
+
+The idea is therefore to be able to redefine styles globally or locally, and possibly add elements, using \mintinline{latex}|mystyle/.append style={...}|.
+
+\subsection{Creating the environment}\label{creaenvt}
+
+The proposed environment is based on \TikZ, so that any \textit{classic} command linked to \TikZ\ can be used alongside the package commands!
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\begin{GraphTikz}[tikz options]<keys>
+ %code(s)
+\end{GraphTikz}
+\end{tcblisting}
+
+The \MontreCode{[tikz options]} are the \textit{classic} options that can be passed to a \TikZ\ environment, as well as the \textsf{axes/grids/window} keys presented previously.
+
+\smallskip
+
+The specific (and optional) \MontreCode{<keys>} are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{ThickGrad}: size of the axis graduations (\MontreCode{3pt} for 3pt \textit{above} and 3pt \textit{below});
+ \item \MontreCode{Frame}: boolean (\MontreCode{false} by default) to display a frame which delimits the graphic window (excluding possible graduations).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}
+ [x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrid=20,Xgrids=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrid=25,Ygrids=5]
+ <Frame>
+\end{GraphTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ <Frame>
+\end{GraphTikz}
+\end{tcblisting}
+
+It will obviously be more meaningful with the added graphic elements!
+
+\pagebreak
+
+\subsection{Grids and axes}\label{creaaxesgr}
+
+The first command \textit{useful} will allow you to create the grids, axes and graduations.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawAxisGrids[keys]{gradX}{gradY}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Grid}: boolean (\MontreCode{true} by default) to display the grids (for a single grid, simply set the identical parameters for \MontreCode{Xgrid}/\MontreCode{Xgrids} or \MontreCode {Ygrid}/\MontreCode{Ygrids});
+ \item \MontreCode{Enlarge}: addition at the end of the axes (\MontreCode{0} by default);
+ \item \MontreCode{Grads}: boolean (\MontreCode{true} by default) for graduations;
+ \item \MontreCode{Font}: global font for graduations {\MontreCode{empty} by default};
+ \item \MontreCode{Format}: special formatting (see below) of the axis values.
+\end{itemize}
+
+\smallskip
+
+Concerning the \MontreCode{Format} key, it allows you to specify a specific setting for the axis values.
+
+\smallskip
+
+It can be given in the form \MontreCode{fmt} for combined formatting, or in the form \MontreCode{fmtX/fmtY} to differentiate the formatting.
+
+\smallskip
+
+The possible options are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{num}: format with \textsf{siunitx};
+ \item \MontreCode{year}: format in year;
+ \item \MontreCode{frac}: format as fraction \textsf{frac};
+ \item \MontreCode{dfrac}: format as fraction \textsf{dfrac};
+ \item \MontreCode{nfrac}: format as fraction \textsf{nicefrac};\hfill (to load!)
+ \item \MontreCode{trig}: format in trig with \textsf{frac};
+ \item \MontreCode{dtrig}: format in trig with \textsf{dfrac};
+ \item \MontreCode{ntrig}: format in trig with \textsf{nfrac};
+ \item \MontreCode{sqrt}: format in root with \textsf{frac};
+ \item \MontreCode{dsqrt}: format in root with \textsf{dfrac};
+ \item \MontreCode{nsqrt}: format in root with \textsf{nicefrac}.
+\end{itemize}
+
+\smallskip
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}
+ [x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrid=20,Xgrids=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrid=25,Ygrids=5]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{0,10,...,160}{250,275,...,400}
+\end{GraphTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+\end{GraphTikz}
+\end{tcblisting}
+
+Note that there are the Boolean keys \MontreCode{[Behind]} (without the graduations) and \MontreCode{[Above]} (without the grid) to display the axes in \textit{under/over}-printing mode in the case of integrals for example.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=2.75cm,y=3cm,
+ Xmin=0,Xmax=3.5,Xgrid=pi/12,Xgrids=pi/24,
+ Ymin=-1.05,Ymax=1.05,Ygrid=0.2,Ygrids=0.05]
+ \DrawAxisGrids[Enlarge=2.5mm,Format=dtrig/nsqrt,Font=\footnotesize]%
+ {pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+ {0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+\end{GraphTikz}
+\end{tcblisting}
+
+In the case where the formatting does not give satisfactory result(s), it is possible to use a generic command for placing the graduations.
+
+\subsection{Adding values manually}\label{additionvals}
+
+It is also possible to use a specific command to place values on the axes, independently of an \textit{automated} formatting system.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+in the environment
+\AddXvalues[keys]{grads}{formatted values}
+\AddYvalues[keys]{grads}{formatted values}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Font}: global font for graduations {\MontreCode{empty} by default};
+ \item \MontreCode{Lines}: boolean to add the tick marks {\MontreCode{true} by default}.
+\end{itemize}
+
+\smallskip
+
+The mandatory arguments correspond to the x-coordinates (in \TikZ\ language) and to the labels (in \LaTeX\ language) of the graduations.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=2.75cm,y=3cm,
+ Xmin=0,Xmax=3.5,Xgrid=pi/12,Xgrids=pi/24,
+ Ymin=-1.05,Ymax=1.05,Ygrid=0.2,Ygrids=0.05]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{}{}
+ \AddXvalues
+ {0.15,0.6,pi/2,2.8284}
+ {\num{0.15},$\frac35$,$\displaystyle\frac{\pi}{2}$,$\sqrt{8}$}
+ \AddYvalues
+ {-1,0.175,0.3,sqrt(3)/2}
+ {\num{-1},\num{0.175},$\nicefrac{3}{10}$,$\frac{\sqrt{3}}{2}$}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\section{Specific definition commands}
+
+\subsection{Draw a line}\label{tracstraight}
+
+The idea is to propose a command to draw a line (or an asymptote), from:
+
+\begin{itemize}
+ \item of two points (or nodes);
+ \item of a point (or node) and the slope.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawLine[keys]{point or node}{point or node or slope}
+\DrawAsymptote[keys]{x value}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Name}: possible name of the plot (for reuse);
+ \item \MontreCode{Slope}: boolean to specify that the slope is used (\MontreCode{false} by default);
+ \item \MontreCode{Start}: start of the plot (\MontreCode{\textbackslash pflxmin} by default);
+ \item \MontreCode{End}: end of the plot (\MontreCode{\textbackslash pflxmax} by default);
+ \item \MontreCode{Color}: color of the trace (\MontreCode{black} by default).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+ \DefinePts[Mark,Color=gray]{A/-4/3,B/2/0,C/0/-1}
+ \DrawLine[Color=red]{(-2,-1)}{(2,4)}
+ \DrawLine[Color=blue,Start=-5,End=3]{(A)}{(B)}
+ \DrawLine[Color=olive,Slope]{(C)}{0.25}
+ \DrawAsymptote[Color=brown]{-6}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Define a function, draw the curve of a function}\label{deftracfct}
+
+The idea is to define a function, for later reuse. This command \textit{creates} the function, without tracing it, because in certain cases elements will have to be traced beforehand.
+
+\smallskip
+
+There is also a command to plot the curve of a previously defined function.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DefineCurve[keys]<fct name>{xint formula}
+\DrawCurve[keys]{xint formula}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} for definition or tracing are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Start}: lower bound of the definition set (\MontreCode{\textbackslash pflxmin} by default);
+ \item \MontreCode{End}: lower bound of the definition set (\MontreCode{\textbackslash pflxmax} by default);
+ \item \MontreCode{Name}: name of the curve (important for the rest!);
+ \item \MontreCode{Color}: color of the trace (\MontreCode{black} by default);
+ \item \MontreCode{Step}: plot step (it is determined \textit{automatically} at the start but can be modified);
+ \item \MontreCode{Trace}: boolean to also trace the curve (\MontreCode{false} by default).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+ %definition of the function + drawing of the curve
+ \DefineCurve[Name=cf,Start=5,End=19]<f>{-2*x+3+24*log(2*x)}
+ \DrawCurve[Color=red,Start=5,End=19]{f(x)}
+ %or in a single command if "sufficient"
+ %\DefineCurve[Name=cf,Start=5,End=19,Trace]<f>{-2*x+3+24*log(2*x)}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Define/draw an interpolation curve (simple)}\label{deftracinterpo}
+
+It is also possible to define a curve via support points, therefore a simple interpolation curve.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DefineInterpoCurve[keys]{list of support points}
+\DrawInterpoCurve[keys]{list of support points}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} for definition or tracing are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Name}: name of the interpolation curve (important for the rest!);
+ \item \MontreCode{Color}: color of the trace (\MontreCode{black} by default);
+ \item \MontreCode{Tension}: setting the \textit{tension} of the interpolation plot (\MontreCode{0.5} by default);
+ \item \MontreCode{Trace}: boolean to also trace the curve (\MontreCode{false} by default).
+\end{itemize}
+
+The mandatory argument allows you to specify the list of support points in the form \MontreCode{(x1,y1)(x2,y2)...}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ %simple interpolation curves (with diff tension)
+ \DefineInterpoCurve[Name=interpotest,Color=blue,Trace]%
+ {(-6,4)(-2,-2)(3,3.5)}
+ \DefineInterpoCurve[Name=interpotest,Color=red,Trace,Tension=1]%
+ {(-6,4)(-2,-2)(3,3.5)}
+\end{GraphTikz}
+\end{tcblisting}
+
+\newpage
+
+\subsection{Define/draw an interpolation curve (Hermite)}\label{deftracfctspline}
+
+It is also possible to define a curve via support points, therefore an interpolation curve with derivative control.
+
+\smallskip
+
+Some operations require different techniques depending on the type of function used, a \textsf{Boolean} key \MontreCode{Spline} will allow the code to adapt its calculations depending on the object used.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DefineSplineCurve[keys]{list of support points}[\macronomspline]
+\DrawSplineCurve[keys]{list of support points}[\macronomspline]
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} for definition or tracing are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Name}: name of the interpolation curve (important for the rest!);
+ \item \MontreCode{Coeffs}: modify (see the \textsf{ProfLycee}\footnote{CTAN documentation: \url{https://ctan.org/pkg/proflycee}} the \textit{coefficients} of the spline;
+ \item \MontreCode{Color}: color of the trace (\MontreCode{black} by default);
+ \item \MontreCode{Trace}: boolean to also trace the curve (\MontreCode{false} by default).
+\end{itemize}
+
+The mandatory argument allows you to specify the list of support points in the form \MontreCode{x1/y1/f'1§x2/y2/f'2§...} with:
+
+\begin{itemize}
+ \item \MontreCode{xi/yi} the coordinates of the point;
+ \item \MontreCode{f'i} the derivative at the support point.
+\end{itemize}
+
+\smallskip
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ %definition of the list of spline support points
+ \def\LISTETEST{-6/4/-2§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}
+ %definition and plot of the cubic spline
+ \DefineSplineCurve[Name=splinetest,Trace,Color=olive]{\LISTETEST}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Define points as nodes}\label{defpts}
+
+The second idea is to work with \TikZ nodes, which could be useful for tangent plots, representations of integrals$\ldots$
+
+\smallskip
+
+It is also possible to define nodes for \textit{image} points.
+
+\smallskip
+
+Certain commands (explained later) allow you to determine particular points of curves in the form of nodes, so it seems interesting to be able to define them directly.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%by coordinates
+\DefinePts[keys]{Name1/x1/y1,Name2/x2/y2,...}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Mark}: boolean to mark points (\MontreCode{false} by default);
+ \item \MontreCode{Color}: color of the points, if \MontreCode{Mark=true} (\MontreCode{black} by default).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%as image
+\DefineRange[keys]{object}{abscissa}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Name}: node name (\MontreCode{empty} by default);
+ \item \MontreCode{Spline}: boolean to specify that a spline is used (\MontreCode{false} by default).
+\end{itemize}
+
+The first mandatory argument is the \textit{object} considered (name of the curve for the spline, function otherwise); the second is the abscissa of the point considered.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+ %definition of the function + drawing of the curve
+ \DefineFunction[Name=cf,Start=5,End=19,Trace,Color=red]<f>{-2*x+3+24*log(2*x)}
+ %manual nodes
+ \DefinePts[Mark,Color=brown]{A/7/42,B/16/49}
+ %imagenode
+ \DefineRange[Name=IMGf]{f}{14}
+ \MarkPts*[Style=x,Color=blue]{(IMGf)} %see next section ;-)
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Mark Points}\label{markpts}
+
+The idea is to offer something to score points with a particular style.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\MarkPts(*)[keys]<font>{list}
+\end{tcblisting}
+
+The \textit{starred} version scores the points without the \textit{names}, while the \textit{unstarred} version displays them:
+
+\begin{itemize}
+ \item in the case of the \textit{starred} version, the list should be given in the form \MontreCode{(ptA),(ptB),...};
+ \item otherwise, the list should be given in the form \MontreCode{(ptA)/poslabelA/labelA,...}.
+\end{itemize}
+
+\smallskip
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Color}: color (\MontreCode{black} by default);
+ \item \MontreCode{Style}: style of marks (\MontreCode{o} by default).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}[x=1.5cm,y=1.5cm,Ymin=-2]
+ \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+ \DefinePts{A/1.75,-1.25}\MarkPts[Color=pink]{(A)/below/A} %round (default)
+ \MarkPts[Color=teal]{(1,1)/below/M}
+ \MarkPts[Color=red,Style=x]{(1.25,1)/below/$A$} %cross
+ \MarkPts[Color=orange,Style=+]<\small\sffamily>{(1.5,1)/below/K} %plus
+ \MarkPts[Color=blue,Style=c]{(1.75,1)/below/P} %square
+ \MarkPts[Color=gray,Style=d]{(2,1)/below/P} %diamond
+ \MarkPts*[Color=orange/yellow]{(2,2),(2.5,2.25)} %two-tone round
+ \MarkPts*[Style=+,Color=red]{(1,2)}
+ \MarkPts*[Style=x,Color=blue]{(2.25,1)}
+ \MarkPts*[Style=c,Color=magenta]{(-2,-1)}
+ \MarkPts[Color=red,Style=x]{(-1,1)/below/$A$,(-2,2)/below left/$B$}
+\end{GraphTikz}
+\end{tcblisting}
+
+Note that it is also possible to modify the size of the \MontreCode{o/x/+/c} marks via the \MontreCode{[keys]}:
+
+\begin{itemize}
+ \item \MontreCode{Sizex=...} (\MontreCode{2pt} by default) for points \textit{cross};
+ \item \MontreCode{Sizeo=...} (\MontreCode{1.75pt} by default) for the points \textit{circle};
+ \item \MontreCode{Sizec=...} (\MontreCode{2pt} by default) for the \textit{square} points.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}[x=1cm,y=1cm,Xmin=0,Ymin=0]
+ \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+ \MarkPts[Color=red,Style=x,Size=3.5pt]{(1.25,1.25)/below/$A$}
+ \MarkPts[Color=teal,Size=2.5pt]{(2,2)/right/$A$}
+ \MarkPts*[Color=orange,Style=c,Size=4pt]{(0.5,2.5)}
+\end{GraphTikz}
+\end{tcblisting}
+
+\subsection{Retrieve node coordinates}\label{recupcoordo}
+
+It is also possible, with a view to reusing coordinates, to recover the coordinates of a node (defined or determined).
+
+\smallskip
+
+The calculations are carried out by floating according to the (re)calculated units, the values are therefore approximated !
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\GetXcoord{node}[\macrox]
+\GetYcoord{node}[\macroy]
+\GetXYcoord{node}[\macrox][\macroy]
+\end{tcblisting}
+
+\subsection{Place text}\label{placetxt}
+
+Note that a text placement command is available.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawTxt[keys]{(node or coordinates)}{text}
+\end{tcblisting}
+
+The available \MontreCode{[keys]} are:
+
+\begin{itemize}
+ \item \MontreCode{Font=...} (\MontreCode{\textbackslash normalsize\textbackslash normalfont} by default) for the font;
+ \item \MontreCode{Color=...} (\MontreCode{black} by default) for the color;
+ \item \MontreCode{Position=...} (\MontreCode{empty} by default) for the position of the text relative to the coordinates.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}[x=1cm,y=1cm,Xmin=0,Xmax=5,Ymin=0,Ymax=1]
+ \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+ \DrawTxt[Color=red,Font=\LARGE,Position=right]{(1.5,0.5)}{curve $C_1$}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Specific commands for using curves}
+
+\subsection{Image placement}\label{images}
+
+It is possible to place points (images) on a curve, with possible construction lines.
+
+The function/curve used must have been declared previously for this command to work.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawRanges[keys]{function or curve}{list of abscissa}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Lines}: boolean to display construction traits (\MontreCode{false} by default);
+ \item \MontreCode{Colors}: color of the points/lines, in the form \MontreCode{Couleurs} or \MontreCode{ColPoint/ColLines};
+ \item \MontreCode{Spline}: boolean to specify that the curve used is defined as a \textsf{spline} (\MontreCode{false} by default).
+\end{itemize}
+
+\smallskip
+
+The first mandatory argument allows you to specify:
+
+\smallskip
+
+\begin{itemize}
+ \item the name of the curve in the case \MontreCode{Spline=true};
+ \item the name of the function otherwise.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+ %definition of the function + drawing of the curve
+ \DefineCurve[Name=cf,Start=5,End=19,Trace,Color=red]<f>{-2*x+3+24*log(2*x)}
+ %images
+ \DrawRanges[Lines,Colors=teal/blue]{f}{6,7,8,9,10}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Antecedent determination}\label{defanteced}
+
+It is possible to graphically determine the antecedents of a given reality.
+
+The function/curve used must have been declared previously for this command to work.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\FindCounterimage[keys]{curve}{k}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Name}: base of the name of the \textbf{nodes} intersection (\MontreCode{S} by default, which will give \textsf{S-1}, \textsf{S-2}, etc);
+ \item \MontreCode{Disp}: boolean to display the points (\MontreCode{true} by default);
+ \item \MontreCode{Color}: color of the points (\MontreCode{black} by default);
+ \item \MontreCode{DispLine}: boolean to display the horizontal line (\MontreCode{false} by default).
+\end{itemize}
+
+\smallskip
+
+The first mandatory argument allows you to specify the \textbf{name} of the curve.
+
+\smallskip
+
+The second mandatory argument allows you to specify the value to reach.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+ %definition of the function + drawing of the curve
+ \DefineCurve[Name=cf,Start=5,End=19,Trace,Color=red]<f>{-2*x+3+24*log(2*x)}
+ %history
+ \FindCounterimage[Color=teal,DispLine,Disp]{cf}{53}
+ %the two antecedents are at nodes (S-1) and (S-2)
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Antecedent construction}\label{tracanteced}
+
+It is possible to graphically construct the antecedents.
+
+The function/curve used must have been declared previously for this command to work.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawCounterimage[keys]{curve}{k}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Colors}: color of the points/lines, in the form \MontreCode{Color} or \MontreCode{ColPoint/ColLines};
+ \item \MontreCode{Name}: name \textit{possible} for the intersection points linked to the antecedents (\MontreCode{empty} by default);
+ \item \MontreCode{Lines}: boolean to display construction traits (\MontreCode{false} by default).
+\end{itemize}
+
+\smallskip
+
+The first mandatory argument allows you to specify the \textbf{name} of the curve.
+
+\smallskip
+
+The second mandatory argument allows you to specify the value to reach.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+ %definition of the function + drawing of the curve
+ \DefineCurve[Name=cf,Start=5,End=19,Trace,Color=red]<f>{-2*x+3+24*log(2*x)}
+ %history
+ \DrawCounterimage[Colors=teal/cyan,Lines,Name=PO]{cf}{53}
+ \GetXcoord{(PO-1)}[\premsol]
+ \GetXcoord{(PO-2)}[\deuxsol]
+\end{GraphTikz}
+
+Graphically, the antecedents of 53 are (approximately):
+
+\begin{itemize}
+ \item \num{\premsol}
+ \item \num{\deuxsol}
+\end{itemize}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Intersections of two curves}\label{intersect}
+
+It is also possible to determine (in the form of nodes) the possible points of intersection of two previously defined curves.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\FindIntersections[keys]{curve1}{curve2}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Name}: base of the name of the \textbf{nodes} intersection (\MontreCode{S} by default, which will give \textsf{S-1}, \textsf{S-2}, etc);
+ \item \MontreCode{Disp}: boolean to display the points (\MontreCode{true} by default);
+ \item \MontreCode{Color}: color of the points (\MontreCode{black} by default).
+\end{itemize}
+
+\smallskip
+
+The first mandatory argument allows you to specify the \textbf{name} of the first curve.
+
+\smallskip
+
+The first mandatory argument allows you to specify the \textbf{name} of the second curve.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+ \DefineCurve[Name=cf,Start=5,End=19,Trace,Color=red]<f>{-2*x+3+24*log(2*x)}
+ \DefineCurve[Name=cg,Start=5,End=19,Trace,Color=blue]<g>{0.25*(x-12)^2+46}
+ %intersections, named (TT-1) and (TT-2)
+ \FindIntersections[Name=TT,Color=darkgray,Display,Lines]{cf}{cg}
+ %recovery of intersection points
+ \GetXYcoord{(TT-1)}[\alphaA][\betaA]
+ \GetXYcoord{(TT-2)}[\alphaB][\betaB]
+\end{GraphTikz}\\
+The solutions of $f(x)=g(x)$ are $\alpha \approx \num{\alphaA}$ and
+$\beta \approx \num{\alphaB}$.\\
+The points of intersection of the curves of $f$ and $g$ are therefore
+$(\RoundNb[2]{\alphaA};\RoundNb[2]{\betaA})$ and
+$(\RoundNb[2]{\alphaB};\RoundNb[2]{\betaB})$.
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Extrema}\label{maximum}\label{minimum}
+
+The idea (still \textit{experimental}) is to offer commands to extract the extrema of a curve defined by the package.
+
+The command creates the corresponding node, and it is therefore possible to retrieve its coordinates for later use.
+
+\smallskip
+
+It is possible, by specifying it, to work on the different curves managed by the package (function, interpolation, spline).
+
+For singular curves, it is possible that the results are not quite those expected\ldots
+
+\smallskip
+
+{\small\faBomb} For the moment, the \textit{limitations} are:
+
+\begin{itemize}
+ \item no management of multiple extrema (only the first will be processed)\ldots
+ \item no management of extrema at the boundaries of the route\ldots
+ \item no automatic recovery of curve definition parameters\ldots
+ \item compilation time may be longer\ldots
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\FindMax[keys]{object}[node created]
+\FindMin[keys]{object}[node created]
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Method}: method, among \MontreCode{function/interpo/spline} for calculations (\MontreCode{function} by default);
+ \item \MontreCode{Start}: start of the plot (\MontreCode{\textbackslash pflxmin} by default);
+ \item \MontreCode{End}: end of the plot (\MontreCode{\textbackslash pflxmax} by default);
+ \item \MontreCode{Step}: not in the plot if \MontreCode{function} (it is determined \textit{automatically} at the start but can be modified);
+ \item \MontreCode{Coeffs}: modify the \textit{coefficients} of the spline if \MontreCode{spline};
+ \item \MontreCode{Tension}: setting the \textit{tension} of the interpolation plot if \MontreCode{interpo}(\MontreCode{0.5} by default).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}[x=1cm,y=1cm,Xmin=-1,Xmax=5,Ymin=-1,Ymax=3]
+ \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+ \DefineCurve[Name=cf,Start=0.35,End=4.2,Trace]%
+ <f>{0.6*cos(4.5*(x-4)+2.1)-1.2*sin(x-4)+0.1*x+0.2}
+ \FindMax[Start=0.35,End=4.2]{f}[cf-max]
+ \FindMax[Start=3,End=4]{f}[cf-maxlocal]
+ \FindMin[Start=1,End=2]{f}[cf-minlocal]
+ \MarkPts*[Color=red,Lines]{(cf-max)}
+ \MarkPts*[Color=blue,Lines]{(cf-maxlocal)}
+ \MarkPts*[Color=olive,Lines]{(cf-minlocal)}
+ \GetXYcoord{(cf-max)}[\MyMaxX][\MyMaxY]
+\end{GraphTikz}\\
+The maximum is $M\approx\RoundNb{\MyMaxY}$, reached in $x\approx\RoundNb{\MyMaxX}$
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}[x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineInterpoCurve[Name=interpotest,Color=red,Trace,Tension=1]%
+ {(-6,4)(-2,-2)(3,3.5)}
+ \FindMin[Method=interpo,Tension=1]{(-6,4)(-2,-2)(3,3.5)}[interpo-min]
+ \MarkPts*[Color=blue]{(interpo-min)}
+ \GetXYcoord{(interpo-min)}[\MinInterpoX][\MinInterpoY]
+\end{GraphTikz}\\
+The minimum is $M\approx\RoundNb[3]{\MinInterpoY}$, reached at $x\approx\RoundNb[3]{\MinInterpoX}$
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=1.2cm,y=1.6cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=3,Ygrid=0.5,Ygrids=0.25]
+ \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+ \def\LISTETEST{-6/2/0§-1/-2/0§2/1/0§3.5/0/-1}
+ \DefineSplineCurve[Name=splinetest,Trace]{\LISTETEST}
+ \FindMin[Method=spline]{\LISTETEST}[spline-min]
+ \MarkPts*[Color=red]{(spline-min)}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Integrals (improved version)}\label{integr}
+
+We can also work with integrals.
+
+In this case it is preferable to highlight the domain \textbf{before} the plots, to avoid overprinting in relation to the curves/points.
+
+\smallskip
+
+It is possible to :
+
+\begin{itemize}
+ \item represent an integral \textbf{under} a defined curve;
+ \item represent an integral \textbf{between} two curves;
+ \item the integration limits can be x-coordinates and/or nodes.
+\end{itemize}
+
+\smallskip
+
+{\small\faBomb} Given the differences in processing between formula curves, simple interpolation curves or cubic interpolation curves, the arguments and keys may differ depending on the configuration!
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawIntegral[keys]<specific options>{object1}[object2]{A}{B}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} for definition or tracing are:
+
+\begin{itemize}
+ \item \MontreCode{Colors} =: colors of the filling, in the form \MontreCode{Col} or \MontreCode{ColBorder/ColBg} (\MontreCode{gray} by default);
+ \item \MontreCode{Style}: type of filling, among \MontreCode{fill}/\MontreCode{hatch} (\MontreCode{fill} by default);
+ \item \MontreCode{Opacity}: opacity (\MontreCode{0.5} by default) of the filling;
+ \item \MontreCode{Hatch}: style (\MontreCode{north west lines} by default) of the hatch filling;
+ \item \MontreCode{Type}: type of integral among
+ \begin{itemize}
+ \item \MontreCode{fct} (default) for an integral under a curve defined by a formula;
+ \item \MontreCode{spl} for an integral under a curve defined by a cubic spline;
+ \item \MontreCode{itp} for an integral under a curve defined by interpolation ;
+ \item \MontreCode{fct/fct} for an integral between two curves defined by a formula;
+ \item \MontreCode{fct/spl} for an integral between a curve (above) defined by a formula and a curve (below) defined by a spline cubic;
+ \item etc.
+ \end{itemize}
+ \item \MontreCode{Step}: steps (calculated by default otherwise) for the plot;
+ \item \MontreCode{Junction}: junction of segments (\MontreCode{bevel} by default);
+ \item \MontreCode{Bounds}: type of terminals among:
+ \begin{itemize}
+ \item \MontreCode{abs} for the limits given by the abscissa;
+ \item \MontreCode{nodes} for the limits given by the nodes;
+ \item \MontreCode{abs/node} for the limits given by abscissa and node;
+ \item \MontreCode{node/abs} for the limits given by node and abscissa;
+ \end{itemize}
+ \item \MontreCode{Border}: boolean (\MontreCode{true} by default) to display the side lines,%
+ \item \MontreCode{SplineName}: macro (important!) of the spline generated previously for a higher version spline;
+ \item \MontreCode{SplineNameB}: macro (important!) of the spline generated previously for a lower version spline;
+ \item \MontreCode{InterpoName}: name (important!) of the interpolation curve generated previously, in higher version;
+ \item \MontreCode{InterpoBName}: name (important!) of the interpolation curve generated previously, in lower version;
+ \item \MontreCode{Tension}: Tension for the interpolation curve generated previously, in higher version;
+ \item \MontreCode{TensionB}: Tension of the interpolation curve generated previously, in lower version.
+\end{itemize}
+
+\smallskip
+
+The first required argument is the spline function or curve or list of interpolation points.
+
+\smallskip
+
+The next optional argument is the spline function or curve or list of interpolation points.
+
+\smallskip
+
+The last two mandatory arguments are the limits of the integral, given in a form consistent with the key \MontreCode{Bounds}.
+
+\pagebreak
+
+In the case of curves defined by \textit{points}, it is necessary to work on intervals on which the first curve is \textbf{above} the second.
+
+It will undoubtedly be interesting to work with \textit{intersections} in this case.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.6cm,y=0.06cm,
+ Xmin=0,Xmax=21,Xgrid=1,Xgrids=0.5,
+ Ymin=0,Ymax=155,Ygrid=10,Ygrids=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{}{}
+ \DefineCurve[Name=cf,Start=1,End=20,Color=red]<f>{80*x*exp(-0.2*x)}
+ \DrawIntegral
+ [Bounds=abs,Colors=blue/cyan!50]%
+ {f(x)}{3}{12}
+ \DrawCurve[Color=red,Start=1,End=20]{f(x)}
+ \DrawAxisGrids%
+ [Grid=false,Enlarge=2.5mm,Font=\small]{0,1,...,20}{0,10,...,150}
+\end{GraphTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=1.2cm,y=1.6cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=3,Ygrid=0.5,Ygrids=0.25]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{}{}
+ \def\LISTETEST{-6/2/0§-1/-2/0§2/1/0§3.5/0/-1}
+ \DefineSplineCurve[Name=splinetest]{\LISTETEST}
+ \DrawIntegral[Type=spl,Style=hatch,Colors=purple]{splinetest}{-5.75}{-4.75}
+ \DrawIntegral[Type=spl,Colors=blue]{splinetest}{-2}{-1}
+ \DrawIntegral[Type=spl,Colors=orange]{splinetest}{1}{3}
+ \DrawSplineCurve[Color=olive]{\LISTETEST}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]
+ {-7,-6,...,4}%
+ {-3,-2.5,...,3}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Tangents}\label{tgte}
+
+The idea of this command is to draw the tangent to a previously defined curve, specifying:
+
+\begin{itemize}
+ \item the point (abscissa or node) at which we wish to work;
+ \item possibly the direction (in the case of a discontinuity or a terminal);
+ \item possibly the step ($h$) of the calculation;
+ \item the \textit{lateral spacings} to draw the tangent.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawTangent[keys]{function or curve}{point}<line options>
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} for definition or tracing are:
+
+\begin{itemize}
+ \item \MontreCode{Colors} =: colors of the plots, in the form \MontreCode{Col} or \MontreCode{ColLine/ColPoint} (\MontreCode{black} by default);
+ \item \MontreCode{OffsetL} =: left horizontal spacing to start the trace (\MontreCode{1} by default);
+ \item \MontreCode{OffsetR} =: left horizontal spacing to start the trace (\MontreCode{1} by default);
+ \item \MontreCode{DispPt}: boolean to display the support point (\MontreCode{false} by default);
+ \item \MontreCode{Spline}: boolean to specify that a spline is used (\MontreCode{false} by default);
+ \item \MontreCode{h}: delta $h$ used for calculations (\MontreCode{0.01} by default);
+ \item \MontreCode{Direction}: allows you to specify the \textit{direction} of the tangent, among \MontreCode{lr}/\MontreCode{l}/\MontreCode{r} (\MontreCode{lr} by default);
+ \item \MontreCode{Node}: boolean to specify that a node is used (\MontreCode{false} by default).
+\end{itemize}
+
+\smallskip
+
+The first required argument is the spline function or curve (if applicable).
+
+\smallskip
+
+The last mandatory argument is the work point (abscissa version or node following the key \MontreCode{Node}).
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+ \DefineCurve[Name=cf,Start=5,End=19,Color=red,Trace]<f>{-2*x+3+24*log(2*x)}
+ \FindCounterimage[Color=teal,Name=JKL,Disp=false]{cf}{53}
+ %tangent
+ \DrawTangent%
+ [Colors=cyan/gray,OffsetL=2.5,OffsetR=2.5,Node,DispPt]{f}{(JKL-1)}
+\end{GraphTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \def\LISTETEST{-6/4/-0.5§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}
+ \DefineSplineCurve[Name=splinetest,Trace,Color=olive]{\LISTETEST}
+ \DrawTangent[Colors=red,Spline,DispPt]{splinetest}{1}
+ \DrawTangent%
+ [Colors=blue,Spline,OffsetL=1.5,OffsetR=1.5,DispPt]{splinetest}{-3}%
+ <tkzgrpharrowlr>
+ \DrawTangent[Direction=l,Colors=orange,Spline,OffsetL=1.5,DispPt]{splinetest}{3}
+ \DrawTangent[Direction=r,Colors=purple,Spline,OffsetR=1.5,DispPt]{splinetest}{-6}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+%\section{Specific commands for density functions}
+%
+%\subsection{Normal distribution}\label{normal distribution}
+%
+%The idea is to provide something to work with standard deviation.
+%
+%\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+% %in the GraphiqueTikz environment
+% \DefineNormalDistribution[keys]<fct name>{mu}{sigma}
+% \TraceNormalDistribution[keys]{fct(x)}
+%\end{tcblisting}
+%
+%The optional \MontreCode{[keys]} available are:
+%
+%\smallskip
+%
+%\begin{itemize}
+% \item \MontreCode{Name}: name of the plot (\MontreCode{Gaussian} by default);
+% \item \MontreCode{Trace}: boolean to trace the curve (\MontreCode{false} by default);
+% \item \MontreCode{Couleur}: color of the trace, if requested (\MontreCode{black} by default);
+% \item \MontreCode{Debut}: lower bound of the definition set (\MontreCode{\textbackslash pflxmin} by default);
+% \item \MontreCode{End}: lower bound of the definition set (\MontreCode{\textbackslash pflxmax} by default);
+% \item \MontreCode{Pas}: plot step (it is determined \textit{automatically} at the start but can be modified).
+%\end{itemize}
+%
+%Note that the vertical axis must be adapted according to the parameters of the normal law.
+%
+%\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+% \begin{GraphTikz}%
+% [x=1.25cm,y=15cm,Origx=5,Xmin=5,Xmax=15,Ymin=0,Ymax=0.3,
+% Ygrid=0.1,Ygrids=0.05]
+% \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+% \DefineNormalDistribution[Name=Gaussian]<phi>{10}{1.5}
+% \TracerIntegral
+% [Terminals=abs, Colors=blue/cyan!50]%
+% {phi(x)}{7}{13}
+% \TraceNormalLaw[Color=purple,Start=5,End=15]{phi(x)}
+% \end{GraphTikz}
+%\end{tcblisting}
+%
+%\pagebreak
+%
+%\subsection{Chi-square law}\label{loikhideux}
+%
+%The idea is to provide something to work with normal laws.
+%
+%\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+% %in the GraphiqueTikz environment
+% \DefineKhiTwoLaw[keys]<fct name>{k}
+% \TraceLawKhiTwo[keys]{fct(x)}
+%\end{tcblisting}
+%
+%The optional \MontreCode{[keys]} available are:
+%
+%\smallskip
+%
+%\begin{itemize}
+% \item \MontreCode{Name}: name of the plot (\MontreCode{Gaussian} by default);
+% \item \MontreCode{Trace}: boolean to trace the curve (\MontreCode{false} by default);
+% \item \MontreCode{Couleur}: color of the trace, if requested (\MontreCode{black} by default);
+% \item \MontreCode{Debut}: lower bound of the definition set (\MontreCode{\textbackslash pflxmin} by default);
+% \item \MontreCode{End}: lower bound of the definition set (\MontreCode{\textbackslash pflxmax} by default);
+% \item \MontreCode{Pas}: plot step (it is determined \textit{automatically} at the start but can be modified).
+%\end{itemize}
+%
+%Note that the vertical axis must be adapted according to the parameter of the chi-square law.
+%
+%\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+% \begin{GraphTikz}[
+% x=1.5cm,y=7.5cm,
+% Xmin=0,Xmax=8,Xgrid=1,Xgrids=0.5,
+% Ymin=0,Ymax=0.5,Ygrid=0.1,Ygrids=0.05
+% ]
+% \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+% \DefineKhiTwoLaw[Color=red,Start=0.25,Trace]<phiA>{1}
+% \DefineKhiTwoLaw[Color=blue,Trace]<phiB>{2}
+% \DefineLawKhiDeux[Color=orange,Trace]<phiC>{3}
+% \DefineKhiTwoLaw[Color=purple,Trace]<phiD>{4}
+% \DefineKhiTwoLaw[Color=yellow,Trace]<phiE>{5}
+% \DefineKhiTwoLaw[Color=teal,Trace]<phiF>{6}
+% \end{GraphTikz}
+%\end{tcblisting}
+
+\pagebreak
+
+\section{Commands specific to two-variable statistics}
+
+\subsection{The point scatter}\label{scatter}
+
+In addition to commands linked to functions, it is also possible to represent double statistical series.
+
+\smallskip
+
+The following paragraph shows that adding a key allows you to add the linear adjustment line.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawScatter[keys]{ListX}{ListY}
+\end{tcblisting}
+
+The optional \MontreCode{[key]} is:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{ColorScatter}: color of the cloud points (\MontreCode{black} by default).
+\end{itemize}
+
+\smallskip
+
+The mandatory arguments allow you to specify:
+
+\smallskip
+
+\begin{itemize}
+ \item the list of x;
+ \item the list of y.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrid=20,Xgrids=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrid=25,Ygrids=5]
+ %window preparation
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{0,10,...,160}{250,275,...,400}
+ %A cloud of dots
+ \DrawScatter[Style=x,ColorScatter=red]{0,50,100,140}{275,290,315,350}
+\end{GraphTikz}
+\end{tcblisting}
+
+\subsection{The regression line}\label{reglin}
+
+The linear regression line (obtained by the least squares method) can easily be added, using the key \MontreCode{DrawLine}.
+
+\smallskip
+
+In this case, new keys are available:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{ColorLine}: color of the line (\MontreCode{black} by default);
+ \item \MontreCode{Rounds}: precision of coefficients (\MontreCode{empty} by default);
+ \item \MontreCode{Start}: initial abscissa of the plot (\MontreCode{\textbackslash pflxmin} by default);
+ \item \MontreCode{End}: terminal abscissa of the plot (\MontreCode{\textbackslash pflxmax} by default);
+ \item \MontreCode{Name}: name of the line, for later use (\MontreCode{reglin} by default).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrid=20,Xgrids=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrid=25,Ygrids=5]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{0,10,...,160}{250,275,...,400}
+ %cloud and right
+ \DrawScatter%
+ [ColorScatter=red,ColorLine=brown,DrawLine]%
+ {0,50,100,140}{275,290,315,350}
+ %picture
+ \DrawRanges[Colors=cyan/magenta,Lines]{d}{120}
+ %history
+ \DrawCounterimage[Style=x,Colors=blue/green!50!black,Lines]{reglin}{300}
+\end{GraphTikz}
+\end{tcblisting}
+
+\subsection{Other regressions}\label{regressions}
+
+In partnership with the \MontreCode{xint-regression} package, loaded by the package (but \textit{can be deactivated} via the \MontreCode{[noxintreg]} option), it is possible to work on other types of regression:
+
+\begin{itemize}
+ \item linear \fbox{$ax+b$};
+ \item quadratic \fbox{$ax^2+bx+c$};
+ \item cubic \fbox{$ax^3+bx^2+cx+d$};
+ \item power \fbox{$ax^b$};
+ \item exponential \fbox{$ab^x$} or \fbox{$e^{ax+b}$} or \fbox{$b e^{ax}$} or \fbox{$C + be^{ax} $};
+ \item logarithmic \fbox{$a+b\ln(x)$};
+ \item hyperbolic \fbox{$a+\displaystyle\frac{b}{x}$}.
+\end{itemize}
+
+The command, similar to that of defining a curve, is:
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\DrawRegression[keys]<name fct>{type}<rounded>{listex}{listey}
+\end{tcblisting}
+
+The \MontreCode{[keys]} available are, classically:
+
+\begin{itemize}
+ \item \MontreCode{Start}: lower bound of the definition set (\MontreCode{\textbackslash pflxmin} by default);
+ \item \MontreCode{End}: lower bound of the definition set (\MontreCode{\textbackslash pflxmax} by default);
+ \item \MontreCode{Name}: name of the curve (important for the rest!);
+ \item \MontreCode{Color}: color of the trace (\MontreCode{black} by default);
+ \item \MontreCode{Step}: plot step (it is determined \textit{automatically} at the start but can be modified).
+\end{itemize}
+
+\pagebreak
+
+The second argument, optional and between \MontreCode{<...>}, allows you to name the regression function.
+
+The third argument, mandatory and between \MontreCode{\{...\}} allows you to choose the type of regression, among:
+
+\begin{itemize}
+ \item \MontreCode{lin}: linear \fbox{$ax+b$};
+ \item \MontreCode{quad}: quadratic \fbox{$ax^2+bx+c$};
+ \item \MontreCode{cub}: cubic \fbox{$ax^3+bx^2+cx+d$};
+ \item \MontreCode{pow}: power \fbox{$ax^b$};
+ \item \MontreCode{expab}: exponential \fbox{$ab^x$}
+ \item \MontreCode{hyp}: hyperbolic \fbox{$a+\displaystyle\frac{b}{x}$};
+ \item \MontreCode{log}: logarithmic \fbox{$a+b\ln(x)$};
+ \item \MontreCode{exp}: exponential \fbox{$e^{ax+b}$};
+ \item \MontreCode{expalt}: exponential \fbox{$be^{ax}$};
+ \item \MontreCode{expoff=C}: exponential \fbox{$C + be^{ax}$}.
+\end{itemize}
+
+The fourth argument, optional and between \MontreCode{<...>}, allows you to specify the rounding(s) for the coefficients of the regression function.
+
+The last two arguments are the lists of values of X and Y.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\def\LISTEXX{0,50,100,140}\def\LISTEYY{275,290,315,350}%
+ListX := \LISTEXX\\
+ListY := \LISTEYY
+
+\begin{GraphTikz}
+ [x=0.05cm,y=0.04cm,Xmin=0,Xmax=160,Xgrid=20,Xgrids=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrid=25,Ygrids=5]
+ %window preparation
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\footnotesize]{auto}{auto}
+ %A cloud of dots
+ \DrawScatter[Style=o,ColorScatter=red]{\LISTEXX}{\LISTEYY}
+ %adjustment expoffset
+ \DrawRegression[Color=blue,Name=adjust]<adjust>{expoff=250}{\LISTEXX}{\LISTEYY}
+ %holdings
+ \DrawRanges[Colors=cyan/magenta,Lines]{adjust}{80}
+ \DrawCounterimage[Style=x,Colors=blue/green!50!black,Lines]{adjust}{325}
+\end{GraphTikz}
+
+\xintexpoffreg[offset=250,round=3/1]{\LISTEXX}{\LISTEYY}%
+We obtain $y=250+\num{\expregoffb}\text{e}^{\num{\expregoffa}x}$
+\end{tcblisting}
+
+\newpage
+
+\section{Auxiliary commands}
+
+\subsection{Intro}
+
+In addition to purely \textit{graphic} commands, some auxiliary commands are available:
+
+\begin{itemize}
+ \item a to format a number with a given precision;
+ \item one for working on random numbers, with constraints.
+\end{itemize}
+
+\subsection{Formatted rounding}\label{round number}
+
+The \MontreCode{\textbackslash RoundNb} command allows you to format, using the \MontreCode{siunitx} package, a number (or a calculation), with a given precision. This can be \textit{useful} for formatting results obtained using coordinate retrieval commands, for example.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\RoundNb[precision]{xint calculation}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\RoundNb{1/3}\\
+\RoundNb{16.1}\\
+\RoundNb[3]{log(10)}\\
+\end{tcblisting}
+
+\subsection{Random number under constraints}\label{nbalea}
+
+The idea of this second command is to be able to determine a random number:
+
+\begin{itemize}
+ \item integer or decimal;
+ \item under constraints (between two fixed values).
+\end{itemize}
+
+This can allow, for example, to work on curves with \textit{random} points, but respecting certain constraints.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\PickRandomNb(*)[precision (def 0)]{lower limit}{upper limit}[\macro]
+\end{tcblisting}
+
+The star version takes the constraints in strict form ($\text{lower bound} < \text{macro} < \text{upper bound}$) while the normal version takes the constraints in broad form ($\text{lower bound) } \leq \text{macro} \leq \text{upper bound}$).
+
+\smallskip
+
+Note that the \textit{terminals} can be existing \textit{macros}!
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%a number (2 digits after the decimal point) between 0.75 and 0.95
+%a number (2 digits after the decimal point) between 0.05 and 0.25
+%a number (2 decimal places) between 0.55 and \YrandMax
+%a number (2 decimal places) between \YrandMin and 0.45
+\PickRandomNb[2]{0.75}{0.95}[\YrandMax]%
+\PickRandomNb[2]{0.05}{0.25}[\YrandMin]%
+\PickRandomNb*[2]{0.55}{\YrandMax}[\YrandA]%
+\PickRandomNb*[2]{\YrandMin}{0.45}[\YrandB]%
+%verification
+\num{\YrandMax} \& \num{\YrandMin} \& \num{\YrandA} \& \num{\YrandB}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%a number (2 digits after the decimal point) between 0.75 and 0.95
+%a number (2 digits after the decimal point) between 0.05 and 0.25
+%a number (2 decimal places) between 0.55 and \YrandMax
+%a number (2 decimal places) between \YrandMin and 0.45
+\PickRandomNb[2]{0.75}{0.95}[\YrandMax]%
+\PickRandomNb[2]{0.05}{0.25}[\YrandMin]%
+\PickRandomNb*[2]{0.55}{\YrandMax}[\YrandA]%
+\PickRandomNb*[2]{\YrandMin}{0.45}[\YrandB]%
+%verification
+\num{\YrandMax} \& \num{\YrandMin} \& \num{\YrandA} \& \num{\YrandB}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%the curve is designed so that there are 3 antecedents
+\PickRandomNb[2]{0.75}{0.95}[\YrandMax]%
+\PickRandomNb[2]{0.05}{0.25}[\YrandMin]%
+\PickRandomNb*[2]{0.55}{\YrandMax}[\YrandA]%
+\PickRandomNb*[2]{\YrandMin}{0.45}[\YrandB]%
+
+\begin{GraphTikz}
+ [x=0.075cm,y=7.5cm,Xmin=0,Xmax=150,Xgrid=10,Xgrids=5,
+ Ymin=0,Ymax=1,Ygrid=0.1,Ygrids=0.05]
+ \DrawAxisGrids[Last,Enlarge=2.5mm]{auto}{auto}
+ \DefineInterpoCurve[Color=red,Trace,Name=functiontest,Tension=0.75]
+ {(0,\YrandA)(40,\YrandMin)(90,\YrandMax)(140,\YrandB)}
+ \FindCounterimage[Disp=false,Name=ANTECED]{functiontest}{0.5}
+ \DrawCounterimage[Colors=blue/teal,Lines]{functiontest}{0.5}
+ \GetXcoord{(ANTECED-1)}[\Aalpha]
+ \GetXcoord{(ANTECED-2)}[\Bbeta]
+ \GetXcoord
+ {(ANTECED-3)}[\Cgamma]
+\end{GraphTikz}
+
+The solutions of $f(x)=\num{0.5}$ are, by graphic reading:
+$\begin{cases}
+ \alpha \approx \RoundNb[0]{\Aalpha} \\
+ \beta \approx \RoundNb[0]{\Bbeta} \\
+ \gamma \approx \RoundNb[0]{\Cgamma}
+\end{cases}$.
+\end{tcblisting}
+
+\subsection{Monte-Carle method}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\SimulateMonteCarlo[keys]<function>}{number of points}[\nbptsmcok][\nbptsmcko]
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=10cm,y=10cm,Xmin=0,Xmax=1,Xgrid=0.1,Xgrids=0.05,
+ Ymin=0,Ymax=1,Ygrid=0.1,Ygrids=0.05]
+ \DrawAxisGrids[Enlarge=2.5mm,Last]{auto}{auto}
+ \DefineCurve[Trace,Color=teal,Step=0.001]<f>{sqrt(1-x^2)}
+ \SimulateMonteCarlo<f>{5000}
+\end{GraphTikz}
+
+There is \textcolor{blue}{\num{\nbptsmcok}} blue points,
+there is \textcolor{red}{\num{\nbptsmcko}} red points.
+
+And $\frac{\num{\nbptsmcok}}{\num{\nbptsmc}}
+\approx \RoundNb[4]{\nbptsmcok/\nbptsmc}$
+et $\frac{\pi}{4} \approx \RoundNb[4]{pi/4}$.
+\end{tcblisting}
+
+\pagebreak
+
+\section{History}
+
+\begin{quote}
+\begin{verbatim}
+0.1.6 : Vertical asymptote + [in french doc] commands for integrals
+0.1.5 : Initial version [en]
+\end{verbatim}
+\end{quote}
+
+\end{document} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf
new file mode 100644
index 0000000000..ba330fa444
--- /dev/null
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex
new file mode 100644
index 0000000000..99d8414cd0
--- /dev/null
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex
@@ -0,0 +1,1946 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode}
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
+
+\documentclass[11pt,a4paper]{ltxdoc}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{tkz-grapheur}
+\usepackage{amsmath}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\usepackage{hyperref}
+\usepackage{nicefrac}
+\usepackage{fontawesome5}
+\usepackage{tcolorbox}
+\tcbuselibrary{skins,minted}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [tkz-grapheur]}
+\rfoot{\sffamily\small - \thepage{} -}
+\usepackage{hologo}
+\providecommand\tikzlogo{Ti\textit{k}Z}
+\providecommand\TeXLive{\TeX{}Live\xspace}
+\providecommand\PSTricks{\textsf{PSTricks}\xspace}
+\let\pstricks\PSTricks
+\let\TikZ\tikzlogo
+
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=2cm]{geometry}
+\setlength{\parindent}{0pt}
+\def\TPversion{0.1.6}
+\def\TPdate{13/07/2024}
+\usepackage{soul}
+\usepackage{codehigh}
+\usepackage{tabularray}
+\sethlcolor{lightgray!25}
+\NewDocumentCommand\MontreCode{ m }{%
+ \hl{\vphantom{\texttt{pf}}\texttt{#1}}%
+}
+\usepackage[french]{babel}
+\sisetup{group-minimum-digits=4}
+\renewcommand{\footnoterule}{\vfill\kern -3pt \hrule width 0.4\columnwidth \kern 2.6pt}
+
+\begin{document}
+
+\pagestyle{fancy}
+
+\thispagestyle{empty}
+
+\begin{center}
+ \begin{minipage}{0.88\linewidth}
+ \begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+ \begin{center}
+ \begin{tabular}{c}
+ {\Huge \texttt{tkz-grapheur [fr]}}\\
+ \\
+ {\LARGE Un système de grapheur,}\\
+ \\
+ {\LARGE basé sur \textsf{\TikZ} et \textsf{xint}.}\\
+ \\
+ {\small \texttt{Version \TPversion{} -- \TPdate}}
+ \end{tabular}
+ \end{center}
+ \end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\begin{center}
+ \begin{tabular}{c}
+ \texttt{Cédric Pierquet}\\
+ {\ttfamily c pierquet -- at -- outlook . fr}\\
+ \texttt{\url{https://forge.apps.education.fr/pierquetcedric/package-latex-tkz-grapheur}} \\
+\end{tabular}
+\end{center}
+
+\hrule
+
+\vfill
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5,halign=center]
+\begin{GraphiqueTikz}[x=0.85cm,y=0.35cm,Xmin=0,Xmax=10,Ymin=0,Ymax=16]
+ %préparation de la fenêtre
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\small]{0,1,...,10}{0,2,...,16}
+ %déf des fonctions avec nom courbe + nom fonction + expression
+ \DefinirCourbe[Nom=cf]<f>{3*x-6}
+ \DefinirCourbe[Nom=cg]<g>{-(x-6)^2+12}
+ %antécédents et intersection
+ \TrouverIntersections[Aff=false,Nom=K]{cf}{cg}
+ \TrouverAntecedents[AffDroite,Couleur=orange,Nom=I]{cg}{8}
+ \TrouverAntecedents[Aff=false,Nom=J]{cg}{0}
+ %intégrale sous une courbe, avec intersection
+ \TracerIntegrale%
+ [Couleurs=blue/purple,Bornes=noeuds,Style=hachures,Hachures=bricks]%
+ {g(x)}%
+ {(I-2)}{(J-2)}
+ %intégrale entre les deux courbes
+ \TracerIntegrale[Bornes=noeuds,Type=fct/fct]{f(x)}[g(x)]{(K-1)}{(K-2)}
+ %tracé des courbes et des points
+ \TracerCourbe[Couleur=red]{f(x)}
+ \TracerCourbe[Couleur=teal]{g(x)}
+ \PlacerPoints<\small>{(K-1)/below right/L,(K-2)/above left/M}%
+ \PlacerPoints[violet]<\small>{(I-1)/above left/D,(I-2)/above right/E}%
+ %essai de tangente
+ \TracerTangente[Couleurs=pink!75!black/yellow,kl=2,kr=2,AffPoint]{g}{5}
+ %essai d'image
+ \PlacerImages[Couleurs=cyan]{g}{7,7.25,7.5}
+ %surimpression des axes
+ \TracerAxesGrilles[Grads=false,Grille=false,Elargir=2.5mm]{0,1,...,10}{0,2,...,16}
+\end{GraphiqueTikz}
+\end{tcolorbox}
+
+\vspace*{5mm}
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5,halign=center]
+\begin{GraphiqueTikz}%
+ [x=3.5cm,y=4cm,
+ Xmin=0,Xmax=3.5,Xgrille=pi/12,Xgrilles=pi/24,
+ Ymin=-1.05,Ymax=1.05,Ygrille=0.2,Ygrilles=0.05]
+ %préparation de la fenêtre
+ \TracerAxesGrilles[Grads=false,Elargir=2.5mm,Format=ntrig/nsqrt]%
+ {pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+ {0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+ %rajouter des valeurs
+ \RajouterValeursAxeX{0.25,1.4,3.3}{\num{0.25},\num{1.4},\num{3.3}}
+ %fonction trigo (déf + tracé)
+ \DefinirCourbe[Nom=ccos,Debut=0,Fin=pi]<fcos>{cos(x)}
+ \DefinirCourbe[Nom=csin,Debut=0,Fin=pi]<fsin>{sin(x)}
+ %intégrale
+ \TrouverIntersections[Aff=false,Nom=JKL]{ccos}{csin}
+ %\DefinirPts{FIN/pi/0}
+ \TracerIntegrale%
+ [Bornes=noeud/abs,Type=fct/fct,Couleurs=cyan/cyan!50]%
+ {fsin(x)}[fcos(x)]%
+ {(JKL-1)}{pi}
+ %tracé des courbes
+ \TracerCourbe[Couleur=red,Debut=0,Fin=pi]{fcos(x)}
+ \TracerCourbe[Couleur=olive,Debut=0,Fin=pi]{fsin(x)}
+ %antécédent(s)
+ \PlacerAntecedents[Couleurs=blue/teal!50!black,Traits]{ccos}{-0.25}
+ \PlacerAntecedents[Couleurs=red/magenta!50!black,Traits]{csin}{0.5}
+ \PlacerAntecedents[Couleurs=orange/orange!50!black,Traits]{csin}{sqrt(2)/2}
+ \PlacerAntecedents[Couleurs=green!50!black/green,Traits]{csin}{sqrt(3)/2}
+ %surimpression axes
+ \TracerAxesGrilles[Grille=false,Elargir=2.5mm,Format=ntrig/nsqrt]%
+ {pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+ {0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+\end{GraphiqueTikz}
+\end{tcolorbox}
+
+\vfill
+
+\hfill{\footnotesize\textit{\ttfamily À mon papa.}}
+
+\vspace*{5mm}
+
+\pagebreak
+
+\phantomsection
+
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\vspace*{5mm}
+
+\hrule
+
+\vspace*{5mm}
+
+\pagebreak
+
+\section{Introduction}
+
+\subsection{Description et idées générales}
+
+Avec ce modeste package, loin des capacités offertes par exemple par les excellents packages \MontreCode{tkz-*}\footnote{par exemple tkz-base \url{https://ctan.org/pkg/tkz-base} et tkz-fct \url{https://ctan.org/pkg/tkz-fct}.} (d'Alain Matthes) ou \MontreCode{tzplot}\footnote{CTAN : \url{https://ctan.org/pkg/tzplot}.} (de In-Sung Cho), il est possible de travailler sur des graphiques de fonctions, en langage \TikZ, de manière \textit{intuitive} et \textit{explicite}.
+
+\smallskip
+
+Concernant le fonctionnement global :
+
+\smallskip
+
+\begin{itemize}
+ \item des styles particuliers pour les objets utilisés ont été définis, mais ils peuvent localement être modifiés ;
+ \item le nom des commandes est sous forme \textit{opérationnelle}, de sorte que la construction des éléments graphiques a une forme quasi \textit{algorithmique}.
+\end{itemize}
+
+\subsection{Fonctionnement global}
+
+Pour schématiser, il \textit{suffit} :
+
+\smallskip
+
+\begin{itemize}
+ \item de déclarer les paramètres de la fenêtre graphique ;
+ \item d'afficher grille/axes/graduations ;
+ \item de déclarer les fonctions ou les courbes d'interpolation ;
+ \item de déclarer éventuellement des points particuliers ;
+ \item de placer un nuage de points.
+\end{itemize}
+
+\smallskip
+
+Il sera ensuite possible :
+
+\begin{itemize}
+ \item de tracer des courbes ;
+ \item de déterminer graphiquement des images ou des antécédents ;
+ \item de rajouter des éléments de dérivation (tangentes) ou d'intégration (domaine) ;
+ \item de tracer une droite d'ajustement linéaire ou la courbe d'un autre ajustement ;
+ \item \dots
+\end{itemize}
+
+\subsection{Packages utilisés, et options du package}
+
+Le package utilise :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{tikz}, avec les librairies \MontreCode{calc,intersections,patterns,patterns.meta,bbox} ;
+ \item \MontreCode{simplekv}, \MontreCode{xintexpr}, \MontreCode{xstring}, \MontreCode{listofitems} ;
+ \item \MontreCode{xint-regression}\footnote{CTAN : \url{https://ctan.org/pkg/xint-regression}.} (pour les régressions, désactivable via \MontreCode{[nonxintreg]}).
+\end{itemize}
+
+\smallskip
+
+Le package charge également \MontreCode{siunitx} avec les options classiques \texttt{[fr]}, mais il est possible de ne pas le charger en utilisant l'option \MontreCode{[nonsiunitx]}.
+
+\smallskip
+
+Le package charge également la librairie \TikZ\ \MontreCode{babel}, mais il est possible de ne pas la charger en utilisant l'option \MontreCode{[nontikzbabel]}.
+
+\smallskip
+
+Les différentes options sont bien évidemment cumulables.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%chargement par défaut
+\usepackage{tkz-grapheur}
+
+%chargement sans sinuitx, à charger manuellement
+\usepackage[nonsiunitx]{tkz-grapheur}
+
+%chargement sans tikz.babel
+\usepackage[nontikzbabel]{tkz-grapheur}
+\end{tcblisting}
+
+\pagebreak
+
+À noter également que certaines commandes peuvent utiliser des packages comme \MontreCode{nicefrac}, qui sera donc à charger le cas échéant.
+
+\smallskip
+
+Concernant la partie \textit{calculs} et \textit{tracés}, c'est le package \MontreCode{xint} qui s'en occupe.
+
+\subsection{Avertissements}
+
+Il est possible, dû aux calculs (multiples) effectués en interne, que le temps de compilation soir un peu \textit{allongé}.
+
+\smallskip
+
+La précision des résultats (de détermination) semble être aux environs de $10^{-4}$, ce qui devrait normalement garantir des tracés et lectures \textit{satisfaisantes}. Il est quand même conseillé d'être prudent quant aux résultats obtenus et ceux attendus.
+
+\subsection{Exemple introductif}
+
+On peut par exemple partir de l'exemple suivant, pour \textit{illustrer} le cheminement des commandes de ce package. Les commandes et la syntaxe seront détaillées dans les sections suivantes !
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=7.5cm,y=7.5cm,Xmin=0,Xmax=1.001,Xgrille=0.1,Xgrilles=0.02,
+ Ymin=0,Ymax=1.001,Ygrille=0.1,Ygrilles=0.02]
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\small]%
+ {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
+ {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
+ \DefinirCourbe[Nom=cf,Debut=0,Fin=1]<f>{x*exp(x-1)}
+ \DefinirCourbe[Nom=delta,Debut=0,Fin=1]<D>{x}
+ \TracerIntegrale[Type=fct/fct]{f(x)}[D(x)]{0}{1}
+ \TracerCourbe[Couleur=red]{f(x)}
+ \TracerCourbe[Couleur=teal]{D(x)}
+ \PlacerImages[Couleurs=blue/cyan,Traits]{f}{0.8,0.9}
+ \PlacerAntecedents[Couleurs=green!50!black/olive,Traits]{cf}{0.5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\newpage
+
+\section{Styles de base et création de l'environnement}
+
+\subsection{Styles de base}
+
+Les styles utilisés pour les tracés sont donnés ci-dessous.
+
+\smallskip
+
+Dans une optique de \textit{simplicité}, seule la couleur des éléments peut être paramétrée, mais si l'utilisateur le souhaite, il peut redéfinir les styles proposés.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%paramètres déclarés et stockés (utilisables dans l'environnement a posteriori)
+\tikzset{
+ Xmin/.store in=\pflxmin,Xmin/.default=-3,Xmin=-3,
+ Xmax/.store in=\pflxmax,Xmax/.default=3,Xmax=3,
+ Ymin/.store in=\pflymin,Ymin/.default=-3,Ymin=-3,
+ Ymax/.store in=\pflymax,Ymax/.default=3,Ymax=3,
+ Origx/.store in=\pflOx,Origx/.default=0,Origx=0,
+ Origy/.store in=\pflOy,Origy/.default=0,Origy=0,
+ Xgrille/.store in=\pflgrillex,Xgrille/.default=1,Xgrille=1,
+ Xgrilles/.store in=\pflgrillexs,Xgrilles/.default=0.5,Xgrilles=0.5,
+ Ygrille/.store in=\pflgrilley,Ygrille/.default=1,Ygrille=1,
+ Ygrilles/.store in=\pflgrilleys,Ygrilles/.default=0.5,Ygrilles=0.5
+}
+\end{tcblisting}
+
+On retrouve donc :
+
+\smallskip
+
+\begin{itemize}
+ \item l'origine du repère (\MontreCode{Origx}/\MontreCode{Origy}) ;
+ \item les valeurs extrêmes des axes (\MontreCode{Xmin}/\MontreCode{Xmax}/\MontreCode{Ymin}/\MontreCode{Ymax}) ;
+ \item les paramètres des grilles principales et secondaires (\MontreCode{Xgrille}/\MontreCode{Xgrilles}/\MontreCode{Ygrille}/\MontreCode{Ygrilles}).
+\end{itemize}
+
+\smallskip
+
+Concernant les styles des \textit{objets}, ils sont donnés ci-dessous.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%styles grilles/axes
+\tikzset{pflgrillep/.style={thin,lightgray}}
+\tikzset{pflgrilles/.style={very thin,lightgray}}
+\tikzset{pflaxes/.style={line width=0.8pt,->,>=latex}}
+
+%style des points (courbe / nuage /labels /montecarlo)
+\tikzset{pflpoint/.style={line width=0.95pt}}
+\tikzset{pflpointc/.style={radius=1.75pt}}
+\tikzset{pflpointnuage/.style={radius=1.75pt}}
+\tikzset{pflpointmc/.style={radius=0.875pt}}
+\tikzset{pflnoeud/.style={}} %pour les inner sep par exemple :-)
+
+%style des courbes
+\tikzset{pflcourbe/.style={line width=1.05pt}}
+
+%style des traits (normaux, antécédents, images)
+\tikzset{pfltrait/.style={line width=0.8pt}}
+\tikzset{pfltraitantec/.style={line width=0.95pt,densely dashed}}
+\tikzset{pfltraitimg/.style={line width=0.95pt,densely dashed,->,>=latex}}
+
+%style des flèches
+\tikzset{pflflecheg/.style={<-,>=latex}}
+\tikzset{pflfleched/.style={->,>=latex}}
+\tikzset{pflflechegd/.style={<->,>=latex}}
+\end{tcblisting}
+
+L'idée est donc de pouvoir redéfinir globalement ou localement les styles, et éventuellement de rajouter des éléments, en utilisant \mintinline{latex}|monstyle/.append style={...}|.
+
+\subsection{Création de l'environnement}\label{creaenvt}
+
+L'environnement proposé est basé sur \TikZ, de sorte que toute commande \textit{classique} liée à \TikZ\ peut être utilisée en marge des commandes du package !
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\begin{GraphiqueTikz}[options tikz]<clés>
+ %code(s)
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+Les \MontreCode{[options tikz]} sont les options \textit{classiques} qui peuvent être passées à un environnement \TikZ, ainsi que les clés des \textsf{axes/grilles/fenêtre} présentées précédemment.
+
+\smallskip
+
+Les \MontreCode{<clés>} spécifiques (et optionnelles) sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{TailleGrad} : taille des graduations des axes (\MontreCode{3pt} pour 3pt \textit{dessus} et 3pt \textit{dessous}) ;
+ \item \MontreCode{AffCadre} : booléen (\MontreCode{false} par défaut) pour afficher un cadre qui délimite la fenêtre graphique (hors graduations éventuelles).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}
+ [x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrille=20,Xgrilles=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrille=25,Ygrilles=5]
+ <AffCadre>
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+ <AffCadre>
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+Ce sera bien évidemment plus parlant avec les éléments graphiques rajoutés !
+
+\pagebreak
+
+\subsection{Grilles et axes}\label{creaaxesgr}
+
+La première commande \textit{utile} va permettre de créer les grilles, les axes et les graduations.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TracerAxesGrilles[clés]{gradX}{gradY}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Grille} : booléen (\MontreCode{true} par défaut) pour afficher les grilles (pour une grille unique, il suffit de mettre les paramètres identiques pour \MontreCode{Xgrille}/\MontreCode{Xgrilles} ou \MontreCode{Ygrille}/\MontreCode{Ygrilles}) ;
+ \item \MontreCode{Elargir} : rajout à la fin des axes (\MontreCode{0} par défaut) ;
+ \item \MontreCode{Grads} : booléen (\MontreCode{true} par défaut) pour les graduations ;
+ \item \MontreCode{Police} : police globale des graduations {\MontreCode{vide} par défaut} ;
+ \item \MontreCode{Format} : formatage particulier (voir en dessous) des valeurs des axes.
+\end{itemize}
+
+\smallskip
+
+Concernant la clé \MontreCode{Format}, elle permet de spécifier un paramétrage spécifique pour les valeurs des axes.
+
+\smallskip
+
+Elle peut être donnée sous la forme \MontreCode{fmt} pour un formatage combiné, ou sous la forme \MontreCode{fmtX/fmtY} pour différencier le formatage.
+
+\smallskip
+
+Les options possible sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{num} : formater avec \textsf{siunitx} ;
+ \item \MontreCode{annee} : formater en année ;
+ \item \MontreCode{frac} : formater en fraction \textsf{frac} ;
+ \item \MontreCode{dfrac} : formater en fraction \textsf{dfrac} ;
+ \item \MontreCode{nfrac} : formater en fraction \textsf{nicefrac} ;\hfill(à charger !)
+ \item \MontreCode{trig} : formater en trigo avec \textsf{frac} ;
+ \item \MontreCode{dtrig} : formater en trigo avec \textsf{dfrac} ;
+ \item \MontreCode{ntrig} : formater en trigo avec \textsf{nfrac} ;
+ \item \MontreCode{sqrt} : formater en racine avec \textsf{frac} ;
+ \item \MontreCode{dsqrt} : formater en racine avec \textsf{dfrac} ;
+ \item \MontreCode{nsqrt} : formater en racine avec \textsf{nicefrac}.
+\end{itemize}
+
+\smallskip
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}
+ [x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrille=20,Xgrilles=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrille=25,Ygrilles=5]
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\small]{0,10,...,160}{250,275,...,400}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+À noter qu'il existe les clés booléennes \MontreCode{[Derriere]} (sans les graduations) et \MontreCode{[Devant]} (sans la grille) pour afficher les axes en mode \textit{sous/sur}-impression dans le cas d'intégrales par exemple.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=2.75cm,y=3cm,
+ Xmin=0,Xmax=3.5,Xgrille=pi/12,Xgrilles=pi/24,
+ Ymin=-1.05,Ymax=1.05,Ygrille=0.2,Ygrilles=0.05]
+ \TracerAxesGrilles[Elargir=2.5mm,Format=dtrig/nsqrt,Police=\footnotesize]%
+ {pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+ {0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+Dans le cas où le formatage ne donne pas de résultat(s) satisfaisant(s), il est possible d'utiliser une commande générique de placement des graduations.
+
+\pagebreak
+
+Dans le cas où les graduations sont \textit{naturellement} définies par les données de la fenêtre et de la grille (principale), il est possible de préciser \MontreCode{auto} dans les arguments obligatoires (dans ce cas le formatage ne sera pas possible, et \MontreCode{Format=num} sera obligatoirement utilisé).
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=1.5cm,y=6cm,Xmin=0,Xmax=7,Xgrille=0.5,Xgrilles=0.25,
+ Ymin=0,Ymax=1,Ygrille=0.1,Ygrilles=0.05]
+ \TracerAxesGrilles[Elargir=2.5mm,Dernier]{auto}{auto}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Ajout de valeurs manuellement}\label{ajoutvals}
+
+Il est également possible d'utiliser une commande spécifique pour placer des valeurs sur les axes, indépendamment d'un système \textit{automatisé} de formatage.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\RajouterValeursAxeX[clés]{positions}{valeurs formatées}
+\RajouterValeursAxeY[clés]{positions}{valeurs formatées}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Police} : police globale des graduations {\MontreCode{vide} par défaut} ;
+ \item \MontreCode{Traits} : booléen pour ajouter les traits des graduations {\MontreCode{true} par défaut}.
+\end{itemize}
+
+\smallskip
+
+Les arguments obligatoires correspondent aux abscisses (en langage\TikZ) et aux labels (en langage \LaTeX) des graduations.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=2.75cm,y=3cm,
+ Xmin=0,Xmax=3.5,Xgrille=pi/12,Xgrilles=pi/24,
+ Ymin=-1.05,Ymax=1.05,Ygrille=0.2,Ygrilles=0.05]
+ \TracerAxesGrilles[Grad=false,Elargir=2.5mm,]{}{}
+ \RajouterValeursAxeX
+ {0.15,0.6,pi/2,2.8284}
+ {\num{0.15},$\frac35$,$\displaystyle\frac{\pi}{2}$,$\sqrt{8}$}
+ \RajouterValeursAxeY
+ {-1,0.175,0.3,sqrt(3)/2}
+ {\num{-1},\num{0.175},$\nicefrac{3}{10}$,$\frac{\sqrt{3}}{2}$}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\section{Commandes spécifiques de définitions}
+
+\subsection{Tracer une droite}\label{tracdroite}
+
+L'idée est de proposer une commande pour tracer une droite, à partir :
+
+\begin{itemize}
+ \item de deux points (ou nœuds) ;
+ \item d'un point (ou nœud) et de la pente.
+\end{itemize}
+
+Il existe également une commande pour une asymptote verticale.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TracerDroite[clés]{point ou nœud}{point ou noeud ou pente}
+\TracerAsymptote[clés]{abscisse}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Nom} : nom éventuel du tracé (pour réutilisation) ;
+ \item \MontreCode{Pente} : booléen pour préciser que la pente est utilisée (\MontreCode{false} par défaut) ;
+ \item \MontreCode{Debut} : début du tracé (\MontreCode{\textbackslash pflxmin} par défaut) ;
+ \item \MontreCode{Fin} : fin du tracé (\MontreCode{\textbackslash pflxmax} par défaut) ;
+ \item \MontreCode{Couleur} : couleur du tracé (\MontreCode{black} par défaut).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto}
+ \DefinirPts[Aff,Couleur=gray]{A/-4/3,B/2/0,C/0/-1}
+ \TracerDroite[Couleur=red]{(-2,-1)}{(2,4)}
+ \TracerDroite[Couleur=blue,Debut=-5,Fin=3]{(A)}{(B)}
+ \TracerDroite[Couleur=olive,Pente]{(C)}{0.25}
+ \TracerAsymptote[Couleur=brown]{-6}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Définir une fonction, tracer la courbe d'une fonction}\label{deftracfct}
+
+L'idée est de définir une fonction, pour réutilisation ultérieure. Cette commande \textit{crée} la fonction, sans la tracer, car dans certains cas des éléments devront être tracés au préalable.
+
+\smallskip
+
+Il existe également une commande pour tracer la courbe d'une fonction précédemment définie.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\DefinirCourbe[clés]<nom fct>{formule xint}
+\TracerCourbe[clés]{formule xint}
+\end{tcblisting}
+
+Les \MontreCode{[clés]} pour la définition ou le tracé, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Debut} : borne inférieure de l'ensemble de définition (\MontreCode{\textbackslash pflxmin} par défaut) ;
+ \item \MontreCode{Fin} : borne inférieure de l'ensemble de définition (\MontreCode{\textbackslash pflxmax} par défaut) ;
+ \item \MontreCode{Nom} : nom de la courbe (important pour la suite !) ;
+ \item \MontreCode{Couleur} : couleur du tracé (\MontreCode{black} par défaut) ;
+ \item \MontreCode{Pas} : pas du tracé (il est déterminé \textit{automatiquement} au départ mais peut être modifié) ;
+ \item \MontreCode{Trace} : booléen pour tracer également la courbe (\MontreCode{false} par défaut).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+ %définition de la fonction + tracé de la courbe
+ %la fonction ln a été créée pour xint !
+ \DefinirCourbe[Nom=cf,Debut=5,Fin=19]<f>{-2*x+3+24*ln(2*x)}
+ \TracerCourbe[Couleur=red,Debut=5,Fin=19]{f(x)}
+ %ou en une seule commande si "suffisant"
+ %\DefinirCourbe[Nom=cf,Debut=5,Fin=19,Trace]<f>{-2*x+3+24*ln(2*x)}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Définir/tracer une courbe d'interpolation (simple)}\label{deftracinterpo}
+
+Il est également possible de définir une courbe via des points supports, donc une courbe d'interpolation simple.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\DefinirCourbeInterpo[clés]{liste des points support}
+\TracerCourbeInterpo[clés]{liste des points support}
+\end{tcblisting}
+
+Les \MontreCode{[clés]} pour la définition ou le tracé, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Nom} : nom de la courbe d'interpolation (important pour la suite !) ;
+ \item \MontreCode{Couleur} : couleur du tracé (\MontreCode{black} par défaut) ;
+ \item \MontreCode{Tension} : paramétrage de la \textit{tension} du tracé d'interpolation (\MontreCode{0.5} par défaut) ;
+ \item \MontreCode{Trace} : booléen pour tracer également la courbe (\MontreCode{false} par défaut).
+\end{itemize}
+
+L'argument obligatoire permet quant à lui de spécifier la liste des points supports sous la forme \MontreCode{(x1,y1)(x2,y2)...}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ %courbes d'interpolation simples (avec tension diff)
+ \DefinirCourbeInterpo[Nom=interpotest,Couleur=blue,Trace]%
+ {(-6,4)(-2,-2)(3,3.5)}
+ \DefinirCourbeInterpo[Nom=interpotest,Couleur=red,Trace,Tension=1]%
+ {(-6,4)(-2,-2)(3,3.5)}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\newpage
+
+\subsection{Définir/tracer une courbe d'interpolation (Hermite)}\label{deftracfctspline}
+
+Il est également possible de définir une courbe via des points supports, donc une courbe d'interpolation avec contrôle de la dérivée.
+
+\smallskip
+
+Certaines exploitations demandant des techniques différentes suivant le type de fonction utilisée, une clé booléenne \MontreCode{Spline} permettra au code d'adapter ses calculs suivant l'objet utilisé.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\DefinirCourbeSpline[clés]{liste des points support}[\macronomspline]
+\TracerCourbeSpline[clés]{liste des points support}[\macronomspline]
+\end{tcblisting}
+
+Les \MontreCode{[clés]} pour la définition ou le tracé, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Nom} : nom de la courbe d'interpolation (important pour la suite !) ;
+ \item \MontreCode{Coeffs} : modifier (voir la documentation de \textsf{ProfLycee}\footnote{CTAN : \url{https://ctan.org/pkg/proflycee}} les \textit{coefficients} du spline ;
+ \item \MontreCode{Couleur} : couleur du tracé (\MontreCode{black} par défaut) ;
+ \item \MontreCode{Trace} : booléen pour tracer également la courbe (\MontreCode{false} par défaut).
+\end{itemize}
+
+L'argument obligatoire permet quant à lui de spécifier la liste des points supports sous la forme \MontreCode{x1/y1/f'1§x2/y2/f'2§...} avec :
+
+\begin{itemize}
+ \item \MontreCode{xi/yi} les coordonnées du point ;
+ \item \MontreCode{f'i} la dérivé au point support.
+\end{itemize}
+
+\smallskip
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ %définition de la liste des points support du spline
+ \def\LISTETEST{-6/4/-2§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}
+ %définition et tracé du spline cubique
+ \DefinirCourbeSpline[Nom=splinetest,Trace,Couleur=olive]{\LISTETEST}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Définir des points sous forme de nœuds}\label{defpts}
+
+La seconde idée est de travailler avec des nœuds \TikZ, qui pourront être utiles pour des tracés de tangentes, des représentations d'intégrales$\ldots$
+
+\smallskip
+
+Il est également possible de définir des nœuds pour des points \textit{image}.
+
+\smallskip
+
+Certaines commandes (explicités ultérieurement) permettent de déterminer des points particuliers des courbes sous forme de nœuds, donc il semble intéressant de pouvoir en définir directement.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%par les coordonnées
+\DefinirPts[clés]{Nom1/x1/y1,Nom2/x2/y2,...}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Aff} : booléen pour marquer les points (\MontreCode{false} par défaut) ;
+ \item \MontreCode{Couleur} : couleur des points, si \MontreCode{Aff=true} (\MontreCode{black} par défaut).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%sous forme d'image
+\DefinirImage[clés]{objet}{abscisse}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Nom} : nom du nœud (\MontreCode{vide} par défaut) ;
+ \item \MontreCode{Spline} : booléen pour spécifier qu'un spline est utilisé (\MontreCode{false} par défaut).
+\end{itemize}
+
+Le premier argument obligatoire est l'\textit{objet} considéré (nom de la courbe pour le spline, fonction sinon) ; le second est l'abscisse du point considéré.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+ %définition de la fonction + tracé de la courbe
+ \DefinirFonction[Nom=cf,Debut=5,Fin=19,Trace,Couleur=red]<f>{-2*x+3+24*log(2*x)}
+ %nœuds manuels
+ \DefinirPts[Aff,Couleur=brown]{A/7/42,B/16/49}
+ %nœud image
+ \DefinirImage[Nom=IMGf]{f}{14}
+ \MarquerPts*[Style=x,Couleur=blue]{(IMGf)}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Marquage de points}\label{markpts}
+
+L'idée est de proposer de quoi marquer des points avec un style particulier.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\MarquerPts(*)[clés]<police>{liste}
+\end{tcblisting}
+
+La version \textit{étoilée} marque les points sans les \og noms \fg, alors que la version \textit{non étoilée} les affiche :
+
+\begin{itemize}
+ \item dans le cas de la version \textit{étoilée}, la liste est à donner sous la forme \MontreCode{(ptA),(ptB),...} ;
+ \item sinon, la liste est à donner sous la forme \MontreCode{(ptA)/labelA/poslabelA,...}.
+\end{itemize}
+
+\smallskip
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Couleur} : couleur (\MontreCode{black} par défaut) ;
+ \item \MontreCode{Style} : style des marques (\MontreCode{o} par défaut).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}[x=1.5cm,y=1.5cm,Ymin=-2]
+ \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto}
+ \DefinirPts{A/1.75,-1.25}\MarquerPts[Couleur=pink]{(A)/A/below} %rond (par défaut)
+ \MarquerPts[Couleur=teal]{(1,1)/M/below}
+ \MarquerPts[Couleur=red,Style=x]{(1.25,1)/$A$/below} %croix
+ \MarquerPts[Couleur=orange,Style=+]<\small\sffamily>{(1.5,1)/K/below} %plus
+ \MarquerPts[Couleur=blue,Style=c]{(1.75,1)/P/below} %carré
+ \MarquerPts[Couleur=gray,Style=d]{(2,1)/P/below} %diamant
+ \MarquerPts*[Couleur=orange/yellow]{(2,2),(2.5,2.25)} %rond bicolore
+ \MarquerPts*[Style=+,Couleur=red]{(1,2)}
+ \MarquerPts*[Style=x,Couleur=blue]{(2.25,1)}
+ \MarquerPts*[Style=c,Couleur=magenta]{(-2,-1)}
+ \MarquerPts[Couleur=red,Style=x]{(-1,1)/$A$/below,(-2,2)/$B$/below left}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+À noter qu'il est également possible de modifier la taille des marques \MontreCode{o/x/+/c} via les \MontreCode{[clés]} :
+
+\begin{itemize}
+ \item \MontreCode{Taillex=...} (\MontreCode{2pt} par défaut) pour les points \textit{croix} ;
+ \item \MontreCode{Tailleo=...} (\MontreCode{1.75pt} par défaut) pour les points \textit{cercle} ;
+ \item \MontreCode{Taillec=...} (\MontreCode{2pt} par défaut) pour les points \textit{carré}.
+\end{itemize}
+
+\pagebreak
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}[x=1cm,y=1cm,Xmin=0,Ymin=0]
+ \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto}
+ \MarquerPts[Couleur=red,Style=x,Taillex=3.5pt]{(1.25,1.25)/$A$/below}
+ \MarquerPts[Couleur=teal,Tailleo=2.5pt]{(2,2)/$A$/right}
+ \MarquerPts*[Couleur=orange,Style=c,Taillec=4pt]{(0.5,2.5)}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\subsection{Récupérer les coordonnées de nœuds}\label{recupcoordo}
+
+Il est également possible, dans l'optique d'une réutilisation de coordonnées, de récupérer les coordonnées d'un nœud (défini ou déterminé).
+
+\smallskip
+
+Les calculs étant effectués en flottant en fonction des unités (re)calculées, les valeurs sont donc approchées !
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\RecupererAbscisse{nœud}[\macrox]
+\RecupererOrdonnee{nœud}[\macroy]
+\RecupererCoordonnees{nœud}[\macrox][\macroy]
+\end{tcblisting}
+
+\subsection{Placer du texte}\label{placetxt}
+
+À noter qu'une commande de placement de texte est disponible.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\PlacerTexte[clés]{(nœud ou coordonnées)}{texte}
+\end{tcblisting}
+
+Les \MontreCode{[clés]} disponibles sont :
+
+\begin{itemize}
+ \item \MontreCode{Police=...} (\MontreCode{\textbackslash normalsize\textbackslash normalfont} par défaut) pour la police ;
+ \item \MontreCode{Couleur=...} (\MontreCode{black} par défaut) pour la couleur ;
+ \item \MontreCode{Position=...} (\MontreCode{vide} par défaut) pour la position du texte par rapport aux coordonnées.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+ \begin{GraphiqueTikz}[x=1cm,y=1cm,Xmin=0,Xmax=5,Ymin=0,Ymax=1]
+ \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto}
+ \PlacerTexte[Couleur=red,Police=\LARGE,Position=right]{(1.5,0.5)}{courbe $C_1$}
+ \end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\section{Commandes spécifiques d'exploitation des courbes}
+
+\subsection{Placement d'images}\label{images}
+
+Il est possible de la placer des points (images) sur une courbe, avec traits de construction éventuels.
+
+La fonction/courbe utilisée doit avoir été déclarée précédemment pour que cette commande fonctionne.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\PlacerImages[clés]{fonction ou courbe}{liste d'abscisses}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Traits} : booléen pour afficher les traits de construction (\MontreCode{false} par défaut) ;
+ \item \MontreCode{Couleurs} : couleur des points/traits, sous la forme \MontreCode{Couleurs} ou \MontreCode{CouleurPoint/CouleurTraits} ;
+ \item \MontreCode{Spline} : booléen pour préciser que la courbe utilisée est définie comme un \textsf{spline} (\MontreCode{false} par défaut).
+\end{itemize}
+
+\smallskip
+
+Le premier argument obligatoire, permet de spécifier :
+
+\smallskip
+
+\begin{itemize}
+ \item le nom de la courbe dans la cas \MontreCode{Spline=true} ;
+ \item le nom de la fonction sinon.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+ %définition de la fonction + tracé de la courbe
+ \DefinirCourbe[Nom=cf,Debut=5,Fin=19,Trace,Couleur=red]<f>{-2*x+3+24*log(2*x)}
+ %images
+ \PlacerImages[Traits,Couleurs=teal/blue]{f}{6,7,8,9,10}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Détermination d'antécédents}\label{defanteced}
+
+Il est possible de déterminer graphiquement les antécédents d'un réel donné.
+
+La fonction/courbe utilisée doit avoir été déclarée précédemment pour que cette commande fonctionne.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TrouverAntecedents[clés]{courbe}{k}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Nom} : base du nom des \textbf{nœuds} intersection (\MontreCode{S} par défaut, ce qui donnera \textsf{S-1}, \textsf{S-2}, etc) ;
+ \item \MontreCode{Aff} : booleen pour afficher les points (\MontreCode{true} par défaut) ;
+ \item \MontreCode{Couleur} : couleur des points (\MontreCode{black} par défaut) ;
+ \item \MontreCode{AffDroite} : booleen pour afficher la droite horizontale (\MontreCode{false} par défaut).
+\end{itemize}
+
+\smallskip
+
+Le premier argument obligatoire, permet de spécifier le \textbf{nom} de la courbe.
+
+\smallskip
+
+Le second argument obligatoire, permet de spécifier la valeur à atteindre.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+ %définition de la fonction + tracé de la courbe
+ \DefinirCourbe[Nom=cf,Debut=5,Fin=19,Trace,Couleur=red]<f>{-2*x+3+24*log(2*x)}
+ %antécédents
+ \TrouverAntecedents[Couleur=teal,AffDroite,Aff]{cf}{53}
+ %les deux antécédents sont aux nœuds (S-1) et (S-2)
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+%Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+%
+%\smallskip
+%
+%\begin{itemize}
+% \item \MontreCode{Nom} : base du nom des \textbf{nœuds} intersection (\MontreCode{S} par défaut, ce qui donnera \textsf{S-1}, \textsf{S-2}, etc) ;
+% \item \MontreCode{Aff} : booleen pour afficher les points (\MontreCode{true} par défaut) ;
+% \item \MontreCode{Couleur} : couleur des points (\MontreCode{black} par défaut) ;
+% \item \MontreCode{AffDroite} : booleen pour afficher la droite horizontale (\MontreCode{false} par défaut).
+%\end{itemize}
+
+\pagebreak
+
+\subsection{Construction d'antécédents}\label{tracanteced}
+
+Il est possible de construire graphiquement les antécédents d'un réel donné.
+
+La fonction/courbe utilisée doit avoir été déclarée précédemment pour que cette commande fonctionne.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\PlacerAntecedents[clés]{courbe}{k}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Couleurs} : couleur des points/traits, sous la forme \MontreCode{Couleurs} ou \MontreCode{CouleurPoint/CouleurTraits} ;
+ \item \MontreCode{Nom} : nom \textit{éventuel} pour les points d'intersection liés aux antécédents (\MontreCode{vide} par défaut) ;
+ \item \MontreCode{Traits} : booleen pour afficher les traits de construction (\MontreCode{false} par défaut).
+\end{itemize}
+
+\smallskip
+
+Le premier argument obligatoire, permet de spécifier le \textbf{nom} de la courbe.
+
+\smallskip
+
+Le second argument obligatoire, permet de spécifier la valeur à atteindre.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+ %définition de la fonction + tracé de la courbe
+ \DefinirCourbe[Nom=cf,Debut=5,Fin=19,Trace,Couleur=red]<f>{-2*x+3+24*log(2*x)}
+ %antécédents
+ \PlacerAntecedents[Couleurs=teal/cyan,Traits,Nom=PO]{cf}{53}
+ \RecupererAbscisse{(PO-1)}[\premsol]
+ \RecupererAbscisse{(PO-2)}[\deuxsol]
+\end{GraphiqueTikz}
+
+Graphiquement, les antécédents de 53 sont (environ) :
+
+\begin{itemize}
+ \item \num{\premsol}
+ \item \num{\deuxsol}
+\end{itemize}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Intersections de deux courbes}\label{intersect}
+
+Il est également possible de déterminer (sous forme de nœuds) les éventuels points d'intersection de deux courbes préalablement définies.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TrouverIntersections[clés]{courbe1}{courbe2}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Nom} : base du nom des \textbf{nœuds} intersection (\MontreCode{S} par défaut, ce qui donnera \textsf{S-1}, \textsf{S-2}, etc) ;
+ \item \MontreCode{Aff} : booléen pour afficher les points (\MontreCode{true} par défaut) ;
+ \item \MontreCode{Couleur} : couleur des points (\MontreCode{black} par défaut).
+\end{itemize}
+
+\smallskip
+
+Le premier argument obligatoire, permet de spécifier le \textbf{nom} de la première courbe.
+
+\smallskip
+
+Le premier argument obligatoire, permet de spécifier le \textbf{nom} de la seconde courbe.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+ \DefinirCourbe[Nom=cf,Debut=5,Fin=19,Trace,Couleur=red]<f>{-2*x+3+24*log(2*x)}
+ \DefinirCourbe[Nom=cg,Debut=5,Fin=19,Trace,Couleur=blue]<g>{0.25*(x-12)^2+46}
+ %intersections, nommées (TT-1) et (TT-2)
+ \TrouverIntersections[Nom=TT,Couleur=darkgray,Aff,Traits]{cf}{cg}
+ %récupération des points d'intersection
+ \RecupererCoordonnees{(TT-1)}[\alphaA][\betaA]
+ \RecupererCoordonnees{(TT-2)}[\alphaB][\betaB]
+\end{GraphiqueTikz}\\
+Les solutions de $f(x)=g(x)$ sont $\alpha \approx \num{\alphaA}$ et
+$\beta \approx \num{\alphaB}$.\\
+Les points d'intersection des courbes de $f$ et de $g$ sont donc
+$(\ArrondirNum[2]{\alphaA};\ArrondirNum[2]{\betaA})$ et
+$(\ArrondirNum[2]{\alphaB};\ArrondirNum[2]{\betaB})$.
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Extremums}\label{maximum}\label{minimum}
+
+L'idée (encore \textit{expérimentale}) est de proposer des commandes pour extraire les extremums d'une courbe définie par le package.
+
+La commande crée le nœud correspondant, et il est du coup possible de récupérer ses coordonnées pour exploitation ultérieure.
+
+\smallskip
+
+Il est possible, en le spécifiant, de travailler sur les différentes courbes gérées par le package (fonction, interpolation, spline).
+
+Pour des courbes singulières, il est possible que les résultats ne soient pas tout à fait ceux attendus\ldots
+
+\smallskip
+
+{\small\faBomb} Pour le moment, les \textit{limitations} sont :
+
+\begin{itemize}
+ \item pas de gestion d'extremums multiples (seul le premier sera traité)\ldots
+ \item pas de gestion d'extremums aux bornes du tracé\ldots
+ \item pas de récupération automatique des paramètres de définition des courbes\ldots
+ \item le temps de compilation peut être plus long\ldots
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TrouverMaximum[clés]{objet}[nœud créé]
+\TrouverMinimum[clés]{objet}[nœud créé]
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Methode} : méthode, parmi \MontreCode{fonction/interpo/spline} pour les calculs (\MontreCode{fonction} par défaut) ;
+ \item \MontreCode{Debut} : début du tracé (\MontreCode{\textbackslash pflxmin} par défaut) ;
+ \item \MontreCode{Fin} : fin du tracé (\MontreCode{\textbackslash pflxmax} par défaut) ;
+ \item \MontreCode{Pas} : pas du tracé si \MontreCode{fonction} (il est déterminé \textit{automatiquement} au départ mais peut être modifié) ;
+ \item \MontreCode{Coeffs} : modifier les \textit{coefficients} du spline si \MontreCode{spline} ;
+ \item \MontreCode{Tension} : paramétrage de la \textit{tension} du tracé d'interpolation si \MontreCode{interpo}(\MontreCode{0.5} par défaut).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}[x=1cm,y=1cm,Xmin=-1,Xmax=5,Ymin=-1,Ymax=3]
+ \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto}
+ \DefinirCourbe[Nom=cf,Debut=0.35,Fin=4.2,Trace]%
+ <f>{0.6*cos(4.5*(x-4)+2.1)-1.2*sin(x-4)+0.1*x+0.2}
+ \TrouverMaximum[Debut=0.35,Fin=4.2]{f}[cf-max]
+ \TrouverMaximum[Debut=3,Fin=4]{f}[cf-maxlocal]
+ \TrouverMinimum[Debut=1,Fin=2]{f}[cf-minlocal]
+ \MarquerPts*[Couleur=red,Traits]{(cf-max)}
+ \MarquerPts*[Couleur=blue,Traits]{(cf-maxlocal)}
+ \MarquerPts*[Couleur=olive,Traits]{(cf-minlocal)}
+ \RecupererCoordonnees{(cf-max)}[\MonMaxX][\MonMaxY]
+\end{GraphiqueTikz}\\
+Le maximum est $M\approx\ArrondirNum{\MonMaxY}$, atteint en $x\approx\ArrondirNum{\MonMaxX}$
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}[x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefinirCourbeInterpo[Nom=interpotest,Couleur=red,Trace,Tension=1]%
+ {(-6,4)(-2,-2)(3,3.5)}
+ \TrouverMinimum[Methode=interpo,Tension=1]{(-6,4)(-2,-2)(3,3.5)}[interpo-min]
+ \MarquerPts*[Couleur=blue]{(interpo-min)}
+ \RecupererCoordonnees{(interpo-min)}[\MinInterpoX][\MinInterpoY]
+\end{GraphiqueTikz}\\
+Le minimum est $M\approx\ArrondirNum[3]{\MinInterpoY}$, atteint en $x\approx\ArrondirNum[3]{\MinInterpoX}$
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=1.2cm,y=1.6cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=3,Ygrille=0.5,Ygrilles=0.25]
+ \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto}
+ \def\LISTETEST{-6/2/0§-1/-2/0§2/1/0§3.5/0/-1}
+ \DefinirCourbeSpline[Nom=splinetest,Trace]{\LISTETEST}
+ \TrouverMinimum[Methode=spline]{\LISTETEST}[spline-min]
+ \MarquerPts*[Couleur=red]{(spline-min)}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Intégrales (version améliorée)}\label{integr}
+
+On peut également travailler avec des intégrales.
+
+Dans ce cas il est préférable de mettre en évidence le domaine \textbf{avant} les tracés, pour éviter la surimpression par rapport aux courbes/points.
+
+\smallskip
+
+Il est possible de :
+
+\begin{itemize}
+ \item représenter une intégrale \textbf{sous} une courbe définie ;
+ \item représenter une intégrale \textbf{entre} deux courbes ;
+ \item les bornes d'intégration peuvent être des abscisses et/ou des nœuds.
+\end{itemize}
+
+\smallskip
+
+{\small\faBomb} Compte-tenu des différences de traitement entre les courbes par formule, les courbes par interpolation simple ou les courbes par interpolation cubique, les arguments et clés peuvent différer suivant la configuration !
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TracerIntegrale[clés]<options spécifiques>{objet1}[objet2]{A}{B}
+\end{tcblisting}
+
+Les \MontreCode{[clés]} pour la définition ou le tracé, optionnelles, disponibles sont :
+
+\begin{itemize}
+ \item \MontreCode{Couleurs} =: couleurs du remplissage, sous la forme \MontreCode{Couleur} ou \MontreCode{CouleurBord/CouleurFond} (\MontreCode{gray} par défaut) ;
+ \item \MontreCode{Style} : type de remplissage, parmi \MontreCode{remplissage}/\MontreCode{hachures} (\MontreCode{remplissage} par défaut) ;
+ \item \MontreCode{Opacite} : opacité (\MontreCode{0.5} par défaut) du remplissage ;
+ \item \MontreCode{Hachures} : style (\MontreCode{north west lines} par défaut) du remplissage hachures ;
+ \item \MontreCode{Type} : type d'intégrale parmi
+ \begin{itemize}
+ \item \MontreCode{fct} (défaut) pour une intégrale sous une courbe définie par une formule ;
+ \item \MontreCode{spl} pour une intégrale sous une courbe définie par un spline cublique ;
+ \item \MontreCode{fct/fct} pour une intégrale entre deux courbes définie par une formule ;
+ \item \MontreCode{fct/spl} pour une intégrale entre une courbe (dessus) définie par une formule et une courbe (dessous) définie par un spline cubique ;
+ \item etc
+ \end{itemize}
+ \item \MontreCode{Pas} : pas (calculé par défaut sinon) pour le tracé ;
+ \item \MontreCode{Jonction} : jonction des segments (\MontreCode{bevel} par défaut) ;
+ \item \MontreCode{Bornes} : type des bornes parmi :
+ \begin{itemize}
+ \item \MontreCode{abs} pour les bornes données par les abscisses ;
+ \item \MontreCode{noeuds} pour les bornes données par les nœuds ;
+ \item \MontreCode{abs/noeud} pour les bornes données par abscisse et nœud ;
+ \item \MontreCode{noeud/abs} pour les bornes données par nœud et abscisse ;
+ \end{itemize}
+ \item \MontreCode{Bord} : booléen (\MontreCode{true} par défaut) pour afficher les traits latéraux,%
+ \item \MontreCode{NomSpline} : macro (important !) du spline généré précédemment pour un spline en version supérieure ;
+ \item \MontreCode{NomSplineB} : macro (important !) du spline généré précédemment pour un spline en version inférieure ;
+ \item \MontreCode{NomInterpo} : nom (important !) de la courbe d'interpolation générée précédemment, en version supérieure ;
+ \item \MontreCode{NomInterpoB} : nom (important !) de la courbe d'interpolation générée précédemment, en version inférieure ;
+ \item \MontreCode{Tension} : tension pour la courbe d'interpolation générée précédemment, en version supérieure ;
+ \item \MontreCode{TensionB} : tension de la courbe d'interpolation générée précédemment, en version inférieure.
+\end{itemize}
+
+\smallskip
+
+Le premier argument obligatoire est la fonction ou la courbe du spline ou la liste de points d'interpolation.
+
+\smallskip
+
+L'argument suivant, optionnel, est la fonction ou la courbe du spline ou la liste de points d'interpolation.
+
+\smallskip
+
+Les deux derniers arguments obligatoires sont les bornes de l'intégrale, données sous une forme en adéquation avec la clé \MontreCode{Bornes}.
+
+\pagebreak
+
+Dans le cas de courbes définies par des \textit{points}, il est nécessaire de travailler sur des intervalles sur lesquels la première courbe est \textbf{au-dessus} de la deuxième.
+
+Il sera sans doute intéressant de travailler avec les \textit{intersections} dans ce cas.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.6cm,y=0.06cm,
+ Xmin=0,Xmax=21,Xgrille=1,Xgrilles=0.5,
+ Ymin=0,Ymax=155,Ygrille=10,Ygrilles=5]
+ \TracerAxesGrilles%
+ [Grads=false,Elargir=2.5mm]{}{}
+ \DefinirCourbe[Nom=cf,Debut=1,Fin=20,Couleur=red]<f>{80*x*exp(-0.2*x)}
+ \TracerIntegrale
+ [Bornes=abs,Couleurs=blue/cyan!50]%
+ {f(x)}{3}{12}
+ \TracerCourbe[Couleur=red,Debut=1,Fin=20]{f(x)}
+ \TracerAxesGrilles%
+ [Grille=false,Elargir=2.5mm,Police=\small]{0,1,...,20}{0,10,...,150}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=1.2cm,y=1.6cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=3,Ygrille=0.5,Ygrilles=0.25]
+ \TracerAxesGrilles[Grads=false,Elargir=2.5mm]{}{}
+ \def\LISTETEST{-6/2/0§-1/-2/0§2/1/0§3.5/0/-1}
+ \DefinirCourbeSpline[Nom=splinetest]{\LISTETEST}
+ \TracerIntegrale[Type=spl,Style=hachures,Couleurs=purple]{splinetest}{-5.75}{-4.75}
+ \TracerIntegrale[Type=spl,Couleurs=blue]{splinetest}{-2}{-1}
+ \TracerIntegrale[Type=spl,Couleurs=orange]{splinetest}{1}{3}
+ \TracerCourbeSpline[Couleur=olive]{\LISTETEST}
+ \TracerAxesGrilles[Grille=false,Elargir=2.5mm]
+ {-7,-6,...,4}%
+ {-3,-2.5,...,3}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Tangentes}\label{tgte}
+
+L'idée de cette commande est de tracer la tangente à une courbe précédemment définie, en spécifiant :
+
+\begin{itemize}
+ \item le point (abscisse ou nœud) en lequel on souhaite travailler ;
+ \item éventuellement le direction (dans le cas d'une discontinuité ou d'une borne) ;
+ \item éventuellement le pas ($h$) du calcul ;
+ \item les \textit{écartements latéraux} pour tracer la tangente.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TracerTangente[clés]{fonction ou courbe}{point}<options traits>
+\end{tcblisting}
+
+Les \MontreCode{[clés]} pour la définition ou le tracé, optionnelles, disponibles sont :
+
+\begin{itemize}
+ \item \MontreCode{Couleurs} =: couleurs des tracés, sous la forme \MontreCode{Couleur} ou \MontreCode{CouleurLigne/CouleurPoint} (\MontreCode{black} par défaut) ;
+ \item \MontreCode{DecG} =: écartement horizontal gauche pour débuter le tracé (\MontreCode{1} par défaut) ;
+ \item \MontreCode{DecD} =: écartement horizontal gauche pour débuter le tracé (\MontreCode{1} par défaut) ;
+ \item \MontreCode{AffPoint} : booléen pour afficher le point support (\MontreCode{false} par défaut) ;
+ \item \MontreCode{Spline} : booléen pour préciser qu'un spline est utilisé (\MontreCode{false} par défaut) ;
+ \item \MontreCode{h} : pas $h$ utilisé pour les calculs (\MontreCode{0.01} par défaut) ;
+ \item \MontreCode{Sens} : permet de sprécifier le \textit{sens} de la tangente, parmi \MontreCode{gd}/\MontreCode{g}/\MontreCode{d} (\MontreCode{gd} par défaut) ;
+ \item \MontreCode{Noeud} : booléen pour préciser qu'un nœud est utilisé (\MontreCode{false} par défaut).
+\end{itemize}
+
+\smallskip
+
+Le premier argument obligatoire est la fonction ou la courbe du spline (le cas échéant).
+
+\smallskip
+
+Le dernier argument obligatoire est le point de travail (version abscisse ou nœud suivant la clé \MontreCode{Noeud}).
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
+ \DefinirCourbe[Nom=cf,Debut=5,Fin=19,Couleur=red,Trace]<f>{-2*x+3+24*log(2*x)}
+ \TrouverAntecedents[Couleur=teal,Nom=JKL,Aff=false]{cf}{53}
+ %tangente
+ \TracerTangente%
+ [Couleurs=cyan/gray,DecG=2.5,DecD=2.5,Noeud,AffPoint]{f}{(JKL-1)}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \def\LISTETEST{-6/4/-0.5§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}
+ \DefinirCourbeSpline[Nom=splinetest,Trace,Couleur=olive]{\LISTETEST}
+ \TracerTangente[Couleurs=red,Spline,AffPoint]{splinetest}{1}
+ \TracerTangente%
+ [Couleurs=blue,Spline,DecG=1.5,DecD=1.5,AffPoint]{splinetest}{-3}%
+ <pflflechegd>
+ \TracerTangente[Sens=g,Couleurs=orange,Spline,DecG=1.5,AffPoint]{splinetest}{3}
+ \TracerTangente[Sens=d,Couleurs=violet,Spline,DecD=1.5,AffPoint]{splinetest}{-6}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\section{Commandes spécifiques des fonctions de densité}
+
+\subsection{Loi normale}\label{loinormale}
+
+L'idée est de proposer de quoi travailler avec des lois normales.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\DefinirLoiNormale[clés]<nom fct>{mu}{sigma}
+\TracerLoiNormale[clés]{fct(x)}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Nom} : nom du tracé (\MontreCode{gaussienne} par défaut) ;
+ \item \MontreCode{Trace} : booléen pour tracer la courbe(\MontreCode{false} par défaut) ;
+ \item \MontreCode{Couleur} : couleur du tracé, si demandé (\MontreCode{black} par défaut) ;
+ \item \MontreCode{Debut} : borne inférieure de l'ensemble de définition (\MontreCode{\textbackslash pflxmin} par défaut) ;
+ \item \MontreCode{Fin} : borne inférieure de l'ensemble de définition (\MontreCode{\textbackslash pflxmax} par défaut) ;
+ \item \MontreCode{Pas} : pas du tracé (il est déterminé \textit{automatiquement} au départ mais peut être modifié).
+\end{itemize}
+
+À noter que l'axe vertical est à adapter en fonction des paramètres de la loi normale.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=1.25cm,y=15cm,Origx=5,Xmin=5,Xmax=15,Ymin=0,Ymax=0.3,
+ Ygrille=0.1,Ygrilles=0.05]
+ \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto}
+ \DefinirLoiNormale[Nom=gaussienne]<phi>{10}{1.5}
+ \TracerIntegrale
+ [Bornes=abs,Couleurs=blue/cyan!50]%
+ {phi(x)}{7}{13}
+ \TracerLoiNormale[Couleur=violet,Debut=5,Fin=15]{phi(x)}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Loi du khi deux}\label{loikhideux}
+
+L'idée est de proposer de quoi travailler avec des lois normales.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\DefinirLoiKhiDeux[clés]<nom fct>{k}
+\TracerLoiKhiDeux[clés]{fct(x)}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Nom} : nom du tracé (\MontreCode{gaussienne} par défaut) ;
+ \item \MontreCode{Trace} : booléen pour tracer la courbe(\MontreCode{false} par défaut) ;
+ \item \MontreCode{Couleur} : couleur du tracé, si demandé (\MontreCode{black} par défaut) ;
+ \item \MontreCode{Debut} : borne inférieure de l'ensemble de définition (\MontreCode{\textbackslash pflxmin} par défaut) ;
+ \item \MontreCode{Fin} : borne inférieure de l'ensemble de définition (\MontreCode{\textbackslash pflxmax} par défaut) ;
+ \item \MontreCode{Pas} : pas du tracé (il est déterminé \textit{automatiquement} au départ mais peut être modifié).
+\end{itemize}
+
+À noter que l'axe vertical est à adapter en fonction du paramètre de la loi du khi deux.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}[
+ x=1.5cm,y=7.5cm,
+ Xmin=0,Xmax=8,Xgrille=1,Xgrilles=0.5,
+ Ymin=0,Ymax=0.5,Ygrille=0.1,Ygrilles=0.05
+ ]
+ \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto}
+ \DefinirLoiKhiDeux[Couleur=red,Debut=0.25,Trace]<phiA>{1}
+ \DefinirLoiKhiDeux[Couleur=blue,Trace]<phiB>{2}
+ \DefinirLoiKhiDeux[Couleur=orange,Trace]<phiC>{3}
+ \DefinirLoiKhiDeux[Couleur=violet,Trace]<phiD>{4}
+ \DefinirLoiKhiDeux[Couleur=yellow,Trace]<phiE>{5}
+ \DefinirLoiKhiDeux[Couleur=teal,Trace]<phiF>{6}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\section{Commandes spécifiques des méthodes intégrales}
+
+\subsection{Méthodes géométriques}\label{methodesintergrales}
+
+L'idée est de proposer plusieurs méthodes graphiques pour illustrer graphiquement une intégrale, via :
+
+\begin{itemize}
+ \item une méthode des rectangles (Gauche, Droite ou Milieu) ;
+ \item la méthode des trapèzes.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\RepresenterMethodeIntegrale[clés]<fonction>{a}{b}
+\end{tcblisting}
+
+Les \MontreCode{Clés} disponibles sont :
+
+\begin{itemize}
+ \item \MontreCode{Couleur} : couleur des tracés, \MontreCode{red} par défaut ;
+ \item \MontreCode{NbSubDiv} : nombre de subdivisions, \MontreCode{10} par défaut ;
+ \item \MontreCode{Methode} : méthode géométrique utilisée, parmi parmi \MontreCode{RectanglesGauche / RectanglesDroite / RectanglesMilieu / Trapezes} pour spécifier la méthode utilisée, \MontreCode{RectanglesGauche} par défaut ;
+ \item \MontreCode{Remplir} : booléen, \MontreCode{true} par défaut, pour remplir les éléments graphiques ;
+ \item \MontreCode{CouleurRemplissage} : couleur de remplissage, définie par rapport à la couleur principale par défaut ;
+ \item \MontreCode{Opacite} : opacité, \MontreCode{0.25} par défaut, du remplissage.
+\end{itemize}
+
+\smallskip
+
+Le deuxième argument, optionnel et entre \MontreCode{<...>}, correspond à la fonction \textbf{précédemment définie} !
+
+\smallskip
+
+Les deux derniers arguments, obligatoires, correspondent aux bornes de l'intégrale.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}
+ [x=0.66cm,y=0.033cm,Xmin=0,Xmax=21,Xgrille=2,Xgrilles=1,
+ Ymin=0,Ymax=160,Ygrille=20,Ygrilles=10]
+ \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto}
+ \DefinirCourbe[Couleur=red,Nom=cf,Debut=1,Fin=20,Trace]<f>{80*x*exp(-0.2*x)}
+ \RepresenterMethodeIntegrale[Couleur=teal]<f>{5}{15}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}
+ [x=0.66cm,y=0.033cm,Xmin=0,Xmax=21,Xgrille=2,Xgrilles=1,
+ Ymin=0,Ymax=160,Ygrille=20,Ygrilles=10]
+ \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto}
+ \DefinirCourbe[Couleur=red,Nom=cf,Debut=1,Fin=20,Trace]<f>{80*x*exp(-0.2*x)}
+ \RepresenterMethodeIntegrale
+ [Methode=RectanglesDroite,Couleur=orange,NbSubDiv=7]<f>{1}{10}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}
+ [x=0.66cm,y=0.033cm,Xmin=0,Xmax=21,Xgrille=2,Xgrilles=1,
+ Ymin=0,Ymax=160,Ygrille=20,Ygrilles=10]
+ \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto}
+ \DefinirCourbe[Couleur=red,Nom=cf,Debut=1,Fin=20,Trace]<f>{80*x*exp(-0.2*x)}
+ \RepresenterMethodeIntegrale
+ [Methode=RectanglesMilieu,Couleur=yellow,NbSubDiv=25]<f>{1}{20}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}
+ [x=0.66cm,y=0.033cm,Xmin=0,Xmax=21,Xgrille=2,Xgrilles=1,
+ Ymin=0,Ymax=160,Ygrille=20,Ygrilles=10]
+ \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto}
+ \DefinirCourbe[Couleur=red,Nom=cf,Debut=1,Fin=20,Trace]<f>{80*x*exp(-0.2*x)}
+ \RepresenterMethodeIntegrale
+ [Methode=Trapezes,Couleur=pink,Remplir=false]<f>{1}{20}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\subsection{Méthode de Monte-Carlo}\label{montecarlo}
+
+L'idée est de proposer une commande pour simuler un calcul intégral via la méthode de Monte-Carlo.
+
+Le code se charge de simuler les \textit{tirages}, et les résultats peuvent être stockés dans des macros.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\SimulerMonteCarlo[clés]<fonction>{nb essais}[\nbptsmcok][\nbptsmcko]
+\end{tcblisting}
+
+Les \MontreCode{Clés} disponibles sont :
+
+\begin{itemize}
+ \item \MontreCode{Couleurs} : couleurs des points, \MontreCode{blue/red} par défaut ;
+ \item \MontreCode{BornesX} : bornes \textit{horizontales} pour la simulation, valant \MontreCode{\textbackslash pflxmin,\textbackslash pflxmax} par défaut ;
+ \item \MontreCode{BornesY} : bornes \textit{verticales} pour la simulation, valant \MontreCode{\textbackslash pflymin,\textbackslash pflymax} par défaut.
+\end{itemize}
+
+Le deuxième argument, optionnel et entre \MontreCode{<...>}, est la fonction \textbf{précédemment définie} à utiliser.
+
+\smallskip
+
+Les deux derniers arguments, optionnels et entre \MontreCode{[...]}, sont les macros dans lesquelles sont stockées les résultats de la simulation. Ces macros sont \MontreCode{\textbackslash nbptsmcok} et \MontreCode{\textbackslash nbptsmcko} par défaut.
+
+À noter que la macro \MontreCode{\textbackslash nbptsmc} permet de récupérer le nombre de points utilisés.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%avec \sisetup{group-minimum-digits=4} pour le formatage des "milliers"
+
+\begin{GraphiqueTikz}%
+ [x=10cm,y=10cm,Xmin=0,Xmax=1,Xgrille=0.1,Xgrilles=0.05,
+ Ymin=0,Ymax=1,Ygrille=0.1,Ygrilles=0.05]
+ \TracerAxesGrilles[Elargir=2.5mm,Dernier]{auto}{auto}
+ \DefinirCourbe[Trace,Couleur=teal,Pas=0.001]<f>{sqrt(1-x^2)}
+ \SimulerMonteCarlo<f>{5000}
+\end{GraphiqueTikz}
+
+Le nombre de points bleus est de \textcolor{blue}{\num{\nbptsmcok}},
+le nombre de points rouges est de \textcolor{red}{\num{\nbptsmcko}}.
+
+La proportion de points bleus est de $\frac{\num{\nbptsmcok}}{\num{\nbptsmc}}
+\approx \ArrondirNum[4]{\nbptsmcok/\nbptsmc}$
+et $\frac{\pi}{4} \approx \ArrondirNum[4]{pi/4}$.
+\end{tcblisting}
+
+\pagebreak
+
+\section{Commandes spécifiques des statistiques à deux variables}
+
+\subsection{Le nuage de points}\label{nuage}
+
+En marge des commandes liées aux fonctions, il est également possible de représenter des séries statistiques doubles.
+
+\smallskip
+
+Le paragraphe suivant montre que l'ajout d'une clé permet de rajouter la droite d'ajustement linéaire.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%dans l'environnement GraphiqueTikz
+\TracerNuage[clés]{ListeX}{ListeY}
+\end{tcblisting}
+
+La \MontreCode{[clé]} optionnelle est :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{CouleurNuage} : couleur des points du nuage (\MontreCode{black} par défaut).
+\end{itemize}
+
+\smallskip
+
+Les arguments, obligatoires, permettent de spécifier :
+
+\smallskip
+
+\begin{itemize}
+ \item la liste des abscisses ;
+ \item la liste des ordonnées.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrille=20,Xgrilles=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrille=25,Ygrilles=5]
+ %préparation de la fenêtre
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\small]{0,10,...,160}{250,275,...,400}
+ %nuage de points
+ \TracerNuage[Style=x,CouleurNuage=red]{0,50,100,140}{275,290,315,350}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\subsection{La droite de régression}\label{reglin}
+
+La droite de régression linéaire (obtenue par la méthode des moindres carrés) peut facilement être rajoutée, en utilisant la clé \MontreCode{TracerDroite}.
+
+\smallskip
+
+Dans ce cas, de nouvelles clés sont disponibles :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{CouleurDroite} : couleur de la droite (\MontreCode{black} par défaut) ;
+ \item \MontreCode{Arrondis} : précision des coefficients (\MontreCode{vide} par défaut) ;
+ \item \MontreCode{Debut} : abscisse initiale du tracé (\MontreCode{\textbackslash pflxmin} par défaut) ;
+ \item \MontreCode{Fin} : abscisse terminale du tracé (\MontreCode{\textbackslash pflxmax} par défaut) ;
+ \item \MontreCode{Nom} : nom du tracé, pour exploitation ultérieure (\MontreCode{reglin} par défaut).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrille=20,Xgrilles=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrille=25,Ygrilles=5]
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\small]{0,10,...,160}{250,275,...,400}
+ %nuage et droite
+ \TracerNuage%
+ [CouleurNuage=red,CouleurDroite=brown,TracerDroite]%
+ {0,50,100,140}{275,290,315,350}
+ %image
+ \PlacerImages[Couleurs=cyan/magenta,Traits]{d}{120}
+ %antécédents
+ \PlacerAntecedents[Style=x,Couleurs=blue/green!50!black,Traits]{reglin}{300}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\subsection{Autres régressions}\label{regressions}
+
+En partenariat avec le package \MontreCode{xint-regression}, chargé par le package (mais \textit{désactivable} via l'option \MontreCode{[nonxintreg]}), il est possible de travailler sur d'autres types de régression :
+
+\begin{itemize}
+ \item linéaire \fbox{$ax+b$} ;
+ \item quadratique \fbox{$ax^2+bx+c$} ;
+ \item cubique \fbox{$ax^3+bx^2+cx+d$} ;
+ \item puissance \fbox{$ax^b$} ;
+ \item exponentielle \fbox{$ab^x$} ou \fbox{$e^{ax+b}$} ou \fbox{$b e^{ax}$} ou \fbox{$C + be^{ax}$} ;
+ \item logarithmique \fbox{$a+b\ln(x)$} ;
+ \item hyperbolique \fbox{$a+\displaystyle\frac{b}{x}$}.
+\end{itemize}
+
+La commande, similaire à celle de définition d'une courbe, est :
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\TracerAjustement[clés]<non fct>{type}<arrondis>{listex}{listey}
+\end{tcblisting}
+
+Les \MontreCode{[clés]} disponibles sont, de manière classique :
+
+\begin{itemize}
+ \item \MontreCode{Debut} : borne inférieure de l'ensemble de définition (\MontreCode{\textbackslash pflxmin} par défaut) ;
+ \item \MontreCode{Fin} : borne inférieure de l'ensemble de définition (\MontreCode{\textbackslash pflxmax} par défaut) ;
+ \item \MontreCode{Nom} : nom de la courbe (important pour la suite !) ;
+ \item \MontreCode{Couleur} : couleur du tracé (\MontreCode{black} par défaut) ;
+ \item \MontreCode{Pas} : pas du tracé (il est déterminé \textit{automatiquement} au départ mais peut être modifié).
+\end{itemize}
+
+\pagebreak
+
+Le deuxième argument, optionnel et entre \MontreCode{<...>} permet de nommer la fonction de régression.
+
+Le troisième argument, obligatoire et entre \MontreCode{\{...\}} permet de choisir le type de régression, parmi :
+
+\begin{itemize}
+ \item \MontreCode{lin} : linéaire \fbox{$ax+b$} ;
+ \item \MontreCode{quad} : quadratique \fbox{$ax^2+bx+c$} ;
+ \item \MontreCode{cub} : cubique \fbox{$ax^3+bx^2+cx+d$} ;
+ \item \MontreCode{pow} : puissance \fbox{$ax^b$} ;
+ \item \MontreCode{expab} : exponentielle \fbox{$ab^x$}
+ \item \MontreCode{hyp} : hyperbolique \fbox{$a+\displaystyle\frac{b}{x}$} ;
+ \item \MontreCode{log} : logarithmique \fbox{$a+b\ln(x)$} ;
+ \item \MontreCode{exp} : exponentielle \fbox{$e^{ax+b}$} ;
+ \item \MontreCode{expalt} : exponentielle \fbox{$be^{ax}$} ;
+ \item \MontreCode{expoff=C} : exponentielle \fbox{$C + be^{ax}$}.
+\end{itemize}
+
+Le quatrième argument, optionnel et entre \MontreCode{<...>} permet de spécifier le ou les arrondis pour les coefficients de la fonction de régression.
+
+Les deux derniers arguments sont les listes des valeurs de X et de Y.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\def\LISTEXX{0,50,100,140}\def\LISTEYY{275,290,315,350}%
+ListeX := \LISTEXX\\
+ListeY := \LISTEYY
+
+\begin{GraphiqueTikz}
+ [x=0.05cm,y=0.04cm,Xmin=0,Xmax=160,Xgrille=20,Xgrilles=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrille=25,Ygrilles=5]
+ %préparation de la fenêtre
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\footnotesize]{auto}{auto}
+ %nuage de points
+ \TracerNuage[Style=o,CouleurNuage=red]{\LISTEXX}{\LISTEYY}
+ %ajustement expoffset
+ \TracerAjustement[Couleur=blue,Nom=ajust]<ajust>{expoff=250}{\LISTEXX}{\LISTEYY}
+ %exploitations
+ \PlacerImages[Couleurs=cyan/magenta,Traits]{ajust}{80}
+ \PlacerAntecedents[Style=x,Couleurs=blue/green!50!black,Traits]{ajust}{325}
+\end{GraphiqueTikz}
+
+\xintexpoffreg[offset=250,round=3/1]{\LISTEXX}{\LISTEYY}%
+On obtient $y=250+\num{\expregoffb}\text{e}^{\num{\expregoffa}x}$
+\end{tcblisting}
+
+\pagebreak
+
+\section{Codes source des exemples de la page d'accueil}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}[x=0.85cm,y=0.35cm,Xmin=0,Xmax=10,Ymin=0,Ymax=16]
+ %préparation de la fenêtre
+ \TracerAxesGrilles[Derriere,Elargir=2.5mm,Police=\small]{0,1,...,10}{0,2,...,16}
+ %déf des fonctions avec nom courbe + nom fonction + expression (tracés à la fin !)
+ \DefinirCourbe[Nom=cf]<f>{3*x-6}
+ \DefinirCourbe[Nom=cg]<g>{-(x-6)^2+12}
+ %antécédents et intersection
+ \TrouverIntersections[Aff=false,Nom=K]{cf}{cg}
+ \TrouverAntecedents[AffDroite,Couleur=orange,Nom=I]{cg}{8}
+ \TrouverAntecedents[Aff=false,Nom=J]{cg}{0}
+ %intégrale sous une courbe, avec intersection
+ \TracerIntegrale%
+ [Couleurs=blue/purple,Bornes=noeuds,Style=hachures,Hachures=bricks]%
+ {g(x)}%
+ {(I-2)}{(J-2)}
+ %intégrale entre les deux courbes
+ \TracerIntegrale[Bornes=noeuds,Type=fct/fct]%
+ {f(x)}[g(x)]%
+ {(K-1)}{(K-2)}
+ %tracé des courbes et des points
+ \TracerCourbe[Couleur=red]{f(x)}
+ \TracerCourbe[Couleur=teal]{g(x)}
+ \PlacerPoints<\small>{(K-1)/below right/L,(K-2)/above left/M}%
+ \PlacerPoints[violet]<\small>{(I-1)/above left/D,(I-2)/above right/E}%
+ %tangente
+ \TracerTangente[Couleurs=pink!75!black/yellow,kl=2,kr=2,AffPoint]{g}{5}
+ %images
+ \PlacerImages[Couleurs=cyan]{g}{7,7.25,7.5}
+ %surimpression des axes
+ \TracerAxesGrilles[Devant,Elargir=2.5mm]{0,1,...,10}{0,2,...,16}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=3.5cm,y=4cm,
+ Xmin=0,Xmax=3.5,Xgrille=pi/12,Xgrilles=pi/24,
+ Ymin=-1.05,Ymax=1.05,Ygrille=0.2,Ygrilles=0.05]
+ %préparation de la fenêtre
+ \TracerAxesGrilles[Derriere,Elargir=2.5mm,Format=ntrig/nsqrt]{}{}
+ %rajouter des valeurs
+ \RajouterValeursAxeX{0.25,1.4,3.3}{\num{0.25},\num{1.4},\num{3.3}}
+ %fonction trigo (déf + tracé)
+ \DefinirCourbe[Nom=ccos,Debut=0,Fin=pi]<fcos>{cos(x)}
+ \DefinirCourbe[Nom=csin,Debut=0,Fin=pi]<fsin>{sin(x)}
+ %intégrale
+ \TrouverIntersections[Aff=false,Nom=JKL]{ccos}{csin}
+ \TracerIntegrale%
+ [Bornes=noeud/abs,Type=fct/fct,Couleurs=cyan/cyan!50]%
+ {fsin(x)}[fcos(x)]%
+ {(JKL-1)}{pi}
+ %tracé des courbes
+ \TracerCourbe[Couleur=red,Debut=0,Fin=pi]{fcos(x)}
+ \TracerCourbe[Couleur=olive,Debut=0,Fin=pi]{fsin(x)}
+ %antécédent(s)
+ \PlacerAntecedents[Couleurs=blue/teal!50!black,Traits]{ccos}{-0.25}
+ \PlacerAntecedents[Couleurs=red/magenta!50!black,Traits]{csin}{0.5}
+ \PlacerAntecedents[Couleurs=orange/orange!50!black,Traits]{csin}{sqrt(2)/2}
+ \PlacerAntecedents[Couleurs=green!50!black/green,Traits]{csin}{sqrt(3)/2}
+ %surimpression axes
+ \TracerAxesGrilles[Devant,Format=ntrig/nsqrt]%
+ {pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+ {0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\newpage
+
+\section{Commandes auxiliaires}
+
+\subsection{Intro}
+
+En marge des commandes purement \textit{graphiques}, quelques commandes auxiliaires sont disponibles :
+
+\begin{itemize}
+ \item une pour formater un nombre avec une précision donnée ;
+ \item une pour travailler sur des nombres aléatoires, avec contraintes.
+\end{itemize}
+
+\subsection{Arrondi formaté}\label{numarrond}
+
+La commande \MontreCode{\textbackslash ArrondirNum} permet de formater, grâce au package \MontreCode{siunitx}, un nombre (ou un calcul), avec une précision donnée. Cela peut être \textit{utile} pour formater des résultats obtenus grâce aux commandes de récupération des coordonnées, par exemple.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\ArrondirNum[précision]{calcul xint}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\ArrondirNum{1/3}\\
+\ArrondirNum{16.1}\\
+\ArrondirNum[3]{log(10)}\\
+\end{tcblisting}
+
+\subsection{Nombre aléatoire sous contraintes}\label{nbalea}
+
+L'idée de cette deuxième commande est de pouvoir déterminer un nombre aléatoire :
+
+\begin{itemize}
+ \item entier ou décimal ;
+ \item sous contraintes (entre deux valeurs fixées).
+\end{itemize}
+
+Cela peut permettre, par exemple, de travailler sur des courbes avec points \textit{aléatoires}, mais respectant certaines contraintes.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\ChoisirNbAlea(*)[precision (déf 0)]{borne inf}{borne sup}[\macro]
+\end{tcblisting}
+
+La version étoilée prend les contraintes sous forme stricte ($\text{borne inf} < \text{macro} < \text{borne sup}$) alors que la version normale prend les contraintes sous forme large ($\text{borne inf} \leq \text{macro} \leq \text{borne sup}$).
+
+\smallskip
+
+À noter que les \textit{bornes} peuvent être des \textit{macros} existantes !
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%un nombre (2 chiffres après la virgule) entre 0.75 et 0.95
+%un nombre (2 chiffres après la virgule) entre 0.05 et 0.25
+%un nombre (2 chiffres après la virgule) entre 0.55 et \YrandMax
+%un nombre (2 chiffres après la virgule) entre \YrandMin et 0.45
+\ChoisirNbAlea[2]{0.75}{0.95}[\YrandMax]%
+\ChoisirNbAlea[2]{0.05}{0.25}[\YrandMin]%
+\ChoisirNbAlea*[2]{0.55}{\YrandMax}[\YrandA]%
+\ChoisirNbAlea*[2]{\YrandMin}{0.45}[\YrandB]%
+%vérification
+\num{\YrandMax} \& \num{\YrandMin} \& \num{\YrandA} \& \num{\YrandB}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%un nombre (2 chiffres après la virgule) entre 0.75 et 0.95
+%un nombre (2 chiffres après la virgule) entre 0.05 et 0.25
+%un nombre (2 chiffres après la virgule) entre 0.55 et \YrandMax
+%un nombre (2 chiffres après la virgule) entre \YrandMin et 0.45
+\ChoisirNbAlea[2]{0.75}{0.95}[\YrandMax]%
+\ChoisirNbAlea[2]{0.05}{0.25}[\YrandMin]%
+\ChoisirNbAlea*[2]{0.55}{\YrandMax}[\YrandA]%
+\ChoisirNbAlea*[2]{\YrandMin}{0.45}[\YrandB]%
+%vérification
+\num{\YrandMax} \& \num{\YrandMin} \& \num{\YrandA} \& \num{\YrandB}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%la courbe est prévue pour qu'il y ait 3 antécédents
+\ChoisirNbAlea[2]{0.75}{0.95}[\YrandMax]%
+\ChoisirNbAlea[2]{0.05}{0.25}[\YrandMin]%
+\ChoisirNbAlea*[2]{0.55}{\YrandMax}[\YrandA]%
+\ChoisirNbAlea*[2]{\YrandMin}{0.45}[\YrandB]%
+
+\begin{GraphiqueTikz}
+ [x=0.075cm,y=7.5cm,Xmin=0,Xmax=150,Xgrille=10,Xgrilles=5,
+ Ymin=0,Ymax=1,Ygrille=0.1,Ygrilles=0.05]
+ \TracerAxesGrilles[Dernier,Elargir=2.5mm]{auto}{auto}
+ \DefinirCourbeInterpo[Couleur=red,Trace,Nom=fonctiontest,Tension=0.75]
+ {(0,\YrandA)(40,\YrandMin)(90,\YrandMax)(140,\YrandB)}
+ \TrouverAntecedents[Aff=false,Nom=ANTECED]{fonctiontest}{0.5}
+ \PlacerAntecedents[Couleurs=blue/teal,Traits]{fonctiontest}{0.5}
+ \RecupererAbscisse{(ANTECED-1)}[\Aalpha]
+ \RecupererAbscisse{(ANTECED-2)}[\Bbeta]
+ \RecupererAbscisse{(ANTECED-3)}[\Cgamma]
+\end{GraphiqueTikz}
+
+Les solutions de $f(x)=\num{0.5}$ sont, par lecture graphique :
+$\begin{cases}
+ \alpha \approx \ArrondirNum[0]{\Aalpha} \\
+ \beta \approx \ArrondirNum[0]{\Bbeta} \\
+ \gamma \approx \ArrondirNum[0]{\Cgamma}
+\end{cases}$.
+\end{tcblisting}
+
+\newpage
+
+\section{Liste des commandes}
+
+Les commandes disponibles sont :
+
+\NewDocumentCommand\lstcmd{ m m m }{%
+ \item[\texttt{#1}] : \mintinline{latex}|#2|\hfill{}page \pageref{#3}
+}
+
+\begin{description}
+ \lstcmd{environnement~~}{\begin{GraphiqueTikz}...\end{GraphiqueTikz}}{creaenvt}
+ \lstcmd{axes et grilles}{\TracerAxesGrille}{creaaxesgr}
+ \lstcmd{aj val axes X~~}{\RajouterValeursAxeX}{ajoutvals}
+ \lstcmd{aj val axes Y~~}{\RajouterValeursAxeY}{ajoutvals}
+ \lstcmd{def fonction~~~}{\DefinirCourbe}{deftracfct}
+ \lstcmd{tracé courbe~~~}{\TracerCourbe}{deftracfct}
+ \lstcmd{def interpo~~~~}{\DefinirCourbeInterpo}{deftracinterpo}
+ \lstcmd{tracé interpo~~}{\TracerCourbeInterpo}{deftracinterpo}
+ \lstcmd{def spline~~~~~}{\DefinirCourbeSpline}{deftracfctspline}
+ \lstcmd{tracé spline~~~}{\TracerCourbeSpline}{deftracfctspline}
+ \lstcmd{tracé droite~~~}{\TracerDroite}{tracdroite}
+ \lstcmd{asymptote vert~}{\TracerAsymptote}{tracdroite}
+ \lstcmd{def points~~~~~}{\DefinirPts}{defpts}
+ \lstcmd{def image~~~~~~}{\DefinirImage}{defpts}
+ \lstcmd{marq pts~~~~~~~}{\MarquerPts}{markpts}
+ \lstcmd{placer txt~~~~~}{\PlacerTexte}{placetxt}
+ \lstcmd{récup absc~~~~~}{\RecupererAbscisse}{recupcoordo}
+ \lstcmd{récup ordo~~~~~}{\RecupererOrdonnee}{recupcoordo}
+ \lstcmd{récup coordos~~}{\RecupererCoordonnees}{recupcoordo}
+ \lstcmd{images~~~~~~~~~}{\PlacerImages}{images}
+ \lstcmd{antécédents~~~~}{\TrouverAntecedents}{defanteced}
+ \lstcmd{antécédents~~~~}{\PlacerAntecedents}{tracanteced}
+ \lstcmd{intersection~~~}{\TrouverIntersections}{intersect}
+ \lstcmd{maximum~~~~~~~~}{\TrouverMaximum}{maximum}
+ \lstcmd{minimum~~~~~~~~}{\TrouverMinimum}{minimum}
+ \lstcmd{intégrale~~~~~~}{\TracerIntegrale}{integr}
+ \lstcmd{méthodes int~~~}{\RepresenterMethodeIntegrale}{methodesintergrales}
+ \lstcmd{Monte-Carlo~~~~}{\SimulerMonteCarlo}{montecarlo}
+ \lstcmd{tangente~~~~~~~}{\TracerTangente}{tgte}
+ \lstcmd{loi normale~~~~}{\DefinirLoiNormale}{loinormale}
+ \lstcmd{loi normale~~~~}{\TracerLoiNormale}{loinormale}
+ \lstcmd{loi khideux~~~~}{\DefinirLoiKhiDeux}{loikhideux}
+ \lstcmd{loi khideux~~~~}{\TracerLoiKhiDeux}{loikhideux}
+ \lstcmd{stats 2 var~~~~}{\TracerNuage}{nuage}
+ \lstcmd{regressions~~~~}{\TracerAjustement}{regressions}
+ \lstcmd{arrondi~~~~~~~~}{\ArrondirNum}{numarrond}
+ \lstcmd{nb aléat~~~~~~~}{\ChoisirNbAlea}{nbalea}
+\end{description}
+
+\pagebreak
+
+\section{Historique}
+
+\begin{quote}
+\begin{verbatim}
+0.1.6 : Asymptote verticale + Méthodes intégrales (géom + Monte Carlo)
+0.1.5 : Correction d'un bug sur les rajouts de valeurs + NÅ“ud pour une image + [en] version !
+0.1.4 : Placement de texte
+0.1.3 : Ajout de régressions avec le package xint-regression
+0.1.2 : Droites + Extremums
+0.1.1 : Densité loi normale et khi deux + Marquage points + Améliorations
+0.1.0 : Version initiale
+\end{verbatim}
+\end{quote}
+
+\end{document} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.pdf b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.pdf
new file mode 100644
index 0000000000..917caaab19
--- /dev/null
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.tex b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.tex
new file mode 100644
index 0000000000..068ba103eb
--- /dev/null
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.tex
@@ -0,0 +1,251 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode}
+
+\documentclass[a4paper,english,11pt]{article}
+\usepackage[margin=1cm,includefoot]{geometry}
+\usepackage[english]{tkz-grapheur}
+\usepackage{tcolorbox}
+\tcbuselibrary{skins,minted}
+\usepackage{babel}
+
+\begin{document}
+
+\part*{Integrals examples}
+
+\section{Below cruve, by default}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Behind,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineCurve[Name=ch]<h>{0.25*(x+2)^2+1}
+ \DrawIntegral%
+ [Colors=blue/cyan,Style=fill]%
+ {h(x)} %formula
+ {-5.25}{1.5}
+ \DrawCurve[Color=red]{h(x)}
+ \DrawAxisGrids[Above,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Behind interpolation curve}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineLstInterpol{(-6,4)(-2,-2)(3,3.5)}[\interpoA]
+ \DefineInterpoCurve[Name=interpotest,Tension=1.05]{\interpoA}
+ \DrawIntegral%
+ [NameInterpo=interpotest,Colors=blue/cyan,Style=fill,Type=itp,Tension=1.05]%
+ {\interpoA} %pointsinterpo
+ {-5.25}{1.5}
+ \DrawInterpoCurve[Color=red,Tension=1.05]{\interpoA}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Behind cubic spline}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineLstSpline{-6/4/-2§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}[\lstsplineA]
+ \DefineSplineCurve[Name=splinetest]{\lstsplineA}<\SplineTeal>
+ \DrawIntegral%
+ [NameSpline=\SplineTeal,Type=spl,Colors=blue/purple,Style=hatch]%
+ {splinetest} %namesplinecurve
+ {-5}{2}
+ \DrawSplineCurve[Color=teal]{\lstsplineA}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between curves}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineCurve[Name=ch]<h>{0.25*(x+2)^2-1}
+ \DefineCurve[Name=ck]<k>{-0.25*x+1}
+ \FindIntersections[Name=ITSC,Disp=false]{ch}{ck}
+ \DrawIntegral%
+ [Colors=olive/pink,Style=fill,Type=fct/fct,Bounds=node/abs]%
+ {h(x)}[k(x)] %formules
+ {(ITSC-1)}{1.5}
+ \DrawCurve[Color=red]{h(x)}
+ \DrawCurve[Color=blue]{k(x)}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between splines}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineLstSpline{-6/4/-2§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}[\lstsplineA]
+ \DefineLstSpline{-6/-2/3§-2/4/0§3/-1/0}[\lstsplineB]
+ \DefineSplineCurve[Name=splinetestolive]{\lstsplineA}<\SplineOlive>
+ \DefineSplineCurve[Name=splinetestteal]{\lstsplineB}<\SplineTeal>
+ \FindIntersections[Name=ITT,Disp=false]{splinetestteal}{splinetestolive}
+ \DrawIntegral%
+ [NameSpline=\SplineTeal,NameSplineB=\SplineOlive,Type=spl/spl,Colors=blue/purple,Bounds=nodes]%
+ {splinetestolive} %Namecourbespline
+ [splinetestteal] %Namecourbespline
+ {(ITT-1)}{(ITT-2)}
+ \DrawSplineCurve[Color=teal]{\lstsplineA}
+ \DrawSplineCurve[Color=olive]{\lstsplineB}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between interpolations}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineLstInterpol{(-6,4)(-2,-2)(3,3.5)}[\interpoA]
+ \DefineInterpoCurve[Name=interpotest]{\interpoA}
+ \DefineLstInterpol{(-6,-2)(-1,4)(3,0)}[\interpoB]
+ \DefineInterpoCurve[Name=interpotesta]{\interpoB}
+ \DrawIntegral%
+ [NameInterpo=interpotesta,NameInterpoB=interpotest,Type=itp/itp,Colors=olive/pink]%
+ {\interpoB} %pointsinterpo
+ [\interpoA] %pointsinterpo
+ {-2}{1}
+ \DrawInterpoCurve[Color=red]{\interpoA}
+ \DrawInterpoCurve[Color=blue]{\interpoB}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Betweend function and spline}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineCurve[Name=ch]<h>{-0.25*(x+2)^2+3.5}
+ \DefineLstSpline{-6/4/-2§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}[\lstsplineA]
+ \DefineSplineCurve[Name=splineblue]{\lstsplineA}<\Splineblue>
+ \DrawIntegral%
+ [NameSplineB=\Splineblue,Type=fct/spl,Colors=olive/pink]%
+ {h(x)} %formule
+ [splineblue] %Namecourbespline
+ {-3}{0}
+ \DrawCurve[Color=red]{h(x)}
+ \DrawSplineCurve[Color=blue]{\lstsplineA}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between spline and function}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineCurve[Name=ch]<h>{0.25*(x+2)^2-2}
+ \DefineLstSpline{-6/4/2§-5/-2/-2§-4/0/2§-2/2/0§1/-2/-2§3/3.5/-0.5}[\lstsplineA]
+ \DefineSplineCurve[Name=splineblue]{\lstsplineA}<\Splineblue>
+ \DrawIntegral%
+ [NameSpline=\Splineblue,Type=spl/fct,Colors=olive/pink]%
+ {splineblue} %Namecourbespline
+ [h(x)] %formule
+ {-3}{-1}
+ \DrawCurve[Color=red]{h(x)}
+ \DrawSplineCurve[Color=blue]{\lstsplineA}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between function and interpo}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineCurve[Name=cm]<m>{-0.25*(x+2)^2+4}
+ \DefineLstInterpol{(-6,4)(-5,-2)(-2,1)(1,-2)(3,3)}[\interpoB]
+ \DefineInterpoCurve[Name=interpotestb]{\interpoB}
+ \DrawIntegral%
+ [NameInterpoB=interpotestb,Type=fct/itp,Colors=olive/pink]%
+ {m(x)} %formule
+ [\interpoB] %pointsinterpo
+ {-4}{1}
+ \DrawCurve[Color=red]{m(x)}
+ \DrawInterpoCurve[Color=blue]{\interpoB}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between interpo and function}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineCurve[Name=courbeQ]<q>{0.25*(x+2)^2-2.5}
+ \DefineLstInterpol{(-6,-2)(-5,4)(-2,-1)(1,2)(3,-2)}[\interpoA]
+ \DefineInterpoCurve[Name=interpotest]{\interpoA}
+ \FindIntersections[Name=FGH,Disp]{interpotest}{courbeQ}
+ \DrawIntegral%
+ [NameInterpo=interpotest,Type=itp/fct,Colors=olive/pink,Bounds=nodes]%
+ {\interpoA} %pointsinterpo
+ [q(x)] %formule
+ {(FGH-1)}{(FGH-2)}
+ \DrawCurve[Color=red]{q(x)}
+ \DrawInterpoCurve[Color=blue]{\interpoA}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between spline and interpo}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineLstSpline{-6/-2/2§-3/4/0§3/-2/0}[\lstsplineA]
+ \DefineSplineCurve[Name=splinered]{\lstsplineA}<\Splinered>
+ \DefineLstInterpol{(-6,4)(-5,-2)(-2,1)(1,-2)(3,3)}[\interpoB]
+ \DefineInterpoCurve[Name=interpotestb]{\interpoB}
+ \DrawIntegral%
+ [NameInterpoB=interpotestb,NameSpline=\Splinered,Type=spl/itp,Colors=olive/pink]%
+ {splinered} %Namecourbespline
+ [\interpoB] %pointsinterpo
+ {-4}{-2}
+ \DrawSplineCurve[Color=red]{\lstsplineA}
+ \DrawInterpoCurve[Color=blue]{\interpoB}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between interpo and spline}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineLstSpline{-6/4/-2§-3/-2.25/0§3/3/0}[\lstsplineB]
+ \DefineSplineCurve[Name=splineblue]{\lstsplineB}<\Splineblue>
+ \DefineLstInterpol{(-6,-2)(-5,4)(-2,-1)(1,2)(3,-2.5)}[\interpoA]
+ \DefineInterpoCurve[Name=interpotest]{\interpoA}
+ \FindIntersections[Name=UIO,Disp]{interpotest}{splineblue}
+ \DrawIntegral%
+ [NameInterpo=interpotest,NameSplineB=\Splineblue,Type=itp/spl,Colors=olive/pink,Bounds=nodes]%
+ {\interpoA} %pointsinterpo
+ [splineblue] %Namecourbespline
+ {(UIO-1)}{(UIO-2)}
+ \DrawSplineCurve[Color=blue]{\lstsplineB}
+ \DrawInterpoCurve[Color=red]{\interpoA}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\end{document} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.pdf b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.pdf
new file mode 100644
index 0000000000..985d09c617
--- /dev/null
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.tex b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.tex
new file mode 100644
index 0000000000..58fc6473f8
--- /dev/null
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.tex
@@ -0,0 +1,251 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode}
+
+\documentclass[a4paper,french,11pt]{article}
+\usepackage[margin=1cm,includefoot]{geometry}
+\usepackage{tkz-grapheur}
+\usepackage{tcolorbox}
+\tcbuselibrary{skins,minted}
+\usepackage{babel}
+
+\begin{document}
+
+\part*{Exemples des différents cas d'intégrales}
+
+\section{Sous courbe, par défaut}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Derriere,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefinirCourbe[Nom=ch]<h>{0.25*(x+2)^2+1}
+ \TracerIntegrale%
+ [Couleurs=blue/cyan,Style=remplissage]%
+ {h(x)} %formule
+ {-5.25}{1.5}
+ \TracerCourbe[Couleur=red]{h(x)}
+ \TracerAxesGrilles[Devant,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\section{Sous courbe d'interpolation}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Grads=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefinirListeInterpo{(-6,4)(-2,-2)(3,3.5)}[\interpoA]
+ \DefinirCourbeInterpo[Nom=interpotest,Tension=1.05]{\interpoA}
+ \TracerIntegrale%
+ [NomInterpo=interpotest,Couleurs=blue/cyan,Style=remplissage,Type=itp,Tension=1.05]%
+ {\interpoA} %pointsinterpo
+ {-5.25}{1.5}
+ \TracerCourbeInterpo[Couleur=red,Tension=1.05]{\interpoA}
+ \TracerAxesGrilles[Grille=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\section{Sous spline cubique}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Grads=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefinirListeSpline{-6/4/-2§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}[\lstsplineA]
+ \DefinirCourbeSpline[Nom=splinetest]{\lstsplineA}<\SplineTeal>
+ \TracerIntegrale%
+ [NomSpline=\SplineTeal,Type=spl,Couleurs=blue/purple,Style=hachures]%
+ {splinetest} %nomcourbespline
+ {-5}{2}
+ \TracerCourbeSpline[Couleur=teal]{\lstsplineA}
+ \TracerAxesGrilles[Grille=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\section{Entre courbes}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Grads=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefinirCourbe[Nom=ch]<h>{0.25*(x+2)^2-1}
+ \DefinirCourbe[Nom=ck]<k>{-0.25*x+1}
+ \TrouverIntersections[Nom=ITSC,Aff=false]{ch}{ck}
+ \TracerIntegrale%
+ [Couleurs=olive/pink,Style=remplissage,Type=fct/fct,Bornes=noeud/abs]%
+ {h(x)}[k(x)] %formules
+ {(ITSC-1)}{1.5}
+ \TracerCourbe[Couleur=red]{h(x)}
+ \TracerCourbe[Couleur=blue]{k(x)}
+ \TracerAxesGrilles[Grille=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\section{Entre splines}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Grads=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefinirListeSpline{-6/4/-2§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}[\lstsplineA]
+ \DefinirListeSpline{-6/-2/3§-2/4/0§3/-1/0}[\lstsplineB]
+ \DefinirCourbeSpline[Nom=splinetestolive]{\lstsplineA}<\SplineOlive>
+ \DefinirCourbeSpline[Nom=splinetestteal]{\lstsplineB}<\SplineTeal>
+ \TrouverIntersections[Nom=ITT,Aff=false]{splinetestteal}{splinetestolive}
+ \TracerIntegrale%
+ [NomSpline=\SplineTeal,NomSplineB=\SplineOlive,Type=spl/spl,Couleurs=blue/purple,Bornes=noeuds]%
+ {splinetestolive} %nomcourbespline
+ [splinetestteal] %nomcourbespline
+ {(ITT-1)}{(ITT-2)}
+ \TracerCourbeSpline[Couleur=teal]{\lstsplineA}
+ \TracerCourbeSpline[Couleur=olive]{\lstsplineB}
+ \TracerAxesGrilles[Grille=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\section{Entre interpolations}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Grads=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefinirListeInterpo{(-6,4)(-2,-2)(3,3.5)}[\interpoA]
+ \DefinirCourbeInterpo[Nom=interpotest]{\interpoA}
+ \DefinirListeInterpo{(-6,-2)(-1,4)(3,0)}[\interpoB]
+ \DefinirCourbeInterpo[Nom=interpotesta]{\interpoB}
+ \TracerIntegrale%
+ [NomInterpo=interpotesta,NomInterpoB=interpotest,Type=itp/itp,Couleurs=olive/pink]%
+ {\interpoB} %pointsinterpo
+ [\interpoA] %pointsinterpo
+ {-2}{1}
+ \TracerCourbeInterpo[Couleur=red]{\interpoA}
+ \TracerCourbeInterpo[Couleur=blue]{\interpoB}
+ \TracerAxesGrilles[Grille=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\section{Entre fonction et spline}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Grads=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefinirCourbe[Nom=ch]<h>{-0.25*(x+2)^2+3.5}
+ \DefinirListeSpline{-6/4/-2§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}[\lstsplineA]
+ \DefinirCourbeSpline[Nom=splineblue]{\lstsplineA}<\Splineblue>
+ \TracerIntegrale%
+ [NomSplineB=\Splineblue,Type=fct/spl,Couleurs=olive/pink]%
+ {h(x)} %formule
+ [splineblue] %nomcourbespline
+ {-3}{0}
+ \TracerCourbe[Couleur=red]{h(x)}
+ \TracerCourbeSpline[Couleur=blue]{\lstsplineA}
+ \TracerAxesGrilles[Grille=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\section{Entre spline et fonction}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Grads=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefinirCourbe[Nom=ch]<h>{0.25*(x+2)^2-2}
+ \DefinirListeSpline{-6/4/2§-5/-2/-2§-4/0/2§-2/2/0§1/-2/-2§3/3.5/-0.5}[\lstsplineA]
+ \DefinirCourbeSpline[Nom=splineblue]{\lstsplineA}<\Splineblue>
+ \TracerIntegrale%
+ [NomSpline=\Splineblue,Type=spl/fct,Couleurs=olive/pink]%
+ {splineblue} %nomcourbespline
+ [h(x)] %formule
+ {-3}{-1}
+ \TracerCourbe[Couleur=red]{h(x)}
+ \TracerCourbeSpline[Couleur=blue]{\lstsplineA}
+ \TracerAxesGrilles[Grille=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\section{Entre fonction et interpo}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Grads=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefinirCourbe[Nom=cm]<m>{-0.25*(x+2)^2+4}
+ \DefinirListeInterpo{(-6,4)(-5,-2)(-2,1)(1,-2)(3,3)}[\interpoB]
+ \DefinirCourbeInterpo[Nom=interpotestb]{\interpoB}
+ \TracerIntegrale%
+ [NomInterpoB=interpotestb,Type=fct/itp,Couleurs=olive/pink]%
+ {m(x)} %formule
+ [\interpoB] %pointsinterpo
+ {-4}{1}
+ \TracerCourbe[Couleur=red]{m(x)}
+ \TracerCourbeInterpo[Couleur=blue]{\interpoB}
+ \TracerAxesGrilles[Grille=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\section{Entre interpo et fonction}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Grads=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefinirCourbe[Nom=courbeQ]<q>{0.25*(x+2)^2-2.5}
+ \DefinirListeInterpo{(-6,-2)(-5,4)(-2,-1)(1,2)(3,-2)}[\interpoA]
+ \DefinirCourbeInterpo[Nom=interpotest]{\interpoA}
+ \TrouverIntersections[Nom=FGH,Aff]{interpotest}{courbeQ}
+ \TracerIntegrale%
+ [NomInterpo=interpotest,Type=itp/fct,Couleurs=olive/pink,Bornes=noeuds]%
+ {\interpoA} %pointsinterpo
+ [q(x)] %formule
+ {(FGH-1)}{(FGH-2)}
+ \TracerCourbe[Couleur=red]{q(x)}
+ \TracerCourbeInterpo[Couleur=blue]{\interpoA}
+ \TracerAxesGrilles[Grille=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\section{Entre spline et interpo}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Grads=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefinirListeSpline{-6/-2/2§-3/4/0§3/-2/0}[\lstsplineA]
+ \DefinirCourbeSpline[Nom=splinered]{\lstsplineA}<\Splinered>
+ \DefinirListeInterpo{(-6,4)(-5,-2)(-2,1)(1,-2)(3,3)}[\interpoB]
+ \DefinirCourbeInterpo[Nom=interpotestb]{\interpoB}
+ \TracerIntegrale%
+ [NomInterpoB=interpotestb,NomSpline=\Splinered,Type=spl/itp,Couleurs=olive/pink]%
+ {splinered} %nomcourbespline
+ [\interpoB] %pointsinterpo
+ {-4}{-2}
+ \TracerCourbeSpline[Couleur=red]{\lstsplineA}
+ \TracerCourbeInterpo[Couleur=blue]{\interpoB}
+ \TracerAxesGrilles[Grille=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\section{Entre interpo et spline}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphiqueTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \TracerAxesGrilles[Grads=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefinirListeSpline{-6/4/-2§-3/-2.25/0§3/3/0}[\lstsplineB]
+ \DefinirCourbeSpline[Nom=splineblue]{\lstsplineB}<\Splineblue>
+ \DefinirListeInterpo{(-6,-2)(-5,4)(-2,-1)(1,2)(3,-2.5)}[\interpoA]
+ \DefinirCourbeInterpo[Nom=interpotest]{\interpoA}
+ \TrouverIntersections[Nom=UIO,Aff]{interpotest}{splineblue}
+ \TracerIntegrale%
+ [NomInterpo=interpotest,NomSplineB=\Splineblue,Type=itp/spl,Couleurs=olive/pink,Bornes=noeuds]%
+ {\interpoA} %pointsinterpo
+ [splineblue] %nomcourbespline
+ {(UIO-1)}{(UIO-2)}
+ \TracerCourbeSpline[Couleur=blue]{\lstsplineB}
+ \TracerCourbeInterpo[Couleur=red]{\interpoA}
+ \TracerAxesGrilles[Grille=false,Elargir=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\end{document} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty b/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty
new file mode 100644
index 0000000000..ce321f6d4b
--- /dev/null
+++ b/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty
@@ -0,0 +1,4221 @@
+% Author : C. Pierquet
+% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{tkz-grapheur}[2024/07/13 0.1.6.Des outils en TikZ pour travailler comme avec un grapheur]
+
+%====HISTORIQUE
+% v 0.1.6 Asymptote verticale + Monte Carlo + Méthode intégrales (rectangles, etc)
+% v 0.1.5 Correction d'un bug avec les valeurs manuelles + NÅ“ud pour une image + [en] version !
+% v 0.1.4 Ajout des placements de textes
+% v 0.1.3 Régressions, avec xintreg (désactivable)
+% v 0.1.2 Max/Min + Droites
+% v 0.1.1 Densité loi normale + khi deux + Améliorations diverses
+% v 0.1.0 Version initiale [fr]
+
+%====OPTIONS
+\newif\if@loadsiunitx \@loadsiunitxtrue
+\DeclareOption{nonsiunitx}{\@loadsiunitxfalse}%
+\DeclareOption{nosiunitx}{\@loadsiunitxfalse}%
+
+\newif\if@loadtikzbabel \@loadtikzbabeltrue
+\DeclareOption{nontikzbabel}{\@loadtikzbabelfalse}%
+\DeclareOption{notikzbabel}{\@loadtikzbabelfalse}%
+
+\newif\if@loadxintreg \@loadxintregtrue
+\DeclareOption{nonxintreg}{\@loadxintregfalse}%
+\DeclareOption{noxintreg}{\@loadxintregfalse}%
+
+\newif\if@lngenglish \@lngenglishfalse
+\DeclareOption{english}{\@lngenglishtrue}%
+
+\DeclareOption*{}
+\ProcessOptions\relax
+
+%====BASE
+\RequirePackage{tikz}
+\RequirePackage{ifthen}
+\usetikzlibrary{calc,intersections,patterns,patterns.meta,bbox}
+\RequirePackage{simplekv}
+\RequirePackage{xintexpr}
+\RequirePackage{xstring}
+\RequirePackage{listofitems}
+\if@loadxintreg
+ \RequirePackage{xint-regression}
+\fi
+
+%====SIUNITX + [en]
+\if@loadsiunitx
+ \RequirePackage{siunitx}
+ \if@lngenglish
+ \sisetup{mode=match,propagate-math-font=true,reset-math-version=false,reset-text-family=false,reset-text-series=false,reset-text-shape=false,text-family-to-math=true,text-series-to-math=true}
+ \else
+ \sisetup{locale=FR,output-decimal-marker={,},mode=match,propagate-math-font=true,reset-math-version=false,reset-text-family=false,reset-text-series=false,reset-text-shape=false,text-family-to-math=true,text-series-to-math=true,group-minimum-digits=4}
+ \fi
+\fi
+
+%====TIKZ.BABEL
+\if@loadtikzbabel
+ \usetikzlibrary{babel}
+\fi
+
+%++++++++++++++++++++++++++
+%+++++++++FRANÇAIS+++++++++
+%++++++++++++++++++++++++++
+
+%====COMMANDE POUR NB DECIMAL ALEA ENTRE BORNES
+\NewDocumentCommand\ChoisirNbAlea{ s O{0} m m O{\monbnalea} }{%
+ \def\tmpborneinf{\xinteval{floor(#3)}}%inf=\tmpborneinf\par%
+ \def\tmpbornesup{\xinteval{ceil(#4)}}%sup=\tmpbornesup\par%
+ \xintifboolexpr{#2 == 0}%
+ {%
+ \xdef#5{\fpeval{randint(\tmpborneinf,\tmpbornesup)}}%
+ }%
+ {%
+ \def\tmptest{0}%
+ \whiledo{\tmptest=0}{%
+ \xintifboolexpr{(\tmpbornesup-\tmpborneinf) == 1}%
+ {%
+ \xdef\tmpresalea{\fpeval{\tmpborneinf+round(rand(),#2)}}%
+ }%
+ {%
+ \xdef\tmpresalea{\fpeval{round(randint(\tmpborneinf,\tmpbornesup)+rand(),#2)}}%
+ }%
+ %essai=\tmpresalea\par
+ \IfBooleanTF{#1}%
+ {%
+ \xintifboolexpr{\tmpresalea < #4 'and' \tmpresalea > #3 }{\def\tmptest{1}}{\def\tmptest{0}}%
+ }%
+ {%
+ \xintifboolexpr{\tmpresalea <= #4 'and' \tmpresalea >= #3 }{\def\tmptest{1}}{\def\tmptest{0}}%
+ }%
+ }%
+ \xdef#5{\tmpresalea}%
+ %res=%
+ }%
+}
+
+%====PATCH NUM
+\@ifundefined{ArrondirNum}%
+ {%
+ \NewDocumentCommand\ArrondirNum{ O{2} m}{\num{\xintfloateval{round(#2,#1)}}\relax}%
+ }%
+ {%
+ \RenewDocumentCommand\ArrondirNum{ O{2} m}{\num{\xintfloateval{round(#2,#1)}}\relax}%
+ }%
+
+%====STYLES DE BASE
+\tikzset{pflnoeud/.style={}}
+\tikzset{pflpoint/.style={line width=0.95pt}}
+\tikzset{pflpointmc/.style={radius=0.875pt}}
+\tikzset{pflpointc/.style={radius=1.75pt}}
+\tikzset{pflpointnuage/.style={radius=1.75pt}}
+\tikzset{pflcadre/.style={line width=0.8pt,gray}}
+\tikzset{pflcourbe/.style={line width=1.05pt}}
+\tikzset{pfltrait/.style={line width=0.8pt}}
+\tikzset{pflflecheg/.style={<-,>=latex}}
+\tikzset{pflfleched/.style={->,>=latex}}
+\tikzset{pflflechegd/.style={<->,>=latex}}
+\tikzset{pfltraitantec/.style={line width=0.9pt,densely dashed}}
+\tikzset{pfltraitimg/.style={line width=0.9pt,densely dashed,->,>=latex}}
+\tikzset{pflgrillep/.style={thin,lightgray}}
+\tikzset{pflgrilles/.style={very thin,lightgray}}
+\tikzset{pflaxes/.style={line width=0.8pt,->,>=latex}}
+\tikzset{
+ Xmin/.store in=\pflxmin,Xmin/.default=-3,Xmin=-3,
+ Xmax/.store in=\pflxmax,Xmax/.default=3,Xmax=3,
+ Ymin/.store in=\pflymin,Ymin/.default=-3,Ymin=-3,
+ Ymax/.store in=\pflymax,Ymax/.default=3,Ymax=3,
+ Origx/.store in=\pflOx,Origx/.default=0,Origx=0,
+ Origy/.store in=\pflOy,Origy/.default=0,Origy=0,
+ Xgrille/.store in=\pflgrillex,Xgrille/.default=1,Xgrille=1,
+ Xgrilles/.store in=\pflgrillexs,Xgrilles/.default=0.5,Xgrilles=0.5,
+ Ygrille/.store in=\pflgrilley,Ygrille/.default=1,Ygrille=1,
+ Ygrilles/.store in=\pflgrilleys,Ygrilles/.default=0.5,Ygrilles=0.5
+}
+\tikzset{%
+ pics/pflptcroix/.style args={#1/#2}{
+ code={
+ \draw[pflpoint,rotate=#2] (-#1,0) -- (#1,0);
+ \draw[pflpoint,rotate=#2] (0,-#1) -- (0, #1);
+ }
+ },
+ pics/pflptcroix/.default={2pt/45}
+}
+\tikzset{%
+ pics/pflptcarre/.style args={#1/#2}{
+ code={
+ \filldraw[draw=none,pflpoint,rotate=#2] (-#1,-#1) rectangle (#1,#1) ;
+ }
+ },
+ pics/pflptcarre/.default={2pt/0}
+}
+
+%====CONSTANTE PI pour xint, à voir si incompatibilité...
+\xintdefvar pi:=3.141592653589793238462643;
+
+%====focntion ln, en langage xint
+\xintdeffloatfunc ln(x) := log(x);
+
+%===COMMANDE INTERNE POUR FORMATER EN FRACTIONS
+\NewDocumentCommand\FormatterFraction{ s O{} m }{%
+ %*=moins sur le numérateur
+ %2=argument.optionnel[d/t/dec=...]
+ %3=argument mandataire {calcul ou fraction}
+ \def\calculargument{\xintPRaw{\xintIrr{\xinteval{#3}}}}%on calcule et on transforme en A/B
+ \IfSubStr{\calculargument}{/}%on teste si le symbole / apparaît
+ {%si oui := fraction
+ \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur
+ \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur
+ \ifblank{#2}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{d}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\displaystyle\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\displaystyle\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\displaystyle\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{t}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{n}%
+ {%
+ \ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}%
+ }%
+ {}%si l'argument optionnel est vide
+ }{%si non := entier
+ \num{\calculargument}%on affiche l'entier, avec le package siunitx
+ }%
+}
+
+%affichage d'un label en radians
+\NewDocumentCommand\FormatterTrigo{ O{t} m }{%étoilée en dfrac
+ \IfStrEq{#2}{0}%cas où l'argument vaut 0
+ {\def\restmp{0}}%
+ {%
+ \StrDel{#2}{*}[\restmpsansmoins]%
+ \StrSubstitute{\restmpsansmoins}{pi}{\pi}[\restmppi]%
+ \IfSubStr{#2}{/}%
+ {%
+ \StrCut{\restmppi}{/}\tmpnum\tmpdenom%
+ \IfSubStr{\tmpnum}{-}%
+ {%
+ \StrDel{\tmpnum}{-}[\restmppinum]%
+ \IfStrEqCase{#1}{%
+ {t}{\def\restmp{-\frac{\restmppinum}{\tmpdenom}}}%
+ {d}{\def\restmp{-\displaystyle\frac{\restmppinum}{\tmpdenom}}}%
+ {n}{\def\restmp{\nicefrac{-\restmppinum}{\tmpdenom}}}%
+ }%
+ }%
+ {%
+ \IfStrEqCase{#1}{%
+ {t}{\def\restmp{\frac{\tmpnum}{\tmpdenom}}}%
+ {d}{\def\restmp{\displaystyle\frac{\tmpnum}{\tmpdenom}}}%
+ {n}{\def\restmp{\nicefrac{\tmpnum}{\tmpdenom}}}%
+ }%
+ }%
+ }%
+ {%
+ \def\restmp{\restmppi}%
+ }%
+ }%
+ \ensuremath{\restmp}%
+}
+
+%====FORMATAGE DES RACINES SIMPLES
+\NewDocumentCommand\FormatterRacine{ O{t} m }{%
+ \IfStrEq{#2}{0}%cas où l'argument vaut 0
+ {\ensuremath{0}}%
+ {%
+ \IfSubStr{#2}{sqrt}%
+ {%
+ \StrDel{#2}{*}[\tmpargbrut]%
+ \StrBetween[1,1]{\tmpargbrut}{sqrt(}{)}[\tmpargnumrac]%
+ \StrBefore{\tmpargbrut}{sqrt}[\tmparavantrac]%
+ \IfStrEqCase{\tmparavantrac}{
+ {}{\xdef\tmparavantrac{}}%
+ {-}{\xdef\tmparavantrac{-}}%
+ }[\xdef\tmparavantrac{\num{\tmparavantrac}}]%
+ \IfSubStr{\tmpargbrut}{/}%
+ {%
+ \StrBehind{\tmpargbrut}{/}[\tmpargdenomrac]%
+ \IfStrEqCase{#1}{%
+ {d}{%
+ \ensuremath{\displaystyle\frac{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}{\num{\tmpargdenomrac}}}%
+ }%
+ {t}{%
+ \ensuremath{\frac{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}{\num{\tmpargdenomrac}}}%
+ }%
+ {n}{%
+ \ensuremath{\nicefrac{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}{\num{\tmpargdenomrac}}}%
+ }%
+ }%
+ }%
+ {%
+ \ensuremath{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}%
+ }%
+ }%
+ {%
+ \FormatterFraction[#1]{#2}%
+ }%
+ }%
+}
+
+%====COMMANDE INTERNE DE CONVERSION
+\ExplSyntaxOn
+ \NewDocumentCommand\ConvertirPtToCm{ m } { \dim_to_decimal_in_unit:nn { #1 } { 1 cm } }
+\ExplSyntaxOff
+
+%====RECUPERER COORDONNEES NOEUD
+\NewDocumentCommand\RecupererAbscisse{ m O{\monabs} }{%
+ \path #1;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef#2{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+}
+\NewDocumentCommand\RecupererOrdonnee{ m O{\monordo} }{%
+ \path #1;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef#2{\xintfloateval{(\ConvertirPtToCm{\macroy})/(\pflyunit)}}%
+}
+
+\NewDocumentCommand\RecupererCoordonnees{ m O{\monabs} O{\monordo} }{%
+ \RecupererAbscisse{#1}[#2]%
+ \RecupererOrdonnee{#1}[#3]%
+}
+
+%===UNITÉS
+\newcommand\DistanceEntreNoeuds[3][\MyTmpDist]{%
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}
+ {\pgfpointanchor{#3}{center}}
+ % no need to use a new dimen
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ % to convert from pt to cm
+ \pgfmathparse{veclen(\pgf@xa,\pgf@ya)/28.45274}
+ \global\let#1\pgfmathresult %macro globale
+}
+
+\newcommand\TikZUnites{
+ \coordinate (@0) at (0,0) ;
+ \coordinate (@X) at (1,0) ;
+ \coordinate (@Y) at (0,1) ;
+ \DistanceEntreNoeuds[\pflxunit]{@0}{@X}
+ \DistanceEntreNoeuds[\pflyunit]{@0}{@Y}
+}
+
+%====ENVIRONNEMENT
+\defKV[GraphiqueTikz]{%
+ TailleGrad=\def\pflthickgrad{#1}
+}
+\setKVdefault[GraphiqueTikz]{%
+ AffCadre=false,%
+ TailleGrad=3pt
+}
+
+\NewDocumentEnvironment{GraphiqueTikz}{ O{} D<>{} }%
+%1 = options tikz, classiques
+%2 = clés spécifiques
+{%
+ \restoreKV[GraphiqueTikz]%
+ \setKV[GraphiqueTikz]{#2}%
+ %l'environnement
+ \begin{tikzpicture}[#1]%
+ %unités x/y pour des calculs de coordonnées
+ \TikZUnites
+ %noeuds
+ \coordinate (bbxTop) at (current bounding box.north) ;
+ \coordinate (bbxBottom) at (current bounding box.south) ;
+ \ifboolKV[GraphiqueTikz]{AffCadre}{\draw[pflcadre] ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;}{}%
+ %back to normal
+}%
+{%
+ \end{tikzpicture}%
+}
+
+%====AXES
+\defKV[GraphiqueTikzAxes]{
+ Format=\def\pflformataxes{#1}
+}
+\setKVdefault[GraphiqueTikzAxes]{%
+ Grille=true,%
+ Elargir=0,%
+ Grads=true,%
+ Origine=false,%
+ Police={},%
+ Format=num,%
+ Traits=true,%
+ Dernier=false,%
+ Derriere=false,%
+ Devant=false
+}
+
+\NewDocumentCommand\FormatterValeurAxex{ m m }{%
+ \IfStrEqCase{#1}{%
+ {num}{\num{#2}}%
+ {annee}{#2}%
+ {frac}{\FormatterFraction{#2}}%
+ {dfrac}{\FormatterFraction[d]{#2}}%
+ {nfrac}{\FormatterFraction[n]{#2}}%
+ {trig}{\FormatterTrigo{#2}}%
+ {dtrig}{\FormatterTrigo[d]{#2}}%
+ {ntrig}{\FormatterTrigo[n]{#2}}%
+ {sqrt}{\FormatterRacine{#2}}%
+ {dsqrt}{\FormatterRacine[d]{#2}}%
+ {nsqrt}{\FormatterRacine[n]{#2}}%
+ }[#2]%
+}
+
+\NewDocumentCommand\FormatterValeurAxey{ m m }{%
+ \IfStrEqCase{#1}{%
+ {num}{\num{#2}}%
+ {annee}{#2}%
+ {frac}{\FormatterRacine{#2}}%
+ {dfrac}{\FormatterFraction[d]{#2}}%
+ {nfrac}{\FormatterFraction[n]{#2}}%
+ {trig}{\FormatterTrigo{#2}}%
+ {dtrig}{\FormatterTrigo[d]{#2}}%
+ {ntrig}{\FormatterTrigo[n]{#2}}%
+ {sqrt}{\FormatterRacine{#2}}%
+ {dsqrt}{\FormatterRacine[d]{#2}}%
+ {nsqrt}{\FormatterRacine[n]{#2}}%
+ }[#2]%
+}
+
+\NewDocumentCommand\TracerAxesGrilles{ s O{} m D<>{#3} m D<>{#5} }{%
+ \restoreKV[GraphiqueTikzAxes]%
+ \setKV[GraphiqueTikzAxes]{#2}%
+ %cas particuliers sous/sur impression
+ \ifboolKV[GraphiqueTikzAxes]{Derriere}%
+ {%
+ \setKV[GraphiqueTikzAxes]{Grads=false}
+ }%
+ {}%
+ \ifboolKV[GraphiqueTikzAxes]{Devant}%
+ {%
+ \setKV[GraphiqueTikzAxes]{Grille=false}
+ }%
+ {}%
+ %suite
+ \IfSubStr{\pflformataxes}{/}%
+ {%
+ \StrCut{\pflformataxes}{/}{\pflformataxex}{\pflformataxey}%
+ }%
+ {%
+ \xdef\pflformataxex{\pflformataxes}\xdef\pflformataxey{\pflformataxes}%
+ }%
+ \ifboolKV[GraphiqueTikzAxes]{Grille}%
+ {%
+ \draw[pflgrilles,xstep=\pflgrillexs,ystep=\pflgrilleys] ({\pflxmin},{\pflymin}) grid ({\pflxmax},{\pflymax});
+ \draw[pflgrillep,xstep=\pflgrillex,ystep=\pflgrilley] ({\pflxmin},{\pflymin}) grid ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphiqueTikzAxes]{Dernier}%
+ {%
+ \draw[pflgrillep] ({\pflxmin},{\pflymax})--({\pflxmax},{\pflymax}) ;
+ \draw[pflgrillep] ({\pflxmax},{\pflymin})--({\pflxmax},{\pflymax}) ;
+ }%
+ {}%
+ }%
+ {}%
+ \draw[pflaxes] ({\pflxmin},{\pflOy}) -- ([xshift={\useKV[GraphiqueTikzAxes]{Elargir}}]{\pflxmax},{\pflOy}) ;
+ \draw[pflaxes] ({\pflOx},{\pflymin}) -- ([yshift={\useKV[GraphiqueTikzAxes]{Elargir}}]{\pflOx},{\pflymax}) ;
+ \IfEq{#3}{auto}%
+ {%
+ \xdef\tmprangexvalues{\xintfloateval{seq(i,i=\pflxmin..[\pflgrillex]..\pflxmax)}}\StrDel{\tmprangexvalues}{ }[\tmprangexvalues]%
+ \xdef\pflformataxex{num}%
+ }%
+ {%
+ \xdef\tmprangexvalues{#3}%
+ }%
+ \IfEq{#5}{auto}%
+ {%
+ \xdef\tmprangeyvalues{\xintfloateval{seq(i,i=\pflymin..[\pflgrilley]..\pflymax)}}\StrDel{\tmprangeyvalues}{ }[\tmprangeyvalues]%
+ \xdef\pflformataxey{num}%
+ }%
+ {%
+ \xdef\tmprangeyvalues{#5}%
+ }%
+ \foreach \x in \tmprangexvalues {\draw[pfltrait] ([yshift=\pflthickgrad]{\x},{\pflOy})--++(0,{-2*\pflthickgrad}) ;}
+ \foreach \y in \tmprangeyvalues {\draw[pfltrait] ([xshift=\pflthickgrad]{\pflOx},{\y})--++({-2*\pflthickgrad},0) ;}
+ \ifboolKV[GraphiqueTikzAxes]{Grads}%
+ {%
+ %origine
+ \ifboolKV[GraphiqueTikzAxes]{Origine}%
+ {%
+ \draw ({\pflOx},{\pflOy}) node[pflnoeud,below left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxex{\pflformataxex}{\pflOx}} ;
+ %\draw (\pflOx,\pflOy) node[below left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\pflOx}}{\pflOx}} ;
+ }%
+ {}%
+ %graduations x, sauf si auto...
+ \foreach \x in \tmprangexvalues {%
+ \IfBooleanTF{#1}%
+ {%
+ \xintifboolexpr{\x == \pflOx}{}{\draw ([yshift=-\pflthickgrad]{\x},{\pflOy}) node[pflnoeud,below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxex{\pflformataxex}{\x}} ;}
+ %\xintifboolexpr{\x == \pflOx}{}{\draw ([yshift=-\pflthickgrad]\x,\pflOy) node[below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\x}}{\x}} ;}
+ }%
+ {%
+ \draw ([yshift=-\pflthickgrad]{\x},{\pflOy}) node[pflnoeud,below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxex{\pflformataxex}{\x}} ;
+ %\draw ([yshift=-\pflthickgrad]\x,\pflOy) node[below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\x}}{\x}} ;
+ }%
+ }%
+ \foreach \y in \tmprangeyvalues {%
+ \IfBooleanTF{#1}%
+ {%
+ \xintifboolexpr{\y == \pflOy}{}{\draw ([xshift=-\pflthickgrad]{\pflOx},{\y}) node[pflnoeud,left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxey{\pflformataxey}{\y}} ;}
+ %\xintifboolexpr{\y == \pflOy}{}{\draw ([xshift=-\pflthickgrad]\pflOx,\y) node[left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\y}}{\y}} ;}
+ }%
+ {%
+ \draw ([xshift=-\pflthickgrad]{\pflOx},{\y}) node[pflnoeud,left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxey{\pflformataxey}{\y}} ;
+ %\draw ([xshift=-\pflthickgrad]\pflOx,\y) node[left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\y}}{\y}} ;
+ }%
+ }%
+ }%
+ {}%
+}
+
+%===DEFINIR POINTS
+\setKVdefault[GraphiqueTikzDefPoints]{Couleur=black,Aff=false,Style=o}
+
+\NewDocumentCommand\DefinirPts{ O{} m }{%
+ \restoreKV[GraphiqueTikzDefPoints]%
+ \setKV[GraphiqueTikzDefPoints]{#1}%
+ \foreach \tmpnamept/\tmpxpt/\tmpypt in {#2}{%
+ \coordinate (\tmpnamept) at ({\tmpxpt},{\tmpypt}) ;
+ \ifboolKV[GraphiqueTikzDefPoints]{Aff}%
+ {%
+ \MarquerPts*[Style={\useKV[GraphiqueTikzDefPoints]{Style}},Couleur={\useKV[GraphiqueTikzDefPoints]{Couleur}}]{(\tmpnamept)}
+ %\filldraw[{\useKV[GraphiqueTikzDefPoints]{Couleur}}] (\tmpnamept) circle[pflpointc] ;
+ }%
+ {}%
+ }
+}
+
+\defKV[GraphiqueTikzMarkPoints]{%
+ Couleur=\def\pflcouleurpoints{#1},%
+ Style=\def\pflstylepoints{#1}
+}
+\setKVdefault[GraphiqueTikzMarkPoints]{%
+ Couleur=black,%
+ Taillec=2pt,%
+ Taillex=2pt,%
+ Tailleo=1.75pt,%
+ Style=o,%
+ Traits=false
+}
+\NewDocumentCommand\MarquerPts{ s O{} D<>{\normalfont\normalsize} m }{%
+ %étoilée = sans label
+ %2=clés
+ %3=points
+ \restoreKV[GraphiqueTikzMarkPoints]%
+ \setKV[GraphiqueTikzMarkPoints]{#2}%
+ \IfBooleanTF{#1}%
+ {%
+ \IfStrEq{\pflstylepoints}{x}%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphiqueTikzMarkPoints]{Traits}%
+ {%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcroix={\useKV[GraphiqueTikzMarkPoints]{Taillex}}/45} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{+}%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphiqueTikzMarkPoints]{Traits}%
+ {%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcroix={\useKV[GraphiqueTikzMarkPoints]{Taillex}}/90} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{c}%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphiqueTikzMarkPoints]{Traits}%
+ {%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[draw=none,fill={\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcarre={\useKV[GraphiqueTikzMarkPoints]{Taillec}}/0} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{d}%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphiqueTikzMarkPoints]{Traits}%
+ {%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[draw=none,fill={\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcarre={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}/45} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{o}%
+ {%
+ \IfSubStr{\pflcouleurpoints}{/}%
+ {%
+ \StrCut{\pflcouleurpoints}{/}{\pflcouleurpointsA}{\pflcouleurpointsB}%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphiqueTikzMarkPoints]{Traits}%
+ {%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[pfltrait,fill=\pflcouleurpointsB,draw=\pflcouleurpointsA] \Point circle[radius={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}] ;
+ }%
+ }%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphiqueTikzMarkPoints]{Traits}%
+ {%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[\pflcouleurpoints] \Point circle[radius={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}] ;
+ }%
+ }%
+ }%
+ {}%
+ }%
+ {%avec label
+ \IfStrEq{\pflstylepoints}{x}%
+ {%
+ \foreach \Point/\Label/\Pos in {#4} {%
+ \ifboolKV[GraphiqueTikzMarkPoints]{Traits}%
+ {%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcroix={\useKV[GraphiqueTikzMarkPoints]{Taillex}}/45} node[pflnoeud,\Pos,font=#3] {\Label} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{+}%
+ {%
+ \foreach \Point/\Label/\Pos in {#4} {%
+ \ifboolKV[GraphiqueTikzMarkPoints]{Traits}%
+ {%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcroix={\useKV[GraphiqueTikzMarkPoints]{Taillex}}/90} node[pflnoeud,\Pos,font=#3] {\Label} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{c}%
+ {%
+ \foreach \Point/\Label/\Pos in {#4} {%
+ \ifboolKV[GraphiqueTikzMarkPoints]{Traits}%
+ {%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[draw=none,fill={\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcarre={\useKV[GraphiqueTikzMarkPoints]{Taillec}}/0} node[pflnoeud,\Pos,{\useKV[GraphiqueTikzMarkPoints]{Couleur}},font=#3] {\Label} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{d}%
+ {%
+ \foreach \Point/\Label/\Pos in {#4} {%
+ \ifboolKV[GraphiqueTikzMarkPoints]{Traits}%
+ {%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[draw=none,fill={\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcarre={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}/45} node[pflnoeud,\Pos,{\useKV[GraphiqueTikzMarkPoints]{Couleur}},font=#3] {\Label} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{o}%
+ {%
+ \IfSubStr{\pflcouleurpoints}{/}%
+ {%
+ \StrCut{\pflcouleurpoints}{/}{\pflcouleurpointsA}{\pflcouleurpointsB}%
+ \foreach \Point/\Label/\Pos in {#4} {%
+ \ifboolKV[GraphiqueTikzMarkPoints]{Traits}%
+ {%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[pfltrait,\pflcouleurpointsA,fill=\pflcouleurpointsB] \Point circle[radius={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}] node[pflnoeud,\Pos,font=#3] {\Label} ;
+ }%
+ }%
+ {%
+ \foreach \Point/\Label/\Pos in {#4} {%
+ \ifboolKV[GraphiqueTikzMarkPoints]{Traits}%
+ {%
+ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[\pflcouleurpoints] \Point circle[radius={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}] node[pflnoeud,\Pos,font=#3] {\Label} ;
+ }%
+ }%
+ }%
+ {}%
+ }%
+}
+
+%===AJOUTER DES VALEURS MANUELLEMENT
+\NewDocumentCommand\RajouterValeursAxeX{ O{} m m }{%
+ \restoreKV[GraphiqueTikzAxes]%
+ \setKV[GraphiqueTikzAxes]{#1}%
+ \ifboolKV[GraphiqueTikzAxes]{Traits}{\foreach \x in {#2}{\draw[pfltrait] ([yshift=\pflthickgrad]{\x},{\pflOy})--++(0,{-2*\pflthickgrad}) ;}}{}%
+ \readlist*\LstValX{#2}%
+ \readlist*\LstValFmtX{#3}%
+ \foreach \i in {1,...,\LstValXlen}{%
+ \itemtomacro\LstValX[\i]\mavalx%
+ \itemtomacro\LstValFmtX[\i]\mavalfmtx%
+ \draw ([yshift=-\pflthickgrad]{\mavalx},{\pflOy}) node[pflnoeud,below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\mavalfmtx} ;
+ }%
+}
+
+\NewDocumentCommand\RajouterValeursAxeY{ O{} m m }{%
+ \restoreKV[GraphiqueTikzAxes]%
+ \setKV[GraphiqueTikzAxes]{#1}%
+ \ifboolKV[GraphiqueTikzAxes]{Traits}{\foreach \y in {#2}{\draw[pfltrait] ([xshift=\pflthickgrad]{\pflOx},{\y})--++({-2*\pflthickgrad},0) ;}}{}%
+ \readlist*\LstValY{#2}%
+ \readlist*\LstValFmtY{#3}%
+ \foreach \i in {1,...,\LstValYlen}{%
+ \itemtomacro\LstValY[\i]\mavaly%
+ \itemtomacro\LstValFmtY[\i]\mavalfmty%
+ \draw ([xshift=-\pflthickgrad]{\pflOx},{\mavaly}) node[pflnoeud,left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\mavalfmty} ;
+ }%
+}
+
+%====FONCTIONS ET COURBES 'classique + interpo + spline'
+\defKV[GraphiqueTikzCourbe]{%
+ Pas=\def\pflstepcurve{#1},%
+ Nom=\def\pflnamecurve{#1}
+}
+\setKVdefault[GraphiqueTikzCourbe]{%
+ Couleur=black,%
+ Debut={\pflxmin},%
+ Fin={\pflxmax},%
+ Pas={},%
+ Clip=true,%
+ Nom={},%
+ Trace=false,%
+ Tension=0.5
+}
+
+\NewDocumentCommand\DefinirFonction{ O{} D<>{f} m }{%old version
+ \restoreKV[GraphiqueTikzCourbe]%
+ \setKV[GraphiqueTikzCourbe]{#1}%
+ \xintdeffloatfunc #2(x) := #3 ;
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflstepcurve{\xintfloateval{((\useKV[GraphiqueTikzCourbe]{Fin})-(\useKV[GraphiqueTikzCourbe]{Debut}))/100}}%
+ }%
+ {}%
+ \ifboolKV[GraphiqueTikzCourbe]{Clip}{\begin{scope}\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});}{}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphiqueTikzCourbe]{Trace}%
+ {%
+ \path[draw,pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphiqueTikzCourbe]{Debut}}..[\pflstepcurve]..{\useKV[GraphiqueTikzCourbe]{Fin}},{\useKV[GraphiqueTikzCourbe]{Fin}})
+ \relax
+ };
+ }%
+ {%
+ \path[draw=none,pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphiqueTikzCourbe]{Debut}}..[\pflstepcurve]..{\useKV[GraphiqueTikzCourbe]{Fin}},{\useKV[GraphiqueTikzCourbe]{Fin}})
+ \relax
+ };
+ }%
+ \ifboolKV[GraphiqueTikzCourbe]{Clip}{\end{scope}}{}
+}
+
+\NewDocumentCommand\DefinirCourbe{ O{} D<>{f} m }{%
+ \restoreKV[GraphiqueTikzCourbe]%
+ \setKV[GraphiqueTikzCourbe]{#1}%
+ \xintdeffloatfunc #2(x) := #3 ;
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflstepcurve{\xintfloateval{((\useKV[GraphiqueTikzCourbe]{Fin})-(\useKV[GraphiqueTikzCourbe]{Debut}))/100}}%
+ }%
+ {}%
+ \ifboolKV[GraphiqueTikzCourbe]{Clip}{\begin{scope}\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});}{}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphiqueTikzCourbe]{Trace}%
+ {%
+ \path[draw,pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphiqueTikzCourbe]{Debut}}..[\pflstepcurve]..{\useKV[GraphiqueTikzCourbe]{Fin}},{\useKV[GraphiqueTikzCourbe]{Fin}})
+ \relax
+ };
+ }%
+ {%
+ \path[draw=none,pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphiqueTikzCourbe]{Debut}}..[\pflstepcurve]..{\useKV[GraphiqueTikzCourbe]{Fin}},{\useKV[GraphiqueTikzCourbe]{Fin}})
+ \relax
+ };
+ }%
+ \ifboolKV[GraphiqueTikzCourbe]{Clip}{\end{scope}}{}
+}
+
+\NewDocumentCommand\TracerCourbe{ O{} D<>{} m }{%
+ \restoreKV[GraphiqueTikzCourbe]%
+ \setKV[GraphiqueTikzCourbe]{#1}%
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflstepcurve{\xintfloateval{((\useKV[GraphiqueTikzCourbe]{Fin})-(\useKV[GraphiqueTikzCourbe]{Debut}))/100}}%
+ }%
+ {}%
+ \ifboolKV[GraphiqueTikzCourbe]{Clip}{\begin{scope}\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});}{}
+ \IfEq{\pflnamecurve}{}%
+ {%
+ \draw[pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}}] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#3),x={\useKV[GraphiqueTikzCourbe]{Debut}}..[\pflstepcurve]..{\useKV[GraphiqueTikzCourbe]{Fin}},{\useKV[GraphiqueTikzCourbe]{Fin}})
+ \relax
+ };
+ }%
+ {%
+ \path[draw,pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#3),x={\useKV[GraphiqueTikzCourbe]{Debut}}..[\pflstepcurve]..{\useKV[GraphiqueTikzCourbe]{Fin}},{\useKV[GraphiqueTikzCourbe]{Fin}})
+ \relax
+ };
+ }%
+ \ifboolKV[GraphiqueTikzCourbe]{Clip}{\end{scope}}{}
+}
+
+\NewDocumentCommand\DefinirListeInterpo{ m O{\malisteinterpo} }{%
+ \def#2{#1}%
+}
+
+\NewDocumentCommand\DefinirCourbeInterpo{ O{} m }{%
+ \restoreKV[GraphiqueTikzCourbe]%
+ \setKV[GraphiqueTikzCourbe]{#1}%
+ \begin{scope}
+ \ifboolKV[GraphiqueTikzCourbe]{Trace}%
+ {%
+ \path[draw,pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}},name path global=\pflnamecurve] plot[smooth,tension={\useKV[GraphiqueTikzCourbe]{Tension}}] coordinates {#2};
+ }%
+ {%
+ \path[draw=none,pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}},name path global=\pflnamecurve] plot[smooth,tension={\useKV[GraphiqueTikzCourbe]{Tension}}] coordinates {#2};
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\TracerCourbeInterpo{ O{} m }{%
+ %2=liste
+ \restoreKV[GraphiqueTikzCourbe]%
+ \setKV[GraphiqueTikzCourbe]{#1}%
+ \begin{scope}
+ \draw[pflcourbe,{\useKV[GraphiqueTikzCourbe]{Couleur}}] plot [smooth,tension={\useKV[GraphiqueTikzCourbe]{Tension}}] coordinates {#2} ;
+ \end{scope}
+}
+
+\NewDocumentCommand\DefinirListeSpline{ m O{\malistespline} }{%
+ \def#2{#1}%
+}
+
+\newcommand\pflextractcoeff[2]{%1=liste,2=numero
+ \setsepchar{§}%
+ \readlist*\lcoeffs{#1}
+ \ifnum \lcoeffslen=1
+ \def\COEFFA{#1}
+ \def\COEFFB{#1}
+ \else
+ \itemtomacro\lcoeffs[#2]\COEFF
+ \IfSubStr{\COEFF}{/}%
+ {\StrCut{\COEFF}{/}{\COEFFA}{\COEFFB}}%
+ {\def\COEFFA{\COEFF}\def\COEFFB{\COEFF}}
+ \fi
+}
+
+\defKV[GraphiqueTikzSpline]{%
+ Nom=\def\pflsplinename{#1},%
+ Coeffs=\def\pflsplinecoeffs{#1}
+}
+
+\setKVdefault[GraphiqueTikzSpline]{%
+ Nom=spline,%
+ Couleur=black,%
+ Coeffs=3,%
+ Trace=false
+}
+
+\NewDocumentCommand\GenererSpline{ m m O{\monspline} }{%
+ %1=liste
+ \setsepchar[.]{§./}%
+ \readlist*\SPLlistepoints{#1}%
+ %les données
+ \def\tmpsplinenumdeb{1}
+ \def\tmpsplinenumfin{\SPLlistepointslen}%
+ \pflextractcoeff{#2}{\tmpsplinenumdeb}%
+ %nb de calculs
+ \def\SPLnbsplines{\inteval{\tmpsplinenumfin-1}}%
+ %extraction des coordonnées
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,1]\xa%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,2]\ya%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,3]\fprimea%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,1]\xb%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,2]\yb%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,3]\fprimeb%
+ \xdef#3{(\xa,\ya) ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFA}).. (\xb,\yb)}%
+ \foreach \i in {\tmpsplinenumdeb,...,\SPLnbsplines}{%
+ %extraction des coeffs de compensation
+ \pflextractcoeff{#2}{\i}%
+ \def\j{\inteval{\i+1}}%
+ \itemtomacro\SPLlistepoints[\i,1]\xa%
+ \itemtomacro\SPLlistepoints[\i,2]\ya%
+ \itemtomacro\SPLlistepoints[\i,3]\fprimea%
+ \itemtomacro\SPLlistepoints[\j,1]\xb%
+ \itemtomacro\SPLlistepoints[\j,2]\yb%
+ \itemtomacro\SPLlistepoints[\j,3]\fprimeb%
+ \xdef#3{#3 ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFB}).. (\xb,\yb)}%
+ }%
+}
+
+\NewDocumentCommand\DefinirCourbeSpline{ O{} m D<>{\monspline} }{%
+ %1=liste
+ \restoreKV[GraphiqueTikzSpline]%
+ \setKV[GraphiqueTikzSpline]{#1}%
+ \GenererSpline{#2}{\pflsplinecoeffs}[#3]%
+ \begin{scope}
+ \ifboolKV[GraphiqueTikzSpline]{Trace}%
+ {%
+ \path[draw,pflcourbe,{\useKV[GraphiqueTikzSpline]{Couleur}},name path global=\pflsplinename] #3 ;
+ }%
+ {%
+ \path[draw=none,pflcourbe,name path global=\pflsplinename] #3 ;
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\DefinirSpline{ O{} m D<>{\monspline} }{%old version
+ %1=liste
+ \restoreKV[GraphiqueTikzSpline]%
+ \setKV[GraphiqueTikzSpline]{#1}%
+ \GenererSpline{#2}{\pflsplinecoeffs}[#3]%
+ \begin{scope}
+ \ifboolKV[GraphiqueTikzSpline]{Trace}%
+ {%
+ \path[draw,pflcourbe,{\useKV[GraphiqueTikzSpline]{Couleur}},name path global=\pflsplinename] #3 ;
+ }%
+ {%
+ \path[draw=none,pflcourbe,name path global=\pflsplinename] #3 ;
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\TracerCourbeSpline{ O{} m D<>{\monspline} }{%
+ %1=liste
+ \restoreKV[GraphiqueTikzSpline]%
+ \setKV[GraphiqueTikzSpline]{#1}%
+ \GenererSpline{#2}{\pflsplinecoeffs}[#3]%
+ \begin{scope}
+ \draw[pflcourbe,{\useKV[GraphiqueTikzSpline]{Couleur}}] #3 ;
+ \end{scope}
+}
+
+\NewDocumentCommand\TracerSpline{ O{} m D<>{\monspline} }{%old version
+ %1=liste
+ \restoreKV[GraphiqueTikzSpline]%
+ \setKV[GraphiqueTikzSpline]{#1}%
+ \GenererSpline{#2}{\pflsplinecoeffs}[#3]%
+ \begin{scope}
+ \draw[pflcourbe,{\useKV[GraphiqueTikzSpline]{Couleur}}] #3 ;
+ \end{scope}
+}
+
+%===INTERSECTION & ANTÉCÉDENTS
+\defKV[GraphiqueTikzIntersect]{%
+ Nom=\def\pflintercurves{#1}
+}
+\setKVdefault[GraphiqueTikzIntersect]{%
+ Nom=S,
+ Aff=true,
+ Couleur=black,
+ AffDroite=false,%
+ Traits=false,%
+ Style=o
+}
+
+\NewDocumentCommand\TrouverIntersections{ O{} m m D<>{\myt} }{%
+ \restoreKV[GraphiqueTikzIntersect]%
+ \setKV[GraphiqueTikzIntersect]{#1}%
+ \path[name intersections={of=#2 and #3,name=\pflintercurves,total=\t}] \pgfextra{\xdef#4{\t}};
+ \ifboolKV[GraphiqueTikzIntersect]{Aff}%
+ {%
+ \xintifboolexpr{#4 == 0}{}%
+ {%
+ \foreach \i in {1,...,#4}{%
+ \ifboolKV[GraphiqueTikzIntersect]{Traits}%
+ {%
+ \draw[pfltraitimg,{\useKV[GraphiqueTikzIntersect]{Couleur}}]let \p1 = (\pflintercurves-\i) in (\pflintercurves-\i) -- ({\x1},{\pflOy}) ;
+ }%
+ {}%
+ \MarquerPts*[Style={\useKV[GraphiqueTikzIntersect]{Style}},Couleur={\useKV[GraphiqueTikzIntersect]{Couleur}}]{(\pflintercurves-\i)}
+ %\filldraw[{\useKV[GraphiqueTikzIntersect]{Couleur}}] (\pflintercurves-\i) circle[pflpointc] ;
+ }
+ }%
+ }%
+ {}%
+}
+
+\NewDocumentCommand\TrouverAntecedents{ O{} m m D<>{\myantec} }{%
+ \restoreKV[GraphiqueTikzIntersect]%
+ \setKV[GraphiqueTikzIntersect]{#1}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphiqueTikzIntersect]{AffDroite}%
+ {%
+ \path[draw,{\useKV[GraphiqueTikzIntersect]{Couleur}},pflcourbe,name path=tmpanteced] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+ }%
+ {%
+ \path[draw=none,pflcourbe,name path=tmpanteced] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+ }%
+ \path[name intersections={of=#2 and tmpanteced,name=\pflintercurves,total=\t}] \pgfextra{\xdef#4{\t}};
+ \ifboolKV[GraphiqueTikzIntersect]{Aff}%
+ {%
+ \xintifboolexpr{#4 == 0}{}%
+ {%
+ \foreach \i in {1,...,#4}{%
+ \MarquerPts*[Style={\useKV[GraphiqueTikzIntersect]{Style}},Couleur={\useKV[GraphiqueTikzIntersect]{Couleur}}]{(\pflintercurves-\i)}
+ %\filldraw[{\useKV[GraphiqueTikzIntersect]{Couleur}}] (\pflintercurves-\i) circle[pflpointc] ;
+ }
+ }%
+ }%
+ {}%
+ \end{scope}
+}
+
+%====MONTE CARLO
+\defKV[graphiquetikzmontecarlo]{%
+ Couleurs=\def\graphtikzmccols{#1},%
+ BornesX=\def\graphtikzmcxbornes{#1},%
+ BornesY=\def\graphtikzmcybornes{#1}
+}
+
+\setKVdefault[graphiquetikzmontecarlo]{%
+ Couleurs={blue/red},%
+ BornesX={\pflxmin,\pflxmax},%
+ BornesY={\pflymin,\pflymax}
+}
+
+\NewDocumentCommand\SimulerMonteCarlo{ O{} D<>{f} m O{\nbptsmcok} O{\nbptsmcko} }{%
+ \restoreKV[graphiquetikzmontecarlo]%
+ \setKV[graphiquetikzmontecarlo]{#1}%
+ \StrCut{\graphtikzmccols}{/}{\tmpMCcolOK}{\tmpMCcolKO}%
+ \StrCut{\graphtikzmcxbornes}{,}{\tmpMCxmin}{\tmpMCxmax}%
+ \StrCut{\graphtikzmcybornes}{,}{\tmpMCymin}{\tmpMCymax}%
+ \xdef#4{0}%
+ \xdef#5{0}%
+ \xdef\nbptsmc{#3}%
+ \foreach \i in {1,...,#3}{%
+ \xdef\tmpMCrandX{\xintfloateval{random()*((\tmpMCxmax)-(\tmpMCxmin))+(\tmpMCxmin)}}%
+ \xdef\tmpMCrandY{\xintfloateval{random()*((\tmpMCymax)-(\tmpMCymin))+(\tmpMCymin)}}%
+ \xdef\tmpMCrandfX{\xintfloateval{#2(\tmpMCrandX)}}%
+ \xintifboolexpr{ \tmpMCrandfX > \tmpMCrandY }%
+ {%
+ \xdef#4{\xinteval{#4+1}}%
+ \filldraw[\tmpMCcolOK] (\tmpMCrandX,\tmpMCrandY) circle[pflpointmc] ;
+ }%
+ {%
+ \xdef#5{\xinteval{#5+1}}%
+ \filldraw[\tmpMCcolKO] (\tmpMCrandX,\tmpMCrandY) circle[pflpointmc] ;
+ }%
+ }%
+}
+
+%====MÉTHODES INTÉGRALES
+
+\defKV[graphiquetikzintegr]{%
+ Couleur=\def\graphtikzintgrcol{#1},%
+ CouleurRemplissage=\def\graphtikzintgrcolrempl{#1},%
+ NbSubDiv=\def\graphtikzintgrnb{#1},%
+ Methode=\def\graphtikzintgrtype{#1},%
+ Opacite=\def\graphtikzintgropac{#1}
+}
+
+\setKVdefault[graphiquetikzintegr]{%
+ Couleur=red,%
+ NbSubDiv=10,%
+ Methode=RectanglesGauche,%
+ Remplir=true,%
+ CouleurRemplissage={\graphtikzintgrcol!25},%
+ Opacite=0.25
+}
+
+\NewDocumentCommand\RepresenterMethodeIntegrale{ O{} D<>{f} m m }{%opts+nom_fct+a+b
+ \useKVdefault[graphiquetikzintegr]%
+ \setKV[graphiquetikzintegr]{#1}%
+ \ifboolKV[graphiquetikzintegr]{Remplir}%
+ {%
+ \tikzset{pflfigureintegr/.style={pfltrait,\graphtikzintgrcol,fill=\graphtikzintgrcolrempl,fill opacity=\graphtikzintgropac}}%
+ }%
+ {%
+ \tikzset{pflfigureintegr/.style={pfltrait,\graphtikzintgrcol}}%
+ }%
+ \tikzset{figureintegr/.style={pfltrait,\graphtikzintgrcol,fill=\graphtikzintgrcolrempl,fill opacity=\graphtikzintgropac}}%
+ \def\TmpH{(#4-#3)/\graphtikzintgrnb}
+ %rectangles gauches
+ \IfEq{\graphtikzintgrtype}{RectanglesGauche}%
+ {%
+ \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
+ \draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+\i*\TmpH)}}) ;
+ }%
+ {}%
+ \IfEq{\graphtikzintgrtype}{RectanglesDroite}%
+ {%
+ \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
+ \draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+(\i+1)*\TmpH)}}) ;
+ }%
+ {}%
+ \IfEq{\graphtikzintgrtype}{RectanglesMilieu}%
+ {%
+ \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
+ \draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+(\i+0.5)*\TmpH)}}) ;
+ }%
+ {}%
+ \IfEq{\graphtikzintgrtype}{Trapezes}%
+ {%
+ \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
+ \draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) -- ({#3+\i*\TmpH},{\xintfloateval{#2(#3+\i*\TmpH)}}) -- ({#3+(\i+1)*\TmpH},{\xintfloateval{#2(#3+(\i+1)*\TmpH)}}) -- ({#3+(\i+1)*\TmpH},{0}) -- cycle ;
+ }%
+ {}%
+}
+
+
+%====INTÉGRALES
+%v2 avec modification de la clé [Type=...] ?
+\defKV[GraphiqueTikzIntegr]{%
+ Couleurs=\def\pfldomtikzcolors{#1},%
+ Style=\def\pfldomtikzstyle{#1},%
+ Opacite=\def\pfldomtikzopac{#1},%
+ Hachures=\def\pfldomtikzhatch{#1},%
+ Type=\def\pfldomtikztype{#1},%
+ Pas=\def\pflstepcurve{#1},%
+ Bornes=\def\pflintbornes{#1},%
+ Jonction=\def\pfldomtikzjoin{#1},%
+ NomInterpo=\def\pfldomtikznameinterpo{#1},%
+ NomInterpoB=\def\pfldomtikznameinterpob{#1},%
+ NomSpline=\def\pfldomtikznamespline{#1},%
+ NomSplineB=\def\pfldomtikznamesplineb{#1}
+}
+\setKVdefault[GraphiqueTikzIntegr]{%
+ Couleurs=gray,%
+ Style=remplissage,%
+ Opacite=0.5,%
+ Hachures={north west lines},%
+ Type=fct,%
+ Pas={},%
+ Jonction=bevel,%
+ Bornes=abs,%
+ Bord=true,%
+ Spline=false,%
+ SplineB=false,%
+ NomInterpo={\moninterpo},%
+ NomInterpoB={\moninterpoB},%
+ NomSpline={\monspline},%
+ NomSplineB={\monsplineB},%
+ Tension=0.5,%
+ TensionB=0.5
+}
+
+\NewDocumentCommand\TracerIntegrale{ O{} D<>{} m O{0} m m }{%
+ %1 = clés
+ %2 = options particulières tikz
+ %3 = fonction, en tikz
+ %4 = fonction n°2 éventuelle
+ %de #5 à #6
+ \restoreKV[GraphiqueTikzIntegr]% revenir au valeurs par défaut
+ \setKV[GraphiqueTikzIntegr]{#1}% lit les arguments optionnels
+ %les couleurs
+ \IfSubStr{\pfldomtikzcolors}{/}%
+ {%
+ \StrCut{\pfldomtikzcolors}{/}{\pfldomtikzcolorbord}{\pfldomtikzcolorfond}
+ }%
+ {%
+ \xdef\pfldomtikzcolorbord{\pfldomtikzcolors}\xdef\pfldomtikzcolorfond{\pfldomtikzcolors}
+ }%
+ \ifboolKV[GraphiqueTikzIntegr]{Bord}%
+ {%
+ \tikzset{integralebordtikzstyle/.style={draw=\pfldomtikzcolorbord}}
+ }%
+ {%
+ \tikzset{integralebordtikzstyle/.style={draw=none}}
+ }%
+ \IfStrEq{\pfldomtikzstyle}{hachures}%
+ {%
+ \tikzset{integraletikzstyle/.style={pfltrait,pattern=\pfldomtikzhatch,pattern color=\pfldomtikzcolorfond,line join=\pfldomtikzjoin}}
+ }%
+ {}%
+ \IfStrEq{\pfldomtikzstyle}{remplissage}%
+ {%
+ \tikzset{integraletikzstyle/.style={pfltrait,fill=\pfldomtikzcolorfond,fill opacity=\pfldomtikzopac,line join=\pfldomtikzjoin}}
+ }%
+ {}%
+ %extraction des infos x/y
+ \IfStrEqCase{\pflintbornes}{%
+ {abs}%
+ {%
+ \xdef\absnoeudA{#5}%
+ \xdef\absnoeudB{#6}%
+ }%
+ {noeuds}%
+ {%
+ \path #5;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\absnoeudA{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+ \path #6;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\absnoeudB{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+ }%
+ {abs/noeud}%
+ {%
+ \xdef\absnoeudA{#5}%
+ \path #6;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\absnoeudB{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+ }%
+ {noeud/abs}%
+ {%
+ \path #5;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\absnoeudA{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\absnoeudB{#6}%
+ }%
+ }%
+ %suite avec les nbs points
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflstepcurve{\xintfloateval{((\absnoeudB)-(\absnoeudA))/100}}%
+ }%
+ {}%
+ %TRACÉSen fonction des types de courbes
+ \IfStrEq{\pfldomtikztype}{fct}%
+ {%OK
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflOy}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#3),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflOy}) -- cycle ;
+ \end{scope}
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{spl}%avec 3=courbe spline + clé [Spline] à utiliser !
+ {%OK
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflOy}) -- \pfldomtikznamespline -- ({\absnoeudB},{\pflOy}) -- cycle ;
+ \end{scope}
+ \path[draw=none,pflcourbe,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=#3 and tmpintbornea,name=YYY}] ;
+ \draw[\pfldomtikzcolorbord,pfltrait] ({\absnoeudA},{\pflOy})-- (YYY-1) ;
+ \path[draw=none,pflcourbe,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=#3 and tmpintborneb,name=ZZZ}] ;
+ \draw[\pfldomtikzcolorbord,pfltrait] ({\absnoeudB},{\pflOy})-- (ZZZ-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{itp}%avec 3=courbe interpo
+ {%OK
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflOy}) -- plot [smooth,tension={\useKV[GraphiqueTikzIntegr]{Tension}}] coordinates {#3} -- ({\absnoeudB},{\pflOy}) -- cycle ;
+ \end{scope}
+ \path[draw=none,pflcourbe,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpo,name=YYY}] ;
+ \draw[\pfldomtikzcolorbord,pfltrait] ({\absnoeudA},{\pflOy})-- (YYY-1) ;
+ \path[draw=none,pflcourbe,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpo,name=ZZZ}] ;
+ \draw[\pfldomtikzcolorbord,pfltrait] ({\absnoeudB},{\pflOy})-- (ZZZ-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{fct/fct}%avec #3=formule et #4=formule
+ {%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[integraletikzstyle,integralebordtikzstyle,#2] plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#3),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#4),x=\absnoeudB..[-(\pflstepcurve)]..\absnoeudA,\absnoeudA)\relax} -- cycle ;
+ \end{scope}
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{spl/spl}%avec #3=cbe spline + #4=cbe splineB
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- \pfldomtikznamespline -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymax}) -- \pfldomtikznamesplineb -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,pflcourbe,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=#3 and tmpintbornea,name=YYYA}] ;
+ \path[name intersections={of=#4 and tmpintbornea,name=ZZZA}] ;
+ \path[draw=none,pflcourbe,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=#3 and tmpintborneb,name=YYYB}] ;
+ \path[name intersections={of=#4 and tmpintborneb,name=ZZZB}] ;
+ \draw[\pfldomtikzcolorbord,pfltrait] (YYYA-1)-- (ZZZA-1) ;
+ \draw[\pfldomtikzcolorbord,pfltrait] (YYYB-1)-- (ZZZB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{itp/itp}%avec #3=cbe interpo + #4=cbe interpoB
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot [smooth,tension={\useKV[GraphiqueTikzIntegr]{Tension}}] coordinates {#3} -- ({\absnoeudB},{\pflymin}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot [smooth,tension={\useKV[GraphiqueTikzIntegr]{TensionB}}] coordinates {#4} -- ({\absnoeudB},{\pflymax}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,pflcourbe,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpo,name=YYYA}] ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpob,name=ZZZA}] ;
+ \path[draw=none,pflcourbe,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpo,name=YYYB}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpob,name=ZZZB}] ;
+ \draw[\pfldomtikzcolorbord,pfltrait] (YYYA-1)-- (ZZZA-1) ;
+ \draw[\pfldomtikzcolorbord,pfltrait] (YYYB-1)-- (ZZZB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{fct/spl}%avec #3=formule + #4=spline
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#3),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymax}) -- \pfldomtikznamesplineb -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,pflcourbe,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and #4,name=ZZZA}] ;
+ \path[draw=none,pflcourbe,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintborneb and #4,name=ZZZB}] ;
+ \draw[\pfldomtikzcolorbord,pfltrait] ({\absnoeudA},{\xintfloateval{subs(#3,x=\absnoeudA)}})-- (ZZZA-1) ;
+ \draw[\pfldomtikzcolorbord,pfltrait] ({\absnoeudB},{\xintfloateval{subs(#3,x=\absnoeudB)}})-- (ZZZB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{spl/fct}%avec #3=spline + #4=fct
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#4),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymin}) -- \pfldomtikznamespline -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,pflcourbe,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and #3,name=ZZZA}] ;
+ \path[draw=none,pflcourbe,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintborneb and #3,name=ZZZB}] ;
+ \draw[\pfldomtikzcolorbord,pfltrait] ({\absnoeudA},{\xintfloateval{subs(#4,x=\absnoeudA)}})-- (ZZZA-1) ;
+ \draw[\pfldomtikzcolorbord,pfltrait] ({\absnoeudB},{\xintfloateval{subs(#4,x=\absnoeudB)}})-- (ZZZB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{fct/itp}%avec #3=formule + #4=liste interpo
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#3),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot [smooth,tension={\useKV[GraphiqueTikzIntegr]{TensionB}}] coordinates {#4} -- ({\absnoeudB},{\pflymax}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,pflcourbe,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[draw=none,pflcourbe,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpob,name=ZZZAA}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpob,name=ZZZAB}] ;
+ \draw[\pfldomtikzcolorbord,pfltrait] ({\absnoeudA},{\xintfloateval{subs(#3,x=\absnoeudA)}})-- (ZZZAA-1) ;
+ \draw[\pfldomtikzcolorbord,pfltrait] ({\absnoeudB},{\xintfloateval{subs(#3,x=\absnoeudB)}})-- (ZZZAB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{itp/fct}%
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#4),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot [smooth,tension={\useKV[GraphiqueTikzIntegr]{Tension}}] coordinates {#3} -- ({\absnoeudB},{\pflymin}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,pflcourbe,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[draw=none,pflcourbe,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpo,name=ZZZAA}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpo,name=ZZZAB}] ;
+ \draw[\pfldomtikzcolorbord,pfltrait] ({\absnoeudA},{\xintfloateval{subs(#4,x=\absnoeudA)}})-- (ZZZAA-1) ;
+ \draw[\pfldomtikzcolorbord,pfltrait] ({\absnoeudB},{\xintfloateval{subs(#4,x=\absnoeudB)}})-- (ZZZAB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{itp/spl}%
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot [smooth,tension={\useKV[GraphiqueTikzIntegr]{Tension}}] coordinates {#3} -- ({\absnoeudB},{\pflymin}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- \pfldomtikznamesplineb -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,pflcourbe,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;%borne inf
+ \path[draw=none,pflcourbe,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;%borne sup
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpo,name=YYYKAA}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpo,name=YYYKBB}] ;
+ \path[name intersections={of=tmpintbornea and #4,name=ZZZKAA}] ;
+ \path[name intersections={of=tmpintborneb and #4,name=ZZZKBB}] ;
+ \draw[\pfldomtikzcolorbord,pfltrait] (YYYKAA-1)-- (ZZZKAA-1) ;
+ \draw[\pfldomtikzcolorbord,pfltrait] (YYYKBB-1)-- (ZZZKBB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{spl/itp}%
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot [smooth,tension={\useKV[GraphiqueTikzIntegr]{TensionB}}] coordinates {#4} -- ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- \pfldomtikznamespline -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,pflcourbe,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;%borne inf
+ \path[draw=none,pflcourbe,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;%borne sup
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpob,name=YYYKAA}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpob,name=YYYKBB}] ;
+ \path[name intersections={of=tmpintbornea and #3,name=ZZZKAA}] ;
+ \path[name intersections={of=tmpintborneb and #3,name=ZZZKBB}] ;
+ \draw[\pfldomtikzcolorbord,pfltrait] (YYYKAA-1)-- (ZZZKAA-1) ;
+ \draw[\pfldomtikzcolorbord,pfltrait] (YYYKBB-1)-- (ZZZKBB-1) ;
+ }%
+ {}%
+}
+
+\NewDocumentCommand\PlacerPoints{ s O{black} D<>{\normalfont\normalsize} m }{%
+ \IfBooleanTF{#1}%
+ {%
+ \foreach \Point in {#4}{%
+ \filldraw[#2] \Point circle[pflpointc] ;
+ }
+ }%
+ {%
+ \foreach \Point/\Pos/\Label in {#4}{%
+ \filldraw[#2] \Point circle[pflpointc] node[pflnoeud,\Pos,font=#3] {\Label} ;
+ }
+ }%
+}
+
+% %====STATS À 2 VARIABLES
+\defKV[GraphiqueTikzRegLin]{%
+ Arrondis=\def\pflarrondisreglin{#1},
+ Nom=\def\pflnamereglin{#1},
+ NomPara=\def\pflnameregquad{#1},
+ Debut=\def\pflreglinmin{#1},
+ Fin=\def\pflreglinmax{#1}
+}
+\setKVdefault[GraphiqueTikzRegLin]{
+ CouleurNuage=black,
+ CouleurDroite=black,
+ CouleurPara=black,
+ Arrondis={},
+ Debut={\pflxmin},
+ Fin={\pflxmax},
+ Nom=reglin,%
+ NomPara=quadreg,%
+ TracerDroite=false,%
+ TracerParabole=false,%
+ Style=o
+}
+
+\NewDocumentCommand\TracerNuage{ O{} D<>{d} m m }{%
+ \useKVdefault[GraphiqueTikzRegLin]%
+ \setKV[GraphiqueTikzRegLin]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %listes des données
+ \def\xliste{#3}
+ \def\yliste{#4}
+ \readlist*\LX{\xliste}
+ \readlist*\LY{\yliste}
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}
+ %nuage
+ \foreach \i in {1,...,\LXlen}{%
+ \itemtomacro\LX[\i]\tmpmavalx%
+ \itemtomacro\LY[\i]\tmpmavaly%
+ \MarquerPts*[Style={\useKV[GraphiqueTikzRegLin]{Style}},Couleur={\useKV[GraphiqueTikzRegLin]{CouleurNuage}}]{(\tmpmavalx,\tmpmavaly)}%
+ }
+ %droite de régression
+ \ifboolKV[GraphiqueTikzRegLin]{TracerDroite}%
+ {%
+ %somme des LX et des LY OK
+ \xdef\LXSomme{0}
+ \xdef\LYSomme{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[\i]}}
+ }
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[\i]}}
+ }
+ %moyenne des LX et des LY OK
+ \xdef\LXmoy{\xintfloateval{\LXSomme/\LNB}}
+ \xdef\LYmoy{\xintfloateval{\LYSomme/\LNB}}
+ %variance des LX et des LY OK
+ \xdef\LXvar{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LXvar{\xintfloateval{\LXvar+(\LX[\i]-\LXmoy)*(\LX[\i]-\LXmoy)}}
+ }
+ \xdef\LXvar{\xintfloateval{\LXvar/\LNB}}
+ \xdef\LYvar{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LYvar{\xintfloateval{\LYvar+(\LY[\i]-\LYmoy)*(\LY[\i]-\LYmoy)}}
+ }
+ \xdef\LYvar{\xintfloateval{\LYvar/\LNB}}
+ %covariance des XY OK
+ \xdef\LXYvar{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LXYvar{\xintfloateval{\LXYvar+(\LX[\i]-\LXmoy)*(\LY[\i]-\LYmoy)}}
+ }
+ \xdef\LXYvar{\xintfloateval{\LXYvar/\LNB}}
+ %COEFFS OK
+ \IfStrEq{\pflarrondisreglin}{}%
+ {%
+ \xdef\tmpcoeffreglina{\xintfloateval{\LXYvar/\LXvar}}
+ \xdef\tmpcoeffreglinb{\xintfloateval{\LYmoy-\tmpcoeffreglina*\LXmoy}}
+ }%
+ {%
+ \IfSubStr{\pflarrondisreglin}{/}%
+ {%
+ \StrCut{\pflarrondisreglin}{/}{\pflarrondisreglina}{\pflarrondisreglinb}
+ }%
+ {%
+ \xdef\pflarrondisreglina{\pflarrondisreglin}\xdef\pflarrondisreglinb{\pflarrondisreglin}
+ }%
+ \xdef\tmpcoeffreglina{\xintfloateval{round(\LXYvar/\LXvar,\pflarrondisreglina)}}
+ \xdef\tmpcoeffreglinb{\xintfloateval{round(\LYmoy-\tmpcoeffreglina*\LXmoy,\pflarrondisreglinb)}}
+ }%
+ \xintdeffloatfunc #2(x) := (\tmpcoeffreglina)*x+(\tmpcoeffreglinb) ;
+ %tracé
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[pflcourbe,{\useKV[GraphiqueTikzRegLin]{CouleurDroite}},name path global=\pflnamereglin,samples=2,domain=\pflreglinmin:\pflreglinmax] plot (\x,{\tmpcoeffreglina*\x+\tmpcoeffreglinb}) ;
+ \end{scope}
+ }%
+ {}%
+ \ifboolKV[GraphiqueTikzRegLin]{TracerParabole}%
+ {%
+ %somme importantes
+ \xdef\LXSomme{0}%
+ \xdef\LXCSomme{0}%
+ \xdef\LYSomme{0}%
+ \xdef\LXXSomme{0}%
+ \xdef\LXYSomme{0}%
+ \xdef\LXXCSomme{0}%
+ \xdef\LXCXCSomme{0}%
+ \xdef\LXCYSomme{0}%
+ %calculs
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[\i]}}%
+ \xdef\LXCSomme{\xintfloateval{\LXCSomme+(\LX[\i])^2}}%
+ }%
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[\i]}}%
+ }%
+ \xdef\LXmoy{\xintfloateval{\LXSomme/\LNB}}%
+ \xdef\LYmoy{\xintfloateval{\LYSomme/\LNB}}%
+ \xdef\LXCmoy{\xintfloateval{\LXCSomme/\LNB}}%
+ %calculs suites
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LXXSomme{\xintfloateval{\LXXSomme+(\LX[\i]-\LXmoy)^2}}%
+ \xdef\LXYSomme{\xintfloateval{\LXYSomme+(\LX[\i]-\LXmoy)*(\LY[\i]-\LYmoy)}}%
+ \xdef\LXXCSomme{\xintfloateval{\LXXCSomme+(\LX[\i]-\LXmoy)*((\LX[\i])*(\LX[\i])-\LXCmoy)}}%
+ \xdef\LXCXCSomme{\xintfloateval{\LXCXCSomme+((\LX[\i])^2-\LXCmoy)^2}}%
+ \xdef\LXCYSomme{\xintfloateval{\LXCYSomme+((\LX[\i])^2-\LXCmoy)*(\LY[\i]-\LYmoy)}}%
+ }%
+ %COEFFS OK
+ \IfStrEq{\pflarrondisreglin}{}%
+ {%
+ \xdef\tmpcoeffregquadb{\xintfloateval{(\LXYSomme*\LXCXCSomme-\LXCYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}
+ \xdef\tmpcoeffregquada{\xintfloateval{(\LXCYSomme*\LXXSomme-\LXYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}
+ \xdef\tmpcoeffregquadc{\xintfloateval{\LYmoy-\tmpcoeffregquadb*\LXmoy-\tmpcoeffregquada*\LXCmoy}}
+ }%
+ {%
+ \xdef\tmpcoeffregquadb{\xintfloateval{round((\LXYSomme*\LXCXCSomme-\LXCYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2),\pflarrondisreglin)}}
+ \xdef\tmpcoeffregquada{\xintfloateval{round((\LXCYSomme*\LXXSomme-\LXYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2),\pflarrondisreglin)}}
+ \xdef\tmpcoeffregquadc{\xintfloateval{round(\LYmoy-\tmpcoeffregquadb*\LXmoy-\tmpcoeffregquada*\LXCmoy,\pflarrondisreglin)}}
+ }%
+ \xintdeffloatfunc #2(x) := (\tmpcoeffregquada)*x^2+(\tmpcoeffregquadb)*x+\tmpcoeffregquadc ;
+ %tracé
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[pflcourbe,{\useKV[GraphiqueTikzRegLin]{CouleurPara}},name path global=\pflnameregquad,samples=250,domain=\pflreglinmin:\pflreglinmax] plot (\x,{\tmpcoeffregquada*(\x)^2+\tmpcoeffregquadb*\x+\tmpcoeffregquadc}) ;
+ \end{scope}
+ }%
+ {}%
+}
+
+\if@loadxintreg
+%régressions alternatives
+\NewDocumentCommand\TracerAjustement{ O{} D<>{cbajust} m D<>{} m m }{%
+ %1=options de tracés
+ %2=nom courbe
+ %3=type
+ %4=arrondis
+ %5=liste X
+ %6=liste Y
+ \IfStrEq{#3}{lin}%
+ {%
+ \xintlinreg[round={#4}]{#5}{#6}%
+ \DefinirFonction[#1,Trace]<#2>{\linrega*x+\linregb}%
+ }%
+ {}%
+ \IfStrEq{#3}{quad}%
+ {%
+ \xintquadreg[round={#4}]{#5}{#6}%
+ \DefinirFonction[#1,Trace]<#2>{\quadrega*x^2+\quadregb*x+\quadregc}%
+ }%
+ {}%
+ \IfStrEq{#3}{pow}%
+ {%
+ \xintpowreg[round={#4}]{#5}{#6}%
+ \DefinirFonction[#1,Trace]<#2>{\powrega*x^(\powregb)}%
+ }%
+ {}%
+ \IfStrEq{#3}{expab}%
+ {%
+ \xintexpabreg[round={#4}]{#5}{#6}%
+ \DefinirFonction[#1,Trace]<#2>{\expabrega*(\expabregb)^x}%
+ }%
+ {}%
+ \IfStrEq{#3}{hyp}%
+ {%
+ \xinthypreg[round={#4}]{#5}{#6}%
+ \DefinirFonction[#1,Trace]<#2>{\hyprega+(\hypregb)/x}%
+ }%
+ {}%
+ \IfStrEq{#3}{log}%
+ {%
+ \xintlogreg[round={#4}]{#5}{#6}%
+ \DefinirFonction[#1,Trace]<#2>{\logrega+(\logregb)*log(x)}%
+ }%
+ {}%
+ \IfStrEq{#3}{exp}%
+ {%
+ \xintexpreg[round={#4}]{#5}{#6}%
+ \DefinirFonction[#1,Trace]<#2>{exp(\exprega*x+\expregb)}%
+ }%
+ {}%
+ \IfStrEq{#3}{expalt}%
+ {%
+ \xintexpreg[Alt,round={#4}]{#5}{#6}%
+ \DefinirFonction[#1,Trace]<#2>{\expregb*exp(\exprega*x)}%
+ }%
+ {}%
+ \IfStrEq{#3}{cub}%
+ {%
+ \xintcubreg[round={#4}]{#5}{#6}%
+ \DefinirFonction[#1,Trace]<#2>{\cubrega*x^3+\cubregb*x^2+\cubregc*x+\cubregd}%
+ }%
+ {}%
+ \IfSubStr{#3}{expoff}%
+ {%
+ \StrBehind{#3}{=}[\expoffset]%
+ \xintexpoffreg[round={#4},offset=\expoffset]{#5}{#6}%
+ \DefinirFonction[#1,Trace]<#2>{\expoffset+\expregoffb*exp(\expregoffa*x)}%
+ }%
+ {}%
+}
+\fi
+
+%===IMAGES & ANTÉCÉDENTS
+\defKV[GraphiqueTikzImg]{
+ Couleurs=\def\pflimgcolors{#1},%
+ Nom=\def\pflantecednoms{#1}%
+}
+
+\setKVdefault[GraphiqueTikzImg]{
+ Couleurs=black,%
+ Traits=false,%
+ Spline=false,%
+ Nom={},%
+ Style=o
+}
+
+\NewDocumentCommand\DefinirImage{ O{} m m }{%
+ \useKVdefault[GraphiqueTikzImg]%
+ \setKV[GraphiqueTikzImg]{#1}%
+ \ifboolKV[GraphiqueTikzImg]{Spline}%
+ {%
+ \path[draw=none,pflcourbe,name path=tmpimage] ({#3},{\pflymin})--({#3},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpimage,name=ZZZZ}] ;
+ \coordinate (\pflantecednoms) at (ZZZZ-1) ;
+ }%
+ {%
+ \xdef\tmpresimg{\xintfloateval{#2(#3)}}%
+ \coordinate (\pflantecednoms) at ({#3},{\tmpresimg}) ;
+ }%
+}
+
+\NewDocumentCommand\PlacerImages{ O{} m m }{%
+ \useKVdefault[GraphiqueTikzImg]%
+ \setKV[GraphiqueTikzImg]{#1}%
+ \IfSubStr{\pflimgcolors}{/}%
+ {%
+ \StrCut{\pflimgcolors}{/}{\pflimgcolorpt}{\pflimgcolorline}
+ }%
+ {%
+ \xdef\pflimgcolorpt{\pflimgcolors}\xdef\pflimgcolorline{\pflimgcolors}
+ }%
+ \ifboolKV[GraphiqueTikzImg]{Spline}%
+ {%
+ \foreach \i in {#3}{%
+ \path[draw=none,pflcourbe,name path=tmpimage] ({\i},{\pflymin})--({\i},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpimage,name=ZZ}] ;
+ \ifboolKV[GraphiqueTikzImg]{Traits}%
+ {%
+ \draw[\pflimgcolorline,pfltraitimg] let \p1 = (ZZ-1) in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \MarquerPts*[Style={\useKV[GraphiqueTikzImg]{Style}},Couleur=\pflimgcolorpt]{(ZZ-1)}
+ %\filldraw[\pflimgcolorpt] (ZZ-1) circle[radius=2pt] ;
+ }
+ }%
+ {%
+ \foreach \i in {#3}{%
+ \xdef\tmpresimg{\xintfloateval{#2(\i)}}%
+ \ifboolKV[GraphiqueTikzImg]{Traits}%
+ {%
+ \draw[\pflimgcolorline,pfltraitimg] ({\i},{\pflOy}) |- ({\pflOx},{\tmpresimg}) ;
+ }%
+ {}%
+ \MarquerPts*[Style={\useKV[GraphiqueTikzImg]{Style}},Couleur=\pflimgcolorpt]{({\i},{\tmpresimg})}
+ %\filldraw[\pflimgcolorpt] ({\i},{\tmpresimg}) circle[radius=2pt] ;
+ }%
+ }%
+}
+
+\NewDocumentCommand\PlacerAntecedents{ O{} m m }{%avec le nom de la courbe...
+ \useKVdefault[GraphiqueTikzImg]%
+ \setKV[GraphiqueTikzImg]{#1}%
+ \xdef\pflstepcurve{\xintfloateval{0.1*\pflgrillexs}}
+ \IfSubStr{\pflimgcolors}{/}%
+ {%
+ \StrCut{\pflimgcolors}{/}{\pflimgcolorpt}{\pflimgcolorline}%
+ }%
+ {%
+ \xdef\pflimgcolorpt{\pflimgcolors}\xdef\pflimgcolorline{\pflimgcolors}%
+ }%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \path[draw=none,pflcourbe,name path=tmpanteced] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+ \path[name intersections={of=#2 and tmpanteced,name=ZZ,total=\t}] \pgfextra{\xdef\tmptotanteced{\t}};
+ \xintifboolexpr{\tmptotanteced == 0}{}%
+ {%
+ \ifboolKV[GraphiqueTikzImg]{Traits}%
+ {%
+ \draw[\pflimgcolorline,pfltraitantec] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+ }%
+ {}%
+ \foreach \i in {1,...,\tmptotanteced}{%
+ \IfStrEq{\pflantecednoms}{}%
+ {}%
+ {%
+ \coordinate (\pflantecednoms-\i) at (ZZ-\i) ;
+ }%
+ \ifboolKV[GraphiqueTikzImg]{Traits}%
+ {%
+ \draw[\pflimgcolorline,pfltraitimg] let \p1 = (ZZ-\i) in (ZZ-\i) -- ({\x1},{\pflOy}) ;
+ }%
+ {}%
+ \MarquerPts*[Style={\useKV[GraphiqueTikzImg]{Style}},Couleur=\pflimgcolorpt]{(ZZ-\i)}
+ %\filldraw[\pflimgcolorpt] (ZZ-\i) circle[radius=2pt] ;
+ }%
+ }%
+ \end{scope}
+}
+
+%===NOMBRE DÉRIVÉ ET TANGENTE (EXPÉRIEMENTAL)
+\NewDocumentCommand\CalculerNbDerive{ s m m m }{%*=gauche+nomfct+abspt+h
+ \IfBooleanTF{#1}%
+ {%
+ \xdef\TmpResNbDeriv{\xintfloateval{(#2(#3)-#2(#3-#4))/(#4)}}%
+ }%
+ {%
+ \xdef\TmpResNbDeriv{\xintfloateval{(#2(#3+#4)-#2(#3))/(#4)}}%
+ }%
+}
+
+\defKV[GraphiqueTikzTgte]{%
+ Couleurs=\def\pfltgttikzcolors{#1},%
+ DecG=\def\pfltgttikzkl{#1},%
+ DecD=\def\pfltgttikzkr{#1},%
+ h=\def\pfltgttikzh{#1},%
+ Sens=\def\pfltgttikzsens{#1},%
+ Delta=\def\tmptgtedelta{#1}
+}
+\setKVdefault[GraphiqueTikzTgte]{%
+ Couleurs=black,%
+ DecG=1,%
+ DecD=1,%
+ AffPoint=false,%
+ Spline=false,%
+ h=0.1,%
+ Sens=gd,%
+ Noeud=false,%
+ Delta=0.01,%
+ Style=o
+}
+
+\NewDocumentCommand\TracerTangente{ O{} m m D<>{} }{%
+ \restoreKV[GraphiqueTikzTgte]%
+ \setKV[GraphiqueTikzTgte]{#1}%
+ %en fonction de la gestion de l'abscisse
+ \ifboolKV[GraphiqueTikzTgte]{Noeud}%
+ {%
+ \path #3;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\pfltgttikzx{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+ }%
+ {%
+ \xdef\pfltgttikzx{#3}%
+ }%
+ %parties communes
+ \IfSubStr{\pfltgttikzcolors}{/}%
+ {%
+ \StrCut{\pfltgttikzcolors}{/}{\pfltgttikzline}{\pfltgttikzpoint}
+ }%
+ {%
+ \xdef\pfltgttikzline{\pfltgttikzcolors}\xdef\pfltgttikzpoint{\pfltgttikzcolors}
+ }%
+ \xdef\tmptgtdeb{\xintfloateval{\pfltgttikzx-(\pfltgttikzkl)}}%
+ \xdef\tmptgtfin{\xintfloateval{\pfltgttikzx+(\pfltgttikzkr)}}%
+ %suivant le type de courbe
+ \ifboolKV[GraphiqueTikzTgte]{Spline}%
+ {%
+ \path[name path=tmpimage] ({\pfltgttikzx},{\pflymin})--({\pfltgttikzx},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpimage,name=TANp}] ;
+ \IfStrEq{\pfltgttikzsens}{gd}%
+ {%
+ \path[name path=L-vline] ({\pfltgttikzx-\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx-\tmptgtedelta},{\pflymax}) ;
+ \path[name path=R-vline] ({\pfltgttikzx+\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx+\tmptgtedelta},{\pflymax}) ;
+ %\coordinate (LXcoor) at ($(TANp-1)+({-\tmptgtedelta},0)$) ;
+ %\coordinate (RXcoor) at ($(TANp-1)+({\tmptgtedelta},0)$) ;
+ }%
+ {}%
+ \IfStrEq{\pfltgttikzsens}{g}%
+ {%
+ \path[name path=L-vline] ({\pfltgttikzx-\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx-\tmptgtedelta},{\pflymax}) ;
+ \path[name path=R-vline] ({\pfltgttikzx},{\pflymin}) -- ({\pfltgttikzx},{\pflymax}) ;
+ %\coordinate (LXcoor) at ($(TANp-1)+({-\tmptgtedelta},0)$) ;
+ %\coordinate (RXcoor) at (TANp-1) ;
+ \def\tmptgtfin{\pfltgttikzx}%
+ }%
+ {}%
+ \IfStrEq{\pfltgttikzsens}{d}%
+ {%
+ \path[name path=L-vline] ({\pfltgttikzx},{\pflymin}) -- ({\pfltgttikzx},{\pflymax}) ;
+ \path[name path=R-vline] ({\pfltgttikzx+\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx+\tmptgtedelta},{\pflymax}) ;
+ \def\tmptgtdeb{\pfltgttikzx}%
+ }%
+ {}%
+ \path[name intersections={of=#2 and L-vline,name=LXcut}] ;
+ \path[name intersections={of=#2 and R-vline,name=RXcut}] ;
+ \coordinate (tzXproj) at ($(LXcut-1)!(TANp-1)!(RXcut-1)$) ; % projection
+ \coordinate (LLpoint) at ($(LXcut-1)+(TANp-1)-(tzXproj)$) ; % move
+ \coordinate (RRpoint) at ($(RXcut-1)+(TANp-1)-(tzXproj)$) ; % move
+ \path (LLpoint);
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\tzTANLLX{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\tzTANLLY{\xintfloateval{(\ConvertirPtToCm{\macroy})/(\pflyunit)}}%
+ \path (RRpoint);
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\tzTANRRX{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\tzTANRRY{\xintfloateval{(\ConvertirPtToCm{\macroy})/(\pflyunit)}}%
+ \def\tztangentLFn{(\tzTANRRY-\tzTANLLY)/(\tzTANRRX-\tzTANLLX)*(\x-\tzTANLLX)+\tzTANLLY}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;
+ \draw[pfltrait,\pfltgttikzline,domain=\tmptgtdeb:\tmptgtfin,samples=2,#4] plot (\x,{\tztangentLFn}) ;
+ \end{scope}
+ }%
+ {%
+ \IfStrEq{\pfltgttikzsens}{g}%
+ {%
+ \CalculerNbDerive*{#2}{\pfltgttikzx}{\pfltgttikzh}%
+ }%
+ {%
+ \CalculerNbDerive{#2}{\pfltgttikzx}{\pfltgttikzh}%
+ }%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;
+ \draw[pfltrait,\pfltgttikzline,#4] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,\TmpResNbDeriv*(x-(\pfltgttikzx))+#2(\pfltgttikzx)),x=\tmptgtdeb,\tmptgtfin)
+ \relax
+ };
+ \end{scope}
+ }%
+ \ifboolKV[GraphiqueTikzTgte]{AffPoint}%
+ {%
+ \ifboolKV[GraphiqueTikzTgte]{Spline}%
+ {%
+ \MarquerPts*[Style={\useKV[GraphiqueTikzTgte]{Style}},Couleur=\pfltgttikzpoint]{(TANp-1)}
+ %\filldraw[] (TANp-1) circle[pflpointc] ;
+ }%
+ {%
+ \xdef\tmpimgtgt{\xintfloateval{#2(\pfltgttikzx)}}%
+ \MarquerPts*[Style={\useKV[GraphiqueTikzTgte]{Style}},Couleur=\pfltgttikzpoint]{({\pfltgttikzx},\tmpimgtgt)}
+ %\filldraw[\pfltgttikzpoint] ({\pfltgttikzx},\tmpimgtgt) circle[pflpointc] ;
+ }%
+ }%
+ {}%
+}
+
+%====loi normale
+\defKV[GraphiqueTikzGaussienne]{%
+ Pas=\def\pflgaussstep{#1},%
+ Nom=\def\pflgaussname{#1}
+}
+
+\setKVdefault[GraphiqueTikzGaussienne]{%
+ Nom=gaussienne,%
+ Couleur=black,%
+ Trace=false,%
+ Pas={},%
+ Debut={\pflxmin},%
+ Fin={\pflxmax}
+}
+
+\NewDocumentCommand\DefinirLoiNormale{ O{} D<>{phi} m m }{%
+ %1=options
+ %2=mu
+ %3=sigma
+ \restoreKV[GraphiqueTikzGaussienne]%
+ \setKV[GraphiqueTikzGaussienne]{#1}%
+ \xintdeffloatfunc #2(x) := 1/((#4)*sqrt(2*pi))*exp(-0.5*((x-(#3))/(#4))^2) ;%
+ \IfStrEq{\pflgaussstep}{}%
+ {%
+ \xdef\pflgaussstep{\xintfloateval{((\useKV[GraphiqueTikzGaussienne]{Fin})-(\useKV[GraphiqueTikzGaussienne]{Debut}))/100}}%
+ }%
+ {}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphiqueTikzGaussienne]{Trace}%
+ {%
+ \path[draw,pflcourbe,{\useKV[GraphiqueTikzGaussienne]{Couleur}},name path global=\pflgaussname] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphiqueTikzGaussienne]{Debut}}..[\pflgaussstep]..{\useKV[GraphiqueTikzGaussienne]{Fin}},{\useKV[GraphiqueTikzGaussienne]{Fin}})
+ \relax
+ } ;
+ }%
+ {%
+ \path[draw=none,pflcourbe,name path global=\pflgaussname] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphiqueTikzGaussienne]{Debut}}..[\pflgaussstep]..{\useKV[GraphiqueTikzGaussienne]{Fin}},{\useKV[GraphiqueTikzGaussienne]{Fin}})
+ \relax
+ } ;
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\TracerLoiNormale{ O{} m }{%
+ %1=options
+ %2=mu
+ %3=sigma
+ \restoreKV[GraphiqueTikzGaussienne]%
+ \setKV[GraphiqueTikzGaussienne]{#1}%
+ \IfStrEq{\pflgaussstep}{}%
+ {%
+ \xdef\pflgaussstep{\xintfloateval{((\useKV[GraphiqueTikzGaussienne]{Fin})-(\useKV[GraphiqueTikzGaussienne]{Debut}))/100}}%
+ }%
+ {}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[pflcourbe,{\useKV[GraphiqueTikzGaussienne]{Couleur}}] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2),x={\useKV[GraphiqueTikzGaussienne]{Debut}}..[\pflgaussstep]..{\useKV[GraphiqueTikzGaussienne]{Fin}},{\useKV[GraphiqueTikzGaussienne]{Fin}})
+ \relax
+ } ;
+ \end{scope}
+}
+
+%==== DENSITÉ KHIDEUX
+\xintdeffloatfunc pflrecigamma(x) := x+0.577215664901*x^2-0.65587807152056*x^3-0.042002635033944*x^4+0.16653861138228*x^5-0.042197734555571*x^6;
+\xintdeffloatfunc pflgamma(x) := (x==1)?{1}{(abs(x)<=0.5)?{1/pflrecigamma(x)}{(x-1)*pflgamma(x-1)}};
+\xintdeffloatfunc pflkhideux(x,k) := (x<0)?{0}{(1/(2^(k/2)*pflgamma(k/2)))*x^(k/2-1)*exp(-x/2)};
+
+\NewDocumentCommand\DefinirLoiKhiDeux{ O{} D<>{khi} m }{%
+ %1=options
+ %2=mu
+ %3=sigma
+ \restoreKV[GraphiqueTikzGaussienne]%
+ \setKV[GraphiqueTikzGaussienne]{#1}%
+ \xintdeffloatfunc #2(x) := (x<0)?{0}{(1/(2^((#3)/2)*pflgamma((#3)/2)))*x^((#3)/2-1)*exp(-x/2)};
+ \IfStrEq{\pflgaussstep}{}%
+ {%
+ \xdef\pflgaussstep{\xintfloateval{((\useKV[GraphiqueTikzGaussienne]{Fin})-(\useKV[GraphiqueTikzGaussienne]{Debut}))/100}}%
+ }%
+ {}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphiqueTikzGaussienne]{Trace}%
+ {%
+ \path[draw,pflcourbe,{\useKV[GraphiqueTikzGaussienne]{Couleur}},name path global=\pflgaussname] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphiqueTikzGaussienne]{Debut}}..[\pflgaussstep]..{\useKV[GraphiqueTikzGaussienne]{Fin}},{\useKV[GraphiqueTikzGaussienne]{Fin}})
+ \relax
+ } ;
+ }%
+ {%
+ \path[draw=none,pflcourbe,name path global=\pflgaussname] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphiqueTikzGaussienne]{Debut}}..[\pflgaussstep]..{\useKV[GraphiqueTikzGaussienne]{Fin}},{\useKV[GraphiqueTikzGaussienne]{Fin}})
+ \relax
+ } ;
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\TracerLoiKhiDeux{ O{} m }{%
+ %1=options
+ %2=mu
+ %3=sigma
+ \restoreKV[GraphiqueTikzGaussienne]%
+ \setKV[GraphiqueTikzGaussienne]{#1}%
+ \IfStrEq{\pflgaussstep}{}%
+ {%
+ \xdef\pflgaussstep{\xintfloateval{((\useKV[GraphiqueTikzGaussienne]{Fin})-(\useKV[GraphiqueTikzGaussienne]{Debut}))/100}}%
+ }%
+ {}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[pflcourbe,{\useKV[GraphiqueTikzGaussienne]{Couleur}}] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2),x={\useKV[GraphiqueTikzGaussienne]{Debut}}..[\pflgaussstep]..{\useKV[GraphiqueTikzGaussienne]{Fin}},{\useKV[GraphiqueTikzGaussienne]{Fin}})
+ \relax
+ } ;
+ \end{scope}
+}
+
+%====droite
+\defKV[GraphiquetikzDroite]{%
+ Nom=\def\pfldroitename{#1}
+}
+
+\setKVdefault[GraphiquetikzDroite]{%
+ Pente=false,%
+ Couleur=black,%
+ Debut={\pflxmin},%
+ Fin={\pflxmax},%
+ Nom={}
+}
+
+\NewDocumentCommand\TracerDroite{ O{} m m D<>{} }{%
+ \restoreKV[GraphiquetikzDroite]%
+ \setKV[GraphiquetikzDroite]{#1}%
+ %1er point
+ \path #2;%
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\pfldtetikzxA{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\pfldtetikzyA{\xintfloateval{(\ConvertirPtToCm{\macroy})/(\pflyunit)}}%
+ %2ème point si besoin
+ \ifboolKV[GraphiquetikzDroite]{Pente}%
+ {%
+ \xdef\pfldtepente{\xintfloateval{#3}}%
+ }%
+ {%
+ \path #3;%
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\pfldtetikzxB{\xintfloateval{(\ConvertirPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\pfldtetikzyB{\xintfloateval{(\ConvertirPtToCm{\macroy})/(\pflyunit)}}%
+ \xdef\pfldtepente{\xintfloateval{(\pfldtetikzyB-\pfldtetikzyA)/(\pfldtetikzxB-\pfldtetikzxA)}}%
+ }%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;
+ \xintifboolexpr{\pfldtetikzxA == \pfldtetikzxB}%
+ {%
+ \IfEq{\pfldroitename}{}%
+ {%
+ \draw[pfltrait,{\useKV[GraphiquetikzDroite]{Couleur}},#4] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ;
+ }%
+ {%
+ \draw[pfltrait,{\useKV[GraphiquetikzDroite]{Couleur}},#4,name path global=\pfldroitename] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ;
+ }%
+ }%
+ {%
+ \IfEq{\pfldroitename}{}%
+ {%
+ \draw[pfltrait,{\useKV[GraphiquetikzDroite]{Couleur}},domain={\useKV[GraphiquetikzDroite]{Debut}}:{\useKV[GraphiquetikzDroite]{Fin}},samples=2,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ;
+ }%
+ {%
+ \draw[pfltrait,{\useKV[GraphiquetikzDroite]{Couleur}},domain={\useKV[GraphiquetikzDroite]{Debut}}:{\useKV[GraphiquetikzDroite]{Fin}},samples=2,name path global=\pfldroitename,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ;
+ }%
+ }%
+ \end{scope}
+}
+
+%====asymptote
+\NewDocumentCommand\TracerAsymptote{ O{} m D<>{} }{%
+ \restoreKV[GraphiquetikzDroite]%
+ \setKV[GraphiquetikzDroite]{#1}%
+ %tracé
+ \draw[pfltrait,{\useKV[GraphiquetikzDroite]{Couleur}},#3] ({#2},{\pflymin})--({#2},{\pflymax}) ;
+}
+
+
+%====MinMax
+\defKV[GraphiqueTikzMinMax]{%
+ Pas=\def\pflminmaxstep{#1},%
+ Methode=\def\pflminmaxmethode{#1},%
+ Coeffs=\def\pflminmaxcoeffs{#1}
+}
+\setKVdefault[GraphiqueTikzMinMax]{%
+ Debut={\pflxmin},%
+ Fin={\pflxmax},%
+ Pas={},%
+ Tension=0.5,%
+ Methode=fonction,%
+ Coeffs=3
+}
+
+\NewDocumentCommand\TrouverMaximum{ O{} m O{c-max} }{%
+ %1=clés
+ %2=paramètres en fonction de [Methode]
+ \restoreKV[GraphiqueTikzMinMax]%
+ \setKV[GraphiqueTikzMinMax]{#1}%
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflminmaxstep{\xintfloateval{((\useKV[GraphiqueTikzMinMax]{Fin})-(\useKV[GraphiqueTikzMinMax]{Debut}))/100}}%
+ }%
+ {}%
+ \begin{scope}[bezier bounding box,local bounding box=bbtmpmax]
+ \IfStrEq{\pflminmaxmethode}{fonction}%
+ {%
+ \path[draw=none,name path=curvetmpmax] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphiqueTikzMinMax]{Debut}}..[\pflstepcurve]..{\useKV[GraphiqueTikzMinMax]{Fin}},{\useKV[GraphiqueTikzMinMax]{Fin}})
+ \relax
+ };
+ }%
+ {}%
+ \IfStrEq{\pflminmaxmethode}{interpo}%
+ {%
+ \path[draw=none,name path=curvetmpmax] plot[smooth,tension={\useKV[GraphiqueTikzMinMax]{Tension}}] coordinates {#2};
+ }%
+ {}%
+ \IfStrEq{\pflminmaxmethode}{spline}%
+ {%
+ \GenererSpline{#2}{\pflminmaxcoeffs}[\tmpsplineminmax]%
+ \path[draw=none,name path=curvetmpmax] \tmpsplineminmax ;
+ }%
+ {}%
+ %retour
+ \path[name path=tmpmax] ([yshift=-0.25\pgflinewidth]bbtmpmax.north east) -- ([yshift=-0.25\pgflinewidth]bbtmpmax.north west) ;
+ \path[name intersections={of=curvetmpmax and tmpmax,name=#3}] ;
+ \coordinate (#3) at ($0.5*(#3-1)+0.5*(#3-2)+(0,0.25\pgflinewidth)$) ;
+ \end{scope}
+}
+
+\NewDocumentCommand\TrouverMinimum{ O{} m O{c-min} }{%
+ %1=clés
+ %2=paramètres en fonction de [Methode]
+ \restoreKV[GraphiqueTikzMinMax]%
+ \setKV[GraphiqueTikzMinMax]{#1}%
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflminmaxstep{\xintfloateval{((\useKV[GraphiqueTikzMinMax]{Fin})-(\useKV[GraphiqueTikzMinMax]{Debut}))/100}}%
+ }%
+ {}%
+ \begin{scope}[bezier bounding box,local bounding box=bbtmpmin]
+ \IfStrEq{\pflminmaxmethode}{fonction}%
+ {%
+ \path[draw=none,name path=curvetmpmin] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphiqueTikzMinMax]{Debut}}..[\pflstepcurve]..{\useKV[GraphiqueTikzMinMax]{Fin}},{\useKV[GraphiqueTikzMinMax]{Fin}})
+ \relax
+ };
+ }%
+ {}%
+ \IfStrEq{\pflminmaxmethode}{interpo}%
+ {%
+ \path[draw=none,name path=curvetmpmin] plot[smooth,tension={\useKV[GraphiqueTikzMinMax]{Tension}}] coordinates {#2};
+ }%
+ {}%
+ \IfStrEq{\pflminmaxmethode}{spline}%
+ {%
+ \GenererSpline{#2}{\pflminmaxcoeffs}[\tmpsplineminmax]%
+ \path[draw=none,name path=curvetmpmin] \tmpsplineminmax ;
+ }%
+ {}%
+ %retour
+ \path[name path=tmpmin] ([yshift=0.25\pgflinewidth]bbtmpmin.south east) -- ([yshift=0.25\pgflinewidth]bbtmpmin.south west) ;
+ \path[name intersections={of=curvetmpmin and tmpmin,name=#3}] ;
+ \coordinate (#3) at ($0.5*(#3-1)+0.5*(#3-2)+(0,-0.25\pgflinewidth)$) ;
+ \end{scope}
+}
+
+%====TEXTES
+\defKV[GraphiqueTikzNode]{%
+ Couleur=\def\pflnodecol{#1},%
+ Police=\def\pflnodefonte{#1},%
+ Position=\def\pfnodepos{#1}
+}
+\setKVdefault[GraphiqueTikzNode]{%
+ Couleur=black,%
+ Debut={\normalfont\normalsize},%
+ Position={}
+}
+\NewDocumentCommand\PlacerTexte{ O{} m m }{%
+ \restoreKV[GraphiqueTikzNode]%
+ \setKV[GraphiqueTikzNode]{#1}%
+ \draw #2 node[pflnoeud,font=\pflnodefonte,text=\pflnodecol,\pfnodepos] {#3} ;
+}
+
+%++++++++++++++++++++++++++
+%++++++++++ENGLISH+++++++++
+%++++++++++++++++++++++++++
+
+%====COMMANDE POUR NB DECIMAL ALEA ENTRE BORNES
+\NewDocumentCommand\PickRandomNb{ s O{0} m m O{\mmyrandomnb} }{%
+ \def\tmpborneinf{\xinteval{floor(#3)}}%inf=\tmpborneinf\par%
+ \def\tmpbornesup{\xinteval{ceil(#4)}}%sup=\tmpbornesup\par%
+ \xintifboolexpr{#2 == 0}%
+ {%
+ \xdef#5{\fpeval{randint(\tmpborneinf,\tmpbornesup)}}%
+ }%
+ {%
+ \def\tmptest{0}%
+ \whiledo{\tmptest=0}{%
+ \xintifboolexpr{(\tmpbornesup-\tmpborneinf) == 1}%
+ {%
+ \xdef\tmpresalea{\fpeval{\tmpborneinf+round(rand(),#2)}}%
+ }%
+ {%
+ \xdef\tmpresalea{\fpeval{round(randint(\tmpborneinf,\tmpbornesup)+rand(),#2)}}%
+ }%
+ %essai=\tmpresalea\par
+ \IfBooleanTF{#1}%
+ {%
+ \xintifboolexpr{\tmpresalea < #4 'and' \tmpresalea > #3 }{\def\tmptest{1}}{\def\tmptest{0}}%
+ }%
+ {%
+ \xintifboolexpr{\tmpresalea <= #4 'and' \tmpresalea >= #3 }{\def\tmptest{1}}{\def\tmptest{0}}%
+ }%
+ }%
+ \xdef#5{\tmpresalea}%
+ %res=%
+ }%
+}
+
+%====PATCH NUM
+\@ifundefined{RoundNb}%
+ {%
+ \NewDocumentCommand\RoundNb{ O{2} m}{\num{\xintfloateval{round(#2,#1)}}\relax}%
+ }%
+ {%
+ \RenewDocumentCommand\RoundNb{ O{2} m}{\num{\xintfloateval{round(#2,#1)}}\relax}%
+ }%
+
+%====STYLES DE BASE
+\tikzset{tkzgrphnode/.style={}}
+\tikzset{tkzgrphpoint/.style={line width=0.95pt}}
+\tikzset{tkzgrphpointc/.style={radius=1.75pt}}
+\tikzset{tkzgrphpointmc/.style={radius=0.875pt}}
+\tikzset{tkzgrphscatter/.style={radius=1.75pt}}
+\tikzset{tkzgrphframe/.style={line width=0.8pt,gray}}
+\tikzset{tkzgrphcurve/.style={line width=1.05pt}}
+\tikzset{tkzgrphline/.style={line width=0.8pt}}
+\tikzset{tkzgrpharrowl/.style={<-,>=latex}}
+\tikzset{tkzgrpharrowr/.style={->,>=latex}}
+\tikzset{tkzgrpharrowlr/.style={<->,>=latex}}
+\tikzset{tkzgrphcounterimage/.style={line width=0.9pt,densely dashed}}
+\tikzset{tkzgrphrange/.style={line width=0.9pt,densely dashed,->,>=latex}}
+\tikzset{tkzgrphgridp/.style={thin,lightgray}}
+\tikzset{tkzgrphgrids/.style={very thin,lightgray}}
+\tikzset{tkzgrphaxes/.style={line width=0.8pt,->,>=latex}}
+\tikzset{
+ Xgrid/.store in=\pflgrillex,Xgrid/.default=1,Xgrid=1,
+ Xgrids/.store in=\pflgrillexs,Xgrids/.default=0.5,Xgrids=0.5,
+ Ygrid/.store in=\pflgrilley,Ygrid/.default=1,Ygrid=1,
+ Ygrids/.store in=\pflgrilleys,Ygrids/.default=0.5,Ygrids=0.5
+}
+\tikzset{%
+ pics/tkzgraphcross/.style args={#1/#2}{
+ code={
+ \draw[tkzgrphpoint,rotate=#2] (-#1,0) -- (#1,0);
+ \draw[tkzgrphpoint,rotate=#2] (0,-#1) -- (0, #1);
+ }
+ },
+ pics/tkzgraphcross/.default={2pt/45}
+}
+\tikzset{%
+ pics/tkzgraphsquare/.style args={#1/#2}{
+ code={
+ \filldraw[draw=none,tkzgrphpoint,rotate=#2] (-#1,-#1) rectangle (#1,#1) ;
+ }
+ },
+ pics/tkzgraphsquare/.default={2pt/0}
+}
+
+%===COMMANDE INTERNE POUR FORMATER EN FRACTIONS
+\NewDocumentCommand\FormatFraction{ s O{} m }{%
+ %*=moins sur le numérateur
+ %2=argument.optionnel[d/t/dec=...]
+ %3=argument mandataire {calcul ou fraction}
+ \def\calculargument{\xintPRaw{\xintIrr{\xinteval{#3}}}}%on calcule et on transforme en A/B
+ \IfSubStr{\calculargument}{/}%on teste si le symbole / apparaît
+ {%si oui := fraction
+ \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur
+ \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur
+ \ifblank{#2}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{d}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\displaystyle\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\displaystyle\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\displaystyle\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{t}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{n}%
+ {%
+ \ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}%
+ }%
+ {}%si l'argument optionnel est vide
+ }{%si non := entier
+ \num{\calculargument}%on affiche l'entier, avec le package siunitx
+ }%
+}
+
+%affichage d'un label en radians
+\NewDocumentCommand\FormatTrig{ O{t} m }{%étoilée en dfrac
+ \IfStrEq{#2}{0}%cas où l'argument vaut 0
+ {\def\restmp{0}}%
+ {%
+ \StrDel{#2}{*}[\restmpsansmoins]%
+ \StrSubstitute{\restmpsansmoins}{pi}{\pi}[\restmppi]%
+ \IfSubStr{#2}{/}%
+ {%
+ \StrCut{\restmppi}{/}\tmpnum\tmpdenom%
+ \IfSubStr{\tmpnum}{-}%
+ {%
+ \StrDel{\tmpnum}{-}[\restmppinum]%
+ \IfStrEqCase{#1}{%
+ {t}{\def\restmp{-\frac{\restmppinum}{\tmpdenom}}}%
+ {d}{\def\restmp{-\displaystyle\frac{\restmppinum}{\tmpdenom}}}%
+ {n}{\def\restmp{\nicefrac{-\restmppinum}{\tmpdenom}}}%
+ }%
+ }%
+ {%
+ \IfStrEqCase{#1}{%
+ {t}{\def\restmp{\frac{\tmpnum}{\tmpdenom}}}%
+ {d}{\def\restmp{\displaystyle\frac{\tmpnum}{\tmpdenom}}}%
+ {n}{\def\restmp{\nicefrac{\tmpnum}{\tmpdenom}}}%
+ }%
+ }%
+ }%
+ {%
+ \def\restmp{\restmppi}%
+ }%
+ }%
+ \ensuremath{\restmp}%
+}
+
+%====FORMATAGE DES RACINES SIMPLES
+\NewDocumentCommand\FormatSqrt{ O{t} m }{%
+ \IfStrEq{#2}{0}%cas où l'argument vaut 0
+ {\ensuremath{0}}%
+ {%
+ \IfSubStr{#2}{sqrt}%
+ {%
+ \StrDel{#2}{*}[\tmpargbrut]%
+ \StrBetween[1,1]{\tmpargbrut}{sqrt(}{)}[\tmpargnumrac]%
+ \StrBefore{\tmpargbrut}{sqrt}[\tmparavantrac]%
+ \IfStrEqCase{\tmparavantrac}{
+ {}{\xdef\tmparavantrac{}}%
+ {-}{\xdef\tmparavantrac{-}}%
+ }[\xdef\tmparavantrac{\num{\tmparavantrac}}]%
+ \IfSubStr{\tmpargbrut}{/}%
+ {%
+ \StrBehind{\tmpargbrut}{/}[\tmpargdenomrac]%
+ \IfStrEqCase{#1}{%
+ {d}{%
+ \ensuremath{\displaystyle\frac{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}{\num{\tmpargdenomrac}}}%
+ }%
+ {t}{%
+ \ensuremath{\frac{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}{\num{\tmpargdenomrac}}}%
+ }%
+ {n}{%
+ \ensuremath{\nicefrac{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}{\num{\tmpargdenomrac}}}%
+ }%
+ }%
+ }%
+ {%
+ \ensuremath{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}%
+ }%
+ }%
+ {%
+ \FormatFraction[#1]{#2}%
+ }%
+ }%
+}
+
+%====COMMANDE INTERNE DE CONVERSION
+\ExplSyntaxOn
+ \NewDocumentCommand\ConvertPtToCm{ m } { \dim_to_decimal_in_unit:nn { #1 } { 1 cm } }
+\ExplSyntaxOff
+
+%====RECUPERER COORDONNEES NOEUD
+\NewDocumentCommand\GetXcoord{ m O{\myxcoord} }{%
+ \path #1;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef#2{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+}
+\NewDocumentCommand\GetYcoord{ m O{\myycoord} }{%
+ \path #1;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef#2{\xintfloateval{(\ConvertPtToCm{\macroy})/(\pflyunit)}}%
+}
+
+\NewDocumentCommand\GetXYcoord{ m O{\myxcoord} O{\myycoord} }{%
+ \GetXcoord{#1}[#2]%
+ \GetYcoord{#1}[#3]%
+}
+
+%===UNITÉS
+\newcommand\DistBetweenNodes[3][\MyTmpDist]{%
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}
+ {\pgfpointanchor{#3}{center}}
+ % no need to use a new dimen
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ % to convert from pt to cm
+ \pgfmathparse{veclen(\pgf@xa,\pgf@ya)/28.45274}
+ \global\let#1\pgfmathresult %macro globale
+}
+
+\newcommand\TikZUnits{
+ \coordinate (@0) at (0,0) ;
+ \coordinate (@X) at (1,0) ;
+ \coordinate (@Y) at (0,1) ;
+ \DistBetweenNodes[\pflxunit]{@0}{@X}
+ \DistBetweenNodes[\pflyunit]{@0}{@Y}
+}
+
+%====ENVIRONNEMENT
+\defKV[GraphicTikz]{%
+ GradThick=\def\pflthickgrad{#1}
+}
+\setKVdefault[GraphicTikz]{%
+ Frame=false,%
+ GradThick=3pt
+}
+
+\NewDocumentEnvironment{GraphTikz}{ O{} D<>{} }%
+%1 = options tikz, classiques
+%2 = clés spécifiques
+{%
+ \restoreKV[GraphicTikz]%
+ \setKV[GraphicTikz]{#2}%
+ %l'environnement
+ \begin{tikzpicture}[#1]%
+ %unités x/y pour des calculs de coordonnées
+ \TikZUnits
+ %noeuds
+ \coordinate (bbxTop) at (current bounding box.north) ;
+ \coordinate (bbxBottom) at (current bounding box.south) ;
+ \ifboolKV[GraphicTikz]{Frame}{\draw[tkzgrphframe] ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;}{}%
+ %back to normal
+}%
+{%
+ \end{tikzpicture}%
+}
+
+%====AXES
+\defKV[GraphicTikzAxis]{
+ Format=\def\pflformataxes{#1}
+}
+\setKVdefault[GraphicTikzAxis]{%
+ Grid=true,%
+ Enlarge=0,%
+ Grads=true,%
+ Origin=false,%
+ Font={},%
+ Format=num,%
+ Lines=true,%
+ Last=false,%
+ Behind=false,%
+ Above=false
+}
+
+\NewDocumentCommand\FormatXaxisValues{ m m }{%
+ \IfStrEqCase{#1}{%
+ {num}{\num{#2}}%
+ {year}{#2}%
+ {frac}{\FormatFrac{#2}}%
+ {dfrac}{\FormatFrac[d]{#2}}%
+ {nfrac}{\FormatFrac[n]{#2}}%
+ {trig}{\FormatTrig{#2}}%
+ {dtrig}{\FormatTrig[d]{#2}}%
+ {ntrig}{\FormatTrig[n]{#2}}%
+ {sqrt}{\FormatSqrt{#2}}%
+ {dsqrt}{\FormatSqrt[d]{#2}}%
+ {nsqrt}{\FormatSqrt[n]{#2}}%
+ }[#2]%
+}
+
+\NewDocumentCommand\FormatYaxisValues{ m m }{%
+ \IfStrEqCase{#1}{%
+ {num}{\num{#2}}%
+ {year}{#2}%
+ {frac}{\FormatSqrt{#2}}%
+ {dfrac}{\FormatFrac[d]{#2}}%
+ {nfrac}{\FormatFrac[n]{#2}}%
+ {trig}{\FormatTrig{#2}}%
+ {dtrig}{\FormatTrig[d]{#2}}%
+ {ntrig}{\FormatTrig[n]{#2}}%
+ {sqrt}{\FormatSqrt{#2}}%
+ {dsqrt}{\FormatSqrt[d]{#2}}%
+ {nsqrt}{\FormatSqrt[n]{#2}}%
+ }[#2]%
+}
+
+\NewDocumentCommand\DrawAxisGrids{ s O{} m D<>{#3} m D<>{#5} }{%
+ \restoreKV[GraphicTikzAxis]%
+ \setKV[GraphicTikzAxis]{#2}%
+ %cas particuliers sous/sur impression
+ \ifboolKV[GraphicTikzAxis]{Behind}%
+ {%
+ \setKV[GraphicTikzAxis]{Grads=false}
+ }%
+ {}%
+ \ifboolKV[GraphicTikzAxis]{Above}%
+ {%
+ \setKV[GraphicTikzAxis]{Grid=false}
+ }%
+ {}%
+ %suite
+ \IfSubStr{\pflformataxes}{/}%
+ {%
+ \StrCut{\pflformataxes}{/}{\pflformataxex}{\pflformataxey}%
+ }%
+ {%
+ \xdef\pflformataxex{\pflformataxes}\xdef\pflformataxey{\pflformataxes}%
+ }%
+ \ifboolKV[GraphicTikzAxis]{Grid}%
+ {%
+ \draw[tkzgrphgrids,xstep=\pflgrillexs,ystep=\pflgrilleys] ({\pflxmin},{\pflymin}) grid ({\pflxmax},{\pflymax});
+ \draw[tkzgrphgridp,xstep=\pflgrillex,ystep=\pflgrilley] ({\pflxmin},{\pflymin}) grid ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphicTikzAxis]{Last}%
+ {%
+ \draw[tkzgrphgridp] ({\pflxmin},{\pflymax})--({\pflxmax},{\pflymax}) ;
+ \draw[tkzgrphgridp] ({\pflxmax},{\pflymin})--({\pflxmax},{\pflymax}) ;
+ }%
+ {}%
+ }%
+ {}%
+ \draw[tkzgrphaxes] ({\pflxmin},{\pflOy}) -- ([xshift={\useKV[GraphicTikzAxis]{Enlarge}}]{\pflxmax},{\pflOy}) ;
+ \draw[tkzgrphaxes] ({\pflOx},{\pflymin}) -- ([yshift={\useKV[GraphicTikzAxis]{Enlarge}}]{\pflOx},{\pflymax}) ;
+ \IfEq{#3}{auto}%
+ {%
+ \xdef\tmprangexvalues{\xintfloateval{seq(i,i=\pflxmin..[\pflgrillex]..\pflxmax)}}\StrDel{\tmprangexvalues}{ }[\tmprangexvalues]%
+ \xdef\pflformataxex{num}%
+ }%
+ {%
+ \xdef\tmprangexvalues{#3}%
+ }%
+ \IfEq{#5}{auto}%
+ {%
+ \xdef\tmprangeyvalues{\xintfloateval{seq(i,i=\pflymin..[\pflgrilley]..\pflymax)}}\StrDel{\tmprangeyvalues}{ }[\tmprangeyvalues]%
+ \xdef\pflformataxey{num}%
+ }%
+ {%
+ \xdef\tmprangeyvalues{#5}%
+ }%
+ \foreach \x in \tmprangexvalues {\draw[tkzgrphline] ([yshift=\pflthickgrad]{\x},{\pflOy})--++(0,{-2*\pflthickgrad}) ;}
+ \foreach \y in \tmprangeyvalues {\draw[tkzgrphline] ([xshift=\pflthickgrad]{\pflOx},{\y})--++({-2*\pflthickgrad},0) ;}
+ \ifboolKV[GraphicTikzAxis]{Grads}%
+ {%
+ %origine
+ \ifboolKV[GraphicTikzAxis]{Origin}%
+ {%
+ \draw ({\pflOx},{\pflOy}) node[tkzgrphnode,below left,font={\useKV[GraphicTikzAxis]{Font}}] {\FormatXaxisValues{\pflformataxex}{\pflOx}} ;
+ %\draw (\pflOx,\pflOy) node[below left,font={\useKV[GraphicTikzAxis]{Font}}] {\ifboolKV[GraphicTikzAxis]{Num}{\num{\pflOx}}{\pflOx}} ;
+ }%
+ {}%
+ %graduations x, sauf si auto...
+ \foreach \x in \tmprangexvalues {%
+ \IfBooleanTF{#1}%
+ {%
+ \xintifboolexpr{\x == \pflOx}{}{\draw ([yshift=-\pflthickgrad]{\x},{\pflOy}) node[tkzgrphnode,below,font={\useKV[GraphicTikzAxis]{Font}}] {\FormatXaxisValues{\pflformataxex}{\x}} ;}
+ %\xintifboolexpr{\x == \pflOx}{}{\draw ([yshift=-\pflthickgrad]\x,\pflOy) node[below,font={\useKV[GraphicTikzAxis]{Font}}] {\ifboolKV[GraphicTikzAxis]{Num}{\num{\x}}{\x}} ;}
+ }%
+ {%
+ \draw ([yshift=-\pflthickgrad]{\x},{\pflOy}) node[tkzgrphnode,below,font={\useKV[GraphicTikzAxis]{Font}}] {\FormatXaxisValues{\pflformataxex}{\x}} ;
+ %\draw ([yshift=-\pflthickgrad]\x,\pflOy) node[below,font={\useKV[GraphicTikzAxis]{Font}}] {\ifboolKV[GraphicTikzAxis]{Num}{\num{\x}}{\x}} ;
+ }%
+ }%
+ \foreach \y in \tmprangeyvalues {%
+ \IfBooleanTF{#1}%
+ {%
+ \xintifboolexpr{\y == \pflOy}{}{\draw ([xshift=-\pflthickgrad]{\pflOx},{\y}) node[tkzgrphnode,left,font={\useKV[GraphicTikzAxis]{Font}}] {\FormatYaxisValues{\pflformataxey}{\y}} ;}
+ %\xintifboolexpr{\y == \pflOy}{}{\draw ([xshift=-\pflthickgrad]\pflOx,\y) node[left,font={\useKV[GraphicTikzAxis]{Font}}] {\ifboolKV[GraphicTikzAxis]{Num}{\num{\y}}{\y}} ;}
+ }%
+ {%
+ \draw ([xshift=-\pflthickgrad]{\pflOx},{\y}) node[tkzgrphnode,left,font={\useKV[GraphicTikzAxis]{Font}}] {\FormatYaxisValues{\pflformataxey}{\y}} ;
+ %\draw ([xshift=-\pflthickgrad]\pflOx,\y) node[left,font={\useKV[GraphicTikzAxis]{Font}}] {\ifboolKV[GraphicTikzAxis]{Num}{\num{\y}}{\y}} ;
+ }%
+ }%
+ }%
+ {}%
+}
+
+%===DEFINIR POINTS
+\setKVdefault[GraphicTikzDefPoints]{Color=black,Mark=false,Style=o}
+
+\NewDocumentCommand\DefinePts{ O{} m }{%
+ \restoreKV[GraphicTikzDefPoints]%
+ \setKV[GraphicTikzDefPoints]{#1}%
+ \foreach \tmpnamept/\tmpxpt/\tmpypt in {#2}{%
+ \coordinate (\tmpnamept) at ({\tmpxpt},{\tmpypt}) ;
+ \ifboolKV[GraphicTikzDefPoints]{Mark}%
+ {%
+ \MarkPts*[Style={\useKV[GraphicTikzDefPoints]{Style}},Color={\useKV[GraphicTikzDefPoints]{Color}}]{(\tmpnamept)}
+ %\filldraw[{\useKV[GraphicTikzDefPoints]{Color}}] (\tmpnamept) circle[tkzgrphpointc] ;
+ }%
+ {}%
+ }
+}
+
+\defKV[GraphicTikzMarkPoints]{%
+ Color=\def\pflcouleurpoints{#1},%
+ Style=\def\pflstylepoints{#1}
+}
+\setKVdefault[GraphicTikzMarkPoints]{%
+ Color=black,%
+ Sizec=2pt,%
+ Sizex=2pt,%
+ Sizeo=1.75pt,%
+ Style=o,%
+ Lines=false
+}
+\NewDocumentCommand\MarkPts{ s O{} D<>{\normalfont\normalsize} m }{%
+ %étoilée = sans label
+ %2=clés
+ %3=points
+ \restoreKV[GraphicTikzMarkPoints]%
+ \setKV[GraphicTikzMarkPoints]{#2}%
+ \IfBooleanTF{#1}%
+ {%
+ \IfStrEq{\pflstylepoints}{x}%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphcross={\useKV[GraphicTikzMarkPoints]{Sizex}}/45} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{+}%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphcross={\useKV[GraphicTikzMarkPoints]{Sizex}}/90} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{c}%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[draw=none,fill={\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphsquare={\useKV[GraphicTikzMarkPoints]{Sizec}}/0} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{d}%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[draw=none,fill={\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphsquare={\useKV[GraphicTikzMarkPoints]{Sizeo}}/45} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{o}%
+ {%
+ \IfSubStr{\pflcouleurpoints}{/}%
+ {%
+ \StrCut{\pflcouleurpoints}{/}{\pflcouleurpointsA}{\pflcouleurpointsB}%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[tkzgrphline,fill=\pflcouleurpointsB,draw=\pflcouleurpointsA] \Point circle[radius={\useKV[GraphicTikzMarkPoints]{Sizeo}}] ;
+ }%
+ }%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[\pflcouleurpoints] \Point circle[radius={\useKV[GraphicTikzMarkPoints]{Sizeo}}] ;
+ }%
+ }%
+ }%
+ {}%
+ }%
+ {%avec label
+ \IfStrEq{\pflstylepoints}{x}%
+ {%
+ \foreach \Point/\Pos/\Label in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphcross={\useKV[GraphicTikzMarkPoints]{Sizex}}/45} node[tkzgrphnode,\Pos,font=#3] {\Label} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{+}%
+ {%
+ \foreach \Point/\Pos/\Label in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphcross={\useKV[GraphicTikzMarkPoints]{Sizex}}/90} node[tkzgrphnode,\Pos,font=#3] {\Label} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{c}%
+ {%
+ \foreach \Point/\Pos/\Label in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[draw=none,fill={\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphsquare={\useKV[GraphicTikzMarkPoints]{Sizec}}/0} node[tkzgrphnode,\Pos,{\useKV[GraphicTikzMarkPoints]{Color}},font=#3] {\Label} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{d}%
+ {%
+ \foreach \Point/\Pos/\Label in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[draw=none,fill={\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphsquare={\useKV[GraphicTikzMarkPoints]{Sizeo}}/45} node[tkzgrphnode,\Pos,{\useKV[GraphicTikzMarkPoints]{Color}},font=#3] {\Label} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{o}%
+ {%
+ \IfSubStr{\pflcouleurpoints}{/}%
+ {%
+ \StrCut{\pflcouleurpoints}{/}{\pflcouleurpointsA}{\pflcouleurpointsB}%
+ \foreach \Point/\Pos/\Label in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[tkzgrphline,\pflcouleurpointsA,fill=\pflcouleurpointsB] \Point circle[radius={\useKV[GraphicTikzMarkPoints]{Sizeo}}] node[tkzgrphnode,\Pos,font=#3] {\Label} ;
+ }%
+ }%
+ {%
+ \foreach \Point/\Pos/\Label in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[\pflcouleurpoints] \Point circle[radius={\useKV[GraphicTikzMarkPoints]{Sizeo}}] node[tkzgrphnode,\Pos,font=#3] {\Label} ;
+ }%
+ }%
+ }%
+ {}%
+ }%
+}
+
+%===AJOUTER DES VALEURS MANUELLEMENT
+\NewDocumentCommand\AddXvalues{ O{} m m }{%
+ \restoreKV[GraphicTikzAxis]%
+ \setKV[GraphicTikzAxis]{#1}%
+ \ifboolKV[GraphicTikzAxis]{Lines}{\foreach \x in {#2}{\draw[tkzgrphline] ([yshift=\pflthickgrad]{\x},{\pflOy})--++(0,{-2*\pflthickgrad}) ;}}{}%
+ \readlist*\LstValX{#2}%
+ \readlist*\LstValFmtX{#3}%
+ \foreach \i in {1,...,\LstValXlen}{%
+ \itemtomacro\LstValX[\i]\mavalx%
+ \itemtomacro\LstValFmtX[\i]\mavalfmtx%
+ \draw ([yshift=-\pflthickgrad]{\mavalx},{\pflOy}) node[tkzgrphnode,below,font={\useKV[GraphicTikzAxis]{Font}}] {\mavalfmtx} ;
+ }%
+}
+
+\NewDocumentCommand\AddYvalues{ O{} m m }{%
+ \restoreKV[GraphicTikzAxis]%
+ \setKV[GraphicTikzAxis]{#1}%
+ \ifboolKV[GraphicTikzAxis]{Lines}{\foreach \y in {#2}{\draw[tkzgrphline] ([xshift=\pflthickgrad]{\pflOx},{\y})--++({-2*\pflthickgrad},0) ;}}{}%
+ \readlist*\LstValY{#2}%
+ \readlist*\LstValFmtY{#3}%
+ \foreach \i in {1,...,\LstValYlen}{%
+ \itemtomacro\LstValY[\i]\mavaly%
+ \itemtomacro\LstValFmtY[\i]\mavalfmty%
+ \draw ([xshift=-\pflthickgrad]{\pflOx},{\mavaly}) node[tkzgrphnode,left,font={\useKV[GraphicTikzAxis]{Font}}] {\mavalfmty} ;
+ }%
+}
+
+%====FONCTIONS ET COURBES 'classique + interpo + spline'
+\defKV[GraphicTikzCourbe]{%
+ Step=\def\pflstepcurve{#1},%
+ Name=\def\pflnamecurve{#1}
+}
+\setKVdefault[GraphicTikzCourbe]{%
+ Color=black,%
+ Start={\pflxmin},%
+ End={\pflxmax},%
+ Step={},%
+ Clip=true,%
+ Name={},%
+ Trace=false,%
+ Tension=0.5
+}
+
+\NewDocumentCommand\DefineFunction{ O{} D<>{f} m }{%old version
+ \restoreKV[GraphicTikzCourbe]%
+ \setKV[GraphicTikzCourbe]{#1}%
+ \xintdeffloatfunc #2(x) := #3 ;
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflstepcurve{\xintfloateval{((\useKV[GraphicTikzCourbe]{End})-(\useKV[GraphicTikzCourbe]{Start}))/100}}%
+ }%
+ {}%
+ \ifboolKV[GraphicTikzCourbe]{Clip}{\begin{scope}\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});}{}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphicTikzCourbe]{Trace}%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzCourbe]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzCourbe]{End}},{\useKV[GraphicTikzCourbe]{End}})
+ \relax
+ };
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzCourbe]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzCourbe]{End}},{\useKV[GraphicTikzCourbe]{End}})
+ \relax
+ };
+ }%
+ \ifboolKV[GraphicTikzCourbe]{Clip}{\end{scope}}{}
+}
+
+\NewDocumentCommand\DefineCurve{ O{} D<>{f} m }{%
+ \restoreKV[GraphicTikzCourbe]%
+ \setKV[GraphicTikzCourbe]{#1}%
+ \xintdeffloatfunc #2(x) := #3 ;
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflstepcurve{\xintfloateval{((\useKV[GraphicTikzCourbe]{End})-(\useKV[GraphicTikzCourbe]{Start}))/100}}%
+ }%
+ {}%
+ \ifboolKV[GraphicTikzCourbe]{Clip}{\begin{scope}\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});}{}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphicTikzCourbe]{Trace}%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzCourbe]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzCourbe]{End}},{\useKV[GraphicTikzCourbe]{End}})
+ \relax
+ };
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzCourbe]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzCourbe]{End}},{\useKV[GraphicTikzCourbe]{End}})
+ \relax
+ };
+ }%
+ \ifboolKV[GraphicTikzCourbe]{Clip}{\end{scope}}{}
+}
+
+\NewDocumentCommand\DrawCurve{ O{} D<>{} m }{%
+ \restoreKV[GraphicTikzCourbe]%
+ \setKV[GraphicTikzCourbe]{#1}%
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflstepcurve{\xintfloateval{((\useKV[GraphicTikzCourbe]{End})-(\useKV[GraphicTikzCourbe]{Start}))/100}}%
+ }%
+ {}%
+ \ifboolKV[GraphicTikzCourbe]{Clip}{\begin{scope}\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});}{}
+ \IfEq{\pflnamecurve}{}%
+ {%
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}}] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#3),x={\useKV[GraphicTikzCourbe]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzCourbe]{End}},{\useKV[GraphicTikzCourbe]{End}})
+ \relax
+ };
+ }%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#3),x={\useKV[GraphicTikzCourbe]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzCourbe]{End}},{\useKV[GraphicTikzCourbe]{End}})
+ \relax
+ };
+ }%
+ \ifboolKV[GraphicTikzCourbe]{Clip}{\end{scope}}{}
+}
+
+\NewDocumentCommand\DefineLstInterpol{ m O{\myinterpolist} }{%
+ \def#2{#1}%
+}
+
+\NewDocumentCommand\DefineInterpoCurve{ O{} m }{%
+ \restoreKV[GraphicTikzCourbe]%
+ \setKV[GraphicTikzCourbe]{#1}%
+ \begin{scope}
+ \ifboolKV[GraphicTikzCourbe]{Trace}%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}},name path global=\pflnamecurve] plot[smooth,tension={\useKV[GraphicTikzCourbe]{Tension}}] coordinates {#2};
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}},name path global=\pflnamecurve] plot[smooth,tension={\useKV[GraphicTikzCourbe]{Tension}}] coordinates {#2};
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\DrawInterpoCurve{ O{} m }{%
+ %2=liste
+ \restoreKV[GraphicTikzCourbe]%
+ \setKV[GraphicTikzCourbe]{#1}%
+ \begin{scope}
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}}] plot [smooth,tension={\useKV[GraphicTikzCourbe]{Tension}}] coordinates {#2} ;
+ \end{scope}
+}
+
+\NewDocumentCommand\DefineLstSpline{ m O{\mysplinelst} }{%
+ \def#2{#1}%
+}
+
+\newcommand\tkzextractcoeff[2]{%1=liste,2=numero
+ \setsepchar{§}%
+ \readlist*\lcoeffs{#1}
+ \ifnum \lcoeffslen=1
+ \def\COEFFA{#1}
+ \def\COEFFB{#1}
+ \else
+ \itemtomacro\lcoeffs[#2]\COEFF
+ \IfSubStr{\COEFF}{/}%
+ {\StrCut{\COEFF}{/}{\COEFFA}{\COEFFB}}%
+ {\def\COEFFA{\COEFF}\def\COEFFB{\COEFF}}
+ \fi
+}
+
+\defKV[GraphicTikzSpline]{%
+ Name=\def\pflsplinename{#1},%
+ Coeffs=\def\pflsplinecoeffs{#1}
+}
+
+\setKVdefault[GraphicTikzSpline]{%
+ Name=spline,%
+ Color=black,%
+ Coeffs=3,%
+ Trace=false
+}
+
+\NewDocumentCommand\GenerateSpline{ m m O{\myspline} }{%
+ %1=liste
+ \setsepchar[.]{§./}%
+ \readlist*\SPLlistepoints{#1}%
+ %les données
+ \def\tmpsplinenumdeb{1}
+ \def\tmpsplinenumfin{\SPLlistepointslen}%
+ \tkzextractcoeff{#2}{\tmpsplinenumdeb}%
+ %nb de calculs
+ \def\SPLnbsplines{\inteval{\tmpsplinenumfin-1}}%
+ %extraction des coordonnées
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,1]\xa%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,2]\ya%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,3]\fprimea%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,1]\xb%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,2]\yb%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,3]\fprimeb%
+ \xdef#3{(\xa,\ya) ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFA}).. (\xb,\yb)}%
+ \foreach \i in {\tmpsplinenumdeb,...,\SPLnbsplines}{%
+ %extraction des coeffs de compensation
+ \tkzextractcoeff{#2}{\i}%
+ \def\j{\inteval{\i+1}}%
+ \itemtomacro\SPLlistepoints[\i,1]\xa%
+ \itemtomacro\SPLlistepoints[\i,2]\ya%
+ \itemtomacro\SPLlistepoints[\i,3]\fprimea%
+ \itemtomacro\SPLlistepoints[\j,1]\xb%
+ \itemtomacro\SPLlistepoints[\j,2]\yb%
+ \itemtomacro\SPLlistepoints[\j,3]\fprimeb%
+ \xdef#3{#3 ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFB}).. (\xb,\yb)}%
+ }%
+}
+
+\NewDocumentCommand\DefineSplineCurve{ O{} m D<>{\myspline} }{%
+ %1=liste
+ \restoreKV[GraphicTikzSpline]%
+ \setKV[GraphicTikzSpline]{#1}%
+ \GenerateSpline{#2}{\pflsplinecoeffs}[#3]%
+ \begin{scope}
+ \ifboolKV[GraphicTikzSpline]{Trace}%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzSpline]{Color}},name path global=\pflsplinename] #3 ;
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,name path global=\pflsplinename] #3 ;
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\DefineSpline{ O{} m D<>{\myspline} }{%old version
+ %1=liste
+ \restoreKV[GraphicTikzSpline]%
+ \setKV[GraphicTikzSpline]{#1}%
+ \GenerateSpline{#2}{\pflsplinecoeffs}[#3]%
+ \begin{scope}
+ \ifboolKV[GraphicTikzSpline]{Trace}%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzSpline]{Color}},name path global=\pflsplinename] #3 ;
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,name path global=\pflsplinename] #3 ;
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\DrawSplineCurve{ O{} m D<>{\myspline} }{%
+ %1=liste
+ \restoreKV[GraphicTikzSpline]%
+ \setKV[GraphicTikzSpline]{#1}%
+ \GenerateSpline{#2}{\pflsplinecoeffs}[#3]%
+ \begin{scope}
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzSpline]{Color}}] #3 ;
+ \end{scope}
+}
+
+\NewDocumentCommand\DrawSpline{ O{} m D<>{\myspline} }{%old version
+ %1=liste
+ \restoreKV[GraphicTikzSpline]%
+ \setKV[GraphicTikzSpline]{#1}%
+ \GenerateSpline{#2}{\pflsplinecoeffs}[#3]%
+ \begin{scope}
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzSpline]{Color}}] #3 ;
+ \end{scope}
+}
+
+%===INTERSECTION & ANTÉCÉDENTS
+\defKV[GraphicTikzIntersect]{%
+ Name=\def\pflintercurves{#1}
+}
+\setKVdefault[GraphicTikzIntersect]{%
+ Name=S,
+ Disp=true,
+ Color=black,
+ DispLine=false,%
+ Lines=false,%
+ Style=o
+}
+
+\NewDocumentCommand\FindIntersections{ O{} m m D<>{\myt} }{%
+ \restoreKV[GraphicTikzIntersect]%
+ \setKV[GraphicTikzIntersect]{#1}%
+ \path[name intersections={of=#2 and #3,name=\pflintercurves,total=\t}] \pgfextra{\xdef#4{\t}};
+ \ifboolKV[GraphicTikzIntersect]{Disp}%
+ {%
+ \xintifboolexpr{#4 == 0}{}%
+ {%
+ \foreach \i in {1,...,#4}{%
+ \ifboolKV[GraphicTikzIntersect]{Lines}%
+ {%
+ \draw[tkzgrphrange,{\useKV[GraphicTikzIntersect]{Color}}]let \p1 = (\pflintercurves-\i) in (\pflintercurves-\i) -- ({\x1},{\pflOy}) ;
+ }%
+ {}%
+ \MarkPts*[Style={\useKV[GraphicTikzIntersect]{Style}},Color={\useKV[GraphicTikzIntersect]{Color}}]{(\pflintercurves-\i)}
+ %\filldraw[{\useKV[GraphicTikzIntersect]{Color}}] (\pflintercurves-\i) circle[tkzgrphpointc] ;
+ }
+ }%
+ }%
+ {}%
+}
+
+\NewDocumentCommand\FindCounterimage{ O{} m m D<>{\myantec} }{%
+ \restoreKV[GraphicTikzIntersect]%
+ \setKV[GraphicTikzIntersect]{#1}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphicTikzIntersect]{DispLine}%
+ {%
+ \path[draw,{\useKV[GraphicTikzIntersect]{Color}},tkzgrphcurve,name path=tmpanteced] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,name path=tmpanteced] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+ }%
+ \path[name intersections={of=#2 and tmpanteced,name=\pflintercurves,total=\t}] \pgfextra{\xdef#4{\t}};
+ \ifboolKV[GraphicTikzIntersect]{Disp}%
+ {%
+ \xintifboolexpr{#4 == 0}{}%
+ {%
+ \foreach \i in {1,...,#4}{%
+ \MarkPts*[Style={\useKV[GraphicTikzIntersect]{Style}},Color={\useKV[GraphicTikzIntersect]{Color}}]{(\pflintercurves-\i)}
+ %\filldraw[{\useKV[GraphicTikzIntersect]{Color}}] (\pflintercurves-\i) circle[tkzgrphpointc] ;
+ }
+ }%
+ }%
+ {}%
+ \end{scope}
+}
+
+%====INTÉGRALES
+%v2 avec modification de la clé [Type=...] ?
+\defKV[GraphicTikzIntegr]{%
+ Colors=\def\pfldomtikzcolors{#1},%
+ Style=\def\pfldomtikzstyle{#1},%
+ Opacity=\def\pfldomtikzopac{#1},%
+ Hatch=\def\pfldomtikzhatch{#1},%
+ Type=\def\pfldomtikztype{#1},%
+ Step=\def\pflstepcurve{#1},%
+ Bounds=\def\pflintbornes{#1},%
+ Junction=\def\pfldomtikzjoin{#1},%
+ NameInterpo=\def\pfldomtikznameinterpo{#1},%
+ NameInterpoB=\def\pfldomtikznameinterpob{#1},%
+ NameSpline=\def\pfldomtikznamespline{#1},%
+ NameSplineB=\def\pfldomtikznamesplineb{#1}
+}
+\setKVdefault[GraphicTikzIntegr]{%
+ Colors=gray,%
+ Style=fill,%
+ Opacity=0.5,%
+ Hatch={north west lines},%
+ Type=fct,%
+ Step={},%
+ Junction=bevel,%
+ Bounds=abs,%
+ Border=true,%
+ Spline=false,%
+ SplineB=false,%
+ NameInterpo={\myinterpo},%
+ NameInterpoB={\myinterpoB},%
+ NameSpline={\myspline},%
+ NameSplineB={\myplineB},%
+ Tension=0.5,%
+ TensionB=0.5
+}
+
+\NewDocumentCommand\DrawIntegral{ O{} D<>{} m O{0} m m }{%
+ %1 = clés
+ %2 = options particulières tikz
+ %3 = fonction, en tikz
+ %4 = fonction n°2 éventuelle
+ %de #5 à #6
+ \restoreKV[GraphicTikzIntegr]% revenir au valeurs par défaut
+ \setKV[GraphicTikzIntegr]{#1}% lit les arguments optionnels
+ %les couleurs
+ \IfSubStr{\pfldomtikzcolors}{/}%
+ {%
+ \StrCut{\pfldomtikzcolors}{/}{\pfldomtikzcolorbord}{\pfldomtikzcolorfond}
+ }%
+ {%
+ \xdef\pfldomtikzcolorbord{\pfldomtikzcolors}\xdef\pfldomtikzcolorfond{\pfldomtikzcolors}
+ }%
+ \ifboolKV[GraphicTikzIntegr]{Border}%
+ {%
+ \tikzset{integralebordtikzstyle/.style={draw=\pfldomtikzcolorbord}}
+ }%
+ {%
+ \tikzset{integralebordtikzstyle/.style={draw=none}}
+ }%
+ \IfStrEq{\pfldomtikzstyle}{hatch}%
+ {%
+ \tikzset{integraletikzstyle/.style={tkzgrphline,pattern=\pfldomtikzhatch,pattern color=\pfldomtikzcolorfond,line join=\pfldomtikzjoin}}
+ }%
+ {}%
+ \IfStrEq{\pfldomtikzstyle}{fill}%
+ {%
+ \tikzset{integraletikzstyle/.style={tkzgrphline,fill=\pfldomtikzcolorfond,fill opacity=\pfldomtikzopac,line join=\pfldomtikzjoin}}
+ }%
+ {}%
+ %extraction des infos x/y
+ \IfStrEqCase{\pflintbornes}{%
+ {abs}%
+ {%
+ \xdef\absnoeudA{#5}%
+ \xdef\absnoeudB{#6}%
+ }%
+ {nodes}%
+ {%
+ \path #5;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\absnoeudA{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ \path #6;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\absnoeudB{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ }%
+ {abs/node}%
+ {%
+ \xdef\absnoeudA{#5}%
+ \path #6;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\absnoeudB{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ }%
+ {node/abs}%
+ {%
+ \path #5;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\absnoeudA{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\absnoeudB{#6}%
+ }%
+ }%
+ %suite avec les nbs points
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflstepcurve{\xintfloateval{((\absnoeudB)-(\absnoeudA))/100}}%
+ }%
+ {}%
+ %TRACÉSen fonction des types de courbes
+ \IfStrEq{\pfldomtikztype}{fct}%
+ {%OK
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflOy}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#3),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflOy}) -- cycle ;
+ \end{scope}
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{spl}%avec 3=courbe spline + clé [Spline] à utiliser !
+ {%OK
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflOy}) -- \pfldomtikznamespline -- ({\absnoeudB},{\pflOy}) -- cycle ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=#3 and tmpintbornea,name=YYY}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudA},{\pflOy})-- (YYY-1) ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=#3 and tmpintborneb,name=ZZZ}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudB},{\pflOy})-- (ZZZ-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{itp}%avec 3=courbe interpo
+ {%OK
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflOy}) -- plot [smooth,tension={\useKV[GraphicTikzIntegr]{Tension}}] coordinates {#3} -- ({\absnoeudB},{\pflOy}) -- cycle ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpo,name=YYY}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudA},{\pflOy})-- (YYY-1) ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpo,name=ZZZ}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudB},{\pflOy})-- (ZZZ-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{fct/fct}%avec #3=formule et #4=formule
+ {%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[integraletikzstyle,integralebordtikzstyle,#2] plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#3),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#4),x=\absnoeudB..[-(\pflstepcurve)]..\absnoeudA,\absnoeudA)\relax} -- cycle ;
+ \end{scope}
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{spl/spl}%avec #3=cbe spline + #4=cbe splineB
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- \pfldomtikznamespline -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymax}) -- \pfldomtikznamesplineb -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=#3 and tmpintbornea,name=YYYA}] ;
+ \path[name intersections={of=#4 and tmpintbornea,name=ZZZA}] ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=#3 and tmpintborneb,name=YYYB}] ;
+ \path[name intersections={of=#4 and tmpintborneb,name=ZZZB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYA-1)-- (ZZZA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYB-1)-- (ZZZB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{itp/itp}%avec #3=cbe interpo + #4=cbe interpoB
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot [smooth,tension={\useKV[GraphicTikzIntegr]{Tension}}] coordinates {#3} -- ({\absnoeudB},{\pflymin}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot [smooth,tension={\useKV[GraphicTikzIntegr]{TensionB}}] coordinates {#4} -- ({\absnoeudB},{\pflymax}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpo,name=YYYA}] ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpob,name=ZZZA}] ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpo,name=YYYB}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpob,name=ZZZB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYA-1)-- (ZZZA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYB-1)-- (ZZZB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{fct/spl}%avec #3=formule + #4=spline
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#3),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymax}) -- \pfldomtikznamesplineb -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and #4,name=ZZZA}] ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintborneb and #4,name=ZZZB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudA},{\xintfloateval{subs(#3,x=\absnoeudA)}})-- (ZZZA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudB},{\xintfloateval{subs(#3,x=\absnoeudB)}})-- (ZZZB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{spl/fct}%avec #3=spline + #4=fct
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#4),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymin}) -- \pfldomtikznamespline -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and #3,name=ZZZA}] ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintborneb and #3,name=ZZZB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudA},{\xintfloateval{subs(#4,x=\absnoeudA)}})-- (ZZZA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudB},{\xintfloateval{subs(#4,x=\absnoeudB)}})-- (ZZZB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{fct/itp}%avec #3=formule + #4=liste interpo
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#3),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot [smooth,tension={\useKV[GraphicTikzIntegr]{TensionB}}] coordinates {#4} -- ({\absnoeudB},{\pflymax}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpob,name=ZZZAA}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpob,name=ZZZAB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudA},{\xintfloateval{subs(#3,x=\absnoeudA)}})-- (ZZZAA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudB},{\xintfloateval{subs(#3,x=\absnoeudB)}})-- (ZZZAB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{itp/fct}%
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#4),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot [smooth,tension={\useKV[GraphicTikzIntegr]{Tension}}] coordinates {#3} -- ({\absnoeudB},{\pflymin}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpo,name=ZZZAA}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpo,name=ZZZAB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudA},{\xintfloateval{subs(#4,x=\absnoeudA)}})-- (ZZZAA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudB},{\xintfloateval{subs(#4,x=\absnoeudB)}})-- (ZZZAB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{itp/spl}%
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot [smooth,tension={\useKV[GraphicTikzIntegr]{Tension}}] coordinates {#3} -- ({\absnoeudB},{\pflymin}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- \pfldomtikznamesplineb -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;%borne inf
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;%borne sup
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpo,name=YYYKAA}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpo,name=YYYKBB}] ;
+ \path[name intersections={of=tmpintbornea and #4,name=ZZZKAA}] ;
+ \path[name intersections={of=tmpintborneb and #4,name=ZZZKBB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYKAA-1)-- (ZZZKAA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYKBB-1)-- (ZZZKBB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{spl/itp}%
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot [smooth,tension={\useKV[GraphicTikzIntegr]{TensionB}}] coordinates {#4} -- ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- \pfldomtikznamespline -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;%borne inf
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;%borne sup
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpob,name=YYYKAA}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpob,name=YYYKBB}] ;
+ \path[name intersections={of=tmpintbornea and #3,name=ZZZKAA}] ;
+ \path[name intersections={of=tmpintborneb and #3,name=ZZZKBB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYKAA-1)-- (ZZZKAA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYKBB-1)-- (ZZZKBB-1) ;
+ }%
+ {}%
+}
+
+\NewDocumentCommand\DrawPts{ s O{black} D<>{\normalfont\normalsize} m }{%
+ \IfBooleanTF{#1}%
+ {%
+ \foreach \Point in {#4}{%
+ \filldraw[#2] \Point circle[tkzgrphpointc] ;
+ }
+ }%
+ {%
+ \foreach \Point/\Pos/\Label in {#4}{%
+ \filldraw[#2] \Point circle[tkzgrphpointc] node[tkzgrphnode,\Pos,font=#3] {\Label} ;
+ }
+ }%
+}
+
+% %====STATS À 2 VARIABLES
+\defKV[GraphicTikzRegLin]{%
+ Rounds=\def\pflarrondisreglin{#1},
+ Name=\def\pflnamereglin{#1},
+ NameParab=\def\pflnameregquad{#1},
+ Start=\def\pflreglinmin{#1},
+ End=\def\pflreglinmax{#1}
+}
+\setKVdefault[GraphicTikzRegLin]{
+ ColorScatter=black,
+ ColorLine=black,
+ ColorParab=black,
+ Rounds={},
+ Start={\pflxmin},
+ End={\pflxmax},
+ Name=reglin,%
+ NameParab=quadreg,%
+ DrawLine=false,%
+ DrawParab=false,%
+ Style=o
+}
+
+\NewDocumentCommand\DrawScatter{ O{} D<>{d} m m }{%
+ \useKVdefault[GraphicTikzRegLin]%
+ \setKV[GraphicTikzRegLin]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %listes des données
+ \def\xliste{#3}
+ \def\yliste{#4}
+ \readlist*\LX{\xliste}
+ \readlist*\LY{\yliste}
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}
+ %nuage
+ \foreach \i in {1,...,\LXlen}{%
+ \itemtomacro\LX[\i]\tmpmavalx%
+ \itemtomacro\LY[\i]\tmpmavaly%
+ \MarkPts*[Style={\useKV[GraphicTikzRegLin]{Style}},Color={\useKV[GraphicTikzRegLin]{ColorScatter}}]{(\tmpmavalx,\tmpmavaly)}%
+ }
+ %droite de régression
+ \ifboolKV[GraphicTikzRegLin]{DrawLine}%
+ {%
+ %somme des LX et des LY OK
+ \xdef\LXSomme{0}
+ \xdef\LYSomme{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[\i]}}
+ }
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[\i]}}
+ }
+ %moyenne des LX et des LY OK
+ \xdef\LXmoy{\xintfloateval{\LXSomme/\LNB}}
+ \xdef\LYmoy{\xintfloateval{\LYSomme/\LNB}}
+ %variance des LX et des LY OK
+ \xdef\LXvar{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LXvar{\xintfloateval{\LXvar+(\LX[\i]-\LXmoy)*(\LX[\i]-\LXmoy)}}
+ }
+ \xdef\LXvar{\xintfloateval{\LXvar/\LNB}}
+ \xdef\LYvar{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LYvar{\xintfloateval{\LYvar+(\LY[\i]-\LYmoy)*(\LY[\i]-\LYmoy)}}
+ }
+ \xdef\LYvar{\xintfloateval{\LYvar/\LNB}}
+ %covariance des XY OK
+ \xdef\LXYvar{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LXYvar{\xintfloateval{\LXYvar+(\LX[\i]-\LXmoy)*(\LY[\i]-\LYmoy)}}
+ }
+ \xdef\LXYvar{\xintfloateval{\LXYvar/\LNB}}
+ %COEFFS OK
+ \IfStrEq{\pflarrondisreglin}{}%
+ {%
+ \xdef\tmpcoeffreglina{\xintfloateval{\LXYvar/\LXvar}}
+ \xdef\tmpcoeffreglinb{\xintfloateval{\LYmoy-\tmpcoeffreglina*\LXmoy}}
+ }%
+ {%
+ \IfSubStr{\pflarrondisreglin}{/}%
+ {%
+ \StrCut{\pflarrondisreglin}{/}{\pflarrondisreglina}{\pflarrondisreglinb}
+ }%
+ {%
+ \xdef\pflarrondisreglina{\pflarrondisreglin}\xdef\pflarrondisreglinb{\pflarrondisreglin}
+ }%
+ \xdef\tmpcoeffreglina{\xintfloateval{round(\LXYvar/\LXvar,\pflarrondisreglina)}}
+ \xdef\tmpcoeffreglinb{\xintfloateval{round(\LYmoy-\tmpcoeffreglina*\LXmoy,\pflarrondisreglinb)}}
+ }%
+ \xintdeffloatfunc #2(x) := (\tmpcoeffreglina)*x+(\tmpcoeffreglinb) ;
+ %tracé
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzRegLin]{ColorLine}},name path global=\pflnamereglin,samples=2,domain=\pflreglinmin:\pflreglinmax] plot (\x,{\tmpcoeffreglina*\x+\tmpcoeffreglinb}) ;
+ \end{scope}
+ }%
+ {}%
+ \ifboolKV[GraphicTikzRegLin]{DrawParab}%
+ {%
+ %somme importantes
+ \xdef\LXSomme{0}%
+ \xdef\LXCSomme{0}%
+ \xdef\LYSomme{0}%
+ \xdef\LXXSomme{0}%
+ \xdef\LXYSomme{0}%
+ \xdef\LXXCSomme{0}%
+ \xdef\LXCXCSomme{0}%
+ \xdef\LXCYSomme{0}%
+ %calculs
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[\i]}}%
+ \xdef\LXCSomme{\xintfloateval{\LXCSomme+(\LX[\i])^2}}%
+ }%
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[\i]}}%
+ }%
+ \xdef\LXmoy{\xintfloateval{\LXSomme/\LNB}}%
+ \xdef\LYmoy{\xintfloateval{\LYSomme/\LNB}}%
+ \xdef\LXCmoy{\xintfloateval{\LXCSomme/\LNB}}%
+ %calculs suites
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LXXSomme{\xintfloateval{\LXXSomme+(\LX[\i]-\LXmoy)^2}}%
+ \xdef\LXYSomme{\xintfloateval{\LXYSomme+(\LX[\i]-\LXmoy)*(\LY[\i]-\LYmoy)}}%
+ \xdef\LXXCSomme{\xintfloateval{\LXXCSomme+(\LX[\i]-\LXmoy)*((\LX[\i])*(\LX[\i])-\LXCmoy)}}%
+ \xdef\LXCXCSomme{\xintfloateval{\LXCXCSomme+((\LX[\i])^2-\LXCmoy)^2}}%
+ \xdef\LXCYSomme{\xintfloateval{\LXCYSomme+((\LX[\i])^2-\LXCmoy)*(\LY[\i]-\LYmoy)}}%
+ }%
+ %COEFFS OK
+ \IfStrEq{\pflarrondisreglin}{}%
+ {%
+ \xdef\tmpcoeffregquadb{\xintfloateval{(\LXYSomme*\LXCXCSomme-\LXCYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}
+ \xdef\tmpcoeffregquada{\xintfloateval{(\LXCYSomme*\LXXSomme-\LXYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}
+ \xdef\tmpcoeffregquadc{\xintfloateval{\LYmoy-\tmpcoeffregquadb*\LXmoy-\tmpcoeffregquada*\LXCmoy}}
+ }%
+ {%
+ \xdef\tmpcoeffregquadb{\xintfloateval{round((\LXYSomme*\LXCXCSomme-\LXCYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2),\pflarrondisreglin)}}
+ \xdef\tmpcoeffregquada{\xintfloateval{round((\LXCYSomme*\LXXSomme-\LXYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2),\pflarrondisreglin)}}
+ \xdef\tmpcoeffregquadc{\xintfloateval{round(\LYmoy-\tmpcoeffregquadb*\LXmoy-\tmpcoeffregquada*\LXCmoy,\pflarrondisreglin)}}
+ }%
+ \xintdeffloatfunc #2(x) := (\tmpcoeffregquada)*x^2+(\tmpcoeffregquadb)*x+\tmpcoeffregquadc ;
+ %tracé
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzRegLin]{ColorParab}},name path global=\pflnameregquad,samples=250,domain=\pflreglinmin:\pflreglinmax] plot (\x,{\tmpcoeffregquada*(\x)^2+\tmpcoeffregquadb*\x+\tmpcoeffregquadc}) ;
+ \end{scope}
+ }%
+ {}%
+}
+
+\if@loadxintreg
+%régressions alternatives
+\NewDocumentCommand\DrawRegression{ O{} D<>{curvajust} m D<>{} m m }{%
+ %1=options de tracés
+ %2=nom courbe
+ %3=type
+ %4=arrondis
+ %5=liste X
+ %6=liste Y
+ \IfStrEq{#3}{lin}%
+ {%
+ \xintlinreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\linrega*x+\linregb}%
+ }%
+ {}%
+ \IfStrEq{#3}{quad}%
+ {%
+ \xintquadreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\quadrega*x^2+\quadregb*x+\quadregc}%
+ }%
+ {}%
+ \IfStrEq{#3}{pow}%
+ {%
+ \xintpowreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\powrega*x^(\powregb)}%
+ }%
+ {}%
+ \IfStrEq{#3}{expab}%
+ {%
+ \xintexpabreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\expabrega*(\expabregb)^x}%
+ }%
+ {}%
+ \IfStrEq{#3}{hyp}%
+ {%
+ \xinthypreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\hyprega+(\hypregb)/x}%
+ }%
+ {}%
+ \IfStrEq{#3}{log}%
+ {%
+ \xintlogreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\logrega+(\logregb)*log(x)}%
+ }%
+ {}%
+ \IfStrEq{#3}{exp}%
+ {%
+ \xintexpreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{exp(\exprega*x+\expregb)}%
+ }%
+ {}%
+ \IfStrEq{#3}{expalt}%
+ {%
+ \xintexpreg[Alt,round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\expregb*exp(\exprega*x)}%
+ }%
+ {}%
+ \IfStrEq{#3}{cub}%
+ {%
+ \xintcubreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\cubrega*x^3+\cubregb*x^2+\cubregc*x+\cubregd}%
+ }%
+ {}%
+ \IfSubStr{#3}{expoff}%
+ {%
+ \StrBehind{#3}{=}[\expoffset]%
+ \xintexpoffreg[round={#4},offset=\expoffset]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\expoffset+\expregoffb*exp(\expregoffa*x)}%
+ }%
+ {}%
+}
+\fi
+
+%===IMAGES & ANTÉCÉDENTS
+\defKV[GraphicTikzImg]{
+ Colors=\def\pflimgcolors{#1},%
+ Name=\def\pflantecednoms{#1}%
+}
+
+\setKVdefault[GraphicTikzImg]{
+ Colors=black,%
+ Lines=false,%
+ Spline=false,%
+ Name={},%
+ Style=o
+}
+
+\NewDocumentCommand\DefineRange{ O{} m m }{%
+ \useKVdefault[GraphicTikzImg]%
+ \setKV[GraphicTikzImg]{#1}%
+ \ifboolKV[GraphicTikzImg]{Spline}%
+ {%
+ \path[draw=none,tkzgrphcurve,name path=tmpimage] ({#3},{\pflymin})--({#3},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpimage,name=ZZZZ}] ;
+ \coordinate (\pflantecednoms) at (ZZZZ-1) ;
+ }%
+ {%
+ \xdef\tmpresimg{\xintfloateval{#2(#3)}}%
+ \coordinate (\pflantecednoms) at ({#3},{\tmpresimg}) ;
+ }%
+}
+
+\NewDocumentCommand\DrawRanges{ O{} m m }{%
+ \useKVdefault[GraphicTikzImg]%
+ \setKV[GraphicTikzImg]{#1}%
+ \IfSubStr{\pflimgcolors}{/}%
+ {%
+ \StrCut{\pflimgcolors}{/}{\pflimgcolorpt}{\pflimgcolorline}
+ }%
+ {%
+ \xdef\pflimgcolorpt{\pflimgcolors}\xdef\pflimgcolorline{\pflimgcolors}
+ }%
+ \ifboolKV[GraphicTikzImg]{Spline}%
+ {%
+ \foreach \i in {#3}{%
+ \path[draw=none,tkzgrphcurve,name path=tmpimage] ({\i},{\pflymin})--({\i},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpimage,name=ZZ}] ;
+ \ifboolKV[GraphicTikzImg]{Lines}%
+ {%
+ \draw[\pflimgcolorline,tkzgrphrange] let \p1 = (ZZ-1) in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \MarkPts*[Style={\useKV[GraphicTikzImg]{Style}},Color=\pflimgcolorpt]{(ZZ-1)}
+ %\filldraw[\pflimgcolorpt] (ZZ-1) circle[radius=2pt] ;
+ }
+ }%
+ {%
+ \foreach \i in {#3}{%
+ \xdef\tmpresimg{\xintfloateval{#2(\i)}}%
+ \ifboolKV[GraphicTikzImg]{Lines}%
+ {%
+ \draw[\pflimgcolorline,tkzgrphrange] ({\i},{\pflOy}) |- ({\pflOx},{\tmpresimg}) ;
+ }%
+ {}%
+ \MarkPts*[Style={\useKV[GraphicTikzImg]{Style}},Color=\pflimgcolorpt]{({\i},{\tmpresimg})}
+ %\filldraw[\pflimgcolorpt] ({\i},{\tmpresimg}) circle[radius=2pt] ;
+ }%
+ }%
+}
+
+\NewDocumentCommand\DrawCounterimage{ O{} m m }{%avec le nom de la courbe...
+ \useKVdefault[GraphicTikzImg]%
+ \setKV[GraphicTikzImg]{#1}%
+ \xdef\pflstepcurve{\xintfloateval{0.1*\pflgrillexs}}
+ \IfSubStr{\pflimgcolors}{/}%
+ {%
+ \StrCut{\pflimgcolors}{/}{\pflimgcolorpt}{\pflimgcolorline}%
+ }%
+ {%
+ \xdef\pflimgcolorpt{\pflimgcolors}\xdef\pflimgcolorline{\pflimgcolors}%
+ }%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \path[draw=none,tkzgrphcurve,name path=tmpanteced] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+ \path[name intersections={of=#2 and tmpanteced,name=ZZ,total=\t}] \pgfextra{\xdef\tmptotanteced{\t}};
+ \xintifboolexpr{\tmptotanteced == 0}{}%
+ {%
+ \ifboolKV[GraphicTikzImg]{Lines}%
+ {%
+ \draw[\pflimgcolorline,tkzgrphcounterimage] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+ }%
+ {}%
+ \foreach \i in {1,...,\tmptotanteced}{%
+ \IfStrEq{\pflantecednoms}{}%
+ {}%
+ {%
+ \coordinate (\pflantecednoms-\i) at (ZZ-\i) ;
+ }%
+ \ifboolKV[GraphicTikzImg]{Lines}%
+ {%
+ \draw[\pflimgcolorline,tkzgrphrange] let \p1 = (ZZ-\i) in (ZZ-\i) -- ({\x1},{\pflOy}) ;
+ }%
+ {}%
+ \MarkPts*[Style={\useKV[GraphicTikzImg]{Style}},Color=\pflimgcolorpt]{(ZZ-\i)}
+ %\filldraw[\pflimgcolorpt] (ZZ-\i) circle[radius=2pt] ;
+ }%
+ }%
+ \end{scope}
+}
+
+%===NOMBRE DÉRIVÉ ET TANGENTE (EXPÉRIEMENTAL)
+\NewDocumentCommand\CalcDerivate{ s m m m }{%*=gauche+nomfct+abspt+h
+ \IfBooleanTF{#1}%
+ {%
+ \xdef\TmpResNbDeriv{\xintfloateval{(#2(#3)-#2(#3-#4))/(#4)}}%
+ }%
+ {%
+ \xdef\TmpResNbDeriv{\xintfloateval{(#2(#3+#4)-#2(#3))/(#4)}}%
+ }%
+}
+
+\defKV[GraphicTikzTgte]{%
+ Colors=\def\pfltgttikzcolors{#1},%
+ OffsetL=\def\pfltgttikzkl{#1},%
+ OffsetR=\def\pfltgttikzkr{#1},%
+ h=\def\pfltgttikzh{#1},%
+ Direction=\def\pfltgttikzsens{#1},%
+ Delta=\def\tmptgtedelta{#1}
+}
+\setKVdefault[GraphicTikzTgte]{%
+ Colors=black,%
+ OffsetL=1,%
+ OffsetR=1,%
+ DispPt=false,%
+ Spline=false,%
+ h=0.1,%
+ Direction=lr,%
+ Node=false,%
+ Delta=0.01,%
+ Style=o
+}
+
+\NewDocumentCommand\DrawTangent{ O{} m m D<>{} }{%
+ \restoreKV[GraphicTikzTgte]%
+ \setKV[GraphicTikzTgte]{#1}%
+ %en fonction de la gestion de l'abscisse
+ \ifboolKV[GraphicTikzTgte]{Node}%
+ {%
+ \path #3;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\pfltgttikzx{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ }%
+ {%
+ \xdef\pfltgttikzx{#3}%
+ }%
+ %parties communes
+ \IfSubStr{\pfltgttikzcolors}{/}%
+ {%
+ \StrCut{\pfltgttikzcolors}{/}{\pfltgttikzline}{\pfltgttikzpoint}
+ }%
+ {%
+ \xdef\pfltgttikzline{\pfltgttikzcolors}\xdef\pfltgttikzpoint{\pfltgttikzcolors}
+ }%
+ \xdef\tmptgtdeb{\xintfloateval{\pfltgttikzx-(\pfltgttikzkl)}}%
+ \xdef\tmptgtfin{\xintfloateval{\pfltgttikzx+(\pfltgttikzkr)}}%
+ %suivant le type de courbe
+ \ifboolKV[GraphicTikzTgte]{Spline}%
+ {%
+ \path[name path=tmpimage] ({\pfltgttikzx},{\pflymin})--({\pfltgttikzx},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpimage,name=TANp}] ;
+ \IfStrEq{\pfltgttikzsens}{lr}%
+ {%
+ \path[name path=L-vline] ({\pfltgttikzx-\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx-\tmptgtedelta},{\pflymax}) ;
+ \path[name path=R-vline] ({\pfltgttikzx+\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx+\tmptgtedelta},{\pflymax}) ;
+ %\coordinate (LXcoor) at ($(TANp-1)+({-\tmptgtedelta},0)$) ;
+ %\coordinate (RXcoor) at ($(TANp-1)+({\tmptgtedelta},0)$) ;
+ }%
+ {}%
+ \IfStrEq{\pfltgttikzsens}{l}%
+ {%
+ \path[name path=L-vline] ({\pfltgttikzx-\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx-\tmptgtedelta},{\pflymax}) ;
+ \path[name path=R-vline] ({\pfltgttikzx},{\pflymin}) -- ({\pfltgttikzx},{\pflymax}) ;
+ %\coordinate (LXcoor) at ($(TANp-1)+({-\tmptgtedelta},0)$) ;
+ %\coordinate (RXcoor) at (TANp-1) ;
+ \def\tmptgtfin{\pfltgttikzx}%
+ }%
+ {}%
+ \IfStrEq{\pfltgttikzsens}{r}%
+ {%
+ \path[name path=L-vline] ({\pfltgttikzx},{\pflymin}) -- ({\pfltgttikzx},{\pflymax}) ;
+ \path[name path=R-vline] ({\pfltgttikzx+\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx+\tmptgtedelta},{\pflymax}) ;
+ \def\tmptgtdeb{\pfltgttikzx}%
+ }%
+ {}%
+ \path[name intersections={of=#2 and L-vline,name=LXcut}] ;
+ \path[name intersections={of=#2 and R-vline,name=RXcut}] ;
+ \coordinate (tzXproj) at ($(LXcut-1)!(TANp-1)!(RXcut-1)$) ; % projection
+ \coordinate (LLpoint) at ($(LXcut-1)+(TANp-1)-(tzXproj)$) ; % move
+ \coordinate (RRpoint) at ($(RXcut-1)+(TANp-1)-(tzXproj)$) ; % move
+ \path (LLpoint);
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\tzTANLLX{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\tzTANLLY{\xintfloateval{(\ConvertPtToCm{\macroy})/(\pflyunit)}}%
+ \path (RRpoint);
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\tzTANRRX{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\tzTANRRY{\xintfloateval{(\ConvertPtToCm{\macroy})/(\pflyunit)}}%
+ \def\tztangentLFn{(\tzTANRRY-\tzTANLLY)/(\tzTANRRX-\tzTANLLX)*(\x-\tzTANLLX)+\tzTANLLY}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;
+ \draw[tkzgrphline,\pfltgttikzline,domain=\tmptgtdeb:\tmptgtfin,samples=2,#4] plot (\x,{\tztangentLFn}) ;
+ \end{scope}
+ }%
+ {%
+ \IfStrEq{\pfltgttikzsens}{l}%
+ {%
+ \CalcDerivate*{#2}{\pfltgttikzx}{\pfltgttikzh}%
+ }%
+ {%
+ \CalcDerivate{#2}{\pfltgttikzx}{\pfltgttikzh}%
+ }%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;
+ \draw[tkzgrphline,\pfltgttikzline,#4] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,\TmpResNbDeriv*(x-(\pfltgttikzx))+#2(\pfltgttikzx)),x=\tmptgtdeb,\tmptgtfin)
+ \relax
+ };
+ \end{scope}
+ }%
+ \ifboolKV[GraphicTikzTgte]{DispPt}%
+ {%
+ \ifboolKV[GraphicTikzTgte]{Spline}%
+ {%
+ \MarkPts*[Style={\useKV[GraphicTikzTgte]{Style}},Color=\pfltgttikzpoint]{(TANp-1)}
+ %\filldraw[] (TANp-1) circle[tkzgrphpointc] ;
+ }%
+ {%
+ \xdef\tmpimgtgt{\xintfloateval{#2(\pfltgttikzx)}}%
+ \MarkPts*[Style={\useKV[GraphicTikzTgte]{Style}},Color=\pfltgttikzpoint]{({\pfltgttikzx},\tmpimgtgt)}
+ %\filldraw[\pfltgttikzpoint] ({\pfltgttikzx},\tmpimgtgt) circle[tkzgrphpointc] ;
+ }%
+ }%
+ {}%
+}
+
+%====loi normale
+\defKV[GraphicTikzGaussienne]{%
+ Step=\def\pflgaussstep{#1},%
+ Name=\def\pflgaussname{#1}
+}
+
+\setKVdefault[GraphicTikzGaussienne]{%
+ Name=gaussian,%
+ Color=black,%
+ Trace=false,%
+ Step={},%
+ Start={\pflxmin},%
+ End={\pflxmax}
+}
+
+\NewDocumentCommand\DefineStandartDeviation{ O{} D<>{phi} m m }{%
+ %1=options
+ %2=mu
+ %3=sigma
+ \restoreKV[GraphicTikzGaussienne]%
+ \setKV[GraphicTikzGaussienne]{#1}%
+ \xintdeffloatfunc #2(x) := 1/((#4)*sqrt(2*pi))*exp(-0.5*((x-(#3))/(#4))^2) ;%
+ \IfStrEq{\pflgaussstep}{}%
+ {%
+ \xdef\pflgaussstep{\xintfloateval{((\useKV[GraphicTikzGaussienne]{End})-(\useKV[GraphicTikzGaussienne]{Start}))/100}}%
+ }%
+ {}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphicTikzGaussienne]{Trace}%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzGaussienne]{Color}},name path global=\pflgaussname] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzGaussienne]{Start}}..[\pflgaussstep]..{\useKV[GraphicTikzGaussienne]{End}},{\useKV[GraphicTikzGaussienne]{End}})
+ \relax
+ } ;
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,name path global=\pflgaussname] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzGaussienne]{Start}}..[\pflgaussstep]..{\useKV[GraphicTikzGaussienne]{End}},{\useKV[GraphicTikzGaussienne]{End}})
+ \relax
+ } ;
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\DrawStandartDeviation{ O{} m }{%
+ %1=options
+ %2=mu
+ %3=sigma
+ \restoreKV[GraphicTikzGaussienne]%
+ \setKV[GraphicTikzGaussienne]{#1}%
+ \IfStrEq{\pflgaussstep}{}%
+ {%
+ \xdef\pflgaussstep{\xintfloateval{((\useKV[GraphicTikzGaussienne]{End})-(\useKV[GraphicTikzGaussienne]{Start}))/100}}%
+ }%
+ {}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzGaussienne]{Color}}] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2),x={\useKV[GraphicTikzGaussienne]{Start}}..[\pflgaussstep]..{\useKV[GraphicTikzGaussienne]{End}},{\useKV[GraphicTikzGaussienne]{End}})
+ \relax
+ } ;
+ \end{scope}
+}
+
+\NewDocumentCommand\DefineKhiSquared{ O{} D<>{khi} m }{%
+ %1=options
+ %2=mu
+ %3=sigma
+ \restoreKV[GraphicTikzGaussienne]%
+ \setKV[GraphicTikzGaussienne]{#1}%
+ \xintdeffloatfunc #2(x) := (x<0)?{0}{(1/(2^((#3)/2)*pflgamma((#3)/2)))*x^((#3)/2-1)*exp(-x/2)};
+ \IfStrEq{\pflgaussstep}{}%
+ {%
+ \xdef\pflgaussstep{\xintfloateval{((\useKV[GraphicTikzGaussienne]{End})-(\useKV[GraphicTikzGaussienne]{Start}))/100}}%
+ }%
+ {}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphicTikzGaussienne]{Trace}%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzGaussienne]{Color}},name path global=\pflgaussname] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzGaussienne]{Start}}..[\pflgaussstep]..{\useKV[GraphicTikzGaussienne]{End}},{\useKV[GraphicTikzGaussienne]{End}})
+ \relax
+ } ;
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,name path global=\pflgaussname] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzGaussienne]{Start}}..[\pflgaussstep]..{\useKV[GraphicTikzGaussienne]{End}},{\useKV[GraphicTikzGaussienne]{End}})
+ \relax
+ } ;
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\DrawKhiSquared{ O{} m }{%
+ %1=options
+ %2=mu
+ %3=sigma
+ \restoreKV[GraphicTikzGaussienne]%
+ \setKV[GraphicTikzGaussienne]{#1}%
+ \IfStrEq{\pflgaussstep}{}%
+ {%
+ \xdef\pflgaussstep{\xintfloateval{((\useKV[GraphicTikzGaussienne]{End})-(\useKV[GraphicTikzGaussienne]{Start}))/100}}%
+ }%
+ {}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzGaussienne]{Color}}] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2),x={\useKV[GraphicTikzGaussienne]{Start}}..[\pflgaussstep]..{\useKV[GraphicTikzGaussienne]{End}},{\useKV[GraphicTikzGaussienne]{End}})
+ \relax
+ } ;
+ \end{scope}
+}
+
+%====droite
+\defKV[GraphicTikzLine]{%
+ Name=\def\pfldroitename{#1}
+}
+
+\setKVdefault[GraphicTikzLine]{%
+ Slope=false,%
+ Color=black,%
+ Start={\pflxmin},%
+ End={\pflxmax},%
+ Name={}
+}
+
+\NewDocumentCommand\DrawLine{ O{} m m D<>{} }{%
+ \restoreKV[GraphicTikzLine]%
+ \setKV[GraphicTikzLine]{#1}%
+ %1er point
+ \path #2;%
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\pfldtetikzxA{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\pfldtetikzyA{\xintfloateval{(\ConvertPtToCm{\macroy})/(\pflyunit)}}%
+ %2ème point si besoin
+ \ifboolKV[GraphicTikzLine]{Slope}%
+ {%
+ \xdef\pfldtepente{\xintfloateval{#3}}%
+ }%
+ {%
+ \path #3;%
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\pfldtetikzxB{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\pfldtetikzyB{\xintfloateval{(\ConvertPtToCm{\macroy})/(\pflyunit)}}%
+ \xdef\pfldtepente{\xintfloateval{(\pfldtetikzyB-\pfldtetikzyA)/(\pfldtetikzxB-\pfldtetikzxA)}}%
+ }%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;
+ \xintifboolexpr{\pfldtetikzxA == \pfldtetikzxB}%
+ {%
+ \IfEq{\pfldroitename}{}%
+ {%
+ \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},#4] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ;
+ }%
+ {%
+ \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},#4,name path global=\pfldroitename] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ;
+ }%
+ }%
+ {%
+ \IfEq{\pfldroitename}{}%
+ {%
+ \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},domain={\useKV[GraphicTikzLine]{Start}}:{\useKV[GraphicTikzLine]{End}},samples=2,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ;
+ }%
+ {%
+ \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},domain={\useKV[GraphicTikzLine]{Start}}:{\useKV[GraphicTikzLine]{End}},samples=2,name path global=\pfldroitename,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ;
+ }%
+ }%
+ \end{scope}
+}
+
+%====asymptote
+\NewDocumentCommand\DrawAsymptote{ O{} m D<>{} }{%
+ \restoreKV[GraphicTikzLine]%
+ \setKV[GraphicTikzLine]{#1}%
+ %tracé
+ \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},#3] ({#2},{\pflymin})--({#2},{\pflymax}) ;
+}
+
+%====minmax
+\defKV[GraphicTikzMinMax]{%
+ Pas=\def\pflminmaxstep{#1},%
+ Method=\def\pflminmaxmethode{#1},%
+ Coeffs=\def\pflminmaxcoeffs{#1}
+}
+\setKVdefault[GraphicTikzMinMax]{%
+ Start={\pflxmin},%
+ End={\pflxmax},%
+ Pas={},%
+ Tension=0.5,%
+ Method=function,%
+ Coeffs=3
+}
+
+\NewDocumentCommand\FindMax{ O{} m O{c-max} }{%
+ %1=clés
+ %2=paramètres en fonction de [Methode]
+ \restoreKV[GraphicTikzMinMax]%
+ \setKV[GraphicTikzMinMax]{#1}%
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflminmaxstep{\xintfloateval{((\useKV[GraphicTikzMinMax]{End})-(\useKV[GraphicTikzMinMax]{Start}))/100}}%
+ }%
+ {}%
+ \begin{scope}[bezier bounding box,local bounding box=bbtmpmax]
+ \IfStrEq{\pflminmaxmethode}{function}%
+ {%
+ \path[draw=none,name path=curvetmpmax] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzMinMax]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzMinMax]{End}},{\useKV[GraphicTikzMinMax]{End}})
+ \relax
+ };
+ }%
+ {}%
+ \IfStrEq{\pflminmaxmethode}{interpo}%
+ {%
+ \path[draw=none,name path=curvetmpmax] plot[smooth,tension={\useKV[GraphicTikzMinMax]{Tension}}] coordinates {#2};
+ }%
+ {}%
+ \IfStrEq{\pflminmaxmethode}{spline}%
+ {%
+ \GenerateSpline{#2}{\pflminmaxcoeffs}[\tmpsplineminmax]%
+ \path[draw=none,name path=curvetmpmax] \tmpsplineminmax ;
+ }%
+ {}%
+ %retour
+ \path[name path=tmpmax] ([yshift=-0.25\pgflinewidth]bbtmpmax.north east) -- ([yshift=-0.25\pgflinewidth]bbtmpmax.north west) ;
+ \path[name intersections={of=curvetmpmax and tmpmax,name=#3}] ;
+ \coordinate (#3) at ($0.5*(#3-1)+0.5*(#3-2)+(0,0.25\pgflinewidth)$) ;
+ \end{scope}
+}
+
+\NewDocumentCommand\FindMin{ O{} m O{c-min} }{%
+ %1=clés
+ %2=paramètres en fonction de [Methode]
+ \restoreKV[GraphicTikzMinMax]%
+ \setKV[GraphicTikzMinMax]{#1}%
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflminmaxstep{\xintfloateval{((\useKV[GraphicTikzMinMax]{End})-(\useKV[GraphicTikzMinMax]{Start}))/100}}%
+ }%
+ {}%
+ \begin{scope}[bezier bounding box,local bounding box=bbtmpmin]
+ \IfStrEq{\pflminmaxmethode}{function}%
+ {%
+ \path[draw=none,name path=curvetmpmin] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzMinMax]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzMinMax]{End}},{\useKV[GraphicTikzMinMax]{End}})
+ \relax
+ };
+ }%
+ {}%
+ \IfStrEq{\pflminmaxmethode}{interpo}%
+ {%
+ \path[draw=none,name path=curvetmpmin] plot[smooth,tension={\useKV[GraphicTikzMinMax]{Tension}}] coordinates {#2};
+ }%
+ {}%
+ \IfStrEq{\pflminmaxmethode}{spline}%
+ {%
+ \GenerateSpline{#2}{\pflminmaxcoeffs}[\tmpsplineminmax]%
+ \path[draw=none,name path=curvetmpmin] \tmpsplineminmax ;
+ }%
+ {}%
+ %retour
+ \path[name path=tmpmin] ([yshift=0.25\pgflinewidth]bbtmpmin.south east) -- ([yshift=0.25\pgflinewidth]bbtmpmin.south west) ;
+ \path[name intersections={of=curvetmpmin and tmpmin,name=#3}] ;
+ \coordinate (#3) at ($0.5*(#3-1)+0.5*(#3-2)+(0,-0.25\pgflinewidth)$) ;
+ \end{scope}
+}
+
+%====TEXTES
+\defKV[GraphicTikzNode]{%
+ Color=\def\pflnodecol{#1},%
+ Font=\def\pflnodefonte{#1},%
+ Position=\def\pfnodepos{#1}
+}
+\setKVdefault[GraphicTikzNode]{%
+ Color=black,%
+ Start={\normalfont\normalsize},%
+ Position={}
+}
+\NewDocumentCommand\DrawTxt{ O{} m m }{%
+ \restoreKV[GraphicTikzNode]%
+ \setKV[GraphicTikzNode]{#1}%
+ \draw #2 node[tkzgrphnode,font=\pflnodefonte,text=\pflnodecol,\pfnodepos] {#3} ;
+}
+
+%====MONTE CARLO
+\defKV[GraphicTikzmontecarlo]{%
+ Colors=\def\graphtikzmccols{#1},%
+ BoundsX=\def\graphtikzmcxbornes{#1},%
+ BoundsY=\def\graphtikzmcybornes{#1}
+}
+
+\setKVdefault[GraphicTikzmontecarlo]{%
+ Colors={blue/red},%
+ BoundsX={\pflxmin,\pflxmax},%
+ BoundsY={\pflymin,\pflymax}
+}
+
+\NewDocumentCommand\SimulateMonteCarlo{ O{} D<>{f} m O{\nbptsmcok} O{\nbptsmcko} }{%
+ \restoreKV[GraphicTikzmontecarlo]%
+ \setKV[GraphicTikzmontecarlo]{#1}%
+ \StrCut{\graphtikzmccols}{/}{\tmpMCcolOK}{\tmpMCcolKO}%
+ \StrCut{\graphtikzmcxbornes}{,}{\tmpMCxmin}{\tmpMCxmax}%
+ \StrCut{\graphtikzmcybornes}{,}{\tmpMCymin}{\tmpMCymax}%
+ \xdef#4{0}%
+ \xdef#5{0}%
+ \xdef\nbptsmc{#3}%
+ \foreach \i in {1,...,#3}{%
+ \xdef\tmpMCrandX{\xintfloateval{random()*((\tmpMCxmax)-(\tmpMCxmin))+(\tmpMCxmin)}}%
+ \xdef\tmpMCrandY{\xintfloateval{random()*((\tmpMCymax)-(\tmpMCymin))+(\tmpMCymin)}}%
+ \xdef\tmpMCrandfX{\xintfloateval{#2(\tmpMCrandX)}}%
+ \xintifboolexpr{ \tmpMCrandfX > \tmpMCrandY }%
+ {%
+ \xdef#4{\xinteval{#4+1}}%
+ \filldraw[\tmpMCcolOK] (\tmpMCrandX,\tmpMCrandY) circle[tkzgrphpointmc] ;
+ }%
+ {%
+ \xdef#5{\xinteval{#5+1}}%
+ \filldraw[\tmpMCcolKO] (\tmpMCrandX,\tmpMCrandY) circle[tkzgrphpointmc] ;
+ }%
+ }%
+}
+
+\endinput \ No newline at end of file
diff --git a/graphics/pstricks/base/Changes b/graphics/pstricks/base/Changes
index 887654e5b9..5871e81cb9 100644
--- a/graphics/pstricks/base/Changes
+++ b/graphics/pstricks/base/Changes
@@ -1,4 +1,4 @@
-% $Id: Changes 805 2023-11-06 20:31:22Z herbert $
+% $Id: Changes 913 2024-07-09 16:27:10Z herbert $
For all changes see file History! Here are only the last one changes
listed.
@@ -11,6 +11,8 @@ pstricks.tex --------
versions like 2.47a have only changes in other files, but not
in this main package.
+3.20 2024-07-09 - changed \clipbox to \psclipbox to prevent clash with
+ other package which also uses \clipbox
3.19c 2024-02-02 - fix for check of wrong docname "pstricks.tex" in pstricks.sty (RN)
3.19b 2023-11-06 - Revert Code for \DocumentMetadata in pstricks.sty
3.19a 2023-10-30 - Try to suppress the warning with lualatex and a
diff --git a/graphics/pstricks/base/doc/pst-news24.pdf b/graphics/pstricks/base/doc/pst-news24.pdf
index bbc7bf404d..e102b8a602 100644
--- a/graphics/pstricks/base/doc/pst-news24.pdf
+++ b/graphics/pstricks/base/doc/pst-news24.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news24.tex b/graphics/pstricks/base/doc/pst-news24.tex
index 3fb53580ab..bf357b88d4 100644
--- a/graphics/pstricks/base/doc/pst-news24.tex
+++ b/graphics/pstricks/base/doc/pst-news24.tex
@@ -41,6 +41,12 @@ broken.
Added a test for \verb|lualatex| before the default linewidth and color are set.
See last line in \verb|pstricks.tex|
+Moved macro \Lcs{clipbox} to \Lcs{psclipbox} to prevent a clash with package
+\LPack{adjustbox}
+from Martin Scharrer.
+
+
+
\section{\LuaLaTeX}\label{lua}
This version has a stable basic support for the lua package
\LPack{luapstricks.lua}, available from \url{https://github.com/zauguin/luapstricks}.
diff --git a/graphics/pstricks/base/doc/pstricks-bug.tex b/graphics/pstricks/base/doc/pstricks-bug.tex
index b5f9ba2c32..d4e0329dd3 100644
--- a/graphics/pstricks/base/doc/pstricks-bug.tex
+++ b/graphics/pstricks/base/doc/pstricks-bug.tex
@@ -97,7 +97,7 @@
% 15. When lines are very short, linestyle=dash may cause an error.
% PATCH: Input this file.
%
-% 16. \clipbox does not work.
+% 16. \psclipbox does not work.
% PATCH: Input this file.
%
% 17. Various nodes are missing \leavevmode, which can cause irregularities
@@ -509,8 +509,8 @@
stroke>
% 16.
-\def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}}
-\def\clipbox@[#1]{\pst@makebox\clipbox@@{#1}}
+\def\psclipbox{\@ifnextchar[{\psclipbox@}{\psclipbox@[\z@]}}
+\def\psclipbox@[#1]{\pst@makebox\psclipbox@@{#1}}
% 20.
\def\mixed@coor#1#2{%
diff --git a/graphics/pstricks/base/generic/pstricks.tex b/graphics/pstricks/base/generic/pstricks.tex
index 2f87e9895e..66b00657b9 100644
--- a/graphics/pstricks/base/generic/pstricks.tex
+++ b/graphics/pstricks/base/generic/pstricks.tex
@@ -88,8 +88,8 @@
\let\pgfforeach\foreach
%
-\def\fileversion{3.19c}
-\def\filedate{2024/02/02}
+\def\fileversion{3.20}
+\def\filedate{2024/07/09}
\pst@addfams{pstricks}
%
%\define@boolkey[psset]{pstricks}[Pst@]{useURWfonts}[true]{}
@@ -2609,13 +2609,13 @@
\AltClipMode
\fi
-\def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}}
+\def\psclipbox{\@ifnextchar[{\psclipbox@}{\psclipbox@[\z@]}}
% DG modification begin - Apr. 3, 1997
% From paulus@immd5.informatik.uni-erlangen.de (Dietrich Paulus)
%\def\clipbox@[#1]{\pst@makebox\clipbox@@{#1}}
-\def\clipbox@[#1]{\pst@makebox{\clipbox@@{#1}}}
+\def\psclipbox@[#1]{\pst@makebox{\psclipbox@@{#1}}}
% DG modification end
-\def\clipbox@@#1{%
+\def\psclipbox@@#1{%
\pssetlength\pst@dimg{#1}%
\leavevmode\hbox{%
\begin@psclip%
@@ -4119,10 +4119,19 @@ pop
\def\pst@picture{\@ifnextchar[{\pst@@picture}{\pst@@picture[]}}
\def\pst@@picture[#1]{\@ifnextchar({\pst@@picture@i[#1]}{\pst@@picture@@i[#1]}}%
\def\pst@@picture@@i[#1]{%
- \gdef\pscoor{(10,10)}%
+ \def\pic@coor{(0,0)(0,0)}%
+% \gdef\pscoor{(10,10)}%
\ifPst@calcframe
\typeout{>>>Check for file \jobname-\the\numexpr\ps@imagectr+1.psaux}%
- \IfFileExists{\jobname-\the\numexpr\ps@imagectr+1.psaux}{\input{\jobname-\the\numexpr\ps@imagectr+1.psaux}}{}%
+ \IfFileExists{\jobname-\the\numexpr\ps@imagectr+1.psaux}
+ {\input{\jobname-\the\numexpr\ps@imagectr+1.psaux}%
+ \xdef\pic@coor{(0,0)\pscoor}%
+ \typeout{----->>\pic@coor}%
+ \typeout{----->>\pscoor}%
+ }
+ {%\gdef\pscoor{(10,10)}
+ %\def\pic@coor{(0,0)(0,0)(10,10)}
+ }%
% \typeout{>>>\pscoor}%
\fi
\edef\@temp{[\noexpand#1]\pscoor}%
@@ -4168,7 +4177,7 @@ pop
\ifPst@pgffunctions\pstVerb{ pgffunctions }\fi% hv 2013-04-17
}
-\def\pic@coor{(0,0)(0,0)(10,10)}
+%\def\pic@coor{(0,0)(0,0)(10,10)}
\def\endpspicture{%
\ifPst@calcframe
\ifPSTlualatex
@@ -4236,7 +4245,7 @@ pop
\advance\pst@dimd\pst@dimb
\lower\pst@dimd\box\pst@hbox
\kern\pst@dimc}%
- \if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi
+ \if@star\setbox\pst@hbox=\hbox{\psclipbox@@\z@}\fi
\leavevmode
\ifPst@draft
\expandafter\ifx\csname @latexerr\endcsname\relax
diff --git a/graphics/pstricks/contrib/pst-diffraction/Changes b/graphics/pstricks/contrib/pst-diffraction/Changes
index d5cad1459f..d40c814ac7 100644
--- a/graphics/pstricks/contrib/pst-diffraction/Changes
+++ b/graphics/pstricks/contrib/pst-diffraction/Changes
@@ -1,4 +1,11 @@
pst-diffraction.tex --------
+2.06a 2024-07-15 - small fix in the documentation
+2.06 2024-07-10 - fix for missing contrast option for \psdiffractionCircular (Keno Wehr)
+2.05 2024-07-10 - removed unused optional argument gamma
+2.04a 2024-06-29 - bugfix for the documentation header
+ - removed german and french docs
+2.04 2010-01-05 - fix bug with missing \space for keywords
+ from pst-3dplot
2.03 2008-09-03 - fix compatibility bug with pst-3d
(\variablesIIID no more valid)
2.02 2007-09-25 - add IIID option for all macros
diff --git a/graphics/pstricks/contrib/pst-diffraction/Makefile b/graphics/pstricks/contrib/pst-diffraction/Makefile
deleted file mode 100644
index 1d4650b7c1..0000000000
--- a/graphics/pstricks/contrib/pst-diffraction/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-# `Makefile' for `pst-diffraction.pdf', hv, 2007/03/17
-
-.SUFFIXES : .tex .ltx .dvi .ps .pdf .eps
-
-PACKAGE = pst-diffraction
-
-LATEX = latex
-
-ARCHNAME = $(PACKAGE)-$(shell date +%y%m%d)
-ARCHFILES = $(PACKAGE).sty *.tex $(PACKAGE).pro *.tex README Changes Makefile
-
-all : DE E FR clean
-
-DE : $(PACKAGE)-docDE.pdf
-E : $(PACKAGE)-docE.pdf
-FR : $(PACKAGE)-docFR.pdf
-
-doc : $(MAIN).pdf
-
-%.pdf : %.ps
- GS_OPTIONS=-dAutoRotatePages=/None ps2pdf $<
-
-%.ps : %.dvi
- dvips $<
-
-%.dvi : %.tex
- $(LATEX) $<
- $(LATEX) $<
- if ! test -f $(basename $<).glo ; then touch $(basename $<).glo; fi
- if ! test -f $(basename $<).idx ; then touch $(basename $<).idx; fi
- makeindex -s gglo.ist -t $(basename $<).glg -o $(basename $<).gls \
- $(basename $<).glo
- makeindex -t $(basename $<).ilg -o $(basename $<).ind \
- $(basename $<).idx
- bibtex $(basename $<)
- $(LATEX) $<
- $(LATEX) $<
-
-clean :
- $(RM) $(addprefix $(PACKAGE)-docDE, .log .aux .glg .glo .gls .ilg .idx .ind .tmp .toc .out .blg .Roessler .bbl )
- $(RM) $(addprefix $(PACKAGE)-docDE, .dvi .ps)
- $(RM) $(addprefix $(PACKAGE)-docE, .log .aux .glg .glo .gls .ilg .idx .ind .tmp .toc .out .blg .Roessler .bbl )
- $(RM) $(addprefix $(PACKAGE)-docE, .dvi .ps)
- $(RM) $(addprefix $(PACKAGE)-docFR, .log .aux .glg .glo .gls .ilg .idx .ind .tmp .toc .out .blg .Roessler .bbl )
- $(RM) $(addprefix $(PACKAGE)-docFR, .dvi .ps)
-
-veryclean : clean
- $(RM) $(addprefix $(PACKAGE)-docDE, .pdf .bbl .blg)
- $(RM) $(addprefix $(PACKAGE)-docE, .pdf .bbl .blg)
- $(RM) $(addprefix $(PACKAGE)-docFR, .pdf .bbl .blg)
-
-arch :
- zip $(ARCHNAME).zip $(ARCHFILES)
-
-# EOF
diff --git a/graphics/pstricks/contrib/pst-diffraction/README b/graphics/pstricks/contrib/pst-diffraction/README
index e642ddc6fb..3d95ca6feb 100644
--- a/graphics/pstricks/contrib/pst-diffraction/README
+++ b/graphics/pstricks/contrib/pst-diffraction/README
@@ -1,9 +1,9 @@
%% Package `pst-diffraction.tex'
%%
-%% Manuel Luque (ml _at_ pstricks.de) (France)
-%% Herbert Voss (hv _at_ pstricks.de) (Germany)
+%% Manuel Luque (France)
+%% Herbert Voss (hvoss _at_ tug.org) (Germany)
%%
-%% 2007-09-04
+%% 2024-06-29
%%
PSTricks offers excellent macros to insert more or less complex
@@ -19,39 +19,28 @@ Save the files
pst-diffraction.sty
pst-diffraction.tex
-pst-diffraction.pro
in any place, where latex or any other TeX program will find it.
-The pro file should go into $TEXMF$/dvips/pstricks/.
-
-pst-diffraction uses the extended version of the keyval package. So
-be sure that you
-- have installed xkeyval with the special pst-xkey
- (CTAN: tex-archive/macros/latex/contrib/xkeyval/)
-- do not load another package after pst-diffraction, which loads
- the old keyval.sty or pst-key.tex
You can run the documentation with
-make DE
-make E
-make FR
-or for all make all ;-) this will take a lot of time, because
+make
+
+or for all make all ;-) this may take some time, because
the images are very big.
If you like to get the documentation file in another format run
-latex pst-diffraction-docX.tex
-bibtex pst-diffraction-docX
-latex pst-diffraction-docX.tex
-dvips pst-diffraction-docX.dvi
+latex pst-diffraction-doc.tex
+bibtex pst-diffraction-doc
+latex pst-diffraction-doc.tex
+dvips pst-diffraction-doc.dvi
to get a PostScript file. But pay attention, that the pst-diffraction
files are saved in the above mentioned way, before you run
latex on the documentation file.
-The intermediate DVI file works only with viewers which can
-interprete the embedded PostScript code.
+Running the files with lualatex is possible, but may take a lot of
+time in fact of the heavy calculations.
-For another PDF output read the introduction from
-the documentation.
+hvoss@tug.org
diff --git a/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.bib b/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.bib
new file mode 100644
index 0000000000..0d2ecefe77
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.bib
@@ -0,0 +1,176 @@
+@STRING{tugboat = {TUGboat} }
+@STRING{dtk = {Die {\TeX}nische Komödie} }
+@STRING{bretter = {Bretter, die die Welt bedeuten } }
+
+@Book{companion,
+ author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Dennis Roegel and Herbert Voß},
+ title = {The {\LaTeX} Graphics Companion},
+ publisher = {Lehmanns Media},
+ edition = {2},
+ date = {2022},
+ location = {Berlin},
+ note={Preprint of the english version, 2nd edition}
+}
+
+@Article{girou:01:,
+ author = {Denis Girou},
+ title = {Présentation de PSTricks},
+ journal = {Cahier {GUT}enberg},
+ year = 1994,
+ volume = {16},
+ month = apr,
+ pages = {21-70}
+}
+
+@Article{girou:02:,
+ author = {Timothy Van Zandt and Denis Girou},
+ title = {Inside {PST}ricks},
+ journal = TUGboat,
+ year = 1994,
+ volume = {15},
+ month = sep,
+ pages = {239-246}
+}
+
+@Book{PostScript,
+ Author = {Kollock, Nikolai G.},
+ Title = {PostScript richtig eingesetzt: vom Konzept zum praktischen Einsatz},
+ Publisher = {IWT},
+ Address = {Vaterstetten},
+ year = 1989,
+}
+
+@ctan{multido,
+title = {The Multido package},
+subtitle = {A loop facility for Generic TeX},
+author = {Van Zandt, Timothy and Voß, Herbert and Niepraschk, Rolf},
+url = {macros/latex/multido},
+urldate = {2018-09-01},
+version = {1.42}
+}
+
+
+@Book{PSTricks2,
+ author = {Herbert Voß},
+ title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX},
+ edition = {7},
+ publisher = {DANTE {\eV} and Lehmanns Media},
+ date = {2016},
+ address = {Heidelberg and Hamburg}
+}
+
+@Book{PSTricksE,
+ author = {Herbert Voß},
+ title = {\texttt{PSTricks} -- Graphics and PostScript for \LaTeX},
+ edition = {1},
+ publisher = {UIT},
+ date = {2011},
+ address = {Cambridge -- UK}
+}
+
+@Book{LTXquick,
+ author = {Herbert Voß},
+ title = {{\LaTeX} quick reference},
+ edition = {1},
+ publisher = {UIT},
+ year = {2012},
+ address = {Cambridge -- UK}
+}
+
+@Book{presentations,
+ author = {Herbert Voß},
+ title = {Presentations with \LaTeX},
+ edition = {2},
+ publisher = {DANTE {\eV} and Lehmanns Media},
+ year = {2019},
+ address = {Heidelberg and Berlin}
+}
+
+
+@Book{tbt,
+ author = {Victor Eijkhout},
+ title = {\TeX\ by Topic -- {A} \TeX{}nician Reference},
+ edition = {1},
+ publisher = {DANTE {\eV} and Lehmanns Media},
+ year = {2014},
+ address = {Heidelberg and Berlin}
+}
+
+
+
+@Article{dtk02.1:voss:mathematischen,
+ author = {Herbert Voß},
+ title = {Die mathematischen {F}unktionen von {P}ostscript},
+ journal = dtk,
+ year = 2002,
+ volume = {1/02},
+ altvolume = 1,
+ altnumber = 14,
+ month = mar,
+ pages = {40-47},
+ annote = bretter,
+ abstract = { \PS, faktisch genauso alt wie {\TeX}, ist im
+ Verh{\"a}ltnis dazu allgemein noch weniger bekannt, wenn es
+ darum geht zu beurteilen, was es denn nun im eigentlichen
+ Sinne ist. Au{\ss}erdem wird h{\"a}ufig vergessen, dass
+ sich mit den \PS-Funktionen viele Dinge erledigen lassen,
+ bei denen sonst auf externe Programme zur{\"u}ckgegriffen
+ wird. Dies wird im Folgenden f{\"u}r die mathematischen
+ Funktionen im Zusammenhang mit dem Paket \texttt{pst-plot}
+ gezeigt. }
+}
+
+
+@Book{PostScript,
+ Author = {Kollock, Nikolai G.},
+ Title = {PostScript richtig eingesetzt: vom Konzept zum
+ praktischen Einsatz},
+ Publisher = {IWT},
+ Address = {Vaterstetten},
+ year = 1989,
+}
+
+@online{pstricks,
+ Title = {PSTricks - {\PS} macros for Generic TeX},
+ Author = {Timothy Van Zandt},
+ Organization = {},
+ url = {http://www.tug.org/application/PSTricks},
+ year = 1993,
+}
+
+
+@online{pdftricks,
+ Title = {PSTricks Support for pdf},
+ Author = {Herbert Voß},
+ url = {http://PSTricks.de/pdf/pdfoutput.phtml},
+ year = 2002,
+}
+
+@Book{diffraction,
+ author = {Bouasse, H. and Carri\`ere, Z.},
+ title = {Diffraction},
+ publisher={Delagrave},
+ year ={1923},
+ address = {Paris},
+ pages = 480
+}
+
+
+@book{tutorial,
+ title = {The New Physical Optics Notebook Tutorials in Fourier Optics},
+ isbn ={0819401307},
+ author ={Reynolds, George O. and Develis, John B. and Parrent, George B. and Thompson, Bria},
+ url = {\url{http://www.langtoninfo.co.uk/de/showitem.asp?isbn=0819401307}},
+ year= 1989,
+ publisher = {Society of {P}hoto {O}ptical}
+}
+
+@online{Fresnel,
+ Title = {Augustin Fresnel},
+ Author = {Manuel Luque},
+ Organization = {},
+ url = {http://melusine.eu.org/syracuse/mluque/fresnel/augustin/fresnel.html},
+ year = 2004
+}
+
+
diff --git a/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.pdf b/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.pdf
new file mode 100644
index 0000000000..d6e0b803ac
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.pdf
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docE.tex b/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.tex
index 1dc2d35e4c..382907d86c 100644
--- a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docE.tex
+++ b/graphics/pstricks/contrib/pst-diffraction/doc/pst-diffraction-doc.tex
@@ -1,75 +1,53 @@
-\documentclass[dvips,english,a4paper]{article}
-\usepackage[utf8]{inputenc}%
-\usepackage[T1]{fontenc}
-\usepackage[bmargin=2cm,tmargin=2cm]{geometry}
-%
-\usepackage{pstricks,pst-node,pst-grad,url}
-\usepackage{pst-diffraction}
-\let\PSTfileversion\fileversion
-\let\PSTfiledate\filedate
-%
-\usepackage{ccfonts}
-\usepackage[euler-digits]{eulervm}
-\usepackage[scaled=0.85]{luximono}
-\usepackage{xspace}
-\newcommand*\psp{\texttt{pspicture}\xspace}
-\def\UrlFont{\small\ttfamily}
-\makeatletter
-\def\verbatim@font{\small\normalfont\ttfamily}
-\makeatother
-\usepackage{prettyref,multicol}
-\usepackage{fancyhdr}
-\usepackage{showexpl}
+%% $Id: pst-diffraction-docE.tex 134 2009-09-27 12:28:50Z herbert $
+\documentclass[11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small,
+ headinclude=false,footinclude=false,twoside,english]{pst-doc}
+
+%\usepackage{libertinus}
+\usepackage{biblatex}
+\addbibresource{pst-diffraction-doc.bib}
+
+\usepackage{xurl,pst-grad,pst-diffraction}
+\let\pstDiffractionFV\fileversion
+
+
+
+\lstset{pos=t,wide=true,language=PSTricks,
+ morekeywords={psdiffractionRectangle,psdiffractionCircle,psdiffractionCircular},basicstyle=\footnotesize\ttfamily}
\lstdefinestyle{syntax}{backgroundcolor=\color{blue!20},numbers=none,xleftmargin=0pt,xrightmargin=0pt,
frame=single}
\lstdefinestyle{example}{backgroundcolor=\color{red!20},numbers=none,xleftmargin=0pt,xrightmargin=0pt,
frame=single}
-\lstset{wide=true,language=PSTricks,
- morekeywords={psdiffractionCircular,psdiffractionRectangle,psdiffractionTriangle}}
-
-\usepackage{babel}
-\usepackage[colorlinks,linktocpage]{hyperref}
-
-\pagestyle{fancy}
-\def\Lcs#1{{\ttfamily\textbackslash #1}}
-\lfoot{\small\ttfamily\jobname.tex}
-\cfoot{Documentation}
-\rfoot{\thepage}
-\lhead{PSTricks}
-\renewcommand{\headrulewidth}{0pt}
-\renewcommand{\footrulewidth}{0pt}
-\newcommand{\PS}{PostScript}
-\newcommand\CMD[1]{\texttt{\textbackslash#1}}
-\makeatother
-\usepackage{framed}
-\definecolor{shadecolor}{cmyk}{0.2,0,0,0}
-\SpecialCoor
-
-\title{\texttt{pst-diffraction}\\[6pt]
-Diffraction patterns for diffraction from circular, rectangular and triangular
-apertures
-\\[1cm]
----\\[10pt]
-{\normalsize v. \PSTfileversion (\PSTfiledate)}}
-\author{%
- \tabular[t]{c}Manuel Luque\\[3pt]
- \url{ml@PSTricks.de}
- \endtabular \and
- \tabular[t]{c}Herbert Vo\ss\\[3pt]
- \url{hv@PSTricks.de}\endtabular%
-}
-\date{\today}
+\newcommand*\psp{\texttt{pspicture}\xspace}
+%
+
+\renewcommand\bgImage{%
+\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
+\psdiffractionCircular[f=10,showFunc=true]
+\end{pspicture}
+}
+
+\def\eV{e.\kern-1pt{}V\kern-1pt}
+
\begin{document}
-\maketitle
-\vfill\noindent
-Thanks to Doris Wagner for help with the documentation.\\
-Also thanks to: Julien Cubizolles.
+\title{\texttt{pst-diffraction}}
+\subtitle{Diffraction patterns for diffraction from circular, rectangular and triangular
+apertures; v.\pstDiffractionFV}
+\author{Manuel Luque \\ Herbert Vo\ss}
+\docauthor{Herbert Voß}
+\date{\today}
+%\maketitle
+\settitle
-\clearpage
\tableofcontents
+\psset{unit=1cm}
+
+\vfill\noindent
+Thanks to: Julien Cubizolles,
+Doris Wagner,
+Timothy Van Zandt, Keno Wehr,
+Michael Zedler.
-\clearpage
\section{Optical setup}
@@ -124,24 +102,22 @@ of the light (the associated color will be given automatically by the package).
There are three commands, for rectangular, circular and triangular openings respectively:
-\begin{lstlisting}[style=syntax]
-\psdiffractionRectangle[<Optionen>]
-\psdiffractionCircular[<Optionen>]
-\psdiffractionTriangle[<Optionen>]
-\end{lstlisting}
+\begin{BDef}
+\Lcs{psdiffractionRectangle}\OptArgs\\
+\Lcs{psdiffractionCircular}\OptArgs\\
+\Lcs{psdiffractionTriangle}\OptArgs
+\end{BDef}
\section{The color}
The desired color is defined by specifying the associated wavelength $\lambda$ (in nanometers).
-Red for instance one gets by the option \texttt{[lambda=632]} because
+Red for instance one gets by the option \Lkeyword{lambda}=632 because
red light has the wavelength $\lambda_{\textrm{rot}}=632\,\textrm{nm}$.
The conversion of the wavelength into the associated \texttt{RGB}-value is done by PostScript.
The code is similar to the code of a FORTRAN program which can be found here: \\
\url{http://www.midnightkite.com/color.html}
-\clearpage
-
\section{Diffraction from a rectangular aperture}
\begin{center}
@@ -154,23 +130,23 @@ The code is similar to the code of a FORTRAN program which can be found here: \\
\end{pspicture}
\end{center}
-The width of the rectangle with the area $h=k\times a$ is defined by the letter \texttt{[a]},
-the height by \texttt{[k]}.
-The focal length is specified by \texttt{[f]}, the desired resolution in pixels [pixel].
-With the option \texttt{[contrast]} one can improve the visibility of the minor secondary
-maxima more.\\
-We get a black and white picture if we use the option \texttt{[colorMode=0]},
-the option \texttt{[colorMode=1]} provides the associated negative pattern. The options
-\texttt{[colorMode=2]} and \texttt{[colorMode=3]} render color pictures in the
-CMYK and RGB color model respectively.
+The width of the rectangle with the area $h=k\times a$ is defined by the letter \Lkeyword{a},
+the height by \Lkeyword{k}.
+The focal length is specified by \Lkeyword{f}, the desired resolution in pixels [pixel].
+With the option \Lkeyword{contrast} one can improve the visibility of the minor secondary
+maxima more.
+We get a black and white picture if we use the option \Lkeyword{colorMode}=0,
+the option \Lkeyword{colorMode}=1 provides the associated negative pattern. The options
+\Lkeyword{colorMode}=2 and \Lkeyword{colorMode}=3 render color pictures in the
+\Index{CMYK} and \Index{RGB} color model respectively.
By default the settings are as follows:
\begin{tabular}{@{}lll@{}}
-\texttt{[a=0.2e-3]} in m; & \texttt{[k=1]}; & \texttt{[f=5]} in m;\\
-\texttt{[lambda=650]} in nm; & \texttt{[pixel=0.5]}; & \texttt{[contrast=38]}, greates value;\\
-\texttt{[colorMode=3]}; & \texttt{[IIID=false]}.
+\Lkeyword{a}=0.2e-3 in m; & \Lkeyword{k}=1; & \Lkeyword{f}=5 in m;\\
+\Lkeyword{lambda}=650 in nm; & \Lkeyword{pixel}=0.5; & \Lkeyword{contrast}=38, greatest value;\\
+\Lkeyword{colorMode}=3; & \Lkeyword{IIID}=\false.
\end{tabular}
\bigskip
@@ -189,7 +165,7 @@ By default the settings are as follows:
\end{pspicture}
\hfill
\begin{pspicture}(-1.5,-2.5)(3.5,3.5)
-\psdiffractionRectangle[IIID,Alpha=30,f=2.5]
+\psdiffractionRectangle[IIID,Alpha=30,f=2.5]% for Alpha see package pst-3dplot
\end{pspicture}
\end{lstlisting}
@@ -233,6 +209,7 @@ By default the settings are as follows:
\hfill
\begin{pspicture}(-1.5,-2)(3.5,3)
\psdiffractionRectangle[IIID,Alpha=20,a=0.5e-3,k=2,f=10,lambda=515,colorMode=1]
+% % for Alpha see package pst-3dplot
\end{pspicture}
\end{lstlisting}
@@ -244,6 +221,7 @@ By default the settings are as follows:
\hfill
\begin{pspicture}(-3.5,-1)(3.5,4)
\psdiffractionRectangle[IIID,Alpha=10,a=0.5e-3,k=20,f=10,pixel=0.5,lambda=450]
+% % for Alpha see package pst-3dplot
\end{pspicture}
\begin{lstlisting}[style=example]
@@ -253,21 +231,18 @@ By default the settings are as follows:
\hfill
\begin{pspicture}(-3.5,-1)(3.5,4)
\psdiffractionRectangle[IIID,Alpha=10,a=0.5e-3,k=20,f=10,pixel=0.5,lambda=450]
+% % for Alpha see package pst-3dplot
\end{pspicture}
\end{lstlisting}
-\section{Diffraction from two rectangular apertures}
-
-\begin{shaded}
-This simulation was provided by Julien
-\textsc{Cubizolles}.
-\end{shaded}
+\section[Diffraction from two rectangular apertures]{Diffraction from two rectangular apertures%
+\protect\footnote{This simulation was provided by Julien Cubizolles.}}
It is also possible to render the diffraction pattern of two congruent rectangles
(placed parallel such that their base is located on the $x$-axis)
-by using the option \texttt{[twoSlit]}.
+by using the option \Lkeyword{twoSlit}.
By default this option is deactivated.
The distance of the two rectangles is specified by the option $s$.
-The default for $s$ is $12e^{-3}\,\mathrm{m}$.
+The default for $s$ is $12\cdot10^{-3}\,\mathrm{m}$.
\begin{center}
@@ -286,12 +261,14 @@ The default for $s$ is $12e^{-3}\,\mathrm{m}$.
\begin{center}
\begin{pspicture}(-2,-1)(4,4)
\psdiffractionRectangle[IIID,Alpha=20,a=0.5e-3,k=10,f=10,pixel=0.5,lambda=650,twoSlit,s=2e-3]
+% % for Alpha see package pst-3dplot
\end{pspicture}
\end{center}
\begin{lstlisting}[pos=t,style=example,wide=false]
\begin{pspicture}(-2,-1)(4,4)
\psdiffractionRectangle[IIID,Alpha=20,a=0.5e-3,k=10,f=10,pixel=0.5,lambda=650,twoSlit,s=2e-3]
+% % for Alpha see package pst-3dplot
\end{pspicture}
\end{lstlisting}
@@ -301,16 +278,16 @@ The default for $s$ is $12e^{-3}\,\mathrm{m}$.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Diffraction from a circular aperture}
-The radius of the circular opening can be chosen via the letter \texttt{r}, e.g.
-\texttt{[r=1e-3]}. The default is $r=1$ mm. In the first quadrant
+The radius of the circular opening can be chosen via the letter \Lkeyword{r}, e.g.
+\Lkeyword{r}=1e-3. The default is $r=1$ mm. In the first quadrant
PSTricks displays the graph of the intensity distribution (the maximum in the center will be
-cropped if its height exceeds the margin of the \psp-environment).
+cropped if its height exceeds the margin of the environment \Lenv{pspicture*}).
\hspace*{-1cm}%
\begin{LTXexample}[pos=t,style=example,wide=false]
-\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
+\begin{pspicture*}(-3.5,-3.5)(3.5,3.5)
\psdiffractionCircular[r=0.5e-3,f=10,pixel=0.5,lambda=520]
-\end{pspicture}
+\end{pspicture*}
%
\begin{pspicture}(-3.5,-1.5)(3.5,3.5)
\psdiffractionCircular[IIID,r=0.5e-3,f=10,pixel=0.5,lambda=520]
@@ -318,17 +295,31 @@ cropped if its height exceeds the margin of the \psp-environment).
\end{LTXexample}
+\begin{LTXexample}[pos=t,style=example,wide=false]
+\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
+\psdiffractionCircular[f=10]
+\end{pspicture}
+\hfill
+\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
+\psdiffractionCircular[f=10,showFunc=true]
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Diffraction from two circular apertures}
Only the case of equal radii is provided, this common radius can be defined like in the
-previous section via \texttt{[r=\dots]}.
+previous section via \Lkeyword{r}=\dots.
Furthermore one has to give the half distance of the circles measured from their centers by
-\texttt{[d=\dots]}, e.g. \texttt{[d=3e-3]}. Also the option
-\texttt{[twoHole]} has to be used.\\
+\Lkeyword{d}=\dots, e.g. \Lkeyword{d}=3e-3. Also the option
+\Lkeyword{twoHole} has to be used.\\
The rendering process could take some time in this case\dots
-\begin{pspicture}(-3,-3.5)(3.5,3.5)
+\begin{pspicture}(-3.5,-3.5)(4,3.5)
\psdiffractionCircular[r=0.5e-3,f=10,d=3e-3,lambda=515,twoHole]
\end{pspicture}
%
@@ -349,7 +340,7 @@ The rendering process could take some time in this case\dots
\hspace*{-1cm}%
-\begin{pspicture}(-3,-3)(3.5,4)
+\begin{pspicture}(-4,-3)(4,4)
\psdiffractionCircular[r=0.5e-3,f=10,d=2e-3,lambda=700,twoHole,colorMode=0]
\end{pspicture}
%
@@ -373,21 +364,22 @@ or $d=\frac{2r}{1.22}$ (see
\url{http://www.unice.fr/DeptPhys/optique/diff/trouscirc/diffrac.html}).
\hspace*{-1cm}%
-\begin{pspicture}(-3,-3.5)(3,3.5)
+\begin{pspicture}(-4,-3.5)(3,4.5)
\psdiffractionCircular[r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole]
\end{pspicture}
%
-\begin{pspicture}(-3.5,-1.5)(3.5,3)
+\begin{pspicture}(-5,-2)(3.5,3)
\psdiffractionCircular[IIID,r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole]
\end{pspicture}
+\bigskip
\begin{lstlisting}[style=example]
\begin{pspicture}(-3,-3.5)(3,3.5)
\psdiffractionCircular[r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole]
\end{pspicture}
%
-\begin{pspicture}(-3.5,-1.5)(3.5,3)
+\begin{pspicture}(-5,-1.5)(3.5,3)
\psdiffractionCircular[IIID,r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole]
\end{pspicture}
\end{lstlisting}
@@ -397,10 +389,10 @@ or $d=\frac{2r}{1.22}$ (see
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Diffraction from a triangular aperture}
-Only the case of an equilateral triangle is provided, whose height \texttt{[h]} has to be
+Only the case of an equilateral triangle is provided, whose height \Lkeyword{h} has to be
defined as an option. As is generally known, $h$ can be computed from the length $s$ of
its side by $h=\frac{\sqrt{3}}{2}s$. A black and white picture can be obtained by using the
-option \texttt{[colorMode=0]}.
+option \Lkeyword{colorMode}=0.
@@ -414,7 +406,7 @@ option \texttt{[colorMode=0]}.
\makebox[\linewidth]{%
\begin{pspicture}(-3,-3)(3,2.5)
-\psdiffractionTriangle[f=10,h=1e-3,lambda=515,contrast=38]
+\psdiffractionTriangle[f=10,h=1e-3,lambda=515,contrast=18]
\end{pspicture}
\quad
\begin{pspicture}(-3,-3)(3,2.5)
@@ -428,7 +420,7 @@ option \texttt{[colorMode=0]}.
\begin{lstlisting}[style=example]
\begin{pspicture}(-3,-3)(3,2.5)
-\psdiffractionTriangle[f=10,h=1e-3,lambda=515,contrast=38]
+\psdiffractionTriangle[f=10,h=1e-3,lambda=515,contrast=18]
\end{pspicture}
\quad
\begin{pspicture}(-3,-3)(3,2.5)
@@ -470,16 +462,17 @@ option \texttt{[colorMode=0]}.
+\section{List of all optional arguments for \texttt{pst-diffraction}}
+%\Loption{pst-diff} is the short form for the keywords in the package \LPack{pst-diffraction}.
+
+\xkvview{family=pst-diff,columns={key,type,default}}
-%\section{Credits}
-\bgroup
-\nocite{*}
\raggedright
-\bibliographystyle{plain}
-\bibliography{pst-diffraction-doc}
-\egroup
+\nocite{*}
+\printbibliography
+\printindex
\end{document}
diff --git a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction.sty b/graphics/pstricks/contrib/pst-diffraction/latex/pst-diffraction.sty
index ab4962f6bc..35e8121644 100644
--- a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction.sty
+++ b/graphics/pstricks/contrib/pst-diffraction/latex/pst-diffraction.sty
@@ -1,7 +1,7 @@
\RequirePackage{pstricks}
\RequirePackage{pst-3dplot}
\RequirePackage{pst-xkey}
-\ProvidesPackage{pst-diffraction}[2009/09/04 package wrapper for
+\ProvidesPackage{pst-diffraction}[2024/06/29 package wrapper for
pst-diffraction.tex (hv)]
\input{pst-diffraction.tex}
\ProvidesFile{pst-diffraction.tex}
diff --git a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-doc.bib b/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-doc.bib
deleted file mode 100644
index 737b6dbba9..0000000000
--- a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-doc.bib
+++ /dev/null
@@ -1,119 +0,0 @@
-@STRING{dtk = {{D}ie {\TeX}nische {K}om{\"o}die} }
-
-@Book{PostScript,
- Author = {Kollock, Nikolai G.},
- Title = {PostScript richtig eingesetzt: vom Konzept zum
- praktischen Einsatz},
- Publisher = {IWT},
- Address = {Vaterstetten},
- year = 1989,
-}
-
-@Manual{pstricks,
- Title = {PSTricks - {\PS} macros for Generic TeX},
- Author = {Timothy Van Zandt},
- Organization = {},
- Address = {\url{http://www.tug.org/application/PSTricks}},
- Note = {},
- year = 1993,
-}
-
-
-@Manual{pdftricks,
- Title = {PSTricks Support for pdf},
- Author = {Herbert Voss},
- Organization = {},
- Address = {\url{http://PSTricks.de/pdf/pdfoutput.phtml}},
- Note = {},
- year = 2002,
-}
-
-@Manual{miwi,
- Title = {References for \TeX{} and Friends},
- Author = {Michael Wiedmann and Peter Karp},
- Organization = {},
- Address = {\url{http://www.miwie.org/tex-refs/}},
- Note = {},
- year = 2003,
-}
-
-
-@Article{dtk02.1:voss:mathematischen,
- author = {Herbert Vo{\ss}},
- title = {Die mathematischen {F}unktionen von {P}ostscript},
- journal = dtk,
- year = 2002,
- volume = {1/02},
- altvolume = 1,
- altnumber = 14,
- month = mar,
- pages = {40-47},
- annote = bretter,
- keywords = {},
- abstract = { \PS, faktisch genauso alt wie {\TeX}, ist im
- Verh{\"a}ltnis dazu allgemein noch weniger bekannt, wenn es
- darum geht zu beurteilen, was es denn nun im eigentlichen
- Sinne ist. Au{\ss}erdem wird h{\"a}ufig vergessen, dass
- sich mit den \PS-Funktionen viele Dinge erledigen lassen,
- bei denen sonst auf externe Programme zur{\"u}ckgegriffen
- wird. Dies wird im Folgenden f{\"u}r die mathematischen
- Funktionen im Zusammenhang mit dem Paket \texttt{pst-plot}
- gezeigt. }
-}
-
-@Book{companion,
- author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Denis Roegel and Herbert Vo{\ss}},
- title = {The {\LaTeX} {G}raphics {C}ompanion},
- publisher = {{Addison-Wesley Publishing Company}},
- edition = 2,
- year = {2007},
- address = {Reading, Mass.}
-}
-
-@Book{PSTricks2,
- author = {Herbert Vo\ss},
- title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX},
- edition = {4.},
- publisher = {DANTE -- Lehmanns},
- year = {2007},
- address = {Heidelberg/Hamburg}
-}
-
-@Book{LaTeXRef,
- author = {Herbert Vo\ss},
- title = {\LaTeX\ Referenz},
- edition = {1.},
- publisher = {DANTE -- Lehmanns},
- year = {2007},
- address = {Heidelberg/Hamburg}
-}
-
-@Book{diffraction,
- author = {Bouasse, H. and Carri\`ere, Z.},
- title = {Diffraction},
- publisher={Delagrave},
- year ={1923},
- address = {Paris},
- pages = 480
-}
-
-
-@book{tutorial,
- title = {The New Physical Optics Notebook Tutorials in Fourier Optics},
- isbn ={0819401307},
- author ={Reynolds, George O. and Develis, John B. and Parrent, George B. and Thompson, Bria},
- url = {\url{http://www.langtoninfo.co.uk/de/showitem.asp?isbn=0819401307}},
- year= 1989,
- publisher = {Society of {P}hoto {O}ptical}
-}
-
-@Manual{Fresnel,
- Title = {Augustin Fresnel},
- Author = {Manuel Luque},
- Organization = {},
- Address = {\url{http://melusine.eu.org/syracuse/mluque/fresnel/augustin/fresnel.html}},
- Note = {},
- year = 2004
-}
-
-
diff --git a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docDE.pdf b/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docDE.pdf
deleted file mode 100644
index 08199e91ec..0000000000
--- a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docDE.pdf
+++ /dev/null
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docDE.tex b/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docDE.tex
deleted file mode 100644
index 27f528fcff..0000000000
--- a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docDE.tex
+++ /dev/null
@@ -1,495 +0,0 @@
-\documentclass[ngerman,a4paper]{article}
-\usepackage[T1]{fontenc}
-\usepackage[utf8]{inputenc}
-\usepackage[bmargin=2cm,tmargin=2cm]{geometry}
-%
-\usepackage{pstricks,pst-node,pst-grad,url}
-\usepackage{pst-diffraction}
-\let\PSTfileversion\fileversion
-\let\PSTfiledate\filedate
-%
-\usepackage{ccfonts}
-\usepackage[euler-digits]{eulervm}
-\usepackage[scaled=0.85]{luximono}
-\usepackage{xspace}
-\def\UrlFont{\small\ttfamily}
-\newcommand*\psp{\texttt{pspicture}\xspace}
-\makeatletter
-\def\verbatim@font{\small\normalfont\ttfamily}
-\makeatother
-\usepackage{showexpl}
-\lstdefinestyle{syntax}{backgroundcolor=\color{blue!20},numbers=none,xleftmargin=0pt,xrightmargin=0pt,
- frame=single}
-\lstdefinestyle{example}{backgroundcolor=\color{red!20},numbers=none,xleftmargin=0pt,xrightmargin=0pt,
- frame=single}
-\lstset{wide=true,language=PSTricks,
- morekeywords={psdiffractionCircular,psdiffractionRectangle,psdiffractionTriangle}}
-
-
-\usepackage{prettyref}
-\usepackage{fancyhdr}
-\usepackage{multicol}
-
-\usepackage{babel}
-\usepackage[colorlinks,linktocpage]{hyperref}
-
-\pagestyle{fancy}
-\def\Lcs#1{{\ttfamily\textbackslash #1}}
-\lfoot{\small\ttfamily\jobname.tex}
-\cfoot{Documentation}
-\rfoot{\thepage}
-\lhead{PSTricks}
-\renewcommand{\headrulewidth}{0pt}
-\renewcommand{\footrulewidth}{0pt}
-\newcommand{\PS}{PostScript}
-\newcommand\CMD[1]{\texttt{\textbackslash#1}}
-\makeatother
-\usepackage{framed}
-\definecolor{shadecolor}{cmyk}{0.2,0,0,0}
-\SpecialCoor
-
-\title{\texttt{pst-diffraction}\\[6pt]
-\mbox{}\\[1cm]
-Beugungsmuster für Beugung an kreisförmigen, rechteckigen und dreieckigen
-Öffnungen\\[10pt]
----\\[10pt]
-{\normalsize v. \PSTfileversion (\PSTfiledate)}}
-\author{%
- \tabular[t]{c}Manuel Luque\\[3pt]
- \url{ml@PSTricks.de}
- \endtabular \and
- \tabular[t]{c}Herbert Vo\ss\\[3pt]
- \url{hv@PSTricks.de}\endtabular%
-}
-\date{\today}
-\begin{document}
-\maketitle
-\vfill
-Dank an Doris Wagner für die Übersetzung der Dokumentation.\\
-Beiträge und Anmerkungen lieferten: Julien Cubizolles.
-
-\clearpage
-\tableofcontents
-\clearpage
-
-
-\section{Versuchsaufbau}
-
-\begin{center}
-\begin{pspicture}(0,-3)(12,3)
-\pnode(0,0){S} \pnode(4,1){L'1} \pnode(4,-1){L'2} \pnode(6,1){E'1} \pnode(6,-1){E'2}
-\pnode(6,0.5){E1}\pnode(6,-0.5){E2}\pnode(8.5,1.5){L1}\pnode(8.5,0.5){L2}\pnode(11.5,1.25){P}
-\pspolygon[linestyle=none,fillstyle=vlines,
- hatchcolor=yellow](S)(L'1)(E'1)(E1)(L1)(P)(L2)(E2)(E'2)(L'2)
-% lentille L'
-\pscustom[fillstyle=gradient,linecolor=blue,gradend=white]{%
- \code{0.5 0.83333 scale}
- \psarc(4,0){4.176}{-16.699}{16.699}
- \psarc(12,0){4.176}{163.30}{196.699}}
-% lentille L
-\pscustom[fillstyle=gradient,linecolor=blue,gradend=white]{%
- \code{1 1.5 scale}
- \psarc(4.5,0){4.176}{-16.699}{16.699}
- \psarc(12.5,0){4.176}{163.30}{196.699}}
-\uput[90](4,1){$L'$}\uput[90](8.5,2){$L$}
-\psdot(S)\uput[180](S){S}
-\psline(S)(12,0)\psline[linewidth=2\pslinewidth](6,2)(6,0.5)\psline[linewidth=2\pslinewidth](6,-2)(6,-0.5)
-\psline[linestyle=dashed](6,0.5)(6,-0.5)\psline(11.5,-3)(11.5,3)\psline(S)(L'1)(E'1)\psline(S)(L'2)(E'2)
-\uput[0](P){P}
-\psline(E1)(L1)(P)\psline(E2)(L2)(P)\psline[linestyle=dashed](8.5,0)(P)
-%\rput(8.5,0){\psarc{->}(0,0){1.5}{0}{!1.25 3 atan}\uput[0](1.5;15){$\theta$}}
-\uput[-90](10,0){$f$}\uput[0](6,2){E}\uput[135](6,0){T}\uput[45](11.5,0){O}
-\end{pspicture}
-\end{center}
-
-Das von der punktförmigen Lichtquelle S ausgehende monochromatische Licht verlässt die
-Sammellinse L' achsenparallel und trifft auf die Blende E mit der Öffnung T.
-Das Licht wird an der Öffnung gebeugt:
-Jeder Punkt in der Öffnung wirkt als punktförmige Lichtquelle (Huygens'sches Prinzip) und es entsteht ein
-Interferenzmuster (Beugungsmuster), welches auf einem Schirm beobachtet werden kann. Ist der Schirm von der
-Blende hinreichend weit entfernt, so spricht man von Fraunhofer'scher Beugung.
-In diesem Fall kann man annehmen, da"s alle Lichtstrahlen, die von der Öffnung her kommen und
-denselben Punkt P auf dem Schirm treffen, parallel verlaufen.\\
-In der Praxis will man den Abstand zwischen Schirm und Blende klein halten. Deshalb
-wird zwischen die Blende und den Schirm eine Sammellinse L montiert und der
-Schirm (in der Zeichnung enthält er die Punkte P und O) in die Brennebene dieser Linse gestellt.
-Links von der Linse parallel verlaufende Lichtstrahlen werden dann im Punkt P in der Brennebene
-fokussiert.
-
-Die folgenden PSTricks-Befehle ermöglichen es, Beugungsmuster für
-verschiedene Formen von Blendenöffnungen zu erstellen. Dabei wird die Verwendung von monochromatischem
-Licht vorausgesetzt. Die Blenden können eine rechteckige, kreisförmige oder
-dreieckige Öffnung haben.
-
-Als mögliche Optionen für die Befehle hat man die Abmessungen, die sich aus dem jeweiligen
-Versuchsaufbau ergeben, etwa
-den Radius bei Verwendung einer Lochblende. Au"serdem kann man die Wellenlänge des verwendeten Lichts
-angeben (die zugehörige Farbe wird vom Paket dann automatisch zugeordnet).
-
-Es gibt drei Befehle, jeweils einen für rechteckige, kreisförmige und
-dreieckige Öffnungen:
-
-
-\begin{lstlisting}[style=syntax]
-\psdiffractionRectangle[<Optionen>]
-\psdiffractionCircular[<Optionen>]
-\psdiffractionTriangle[<Optionen>]
-\end{lstlisting}
-
-
-\section{Die Farbe}
-Die gewünschte Lichtfarbe wird über die Angabe der zugehörigen Wellenlänge
-$\lambda$ (in Nanometern) definiert. Für die Farbe rot beispielsweise gibt man als
-Option \texttt{[lambda=632]} an wegen $\lambda_{\textrm{rot}}=632\,\textrm{nm}$.
-
-Die Umrechnung der Wellenlänge in den entsprechenden Wert des
-\texttt{RGB}-Farbschemas wird von PostScript durchgeführt. Der zugrunde liegende
-Code lehnt sich an an ein Fortran-Programm, welches man auf folgender Seite
-findet:
-\url{http://www.midnightkite.com/color.html}.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{Beugung an einer rechteckigen Blendenöffnung}
-
-\begin{center}
-\begin{pspicture}(-2,-1)(2,1.5)
-\psframe(-0.5,-1)(0.5,1)
-\pcline{<->}(-0.5,1.1)(0.5,1.1)
-\Aput{$a$}
-\pcline{<->}(0.6,1)(0.6,-1)
-\Aput{$h=k\times a$}
-\end{pspicture}
-\end{center}
-
-Die Breite des Rechtecks mit der Fläche $h=k\times a$ wird
-über den Buchstaben \texttt{[a]} definiert, die Höhe
-über den Buchstaben \texttt{[k]}.
-Die Brennweite der Linse gibt man durch \texttt{[f]} an, die Auflösung kann man mit der
-Option [pixel] verändern.
-Mit der Option \texttt{[contrast]} kann man erreichen, da"s die Nebenmaxima des
-Beugungsmusters deutlicher werden.\\
-Ein Schwarzweissbild erhält man, wenn man die Option \texttt{[colorMode=0]}
-verwendet, \texttt{[colorMode=1]} liefert das zugehörige Negativ. Die Optionen
-\texttt{[colorMode=2]} bzw. \texttt{[colorMode=3]} liefern Farbbilder im
-CMYK-Farbmodell bzw. RGB-Farbmodell.
-
-Defaultmä"sig sind folgende Werte voreingestellt:
-
-\begin{tabular}{@{}lll@{}}
-\texttt{[a=0.2e-3]} in m; & \texttt{[k=1]}; & \texttt{[f=5]} in m;\\
-\texttt{[lambda=650]} in nm; & \texttt{[pixel=0.5]}; & \texttt{[contrast=38]}, Maximalwert;\\
-\texttt{[colorMode=3]}; & \texttt{[IIID=false]}.
-\end{tabular}
-
-\bigskip
-\noindent
-\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
-\psdiffractionRectangle[f=2.5]
-\end{pspicture}
-\hfill
-\begin{pspicture}(-1.5,-2.5)(3.5,3.5)
-\psdiffractionRectangle[IIID,Alpha=30,f=2.5]
-\end{pspicture}
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
-\psdiffractionRectangle[f=2.5]
-\end{pspicture}
-\hfill
-\begin{pspicture}(-1.5,-2.5)(3.5,3.5)
-\psdiffractionRectangle[IIID,Alpha=30,f=2.5]
-\end{pspicture}
-\end{lstlisting}
-
-
-
-\noindent\begin{pspicture}(-2,-4)(2,4)
-\psdiffractionRectangle[a=0.5e-3,k=0.5,f=4,pixel=0.5,colorMode=0]
-\end{pspicture}
-\hfill
-\begin{pspicture}(0,-3)(4,4)
-\psdiffractionRectangle[IIID,a=0.5e-3,k=0.5,f=4,pixel=0.5,colorMode=0]
-\end{pspicture}
-
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-2,-4)(2,4)
-\psdiffractionRectangle[a=0.5e-3,k=0.5,f=4,pixel=0.5,colorMode=0]
-\end{pspicture}
-\hfill
-\begin{pspicture}(0,-3)(4,4)
-\psdiffractionRectangle[IIID,a=0.5e-3,k=0.5,f=4,pixel=0.5,colorMode=0]
-\end{pspicture}
-\end{lstlisting}
-
-
-
-\noindent
-\begin{pspicture}(-2.5,-2.5)(3.5,3)
-\psdiffractionRectangle[a=0.5e-3,k=2,f=10,lambda=515,colorMode=1]
-\end{pspicture}
-\hfill
-\begin{pspicture}(-1.5,-2)(3.5,3)
-\psdiffractionRectangle[IIID,Alpha=20,a=0.5e-3,k=2,f=10,lambda=515,colorMode=1]
-\end{pspicture}
-
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-2.5,-2.5)(3.5,3)
-\psdiffractionRectangle[a=0.5e-3,k=2,f=10,lambda=515,colorMode=1]
-\end{pspicture}
-\hfill
-\begin{pspicture}(-1.5,-2)(3.5,3)
-\psdiffractionRectangle[IIID,Alpha=20,a=0.5e-3,k=2,f=10,lambda=515,colorMode=1]
-\end{pspicture}
-\end{lstlisting}
-
-
-\noindent
-\begin{pspicture}(-3.5,-1)(3.5,1)
-\psdiffractionRectangle[a=0.5e-3,k=20,f=10,pixel=0.5,lambda=450]
-\end{pspicture}
-\hfill
-\begin{pspicture}(-3.5,-1)(3.5,4)
-\psdiffractionRectangle[IIID,Alpha=10,a=0.5e-3,k=20,f=10,pixel=0.5,lambda=450]
-\end{pspicture}
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3.5,-1)(3.5,1)
-\psdiffractionRectangle[a=0.5e-3,k=20,f=10,pixel=0.5,lambda=450]
-\end{pspicture}
-\hfill
-\begin{pspicture}(-3.5,-1)(3.5,4)
-\psdiffractionRectangle[IIID,Alpha=10,a=0.5e-3,k=20,f=10,pixel=0.5,lambda=450]
-\end{pspicture}
-\end{lstlisting}
-
-\section{Beugung an zwei rechteckigen Blendenöffnungen}
-
-\begin{shaded}
-Der Code für diese Simulation wurde von Julien \textsc{Cubizolles} erstellt.
-\end{shaded}
-Man kann auch das Beugungsmuster zweier kongruenter Rechtecke (so nebeneinander
-angeordnet, da"s ihre Grundlinie auf der $x$-Achse liegt) erstellen,
-indem man zusätzlich
-zu den Angaben für den Fall nur eines Rechtecks die Option \texttt{[twoSlit]} angibt.
-Defaultmä"sig ist \texttt{[twoSlit]} deaktiviert. Den Abstand zwischen den beiden
-Rechtecken kann man über die Option $s$ einstellen. Sie wird, wenn nichts anderes angegeben
-wird, mit dem Wert $12e^{-3}\,\mathrm{m}$ belegt.
-
-\begin{center}
-\noindent
-\begin{pspicture}(-4,-1)(4,1)
-\psdiffractionRectangle[a=0.5e-3,k=10,f=10,pixel=0.5,lambda=650,twoSlit,s=2e-3]
-\end{pspicture}
-\end{center}
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-4,-1)(4,1)
-\psdiffractionRectangle[a=0.5e-3,k=10,f=10,pixel=0.5,lambda=650,twoSlit,s=2e-3]
-\end{pspicture}
-\end{lstlisting}
-
-\begin{center}
-\begin{pspicture}(-2,-1)(4,4)
-\psdiffractionRectangle[IIID,Alpha=20,a=0.5e-3,k=10,f=10,pixel=0.5,lambda=650,twoSlit,s=2e-3]
-\end{pspicture}
-\end{center}
-
-\begin{lstlisting}[pos=t,style=example,wide=false]
-\begin{pspicture}(-2,-1)(4,4)
-\psdiffractionRectangle[IIID,Alpha=20,a=0.5e-3,k=10,f=10,pixel=0.5,lambda=650,twoSlit,s=2e-3]
-\end{pspicture}
-\end{lstlisting}
-
-
-\section{Beugung an einer kreisförmigen Blendenöffnung}
-Der Lochradius wird über den Buchstaben \texttt{r} angesprochen, beispielsweise
-\texttt{[r=1e-3]}. Der Default ist $r=1$ mm. Im ersten Quadranten wird der Graph der
-Intensitätsverteilung abgebildet (das Maximum in der Mitte wird abgeschnitten,
-falls es über den oberen Rand der \psp-Umgebung hinausgeht).
-
-\begin{center}
-\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
-\psdiffractionCircular[r=0.5e-3,f=10,pixel=0.5,lambda=520]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-1.5)(3.5,3.5)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,pixel=0.5,lambda=520]
-\end{pspicture}
-\end{center}
-
-
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
-\psdiffractionCircular[r=0.5e-3,f=10,pixel=0.5,lambda=520]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-1.5)(3.5,3.5)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,pixel=0.5,lambda=520]
-\end{pspicture}
-\end{lstlisting}
-
-
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{Beugung an zwei kreisförmigen Blendenöffnungen}
-Es ist nur der Fall gleich gro"ser Radien vorgesehen, diesen gemeinsamen Radius
-spezifiziert man wie vorher über \texttt{[r=\dots]}. Au"serdem muss man den
-halben Abstand der beiden Kreismitten festlegen vermöge \texttt{[d=\dots]},
-beispielsweise \texttt{[d=3e-3]}. Zusätzlich muss man die Option
-\texttt{[twoHole]} verwenden. Der Bildaufbau kann in diesem Fall etwas länger dauern\dots
-
-\begin{pspicture}(-3,-3.5)(3.5,3.5)
-\psdiffractionCircular[r=0.5e-3,f=10,d=3e-3,lambda=515,twoHole]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-1.5)(3.5,3.5)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,d=3e-3,lambda=515,twoHole]
-\end{pspicture}
-
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3,-3.5)(3.5,3.5)
-\psdiffractionCircular[r=0.5e-3,f=10,d=3e-3,lambda=515,twoHole]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-1.5)(3.5,3.5)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,d=3e-3,lambda=515,twoHole]
-\end{pspicture}
-\end{lstlisting}
-
-
-\hspace*{-1cm}%
-\begin{pspicture}(-3,-3)(3.5,4)
-\psdiffractionCircular[r=0.5e-3,f=10,d=2e-3,lambda=700,twoHole,colorMode=0]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-2)(3.5,3.5)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,d=2e-3,lambda=700,twoHole,colorMode=0]
-\end{pspicture}
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3.5,-3)(3.5,4)
-\psdiffractionCircular[r=0.5e-3,f=10,d=2e-3,lambda=700,twoHole,colorMode=0]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-2)(3.5,3.5)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,d=2e-3,lambda=700,twoHole,colorMode=0]
-\end{pspicture}
-\end{lstlisting}
-
-Nicht in jedem Fall ergibt sich im mittleren Kreis ein Streifenmuster. Die Anzahl $N$ der Streifen
-im Inneren ist gegeben durch $N=2,44\frac{d}{r}$. Man kann diesen Effekt also erst für
-$N\geq2$ bzw. ab $d=\frac{2r}{1,22}$ beobachten (siehe
-\url{http://www.unice.fr/DeptPhys/optique/diff/trouscirc/diffrac.html}).
-
-
-\hspace*{-1cm}%
-\begin{pspicture}(-3,-3.5)(3,3.5)
-\psdiffractionCircular[r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-1.5)(3.5,3)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole]
-\end{pspicture}
-
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3,-3.5)(3,3.5)
-\psdiffractionCircular[r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-1.5)(3.5,3)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole]
-\end{pspicture}
-\end{lstlisting}
-
-
-
-\section{Brechung an einer dreieckigen Blendenöffnung}
-Es ist nur der Fall eines gleichseitigen Dreiecks vorgesehen. Als Option gibt man dessen Höhe
-\texttt{[h]} an, welche sich bekanntlich über $h=\frac{\sqrt{3}}{2}s$ aus der Seitenlänge $s$
-des Dreiecks berechnet. Ein Schwarzweissbild erhält man mit \texttt{[colorMode=0]}.
-
-\begin{center}
-\begin{pspicture}(-1,-1)(1,1)
-\pspolygon*(0,0)(1;150)(1;210)
-\pcline{|-|}(-0.732,-1)(0,-1)
-\Aput{$h$}
-\end{pspicture}
-\end{center}
-
-\makebox[\linewidth]{%
-\begin{pspicture}(-3,-3)(3,2.5)
-\psdiffractionTriangle[f=10,h=1e-3,lambda=515,contrast=38]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-3)(3,2.5)
-\psdiffractionTriangle[f=10,h=1e-3,colorMode=1,contrast=38,lambda=515]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-3)(3,2.5)
-\psdiffractionTriangle[f=10,h=1e-3,colorMode=0,contrast=38,lambda=515]
-\end{pspicture}}
-
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3,-3)(3,2.5)
-\psdiffractionTriangle[f=10,h=1e-3,lambda=515,contrast=38]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-3)(3,2.5)
-\psdiffractionTriangle[f=10,h=1e-3,colorMode=1,contrast=38,lambda=515]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-3)(3,2.5)
-\psdiffractionTriangle[f=10,h=1e-3,colorMode=0,contrast=38,lambda=515]
-\end{pspicture}
-\end{lstlisting}
-
-
-\makebox[\linewidth]{%
-\begin{pspicture}(-3,-2)(3,3.5)
-\psdiffractionTriangle[IIID,f=10,h=1e-3,lambda=515,contrast=38]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-2)(3,3.5)
-\psdiffractionTriangle[IIID,f=10,h=1e-3,colorMode=1,contrast=38,lambda=515]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-2)(3,3.5)
-\psdiffractionTriangle[IIID,f=10,h=1e-3,colorMode=0,contrast=38,lambda=515]
-\end{pspicture}}
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3,-2)(3,3.5)
-\psdiffractionTriangle[IIID,f=10,h=1e-3,lambda=515,contrast=38]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-2)(3,3.5)
-\psdiffractionTriangle[IIID,f=10,h=1e-3,colorMode=1,contrast=38,lambda=515]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-2)(3,3.5)
-\psdiffractionTriangle[IIID,f=10,h=1e-3,colorMode=0,contrast=38,lambda=515]
-\end{pspicture}
-\end{lstlisting}
-
-
-%\section{Credits}
-
-
-\bgroup
-\nocite{*}
-\raggedright
-\bibliographystyle{plain}
-\bibliography{pst-diffraction-doc}
-\egroup
-
-
-
-\end{document}
diff --git a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docE.pdf b/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docE.pdf
deleted file mode 100644
index f68036fd2a..0000000000
--- a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docE.pdf
+++ /dev/null
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docFR.pdf b/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docFR.pdf
deleted file mode 100644
index 5059c652a5..0000000000
--- a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docFR.pdf
+++ /dev/null
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docFR.tex b/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docFR.tex
deleted file mode 100644
index 0f59dfe155..0000000000
--- a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction-docFR.tex
+++ /dev/null
@@ -1,483 +0,0 @@
-\documentclass[frenchb,dvips,a4paper]{article}
-\usepackage[latin9]{inputenc}%
-\usepackage[T1]{fontenc}
-\usepackage[bmargin=2cm,tmargin=2cm]{geometry}
-%
-\usepackage{pstricks,pst-node,pst-grad,url}
-\usepackage{pst-diffraction}
-\let\PSTfileversion\fileversion
-\let\PSTfiledate\filedate
-%
-\usepackage{ccfonts}
-\usepackage[euler-digits]{eulervm}
-\usepackage[scaled=0.85]{luximono}
-\usepackage{xspace}
-\newcommand*\psp{\texttt{pspicture}\xspace}
-\def\UrlFont{\small\ttfamily}
-\makeatletter
-\def\verbatim@font{\small\normalfont\ttfamily}
-\makeatother
-\usepackage{prettyref,multicol}
-\usepackage{fancyhdr}
-
-\usepackage{showexpl}
-\lstdefinestyle{syntax}{backgroundcolor=\color{blue!20},numbers=none,xleftmargin=0pt,xrightmargin=0pt,
- frame=single}
-\lstdefinestyle{example}{backgroundcolor=\color{red!20},numbers=none,xleftmargin=0pt,xrightmargin=0pt,
- frame=single}
-\lstset{wide=true,language=PSTricks,
- morekeywords={psdiffractionCircular,psdiffractionRectangle,psdiffractionTriangle}}
-
-\usepackage{babel}
-\usepackage[colorlinks,linktocpage]{hyperref}
-
-\pagestyle{fancy}
-\def\Lcs#1{{\ttfamily\textbackslash #1}}
-\lfoot{\small\ttfamily\jobname.tex}
-\cfoot{Documentation}
-\rfoot{\thepage}
-\lhead{PSTricks}
-\renewcommand{\headrulewidth}{0pt}
-\renewcommand{\footrulewidth}{0pt}
-\newcommand{\PS}{PostScript}
-\newcommand\CMD[1]{\texttt{\textbackslash#1}}
-\makeatother
-\usepackage{framed}
-\definecolor{shadecolor}{cmyk}{0.2,0,0,0}
-\SpecialCoor
-
-\title{\texttt{pst-diffraction}\\[6pt]
-Diffraction \`a l'infini
-par un trou rectangulaire,
-un trou circulaire, deux trous circulaires,
-un trou triangulaire.\\[1cm]
----\\[10pt]
-{\normalsize v. \PSTfileversion (\PSTfiledate)}}
-\author{%
- \tabular[t]{c}Manuel Luque\\[3pt]
- \url{ml@PSTricks.de}
- \endtabular \and
- \tabular[t]{c}Herbert Vo\ss\thanks{%
- Thanks to Julien Cubizolles}%
- \\[3pt]
- \url{hv@PSTricks.de}\endtabular%
-}
-\date{\today}
-\begin{document}
-\maketitle
-
-\tableofcontents
-
-\clearpage
-\section{Présentation et Montage}
-\begin{center}
-\begin{pspicture}(0,-3)(12,3)
-\pnode(0,0){S} \pnode(4,1){L'1} \pnode(4,-1){L'2} \pnode(6,1){E'1} \pnode(6,-1){E'2}
-\pnode(6,0.5){E1}\pnode(6,-0.5){E2}\pnode(8.5,1.5){L1}\pnode(8.5,0.5){L2}\pnode(11.5,1.25){P}
-% lentille L'
-\pscustom[fillstyle=gradient,linecolor=blue,gradend=white]{%
- \code{0.5 0.83333 scale}
- \psarc(4,0){4.176}{-16.699}{16.699}
- \psarc(12,0){4.176}{163.30}{196.699}}
-% lentille L
-\pscustom[fillstyle=gradient,linecolor=blue,gradend=white]{%
- \code{1 1.5 scale}
- \psarc(4.5,0){4.176}{-16.699}{16.699}
- \psarc(12.5,0){4.176}{163.30}{196.699}}
-\pspolygon[linestyle=none,fillstyle=vlines,
- hatchcolor=yellow](S)(L'1)(E'1)(E1)(L1)(P)(L2)(E2)(E'2)(L'2)
-\uput[90](4,1){$L'$}\uput[90](8.5,2){$L$}
-\psdot(S)\uput[180](S){S}
-\psline(S)(12,0)\psline[linewidth=2\pslinewidth](6,2)(6,0.5)\psline[linewidth=2\pslinewidth](6,-2)(6,-0.5)
-\psline[linestyle=dashed](6,0.5)(6,-0.5)\psline(11.5,-3)(11.5,3)\psline(S)(L'1)(E'1)\psline(S)(L'2)(E'2)
-\uput[0](P){P}
-\psline(E1)(L1)(P)\psline(E2)(L2)(P)\psline[linestyle=dashed](8.5,0)(P)
-\rput(8.5,0){\psarc{->}(0,0){1.5}{0}{!1.25 3 atan}\uput[0](1.5;15){$\theta$}}
-\uput[-90](10,0){$f$}\uput[0](6,2){E}\uput[135](6,0){T}\uput[45](11.5,0){O}
-\end{pspicture}
-\end{center}
-Ceci est la reproduction de montage
-proposé par Henri \textsc{Bouasse} dans son livre sur la
-diffraction, page 25, publié aux éditions Delagrave en 1\,925. Les commentaires dont il accompagne ce
-schéma sont les suivants :\newline
-\begin{shaded}
-« Une source ponctuelle unique S, très éloignée ou placée dans le plan focal
-principal de la lentille collimatrice $L'$, fournit un faisceau cylindrique
-unique de rayons. On le reçoit sur le plan~E, percé d'un trou~T dont la
-forme caractérise le phénomène étudié.
-Au-delà de l'écran~E la lumière est diffractée \textit{une infinité de
-directions}, ou si l'on veut suivant une infinité de faisceaux
-cylindriques.
-Les rayons diffractés dans chaque direction sont concentrés aux divers points
-du plan focal image d'une lunette accommodée sur l'infini, où ils forment la
-\textit{figure de diffraction} : d'où le nom de \textit{phénomène à
-l'infini}. De chaque faisceau cylindrique diffracté, l'objectif~L de la
-lunette donne une image au point~P de son plan focal principal.
-[\ldots]Au point P correspond un faisceau cylindrique antérieur à l'objectif
-qui fait avec l'axe optique l'angle $\theta$ tel que :
-$\overline{OP}=f\tan\theta\approx\theta$
-\end{shaded}
-
-Ces quelques commandes réalisées avec \texttt{PSTricks} permettent d'obtenir
-les figures de diffraction \textit{à l'infini}, en lumière monochromatique,
-d'un trou rectangulaire, d'un trou circulaire, de deux trous circulaires et
-d'un trou triangulaire.
-
-Les dimensions des ouvertures sont bien sûr paramétrables, ainsi que le
-choix de la longueur d'onde : la couleur s'adapte automatiquement, et des
-divers paramètres du montage.
-
-Il y a trois commandes, l'une pour les ouvertures rectangulaires, l'autre
-pour les ouvertures circulaires et la dernière pour une ouverture
-triangulaire.
-\begin{lstlisting}[style=syntax]
-\psdiffractionRectangle[<liste de paramètres>]
-\psdiffractionCircular[<liste de paramètres>]
-\psdiffractionTriangle[<liste de paramètres>]
-\end{lstlisting}
-
-Nous allons passer en revue ces différentes commandes et leurs paramètres.
-\section{La couleur de la radiation}
-La longueur d'onde est définie par le paramètres \texttt{[lambda=632]} (si
-l'on veut du rouge de longueur d'onde~:~ $\lambda=632$~nm), cette valeur est donc en~nm. La
-conversion de la longueur d'onde dans le système \texttt{rgb} est une adaptation en
-postscript de celle qu'on trouve sur~:\\
-\url{http://www.physics.sfasu.edu/astro/color.html}.
-
-
-
-\section{Diffraction par une ouverture rectangulaire}
-
-\begin{center}
-\begin{pspicture}(-2,-1)(2,1.5)
-\psframe(-0.5,-1)(0.5,1)
-\pcline{<->}(-0.5,1.1)(0.5,1.1)
-\Aput{$a$}
-\pcline{<->}(0.6,1)(0.6,-1)
-\Aput{$h=k\times a$}
-\end{pspicture}
-\end{center}
-On donnera la largeur de la fente \texttt{[a]} et le paramètre \texttt{[k]}
-qui déterminera la hauteur de la fente $h=k\times a$. On choisira aussi la
-distance focale de la lentille \texttt{[a]}, la résolution du tracé par la dimension du
-\texttt{[pixel]}. On pourra jouer sur le contraste pour rendre les franges
-éloignées un peu plus visibles avec \texttt{[contrast]}et éventuellement, obtenir un tracé en niveaux de
-gris en négatif inverse avec \texttt{[colorMode=0]} ou
-negativ avec \texttt{[colorMode=1]} ou cmyk couleur avec \texttt{[colorMode=2]} ou
-rgb avec \texttt{[colorMode=3]}.
-
-Par défaut les paramètres ont les valeurs suivantes :
-
-\begin{tabular}{@{}lll@{}}
-\texttt{[a=0.2e-3]} en m; & \texttt{[k=1]}; & \texttt{[f=5]} en m;\\
-\texttt{[lambda=650]} en nm; & \texttt{[pixel=0.5]}; & \texttt{[contrast=38]}, valeur maximale;\\
-\texttt{[colorMode=3]}; & \texttt{[IIID=false]}.
-\end{tabular}
-
-\bigskip
-\noindent
-\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
-\psdiffractionRectangle[f=2.5]
-\end{pspicture}
-\hfill
-\begin{pspicture}(-1.5,-2.5)(3.5,3.5)
-\psdiffractionRectangle[IIID,Alpha=30,f=2.5]
-\end{pspicture}
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
-\psdiffractionRectangle[f=2.5]
-\end{pspicture}
-\hfill
-\begin{pspicture}(-1.5,-2.5)(3.5,3.5)
-\psdiffractionRectangle[IIID,Alpha=30,f=2.5]
-\end{pspicture}
-\end{lstlisting}
-
-
-
-\noindent\begin{pspicture}(-2,-4)(2,4)
-\psdiffractionRectangle[a=0.5e-3,k=0.5,f=4,pixel=0.5,colorMode=0]
-\end{pspicture}
-\hfill
-\begin{pspicture}(0,-3)(4,4)
-\psdiffractionRectangle[IIID,a=0.5e-3,k=0.5,f=4,pixel=0.5,colorMode=0]
-\end{pspicture}
-
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-2,-4)(2,4)
-\psdiffractionRectangle[a=0.5e-3,k=0.5,f=4,pixel=0.5,colorMode=0]
-\end{pspicture}
-\hfill
-\begin{pspicture}(0,-3)(4,4)
-\psdiffractionRectangle[IIID,a=0.5e-3,k=0.5,f=4,pixel=0.5,colorMode=0]
-\end{pspicture}
-\end{lstlisting}
-
-
-
-\noindent
-\begin{pspicture}(-2.5,-2.5)(3.5,3)
-\psdiffractionRectangle[a=0.5e-3,k=2,f=10,lambda=515,colorMode=1]
-\end{pspicture}
-\hfill
-\begin{pspicture}(-1.5,-2)(3.5,3)
-\psdiffractionRectangle[IIID,Alpha=20,a=0.5e-3,k=2,f=10,lambda=515,colorMode=1]
-\end{pspicture}
-
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-2.5,-2.5)(3.5,3)
-\psdiffractionRectangle[a=0.5e-3,k=2,f=10,lambda=515,colorMode=1]
-\end{pspicture}
-\hfill
-\begin{pspicture}(-1.5,-2)(3.5,3)
-\psdiffractionRectangle[IIID,Alpha=20,a=0.5e-3,k=2,f=10,lambda=515,colorMode=1]
-\end{pspicture}
-\end{lstlisting}
-
-
-\noindent
-\begin{pspicture}(-3.5,-1)(3.5,1)
-\psdiffractionRectangle[a=0.5e-3,k=20,f=10,pixel=0.5,lambda=450]
-\end{pspicture}
-\hfill
-\begin{pspicture}(-3.5,-1)(3.5,4)
-\psdiffractionRectangle[IIID,Alpha=10,a=0.5e-3,k=20,f=10,pixel=0.5,lambda=450]
-\end{pspicture}
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3.5,-1)(3.5,1)
-\psdiffractionRectangle[a=0.5e-3,k=20,f=10,pixel=0.5,lambda=450]
-\end{pspicture}
-\hfill
-\begin{pspicture}(-3.5,-1)(3.5,4)
-\psdiffractionRectangle[IIID,Alpha=10,a=0.5e-3,k=20,f=10,pixel=0.5,lambda=450]
-\end{pspicture}
-\end{lstlisting}
-
-\section{Diffraction par deux ouverture rectangulaire}
-
-\begin{shaded}
-This simulation was provided by Julien \textsc{Cubizolles}.
-\end{shaded}
-
-\begin{center}
-\noindent
-\begin{pspicture}(-4,-1)(4,1)
-\psdiffractionRectangle[a=0.5e-3,k=10,f=10,pixel=0.5,lambda=650,twoSlit,s=2e-3]
-\end{pspicture}
-\end{center}
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-4,-1)(4,1)
-\psdiffractionRectangle[a=0.5e-3,k=10,f=10,pixel=0.5,lambda=650,twoSlit,s=2e-3]
-\end{pspicture}
-\end{lstlisting}
-
-\begin{center}
-\begin{pspicture}(-2,-1)(4,4)
-\psdiffractionRectangle[IIID,Alpha=20,a=0.5e-3,k=10,f=10,pixel=0.5,lambda=650,twoSlit,s=2e-3]
-\end{pspicture}
-\end{center}
-
-\begin{lstlisting}[pos=t,style=example,wide=false]
-\begin{pspicture}(-2,-1)(4,4)
-\psdiffractionRectangle[IIID,Alpha=20,a=0.5e-3,k=10,f=10,pixel=0.5,lambda=650,twoSlit,s=2e-3]
-\end{pspicture}
-\end{lstlisting}
-
-
-
-\section{Diffraction par une ouverture circulaire}
-On donnera le rayon du trou : \texttt{[r=1e-3]}, $r=1$ mm par défaut. Les
-variations de l'intensité sont superposées à la figure de diffraction dans
-le premier quadrant (le maximum au centre a été écrêté).
-
-
-\begin{center}
-\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
-\psdiffractionCircular[r=0.5e-3,f=10,pixel=0.5,lambda=520]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-1.5)(3.5,3.5)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,pixel=0.5,lambda=520]
-\end{pspicture}
-\end{center}
-
-
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
-\psdiffractionCircular[r=0.5e-3,f=10,pixel=0.5,lambda=520]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-1.5)(3.5,3.5)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,pixel=0.5,lambda=520]
-\end{pspicture}
-\end{lstlisting}
-
-
-
-\section{Diffraction par deux trous circulaires}
-Les deux trous sont identiques, outre le rayon commun des trous on fixera la
-demi-distance entre les centres des deux trous avec : \texttt{[d]} et pour
-ce cas de figure on activera l'option \texttt{[twoHole]}. On notera que
-les temps de calculs d'allongent\ldots
-
-
-\begin{pspicture}(-3,-3.5)(3.5,3.5)
-\psdiffractionCircular[r=0.5e-3,f=10,d=3e-3,lambda=515,twoHole]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-1.5)(3.5,3.5)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,d=3e-3,lambda=515,twoHole]
-\end{pspicture}
-
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3,-3.5)(3.5,3.5)
-\psdiffractionCircular[r=0.5e-3,f=10,d=3e-3,lambda=515,twoHole]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-1.5)(3.5,3.5)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,d=3e-3,lambda=515,twoHole]
-\end{pspicture}
-\end{lstlisting}
-
-
-\hspace*{-1cm}%
-\begin{pspicture}(-3,-3)(3.5,4)
-\psdiffractionCircular[r=0.5e-3,f=10,d=2e-3,lambda=700,twoHole,colorMode=0]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-2)(3.5,3.5)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,d=2e-3,lambda=700,twoHole,colorMode=0]
-\end{pspicture}
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3.5,-3)(3.5,4)
-\psdiffractionCircular[r=0.5e-3,f=10,d=2e-3,lambda=700,twoHole,colorMode=0]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-2)(3.5,3.5)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,d=2e-3,lambda=700,twoHole,colorMode=0]
-\end{pspicture}
-\end{lstlisting}
-
-Le cas limite d'obtention de franges se vérifie avec $\displaystyle d
-=\frac{a}{1.22}$. Voir~:\\
-\url{http://www.unice.fr/DeptPhys/optique/diff/trouscirc/diffrac.html}).
-
-\hspace*{-1cm}%
-\begin{pspicture}(-3,-3.5)(3,3.5)
-\psdiffractionCircular[r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-1.5)(3.5,3)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole]
-\end{pspicture}
-
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3,-3.5)(3,3.5)
-\psdiffractionCircular[r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole]
-\end{pspicture}
-%
-\begin{pspicture}(-3.5,-1.5)(3.5,3)
-\psdiffractionCircular[IIID,r=0.5e-3,f=10,d=4.1e-4,lambda=632,twoHole]
-\end{pspicture}
-\end{lstlisting}
-
-
-
-\section{Diffraction par un trou triangulaire équilatéral}
-Le triangle équilatéral est défini par sa hauteur \texttt{[h]} en m. Pour le
-triangle, on peut obtenir la figure en niveaux de gris avec l'option
-\texttt{[colorMode=0]}. L'étude théorique de cette diffraction a été faite par
-\textsc{Airy}, on la trouve dans le livre d'Henri \textsc{Bouasse} sur la
-diffraction, pages 114 et 115.
-
-
-\begin{center}
-\begin{pspicture}(-1,-1)(1,1)
-\pspolygon*(0,0)(1;150)(1;210)
-\pcline{|-|}(-0.732,-1)(0,-1)
-\Aput{$h$}
-\end{pspicture}
-\end{center}
-
-\makebox[\linewidth]{%
-\begin{pspicture}(-3,-3)(3,2.5)
-\psdiffractionTriangle[f=10,h=1e-3,lambda=515,contrast=38]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-3)(3,2.5)
-\psdiffractionTriangle[f=10,h=1e-3,colorMode=1,contrast=38,lambda=515]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-3)(3,2.5)
-\psdiffractionTriangle[f=10,h=1e-3,colorMode=0,contrast=38,lambda=515]
-\end{pspicture}}
-
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3,-3)(3,2.5)
-\psdiffractionTriangle[f=10,h=1e-3,lambda=515,contrast=38]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-3)(3,2.5)
-\psdiffractionTriangle[f=10,h=1e-3,colorMode=1,contrast=38,lambda=515]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-3)(3,2.5)
-\psdiffractionTriangle[f=10,h=1e-3,colorMode=0,contrast=38,lambda=515]
-\end{pspicture}
-\end{lstlisting}
-
-
-\makebox[\linewidth]{%
-\begin{pspicture}(-3,-2)(3,3.5)
-\psdiffractionTriangle[IIID,f=10,h=1e-3,lambda=515,contrast=38]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-2)(3,3.5)
-\psdiffractionTriangle[IIID,f=10,h=1e-3,colorMode=1,contrast=38,lambda=515]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-2)(3,3.5)
-\psdiffractionTriangle[IIID,f=10,h=1e-3,colorMode=0,contrast=38,lambda=515]
-\end{pspicture}}
-
-\begin{lstlisting}[style=example]
-\begin{pspicture}(-3,-2)(3,3.5)
-\psdiffractionTriangle[IIID,f=10,h=1e-3,lambda=515,contrast=38]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-2)(3,3.5)
-\psdiffractionTriangle[IIID,f=10,h=1e-3,colorMode=1,contrast=38,lambda=515]
-\end{pspicture}
-\quad
-\begin{pspicture}(-3,-2)(3,3.5)
-\psdiffractionTriangle[IIID,f=10,h=1e-3,colorMode=0,contrast=38,lambda=515]
-\end{pspicture}
-\end{lstlisting}
-
-
-
-
-
-%\section{Credits}
-
-
-\bgroup
-\nocite{*}
-\raggedright
-\bibliographystyle{plain}
-\bibliography{pst-diffraction-doc}
-\egroup
-
-
-\end{document}
diff --git a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction.tex b/graphics/pstricks/contrib/pst-diffraction/tex/pst-diffraction.tex
index 1c653b3770..2ff137b0a8 100644
--- a/graphics/pstricks/contrib/pst-diffraction/pst-diffraction.tex
+++ b/graphics/pstricks/contrib/pst-diffraction/tex/pst-diffraction.tex
@@ -5,8 +5,8 @@
%%
%% Package `pst-diffraction.tex'
%%
-%% Manuel Luque <ml@pstricks.de>
-%% Herbert Voss <hv@pstricks.de>
+%% Manuel Luque <ml@texnik.de>
+%% Herbert Voss <hvoss@tug.org>
%%
%% with contributions of Julien Cubizolles
%%
@@ -21,12 +21,12 @@
\csname PSTDiffractionLoaded\endcsname
\let\PSTDiffractionLoaded\endinput
% Require PSTricks
-\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
+\ifx\PSTricksLoaded\endinput\else \input pstricks.tex\fi
\ifx\PSTThreeDplotLoaded\endinput\else\input pst-3dplot.tex\fi
-\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi
+\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey.tex \fi
%
-\def\fileversion{2.03}%
-\def\filedate{2008/09/03}%
+\def\fileversion{2.06a}
+\def\filedate{2024/07/15}
\message{`PST-diffraction v\fileversion, \filedate\space (ML,hv)}%
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
\pst@addfams{pst-diff}
@@ -40,7 +40,7 @@
\define@key[psset]{pst-diff}{s}{\def\psk@Diffraction@Slit@s{#1 }} % distance entre les fentes
\define@key[psset]{pst-diff}{lambda}{\pst@checknum{#1}\psk@Diffraction@Slit@Lambda }% en nm
\define@key[psset]{pst-diff}{f}{\pst@checknum{#1}\psk@Diffraction@Slit@F }% focus en m
-\define@key[psset]{pst-diff}{gamma}{\pst@checknum{#1}\psk@Diffraction@gamma@G }
+%\define@key[psset]{pst-diff}{gamma}{\pst@checknum{#1}\psk@Diffraction@gamma@G }
\define@key[psset]{pst-diff}{pixel}{\pst@checknum{#1}\psk@Diffraction@Slit@pixel }
\define@key[psset]{pst-diff}{colorMode}{\pst@getint{#1}\psk@Diffraction@colorMode }
% 0 black and white inverse
@@ -65,7 +65,8 @@
\psset[pst-diff]{a=0.2e-3,f=5,k=1,r=1e-3,
d=6e-3,s=12e-3,h=0.5e-3,
lambda=650,pixel=0.5,
- contrast=38,gamma=0.8,twoHole=false,twoSlit=false,colorMode=3, scale=1,
+ contrast=38,%gamma=0.8,
+ twoHole=false,twoSlit=false,colorMode=3, scale=1,
IIID=false, showFunc=false}
%
% load the pstricks-add.pro only, if not already done
@@ -82,7 +83,7 @@
/focus \psk@Diffraction@Slit@F def
/widthSlit \psk@Diffraction@Slit@A def
/heightSlit \psk@Diffraction@Slit@k widthSlit mul def
- /Gamma \psk@Diffraction@gamma@G def
+ %/Gamma \psk@Diffraction@gamma@G def
/pixel \psk@Diffraction@Slit@pixel def
/SlitSeparation \psk@Diffraction@Slit@s def
\psk@Diffraction@Slit@Lambda tx@addDict begin wavelengthToRGB Red Green Blue end
@@ -94,7 +95,7 @@
/bornexpt 1 widthSlit div focus mul ondeLongueur mul 2845 mul def
/borneypt 1 heightSlit div focus mul ondeLongueur mul 2845 mul def
\ifPst@Diffraction@IIID
- \psk@ThreeDplot@zMax dup \tx@ScreenCoor pop /zScale ED
+ \psk@ThreeDplot@zMax\space dup \tx@ScreenCoor pop /zScale ED
tx@3DPlotDict begin \IIIDplot@variables end
\fi
% Les calculs commencent...
@@ -162,7 +163,7 @@
\addto@pscode{%
% les dimensions sont en mètres
/focus \psk@Diffraction@Slit@F def
- /Gamma \psk@Diffraction@gamma@G def
+ %/Gamma \psk@Diffraction@gamma@G def
/pixel \psk@Diffraction@Slit@pixel def
/contrast 1e\psk@Diffraction@Slit@contrast def
/r \psk@Diffraction@Circular@r def
@@ -170,7 +171,7 @@
\psk@Diffraction@Slit@Lambda tx@addDict begin wavelengthToRGB Red Green Blue end
/Blue ED /Green ED /Red ED
\ifPst@Diffraction@IIID
- \psk@ThreeDplot@zMax dup \tx@ScreenCoor pop /zScale ED
+ \psk@ThreeDplot@zMax\space dup \tx@ScreenCoor pop /zScale ED
tx@3DPlotDict begin \IIIDplot@variables end
\fi
% 0 0 translate
@@ -253,7 +254,8 @@
/y { yPts 2845 div } bind def
/R { x dup mul y dup mul add sqrt } bind def % R en m
/m Coeff R mul def
- 1 1e38 m J1Card Facteur x mul cos dup mul mul neg exp sub
+ % 1 1e38 m J1Card Facteur x mul cos dup mul mul neg exp sub
+ 1 contrast m J1Card Facteur x mul cos dup mul mul neg exp sub % fix by Keno Wehr
dup /intensity ED
dup dup
Red mul 3 -1 roll
@@ -283,7 +285,7 @@
\ifPst@Diffraction@IIID \else
newpath
R_limite neg %1.5 mul
- cm dup moveto
+ cm dup moveto
R_limite 2 mul cm 0 rlineto
0 R_limite 2 mul cm rlineto
R_limite neg 2 mul cm 0 rlineto
@@ -294,7 +296,8 @@
R_limite -0.001 0 {
/Radius exch def
/m Coeff Radius 0.01 mul mul def
- 1 1e38 m J1Card neg exp sub
+% 1 1e38 m J1Card neg exp sub
+ 1 contrast m J1Card neg exp sub % fix by keno wehr
dup /intensity ED
dup dup
Red mul 3 -1 roll % R
@@ -396,7 +399,7 @@
% les dimensions sont en mètres
/f \psk@Diffraction@Slit@F def
/h \psk@Diffraction@Triangle@h def
- /Gamma \psk@Diffraction@gamma@G def
+ %/Gamma \psk@Diffraction@gamma@G def
/L { \psk@Diffraction@Slit@Lambda 1e-9 mul} bind def % longueur d'onde en m
/pixel \psk@Diffraction@Slit@pixel def
/k { TwoPi f L mul div } bind def
@@ -408,7 +411,7 @@
/bornexpt 1 h div f mul L mul 2845 mul def
/borneypt 1 h div f mul L mul 2845 mul def
\ifPst@Diffraction@IIID
- \psk@ThreeDplot@zMax dup \tx@ScreenCoor pop /zScale ED
+ \psk@ThreeDplot@zMax\space dup \tx@ScreenCoor pop /zScale ED
tx@3DPlotDict begin \IIIDplot@variables end
\fi
/P {
diff --git a/graphics/pstricks/contrib/pst-mirror/Changes b/graphics/pstricks/contrib/pst-mirror/Changes
index 05f40ce5c6..b691f4d2c4 100644
--- a/graphics/pstricks/contrib/pst-mirror/Changes
+++ b/graphics/pstricks/contrib/pst-mirror/Changes
@@ -1,4 +1,5 @@
..... pst-mirror.tex
+1.02a 2024-05-17 - use only free images for the documentation
1.02 2021-09-14 - fix for fontname on PS level
1.01 2014-02-17 - small changes to the polygon macro
- make \pstDie an object
diff --git a/graphics/pstricks/contrib/pst-mirror/README b/graphics/pstricks/contrib/pst-mirror/README
index 44d352a8e4..2ad0a4036b 100644
--- a/graphics/pstricks/contrib/pst-mirror/README
+++ b/graphics/pstricks/contrib/pst-mirror/README
@@ -7,6 +7,7 @@ For more information see the documentation of your LATEX distribution
on installing packages into your local TeX system.
PSTricks is PostScript Tricks, the documentation cannot be run
-with pdftex, use the sequence latex->dvips->ps2pdf or xelatex.
+with pdftex, use the sequence latex->dvips->ps2pdf or xelatex
+or lualatex.
hvoss@tug.org \ No newline at end of file
diff --git a/graphics/pstricks/contrib/pst-mirror/doc/createEPS/test.pdf b/graphics/pstricks/contrib/pst-mirror/doc/createEPS/test.pdf
index 4cb24970af..240bcaa044 100644
--- a/graphics/pstricks/contrib/pst-mirror/doc/createEPS/test.pdf
+++ b/graphics/pstricks/contrib/pst-mirror/doc/createEPS/test.pdf
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-mirror/doc/createEPS/test.tex b/graphics/pstricks/contrib/pst-mirror/doc/createEPS/test.tex
index 516a56c5b8..30b54eec56 100644
--- a/graphics/pstricks/contrib/pst-mirror/doc/createEPS/test.tex
+++ b/graphics/pstricks/contrib/pst-mirror/doc/createEPS/test.tex
@@ -8,4 +8,14 @@
\psset{Rayon=5}
\pstSphereImage[normale=0 0,scale=3](30,0,0){xc.eps}
\end{pspicture}
+
+
+
+\begin{pspicture}(-5,-5)(5,5)
+\pscircle[linecolor=blue!50]{!5 2 sqrt div}
+\psset{Rayon=5}
+\pstSphereImage[normale=0 0,scale=5](30,10,0){tiger-c.eps}
+\end{pspicture}
+
+
\end{document}
diff --git a/graphics/pstricks/contrib/pst-mirror/doc/createEPS/tiger-b.eps b/graphics/pstricks/contrib/pst-mirror/doc/createEPS/tiger-b.eps
new file mode 100644
index 0000000000..7549ff14b5
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-mirror/doc/createEPS/tiger-b.eps
@@ -0,0 +1,7102 @@
+%!PS-Adobe-3.0
+%%Title: flattened PostScript generated from file: tiger.eps
+%%Creator: pstoedit
+%%BoundingBox: (atend)
+%%Pages: (atend)
+%%EndComments
+%%BeginProlog
+/setPageSize { pop pop } def
+/ntranslate { neg exch neg exch translate } def
+/p2esetcolorname { pop } def
+/setshowparams { pop pop pop} def
+/awidthshowhex { dup length 0 gt { dup /ASCIIHexDecode filter exch length 2 div cvi string readstring pop } if awidthshow } def
+/awidthshowhexwithglyphs { true { pop awidthshowhex } { { glyphshow } forall pop } ifelse } def
+/backendconstraints { pop pop } def
+%%>>> /pstoedit.newfont { 80 string cvs findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def dup 80 string cvs /FontName exch def currentdict end definefont pop } def
+/imagestring 1 string def
+%%EndProlog
+%%BeginSetup
+% pstoedit.textastext pstoedit.doflatten backendconstraints
+0 0 backendconstraints
+%%EndSetup
+%%Page: 1 1
+6 28.3464567 mul 586 div dup scale 132 -415 add 2 div neg 752 166 add 2 div neg translate
+gsave %{
+ save %{
+gsave %{
+
+
+% 1 pathnumber
+% filledpath
+ 792 612 setPageSize
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 64.25 487.75 moveto
+ 64.25 487.75 64.4219 485.203 65.25 484.75 curveto
+ 66.2344 485.246 84.3359 538.129 107.25 535.75 curveto
+ 107.25 535.75 87.3555 543.75 64.25 487.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 2 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 64.25 487.75 moveto
+ 64.25 487.75 64.4219 485.203 65.25 484.75 curveto
+ 66.2344 485.246 84.3359 538.129 107.25 535.75 curveto
+ 107.25 535.75 87.3555 543.75 64.25 487.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 3 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 60.25 490.75 moveto
+ 60.25 490.75 61.2539 488.613 62.25 488.75 curveto
+ 62.9453 489.27 61.9766 545.156 84.25 550.75 curveto
+ 84.25 550.75 62.9023 551.469 60.25 490.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 4 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 60.25 490.75 moveto
+ 60.25 490.75 61.2539 488.613 62.25 488.75 curveto
+ 62.9453 489.27 61.9766 545.156 84.25 550.75 curveto
+ 84.25 550.75 62.9023 551.469 60.25 490.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 5 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 30.25 443.75 moveto
+ 30.25 443.75 28.6133 442.996 29.25 442.75 curveto
+ 29.6484 441.504 83.7383 455.586 94.25 435.75 curveto
+ 94.25 435.75 90.0938 456.172 30.25 443.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 6 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 30.25 443.75 moveto
+ 30.25 443.75 28.6133 442.996 29.25 442.75 curveto
+ 29.6484 441.504 83.7383 455.586 94.25 435.75 curveto
+ 94.25 435.75 90.0938 456.172 30.25 443.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 7 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 33.25 432.75 moveto
+ 33.25 432.75 31.4609 432.383 31.25 431.75 curveto
+ 31.9727 430.645 87.7461 426.969 91.25 404.75 curveto
+ 91.25 404.75 93.9609 425.52 33.25 432.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 8 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 33.25 432.75 moveto
+ 33.25 432.75 31.4609 432.383 31.25 431.75 curveto
+ 31.9727 430.645 87.7461 426.969 91.25 404.75 curveto
+ 91.25 404.75 93.9609 425.52 33.25 432.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 9 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 38.25 438.75 moveto
+ 38.25 438.75 36.1797 438.168 36.25 437.75 curveto
+ 36.9414 436.523 92.6523 441.02 99.25 419.75 curveto
+ 99.25 419.75 99.0117 440.492 38.25 438.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 10 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 38.25 438.75 moveto
+ 38.25 438.75 36.1797 438.168 36.25 437.75 curveto
+ 36.9414 436.523 92.6523 441.02 99.25 419.75 curveto
+ 99.25 419.75 99.0117 440.492 38.25 438.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 11 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 50.25 458.75 moveto
+ 50.25 458.75 48.4727 457.41 49.25 456.75 curveto
+ 49.875 456.262 97.9961 484.703 113.25 467.75 curveto
+ 113.25 467.75 103.941 487.012 50.25 458.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 12 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 50.25 458.75 moveto
+ 50.25 458.75 48.4727 457.41 49.25 456.75 curveto
+ 49.875 456.262 97.9961 484.703 113.25 467.75 curveto
+ 113.25 467.75 103.941 487.012 50.25 458.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 13 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 58.25 454.75 moveto
+ 58.25 454.75 56.6094 452.973 57.25 452.75 curveto
+ 57.875 451.672 108.902 474.484 122.25 456.75 curveto
+ 122.25 456.75 115.07 476.109 58.25 454.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 14 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 58.25 454.75 moveto
+ 58.25 454.75 56.6094 452.973 57.25 452.75 curveto
+ 57.875 451.672 108.902 474.484 122.25 456.75 curveto
+ 122.25 456.75 115.07 476.109 58.25 454.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 15 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 61.25 449.75 moveto
+ 61.25 449.75 59.3008 448.723 60.25 447.75 curveto
+ 60.3789 447.266 114.039 462.91 125.25 442.75 curveto
+ 125.25 442.75 120.371 463.676 61.25 449.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 16 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 61.25 449.75 moveto
+ 61.25 449.75 59.3008 448.723 60.25 447.75 curveto
+ 60.3789 447.266 114.039 462.91 125.25 442.75 curveto
+ 125.25 442.75 120.371 463.676 61.25 449.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 17 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 49.25 448.75 moveto
+ 49.25 448.75 48.0273 447.473 49.25 446.75 curveto
+ 49.5703 446.516 93.6445 480.887 111.25 466.75 curveto
+ 111.25 466.75 99.25 483.941 49.25 448.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 18 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 49.25 448.75 moveto
+ 49.25 448.75 48.0273 447.473 49.25 446.75 curveto
+ 49.5703 446.516 93.6445 480.887 111.25 466.75 curveto
+ 111.25 466.75 99.25 483.941 49.25 448.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 19 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 71.25 480.75 moveto
+ 71.25 480.75 70.3594 479.02 71.25 478.75 curveto
+ 72.1211 478.578 103.578 524.781 124.25 516.75 curveto
+ 124.25 516.75 107.98 529.398 71.25 480.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 20 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 71.25 480.75 moveto
+ 71.25 480.75 70.3594 479.02 71.25 478.75 curveto
+ 72.1211 478.578 103.578 524.781 124.25 516.75 curveto
+ 124.25 516.75 107.98 529.398 71.25 480.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 21 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 70.25 473.75 moveto
+ 70.25 473.75 69.1836 471.531 70.25 470.75 curveto
+ 70.8086 470.723 111.492 509.051 130.25 496.75 curveto
+ 130.25 496.75 116.785 512.613 70.25 473.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 22 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 70.25 473.75 moveto
+ 70.25 473.75 69.1836 471.531 70.25 470.75 curveto
+ 70.8086 470.723 111.492 509.051 130.25 496.75 curveto
+ 130.25 496.75 116.785 512.613 70.25 473.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 23 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 70.25 468.75 moveto
+ 70.25 468.75 69.1484 466.832 70.25 466.75 curveto
+ 70.6914 465.875 114.766 500.246 132.25 485.75 curveto
+ 132.25 485.75 120.367 503.301 70.25 468.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 24 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.1892 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 70.25 468.75 moveto
+ 70.25 468.75 69.1484 466.832 70.25 466.75 curveto
+ 70.6914 465.875 114.766 500.246 132.25 485.75 curveto
+ 132.25 485.75 120.367 503.301 70.25 468.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 25 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 73.25 466.75 moveto
+ 72.2578 459.977 71.1719 452.75 69.25 449.75 curveto
+ 69.25 449.75 73.2188 435.68 63.25 420.75 curveto
+ 63.25 420.75 63.9805 413.238 62.25 409.75 curveto
+ 62.25 409.75 57.8203 400.48 52.25 399.75 curveto
+ 48.2695 398.887 38.6719 395.512 28.25 393.75 curveto
+ 28.25 393.75 8.98047 378.48 12.25 364.75 curveto
+ 12.25 364.75 12.9414 346.359 17.25 344.75 curveto
+ 17.25 344.75 4.14063 356.918 14.25 338.75 curveto
+ 19.25 317.75 lineto
+ 19.25 317.75 -8.62109 341.52 8.25 321.75 curveto
+ 19.25 292.75 lineto
+ 19.25 292.75 -2.01953 312.918 6.25 303.75 curveto
+ 9.25 293.75 lineto
+ 9.25 293.75 -38.1016 323.918 -3.75 291.75 curveto
+ -3.75 291.75 -13.0195 295.32 -17.75 291.75 curveto
+ -17.75 291.75 -25.3398 293.559 -24.75 291.75 curveto
+ -24.75 291.75 -1.57813 280.359 2.25 259.75 curveto
+ 2.25 259.75 -6.85938 271.117 -3.75 258.75 curveto
+ -3.75 246.75 lineto
+ -3.75 246.75 -8.17969 270.238 -7.75 228.75 curveto
+ -7.75 228.75 -28.8594 248.68 -15.75 225.75 curveto
+ -15.75 207.75 lineto
+ -15.75 207.75 -32.8203 225.359 -25.75 211.75 curveto
+ -25.75 211.75 -36.7813 220.957 -32.75 203.75 curveto
+ -32.75 203.75 -31.5 192.801 -36.75 204.75 curveto
+ -36.75 204.75 -53.9414 238.777 -47.75 209.75 curveto
+ -47.75 209.75 -46.461 188.84 -51.75 204.75 curveto
+ -51.75 204.75 -52.1797 193.68 -62.75 185.75 curveto
+ -62.75 185.75 -60.9805 241.641 -74.75 201.75 curveto
+ -79.75 183.75 lineto
+ -79.75 183.75 -82.5391 194.117 -81.75 199.75 curveto
+ -81.75 199.75 -98.3789 217.879 -90.75 190.75 curveto
+ -90.75 190.75 -107.621 216.117 -103.75 201.75 curveto
+ -103.75 201.75 -95.7383 184.0 -97.75 178.75 curveto
+ -97.75 178.75 -115.98 217.0 -117.75 218.75 curveto
+ -117.75 218.75 -115.102 172.117 -126.75 211.75 curveto
+ -126.75 211.75 -133.141 198.52 -129.75 193.75 curveto
+ -129.75 193.75 -138.859 202.48 -137.75 205.75 curveto
+ -137.75 205.75 -143.039 215.02 -145.75 199.75 curveto
+ -145.75 199.75 -148.102 189.719 -149.75 192.75 curveto
+ -149.75 192.75 -154.262 166.836 -155.75 191.75 curveto
+ -155.75 191.75 -157.34 206.879 -149.75 219.75 curveto
+ -149.75 219.75 -150.301 223.16 -146.75 227.75 curveto
+ -146.75 227.75 -162.18 203.801 -154.75 235.75 curveto
+ -154.75 235.75 -166.582 226.68 -167.75 226.75 curveto
+ -167.75 226.75 -152.941 252.199 -162.75 246.75 curveto
+ -162.75 246.75 -156.898 258.359 -176.75 244.75 curveto
+ -176.75 244.75 -159.102 262.758 -178.75 251.75 curveto
+ -178.75 251.75 -187.262 245.16 -178.75 255.75 curveto
+ -178.75 255.75 -163.059 273.758 -187.75 253.75 curveto
+ -187.75 253.75 -200.02 235.918 -200.75 232.75 curveto
+ -200.75 232.75 -189.902 264.957 -184.75 267.75 curveto
+ -184.75 267.75 -194.301 308.078 -239.75 290.75 curveto
+ -239.75 290.75 -247.102 272.0 -251.75 291.75 curveto
+ -251.75 291.75 -266.02 299.277 -278.75 268.75 curveto
+ -278.75 268.75 -282.742 283.879 -281.75 286.75 curveto
+ -281.75 286.75 -289.34 285.641 -288.75 286.75 curveto
+ -288.75 286.75 -302.98 282.117 -304.75 282.75 curveto
+ -304.75 282.75 -311.781 275.52 -311.75 279.75 curveto
+ -311.75 279.75 -322.34 276.398 -319.75 280.75 curveto
+ -319.75 280.75 -329.82 263.199 -330.75 258.75 curveto
+ -332.75 274.75 lineto
+ -334.75 271.75 lineto
+ -334.75 271.75 -336.859 279.918 -335.75 280.75 curveto
+ -335.102 282.559 -357.98 273.758 -363.75 250.75 curveto
+ -365.75 241.75 lineto
+ -365.75 241.75 -372.063 257.918 -370.75 262.75 curveto
+ -370.75 262.75 -376.02 261.438 -376.75 256.75 curveto
+ -376.75 256.75 -380.859 282.117 -375.75 288.75 curveto
+ -375.75 288.75 -380.422 289.598 -381.75 285.75 curveto
+ -381.75 293.75 lineto
+ -381.75 293.75 -389.66 292.68 -389.75 295.75 curveto
+ -389.75 295.75 -394.5 299.719 -396.75 294.75 curveto
+ -396.75 294.75 -383.063 333.16 -403.75 311.75 curveto
+ -403.75 311.75 -411.223 300.16 -407.75 320.75 curveto
+ -403.301 341.52 -398.902 343.277 -403.75 343.75 curveto
+ -403.75 343.75 -405.063 347.68 -402.75 349.75 curveto
+ -400.66 351.199 -403.75 349.75 -403.75 349.75 curveto
+ -403.75 349.75 -409.461 345.039 -403.75 368.75 curveto
+ -403.75 368.75 -410.781 367.48 -397.75 399.75 curveto
+ -397.75 399.75 -400.66 402.238 -396.75 411.75 curveto
+ -396.75 411.75 -405.063 406.641 -407.75 408.75 curveto
+ -407.75 408.75 -407.699 410.16 -403.75 414.75 curveto
+ -403.75 414.75 -380.422 474.84 -402.75 450.75 curveto
+ -402.75 450.75 -415.895 435.734 -408.75 460.75 curveto
+ -408.75 460.75 -398.836 487.227 -399.75 491.75 curveto
+ 73.25 466.75 lineto
+ closepath
+fill
+grestore %}
+
+
+% 26 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 73.25 466.75 moveto
+ 72.2578 459.977 71.1719 452.75 69.25 449.75 curveto
+ 69.25 449.75 73.2188 435.68 63.25 420.75 curveto
+ 63.25 420.75 63.9805 413.238 62.25 409.75 curveto
+ 62.25 409.75 57.8203 400.48 52.25 399.75 curveto
+ 48.2695 398.887 38.6719 395.512 28.25 393.75 curveto
+ 28.25 393.75 8.98047 378.48 12.25 364.75 curveto
+ 12.25 364.75 12.9414 346.359 17.25 344.75 curveto
+ 17.25 344.75 4.14063 356.918 14.25 338.75 curveto
+ 19.25 317.75 lineto
+ 19.25 317.75 -8.62109 341.52 8.25 321.75 curveto
+ 19.25 292.75 lineto
+ 19.25 292.75 -2.01953 312.918 6.25 303.75 curveto
+ 9.25 293.75 lineto
+ 9.25 293.75 -38.1016 323.918 -3.75 291.75 curveto
+ -3.75 291.75 -13.0195 295.32 -17.75 291.75 curveto
+ -17.75 291.75 -25.3398 293.559 -24.75 291.75 curveto
+ -24.75 291.75 -1.57813 280.359 2.25 259.75 curveto
+ 2.25 259.75 -6.85938 271.117 -3.75 258.75 curveto
+ -3.75 246.75 lineto
+ -3.75 246.75 -8.17969 270.238 -7.75 228.75 curveto
+ -7.75 228.75 -28.8594 248.68 -15.75 225.75 curveto
+ -15.75 207.75 lineto
+ -15.75 207.75 -32.8203 225.359 -25.75 211.75 curveto
+ -25.75 211.75 -36.7813 220.957 -32.75 203.75 curveto
+ -32.75 203.75 -31.5 192.801 -36.75 204.75 curveto
+ -36.75 204.75 -53.9414 238.777 -47.75 209.75 curveto
+ -47.75 209.75 -46.461 188.84 -51.75 204.75 curveto
+ -51.75 204.75 -52.1797 193.68 -62.75 185.75 curveto
+ -62.75 185.75 -60.9805 241.641 -74.75 201.75 curveto
+ -79.75 183.75 lineto
+ -79.75 183.75 -82.5391 194.117 -81.75 199.75 curveto
+ -81.75 199.75 -98.3789 217.879 -90.75 190.75 curveto
+ -90.75 190.75 -107.621 216.117 -103.75 201.75 curveto
+ -103.75 201.75 -95.7383 184.0 -97.75 178.75 curveto
+ -97.75 178.75 -115.98 217.0 -117.75 218.75 curveto
+ -117.75 218.75 -115.102 172.117 -126.75 211.75 curveto
+ -126.75 211.75 -133.141 198.52 -129.75 193.75 curveto
+ -129.75 193.75 -138.859 202.48 -137.75 205.75 curveto
+ -137.75 205.75 -143.039 215.02 -145.75 199.75 curveto
+ -145.75 199.75 -148.102 189.719 -149.75 192.75 curveto
+ -149.75 192.75 -154.262 166.836 -155.75 191.75 curveto
+ -155.75 191.75 -157.34 206.879 -149.75 219.75 curveto
+ -149.75 219.75 -150.301 223.16 -146.75 227.75 curveto
+ -146.75 227.75 -162.18 203.801 -154.75 235.75 curveto
+ -154.75 235.75 -166.582 226.68 -167.75 226.75 curveto
+ -167.75 226.75 -152.941 252.199 -162.75 246.75 curveto
+ -162.75 246.75 -156.898 258.359 -176.75 244.75 curveto
+ -176.75 244.75 -159.102 262.758 -178.75 251.75 curveto
+ -178.75 251.75 -187.262 245.16 -178.75 255.75 curveto
+ -178.75 255.75 -163.059 273.758 -187.75 253.75 curveto
+ -187.75 253.75 -200.02 235.918 -200.75 232.75 curveto
+ -200.75 232.75 -189.902 264.957 -184.75 267.75 curveto
+ -184.75 267.75 -194.301 308.078 -239.75 290.75 curveto
+ -239.75 290.75 -247.102 272.0 -251.75 291.75 curveto
+ -251.75 291.75 -266.02 299.277 -278.75 268.75 curveto
+ -278.75 268.75 -282.742 283.879 -281.75 286.75 curveto
+ -281.75 286.75 -289.34 285.641 -288.75 286.75 curveto
+ -288.75 286.75 -302.98 282.117 -304.75 282.75 curveto
+ -304.75 282.75 -311.781 275.52 -311.75 279.75 curveto
+ -311.75 279.75 -322.34 276.398 -319.75 280.75 curveto
+ -319.75 280.75 -329.82 263.199 -330.75 258.75 curveto
+ -332.75 274.75 lineto
+ -334.75 271.75 lineto
+ -334.75 271.75 -336.859 279.918 -335.75 280.75 curveto
+ -335.102 282.559 -357.98 273.758 -363.75 250.75 curveto
+ -365.75 241.75 lineto
+ -365.75 241.75 -372.063 257.918 -370.75 262.75 curveto
+ -370.75 262.75 -376.02 261.438 -376.75 256.75 curveto
+ -376.75 256.75 -380.859 282.117 -375.75 288.75 curveto
+ -375.75 288.75 -380.422 289.598 -381.75 285.75 curveto
+ -381.75 293.75 lineto
+ -381.75 293.75 -389.66 292.68 -389.75 295.75 curveto
+ -389.75 295.75 -394.5 299.719 -396.75 294.75 curveto
+ -396.75 294.75 -383.063 333.16 -403.75 311.75 curveto
+ -403.75 311.75 -411.223 300.16 -407.75 320.75 curveto
+ -403.301 341.52 -398.902 343.277 -403.75 343.75 curveto
+ -403.75 343.75 -405.063 347.68 -402.75 349.75 curveto
+ -400.66 351.199 -403.75 349.75 -403.75 349.75 curveto
+ -403.75 349.75 -409.461 345.039 -403.75 368.75 curveto
+ -403.75 368.75 -410.781 367.48 -397.75 399.75 curveto
+ -397.75 399.75 -400.66 402.238 -396.75 411.75 curveto
+ -396.75 411.75 -405.063 406.641 -407.75 408.75 curveto
+ -407.75 408.75 -407.699 410.16 -403.75 414.75 curveto
+ -403.75 414.75 -380.422 474.84 -402.75 450.75 curveto
+ -402.75 450.75 -415.895 435.734 -408.75 460.75 curveto
+ -408.75 460.75 -398.836 487.227 -399.75 491.75 curveto
+ 73.25 466.75 lineto
+ closepath
+stroke
+gsave %{
+
+
+% 27 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -399.75 491.75 moveto
+ -400.379 491.531 -402.805 490.297 -403.75 488.75 curveto
+ -403.75 488.75 -411.66 476.602 -405.75 496.75 curveto
+ -405.75 496.75 -395.82 528.52 -405.75 515.75 curveto
+ -405.75 515.75 -412.102 508.281 -408.75 522.75 curveto
+ -404.328 541.309 -401.75 548.75 -401.75 548.75 curveto
+ -401.75 548.75 -414.301 543.039 -384.75 586.75 curveto
+ -394.75 582.75 lineto
+ -394.75 582.75 -372.941 626.199 -348.75 631.75 curveto
+ -340.75 638.75 lineto
+ -340.75 638.75 -382.621 680.32 -368.75 720.75 curveto
+ -368.75 720.75 -361.063 726.52 -350.75 716.75 curveto
+ -350.75 716.75 -343.461 711.121 -336.75 712.75 curveto
+ -336.75 712.75 -302.98 711.559 -300.75 711.75 curveto
+ -298.582 711.559 -260.301 752.48 -187.75 732.75 curveto
+ -187.75 732.75 -182.422 730.922 -177.75 731.75 curveto
+ -177.75 731.75 -157.34 749.84 -103.75 724.75 curveto
+ -103.75 724.75 -92.6602 722.559 -90.75 722.75 curveto
+ -89.1406 722.559 -86.0586 722.559 -77.75 715.75 curveto
+ -68.461 708.48 -68.0195 707.602 -65.75 705.75 curveto
+ -65.75 705.75 -47.7813 693.519 -42.75 692.75 curveto
+ -42.75 692.75 -29.7383 685.602 -24.75 674.75 curveto
+ -20.75 673.75 lineto
+ -20.75 673.75 -19.1797 665.359 -18.75 663.75 curveto
+ -18.75 663.75 -13.4609 660.078 -12.75 653.75 curveto
+ -12.75 653.75 -2.89844 647.32 -3.75 642.75 curveto
+ -3.75 642.75 -1.57813 636.762 -0.75 631.75 curveto
+ -0.75 631.75 7.21875 626.199 6.25 622.75 curveto
+ 6.25 622.75 14.6992 607.719 13.25 599.75 curveto
+ 13.25 599.75 20.4219 600.68 23.25 597.75 curveto
+ 23.25 597.75 24.3789 592.762 26.25 592.75 curveto
+ 26.25 592.75 29.2188 591.0 26.25 586.75 curveto
+ 26.25 586.75 28.3398 583.52 29.25 581.75 curveto
+ 29.25 581.75 27.8984 578.68 32.25 572.75 curveto
+ 32.25 572.75 39.7813 551.84 37.25 545.75 curveto
+ 37.25 545.75 37.1406 540.84 40.25 538.75 curveto
+ 40.25 538.75 44.1797 539.52 35.25 526.75 curveto
+ 35.25 526.75 34.0586 525.0 37.25 522.75 curveto
+ 37.25 522.75 56.5 518.398 59.25 500.75 curveto
+ 59.25 500.75 74.1016 484.078 74.25 478.75 curveto
+ 74.1016 475.824 73.8008 472.363 73.25 467.75 curveto
+ 73.25 467.75 73.6602 458.117 43.25 456.75 curveto
+ 12.9414 456.359 -399.75 491.75 -399.75 491.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 28 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -399.75 491.75 moveto
+ -400.379 491.531 -402.805 490.297 -403.75 488.75 curveto
+ -403.75 488.75 -411.66 476.602 -405.75 496.75 curveto
+ -405.75 496.75 -395.82 528.52 -405.75 515.75 curveto
+ -405.75 515.75 -412.102 508.281 -408.75 522.75 curveto
+ -404.328 541.309 -401.75 548.75 -401.75 548.75 curveto
+ -401.75 548.75 -414.301 543.039 -384.75 586.75 curveto
+ -394.75 582.75 lineto
+ -394.75 582.75 -372.941 626.199 -348.75 631.75 curveto
+ -340.75 638.75 lineto
+ -340.75 638.75 -382.621 680.32 -368.75 720.75 curveto
+ -368.75 720.75 -361.063 726.52 -350.75 716.75 curveto
+ -350.75 716.75 -343.461 711.121 -336.75 712.75 curveto
+ -336.75 712.75 -302.98 711.559 -300.75 711.75 curveto
+ -298.582 711.559 -260.301 752.48 -187.75 732.75 curveto
+ -187.75 732.75 -182.422 730.922 -177.75 731.75 curveto
+ -177.75 731.75 -157.34 749.84 -103.75 724.75 curveto
+ -103.75 724.75 -92.6602 722.559 -90.75 722.75 curveto
+ -89.1406 722.559 -86.0586 722.559 -77.75 715.75 curveto
+ -68.461 708.48 -68.0195 707.602 -65.75 705.75 curveto
+ -65.75 705.75 -47.7813 693.519 -42.75 692.75 curveto
+ -42.75 692.75 -29.7383 685.602 -24.75 674.75 curveto
+ -20.75 673.75 lineto
+ -20.75 673.75 -19.1797 665.359 -18.75 663.75 curveto
+ -18.75 663.75 -13.4609 660.078 -12.75 653.75 curveto
+ -12.75 653.75 -2.89844 647.32 -3.75 642.75 curveto
+ -3.75 642.75 -1.57813 636.762 -0.75 631.75 curveto
+ -0.75 631.75 7.21875 626.199 6.25 622.75 curveto
+ 6.25 622.75 14.6992 607.719 13.25 599.75 curveto
+ 13.25 599.75 20.4219 600.68 23.25 597.75 curveto
+ 23.25 597.75 24.3789 592.762 26.25 592.75 curveto
+ 26.25 592.75 29.2188 591.0 26.25 586.75 curveto
+ 26.25 586.75 28.3398 583.52 29.25 581.75 curveto
+ 29.25 581.75 27.8984 578.68 32.25 572.75 curveto
+ 32.25 572.75 39.7813 551.84 37.25 545.75 curveto
+ 37.25 545.75 37.1406 540.84 40.25 538.75 curveto
+ 40.25 538.75 44.1797 539.52 35.25 526.75 curveto
+ 35.25 526.75 34.0586 525.0 37.25 522.75 curveto
+ 37.25 522.75 56.5 518.398 59.25 500.75 curveto
+ 59.25 500.75 74.1016 484.078 74.25 478.75 curveto
+ 74.1016 475.824 73.8008 472.363 73.25 467.75 curveto
+ 73.25 467.75 73.6602 458.117 43.25 456.75 curveto
+ 12.9414 456.359 -399.75 491.75 -399.75 491.75 curveto
+ closepath
+stroke
+
+
+% 29 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 57.25 466.75 moveto
+ 84.6602 510.48 69.25 448.75 69.25 448.75 curveto
+ 59.1406 410.598 -83.75 451.75 -83.75 451.75 curveto
+ -83.75 451.75 -269.102 485.398 -281.75 489.75 curveto
+ -293.742 494.199 -398.75 486.75 -398.75 486.75 curveto
+ -392.75 505.75 lineto
+ -321.02 556.68 -299.902 531.16 -284.75 535.75 curveto
+ -269.98 539.961 -272.621 529.398 -268.75 528.75 curveto
+ -265.582 527.641 -222.461 554.922 -215.75 553.75 curveto
+ -208.383 553.16 -180.504 579.285 -196.75 544.75 curveto
+ -214.543 506.961 -132.699 501.238 -113.75 513.75 curveto
+ -95.7383 525.879 -121.75 493.75 -121.75 493.75 curveto
+ -142.379 471.32 -104.75 489.75 -104.75 489.75 curveto
+ -66.6992 503.879 -40.3008 475.719 -36.75 474.75 curveto
+ -33.2617 473.961 -27.9805 470.441 -26.75 477.75 curveto
+ -26.2188 484.52 -17.9609 502.891 17.25 473.75 curveto
+ 38.8984 455.699 54.25 479.75 54.25 479.75 curveto
+ 57.25 466.75 lineto
+ closepath
+fill
+
+
+% 30 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.09 0.5 0.772 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -216.75 551.75 moveto
+ -209.82 551.238 -181.918 577.352 -198.75 542.75 curveto
+ -216.641 503.719 -134.141 499.32 -115.75 511.75 curveto
+ -97.1797 523.961 -123.75 491.75 -123.75 491.75 curveto
+ -143.82 469.398 -105.75 487.75 -105.75 487.75 curveto
+ -68.1406 501.961 -41.7383 473.801 -37.75 472.75 curveto
+ -34.6992 472.039 -29.418 468.52 -28.75 475.75 curveto
+ -27.6602 482.598 -19.543 500.785 15.25 471.75 curveto
+ 38.8203 452.957 53.25 476.75 53.25 476.75 curveto
+ 57.25 465.75 lineto
+ 84.6797 509.219 68.25 444.75 68.25 444.75 curveto
+ 58.418 407.238 -84.75 449.75 -84.75 449.75 curveto
+ -84.75 449.75 -270.539 483.48 -282.75 487.75 curveto
+ -295.18 492.281 -398.75 485.75 -398.75 485.75 curveto
+ -392.75 504.75 lineto
+ -321.582 555.398 -301.34 529.238 -286.75 533.75 curveto
+ -271.422 538.039 -274.063 527.48 -270.75 526.75 curveto
+ -267.02 525.719 -223.902 553.0 -216.75 551.75 curveto
+ closepath
+fill
+
+
+% 31 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.081 0.45 0.695 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -218.75 549.75 moveto
+ -211.262 549.32 -184.055 575.75 -199.75 540.75 curveto
+ -217.641 500.699 -135.582 497.398 -116.75 509.75 curveto
+ -98.6211 522.039 -124.75 489.75 -124.75 489.75 curveto
+ -145.262 467.48 -107.75 485.75 -107.75 485.75 curveto
+ -69.582 500.039 -43.1797 471.879 -39.75 470.75 curveto
+ -36.1406 470.117 -30.8594 466.598 -29.75 473.75 curveto
+ -29.1016 480.68 -21.1289 498.684 14.25 469.75 curveto
+ 38.7422 450.219 53.25 472.75 53.25 472.75 curveto
+ 57.25 463.75 lineto
+ 83.3789 506.641 67.25 441.75 67.25 441.75 curveto
+ 57.6992 403.879 -86.75 447.75 -86.75 447.75 curveto
+ -86.75 447.75 -271.98 481.559 -284.75 485.75 curveto
+ -296.621 490.359 -399.75 483.75 -399.75 483.75 curveto
+ -393.75 502.75 lineto
+ -322.141 554.121 -302.781 527.32 -287.75 531.75 curveto
+ -272.859 536.121 -275.5 525.559 -271.75 524.75 curveto
+ -268.461 523.797 -225.34 551.078 -218.75 549.75 curveto
+ closepath
+fill
+
+
+% 32 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.072 0.4 0.618 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -219.75 548.75 moveto
+ -212.699 547.398 -185.5 573.836 -201.75 538.75 curveto
+ -219.742 497.289 -136.434 495.871 -118.75 507.75 curveto
+ -100.063 520.121 -126.75 487.75 -126.75 487.75 curveto
+ -146.699 465.559 -108.75 483.75 -108.75 483.75 curveto
+ -71.0195 498.121 -44.6211 469.961 -40.75 468.75 curveto
+ -37.582 468.199 -32.3008 464.68 -31.75 471.75 curveto
+ -30.5391 478.758 -22.7109 496.578 12.25 467.75 curveto
+ 38.6602 447.48 53.25 469.75 53.25 469.75 curveto
+ 57.25 461.75 lineto
+ 81.1992 502.52 66.25 438.75 66.25 438.75 curveto
+ 56.9805 400.52 -87.75 445.75 -87.75 445.75 curveto
+ -87.75 445.75 -273.422 479.641 -285.75 483.75 curveto
+ -298.063 488.438 -399.75 481.75 -399.75 481.75 curveto
+ -393.75 501.75 lineto
+ -322.703 552.84 -304.223 525.398 -289.75 529.75 curveto
+ -274.301 534.199 -276.941 523.641 -273.75 522.75 curveto
+ -269.902 521.879 -226.781 549.16 -219.75 548.75 curveto
+ closepath
+fill
+
+
+% 33 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.063 0.35 0.54 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -220.75 546.75 moveto
+ -214.141 545.48 -187.496 572.156 -202.75 536.75 curveto
+ -221.184 493.559 -138.461 493.559 -119.75 505.75 curveto
+ -101.5 518.199 -127.75 485.75 -127.75 485.75 curveto
+ -148.141 463.637 -110.75 481.75 -110.75 481.75 curveto
+ -72.4609 496.199 -46.0625 468.039 -42.75 466.75 curveto
+ -39.0195 466.277 -33.7422 462.758 -32.75 469.75 curveto
+ -31.9805 476.84 -24.2969 494.473 11.25 466.75 curveto
+ 38.5781 444.738 52.25 466.75 52.25 466.75 curveto
+ 57.25 460.75 lineto
+ 79.0195 498.621 66.25 434.75 66.25 434.75 curveto
+ 56.2617 397.156 -88.75 444.75 -88.75 444.75 curveto
+ -88.75 444.75 -274.863 477.719 -286.75 481.75 curveto
+ -299.5 486.52 -400.75 479.75 -400.75 479.75 curveto
+ -394.75 500.75 lineto
+ -323.262 551.559 -305.66 523.48 -290.75 527.75 curveto
+ -275.742 532.277 -278.383 521.719 -274.75 520.75 curveto
+ -271.34 519.957 -228.223 547.238 -220.75 546.75 curveto
+ closepath
+fill
+
+
+% 34 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.054 0.3 0.463 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -222.75 544.75 moveto
+ -215.582 543.559 -187.02 569.355 -203.75 534.75 curveto
+ -225.262 492.078 -139.902 491.641 -121.75 503.75 curveto
+ -102.941 516.277 -129.75 483.75 -129.75 483.75 curveto
+ -149.582 461.719 -111.75 479.75 -111.75 479.75 curveto
+ -73.9023 494.277 -47.5 466.121 -43.75 464.75 curveto
+ -40.4609 464.359 -35.1797 460.84 -34.75 467.75 curveto
+ -33.4219 474.918 -25.8828 492.367 9.25 464.75 curveto
+ 38.5 442.0 52.25 462.75 52.25 462.75 curveto
+ 57.25 458.75 lineto
+ 77.0586 495.16 65.25 431.75 65.25 431.75 curveto
+ 55.5391 393.797 -90.75 442.75 -90.75 442.75 curveto
+ -90.75 442.75 -276.301 475.801 -288.75 479.75 curveto
+ -300.941 484.598 -400.75 477.75 -400.75 477.75 curveto
+ -394.75 498.75 lineto
+ -323.82 550.277 -307.102 521.559 -291.75 525.75 curveto
+ -277.184 530.359 -279.82 519.801 -276.75 518.75 curveto
+ -272.781 518.039 -229.66 545.32 -222.75 544.75 curveto
+ closepath
+fill
+
+
+% 35 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.045 0.25 0.386 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -223.75 542.75 moveto
+ -217.02 541.641 -188.043 567.227 -205.75 532.75 curveto
+ -228.023 488.84 -141.34 489.719 -122.75 501.75 curveto
+ -104.379 514.359 -130.75 481.75 -130.75 481.75 curveto
+ -151.02 459.797 -112.75 478.75 -112.75 478.75 curveto
+ -75.3398 492.359 -48.9414 464.199 -45.75 463.75 curveto
+ -41.9023 462.438 -36.6211 458.918 -35.75 465.75 curveto
+ -34.8594 473.0 -27.4648 490.266 8.25 462.75 curveto
+ 38.4219 439.258 51.25 459.75 51.25 459.75 curveto
+ 57.25 456.75 lineto
+ 74.8789 490.16 64.25 428.75 64.25 428.75 curveto
+ 54.8203 390.438 -91.75 440.75 -91.75 440.75 curveto
+ -91.75 440.75 -277.742 473.879 -289.75 478.75 curveto
+ -302.383 482.68 -401.75 475.75 -401.75 475.75 curveto
+ -395.75 497.75 lineto
+ -324.383 549.0 -308.543 519.637 -293.75 523.75 curveto
+ -278.621 528.441 -281.262 517.879 -277.75 516.75 curveto
+ -274.223 516.117 -231.102 543.398 -223.75 542.75 curveto
+ closepath
+fill
+
+
+% 36 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.036 0.2 0.309 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -225.75 540.75 moveto
+ -218.461 539.719 -188.273 564.66 -206.75 530.75 curveto
+ -231.223 487.359 -142.781 487.801 -124.75 499.75 curveto
+ -105.82 512.438 -131.75 479.75 -131.75 479.75 curveto
+ -152.461 457.879 -114.75 476.75 -114.75 476.75 curveto
+ -76.7813 490.438 -50.3789 462.277 -46.75 461.75 curveto
+ -43.3398 460.519 -38.0586 457.0 -36.75 463.75 curveto
+ -36.3008 471.078 -29.0508 488.16 7.25 460.75 curveto
+ 38.3398 436.52 51.25 456.75 51.25 456.75 curveto
+ 57.25 454.75 lineto
+ 73.1406 486.48 64.25 424.75 64.25 424.75 curveto
+ 54.1016 387.078 -93.75 438.75 -93.75 438.75 curveto
+ -93.75 438.75 -279.18 471.961 -291.75 476.75 curveto
+ -303.82 480.758 -401.75 474.75 -401.75 474.75 curveto
+ -395.75 496.75 lineto
+ -324.941 547.719 -309.98 517.719 -294.75 521.75 curveto
+ -280.063 526.519 -282.703 515.961 -278.75 514.75 curveto
+ -275.66 514.199 -232.543 541.48 -225.75 540.75 curveto
+ closepath
+fill
+
+
+% 37 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.027 0.15 0.231 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -226.75 538.75 moveto
+ -219.902 537.797 -189.715 562.742 -208.75 528.75 curveto
+ -232.66 485.438 -144.223 485.879 -125.75 497.75 curveto
+ -107.262 510.52 -133.75 477.75 -133.75 477.75 curveto
+ -153.902 455.957 -115.75 474.75 -115.75 474.75 curveto
+ -78.2188 488.52 -51.8203 460.359 -48.75 459.75 curveto
+ -44.7813 458.598 -39.5 455.078 -38.75 461.75 curveto
+ -37.7422 469.16 -30.6367 486.055 5.25002 458.75 curveto
+ 38.2617 433.777 50.25 452.75 50.25 452.75 curveto
+ 57.25 453.75 lineto
+ 72.2813 482.578 63.25 421.75 63.25 421.75 curveto
+ 53.3789 383.719 -94.75 436.75 -94.75 436.75 curveto
+ -94.75 436.75 -280.621 470.039 -292.75 474.75 curveto
+ -305.262 478.84 -402.75 472.75 -402.75 472.75 curveto
+ -396.75 495.75 lineto
+ -325.5 546.438 -311.422 515.797 -296.75 519.75 curveto
+ -281.5 524.598 -284.141 514.039 -280.75 512.75 curveto
+ -277.102 512.277 -233.98 539.559 -226.75 538.75 curveto
+ closepath
+fill
+
+
+% 38 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.018 0.1 0.154 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -228.75 536.75 moveto
+ -221.34 535.879 -191.582 561.055 -209.75 526.75 curveto
+ -234.102 482.199 -145.66 483.961 -126.75 496.75 curveto
+ -108.703 508.598 -134.75 475.75 -134.75 475.75 curveto
+ -155.34 454.039 -117.75 472.75 -117.75 472.75 curveto
+ -79.6602 486.598 -53.2617 458.438 -49.75 457.75 curveto
+ -46.2188 456.68 -40.9414 453.16 -39.75 459.75 curveto
+ -39.1797 467.238 -32.2188 483.949 4.25 456.75 curveto
+ 38.1797 431.039 50.25 449.75 50.25 449.75 curveto
+ 57.25 451.75 lineto
+ 71.6406 478.238 62.25 417.75 62.25 417.75 curveto
+ 52.6602 380.359 -96.75 434.75 -96.75 434.75 curveto
+ -96.75 434.75 -282.063 468.117 -294.75 472.75 curveto
+ -306.703 476.918 -402.75 470.75 -402.75 470.75 curveto
+ -397.75 493.75 lineto
+ -326.063 545.16 -312.859 513.879 -297.75 518.75 curveto
+ -282.941 522.68 -285.582 512.117 -281.75 510.75 curveto
+ -278.543 510.359 -235.422 537.641 -228.75 536.75 curveto
+ closepath
+fill
+
+
+% 39 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.009 0.05 0.077 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -229.75 534.75 moveto
+ -222.781 533.961 -194.207 559.746 -211.75 524.75 curveto
+ -234.66 478.078 -147.102 482.039 -128.75 494.75 curveto
+ -110.141 506.68 -136.75 473.75 -136.75 473.75 curveto
+ -156.781 452.117 -118.75 470.75 -118.75 470.75 curveto
+ -81.1016 484.68 -54.7031 456.52 -50.75 455.75 curveto
+ -47.6602 454.758 -42.3828 451.238 -41.75 458.75 curveto
+ -40.6211 465.32 -33.8047 481.844 2.25 454.75 curveto
+ 38.1016 428.297 50.25 446.75 50.25 446.75 curveto
+ 57.25 449.75 lineto
+ 71.4414 475.66 61.25 414.75 61.25 414.75 curveto
+ 51.9375 377.0 -97.75 432.75 -97.75 432.75 curveto
+ -97.75 432.75 -283.504 466.199 -295.75 470.75 curveto
+ -308.141 475.0 -403.75 468.75 -403.75 468.75 curveto
+ -397.75 492.75 lineto
+ -326.621 543.879 -314.301 511.957 -299.75 516.75 curveto
+ -284.383 520.758 -287.023 510.199 -283.75 509.75 curveto
+ -279.98 508.438 -236.859 535.719 -229.75 534.75 curveto
+ closepath
+fill
+
+
+% 40 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 57.25 448.75 moveto
+ 71.4609 472.641 61.25 411.75 61.25 411.75 curveto
+ 51.2188 373.641 -99.75 430.75 -99.75 430.75 curveto
+ -99.75 430.75 -284.941 464.281 -297.75 468.75 curveto
+ -309.582 473.078 -403.75 466.75 -403.75 466.75 curveto
+ -398.75 491.75 lineto
+ -327.18 542.602 -315.742 510.039 -300.75 514.75 curveto
+ -285.82 518.84 -288.461 508.281 -284.75 507.75 curveto
+ -281.422 506.52 -238.301 533.801 -231.75 532.75 curveto
+ -224.223 532.039 -196.48 558.227 -212.75 522.75 curveto
+ -237.23 470.762 -145.945 481.852 -129.75 492.75 curveto
+ -111.578 504.762 -137.75 471.75 -137.75 471.75 curveto
+ -158.219 450.199 -120.75 468.75 -120.75 468.75 curveto
+ -82.5391 482.762 -56.1406 454.598 -52.75 453.75 curveto
+ -49.1016 452.84 -43.8203 449.32 -42.75 456.75 curveto
+ -42.0586 463.398 -35.3867 479.742 1.25 452.75 curveto
+ 38.0195 425.559 49.25 442.75 49.25 442.75 curveto
+ 57.25 448.75 lineto
+ closepath
+fill
+
+
+% 41 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 11.25 415.75 moveto
+ 11.25 415.75 19.5391 402.68 -3.75 387.75 curveto
+ -3.75 387.75 -4.87891 386.617 15.25 390.75 curveto
+ 15.25 390.75 21.7383 393.438 23.25 404.75 curveto
+ 23.25 404.75 28.7813 409.719 34.25 415.75 curveto
+ 39.3398 422.039 11.25 415.75 11.25 415.75 curveto
+ closepath
+fill
+
+
+% 42 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -142.75 467.75 moveto
+ -142.75 467.75 -161.848 438.297 -160.75 432.75 curveto
+ -159.762 421.598 -159.539 411.039 -162.75 406.75 curveto
+ -166.582 402.238 -176.75 365.75 -176.75 365.75 curveto
+ -176.75 365.75 -175.82 364.398 -189.75 405.75 curveto
+ -189.75 405.75 -202.223 423.801 -179.75 443.75 curveto
+ -179.75 443.75 -141.5 475.719 -142.75 467.75 curveto
+ closepath
+fill
+
+
+% 43 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -10.75 385.75 moveto
+ -10.75 385.75 -22.6992 378.039 -6.75 343.75 curveto
+ -13.75 346.75 lineto
+ -13.75 346.75 -13.0195 334.039 -9.75 331.75 curveto
+ -17.75 334.75 lineto
+ -17.75 334.75 -22.6992 326.117 -18.75 320.75 curveto
+ -18.75 320.75 -36.7813 312.039 -35.75 304.75 curveto
+ -35.75 304.75 -42.9414 313.801 -38.75 320.75 curveto
+ -34.1406 327.879 -26.2188 323.48 -26.75 343.75 curveto
+ -17.75 339.75 lineto
+ -17.75 339.75 -23.5781 349.879 -23.75 356.75 curveto
+ -14.75 354.75 lineto
+ -14.75 354.75 -31.7969 383.516 -19.75 384.75 curveto
+ -13.4609 385.957 -10.75 385.75 -10.75 385.75 curveto
+ closepath
+fill
+
+
+% 44 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -45.75 367.75 moveto
+ -45.75 367.75 -49.1016 372.32 -45.75 371.75 curveto
+ -42.9414 370.559 -8.62109 354.277 -1.75 343.75 curveto
+ -1.75 343.75 -39.8594 370.559 -45.75 367.75 curveto
+ closepath
+fill
+
+
+% 45 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -57.75 358.75 moveto
+ -57.75 358.75 -60.5391 363.52 -57.75 362.75 curveto
+ -54.3789 361.758 -20.0586 345.48 -13.75 334.75 curveto
+ -13.75 334.75 -51.3008 361.758 -57.75 358.75 curveto
+ closepath
+fill
+
+
+% 46 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -71.75 375.75 moveto
+ -71.75 375.75 -75.0586 380.238 -71.75 379.75 curveto
+ -68.8984 378.48 -34.5781 362.199 -27.75 351.75 curveto
+ -27.75 351.75 -65.8203 378.48 -71.75 375.75 curveto
+ closepath
+fill
+
+
+% 47 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -46.75 327.75 moveto
+ -46.75 327.75 -46.461 334.039 -43.75 332.75 curveto
+ -40.3008 332.277 -0.699219 312.918 6.25 302.75 curveto
+ 6.25 302.75 -40.3008 330.52 -46.75 327.75 curveto
+ closepath
+fill
+
+
+% 48 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -47.75 339.75 moveto
+ -47.75 339.75 -49.1016 344.598 -45.75 343.75 curveto
+ -43.8203 343.719 -14.7813 330.957 -7.75 320.75 curveto
+ -7.75 320.75 -40.7383 344.16 -47.75 339.75 curveto
+ closepath
+fill
+
+
+% 49 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -31.75 286.75 moveto
+ -20.75 278.75 lineto
+ -20.75 278.75 -32.3789 286.957 -36.75 285.75 curveto
+ -36.75 285.75 -28.8594 273.32 -27.75 267.75 curveto
+ -27.75 267.75 -39.4219 281.68 -45.75 280.75 curveto
+ -45.75 280.75 -53.9414 280.801 -53.75 268.75 curveto
+ -53.75 268.75 -60.1016 280.359 -63.75 279.75 curveto
+ -63.75 279.75 -64.9414 272.879 -63.75 265.75 curveto
+ -63.75 265.75 -68.0195 273.758 -72.75 271.75 curveto
+ -72.75 271.75 -79.461 274.199 -78.75 261.75 curveto
+ -78.75 261.75 -78.5781 250.0 -77.75 246.75 curveto
+ -77.75 246.75 -83.8594 275.957 -86.75 276.75 curveto
+ -86.75 276.75 -95.3008 277.719 -100.75 267.75 curveto
+ -100.75 267.75 -96.1797 276.398 -101.75 273.75 curveto
+ -101.75 273.75 -113.34 272.438 -116.75 264.75 curveto
+ -116.75 264.75 -109.379 278.16 -115.75 274.75 curveto
+ -115.75 274.75 -123.02 274.641 -124.75 267.75 curveto
+ -124.75 267.75 -133.578 244.277 -135.75 242.75 curveto
+ -135.75 242.75 -127.422 266.277 -128.75 266.75 curveto
+ -128.75 266.75 -126.98 279.48 -132.75 262.75 curveto
+ -132.75 262.75 -129.18 278.598 -135.75 277.75 curveto
+ -141.5 276.84 -146.34 265.84 -155.75 268.75 curveto
+ -155.75 268.75 -166.141 262.32 -168.75 338.75 curveto
+ -31.75 286.75 lineto
+ closepath
+fill
+
+
+% 50 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -36.75 388.75 moveto
+ -36.75 388.75 -53.5 395.641 -97.75 388.75 curveto
+ -97.75 388.75 -105.422 388.598 -112.75 398.75 curveto
+ -120.379 407.957 -149.859 415.879 -156.75 413.75 curveto
+ -167.75 406.75 lineto
+ -168.75 405.75 lineto
+ -168.75 405.75 -181.98 393.879 -182.75 385.75 curveto
+ -182.859 377.16 -166.582 324.359 -155.75 306.75 curveto
+ -145.461 289.16 -134.898 275.52 -113.75 277.75 curveto
+ -113.75 277.75 -90.8984 282.559 -62.75 277.75 curveto
+ -62.75 277.75 -30.6211 279.918 -27.75 288.75 curveto
+ -24.461 297.52 -39.75 313.75 -39.75 313.75 curveto
+ -39.75 313.75 -44.6992 323.48 -43.75 339.75 curveto
+ -42.0586 355.16 -42.5 385.957 -36.75 388.75 curveto
+ closepath
+fill
+
+
+% 51 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.1 0.6 0.45 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -61.75 386.75 moveto
+ -70.6602 366.598 -37.75 294.75 -37.75 294.75 curveto
+ -35.8984 293.117 -52.0273 286.469 -62.75 288.75 curveto
+ -75.2188 292.063 -119.75 287.75 -119.75 287.75 curveto
+ -145.461 304.559 -159.75 353.75 -159.75 353.75 curveto
+ -159.75 353.75 -170.98 379.801 -151.75 383.75 curveto
+ -132.262 386.84 -61.75 386.75 -61.75 386.75 curveto
+ closepath
+fill
+
+
+% 52 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.3 0.8 0.65 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -58.75 352.75 moveto
+ -62.8438 366.922 -64.5859 379.902 -61.75 386.75 curveto
+ -61.75 386.75 -130.059 379.801 -142.75 402.75 curveto
+ -147.047 411.34 -163.281 377.598 -162.75 366.75 curveto
+ -162.75 366.75 -93.5391 351.199 -77.75 363.75 curveto
+ -58.75 352.75 lineto
+ closepath
+fill
+
+
+% 53 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.35 0.85 0.7 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -63.75 334.75 moveto
+ -63.75 334.75 -66.2617 327.0 -63.75 322.75 curveto
+ -63.75 322.75 -61.8594 321.719 -60.75 321.75 curveto
+ -60.75 321.75 -61.8594 317.32 -68.75 315.75 curveto
+ -68.75 315.75 -70.6602 310.719 -73.75 310.75 curveto
+ -75.9414 309.84 -81.2188 303.68 -85.75 304.75 curveto
+ -90.0195 306.32 -102.75 310.75 -102.75 310.75 curveto
+ -102.75 310.75 -108.5 314.238 -117.75 310.75 curveto
+ -117.75 310.75 -120.793 311.16 -121.75 315.75 curveto
+ -121.809 320.73 -125.219 324.801 -127.75 326.75 curveto
+ -129.621 329.199 -140.18 343.277 -138.75 343.75 curveto
+ -137.539 344.16 -63.75 334.75 -63.75 334.75 curveto
+ closepath
+fill
+gsave %{
+
+
+% 54 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.55 0.5 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -58.75 387.75 moveto
+ -58.75 387.75 -56.1406 363.52 -59.75 354.75 curveto
+ -63.1797 345.039 -62.3008 342.84 -61.75 338.75 curveto
+ -60.5391 334.039 -65.3789 323.039 -71.75 316.75 curveto
+ -84.75 314.75 lineto
+ -84.75 314.75 -101.461 318.641 -111.75 315.75 curveto
+ -111.75 315.75 -121.473 314.082 -124.75 330.75 curveto
+ -124.75 330.75 -130.5 337.559 -138.75 340.75 curveto
+ -146.34 343.719 -154.262 389.48 -149.75 398.75 curveto
+ -145.461 407.078 -129.621 411.918 -111.75 394.75 curveto
+ -94.4219 377.598 -92.2188 396.078 -58.75 387.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 55 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -58.75 387.75 moveto
+ -58.75 387.75 -56.1406 363.52 -59.75 354.75 curveto
+ -63.1797 345.039 -62.3008 342.84 -61.75 338.75 curveto
+ -60.5391 334.039 -65.3789 323.039 -71.75 316.75 curveto
+ -84.75 314.75 lineto
+ -84.75 314.75 -101.461 318.641 -111.75 315.75 curveto
+ -111.75 315.75 -121.473 314.082 -124.75 330.75 curveto
+ -124.75 330.75 -130.5 337.559 -138.75 340.75 curveto
+ -146.34 343.719 -154.262 389.48 -149.75 398.75 curveto
+ -145.461 407.078 -129.621 411.918 -111.75 394.75 curveto
+ -94.4219 377.598 -92.2188 396.078 -58.75 387.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 56 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -60.75 305.75 moveto
+ -60.75 305.75 -60.1016 308.078 -55.75 308.75 curveto
+ -55.75 308.75 -30.6211 312.48 -21.75 325.75 curveto
+ -21.75 325.75 -13.8984 332.277 -18.75 319.75 curveto
+ -18.75 319.75 -30.1797 297.078 -37.75 293.75 curveto
+ -37.75 293.75 -55.6992 289.598 -60.75 305.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 57 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -60.75 305.75 moveto
+ -60.75 305.75 -60.1016 308.078 -55.75 308.75 curveto
+ -55.75 308.75 -30.6211 312.48 -21.75 325.75 curveto
+ -21.75 325.75 -13.8984 332.277 -18.75 319.75 curveto
+ -18.75 319.75 -30.1797 297.078 -37.75 293.75 curveto
+ -37.75 293.75 -55.6992 289.598 -60.75 305.75 curveto
+ closepath
+stroke
+
+
+% 58 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.2 0.75 0.7 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -148.75 375.75 moveto
+ -149.641 384.945 -151.789 394.422 -149.75 398.75 curveto
+ -142.77 412.461 -124.098 406.535 -111.75 394.75 curveto
+ -94.4219 377.598 -92.2188 396.078 -58.75 387.75 curveto
+ -58.75 387.75 -57.3008 372.801 -57.75 361.75 curveto
+ -57.75 361.75 -99.2617 374.52 -99.75 368.75 curveto
+ -99.75 368.75 -101.898 371.879 -111.75 371.75 curveto
+ -122.141 371.879 -147.156 373.168 -148.75 375.75 curveto
+ closepath
+fill
+
+
+% 59 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 2.2 setlinewidth
+ 0.35 0.9 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -101.75 387.75 moveto
+ -101.75 387.75 -106.738 382.0 -102.75 371.75 curveto
+ -102.75 371.75 -86.9414 353.84 -88.75 338.75 curveto
+stroke
+gsave %{
+
+
+% 60 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -48.75 293.75 moveto
+ -48.75 293.75 -43.8203 308.078 -53.75 300.75 curveto
+ -53.75 300.75 -58.7813 298.398 -57.75 296.75 curveto
+ -56.1406 294.879 -49.9805 290.48 -48.75 293.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 61 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -48.75 293.75 moveto
+ -48.75 293.75 -43.8203 308.078 -53.75 300.75 curveto
+ -53.75 300.75 -58.7813 298.398 -57.75 296.75 curveto
+ -56.1406 294.879 -49.9805 290.48 -48.75 293.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 62 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -53.75 292.75 moveto
+ -53.75 292.75 -50.332 303.941 -57.75 297.75 curveto
+ -57.75 297.75 -62.9375 295.266 -60.75 294.75 curveto
+ -56.2266 293.383 -61.2422 290.566 -53.75 292.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 63 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -53.75 292.75 moveto
+ -53.75 292.75 -50.332 303.941 -57.75 297.75 curveto
+ -57.75 297.75 -62.9375 295.266 -60.75 294.75 curveto
+ -56.2266 293.383 -61.2422 290.566 -53.75 292.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 64 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -59.75 292.75 moveto
+ -59.75 292.75 -55.6133 303.941 -63.75 297.75 curveto
+ -63.75 297.75 -68.168 295.418 -66.75 294.75 curveto
+ -62.8281 293.383 -66.5234 290.566 -59.75 292.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 65 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -59.75 292.75 moveto
+ -59.75 292.75 -55.6133 303.941 -63.75 297.75 curveto
+ -63.75 297.75 -68.168 295.418 -66.75 294.75 curveto
+ -62.8281 293.383 -66.5234 290.566 -59.75 292.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 66 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -66.75 292.75 moveto
+ -66.75 292.75 -62.8711 303.723 -70.75 297.75 curveto
+ -70.75 297.75 -75.4375 295.172 -73.75 294.75 curveto
+ -70.5273 293.383 -73.7852 290.348 -66.75 292.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 67 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -66.75 292.75 moveto
+ -66.75 292.75 -62.8711 303.723 -70.75 297.75 curveto
+ -70.75 297.75 -75.4375 295.172 -73.75 294.75 curveto
+ -70.5273 293.383 -73.7852 290.348 -66.75 292.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 68 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -73.75 292.75 moveto
+ -73.75 292.75 -70.0 303.813 -77.75 297.75 curveto
+ -77.75 297.75 -81.9688 296.066 -80.75 294.75 curveto
+ -79.8555 293.25 -80.9141 290.434 -73.75 292.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 69 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -73.75 292.75 moveto
+ -73.75 292.75 -70.0 303.813 -77.75 297.75 curveto
+ -77.75 297.75 -81.9688 296.066 -80.75 294.75 curveto
+ -79.8555 293.25 -80.9141 290.434 -73.75 292.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 70 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -80.75 291.75 moveto
+ -80.75 291.75 -75.9414 305.438 -85.75 298.75 curveto
+ -85.75 298.75 -91.3398 296.199 -89.75 294.75 curveto
+ -88.6992 292.68 -90.0195 289.16 -80.75 291.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 71 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -80.75 291.75 moveto
+ -80.75 291.75 -75.9414 305.438 -85.75 298.75 curveto
+ -85.75 298.75 -91.3398 296.199 -89.75 294.75 curveto
+ -88.6992 292.68 -90.0195 289.16 -80.75 291.75 curveto
+ closepath
+stroke
+
+
+% 72 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 2.2 setlinewidth
+ 0.35 0.85 0.7 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -49.75 310.75 moveto
+ -49.75 310.75 -64.5 313.801 -70.75 310.75 curveto
+ -70.75 310.75 -77.6992 308.957 -78.75 309.75 curveto
+ -80.3398 309.84 -83.75 310.75 -83.75 310.75 curveto
+stroke
+
+
+% 73 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 2.2 setlinewidth
+ 0.35 0.85 0.7 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -87.75 300.75 moveto
+ -87.75 300.75 -100.578 316.0 -113.75 310.75 curveto
+ -121.496 308.328 -120.379 312.039 -121.75 314.75 curveto
+ -122.141 318.199 -122.359 322.82 -127.75 325.75 curveto
+stroke
+gsave %{
+
+
+% 74 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -106.75 318.75 moveto
+ -106.75 318.75 -101.898 330.52 -98.75 316.75 curveto
+ -95.7383 302.359 -92.2188 298.398 -90.75 295.75 curveto
+ -90.75 295.75 -90.461 289.598 -99.75 289.75 curveto
+ -99.75 289.75 -111.578 290.48 -111.75 293.75 curveto
+ -112.461 296.641 -110.699 309.398 -106.75 318.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 75 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -106.75 318.75 moveto
+ -106.75 318.75 -101.898 330.52 -98.75 316.75 curveto
+ -95.7383 302.359 -92.2188 298.398 -90.75 295.75 curveto
+ -90.75 295.75 -90.461 289.598 -99.75 289.75 curveto
+ -99.75 289.75 -111.578 290.48 -111.75 293.75 curveto
+ -112.461 296.641 -110.699 309.398 -106.75 318.75 curveto
+ closepath
+stroke
+
+
+% 76 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 2.2 setlinewidth
+ 0.35 0.85 0.7 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -121.75 310.75 moveto
+ -121.75 310.75 -125.66 313.359 -128.75 311.75 curveto
+stroke
+
+
+% 77 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 2.2 setlinewidth
+ 0.35 0.85 0.7 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -128.75 328.75 moveto
+ -128.75 328.75 -132.039 334.148 -137.75 334.75 curveto
+stroke
+
+
+% 78 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.3 setcmykcolor
+() p2esetcolorname
+newpath
+ -41.75 288.75 moveto
+ -41.75 288.75 -61.4219 284.758 -66.75 286.75 curveto
+ -66.75 286.75 -75.9414 286.52 -66.75 284.75 curveto
+ -66.75 284.75 -52.6211 284.32 -43.75 285.75 curveto
+ -43.75 285.75 -31.0586 291.801 -41.75 288.75 curveto
+ closepath
+fill
+gsave %{
+
+
+% 79 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -56.75 390.75 moveto
+ -56.75 390.75 -76.3789 390.801 -78.75 389.75 curveto
+ -78.75 389.75 -86.5 356.039 -82.75 347.75 curveto
+ -82.75 347.75 -81.2188 344.598 -77.75 350.75 curveto
+ -77.75 350.75 -57.8984 386.84 -54.75 388.75 curveto
+ -50.8594 391.238 -55.6992 390.801 -56.75 390.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 80 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -56.75 390.75 moveto
+ -56.75 390.75 -76.3789 390.801 -78.75 389.75 curveto
+ -78.75 389.75 -86.5 356.039 -82.75 347.75 curveto
+ -82.75 347.75 -81.2188 344.598 -77.75 350.75 curveto
+ -77.75 350.75 -57.8984 386.84 -54.75 388.75 curveto
+ -50.8594 391.238 -55.6992 390.801 -56.75 390.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 81 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 28.25 393.75 moveto
+ 28.25 393.75 18.0 391.898 4.25 388.75 curveto
+ 4.25 388.75 -1.14063 364.398 -4.75 358.75 curveto
+ -8.17969 353.84 -4.21875 353.84 -0.75 356.75 curveto
+ 3.69922 360.0 19.9805 375.398 22.25 379.75 curveto
+ 24.3789 385.078 28.25 393.75 28.25 393.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 82 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 28.25 393.75 moveto
+ 28.25 393.75 18.0 391.898 4.25 388.75 curveto
+ 4.25 388.75 -1.14063 364.398 -4.75 358.75 curveto
+ -8.17969 353.84 -4.21875 353.84 -0.75 356.75 curveto
+ 3.69922 360.0 19.9805 375.398 22.25 379.75 curveto
+ 24.3789 385.078 28.25 393.75 28.25 393.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 83 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 3.25 388.75 moveto
+ 3.25 388.75 -2.63672 387.098 -3.75 384.75 curveto
+ -4.85547 382.227 -2.75 378.75 -2.75 378.75 curveto
+ -2.75 378.75 -1.32422 374.965 0.25 377.75 curveto
+ 1.32031 379.723 4.48047 388.148 3.25 388.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 84 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 3.25 388.75 moveto
+ 3.25 388.75 -2.63672 387.098 -3.75 384.75 curveto
+ -4.85547 382.227 -2.75 378.75 -2.75 378.75 curveto
+ -2.75 378.75 -1.32422 374.965 0.25 377.75 curveto
+ 1.32031 379.723 4.48047 388.148 3.25 388.75 curveto
+ closepath
+stroke
+
+
+% 85 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 3.25 388.75 moveto
+ 3.25 388.75 -0.261719 383.32 -3.75 383.75 curveto
+ -8.17969 383.32 -8.60156 383.773 -11.75 382.75 curveto
+ -16.7617 382.0 -16.3203 384.199 -23.75 382.75 curveto
+ -26.4844 382.352 -29.3008 383.32 -32.75 381.75 curveto
+ -35.461 380.68 -38.9805 381.559 -40.75 383.75 curveto
+ -41.6211 385.957 -46.75 390.75 -46.75 390.75 curveto
+ -46.75 390.75 -32.8203 388.598 -29.75 387.75 curveto
+ -29.75 387.75 -5.10156 386.398 3.25 388.75 curveto
+ closepath
+fill
+gsave %{
+
+
+% 86 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -45.75 388.75 moveto
+ -45.75 388.75 -38.2656 384.969 -37.75 382.75 curveto
+ -37.3867 379.688 -43.75 375.75 -43.75 375.75 curveto
+ -43.75 375.75 -46.625 370.559 -47.75 372.75 curveto
+ -47.9453 375.84 -46.2383 388.379 -45.75 388.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 87 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -45.75 388.75 moveto
+ -45.75 388.75 -38.2656 384.969 -37.75 382.75 curveto
+ -37.3867 379.688 -43.75 375.75 -43.75 375.75 curveto
+ -43.75 375.75 -46.625 370.559 -47.75 372.75 curveto
+ -47.9453 375.84 -46.2383 388.379 -45.75 388.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 88 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -3.75 382.75 moveto
+ -3.75 382.75 -11.8359 370.5 -11.75 382.75 curveto
+ -11.75 382.75 -12.6875 384.219 -10.75 383.75 curveto
+ -4.06641 384.324 -5.73828 388.836 -3.75 382.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 89 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -3.75 382.75 moveto
+ -3.75 382.75 -11.8359 370.5 -11.75 382.75 curveto
+ -11.75 382.75 -12.6875 384.219 -10.75 383.75 curveto
+ -4.06641 384.324 -5.73828 388.836 -3.75 382.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 90 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -11.75 382.75 moveto
+ -11.75 382.75 -20.7344 370.23 -19.75 382.75 curveto
+ -19.75 382.75 -20.043 383.004 -17.75 382.75 curveto
+ -12.8945 383.625 -13.2734 388.594 -11.75 382.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 91 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -11.75 382.75 moveto
+ -11.75 382.75 -20.7344 370.23 -19.75 382.75 curveto
+ -19.75 382.75 -20.043 383.004 -17.75 382.75 curveto
+ -12.8945 383.625 -13.2734 388.594 -11.75 382.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 92 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -19.75 382.75 moveto
+ -19.75 382.75 -28.7109 370.836 -27.75 381.75 curveto
+ -27.75 381.75 -28.1094 382.824 -26.75 382.75 curveto
+ -22.0078 383.93 -21.7734 387.504 -19.75 382.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 93 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -19.75 382.75 moveto
+ -19.75 382.75 -28.7109 370.836 -27.75 381.75 curveto
+ -27.75 381.75 -28.1094 382.824 -26.75 382.75 curveto
+ -22.0078 383.93 -21.7734 387.504 -19.75 382.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 94 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -27.75 382.75 moveto
+ -27.75 382.75 -36.2109 369.719 -36.75 380.75 curveto
+ -36.75 380.75 -38.4023 381.996 -36.75 381.75 curveto
+ -30.082 383.055 -30.957 387.953 -27.75 382.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 95 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -27.75 382.75 moveto
+ -27.75 382.75 -36.2109 369.719 -36.75 380.75 curveto
+ -36.75 380.75 -38.4023 381.996 -36.75 381.75 curveto
+ -30.082 383.055 -30.957 387.953 -27.75 382.75 curveto
+ closepath
+stroke
+
+
+% 96 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.1 0.1 0.3 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 12.25 378.75 moveto
+ 20.25 379.75 lineto
+ 23.5547 385.738 26.25 392.75 26.25 392.75 curveto
+ 26.25 392.75 18.8789 391.402 5.25002 388.75 curveto
+ 5.25002 388.75 4.16797 384.676 2.25 378.75 curveto
+ 12.25 378.75 lineto
+ closepath
+fill
+
+
+% 97 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.55 setlinewidth
+ 0.1 0.1 0.3 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -59.75 383.75 moveto
+ -57.4727 386.441 -56.0234 388.375 -55.75 388.75 curveto
+ -51.9922 390.891 -56.5508 390.477 -57.75 390.75 curveto
+ -57.75 390.75 -76.0195 390.477 -77.75 389.75 curveto
+ -77.75 389.75 -78.668 387.184 -79.75 383.75 curveto
+ -79.75 383.75 -68.3242 385.664 -59.75 383.75 curveto
+ closepath
+fill
+
+
+% 98 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -118.75 535.75 moveto
+ -148.762 531.289 -176.832 570.496 -178.75 580.75 curveto
+ -180.707 591.793 -169.75 604.75 -169.75 604.75 curveto
+ -171.023 608.246 -165.699 623.734 -159.75 633.75 curveto
+ -154.086 644.063 -136.594 642.992 -117.75 643.75 curveto
+ -99.875 645.031 -79.5469 619.379 -77.75 617.75 curveto
+ -76.6445 615.508 -83.4219 573.398 -84.75 566.75 curveto
+ -86.3242 560.816 -83.75 531.75 -83.75 531.75 curveto
+ -121.086 541.785 -87.7773 540.004 -118.75 535.75 curveto
+ closepath
+fill
+
+
+% 99 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.08 0.44 0.68 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -78.75 616.75 moveto
+ -77.4727 614.832 -84.125 573.488 -85.75 567.75 curveto
+ -86.9766 561.133 -83.75 532.75 -83.75 532.75 curveto
+ -120.063 542.387 -88.4023 540.699 -118.75 536.75 curveto
+ -148.277 532.145 -175.84 570.637 -177.75 580.75 curveto
+ -179.641 591.547 -168.75 604.75 -168.75 604.75 curveto
+ -170.137 607.703 -164.91 622.91 -158.75 632.75 curveto
+ -153.504 642.867 -136.332 641.816 -117.75 642.75 curveto
+ -100.281 643.816 -80.3242 618.633 -78.75 616.75 curveto
+ closepath
+fill
+
+
+% 100 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.06 0.33 0.51 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -79.75 615.75 moveto
+ -78.2969 614.152 -84.8281 573.574 -85.75 567.75 curveto
+ -87.625 561.449 -84.75 533.75 -84.75 533.75 curveto
+ -119.371 543.539 -89.0273 541.395 -118.75 536.75 curveto
+ -147.793 533.0 -174.844 570.777 -176.75 580.75 curveto
+ -178.574 591.301 -167.75 603.75 -167.75 603.75 curveto
+ -169.246 607.156 -164.117 622.082 -158.75 631.75 curveto
+ -152.922 641.672 -136.07 640.637 -117.75 641.75 curveto
+ -100.687 642.602 -81.0977 617.883 -79.75 615.75 curveto
+ closepath
+fill
+
+
+% 101 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.04 0.22 0.34 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -80.75 615.75 moveto
+ -79.125 613.477 -85.5313 573.664 -86.75 567.75 curveto
+ -88.2773 561.766 -85.75 534.75 -85.75 534.75 curveto
+ -117.91 544.254 -89.6523 542.09 -118.75 537.75 curveto
+ -147.309 533.852 -173.852 570.918 -175.75 580.75 curveto
+ -177.512 591.055 -166.75 603.75 -166.75 603.75 curveto
+ -168.359 606.609 -163.324 621.254 -157.75 630.75 curveto
+ -152.344 640.473 -135.805 639.461 -117.75 640.75 curveto
+ -101.09 641.391 -81.8711 617.137 -80.75 615.75 curveto
+ closepath
+fill
+
+
+% 102 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.02 0.11 0.17 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -81.75 614.75 moveto
+ -79.9531 612.797 -86.2344 573.75 -87.75 567.75 curveto
+ -88.9297 562.082 -85.75 534.75 -85.75 534.75 curveto
+ -116.891 544.965 -90.2734 542.785 -118.75 538.75 curveto
+ -146.824 534.707 -172.855 571.059 -174.75 580.75 curveto
+ -176.445 590.805 -165.75 602.75 -165.75 602.75 curveto
+ -167.469 606.066 -162.531 620.426 -156.75 629.75 curveto
+ -151.762 639.277 -135.543 638.285 -117.75 639.75 curveto
+ -101.496 640.176 -82.6445 616.387 -81.75 614.75 curveto
+ closepath
+fill
+
+
+% 103 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -118.75 539.75 moveto
+ -146.34 535.559 -171.859 571.199 -173.75 580.75 curveto
+ -175.383 590.559 -165.75 602.75 -165.75 602.75 curveto
+ -166.582 605.52 -161.738 619.602 -156.75 628.75 curveto
+ -151.18 638.078 -135.281 637.105 -117.75 637.75 curveto
+ -101.898 638.961 -83.4219 615.641 -81.75 613.75 curveto
+ -80.7813 612.121 -86.9414 573.84 -88.75 567.75 curveto
+ -89.5781 562.398 -86.75 535.75 -86.75 535.75 curveto
+ -114.988 545.461 -90.8984 543.48 -118.75 539.75 curveto
+ closepath
+fill
+
+
+% 104 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -169.75 576.75 moveto
+ -169.75 576.75 -139.078 568.559 -126.75 570.75 curveto
+ -126.75 570.75 -108.941 577.578 -99.75 553.75 curveto
+ -99.75 553.75 -95.3008 545.68 -92.75 543.75 curveto
+ -90.8984 541.281 -169.75 576.75 -169.75 576.75 curveto
+ closepath
+fill
+
+
+% 105 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -173.75 579.75 moveto
+ -173.75 579.75 -141.941 565.922 -130.75 566.75 curveto
+ -130.75 566.75 -112.898 571.422 -103.75 555.75 curveto
+ -103.75 555.75 -94.4219 545.238 -90.75 543.75 curveto
+ -90.75 543.75 -90.461 541.719 -97.75 545.75 curveto
+ -108.75 540.75 lineto
+ -108.75 540.75 -125.219 529.84 -135.75 547.75 curveto
+ -135.75 547.75 -140.18 559.762 -139.75 561.75 curveto
+ -140.18 564.16 -163.5 570.32 -165.75 570.75 curveto
+ -167.02 571.199 -174.281 575.82 -173.75 579.75 curveto
+ closepath
+fill
+
+
+% 106 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.4 0.2 0.8 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -121.75 539.75 moveto
+ -114.141 539.836 -104.93 544.086 -104.75 550.75 curveto
+ -104.93 557.832 -114.141 564.723 -121.75 564.75 curveto
+ -129.262 564.723 -135.391 559.152 -135.75 552.75 curveto
+ -135.391 545.406 -129.262 539.836 -121.75 539.75 curveto
+ closepath
+fill
+
+
+% 107 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.6 0.4 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -117.75 557.75 moveto
+ -112.383 557.395 -106.785 555.738 -106.75 555.75 curveto
+ -108.559 561.059 -115.555 564.723 -121.75 564.75 curveto
+ -126.426 564.723 -130.594 562.547 -132.75 558.75 curveto
+ -132.75 558.75 -127.203 559.602 -117.75 557.75 curveto
+ closepath
+fill
+
+
+% 108 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -130.75 558.75 moveto
+ -130.75 558.75 -126.102 561.961 -125.75 559.75 curveto
+ -125.75 559.75 -130.059 554.699 -130.75 558.75 curveto
+ closepath
+fill
+
+
+% 109 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -119.75 549.75 moveto
+ -117.191 549.5 -114.961 551.73 -114.75 554.75 curveto
+ -114.961 557.23 -117.191 559.457 -119.75 559.75 curveto
+ -122.691 559.457 -124.918 557.23 -124.75 554.75 curveto
+ -124.918 551.73 -122.691 549.5 -119.75 549.75 curveto
+ closepath
+fill
+
+
+% 110 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -5.75 563.75 moveto
+ -5.75 563.75 -2.01953 587.48 -4.75 592.75 curveto
+ -4.75 592.75 -16.5391 603.32 -15.75 607.75 curveto
+ -15.75 607.75 -15.6602 627.078 -14.75 627.75 curveto
+ -13.0195 628.84 -4.66016 635.441 2.25 628.75 curveto
+ 2.25 628.75 13.3789 608.602 12.25 601.75 curveto
+ 12.25 599.75 lineto
+ 12.25 599.75 20.8594 599.801 22.25 597.75 curveto
+ 22.25 597.75 23.9414 591.879 25.25 591.75 curveto
+ 25.25 591.75 28.3398 588.801 26.25 585.75 curveto
+ 26.25 585.75 28.3398 583.078 28.25 578.75 curveto
+ 19.25 574.75 lineto
+ 19.25 574.75 17.3398 558.441 5.25002 552.75 curveto
+ 0.140625 550.156 -3.33984 557.559 -5.75 563.75 curveto
+ closepath
+fill
+
+
+% 111 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -4.75 565.75 moveto
+ -4.75 565.75 -1.27344 587.172 -3.75 591.75 curveto
+ -3.75 591.75 -14.3398 601.43 -13.75 604.75 curveto
+ -13.75 604.75 -13.5469 622.813 -12.75 623.75 curveto
+ -11.1719 624.395 -3.64844 630.336 2.25 623.75 curveto
+ 2.25 623.75 12.5898 606.18 12.25 599.75 curveto
+ 12.25 597.75 lineto
+ 12.25 597.75 19.3203 598.262 21.25 596.75 curveto
+ 21.25 596.75 22.0937 591.133 23.25 590.75 curveto
+ 23.25 590.75 26.0508 588.359 24.25 585.75 curveto
+ 24.25 585.75 26.0508 583.211 25.25 579.75 curveto
+ 18.25 575.75 lineto
+ 18.25 575.75 16.1523 561.035 5.25002 555.75 curveto
+ 0.671875 553.582 -2.46094 560.242 -4.75 565.75 curveto
+ closepath
+fill
+
+
+% 112 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.075 0.412 0.637 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -13.75 626.75 moveto
+ -12.6445 627.816 -4.40625 634.164 2.25 627.75 curveto
+ 2.25 627.75 13.1836 607.996 12.25 600.75 curveto
+ 12.25 598.75 lineto
+ 12.25 598.75 20.4766 599.414 22.25 597.75 curveto
+ 22.25 597.75 23.4766 591.691 25.25 591.75 curveto
+ 25.25 591.75 27.7695 588.691 25.25 585.75 curveto
+ 25.25 585.75 27.7695 583.113 27.25 578.75 curveto
+ 19.25 574.75 lineto
+ 19.25 574.75 17.043 559.09 5.25002 553.75 curveto
+ 0.273438 551.016 -3.12109 558.23 -5.75 564.75 curveto
+ -5.75 564.75 -1.83203 587.402 -4.75 591.75 curveto
+ -4.75 591.75 -15.9883 602.848 -15.75 606.75 curveto
+ -15.75 606.75 -15.1328 626.012 -13.75 626.75 curveto
+ closepath
+fill
+
+
+% 113 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.05 0.275 0.425 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -13.75 625.75 moveto
+ -12.2734 626.793 -4.15234 632.887 2.25 625.75 curveto
+ 2.25 625.75 12.9844 607.391 12.25 600.75 curveto
+ 12.25 598.75 lineto
+ 12.25 598.75 20.0898 599.031 22.25 596.75 curveto
+ 22.25 596.75 23.0156 591.508 24.25 590.75 curveto
+ 24.25 590.75 27.1953 588.578 25.25 585.75 curveto
+ 25.25 585.75 27.1953 583.145 27.25 578.75 curveto
+ 19.25 574.75 lineto
+ 19.25 574.75 16.7461 559.738 5.25002 554.75 curveto
+ 0.40625 551.871 -2.89844 558.902 -4.75 564.75 curveto
+ -4.75 564.75 -1.64453 587.324 -3.75 591.75 curveto
+ -3.75 591.75 -15.4414 602.375 -14.75 605.75 curveto
+ -14.75 605.75 -14.6055 624.945 -13.75 625.75 curveto
+ closepath
+fill
+
+
+% 114 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.025 0.137 0.212 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -12.75 624.75 moveto
+ -11.8984 625.77 -3.90234 631.613 2.25 624.75 curveto
+ 2.25 624.75 12.7852 606.785 12.25 600.75 curveto
+ 12.25 597.75 lineto
+ 12.25 597.75 19.7031 598.645 21.25 596.75 curveto
+ 21.25 596.75 22.5547 591.32 24.25 590.75 curveto
+ 24.25 590.75 26.625 588.469 24.25 585.75 curveto
+ 24.25 585.75 26.625 583.18 26.25 578.75 curveto
+ 18.25 574.75 lineto
+ 18.25 574.75 16.4492 560.387 5.25002 554.75 curveto
+ 0.539063 552.727 -2.67969 559.574 -4.75 565.75 curveto
+ -4.75 565.75 -1.46094 587.25 -3.75 591.75 curveto
+ -3.75 591.75 -14.8906 601.902 -14.75 605.75 curveto
+ -14.75 605.75 -14.0742 623.879 -12.75 624.75 curveto
+ closepath
+fill
+
+
+% 115 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -4.75 566.75 moveto
+ -4.75 566.75 -1.27344 587.172 -3.75 591.75 curveto
+ -3.75 591.75 -14.3398 601.43 -13.75 604.75 curveto
+ -13.75 604.75 -13.5469 622.813 -12.75 623.75 curveto
+ -11.5234 624.746 -3.64844 630.336 2.25 623.75 curveto
+ 2.25 623.75 12.5898 606.18 12.25 599.75 curveto
+ 12.25 597.75 lineto
+ 12.25 597.75 19.3203 598.262 21.25 596.75 curveto
+ 21.25 596.75 22.0937 591.133 23.25 590.75 curveto
+ 23.25 590.75 26.0508 588.359 24.25 585.75 curveto
+ 24.25 585.75 26.0508 583.211 25.25 579.75 curveto
+ 18.25 575.75 lineto
+ 18.25 575.75 16.1523 561.035 5.25002 555.75 curveto
+ 0.671875 553.582 -2.46094 560.355 -4.75 566.75 curveto
+ closepath
+fill
+
+
+% 116 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -0.75 572.75 moveto
+ -0.75 572.75 22.7305 584.398 23.25 585.75 curveto
+ 23.25 585.75 13.7109 576.262 13.25 576.75 curveto
+ 11.9492 576.262 -0.75 572.75 -0.75 572.75 curveto
+ closepath
+fill
+
+
+% 117 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 18.25 579.75 moveto
+ 18.25 579.75 -2.46094 576.039 -2.75 570.75 curveto
+ -2.46094 567.996 -2.19141 553.234 3.25 554.75 curveto
+ 12.9414 557.559 8.98047 573.398 18.25 579.75 curveto
+ closepath
+fill
+
+
+% 118 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.4 0.2 0.8 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 8.25 575.75 moveto
+ 8.25 575.75 -1.33594 574.199 -2.75 570.75 curveto
+ -3.12109 569.441 -3.84766 560.301 2.25 558.75 curveto
+ 7.16797 558.098 9.62109 569.34 8.25 575.75 curveto
+ closepath
+fill
+
+
+% 119 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -85.75 528.75 moveto
+ -85.5078 530.934 -86.9492 530.789 -88.75 531.75 curveto
+ -91.1211 532.039 -104.539 536.219 -105.75 538.75 curveto
+ -106.301 541.941 -120.75 536.75 -120.75 536.75 curveto
+ -122.801 536.219 -127.75 533.75 -127.75 533.75 curveto
+ -132.922 532.039 -139.75 531.75 -139.75 531.75 curveto
+ -142.82 530.5 -146.75 527.75 -146.75 527.75 curveto
+ -162.621 516.199 -176.75 523.75 -176.75 523.75 curveto
+ -198.262 531.379 -191.75 550.75 -191.75 550.75 curveto
+ -188.359 560.199 -191.75 563.75 -191.75 563.75 curveto
+ -192.102 568.121 -199.75 560.75 -199.75 560.75 curveto
+ -202.883 556.461 -203.75 550.75 -203.75 550.75 curveto
+ -212.563 538.641 -208.75 557.75 -208.75 557.75 curveto
+ -209.043 559.32 -205.961 563.281 -205.75 564.75 curveto
+ -205.961 565.922 -203.75 569.75 -203.75 569.75 curveto
+ -200.68 573.398 -203.75 580.75 -203.75 580.75 curveto
+ -205.301 596.281 -202.75 594.75 -202.75 594.75 curveto
+ -201.563 596.281 -191.75 585.75 -191.75 585.75 curveto
+ -189.02 581.539 -182.75 579.75 -182.75 579.75 curveto
+ -179.34 577.801 -175.75 579.75 -175.75 579.75 curveto
+ -172.742 579.781 -166.75 571.75 -166.75 571.75 curveto
+ -169.66 572.301 -172.301 567.461 -174.75 566.75 curveto
+ -177.582 567.02 -179.563 569.879 -181.75 570.75 curveto
+ -183.082 571.199 -185.75 564.75 -185.75 564.75 curveto
+ -186.602 561.961 -180.75 556.75 -180.75 556.75 curveto
+ -180.0 551.621 -177.75 553.75 -177.75 553.75 curveto
+ -174.941 554.039 -173.621 549.859 -172.75 544.75 curveto
+ -171.422 539.738 -166.75 539.75 -166.75 539.75 curveto
+ -165.043 531.16 -163.75 534.75 -163.75 534.75 curveto
+ -163.5 540.621 -156.75 533.75 -156.75 533.75 curveto
+ -155.578 532.039 -150.75 534.75 -150.75 534.75 curveto
+ -143.039 536.66 -145.75 538.75 -145.75 538.75 curveto
+ -147.66 541.281 -159.75 538.75 -159.75 538.75 curveto
+ -162.398 540.621 -153.75 544.75 -153.75 544.75 curveto
+ -152.941 547.0 -153.75 551.75 -153.75 551.75 curveto
+ -155.359 555.359 -162.75 561.75 -162.75 561.75 curveto
+ -173.18 562.84 -169.75 564.75 -169.75 564.75 curveto
+ -163.281 570.32 -156.75 561.75 -156.75 561.75 curveto
+ -154.48 555.141 -135.75 538.75 -135.75 538.75 curveto
+ -130.059 534.898 -132.922 542.379 -128.75 538.75 curveto
+ -124.121 534.898 -101.75 544.75 -101.75 544.75 curveto
+ -88.7422 546.113 -85.7383 528.797 -81.75 531.75 curveto
+ -81.75 531.75 -87.8164 522.855 -85.75 528.75 curveto
+ closepath
+fill
+
+
+% 120 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -300.75 711.75 moveto
+ -300.75 711.75 -272.18 703.199 -268.75 682.75 curveto
+ -268.75 682.75 -266.461 657.441 -288.75 637.75 curveto
+ -288.75 637.75 -289.34 631.039 -291.75 627.75 curveto
+ -291.75 627.75 -289.781 622.238 -310.75 630.75 curveto
+ -340.75 639.75 lineto
+ -340.75 639.75 -347.422 642.48 -352.75 651.75 curveto
+ -358.859 661.84 -375.582 682.52 -371.75 709.75 curveto
+ -371.75 709.75 -372.941 722.559 -366.75 722.75 curveto
+ -366.75 722.75 -357.102 724.762 -348.75 716.75 curveto
+ -348.75 716.75 -341.699 712.879 -338.75 713.75 curveto
+ -300.75 711.75 lineto
+ closepath
+fill
+
+
+% 121 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -360.75 712.75 moveto
+ -360.75 712.75 -362.734 722.91 -357.75 717.75 curveto
+ -357.75 717.75 -349.668 711.297 -341.75 711.75 curveto
+ -341.75 711.75 -325.465 708.875 -320.75 694.75 curveto
+ -320.75 694.75 -316.27 664.832 -324.75 658.75 curveto
+ -324.75 658.75 -330.305 650.313 -337.75 657.75 curveto
+ -345.793 664.832 -362.844 698.086 -360.75 712.75 curveto
+ closepath
+fill
+
+
+% 122 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.8 setcmykcolor
+() p2esetcolorname
+newpath
+ -359.75 712.75 moveto
+ -359.75 712.75 -362.313 722.313 -356.75 716.75 curveto
+ -356.75 716.75 -349.48 710.91 -341.75 710.75 curveto
+ -341.75 710.75 -325.719 708.531 -320.75 694.75 curveto
+ -320.75 694.75 -316.691 665.289 -324.75 658.75 curveto
+ -324.75 658.75 -330.473 651.035 -337.75 657.75 curveto
+ -345.68 665.289 -362.391 697.965 -359.75 712.75 curveto
+ closepath
+fill
+
+
+% 123 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.6 setcmykcolor
+() p2esetcolorname
+newpath
+ -359.75 712.75 moveto
+ -359.75 712.75 -361.891 721.715 -356.75 716.75 curveto
+ -356.75 716.75 -349.297 710.523 -341.75 710.75 curveto
+ -341.75 710.75 -325.977 708.191 -321.75 693.75 curveto
+ -321.75 693.75 -317.113 665.746 -325.75 659.75 curveto
+ -325.75 659.75 -330.641 651.754 -337.75 658.75 curveto
+ -345.566 665.746 -361.934 697.844 -359.75 712.75 curveto
+ closepath
+fill
+
+
+% 124 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.4 setcmykcolor
+() p2esetcolorname
+newpath
+ -358.75 711.75 moveto
+ -358.75 711.75 -361.469 721.117 -356.75 715.75 curveto
+ -356.75 715.75 -349.113 710.133 -341.75 709.75 curveto
+ -341.75 709.75 -326.23 707.848 -321.75 693.75 curveto
+ -321.75 693.75 -317.535 666.203 -325.75 660.75 curveto
+ -325.75 660.75 -330.809 652.477 -337.75 659.75 curveto
+ -345.449 666.203 -361.477 697.723 -358.75 711.75 curveto
+ closepath
+fill
+
+
+% 125 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -358.75 711.75 moveto
+ -358.75 711.75 -361.043 720.52 -355.75 715.75 curveto
+ -355.75 715.75 -348.926 709.746 -341.75 709.75 curveto
+ -341.75 709.75 -326.484 707.504 -321.75 693.75 curveto
+ -321.75 693.75 -317.957 666.664 -325.75 660.75 curveto
+ -325.75 660.75 -330.973 653.199 -337.75 659.75 curveto
+ -345.336 666.664 -361.023 697.602 -358.75 711.75 curveto
+ closepath
+fill
+
+
+% 126 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -358.75 710.75 moveto
+ -358.75 710.75 -360.621 719.922 -355.75 714.75 curveto
+ -355.75 714.75 -348.742 709.359 -341.75 709.75 curveto
+ -341.75 709.75 -326.742 707.16 -322.75 693.75 curveto
+ -322.75 693.75 -318.383 667.121 -326.75 661.75 curveto
+ -326.75 661.75 -331.141 653.922 -337.75 660.75 curveto
+ -345.223 667.121 -360.566 697.48 -358.75 710.75 curveto
+ closepath
+fill
+
+
+% 127 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.4 0.85 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -125.75 487.75 moveto
+ -125.75 487.75 -103.219 508.719 -94.75 509.75 curveto
+ -94.75 509.75 -56.5781 514.0 -40.75 493.75 curveto
+ -40.75 493.75 -59.6602 516.641 -89.75 510.75 curveto
+ -89.75 510.75 -66.2617 515.32 -52.75 511.75 curveto
+ -52.75 511.75 -34.1406 511.801 -23.75 496.75 curveto
+ -20.75 490.75 lineto
+ -20.75 490.75 -24.8984 507.398 -44.75 513.75 curveto
+ -44.75 513.75 -70.2188 519.281 -81.75 513.75 curveto
+ -81.75 513.75 -58.3398 521.48 -47.75 519.75 curveto
+ -47.75 519.75 -13.8984 521.922 0.25 492.75 curveto
+ 0.25 492.75 -4.21875 508.719 -20.75 516.75 curveto
+ -20.75 516.75 -35.461 526.32 -57.75 522.75 curveto
+ -57.75 522.75 -73.7383 519.719 -79.75 516.75 curveto
+ -85.1797 514.441 -83.8594 517.52 -74.75 522.75 curveto
+ -74.75 522.75 -68.461 533.801 -52.75 533.75 curveto
+ -52.75 533.75 -5.98047 529.398 5.25002 515.75 curveto
+ 5.25002 515.75 -9.5 528.52 -20.75 531.75 curveto
+ -20.75 531.75 -45.5781 540.398 -54.75 539.75 curveto
+ -54.75 539.75 -82.1016 538.422 -90.75 542.75 curveto
+ -90.75 542.75 -78.1406 537.32 -81.75 533.75 curveto
+ -85.1797 530.281 -92.6602 521.922 -92.75 520.75 curveto
+ -92.6602 519.281 -119.281 494.969 -122.75 489.75 curveto
+ -125.75 487.75 lineto
+ closepath
+fill
+
+
+% 128 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -277.75 273.75 moveto
+ -277.75 273.75 -260.852 314.352 -246.75 324.75 curveto
+ -246.75 324.75 -275.699 307.199 -279.75 287.75 curveto
+ -279.75 287.75 -279.551 276.398 -277.75 273.75 curveto
+ closepath
+fill
+
+
+% 129 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -329.75 265.75 moveto
+ -329.75 265.75 -300.449 326.449 -279.75 352.75 curveto
+ -279.75 352.75 -327.949 311.602 -333.75 282.75 curveto
+ -333.75 276.75 lineto
+ -330.75 278.75 lineto
+ -330.75 278.75 -330.148 269.25 -329.75 265.75 curveto
+ closepath
+fill
+
+
+% 130 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -391.75 319.75 moveto
+ -391.75 319.75 -323.0 384.75 -321.75 387.75 curveto
+ -321.75 387.75 -387.898 314.898 -390.75 306.75 curveto
+ -390.75 306.75 -389.0 316.551 -391.75 319.75 curveto
+ closepath
+fill
+
+
+% 131 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -184.75 271.75 moveto
+ -184.75 271.75 -205.852 328.648 -226.75 303.75 curveto
+ -226.75 303.75 -243.25 292.898 -242.75 289.75 curveto
+ -242.75 289.75 -238.301 296.75 -218.75 295.75 curveto
+ -218.75 295.75 -197.602 299.5 -184.75 271.75 curveto
+ closepath
+fill
+
+
+% 132 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -393.75 411.75 moveto
+ -393.75 411.75 -344.449 443.051 -335.75 444.75 curveto
+ -323.211 447.297 -390.648 412.801 -395.75 400.75 curveto
+ -395.75 400.75 -398.352 404.0 -393.75 411.75 curveto
+ closepath
+fill
+
+
+% 133 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -227.75 294.75 moveto
+ -227.75 294.75 -250.621 296.641 -257.75 303.75 curveto
+ -262.75 299.75 lineto
+ -282.75 342.75 lineto
+ -286.75 336.75 lineto
+ -286.75 336.75 -302.102 352.957 -300.75 361.75 curveto
+ -300.34 370.559 -315.75 354.75 -315.75 354.75 curveto
+ -315.75 354.75 -314.422 367.918 -322.75 360.75 curveto
+ -322.75 360.75 -319.699 377.598 -328.75 368.75 curveto
+ -328.75 368.75 -317.352 401.973 -341.75 373.75 curveto
+ -348.301 366.598 -343.75 373.75 -343.75 373.75 curveto
+ -343.75 373.75 -314.859 426.879 -338.75 410.75 curveto
+ -338.75 410.75 -340.82 436.117 -339.75 440.75 curveto
+ -338.18 445.801 -335.98 470.441 -330.75 475.75 curveto
+ -325.422 481.879 -331.141 483.641 -337.75 477.75 curveto
+ -337.75 477.75 -324.98 504.32 -339.75 490.75 curveto
+ -339.75 490.75 -335.543 507.84 -330.75 510.75 curveto
+ -330.75 510.75 -324.543 529.84 -341.75 517.75 curveto
+ -341.75 517.75 -336.422 531.602 -332.75 534.75 curveto
+ -332.75 534.75 -320.141 565.48 -327.75 559.75 curveto
+ -332.75 555.75 lineto
+ -332.75 555.75 -325.422 571.641 -332.75 566.75 curveto
+ -339.5 561.961 -339.75 562.75 -339.75 562.75 curveto
+ -339.75 562.75 -316.18 598.922 -338.75 579.75 curveto
+ -338.75 579.75 -329.645 594.871 -325.75 602.75 curveto
+ -325.75 602.75 -305.18 624.879 -320.75 617.75 curveto
+ -326.75 615.75 lineto
+ -326.75 615.75 -316.621 627.078 -307.75 628.75 curveto
+ -299.02 630.602 -310.461 637.641 -317.75 635.75 curveto
+ -324.543 633.238 -341.75 624.75 -341.75 624.75 curveto
+ -341.75 624.75 -355.781 604.199 -359.75 603.75 curveto
+ -359.75 603.75 -338.18 612.121 -344.75 603.75 curveto
+ -344.75 603.75 -360.621 587.922 -352.75 588.75 curveto
+ -352.75 588.75 -346.102 580.441 -351.75 570.75 curveto
+ -351.75 570.75 -331.074 590.988 -347.75 562.75 curveto
+ -354.75 544.75 lineto
+ -354.75 544.75 -328.063 572.078 -340.75 547.75 curveto
+ -340.75 547.75 -359.301 521.922 -361.75 521.75 curveto
+ -363.699 521.039 -368.75 511.75 -368.75 511.75 curveto
+ -363.75 513.75 lineto
+ -369.75 503.75 lineto
+ -369.75 503.75 -357.102 517.078 -363.75 502.75 curveto
+ -369.75 486.75 lineto
+ -369.75 486.75 -347.422 510.922 -362.75 478.75 curveto
+ -362.75 478.75 -344.34 484.078 -353.75 464.75 curveto
+ -353.75 464.75 -352.262 447.559 -352.75 441.75 curveto
+ -353.141 436.117 -354.461 404.879 -349.75 395.75 curveto
+ -344.781 387.277 -356.223 366.16 -358.75 361.75 curveto
+ -360.621 357.359 -364.582 345.48 -354.75 355.75 curveto
+ -345.223 365.719 -350.063 359.559 -352.75 349.75 curveto
+ -354.461 340.199 -361.063 323.039 -359.75 316.75 curveto
+ -359.75 316.75 -358.859 315.559 -355.75 319.75 curveto
+ -355.75 319.75 -339.063 344.598 -340.75 328.75 curveto
+ -340.75 328.75 -339.5 319.957 -335.75 310.75 curveto
+ -335.75 310.75 -332.461 298.398 -332.75 307.75 curveto
+ -332.75 307.75 -328.941 326.559 -325.75 317.75 curveto
+ -322.781 309.84 -318.82 303.238 -315.75 300.75 curveto
+ -312.66 297.957 -306.941 323.039 -305.75 311.75 curveto
+ -305.75 311.75 -292.422 325.238 -286.75 306.75 curveto
+ -274.75 288.75 lineto
+ -274.75 288.75 -273.941 302.801 -272.75 295.75 curveto
+ -272.75 295.75 -239.621 289.598 -227.75 294.75 curveto
+ closepath
+fill
+
+
+% 134 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -190.75 686.75 moveto
+ -190.75 686.75 -177.582 695.719 -172.75 695.75 curveto
+ -168.781 694.84 -203.543 704.961 -248.75 674.75 curveto
+ -248.75 674.75 -254.141 671.52 -257.75 671.75 curveto
+ -257.75 671.75 -261.621 669.32 -258.75 665.75 curveto
+ -258.75 665.75 -248.859 654.801 -260.75 642.75 curveto
+ -260.75 642.75 -281.422 635.0 -275.75 644.75 curveto
+ -275.75 644.75 -287.141 640.281 -289.75 635.75 curveto
+ -292.422 631.48 -290.75 635.75 -290.75 635.75 curveto
+ -290.75 635.75 -284.063 643.801 -277.75 649.75 curveto
+ -277.75 649.75 -271.742 651.719 -268.75 660.75 curveto
+ -265.582 670.199 -262.941 681.199 -267.75 684.75 curveto
+ -267.75 684.75 -263.383 679.879 -264.75 684.75 curveto
+ -265.141 688.68 -269.102 692.641 -270.75 692.75 curveto
+ -272.621 693.519 -290.66 710.898 -297.75 711.75 curveto
+ -297.75 711.75 -288.02 709.801 -284.75 710.75 curveto
+ -281.422 712.0 -252.16 724.539 -245.75 725.75 curveto
+ -245.75 725.75 -227.082 733.121 -240.75 730.75 curveto
+ -240.75 730.75 -279.66 726.738 -299.75 711.75 curveto
+ -299.75 711.75 -291.762 721.461 -271.75 728.75 curveto
+ -271.75 728.75 -247.102 743.02 -208.75 737.75 curveto
+ -208.75 737.75 -188.801 734.0 -179.75 731.75 curveto
+ -179.75 731.75 -177.359 732.68 -176.75 732.75 curveto
+ -176.043 733.559 -163.059 743.461 -132.75 735.75 curveto
+ -132.75 735.75 -114.0 730.699 -104.75 725.75 curveto
+ -104.75 725.75 -87.8203 724.102 -83.75 720.75 curveto
+ -83.75 720.75 -63.3984 704.519 -60.75 703.75 curveto
+ -59.0 702.762 -46.461 694.398 -45.75 693.75 curveto
+ -45.75 693.75 -72.6406 701.219 -75.75 703.75 curveto
+ -77.9219 706.5 -97.0586 709.359 -99.75 707.75 curveto
+ -102.34 706.281 -111.578 706.941 -100.75 706.75 curveto
+ -100.75 706.75 -184.18 690.0 -184.75 687.75 curveto
+ -185.941 685.602 -190.75 686.75 -190.75 686.75 curveto
+ closepath
+fill
+
+
+% 135 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -268.75 696.75 moveto
+ -268.75 696.75 -257.66 705.18 -255.75 704.75 curveto
+ -253.262 705.18 -239.621 716.398 -234.75 715.75 curveto
+ -230.383 715.519 -216.961 726.52 -186.75 717.75 curveto
+ -186.75 717.75 -186.16 719.699 -189.75 720.75 curveto
+ -189.75 720.75 -197.16 723.0 -197.75 723.75 curveto
+ -197.75 723.75 -219.82 728.281 -227.75 724.75 curveto
+ -227.75 724.75 -237.859 721.461 -244.75 714.75 curveto
+ -244.75 714.75 -257.0 711.121 -260.75 711.75 curveto
+ -260.75 711.75 -270.199 709.801 -270.75 707.75 curveto
+ -270.75 707.75 -277.02 704.519 -274.75 701.75 curveto
+ -274.75 701.75 -275.48 699.898 -268.75 696.75 curveto
+ closepath
+fill
+
+
+% 136 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -254.75 699.75 moveto
+ -256.051 698.664 -257.172 698.559 -257.75 697.75 curveto
+ -258.094 697.32 -257.777 696.965 -257.75 696.75 curveto
+ -256.281 696.508 -255.121 697.133 -253.75 696.75 curveto
+ -253.422 696.262 -252.715 696.461 -251.75 696.75 curveto
+ -250.313 697.109 -248.301 697.137 -246.75 696.75 curveto
+ -244.258 697.621 -241.66 696.98 -239.75 697.75 curveto
+ -239.309 698.109 -239.066 697.73 -238.75 697.75 curveto
+ -235.633 699.019 -231.516 698.707 -228.75 700.75 curveto
+ -226.172 701.672 -223.578 702.18 -220.75 702.75 curveto
+ -218.906 703.488 -217.355 704.578 -215.75 705.75 curveto
+ -214.059 706.27 -212.457 706.844 -210.75 707.75 curveto
+ -208.723 707.75 -206.707 707.629 -204.75 707.75 curveto
+ -204.523 708.227 -204.313 707.852 -203.75 707.75 curveto
+ -203.863 708.0 -203.547 708.641 -203.75 708.75 curveto
+ -201.508 708.008 -199.871 709.074 -197.75 708.75 curveto
+ -196.746 710.047 -194.844 709.777 -192.75 710.75 curveto
+ -189.883 711.195 -186.414 709.801 -182.75 710.75 curveto
+ -187.605 712.926 -192.762 711.57 -196.75 713.75 curveto
+ -199.789 715.152 -202.719 713.938 -205.75 714.75 curveto
+ -206.082 714.934 -206.84 715.156 -207.75 714.75 curveto
+ -207.43 714.57 -207.629 714.832 -207.75 714.75 curveto
+ -210.387 713.527 -212.934 712.125 -215.75 710.75 curveto
+ -216.039 710.793 -216.625 711.047 -216.75 710.75 curveto
+ -218.574 709.488 -220.711 709.602 -221.75 708.75 curveto
+ -224.109 708.813 -226.082 708.395 -227.75 708.75 curveto
+ -228.066 709.109 -228.324 708.734 -228.75 708.75 curveto
+ -229.605 709.582 -230.875 709.285 -231.75 708.75 curveto
+ -232.227 708.824 -232.957 708.551 -233.75 708.75 curveto
+ -234.531 708.168 -235.473 707.637 -236.75 707.75 curveto
+ -236.895 707.418 -237.098 707.793 -236.75 707.75 curveto
+ -238.414 707.277 -239.559 707.34 -240.75 705.75 curveto
+ -240.43 706.207 -240.609 706.469 -240.75 706.75 curveto
+ -241.832 706.07 -242.543 705.238 -243.75 704.75 curveto
+ -244.289 704.855 -244.961 704.168 -245.75 703.75 curveto
+ -248.227 703.172 -250.254 701.488 -252.75 700.75 curveto
+ -253.504 700.164 -254.465 699.906 -254.75 699.75 curveto
+ closepath
+fill
+
+
+% 137 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -170.75 714.75 moveto
+ -168.098 716.91 -165.492 718.129 -162.75 719.75 curveto
+ -162.605 720.238 -162.211 720.051 -161.75 719.75 curveto
+ -160.879 720.855 -159.902 721.492 -158.75 722.75 curveto
+ -158.23 722.68 -157.328 722.668 -156.75 722.75 curveto
+ -153.969 724.371 -151.078 724.988 -148.75 726.75 curveto
+ -149.07 727.0 -150.305 726.734 -150.75 727.75 curveto
+ -151.176 727.313 -151.438 727.0 -151.75 726.75 curveto
+ -153.672 728.203 -155.707 728.371 -157.75 728.75 curveto
+ -159.422 728.172 -161.316 727.836 -163.75 727.75 curveto
+ -163.605 727.484 -163.824 726.91 -163.75 726.75 curveto
+ -166.629 726.074 -169.258 726.652 -171.75 725.75 curveto
+ -173.34 725.039 -175.066 724.133 -176.75 722.75 curveto
+ -176.707 722.445 -176.348 722.113 -175.75 721.75 curveto
+ -176.469 722.02 -176.77 721.793 -176.75 721.75 curveto
+ -176.984 721.188 -176.984 720.855 -176.75 720.75 curveto
+ -176.766 720.246 -176.461 720.137 -175.75 719.75 curveto
+ -174.5 719.871 -176.449 721.391 -175.75 720.75 curveto
+ -174.281 720.0 -175.102 718.453 -174.75 716.75 curveto
+ -173.973 717.273 -173.719 717.512 -173.75 717.75 curveto
+ -174.098 717.367 -173.438 717.047 -173.75 716.75 curveto
+ -172.828 715.902 -171.84 714.344 -170.75 714.75 curveto
+ closepath
+fill
+
+
+% 138 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -134.75 706.75 moveto
+ -131.648 707.805 -128.293 707.676 -124.75 708.75 curveto
+ -124.902 709.113 -124.656 708.73 -124.75 708.75 curveto
+ -123.082 709.414 -122.074 710.477 -120.75 711.75 curveto
+ -119.887 712.602 -118.063 712.176 -116.75 712.75 curveto
+ -116.305 712.848 -116.082 713.414 -115.75 713.75 curveto
+ -114.41 713.629 -113.391 714.672 -111.75 715.75 curveto
+ -114.809 716.176 -117.461 716.141 -119.75 716.75 curveto
+ -120.293 716.582 -120.453 716.23 -120.75 715.75 curveto
+ -120.75 716.23 -120.895 716.473 -120.75 716.75 curveto
+ -121.254 716.313 -121.586 715.953 -121.75 715.75 curveto
+ -122.473 716.828 -123.082 716.617 -123.75 716.75 curveto
+ -123.836 716.563 -123.973 716.23 -123.75 715.75 curveto
+ -124.27 716.23 -124.414 716.57 -124.75 716.75 curveto
+ -124.711 716.57 -124.855 716.23 -124.75 715.75 curveto
+ -125.148 716.23 -125.293 716.473 -125.75 716.75 curveto
+ -126.203 715.762 -127.176 716.371 -127.75 715.75 curveto
+ -129.219 715.922 -129.516 714.66 -130.75 714.75 curveto
+ -135.883 712.898 -140.434 710.539 -144.75 707.75 curveto
+ -145.57 708.082 -145.801 707.809 -145.75 707.75 curveto
+ -145.973 707.379 -146.316 707.477 -146.75 707.75 curveto
+ -147.691 706.527 -148.836 705.922 -149.75 704.75 curveto
+ -149.84 704.344 -149.477 703.895 -148.75 703.75 curveto
+ -144.352 705.047 -139.945 705.715 -134.75 706.75 curveto
+ closepath
+fill
+
+
+% 139 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -119.75 658.75 moveto
+ -118.121 659.637 -117.477 661.871 -115.75 663.75 curveto
+ -116.004 664.219 -116.305 664.563 -116.75 664.75 curveto
+ -117.27 664.836 -117.867 664.309 -118.75 663.75 curveto
+ -120.234 663.141 -121.922 661.773 -123.75 661.75 curveto
+ -126.309 659.164 -130.996 658.738 -130.75 654.75 curveto
+ -131.004 654.074 -129.434 655.086 -128.75 653.75 curveto
+ -126.266 655.242 -123.637 655.129 -120.75 656.75 curveto
+ -120.34 657.164 -120.703 657.66 -119.75 658.75 curveto
+ closepath
+fill
+
+
+% 140 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -89.75 715.75 moveto
+ -89.7266 716.129 -97.4609 715.875 -97.75 715.75 curveto
+ -97.3945 715.41 -88.8906 714.254 -88.75 714.75 curveto
+ -88.3125 714.527 -80.0469 711.852 -79.75 711.75 curveto
+ -80.1953 712.148 -89.2891 716.133 -89.75 715.75 curveto
+ closepath
+fill
+
+
+% 141 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -106.75 705.75 moveto
+ -106.75 705.75 -90.2383 703.422 -85.75 701.75 curveto
+ -80.5586 700.781 -60.1016 692.422 -56.75 689.75 curveto
+ -56.75 689.75 -42.0586 684.281 -23.75 662.75 curveto
+ -23.75 662.75 -31.7188 666.02 -33.75 668.75 curveto
+ -33.75 668.75 -49.1016 682.961 -48.75 679.75 curveto
+ -48.75 679.75 -62.3008 689.559 -61.75 686.75 curveto
+ -61.75 686.75 -88.4805 699.461 -86.75 695.75 curveto
+ -86.75 695.75 -110.039 701.0 -108.75 698.75 curveto
+ -108.75 698.75 -129.621 693.961 -126.75 693.75 curveto
+ -126.75 693.75 -120.16 692.422 -126.75 688.75 curveto
+ -126.75 688.75 -123.461 683.621 -117.75 687.75 curveto
+ -111.578 692.422 -114.879 690.0 -109.75 688.75 curveto
+ -109.75 688.75 -106.52 688.019 -101.75 692.75 curveto
+ -101.75 692.75 -95.3008 697.48 -85.75 693.75 curveto
+ -85.75 693.75 -51.961 679.66 -49.75 678.75 curveto
+ -49.75 678.75 -45.8008 675.922 -42.75 671.75 curveto
+ -42.75 671.75 -36.7813 667.121 -33.75 665.75 curveto
+ -33.75 665.75 -19.3984 652.82 -17.75 651.75 curveto
+ -17.75 651.75 -14.3398 645.559 -13.75 644.75 curveto
+ -13.75 644.75 -20.5 649.301 -22.75 651.75 curveto
+ -22.75 651.75 -38.1016 662.5 -43.75 663.75 curveto
+ -43.75 663.75 -48.8789 666.68 -49.75 667.75 curveto
+ -49.75 667.75 -65.6016 678.34 -69.75 678.75 curveto
+ -69.75 678.75 -80.3398 672.621 -82.75 680.75 curveto
+ -82.75 680.75 -89.3594 682.301 -95.75 680.75 curveto
+ -95.75 680.75 -99.0391 683.84 -97.75 686.75 curveto
+ -97.75 686.75 -99.9219 688.238 -100.75 683.75 curveto
+ -100.75 683.75 -104.762 680.102 -109.75 682.75 curveto
+ -109.75 682.75 -114.441 682.52 -111.75 679.75 curveto
+ -111.75 679.75 -107.398 675.699 -94.75 675.75 curveto
+ -94.75 675.75 -80.7813 674.82 -62.75 666.75 curveto
+ -62.75 666.75 -29.961 655.02 -19.75 643.75 curveto
+ -19.75 643.75 -12.8008 633.898 -6.75 632.75 curveto
+ -6.75 632.75 -0.480469 631.699 6.25 623.75 curveto
+ 6.25 623.75 -4.66016 629.941 -14.75 629.75 curveto
+ -14.75 629.75 -18.9609 632.578 -14.75 628.75 curveto
+ -14.75 628.75 -10.8203 620.262 -12.75 614.75 curveto
+ -12.75 614.75 -11.9219 608.602 -10.75 606.75 curveto
+ -10.75 606.75 -2.46094 592.762 -2.75 589.75 curveto
+ -2.46094 587.48 -3.78125 576.699 -3.75 575.75 curveto
+ -4.66016 575.379 -3.12109 577.801 -7.75 574.75 curveto
+ -11.4805 572.52 -14.5586 570.762 -15.75 567.75 curveto
+ -16.3203 564.602 -13.2383 573.621 -12.75 575.75 curveto
+ -12.8008 577.578 -8.17969 585.5 -8.75 587.75 curveto
+ -8.75 587.75 -10.1602 587.039 -10.75 585.75 curveto
+ -10.75 585.75 -10.3789 586.16 -10.75 589.75 curveto
+ -10.75 589.75 -11.9219 595.84 -13.75 599.75 curveto
+ -15.0 602.879 -17.1992 607.059 -17.75 607.75 curveto
+ -18.0781 608.82 -18.0781 615.199 -19.75 612.75 curveto
+ -23.75 609.75 lineto
+ -23.75 609.75 -20.2813 612.34 -22.75 614.75 curveto
+ -22.75 614.75 -21.6016 620.922 -23.75 623.75 curveto
+ -23.75 623.75 -31.2813 633.02 -32.75 633.75 curveto
+ -34.8008 635.219 -33.75 634.75 -33.75 634.75 curveto
+ -33.75 634.75 -39.8594 639.398 -33.75 637.75 curveto
+ -33.75 637.75 -29.0781 635.879 -25.75 635.75 curveto
+ -25.75 635.75 -17.4219 633.68 -21.75 638.75 curveto
+ -26.2188 642.922 -37.2188 648.859 -41.75 648.75 curveto
+ -42.75 646.75 lineto
+ -54.75 649.75 lineto
+ -53.75 648.75 lineto
+ -53.75 648.75 -53.0586 648.859 -57.75 649.75 curveto
+ -62.3008 649.738 -68.6797 648.199 -69.75 649.75 curveto
+ -71.7617 652.16 -75.5 653.262 -74.75 651.75 curveto
+ -74.6211 650.18 -74.75 647.75 -74.75 647.75 curveto
+ -74.75 647.75 -79.8984 654.359 -78.75 651.75 curveto
+ -78.5781 649.52 -69.5586 643.801 -67.75 636.75 curveto
+ -79.75 645.75 lineto
+ -83.75 649.75 lineto
+ -83.75 649.75 -87.3789 646.879 -87.75 648.75 curveto
+ -87.8203 650.398 -92.8789 656.781 -93.75 656.75 curveto
+ -95.5195 656.34 -97.7188 659.422 -97.75 656.75 curveto
+ -97.2813 653.699 -105.75 647.75 -105.75 647.75 curveto
+ -105.75 647.75 -109.16 649.738 -110.75 647.75 curveto
+ -112.238 646.66 -116.75 669.75 -116.75 669.75 curveto
+ -144.75 681.75 lineto
+ -192.75 685.75 lineto
+ -173.75 692.75 lineto
+ -106.75 705.75 lineto
+ closepath
+fill
+
+
+% 142 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 2.2 setlinewidth
+ 0.7 1.0 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -126.75 486.75 moveto
+ -126.75 486.75 -110.039 504.98 -100.75 507.75 curveto
+ -100.75 507.75 -86.0586 515.32 -58.75 506.75 curveto
+stroke
+
+
+% 143 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 2.2 setlinewidth
+ 0.7 1.0 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -97.75 509.75 moveto
+ -97.75 509.75 -69.5586 518.18 -52.75 513.75 curveto
+ -52.75 513.75 -32.3789 511.359 -22.75 495.75 curveto
+stroke
+
+
+% 144 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 2.2 setlinewidth
+ 0.7 1.0 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -93.75 510.75 moveto
+ -93.75 510.75 -74.6211 518.621 -58.75 520.75 curveto
+ -58.75 520.75 -40.0781 523.898 -21.75 515.75 curveto
+ -21.75 515.75 -8.39844 509.379 -2.75 497.75 curveto
+stroke
+
+
+% 145 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 2.2 setlinewidth
+ 0.7 1.0 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -94.75 510.75 moveto
+ -94.75 510.75 -77.4805 522.359 -76.75 523.75 curveto
+ -76.75 523.75 -68.6797 536.0 -54.75 536.75 curveto
+ -54.75 536.75 -30.8398 535.559 -11.75 526.75 curveto
+stroke
+
+
+% 146 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -92.75 519.75 moveto
+ -94.6797 518.543 -124.75 486.75 -124.75 486.75 curveto
+ -163.059 446.457 -132.75 483.75 -132.75 483.75 curveto
+ -123.898 489.359 -113.75 509.75 -113.75 509.75 curveto
+ -112.461 513.121 -128.75 501.75 -128.75 501.75 curveto
+ -133.578 501.238 -148.75 479.75 -148.75 479.75 curveto
+ -141.059 482.762 -146.75 474.75 -146.75 474.75 curveto
+ -149.422 472.641 -171.75 455.75 -171.75 455.75 curveto
+ -175.82 451.078 -179.75 449.75 -179.75 449.75 curveto
+ -195.621 455.039 -188.75 440.75 -188.75 440.75 curveto
+ -191.223 433.039 -197.75 445.75 -197.75 445.75 curveto
+ -209.699 464.281 -191.75 461.75 -191.75 461.75 curveto
+ -158.66 458.559 -150.75 475.75 -150.75 475.75 curveto
+ -148.539 478.801 -157.75 475.75 -157.75 475.75 curveto
+ -167.461 473.961 -150.75 489.75 -150.75 489.75 curveto
+ -152.941 489.801 -162.75 482.75 -162.75 482.75 curveto
+ -174.5 472.199 -176.75 474.75 -176.75 474.75 curveto
+ -196.5 484.078 -207.75 475.75 -207.75 475.75 curveto
+ -210.141 473.961 -203.98 466.48 -205.75 460.75 curveto
+ -207.5 455.039 -212.75 441.75 -212.75 441.75 curveto
+ -210.141 439.641 -210.75 427.75 -210.75 427.75 curveto
+ -229.063 402.238 -218.75 404.75 -218.75 404.75 curveto
+ -201.34 404.879 -217.75 396.75 -217.75 396.75 curveto
+ -221.141 394.32 -230.75 386.75 -230.75 386.75 curveto
+ -227.742 387.719 -225.75 381.75 -225.75 381.75 curveto
+ -231.262 377.598 -227.75 372.75 -227.75 372.75 curveto
+ -221.582 371.0 -220.75 366.75 -220.75 366.75 curveto
+ -227.742 357.801 -216.75 357.75 -216.75 357.75 curveto
+ -220.699 352.52 -215.75 339.75 -215.75 339.75 curveto
+ -210.141 339.32 -202.75 332.75 -202.75 332.75 curveto
+ -205.742 327.879 -194.75 321.75 -194.75 321.75 curveto
+ -185.063 319.957 -187.75 312.75 -187.75 312.75 curveto
+ -179.34 305.879 -176.75 288.75 -176.75 288.75 curveto
+ -175.82 276.84 -173.18 273.32 -178.75 275.75 curveto
+ -184.621 277.719 -183.75 291.75 -183.75 291.75 curveto
+ -178.461 308.52 -225.75 325.75 -225.75 325.75 curveto
+ -229.941 327.879 -230.75 333.75 -230.75 333.75 curveto
+ -233.02 333.16 -242.75 324.75 -242.75 324.75 curveto
+ -251.063 312.48 -251.75 322.75 -251.75 322.75 curveto
+ -252.82 326.559 -250.75 332.75 -250.75 332.75 curveto
+ -257.66 356.918 -242.75 363.75 -242.75 363.75 curveto
+ -231.262 400.918 -246.75 391.75 -246.75 391.75 curveto
+ -249.742 385.52 -261.75 379.75 -261.75 379.75 curveto
+ -265.75 382.75 lineto
+ -263.82 387.719 -272.75 394.75 -272.75 394.75 curveto
+ -276.141 387.277 -282.75 395.75 -282.75 395.75 curveto
+ -286.699 422.918 -300.75 406.75 -300.75 406.75 curveto
+ -304.742 405.758 -305.75 412.75 -305.75 412.75 curveto
+ -310.02 424.68 -305.75 439.75 -305.75 439.75 curveto
+ -310.02 440.078 -320.75 433.75 -320.75 433.75 curveto
+ -323.66 437.438 -313.543 455.918 -317.75 453.75 curveto
+ -322.34 450.641 -326.75 448.75 -326.75 448.75 curveto
+ -328.063 451.078 -316.75 464.75 -316.75 464.75 curveto
+ -312.223 467.801 -306.75 489.75 -306.75 489.75 curveto
+ -314.422 486.281 -303.75 502.75 -303.75 502.75 curveto
+ -303.422 506.52 -309.75 518.75 -309.75 518.75 curveto
+ -309.141 526.32 -309.75 525.75 -309.75 525.75 curveto
+ -313.102 524.559 -321.902 522.801 -314.75 529.75 curveto
+ -306.941 536.879 -315.75 541.75 -315.75 541.75 curveto
+ -320.141 545.238 -304.75 544.75 -304.75 544.75 curveto
+ -299.461 549.641 -299.75 553.75 -299.75 553.75 curveto
+ -308.699 551.84 -292.859 567.68 -289.75 571.75 curveto
+ -287.582 575.602 -297.75 581.75 -297.75 581.75 curveto
+ -312.66 585.281 -299.75 588.75 -299.75 588.75 curveto
+ -278.34 588.359 -289.75 599.75 -289.75 599.75 curveto
+ -296.82 599.801 -294.75 602.75 -294.75 602.75 curveto
+ -289.34 603.762 -278.75 610.75 -278.75 610.75 curveto
+ -274.383 614.762 -278.75 613.75 -278.75 613.75 curveto
+ -296.82 612.559 -264.75 624.75 -264.75 624.75 curveto
+ -273.941 624.879 -253.75 636.75 -253.75 636.75 curveto
+ -251.941 638.078 -248.75 646.75 -248.75 646.75 curveto
+ -241.82 652.16 -236.75 659.75 -236.75 659.75 curveto
+ -236.102 664.48 -230.75 669.75 -230.75 669.75 curveto
+ -218.063 684.719 -211.75 684.75 -211.75 684.75 curveto
+ -195.621 688.238 -189.75 687.75 -189.75 687.75 curveto
+ -131.75 682.75 lineto
+ -102.781 668.441 -111.75 645.75 -111.75 645.75 curveto
+ -118.398 636.102 -128.75 640.75 -128.75 640.75 curveto
+ -133.578 647.102 -146.75 644.75 -146.75 644.75 curveto
+ -168.781 641.16 -165.75 644.75 -165.75 644.75 curveto
+ -163.281 650.18 -145.461 657.0 -144.75 657.75 curveto
+ -145.02 658.32 -135.75 661.75 -135.75 661.75 curveto
+ -132.039 663.379 -126.75 673.75 -126.75 673.75 curveto
+ -123.68 677.238 -140.75 670.75 -140.75 670.75 curveto
+ -139.738 669.762 -147.75 665.75 -147.75 665.75 curveto
+ -167.02 666.461 -178.75 654.75 -178.75 654.75 curveto
+ -190.563 636.32 -190.75 645.75 -190.75 645.75 curveto
+ -193.859 655.68 -180.75 678.75 -180.75 678.75 curveto
+ -181.32 681.199 -190.75 673.75 -190.75 673.75 curveto
+ -191.883 676.141 -192.75 669.75 -192.75 669.75 curveto
+ -192.98 667.121 -196.75 658.75 -196.75 658.75 curveto
+ -200.242 644.02 -203.75 651.75 -203.75 651.75 curveto
+ -209.75 641.75 lineto
+ -210.801 638.961 -203.75 630.75 -203.75 630.75 curveto
+ -203.98 627.52 -204.859 627.738 -198.75 619.75 curveto
+ -192.543 611.02 -196.75 605.75 -196.75 605.75 curveto
+ -194.742 598.922 -204.75 599.75 -204.75 599.75 curveto
+ -207.281 596.941 -210.75 596.75 -210.75 596.75 curveto
+ -213.0 594.738 -215.75 595.75 -215.75 595.75 curveto
+ -217.402 599.578 -223.75 597.75 -223.75 597.75 curveto
+ -225.762 600.02 -234.75 600.75 -234.75 600.75 curveto
+ -235.883 603.32 -236.32 605.078 -239.75 605.75 curveto
+ -243.801 606.398 -216.75 653.75 -216.75 653.75 curveto
+ -223.781 654.578 -214.75 667.75 -214.75 667.75 curveto
+ -212.34 675.48 -224.883 659.422 -227.75 657.75 curveto
+ -229.723 656.34 -230.82 653.922 -228.75 653.75 curveto
+ -227.301 654.359 -225.32 651.941 -226.75 651.75 curveto
+ -228.402 651.5 -242.699 635.0 -246.75 623.75 curveto
+ -250.18 612.559 -256.781 608.16 -263.75 601.75 curveto
+ -270.422 594.961 -269.75 568.75 -269.75 568.75 curveto
+ -269.102 558.66 -275.75 546.75 -275.75 546.75 curveto
+ -277.902 542.82 -273.75 522.75 -273.75 522.75 curveto
+ -271.082 520.379 -272.75 519.75 -272.75 519.75 curveto
+ -273.723 518.18 -280.75 503.75 -280.75 503.75 curveto
+ -279.223 503.879 -282.75 499.75 -282.75 499.75 curveto
+ -288.902 493.32 -281.75 496.75 -281.75 496.75 curveto
+ -275.262 498.379 -282.75 487.75 -282.75 487.75 curveto
+ -284.281 485.621 -274.75 490.75 -274.75 490.75 curveto
+ -264.262 491.34 -276.75 483.75 -276.75 483.75 curveto
+ -286.48 475.5 -273.75 480.75 -273.75 480.75 curveto
+ -268.883 482.32 -272.75 474.75 -272.75 474.75 curveto
+ -275.922 473.078 -294.75 465.75 -294.75 465.75 curveto
+ -295.281 461.199 -291.75 455.75 -291.75 455.75 curveto
+ -292.422 451.301 -289.75 447.75 -289.75 447.75 curveto
+ -288.68 438.539 -287.75 437.75 -287.75 437.75 curveto
+ -283.402 437.438 -275.75 422.75 -275.75 422.75 curveto
+ -273.281 419.398 -261.75 405.75 -261.75 405.75 curveto
+ -259.859 398.5 -239.75 406.75 -239.75 406.75 curveto
+ -232.801 402.68 -234.75 406.75 -234.75 406.75 curveto
+ -234.563 408.84 -239.75 415.75 -239.75 415.75 curveto
+ -247.543 418.301 -244.75 429.75 -244.75 429.75 curveto
+ -249.082 431.719 -236.762 434.801 -236.75 435.75 curveto
+ -237.199 437.438 -243.75 438.75 -243.75 438.75 curveto
+ -252.383 441.18 -247.75 443.75 -247.75 443.75 curveto
+ -246.883 448.219 -249.75 454.75 -249.75 454.75 curveto
+ -262.941 455.258 -249.75 472.75 -249.75 472.75 curveto
+ -238.301 481.441 -236.75 487.75 -236.75 487.75 curveto
+ -251.063 496.84 -242.043 510.48 -242.75 514.75 curveto
+ -242.48 518.398 -243.75 541.75 -243.75 541.75 curveto
+ -241.602 548.98 -238.75 563.75 -238.75 563.75 curveto
+ -240.723 569.66 -248.75 583.75 -248.75 583.75 curveto
+ -251.941 588.141 -261.621 593.422 -258.75 596.75 curveto
+ -256.781 600.02 -247.75 597.75 -247.75 597.75 curveto
+ -239.621 599.578 -240.75 593.75 -240.75 593.75 curveto
+ -238.52 592.762 -237.75 587.75 -237.75 587.75 curveto
+ -236.848 578.535 -226.75 571.75 -226.75 571.75 curveto
+ -214.762 564.82 -224.75 560.75 -224.75 560.75 curveto
+ -231.48 553.16 -220.75 552.75 -220.75 552.75 curveto
+ -208.602 554.922 -217.75 543.75 -217.75 543.75 curveto
+ -229.5 529.621 -225.75 526.75 -225.75 526.75 curveto
+ -214.98 525.441 -228.75 515.75 -228.75 515.75 curveto
+ -228.75 515.75 -227.961 517.52 -227.75 515.75 curveto
+ -228.402 513.559 -231.699 508.941 -232.75 506.75 curveto
+ -233.461 504.539 -228.75 504.75 -228.75 504.75 curveto
+ -229.723 493.762 -212.75 498.75 -212.75 498.75 curveto
+ -212.75 498.75 -212.781 498.379 -210.75 497.75 curveto
+ -209.262 497.941 -196.941 498.82 -190.75 500.75 curveto
+ -184.18 503.66 -176.75 503.75 -176.75 503.75 curveto
+ -176.75 503.75 -172.301 501.68 -163.75 501.75 curveto
+ -155.578 502.121 -146.75 498.75 -146.75 498.75 curveto
+ -141.941 499.48 -151.398 504.32 -151.75 503.75 curveto
+ -151.84 503.879 -158.0 510.039 -148.75 509.75 curveto
+ -125.223 507.582 -113.75 518.75 -113.75 518.75 curveto
+ -111.141 520.379 -108.75 523.75 -108.75 523.75 curveto
+ -97.2813 525.66 -109.75 509.75 -109.75 509.75 curveto
+ -111.141 508.281 -109.75 506.75 -109.75 506.75 curveto
+ -108.719 508.941 -99.75 514.75 -99.75 514.75 curveto
+ -97.0469 515.949 -95.5469 517.418 -92.75 519.75 curveto
+ closepath
+fill
+
+
+% 147 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 2.2 setlinewidth
+ 0.7 1.0 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -66.75 532.75 moveto
+ -66.75 532.75 -79.461 526.762 -82.75 523.75 curveto
+ -85.1797 520.602 -100.75 507.75 -100.75 507.75 curveto
+ -100.75 507.75 -94.6406 510.262 -91.75 511.75 curveto
+ -88.9219 514.219 -76.75 522.75 -76.75 522.75 curveto
+ -76.75 522.75 -72.8594 529.84 -66.75 532.75 curveto
+ closepath
+fill
+
+
+% 148 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.4 0.2 0.8 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -2.75 566.75 moveto
+ -3.26172 567.398 -2.68359 570.383 -2.75 570.75 curveto
+ -1.33594 573.981 8.25 575.75 8.25 575.75 curveto
+ 8.78906 574.098 8.85156 572.344 8.25 570.75 curveto
+ 8.25 570.75 3.37891 564.469 -2.75 566.75 curveto
+ closepath
+fill
+
+
+% 149 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.6 0.4 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -2.75 567.75 moveto
+ -2.39453 567.281 -2.875 570.465 -2.75 570.75 curveto
+ -1.55469 573.981 8.25 575.75 8.25 575.75 curveto
+ 8.78906 574.207 8.85156 572.453 8.25 570.75 curveto
+ 8.25 570.75 4.03906 565.02 -2.75 567.75 curveto
+ closepath
+fill
+
+
+% 150 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 2.25 567.75 moveto
+ 2.62891 567.301 3.18359 568.555 3.25 569.75 curveto
+ 3.18359 571.645 2.62891 572.898 2.25 572.75 curveto
+ 1.25391 572.898 0.695313 571.645 0.25 569.75 curveto
+ 0.695313 568.555 1.25391 567.301 2.25 567.75 curveto
+ closepath
+fill
+
+
+% 151 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 2.25 569.75 moveto
+fill
+
+
+% 152 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 52.25 459.75 moveto
+ 52.25 459.75 58.2617 448.438 31.25 454.75 curveto
+ 31.25 454.75 15.5781 456.359 13.25 458.75 curveto
+ 11.6211 458.117 2.41797 454.891 -0.75 453.75 curveto
+ -8.17969 452.398 -17.75 463.75 -17.75 463.75 curveto
+ -17.75 463.75 -22.4805 474.949 -25.75 474.75 curveto
+ -28.6406 474.949 -24.75 472.75 -24.75 472.75 curveto
+ -24.75 472.75 -17.8594 462.078 -18.75 460.75 curveto
+ -18.75 460.75 -12.5781 438.32 5.25002 437.75 curveto
+ 5.25002 437.75 22.7852 436.395 21.25 429.75 curveto
+ 21.25 429.75 11.6211 432.598 9.25 429.75 curveto
+ 9.25 429.75 -2.89844 430.398 6.25 423.75 curveto
+ 13.25 410.75 lineto
+ 13.25 410.75 13.2266 406.289 24.25 409.75 curveto
+ 35.1602 413.898 46.25 427.75 46.25 427.75 curveto
+ 46.25 427.75 64.0352 444.094 52.25 459.75 curveto
+ closepath
+fill
+
+
+% 153 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.1 0.4 0.4 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 53.25 454.75 moveto
+ 53.25 454.75 55.6211 444.48 15.25 455.75 curveto
+ 15.25 455.75 10.3008 455.918 7.25 454.75 curveto
+ 5.01953 454.16 -8.17969 451.078 -10.75 452.75 curveto
+ -10.75 452.75 -2.46094 437.438 10.25 438.75 curveto
+ 10.25 438.75 24.8203 437.438 24.25 431.75 curveto
+ 24.25 431.75 19.9805 424.238 14.25 421.75 curveto
+ 14.25 421.75 11.6211 418.957 12.25 415.75 curveto
+ 12.5 411.918 15.5781 410.16 18.25 409.75 curveto
+ 19.9805 408.398 23.5 411.918 25.25 411.75 curveto
+ 27.0195 411.918 36.2617 418.957 41.25 423.75 curveto
+ 45.9414 429.52 55.1797 442.719 54.25 445.75 curveto
+ 54.3008 448.879 53.25 454.75 53.25 454.75 curveto
+ closepath
+fill
+
+
+% 154 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.3 0.6 0.6 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 50.25 435.75 moveto
+ 47.0391 431.5 43.5195 426.879 41.25 423.75 curveto
+ 36.2617 418.957 27.0195 411.918 25.25 411.75 curveto
+ 23.5 411.918 19.9805 408.398 18.25 409.75 curveto
+ 15.5781 410.16 12.5 411.918 12.25 415.75 curveto
+ 11.6211 418.957 14.25 421.75 14.25 421.75 curveto
+ 18.0742 423.285 21.0859 427.125 23.25 429.75 curveto
+ 23.25 429.75 22.6211 426.879 28.25 427.75 curveto
+ 34.0586 428.641 39.7813 431.719 41.25 434.75 curveto
+ 43.3008 438.758 45.9414 441.398 44.25 437.75 curveto
+ 42.4219 433.48 39.7813 429.52 38.25 428.75 curveto
+ 36.2617 428.641 36.6992 427.32 39.25 427.75 curveto
+ 41.9805 428.199 45.0586 428.641 50.25 434.75 curveto
+fill
+
+
+% 155 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.4 0.85 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 53.25 458.75 moveto
+ 53.25 458.75 50.7813 473.961 49.25 478.75 curveto
+ 49.25 478.75 50.3398 485.84 47.25 490.75 curveto
+ 45.0586 495.078 42.8594 501.898 39.25 507.75 curveto
+ 36.2617 513.781 36.0391 518.18 31.25 519.75 curveto
+ 27.2383 521.699 20.6406 531.16 17.25 532.75 curveto
+ 14.4805 533.359 14.25 532.75 14.25 532.75 curveto
+ 14.25 532.75 7.21875 548.762 -7.75 544.75 curveto
+ -7.75 544.75 10.0781 547.441 -7.75 557.75 curveto
+ -7.75 557.75 -2.01953 556.57 -5.75 564.75 curveto
+ -8.07031 569.406 -7.51953 561.961 4.25 548.75 curveto
+ 4.25 548.75 10.0781 539.52 16.25 535.75 curveto
+ 21.5195 532.922 34.7188 525.219 36.25 520.75 curveto
+ 37.3594 516.859 40.8789 510.48 43.25 508.75 curveto
+ 45.2813 506.961 48.3594 502.34 49.25 498.75 curveto
+ 49.25 498.75 50.1211 494.199 51.25 492.75 curveto
+ 53.1992 491.559 53.4219 488.039 53.25 485.75 curveto
+ 53.4219 483.641 55.6211 480.559 55.25 477.75 curveto
+ 55.25 477.75 54.5195 457.02 55.25 454.75 curveto
+ 53.25 458.75 lineto
+ closepath
+fill
+
+
+% 156 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 62.25 453.75 moveto
+ 62.25 453.75 64.4219 455.48 69.25 448.75 curveto
+ 69.25 448.75 61.2305 412.578 61.25 410.75 curveto
+ 61.25 410.75 60.0195 413.348 61.25 421.75 curveto
+ 62.8789 429.188 64.25 442.75 64.25 442.75 curveto
+ 62.25 453.75 lineto
+ closepath
+fill
+
+
+% 157 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.4 0.85 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 38.25 520.75 moveto
+ 38.25 520.75 57.8203 517.078 57.25 484.75 curveto
+ 58.25 457.75 lineto
+ 58.25 457.75 59.5781 485.84 61.25 487.75 curveto
+ 62.2188 489.359 57.8203 501.68 61.25 494.75 curveto
+ 61.25 494.75 76.7383 479.68 68.25 456.75 curveto
+ 68.25 456.75 66.2891 452.73 69.25 457.75 curveto
+ 69.25 457.75 74.6484 471.648 73.25 478.75 curveto
+ 73.25 478.75 73.2188 481.109 71.25 483.75 curveto
+ 71.25 483.75 61.6719 497.059 58.25 499.75 curveto
+ 58.25 499.75 56.7188 515.43 40.25 520.75 curveto
+ 40.25 520.75 33.5117 523.68 38.25 520.75 curveto
+ closepath
+fill
+
+
+% 158 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -114.75 593.75 moveto
+ -115.605 593.809 -115.598 594.875 -115.75 594.75 curveto
+ -117.496 595.445 -117.68 596.617 -117.75 597.75 curveto
+ -119.207 598.934 -119.422 600.617 -119.75 602.75 curveto
+ -120.359 603.027 -120.391 604.078 -119.75 604.75 curveto
+ -118.754 607.535 -117.98 610.227 -116.75 612.75 curveto
+ -116.102 613.391 -115.812 614.266 -115.75 614.75 curveto
+ -115.082 616.445 -113.699 617.535 -112.75 618.75 curveto
+ -112.438 619.473 -113.016 620.488 -111.75 620.75 curveto
+ -111.238 620.699 -109.645 621.336 -109.75 619.75 curveto
+ -108.742 617.363 -109.855 614.586 -110.75 611.75 curveto
+ -110.059 611.141 -110.426 610.125 -110.75 609.75 curveto
+ -111.375 605.316 -110.059 601.629 -108.75 597.75 curveto
+ -109.195 597.691 -109.57 597.473 -109.75 597.75 curveto
+ -108.195 594.453 -106.598 591.762 -104.75 588.75 curveto
+ -103.766 588.051 -102.805 587.043 -102.75 585.75 curveto
+ -101.855 585.008 -101.406 583.945 -101.75 582.75 curveto
+ -97.9023 579.801 -95.4258 575.574 -92.75 571.75 curveto
+ -92.0469 570.594 -92.3672 569.266 -92.75 568.75 curveto
+ -93.8672 568.531 -94.918 569.656 -95.75 570.75 curveto
+ -95.8633 571.355 -96.25 572.07 -96.75 572.75 curveto
+ -96.9375 572.969 -96.7422 573.43 -96.75 573.75 curveto
+ -99.7851 576.145 -101.621 579.375 -104.75 581.75 curveto
+ -106.465 582.344 -108.156 583.441 -109.75 584.75 curveto
+ -110.418 584.75 -110.992 584.477 -111.75 584.75 curveto
+ -113.242 585.984 -113.238 588.227 -113.75 590.75 curveto
+ -113.41 591.301 -113.625 592.746 -114.75 593.75 curveto
+ closepath
+fill
+
+
+% 159 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -104.75 598.75 moveto
+ -105.293 598.418 -105.121 598.883 -104.75 598.75 curveto
+ -105.418 599.477 -105.863 599.684 -105.75 599.75 curveto
+ -106.16 600.277 -105.98 600.695 -105.75 600.75 curveto
+ -108.695 603.543 -108.98 606.871 -107.75 609.75 curveto
+ -108.965 610.82 -109.035 612.211 -108.75 612.75 curveto
+ -107.629 615.012 -107.414 617.129 -106.75 618.75 curveto
+ -105.461 620.223 -103.727 621.594 -101.75 619.75 curveto
+ -101.754 619.719 -101.402 618.852 -101.75 617.75 curveto
+ -101.777 617.891 -102.09 617.73 -101.75 617.75 curveto
+ -101.941 617.285 -101.344 617.035 -101.75 616.75 curveto
+ -101.301 615.094 -100.254 613.43 -100.75 611.75 curveto
+ -101.797 610.176 -102.695 608.133 -103.75 605.75 curveto
+ -102.082 603.852 -103.219 601.16 -101.75 598.75 curveto
+ -101.141 598.934 -101.152 598.508 -101.75 598.75 curveto
+ -101.605 597.75 -102.055 597.305 -102.75 596.75 curveto
+ -102.809 596.852 -103.191 596.848 -103.75 596.75 curveto
+ -104.047 597.383 -104.484 597.918 -104.75 598.75 curveto
+ closepath
+fill
+
+
+% 160 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -173.75 609.75 moveto
+ -175.777 607.703 -176.094 604.629 -173.75 602.75 curveto
+ -174.445 599.461 -178.133 601.637 -180.75 601.75 curveto
+ -180.32 602.648 -180.57 603.023 -180.75 602.75 curveto
+ -182.043 603.047 -182.793 604.184 -183.75 603.75 curveto
+ -184.438 605.691 -186.242 606.465 -186.75 607.75 curveto
+ -188.848 612.047 -188.195 616.746 -185.75 620.75 curveto
+ -185.133 620.598 -185.371 621.168 -184.75 621.75 curveto
+ -184.402 623.996 -182.129 624.344 -179.75 624.75 curveto
+ -178.707 629.363 -177.98 633.797 -175.75 637.75 curveto
+ -174.266 638.137 -173.496 640.047 -171.75 640.75 curveto
+ -170.563 641.629 -169.938 639.895 -169.75 638.75 curveto
+ -169.988 638.52 -170.484 638.27 -170.75 637.75 curveto
+ -170.215 637.691 -169.93 637.566 -169.75 637.75 curveto
+ -169.93 637.273 -170.172 637.129 -170.75 636.75 curveto
+ -169.313 636.078 -167.746 635.555 -167.75 634.75 curveto
+ -166.371 630.211 -169.203 626.773 -170.75 623.75 curveto
+ -171.688 622.004 -170.879 620.609 -169.75 619.75 curveto
+ -169.559 618.516 -169.68 617.273 -169.75 616.75 curveto
+ -170.809 613.77 -172.559 611.855 -173.75 609.75 curveto
+ closepath
+fill
+
+
+% 161 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -133.75 589.75 moveto
+ -131.738 587.414 -127.984 584.59 -130.75 582.75 curveto
+ -131.406 582.324 -131.813 582.32 -131.75 582.75 curveto
+ -134.227 584.191 -136.43 585.184 -138.75 585.75 curveto
+ -139.246 585.855 -139.547 585.34 -139.75 585.75 curveto
+ -141.727 586.293 -143.938 586.227 -144.75 587.75 curveto
+ -149.383 587.453 -153.305 588.68 -156.75 589.75 curveto
+ -158.313 590.613 -159.711 591.227 -160.75 591.75 curveto
+ -162.543 592.414 -163.867 593.434 -164.75 594.75 curveto
+ -165.238 594.84 -165.629 594.738 -165.75 594.75 curveto
+ -165.879 595.688 -166.934 595.828 -166.75 596.75 curveto
+ -167.309 596.77 -167.145 597.203 -167.75 597.75 curveto
+ -169.641 599.109 -170.652 601.328 -169.75 603.75 curveto
+ -169.055 604.578 -168.781 605.258 -167.75 605.75 curveto
+ -166.965 606.785 -165.75 605.844 -164.75 605.75 curveto
+ -164.426 605.488 -163.625 605.68 -162.75 605.75 curveto
+ -162.254 604.977 -160.789 605.621 -159.75 604.75 curveto
+ -158.344 604.375 -156.98 604.188 -155.75 603.75 curveto
+ -155.07 603.684 -154.215 603.789 -153.75 602.75 curveto
+ -153.895 603.246 -153.73 603.504 -153.75 603.75 curveto
+ -151.516 603.047 -150.129 602.809 -148.75 600.75 curveto
+ -148.586 600.801 -148.098 601.0 -147.75 600.75 curveto
+ -146.871 599.961 -146.426 598.605 -144.75 597.75 curveto
+ -144.992 597.73 -144.605 597.914 -144.75 597.75 curveto
+ -143.68 597.297 -143.277 596.594 -142.75 595.75 curveto
+ -142.211 595.852 -141.77 596.207 -141.75 596.75 curveto
+ -142.074 598.629 -142.793 600.598 -141.75 602.75 curveto
+ -144.445 605.434 -147.215 607.574 -148.75 610.75 curveto
+ -149.215 612.961 -149.977 615.324 -149.75 617.75 curveto
+ -149.844 617.82 -149.527 618.625 -149.75 618.75 curveto
+ -149.043 619.949 -150.039 621.121 -148.75 621.75 curveto
+ -147.566 623.238 -146.145 622.277 -144.75 620.75 curveto
+ -143.219 620.27 -140.945 619.508 -138.75 620.75 curveto
+ -138.102 621.73 -137.465 622.727 -136.75 623.75 curveto
+ -135.504 625.32 -135.871 626.902 -135.75 628.75 curveto
+ -135.957 628.762 -135.609 628.914 -135.75 628.75 curveto
+ -135.609 629.207 -135.852 629.352 -135.75 629.75 curveto
+ -135.223 630.188 -134.922 631.352 -133.75 631.75 curveto
+ -134.137 632.902 -133.391 633.875 -132.75 633.75 curveto
+ -130.238 634.965 -128.395 632.863 -126.75 632.75 curveto
+ -125.746 632.762 -125.234 633.902 -124.75 634.75 curveto
+ -124.047 634.5 -123.27 634.535 -122.75 633.75 curveto
+ -122.117 633.688 -121.469 633.563 -120.75 633.75 curveto
+ -118.855 632.855 -117.449 631.652 -115.75 630.75 curveto
+ -114.188 629.77 -113.137 628.191 -111.75 626.75 curveto
+ -110.914 625.469 -110.766 622.816 -112.75 622.75 curveto
+ -114.355 621.551 -115.789 624.523 -117.75 623.75 curveto
+ -118.293 624.109 -118.52 623.766 -118.75 623.75 curveto
+ -118.828 623.219 -119.066 623.473 -119.75 623.75 curveto
+ -120.223 622.66 -121.504 622.289 -122.75 621.75 curveto
+ -123.602 620.332 -125.523 620.793 -126.75 619.75 curveto
+ -128.32 618.043 -127.707 615.094 -129.75 613.75 curveto
+ -129.195 612.215 -128.527 610.813 -127.75 608.75 curveto
+ -127.848 607.914 -128.941 606.598 -130.75 606.75 curveto
+ -131.66 606.801 -131.945 607.637 -132.75 608.75 curveto
+ -132.773 608.527 -133.289 608.199 -132.75 607.75 curveto
+ -132.742 605.336 -131.613 603.145 -130.75 600.75 curveto
+ -131.043 600.121 -130.707 599.898 -130.75 599.75 curveto
+ -129.766 595.457 -125.309 592.824 -122.75 589.75 curveto
+ -122.066 588.789 -122.063 587.414 -122.75 586.75 curveto
+ -124.055 585.445 -126.211 587.148 -127.75 587.75 curveto
+ -128.313 589.027 -129.258 590.063 -130.75 589.75 curveto
+ -131.008 589.988 -131.266 590.586 -131.75 590.75 curveto
+ -132.004 590.883 -132.555 590.637 -132.75 590.75 curveto
+ -134.773 592.168 -136.32 593.383 -137.75 594.75 curveto
+ -138.445 594.836 -138.824 594.66 -138.75 594.75 curveto
+ -139.418 594.957 -139.625 595.383 -139.75 595.75 curveto
+ -140.363 595.809 -140.629 595.488 -140.75 594.75 curveto
+ -140.129 594.797 -140.125 593.742 -139.75 593.75 curveto
+ -138.633 593.227 -138.016 592.66 -137.75 591.75 curveto
+ -136.953 591.957 -136.227 592.23 -135.75 591.75 curveto
+ -135.457 590.902 -134.152 590.422 -133.75 589.75 curveto
+ closepath
+fill
+
+
+% 162 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -72.75 643.75 moveto
+ -72.75 643.75 -62.2578 646.961 -49.75 618.75 curveto
+ -49.75 618.75 -47.3398 613.0 -44.75 610.75 curveto
+ -42.0586 608.602 -29.7383 604.641 -27.75 599.75 curveto
+ -15.75 582.75 lineto
+ -15.75 582.75 -32.3789 600.238 -35.75 602.75 curveto
+ -35.75 602.75 -44.6992 612.121 -40.75 604.75 curveto
+ -40.75 604.75 -25.7813 592.762 -26.75 582.75 curveto
+ -26.75 582.75 -20.9414 566.801 -19.75 564.75 curveto
+ -19.75 564.75 -37.6602 599.801 -40.75 600.75 curveto
+ -42.9414 602.441 -44.2617 602.441 -42.75 598.75 curveto
+ -41.6211 594.52 -41.1797 576.48 -37.75 574.75 curveto
+ -37.75 574.75 -46.8984 596.719 -45.75 599.75 curveto
+ -45.75 599.75 -49.5391 604.199 -51.75 598.75 curveto
+ -50.75 580.75 lineto
+ -55.75 567.75 lineto
+ -55.75 567.75 -53.0586 580.0 -54.75 596.75 curveto
+ -54.75 596.75 -52.6211 608.602 -56.75 602.75 curveto
+ -61.4219 596.281 -71.9805 589.68 -71.75 584.75 curveto
+ -71.75 584.75 -66.2617 603.762 -55.75 608.75 curveto
+ -51.75 602.75 lineto
+ -50.75 604.75 lineto
+ -50.75 604.75 -46.461 605.52 -51.75 612.75 curveto
+ -56.1406 620.48 -55.75 621.75 -55.75 621.75 curveto
+ -55.75 621.75 -62.7383 613.441 -64.75 613.75 curveto
+ -64.75 613.75 -79.0195 621.801 -80.75 594.75 curveto
+ -80.75 594.75 -87.8203 610.801 -77.75 618.75 curveto
+ -77.75 618.75 -61.4219 620.48 -62.75 625.75 curveto
+ -70.75 639.75 lineto
+ -74.6211 645.559 -72.75 642.75 -72.75 642.75 curveto
+fill
+
+
+% 163 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -50.75 625.75 moveto
+ -50.75 625.75 -36.3398 625.762 -32.75 619.75 curveto
+ -24.75 609.75 lineto
+ -24.75 609.75 -43.8203 620.48 -47.75 621.75 curveto
+ -52.6211 623.121 -50.75 625.75 -50.75 625.75 curveto
+ closepath
+fill
+
+
+% 164 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -6.75 618.75 moveto
+ -6.75 618.75 -4.21875 617.398 -3.75 614.75 curveto
+ -3.33984 611.238 -0.699219 610.801 -1.75 607.75 curveto
+ -2.46094 604.641 -4.66016 602.0 -4.75 606.75 curveto
+ -4.66016 610.801 -6.42188 613.0 -7.75 614.75 curveto
+ -8.17969 615.641 -9.94141 620.48 -6.75 618.75 curveto
+ closepath
+fill
+
+
+% 165 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 3.25 551.75 moveto
+ 3.25 551.75 12.5 555.801 16.25 559.75 curveto
+ 19.5391 563.719 19.043 558.039 24.25 558.75 curveto
+ 30.8125 558.926 29.25 576.75 29.25 576.75 curveto
+ 34.25 567.75 lineto
+ 34.25 567.75 35.3789 552.281 26.25 554.75 curveto
+ 22.2813 556.211 20.8594 554.48 22.25 553.75 curveto
+ 24.3789 552.719 16.4609 552.281 19.25 550.75 curveto
+ 22.6211 548.762 6.78125 554.48 9.25 542.75 curveto
+ 3.25 551.75 lineto
+ closepath
+fill
+
+
+% 166 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 17.25 535.75 moveto
+ 17.25 535.75 34.0586 530.719 38.25 541.75 curveto
+ 38.25 541.75 43.3008 538.641 41.25 535.75 curveto
+ 38.4609 532.039 37.25 531.75 37.25 531.75 curveto
+ 37.25 531.75 31.1992 530.281 32.25 529.75 curveto
+ 32.5195 528.52 35.25 524.75 35.25 524.75 curveto
+ 35.25 524.75 23.9414 531.379 17.25 535.75 curveto
+ closepath
+fill
+
+
+% 167 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -233.75 449.75 moveto
+ -233.652 447.191 -231.813 446.309 -229.75 445.75 curveto
+ -227.613 446.633 -224.754 450.051 -222.75 447.75 curveto
+ -222.16 448.309 -221.305 448.371 -220.75 448.75 curveto
+ -220.414 450.09 -220.711 451.238 -220.75 451.75 curveto
+ -219.738 453.516 -218.957 455.019 -218.75 456.75 curveto
+ -221.148 457.363 -221.801 459.457 -221.75 461.75 curveto
+ -221.203 461.68 -220.734 461.898 -220.75 462.75 curveto
+ -221.156 462.637 -221.508 462.887 -221.75 462.75 curveto
+ -221.652 463.031 -221.492 462.773 -221.75 462.75 curveto
+ -220.699 462.914 -220.836 463.613 -220.75 463.75 curveto
+ -221.621 465.961 -223.84 466.25 -225.75 464.75 curveto
+ -225.602 465.563 -226.164 465.348 -226.75 465.75 curveto
+ -226.586 466.016 -227.035 466.598 -227.75 466.75 curveto
+ -227.824 468.266 -229.613 467.051 -230.75 467.75 curveto
+ -231.676 468.629 -232.844 469.398 -233.75 468.75 curveto
+ -236.02 467.621 -237.898 466.289 -238.75 464.75 curveto
+ -239.852 463.457 -240.113 462.047 -239.75 460.75 curveto
+ -240.008 460.281 -238.492 460.668 -237.75 459.75 curveto
+ -237.402 457.723 -239.418 457.152 -239.75 455.75 curveto
+ -240.469 455.297 -240.176 454.965 -239.75 454.75 curveto
+ -239.379 454.715 -238.516 454.922 -238.75 454.75 curveto
+ -239.738 450.91 -236.703 450.164 -233.75 449.75 curveto
+ closepath
+fill
+
+
+% 168 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -223.75 427.75 moveto
+ -223.551 429.891 -221.793 431.824 -222.75 433.75 curveto
+ -223.27 433.551 -223.414 433.309 -223.75 433.75 curveto
+ -223.711 433.309 -223.855 433.551 -223.75 433.75 curveto
+ -225.645 431.262 -229.664 430.242 -229.75 426.75 curveto
+ -229.48 426.617 -228.285 425.609 -229.75 424.75 curveto
+ -227.285 423.418 -227.227 420.809 -225.75 418.75 curveto
+ -224.84 419.055 -223.508 419.453 -221.75 419.75 curveto
+ -222.629 421.695 -222.5 423.547 -223.75 424.75 curveto
+ -223.879 425.766 -223.563 426.953 -223.75 427.75 curveto
+ closepath
+fill
+
+
+% 169 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -40.75 437.75 moveto
+ -40.75 437.75 -22.1953 426.73 -37.75 443.75 curveto
+ -47.3398 454.16 -58.75 460.75 -58.75 460.75 curveto
+ -58.75 460.75 -69.7813 465.16 -73.75 466.75 curveto
+ -77.6992 467.801 -94.4219 473.52 -97.75 473.75 curveto
+ -101.461 474.398 -112.02 478.801 -119.75 474.75 curveto
+ -126.98 470.0 -135.75 464.75 -135.75 464.75 curveto
+ -135.75 464.75 -117.738 474.398 -113.75 471.75 curveto
+ -109.82 469.121 -101.898 469.559 -95.75 465.75 curveto
+ -95.75 465.75 -79.0195 461.199 -75.75 458.75 curveto
+ -71.9805 456.801 -60.5391 444.039 -58.75 444.75 curveto
+ -57.0195 445.801 -59.2188 446.238 -60.75 449.75 curveto
+ -61.8594 452.398 -59.6602 454.16 -50.75 446.75 curveto
+ -42.0586 440.078 -40.75 437.75 -40.75 437.75 curveto
+ closepath
+fill
+
+
+% 170 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -48.75 444.75 moveto
+ -48.75 444.75 -50.4375 458.785 -59.75 456.75 curveto
+ -59.75 456.75 -68.8125 461.543 -71.75 463.75 curveto
+ -71.75 463.75 -80.7578 465.578 -81.75 466.75 curveto
+ -102.527 475.828 -118.715 470.855 -119.75 471.75 curveto
+ -119.918 473.32 -141.508 465.492 -145.75 460.75 curveto
+ -145.906 460.508 -134.223 467.152 -123.75 468.75 curveto
+ -114.453 471.008 -90.6914 468.961 -78.75 462.75 curveto
+ -75.4258 461.211 -65.5859 454.852 -62.75 454.75 curveto
+ -60.0156 455.094 -48.75 444.75 -48.75 444.75 curveto
+ closepath
+fill
+
+
+% 171 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -44.75 416.75 moveto
+ -44.75 416.75 -27.9805 418.957 -46.75 420.75 curveto
+ -46.75 420.75 -66.2617 422.918 -70.75 428.75 curveto
+ -70.75 428.75 -85.6211 438.758 -88.75 438.75 curveto
+ -91.7813 439.641 -124.781 447.559 -124.75 449.75 curveto
+ -125.66 452.84 -131.82 452.84 -133.75 451.75 curveto
+ -135.34 451.078 -134.461 449.758 -131.75 448.75 curveto
+ -128.301 448.0 -93.9805 429.957 -86.75 428.75 curveto
+ -79.8984 427.32 -67.1406 418.957 -61.75 417.75 curveto
+ -56.5781 416.32 -44.75 416.75 -44.75 416.75 curveto
+ closepath
+fill
+
+
+% 172 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -65.75 424.75 moveto
+ -65.75 424.75 -56.7305 425.367 -65.75 426.75 curveto
+ -65.75 426.75 -75.8906 430.035 -77.75 432.75 curveto
+ -77.75 432.75 -85.8047 438.148 -87.75 438.75 curveto
+ -88.9571 438.598 -104.313 442.652 -104.75 443.75 curveto
+ -104.766 445.355 -142.238 459.195 -146.75 455.75 curveto
+ -150.301 453.375 -139.41 455.219 -128.75 450.75 curveto
+ -127.32 449.688 -90.082 433.641 -86.75 432.75 curveto
+ -82.875 432.289 -76.3398 428.008 -73.75 427.75 curveto
+ -70.9336 426.656 -65.75 424.75 -65.75 424.75 curveto
+ closepath
+fill
+
+
+% 173 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -57.75 421.75 moveto
+ -57.75 421.75 -63.1797 422.48 -61.75 420.75 curveto
+ -60.5391 418.957 -57.75 419.75 -57.75 419.75 curveto
+ -57.75 421.75 lineto
+ closepath
+fill
+
+
+% 174 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -49.75 420.75 moveto
+ -49.75 420.75 -55.2617 420.719 -53.75 418.75 curveto
+ -52.6211 417.199 -49.75 417.75 -49.75 417.75 curveto
+ -49.75 420.75 lineto
+ closepath
+fill
+
+
+% 175 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -37.75 418.75 moveto
+ -37.75 418.75 -43.8203 418.957 -42.75 416.75 curveto
+ -41.1797 415.438 -38.75 416.75 -38.75 416.75 curveto
+ -37.75 418.75 lineto
+ closepath
+fill
+
+
+% 176 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -29.75 417.75 moveto
+ -29.75 417.75 -35.461 418.078 -33.75 416.75 curveto
+ -32.8203 414.559 -29.75 415.75 -29.75 415.75 curveto
+ -29.75 417.75 lineto
+ closepath
+fill
+
+
+% 177 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -71.75 460.75 moveto
+ -71.75 460.75 -76.8203 461.199 -75.75 459.75 curveto
+ -74.1797 457.68 -70.75 457.75 -70.75 457.75 curveto
+ -71.75 460.75 lineto
+ closepath
+fill
+
+
+% 178 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -60.75 454.75 moveto
+ -60.75 454.75 -68.1367 457.395 -65.75 453.75 curveto
+ -64.0586 451.957 -61.75 452.75 -61.75 452.75 curveto
+ -60.75 454.75 lineto
+ closepath
+fill
+
+
+% 179 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -48.75 449.75 moveto
+ -48.75 449.75 -54.3789 450.199 -52.75 448.75 curveto
+ -51.7383 446.68 -48.75 447.75 -48.75 447.75 curveto
+ -48.75 449.75 lineto
+ closepath
+fill
+
+
+% 180 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -40.75 442.75 moveto
+ -40.75 442.75 -46.0195 443.598 -44.75 441.75 curveto
+ -43.3789 440.078 -40.75 440.75 -40.75 440.75 curveto
+ -40.75 442.75 lineto
+ closepath
+fill
+
+
+% 181 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -32.75 437.75 moveto
+ -32.75 437.75 -38.5391 438.32 -36.75 436.75 curveto
+ -35.8984 434.801 -33.75 435.75 -33.75 435.75 curveto
+ -32.75 437.75 lineto
+ closepath
+fill
+
+
+% 182 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -75.75 430.75 moveto
+ -75.75 430.75 -83.4219 431.426 -81.75 428.75 curveto
+ -79.9102 426.742 -76.75 427.75 -76.75 427.75 curveto
+ -75.75 430.75 lineto
+ closepath
+fill
+
+
+% 183 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -87.75 435.75 moveto
+ -87.75 435.75 -94.8633 436.707 -92.75 434.75 curveto
+ -91.3516 432.023 -87.75 432.75 -87.75 432.75 curveto
+ -87.75 435.75 lineto
+ closepath
+fill
+
+
+% 184 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -98.75 440.75 moveto
+ -98.75 440.75 -106.742 441.547 -104.75 438.75 curveto
+ -103.23 436.863 -99.75 437.75 -99.75 437.75 curveto
+ -98.75 440.75 lineto
+ closepath
+fill
+
+
+% 185 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -110.75 445.75 moveto
+ -110.75 445.75 -118.184 446.828 -116.75 444.75 curveto
+ -114.668 442.141 -110.75 443.75 -110.75 443.75 curveto
+ -110.75 445.75 lineto
+ closepath
+fill
+
+
+% 186 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -79.75 465.75 moveto
+ -79.75 465.75 -87.8242 466.629 -85.75 464.75 curveto
+ -84.3086 461.941 -79.75 461.75 -79.75 461.75 curveto
+ -79.75 465.75 lineto
+ closepath
+fill
+
+
+% 187 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -90.75 469.75 moveto
+ -90.75 469.75 -98.8242 470.148 -96.75 467.75 curveto
+ -95.3086 465.461 -90.75 465.75 -90.75 465.75 curveto
+ -90.75 469.75 lineto
+ closepath
+fill
+
+
+% 188 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -66.75 425.75 moveto
+ -66.75 425.75 -71.9805 426.0 -70.75 423.75 curveto
+ -69.3398 422.48 -66.75 423.75 -66.75 423.75 curveto
+ -66.75 425.75 lineto
+ closepath
+fill
+
+
+% 189 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.4 0.85 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 14.25 534.75 moveto
+ 14.25 534.75 19.1016 525.0 19.25 521.75 curveto
+ 19.25 521.75 18.6602 531.16 17.25 533.75 curveto
+ 16.0195 535.559 14.25 534.75 14.25 534.75 curveto
+ closepath
+fill
+
+
+% 190 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.4 0.85 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 34.25 519.75 moveto
+ 34.25 519.75 38.0195 503.441 37.25 500.75 curveto
+ 37.25 500.75 38.8984 513.121 38.25 514.75 curveto
+ 38.0195 515.762 34.25 519.75 34.25 519.75 curveto
+ closepath
+fill
+
+
+% 191 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 11.25 601.75 moveto
+ 12.25 597.75 lineto
+ 14.25 597.75 lineto
+ 14.25 597.75 -1.35938 583.738 -1.75 575.75 curveto
+ -1.75 575.75 -2.89844 584.398 11.25 601.75 curveto
+ closepath
+fill
+
+
+% 192 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 7.25 599.75 moveto
+ 7.71094 600.406 7.47266 601.227 8.25 601.75 curveto
+ 8.80859 602.078 6.49219 602.141 6.25 602.75 curveto
+ 7.16406 604.258 6.95703 604.277 7.25 605.75 curveto
+ 7.15625 606.34 6.50781 608.035 6.25 608.75 curveto
+ 4.49609 610.336 5.94922 613.563 4.25 615.75 curveto
+ 3.8125 615.586 3.39844 616.191 3.25 616.75 curveto
+ 2.35938 617.711 1.05859 618.25 0.25 618.75 curveto
+ -0.335938 619.461 -0.117188 620.371 -0.75 620.75 curveto
+ -1.52734 620.145 -2.89063 620.289 -2.75 619.75 curveto
+ -2.71875 617.031 -1.25781 615.137 0.25 613.75 curveto
+ -0.34375 612.527 0.160156 611.832 0.25 610.75 curveto
+ 1.94141 608.336 1.73047 605.211 2.25 601.75 curveto
+ 1.92969 601.992 2.26563 601.906 2.25 601.75 curveto
+ 1.87109 599.281 1.22656 596.863 0.25 594.75 curveto
+ -0.140625 593.387 -0.660156 592.402 -0.75 591.75 curveto
+ -0.949219 590.629 -1.0625 589.711 -0.75 588.75 curveto
+ -2.85156 585.758 -1.41016 582.84 -2.75 578.75 curveto
+ -2.92578 578.27 -4.78516 576.164 -4.75 576.75 curveto
+ -1.51172 577.301 -1.38672 577.738 -0.75 578.75 curveto
+ -1.03516 579.25 -0.671875 580.766 -0.75 581.75 curveto
+ -0.339844 581.609 -0.152344 583.68 0.25 583.75 curveto
+ 1.59766 586.434 0.105469 586.242 1.25 588.75 curveto
+ 3.18359 589.582 4.24609 590.797 5.25002 591.75 curveto
+ 5.69922 592.301 4.44141 593.098 4.25 593.75 curveto
+ 5.83984 594.75 7.10938 595.594 6.25 596.75 curveto
+ 6.57031 597.992 6.41797 599.156 7.25 599.75 curveto
+ closepath
+fill
+
+
+% 193 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 11.25 597.75 moveto
+ 11.25 597.75 10.7383 590.559 8.25 588.75 curveto
+ 5.46094 587.039 6.78125 587.922 10.25 588.75 curveto
+ 13.8203 590.559 12.25 591.75 12.25 591.75 curveto
+ 12.25 591.75 15.5781 591.0 13.25 588.75 curveto
+ 10.3008 586.602 6.33984 583.961 8.25 583.75 curveto
+ 9.85938 583.961 18.2188 588.359 18.25 591.75 curveto
+ 18.2188 594.52 19.25 598.75 19.25 598.75 curveto
+ 19.25 598.75 18.1094 599.91 13.25 599.75 curveto
+ 13.25 599.75 11.2891 599.031 11.25 597.75 curveto
+ closepath
+fill
+gsave %{
+
+
+% 194 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 12.25 577.75 moveto
+ 12.25 577.75 21.4336 580.648 42.25 576.75 curveto
+ 42.25 576.75 31.8242 579.207 11.25 576.75 curveto
+ -0.148438 575.324 12.25 577.75 12.25 577.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 195 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 12.25 577.75 moveto
+ 12.25 577.75 21.4336 580.648 42.25 576.75 curveto
+ 42.25 576.75 31.8242 579.207 11.25 576.75 curveto
+ -0.148438 575.324 12.25 577.75 12.25 577.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 196 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 10.25 577.75 moveto
+ 10.25 577.75 18.8242 581.527 39.25 579.75 curveto
+ 39.25 579.75 29.3008 580.988 9.25 576.75 curveto
+ -2.21875 574.355 10.25 577.75 10.25 577.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 197 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 10.25 577.75 moveto
+ 10.25 577.75 18.8242 581.527 39.25 579.75 curveto
+ 39.25 579.75 29.3008 580.988 9.25 576.75 curveto
+ -2.21875 574.355 10.25 577.75 10.25 577.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 198 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 8.25 577.75 moveto
+ 8.25 577.75 16.543 582.09 37.25 581.75 curveto
+ 37.25 581.75 27.0351 582.328 7.25 576.75 curveto
+ -3.90625 573.371 8.25 577.75 8.25 577.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 199 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 8.25 577.75 moveto
+ 8.25 577.75 16.543 582.09 37.25 581.75 curveto
+ 37.25 581.75 27.0351 582.328 7.25 576.75 curveto
+ -3.90625 573.371 8.25 577.75 8.25 577.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 200 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 6.25 577.75 moveto
+ 6.25 577.75 13.8945 582.047 32.25 583.75 curveto
+ 32.25 583.75 23.2852 583.07 6.25 576.75 curveto
+ -3.77344 572.66 6.25 577.75 6.25 577.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 201 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 6.25 577.75 moveto
+ 6.25 577.75 13.8945 582.047 32.25 583.75 curveto
+ 32.25 583.75 23.2852 583.07 6.25 576.75 curveto
+ -3.77344 572.66 6.25 577.75 6.25 577.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 202 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -120.75 565.75 moveto
+ -120.75 565.75 -119.402 565.035 -119.75 566.75 curveto
+ -119.871 567.633 -150.902 582.121 -154.75 581.75 curveto
+ -154.75 581.75 -121.605 567.316 -120.75 565.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 203 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -120.75 565.75 moveto
+ -120.75 565.75 -119.402 565.035 -119.75 566.75 curveto
+ -119.871 567.633 -150.902 582.121 -154.75 581.75 curveto
+ -154.75 581.75 -121.605 567.316 -120.75 565.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 204 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -116.75 564.75 moveto
+ -116.75 564.75 -115.727 564.254 -115.75 565.75 curveto
+ -115.992 566.879 -145.789 583.762 -149.75 583.75 curveto
+ -149.75 583.75 -117.746 566.703 -116.75 564.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 205 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -116.75 564.75 moveto
+ -116.75 564.75 -115.727 564.254 -115.75 565.75 curveto
+ -115.992 566.879 -145.789 583.762 -149.75 583.75 curveto
+ -149.75 583.75 -117.746 566.703 -116.75 564.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 206 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -112.75 563.75 moveto
+ -112.75 563.75 -112.164 562.68 -111.75 563.75 curveto
+ -112.258 565.316 -134.055 582.363 -144.75 584.75 curveto
+ -144.75 584.75 -125.016 575.484 -112.75 563.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 207 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -112.75 563.75 moveto
+ -112.75 563.75 -112.164 562.68 -111.75 563.75 curveto
+ -112.258 565.316 -134.055 582.363 -144.75 584.75 curveto
+ -144.75 584.75 -125.016 575.484 -112.75 563.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 208 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -109.75 561.75 moveto
+ -109.75 561.75 -109.094 560.715 -108.75 561.75 curveto
+ -109.176 563.09 -128.793 578.43 -138.75 580.75 curveto
+ -138.75 580.75 -120.66 572.242 -109.75 561.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 209 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -109.75 561.75 moveto
+ -109.75 561.75 -109.094 560.715 -108.75 561.75 curveto
+ -109.176 563.09 -128.793 578.43 -138.75 580.75 curveto
+ -138.75 580.75 -120.66 572.242 -109.75 561.75 curveto
+ closepath
+stroke
+
+
+% 210 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -74.75 398.75 moveto
+ -74.75 398.75 -58.3398 401.359 -76.75 402.75 curveto
+ -76.75 402.75 -96.6211 405.32 -100.75 410.75 curveto
+ -100.75 410.75 -115.98 421.16 -118.75 421.75 curveto
+ -122.141 422.039 -140.18 426.0 -140.75 428.75 curveto
+ -141.059 431.277 -147.66 433.918 -149.75 432.75 curveto
+ -151.18 432.16 -151.18 422.039 -147.75 420.75 curveto
+ -145.02 420.277 -124.34 412.359 -117.75 410.75 curveto
+ -110.262 409.719 -97.5 401.359 -91.75 399.75 curveto
+ -86.9414 398.719 -74.75 398.75 -74.75 398.75 curveto
+ closepath
+fill
+
+
+% 211 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -155.75 439.75 moveto
+ -155.75 439.75 -152.059 438.098 -150.75 434.75 curveto
+ -150.75 434.75 -143.699 423.578 -127.75 419.75 curveto
+ -127.75 419.75 -102.781 410.16 -93.75 407.75 curveto
+ -93.75 407.75 -79.461 402.457 -71.75 403.75 curveto
+ -71.75 403.75 -63.6211 403.117 -70.75 401.75 curveto
+ -70.75 401.75 -92.6602 403.559 -96.75 405.75 curveto
+ -96.75 405.75 -113.559 411.258 -116.75 413.75 curveto
+ -120.16 416.98 -140.18 422.48 -142.75 424.75 curveto
+ -145.02 426.879 -155.801 436.117 -155.75 439.75 curveto
+ closepath
+fill
+
+
+% 212 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -90.75 404.75 moveto
+ -90.75 404.75 -96.5234 405.445 -95.75 403.75 curveto
+ -93.9843 402.039 -91.75 402.75 -91.75 402.75 curveto
+ -90.75 404.75 lineto
+ closepath
+fill
+
+
+% 213 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -82.75 403.75 moveto
+ -82.75 403.75 -88.5977 403.961 -87.75 402.75 curveto
+ -86.0625 400.551 -83.75 401.75 -83.75 401.75 curveto
+ -82.75 403.75 lineto
+ closepath
+fill
+
+
+% 214 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -71.75 402.75 moveto
+ -71.75 402.75 -77.1289 402.586 -75.75 400.75 curveto
+ -74.5898 399.18 -71.75 399.75 -71.75 399.75 curveto
+ -71.75 402.75 lineto
+ closepath
+fill
+
+
+% 215 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -62.75 401.75 moveto
+ -62.75 401.75 -68.7305 401.988 -67.75 400.75 curveto
+ -66.1953 398.578 -63.75 399.75 -63.75 399.75 curveto
+ -62.75 401.75 lineto
+ closepath
+fill
+
+
+% 216 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -108.75 413.75 moveto
+ -108.75 413.75 -116.613 413.668 -114.75 411.75 curveto
+ -113.238 409.129 -109.75 410.75 -109.75 410.75 curveto
+ -108.75 413.75 lineto
+ closepath
+fill
+
+
+% 217 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -120.75 417.75 moveto
+ -120.75 417.75 -126.859 421.836 -126.75 416.75 curveto
+ -125.973 413.453 -120.75 415.75 -120.75 415.75 curveto
+ -120.75 417.75 lineto
+ closepath
+fill
+
+
+% 218 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -130.75 421.75 moveto
+ -130.75 421.75 -138.223 425.371 -136.75 419.75 curveto
+ -135.461 416.668 -130.75 418.75 -130.75 418.75 curveto
+ -130.75 421.75 lineto
+ closepath
+fill
+
+
+% 219 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -140.75 426.75 moveto
+ -140.75 426.75 -145.609 431.996 -146.75 424.75 curveto
+ -147.227 421.879 -141.75 423.75 -141.75 423.75 curveto
+ -140.75 426.75 lineto
+ closepath
+fill
+
+
+% 220 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -99.75 408.75 moveto
+ -99.75 408.75 -105.27 408.652 -103.75 406.75 curveto
+ -102.734 405.242 -99.75 405.75 -99.75 405.75 curveto
+ -99.75 408.75 lineto
+ closepath
+fill
+gsave %{
+
+
+% 221 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -138.75 541.75 moveto
+ -138.75 541.75 -137.879 541.207 -137.75 542.75 curveto
+ -137.879 543.559 -157.109 558.152 -166.75 559.75 curveto
+ -166.75 559.75 -149.129 552.27 -138.75 541.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 222 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -138.75 541.75 moveto
+ -138.75 541.75 -137.879 541.207 -137.75 542.75 curveto
+ -137.879 543.559 -157.109 558.152 -166.75 559.75 curveto
+ -166.75 559.75 -149.129 552.27 -138.75 541.75 curveto
+ closepath
+stroke
+
+
+% 223 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -141.75 471.75 moveto
+ -141.75 471.75 -166.141 447.117 -176.75 442.75 curveto
+ -176.75 442.75 -186.383 430.84 -181.75 401.75 curveto
+ -181.75 401.75 -178.461 393.879 -174.75 416.75 curveto
+ -174.75 416.75 -178.461 444.48 -165.75 426.75 curveto
+ -165.75 426.75 -156.898 437.77 -163.75 437.75 curveto
+ -163.75 437.75 -167.461 435.238 -167.75 436.75 curveto
+ -168.34 438.758 -159.539 453.719 -140.75 469.75 curveto
+ -121.699 485.398 -141.75 471.75 -141.75 471.75 curveto
+ closepath
+fill
+gsave %{
+
+
+% 224 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -77.75 428.75 moveto
+ -77.75 428.75 -77.4805 431.059 -79.75 429.75 curveto
+ -81.4414 429.301 -185.063 422.48 -219.75 395.75 curveto
+ -219.75 395.75 -170.102 421.598 -77.75 428.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 225 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -77.75 428.75 moveto
+ -77.75 428.75 -77.4805 431.059 -79.75 429.75 curveto
+ -81.4414 429.301 -185.063 422.48 -219.75 395.75 curveto
+ -219.75 395.75 -170.102 421.598 -77.75 428.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 226 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -88.75 433.75 moveto
+ -88.75 433.75 -88.9219 435.898 -90.75 434.75 curveto
+ -92.8789 434.141 -243.141 435.238 -268.75 399.75 curveto
+ -268.75 399.75 -244.902 427.32 -88.75 433.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 227 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -88.75 433.75 moveto
+ -88.75 433.75 -88.9219 435.898 -90.75 434.75 curveto
+ -92.8789 434.141 -243.141 435.238 -268.75 399.75 curveto
+ -268.75 399.75 -244.902 427.32 -88.75 433.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 228 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -101.75 438.75 moveto
+ -101.75 438.75 -101.68 440.301 -103.75 439.75 curveto
+ -105.641 438.539 -296.383 452.84 -322.75 416.75 curveto
+ -322.75 416.75 -311.781 445.359 -101.75 438.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 229 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -101.75 438.75 moveto
+ -101.75 438.75 -101.68 440.301 -103.75 439.75 curveto
+ -105.641 438.539 -296.383 452.84 -322.75 416.75 curveto
+ -322.75 416.75 -311.781 445.359 -101.75 438.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 230 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -112.75 443.75 moveto
+ -112.75 443.75 -112.68 445.578 -114.75 444.75 curveto
+ -116.641 443.82 -251.063 486.281 -276.75 450.75 curveto
+ -276.75 450.75 -262.281 477.699 -112.75 443.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 231 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -112.75 443.75 moveto
+ -112.75 443.75 -112.68 445.578 -114.75 444.75 curveto
+ -116.641 443.82 -251.063 486.281 -276.75 450.75 curveto
+ -276.75 450.75 -262.281 477.699 -112.75 443.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 232 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -48.75 418.75 moveto
+ -48.75 418.75 -48.8789 420.5 -50.75 419.75 curveto
+ -52.8398 418.738 -72.4219 416.32 -74.75 373.75 curveto
+ -74.75 373.75 -66.6992 419.84 -48.75 418.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 233 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -48.75 418.75 moveto
+ -48.75 418.75 -48.8789 420.5 -50.75 419.75 curveto
+ -52.8398 418.738 -72.4219 416.32 -74.75 373.75 curveto
+ -74.75 373.75 -66.6992 419.84 -48.75 418.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 234 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -39.75 416.75 moveto
+ -39.75 416.75 -39.1992 418.738 -40.75 417.75 curveto
+ -43.1602 416.98 -58.7813 422.039 -55.75 379.75 curveto
+ -55.75 379.75 -57.0195 418.078 -39.75 416.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 235 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -39.75 416.75 moveto
+ -39.75 416.75 -39.1992 418.738 -40.75 417.75 curveto
+ -43.1602 416.98 -58.7813 422.039 -55.75 379.75 curveto
+ -55.75 379.75 -57.0195 418.078 -39.75 416.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 236 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -30.75 416.75 moveto
+ -30.75 416.75 -30.3984 418.301 -32.75 417.75 curveto
+ -34.3594 416.539 -51.3008 415.879 -37.75 390.75 curveto
+ -37.75 390.75 -48.2188 417.641 -30.75 416.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 237 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -30.75 416.75 moveto
+ -30.75 416.75 -30.3984 418.301 -32.75 417.75 curveto
+ -34.3594 416.539 -51.3008 415.879 -37.75 390.75 curveto
+ -37.75 390.75 -48.2188 417.641 -30.75 416.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 238 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -82.75 464.75 moveto
+ -82.75 464.75 -82.1914 462.891 -83.75 463.75 curveto
+ -101.57 478.117 -137.254 542.906 -198.75 548.75 curveto
+ -198.75 548.75 -156.371 562.426 -82.75 464.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 239 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -82.75 464.75 moveto
+ -82.75 464.75 -82.1914 462.891 -83.75 463.75 curveto
+ -101.57 478.117 -137.254 542.906 -198.75 548.75 curveto
+ -198.75 548.75 -156.371 562.426 -82.75 464.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 240 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -94.75 466.75 moveto
+ -94.75 466.75 -93.5 468.379 -95.75 468.75 curveto
+ -97.6094 469.754 -221.297 549.508 -264.75 540.75 curveto
+ -264.75 540.75 -234.691 549.008 -94.75 466.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 241 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -94.75 466.75 moveto
+ -94.75 466.75 -93.5 468.379 -95.75 468.75 curveto
+ -97.6094 469.754 -221.297 549.508 -264.75 540.75 curveto
+ -264.75 540.75 -234.691 549.008 -94.75 466.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 242 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -71.75 460.75 moveto
+ -71.75 460.75 -71.5117 458.598 -73.75 459.75 curveto
+ -83.2695 465.305 -87.2461 528.234 -134.75 529.75 curveto
+ -134.75 529.75 -99.5273 545.801 -71.75 460.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 243 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -71.75 460.75 moveto
+ -71.75 460.75 -71.5117 458.598 -73.75 459.75 curveto
+ -83.2695 465.305 -87.2461 528.234 -134.75 529.75 curveto
+ -134.75 529.75 -99.5273 545.801 -71.75 460.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 244 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -49.75 447.75 moveto
+ -49.75 447.75 -48.9727 446.812 -50.75 446.75 curveto
+ -62.3906 448.559 -85.9375 493.957 -134.75 488.75 curveto
+ -134.75 488.75 -99.6562 504.148 -49.75 447.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 245 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -49.75 447.75 moveto
+ -49.75 447.75 -48.9727 446.812 -50.75 446.75 curveto
+ -62.3906 448.559 -85.9375 493.957 -134.75 488.75 curveto
+ -134.75 488.75 -99.6562 504.148 -49.75 447.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 246 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -62.75 454.75 moveto
+ -62.75 454.75 -61.6289 453.352 -63.75 453.75 curveto
+ -74.4609 457.641 -88.8555 506.711 -137.75 510.75 curveto
+ -137.75 510.75 -100.363 519.352 -62.75 454.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 247 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -62.75 454.75 moveto
+ -62.75 454.75 -61.6289 453.352 -63.75 453.75 curveto
+ -74.4609 457.641 -88.8555 506.711 -137.75 510.75 curveto
+ -137.75 510.75 -100.363 519.352 -62.75 454.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 248 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -42.75 442.75 moveto
+ -42.75 442.75 -41.4531 441.449 -42.75 441.75 curveto
+ -52.3242 442.863 -71.3945 479.637 -110.75 474.75 curveto
+ -110.75 474.75 -82.5078 487.891 -42.75 442.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 249 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -42.75 442.75 moveto
+ -42.75 442.75 -41.4531 441.449 -42.75 441.75 curveto
+ -52.3242 442.863 -71.3945 479.637 -110.75 474.75 curveto
+ -110.75 474.75 -82.5078 487.891 -42.75 442.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 250 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -33.75 435.75 moveto
+ -33.75 435.75 -32.9492 434.949 -34.75 434.75 curveto
+ -39.2852 435.418 -72.9883 471.805 -93.75 454.75 curveto
+ -93.75 454.75 -80.0859 475.348 -33.75 435.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 251 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -33.75 435.75 moveto
+ -33.75 435.75 -32.9492 434.949 -34.75 434.75 curveto
+ -39.2852 435.418 -72.9883 471.805 -93.75 454.75 curveto
+ -93.75 454.75 -80.0859 475.348 -33.75 435.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 252 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -110.75 470.75 moveto
+ -110.75 470.75 -109.219 472.703 -111.75 472.75 curveto
+ -113.469 473.547 -246.242 537.031 -287.75 522.75 curveto
+ -287.75 522.75 -259.469 534.84 -110.75 470.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 253 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -110.75 470.75 moveto
+ -110.75 470.75 -109.219 472.703 -111.75 472.75 curveto
+ -113.469 473.547 -246.242 537.031 -287.75 522.75 curveto
+ -287.75 522.75 -259.469 534.84 -110.75 470.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 254 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -73.75 400.75 moveto
+ -73.75 400.75 -73.5195 402.457 -75.75 401.75 curveto
+ -77.4805 400.699 -94.4219 400.039 -80.75 375.75 curveto
+ -80.75 375.75 -91.3398 401.801 -73.75 400.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 255 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -73.75 400.75 moveto
+ -73.75 400.75 -73.5195 402.457 -75.75 401.75 curveto
+ -77.4805 400.699 -94.4219 400.039 -80.75 375.75 curveto
+ -80.75 375.75 -91.3398 401.801 -73.75 400.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 256 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -84.75 401.75 moveto
+ -84.75 401.75 -84.961 404.219 -86.75 403.75 curveto
+ -88.9219 402.457 -108.5 400.039 -110.75 357.75 curveto
+ -110.75 357.75 -102.781 403.559 -84.75 401.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 257 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -84.75 401.75 moveto
+ -84.75 401.75 -84.961 404.219 -86.75 403.75 curveto
+ -88.9219 402.457 -108.5 400.039 -110.75 357.75 curveto
+ -110.75 357.75 -102.781 403.559 -84.75 401.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 258 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -92.75 403.75 moveto
+ -92.75 403.75 -92.4414 405.98 -94.75 404.75 curveto
+ -96.3984 404.219 -123.461 400.48 -149.75 364.75 curveto
+ -149.75 364.75 -110.262 405.32 -92.75 403.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 259 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -92.75 403.75 moveto
+ -92.75 403.75 -92.4414 405.98 -94.75 404.75 curveto
+ -96.3984 404.219 -123.461 400.48 -149.75 364.75 curveto
+ -149.75 364.75 -110.262 405.32 -92.75 403.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 260 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -100.75 405.75 moveto
+ -100.75 405.75 -100.566 408.164 -102.75 407.75 curveto
+ -104.727 406.945 -127.203 409.035 -168.75 371.75 curveto
+ -168.75 371.75 -118.316 409.879 -100.75 405.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 261 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -100.75 405.75 moveto
+ -100.75 405.75 -100.566 408.164 -102.75 407.75 curveto
+ -104.727 406.945 -127.203 409.035 -168.75 371.75 curveto
+ -168.75 371.75 -118.316 409.879 -100.75 405.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 262 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -112.75 410.75 moveto
+ -112.75 410.75 -112.008 413.004 -113.75 412.75 curveto
+ -116.164 411.785 -154.48 406.836 -211.75 368.75 curveto
+ -211.75 368.75 -129.758 414.719 -112.75 410.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 263 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -112.75 410.75 moveto
+ -112.75 410.75 -112.008 413.004 -113.75 412.75 curveto
+ -116.164 411.785 -154.48 406.836 -211.75 368.75 curveto
+ -211.75 368.75 -129.758 414.719 -112.75 410.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 264 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -67.75 423.75 moveto
+ -67.75 423.75 -67.8008 425.777 -69.75 424.75 curveto
+ -71.7617 424.02 -130.5 421.16 -163.75 391.75 curveto
+ -163.75 391.75 -125.551 418.93 -67.75 423.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 265 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -67.75 423.75 moveto
+ -67.75 423.75 -67.8008 425.777 -69.75 424.75 curveto
+ -71.7617 424.02 -130.5 421.16 -163.75 391.75 curveto
+ -163.75 391.75 -125.551 418.93 -67.75 423.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 266 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -56.75 419.75 moveto
+ -56.75 419.75 -56.8008 421.379 -58.75 420.75 curveto
+ -60.7617 419.617 -87.8203 415.879 -113.75 379.75 curveto
+ -113.75 379.75 -74.6211 420.719 -56.75 419.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 267 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -56.75 419.75 moveto
+ -56.75 419.75 -56.8008 421.379 -58.75 420.75 curveto
+ -60.7617 419.617 -87.8203 415.879 -113.75 379.75 curveto
+ -113.75 379.75 -74.6211 420.719 -56.75 419.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 268 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -124.75 415.75 moveto
+ -124.75 415.75 -123.832 418.035 -125.75 417.75 curveto
+ -128.07 417.125 -166.645 414.996 -225.75 380.75 curveto
+ -225.75 380.75 -140.75 418.625 -124.75 415.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 269 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -124.75 415.75 moveto
+ -124.75 415.75 -123.832 418.035 -125.75 417.75 curveto
+ -128.07 417.125 -166.645 414.996 -225.75 380.75 curveto
+ -225.75 380.75 -140.75 418.625 -124.75 415.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 270 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -133.75 418.75 moveto
+ -133.75 418.75 -133.07 420.676 -134.75 419.75 curveto
+ -137.309 419.766 -175.887 417.637 -235.75 383.75 curveto
+ -235.75 383.75 -150.648 421.707 -133.75 418.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 271 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -133.75 418.75 moveto
+ -133.75 418.75 -133.07 420.676 -134.75 419.75 curveto
+ -137.309 419.766 -175.887 417.637 -235.75 383.75 curveto
+ -235.75 383.75 -150.648 421.707 -133.75 418.75 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 272 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -144.75 424.75 moveto
+ -144.75 424.75 -143.633 426.176 -145.75 425.75 curveto
+ -147.867 425.266 -195.246 420.496 -293.75 382.75 curveto
+ -293.75 382.75 -161.207 427.207 -144.75 424.75 curveto
+ closepath
+fill
+grestore %}
+
+
+% 273 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -144.75 424.75 moveto
+ -144.75 424.75 -143.633 426.176 -145.75 425.75 curveto
+ -147.867 425.266 -195.246 420.496 -293.75 382.75 curveto
+ -293.75 382.75 -161.207 427.207 -144.75 424.75 curveto
+ closepath
+stroke
+
+
+% 274 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -21.75 416.75 moveto
+ -21.75 416.75 -27.5391 417.199 -25.75 415.75 curveto
+ -24.8984 413.68 -22.75 414.75 -22.75 414.75 curveto
+ -21.75 416.75 lineto
+ closepath
+fill
+
+
+% 275 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -55.75 401.75 moveto
+ -55.75 401.75 -61.4219 401.801 -59.75 399.75 curveto
+ -58.7813 398.277 -55.75 398.75 -55.75 398.75 curveto
+ -55.75 401.75 lineto
+ closepath
+fill
+
+
+% 276 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -45.75 401.75 moveto
+ -45.75 401.75 -51.7383 402.238 -50.75 400.75 curveto
+ -49.1016 398.719 -46.75 399.75 -46.75 399.75 curveto
+ -45.75 401.75 lineto
+ closepath
+fill
+
+
+% 277 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 59.25 414.75 moveto
+ 59.25 414.75 53.3359 413.344 55.25 411.75 curveto
+ 56.9844 410.883 59.25 412.75 59.25 412.75 curveto
+ 59.25 414.75 lineto
+ closepath
+fill
+
+
+% 278 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 56.25 425.75 moveto
+ 56.25 425.75 51.1367 423.906 53.25 422.75 curveto
+ 54.7813 421.441 57.25 422.75 57.25 422.75 curveto
+ 56.25 425.75 lineto
+ closepath
+fill
+
+
+% 279 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 64.25 429.75 moveto
+ 64.25 429.75 59.0547 428.746 61.25 427.75 curveto
+ 62.7031 426.281 65.25 427.75 65.25 427.75 curveto
+ 64.25 429.75 lineto
+ closepath
+fill
+
+
+% 280 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -22.75 347.75 moveto
+ -22.75 347.75 -21.3789 347.68 -16.75 345.75 curveto
+ -14.7813 345.48 -2.46094 341.52 3.25 330.75 curveto
+ 3.25 330.75 -9.94141 341.078 -22.75 347.75 curveto
+ closepath
+fill
+
+
+% 281 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -119.75 245.75 moveto
+ -119.781 245.484 -119.844 245.023 -119.75 244.75 curveto
+ -120.887 244.961 -122.246 244.629 -121.75 245.75 curveto
+ -121.176 250.066 -120.211 255.496 -115.75 257.75 curveto
+ -114.965 257.789 -113.379 257.336 -113.75 256.75 curveto
+ -113.156 254.688 -113.027 253.203 -113.75 251.75 curveto
+ -113.699 250.027 -116.07 250.016 -116.75 251.75 curveto
+ -118.109 249.699 -118.586 247.672 -119.75 245.75 curveto
+ closepath
+fill
+
+
+% 282 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -107.75 240.75 moveto
+ -108.266 239.008 -108.125 236.961 -109.75 236.75 curveto
+ -110.496 236.02 -112.531 237.09 -111.75 238.75 curveto
+ -111.188 240.539 -110.762 243.004 -108.75 244.75 curveto
+ -109.016 245.281 -109.277 245.871 -108.75 245.75 curveto
+ -108.449 247.574 -107.188 248.379 -105.75 247.75 curveto
+ -104.414 245.594 -105.676 243.254 -107.75 241.75 curveto
+ -107.5 241.207 -107.316 240.793 -107.75 240.75 curveto
+ closepath
+fill
+
+
+% 283 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -63.75 246.75 moveto
+ -63.7617 246.684 -63.7188 247.195 -63.75 247.75 curveto
+ -64.4844 248.684 -65.3555 249.918 -64.75 250.75 curveto
+ -64.6016 252.203 -63.375 252.004 -62.75 251.75 curveto
+ -61.4141 250.285 -61.3594 248.273 -60.75 246.75 curveto
+ -60.3828 246.355 -60.4375 245.727 -59.75 245.75 curveto
+ -59.4336 244.832 -58.9492 243.156 -58.75 242.75 curveto
+ -59.1133 242.184 -58.9102 231.285 -58.75 231.75 curveto
+ -59.8359 232.379 -63.1914 243.086 -63.75 243.75 curveto
+ -63.3281 244.871 -64.1367 245.383 -63.75 246.75 curveto
+ closepath
+fill
+
+
+% 284 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -35.75 253.75 moveto
+ -38.5742 256.488 -41.6445 259.746 -40.75 263.75 curveto
+ -41.0313 264.902 -39.0781 264.324 -38.75 263.75 curveto
+ -37.9883 259.406 -35.7461 256.48 -32.75 253.75 curveto
+ -30.5078 251.598 -28.4571 244.617 -27.75 243.75 curveto
+ -32.2656 249.84 -34.75 252.859 -35.75 253.75 curveto
+ closepath
+fill
+
+
+% 285 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -20.75 260.75 moveto
+ -21.3203 260.707 -20.9883 261.25 -20.75 261.75 curveto
+ -22.2773 263.219 -23.707 264.59 -23.75 266.75 curveto
+ -23.7305 266.805 -23.3164 267.145 -22.75 266.75 curveto
+ -22.6406 266.695 -22.2656 266.555 -21.75 266.75 curveto
+ -19.9141 263.715 -18.375 260.777 -16.75 257.75 curveto
+ -16.5859 257.293 -15.3281 252.352 -15.75 251.75 curveto
+ -15.9336 252.137 -17.8242 256.734 -17.75 256.75 curveto
+ -19.4453 257.617 -19.4609 259.391 -20.75 260.75 curveto
+ closepath
+fill
+
+
+% 286 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -38.75 238.75 moveto
+ -39.6406 239.758 -41.375 241.082 -41.75 241.75 curveto
+ -41.1211 243.078 -41.6367 244.668 -40.75 243.75 curveto
+ -39.25 242.867 -35.457 241.383 -34.75 234.75 curveto
+ -35.1289 234.367 -38.4023 237.328 -38.75 238.75 curveto
+ closepath
+fill
+
+
+% 287 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -54.75 257.75 moveto
+ -55.4805 258.434 -56.2578 257.914 -56.75 257.75 curveto
+ -57.4766 258.613 -58.1485 259.227 -58.75 259.75 curveto
+ -59.5352 262.305 -61.4844 264.305 -61.75 266.75 curveto
+ -60.0 268.484 -59.2539 266.242 -58.75 264.75 curveto
+ -57.1055 266.992 -56.0039 264.93 -54.75 264.75 curveto
+ -54.5 264.328 -54.2656 264.711 -53.75 264.75 curveto
+ -52.8867 264.195 -52.1406 263.008 -50.75 261.75 curveto
+ -50.8516 262.0 -50.4063 262.199 -49.75 261.75 curveto
+ -49.5273 261.387 -48.457 261.027 -47.75 260.75 curveto
+ -46.9297 257.301 -43.4766 254.996 -41.75 246.75 curveto
+ -41.8203 245.699 -46.3633 254.004 -46.75 254.75 curveto
+ -47.8203 256.09 -47.9492 252.945 -49.75 253.75 curveto
+ -49.4063 253.707 -49.6133 253.445 -49.75 253.75 curveto
+ -49.9727 253.605 -50.2148 253.859 -50.75 253.75 curveto
+ -50.6406 254.18 -50.4922 254.789 -50.75 254.75 curveto
+ -52.0742 256.039 -51.9805 257.215 -52.75 258.75 curveto
+ -53.3438 257.711 -54.5117 258.5 -54.75 257.75 curveto
+ closepath
+fill
+
+
+% 288 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -120.75 197.75 moveto
+ -120.75 197.75 -128.961 220.301 -123.75 232.75 curveto
+ -123.75 232.75 -136.66 208.859 -131.75 196.75 curveto
+ -131.75 196.75 -131.16 207.98 -126.75 213.75 curveto
+ -126.75 213.75 -122.359 199.398 -120.75 197.75 curveto
+ closepath
+fill
+
+
+% 289 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -104.75 200.75 moveto
+ -104.75 200.75 -110.48 210.398 -101.75 230.75 curveto
+ -101.75 230.75 -100.801 208.199 -93.75 195.75 curveto
+ -93.75 195.75 -108.941 218.32 -104.75 200.75 curveto
+ closepath
+fill
+
+
+% 290 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -93.75 202.75 moveto
+ -93.75 202.75 -93.3203 224.918 -93.75 227.75 curveto
+ -93.75 227.75 -89.5781 209.957 -78.75 199.75 curveto
+ -78.75 199.75 -94.1992 212.598 -93.75 202.75 curveto
+ closepath
+fill
+
+
+% 291 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -82.75 237.75 moveto
+ -82.75 237.75 -89.5781 223.16 -78.75 202.75 curveto
+ -78.75 202.75 -85.6211 216.34 -80.75 223.75 curveto
+ -80.75 223.75 -83.1992 227.777 -82.75 237.75 curveto
+ closepath
+fill
+
+
+% 292 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -61.75 203.75 moveto
+ -61.75 203.75 -60.7617 220.52 -62.75 222.75 curveto
+ -62.75 222.75 -62.961 229.98 -62.75 230.75 curveto
+ -62.75 230.75 -66.9219 237.898 -66.75 229.75 curveto
+ -66.75 229.75 -68.6797 221.18 -71.75 215.75 curveto
+ -71.75 215.75 -75.7188 210.18 -75.75 202.75 curveto
+ -75.75 202.75 -64.5 236.359 -61.75 203.75 curveto
+ closepath
+fill
+
+
+% 293 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -57.75 233.75 moveto
+ -57.75 233.75 -50.6406 221.84 -48.75 200.75 curveto
+ -48.75 200.75 -47.1211 207.758 -51.75 223.75 curveto
+ -51.75 223.75 -55.9219 240.539 -57.75 233.75 curveto
+ closepath
+fill
+
+
+% 294 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -33.75 211.75 moveto
+ -33.75 211.75 -39.4219 217.879 -40.75 223.75 curveto
+ -40.75 223.75 -44.9219 240.758 -37.75 231.75 curveto
+ -37.75 231.75 -38.1016 222.5 -28.75 214.75 curveto
+ -28.75 214.75 -34.3594 217.0 -33.75 211.75 curveto
+ closepath
+fill
+
+
+% 295 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -27.75 217.75 moveto
+ -27.75 217.75 -31.2813 236.578 -31.75 237.75 curveto
+ -31.75 237.75 -34.1406 241.199 -30.75 237.75 curveto
+ -30.75 237.75 -21.3789 216.559 -16.75 209.75 curveto
+ -16.75 209.75 -25.7813 219.418 -27.75 217.75 curveto
+ closepath
+fill
+
+
+% 296 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -20.75 235.75 moveto
+ -20.75 235.75 -33.9219 260.34 -9.75 231.75 curveto
+ -9.75 231.75 -22.0391 242.738 -20.75 235.75 curveto
+ closepath
+fill
+
+
+% 297 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -3.75 251.75 moveto
+ -3.75 251.75 -9.5 272.438 -12.75 271.75 curveto
+ -12.75 271.75 -21.3789 282.117 -13.75 270.75 curveto
+ -13.75 270.75 -7.51953 259.898 -7.75 248.75 curveto
+ -7.75 248.75 -7.51953 259.68 -3.75 251.75 curveto
+ closepath
+fill
+
+
+% 298 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -367.75 264.75 moveto
+ -367.75 264.75 -354.352 275.301 -351.75 278.75 curveto
+ -351.75 278.75 -366.449 258.801 -366.75 250.75 curveto
+ -366.75 250.75 -369.199 259.352 -367.75 264.75 curveto
+ closepath
+fill
+
+
+% 299 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -373.75 288.75 moveto
+ -373.75 288.75 -350.5 305.0 -346.75 312.75 curveto
+ -346.75 312.75 -375.801 280.801 -375.75 275.75 curveto
+ -375.75 275.75 -376.352 285.75 -373.75 288.75 curveto
+ closepath
+fill
+
+
+% 300 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -392.75 457.75 moveto
+ -392.75 457.75 -379.102 466.699 -377.75 464.75 curveto
+ -377.75 464.75 -389.0 457.352 -391.75 447.75 curveto
+ -391.75 447.75 -390.102 457.898 -392.75 457.75 curveto
+ closepath
+fill
+
+
+% 301 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.11 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -401.75 369.75 moveto
+ -382.75 382.75 lineto
+ -382.75 382.75 -403.301 363.852 -403.75 359.75 curveto
+ -401.75 369.75 lineto
+ closepath
+fill
+
+
+% 302 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 28.25 393.75 moveto
+ 4.25 388.75 lineto
+stroke
+
+
+% 303 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -26.75 215.75 moveto
+ -26.75 215.75 -26.5508 219.75 -16.75 207.75 curveto
+stroke
+
+
+% 304 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -32.75 210.75 moveto
+ -32.75 210.75 -35.3516 217.551 -27.75 212.75 curveto
+stroke
+
+
+% 305 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 1.1 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -92.75 200.75 moveto
+ -92.75 200.75 -94.1992 213.148 -81.75 198.75 curveto
+stroke
+restore %}
+grestore %}
+ showpage
+%%BoundingBox: -415 166 132 752
+%%Page: 1 1
+% normal end reached by pstoedit.pro
+%%Trailer
+%%Pages: 1
+%%EOF \ No newline at end of file
diff --git a/graphics/pstricks/contrib/pst-mirror/doc/createEPS/tiger-c.eps b/graphics/pstricks/contrib/pst-mirror/doc/createEPS/tiger-c.eps
new file mode 100644
index 0000000000..c76641911c
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-mirror/doc/createEPS/tiger-c.eps
@@ -0,0 +1,7101 @@
+%!PS-Adobe-3.0
+%%Title: flattened PostScript generated from file: tiger-b.eps
+%%Creator: pstoedit
+%%BoundingBox: -79 -84 79 85
+%%Pages: (atend)
+%%EndComments
+%%BeginProlog
+/setPageSize { pop pop } def
+/ntranslate { neg exch neg exch translate } def
+/p2esetcolorname { pop } def
+/setshowparams { pop pop pop} def
+/awidthshowhex { dup length 0 gt { dup /ASCIIHexDecode filter exch length 2 div cvi string readstring pop } if awidthshow } def
+/awidthshowhexwithglyphs { true { pop awidthshowhex } { { glyphshow } forall pop } ifelse } def
+/backendconstraints { pop pop } def
+%%>>> /pstoedit.newfont { 80 string cvs findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def dup 80 string cvs /FontName exch def currentdict end definefont pop } def
+/imagestring 1 string def
+%%EndProlog
+%%BeginSetup
+% pstoedit.textastext pstoedit.doflatten backendconstraints
+1 0 backendconstraints
+%%EndSetup
+%%Page: 1 1
+gsave %{
+ save %{
+gsave %{
+
+
+% 1 pathnumber
+% filledpath
+ 612 792 setPageSize
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 59.7148 8.34375 moveto
+ 59.7148 8.34375 59.7656 7.60547 60.0078 7.47266 curveto
+ 60.293 7.61719 65.5469 22.9648 72.1953 22.2773 curveto
+ 72.1953 22.2773 66.4219 24.5977 59.7148 8.34375 curveto
+ closepath
+fill
+grestore %}
+
+
+% 2 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 59.7148 8.34375 moveto
+ 59.7148 8.34375 59.7656 7.60547 60.0078 7.47266 curveto
+ 60.293 7.61719 65.5469 22.9648 72.1953 22.2773 curveto
+ 72.1953 22.2773 66.4219 24.5977 59.7148 8.34375 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 3 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 58.5547 9.21484 moveto
+ 58.5547 9.21484 58.8477 8.59375 59.1367 8.63281 curveto
+ 59.3359 8.78516 59.0547 25.0039 65.5195 26.6289 curveto
+ 65.5195 26.6289 59.3242 26.8398 58.5547 9.21484 curveto
+ closepath
+fill
+grestore %}
+
+
+% 4 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 58.5547 9.21484 moveto
+ 58.5547 9.21484 58.8477 8.59375 59.1367 8.63281 curveto
+ 59.3359 8.78516 59.0547 25.0039 65.5195 26.6289 curveto
+ 65.5195 26.6289 59.3242 26.8398 58.5547 9.21484 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 5 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 49.8477 -4.42578 moveto
+ 49.8477 -4.42578 49.375 -4.64453 49.5586 -4.71484 curveto
+ 49.6719 -5.07813 65.3711 -0.992188 68.4219 -6.74609 curveto
+ 68.4219 -6.74609 67.2188 -0.820313 49.8477 -4.42578 curveto
+ closepath
+fill
+grestore %}
+
+
+% 6 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 49.8477 -4.42578 moveto
+ 49.8477 -4.42578 49.375 -4.64453 49.5586 -4.71484 curveto
+ 49.6719 -5.07813 65.3711 -0.992188 68.4219 -6.74609 curveto
+ 68.4219 -6.74609 67.2188 -0.820313 49.8477 -4.42578 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 7 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 50.7188 -7.61719 moveto
+ 50.7188 -7.61719 50.1992 -7.72656 50.1367 -7.91016 curveto
+ 50.3477 -8.23047 66.5352 -9.29688 67.5508 -15.7461 curveto
+ 67.5508 -15.7461 68.3398 -9.71875 50.7188 -7.61719 curveto
+ closepath
+fill
+grestore %}
+
+
+% 8 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 50.7188 -7.61719 moveto
+ 50.7188 -7.61719 50.1992 -7.72656 50.1367 -7.91016 curveto
+ 50.3477 -8.23047 66.5352 -9.29688 67.5508 -15.7461 curveto
+ 67.5508 -15.7461 68.3398 -9.71875 50.7188 -7.61719 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 9 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 52.1719 -5.87891 moveto
+ 52.1719 -5.87891 51.5703 -6.04688 51.5898 -6.16797 curveto
+ 51.7891 -6.52344 67.9609 -5.21875 69.875 -11.3906 curveto
+ 69.875 -11.3906 69.8047 -5.37109 52.1719 -5.87891 curveto
+ closepath
+fill
+grestore %}
+
+
+% 10 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 52.1719 -5.87891 moveto
+ 52.1719 -5.87891 51.5703 -6.04688 51.5898 -6.16797 curveto
+ 51.7891 -6.52344 67.9609 -5.21875 69.875 -11.3906 curveto
+ 69.875 -11.3906 69.8047 -5.37109 52.1719 -5.87891 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 11 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 55.6523 -0.0742188 moveto
+ 55.6523 -0.0742188 55.1367 -0.460938 55.3633 -0.652344 curveto
+ 55.543 -0.792969 69.5117 7.46094 73.9375 2.53906 curveto
+ 73.9375 2.53906 71.2344 8.12891 55.6523 -0.0742188 curveto
+ closepath
+fill
+grestore %}
+
+
+% 12 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 55.6523 -0.0742188 moveto
+ 55.6523 -0.0742188 55.1367 -0.460938 55.3633 -0.652344 curveto
+ 55.543 -0.792969 69.5117 7.46094 73.9375 2.53906 curveto
+ 73.9375 2.53906 71.2344 8.12891 55.6523 -0.0742188 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 13 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 57.9766 -1.23438 moveto
+ 57.9766 -1.23438 57.5 -1.75 57.6836 -1.8125 curveto
+ 57.8672 -2.125 72.6758 4.49219 76.5508 -0.652344 curveto
+ 76.5508 -0.652344 74.4648 4.96484 57.9766 -1.23438 curveto
+ closepath
+fill
+grestore %}
+
+
+% 14 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 57.9766 -1.23438 moveto
+ 57.9766 -1.23438 57.5 -1.75 57.6836 -1.8125 curveto
+ 57.8672 -2.125 72.6758 4.49219 76.5508 -0.652344 curveto
+ 76.5508 -0.652344 74.4648 4.96484 57.9766 -1.23438 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 15 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 58.8438 -2.68359 moveto
+ 58.8438 -2.68359 58.2813 -2.98438 58.5547 -3.26563 curveto
+ 58.5938 -3.40625 74.168 1.13672 77.4219 -4.71484 curveto
+ 77.4219 -4.71484 76.0039 1.35547 58.8438 -2.68359 curveto
+ closepath
+fill
+grestore %}
+
+
+% 16 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 58.8438 -2.68359 moveto
+ 58.8438 -2.68359 58.2813 -2.98438 58.5547 -3.26563 curveto
+ 58.5938 -3.40625 74.168 1.13672 77.4219 -4.71484 curveto
+ 77.4219 -4.71484 76.0039 1.35547 58.8438 -2.68359 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 17 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 55.3633 -2.97656 moveto
+ 55.3633 -2.97656 55.0078 -3.34375 55.3633 -3.55469 curveto
+ 55.457 -3.625 68.2461 6.35156 73.3555 2.25 curveto
+ 73.3555 2.25 69.875 7.23828 55.3633 -2.97656 curveto
+ closepath
+fill
+grestore %}
+
+
+% 18 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 55.3633 -2.97656 moveto
+ 55.3633 -2.97656 55.0078 -3.34375 55.3633 -3.55469 curveto
+ 55.457 -3.625 68.2461 6.35156 73.3555 2.25 curveto
+ 73.3555 2.25 69.875 7.23828 55.3633 -2.97656 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 19 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 61.7461 6.3125 moveto
+ 61.7461 6.3125 61.4883 5.80859 61.7461 5.73047 curveto
+ 62.0 5.68359 71.1289 19.0938 77.1289 16.7617 curveto
+ 77.1289 16.7617 72.4102 20.4336 61.7461 6.3125 curveto
+ closepath
+fill
+grestore %}
+
+
+% 20 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 61.7461 6.3125 moveto
+ 61.7461 6.3125 61.4883 5.80859 61.7461 5.73047 curveto
+ 62.0 5.68359 71.1289 19.0938 77.1289 16.7617 curveto
+ 77.1289 16.7617 72.4102 20.4336 61.7461 6.3125 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 21 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 61.457 4.28125 moveto
+ 61.457 4.28125 61.1484 3.63672 61.457 3.41016 curveto
+ 61.6211 3.40234 73.4258 14.5273 78.8711 10.957 curveto
+ 78.8711 10.957 74.9648 15.5586 61.457 4.28125 curveto
+ closepath
+fill
+grestore %}
+
+
+% 22 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 61.457 4.28125 moveto
+ 61.457 4.28125 61.1484 3.63672 61.457 3.41016 curveto
+ 61.6211 3.40234 73.4258 14.5273 78.8711 10.957 curveto
+ 78.8711 10.957 74.9648 15.5586 61.457 4.28125 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 23 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 61.457 2.82813 moveto
+ 61.457 2.82813 61.1367 2.27344 61.457 2.25 curveto
+ 61.5859 1.99609 74.3789 11.9727 79.4531 7.76563 curveto
+ 79.4531 7.76563 76.0039 12.8594 61.457 2.82813 curveto
+ closepath
+fill
+grestore %}
+
+
+% 24 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.0549128 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 61.457 2.82813 moveto
+ 61.457 2.82813 61.1367 2.27344 61.457 2.25 curveto
+ 61.5859 1.99609 74.3789 11.9727 79.4531 7.76563 curveto
+ 79.4531 7.76563 76.0039 12.8594 61.457 2.82813 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 25 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 62.3281 2.25 moveto
+ 62.0391 0.285156 61.7266 -1.8125 61.168 -2.68359 curveto
+ 61.168 -2.68359 62.3203 -6.76953 59.4258 -11.1016 curveto
+ 59.4258 -11.1016 59.6367 -13.2813 59.1367 -14.293 curveto
+ 59.1367 -14.293 57.8516 -16.9844 56.2344 -17.1953 curveto
+ 55.0781 -17.4453 52.293 -18.4258 49.2695 -18.9375 curveto
+ 49.2695 -18.9375 43.6758 -23.3711 44.625 -27.3555 curveto
+ 44.625 -27.3555 44.8242 -32.6914 46.0742 -33.1602 curveto
+ 46.0742 -33.1602 42.2695 -29.6289 45.2031 -34.9023 curveto
+ 46.6563 -40.9961 lineto
+ 46.6563 -40.9961 38.5664 -34.0977 43.4648 -39.8359 curveto
+ 46.6563 -48.25 lineto
+ 46.6563 -48.25 40.4805 -42.3984 42.8828 -45.0586 curveto
+ 43.7539 -47.9609 lineto
+ 43.7539 -47.9609 30.0117 -39.207 39.9805 -48.543 curveto
+ 39.9805 -48.543 37.2891 -47.5078 35.918 -48.543 curveto
+ 35.918 -48.543 33.7148 -48.0156 33.8867 -48.543 curveto
+ 33.8867 -48.543 40.6094 -51.8477 41.7227 -57.8281 curveto
+ 41.7227 -57.8281 39.0781 -54.5313 39.9805 -58.1211 curveto
+ 39.9805 -61.6016 lineto
+ 39.9805 -61.6016 38.6953 -54.7852 38.8203 -66.8281 curveto
+ 38.8203 -66.8281 32.6914 -61.043 36.4961 -67.6992 curveto
+ 36.4961 -72.9219 lineto
+ 36.4961 -72.9219 31.543 -67.8125 33.5938 -71.7617 curveto
+ 33.5938 -71.7617 30.3945 -69.0898 31.5625 -74.082 curveto
+ 31.5625 -74.082 31.9258 -77.2617 30.4023 -73.793 curveto
+ 30.4023 -73.793 25.4141 -63.918 27.2109 -72.3398 curveto
+ 27.2109 -72.3398 27.582 -78.4102 26.0469 -73.793 curveto
+ 26.0469 -73.793 25.9258 -77.0039 22.8555 -79.3086 curveto
+ 22.8555 -79.3086 23.3711 -63.0859 19.375 -74.6641 curveto
+ 17.9219 -79.8867 lineto
+ 17.9219 -79.8867 17.1133 -76.8789 17.3398 -75.2422 curveto
+ 17.3398 -75.2422 12.5156 -69.9805 14.7305 -77.8555 curveto
+ 14.7305 -77.8555 9.83203 -70.4922 10.957 -74.6641 curveto
+ 10.957 -74.6641 13.2813 -79.8164 12.6992 -81.3398 curveto
+ 12.6992 -81.3398 7.40625 -70.2383 6.89453 -69.7305 curveto
+ 6.89453 -69.7305 7.66016 -83.2656 4.28125 -71.7617 curveto
+ 4.28125 -71.7617 2.42578 -75.6016 3.41016 -76.9844 curveto
+ 3.41016 -76.9844 0.765625 -74.4531 1.08984 -73.5039 curveto
+ 1.08984 -73.5039 -0.445313 -70.8125 -1.23438 -75.2422 curveto
+ -1.23438 -75.2422 -1.91797 -78.1563 -2.39453 -77.2773 curveto
+ -2.39453 -77.2773 -3.70313 -84.7969 -4.13672 -77.5664 curveto
+ -4.13672 -77.5664 -4.59766 -73.1758 -2.39453 -69.4375 curveto
+ -2.39453 -69.4375 -2.55469 -68.4492 -1.52344 -67.1172 curveto
+ -1.52344 -67.1172 -6.00391 -74.0664 -3.84375 -64.7969 curveto
+ -3.84375 -64.7969 -7.28125 -67.4297 -7.61719 -67.4063 curveto
+ -7.61719 -67.4063 -3.32031 -60.0195 -6.16797 -61.6016 curveto
+ -6.16797 -61.6016 -4.46875 -58.2344 -10.2305 -62.1836 curveto
+ -10.2305 -62.1836 -5.10938 -56.957 -10.8125 -60.1523 curveto
+ -10.8125 -60.1523 -13.2813 -62.0625 -10.8125 -58.9922 curveto
+ -10.8125 -58.9922 -6.25781 -53.7656 -13.4219 -59.5703 curveto
+ -13.4219 -59.5703 -16.9844 -64.7461 -17.1953 -65.668 curveto
+ -17.1953 -65.668 -14.0469 -56.3203 -12.5547 -55.5078 curveto
+ -12.5547 -55.5078 -15.3242 -43.8047 -28.5156 -48.832 curveto
+ -28.5156 -48.832 -30.6484 -54.2734 -32.0 -48.543 curveto
+ -32.0 -48.543 -36.1406 -46.3594 -39.8359 -55.2188 curveto
+ -39.8359 -55.2188 -40.9922 -50.8281 -40.707 -49.9922 curveto
+ -40.707 -49.9922 -42.9102 -50.3164 -42.7383 -49.9922 curveto
+ -42.7383 -49.9922 -46.8672 -51.3398 -47.3828 -51.1523 curveto
+ -47.3828 -51.1523 -49.4219 -53.2539 -49.4141 -52.0234 curveto
+ -49.4141 -52.0234 -52.4883 -52.9961 -51.7344 -51.7344 curveto
+ -51.7344 -51.7344 -54.6562 -56.8281 -54.9258 -58.1211 curveto
+ -55.5078 -53.4766 lineto
+ -56.0898 -54.3477 lineto
+ -56.0898 -54.3477 -56.6992 -51.9766 -56.3789 -51.7344 curveto
+ -56.1914 -51.2109 -62.832 -53.7656 -64.5039 -60.4414 curveto
+ -65.0859 -63.0547 lineto
+ -65.0859 -63.0547 -66.918 -58.3633 -66.5352 -56.957 curveto
+ -66.5352 -56.957 -68.0664 -57.3398 -68.2773 -58.6992 curveto
+ -68.2773 -58.6992 -69.4727 -51.3398 -67.9883 -49.4141 curveto
+ -67.9883 -49.4141 -69.3438 -49.168 -69.7305 -50.2852 curveto
+ -69.7305 -47.9609 lineto
+ -69.7305 -47.9609 -72.0234 -48.2734 -72.0508 -47.3828 curveto
+ -72.0508 -47.3828 -73.4297 -46.2305 -74.082 -47.6719 curveto
+ -74.082 -47.6719 -70.1094 -36.5234 -76.1133 -42.7383 curveto
+ -76.1133 -42.7383 -78.2852 -46.1016 -77.2773 -40.125 curveto
+ -75.9844 -34.0977 -74.707 -33.5859 -76.1133 -33.4492 curveto
+ -76.1133 -33.4492 -76.4961 -32.3086 -75.8242 -31.707 curveto
+ -75.2188 -31.2891 -76.1133 -31.707 -76.1133 -31.707 curveto
+ -76.1133 -31.707 -77.7734 -33.0742 -76.1133 -26.1953 curveto
+ -76.1133 -26.1953 -78.1563 -26.5625 -74.375 -17.1953 curveto
+ -74.375 -17.1953 -75.2188 -16.4727 -74.082 -13.7148 curveto
+ -74.082 -13.7148 -76.4961 -15.1953 -77.2773 -14.5859 curveto
+ -77.2773 -14.5859 -77.2617 -14.1758 -76.1133 -12.8438 curveto
+ -76.1133 -12.8438 -69.3438 4.59766 -75.8242 -2.39453 curveto
+ -75.8242 -2.39453 -79.6406 -6.75391 -77.5664 0.507813 curveto
+ -77.5664 0.507813 -74.6875 8.19141 -74.9531 9.50391 curveto
+ 62.3281 2.25 lineto
+ closepath
+fill
+grestore %}
+
+
+% 26 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 62.3281 2.25 moveto
+ 62.0391 0.285156 61.7266 -1.8125 61.168 -2.68359 curveto
+ 61.168 -2.68359 62.3203 -6.76953 59.4258 -11.1016 curveto
+ 59.4258 -11.1016 59.6367 -13.2813 59.1367 -14.293 curveto
+ 59.1367 -14.293 57.8516 -16.9844 56.2344 -17.1953 curveto
+ 55.0781 -17.4453 52.293 -18.4258 49.2695 -18.9375 curveto
+ 49.2695 -18.9375 43.6758 -23.3711 44.625 -27.3555 curveto
+ 44.625 -27.3555 44.8242 -32.6914 46.0742 -33.1602 curveto
+ 46.0742 -33.1602 42.2695 -29.6289 45.2031 -34.9023 curveto
+ 46.6563 -40.9961 lineto
+ 46.6563 -40.9961 38.5664 -34.0977 43.4648 -39.8359 curveto
+ 46.6563 -48.25 lineto
+ 46.6563 -48.25 40.4805 -42.3984 42.8828 -45.0586 curveto
+ 43.7539 -47.9609 lineto
+ 43.7539 -47.9609 30.0117 -39.207 39.9805 -48.543 curveto
+ 39.9805 -48.543 37.2891 -47.5078 35.918 -48.543 curveto
+ 35.918 -48.543 33.7148 -48.0156 33.8867 -48.543 curveto
+ 33.8867 -48.543 40.6094 -51.8477 41.7227 -57.8281 curveto
+ 41.7227 -57.8281 39.0781 -54.5313 39.9805 -58.1211 curveto
+ 39.9805 -61.6016 lineto
+ 39.9805 -61.6016 38.6953 -54.7852 38.8203 -66.8281 curveto
+ 38.8203 -66.8281 32.6914 -61.043 36.4961 -67.6992 curveto
+ 36.4961 -72.9219 lineto
+ 36.4961 -72.9219 31.543 -67.8125 33.5938 -71.7617 curveto
+ 33.5938 -71.7617 30.3945 -69.0898 31.5625 -74.082 curveto
+ 31.5625 -74.082 31.9258 -77.2617 30.4023 -73.793 curveto
+ 30.4023 -73.793 25.4141 -63.918 27.2109 -72.3398 curveto
+ 27.2109 -72.3398 27.582 -78.4102 26.0469 -73.793 curveto
+ 26.0469 -73.793 25.9258 -77.0039 22.8555 -79.3086 curveto
+ 22.8555 -79.3086 23.3711 -63.0859 19.375 -74.6641 curveto
+ 17.9219 -79.8867 lineto
+ 17.9219 -79.8867 17.1133 -76.8789 17.3398 -75.2422 curveto
+ 17.3398 -75.2422 12.5156 -69.9805 14.7305 -77.8555 curveto
+ 14.7305 -77.8555 9.83203 -70.4922 10.957 -74.6641 curveto
+ 10.957 -74.6641 13.2813 -79.8164 12.6992 -81.3398 curveto
+ 12.6992 -81.3398 7.40625 -70.2383 6.89453 -69.7305 curveto
+ 6.89453 -69.7305 7.66016 -83.2656 4.28125 -71.7617 curveto
+ 4.28125 -71.7617 2.42578 -75.6016 3.41016 -76.9844 curveto
+ 3.41016 -76.9844 0.765625 -74.4531 1.08984 -73.5039 curveto
+ 1.08984 -73.5039 -0.445313 -70.8125 -1.23438 -75.2422 curveto
+ -1.23438 -75.2422 -1.91797 -78.1563 -2.39453 -77.2773 curveto
+ -2.39453 -77.2773 -3.70313 -84.7969 -4.13672 -77.5664 curveto
+ -4.13672 -77.5664 -4.59766 -73.1758 -2.39453 -69.4375 curveto
+ -2.39453 -69.4375 -2.55469 -68.4492 -1.52344 -67.1172 curveto
+ -1.52344 -67.1172 -6.00391 -74.0664 -3.84375 -64.7969 curveto
+ -3.84375 -64.7969 -7.28125 -67.4297 -7.61719 -67.4063 curveto
+ -7.61719 -67.4063 -3.32031 -60.0195 -6.16797 -61.6016 curveto
+ -6.16797 -61.6016 -4.46875 -58.2344 -10.2305 -62.1836 curveto
+ -10.2305 -62.1836 -5.10938 -56.957 -10.8125 -60.1523 curveto
+ -10.8125 -60.1523 -13.2813 -62.0625 -10.8125 -58.9922 curveto
+ -10.8125 -58.9922 -6.25781 -53.7656 -13.4219 -59.5703 curveto
+ -13.4219 -59.5703 -16.9844 -64.7461 -17.1953 -65.668 curveto
+ -17.1953 -65.668 -14.0469 -56.3203 -12.5547 -55.5078 curveto
+ -12.5547 -55.5078 -15.3242 -43.8047 -28.5156 -48.832 curveto
+ -28.5156 -48.832 -30.6484 -54.2734 -32.0 -48.543 curveto
+ -32.0 -48.543 -36.1406 -46.3594 -39.8359 -55.2188 curveto
+ -39.8359 -55.2188 -40.9922 -50.8281 -40.707 -49.9922 curveto
+ -40.707 -49.9922 -42.9102 -50.3164 -42.7383 -49.9922 curveto
+ -42.7383 -49.9922 -46.8672 -51.3398 -47.3828 -51.1523 curveto
+ -47.3828 -51.1523 -49.4219 -53.2539 -49.4141 -52.0234 curveto
+ -49.4141 -52.0234 -52.4883 -52.9961 -51.7344 -51.7344 curveto
+ -51.7344 -51.7344 -54.6562 -56.8281 -54.9258 -58.1211 curveto
+ -55.5078 -53.4766 lineto
+ -56.0898 -54.3477 lineto
+ -56.0898 -54.3477 -56.6992 -51.9766 -56.3789 -51.7344 curveto
+ -56.1914 -51.2109 -62.832 -53.7656 -64.5039 -60.4414 curveto
+ -65.0859 -63.0547 lineto
+ -65.0859 -63.0547 -66.918 -58.3633 -66.5352 -56.957 curveto
+ -66.5352 -56.957 -68.0664 -57.3398 -68.2773 -58.6992 curveto
+ -68.2773 -58.6992 -69.4727 -51.3398 -67.9883 -49.4141 curveto
+ -67.9883 -49.4141 -69.3438 -49.168 -69.7305 -50.2852 curveto
+ -69.7305 -47.9609 lineto
+ -69.7305 -47.9609 -72.0234 -48.2734 -72.0508 -47.3828 curveto
+ -72.0508 -47.3828 -73.4297 -46.2305 -74.082 -47.6719 curveto
+ -74.082 -47.6719 -70.1094 -36.5234 -76.1133 -42.7383 curveto
+ -76.1133 -42.7383 -78.2852 -46.1016 -77.2773 -40.125 curveto
+ -75.9844 -34.0977 -74.707 -33.5859 -76.1133 -33.4492 curveto
+ -76.1133 -33.4492 -76.4961 -32.3086 -75.8242 -31.707 curveto
+ -75.2188 -31.2891 -76.1133 -31.707 -76.1133 -31.707 curveto
+ -76.1133 -31.707 -77.7734 -33.0742 -76.1133 -26.1953 curveto
+ -76.1133 -26.1953 -78.1563 -26.5625 -74.375 -17.1953 curveto
+ -74.375 -17.1953 -75.2188 -16.4727 -74.082 -13.7148 curveto
+ -74.082 -13.7148 -76.4961 -15.1953 -77.2773 -14.5859 curveto
+ -77.2773 -14.5859 -77.2617 -14.1758 -76.1133 -12.8438 curveto
+ -76.1133 -12.8438 -69.3438 4.59766 -75.8242 -2.39453 curveto
+ -75.8242 -2.39453 -79.6406 -6.75391 -77.5664 0.507813 curveto
+ -77.5664 0.507813 -74.6875 8.19141 -74.9531 9.50391 curveto
+ 62.3281 2.25 lineto
+ closepath
+stroke
+gsave %{
+
+
+% 27 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -74.9531 9.50391 moveto
+ -75.1367 9.44141 -75.8398 9.08203 -76.1133 8.63281 curveto
+ -76.1133 8.63281 -78.4102 5.10938 -76.6953 10.957 curveto
+ -76.6953 10.957 -73.8125 20.1758 -76.6953 16.4727 curveto
+ -76.6953 16.4727 -78.5391 14.3047 -77.5664 18.5039 curveto
+ -76.2813 23.8906 -75.5352 26.0469 -75.5352 26.0469 curveto
+ -75.5352 26.0469 -79.1758 24.3906 -70.6016 37.0781 curveto
+ -73.5039 35.918 lineto
+ -73.5039 35.918 -67.1719 48.5273 -60.1523 50.1367 curveto
+ -57.8281 52.1719 lineto
+ -57.8281 52.1719 -69.9805 64.2344 -65.957 75.9688 curveto
+ -65.957 75.9688 -63.7266 77.6445 -60.7305 74.8086 curveto
+ -60.7305 74.8086 -58.6172 73.1758 -56.668 73.6484 curveto
+ -56.668 73.6484 -46.8672 73.3008 -46.2187 73.3555 curveto
+ -45.5898 73.3008 -34.4805 85.1797 -13.4219 79.4531 curveto
+ -13.4219 79.4531 -11.8789 78.9219 -10.5195 79.1602 curveto
+ -10.5195 79.1602 -4.59766 84.4141 10.957 77.1289 curveto
+ 10.957 77.1289 14.1758 76.4961 14.7305 76.5508 curveto
+ 15.1953 76.4961 16.0898 76.4961 18.5039 74.5195 curveto
+ 21.1992 72.4102 21.3281 72.1523 21.9844 71.6172 curveto
+ 21.9844 71.6172 27.1992 68.0664 28.6602 67.8438 curveto
+ 28.6602 67.8438 32.4375 65.7695 33.8867 62.6172 curveto
+ 35.0469 62.3281 lineto
+ 35.0469 62.3281 35.5 59.8945 35.625 59.4258 curveto
+ 35.625 59.4258 37.1602 58.3594 37.3672 56.5234 curveto
+ 37.3672 56.5234 40.2266 54.6563 39.9805 53.332 curveto
+ 39.9805 53.332 40.6094 51.5938 40.8516 50.1367 curveto
+ 40.8516 50.1367 43.1641 48.5273 42.8828 47.5273 curveto
+ 42.8828 47.5273 45.3359 43.1641 44.9141 40.8516 curveto
+ 44.9141 40.8516 46.9961 41.1211 47.8164 40.2695 curveto
+ 47.8164 40.2695 48.1445 38.8242 48.6875 38.8203 curveto
+ 48.6875 38.8203 49.5508 38.3125 48.6875 37.0781 curveto
+ 48.6875 37.0781 49.293 36.1406 49.5586 35.625 curveto
+ 49.5586 35.625 49.1641 34.7344 50.4297 33.0156 curveto
+ 50.4297 33.0156 52.6133 26.9453 51.8789 25.1797 curveto
+ 51.8789 25.1797 51.8477 23.7539 52.75 23.1445 curveto
+ 52.75 23.1445 53.8906 23.3711 51.3008 19.6641 curveto
+ 51.3008 19.6641 50.9531 19.1563 51.8789 18.5039 curveto
+ 51.8789 18.5039 57.4688 17.2383 58.2656 12.1172 curveto
+ 58.2656 12.1172 62.5742 7.27734 62.6172 5.73047 curveto
+ 62.5742 4.88281 62.4883 3.87891 62.3281 2.53906 curveto
+ 62.3281 2.53906 62.4492 -0.257813 53.6211 -0.652344 curveto
+ 44.8242 -0.765625 -74.9531 9.50391 -74.9531 9.50391 curveto
+ closepath
+fill
+grestore %}
+
+
+% 28 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -74.9531 9.50391 moveto
+ -75.1367 9.44141 -75.8398 9.08203 -76.1133 8.63281 curveto
+ -76.1133 8.63281 -78.4102 5.10938 -76.6953 10.957 curveto
+ -76.6953 10.957 -73.8125 20.1758 -76.6953 16.4727 curveto
+ -76.6953 16.4727 -78.5391 14.3047 -77.5664 18.5039 curveto
+ -76.2813 23.8906 -75.5352 26.0469 -75.5352 26.0469 curveto
+ -75.5352 26.0469 -79.1758 24.3906 -70.6016 37.0781 curveto
+ -73.5039 35.918 lineto
+ -73.5039 35.918 -67.1719 48.5273 -60.1523 50.1367 curveto
+ -57.8281 52.1719 lineto
+ -57.8281 52.1719 -69.9805 64.2344 -65.957 75.9688 curveto
+ -65.957 75.9688 -63.7266 77.6445 -60.7305 74.8086 curveto
+ -60.7305 74.8086 -58.6172 73.1758 -56.668 73.6484 curveto
+ -56.668 73.6484 -46.8672 73.3008 -46.2187 73.3555 curveto
+ -45.5898 73.3008 -34.4805 85.1797 -13.4219 79.4531 curveto
+ -13.4219 79.4531 -11.8789 78.9219 -10.5195 79.1602 curveto
+ -10.5195 79.1602 -4.59766 84.4141 10.957 77.1289 curveto
+ 10.957 77.1289 14.1758 76.4961 14.7305 76.5508 curveto
+ 15.1953 76.4961 16.0898 76.4961 18.5039 74.5195 curveto
+ 21.1992 72.4102 21.3281 72.1523 21.9844 71.6172 curveto
+ 21.9844 71.6172 27.1992 68.0664 28.6602 67.8438 curveto
+ 28.6602 67.8438 32.4375 65.7695 33.8867 62.6172 curveto
+ 35.0469 62.3281 lineto
+ 35.0469 62.3281 35.5 59.8945 35.625 59.4258 curveto
+ 35.625 59.4258 37.1602 58.3594 37.3672 56.5234 curveto
+ 37.3672 56.5234 40.2266 54.6563 39.9805 53.332 curveto
+ 39.9805 53.332 40.6094 51.5938 40.8516 50.1367 curveto
+ 40.8516 50.1367 43.1641 48.5273 42.8828 47.5273 curveto
+ 42.8828 47.5273 45.3359 43.1641 44.9141 40.8516 curveto
+ 44.9141 40.8516 46.9961 41.1211 47.8164 40.2695 curveto
+ 47.8164 40.2695 48.1445 38.8242 48.6875 38.8203 curveto
+ 48.6875 38.8203 49.5508 38.3125 48.6875 37.0781 curveto
+ 48.6875 37.0781 49.293 36.1406 49.5586 35.625 curveto
+ 49.5586 35.625 49.1641 34.7344 50.4297 33.0156 curveto
+ 50.4297 33.0156 52.6133 26.9453 51.8789 25.1797 curveto
+ 51.8789 25.1797 51.8477 23.7539 52.75 23.1445 curveto
+ 52.75 23.1445 53.8906 23.3711 51.3008 19.6641 curveto
+ 51.3008 19.6641 50.9531 19.1563 51.8789 18.5039 curveto
+ 51.8789 18.5039 57.4688 17.2383 58.2656 12.1172 curveto
+ 58.2656 12.1172 62.5742 7.27734 62.6172 5.73047 curveto
+ 62.5742 4.88281 62.4883 3.87891 62.3281 2.53906 curveto
+ 62.3281 2.53906 62.4492 -0.257813 53.6211 -0.652344 curveto
+ 44.8242 -0.765625 -74.9531 9.50391 -74.9531 9.50391 curveto
+ closepath
+stroke
+
+
+% 29 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 57.6836 2.25 moveto
+ 65.6406 14.9414 61.168 -2.97656 61.168 -2.97656 curveto
+ 58.2344 -14.0469 16.7617 -2.10547 16.7617 -2.10547 curveto
+ 16.7617 -2.10547 -37.0352 7.66016 -40.707 8.92578 curveto
+ -44.1875 10.2148 -74.6641 8.05469 -74.6641 8.05469 curveto
+ -72.9219 13.5703 lineto
+ -52.1016 28.3516 -45.9727 20.9453 -41.5781 22.2773 curveto
+ -37.2891 23.4961 -38.0547 20.4336 -36.9336 20.2422 curveto
+ -36.0117 19.9219 -23.4961 27.8398 -21.5508 27.5 curveto
+ -19.4102 27.3281 -11.3203 34.9102 -16.0352 24.8867 curveto
+ -21.1992 13.9219 2.55469 12.2578 8.05469 15.8906 curveto
+ 13.2813 19.4102 5.73047 10.0859 5.73047 10.0859 curveto
+ -0.253906 3.57422 10.668 8.92578 10.668 8.92578 curveto
+ 21.7109 13.0273 29.3711 4.85156 30.4023 4.57031 curveto
+ 31.4141 4.34375 32.9492 3.32031 33.3047 5.44141 curveto
+ 33.457 7.40625 35.8555 12.7383 46.0742 4.28125 curveto
+ 52.3594 -0.957031 56.8125 6.02344 56.8125 6.02344 curveto
+ 57.6836 2.25 lineto
+ closepath
+fill
+
+
+% 30 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.09 0.5 0.772 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -21.8398 26.918 moveto
+ -19.8281 26.7695 -11.7305 34.3516 -16.6172 24.3086 curveto
+ -21.8086 12.9805 2.13672 11.7031 7.47266 15.3086 curveto
+ 12.8633 18.8555 5.15234 9.50391 5.15234 9.50391 curveto
+ -0.671875 3.01953 10.375 8.34375 10.375 8.34375 curveto
+ 21.293 12.4688 28.9531 4.29688 30.1133 3.99219 curveto
+ 30.9961 3.78516 32.5313 2.76172 32.7227 4.86328 curveto
+ 33.0391 6.84766 35.3945 12.1289 45.4961 3.69922 curveto
+ 52.3359 -1.75391 56.5234 5.15234 56.5234 5.15234 curveto
+ 57.6836 1.96094 lineto
+ 65.6445 14.5742 60.8789 -4.13672 60.8789 -4.13672 curveto
+ 58.0234 -15.0234 16.4727 -2.68359 16.4727 -2.68359 curveto
+ 16.4727 -2.68359 -37.4531 7.10547 -40.9961 8.34375 curveto
+ -44.6055 9.66016 -74.6641 7.76563 -74.6641 7.76563 curveto
+ -72.9219 13.2773 lineto
+ -52.2656 27.9766 -46.3906 20.3867 -42.1562 21.6953 curveto
+ -37.707 22.9414 -38.4766 19.875 -37.5117 19.6641 curveto
+ -36.4297 19.3633 -23.918 27.2813 -21.8398 26.918 curveto
+ closepath
+fill
+
+
+% 31 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.081 0.45 0.695 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -22.4219 26.3398 moveto
+ -20.2461 26.2148 -12.3516 33.8867 -16.9063 23.7266 curveto
+ -22.0977 12.1016 1.71875 11.1445 7.18359 14.7305 curveto
+ 12.4453 18.2969 4.86328 8.92578 4.86328 8.92578 curveto
+ -1.09375 2.46094 9.79688 7.76563 9.79688 7.76563 curveto
+ 20.875 11.9102 28.5352 3.73828 29.5313 3.41016 curveto
+ 30.5781 3.22656 32.1133 2.20703 32.4336 4.28125 curveto
+ 32.6211 6.29297 34.9375 11.5195 45.2031 3.12109 curveto
+ 52.3125 -2.54688 56.5234 3.99219 56.5234 3.99219 curveto
+ 57.6836 1.37891 lineto
+ 65.2695 13.8281 60.5859 -5.00781 60.5859 -5.00781 curveto
+ 57.8164 -16.0 15.8906 -3.26563 15.8906 -3.26563 curveto
+ 15.8906 -3.26563 -37.8711 6.54688 -41.5781 7.76563 curveto
+ -45.0234 9.10156 -74.9531 7.18359 -74.9531 7.18359 curveto
+ -73.2109 12.6992 lineto
+ -52.4297 27.6094 -46.8086 19.8281 -42.4453 21.1133 curveto
+ -38.125 22.3828 -38.8906 19.3164 -37.8047 19.082 curveto
+ -36.8477 18.8047 -24.332 26.7227 -22.4219 26.3398 curveto
+ closepath
+fill
+
+
+% 32 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.072 0.4 0.618 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -22.7109 26.0469 moveto
+ -20.6641 25.6563 -12.7695 33.3281 -17.4883 23.1445 curveto
+ -22.707 11.1133 1.46875 10.7031 6.60156 14.1484 curveto
+ 12.0273 17.7383 4.28125 8.34375 4.28125 8.34375 curveto
+ -1.50781 1.90234 9.50391 7.18359 9.50391 7.18359 curveto
+ 20.457 11.3555 28.1172 3.17969 29.2422 2.82813 curveto
+ 30.1602 2.66797 31.6953 1.64844 31.8516 3.69922 curveto
+ 32.2031 5.73438 34.4766 10.9063 44.625 2.53906 curveto
+ 52.2891 -3.34375 56.5234 3.12109 56.5234 3.12109 curveto
+ 57.6836 0.796875 lineto
+ 64.6367 12.6328 60.2969 -5.87891 60.2969 -5.87891 curveto
+ 57.6055 -16.9727 15.6016 -3.84375 15.6016 -3.84375 curveto
+ 15.6016 -3.84375 -38.2891 5.99219 -41.8672 7.18359 curveto
+ -45.4414 8.54297 -74.9531 6.60156 -74.9531 6.60156 curveto
+ -73.2109 12.4063 lineto
+ -52.5898 27.2344 -47.2266 19.2695 -43.0273 20.5352 curveto
+ -38.543 21.8242 -39.3086 18.7617 -38.3828 18.5039 curveto
+ -37.2656 18.25 -24.75 26.168 -22.7109 26.0469 curveto
+ closepath
+fill
+
+
+% 33 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.063 0.35 0.54 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -23.0 25.4688 moveto
+ -21.082 25.1016 -13.3516 32.8438 -17.7773 22.5664 curveto
+ -23.1289 10.0313 0.882813 10.0313 6.3125 13.5703 curveto
+ 11.6094 17.1836 3.99219 7.76563 3.99219 7.76563 curveto
+ -1.92578 1.34766 8.92578 6.60156 8.92578 6.60156 curveto
+ 20.0391 10.7969 27.6992 2.625 28.6602 2.25 curveto
+ 29.7422 2.11328 31.2734 1.08984 31.5625 3.12109 curveto
+ 31.7852 5.17969 34.0156 10.2969 44.332 2.25 curveto
+ 52.2656 -4.14063 56.2344 2.25 56.2344 2.25 curveto
+ 57.6836 0.507813 lineto
+ 64.0039 11.5 60.2969 -7.03906 60.2969 -7.03906 curveto
+ 57.3984 -17.9492 15.3086 -4.13672 15.3086 -4.13672 curveto
+ 15.3086 -4.13672 -38.707 5.43359 -42.1562 6.60156 curveto
+ -45.8555 7.98828 -75.2422 6.02344 -75.2422 6.02344 curveto
+ -73.5039 12.1172 lineto
+ -52.7539 26.8633 -47.6445 18.7148 -43.3164 19.9531 curveto
+ -38.9609 21.2695 -39.7266 18.2031 -38.6758 17.9219 curveto
+ -37.6836 17.6914 -25.1719 25.6094 -23.0 25.4688 curveto
+ closepath
+fill
+
+
+% 34 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.054 0.3 0.463 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -23.582 24.8867 moveto
+ -21.5 24.543 -13.2109 32.0273 -18.0664 21.9844 curveto
+ -24.3125 9.60156 0.464844 9.47266 5.73047 12.9883 curveto
+ 11.1914 16.625 3.41016 7.18359 3.41016 7.18359 curveto
+ -2.34375 0.789063 8.63281 6.02344 8.63281 6.02344 curveto
+ 19.6211 10.2383 27.2813 2.06641 28.3711 1.66797 curveto
+ 29.3242 1.55469 30.8594 0.535156 30.9844 2.53906 curveto
+ 31.3672 4.62109 33.5547 9.68359 43.7539 1.66797 curveto
+ 52.2422 -4.93359 56.2344 1.08984 56.2344 1.08984 curveto
+ 57.6836 -0.0742188 lineto
+ 63.4336 10.4961 60.0078 -7.91016 60.0078 -7.91016 curveto
+ 57.1875 -18.9258 14.7305 -4.71484 14.7305 -4.71484 curveto
+ 14.7305 -4.71484 -39.125 4.875 -42.7383 6.02344 curveto
+ -46.2773 7.42969 -75.2422 5.44141 -75.2422 5.44141 curveto
+ -73.5039 11.5352 lineto
+ -52.9141 26.4922 -48.0625 18.1563 -43.6094 19.375 curveto
+ -39.3789 20.7109 -40.1445 17.6484 -39.2539 17.3398 curveto
+ -38.1016 17.1367 -25.5859 25.0547 -23.582 24.8867 curveto
+ closepath
+fill
+
+
+% 35 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.045 0.25 0.386 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -23.8711 24.3086 moveto
+ -21.918 23.9844 -13.5078 31.4102 -18.6484 21.4063 curveto
+ -25.1133 8.66016 0.046875 8.91406 5.44141 12.4063 curveto
+ 10.7734 16.0664 3.12109 6.60156 3.12109 6.60156 curveto
+ -2.76172 0.230469 8.34375 5.73047 8.34375 5.73047 curveto
+ 19.2031 9.68359 26.8633 1.50781 27.7891 1.37891 curveto
+ 28.9063 0.996094 30.4414 -0.0234375 30.6914 1.96094 curveto
+ 30.9492 4.0625 33.0977 9.07422 43.4648 1.08984 curveto
+ 52.2188 -5.73047 55.9414 0.21875 55.9414 0.21875 curveto
+ 57.6836 -0.652344 lineto
+ 62.8008 9.04297 59.7148 -8.78125 59.7148 -8.78125 curveto
+ 56.9805 -19.8984 14.4375 -5.29688 14.4375 -5.29688 curveto
+ 14.4375 -5.29688 -39.543 4.32031 -43.0273 5.73047 curveto
+ -46.6953 6.87109 -75.5352 4.86328 -75.5352 4.86328 curveto
+ -73.793 11.2461 lineto
+ -53.0781 26.1211 -48.4805 17.5977 -44.1875 18.793 curveto
+ -39.7969 20.1563 -40.5625 17.0898 -39.543 16.7617 curveto
+ -38.5195 16.5781 -26.0039 24.4961 -23.8711 24.3086 curveto
+ closepath
+fill
+
+
+% 36 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.036 0.2 0.309 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -24.4531 23.7266 moveto
+ -22.3359 23.4258 -13.5742 30.668 -18.9375 20.8242 curveto
+ -26.0391 8.23047 -0.371094 8.35938 4.86328 11.8281 curveto
+ 10.3555 15.5078 2.82813 6.02344 2.82813 6.02344 curveto
+ -3.17969 -0.324219 7.76563 5.15234 7.76563 5.15234 curveto
+ 18.7852 9.125 26.4453 0.949219 27.5 0.796875 curveto
+ 28.4883 0.441406 30.0234 -0.582031 30.4023 1.37891 curveto
+ 30.5313 3.50391 32.6367 8.46484 43.1719 0.507813 curveto
+ 52.1953 -6.52344 55.9414 -0.652344 55.9414 -0.652344 curveto
+ 57.6836 -1.23438 lineto
+ 62.2969 7.97656 59.7148 -9.94141 59.7148 -9.94141 curveto
+ 56.7695 -20.875 13.8594 -5.87891 13.8594 -5.87891 curveto
+ 13.8594 -5.87891 -39.9609 3.76172 -43.6094 5.15234 curveto
+ -47.1094 6.31641 -75.5352 4.57031 -75.5352 4.57031 curveto
+ -73.793 10.957 lineto
+ -53.2422 25.75 -48.8984 17.043 -44.4805 18.2109 curveto
+ -40.2148 19.5977 -40.9805 16.5313 -39.8359 16.1797 curveto
+ -38.9375 16.0195 -26.4258 23.9375 -24.4531 23.7266 curveto
+ closepath
+fill
+
+
+% 37 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.027 0.15 0.231 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -24.7422 23.1445 moveto
+ -22.7539 22.8711 -13.9922 30.1094 -19.5195 20.2422 curveto
+ -26.457 7.67188 -0.789063 7.80078 4.57031 11.2461 curveto
+ 9.9375 14.9531 2.25 5.44141 2.25 5.44141 curveto
+ -3.59766 -0.882813 7.47266 4.57031 7.47266 4.57031 curveto
+ 18.3672 8.56641 26.0273 0.394531 26.918 0.21875 curveto
+ 28.0703 -0.117188 29.6055 -1.13672 29.8203 0.796875 curveto
+ 30.1133 2.94922 32.1758 7.85156 42.5938 -0.0742188 curveto
+ 52.1719 -7.32031 55.6523 -1.8125 55.6523 -1.8125 curveto
+ 57.6836 -1.52344 lineto
+ 62.0469 6.84375 59.4258 -10.8125 59.4258 -10.8125 curveto
+ 56.5625 -21.8477 13.5703 -6.45703 13.5703 -6.45703 curveto
+ 13.5703 -6.45703 -40.3789 3.20313 -43.8984 4.57031 curveto
+ -47.5313 5.75781 -75.8242 3.99219 -75.8242 3.99219 curveto
+ -74.082 10.668 lineto
+ -53.4023 25.3789 -49.3164 16.4844 -45.0586 17.6328 curveto
+ -40.6328 19.0391 -41.3984 15.9727 -40.4141 15.6016 curveto
+ -39.3555 15.4648 -26.8398 23.3828 -24.7422 23.1445 curveto
+ closepath
+fill
+
+
+% 38 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.018 0.1 0.154 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -25.3242 22.5664 moveto
+ -23.1719 22.3125 -14.5352 29.6211 -19.8086 19.6641 curveto
+ -26.875 6.73438 -1.20703 7.24609 4.28125 10.957 curveto
+ 9.51953 14.3945 1.96094 4.86328 1.96094 4.86328 curveto
+ -4.01563 -1.44141 6.89453 3.99219 6.89453 3.99219 curveto
+ 17.9492 8.01172 25.6094 -0.164063 26.6289 -0.363281 curveto
+ 27.6523 -0.671875 29.1875 -1.69531 29.5313 0.21875 curveto
+ 29.6953 2.39063 31.7188 7.24219 42.3008 -0.652344 curveto
+ 52.1484 -8.11719 55.6523 -2.68359 55.6523 -2.68359 curveto
+ 57.6836 -2.10547 lineto
+ 61.8594 5.58203 59.1367 -11.9727 59.1367 -11.9727 curveto
+ 56.3516 -22.8242 12.9883 -7.03906 12.9883 -7.03906 curveto
+ 12.9883 -7.03906 -40.7969 2.64453 -44.4805 3.99219 curveto
+ -47.9492 5.19922 -75.8242 3.41016 -75.8242 3.41016 curveto
+ -74.375 10.0859 lineto
+ -53.5664 25.0078 -49.7344 15.9297 -45.3477 17.3398 curveto
+ -41.0508 18.4805 -41.8164 15.418 -40.707 15.0195 curveto
+ -39.7734 14.9063 -27.2578 22.8242 -25.3242 22.5664 curveto
+ closepath
+fill
+
+
+% 39 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.009 0.05 0.077 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -25.6133 21.9844 moveto
+ -23.5898 21.7578 -15.2969 29.2383 -20.3906 19.082 curveto
+ -27.0391 5.53906 -1.625 6.6875 3.69922 10.375 curveto
+ 9.10156 13.8398 1.37891 4.28125 1.37891 4.28125 curveto
+ -4.43359 -1.99609 6.60156 3.41016 6.60156 3.41016 curveto
+ 17.5312 7.45313 25.1914 -0.71875 26.3398 -0.941406 curveto
+ 27.2344 -1.23047 28.7656 -2.25391 28.9492 -0.0742188 curveto
+ 29.2773 1.83594 31.2578 6.62891 41.7227 -1.23438 curveto
+ 52.1289 -8.91016 55.6523 -3.55469 55.6523 -3.55469 curveto
+ 57.6836 -2.68359 lineto
+ 61.8047 4.83594 58.8438 -12.8438 58.8438 -12.8438 curveto
+ 56.1445 -23.8008 12.6992 -7.61719 12.6992 -7.61719 curveto
+ 12.6992 -7.61719 -41.2148 2.08984 -44.7695 3.41016 curveto
+ -48.3672 4.64453 -76.1133 2.82813 -76.1133 2.82813 curveto
+ -74.375 9.79688 lineto
+ -53.7305 24.6367 -50.1523 15.3711 -45.9297 16.7617 curveto
+ -41.4688 17.9258 -42.2344 14.8594 -41.2852 14.7305 curveto
+ -40.1914 14.3477 -27.6758 22.2656 -25.6133 21.9844 curveto
+ closepath
+fill
+
+
+% 40 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 57.6836 -2.97656 moveto
+ 61.8086 3.96094 58.8438 -13.7148 58.8438 -13.7148 curveto
+ 55.9336 -24.7734 12.1172 -8.19922 12.1172 -8.19922 curveto
+ 12.1172 -8.19922 -41.6328 1.53125 -45.3477 2.82813 curveto
+ -48.7852 4.08594 -76.1133 2.25 -76.1133 2.25 curveto
+ -74.6641 9.50391 lineto
+ -53.8906 24.2656 -50.5703 14.8125 -46.2187 16.1797 curveto
+ -41.8867 17.3672 -42.6523 14.3047 -41.5781 14.1484 curveto
+ -40.6094 13.793 -28.0938 21.7109 -26.1953 21.4063 curveto
+ -24.0078 21.1992 -15.957 28.8008 -20.6797 18.5039 curveto
+ -27.7852 3.41406 -1.28906 6.63281 3.41016 9.79688 curveto
+ 8.68359 13.2813 1.08984 3.69922 1.08984 3.69922 curveto
+ -4.85156 -2.55469 6.02344 2.82813 6.02344 2.82813 curveto
+ 17.1133 6.89844 24.7734 -1.27734 25.7578 -1.52344 curveto
+ 26.8164 -1.78906 28.3516 -2.80859 28.6602 -0.652344 curveto
+ 28.8633 1.27734 30.7969 6.01953 41.4297 -1.8125 curveto
+ 52.1016 -9.70703 55.3633 -4.71484 55.3633 -4.71484 curveto
+ 57.6836 -2.97656 lineto
+ closepath
+fill
+
+
+% 41 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 44.332 -12.5547 moveto
+ 44.332 -12.5547 46.7383 -16.3477 39.9805 -20.6797 curveto
+ 39.9805 -20.6797 39.6523 -21.0078 45.4961 -19.8086 curveto
+ 45.4961 -19.8086 47.3789 -19.0273 47.8164 -15.7461 curveto
+ 47.8164 -15.7461 49.4219 -14.3047 51.0078 -12.5547 curveto
+ 52.4883 -10.7266 44.332 -12.5547 44.332 -12.5547 curveto
+ closepath
+fill
+
+
+% 42 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -0.363281 2.53906 moveto
+ -0.363281 2.53906 -5.90625 -6.00781 -5.58594 -7.61719 curveto
+ -5.30078 -10.8555 -5.23438 -13.9219 -6.16797 -15.1641 curveto
+ -7.28125 -16.4727 -10.2305 -27.0664 -10.2305 -27.0664 curveto
+ -10.2305 -27.0664 -9.96094 -27.457 -14.0039 -15.457 curveto
+ -14.0039 -15.457 -17.625 -10.2148 -11.1016 -4.42578 curveto
+ -11.1016 -4.42578 0.0 4.85156 -0.363281 2.53906 curveto
+ closepath
+fill
+
+
+% 43 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 37.9492 -21.2617 moveto
+ 37.9492 -21.2617 34.4805 -23.4961 39.1094 -33.4492 curveto
+ 37.0781 -32.5781 lineto
+ 37.0781 -32.5781 37.2891 -36.2695 38.2383 -36.9336 curveto
+ 35.918 -36.0625 lineto
+ 35.918 -36.0625 34.4805 -38.5664 35.625 -40.125 curveto
+ 35.625 -40.125 30.3945 -42.6523 30.6914 -44.7695 curveto
+ 30.6914 -44.7695 28.6055 -42.1406 29.8203 -40.125 curveto
+ 31.1602 -38.0547 33.457 -39.332 33.3047 -33.4492 curveto
+ 35.918 -34.6094 lineto
+ 35.918 -34.6094 34.2266 -31.6719 34.1758 -29.6758 curveto
+ 36.7891 -30.2578 lineto
+ 36.7891 -30.2578 31.8398 -21.9102 35.3359 -21.5508 curveto
+ 37.1602 -21.1992 37.9492 -21.2617 37.9492 -21.2617 curveto
+ closepath
+fill
+
+
+% 44 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 27.7891 -26.4844 moveto
+ 27.7891 -26.4844 26.8164 -25.1563 27.7891 -25.3242 curveto
+ 28.6055 -25.668 38.5664 -30.3945 40.5625 -33.4492 curveto
+ 40.5625 -33.4492 29.5 -25.668 27.7891 -26.4844 curveto
+ closepath
+fill
+
+
+% 45 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 24.3086 -29.0977 moveto
+ 24.3086 -29.0977 23.4961 -27.7109 24.3086 -27.9336 curveto
+ 25.2852 -28.2227 35.2461 -32.9492 37.0781 -36.0625 curveto
+ 37.0781 -36.0625 26.1797 -28.2227 24.3086 -29.0977 curveto
+ closepath
+fill
+
+
+% 46 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 20.2422 -24.1641 moveto
+ 20.2422 -24.1641 19.2852 -22.8594 20.2422 -23.0 curveto
+ 21.0703 -23.3711 31.0313 -28.0938 33.0156 -31.1289 curveto
+ 33.0156 -31.1289 21.9648 -23.3711 20.2422 -24.1641 curveto
+ closepath
+fill
+
+
+% 47 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 27.5 -38.0938 moveto
+ 27.5 -38.0938 27.582 -36.2695 28.3711 -36.6406 curveto
+ 29.3711 -36.7813 40.8672 -42.3984 42.8828 -45.3477 curveto
+ 42.8828 -45.3477 29.3711 -37.2891 27.5 -38.0938 curveto
+ closepath
+fill
+
+
+% 48 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 27.2109 -34.6094 moveto
+ 27.2109 -34.6094 26.8164 -33.2031 27.7891 -33.4492 curveto
+ 28.3516 -33.457 36.7773 -37.1641 38.8203 -40.125 curveto
+ 38.8203 -40.125 29.2461 -33.332 27.2109 -34.6094 curveto
+ closepath
+fill
+
+
+% 49 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 31.8516 -49.9922 moveto
+ 35.0469 -52.3164 lineto
+ 35.0469 -52.3164 31.6719 -49.9336 30.4023 -50.2852 curveto
+ 30.4023 -50.2852 32.6914 -53.8906 33.0156 -55.5078 curveto
+ 33.0156 -55.5078 29.625 -51.4648 27.7891 -51.7344 curveto
+ 27.7891 -51.7344 25.4141 -51.7188 25.4688 -55.2188 curveto
+ 25.4688 -55.2188 23.625 -51.8477 22.5664 -52.0234 curveto
+ 22.5664 -52.0234 22.2188 -54.0195 22.5664 -56.0898 curveto
+ 22.5664 -56.0898 21.3281 -53.7656 19.9531 -54.3477 curveto
+ 19.9531 -54.3477 18.0078 -53.6367 18.2109 -57.25 curveto
+ 18.2109 -57.25 18.2617 -60.6602 18.5039 -61.6016 curveto
+ 18.5039 -61.6016 16.7305 -53.125 15.8906 -52.8945 curveto
+ 15.8906 -52.8945 13.4102 -52.6133 11.8281 -55.5078 curveto
+ 11.8281 -55.5078 13.1523 -52.9961 11.5352 -53.7656 curveto
+ 11.5352 -53.7656 8.17188 -54.1484 7.18359 -56.3789 curveto
+ 7.18359 -56.3789 9.32422 -52.4883 7.47266 -53.4766 curveto
+ 7.47266 -53.4766 5.36328 -53.5078 4.86328 -55.5078 curveto
+ 4.86328 -55.5078 2.30078 -62.3203 1.66797 -62.7656 curveto
+ 1.66797 -62.7656 4.08594 -55.9336 3.69922 -55.7969 curveto
+ 3.69922 -55.7969 4.21484 -52.1016 2.53906 -56.957 curveto
+ 2.53906 -56.957 3.57422 -52.3594 1.66797 -52.6055 curveto
+ 0.0 -52.8711 -1.40625 -56.0625 -4.13672 -55.2188 curveto
+ -4.13672 -55.2188 -7.15234 -57.082 -7.91015 -34.9023 curveto
+ 31.8516 -49.9922 lineto
+ closepath
+fill
+
+
+% 50 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 30.4023 -20.3906 moveto
+ 30.4023 -20.3906 25.5391 -18.3906 12.6992 -20.3906 curveto
+ 12.6992 -20.3906 10.4727 -20.4336 8.34375 -17.4883 curveto
+ 6.12891 -14.8164 -2.42578 -12.5156 -4.42578 -13.1328 curveto
+ -7.61719 -15.1641 lineto
+ -7.91015 -15.457 lineto
+ -7.91015 -15.457 -11.75 -18.9023 -11.9727 -21.2617 curveto
+ -12.0039 -23.7539 -7.28125 -39.0781 -4.13672 -44.1875 curveto
+ -1.14844 -49.293 1.91797 -53.2539 8.05469 -52.6055 curveto
+ 8.05469 -52.6055 14.6875 -51.2109 22.8555 -52.6055 curveto
+ 22.8555 -52.6055 32.1797 -51.9766 33.0156 -49.4141 curveto
+ 33.9688 -46.8672 29.5313 -42.1563 29.5313 -42.1563 curveto
+ 29.5313 -42.1563 28.0938 -39.332 28.3711 -34.6094 curveto
+ 28.8633 -30.1367 28.7344 -21.1992 30.4023 -20.3906 curveto
+ closepath
+fill
+
+
+% 51 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.1 0.6 0.45 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 23.1445 -20.9688 moveto
+ 20.5586 -26.8203 30.1133 -47.6719 30.1133 -47.6719 curveto
+ 30.6484 -48.1445 25.9688 -50.0742 22.8555 -49.4141 curveto
+ 19.2383 -48.4531 6.3125 -49.7031 6.3125 -49.7031 curveto
+ -1.14844 -44.8242 -5.29688 -30.5469 -5.29688 -30.5469 curveto
+ -5.29688 -30.5469 -8.55469 -22.9883 -2.97656 -21.8398 curveto
+ 2.67969 -20.9453 23.1445 -20.9688 23.1445 -20.9688 curveto
+ closepath
+fill
+
+
+% 52 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.3 0.8 0.65 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 24.0156 -30.8359 moveto
+ 22.8281 -26.7227 22.3242 -22.957 23.1445 -20.9688 curveto
+ 23.1445 -20.9688 3.32031 -22.9883 -0.363281 -16.3242 curveto
+ -1.60938 -13.832 -6.32031 -23.625 -6.16797 -26.7734 curveto
+ -6.16797 -26.7734 13.9219 -31.2891 18.5039 -27.6445 curveto
+ 24.0156 -30.8359 lineto
+ closepath
+fill
+
+
+% 53 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.35 0.85 0.7 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 22.5664 -36.0625 moveto
+ 22.5664 -36.0625 21.8359 -38.3125 22.5664 -39.543 curveto
+ 22.5664 -39.543 23.1133 -39.8438 23.4375 -39.8359 curveto
+ 23.4375 -39.8359 23.1133 -41.1211 21.1133 -41.5781 curveto
+ 21.1133 -41.5781 20.5586 -43.0352 19.6641 -43.0273 curveto
+ 19.0273 -43.293 17.4961 -45.0781 16.1797 -44.7695 curveto
+ 14.9414 -44.3125 11.2461 -43.0273 11.2461 -43.0273 curveto
+ 11.2461 -43.0273 9.57813 -42.0156 6.89453 -43.0273 curveto
+ 6.89453 -43.0273 6.01172 -42.9102 5.73047 -41.5781 curveto
+ 5.71484 -40.1328 4.72656 -38.9492 3.99219 -38.3828 curveto
+ 3.44922 -37.6719 0.382813 -33.5859 0.796879 -33.4492 curveto
+ 1.14844 -33.332 22.5664 -36.0625 22.5664 -36.0625 curveto
+ closepath
+fill
+gsave %{
+
+
+% 54 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.55 0.5 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 24.0156 -20.6797 moveto
+ 24.0156 -20.6797 24.7734 -27.7109 23.7266 -30.2578 curveto
+ 22.7305 -33.0742 22.9883 -33.7148 23.1445 -34.9023 curveto
+ 23.4961 -36.2695 22.0938 -39.4609 20.2422 -41.2852 curveto
+ 16.4727 -41.8672 lineto
+ 16.4727 -41.8672 11.6211 -40.7383 8.63281 -41.5781 curveto
+ 8.63281 -41.5781 5.8125 -42.0586 4.86328 -37.2227 curveto
+ 4.86328 -37.2227 3.19141 -35.2461 0.796879 -34.3203 curveto
+ -1.40625 -33.457 -3.70313 -20.1758 -2.39453 -17.4883 curveto
+ -1.14844 -15.0703 3.44922 -13.6641 8.63281 -18.6484 curveto
+ 13.6641 -23.625 14.3047 -18.2617 24.0156 -20.6797 curveto
+ closepath
+fill
+grestore %}
+
+
+% 55 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 24.0156 -20.6797 moveto
+ 24.0156 -20.6797 24.7734 -27.7109 23.7266 -30.2578 curveto
+ 22.7305 -33.0742 22.9883 -33.7148 23.1445 -34.9023 curveto
+ 23.4961 -36.2695 22.0938 -39.4609 20.2422 -41.2852 curveto
+ 16.4727 -41.8672 lineto
+ 16.4727 -41.8672 11.6211 -40.7383 8.63281 -41.5781 curveto
+ 8.63281 -41.5781 5.8125 -42.0586 4.86328 -37.2227 curveto
+ 4.86328 -37.2227 3.19141 -35.2461 0.796879 -34.3203 curveto
+ -1.40625 -33.457 -3.70313 -20.1758 -2.39453 -17.4883 curveto
+ -1.14844 -15.0703 3.44922 -13.6641 8.63281 -18.6484 curveto
+ 13.6641 -23.625 14.3047 -18.2617 24.0156 -20.6797 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 56 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 23.4375 -44.4805 moveto
+ 23.4375 -44.4805 23.625 -43.8047 24.8867 -43.6094 curveto
+ 24.8867 -43.6094 32.1797 -42.5273 34.7539 -38.6758 curveto
+ 34.7539 -38.6758 37.0352 -36.7813 35.625 -40.4141 curveto
+ 35.625 -40.4141 32.3086 -46.9961 30.1133 -47.9609 curveto
+ 30.1133 -47.9609 24.9023 -49.168 23.4375 -44.4805 curveto
+ closepath
+fill
+grestore %}
+
+
+% 57 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 23.4375 -44.4805 moveto
+ 23.4375 -44.4805 23.625 -43.8047 24.8867 -43.6094 curveto
+ 24.8867 -43.6094 32.1797 -42.5273 34.7539 -38.6758 curveto
+ 34.7539 -38.6758 37.0352 -36.7813 35.625 -40.4141 curveto
+ 35.625 -40.4141 32.3086 -46.9961 30.1133 -47.9609 curveto
+ 30.1133 -47.9609 24.9023 -49.168 23.4375 -44.4805 curveto
+ closepath
+stroke
+
+
+% 58 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.2 0.75 0.7 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -2.10547 -24.1641 moveto
+ -2.36328 -21.4922 -2.98438 -18.7422 -2.39453 -17.4883 curveto
+ -0.367188 -13.5078 5.05078 -15.2266 8.63281 -18.6484 curveto
+ 13.6641 -23.625 14.3047 -18.2617 24.0156 -20.6797 curveto
+ 24.0156 -20.6797 24.4375 -25.0195 24.3086 -28.2266 curveto
+ 24.3086 -28.2266 12.2578 -24.5195 12.1172 -26.1953 curveto
+ 12.1172 -26.1953 11.4922 -25.2852 8.63281 -25.3242 curveto
+ 5.61719 -25.2852 -1.64063 -24.9102 -2.10547 -24.1641 curveto
+ closepath
+fill
+
+
+% 59 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.638521 setlinewidth
+ 0.35 0.9 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 11.5352 -20.6797 moveto
+ 11.5352 -20.6797 10.0898 -22.3477 11.2461 -25.3242 curveto
+ 11.2461 -25.3242 15.8359 -30.5195 15.3086 -34.9023 curveto
+stroke
+gsave %{
+
+
+% 60 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 26.918 -47.9609 moveto
+ 26.918 -47.9609 28.3516 -43.8047 25.4688 -45.9297 curveto
+ 25.4688 -45.9297 24.0078 -46.6133 24.3086 -47.0898 curveto
+ 24.7734 -47.6328 26.5625 -48.9102 26.918 -47.9609 curveto
+ closepath
+fill
+grestore %}
+
+
+% 61 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 26.918 -47.9609 moveto
+ 26.918 -47.9609 28.3516 -43.8047 25.4688 -45.9297 curveto
+ 25.4688 -45.9297 24.0078 -46.6133 24.3086 -47.0898 curveto
+ 24.7734 -47.6328 26.5625 -48.9102 26.918 -47.9609 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 62 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 25.4688 -48.25 moveto
+ 25.4688 -48.25 26.4609 -45.0039 24.3086 -46.8008 curveto
+ 24.3086 -46.8008 22.8008 -47.5234 23.4375 -47.6719 curveto
+ 24.75 -48.0664 23.293 -48.8867 25.4688 -48.25 curveto
+ closepath
+fill
+grestore %}
+
+
+% 63 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 25.4688 -48.25 moveto
+ 25.4688 -48.25 26.4609 -45.0039 24.3086 -46.8008 curveto
+ 24.3086 -46.8008 22.8008 -47.5234 23.4375 -47.6719 curveto
+ 24.75 -48.0664 23.293 -48.8867 25.4688 -48.25 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 64 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 23.7266 -48.25 moveto
+ 23.7266 -48.25 24.9258 -45.0039 22.5664 -46.8008 curveto
+ 22.5664 -46.8008 21.2852 -47.4766 21.6953 -47.6719 curveto
+ 22.832 -48.0664 21.7617 -48.8867 23.7266 -48.25 curveto
+ closepath
+fill
+grestore %}
+
+
+% 65 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 23.7266 -48.25 moveto
+ 23.7266 -48.25 24.9258 -45.0039 22.5664 -46.8008 curveto
+ 22.5664 -46.8008 21.2852 -47.4766 21.6953 -47.6719 curveto
+ 22.832 -48.0664 21.7617 -48.8867 23.7266 -48.25 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 66 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 21.6953 -48.25 moveto
+ 21.6953 -48.25 22.8203 -45.0664 20.5352 -46.8008 curveto
+ 20.5352 -46.8008 19.1719 -47.5508 19.6641 -47.6719 curveto
+ 20.5977 -48.0664 19.6523 -48.9492 21.6953 -48.25 curveto
+ closepath
+fill
+grestore %}
+
+
+% 67 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 21.6953 -48.25 moveto
+ 21.6953 -48.25 22.8203 -45.0664 20.5352 -46.8008 curveto
+ 20.5352 -46.8008 19.1719 -47.5508 19.6641 -47.6719 curveto
+ 20.5977 -48.0664 19.6523 -48.9492 21.6953 -48.25 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 68 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 19.6641 -48.25 moveto
+ 19.6641 -48.25 20.75 -45.0391 18.5039 -46.8008 curveto
+ 18.5039 -46.8008 17.2773 -47.2891 17.6328 -47.6719 curveto
+ 17.8906 -48.1055 17.5859 -48.9258 19.6641 -48.25 curveto
+ closepath
+fill
+grestore %}
+
+
+% 69 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 19.6641 -48.25 moveto
+ 19.6641 -48.25 20.75 -45.0391 18.5039 -46.8008 curveto
+ 18.5039 -46.8008 17.2773 -47.2891 17.6328 -47.6719 curveto
+ 17.8906 -48.1055 17.5859 -48.9258 19.6641 -48.25 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 70 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 17.6328 -48.543 moveto
+ 17.6328 -48.543 19.0273 -44.5703 16.1797 -46.5117 curveto
+ 16.1797 -46.5117 14.5586 -47.25 15.0195 -47.6719 curveto
+ 15.3242 -48.2734 14.9414 -49.293 17.6328 -48.543 curveto
+ closepath
+fill
+grestore %}
+
+
+% 71 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 17.6328 -48.543 moveto
+ 17.6328 -48.543 19.0273 -44.5703 16.1797 -46.5117 curveto
+ 16.1797 -46.5117 14.5586 -47.25 15.0195 -47.6719 curveto
+ 15.3242 -48.2734 14.9414 -49.293 17.6328 -48.543 curveto
+ closepath
+stroke
+
+
+% 72 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.638521 setlinewidth
+ 0.35 0.85 0.7 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 26.6289 -43.0273 moveto
+ 26.6289 -43.0273 22.3477 -42.1406 20.5352 -43.0273 curveto
+ 20.5352 -43.0273 18.5156 -43.5469 18.2109 -43.3164 curveto
+ 17.75 -43.293 16.7617 -43.0273 16.7617 -43.0273 curveto
+stroke
+
+
+% 73 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.638521 setlinewidth
+ 0.35 0.85 0.7 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 15.6016 -45.9297 moveto
+ 15.6016 -45.9297 11.8789 -41.5039 8.05469 -43.0273 curveto
+ 5.80469 -43.7305 6.12891 -42.6523 5.73047 -41.8672 curveto
+ 5.61719 -40.8672 5.55469 -39.5234 3.99219 -38.6758 curveto
+stroke
+gsave %{
+
+
+% 74 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 10.0859 -40.707 moveto
+ 10.0859 -40.707 11.4922 -37.2891 12.4063 -41.2852 curveto
+ 13.2813 -45.4648 14.3047 -46.6133 14.7305 -47.3828 curveto
+ 14.7305 -47.3828 14.8125 -49.168 12.1172 -49.1211 curveto
+ 12.1172 -49.1211 8.68359 -48.9102 8.63281 -47.9609 curveto
+ 8.42969 -47.1211 8.94141 -43.4219 10.0859 -40.707 curveto
+ closepath
+fill
+grestore %}
+
+
+% 75 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 10.0859 -40.707 moveto
+ 10.0859 -40.707 11.4922 -37.2891 12.4063 -41.2852 curveto
+ 13.2813 -45.4648 14.3047 -46.6133 14.7305 -47.3828 curveto
+ 14.7305 -47.3828 14.8125 -49.168 12.1172 -49.1211 curveto
+ 12.1172 -49.1211 8.68359 -48.9102 8.63281 -47.9609 curveto
+ 8.42969 -47.1211 8.94141 -43.4219 10.0859 -40.707 curveto
+ closepath
+stroke
+
+
+% 76 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.638521 setlinewidth
+ 0.35 0.85 0.7 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 5.73047 -43.0273 moveto
+ 5.73047 -43.0273 4.59766 -42.2695 3.69922 -42.7383 curveto
+stroke
+
+
+% 77 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.638521 setlinewidth
+ 0.35 0.85 0.7 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 3.69922 -37.8047 moveto
+ 3.69922 -37.8047 2.74609 -36.2383 1.08984 -36.0625 curveto
+stroke
+
+
+% 78 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.3 setcmykcolor
+() p2esetcolorname
+newpath
+ 28.9492 -49.4141 moveto
+ 28.9492 -49.4141 23.2422 -50.5703 21.6953 -49.9922 curveto
+ 21.6953 -49.9922 19.0273 -50.0586 21.6953 -50.5742 curveto
+ 21.6953 -50.5742 25.7969 -50.6992 28.3711 -50.2852 curveto
+ 28.3711 -50.2852 32.0547 -48.5273 28.9492 -49.4141 curveto
+ closepath
+fill
+gsave %{
+
+
+% 79 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 24.5977 -19.8086 moveto
+ 24.5977 -19.8086 18.9023 -19.793 18.2109 -20.0977 curveto
+ 18.2109 -20.0977 15.9648 -29.8828 17.0508 -32.2891 curveto
+ 17.0508 -32.2891 17.4961 -33.2031 18.5039 -31.418 curveto
+ 18.5039 -31.418 24.2656 -20.9453 25.1797 -20.3906 curveto
+ 26.3086 -19.668 24.9023 -19.793 24.5977 -19.8086 curveto
+ closepath
+fill
+grestore %}
+
+
+% 80 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 24.5977 -19.8086 moveto
+ 24.5977 -19.8086 18.9023 -19.793 18.2109 -20.0977 curveto
+ 18.2109 -20.0977 15.9648 -29.8828 17.0508 -32.2891 curveto
+ 17.0508 -32.2891 17.4961 -33.2031 18.5039 -31.418 curveto
+ 18.5039 -31.418 24.2656 -20.9453 25.1797 -20.3906 curveto
+ 26.3086 -19.668 24.9023 -19.793 24.5977 -19.8086 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 81 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 49.2695 -18.9375 moveto
+ 49.2695 -18.9375 46.293 -19.4766 42.3008 -20.3906 curveto
+ 42.3008 -20.3906 40.7383 -27.457 39.6914 -29.0977 curveto
+ 38.6953 -30.5195 39.8438 -30.5195 40.8516 -29.6758 curveto
+ 42.1406 -28.7344 46.8672 -24.2656 47.5273 -23.0 curveto
+ 48.1445 -21.4531 49.2695 -18.9375 49.2695 -18.9375 curveto
+ closepath
+fill
+grestore %}
+
+
+% 82 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 49.2695 -18.9375 moveto
+ 49.2695 -18.9375 46.293 -19.4766 42.3008 -20.3906 curveto
+ 42.3008 -20.3906 40.7383 -27.457 39.6914 -29.0977 curveto
+ 38.6953 -30.5195 39.8438 -30.5195 40.8516 -29.6758 curveto
+ 42.1406 -28.7344 46.8672 -24.2656 47.5273 -23.0 curveto
+ 48.1445 -21.4531 49.2695 -18.9375 49.2695 -18.9375 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 83 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 42.0117 -20.3906 moveto
+ 42.0117 -20.3906 40.3047 -20.8672 39.9805 -21.5508 curveto
+ 39.6602 -22.2813 40.2695 -23.293 40.2695 -23.293 curveto
+ 40.2695 -23.293 40.6836 -24.3906 41.1406 -23.582 curveto
+ 41.4531 -23.0078 42.3672 -20.5625 42.0117 -20.3906 curveto
+ closepath
+fill
+grestore %}
+
+
+% 84 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 42.0117 -20.3906 moveto
+ 42.0117 -20.3906 40.3047 -20.8672 39.9805 -21.5508 curveto
+ 39.6602 -22.2813 40.2695 -23.293 40.2695 -23.293 curveto
+ 40.2695 -23.293 40.6836 -24.3906 41.1406 -23.582 curveto
+ 41.4531 -23.0078 42.3672 -20.5625 42.0117 -20.3906 curveto
+ closepath
+stroke
+
+
+% 85 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 42.0117 -20.3906 moveto
+ 42.0117 -20.3906 40.9922 -21.9648 39.9805 -21.8398 curveto
+ 38.6953 -21.9648 38.5703 -21.832 37.6602 -22.1289 curveto
+ 36.2031 -22.3477 36.332 -21.7109 34.1758 -22.1289 curveto
+ 33.3828 -22.2461 32.5625 -21.9648 31.5625 -22.4219 curveto
+ 30.7773 -22.7305 29.7539 -22.4766 29.2422 -21.8398 curveto
+ 28.9883 -21.1992 27.5 -19.8086 27.5 -19.8086 curveto
+ 27.5 -19.8086 31.543 -20.4336 32.4336 -20.6797 curveto
+ 32.4336 -20.6797 39.5859 -21.0703 42.0117 -20.3906 curveto
+ closepath
+fill
+gsave %{
+
+
+% 86 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 27.7891 -20.3906 moveto
+ 27.7891 -20.3906 29.9609 -21.4883 30.1133 -22.1289 curveto
+ 30.2188 -23.0195 28.3711 -24.1641 28.3711 -24.1641 curveto
+ 28.3711 -24.1641 27.5352 -25.668 27.2109 -25.0313 curveto
+ 27.1523 -24.1367 27.6484 -20.4961 27.7891 -20.3906 curveto
+ closepath
+fill
+grestore %}
+
+
+% 87 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 27.7891 -20.3906 moveto
+ 27.7891 -20.3906 29.9609 -21.4883 30.1133 -22.1289 curveto
+ 30.2188 -23.0195 28.3711 -24.1641 28.3711 -24.1641 curveto
+ 28.3711 -24.1641 27.5352 -25.668 27.2109 -25.0313 curveto
+ 27.1523 -24.1367 27.6484 -20.4961 27.7891 -20.3906 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 88 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 39.9805 -22.1289 moveto
+ 39.9805 -22.1289 37.6328 -25.6875 37.6602 -22.1289 curveto
+ 37.6602 -22.1289 37.3867 -21.7031 37.9492 -21.8398 curveto
+ 39.8867 -21.6719 39.4023 -20.3633 39.9805 -22.1289 curveto
+ closepath
+fill
+grestore %}
+
+
+% 89 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 39.9805 -22.1289 moveto
+ 39.9805 -22.1289 37.6328 -25.6875 37.6602 -22.1289 curveto
+ 37.6602 -22.1289 37.3867 -21.7031 37.9492 -21.8398 curveto
+ 39.8867 -21.6719 39.4023 -20.3633 39.9805 -22.1289 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 90 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 37.6602 -22.1289 moveto
+ 37.6602 -22.1289 35.0508 -25.7656 35.3359 -22.1289 curveto
+ 35.3359 -22.1289 35.25 -22.0586 35.918 -22.1289 curveto
+ 37.3242 -21.875 37.2148 -20.4336 37.6602 -22.1289 curveto
+ closepath
+fill
+grestore %}
+
+
+% 91 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 37.6602 -22.1289 moveto
+ 37.6602 -22.1289 35.0508 -25.7656 35.3359 -22.1289 curveto
+ 35.3359 -22.1289 35.25 -22.0586 35.918 -22.1289 curveto
+ 37.3242 -21.875 37.2148 -20.4336 37.6602 -22.1289 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 92 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 35.3359 -22.1289 moveto
+ 35.3359 -22.1289 32.7344 -25.5898 33.0156 -22.4219 curveto
+ 33.0156 -22.4219 32.9102 -22.1094 33.3047 -22.1289 curveto
+ 34.6797 -21.7891 34.75 -20.75 35.3359 -22.1289 curveto
+ closepath
+fill
+grestore %}
+
+
+% 93 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 35.3359 -22.1289 moveto
+ 35.3359 -22.1289 32.7344 -25.5898 33.0156 -22.4219 curveto
+ 33.0156 -22.4219 32.9102 -22.1094 33.3047 -22.1289 curveto
+ 34.6797 -21.7891 34.75 -20.75 35.3359 -22.1289 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 94 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.2 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 33.0156 -22.1289 moveto
+ 33.0156 -22.1289 30.5586 -25.9141 30.4023 -22.7109 curveto
+ 30.4023 -22.7109 29.9219 -22.3477 30.4023 -22.4219 curveto
+ 32.3359 -22.043 32.082 -20.6211 33.0156 -22.1289 curveto
+ closepath
+fill
+grestore %}
+
+
+% 95 pathnumber
+% strokedpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 33.0156 -22.1289 moveto
+ 33.0156 -22.1289 30.5586 -25.9141 30.4023 -22.7109 curveto
+ 30.4023 -22.7109 29.9219 -22.3477 30.4023 -22.4219 curveto
+ 32.3359 -22.043 32.082 -20.6211 33.0156 -22.1289 curveto
+ closepath
+stroke
+
+
+% 96 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.1 0.1 0.3 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 44.625 -23.293 moveto
+ 46.9453 -23.0 lineto
+ 47.9063 -21.2617 48.6875 -19.2266 48.6875 -19.2266 curveto
+ 48.6875 -19.2266 46.5469 -19.6211 42.5938 -20.3906 curveto
+ 42.5938 -20.3906 42.2773 -21.5703 41.7227 -23.293 curveto
+ 44.625 -23.293 lineto
+ closepath
+fill
+
+
+% 97 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.15963 setlinewidth
+ 0.1 0.1 0.3 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 23.7266 -21.8398 moveto
+ 24.3867 -21.0586 24.8086 -20.4961 24.8867 -20.3906 curveto
+ 25.9766 -19.7695 24.6563 -19.8867 24.3086 -19.8086 curveto
+ 24.3086 -19.8086 19.0039 -19.8867 18.5039 -20.0977 curveto
+ 18.5039 -20.0977 18.2344 -20.8438 17.9219 -21.8398 curveto
+ 17.9219 -21.8398 21.2383 -21.2852 23.7266 -21.8398 curveto
+ closepath
+fill
+
+
+% 98 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 6.60156 22.2773 moveto
+ -2.10938 20.9805 -10.2539 32.3594 -10.8125 35.3359 curveto
+ -11.3789 38.543 -8.19922 42.3008 -8.19922 42.3008 curveto
+ -8.57031 43.3164 -7.02344 47.8125 -5.29688 50.7188 curveto
+ -3.65234 53.7109 1.42578 53.4023 6.89453 53.6211 curveto
+ 12.082 53.9922 17.9805 46.5469 18.5039 46.0742 curveto
+ 18.8242 45.4258 16.8555 33.2031 16.4727 31.2734 curveto
+ 16.0156 29.5508 16.7617 21.1133 16.7617 21.1133 curveto
+ 5.92578 24.0273 15.5938 23.5117 6.60156 22.2773 curveto
+ closepath
+fill
+
+
+% 99 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.08 0.44 0.68 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 18.2109 45.7852 moveto
+ 18.582 45.2266 16.6523 33.2305 16.1797 31.5625 curveto
+ 15.8242 29.6445 16.7617 21.4063 16.7617 21.4063 curveto
+ 6.22266 24.2031 15.4102 23.7109 6.60156 22.5664 curveto
+ -1.96875 21.2305 -9.96484 32.4023 -10.5195 35.3359 curveto
+ -11.0703 38.4688 -7.91015 42.3008 -7.91015 42.3008 curveto
+ -8.3125 43.1602 -6.79296 47.5742 -5.00781 50.4297 curveto
+ -3.48438 53.3633 1.5 53.0586 6.89453 53.332 curveto
+ 11.9648 53.6406 17.7539 46.332 18.2109 45.7852 curveto
+ closepath
+fill
+
+
+% 100 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.06 0.33 0.51 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 17.9219 45.4961 moveto
+ 18.3438 45.0313 16.4492 33.2539 16.1797 31.5625 curveto
+ 15.6367 29.7344 16.4727 21.6953 16.4727 21.6953 curveto
+ 6.42188 24.5352 15.2305 23.9141 6.60156 22.5664 curveto
+ -1.82813 21.4766 -9.67578 32.4414 -10.2305 35.3359 curveto
+ -10.7617 38.3984 -7.61719 42.0117 -7.61719 42.0117 curveto
+ -8.05469 43.0 -6.5625 47.332 -5.00781 50.1367 curveto
+ -3.31641 53.0195 1.57422 52.7188 6.89453 53.0391 curveto
+ 11.8438 53.2891 17.5312 46.1133 17.9219 45.4961 curveto
+ closepath
+fill
+
+
+% 101 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.04 0.22 0.34 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 17.6328 45.4961 moveto
+ 18.1055 44.8359 16.2461 33.2813 15.8906 31.5625 curveto
+ 15.4453 29.8281 16.1797 21.9844 16.1797 21.9844 curveto
+ 6.84766 24.7422 15.0469 24.1172 6.60156 22.8555 curveto
+ -1.6875 21.7266 -9.39063 32.4844 -9.94141 35.3359 curveto
+ -10.4531 38.3281 -7.32813 42.0117 -7.32813 42.0117 curveto
+ -7.79688 42.8398 -6.33594 47.0938 -4.71484 49.8477 curveto
+ -3.14843 52.6719 1.65234 52.375 6.89453 52.75 curveto
+ 11.7266 52.9375 17.3047 45.8984 17.6328 45.4961 curveto
+ closepath
+fill
+
+
+% 102 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.02 0.11 0.17 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 17.3398 45.2031 moveto
+ 17.8633 44.6367 16.0391 33.3047 15.6016 31.5625 curveto
+ 15.2578 29.918 16.1797 21.9844 16.1797 21.9844 curveto
+ 7.14063 24.9492 14.8672 24.3164 6.60156 23.1445 curveto
+ -1.54688 21.9727 -9.10156 32.5234 -9.64844 35.3359 curveto
+ -10.1406 38.2539 -7.03906 41.7227 -7.03906 41.7227 curveto
+ -7.53906 42.6836 -6.10547 46.8516 -4.42578 49.5586 curveto
+ -2.97656 52.3242 1.73047 52.0352 6.89453 52.4609 curveto
+ 11.6094 52.582 17.082 45.6797 17.3398 45.2031 curveto
+ closepath
+fill
+
+
+% 103 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 6.60156 23.4375 moveto
+ -1.40625 22.2188 -8.8125 32.5625 -9.35938 35.3359 curveto
+ -9.83593 38.1836 -7.03906 41.7227 -7.03906 41.7227 curveto
+ -7.28125 42.5273 -5.875 46.6133 -4.42578 49.2695 curveto
+ -2.80859 51.9766 1.80468 51.6914 6.89453 51.8789 curveto
+ 11.4922 52.2305 16.8555 45.4648 17.3398 44.9141 curveto
+ 17.6211 44.4414 15.8359 33.332 15.3086 31.5625 curveto
+ 15.0703 30.0117 15.8906 22.2773 15.8906 22.2773 curveto
+ 7.69531 25.0938 14.6875 24.5195 6.60156 23.4375 curveto
+ closepath
+fill
+
+
+% 104 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -8.19922 34.1758 moveto
+ -8.19922 34.1758 0.703125 31.7969 4.28125 32.4336 curveto
+ 4.28125 32.4336 9.44922 34.4141 12.1172 27.5 curveto
+ 12.1172 27.5 13.4102 25.1563 14.1484 24.5977 curveto
+ 14.6875 23.8828 -8.19922 34.1758 -8.19922 34.1758 curveto
+ closepath
+fill
+
+
+% 105 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -9.35938 35.0469 moveto
+ -9.35938 35.0469 -0.128906 31.0313 3.12109 31.2734 curveto
+ 3.12109 31.2734 8.30078 32.6289 10.957 28.082 curveto
+ 10.957 28.082 13.6641 25.0313 14.7305 24.5977 curveto
+ 14.7305 24.5977 14.8125 24.0078 12.6992 25.1797 curveto
+ 9.50391 23.7266 lineto
+ 9.50391 23.7266 4.72656 20.5586 1.66797 25.7578 curveto
+ 1.66797 25.7578 0.382813 29.2461 0.507813 29.8203 curveto
+ 0.382813 30.5195 -6.38672 32.3086 -7.03906 32.4336 curveto
+ -7.40625 32.5625 -9.51563 33.9063 -9.35938 35.0469 curveto
+ closepath
+fill
+
+
+% 106 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.4 0.2 0.8 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 5.73047 23.4375 moveto
+ 7.94141 23.4609 10.6133 24.6953 10.668 26.6289 curveto
+ 10.6133 28.6836 7.94141 30.6836 5.73047 30.6914 curveto
+ 3.55078 30.6836 1.77344 29.0664 1.66797 27.2109 curveto
+ 1.77344 25.0781 3.55078 23.4609 5.73047 23.4375 curveto
+ closepath
+fill
+
+
+% 107 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.6 0.4 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 6.89453 28.6602 moveto
+ 8.44922 28.5586 10.0742 28.0781 10.0859 28.082 curveto
+ 9.5625 29.6211 7.53125 30.6836 5.73047 30.6914 curveto
+ 4.375 30.6836 3.16406 30.0547 2.53906 28.9492 curveto
+ 2.53906 28.9492 4.14844 29.1992 6.89453 28.6602 curveto
+ closepath
+fill
+
+
+% 108 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 3.12109 28.9492 moveto
+ 3.12109 28.9492 4.46875 29.8828 4.57031 29.2422 curveto
+ 4.57031 29.2422 3.32031 27.7734 3.12109 28.9492 curveto
+ closepath
+fill
+
+
+% 109 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 6.3125 26.3398 moveto
+ 7.05469 26.2656 7.70313 26.9141 7.76563 27.7891 curveto
+ 7.70313 28.5117 7.05469 29.1563 6.3125 29.2422 curveto
+ 5.46094 29.1563 4.8125 28.5117 4.86328 27.7891 curveto
+ 4.8125 26.9141 5.46094 26.2656 6.3125 26.3398 curveto
+ closepath
+fill
+
+
+% 110 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 39.3984 30.4023 moveto
+ 39.3984 30.4023 40.4805 37.2891 39.6914 38.8203 curveto
+ 39.6914 38.8203 36.2695 41.8867 36.4961 43.1719 curveto
+ 36.4961 43.1719 36.5234 48.7813 36.7891 48.9766 curveto
+ 37.2891 49.293 39.7148 51.2109 41.7227 49.2695 curveto
+ 41.7227 49.2695 44.9531 43.4219 44.625 41.4297 curveto
+ 44.625 40.8516 lineto
+ 44.625 40.8516 47.1211 40.8672 47.5273 40.2695 curveto
+ 47.5273 40.2695 48.0156 38.5664 48.3984 38.5273 curveto
+ 48.3984 38.5273 49.293 37.6719 48.6875 36.7891 curveto
+ 48.6875 36.7891 49.293 36.0117 49.2695 34.7539 curveto
+ 46.6563 33.5938 lineto
+ 46.6563 33.5938 46.1016 28.8633 42.5938 27.2109 curveto
+ 41.1094 26.457 40.0977 28.6055 39.3984 30.4023 curveto
+ closepath
+fill
+
+
+% 111 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 39.6914 30.9844 moveto
+ 39.6914 30.9844 40.6992 37.1992 39.9805 38.5273 curveto
+ 39.9805 38.5273 36.9063 41.3398 37.0781 42.3008 curveto
+ 37.0781 42.3008 37.1367 47.543 37.3672 47.8164 curveto
+ 37.8242 48.0039 40.0078 49.7266 41.7227 47.8164 curveto
+ 41.7227 47.8164 44.7227 42.7188 44.625 40.8516 curveto
+ 44.625 40.2695 lineto
+ 44.625 40.2695 46.6758 40.418 47.2344 39.9805 curveto
+ 47.2344 39.9805 47.4805 38.3516 47.8164 38.2383 curveto
+ 47.8164 38.2383 48.6289 37.543 48.1055 36.7891 curveto
+ 48.1055 36.7891 48.6289 36.0508 48.3984 35.0469 curveto
+ 46.3672 33.8867 lineto
+ 46.3672 33.8867 45.7578 29.6133 42.5938 28.082 curveto
+ 41.2617 27.4492 40.3555 29.3828 39.6914 30.9844 curveto
+ closepath
+fill
+
+
+% 112 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.075 0.412 0.637 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 37.0781 48.6875 moveto
+ 37.3984 48.9961 39.7891 50.8398 41.7227 48.9766 curveto
+ 41.7227 48.9766 44.8945 43.2422 44.625 41.1406 curveto
+ 44.625 40.5625 lineto
+ 44.625 40.5625 47.0117 40.7539 47.5273 40.2695 curveto
+ 47.5273 40.2695 47.8828 38.5117 48.3984 38.5273 curveto
+ 48.3984 38.5273 49.1289 37.6406 48.3984 36.7891 curveto
+ 48.3984 36.7891 49.1289 36.0234 48.9766 34.7539 curveto
+ 46.6563 33.5938 lineto
+ 46.6563 33.5938 46.0156 29.0508 42.5938 27.5 curveto
+ 41.1484 26.707 40.1641 28.8008 39.3984 30.6914 curveto
+ 39.3984 30.6914 40.5352 37.2656 39.6914 38.5273 curveto
+ 39.6914 38.5273 36.4297 41.75 36.4961 42.8828 curveto
+ 36.4961 42.8828 36.6758 48.4727 37.0781 48.6875 curveto
+ closepath
+fill
+
+
+% 113 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.05 0.275 0.425 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 37.0781 48.3984 moveto
+ 37.5078 48.6992 39.8633 50.4688 41.7227 48.3984 curveto
+ 41.7227 48.3984 44.8359 43.0703 44.625 41.1406 curveto
+ 44.625 40.5625 lineto
+ 44.625 40.5625 46.8984 40.6406 47.5273 39.9805 curveto
+ 47.5273 39.9805 47.75 38.457 48.1055 38.2383 curveto
+ 48.1055 38.2383 48.9609 37.6094 48.3984 36.7891 curveto
+ 48.3984 36.7891 48.9609 36.0313 48.9766 34.7539 curveto
+ 46.6563 33.5938 lineto
+ 46.6563 33.5938 45.9297 29.2383 42.5938 27.7891 curveto
+ 41.1875 26.9531 40.2266 28.9961 39.6914 30.6914 curveto
+ 39.6914 30.6914 40.5898 37.2461 39.9805 38.5273 curveto
+ 39.9805 38.5273 36.5859 41.6133 36.7891 42.5938 curveto
+ 36.7891 42.5938 36.8281 48.1641 37.0781 48.3984 curveto
+ closepath
+fill
+
+
+% 114 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.025 0.137 0.212 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 37.3672 48.1055 moveto
+ 37.6133 48.4023 39.9375 50.0977 41.7227 48.1055 curveto
+ 41.7227 48.1055 44.7773 42.8945 44.625 41.1406 curveto
+ 44.625 40.2695 lineto
+ 44.625 40.2695 46.7852 40.5313 47.2344 39.9805 curveto
+ 47.2344 39.9805 47.6133 38.4023 48.1055 38.2383 curveto
+ 48.1055 38.2383 48.7969 37.5781 48.1055 36.7891 curveto
+ 48.1055 36.7891 48.7969 36.043 48.6875 34.7539 curveto
+ 46.3672 33.5938 lineto
+ 46.3672 33.5938 45.8438 29.4258 42.5938 27.7891 curveto
+ 41.2266 27.2031 40.2891 29.1914 39.6914 30.9844 curveto
+ 39.6914 30.9844 40.6445 37.2227 39.9805 38.5273 curveto
+ 39.9805 38.5273 36.7461 41.4766 36.7891 42.5938 curveto
+ 36.7891 42.5938 36.9844 47.8555 37.3672 48.1055 curveto
+ closepath
+fill
+
+
+% 115 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 39.6914 31.2734 moveto
+ 39.6914 31.2734 40.6992 37.1992 39.9805 38.5273 curveto
+ 39.9805 38.5273 36.9063 41.3398 37.0781 42.3008 curveto
+ 37.0781 42.3008 37.1367 47.543 37.3672 47.8164 curveto
+ 37.7227 48.1055 40.0078 49.7266 41.7227 47.8164 curveto
+ 41.7227 47.8164 44.7227 42.7188 44.625 40.8516 curveto
+ 44.625 40.2695 lineto
+ 44.625 40.2695 46.6758 40.418 47.2344 39.9805 curveto
+ 47.2344 39.9805 47.4805 38.3516 47.8164 38.2383 curveto
+ 47.8164 38.2383 48.6289 37.543 48.1055 36.7891 curveto
+ 48.1055 36.7891 48.6289 36.0508 48.3984 35.0469 curveto
+ 46.3672 33.8867 lineto
+ 46.3672 33.8867 45.7578 29.6133 42.5938 28.082 curveto
+ 41.2617 27.4492 40.3555 29.418 39.6914 31.2734 curveto
+ closepath
+fill
+
+
+% 116 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 40.8516 33.0156 moveto
+ 40.8516 33.0156 47.6641 36.3945 47.8164 36.7891 curveto
+ 47.8164 36.7891 45.0469 34.0352 44.9141 34.1758 curveto
+ 44.5352 34.0352 40.8516 33.0156 40.8516 33.0156 curveto
+ closepath
+fill
+
+
+% 117 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 46.3672 35.0469 moveto
+ 46.3672 35.0469 40.3555 33.9688 40.2695 32.4336 curveto
+ 40.3555 31.6328 40.4336 27.3516 42.0117 27.7891 curveto
+ 44.8242 28.6055 43.6758 33.2031 46.3672 35.0469 curveto
+ closepath
+fill
+
+
+% 118 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.4 0.2 0.8 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 43.4648 33.8867 moveto
+ 43.4648 33.8867 40.6797 33.4336 40.2695 32.4336 curveto
+ 40.1641 32.0547 39.9531 29.4023 41.7227 28.9492 curveto
+ 43.1484 28.7617 43.8594 32.0234 43.4648 33.8867 curveto
+ closepath
+fill
+
+
+% 119 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 16.1797 20.2422 moveto
+ 16.25 20.8789 15.832 20.8359 15.3086 21.1133 curveto
+ 14.6211 21.1992 10.7266 22.4102 10.375 23.1445 curveto
+ 10.2148 24.0742 6.02344 22.5664 6.02344 22.5664 curveto
+ 5.42578 22.4102 3.99219 21.6953 3.99219 21.6953 curveto
+ 2.48828 21.1992 0.507813 21.1133 0.507813 21.1133 curveto
+ -0.382813 20.75 -1.52344 19.9531 -1.52344 19.9531 curveto
+ -6.12891 16.6016 -10.2305 18.793 -10.2305 18.793 curveto
+ -16.4727 21.0078 -14.5859 26.6289 -14.5859 26.6289 curveto
+ -13.6016 29.3711 -14.5859 30.4023 -14.5859 30.4023 curveto
+ -14.6875 31.6719 -16.9063 29.5313 -16.9063 29.5313 curveto
+ -17.8164 28.2852 -18.0664 26.6289 -18.0664 26.6289 curveto
+ -20.625 23.1133 -19.5195 28.6602 -19.5195 28.6602 curveto
+ -19.6016 29.1172 -18.707 30.2656 -18.6484 30.6914 curveto
+ -18.707 31.0313 -18.0664 32.1445 -18.0664 32.1445 curveto
+ -17.1758 33.2031 -18.0664 35.3359 -18.0664 35.3359 curveto
+ -18.5156 39.8438 -17.7773 39.3984 -17.7773 39.3984 curveto
+ -17.4336 39.8438 -14.5859 36.7891 -14.5859 36.7891 curveto
+ -13.793 35.5664 -11.9727 35.0469 -11.9727 35.0469 curveto
+ -10.9844 34.4805 -9.94141 35.0469 -9.94141 35.0469 curveto
+ -9.06641 35.0547 -7.32813 32.7227 -7.32813 32.7227 curveto
+ -8.17188 32.8828 -8.94141 31.4805 -9.64844 31.2734 curveto
+ -10.4727 31.3516 -11.0469 32.1797 -11.6836 32.4336 curveto
+ -12.0703 32.5625 -12.8438 30.6914 -12.8438 30.6914 curveto
+ -13.0898 29.8828 -11.3906 28.3711 -11.3906 28.3711 curveto
+ -11.1758 26.8828 -10.5195 27.5 -10.5195 27.5 curveto
+ -9.70703 27.582 -9.32421 26.3711 -9.07031 24.8867 curveto
+ -8.68359 23.4336 -7.32813 23.4375 -7.32813 23.4375 curveto
+ -6.83203 20.9453 -6.45703 21.9844 -6.45703 21.9844 curveto
+ -6.38672 23.6875 -4.42578 21.6953 -4.42578 21.6953 curveto
+ -4.08594 21.1992 -2.68359 21.9844 -2.68359 21.9844 curveto
+ -0.445313 22.5391 -1.23438 23.1445 -1.23438 23.1445 curveto
+ -1.78906 23.8828 -5.29688 23.1445 -5.29688 23.1445 curveto
+ -6.06641 23.6875 -3.55468 24.8867 -3.55468 24.8867 curveto
+ -3.32031 25.5391 -3.55468 26.918 -3.55468 26.918 curveto
+ -4.02344 27.9688 -6.16797 29.8203 -6.16797 29.8203 curveto
+ -9.19531 30.1367 -8.19922 30.6914 -8.19922 30.6914 curveto
+ -6.32031 32.3086 -4.42578 29.8203 -4.42578 29.8203 curveto
+ -3.76563 27.9023 1.66797 23.1445 1.66797 23.1445 curveto
+ 3.32031 22.0273 2.48828 24.1992 3.69922 23.1445 curveto
+ 5.04297 22.0273 11.5352 24.8867 11.5352 24.8867 curveto
+ 15.3125 25.2852 16.1836 20.2578 17.3398 21.1133 curveto
+ 17.3398 21.1133 15.582 18.5313 16.1797 20.2422 curveto
+ closepath
+fill
+
+
+% 120 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -46.2187 73.3555 moveto
+ -46.2187 73.3555 -37.9297 70.875 -36.9336 64.9414 curveto
+ -36.9336 64.9414 -36.2695 57.5938 -42.7383 51.8789 curveto
+ -42.7383 51.8789 -42.9102 49.9336 -43.6094 48.9766 curveto
+ -43.6094 48.9766 -43.0352 47.3789 -49.1211 49.8477 curveto
+ -57.8281 52.4609 lineto
+ -57.8281 52.4609 -59.7656 53.2539 -61.3125 55.9414 curveto
+ -63.0859 58.8711 -67.9375 64.875 -66.8281 72.7773 curveto
+ -66.8281 72.7773 -67.1719 76.4961 -65.375 76.5508 curveto
+ -65.375 76.5508 -62.5742 77.1328 -60.1523 74.8086 curveto
+ -60.1523 74.8086 -58.1055 73.6836 -57.25 73.9375 curveto
+ -46.2187 73.3555 lineto
+ closepath
+fill
+
+
+% 121 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -63.6328 73.6484 moveto
+ -63.6328 73.6484 -64.2109 76.5977 -62.7656 75.0977 curveto
+ -62.7656 75.0977 -60.418 73.2266 -58.1211 73.3555 curveto
+ -58.1211 73.3555 -53.3945 72.5234 -52.0234 68.4219 curveto
+ -52.0234 68.4219 -50.7266 59.7383 -53.1875 57.9766 curveto
+ -53.1875 57.9766 -54.7969 55.5273 -56.957 57.6836 curveto
+ -59.293 59.7383 -64.2422 69.3906 -63.6328 73.6484 curveto
+ closepath
+fill
+
+
+% 122 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.8 setcmykcolor
+() p2esetcolorname
+newpath
+ -63.3438 73.6484 moveto
+ -63.3438 73.6484 -64.0898 76.4219 -62.4727 74.8086 curveto
+ -62.4727 74.8086 -60.3633 73.1133 -58.1211 73.0664 curveto
+ -58.1211 73.0664 -53.4687 72.4219 -52.0234 68.4219 curveto
+ -52.0234 68.4219 -50.8477 59.8711 -53.1875 57.9766 curveto
+ -53.1875 57.9766 -54.8477 55.7344 -56.957 57.6836 curveto
+ -59.2617 59.8711 -64.1094 69.3555 -63.3438 73.6484 curveto
+ closepath
+fill
+
+
+% 123 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.6 setcmykcolor
+() p2esetcolorname
+newpath
+ -63.3438 73.6484 moveto
+ -63.3438 73.6484 -63.9648 76.25 -62.4727 74.8086 curveto
+ -62.4727 74.8086 -60.3086 73.0 -58.1211 73.0664 curveto
+ -58.1211 73.0664 -53.543 72.3242 -52.3164 68.1328 curveto
+ -52.3164 68.1328 -50.9688 60.0039 -53.4766 58.2656 curveto
+ -53.4766 58.2656 -54.8945 55.9453 -56.957 57.9766 curveto
+ -59.2266 60.0039 -63.9766 69.3203 -63.3438 73.6484 curveto
+ closepath
+fill
+
+
+% 124 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.4 setcmykcolor
+() p2esetcolorname
+newpath
+ -63.0547 73.3555 moveto
+ -63.0547 73.3555 -63.8437 76.0742 -62.4727 74.5195 curveto
+ -62.4727 74.5195 -60.2578 72.8867 -58.1211 72.7773 curveto
+ -58.1211 72.7773 -53.6172 72.2266 -52.3164 68.1328 curveto
+ -52.3164 68.1328 -51.0937 60.1367 -53.4766 58.5547 curveto
+ -53.4766 58.5547 -54.9453 56.1523 -56.957 58.2656 curveto
+ -59.1953 60.1367 -63.8437 69.2852 -63.0547 73.3555 curveto
+ closepath
+fill
+
+
+% 125 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -63.0547 73.3555 moveto
+ -63.0547 73.3555 -63.7188 75.9023 -62.1836 74.5195 curveto
+ -62.1836 74.5195 -60.2031 72.7773 -58.1211 72.7773 curveto
+ -58.1211 72.7773 -53.6875 72.125 -52.3164 68.1328 curveto
+ -52.3164 68.1328 -51.2148 60.2734 -53.4766 58.5547 curveto
+ -53.4766 58.5547 -54.9922 56.3633 -56.957 58.2656 curveto
+ -59.1602 60.2734 -63.7148 69.25 -63.0547 73.3555 curveto
+ closepath
+fill
+
+
+% 126 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -63.0547 73.0664 moveto
+ -63.0547 73.0664 -63.5977 75.7305 -62.1836 74.2266 curveto
+ -62.1836 74.2266 -60.1484 72.6641 -58.1211 72.7773 curveto
+ -58.1211 72.7773 -53.7656 72.0234 -52.6055 68.1328 curveto
+ -52.6055 68.1328 -51.3398 60.4063 -53.7656 58.8438 curveto
+ -53.7656 58.8438 -55.0391 56.5742 -56.957 58.5547 curveto
+ -59.1289 60.4063 -63.582 69.2148 -63.0547 73.0664 curveto
+ closepath
+fill
+
+
+% 127 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.4 0.85 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 4.57031 8.34375 moveto
+ 4.57031 8.34375 11.1094 14.4297 13.5703 14.7305 curveto
+ 13.5703 14.7305 24.6484 15.9648 29.2422 10.0859 curveto
+ 29.2422 10.0859 23.7539 16.7305 15.0195 15.0195 curveto
+ 15.0195 15.0195 21.8359 16.3477 25.7578 15.3086 curveto
+ 25.7578 15.3086 31.1602 15.3242 34.1758 10.957 curveto
+ 35.0469 9.21484 lineto
+ 35.0469 9.21484 33.8438 14.0469 28.082 15.8906 curveto
+ 28.082 15.8906 20.6875 17.4961 17.3398 15.8906 curveto
+ 17.3398 15.8906 24.1367 18.1328 27.2109 17.6328 curveto
+ 27.2109 17.6328 37.0352 18.2617 41.1406 9.79688 curveto
+ 41.1406 9.79688 39.8438 14.4297 35.0469 16.7617 curveto
+ 35.0469 16.7617 30.7773 19.5391 24.3086 18.5039 curveto
+ 24.3086 18.5039 19.668 17.6211 17.9219 16.7617 curveto
+ 16.3477 16.0898 16.7305 16.9844 19.375 18.5039 curveto
+ 19.375 18.5039 21.1992 21.7109 25.7578 21.6953 curveto
+ 25.7578 21.6953 39.332 20.4336 42.5938 16.4727 curveto
+ 42.5938 16.4727 38.3125 20.1758 35.0469 21.1133 curveto
+ 35.0469 21.1133 27.8398 23.625 25.1797 23.4375 curveto
+ 25.1797 23.4375 17.2383 23.0508 14.7305 24.3086 curveto
+ 14.7305 24.3086 18.3906 22.7305 17.3398 21.6953 curveto
+ 16.3477 20.6875 14.1758 18.2617 14.1484 17.9219 curveto
+ 14.1758 17.4961 6.44922 10.4414 5.44141 8.92578 curveto
+ 4.57031 8.34375 lineto
+ closepath
+fill
+
+
+% 128 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -39.543 -53.7656 moveto
+ -39.543 -53.7656 -34.6406 -41.9805 -30.5469 -38.9648 curveto
+ -30.5469 -38.9648 -38.9492 -44.0586 -40.125 -49.7031 curveto
+ -40.125 -49.7031 -40.0664 -52.9961 -39.543 -53.7656 curveto
+ closepath
+fill
+
+
+% 129 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -54.6367 -56.0898 moveto
+ -54.6367 -56.0898 -46.1328 -38.4727 -40.125 -30.8359 curveto
+ -40.125 -30.8359 -54.1133 -42.7813 -55.7969 -51.1523 curveto
+ -55.7969 -52.8945 lineto
+ -54.9258 -52.3164 lineto
+ -54.9258 -52.3164 -54.7539 -55.0742 -54.6367 -56.0898 curveto
+ closepath
+fill
+
+
+% 130 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -72.6328 -40.4141 moveto
+ -72.6328 -40.4141 -52.6797 -21.5508 -52.3164 -20.6797 curveto
+ -52.3164 -20.6797 -71.5156 -41.8242 -72.3398 -44.1875 curveto
+ -72.3398 -44.1875 -71.832 -41.3438 -72.6328 -40.4141 curveto
+ closepath
+fill
+
+
+% 131 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -12.5547 -54.3477 moveto
+ -12.5547 -54.3477 -18.6758 -37.832 -24.7422 -45.0586 curveto
+ -24.7422 -45.0586 -29.5313 -48.207 -29.3867 -49.1211 curveto
+ -29.3867 -49.1211 -28.0938 -47.0898 -22.4219 -47.3828 curveto
+ -22.4219 -47.3828 -16.2813 -46.293 -12.5547 -54.3477 curveto
+ closepath
+fill
+
+
+% 132 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -73.2109 -13.7148 moveto
+ -73.2109 -13.7148 -58.9023 -4.62891 -56.3789 -4.13672 curveto
+ -52.7383 -3.39844 -72.3125 -13.4102 -73.793 -16.9063 curveto
+ -73.793 -16.9063 -74.5469 -15.9648 -73.2109 -13.7148 curveto
+ closepath
+fill
+
+
+% 133 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -25.0313 -47.6719 moveto
+ -25.0313 -47.6719 -31.6719 -47.1211 -33.7383 -45.0586 curveto
+ -35.1914 -46.2188 lineto
+ -40.9961 -33.7383 lineto
+ -42.1562 -35.4805 lineto
+ -42.1562 -35.4805 -46.6133 -30.7773 -46.2187 -28.2266 curveto
+ -46.1016 -25.668 -50.5742 -30.2578 -50.5742 -30.2578 curveto
+ -50.5742 -30.2578 -50.1875 -26.4336 -52.6055 -28.5156 curveto
+ -52.6055 -28.5156 -51.7188 -23.625 -54.3477 -26.1953 curveto
+ -54.3477 -26.1953 -51.0391 -16.5508 -58.1211 -24.7422 curveto
+ -60.0195 -26.8203 -58.6992 -24.7422 -58.6992 -24.7422 curveto
+ -58.6992 -24.7422 -50.3164 -9.32422 -57.25 -14.0039 curveto
+ -57.25 -14.0039 -57.8516 -6.64063 -57.5391 -5.29688 curveto
+ -57.082 -3.83203 -56.4453 3.32031 -54.9258 4.86328 curveto
+ -53.3828 6.64063 -55.0391 7.15234 -56.957 5.44141 curveto
+ -56.957 5.44141 -53.2539 13.1523 -57.5391 9.21484 curveto
+ -57.5391 9.21484 -56.3203 14.1758 -54.9258 15.0195 curveto
+ -54.9258 15.0195 -53.125 20.5586 -58.1211 17.0508 curveto
+ -58.1211 17.0508 -56.5742 21.0703 -55.5078 21.9844 curveto
+ -55.5078 21.9844 -51.8477 30.9063 -54.0547 29.2422 curveto
+ -55.5078 28.082 lineto
+ -55.5078 28.082 -53.3828 32.6914 -55.5078 31.2734 curveto
+ -57.4688 29.8828 -57.5391 30.1133 -57.5391 30.1133 curveto
+ -57.5391 30.1133 -50.6992 40.6094 -57.25 35.0469 curveto
+ -57.25 35.0469 -54.6055 39.4336 -53.4766 41.7227 curveto
+ -53.4766 41.7227 -47.5078 48.1445 -52.0234 46.0742 curveto
+ -53.7656 45.4961 lineto
+ -53.7656 45.4961 -50.8281 48.7813 -48.25 49.2695 curveto
+ -45.7188 49.8047 -49.0391 51.8477 -51.1523 51.3008 curveto
+ -53.125 50.5703 -58.1211 48.1055 -58.1211 48.1055 curveto
+ -58.1211 48.1055 -62.1914 42.1406 -63.3438 42.0117 curveto
+ -63.3438 42.0117 -57.082 44.4414 -58.9922 42.0117 curveto
+ -58.9922 42.0117 -63.5977 37.418 -61.3125 37.6602 curveto
+ -61.3125 37.6602 -59.3828 35.2461 -61.0234 32.4336 curveto
+ -61.0234 32.4336 -55.0195 38.3086 -59.8594 30.1133 curveto
+ -61.8945 24.8867 lineto
+ -61.8945 24.8867 -54.1484 32.8203 -57.8281 25.7578 curveto
+ -57.8281 25.7578 -63.2148 18.2617 -63.9258 18.2109 curveto
+ -64.4922 18.0078 -65.957 15.3086 -65.957 15.3086 curveto
+ -64.5039 15.8906 lineto
+ -66.2461 12.9883 lineto
+ -66.2461 12.9883 -62.5742 16.8555 -64.5039 12.6992 curveto
+ -66.2461 8.05469 lineto
+ -66.2461 8.05469 -59.7656 15.0703 -64.2148 5.73047 curveto
+ -64.2148 5.73047 -58.8711 7.27734 -61.6016 1.66797 curveto
+ -61.6016 1.66797 -61.1719 -3.32031 -61.3125 -5.00781 curveto
+ -61.4258 -6.64063 -61.8086 -15.707 -60.4414 -18.3594 curveto
+ -59.0 -20.8164 -62.3203 -26.9453 -63.0547 -28.2266 curveto
+ -63.5977 -29.5 -64.7461 -32.9492 -61.8945 -29.9688 curveto
+ -59.1289 -27.0742 -60.5312 -28.8633 -61.3125 -31.707 curveto
+ -61.8086 -34.4805 -63.7266 -39.4609 -63.3438 -41.2852 curveto
+ -63.3438 -41.2852 -63.0859 -41.6328 -62.1836 -40.4141 curveto
+ -62.1836 -40.4141 -57.3398 -33.2031 -57.8281 -37.8047 curveto
+ -57.8281 -37.8047 -57.4688 -40.3555 -56.3789 -43.0273 curveto
+ -56.3789 -43.0273 -55.4258 -46.6133 -55.5078 -43.8984 curveto
+ -55.5078 -43.8984 -54.4023 -38.4375 -53.4766 -40.9961 curveto
+ -52.6133 -43.293 -51.4648 -45.207 -50.5742 -45.9297 curveto
+ -49.6758 -46.7422 -48.0156 -39.4609 -47.6719 -42.7383 curveto
+ -47.6719 -42.7383 -43.8047 -38.8242 -42.1562 -44.1875 curveto
+ -38.6758 -49.4141 lineto
+ -38.6758 -49.4141 -38.4375 -45.3359 -38.0937 -47.3828 curveto
+ -38.0937 -47.3828 -28.4766 -49.168 -25.0313 -47.6719 curveto
+ closepath
+fill
+
+
+% 134 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -14.293 66.1016 moveto
+ -14.293 66.1016 -10.4727 68.7031 -9.07031 68.7148 curveto
+ -7.91797 68.4492 -18.0078 71.3867 -31.1289 62.6172 curveto
+ -31.1289 62.6172 -32.6914 61.6797 -33.7383 61.7461 curveto
+ -33.7383 61.7461 -34.8633 61.043 -34.0312 60.0078 curveto
+ -34.0312 60.0078 -31.1602 56.8281 -34.6094 53.332 curveto
+ -34.6094 53.332 -40.6094 51.082 -38.9648 53.9102 curveto
+ -38.9648 53.9102 -42.2695 52.6133 -43.0273 51.3008 curveto
+ -43.8047 50.0586 -43.3164 51.3008 -43.3164 51.3008 curveto
+ -43.3164 51.3008 -41.3789 53.6367 -39.543 55.3633 curveto
+ -39.543 55.3633 -37.8008 55.9336 -36.9336 58.5547 curveto
+ -36.0117 61.2969 -35.2461 64.4922 -36.6406 65.5195 curveto
+ -36.6406 65.5195 -35.375 64.1055 -35.7734 65.5195 curveto
+ -35.8867 66.6602 -37.0352 67.8125 -37.5117 67.8438 curveto
+ -38.0547 68.0664 -43.293 73.1094 -45.3477 73.3555 curveto
+ -45.3477 73.3555 -42.5273 72.793 -41.5781 73.0664 curveto
+ -40.6094 73.4297 -32.1172 77.0703 -30.2578 77.4219 curveto
+ -30.2578 77.4219 -24.8398 79.5586 -28.8047 78.8711 curveto
+ -28.8047 78.8711 -40.0977 77.707 -45.9297 73.3555 curveto
+ -45.9297 73.3555 -43.6133 76.1758 -37.8047 78.293 curveto
+ -37.8047 78.293 -30.6484 82.4336 -19.5195 80.9023 curveto
+ -19.5195 80.9023 -13.7266 79.8164 -11.1016 79.1602 curveto
+ -11.1016 79.1602 -10.4063 79.4336 -10.2305 79.4531 curveto
+ -10.0273 79.6875 -6.25781 82.5625 2.53906 80.3242 curveto
+ 2.53906 80.3242 7.98047 78.8555 10.668 77.4219 curveto
+ 10.668 77.4219 15.5781 76.9414 16.7617 75.9688 curveto
+ 16.7617 75.9688 22.668 71.2578 23.4375 71.0352 curveto
+ 23.9453 70.75 27.582 68.3203 27.7891 68.1328 curveto
+ 27.7891 68.1328 19.9844 70.3008 19.082 71.0352 curveto
+ 18.4531 71.832 12.8984 72.6641 12.1172 72.1953 curveto
+ 11.3672 71.7695 8.68359 71.9609 11.8281 71.9063 curveto
+ 11.8281 71.9063 -12.3867 67.043 -12.5547 66.3906 curveto
+ -12.8984 65.7695 -14.293 66.1016 -14.293 66.1016 curveto
+ closepath
+fill
+
+
+% 135 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -36.9336 69.0039 moveto
+ -36.9336 69.0039 -33.7148 71.4492 -33.1602 71.3242 curveto
+ -32.4375 71.4492 -28.4766 74.707 -27.0664 74.5195 curveto
+ -25.7969 74.4531 -21.9023 77.6445 -13.1328 75.0977 curveto
+ -13.1328 75.0977 -12.9609 75.6641 -14.0039 75.9688 curveto
+ -14.0039 75.9688 -16.1563 76.6211 -16.3242 76.8398 curveto
+ -16.3242 76.8398 -22.7305 78.1563 -25.0313 77.1289 curveto
+ -25.0313 77.1289 -27.9688 76.1758 -29.9687 74.2266 curveto
+ -29.9687 74.2266 -33.5234 73.1758 -34.6094 73.3555 curveto
+ -34.6094 73.3555 -37.3516 72.793 -37.5117 72.1953 curveto
+ -37.5117 72.1953 -39.332 71.2578 -38.6758 70.4531 curveto
+ -38.6758 70.4531 -38.8867 69.918 -36.9336 69.0039 curveto
+ closepath
+fill
+
+
+% 136 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -32.8711 69.875 moveto
+ -33.2461 69.5586 -33.5703 69.5273 -33.7383 69.293 curveto
+ -33.8398 69.168 -33.7461 69.0664 -33.7383 69.0039 curveto
+ -33.3125 68.9336 -32.9766 69.1133 -32.5781 69.0039 curveto
+ -32.4844 68.8633 -32.2773 68.918 -32.0 69.0039 curveto
+ -31.582 69.1094 -30.9961 69.1172 -30.5469 69.0039 curveto
+ -29.8242 69.2578 -29.0703 69.0703 -28.5156 69.293 curveto
+ -28.3867 69.3984 -28.3164 69.2891 -28.2266 69.293 curveto
+ -27.3203 69.6641 -26.125 69.5703 -25.3242 70.1641 curveto
+ -24.5742 70.4336 -23.8203 70.5781 -23.0 70.7461 curveto
+ -22.4648 70.9609 -22.0156 71.2773 -21.5508 71.6172 curveto
+ -21.0586 71.7656 -20.5938 71.9336 -20.0977 72.1953 curveto
+ -19.5117 72.1953 -18.9258 72.1602 -18.3594 72.1953 curveto
+ -18.293 72.3359 -18.2305 72.2266 -18.0664 72.1953 curveto
+ -18.1016 72.2695 -18.0078 72.4531 -18.0664 72.4883 curveto
+ -17.418 72.2695 -16.9414 72.582 -16.3242 72.4883 curveto
+ -16.0352 72.8633 -15.4805 72.7852 -14.875 73.0664 curveto
+ -14.043 73.1953 -13.0352 72.793 -11.9727 73.0664 curveto
+ -13.3828 73.6992 -14.8789 73.3047 -16.0352 73.9375 curveto
+ -16.918 74.3438 -17.7695 73.9922 -18.6484 74.2266 curveto
+ -18.7422 74.2813 -18.9648 74.3477 -19.2266 74.2266 curveto
+ -19.1367 74.1758 -19.1914 74.25 -19.2266 74.2266 curveto
+ -19.9922 73.875 -20.7344 73.4648 -21.5508 73.0664 curveto
+ -21.6328 73.0781 -21.8047 73.1523 -21.8398 73.0664 curveto
+ -22.3711 72.6992 -22.9883 72.7344 -23.293 72.4883 curveto
+ -23.9766 72.5039 -24.5469 72.3828 -25.0313 72.4883 curveto
+ -25.125 72.5898 -25.1992 72.4805 -25.3242 72.4883 curveto
+ -25.5703 72.7266 -25.9414 72.6406 -26.1953 72.4883 curveto
+ -26.332 72.5078 -26.543 72.4297 -26.7734 72.4883 curveto
+ -27.0 72.3164 -27.2734 72.1641 -27.6445 72.1953 curveto
+ -27.6875 72.1016 -27.7461 72.207 -27.6445 72.1953 curveto
+ -28.1289 72.0586 -28.4609 72.0781 -28.8047 71.6172 curveto
+ -28.7148 71.75 -28.7656 71.8242 -28.8047 71.9063 curveto
+ -29.1211 71.707 -29.3281 71.4688 -29.6758 71.3242 curveto
+ -29.832 71.3555 -30.0273 71.1563 -30.2578 71.0352 curveto
+ -30.9766 70.8672 -31.5625 70.3789 -32.2891 70.1641 curveto
+ -32.5078 69.9961 -32.7852 69.918 -32.8711 69.875 curveto
+ closepath
+fill
+
+
+% 137 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -8.48828 74.2266 moveto
+ -7.71875 74.8555 -6.96484 75.207 -6.16797 75.6797 curveto
+ -6.125 75.8203 -6.01172 75.7656 -5.87891 75.6797 curveto
+ -5.625 76.0 -5.33984 76.1836 -5.00781 76.5508 curveto
+ -4.85547 76.5313 -4.59375 76.5273 -4.42578 76.5508 curveto
+ -3.61719 77.0195 -2.78125 77.1992 -2.10547 77.7109 curveto
+ -2.19531 77.7852 -2.55469 77.707 -2.68359 78.0 curveto
+ -2.80859 77.875 -2.88281 77.7852 -2.97656 77.7109 curveto
+ -3.53125 78.1328 -4.125 78.1797 -4.71484 78.293 curveto
+ -5.20313 78.125 -5.75 78.0273 -6.45703 78.0 curveto
+ -6.41406 77.9258 -6.48047 77.7578 -6.45703 77.7109 curveto
+ -7.29297 77.5156 -8.05469 77.6836 -8.78125 77.4219 curveto
+ -9.24219 77.2148 -9.74219 76.9531 -10.2305 76.5508 curveto
+ -10.2188 76.4609 -10.1133 76.3633 -9.94141 76.2578 curveto
+ -10.1484 76.3398 -10.2383 76.2734 -10.2305 76.2578 curveto
+ -10.2969 76.0977 -10.2969 76.0 -10.2305 75.9688 curveto
+ -10.2344 75.8242 -10.1484 75.793 -9.94141 75.6797 curveto
+ -9.57813 75.7148 -10.1445 76.1563 -9.94141 75.9688 curveto
+ -9.51563 75.75 -9.75391 75.3047 -9.64844 74.8086 curveto
+ -9.42578 74.9609 -9.35156 75.0313 -9.35938 75.0977 curveto
+ -9.46094 74.9883 -9.26953 74.8945 -9.35938 74.8086 curveto
+ -9.09375 74.5625 -8.80469 74.1094 -8.48828 74.2266 curveto
+ closepath
+fill
+
+
+% 138 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 1.96094 71.9063 moveto
+ 2.85938 72.2109 3.83203 72.1758 4.86328 72.4883 curveto
+ 4.81641 72.5938 4.89063 72.4805 4.86328 72.4883 curveto
+ 5.34375 72.6797 5.63672 72.9883 6.02344 73.3555 curveto
+ 6.27344 73.6055 6.80078 73.4805 7.18359 73.6484 curveto
+ 7.3125 73.6758 7.37891 73.8398 7.47266 73.9375 curveto
+ 7.86328 73.9023 8.16016 74.207 8.63281 74.5195 curveto
+ 7.74609 74.6406 6.97656 74.6328 6.3125 74.8086 curveto
+ 6.15625 74.7578 6.10938 74.6563 6.02344 74.5195 curveto
+ 6.02344 74.6563 5.98047 74.7266 6.02344 74.8086 curveto
+ 5.875 74.6836 5.78125 74.5781 5.73047 74.5195 curveto
+ 5.52344 74.832 5.34375 74.7695 5.15234 74.8086 curveto
+ 5.125 74.7539 5.08594 74.6563 5.15234 74.5195 curveto
+ 5.0 74.6563 4.96094 74.7578 4.86328 74.8086 curveto
+ 4.87109 74.7578 4.83203 74.6563 4.86328 74.5195 curveto
+ 4.74609 74.6563 4.70313 74.7266 4.57031 74.8086 curveto
+ 4.44141 74.5234 4.15625 74.6992 3.99219 74.5195 curveto
+ 3.5625 74.5664 3.47656 74.2031 3.12109 74.2266 curveto
+ 1.62891 73.6914 0.308594 73.0039 -0.941406 72.1953 curveto
+ -1.17969 72.293 -1.25 72.2148 -1.23438 72.1953 curveto
+ -1.29688 72.0898 -1.39844 72.1172 -1.52344 72.1953 curveto
+ -1.79688 71.8398 -2.12891 71.6641 -2.39453 71.3242 curveto
+ -2.42188 71.207 -2.31641 71.0781 -2.10547 71.0352 curveto
+ -0.828129 71.4102 0.453125 71.6055 1.96094 71.9063 curveto
+ closepath
+fill
+
+
+% 139 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 6.3125 57.9766 moveto
+ 6.78516 58.2305 6.97266 58.8789 7.47266 59.4258 curveto
+ 7.39844 59.5625 7.3125 59.6602 7.18359 59.7148 curveto
+ 7.03125 59.7422 6.85938 59.5898 6.60156 59.4258 curveto
+ 6.17188 59.25 5.68359 58.8516 5.15234 58.8438 curveto
+ 4.41016 58.0938 3.04688 57.9727 3.12109 56.8125 curveto
+ 3.04688 56.6172 3.50391 56.9102 3.69922 56.5234 curveto
+ 4.42188 56.957 5.18359 56.9258 6.02344 57.3945 curveto
+ 6.14063 57.5156 6.03516 57.6602 6.3125 57.9766 curveto
+ closepath
+fill
+
+
+% 140 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.2 0.55 0.85 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 15.0195 74.5195 moveto
+ 15.0273 74.6289 12.7813 74.5547 12.6992 74.5195 curveto
+ 12.8008 74.418 15.2695 74.0859 15.3086 74.2266 curveto
+ 15.4375 74.1641 17.8359 73.3867 17.9219 73.3555 curveto
+ 17.793 73.4727 15.1523 74.6289 15.0195 74.5195 curveto
+ closepath
+fill
+
+
+% 141 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 10.0859 71.6172 moveto
+ 10.0859 71.6172 14.8789 70.9414 16.1797 70.4531 curveto
+ 17.6875 70.1719 23.625 67.7461 24.5977 66.9727 curveto
+ 24.5977 66.9727 28.8633 65.3867 34.1758 59.1367 curveto
+ 34.1758 59.1367 31.8633 60.0859 31.2734 60.8789 curveto
+ 31.2734 60.8789 26.8164 65.0 26.918 64.0703 curveto
+ 26.918 64.0703 22.9883 66.918 23.1445 66.1016 curveto
+ 23.1445 66.1016 15.3867 69.7891 15.8906 68.7148 curveto
+ 15.8906 68.7148 9.13281 70.2383 9.50391 69.5859 curveto
+ 9.50391 69.5859 3.44922 68.1953 4.28125 68.1328 curveto
+ 4.28125 68.1328 6.19531 67.7461 4.28125 66.6836 curveto
+ 4.28125 66.6836 5.23438 65.1914 6.89453 66.3906 curveto
+ 8.68359 67.7461 7.72656 67.043 9.21484 66.6836 curveto
+ 9.21484 66.6836 10.1523 66.4688 11.5352 67.8438 curveto
+ 11.5352 67.8438 13.4102 69.2148 16.1797 68.1328 curveto
+ 16.1797 68.1328 25.9883 64.043 26.6289 63.7813 curveto
+ 26.6289 63.7813 27.7773 62.957 28.6602 61.7461 curveto
+ 28.6602 61.7461 30.3945 60.4063 31.2734 60.0078 curveto
+ 31.2734 60.0078 35.4375 56.2539 35.918 55.9414 curveto
+ 35.918 55.9414 36.9063 54.1445 37.0781 53.9102 curveto
+ 37.0781 53.9102 35.1172 55.2305 34.4648 55.9414 curveto
+ 34.4648 55.9414 30.0117 59.0625 28.3711 59.4258 curveto
+ 28.3711 59.4258 26.8828 60.2773 26.6289 60.5859 curveto
+ 26.6289 60.5859 22.0273 63.6602 20.8242 63.7813 curveto
+ 20.8242 63.7813 17.75 62.0 17.0508 64.3594 curveto
+ 17.0508 64.3594 15.1328 64.8086 13.2773 64.3594 curveto
+ 13.2773 64.3594 12.3242 65.2578 12.6992 66.1016 curveto
+ 12.6992 66.1016 12.0664 66.5352 11.8281 65.2305 curveto
+ 11.8281 65.2305 10.6641 64.1719 9.21484 64.9414 curveto
+ 9.21484 64.9414 7.85547 64.875 8.63281 64.0703 curveto
+ 8.63281 64.0703 9.89844 62.8945 13.5703 62.9102 curveto
+ 13.5703 62.9102 17.6211 62.6406 22.8555 60.2969 curveto
+ 22.8555 60.2969 32.3711 56.8906 35.3359 53.6211 curveto
+ 35.3359 53.6211 37.3516 50.7617 39.1094 50.4297 curveto
+ 39.1094 50.4297 40.9297 50.125 42.8828 47.8164 curveto
+ 42.8828 47.8164 39.7148 49.6133 36.7891 49.5586 curveto
+ 36.7891 49.5586 35.5664 50.3789 36.7891 49.2695 curveto
+ 36.7891 49.2695 37.9297 46.8047 37.3672 45.2031 curveto
+ 37.3672 45.2031 37.6094 43.4219 37.9492 42.8828 curveto
+ 37.9492 42.8828 40.3555 38.8242 40.2695 37.9492 curveto
+ 40.3555 37.2891 39.9727 34.1602 39.9805 33.8867 curveto
+ 39.7148 33.7773 40.1641 34.4805 38.8203 33.5938 curveto
+ 37.7383 32.9492 36.8438 32.4375 36.4961 31.5625 curveto
+ 36.332 30.6484 37.2266 33.2656 37.3672 33.8867 curveto
+ 37.3516 34.4141 38.6953 36.7148 38.5273 37.3672 curveto
+ 38.5273 37.3672 38.1211 37.1602 37.9492 36.7891 curveto
+ 37.9492 36.7891 38.0547 36.9063 37.9492 37.9492 curveto
+ 37.9492 37.9492 37.6094 39.7148 37.0781 40.8516 curveto
+ 36.7148 41.7578 36.0781 42.9727 35.918 43.1719 curveto
+ 35.8203 43.4844 35.8203 45.3359 35.3359 44.625 curveto
+ 34.1758 43.7539 lineto
+ 34.1758 43.7539 35.1836 44.5039 34.4648 45.2031 curveto
+ 34.4648 45.2031 34.8008 46.9961 34.1758 47.8164 curveto
+ 34.1758 47.8164 31.9883 50.5078 31.5625 50.7188 curveto
+ 30.9688 51.1445 31.2734 51.0078 31.2734 51.0078 curveto
+ 31.2734 51.0078 29.5 52.3594 31.2734 51.8789 curveto
+ 31.2734 51.8789 32.6289 51.3359 33.5938 51.3008 curveto
+ 33.5938 51.3008 36.0117 50.6992 34.7539 52.1719 curveto
+ 33.457 53.3828 30.2656 55.1055 28.9492 55.0742 curveto
+ 28.6602 54.4922 lineto
+ 25.1797 55.3633 lineto
+ 25.4688 55.0742 lineto
+ 25.4688 55.0742 25.668 55.1055 24.3086 55.3633 curveto
+ 22.9883 55.3594 21.1367 54.9141 20.8242 55.3633 curveto
+ 20.2422 56.0625 19.1563 56.3828 19.375 55.9414 curveto
+ 19.4102 55.4883 19.375 54.7813 19.375 54.7813 curveto
+ 19.375 54.7813 17.8789 56.6992 18.2109 55.9414 curveto
+ 18.2617 55.2969 20.8789 53.6367 21.4063 51.5898 curveto
+ 17.9219 54.2031 lineto
+ 16.7617 55.3633 lineto
+ 16.7617 55.3633 15.707 54.5313 15.6016 55.0742 curveto
+ 15.5781 55.5508 14.1133 57.4023 13.8594 57.3945 curveto
+ 13.3438 57.2734 12.707 58.168 12.6992 57.3945 curveto
+ 12.832 56.5078 10.375 54.7813 10.375 54.7813 curveto
+ 10.375 54.7813 9.38672 55.3594 8.92578 54.7813 curveto
+ 8.49219 54.4648 7.18359 61.168 7.18359 61.168 curveto
+ -0.941406 64.6484 lineto
+ -14.875 65.8125 lineto
+ -9.35938 67.8438 lineto
+ 10.0859 71.6172 lineto
+ closepath
+fill
+
+
+% 142 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.638521 setlinewidth
+ 0.7 1.0 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 4.28125 8.05469 moveto
+ 4.28125 8.05469 9.13281 13.3438 11.8281 14.1484 curveto
+ 11.8281 14.1484 16.0898 16.3477 24.0156 13.8594 curveto
+stroke
+
+
+% 143 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.638521 setlinewidth
+ 0.7 1.0 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 12.6992 14.7305 moveto
+ 12.6992 14.7305 20.8789 17.1758 25.7578 15.8906 curveto
+ 25.7578 15.8906 31.6719 15.1953 34.4648 10.668 curveto
+stroke
+
+
+% 144 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.638521 setlinewidth
+ 0.7 1.0 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 13.8594 15.0195 moveto
+ 13.8594 15.0195 19.4102 17.3047 24.0156 17.9219 curveto
+ 24.0156 17.9219 29.4375 18.8359 34.7539 16.4727 curveto
+ 34.7539 16.4727 38.6328 14.6211 40.2695 11.2461 curveto
+stroke
+
+
+% 145 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.638521 setlinewidth
+ 0.7 1.0 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 13.5703 15.0195 moveto
+ 13.5703 15.0195 18.582 18.3906 18.793 18.793 curveto
+ 18.793 18.793 21.1367 22.3477 25.1797 22.5664 curveto
+ 25.1797 22.5664 32.1172 22.2188 37.6602 19.6641 curveto
+stroke
+
+
+% 146 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 14.1484 17.6328 moveto
+ 13.5898 17.2813 4.86328 8.05469 4.86328 8.05469 curveto
+ -6.25781 -3.64063 2.53906 7.18359 2.53906 7.18359 curveto
+ 5.10938 8.8125 8.05469 14.7305 8.05469 14.7305 curveto
+ 8.42969 15.707 3.69922 12.4063 3.69922 12.4063 curveto
+ 2.30078 12.2578 -2.10547 6.02344 -2.10547 6.02344 curveto
+ 0.128906 6.89844 -1.52344 4.57031 -1.52344 4.57031 curveto
+ -2.30078 3.96094 -8.78125 -0.941406 -8.78125 -0.941406 curveto
+ -9.96094 -2.30078 -11.1016 -2.68359 -11.1016 -2.68359 curveto
+ -15.707 -1.14844 -13.7148 -5.29688 -13.7148 -5.29688 curveto
+ -14.4297 -7.53516 -16.3242 -3.84375 -16.3242 -3.84375 curveto
+ -19.793 1.53125 -14.5859 0.796875 -14.5859 0.796875 curveto
+ -4.98047 -0.128906 -2.68359 4.86328 -2.68359 4.86328 curveto
+ -2.04297 5.74609 -4.71484 4.86328 -4.71484 4.86328 curveto
+ -7.53516 4.34375 -2.68359 8.92578 -2.68359 8.92578 curveto
+ -3.32031 8.94141 -6.16797 6.89453 -6.16797 6.89453 curveto
+ -9.57813 3.83203 -10.2305 4.57031 -10.2305 4.57031 curveto
+ -15.9648 7.27734 -19.2266 4.86328 -19.2266 4.86328 curveto
+ -19.9219 4.34375 -18.1328 2.17188 -18.6484 0.507813 curveto
+ -19.1563 -1.14844 -20.6797 -5.00781 -20.6797 -5.00781 curveto
+ -19.9219 -5.61719 -20.0977 -9.07031 -20.0977 -9.07031 curveto
+ -25.4141 -16.4727 -22.4219 -15.7461 -22.4219 -15.7461 curveto
+ -17.3672 -15.707 -22.1289 -18.0664 -22.1289 -18.0664 curveto
+ -23.1133 -18.7734 -25.9023 -20.9688 -25.9023 -20.9688 curveto
+ -25.0313 -20.6875 -24.4531 -22.4219 -24.4531 -22.4219 curveto
+ -26.0508 -23.625 -25.0313 -25.0313 -25.0313 -25.0313 curveto
+ -23.2422 -25.5391 -23.0 -26.7734 -23.0 -26.7734 curveto
+ -25.0313 -29.3711 -21.8398 -29.3867 -21.8398 -29.3867 curveto
+ -22.9883 -30.9063 -21.5508 -34.6094 -21.5508 -34.6094 curveto
+ -19.9219 -34.7344 -17.7773 -36.6406 -17.7773 -36.6406 curveto
+ -18.6445 -38.0547 -15.457 -39.8359 -15.457 -39.8359 curveto
+ -12.6445 -40.3555 -13.4219 -42.4453 -13.4219 -42.4453 curveto
+ -10.9844 -44.4414 -10.2305 -49.4141 -10.2305 -49.4141 curveto
+ -9.96094 -52.8711 -9.19531 -53.8906 -10.8125 -53.1875 curveto
+ -12.5156 -52.6133 -12.2617 -48.543 -12.2617 -48.543 curveto
+ -10.7266 -43.6758 -24.4531 -38.6758 -24.4531 -38.6758 curveto
+ -25.668 -38.0547 -25.9023 -36.3516 -25.9023 -36.3516 curveto
+ -26.5625 -36.5234 -29.3867 -38.9648 -29.3867 -38.9648 curveto
+ -31.8008 -42.5273 -32.0 -39.543 -32.0 -39.543 curveto
+ -32.3086 -38.4375 -31.707 -36.6406 -31.707 -36.6406 curveto
+ -33.7148 -29.6289 -29.3867 -27.6445 -29.3867 -27.6445 curveto
+ -26.0508 -16.8594 -30.5469 -19.5195 -30.5469 -19.5195 curveto
+ -31.4141 -21.3281 -34.9023 -23.0 -34.9023 -23.0 curveto
+ -36.0625 -22.1289 lineto
+ -35.5 -20.6875 -38.0937 -18.6484 -38.0937 -18.6484 curveto
+ -39.0781 -20.8164 -40.9961 -18.3594 -40.9961 -18.3594 curveto
+ -42.1406 -10.4727 -46.2187 -15.1641 -46.2187 -15.1641 curveto
+ -47.3789 -15.4531 -47.6719 -13.4219 -47.6719 -13.4219 curveto
+ -48.9102 -9.96094 -47.6719 -5.58594 -47.6719 -5.58594 curveto
+ -48.9102 -5.49219 -52.0234 -7.32813 -52.0234 -7.32813 curveto
+ -52.8711 -6.25781 -49.9336 -0.894531 -51.1523 -1.52344 curveto
+ -52.4883 -2.42578 -53.7656 -2.97656 -53.7656 -2.97656 curveto
+ -54.1484 -2.30078 -50.8633 1.66797 -50.8633 1.66797 curveto
+ -49.5508 2.55469 -47.9609 8.92578 -47.9609 8.92578 curveto
+ -50.1875 7.91797 -47.0898 12.6992 -47.0898 12.6992 curveto
+ -46.9961 13.793 -48.832 17.3398 -48.832 17.3398 curveto
+ -48.6562 19.5391 -48.832 19.375 -48.832 19.375 curveto
+ -49.8047 19.0273 -52.3594 18.5156 -50.2852 20.5352 curveto
+ -48.0156 22.6016 -50.5742 24.0156 -50.5742 24.0156 curveto
+ -51.8477 25.0313 -47.3828 24.8867 -47.3828 24.8867 curveto
+ -45.8477 26.3086 -45.9297 27.5 -45.9297 27.5 curveto
+ -48.5273 26.9453 -43.9297 31.543 -43.0273 32.7227 curveto
+ -42.3984 33.8438 -45.3477 35.625 -45.3477 35.625 curveto
+ -49.6758 36.6523 -45.9297 37.6602 -45.9297 37.6602 curveto
+ -39.7148 37.543 -43.0273 40.8516 -43.0273 40.8516 curveto
+ -45.0781 40.8672 -44.4805 41.7227 -44.4805 41.7227 curveto
+ -42.9102 42.0156 -39.8359 44.043 -39.8359 44.043 curveto
+ -38.5664 45.207 -39.8359 44.9141 -39.8359 44.9141 curveto
+ -45.0781 44.5703 -35.7734 48.1055 -35.7734 48.1055 curveto
+ -38.4375 48.1445 -32.5781 51.5898 -32.5781 51.5898 curveto
+ -32.0547 51.9766 -31.1289 54.4922 -31.1289 54.4922 curveto
+ -29.1172 56.0625 -27.6445 58.2656 -27.6445 58.2656 curveto
+ -27.457 59.6367 -25.9023 61.168 -25.9023 61.168 curveto
+ -22.2227 65.5117 -20.3906 65.5195 -20.3906 65.5195 curveto
+ -15.707 66.5352 -14.0039 66.3906 -14.0039 66.3906 curveto
+ 2.82813 64.9414 lineto
+ 11.2383 60.7891 8.63281 54.2031 8.63281 54.2031 curveto
+ 6.70313 51.4023 3.69922 52.75 3.69922 52.75 curveto
+ 2.30078 54.5938 -1.52344 53.9102 -1.52344 53.9102 curveto
+ -7.91797 52.8711 -7.03906 53.9102 -7.03906 53.9102 curveto
+ -6.32031 55.4883 -1.14844 57.4688 -0.941406 57.6836 curveto
+ -1.02343 57.8516 1.66797 58.8438 1.66797 58.8438 curveto
+ 2.74609 59.3164 4.28125 62.3281 4.28125 62.3281 curveto
+ 5.17188 63.3398 0.21875 61.457 0.21875 61.457 curveto
+ 0.511719 61.1719 -1.8125 60.0078 -1.8125 60.0078 curveto
+ -7.40625 60.2109 -10.8125 56.8125 -10.8125 56.8125 curveto
+ -14.2383 51.4648 -14.293 54.2031 -14.293 54.2031 curveto
+ -15.1953 57.082 -11.3906 63.7813 -11.3906 63.7813 curveto
+ -11.5586 64.4922 -14.293 62.3281 -14.293 62.3281 curveto
+ -14.6211 63.0234 -14.875 61.168 -14.875 61.168 curveto
+ -14.9414 60.4063 -16.0352 57.9766 -16.0352 57.9766 curveto
+ -17.0508 53.6992 -18.0664 55.9414 -18.0664 55.9414 curveto
+ -19.8086 53.0391 lineto
+ -20.1133 52.2305 -18.0664 49.8477 -18.0664 49.8477 curveto
+ -18.1328 48.9102 -18.3906 48.9727 -16.6172 46.6563 curveto
+ -14.8164 44.1211 -16.0352 42.5938 -16.0352 42.5938 curveto
+ -15.4531 40.6094 -18.3594 40.8516 -18.3594 40.8516 curveto
+ -19.0938 40.0352 -20.0977 39.9805 -20.0977 39.9805 curveto
+ -20.75 39.3945 -21.5508 39.6914 -21.5508 39.6914 curveto
+ -22.0313 40.8008 -23.8711 40.2695 -23.8711 40.2695 curveto
+ -24.457 40.9297 -27.0664 41.1406 -27.0664 41.1406 curveto
+ -27.3945 41.8867 -27.5195 42.3984 -28.5156 42.5938 curveto
+ -29.6914 42.7813 -21.8398 56.5234 -21.8398 56.5234 curveto
+ -23.8828 56.7656 -21.2617 60.5859 -21.2617 60.5859 curveto
+ -20.5586 62.832 -24.1992 58.168 -25.0313 57.6836 curveto
+ -25.6055 57.2734 -25.9258 56.5742 -25.3242 56.5234 curveto
+ -24.9023 56.6992 -24.3281 56.0 -24.7422 55.9414 curveto
+ -25.2227 55.8711 -29.3711 51.082 -30.5469 47.8164 curveto
+ -31.543 44.5703 -33.457 43.293 -35.4805 41.4297 curveto
+ -37.418 39.4609 -37.2227 31.8516 -37.2227 31.8516 curveto
+ -37.0352 28.9258 -38.9648 25.4688 -38.9648 25.4688 curveto
+ -39.5898 24.3281 -38.3828 18.5039 -38.3828 18.5039 curveto
+ -37.6094 17.8125 -38.0937 17.6328 -38.0937 17.6328 curveto
+ -38.375 17.1758 -40.4141 12.9883 -40.4141 12.9883 curveto
+ -39.9727 13.0273 -40.9961 11.8281 -40.9961 11.8281 curveto
+ -42.7812 9.96094 -40.707 10.957 -40.707 10.957 curveto
+ -38.8242 11.4297 -40.9961 8.34375 -40.9961 8.34375 curveto
+ -41.4414 7.72656 -38.6758 9.21484 -38.6758 9.21484 curveto
+ -35.6289 9.38672 -39.2539 7.18359 -39.2539 7.18359 curveto
+ -42.0781 4.78906 -38.3828 6.3125 -38.3828 6.3125 curveto
+ -36.9727 6.76953 -38.0937 4.57031 -38.0937 4.57031 curveto
+ -39.0156 4.08594 -44.4805 1.96094 -44.4805 1.96094 curveto
+ -44.6328 0.636719 -43.6094 -0.941406 -43.6094 -0.941406 curveto
+ -43.8047 -2.23438 -43.0273 -3.26563 -43.0273 -3.26563 curveto
+ -42.7187 -5.9375 -42.4453 -6.16797 -42.4453 -6.16797 curveto
+ -41.1836 -6.25781 -38.9648 -10.5195 -38.9648 -10.5195 curveto
+ -38.2461 -11.4922 -34.9023 -15.457 -34.9023 -15.457 curveto
+ -34.3516 -17.5586 -28.5156 -15.1641 -28.5156 -15.1641 curveto
+ -26.5 -16.3477 -27.0664 -15.1641 -27.0664 -15.1641 curveto
+ -27.0117 -14.5586 -28.5156 -12.5547 -28.5156 -12.5547 curveto
+ -30.7773 -11.8125 -29.9687 -8.48828 -29.9687 -8.48828 curveto
+ -31.2227 -7.91797 -27.6484 -7.02344 -27.6445 -6.74609 curveto
+ -27.7734 -6.25781 -29.6758 -5.87891 -29.6758 -5.87891 curveto
+ -32.1836 -5.17188 -30.8359 -4.42578 -30.8359 -4.42578 curveto
+ -30.5859 -3.12891 -31.418 -1.23438 -31.418 -1.23438 curveto
+ -35.2461 -1.08594 -31.418 3.99219 -31.418 3.99219 curveto
+ -28.0938 6.51172 -27.6445 8.34375 -27.6445 8.34375 curveto
+ -31.8008 10.9844 -29.1797 14.9414 -29.3867 16.1797 curveto
+ -29.3086 17.2383 -29.6758 24.0156 -29.6758 24.0156 curveto
+ -29.0547 26.1172 -28.2266 30.4023 -28.2266 30.4023 curveto
+ -28.7969 32.1172 -31.1289 36.207 -31.1289 36.207 curveto
+ -32.0547 37.4805 -34.8633 39.0156 -34.0312 39.9805 curveto
+ -33.457 40.9297 -30.8359 40.2695 -30.8359 40.2695 curveto
+ -28.4766 40.8008 -28.8047 39.1094 -28.8047 39.1094 curveto
+ -28.1602 38.8242 -27.9336 37.3672 -27.9336 37.3672 curveto
+ -27.6719 34.6953 -24.7422 32.7227 -24.7422 32.7227 curveto
+ -21.2617 30.7109 -24.1641 29.5313 -24.1641 29.5313 curveto
+ -26.1172 27.3281 -23.0 27.2109 -23.0 27.2109 curveto
+ -19.4766 27.8398 -22.1289 24.5977 -22.1289 24.5977 curveto
+ -25.5391 20.4961 -24.4531 19.6641 -24.4531 19.6641 curveto
+ -21.3281 19.2852 -25.3242 16.4727 -25.3242 16.4727 curveto
+ -25.3242 16.4727 -25.0937 16.9844 -25.0313 16.4727 curveto
+ -25.2227 15.8359 -26.1797 14.4961 -26.4844 13.8594 curveto
+ -26.6914 13.2188 -25.3242 13.2773 -25.3242 13.2773 curveto
+ -25.6055 10.0898 -20.6797 11.5352 -20.6797 11.5352 curveto
+ -20.6797 11.5352 -20.6875 11.4297 -20.0977 11.2461 curveto
+ -19.668 11.3008 -16.0898 11.5586 -14.293 12.1172 curveto
+ -12.3867 12.9609 -10.2305 12.9883 -10.2305 12.9883 curveto
+ -10.2305 12.9883 -8.94141 12.3867 -6.45703 12.4063 curveto
+ -4.08594 12.5156 -1.52344 11.5352 -1.52344 11.5352 curveto
+ -0.128906 11.75 -2.87109 13.1523 -2.97656 12.9883 curveto
+ -3.0 13.0273 -4.78906 14.8125 -2.10547 14.7305 curveto
+ 4.72266 14.1016 8.05469 17.3398 8.05469 17.3398 curveto
+ 8.8125 17.8125 9.50391 18.793 9.50391 18.793 curveto
+ 12.832 19.3477 9.21484 14.7305 9.21484 14.7305 curveto
+ 8.8125 14.3047 9.21484 13.8594 9.21484 13.8594 curveto
+ 9.51563 14.4961 12.1172 16.1797 12.1172 16.1797 curveto
+ 12.9023 16.5273 13.3359 16.9531 14.1484 17.6328 curveto
+ closepath
+fill
+
+
+% 147 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.638521 setlinewidth
+ 0.7 1.0 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 21.6953 21.4063 moveto
+ 21.6953 21.4063 18.0078 19.668 17.0508 18.793 curveto
+ 16.3477 17.8789 11.8281 14.1484 11.8281 14.1484 curveto
+ 11.8281 14.1484 13.6016 14.8789 14.4375 15.3086 curveto
+ 15.2617 16.0273 18.793 18.5039 18.793 18.5039 curveto
+ 18.793 18.5039 19.9219 20.5586 21.6953 21.4063 curveto
+ closepath
+fill
+
+
+% 148 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.4 0.2 0.8 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 40.2695 31.2734 moveto
+ 40.1211 31.4609 40.2891 32.3281 40.2695 32.4336 curveto
+ 40.6797 33.3711 43.4648 33.8867 43.4648 33.8867 curveto
+ 43.6211 33.4063 43.6367 32.8984 43.4648 32.4336 curveto
+ 43.4648 32.4336 42.0508 30.6094 40.2695 31.2734 curveto
+ closepath
+fill
+
+
+% 149 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.6 0.4 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 40.2695 31.5625 moveto
+ 40.375 31.4258 40.2344 32.3516 40.2695 32.4336 curveto
+ 40.6172 33.3711 43.4648 33.8867 43.4648 33.8867 curveto
+ 43.6211 33.4375 43.6367 32.9297 43.4648 32.4336 curveto
+ 43.4648 32.4336 42.2422 30.7695 40.2695 31.5625 curveto
+ closepath
+fill
+
+
+% 150 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 41.7227 31.5625 moveto
+ 41.832 31.4336 41.9922 31.7969 42.0117 32.1445 curveto
+ 41.9922 32.6953 41.832 33.0586 41.7227 33.0156 curveto
+ 41.4336 33.0586 41.2695 32.6953 41.1406 32.1445 curveto
+ 41.2695 31.7969 41.4336 31.4336 41.7227 31.5625 curveto
+ closepath
+fill
+
+
+% 151 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 41.7227 32.1445 moveto
+fill
+
+
+% 152 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 56.2344 0.21875 moveto
+ 56.2344 0.21875 57.9766 -3.06641 50.1367 -1.23438 curveto
+ 50.1367 -1.23438 45.5898 -0.765625 44.9141 -0.0742188 curveto
+ 44.4414 -0.257813 41.7695 -1.19141 40.8516 -1.52344 curveto
+ 38.6953 -1.91797 35.918 1.37891 35.918 1.37891 curveto
+ 35.918 1.37891 34.543 4.62891 33.5938 4.57031 curveto
+ 32.7578 4.62891 33.8867 3.99219 33.8867 3.99219 curveto
+ 33.8867 3.99219 35.8867 0.894531 35.625 0.507813 curveto
+ 35.625 0.507813 37.418 -6.00391 42.5938 -6.16797 curveto
+ 42.5938 -6.16797 47.6797 -6.5625 47.2344 -8.48828 curveto
+ 47.2344 -8.48828 44.4414 -7.66406 43.7539 -8.48828 curveto
+ 43.7539 -8.48828 40.2266 -8.30078 42.8828 -10.2305 curveto
+ 44.9141 -14.0039 lineto
+ 44.9141 -14.0039 44.9063 -15.2969 48.1055 -14.293 curveto
+ 51.2734 -13.0898 54.4922 -9.07031 54.4922 -9.07031 curveto
+ 54.4922 -9.07031 59.6523 -4.32813 56.2344 0.21875 curveto
+ closepath
+fill
+
+
+% 153 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.1 0.4 0.4 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 56.5234 -1.23438 moveto
+ 56.5234 -1.23438 57.2109 -4.21484 45.4961 -0.941406 curveto
+ 45.4961 -0.941406 44.0586 -0.894531 43.1719 -1.23438 curveto
+ 42.5234 -1.40625 38.6953 -2.30078 37.9492 -1.8125 curveto
+ 37.9492 -1.8125 40.3555 -6.25781 44.043 -5.87891 curveto
+ 44.043 -5.87891 48.2734 -6.25781 48.1055 -7.91016 curveto
+ 48.1055 -7.91016 46.8672 -10.0898 45.2031 -10.8125 curveto
+ 45.2031 -10.8125 44.4414 -11.6211 44.625 -12.5547 curveto
+ 44.6953 -13.6641 45.5898 -14.1758 46.3672 -14.293 curveto
+ 46.8672 -14.6875 47.8906 -13.6641 48.3984 -13.7148 curveto
+ 48.9102 -13.6641 51.5938 -11.6211 53.0391 -10.2305 curveto
+ 54.4023 -8.55469 57.082 -4.72656 56.8125 -3.84375 curveto
+ 56.8281 -2.9375 56.5234 -1.23438 56.5234 -1.23438 curveto
+ closepath
+fill
+
+
+% 154 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.3 0.6 0.6 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 55.6523 -6.74609 moveto
+ 54.7227 -7.98047 53.6992 -9.32422 53.0391 -10.2305 curveto
+ 51.5938 -11.6211 48.9102 -13.6641 48.3984 -13.7148 curveto
+ 47.8906 -13.6641 46.8672 -14.6875 46.3672 -14.293 curveto
+ 45.5898 -14.1758 44.6953 -13.6641 44.625 -12.5547 curveto
+ 44.4414 -11.6211 45.2031 -10.8125 45.2031 -10.8125 curveto
+ 46.3125 -10.3672 47.1875 -9.25 47.8164 -8.48828 curveto
+ 47.8164 -8.48828 47.6328 -9.32422 49.2695 -9.07031 curveto
+ 50.9531 -8.8125 52.6133 -7.91797 53.0391 -7.03906 curveto
+ 53.6367 -5.875 54.4023 -5.10938 53.9102 -6.16797 curveto
+ 53.3828 -7.40625 52.6133 -8.55469 52.1719 -8.78125 curveto
+ 51.5938 -8.8125 51.7188 -9.19531 52.4609 -9.07031 curveto
+ 53.2539 -8.94141 54.1445 -8.8125 55.6523 -7.03906 curveto
+fill
+
+
+% 155 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.4 0.85 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 56.5234 -0.0742188 moveto
+ 56.5234 -0.0742188 55.8086 4.34375 55.3633 5.73047 curveto
+ 55.3633 5.73047 55.6797 7.78906 54.7813 9.21484 curveto
+ 54.1445 10.4727 53.5078 12.4492 52.4609 14.1484 curveto
+ 51.5938 15.8984 51.5273 17.1758 50.1367 17.6328 curveto
+ 48.9727 18.1992 47.0586 20.9453 46.0742 21.4063 curveto
+ 45.2695 21.582 45.2031 21.4063 45.2031 21.4063 curveto
+ 45.2031 21.4063 43.1641 26.0508 38.8203 24.8867 curveto
+ 38.8203 24.8867 43.9922 25.668 38.8203 28.6602 curveto
+ 38.8203 28.6602 40.4805 28.3203 39.3984 30.6914 curveto
+ 38.7266 32.043 38.8867 29.8828 42.3008 26.0469 curveto
+ 42.3008 26.0469 43.9922 23.3711 45.7852 22.2773 curveto
+ 47.3125 21.4531 51.1445 19.2188 51.5898 17.9219 curveto
+ 51.9102 16.793 52.9336 14.9414 53.6211 14.4375 curveto
+ 54.2109 13.9219 55.1055 12.5781 55.3633 11.5352 curveto
+ 55.3633 11.5352 55.6172 10.2148 55.9414 9.79688 curveto
+ 56.5078 9.44922 56.5742 8.42969 56.5234 7.76563 curveto
+ 56.5742 7.15234 57.2109 6.25781 57.1055 5.44141 curveto
+ 57.1055 5.44141 56.8906 -0.574219 57.1055 -1.23438 curveto
+ 56.5234 -0.0742188 lineto
+ closepath
+fill
+
+
+% 156 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 59.1367 -1.52344 moveto
+ 59.1367 -1.52344 59.7656 -1.02344 61.168 -2.97656 curveto
+ 61.168 -2.97656 58.8398 -13.4727 58.8438 -14.0039 curveto
+ 58.8438 -14.0039 58.4883 -13.25 58.8438 -10.8125 curveto
+ 59.3164 -8.65234 59.7148 -4.71484 59.7148 -4.71484 curveto
+ 59.1367 -1.52344 lineto
+ closepath
+fill
+
+
+% 157 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.4 0.85 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 52.1719 17.9219 moveto
+ 52.1719 17.9219 57.8516 16.8555 57.6836 7.47266 curveto
+ 57.9766 -0.363281 lineto
+ 57.9766 -0.363281 58.3594 7.78906 58.8438 8.34375 curveto
+ 59.125 8.8125 57.8516 12.3867 58.8438 10.375 curveto
+ 58.8438 10.375 63.3398 6.00391 60.8789 -0.652344 curveto
+ 60.8789 -0.652344 60.3086 -1.82031 61.168 -0.363281 curveto
+ 61.168 -0.363281 62.7344 3.67188 62.3281 5.73047 curveto
+ 62.3281 5.73047 62.3203 6.41797 61.7461 7.18359 curveto
+ 61.7461 7.18359 58.9688 11.0469 57.9766 11.8281 curveto
+ 57.9766 11.8281 57.5313 16.3789 52.75 17.9219 curveto
+ 52.75 17.9219 50.793 18.7734 52.1719 17.9219 curveto
+ closepath
+fill
+
+
+% 158 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 7.76563 39.1094 moveto
+ 7.51563 39.125 7.51953 39.4375 7.47266 39.3984 curveto
+ 6.96875 39.6016 6.91406 39.9414 6.89453 40.2695 curveto
+ 6.46875 40.6133 6.40625 41.1016 6.3125 41.7227 curveto
+ 6.13672 41.8008 6.125 42.1055 6.3125 42.3008 curveto
+ 6.60156 43.1094 6.82813 43.8906 7.18359 44.625 curveto
+ 7.37109 44.8086 7.45703 45.0625 7.47266 45.2031 curveto
+ 7.66797 45.6953 8.07031 46.0117 8.34375 46.3672 curveto
+ 8.43359 46.5742 8.26563 46.8711 8.63281 46.9453 curveto
+ 8.78125 46.9297 9.24609 47.1172 9.21484 46.6563 curveto
+ 9.50781 45.9609 9.18359 45.1563 8.92578 44.332 curveto
+ 9.125 44.1563 9.01953 43.8633 8.92578 43.7539 curveto
+ 8.74219 42.4648 9.125 41.3945 9.50391 40.2695 curveto
+ 9.375 40.2539 9.26563 40.1914 9.21484 40.2695 curveto
+ 9.66797 39.3125 10.1289 38.5313 10.668 37.6602 curveto
+ 10.9531 37.457 11.2305 37.1641 11.2461 36.7891 curveto
+ 11.5078 36.5703 11.6367 36.2617 11.5352 35.918 curveto
+ 12.6523 35.0625 13.3711 33.8359 14.1484 32.7227 curveto
+ 14.3516 32.3906 14.2617 32.0039 14.1484 31.8516 curveto
+ 13.8242 31.7891 13.5195 32.1172 13.2773 32.4336 curveto
+ 13.2461 32.6094 13.1328 32.8164 12.9883 33.0156 curveto
+ 12.9336 33.0781 12.9922 33.2109 12.9883 33.3047 curveto
+ 12.1055 34.0 11.5742 34.9375 10.668 35.625 curveto
+ 10.168 35.8008 9.67578 36.1172 9.21484 36.4961 curveto
+ 9.01953 36.4961 8.85547 36.418 8.63281 36.4961 curveto
+ 8.20313 36.8555 8.20313 37.5078 8.05469 38.2383 curveto
+ 8.15234 38.3984 8.08984 38.8164 7.76563 39.1094 curveto
+ closepath
+fill
+
+
+% 159 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 10.668 40.5625 moveto
+ 10.5078 40.4648 10.5586 40.5977 10.668 40.5625 curveto
+ 10.4727 40.7734 10.3438 40.832 10.375 40.8516 curveto
+ 10.2578 41.0039 10.3086 41.125 10.375 41.1406 curveto
+ 9.51953 41.9531 9.4375 42.918 9.79688 43.7539 curveto
+ 9.44141 44.0625 9.42188 44.4688 9.50391 44.625 curveto
+ 9.83203 45.2813 9.89453 45.8945 10.0859 46.3672 curveto
+ 10.4609 46.793 10.9648 47.1914 11.5352 46.6563 curveto
+ 11.5352 46.6484 11.6367 46.3945 11.5352 46.0742 curveto
+ 11.5273 46.1172 11.4375 46.0703 11.5352 46.0742 curveto
+ 11.4805 45.9414 11.6562 45.8672 11.5352 45.7852 curveto
+ 11.668 45.3047 11.9727 44.8203 11.8281 44.332 curveto
+ 11.5234 43.875 11.2617 43.2852 10.957 42.5938 curveto
+ 11.4414 42.043 11.1094 41.2617 11.5352 40.5625 curveto
+ 11.7148 40.6133 11.7109 40.4922 11.5352 40.5625 curveto
+ 11.5781 40.2695 11.4492 40.1406 11.2461 39.9805 curveto
+ 11.2305 40.0078 11.1172 40.0078 10.957 39.9805 curveto
+ 10.8711 40.1641 10.7422 40.3203 10.668 40.5625 curveto
+ closepath
+fill
+
+
+% 160 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -9.35938 43.7539 moveto
+ -9.94922 43.1602 -10.0391 42.2656 -9.35938 41.7227 curveto
+ -9.5625 40.7656 -10.6328 41.3984 -11.3906 41.4297 curveto
+ -11.2656 41.6914 -11.3398 41.8008 -11.3906 41.7227 curveto
+ -11.7656 41.8086 -11.9844 42.1367 -12.2617 42.0117 curveto
+ -12.4609 42.5742 -12.9844 42.8008 -13.1328 43.1719 curveto
+ -13.7422 44.418 -13.5508 45.7852 -12.8438 46.9453 curveto
+ -12.6641 46.9023 -12.7344 47.0664 -12.5547 47.2344 curveto
+ -12.4531 47.8867 -11.793 47.9883 -11.1016 48.1055 curveto
+ -10.8008 49.4453 -10.5859 50.7344 -9.94141 51.8789 curveto
+ -9.51172 51.9922 -9.28516 52.5469 -8.78125 52.75 curveto
+ -8.43359 53.0039 -8.25391 52.5039 -8.19922 52.1719 curveto
+ -8.26953 52.1016 -8.41406 52.0313 -8.48828 51.8789 curveto
+ -8.33594 51.8633 -8.25 51.8281 -8.19922 51.8789 curveto
+ -8.25 51.7422 -8.32032 51.6992 -8.48828 51.5898 curveto
+ -8.07422 51.3945 -7.61719 51.2422 -7.61719 51.0078 curveto
+ -7.21875 49.6914 -8.03906 48.6953 -8.48828 47.8164 curveto
+ -8.76172 47.3086 -8.52735 46.9063 -8.19922 46.6563 curveto
+ -8.14453 46.2969 -8.17969 45.9375 -8.19922 45.7852 curveto
+ -8.50781 44.9219 -9.01563 44.3633 -9.35938 43.7539 curveto
+ closepath
+fill
+
+
+% 161 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 2.25 37.9492 moveto
+ 2.83203 37.2695 3.92188 36.4492 3.12109 35.918 curveto
+ 2.92969 35.793 2.8125 35.793 2.82813 35.918 curveto
+ 2.10937 36.3359 1.47266 36.625 0.796879 36.7891 curveto
+ 0.652344 36.8164 0.566406 36.668 0.507813 36.7891 curveto
+ -0.0664063 36.9453 -0.707031 36.9258 -0.941406 37.3672 curveto
+ -2.28906 37.2813 -3.42578 37.6367 -4.42578 37.9492 curveto
+ -4.87891 38.1992 -5.28516 38.3789 -5.58594 38.5273 curveto
+ -6.10938 38.7227 -6.49218 39.0195 -6.74609 39.3984 curveto
+ -6.89063 39.4258 -7.00391 39.3945 -7.03906 39.3984 curveto
+ -7.07422 39.6719 -7.38281 39.7109 -7.32813 39.9805 curveto
+ -7.49219 39.9844 -7.44141 40.1133 -7.61719 40.2695 curveto
+ -8.16797 40.6641 -8.46094 41.3086 -8.19922 42.0117 curveto
+ -7.99609 42.2539 -7.91797 42.4492 -7.61719 42.5938 curveto
+ -7.39063 42.8945 -7.03906 42.6211 -6.74609 42.5938 curveto
+ -6.65234 42.5156 -6.42188 42.5703 -6.16797 42.5938 curveto
+ -6.02344 42.3672 -5.59766 42.5547 -5.29688 42.3008 curveto
+ -4.89063 42.1914 -4.49219 42.1406 -4.13672 42.0117 curveto
+ -3.9375 41.9922 -3.69141 42.0234 -3.55468 41.7227 curveto
+ -3.59766 41.8672 -3.55078 41.9414 -3.55468 42.0117 curveto
+ -2.90625 41.8086 -2.50391 41.7383 -2.10547 41.1406 curveto
+ -2.05469 41.1563 -1.91406 41.2148 -1.8125 41.1406 curveto
+ -1.55859 40.9102 -1.42968 40.5195 -0.941406 40.2695 curveto
+ -1.01172 40.2656 -0.902344 40.3164 -0.941406 40.2695 curveto
+ -0.632813 40.1406 -0.515621 39.9336 -0.363281 39.6914 curveto
+ -0.207031 39.7188 -0.078125 39.8242 -0.0742188 39.9805 curveto
+ -0.167969 40.5273 -0.375 41.0977 -0.0742188 41.7227 curveto
+ -0.855469 42.5 -1.66016 43.1211 -2.10547 44.043 curveto
+ -2.23828 44.6836 -2.46094 45.3711 -2.39453 46.0742 curveto
+ -2.42188 46.0938 -2.32813 46.3281 -2.39453 46.3672 curveto
+ -2.1875 46.7148 -2.47656 47.0547 -2.10547 47.2344 curveto
+ -1.76172 47.668 -1.34766 47.3906 -0.941406 46.9453 curveto
+ -0.5 46.8047 0.160156 46.5859 0.796879 46.9453 curveto
+ 0.984375 47.2305 1.17188 47.5195 1.37891 47.8164 curveto
+ 1.74219 48.2734 1.63281 48.7305 1.66797 49.2695 curveto
+ 1.60938 49.2695 1.71094 49.3164 1.66797 49.2695 curveto
+ 1.71094 49.3984 1.64063 49.4414 1.66797 49.5586 curveto
+ 1.82031 49.6836 1.91015 50.0234 2.25 50.1367 curveto
+ 2.13672 50.4727 2.35547 50.7539 2.53906 50.7188 curveto
+ 3.26953 51.0703 3.80469 50.4609 4.28125 50.4297 curveto
+ 4.57422 50.4336 4.72266 50.7617 4.86328 51.0078 curveto
+ 5.06641 50.9375 5.29297 50.9453 5.44141 50.7188 curveto
+ 5.625 50.6992 5.8125 50.6641 6.02344 50.7188 curveto
+ 6.57422 50.4609 6.98047 50.1094 7.47266 49.8477 curveto
+ 7.92578 49.5625 8.23047 49.1055 8.63281 48.6875 curveto
+ 8.87891 48.3164 8.92188 47.5469 8.34375 47.5273 curveto
+ 7.87891 47.1797 7.46094 48.0391 6.89453 47.8164 curveto
+ 6.73438 47.9219 6.66797 47.8203 6.60156 47.8164 curveto
+ 6.58203 47.6641 6.51172 47.7344 6.3125 47.8164 curveto
+ 6.17578 47.5 5.80469 47.3906 5.44141 47.2344 curveto
+ 5.19531 46.8242 4.63672 46.957 4.28125 46.6563 curveto
+ 3.82422 46.1602 4.00391 45.3047 3.41016 44.9141 curveto
+ 3.57031 44.4688 3.76563 44.0625 3.99219 43.4648 curveto
+ 3.96094 43.2188 3.64453 42.8398 3.12109 42.8828 curveto
+ 2.85547 42.8984 2.77344 43.1406 2.53906 43.4648 curveto
+ 2.53125 43.3984 2.38281 43.3047 2.53906 43.1719 curveto
+ 2.54297 42.4727 2.87109 41.8359 3.12109 41.1406 curveto
+ 3.03516 40.957 3.13282 40.8945 3.12109 40.8516 curveto
+ 3.40625 39.6055 4.69922 38.8398 5.44141 37.9492 curveto
+ 5.64063 37.668 5.64063 37.2695 5.44141 37.0781 curveto
+ 5.0625 36.6992 4.4375 37.1914 3.99219 37.3672 curveto
+ 3.82812 37.7383 3.55469 38.0391 3.12109 37.9492 curveto
+ 3.04688 38.0156 2.96875 38.1914 2.82813 38.2383 curveto
+ 2.75781 38.2773 2.59766 38.207 2.53906 38.2383 curveto
+ 1.95313 38.6484 1.5039 39.0039 1.08984 39.3984 curveto
+ 0.886719 39.4258 0.777344 39.375 0.796879 39.3984 curveto
+ 0.605469 39.4609 0.542969 39.582 0.507813 39.6914 curveto
+ 0.328125 39.707 0.253906 39.6133 0.21875 39.3984 curveto
+ 0.398441 39.4141 0.398441 39.1055 0.507813 39.1094 curveto
+ 0.832031 38.957 1.01172 38.793 1.08984 38.5273 curveto
+ 1.32031 38.5898 1.53125 38.668 1.66797 38.5273 curveto
+ 1.75391 38.2813 2.13281 38.1445 2.25 37.9492 curveto
+ closepath
+fill
+
+
+% 162 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 19.9531 53.6211 moveto
+ 19.9531 53.6211 23.0 54.5547 26.6289 46.3672 curveto
+ 26.6289 46.3672 27.3281 44.6953 28.082 44.043 curveto
+ 28.8633 43.4219 32.4375 42.2695 33.0156 40.8516 curveto
+ 36.4961 35.918 lineto
+ 36.4961 35.918 31.6719 40.9922 30.6914 41.7227 curveto
+ 30.6914 41.7227 28.0938 44.4414 29.2422 42.3008 curveto
+ 29.2422 42.3008 33.5859 38.8242 33.3047 35.918 curveto
+ 33.3047 35.918 34.9922 31.2891 35.3359 30.6914 curveto
+ 35.3359 30.6914 30.1367 40.8672 29.2422 41.1406 curveto
+ 28.6055 41.6328 28.2227 41.6328 28.6602 40.5625 curveto
+ 28.9883 39.332 29.1172 34.0977 30.1133 33.5938 curveto
+ 30.1133 33.5938 27.457 39.9727 27.7891 40.8516 curveto
+ 27.7891 40.8516 26.6914 42.1406 26.0469 40.5625 curveto
+ 26.3398 35.3359 lineto
+ 24.8867 31.5625 lineto
+ 24.8867 31.5625 25.668 35.1172 25.1797 39.9805 curveto
+ 25.1797 39.9805 25.7969 43.4219 24.5977 41.7227 curveto
+ 23.2422 39.8438 20.1758 37.9297 20.2422 36.4961 curveto
+ 20.2422 36.4961 21.8359 42.0156 24.8867 43.4648 curveto
+ 26.0469 41.7227 lineto
+ 26.3398 42.3008 lineto
+ 26.3398 42.3008 27.582 42.5273 26.0469 44.625 curveto
+ 24.7734 46.8672 24.8867 47.2344 24.8867 47.2344 curveto
+ 24.8867 47.2344 22.8594 44.8242 22.2773 44.9141 curveto
+ 22.2773 44.9141 18.1328 47.25 17.6328 39.3984 curveto
+ 17.6328 39.3984 15.5781 44.0586 18.5039 46.3672 curveto
+ 18.5039 46.3672 23.2422 46.8672 22.8555 48.3984 curveto
+ 20.5352 52.4609 lineto
+ 19.4102 54.1445 19.9531 53.332 19.9531 53.332 curveto
+fill
+
+
+% 163 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 26.3398 48.3984 moveto
+ 26.3398 48.3984 30.5195 48.4023 31.5625 46.6563 curveto
+ 33.8867 43.7539 lineto
+ 33.8867 43.7539 28.3516 46.8672 27.2109 47.2344 curveto
+ 25.7969 47.6328 26.3398 48.3984 26.3398 48.3984 curveto
+ closepath
+fill
+
+
+% 164 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 39.1094 46.3672 moveto
+ 39.1094 46.3672 39.8438 45.9727 39.9805 45.2031 curveto
+ 40.0977 44.1836 40.8672 44.0586 40.5625 43.1719 curveto
+ 40.3555 42.2695 39.7148 41.5039 39.6914 42.8828 curveto
+ 39.7148 44.0586 39.2031 44.6953 38.8203 45.2031 curveto
+ 38.6953 45.4648 38.1836 46.8672 39.1094 46.3672 curveto
+ closepath
+fill
+
+
+% 165 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 42.0117 26.918 moveto
+ 42.0117 26.918 44.6953 28.0938 45.7852 29.2422 curveto
+ 46.7383 30.3945 46.5938 28.7461 48.1055 28.9492 curveto
+ 50.0117 29.0039 49.5586 34.1758 49.5586 34.1758 curveto
+ 51.0078 31.5625 lineto
+ 51.0078 31.5625 51.3359 27.0742 48.6875 27.7891 curveto
+ 47.5352 28.2148 47.1211 27.7109 47.5273 27.5 curveto
+ 48.1445 27.1992 45.8477 27.0742 46.6563 26.6289 curveto
+ 47.6328 26.0508 43.0352 27.7109 43.7539 24.3086 curveto
+ 42.0117 26.918 lineto
+ closepath
+fill
+
+
+% 166 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 46.0742 22.2773 moveto
+ 46.0742 22.2773 50.9531 20.8164 52.1719 24.0156 curveto
+ 52.1719 24.0156 53.6367 23.1133 53.0391 22.2773 curveto
+ 52.2305 21.1992 51.8789 21.1133 51.8789 21.1133 curveto
+ 51.8789 21.1133 50.125 20.6875 50.4297 20.5352 curveto
+ 50.5078 20.1758 51.3008 19.082 51.3008 19.082 curveto
+ 51.3008 19.082 48.0156 21.0078 46.0742 22.2773 curveto
+ closepath
+fill
+
+
+% 167 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -26.7734 -2.68359 moveto
+ -26.7461 -3.42578 -26.2109 -3.68359 -25.6133 -3.84375 curveto
+ -24.9922 -3.58984 -24.1641 -2.59766 -23.582 -3.26563 curveto
+ -23.4102 -3.10156 -23.1641 -3.08594 -23.0 -2.97656 curveto
+ -22.9023 -2.58594 -22.9883 -2.25391 -23.0 -2.10547 curveto
+ -22.707 -1.58984 -22.4805 -1.15625 -22.4219 -0.652344 curveto
+ -23.1172 -0.476563 -23.3047 0.132813 -23.293 0.796875 curveto
+ -23.1328 0.777344 -22.9961 0.839844 -23.0 1.08984 curveto
+ -23.1172 1.05469 -23.2227 1.12891 -23.293 1.08984 curveto
+ -23.2617 1.17188 -23.2148 1.09375 -23.293 1.08984 curveto
+ -22.9883 1.13672 -23.0273 1.33984 -23.0 1.37891 curveto
+ -23.2539 2.01953 -23.8984 2.10547 -24.4531 1.66797 curveto
+ -24.4102 1.90625 -24.5742 1.84375 -24.7422 1.96094 curveto
+ -24.6953 2.03516 -24.8242 2.20703 -25.0313 2.25 curveto
+ -25.0547 2.6875 -25.5742 2.33594 -25.9023 2.53906 curveto
+ -26.1719 2.79297 -26.5117 3.01953 -26.7734 2.82813 curveto
+ -27.4336 2.50391 -27.9766 2.11719 -28.2266 1.66797 curveto
+ -28.5469 1.29297 -28.6211 0.882813 -28.5156 0.507813 curveto
+ -28.5898 0.371094 -28.1523 0.484375 -27.9336 0.21875 curveto
+ -27.8359 -0.371094 -28.418 -0.535156 -28.5156 -0.941406 curveto
+ -28.7227 -1.07422 -28.6406 -1.17188 -28.5156 -1.23438 curveto
+ -28.4063 -1.24219 -28.1562 -1.18359 -28.2266 -1.23438 curveto
+ -28.5117 -2.34766 -27.6328 -2.56641 -26.7734 -2.68359 curveto
+ closepath
+fill
+
+
+% 168 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -23.8711 -9.07031 moveto
+ -23.8125 -8.44922 -23.3047 -7.88672 -23.582 -7.32813 curveto
+ -23.7344 -7.38672 -23.7734 -7.45703 -23.8711 -7.32813 curveto
+ -23.8594 -7.45703 -23.9023 -7.38672 -23.8711 -7.32813 curveto
+ -24.4219 -8.05078 -25.5898 -8.34766 -25.6133 -9.35938 curveto
+ -25.5352 -9.39844 -25.1875 -9.69141 -25.6133 -9.94141 curveto
+ -24.8984 -10.3281 -24.8828 -11.0859 -24.4531 -11.6836 curveto
+ -24.1875 -11.5938 -23.8008 -11.4766 -23.293 -11.3906 curveto
+ -23.5469 -10.8281 -23.5078 -10.2891 -23.8711 -9.94141 curveto
+ -23.9102 -9.64453 -23.8164 -9.30078 -23.8711 -9.07031 curveto
+ closepath
+fill
+
+
+% 169 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 29.2422 -6.16797 moveto
+ 29.2422 -6.16797 34.625 -9.36719 30.1133 -4.42578 curveto
+ 27.3281 -1.40625 24.0156 0.507813 24.0156 0.507813 curveto
+ 24.0156 0.507813 20.8164 1.78906 19.6641 2.25 curveto
+ 18.5156 2.55469 13.6641 4.21484 12.6992 4.28125 curveto
+ 11.6211 4.46875 8.55469 5.74609 6.3125 4.57031 curveto
+ 4.21484 3.19141 1.66797 1.66797 1.66797 1.66797 curveto
+ 1.66797 1.66797 6.89844 4.46875 8.05469 3.69922 curveto
+ 9.19531 2.9375 11.4922 3.06641 13.2773 1.96094 curveto
+ 13.2773 1.96094 18.1328 0.636719 19.082 -0.0742188 curveto
+ 20.1758 -0.636719 23.4961 -4.34375 24.0156 -4.13672 curveto
+ 24.5195 -3.83203 23.8828 -3.70313 23.4375 -2.68359 curveto
+ 23.1133 -1.91797 23.7539 -1.40625 26.3398 -3.55469 curveto
+ 28.8633 -5.49219 29.2422 -6.16797 29.2422 -6.16797 curveto
+ closepath
+fill
+
+
+% 170 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 26.918 -4.13672 moveto
+ 26.918 -4.13672 26.4297 -0.0625 23.7266 -0.652344 curveto
+ 23.7266 -0.652344 21.0977 0.738281 20.2422 1.37891 curveto
+ 20.2422 1.37891 17.6289 1.91016 17.3398 2.25 curveto
+ 11.3125 4.88281 6.61328 3.44141 6.3125 3.69922 curveto
+ 6.26563 4.15625 -0.00390625 1.88281 -1.23438 0.507813 curveto
+ -1.27734 0.4375 2.11328 2.36719 5.15234 2.82813 curveto
+ 7.85156 3.48438 14.7461 2.89063 18.2109 1.08984 curveto
+ 19.1758 0.640625 22.0313 -1.20313 22.8555 -1.23438 curveto
+ 23.6484 -1.13281 26.918 -4.13672 26.918 -4.13672 curveto
+ closepath
+fill
+
+
+% 171 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 28.082 -12.2617 moveto
+ 28.082 -12.2617 32.9492 -11.6211 27.5 -11.1016 curveto
+ 27.5 -11.1016 21.8359 -10.4727 20.5352 -8.78125 curveto
+ 20.5352 -8.78125 16.2188 -5.875 15.3086 -5.87891 curveto
+ 14.4297 -5.61719 4.85156 -3.32031 4.86328 -2.68359 curveto
+ 4.59766 -1.78906 2.80859 -1.78906 2.25 -2.10547 curveto
+ 1.78906 -2.30078 2.04297 -2.68359 2.82813 -2.97656 curveto
+ 3.83203 -3.19141 13.793 -8.42969 15.8906 -8.78125 curveto
+ 17.8789 -9.19531 21.582 -11.6211 23.1445 -11.9727 curveto
+ 24.6484 -12.3867 28.082 -12.2617 28.082 -12.2617 curveto
+ closepath
+fill
+
+
+% 172 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 21.9844 -9.94141 moveto
+ 21.9844 -9.94141 24.6016 -9.76172 21.9844 -9.35938 curveto
+ 21.9844 -9.35938 19.043 -8.40625 18.5039 -7.61719 curveto
+ 18.5039 -7.61719 16.1641 -6.05078 15.6016 -5.87891 curveto
+ 15.25 -5.92188 10.793 -4.74609 10.668 -4.42578 curveto
+ 10.6602 -3.96094 -0.21484 0.0546875 -1.52344 -0.941406 curveto
+ -2.55469 -1.63281 0.605469 -1.09766 3.69922 -2.39453 curveto
+ 4.11719 -2.70313 14.9219 -7.35938 15.8906 -7.61719 curveto
+ 17.0156 -7.75391 18.9102 -8.99609 19.6641 -9.07031 curveto
+ 20.4805 -9.38672 21.9844 -9.94141 21.9844 -9.94141 curveto
+ closepath
+fill
+
+
+% 173 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 24.3086 -10.8125 moveto
+ 24.3086 -10.8125 22.7305 -10.5977 23.1445 -11.1016 curveto
+ 23.4961 -11.6211 24.3086 -11.3906 24.3086 -11.3906 curveto
+ 24.3086 -10.8125 lineto
+ closepath
+fill
+
+
+% 174 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 26.6289 -11.1016 moveto
+ 26.6289 -11.1016 25.0313 -11.1094 25.4688 -11.6836 curveto
+ 25.7969 -12.1328 26.6289 -11.9727 26.6289 -11.9727 curveto
+ 26.6289 -11.1016 lineto
+ closepath
+fill
+
+
+% 175 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 30.1133 -11.6836 moveto
+ 30.1133 -11.6836 28.3516 -11.6211 28.6602 -12.2617 curveto
+ 29.1172 -12.6445 29.8203 -12.2617 29.8203 -12.2617 curveto
+ 30.1133 -11.6836 lineto
+ closepath
+fill
+
+
+% 176 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 32.4336 -11.9727 moveto
+ 32.4336 -11.9727 30.7773 -11.8789 31.2734 -12.2617 curveto
+ 31.543 -12.8984 32.4336 -12.5547 32.4336 -12.5547 curveto
+ 32.4336 -11.9727 lineto
+ closepath
+fill
+
+
+% 177 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 20.2422 0.507813 moveto
+ 20.2422 0.507813 18.7734 0.636719 19.082 0.21875 curveto
+ 19.5391 -0.382813 20.5352 -0.363281 20.5352 -0.363281 curveto
+ 20.2422 0.507813 lineto
+ closepath
+fill
+
+
+% 178 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 23.4375 -1.23438 moveto
+ 23.4375 -1.23438 21.293 -0.464844 21.9844 -1.52344 curveto
+ 22.4766 -2.04297 23.1445 -1.8125 23.1445 -1.8125 curveto
+ 23.4375 -1.23438 lineto
+ closepath
+fill
+
+
+% 179 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 26.918 -2.68359 moveto
+ 26.918 -2.68359 25.2852 -2.55469 25.7578 -2.97656 curveto
+ 26.0508 -3.57422 26.918 -3.26563 26.918 -3.26563 curveto
+ 26.918 -2.68359 lineto
+ closepath
+fill
+
+
+% 180 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 29.2422 -4.71484 moveto
+ 29.2422 -4.71484 27.7109 -4.46875 28.082 -5.00781 curveto
+ 28.4766 -5.49219 29.2422 -5.29688 29.2422 -5.29688 curveto
+ 29.2422 -4.71484 lineto
+ closepath
+fill
+
+
+% 181 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 31.5625 -6.16797 moveto
+ 31.5625 -6.16797 29.8828 -6.00391 30.4023 -6.45703 curveto
+ 30.6484 -7.02344 31.2734 -6.74609 31.2734 -6.74609 curveto
+ 31.5625 -6.16797 lineto
+ closepath
+fill
+
+
+% 182 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 19.082 -8.19922 moveto
+ 19.082 -8.19922 16.8555 -8.00391 17.3398 -8.78125 curveto
+ 17.875 -9.36328 18.793 -9.07031 18.793 -9.07031 curveto
+ 19.082 -8.19922 lineto
+ closepath
+fill
+
+
+% 183 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 15.6016 -6.74609 moveto
+ 15.6016 -6.74609 13.5352 -6.46875 14.1484 -7.03906 curveto
+ 14.5547 -7.82813 15.6016 -7.61719 15.6016 -7.61719 curveto
+ 15.6016 -6.74609 lineto
+ closepath
+fill
+
+
+% 184 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 12.4063 -5.29688 moveto
+ 12.4063 -5.29688 10.0898 -5.06641 10.668 -5.87891 curveto
+ 11.1055 -6.42578 12.1172 -6.16797 12.1172 -6.16797 curveto
+ 12.4063 -5.29688 lineto
+ closepath
+fill
+
+
+% 185 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 8.92578 -3.84375 moveto
+ 8.92578 -3.84375 6.76563 -3.53125 7.18359 -4.13672 curveto
+ 7.78906 -4.89453 8.92578 -4.42578 8.92578 -4.42578 curveto
+ 8.92578 -3.84375 lineto
+ closepath
+fill
+
+
+% 186 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 17.9219 1.96094 moveto
+ 17.9219 1.96094 15.5781 2.21484 16.1797 1.66797 curveto
+ 16.5977 0.855469 17.9219 0.796875 17.9219 0.796875 curveto
+ 17.9219 1.96094 lineto
+ closepath
+fill
+
+
+% 187 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 14.7305 3.12109 moveto
+ 14.7305 3.12109 12.3867 3.23438 12.9883 2.53906 curveto
+ 13.4063 1.875 14.7305 1.96094 14.7305 1.96094 curveto
+ 14.7305 3.12109 lineto
+ closepath
+fill
+
+
+% 188 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 21.6953 -9.64844 moveto
+ 21.6953 -9.64844 20.1758 -9.57813 20.5352 -10.2305 curveto
+ 20.9453 -10.5977 21.6953 -10.2305 21.6953 -10.2305 curveto
+ 21.6953 -9.64844 lineto
+ closepath
+fill
+
+
+% 189 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.4 0.85 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 45.2031 21.9844 moveto
+ 45.2031 21.9844 46.6133 19.1563 46.6563 18.2109 curveto
+ 46.6563 18.2109 46.4844 20.9453 46.0742 21.6953 curveto
+ 45.7188 22.2188 45.2031 21.9844 45.2031 21.9844 curveto
+ closepath
+fill
+
+
+% 190 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.4 0.85 1.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 51.0078 17.6328 moveto
+ 51.0078 17.6328 52.1016 12.8984 51.8789 12.1172 curveto
+ 51.8789 12.1172 52.3594 15.707 52.1719 16.1797 curveto
+ 52.1016 16.4727 51.0078 17.6328 51.0078 17.6328 curveto
+ closepath
+fill
+
+
+% 191 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 44.332 41.4297 moveto
+ 44.625 40.2695 lineto
+ 45.2031 40.2695 lineto
+ 45.2031 40.2695 40.6758 36.2031 40.5625 33.8867 curveto
+ 40.5625 33.8867 40.2266 36.3945 44.332 41.4297 curveto
+ closepath
+fill
+
+
+% 192 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 43.1719 40.8516 moveto
+ 43.3047 41.043 43.2383 41.2813 43.4648 41.4297 curveto
+ 43.625 41.5273 42.9531 41.543 42.8828 41.7227 curveto
+ 43.1484 42.1602 43.0859 42.1641 43.1719 42.5938 curveto
+ 43.1445 42.7617 42.957 43.2539 42.8828 43.4648 curveto
+ 42.375 43.9219 42.7969 44.8594 42.3008 45.4961 curveto
+ 42.1758 45.4453 42.0547 45.6211 42.0117 45.7852 curveto
+ 41.7539 46.0625 41.375 46.2188 41.1406 46.3672 curveto
+ 40.9727 46.5703 41.0352 46.8359 40.8516 46.9453 curveto
+ 40.625 46.7695 40.2305 46.8125 40.2695 46.6563 curveto
+ 40.2813 45.8672 40.7031 45.3164 41.1406 44.9141 curveto
+ 40.9688 44.5586 41.1133 44.3594 41.1406 44.043 curveto
+ 41.6328 43.3438 41.5703 42.4375 41.7227 41.4297 curveto
+ 41.6289 41.5 41.7266 41.4766 41.7227 41.4297 curveto
+ 41.6133 40.7148 41.4258 40.0117 41.1406 39.3984 curveto
+ 41.0273 39.0039 40.875 38.7188 40.8516 38.5273 curveto
+ 40.793 38.2031 40.7617 37.9375 40.8516 37.6602 curveto
+ 40.2422 36.7891 40.6602 35.9414 40.2695 34.7539 curveto
+ 40.2188 34.6172 39.6797 34.0039 39.6914 34.1758 curveto
+ 40.6289 34.3359 40.668 34.4609 40.8516 34.7539 curveto
+ 40.7695 34.9023 40.875 35.3398 40.8516 35.625 curveto
+ 40.9688 35.5859 41.0234 36.1875 41.1406 36.207 curveto
+ 41.5313 36.9844 41.0977 36.9297 41.4297 37.6602 curveto
+ 41.9922 37.8984 42.3008 38.2539 42.5938 38.5273 curveto
+ 42.7227 38.6875 42.3594 38.9219 42.3008 39.1094 curveto
+ 42.7617 39.3984 43.1328 39.6445 42.8828 39.9805 curveto
+ 42.9766 40.3398 42.9297 40.6797 43.1719 40.8516 curveto
+ closepath
+fill
+
+
+% 193 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 44.332 40.2695 moveto
+ 44.332 40.2695 44.1836 38.1836 43.4648 37.6602 curveto
+ 42.6523 37.1602 43.0352 37.418 44.043 37.6602 curveto
+ 45.0781 38.1836 44.625 38.5273 44.625 38.5273 curveto
+ 44.625 38.5273 45.5898 38.3125 44.9141 37.6602 curveto
+ 44.0586 37.0352 42.9102 36.2695 43.4648 36.207 curveto
+ 43.9297 36.2695 46.3555 37.543 46.3672 38.5273 curveto
+ 46.3555 39.332 46.6563 40.5625 46.6563 40.5625 curveto
+ 46.6563 40.5625 46.3242 40.8984 44.9141 40.8516 curveto
+ 44.9141 40.8516 44.3438 40.6406 44.332 40.2695 curveto
+ closepath
+fill
+gsave %{
+
+
+% 194 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 44.625 34.4648 moveto
+ 44.625 34.4648 47.2891 35.3086 53.332 34.1758 curveto
+ 53.332 34.1758 50.3047 34.8867 44.332 34.1758 curveto
+ 41.0273 33.7617 44.625 34.4648 44.625 34.4648 curveto
+ closepath
+fill
+grestore %}
+
+
+% 195 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 44.625 34.4648 moveto
+ 44.625 34.4648 47.2891 35.3086 53.332 34.1758 curveto
+ 53.332 34.1758 50.3047 34.8867 44.332 34.1758 curveto
+ 41.0273 33.7617 44.625 34.4648 44.625 34.4648 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 196 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 44.043 34.4648 moveto
+ 44.043 34.4648 46.5313 35.5625 52.4609 35.0469 curveto
+ 52.4609 35.0469 49.5742 35.4063 43.7539 34.1758 curveto
+ 40.4258 33.4805 44.043 34.4648 44.043 34.4648 curveto
+ closepath
+fill
+grestore %}
+
+
+% 197 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 44.043 34.4648 moveto
+ 44.043 34.4648 46.5313 35.5625 52.4609 35.0469 curveto
+ 52.4609 35.0469 49.5742 35.4063 43.7539 34.1758 curveto
+ 40.4258 33.4805 44.043 34.4648 44.043 34.4648 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 198 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 43.4648 34.4648 moveto
+ 43.4648 34.4648 45.8711 35.7266 51.8789 35.625 curveto
+ 51.8789 35.625 48.9141 35.793 43.1719 34.1758 curveto
+ 39.9336 33.1953 43.4648 34.4648 43.4648 34.4648 curveto
+ closepath
+fill
+grestore %}
+
+
+% 199 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 43.4648 34.4648 moveto
+ 43.4648 34.4648 45.8711 35.7266 51.8789 35.625 curveto
+ 51.8789 35.625 48.9141 35.793 43.1719 34.1758 curveto
+ 39.9336 33.1953 43.4648 34.4648 43.4648 34.4648 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 200 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 42.8828 34.4648 moveto
+ 42.8828 34.4648 45.1016 35.7109 50.4297 36.207 curveto
+ 50.4297 36.207 47.8281 36.0078 42.8828 34.1758 curveto
+ 39.9727 32.9883 42.8828 34.4648 42.8828 34.4648 curveto
+ closepath
+fill
+grestore %}
+
+
+% 201 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 42.8828 34.4648 moveto
+ 42.8828 34.4648 45.1016 35.7109 50.4297 36.207 curveto
+ 50.4297 36.207 47.8281 36.0078 42.8828 34.1758 curveto
+ 39.9727 32.9883 42.8828 34.4648 42.8828 34.4648 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 202 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 6.02344 30.9844 moveto
+ 6.02344 30.9844 6.41406 30.7734 6.3125 31.2734 curveto
+ 6.27734 31.5273 -2.73047 35.7344 -3.84375 35.625 curveto
+ -3.84375 35.625 5.77344 31.4375 6.02344 30.9844 curveto
+ closepath
+fill
+grestore %}
+
+
+% 203 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 6.02344 30.9844 moveto
+ 6.02344 30.9844 6.41406 30.7734 6.3125 31.2734 curveto
+ 6.27734 31.5273 -2.73047 35.7344 -3.84375 35.625 curveto
+ -3.84375 35.625 5.77344 31.4375 6.02344 30.9844 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 204 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 7.18359 30.6914 moveto
+ 7.18359 30.6914 7.48047 30.5469 7.47266 30.9844 curveto
+ 7.40234 31.3086 -1.24609 36.2109 -2.39453 36.207 curveto
+ -2.39453 36.207 6.89453 31.2578 7.18359 30.6914 curveto
+ closepath
+fill
+grestore %}
+
+
+% 205 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 7.18359 30.6914 moveto
+ 7.18359 30.6914 7.48047 30.5469 7.47266 30.9844 curveto
+ 7.40234 31.3086 -1.24609 36.2109 -2.39453 36.207 curveto
+ -2.39453 36.207 6.89453 31.2578 7.18359 30.6914 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 206 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 8.34375 30.4023 moveto
+ 8.34375 30.4023 8.51563 30.0898 8.63281 30.4023 curveto
+ 8.48828 30.8555 2.16016 35.8047 -0.941406 36.4961 curveto
+ -0.941406 36.4961 4.78516 33.8086 8.34375 30.4023 curveto
+ closepath
+fill
+grestore %}
+
+
+% 207 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 8.34375 30.4023 moveto
+ 8.34375 30.4023 8.51563 30.0898 8.63281 30.4023 curveto
+ 8.48828 30.8555 2.16016 35.8047 -0.941406 36.4961 curveto
+ -0.941406 36.4961 4.78516 33.8086 8.34375 30.4023 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 208 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 9.21484 29.8203 moveto
+ 9.21484 29.8203 9.40625 29.5195 9.50391 29.8203 curveto
+ 9.38281 30.2109 3.6875 34.6641 0.796879 35.3359 curveto
+ 0.796879 35.3359 6.04688 32.8672 9.21484 29.8203 curveto
+ closepath
+fill
+grestore %}
+
+
+% 209 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 9.21484 29.8203 moveto
+ 9.21484 29.8203 9.40625 29.5195 9.50391 29.8203 curveto
+ 9.38281 30.2109 3.6875 34.6641 0.796879 35.3359 curveto
+ 0.796879 35.3359 6.04688 32.8672 9.21484 29.8203 curveto
+ closepath
+stroke
+
+
+% 210 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 19.375 -17.4883 moveto
+ 19.375 -17.4883 24.1367 -16.7305 18.793 -16.3242 curveto
+ 18.793 -16.3242 13.0273 -15.5781 11.8281 -14.0039 curveto
+ 11.8281 -14.0039 7.40625 -10.9844 6.60156 -10.8125 curveto
+ 5.61719 -10.7266 0.382813 -9.57813 0.21875 -8.78125 curveto
+ 0.128906 -8.04688 -1.78906 -7.28125 -2.39453 -7.61719 curveto
+ -2.80859 -7.78906 -2.80859 -10.7266 -1.8125 -11.1016 curveto
+ -1.02343 -11.2383 4.98047 -13.5352 6.89453 -14.0039 curveto
+ 9.06641 -14.3047 12.7695 -16.7305 14.4375 -17.1953 curveto
+ 15.8359 -17.4961 19.375 -17.4883 19.375 -17.4883 curveto
+ closepath
+fill
+
+
+% 211 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -4.13672 -5.58594 moveto
+ -4.13672 -5.58594 -3.06641 -6.06641 -2.68359 -7.03906 curveto
+ -2.68359 -7.03906 -0.636719 -10.2813 3.99219 -11.3906 curveto
+ 3.99219 -11.3906 11.2383 -14.1758 13.8594 -14.875 curveto
+ 13.8594 -14.875 18.0078 -16.4102 20.2422 -16.0352 curveto
+ 20.2422 -16.0352 22.6016 -16.2188 20.5352 -16.6172 curveto
+ 20.5352 -16.6172 14.1758 -16.0898 12.9883 -15.457 curveto
+ 12.9883 -15.457 8.10938 -13.8555 7.18359 -13.1328 curveto
+ 6.19531 -12.1953 0.382813 -10.5977 -0.363281 -9.94141 curveto
+ -1.02343 -9.32422 -4.15234 -6.64063 -4.13672 -5.58594 curveto
+ closepath
+fill
+
+
+% 212 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 14.7305 -15.7461 moveto
+ 14.7305 -15.7461 13.0547 -15.543 13.2773 -16.0352 curveto
+ 13.7891 -16.5313 14.4375 -16.3242 14.4375 -16.3242 curveto
+ 14.7305 -15.7461 lineto
+ closepath
+fill
+
+
+% 213 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 17.0508 -16.0352 moveto
+ 17.0508 -16.0352 15.3555 -15.9727 15.6016 -16.3242 curveto
+ 16.0898 -16.9648 16.7617 -16.6172 16.7617 -16.6172 curveto
+ 17.0508 -16.0352 lineto
+ closepath
+fill
+
+
+% 214 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 20.2422 -16.3242 moveto
+ 20.2422 -16.3242 18.6836 -16.375 19.082 -16.9063 curveto
+ 19.418 -17.3633 20.2422 -17.1953 20.2422 -17.1953 curveto
+ 20.2422 -16.3242 lineto
+ closepath
+fill
+
+
+% 215 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 22.8555 -16.6172 moveto
+ 22.8555 -16.6172 21.1211 -16.5469 21.4063 -16.9063 curveto
+ 21.8555 -17.5352 22.5664 -17.1953 22.5664 -17.1953 curveto
+ 22.8555 -16.6172 lineto
+ closepath
+fill
+
+
+% 216 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 9.50391 -13.1328 moveto
+ 9.50391 -13.1328 7.22266 -13.1563 7.76563 -13.7148 curveto
+ 8.20313 -14.4727 9.21484 -14.0039 9.21484 -14.0039 curveto
+ 9.50391 -13.1328 lineto
+ closepath
+fill
+
+
+% 217 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 6.02344 -11.9727 moveto
+ 6.02344 -11.9727 4.25 -10.7852 4.28125 -12.2617 curveto
+ 4.50781 -13.2188 6.02344 -12.5547 6.02344 -12.5547 curveto
+ 6.02344 -11.9727 lineto
+ closepath
+fill
+
+
+% 218 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 3.12109 -10.8125 moveto
+ 3.12109 -10.8125 0.949219 -9.76172 1.37891 -11.3906 curveto
+ 1.75391 -12.2852 3.12109 -11.6836 3.12109 -11.6836 curveto
+ 3.12109 -10.8125 lineto
+ closepath
+fill
+
+
+% 219 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 0.21875 -9.35938 moveto
+ 0.21875 -9.35938 -1.19141 -7.83594 -1.52344 -9.94141 curveto
+ -1.66406 -10.7734 -0.0742188 -10.2305 -0.0742188 -10.2305 curveto
+ 0.21875 -9.35938 lineto
+ closepath
+fill
+
+
+% 220 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 12.1172 -14.5859 moveto
+ 12.1172 -14.5859 10.5156 -14.6133 10.957 -15.1641 curveto
+ 11.25 -15.6016 12.1172 -15.457 12.1172 -15.457 curveto
+ 12.1172 -14.5859 lineto
+ closepath
+fill
+gsave %{
+
+
+% 221 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 0.796879 24.0156 moveto
+ 0.796879 24.0156 1.05078 23.8594 1.08984 24.3086 curveto
+ 1.05078 24.543 -4.53125 28.7773 -7.32813 29.2422 curveto
+ -7.32813 29.2422 -2.21484 27.0703 0.796879 24.0156 curveto
+ closepath
+fill
+grestore %}
+
+
+% 222 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 0.796879 24.0156 moveto
+ 0.796879 24.0156 1.05078 23.8594 1.08984 24.3086 curveto
+ 1.05078 24.543 -4.53125 28.7773 -7.32813 29.2422 curveto
+ -7.32813 29.2422 -2.21484 27.0703 0.796879 24.0156 curveto
+ closepath
+stroke
+
+
+% 223 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -0.0742188 3.69922 moveto
+ -0.0742188 3.69922 -7.15234 -3.44922 -10.2305 -4.71484 curveto
+ -10.2305 -4.71484 -13.0273 -8.17188 -11.6836 -16.6172 curveto
+ -11.6836 -16.6172 -10.7266 -18.9023 -9.64844 -12.2617 curveto
+ -9.64844 -12.2617 -10.7266 -4.21484 -7.03906 -9.35938 curveto
+ -7.03906 -9.35938 -4.46875 -6.16016 -6.45703 -6.16797 curveto
+ -6.45703 -6.16797 -7.53516 -6.89844 -7.61719 -6.45703 curveto
+ -7.78906 -5.875 -5.23438 -1.53125 0.21875 3.12109 curveto
+ 5.74609 7.66016 -0.0742188 3.69922 -0.0742188 3.69922 curveto
+ closepath
+fill
+gsave %{
+
+
+% 224 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 18.5039 -8.78125 moveto
+ 18.5039 -8.78125 18.582 -8.10938 17.9219 -8.48828 curveto
+ 17.4297 -8.62109 -12.6445 -10.5977 -22.7109 -18.3594 curveto
+ -22.7109 -18.3594 -8.30078 -10.8555 18.5039 -8.78125 curveto
+ closepath
+fill
+grestore %}
+
+
+% 225 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 18.5039 -8.78125 moveto
+ 18.5039 -8.78125 18.582 -8.10938 17.9219 -8.48828 curveto
+ 17.4297 -8.62109 -12.6445 -10.5977 -22.7109 -18.3594 curveto
+ -22.7109 -18.3594 -8.30078 -10.8555 18.5039 -8.78125 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 226 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 15.3086 -7.32813 moveto
+ 15.3086 -7.32813 15.2617 -6.70313 14.7305 -7.03906 curveto
+ 14.1133 -7.21484 -29.5 -6.89844 -36.9336 -17.1953 curveto
+ -36.9336 -17.1953 -30.0117 -9.19531 15.3086 -7.32813 curveto
+ closepath
+fill
+grestore %}
+
+
+% 227 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 15.3086 -7.32813 moveto
+ 15.3086 -7.32813 15.2617 -6.70313 14.7305 -7.03906 curveto
+ 14.1133 -7.21484 -29.5 -6.89844 -36.9336 -17.1953 curveto
+ -36.9336 -17.1953 -30.0117 -9.19531 15.3086 -7.32813 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 228 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 11.5352 -5.87891 moveto
+ 11.5352 -5.87891 11.5586 -5.42578 10.957 -5.58594 curveto
+ 10.4063 -5.9375 -44.9531 -1.78906 -52.6055 -12.2617 curveto
+ -52.6055 -12.2617 -49.4219 -3.96094 11.5352 -5.87891 curveto
+ closepath
+fill
+grestore %}
+
+
+% 229 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 11.5352 -5.87891 moveto
+ 11.5352 -5.87891 11.5586 -5.42578 10.957 -5.58594 curveto
+ 10.4063 -5.9375 -44.9531 -1.78906 -52.6055 -12.2617 curveto
+ -52.6055 -12.2617 -49.4219 -3.96094 11.5352 -5.87891 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 230 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 8.34375 -4.42578 moveto
+ 8.34375 -4.42578 8.36328 -3.89453 7.76563 -4.13672 curveto
+ 7.21484 -4.40625 -31.8008 7.91797 -39.2539 -2.39453 curveto
+ -39.2539 -2.39453 -35.0547 5.42578 8.34375 -4.42578 curveto
+ closepath
+fill
+grestore %}
+
+
+% 231 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 8.34375 -4.42578 moveto
+ 8.34375 -4.42578 8.36328 -3.89453 7.76563 -4.13672 curveto
+ 7.21484 -4.40625 -31.8008 7.91797 -39.2539 -2.39453 curveto
+ -39.2539 -2.39453 -35.0547 5.42578 8.34375 -4.42578 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 232 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 26.918 -11.6836 moveto
+ 26.918 -11.6836 26.8828 -11.1758 26.3398 -11.3906 curveto
+ 25.7344 -11.6836 20.0508 -12.3867 19.375 -24.7422 curveto
+ 19.375 -24.7422 21.7109 -11.3672 26.918 -11.6836 curveto
+ closepath
+fill
+grestore %}
+
+
+% 233 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 26.918 -11.6836 moveto
+ 26.918 -11.6836 26.8828 -11.1758 26.3398 -11.3906 curveto
+ 25.7344 -11.6836 20.0508 -12.3867 19.375 -24.7422 curveto
+ 19.375 -24.7422 21.7109 -11.3672 26.918 -11.6836 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 234 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 29.5313 -12.2617 moveto
+ 29.5313 -12.2617 29.6914 -11.6836 29.2422 -11.9727 curveto
+ 28.543 -12.1953 24.0078 -10.7266 24.8867 -23.0 curveto
+ 24.8867 -23.0 24.5195 -11.8789 29.5313 -12.2617 curveto
+ closepath
+fill
+grestore %}
+
+
+% 235 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 29.5313 -12.2617 moveto
+ 29.5313 -12.2617 29.6914 -11.6836 29.2422 -11.9727 curveto
+ 28.543 -12.1953 24.0078 -10.7266 24.8867 -23.0 curveto
+ 24.8867 -23.0 24.5195 -11.8789 29.5313 -12.2617 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 236 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 32.1445 -12.2617 moveto
+ 32.1445 -12.2617 32.2461 -11.8125 31.5625 -11.9727 curveto
+ 31.0977 -12.3242 26.1797 -12.5156 30.1133 -19.8086 curveto
+ 30.1133 -19.8086 27.0742 -12.0039 32.1445 -12.2617 curveto
+ closepath
+fill
+grestore %}
+
+
+% 237 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 32.1445 -12.2617 moveto
+ 32.1445 -12.2617 32.2461 -11.8125 31.5625 -11.9727 curveto
+ 31.0977 -12.3242 26.1797 -12.5156 30.1133 -19.8086 curveto
+ 30.1133 -19.8086 27.0742 -12.0039 32.1445 -12.2617 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 238 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 17.0508 1.66797 moveto
+ 17.0508 1.66797 17.2148 1.12891 16.7617 1.37891 curveto
+ 11.5898 5.54688 1.23047 24.3516 -16.6172 26.0469 curveto
+ -16.6172 26.0469 -4.31641 30.0195 17.0508 1.66797 curveto
+ closepath
+fill
+grestore %}
+
+
+% 239 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 17.0508 1.66797 moveto
+ 17.0508 1.66797 17.2148 1.12891 16.7617 1.37891 curveto
+ 11.5898 5.54688 1.23047 24.3516 -16.6172 26.0469 curveto
+ -16.6172 26.0469 -4.31641 30.0195 17.0508 1.66797 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 240 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 13.5703 2.25 moveto
+ 13.5703 2.25 13.9297 2.72266 13.2773 2.82813 curveto
+ 12.7383 3.12109 -23.1602 26.2695 -35.7734 23.7266 curveto
+ -35.7734 23.7266 -27.0469 26.125 13.5703 2.25 curveto
+ closepath
+fill
+grestore %}
+
+
+% 241 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 13.5703 2.25 moveto
+ 13.5703 2.25 13.9297 2.72266 13.2773 2.82813 curveto
+ 12.7383 3.12109 -23.1602 26.2695 -35.7734 23.7266 curveto
+ -35.7734 23.7266 -27.0469 26.125 13.5703 2.25 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 242 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 20.2422 0.507813 moveto
+ 20.2422 0.507813 20.3125 -0.117188 19.6641 0.21875 curveto
+ 16.9023 1.82813 15.7461 20.0938 1.96094 20.5352 curveto
+ 1.96094 20.5352 12.1836 25.1914 20.2422 0.507813 curveto
+ closepath
+fill
+grestore %}
+
+
+% 243 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 20.2422 0.507813 moveto
+ 20.2422 0.507813 20.3125 -0.117188 19.6641 0.21875 curveto
+ 16.9023 1.82813 15.7461 20.0938 1.96094 20.5352 curveto
+ 1.96094 20.5352 12.1836 25.1914 20.2422 0.507813 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 244 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 26.6289 -3.26563 moveto
+ 26.6289 -3.26563 26.8555 -3.53906 26.3398 -3.55469 curveto
+ 22.9609 -3.03125 16.125 10.1445 1.96094 8.63281 curveto
+ 1.96094 8.63281 12.1445 13.1055 26.6289 -3.26563 curveto
+ closepath
+fill
+grestore %}
+
+
+% 245 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 26.6289 -3.26563 moveto
+ 26.6289 -3.26563 26.8555 -3.53906 26.3398 -3.55469 curveto
+ 22.9609 -3.03125 16.125 10.1445 1.96094 8.63281 curveto
+ 1.96094 8.63281 12.1445 13.1055 26.6289 -3.26563 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 246 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 22.8555 -1.23438 moveto
+ 22.8555 -1.23438 23.1797 -1.64063 22.5664 -1.52344 curveto
+ 19.457 -0.394531 15.2813 13.8477 1.08984 15.0195 curveto
+ 1.08984 15.0195 11.9414 17.5156 22.8555 -1.23438 curveto
+ closepath
+fill
+grestore %}
+
+
+% 247 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 22.8555 -1.23438 moveto
+ 22.8555 -1.23438 23.1797 -1.64063 22.5664 -1.52344 curveto
+ 19.457 -0.394531 15.2813 13.8477 1.08984 15.0195 curveto
+ 1.08984 15.0195 11.9414 17.5156 22.8555 -1.23438 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 248 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 28.6602 -4.71484 moveto
+ 28.6602 -4.71484 29.0391 -5.09375 28.6602 -5.00781 curveto
+ 25.8828 -4.68359 20.3477 5.98828 8.92578 4.57031 curveto
+ 8.92578 4.57031 17.1211 8.38672 28.6602 -4.71484 curveto
+ closepath
+fill
+grestore %}
+
+
+% 249 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 28.6602 -4.71484 moveto
+ 28.6602 -4.71484 29.0391 -5.09375 28.6602 -5.00781 curveto
+ 25.8828 -4.68359 20.3477 5.98828 8.92578 4.57031 curveto
+ 8.92578 4.57031 17.1211 8.38672 28.6602 -4.71484 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 250 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 31.2734 -6.74609 moveto
+ 31.2734 -6.74609 31.5039 -6.98047 30.9844 -7.03906 curveto
+ 29.668 -6.84375 19.8828 3.71484 13.8594 -1.23438 curveto
+ 13.8594 -1.23438 17.8242 4.74609 31.2734 -6.74609 curveto
+ closepath
+fill
+grestore %}
+
+
+% 251 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 31.2734 -6.74609 moveto
+ 31.2734 -6.74609 31.5039 -6.98047 30.9844 -7.03906 curveto
+ 29.668 -6.84375 19.8828 3.71484 13.8594 -1.23438 curveto
+ 13.8594 -1.23438 17.8242 4.74609 31.2734 -6.74609 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 252 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 8.92578 3.41016 moveto
+ 8.92578 3.41016 9.36719 3.97656 8.63281 3.99219 curveto
+ 8.13672 4.22266 -30.3984 22.6484 -42.4453 18.5039 curveto
+ -42.4453 18.5039 -34.2383 22.0117 8.92578 3.41016 curveto
+ closepath
+fill
+grestore %}
+
+
+% 253 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 8.92578 3.41016 moveto
+ 8.92578 3.41016 9.36719 3.97656 8.63281 3.99219 curveto
+ 8.13672 4.22266 -30.3984 22.6484 -42.4453 18.5039 curveto
+ -42.4453 18.5039 -34.2383 22.0117 8.92578 3.41016 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 254 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 19.6641 -16.9063 moveto
+ 19.6641 -16.9063 19.7305 -16.4102 19.082 -16.6172 curveto
+ 18.582 -16.9219 13.6641 -17.1133 17.6328 -24.1641 curveto
+ 17.6328 -24.1641 14.5586 -16.6016 19.6641 -16.9063 curveto
+ closepath
+fill
+grestore %}
+
+
+% 255 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 19.6641 -16.9063 moveto
+ 19.6641 -16.9063 19.7305 -16.4102 19.082 -16.6172 curveto
+ 18.582 -16.9219 13.6641 -17.1133 17.6328 -24.1641 curveto
+ 17.6328 -24.1641 14.5586 -16.6016 19.6641 -16.9063 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 256 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 16.4727 -16.6172 moveto
+ 16.4727 -16.6172 16.4102 -15.8984 15.8906 -16.0352 curveto
+ 15.2617 -16.4102 9.57813 -17.1133 8.92578 -29.3867 curveto
+ 8.92578 -29.3867 11.2383 -16.0898 16.4727 -16.6172 curveto
+ closepath
+fill
+grestore %}
+
+
+% 257 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 16.4727 -16.6172 moveto
+ 16.4727 -16.6172 16.4102 -15.8984 15.8906 -16.0352 curveto
+ 15.2617 -16.4102 9.57813 -17.1133 8.92578 -29.3867 curveto
+ 8.92578 -29.3867 11.2383 -16.0898 16.4727 -16.6172 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 258 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 14.1484 -16.0352 moveto
+ 14.1484 -16.0352 14.2383 -15.3867 13.5703 -15.7461 curveto
+ 13.0898 -15.8984 5.23438 -16.9844 -2.39453 -27.3555 curveto
+ -2.39453 -27.3555 9.06641 -15.5781 14.1484 -16.0352 curveto
+ closepath
+fill
+grestore %}
+
+
+% 259 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 14.1484 -16.0352 moveto
+ 14.1484 -16.0352 14.2383 -15.3867 13.5703 -15.7461 curveto
+ 13.0898 -15.8984 5.23438 -16.9844 -2.39453 -27.3555 curveto
+ -2.39453 -27.3555 9.06641 -15.5781 14.1484 -16.0352 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 260 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 11.8281 -15.457 moveto
+ 11.8281 -15.457 11.8789 -14.7539 11.2461 -14.875 curveto
+ 10.6719 -15.1094 4.14844 -14.5 -7.91015 -25.3242 curveto
+ -7.91015 -25.3242 6.73047 -14.2578 11.8281 -15.457 curveto
+ closepath
+fill
+grestore %}
+
+
+% 261 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 11.8281 -15.457 moveto
+ 11.8281 -15.457 11.8789 -14.7539 11.2461 -14.875 curveto
+ 10.6719 -15.1094 4.14844 -14.5 -7.91015 -25.3242 curveto
+ -7.91015 -25.3242 6.73047 -14.2578 11.8281 -15.457 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 262 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 8.34375 -14.0039 moveto
+ 8.34375 -14.0039 8.55859 -13.3516 8.05469 -13.4219 curveto
+ 7.35156 -13.7031 -3.76563 -15.1406 -20.3906 -26.1953 curveto
+ -20.3906 -26.1953 3.40625 -12.8516 8.34375 -14.0039 curveto
+ closepath
+fill
+grestore %}
+
+
+% 263 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 8.34375 -14.0039 moveto
+ 8.34375 -14.0039 8.55859 -13.3516 8.05469 -13.4219 curveto
+ 7.35156 -13.7031 -3.76563 -15.1406 -20.3906 -26.1953 curveto
+ -20.3906 -26.1953 3.40625 -12.8516 8.34375 -14.0039 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 264 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 21.4063 -10.2305 moveto
+ 21.4063 -10.2305 21.3906 -9.64063 20.8242 -9.94141 curveto
+ 20.2422 -10.1523 3.19141 -10.9844 -6.45703 -19.5195 curveto
+ -6.45703 -19.5195 4.62891 -11.6289 21.4063 -10.2305 curveto
+ closepath
+fill
+grestore %}
+
+
+% 265 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 21.4063 -10.2305 moveto
+ 21.4063 -10.2305 21.3906 -9.64063 20.8242 -9.94141 curveto
+ 20.2422 -10.1523 3.19141 -10.9844 -6.45703 -19.5195 curveto
+ -6.45703 -19.5195 4.62891 -11.6289 21.4063 -10.2305 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 266 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 24.5977 -11.3906 moveto
+ 24.5977 -11.3906 24.582 -10.918 24.0156 -11.1016 curveto
+ 23.4336 -11.4297 15.5781 -12.5156 8.05469 -23.0 curveto
+ 8.05469 -23.0 19.4102 -11.1094 24.5977 -11.3906 curveto
+ closepath
+fill
+grestore %}
+
+
+% 267 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 24.5977 -11.3906 moveto
+ 24.5977 -11.3906 24.582 -10.918 24.0156 -11.1016 curveto
+ 23.4336 -11.4297 15.5781 -12.5156 8.05469 -23.0 curveto
+ 8.05469 -23.0 19.4102 -11.1094 24.5977 -11.3906 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 268 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 4.86328 -12.5547 moveto
+ 4.86328 -12.5547 5.12891 -11.8906 4.57031 -11.9727 curveto
+ 3.89844 -12.1523 -7.29688 -12.7734 -24.4531 -22.7109 curveto
+ -24.4531 -22.7109 0.21875 -11.7188 4.86328 -12.5547 curveto
+ closepath
+fill
+grestore %}
+
+
+% 269 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 4.86328 -12.5547 moveto
+ 4.86328 -12.5547 5.12891 -11.8906 4.57031 -11.9727 curveto
+ 3.89844 -12.1523 -7.29688 -12.7734 -24.4531 -22.7109 curveto
+ -24.4531 -22.7109 0.21875 -11.7188 4.86328 -12.5547 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 270 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 2.25 -11.6836 moveto
+ 2.25 -11.6836 2.44531 -11.1211 1.96094 -11.3906 curveto
+ 1.21484 -11.3867 -9.98047 -12.0039 -27.3555 -21.8398 curveto
+ -27.3555 -21.8398 -2.65625 -10.8242 2.25 -11.6836 curveto
+ closepath
+fill
+grestore %}
+
+
+% 271 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 2.25 -11.6836 moveto
+ 2.25 -11.6836 2.44531 -11.1211 1.96094 -11.3906 curveto
+ 1.21484 -11.3867 -9.98047 -12.0039 -27.3555 -21.8398 curveto
+ -27.3555 -21.8398 -2.65625 -10.8242 2.25 -11.6836 curveto
+ closepath
+stroke
+gsave %{
+
+
+% 272 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -0.941406 -9.94141 moveto
+ -0.941406 -9.94141 -0.617184 -9.52734 -1.23438 -9.64844 curveto
+ -1.84766 -9.78906 -15.5977 -11.1758 -44.1875 -22.1289 curveto
+ -44.1875 -22.1289 -5.71875 -9.22656 -0.941406 -9.94141 curveto
+ closepath
+fill
+grestore %}
+
+
+% 273 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ -0.941406 -9.94141 moveto
+ -0.941406 -9.94141 -0.617184 -9.52734 -1.23438 -9.64844 curveto
+ -1.84766 -9.78906 -15.5977 -11.1758 -44.1875 -22.1289 curveto
+ -44.1875 -22.1289 -5.71875 -9.22656 -0.941406 -9.94141 curveto
+ closepath
+stroke
+
+
+% 274 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 34.7539 -12.2617 moveto
+ 34.7539 -12.2617 33.0742 -12.1328 33.5938 -12.5547 curveto
+ 33.8438 -13.1523 34.4648 -12.8438 34.4648 -12.8438 curveto
+ 34.7539 -12.2617 lineto
+ closepath
+fill
+
+
+% 275 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 24.8867 -16.6172 moveto
+ 24.8867 -16.6172 23.2422 -16.6016 23.7266 -17.1953 curveto
+ 24.0078 -17.625 24.8867 -17.4883 24.8867 -17.4883 curveto
+ 24.8867 -16.6172 lineto
+ closepath
+fill
+
+
+% 276 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 27.7891 -16.6172 moveto
+ 27.7891 -16.6172 26.0508 -16.4727 26.3398 -16.9063 curveto
+ 26.8164 -17.4961 27.5 -17.1953 27.5 -17.1953 curveto
+ 27.7891 -16.6172 lineto
+ closepath
+fill
+
+
+% 277 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 58.2656 -12.8438 moveto
+ 58.2656 -12.8438 56.5469 -13.25 57.1055 -13.7148 curveto
+ 57.6094 -13.9648 58.2656 -13.4219 58.2656 -13.4219 curveto
+ 58.2656 -12.8438 lineto
+ closepath
+fill
+
+
+% 278 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 57.3945 -9.64844 moveto
+ 57.3945 -9.64844 55.9102 -10.1875 56.5234 -10.5195 curveto
+ 56.9688 -10.9023 57.6836 -10.5195 57.6836 -10.5195 curveto
+ 57.3945 -9.64844 lineto
+ closepath
+fill
+
+
+% 279 pathnumber
+% filledpath
+ 0 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 59.7148 -8.48828 moveto
+ 59.7148 -8.48828 58.207 -8.78125 58.8438 -9.07031 curveto
+ 59.2656 -9.49609 60.0078 -9.07031 60.0078 -9.07031 curveto
+ 59.7148 -8.48828 lineto
+ closepath
+fill
+
+
+% 280 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 34.4648 -32.2891 moveto
+ 34.4648 -32.2891 34.8633 -32.3086 36.207 -32.8711 curveto
+ 36.7773 -32.9492 40.3555 -34.0977 42.0117 -37.2227 curveto
+ 42.0117 -37.2227 38.1836 -34.2266 34.4648 -32.2891 curveto
+ closepath
+fill
+
+
+% 281 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 6.3125 -61.8945 moveto
+ 6.30469 -61.9688 6.28516 -62.1055 6.3125 -62.1836 curveto
+ 5.98438 -62.1211 5.58984 -62.2188 5.73047 -61.8945 curveto
+ 5.89844 -60.6406 6.17969 -59.0625 7.47266 -58.4102 curveto
+ 7.70313 -58.3984 8.16016 -58.5313 8.05469 -58.6992 curveto
+ 8.22656 -59.3008 8.26563 -59.7305 8.05469 -60.1523 curveto
+ 8.07031 -60.6523 7.37891 -60.6563 7.18359 -60.1523 curveto
+ 6.78906 -60.7461 6.65234 -61.3359 6.3125 -61.8945 curveto
+ closepath
+fill
+
+
+% 282 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 9.79688 -63.3438 moveto
+ 9.64453 -63.8516 9.6875 -64.4453 9.21484 -64.5039 curveto
+ 9.0 -64.7188 8.40625 -64.4063 8.63281 -63.9258 curveto
+ 8.79688 -63.4063 8.92188 -62.6914 9.50391 -62.1836 curveto
+ 9.42969 -62.0273 9.35156 -61.8594 9.50391 -61.8945 curveto
+ 9.59375 -61.3633 9.95703 -61.1289 10.375 -61.3125 curveto
+ 10.7656 -61.9375 10.3984 -62.6172 9.79688 -63.0547 curveto
+ 9.86719 -63.2109 9.92188 -63.332 9.79688 -63.3438 curveto
+ closepath
+fill
+
+
+% 283 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 22.5664 -61.6016 moveto
+ 22.5625 -61.6211 22.5742 -61.4727 22.5664 -61.3125 curveto
+ 22.3516 -61.043 22.1016 -60.6836 22.2773 -60.4414 curveto
+ 22.3203 -60.0195 22.6758 -60.0781 22.8555 -60.1523 curveto
+ 23.2422 -60.5781 23.2578 -61.1602 23.4375 -61.6016 curveto
+ 23.543 -61.7188 23.5273 -61.8984 23.7266 -61.8945 curveto
+ 23.8203 -62.1602 23.9609 -62.6445 24.0156 -62.7656 curveto
+ 23.9102 -62.9297 23.9688 -66.0898 24.0156 -65.957 curveto
+ 23.7031 -65.7734 22.7266 -62.668 22.5664 -62.4727 curveto
+ 22.6875 -62.1484 22.4531 -62.0 22.5664 -61.6016 curveto
+ closepath
+fill
+
+
+% 284 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 30.6914 -59.5703 moveto
+ 29.8711 -58.7773 28.9805 -57.832 29.2422 -56.668 curveto
+ 29.1602 -56.3359 29.7266 -56.5039 29.8203 -56.668 curveto
+ 30.043 -57.9297 30.6953 -58.7773 31.5625 -59.5703 curveto
+ 32.2148 -60.1953 32.8086 -62.2227 33.0156 -62.4727 curveto
+ 31.7031 -60.707 30.9844 -59.8281 30.6914 -59.5703 curveto
+ closepath
+fill
+
+
+% 285 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 35.0469 -57.5391 moveto
+ 34.8789 -57.5508 34.9766 -57.3945 35.0469 -57.25 curveto
+ 34.6016 -56.8242 34.1875 -56.4258 34.1758 -55.7969 curveto
+ 34.1797 -55.7813 34.3008 -55.6836 34.4648 -55.7969 curveto
+ 34.4961 -55.8125 34.6055 -55.8555 34.7539 -55.7969 curveto
+ 35.2891 -56.6797 35.7344 -57.5313 36.207 -58.4102 curveto
+ 36.2539 -58.543 36.6211 -59.9766 36.4961 -60.1523 curveto
+ 36.4453 -60.0391 35.8945 -58.7031 35.918 -58.6992 curveto
+ 35.4258 -58.4492 35.4219 -57.9336 35.0469 -57.5391 curveto
+ closepath
+fill
+
+
+% 286 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 29.8203 -63.9258 moveto
+ 29.5625 -63.6328 29.0586 -63.2461 28.9492 -63.0547 curveto
+ 29.1328 -62.668 28.9844 -62.207 29.2422 -62.4727 curveto
+ 29.6758 -62.7305 30.7773 -63.1602 30.9844 -65.0859 curveto
+ 30.8711 -65.1953 29.9219 -64.3359 29.8203 -63.9258 curveto
+ closepath
+fill
+
+
+% 287 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 25.1797 -58.4102 moveto
+ 24.9648 -58.2109 24.7422 -58.3633 24.5977 -58.4102 curveto
+ 24.3867 -58.1602 24.1914 -57.9805 24.0156 -57.8281 curveto
+ 23.7891 -57.0898 23.2227 -56.5078 23.1445 -55.7969 curveto
+ 23.6563 -55.293 23.8711 -55.9453 24.0156 -56.3789 curveto
+ 24.4961 -55.7266 24.8125 -56.3281 25.1797 -56.3789 curveto
+ 25.25 -56.5 25.3203 -56.3906 25.4688 -56.3789 curveto
+ 25.7188 -56.5391 25.9336 -56.8828 26.3398 -57.25 curveto
+ 26.3086 -57.1758 26.4375 -57.1172 26.6289 -57.25 curveto
+ 26.6953 -57.3555 27.0039 -57.4609 27.2109 -57.5391 curveto
+ 27.4492 -58.5391 28.4492 -59.2109 28.9492 -61.6016 curveto
+ 28.9297 -61.9063 27.6133 -59.4961 27.5 -59.2813 curveto
+ 27.1875 -58.8906 27.1523 -59.8047 26.6289 -59.5703 curveto
+ 26.7305 -59.582 26.668 -59.6602 26.6289 -59.5703 curveto
+ 26.5664 -59.6133 26.4961 -59.5391 26.3398 -59.5703 curveto
+ 26.3711 -59.4453 26.4141 -59.2695 26.3398 -59.2813 curveto
+ 25.9531 -58.9063 25.9805 -58.5664 25.7578 -58.1211 curveto
+ 25.5859 -58.4219 25.2461 -58.1914 25.1797 -58.4102 curveto
+ closepath
+fill
+
+
+% 288 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 6.02344 -75.8242 moveto
+ 6.02344 -75.8242 3.64063 -69.2773 5.15234 -65.668 curveto
+ 5.15234 -65.668 1.40625 -72.6016 2.82813 -76.1133 curveto
+ 2.82813 -76.1133 3.0 -72.8555 4.28125 -71.1797 curveto
+ 4.28125 -71.1797 5.55469 -75.3477 6.02344 -75.8242 curveto
+ closepath
+fill
+
+
+% 289 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 10.668 -74.9531 moveto
+ 10.668 -74.9531 9.00391 -72.1523 11.5352 -66.2461 curveto
+ 11.5352 -66.2461 11.8125 -72.793 13.8594 -76.4063 curveto
+ 13.8594 -76.4063 9.44922 -69.8555 10.668 -74.9531 curveto
+ closepath
+fill
+
+
+% 290 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 13.8594 -74.375 moveto
+ 13.8594 -74.375 13.9844 -67.9375 13.8594 -67.1172 curveto
+ 13.8594 -67.1172 15.0703 -72.2813 18.2109 -75.2422 curveto
+ 18.2109 -75.2422 13.7266 -71.5156 13.8594 -74.375 curveto
+ closepath
+fill
+
+
+% 291 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 17.0508 -64.2148 moveto
+ 17.0508 -64.2148 15.0703 -68.4492 18.2109 -74.375 curveto
+ 18.2109 -74.375 16.2188 -70.4297 17.6328 -68.2773 curveto
+ 17.6328 -68.2773 16.9219 -67.1094 17.0508 -64.2148 curveto
+ closepath
+fill
+
+
+% 292 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 23.1445 -74.082 moveto
+ 23.1445 -74.082 23.4336 -69.2148 22.8555 -68.5703 curveto
+ 22.8555 -68.5703 22.793 -66.4688 22.8555 -66.2461 curveto
+ 22.8555 -66.2461 21.6445 -64.1719 21.6953 -66.5352 curveto
+ 21.6953 -66.5352 21.1367 -69.0234 20.2422 -70.6016 curveto
+ 20.2422 -70.6016 19.0938 -72.2148 19.082 -74.375 curveto
+ 19.082 -74.375 22.3477 -64.6172 23.1445 -74.082 curveto
+ closepath
+fill
+
+
+% 293 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 24.3086 -65.375 moveto
+ 24.3086 -65.375 26.3711 -68.832 26.918 -74.9531 curveto
+ 26.918 -74.9531 27.3906 -72.918 26.0469 -68.2773 curveto
+ 26.0469 -68.2773 24.8398 -63.4063 24.3086 -65.375 curveto
+ closepath
+fill
+
+
+% 294 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 31.2734 -71.7617 moveto
+ 31.2734 -71.7617 29.625 -69.9805 29.2422 -68.2773 curveto
+ 29.2422 -68.2773 28.0313 -63.3438 30.1133 -65.957 curveto
+ 30.1133 -65.957 30.0117 -68.6406 32.7227 -70.8906 curveto
+ 32.7227 -70.8906 31.0977 -70.2383 31.2734 -71.7617 curveto
+ closepath
+fill
+
+
+% 295 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 33.0156 -70.0195 moveto
+ 33.0156 -70.0195 31.9883 -64.5547 31.8516 -64.2148 curveto
+ 31.8516 -64.2148 31.1602 -63.2148 32.1445 -64.2148 curveto
+ 32.1445 -64.2148 34.8633 -70.3672 36.207 -72.3398 curveto
+ 36.207 -72.3398 33.5859 -69.5352 33.0156 -70.0195 curveto
+ closepath
+fill
+
+
+% 296 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 35.0469 -64.7969 moveto
+ 35.0469 -64.7969 31.2227 -57.6602 38.2383 -65.957 curveto
+ 38.2383 -65.957 34.6719 -62.7656 35.0469 -64.7969 curveto
+ closepath
+fill
+
+
+% 297 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ 39.9805 -60.1523 moveto
+ 39.9805 -60.1523 38.3125 -54.1484 37.3672 -54.3477 curveto
+ 37.3672 -54.3477 34.8633 -51.3398 37.0781 -54.6367 curveto
+ 37.0781 -54.6367 38.8867 -57.7852 38.8203 -61.0234 curveto
+ 38.8203 -61.0234 38.8867 -57.8516 39.9805 -60.1523 curveto
+ closepath
+fill
+
+
+% 298 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -65.668 -56.3789 moveto
+ -65.668 -56.3789 -61.7773 -53.3164 -61.0234 -52.3164 curveto
+ -61.0234 -52.3164 -65.2891 -58.1055 -65.375 -60.4414 curveto
+ -65.375 -60.4414 -66.0859 -57.9453 -65.668 -56.3789 curveto
+ closepath
+fill
+
+
+% 299 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -67.4063 -49.4141 moveto
+ -67.4063 -49.4141 -60.6602 -44.6953 -59.5703 -42.4453 curveto
+ -59.5703 -42.4453 -68.0039 -51.7188 -67.9883 -53.1875 curveto
+ -67.9883 -53.1875 -68.1641 -50.2852 -67.4063 -49.4141 curveto
+ closepath
+fill
+
+
+% 300 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -72.9219 -0.363281 moveto
+ -72.9219 -0.363281 -68.9609 2.23438 -68.5703 1.66797 curveto
+ -68.5703 1.66797 -71.832 -0.476563 -72.6328 -3.26563 curveto
+ -72.6328 -3.26563 -72.1523 -0.320313 -72.9219 -0.363281 curveto
+ closepath
+fill
+
+
+% 301 pathnumber
+% filledpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.031926 setlinewidth
+ 0.0 0.0 0.0 0.2 setcmykcolor
+() p2esetcolorname
+newpath
+ -75.5352 -25.9023 moveto
+ -70.0195 -22.1289 lineto
+ -70.0195 -22.1289 -75.9844 -27.6172 -76.1133 -28.8047 curveto
+ -75.5352 -25.9023 lineto
+ closepath
+fill
+
+
+% 302 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 49.2695 -18.9375 moveto
+ 42.3008 -20.3906 lineto
+stroke
+
+
+% 303 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 33.3047 -70.6016 moveto
+ 33.3047 -70.6016 33.3633 -69.4375 36.207 -72.9219 curveto
+stroke
+
+
+% 304 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 31.5625 -72.0508 moveto
+ 31.5625 -72.0508 30.8086 -70.0781 33.0156 -71.4727 curveto
+stroke
+
+
+% 305 pathnumber
+% strokedpath
+ 1 setlinecap
+ 10.0 setmiterlimit
+ 0 setlinejoin
+ [ ] 0.0 setdash
+ 0.31926 setlinewidth
+ 0.0 0.0 0.0 1.0 setcmykcolor
+() p2esetcolorname
+newpath
+ 14.1484 -74.9531 moveto
+ 14.1484 -74.9531 13.7266 -71.3555 17.3398 -75.5352 curveto
+stroke
+restore %}
+grestore %}
+ showpage
+%%>>
+%%Page: 1 1
+% normal end reached by pstoedit.pro
+%%Trailer
+%%Pages: 1
+%%EOF \ No newline at end of file
diff --git a/graphics/pstricks/contrib/pst-mirror/doc/createEPS/tiger.eps b/graphics/pstricks/contrib/pst-mirror/doc/createEPS/tiger.eps
new file mode 100644
index 0000000000..5588d5236b
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-mirror/doc/createEPS/tiger.eps
@@ -0,0 +1,2746 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%BoundingBox: 1 150 611 792
+/InitDictCount countdictstack def
+gsave
+save
+mark
+newpath
+/showpage {} def
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: Adobe Illustrator(TM) 1.2d4
+%%For: OpenWindows Version 2
+%%Title: tiger.eps
+%%CreationDate: 4/12/90 3:20 AM
+%%DocumentProcSets: Adobe_Illustrator_1.2d1 0 0
+%%DocumentSuppliedProcSets: Adobe_Illustrator_1.2d1 0 0
+%%BoundingBox: 22 171 567 738
+%%EndComments
+
+%%BeginProcSet:Adobe_Illustrator_1.2d1 0 0
+
+/Adobe_Illustrator_1.2d1 dup 100 dict def load begin
+% definition operators
+/bdef {bind def} bind def
+/ldef {load def} bdef
+/xdef {exch def} bdef
+% graphic state operators
+/_K { 3 index add neg dup 0 lt {pop 0} if 3 1 roll } bdef
+/_k /setcmybcolor where {
+ /setcmybcolor get
+} {
+ { 1 sub 4 1 roll _K _K _K setrgbcolor pop } bind
+} ifelse def
+/g {/_b xdef /p {_b setgray} def} bdef
+/G {/_B xdef /P {_B setgray} def} bdef
+/k {/_b xdef /_y xdef /_m xdef /_c xdef /p {_c _m _y _b _k} def} bdef
+/K {/_B xdef /_Y xdef /_M xdef /_C xdef /P {_C _M _Y _B _k} def} bdef
+/d /setdash ldef
+/_i currentflat def
+/i {dup 0 eq {pop _i} if setflat} bdef
+/j /setlinejoin ldef
+/J /setlinecap ldef
+/M /setmiterlimit ldef
+/w /setlinewidth ldef
+% path construction operators
+/_R {.25 sub round .25 add} bdef
+/_r {transform _R exch _R exch itransform} bdef
+/c {_r curveto} bdef
+/C /c ldef
+/v {currentpoint 6 2 roll _r curveto} bdef
+/V /v ldef
+/y {_r 2 copy curveto} bdef
+/Y /y ldef
+/l {_r lineto} bdef
+/L /l ldef
+/m {_r moveto} bdef
+% path painting operators
+/n /newpath ldef
+/N /n ldef
+/F {p fill} bdef
+/f {closepath F} bdef
+/S {P stroke} bdef
+/s {closepath S} bdef
+/B {gsave F grestore S} bdef
+/b {closepath B} bdef
+end
+%%EndProcSet
+%%EndProlog
+
+%%Page: 1 1
+
+Adobe_Illustrator_1.2d1 begin
+
+.8 setgray
+%clippath fill
+-110 -300 translate
+1.1 dup scale
+
+0 g
+0 G
+0 i
+0 J
+0 j
+0.172 w
+10 M
+[]0 d
+0 0 0 0 k
+
+177.696 715.715 m
+177.797 713.821 176.973 713.84 v
+176.149 713.859 159.695 761.934 139.167 759.691 C
+156.95 767.044 177.696 715.715 V
+b
+181.226 718.738 m
+180.677 716.922 179.908 717.221 v
+179.14 717.519 180.023 768.325 159.957 773.199 C
+179.18 774.063 181.226 718.738 V
+b
+208.716 676.41 m
+210.352 675.45 209.882 674.773 v
+209.411 674.096 160.237 686.898 150.782 668.541 C
+154.461 687.428 208.716 676.41 V
+b
+205.907 666.199 m
+207.763 665.803 207.529 665.012 v
+207.296 664.221 156.593 660.879 153.403 640.478 C
+150.945 659.563 205.907 666.199 V
+b
+201.696 671.724 m
+203.474 671.061 203.128 670.313 v
+202.782 669.565 152.134 673.654 146.002 653.936 C
+146.354 673.175 201.696 671.724 V
+b
+190.991 689.928 m
+192.299 688.554 191.66 688.033 v
+191.021 687.512 147.278 713.366 133.131 698.324 C
+141.872 715.467 190.991 689.928 V
+b
+183.446 685.737 m
+184.902 684.52 184.326 683.929 v
+183.75 683.339 137.362 704.078 125.008 687.531 C
+131.753 705.553 183.446 685.737 V
+b
+180.846 681.665 m
+182.454 680.657 181.964 679.994 v
+181.474 679.331 132.692 693.554 122.709 675.478 C
+126.934 694.251 180.846 681.665 V
+b
+191.58 681.051 m
+192.702 679.52 192.001 679.085 v
+191.3 678.65 151.231 709.898 135.273 696.793 C
+146.138 712.674 191.58 681.051 V
+b
+171.8 710 m
+172.4 708.2 171.6 708 v
+170.8 707.8 142.2 749.8 122.999 742.2 C
+138.2 754 171.8 710 V
+b
+172.495 703.021 m
+173.47 701.392 172.731 701.025 v
+171.993 700.657 135.008 735.501 117.899 723.939 C
+130.196 738.739 172.495 703.021 V
+b
+172.38 698.651 m
+173.502 697.12 172.801 696.685 v
+172.1 696.251 132.031 727.498 116.073 714.393 C
+126.938 730.274 172.38 698.651 V
+b
+0 J 1 w
+170.17 696.935 m
+170.673 690.887 171.661 684.318 173.4 681.199 C
+169.8 668.799 178.6 655.599 V
+178.2 648.399 179.8 645.199 V
+183.8 636.799 188.6 635.999 v
+192.484 635.352 201.207 632.283 211.068 630.879 c
+228.2 616.799 225 603.999 V
+224.6 587.599 221 585.999 V
+232.6 597.199 223 580.399 V
+218.6 561.599 l
+244.2 583.199 228.6 564.799 V
+218.6 538.799 l
+238.2 557.199 231 548.799 V
+227.8 539.999 l
+271 567.199 240.2 537.599 V
+248.2 541.199 252.6 538.399 V
+259.4 539.599 258.6 537.999 V
+237.8 527.599 234.2 509.199 V
+242.6 519.199 239.4 508.399 V
+239.8 496.799 l
+243.8 518.399 243.4 480.799 V
+262.6 498.799 251 477.999 V
+251 461.199 l
+266.2 477.599 259.8 464.799 V
+269.8 473.599 265.8 458.399 V
+265 447.999 269.4 459.199 V
+285.4 489.799 279.4 463.599 V
+278.6 444.399 283.4 459.199 V
+283.8 448.799 293 441.599 V
+291.8 492.399 304.6 456.399 V
+308.6 439.999 l
+311.4 449.199 311 454.399 V
+325.8 470.799 319 446.399 V
+334.2 469.199 331 455.999 V
+323.4 439.999 325 435.199 V
+341.8 469.999 343 471.599 V
+341 429.198 351.8 465.199 V
+357.4 453.199 354.6 448.799 V
+362.6 456.799 361.8 459.999 V
+366.4 468.199 369.2 454.599 V
+371 445.199 372.6 448.399 V
+376.6 424.398 377.8 447.199 V
+379.4 460.799 372.2 472.399 V
+373 475.599 370.2 479.599 v
+383.8 457.999 376.6 486.799 V
+387.801 478.799 389.001 478.799 V
+375.4 501.999 384.2 497.199 V
+379 507.599 397.001 495.599 V
+381 511.599 398.601 501.999 V
+406.601 495.599 399.001 505.599 V
+384.6 521.599 406.601 503.599 V
+418.201 487.199 419.001 484.399 V
+409.001 513.599 404.601 516.399 V
+413.001 552.799 454.201 537.199 V
+461.001 519.999 465.401 538.399 V
+478.201 544.799 489.401 517.199 V
+493.401 530.799 492.601 533.599 V
+499.401 532.399 498.601 533.599 V
+511.801 529.199 513.001 529.999 V
+519.801 523.199 520.201 526.799 V
+529.401 523.999 527.401 527.599 V
+536.201 511.999 536.601 508.399 V
+539.001 522.399 l
+541.001 519.599 l
+542.601 527.199 541.801 528.399 v
+541.001 529.599 561.801 521.599 566.601 500.799 C
+568.601 492.399 l
+574.601 507.199 573.001 511.199 V
+578.201 510.399 578.601 505.999 V
+582.601 529.199 577.801 535.199 V
+582.201 535.999 583.401 532.399 V
+583.401 539.599 l
+590.601 538.799 590.601 541.199 V
+595.001 545.199 597.001 540.399 V
+584.601 575.599 603.001 556.399 V
+610.201 545.599 606.601 564.399 v
+603.001 583.199 599.001 584.799 603.801 585.199 C
+604.601 588.799 602.601 590.399 v
+600.601 591.999 603.801 590.399 y
+608.601 586.399 603.401 608.399 V
+609.801 606.799 597.801 635.999 V
+600.601 638.399 596.601 646.799 V
+604.601 642.399 607.401 643.999 V
+607.001 645.599 603.801 649.599 V
+582.201 704.4 602.601 682.399 V
+614.451 668.849 608.051 691.649 V
+598.94 715.659 599.717 719.955 V
+170.17 696.935 l
+b
+0.2 0.55 0.85 0 k
+599.717 719.755 m
+600.345 719.574 602.551 718.45 603.801 716.8 C
+610.601 706 605.401 724.4 V
+596.201 753.2 605.001 742 V
+611.001 734.8 607.801 748.4 v
+603.936 764.827 601.401 771.2 y
+613.001 766.4 586.201 806 V
+595.001 802.4 l
+575.401 842 553.801 847.2 V
+545.801 853.2 l
+584.201 891.2 571.401 928 V
+564.601 933.2 555.001 924 V
+548.601 919.2 542.601 920.8 V
+511.801 919.6 509.801 919.6 v
+507.801 919.6 473.001 956.8 407.401 939.2 C
+402.201 937.2 397.801 938.4 V
+379.4 954.4 330.6 931.6 v
+320.6 929.6 319 929.6 v
+317.4 929.6 314.6 929.6 306.6 923.2 c
+298.6 916.8 298.2 916 296.2 914.4 C
+279.8 903.2 275 902.4 V
+263.4 896 259 886 V
+255.4 884.8 l
+253.8 877.6 253.4 876.4 V
+248.6 872.8 247.8 867.2 V
+239 861.2 239.4 856.8 V
+237.8 851.6 237 846.8 V
+229.8 842 230.6 839.2 V
+223 825.2 224.2 818.4 V
+217.8 818.8 215 816.4 V
+214.2 811.6 212.6 811.2 V
+209.8 810 212.2 806 V
+210.6 803.2 210.2 801.6 V
+211 798.8 206.6 793.2 V
+200.2 774.4 202.2 769.2 V
+202.6 764.4 199.8 762.8 V
+196.2 763.2 204.6 751.2 V
+205.4 750 202.2 747.6 V
+185 744 182.6 727.6 V
+169 712.8 169 707.6 v
+169 705.295 169.271 702.148 169.97 697.535 C
+169.4 689.199 197 688.399 v
+224.6 687.599 599.717 719.755 Y
+b
+184.4 697.4 m
+159.4 736.8 173.8 680.399 Y
+182.6 645.999 312.2 683.599 y
+481.001 714 492.201 718 v
+503.401 722 598.601 715.6 y
+593.001 732.4 L
+528.201 778.8 509.001 755.6 495.401 759.6 c
+481.801 763.6 484.201 754 481.001 753.2 c
+477.801 752.4 438.601 777.2 432.201 776.4 c
+425.801 775.6 400.459 799.351 415.401 767.6 c
+431.401 733.6 357 728.4 340.2 739.6 c
+323.4 750.8 347.4 721.2 Y
+365.8 701.2 331.4 718 y
+297 730.8 273 705.2 269.8 704.4 c
+266.6 703.6 261.8 700.4 261 706.8 c
+260.2 713.2 252.69 729.901 221 703.6 c
+201 686.999 187.2 709 Y
+184.4 697.4 L
+f
+0.09 0.5 0.772 0 k
+433.51 774.654 m
+427.11 773.854 401.743 797.593 416.71 765.854 c
+433.31 730.654 358.31 726.654 341.51 737.854 c
+324.709 749.054 348.71 719.454 Y
+367.11 699.454 332.709 716.254 y
+298.309 729.054 274.309 703.454 271.109 702.654 c
+267.909 701.854 263.109 698.654 262.309 705.054 c
+261.509 711.454 254.13 727.988 222.309 701.854 c
+201.073 684.508 187.582 705.963 Y
+184.382 695.854 L
+159.382 735.654 174.454 677.345 Y
+183.255 642.944 313.509 681.854 y
+482.31 712.254 493.51 716.254 v
+504.71 720.254 599.038 713.927 y
+593.51 731.236 L
+528.71 777.636 510.31 753.854 496.71 757.854 c
+483.11 761.854 485.51 752.254 482.31 751.454 c
+479.11 750.654 439.91 775.454 433.51 774.654 c
+f
+0.081 0.45 0.695 0 k
+434.819 772.909 m
+428.419 772.109 403.685 796.138 418.019 764.109 c
+434.219 727.908 359.619 724.908 342.819 736.108 c
+326.019 747.308 350.019 717.708 Y
+368.419 697.708 334.019 714.508 y
+299.619 727.308 275.618 701.708 272.418 700.908 c
+269.218 700.108 264.418 696.908 263.618 703.308 c
+262.818 709.708 255.57 726.075 223.618 700.108 c
+201.145 682.017 187.964 702.926 Y
+184.364 694.308 L
+160.564 733.308 175.109 674.29 Y
+183.909 639.89 314.819 680.108 y
+483.619 710.508 494.819 714.508 v
+506.019 718.508 599.474 712.254 y
+594.02 730.072 L
+529.219 776.472 511.619 752.109 498.019 756.109 c
+484.419 760.109 486.819 750.509 483.619 749.708 c
+480.419 748.908 441.219 773.709 434.819 772.909 c
+f
+0.072 0.4 0.618 0 k
+436.128 771.163 m
+429.728 770.363 404.999 794.395 419.328 762.363 c
+436.128 724.807 360.394 723.518 344.128 734.363 c
+327.328 745.563 351.328 715.963 Y
+369.728 695.963 335.328 712.763 y
+300.928 725.563 276.928 699.963 273.728 699.163 c
+270.528 698.363 265.728 695.163 264.928 701.563 c
+264.128 707.963 257.011 724.161 224.927 698.363 c
+201.218 679.526 188.345 699.89 Y
+184.345 692.763 L
+162.545 729.563 175.764 671.235 Y
+184.564 636.835 316.128 678.363 y
+484.928 708.763 496.129 712.763 v
+507.329 716.763 599.911 710.581 y
+594.529 728.908 L
+529.729 775.309 512.929 750.363 499.329 754.363 c
+485.728 758.363 488.128 748.763 484.928 747.963 c
+481.728 747.163 442.528 771.963 436.128 771.163 c
+f
+0.063 0.35 0.54 0 k
+437.438 769.417 m
+431.037 768.617 406.814 792.871 420.637 760.617 c
+437.438 721.417 362.237 721.417 345.437 732.617 c
+328.637 743.817 352.637 714.217 Y
+371.037 694.217 336.637 711.017 y
+302.237 723.817 278.237 698.217 275.037 697.417 c
+271.837 696.617 267.037 693.417 266.237 699.817 c
+265.437 706.217 258.452 722.248 226.237 696.617 c
+201.291 677.035 188.727 696.854 Y
+184.327 691.217 L
+164.527 726.018 176.418 668.181 Y
+185.218 633.78 317.437 676.617 y
+486.238 707.017 497.438 711.017 v
+508.638 715.017 600.347 708.908 y
+595.038 727.745 L
+530.238 774.145 514.238 748.617 500.638 752.617 c
+487.038 756.617 489.438 747.017 486.238 746.217 c
+483.038 745.417 443.838 770.217 437.438 769.417 c
+f
+0.054 0.3 0.463 0 k
+438.747 767.672 m
+432.347 766.872 406.383 790.323 421.947 758.872 c
+441.147 720.072 363.546 719.672 346.746 730.872 c
+329.946 742.072 353.946 712.472 Y
+372.346 692.472 337.946 709.272 y
+303.546 722.072 279.546 696.472 276.346 695.672 c
+273.146 694.872 268.346 691.672 267.546 698.072 c
+266.746 704.472 259.892 720.335 227.546 694.872 c
+201.364 674.544 189.109 693.817 Y
+184.309 689.672 L
+166.309 722.872 177.073 665.126 Y
+185.873 630.726 318.746 674.872 y
+487.547 705.272 498.747 709.272 v
+509.947 713.272 600.783 707.236 y
+595.547 726.581 L
+530.747 772.981 515.547 746.872 501.947 750.872 c
+488.347 754.872 490.747 745.272 487.547 744.472 c
+484.347 743.672 445.147 768.472 438.747 767.672 c
+f
+0.045 0.25 0.386 0 k
+440.056 765.927 m
+433.655 765.127 407.313 788.387 423.255 757.127 c
+443.656 717.126 364.855 717.926 348.055 729.126 c
+331.255 740.326 355.255 710.726 Y
+373.655 690.726 339.255 707.526 y
+304.855 720.326 280.855 694.726 277.655 693.926 c
+274.455 693.126 269.655 689.926 268.855 696.326 c
+268.055 702.726 261.332 718.422 228.855 693.126 c
+201.436 672.053 189.491 690.781 Y
+184.291 688.126 L
+168.291 718.326 177.727 662.071 Y
+186.527 627.671 320.055 673.126 y
+488.856 703.526 500.056 707.526 v
+511.256 711.526 601.22 705.563 y
+596.056 725.417 L
+531.256 771.817 516.856 745.126 503.256 749.126 c
+489.656 753.127 492.056 743.526 488.856 742.726 c
+485.656 741.926 446.456 766.727 440.056 765.927 c
+f
+0.036 0.2 0.309 0 k
+441.365 764.181 m
+434.965 763.381 407.523 786.056 424.565 755.381 c
+446.565 715.781 366.164 716.181 349.364 727.381 c
+332.564 738.581 356.564 708.981 Y
+374.964 688.981 340.564 705.781 y
+306.164 718.581 282.164 692.981 278.964 692.181 c
+275.764 691.381 270.964 688.181 270.164 694.581 c
+269.364 700.981 262.773 716.508 230.164 691.381 c
+201.509 669.562 189.873 687.744 Y
+184.273 686.581 L
+169.872 714.981 178.382 659.017 Y
+187.182 624.616 321.364 671.381 y
+490.165 701.781 501.365 705.781 v
+512.565 709.781 601.656 703.89 y
+596.565 724.254 L
+531.765 770.654 518.165 743.381 504.565 747.381 c
+490.965 751.381 493.365 741.781 490.165 740.981 c
+486.965 740.181 447.765 764.981 441.365 764.181 c
+f
+0.027 0.15 0.231 0 k
+442.674 762.435 m
+436.274 761.635 408.832 784.311 425.874 753.635 c
+447.874 714.035 367.474 714.435 350.674 725.635 c
+333.874 736.835 357.874 707.235 Y
+376.274 687.235 341.874 704.035 y
+307.473 716.835 283.473 691.235 280.273 690.435 c
+277.073 689.635 272.273 686.435 271.473 692.835 c
+270.673 699.235 264.214 714.595 231.473 689.635 c
+201.582 667.071 190.255 684.707 Y
+184.255 685.035 L
+170.654 711.436 179.037 655.962 Y
+187.837 621.562 322.673 669.635 y
+491.474 700.035 502.674 704.035 v
+513.874 708.035 602.093 702.217 y
+597.075 723.09 L
+532.274 769.49 519.474 741.635 505.874 745.635 c
+492.274 749.635 494.674 740.035 491.474 739.235 c
+488.274 738.435 449.074 763.235 442.674 762.435 c
+f
+0.018 0.1 0.154 0 k
+443.983 760.69 m
+437.583 759.89 410.529 782.777 427.183 751.89 c
+449.183 711.09 368.783 712.69 351.983 723.89 c
+335.183 735.09 359.183 705.49 Y
+377.583 685.49 343.183 702.29 y
+308.783 715.09 284.783 689.49 281.583 688.69 c
+278.382 687.89 273.582 684.69 272.782 691.09 c
+271.982 697.49 265.654 712.682 232.782 687.89 c
+201.655 664.58 190.637 681.671 Y
+184.236 683.49 L
+171.236 707.49 179.691 652.907 Y
+188.491 618.507 323.983 667.89 y
+492.783 698.29 503.983 702.29 v
+515.183 706.29 602.529 700.544 y
+597.583 721.926 L
+532.783 768.327 520.783 739.89 507.183 743.89 c
+493.583 747.89 495.983 738.29 492.783 737.49 c
+489.583 736.69 450.383 761.49 443.983 760.69 c
+f
+0.009 0.05 0.077 0 k
+445.292 758.945 m
+438.892 758.145 412.917 781.589 428.492 750.145 c
+449.692 707.344 370.092 710.944 353.292 722.144 c
+336.492 733.344 360.492 703.744 Y
+378.892 683.744 344.492 700.544 y
+310.092 713.344 286.092 687.744 282.892 686.944 c
+279.692 686.144 274.892 682.944 274.092 689.344 c
+273.292 695.744 267.095 710.768 234.092 686.144 c
+201.727 662.089 191.018 678.635 Y
+184.218 681.944 L
+171.418 705.144 180.346 649.853 Y
+189.146 615.453 325.292 666.144 y
+494.093 696.544 505.293 700.544 v
+516.493 704.544 602.965 698.872 y
+598.093 720.763 L
+533.292 767.163 522.093 738.144 508.493 742.144 c
+494.893 746.145 497.293 736.544 494.093 735.744 c
+490.892 734.944 451.692 759.745 445.292 758.945 c
+f
+1 g
+184.2 680.399 m
+171.4 702.4 181 646.799 Y
+189.8 612.399 326.6 664.399 y
+495.401 694.8 506.601 698.8 v
+517.801 702.8 603.401 697.2 y
+598.601 719.6 L
+533.801 766 523.401 736.4 509.801 740.4 c
+496.201 744.4 498.601 734.8 495.401 734 c
+492.201 733.2 453.001 758 446.601 757.2 c
+440.201 756.4 414.981 780.207 429.801 748.4 c
+452.028 700.693 369.041 710.773 354.6 720.4 c
+337.8 731.6 361.8 702 Y
+380.2 681.999 345.8 698.8 y
+311.4 711.6 287.4 685.999 284.2 685.199 c
+281 684.399 276.2 681.199 275.4 687.599 c
+274.6 694 268.535 708.856 235.4 684.399 c
+201.8 659.599 191.4 675.599 Y
+184.2 680.399 L
+f
+0 g
+225.8 650.399 m
+218.6 638.799 239.4 625.599 V
+240.8 624.199 222.8 628.399 V
+216.6 630.399 215 640.799 V
+210.2 645.199 205.4 650.799 v
+200.6 656.399 225.8 650.399 y
+f
+0.8 g
+365.8 698 m
+383.498 671.179 382.9 666.399 v
+381.6 655.999 381.4 646.399 384.6 642.399 c
+387.801 638.399 396.601 605.199 y
+396.201 603.999 408.601 641.999 V
+420.201 657.999 400.201 676.399 V
+365 705.2 365.8 698 v
+f
+0 g
+1 J 0.1 w
+245.8 623.599 m
+257 616.399 242.6 585.199 V
+249 587.599 l
+248.2 576.399 245 573.999 V
+252.2 577.199 l
+257 569.199 253 564.399 V
+269.8 556.399 269 549.999 V
+275.4 557.999 271.4 564.399 v
+267.4 570.799 260.2 566.799 261 585.199 C
+252.2 581.999 l
+257.8 590.799 257.8 597.199 V
+249.8 594.799 l
+265.269 621.377 254.6 622.799 v
+248.6 623.599 245.8 623.599 Y
+f
+0.8 g
+278.2 606.799 m
+281 611.199 278.2 610.399 v
+275.4 609.599 244.2 594.799 238.2 585.199 C
+272.6 609.599 278.2 606.799 V
+f
+288.6 598.799 m
+291.4 603.199 288.6 602.399 v
+285.8 601.599 254.6 586.799 248.6 577.199 C
+283 601.599 288.6 598.799 V
+f
+301.8 613.999 m
+304.6 618.399 301.8 617.599 v
+299 616.799 267.8 601.999 261.8 592.399 C
+296.2 616.799 301.8 613.999 V
+f
+278.6 570.399 m
+278.6 576.399 275.8 575.599 v
+273 574.799 237 557.199 231 547.599 C
+273 573.199 278.6 570.399 V
+f
+279.8 581.199 m
+281 585.999 278.2 585.199 V
+276.2 585.199 249.8 573.599 243.8 563.999 C
+273.4 585.599 279.8 581.199 V
+f
+265.4 533.599 m
+255.4 525.999 l
+265.8 533.599 269.4 532.399 V
+262.6 521.199 261.8 515.999 V
+272.2 528.799 277.8 528.399 V
+285.4 527.999 285.4 517.199 V
+291 527.599 294.2 527.199 V
+295.4 520.799 294.2 513.999 V
+298.2 521.599 302.2 519.999 V
+308.6 521.999 307.8 510.399 V
+307.8 499.999 307 497.199 V
+312.6 523.599 315 523.999 V
+323 525.199 327.8 516.399 V
+323.8 523.999 328.6 521.999 V
+339.4 520.399 342.6 513.599 V
+335.8 525.599 341.4 522.399 V
+348.2 522.399 349.4 515.999 V
+357.8 494.799 359.8 493.199 V
+352.2 514.799 353.8 514.799 V
+351.8 526.799 357 511.999 V
+353.8 525.999 359.4 525.199 v
+365 524.399 369.4 514.399 377.8 516.799 C
+387.401 511.199 389.401 580.399 V
+265.4 533.599 L
+f
+0 g
+0 J 1 w
+270.2 626.399 m
+285 632.399 325 626.399 V
+332.2 625.999 339 634.799 v
+345.8 643.599 372.6 650.799 379 648.799 C
+388.601 642.399 l
+389.401 641.199 l
+401.801 630.799 402.201 623.199 v
+402.601 615.599 387.801 567.599 378.2 551.599 c
+368.6 535.599 359 523.199 339.8 525.599 C
+319 529.599 293.4 525.599 v
+264.2 527.199 261.4 535.199 v
+258.6 543.199 272.6 558.399 y
+277 566.799 275.8 581.199 v
+274.6 595.599 275 623.599 270.2 626.399 c
+f
+0.1 0.6 0.45 0 k
+292.2 624.399 m
+300.6 605.999 271 540.799 y
+269 539.199 283.66 533.154 293.8 535.599 c
+304.746 538.237 345 533.999 Y
+368.6 549.599 381.4 593.999 y
+391.801 617.999 374.2 621.199 v
+356.6 624.399 292.2 624.399 y
+f
+0.1 0.6 0.45 0.2 k
+290.169 593.503 m
+293.495 606.293 295.079 618.094 292.2 624.399 c
+354.6 617.999 365.8 638.799 v
+370.041 646.674 384.801 615.999 384.4 606.399 c
+321.4 591.999 306.6 603.199 V
+290.169 593.503 L
+f
+0.1 0.6 0.45 0.25 k
+294.6 577.199 m
+296.6 569.999 294.2 565.999 V
+292.6 565.199 291.4 564.799 V
+292.6 561.199 298.6 559.599 V
+300.6 555.199 303 554.799 v
+305.4 554.399 310.2 548.799 314.2 549.999 c
+318.2 551.199 329.4 555.199 y
+335 558.399 343.8 554.799 V
+346.175 555.601 346.6 559.599 v
+347.1 564.299 350.2 567.999 352.2 569.999 c
+354.2 571.999 363.8 584.799 362.6 585.199 c
+361.4 585.599 294.6 577.199 Y
+f
+0 0.55 0.5 0 k
+290.2 625.599 m
+287.4 603.199 290.6 594.799 v
+293.8 586.399 293 584.399 292.2 580.399 c
+291.4 576.399 295.8 566.399 301.4 560.399 C
+313.4 558.799 l
+328.6 562.399 337.8 559.599 V
+346.794 558.256 350.2 573.199 V
+355 579.599 362.2 582.399 v
+369.4 585.199 376.6 626.799 372.6 634.799 c
+368.6 642.799 354.2 647.199 338.2 631.599 c
+322.2 615.999 320.2 632.799 290.2 625.599 C
+b
+0 0 0.2 0 k
+0.5 w
+291.8 550.799 m
+291 552.799 286.6 553.199 V
+264.2 556.799 255.8 569.199 V
+249 574.799 253.4 563.199 V
+263.8 542.799 270.6 539.999 V
+287 535.999 291.8 550.799 V
+b
+0 0.55 0.5 0.2 k
+1 w
+371.742 614.771 m
+372.401 622.677 374.354 631.291 372.6 634.799 c
+366.154 647.693 349.181 642.305 338.2 631.599 c
+322.2 615.999 320.2 632.799 290.2 625.599 C
+288.455 611.636 289.295 601.624 v
+326.6 613.199 327.4 607.599 V
+329 610.799 338.2 610.799 v
+347.4 610.799 370.142 611.971 371.742 614.771 C
+f
+0 g
+0 0.55 0.5 0.35 K
+2 w
+328.6 624.799 m
+333.4 619.999 329.8 610.399 V
+315.4 594.399 317.4 580.399 v
+S
+0 0 0.2 0 k
+0 G
+0.5 w
+280.6 539.999 m
+276.2 552.799 285 545.999 V
+289.8 543.999 288.6 542.399 v
+287.4 540.799 281.8 536.799 280.6 539.999 C
+b
+285.64 538.799 m
+282.12 549.039 289.16 543.599 V
+293.581 541.151 292.04 540.719 v
+287.48 539.439 292.04 536.879 285.64 538.799 C
+b
+290.44 538.799 m
+286.92 549.039 293.96 543.599 V
+298.335 541.289 296.84 540.719 v
+293.48 539.439 296.84 536.879 290.44 538.799 C
+b
+297.04 538.599 m
+293.52 548.839 300.56 543.399 V
+304.943 541.067 303.441 540.519 v
+300.48 539.439 303.441 536.679 297.04 538.599 C
+b
+303.52 538.679 m
+300 548.919 307.041 543.479 V
+310.881 541.879 309.921 540.599 v
+308.961 539.319 309.921 536.759 303.52 538.679 C
+b
+310.2 537.999 m
+305.4 550.399 314.6 543.999 V
+319.4 541.999 318.2 540.399 v
+317 538.799 318.2 535.599 310.2 537.999 C
+b
+0 g
+0.1 0.6 0.45 0.25 K
+2 w
+281.8 555.199 m
+295 557.999 301 554.799 V
+307 553.599 308.2 553.999 v
+309.4 554.399 312.6 554.799 y
+S
+315.8 546.399 m
+327.8 559.999 339.8 555.599 v
+346.816 553.026 345.8 556.399 346.6 559.199 c
+347.4 561.999 347.6 566.199 352.6 569.199 c
+S
+0 0 0.2 0 k
+0 G
+0.5 w
+333 562.399 m
+329 573.199 326.2 560.399 v
+323.4 547.599 320.2 543.999 318.6 541.199 C
+318.6 535.999 327 536.399 V
+337.8 536.799 338.2 539.599 v
+338.6 542.399 337 553.999 333 562.399 C
+b
+0 g
+0.1 0.6 0.45 0.25 K
+2 w
+347 555.199 m
+350.6 557.599 353 556.399 v
+S
+353.5 571.599 m
+356.4 576.499 361.2 577.299 v
+S
+0.7 g
+0 G
+1 w
+274.2 534.799 m
+292.2 531.599 296.6 533.199 V
+305.4 533.199 297 531.199 V
+284.2 531.199 276.2 532.399 V
+264.6 537.999 274.2 534.799 V
+f
+0 0 0.2 0 k
+0.5 w
+288.2 627.999 m
+305.8 627.999 307.8 627.199 V
+315 596.399 311.4 588.799 V
+310.2 585.999 307.4 591.599 V
+289 624.399 285.8 626.399 v
+282.6 628.399 287 627.999 288.2 627.999 C
+b
+211.1 630.699 m
+220 628.999 232.6 626.399 V
+237.4 603.999 240.6 599.199 v
+243.8 594.399 240.2 594.399 236.6 597.199 c
+233 599.999 218.2 613.999 216.2 618.399 c
+214.2 622.799 211.1 630.699 y
+b
+232.961 626.182 m
+238.761 624.634 239.77 622.419 v
+240.778 620.205 238.568 616.908 y
+237.568 613.603 236.366 615.765 v
+235.164 617.928 232.292 625.588 232.961 626.182 c
+b
+0 g
+233 626.399 m
+236.6 621.199 240.2 621.199 v
+243.8 621.199 244.182 621.612 247 620.999 c
+251.6 619.999 251.2 621.999 257.8 620.799 c
+260.44 620.319 263 621.199 265.8 619.999 c
+268.6 618.799 271.8 619.599 273 621.599 c
+274.2 623.599 279 627.799 Y
+266.2 625.999 263.4 625.199 V
+241 623.999 233 626.399 V
+f
+0 0 0.2 0 k
+277.6 626.199 m
+271.15 622.699 270.75 620.299 v
+270.35 617.899 276 614.199 y
+278.75 609.599 279.35 611.999 v
+279.95 614.399 278.4 625.799 277.6 626.199 c
+b
+240.115 620.735 m
+247.122 609.547 247.339 620.758 V
+247.896 622.016 246.136 622.038 v
+240.061 622.114 241.582 626.216 240.115 620.735 C
+b
+247.293 620.486 m
+255.214 609.299 254.578 620.579 V
+254.585 620.911 252.832 621.064 v
+248.085 621.478 248.43 625.996 247.293 620.486 C
+b
+254.506 620.478 m
+262.466 609.85 261.797 619.516 V
+261.916 620.749 260.262 621.05 v
+256.37 621.756 256.159 625.005 254.506 620.478 C
+b
+261.382 620.398 m
+269.282 608.837 269.63 618.618 V
+271.274 619.996 269.528 620.218 v
+263.71 620.958 264.508 625.412 261.382 620.398 C
+b
+0 0 0.2 0.1 k
+225.208 616.868 m
+217.55 618.399 l
+214.95 623.399 212.85 629.549 y
+219.2 628.549 231.7 625.749 V
+232.576 622.431 234.048 616.636 v
+225.208 616.868 l
+f
+290.276 621.53 m
+288.61 624.036 287.293 625.794 286.643 626.2 c
+283.63 628.083 287.773 627.706 288.902 627.706 C
+305.473 627.706 307.356 626.953 V
+307.88 624.711 308.564 621.32 V
+298.476 623.33 290.276 621.53 V
+f
+0.2 0.55 0.85 0 k
+1 w
+343.88 759.679 m
+371.601 755.719 397.121 791.359 398.881 801.04 c
+400.641 810.72 390.521 822.6 Y
+391.841 825.68 387.001 839.76 381.721 849 c
+376.441 858.24 360.54 857.266 343 858.24 c
+327.16 859.12 308.68 835.8 307.36 834.04 c
+306.04 832.28 312.2 793.999 313.52 788.279 c
+314.84 782.559 312.2 756.159 y
+346.44 765.259 316.16 763.639 343.88 759.679 c
+f
+0.08 0.44 0.68 0 k
+308.088 833.392 m
+306.792 831.664 312.84 794.079 314.136 788.463 c
+315.432 782.847 312.84 756.927 y
+345.512 765.807 316.728 764.271 343.944 760.383 c
+371.161 756.495 396.217 791.487 397.945 800.992 c
+399.673 810.496 389.737 822.16 Y
+391.033 825.184 386.281 839.008 381.097 848.08 c
+375.913 857.152 360.302 856.195 343.08 857.152 c
+327.528 858.016 309.384 835.12 308.088 833.392 c
+f
+0.06 0.33 0.51 0 k
+308.816 832.744 m
+307.544 831.048 313.48 794.159 314.752 788.647 c
+316.024 783.135 313.48 757.695 y
+344.884 766.855 317.296 764.903 344.008 761.087 c
+370.721 757.271 395.313 791.615 397.009 800.944 c
+398.705 810.272 388.953 821.72 Y
+390.225 824.688 385.561 838.256 380.473 847.16 c
+375.385 856.064 360.063 855.125 343.16 856.064 c
+327.896 856.912 310.088 834.44 308.816 832.744 c
+f
+0.04 0.22 0.34 0 k
+309.544 832.096 m
+308.296 830.432 314.12 794.239 315.368 788.831 c
+316.616 783.423 314.12 758.463 y
+343.556 767.503 317.864 765.535 344.072 761.791 c
+370.281 758.047 394.409 791.743 396.073 800.895 c
+397.737 810.048 388.169 821.28 Y
+389.417 824.192 384.841 837.504 379.849 846.24 c
+374.857 854.976 359.824 854.055 343.24 854.976 c
+328.264 855.808 310.792 833.76 309.544 832.096 c
+f
+0.02 0.11 0.17 0 k
+310.272 831.448 m
+309.048 829.816 314.76 794.319 315.984 789.015 c
+317.208 783.711 314.76 759.231 y
+342.628 768.151 318.432 766.167 344.136 762.495 c
+369.841 758.823 393.505 791.871 395.137 800.848 c
+396.769 809.824 387.385 820.84 Y
+388.609 823.696 384.121 836.752 379.225 845.32 c
+374.329 853.888 359.585 852.985 343.32 853.888 c
+328.632 854.704 311.496 833.08 310.272 831.448 c
+f
+1 g
+344.2 763.2 m
+369.4 759.6 392.601 792 394.201 800.8 c
+395.801 809.6 386.601 820.4 Y
+387.801 823.2 383.4 836 378.6 844.4 c
+373.8 852.8 359.346 851.914 343.4 852.8 c
+329 853.6 312.2 832.4 311 830.8 c
+309.8 829.2 315.4 794.4 316.6 789.2 c
+317.8 784 315.4 760 y
+340.9 768.6 319 766.8 344.2 763.2 c
+f
+0.8 g
+390.601 797.2 m
+362.8 789.6 351.2 791.2 V
+335.4 797.8 326.6 776 V
+323 768.8 321 766.8 v
+319 764.8 390.601 797.2 Y
+f
+0 g
+394.401 799.4 m
+365.4 787.2 355.4 787.6 v
+339 792.2 330.6 777.6 V
+322.2 768.4 319 766.8 V
+318.6 765.2 325 769.2 V
+335.4 764 l
+350.2 754.4 359.8 770.4 V
+363.8 781.6 363.8 783.6 v
+363.8 785.6 385 791.2 386.601 791.6 c
+388.201 792 394.801 796.2 394.401 799.4 C
+f
+0.4 0.2 0.8 0 k
+347 763.486 m
+340.128 763.486 331.755 767.351 331.755 773.6 c
+331.755 779.848 340.128 786.113 347 786.113 c
+353.874 786.113 359.446 781.048 359.446 774.8 c
+359.446 768.551 353.874 763.486 347 763.486 c
+f
+0.4 0.2 0.8 0.2 k
+343.377 780.17 m
+338.531 779.448 333.442 777.945 333.514 778.161 c
+335.054 782.78 341.415 786.113 347 786.113 c
+351.296 786.113 355.084 784.135 357.32 781.125 c
+352.004 781.455 343.377 780.17 v
+f
+1 g
+355.4 780.4 m
+351 783.6 351 781.4 V
+354.6 777 355.4 780.4 V
+f
+0 g
+345.4 772.274 m
+342.901 772.274 340.875 774.3 340.875 776.8 c
+340.875 779.299 342.901 781.325 345.4 781.325 c
+347.9 781.325 349.926 779.299 349.926 776.8 c
+349.926 774.3 347.9 772.274 345.4 772.274 c
+f
+0.2 0.55 0.85 0 k
+241.4 785.6 m
+238.2 806.8 240.6 811.2 V
+251.4 821.2 251 824.8 V
+250.6 842.8 249.4 843.6 v
+248.2 844.4 240.6 850.4 234.6 844 C
+224.2 826 225 819.6 V
+225 817.6 l
+217.4 818 215.8 816 V
+214.6 810.8 213.4 810.4 V
+210.6 808 212.6 805.2 V
+210.6 802.8 211 798.8 V
+218.6 794.8 L
+220.6 780.4 231.4 775.2 v
+236.236 772.871 239.4 779.6 241.4 785.6 c
+f
+1 g
+240.4 787.44 m
+237.52 806.52 239.68 810.48 V
+249.4 819.48 249.04 822.72 V
+248.68 838.92 247.6 839.64 v
+246.52 840.36 239.68 845.76 234.28 840 C
+224.92 823.8 225.64 818.04 V
+225.64 816.24 l
+218.8 816.6 217.36 814.8 V
+216.28 810.12 215.2 809.76 V
+212.68 807.6 214.48 805.08 V
+212.68 802.92 213.04 799.32 V
+219.88 795.72 L
+221.68 782.76 231.4 778.08 v
+235.752 775.985 238.6 782.04 240.4 787.44 c
+f
+0.075 0.412 0.637 0 k
+248.95 842.61 m
+247.86 843.47 240.37 849.24 234.52 843 C
+224.38 825.45 225.16 819.21 V
+225.16 817.26 l
+217.75 817.65 216.19 815.7 V
+215.02 810.63 213.85 810.24 V
+211.12 807.9 213.07 805.17 V
+211.12 802.83 211.51 798.93 V
+218.92 795.03 L
+220.87 780.99 231.4 775.92 v
+236.114 773.65 239.2 780.21 241.15 786.06 c
+238.03 806.73 240.37 811.02 V
+250.9 820.77 250.51 824.28 V
+250.12 841.83 248.95 842.61 V
+f
+0.05 0.275 0.425 0 k
+248.5 841.62 m
+247.52 842.54 240.14 848.08 234.44 842 C
+224.56 824.9 225.32 818.82 V
+225.32 816.92 l
+218.1 817.3 216.58 815.4 V
+215.44 810.46 214.3 810.08 V
+211.64 807.8 213.54 805.14 V
+211.64 802.86 212.02 799.06 V
+219.24 795.26 L
+221.14 781.58 231.4 776.64 v
+235.994 774.428 239 780.82 240.9 786.52 c
+237.86 806.66 240.14 810.84 V
+250.4 820.34 250.02 823.76 V
+249.64 840.86 248.5 841.62 V
+f
+0.025 0.137 0.212 0 k
+248.05 840.63 m
+247.18 841.61 239.91 846.92 234.36 841 C
+224.74 824.35 225.48 818.43 V
+225.48 816.58 l
+218.45 816.95 216.97 815.1 V
+215.86 810.29 214.75 809.92 V
+212.16 807.7 214.01 805.11 V
+212.16 802.89 212.53 799.19 V
+219.56 795.49 L
+221.41 782.17 231.4 777.36 v
+235.873 775.206 238.8 781.43 240.65 786.98 c
+237.69 806.59 239.91 810.66 V
+249.9 819.91 249.53 823.24 V
+249.16 839.89 248.05 840.63 V
+f
+1 g
+240.4 787.54 m
+237.52 806.52 239.68 810.48 V
+249.4 819.48 249.04 822.72 V
+248.68 838.92 247.6 839.64 V
+246.84 840.68 239.68 845.76 234.28 840 C
+224.92 823.8 225.64 818.04 V
+225.64 816.24 l
+218.8 816.6 217.36 814.8 V
+216.28 810.12 215.2 809.76 V
+212.68 807.6 214.48 805.08 V
+212.68 802.92 213.04 799.32 V
+219.88 795.72 L
+221.68 782.76 231.4 778.08 v
+235.752 775.985 238.6 782.14 240.4 787.54 c
+f
+0.8 g
+237.3 793.8 m
+215.7 804 214.8 804.8 V
+223.9 796.6 224.7 796.6 v
+225.5 796.6 237.3 793.8 Y
+f
+0 g
+220.2 800 m
+238.6 796.4 238.6 792 v
+238.6 789.088 238.357 775.669 233 777.2 c
+224.6 779.6 228.2 794 220.2 800 c
+f
+0.4 0.2 0.8 0 k
+228.6 796.2 m
+237.578 794.726 238.6 792 v
+239.2 790.4 239.863 782.092 234.4 781 c
+229.848 780.089 227.618 790.31 228.6 796.2 c
+f
+0 g
+314.595 753.651 m
+314.098 755.393 315.409 755.262 317.2 755.8 c
+319.2 756.4 331.4 760.2 332.2 762.8 c
+333 765.4 346.2 761 Y
+348 760.2 352.4 757.6 Y
+357.2 756.4 363.8 756 Y
+366.2 755 369.6 752.2 Y
+384.2 742 396.601 749.2 Y
+416.601 755.8 410.601 773 Y
+407.601 782 410.801 785.4 Y
+411.001 789.2 418.201 782.8 Y
+420.801 778.6 421.601 773.6 Y
+429.601 762.4 426.201 780.2 Y
+426.401 781.2 423.601 784.8 423.601 786 c
+423.601 787.2 421.801 790.6 Y
+418.801 794 421.201 801 Y
+423.001 814.8 420.801 813 Y
+419.601 814.8 410.401 804.8 Y
+408.201 801.4 402.201 799.8 Y
+399.401 798 396.001 799.4 Y
+393.401 799.8 387.801 792.8 Y
+390.601 793 393.001 788.6 395.401 788.4 c
+397.801 788.2 399.601 790.8 401.201 791.4 c
+402.801 792 405.601 786.2 Y
+406.001 783.6 400.401 778.8 Y
+400.001 774.2 398.401 775.8 Y
+395.401 776.4 394.201 772.6 393.201 768 c
+392.201 763.4 388.001 763 y
+386.401 755.6 385.2 758.6 Y
+385 764.2 379 758.4 Y
+377.8 756.4 373.2 758.6 Y
+366.4 760.6 368.8 762.6 Y
+370.6 764.8 381.8 762.6 Y
+384 764.2 376 768.2 Y
+375.4 770 376.4 774.4 Y
+377.6 777.6 384.4 783.2 Y
+393.801 784.4 391.001 786 Y
+384.801 791.2 379 783.6 Y
+376.8 777.4 359.4 762.4 Y
+354.6 759 357.2 765.8 353.2 762.4 c
+349.2 759 328.6 768 y
+317.038 769.193 314.306 753.451 310.777 756.571 c
+316.195 748.051 314.595 753.651 v
+f
+509.401 920 m
+483.801 912 481.001 893.2 V
+478.601 870.4 499.001 852.8 V
+499.401 846.4 501.401 843.2 v
+499.801 838.4 518.601 846 V
+545.801 854.4 l
+552.201 856.8 557.401 865.6 v
+562.601 874.4 577.801 893.2 574.201 918.4 C
+575.401 929.6 569.401 930 V
+561.001 931.6 553.801 924 V
+547.001 920.8 544.601 921.2 V
+509.401 920 L
+f
+564.022 920.99 m
+566.122 929.92 561.282 925.08 V
+554.242 919.36 546.761 919.36 V
+532.241 917.16 527.841 903.96 V
+523.881 877.12 531.801 871.4 V
+536.641 863.92 543.681 870.52 v
+550.722 877.12 566.222 907.35 564.022 920.99 C
+f
+0.2 g
+563.648 920.632 m
+565.738 929.376 560.986 924.624 V
+554.074 919.008 546.729 919.008 V
+532.473 916.848 528.153 903.888 V
+524.265 877.536 532.041 871.92 V
+536.793 864.576 543.705 871.056 v
+550.618 877.536 565.808 907.24 563.648 920.632 C
+f
+0.4 g
+563.274 920.274 m
+565.354 928.832 560.69 924.168 V
+553.906 918.656 546.697 918.656 V
+532.705 916.536 528.465 903.816 V
+524.649 877.952 532.281 872.44 V
+536.945 865.232 543.729 871.592 v
+550.514 877.952 565.394 907.13 563.274 920.274 C
+f
+0.6 g
+562.9 919.916 m
+564.97 928.288 560.394 923.712 V
+553.738 918.304 546.665 918.304 V
+532.937 916.224 528.777 903.744 V
+525.033 878.368 532.521 872.96 V
+537.097 865.888 543.753 872.128 v
+550.41 878.368 564.98 907.02 562.9 919.916 C
+f
+0.8 g
+562.526 919.558 m
+564.586 927.744 560.098 923.256 V
+553.569 917.952 546.633 917.952 V
+533.169 915.912 529.089 903.672 V
+525.417 878.784 532.761 873.48 V
+537.249 866.544 543.777 872.664 v
+550.305 878.784 564.566 906.91 562.526 919.558 C
+f
+1 g
+562.151 919.2 m
+564.201 927.2 559.801 922.8 V
+553.401 917.6 546.601 917.6 V
+533.401 915.6 529.401 903.6 V
+525.801 879.2 533.001 874 V
+537.401 867.2 543.801 873.2 v
+550.201 879.2 564.151 906.8 562.151 919.2 C
+f
+0.1 0.55 0.85 0.3 k
+350.6 716 m
+330.2 735.2 322.2 736 V
+287.8 740 273 722 V
+290.6 742.4 318.2 736.8 V
+296.6 741.2 284.2 738 V
+267.4 738 257.8 724 V
+255 719.2 l
+259 734 277.4 740 V
+300.2 744.8 311 740 V
+289.4 746.8 279.4 744.8 V
+249 747.2 236.2 720.8 V
+240.2 735.2 255 742.4 V
+268.6 751.2 289 748.4 V
+303.4 745.2 308.6 742.8 v
+313.8 740.4 312.6 743.2 304.2 748 C
+298.6 758 284.6 757.6 V
+241.8 754 231.4 742 V
+245 753.2 255.4 756 V
+277.8 764 286.2 763.2 V
+311 762.2 318.6 766.2 V
+307.4 761.2 310.6 758 v
+313.8 754.8 320.6 747.2 320.6 746 c
+320.6 744.8 344.8 722.7 348.4 718.3 C
+350.6 716 l
+f
+0.8 g
+1 J 0.1 w
+489 522 m
+473.5 558.5 461 568 V
+487 552 490.5 534 V
+490.5 524 489 522 V
+f
+536 514.5 m
+509.5 569.5 491 593.5 V
+534.5 556 539.5 529.5 V
+540 524 l
+537 526.5 l
+536.5 517.5 536 514.5 V
+f
+592.5 563 m
+530 622.5 528.5 625 V
+589 559 592 551.5 V
+590 560.5 592.5 563 V
+f
+404 519.5 m
+423.5 571.5 442.5 549 V
+457.5 539 457 536 V
+453 542.5 435 542 V
+416 545 404 519.5 V
+f
+594.5 647 m
+549.5 675.5 542 677 v
+530.193 679.361 591.5 648 596.5 637.5 C
+598.5 640 594.5 647 V
+f
+0 g
+0 J 1 w
+443.801 540.399 m
+464.201 542.399 471.001 549.199 V
+475.401 545.599 l
+493.001 583.999 l
+496.601 578.799 l
+511.001 593.599 510.201 601.599 v
+509.401 609.599 523.001 595.599 y
+522.201 607.199 529.401 600.399 V
+527.001 615.999 535.401 607.999 V
+524.864 638.156 547.401 612.399 v
+553.001 605.999 548.601 612.799 y
+522.601 660.799 544.201 646.399 v
+546.201 669.199 545.001 673.599 v
+543.801 677.999 541.801 700.4 537.001 705.6 c
+532.201 710.8 537.401 712.4 543.001 707.2 C
+531.801 731.2 545.001 719.2 V
+541.401 734.4 537.001 737.2 V
+531.401 754.4 546.601 743.6 V
+542.201 756 539.001 759.2 V
+527.401 786.8 534.601 782 V
+539.001 778.4 l
+532.201 792.4 538.601 788 v
+545.001 783.6 545.001 784 y
+523.801 817.2 544.201 799.6 V
+536.042 813.518 532.601 820.4 V
+513.801 840.8 528.201 834.4 V
+533.001 832.8 l
+524.201 842.8 516.201 844.4 v
+508.201 846 518.601 852.4 525.001 850.4 c
+531.401 848.4 547.001 840.8 y
+559.801 822 563.801 821.6 V
+543.801 829.2 549.801 821.2 V
+564.201 807.2 557.001 807.6 V
+551.001 800.4 555.801 791.6 V
+537.342 809.991 552.201 784.4 v
+559.001 768 l
+534.601 792.8 545.801 770.8 V
+563.001 747.2 565.001 746.8 v
+567.001 746.4 571.401 737.6 y
+567.001 739.6 l
+572.201 730.8 l
+561.001 742.8 567.001 729.6 V
+572.601 715.2 l
+552.201 737.2 565.801 707.6 V
+549.401 712.8 558.201 695.6 V
+556.601 679.599 557.001 674.399 v
+557.401 669.199 558.601 640.799 554.201 632.799 c
+549.801 624.799 560.201 605.599 562.201 601.599 c
+564.201 597.599 567.801 586.799 559.001 595.999 c
+550.201 605.199 554.601 599.599 556.601 590.799 c
+558.601 581.999 564.601 566.399 563.801 560.799 C
+562.601 559.599 559.401 563.199 V
+544.601 585.999 546.201 571.599 V
+545.001 563.599 541.801 554.799 V
+538.601 543.999 538.601 552.799 V
+535.401 569.599 532.601 561.999 v
+529.801 554.399 526.201 548.399 523.401 545.999 c
+520.601 543.599 515.401 566.399 514.201 555.999 C
+502.201 568.399 497.401 551.999 V
+485.801 535.599 l
+485.401 547.999 484.201 541.999 V
+454.201 535.999 443.801 540.399 V
+f
+409.401 897.2 m
+397.801 905.2 393.801 904.8 v
+389.801 904.4 421.401 913.6 462.601 886 C
+467.401 883.2 471.001 883.6 V
+474.201 881.2 471.401 877.6 V
+462.601 868 473.801 856.8 V
+492.201 850 486.601 858.8 V
+497.401 854.8 499.801 850.8 v
+502.201 846.8 501.001 850.8 y
+494.601 858 488.601 863.2 V
+483.401 865.2 480.601 873.6 v
+477.801 882 475.401 892 479.801 895.2 C
+475.801 890.8 476.601 894.8 v
+477.401 898.8 481.001 902.4 482.601 902.8 c
+484.201 903.2 500.601 919 507.401 919.4 C
+498.201 918 495.201 919 v
+492.201 920 465.601 931.4 459.601 932.6 C
+442.801 939.2 454.801 937.2 V
+490.601 933.4 508.801 920.2 V
+501.601 928.6 483.201 935.6 V
+461.001 948.2 425.801 943.2 V
+408.001 940 400.201 938.2 V
+397.601 938.8 397.001 939.2 v
+396.401 939.6 384.6 948.6 357 941.6 C
+340 937 331.4 932.2 V
+316.2 931 312.6 927.8 V
+294 913.2 292 912.4 v
+290 911.6 278.6 904 277.8 903.6 C
+302.4 910.2 304.8 912.6 v
+307.2 915 324.6 917.6 327 916.2 c
+329.4 914.8 337.8 915.4 328.2 914.8 C
+403.801 900 404.601 898 v
+405.401 896 409.401 897.2 y
+f
+0.2 0.55 0.85 0 k
+480.801 906.4 m
+470.601 913.8 468.601 913.8 v
+466.601 913.8 454.201 924 450.001 923.6 c
+445.801 923.2 433.601 933.2 406.201 925 C
+405.601 927 409.201 927.8 V
+415.601 930 416.001 930.6 V
+436.201 934.8 443.401 931.2 V
+452.601 928.6 458.801 922.4 V
+470.001 919.2 473.201 920.2 V
+482.001 918 482.401 916.2 V
+488.201 913.2 486.401 910.6 V
+486.801 909 480.801 906.4 V
+f
+468.33 908.509 m
+469.137 907.877 470.156 907.779 470.761 906.97 c
+470.995 906.656 470.706 906.33 470.391 906.233 c
+469.348 905.916 468.292 906.486 467.15 905.898 c
+466.748 905.691 466.106 905.873 465.553 906.022 c
+463.921 906.463 462.092 906.488 460.401 905.8 C
+458.416 906.929 456.056 906.345 453.975 907.346 c
+453.917 907.373 453.695 907.027 453.621 907.054 c
+450.575 908.199 446.832 907.916 444.401 910.2 C
+441.973 910.612 439.616 911.074 437.188 911.754 c
+435.37 912.263 433.961 913.252 432.341 914.084 c
+430.964 914.792 429.507 915.314 427.973 915.686 c
+426.11 916.138 424.279 916.026 422.386 916.546 c
+422.293 916.571 422.101 916.227 422.019 916.254 c
+421.695 916.362 421.405 916.945 421.234 916.892 c
+419.553 916.37 418.065 917.342 416.401 917 C
+415.223 918.224 413.495 917.979 411.949 918.421 c
+408.985 919.269 405.831 917.999 402.801 919 C
+406.914 920.842 411.601 919.61 415.663 921.679 c
+417.991 922.865 420.653 921.763 423.223 922.523 c
+423.71 922.667 424.401 922.869 424.801 922.2 C
+424.935 922.335 425.117 922.574 425.175 922.546 c
+427.625 921.389 429.94 920.115 432.422 919.049 c
+432.763 918.903 433.295 919.135 433.547 918.933 c
+435.067 917.717 437.01 917.82 438.401 916.6 C
+440.099 917.102 441.892 916.722 443.621 917.346 c
+443.698 917.373 443.932 917.032 443.965 917.054 c
+445.095 917.802 446.25 917.531 447.142 917.227 c
+447.48 917.112 448.143 916.865 448.448 916.791 c
+449.574 916.515 450.43 916.035 451.609 915.852 c
+451.723 915.834 451.908 916.174 451.98 916.146 c
+453.103 915.708 454.145 915.764 454.801 914.6 C
+454.936 914.735 455.101 914.973 455.183 914.946 c
+456.21 914.608 456.859 913.853 457.96 913.612 c
+458.445 913.506 459.057 912.88 459.633 912.704 c
+462.025 911.973 463.868 910.444 466.062 909.549 c
+466.821 909.239 467.697 909.005 468.33 908.509 c
+f
+391.696 922.739 m
+389.178 924.464 386.81 925.57 384.368 927.356 c
+384.187 927.489 383.827 927.319 383.625 927.441 c
+382.618 928.05 381.73 928.631 380.748 929.327 c
+380.209 929.709 379.388 929.698 378.88 929.956 c
+376.336 931.248 373.707 931.806 371.2 933 C
+371.882 933.638 373.004 933.394 373.6 934.2 C
+373.795 933.92 374.033 933.636 374.386 933.827 c
+376.064 934.731 377.914 934.884 379.59 934.794 c
+381.294 934.702 383.014 934.397 384.789 934.125 c
+385.096 934.078 385.295 933.555 385.618 933.458 c
+387.846 932.795 390.235 933.32 392.354 932.482 c
+393.945 931.853 395.515 931.03 396.754 929.755 c
+397.006 929.495 396.681 929.194 396.401 929 C
+396.789 929.109 397.062 928.903 397.173 928.59 c
+397.257 928.351 397.257 928.049 397.173 927.81 c
+397.061 927.498 396.782 927.397 396.408 927.346 c
+395.001 927.156 396.773 928.536 396.073 928.088 c
+394.8 927.274 395.546 925.868 394.801 924.6 C
+394.521 924.794 394.291 925.012 394.401 925.4 C
+394.635 924.878 394.033 924.588 393.865 924.272 c
+393.48 923.547 392.581 922.132 391.696 922.739 c
+f
+359.198 915.391 m
+356.044 916.185 352.994 916.07 349.978 917.346 c
+349.911 917.374 349.688 917.027 349.624 917.054 c
+348.258 917.648 347.34 918.614 346.264 919.66 c
+345.351 920.548 343.693 920.161 342.419 920.648 c
+342.095 920.772 341.892 921.284 341.591 921.323 c
+340.372 921.48 339.445 922.429 338.4 923 C
+340.736 923.795 343.147 923.764 345.609 924.148 c
+345.722 924.166 345.867 923.845 346 923.845 c
+346.136 923.845 346.266 924.066 346.4 924.2 C
+346.595 923.92 346.897 923.594 347.154 923.848 c
+347.702 924.388 348.258 924.198 348.798 924.158 c
+348.942 924.148 349.067 923.845 349.2 923.845 c
+349.336 923.845 349.467 924.156 349.6 924.156 c
+349.736 924.155 349.867 923.845 350 923.845 c
+350.136 923.845 350.266 924.066 350.4 924.2 C
+351.092 923.418 351.977 923.972 352.799 923.793 c
+353.837 923.566 354.104 922.418 355.178 922.12 c
+359.893 920.816 364.03 918.671 368.393 916.584 c
+368.7 916.437 368.91 916.189 368.8 915.8 C
+369.067 915.8 369.38 915.888 369.57 915.756 c
+370.628 915.024 371.669 914.476 372.366 913.378 c
+372.582 913.039 372.253 912.632 372.02 912.684 c
+367.591 913.679 363.585 914.287 359.198 915.391 c
+f
+345.338 871.179 m
+343.746 872.398 343.162 874.429 342.034 876.221 c
+341.82 876.561 342.094 876.875 342.411 876.964 c
+342.971 877.123 343.514 876.645 343.923 876.443 c
+345.668 875.581 347.203 874.339 349.2 874.2 C
+351.19 871.966 355.45 871.581 355.457 868.2 c
+355.458 867.341 354.03 868.259 353.6 867.4 C
+351.149 868.403 348.76 868.3 346.38 869.767 c
+345.763 870.148 346.093 870.601 345.338 871.179 c
+f
+317.8 923.756 m
+317.935 923.755 324.966 923.522 324.949 923.408 c
+324.904 923.099 317.174 922.05 316.81 922.22 c
+316.646 922.296 309.134 919.866 309 920 C
+309.268 920.135 317.534 923.756 317.8 923.756 c
+f
+0 g
+333.2 914 m
+318.4 912.2 314 911 v
+309.6 909.8 291 902.2 288 900.2 C
+274.6 894.8 257.6 874.8 V
+265.2 878.2 267.4 881 V
+281 893.6 280.8 891 V
+293 899.6 292.4 897.4 V
+316.8 908.6 314.8 905.4 V
+336.4 910 335.4 908 V
+354.2 903.6 351.4 903.4 V
+345.6 902.2 352 898.6 V
+348.6 894.2 343.2 898.2 v
+337.8 902.2 340.8 900 335.8 899 C
+333.2 898.2 328.6 902.2 V
+323 906.8 314.2 903.2 V
+283.6 890.6 281.6 890 V
+278 887.2 275.6 883.6 V
+269.8 879.2 266.8 877.8 V
+254 866.2 252.8 864.8 V
+249.4 859.6 248.6 859.2 V
+255 863 257 865 V
+271 875 276.4 875.8 V
+280.8 878.8 281.6 880.2 V
+296 889.4 300.2 889.4 V
+309.4 884.2 311.8 891.2 V
+317.6 893 323.2 891.8 V
+326.4 894.4 325.6 896.6 V
+327.2 898.4 328.2 894.6 V
+331.6 891 336.4 893 V
+340.4 893.2 338.4 890.8 V
+334 887 322.2 886.8 V
+309.8 886.2 293.4 878.6 V
+263.6 868.2 254.4 857.8 V
+248 849 242.6 847.8 V
+236.8 847 230.8 839.6 V
+240.6 845.4 249.6 845.4 V
+253.6 847.8 249.8 844.2 V
+246.2 836.6 247.8 831.2 V
+247.2 826 246.4 824.4 V
+238.6 811.6 238.6 809.2 v
+238.6 806.8 239.8 797 240.2 796.4 c
+240.6 795.8 239.2 798 243 795.6 c
+246.8 793.2 249.6 791.6 250.4 788.8 c
+251.2 786 248.4 794.2 248.2 796 c
+248 797.8 243.8 805 244.6 807.4 C
+245.6 806.4 246.4 805 V
+245.8 805.6 246.4 809.2 V
+247.2 814.4 248.6 817.6 v
+250 820.8 252 824.6 252.4 825.4 c
+252.8 826.2 252.8 832 254.2 829.4 C
+257.6 826.8 l
+254.8 829.4 257 831.6 V
+256 837.2 257.8 839.8 V
+264.8 848.2 266.4 849.2 v
+268 850.2 266.6 849.8 y
+272.6 854 266.8 852.4 V
+262.8 850.8 259.8 850.8 V
+252.2 848.8 256.2 853 v
+260.2 857.2 270.2 862.6 274 862.4 C
+274.8 860.8 l
+286 863.2 l
+284.8 862.4 l
+284.6 862.6 288.8 863 v
+293 863.4 298.8 862 300.2 863.8 c
+301.6 865.6 305 866.6 304.6 865.2 c
+304.2 863.8 304 861.8 y
+309 867.6 308.4 865.4 v
+307.8 863.2 299.6 858 298.2 851.8 C
+308.6 860 l
+312.2 863 l
+315.8 860.8 316 862.4 v
+316.2 864 320.8 869.8 322 869.6 c
+323.2 869.4 325.2 872.2 325 869.6 c
+324.8 867 332.4 861.6 y
+335.6 863.4 337 862 v
+338.4 860.6 342.6 881.8 y
+367.6 892.4 l
+411.201 895.8 l
+394.201 902.6 l
+333.2 914 l
+f
+0.2 0.55 0.85 0.5 K
+1 J 2 w
+351.4 715 m
+336.4 731.8 328 734.4 V
+314.6 741.2 290 733.4 v
+S
+324.8 735.8 m
+299.6 743.8 284.2 739.6 V
+265.8 737.6 257.4 723.8 v
+S
+321.2 737 m
+304.2 744.2 289.4 746.4 V
+272.8 749 256.2 741.8 V
+244 735.8 238.6 725.6 v
+S
+322.2 736.6 m
+306.8 747.6 305.8 749 V
+298.8 760 285.8 760.4 V
+264.4 759.6 247.2 751.6 v
+S
+0 G
+0 J 1 w
+320.895 745.593 m
+322.437 744.13 349.4 715.2 Y
+384.6 678.599 356.6 712.8 Y
+349 717.6 339.8 736.4 Y
+338.6 739.2 353.8 729.2 Y
+357.8 728.4 371.4 709.2 Y
+364.6 711.6 369.4 704.4 Y
+372.2 702.4 392.601 686.799 Y
+396.201 682.799 400.201 681.199 Y
+414.201 686.399 407.801 673.199 Y
+410.201 666.399 415.801 677.999 Y
+427.001 694.8 410.601 692.399 Y
+380.6 689.599 373.8 705.6 Y
+371.4 708 380.2 705.6 Y
+388.601 703.6 373 718 Y
+375.4 718 384.6 711.2 Y
+395.001 702 397.001 704 Y
+415.001 712.8 425.401 705.2 Y
+427.401 703.6 421.801 696.8 423.401 691.599 c
+425.001 686.399 429.801 673.999 Y
+427.401 672.399 427.801 661.599 Y
+444.601 638.399 435.001 640.399 Y
+419.401 640.799 434.201 633.199 Y
+437.401 631.199 446.201 623.999 Y
+443.401 625.199 441.801 619.999 Y
+446.601 615.999 443.801 611.199 Y
+437.801 609.999 436.601 605.999 Y
+443.401 597.999 433.401 597.599 Y
+437.001 593.199 432.201 581.199 Y
+427.401 581.199 421.001 575.599 Y
+423.401 570.799 413.001 565.199 Y
+404.601 563.599 407.401 556.799 Y
+399.401 550.799 397.001 534.799 Y
+396.201 524.399 393.801 521.199 399.001 523.199 c
+404.201 525.199 403.401 537.599 Y
+398.601 553.199 441.401 569.199 Y
+445.401 570.799 446.201 575.999 Y
+448.201 575.599 457.001 567.999 Y
+464.601 556.799 465.001 565.999 Y
+466.201 569.599 464.601 575.599 Y
+470.601 597.199 456.601 603.599 Y
+446.601 637.199 460.601 628.799 Y
+463.401 623.199 474.201 617.999 y
+477.801 620.399 L
+476.201 625.199 484.601 631.199 Y
+487.401 624.799 493.401 632.799 Y
+497.001 657.199 509.401 642.799 Y
+513.401 641.599 514.601 648.399 Y
+518.201 658.799 514.601 672.399 Y
+518.201 672.799 527.801 666.799 Y
+530.601 670.399 521.401 687.199 525.401 684.799 c
+529.401 682.399 533.801 680.799 Y
+534.601 682.799 524.601 695.199 Y
+520.201 698 515.001 718.4 Y
+522.201 714.8 512.201 730 Y
+512.201 733.2 518.201 744.4 Y
+517.401 751.2 518.201 750.8 Y
+521.001 749.6 529.001 748 522.201 754.4 c
+515.401 760.8 523.001 765.6 Y
+527.401 768.4 513.801 768 Y
+508.601 772.4 509.001 776.4 Y
+517.001 774.4 502.601 788.8 500.201 792.4 c
+497.801 796 507.401 801.2 Y
+520.601 804.8 509.001 808 Y
+489.401 807.6 500.201 818.4 Y
+506.201 818 504.601 820.4 Y
+499.401 821.6 489.801 828 Y
+485.801 831.6 489.401 830.8 Y
+506.201 829.6 477.401 840.8 Y
+485.401 840.8 467.401 851.2 Y
+465.401 852.8 462.201 860.4 Y
+456.201 865.6 451.401 872.4 Y
+451.001 876.8 446.201 881.6 Y
+434.601 895.2 429.001 894.8 Y
+414.201 898.4 409.001 897.6 Y
+356.2 893.2 l
+329.8 880.4 337.6 859.4 Y
+344 851 353.2 854.8 Y
+357.8 861 369.4 858.8 Y
+389.801 855.6 387.201 859.2 Y
+384.801 863.8 368.6 870 368.4 870.6 c
+368.2 871.2 359.4 874.6 Y
+356.4 875.8 352 885 Y
+348.8 888.4 364.6 882.6 Y
+363.4 881.6 370.8 877.6 Y
+388.201 878.6 398.801 867.8 Y
+409.601 851.2 409.801 859.4 Y
+412.601 868.8 400.801 890 Y
+401.201 892 409.401 885.4 Y
+410.801 887.4 411.601 881.6 Y
+411.801 879.2 415.601 871.2 Y
+418.401 858.2 422.001 865.6 Y
+426.601 856.2 L
+428.001 853.6 422.001 846 Y
+421.801 843.2 422.601 843.4 417.001 835.8 c
+411.401 828.2 414.801 823.8 Y
+413.401 817.2 422.201 817.6 Y
+424.801 815.4 428.201 815.4 Y
+430.001 813.4 432.401 814 Y
+434.001 817.8 440.201 815.8 Y
+441.601 818.2 449.801 818.6 Y
+450.801 821.2 451.201 822.8 454.601 823.4 c
+458.001 824 433.401 867 Y
+439.801 867.8 431.601 880.2 Y
+429.401 886.8 440.801 872.2 443.001 870.8 c
+445.201 869.4 446.201 867.2 444.601 867.4 c
+443.001 867.6 441.201 865.4 442.601 865.2 c
+444.001 865 457.001 850 460.401 839.8 c
+463.801 829.6 469.801 825.6 476.001 819.6 c
+482.201 813.6 481.401 789.4 Y
+481.001 780.6 487.001 770 Y
+489.001 766.2 484.801 748 Y
+482.801 745.8 484.201 745 Y
+485.201 743.8 492.001 730.6 Y
+490.201 730.8 493.801 727.2 Y
+499.001 721.2 492.601 724.2 Y
+486.601 725.8 493.601 716 Y
+494.801 714.2 485.801 718.8 Y
+476.601 719.4 488.201 712.2 Y
+496.801 705 485.401 709.4 Y
+480.801 711.2 484.001 704.4 Y
+487.201 702.8 504.401 695.8 Y
+504.801 691.999 501.801 686.999 Y
+502.201 682.999 500.001 679.599 Y
+498.801 671.399 498.201 670.599 Y
+494.001 670.399 486.601 656.599 Y
+484.801 653.999 474.601 641.999 Y
+472.601 634.999 454.601 642.199 Y
+448.001 638.799 450.001 642.199 Y
+449.601 644.399 454.401 650.399 Y
+461.401 652.999 458.801 663.799 Y
+462.801 665.199 451.601 667.999 451.801 669.199 c
+452.001 670.399 457.801 671.799 Y
+465.801 673.799 461.401 676.199 Y
+460.801 680.199 463.801 685.799 Y
+475.401 686.599 463.801 702.8 Y
+453.001 710.4 452.001 716.2 Y
+464.601 724.4 456.401 736.8 456.601 740.4 c
+456.801 744 458.001 765.6 Y
+456.001 771.8 453.001 785.4 Y
+455.201 790.6 462.601 803.2 Y
+465.401 807.4 474.201 812.2 472.001 815.2 c
+469.801 818.2 462.001 816.4 Y
+454.201 817.8 454.801 812.6 Y
+453.201 811.6 452.401 806.6 Y
+451.68 798.667 442.801 792.4 Y
+431.601 786.2 440.801 782.2 Y
+446.801 775.6 437.001 775.4 Y
+426.001 777.2 434.201 767 Y
+445.001 754.2 442.001 751.4 Y
+431.801 750.4 444.401 741.2 y
+443.601 743.2 443.801 741.4 v
+444.001 739.6 447.001 735.4 447.801 733.4 c
+448.601 731.4 444.601 731.2 Y
+445.201 721.6 429.801 725.8 y
+429.801 725.8 428.201 725.6 v
+426.601 725.4 415.401 726.2 409.601 728.4 c
+403.801 730.6 397.001 730.6 y
+393.001 728.8 385.4 729 v
+377.8 729.2 369.8 726.4 Y
+365.4 726.8 374 731.2 374.2 731 c
+374.4 730.8 380 736.4 372 735.8 c
+350.203 734.165 339.4 744.4 Y
+337.4 745.8 334.8 748.6 Y
+324.8 750.6 336.2 736.2 Y
+337.4 734.8 336 733.8 Y
+335.2 735.4 327.4 740.8 Y
+324.589 741.773 323.226 743.107 320.895 745.593 C
+f
+0.2 0.55 0.85 0.5 k
+1 J 2 w
+297 757.2 m
+308.6 751.6 311.2 748.8 v
+313.8 746 327.8 734.6 y
+322.4 736.6 319.8 738.4 v
+317.2 740.2 306.4 748.4 y
+302.6 754.4 297 757.2 v
+f
+0.4 0.2 0.8 0 k
+0 J 1 w
+238.991 788.397 m
+239.328 788.545 238.804 791.257 238.6 791.8 c
+237.578 794.526 228.6 796 y
+228.373 794.635 228.318 793.039 228.424 791.401 c
+233.292 785.882 238.991 788.397 v
+f
+0.4 0.2 0.8 0.2 k
+238.991 788.597 m
+238.542 788.439 238.976 791.331 238.8 791.8 c
+237.778 794.526 228.6 796.1 y
+228.373 794.735 228.318 793.139 228.424 791.501 c
+232.692 786.382 238.991 788.597 v
+f
+0 g
+234.6 788.454 m
+233.975 788.454 233.469 789.594 233.469 791 c
+233.469 792.405 233.975 793.545 234.6 793.545 c
+235.225 793.545 235.732 792.405 235.732 791 c
+235.732 789.594 235.225 788.454 234.6 788.454 c
+f
+234.6 791 m
+F
+189 690.399 m
+183.4 680.399 208.2 686.399 V
+222.2 687.599 224.6 689.999 V
+225.8 689.199 234.166 686.266 237 685.599 c
+243.8 683.999 252.2 694 y
+256.8 704.5 259.6 704.5 v
+262.4 704.5 259.2 702.9 y
+252.6 692.799 253 691.199 V
+247.8 671.199 231.8 670.399 V
+215.65 669.449 217 663.599 V
+225.8 665.999 228.2 663.599 V
+239 663.999 231 657.599 V
+224.2 645.999 l
+224.34 642.081 214.2 645.599 v
+204.4 648.999 194.1 661.899 y
+178.15 676.449 189 690.399 V
+f
+0.1 0.4 0.4 0 k
+187.8 686.399 m
+185.8 676.799 222.6 687.199 V
+227 687.199 229.4 686.399 v
+231.8 685.599 243.8 682.799 245.8 683.999 C
+238.6 670.399 227 671.999 V
+213.8 670.399 214.2 665.599 V
+218.2 658.399 223 655.999 V
+225.8 653.599 225.4 650.399 v
+225 647.199 222.2 645.599 220.2 644.799 c
+218.2 643.999 215 647.199 213.4 647.199 c
+211.8 647.199 203.4 653.599 199 658.399 c
+194.6 663.199 186.2 675.199 186.6 677.999 c
+187 680.799 187.8 686.399 Y
+f
+0.1 0.4 0.4 0.2 k
+191 668.949 m
+193.6 664.999 196.8 660.799 199 658.399 c
+203.4 653.599 211.8 647.199 213.4 647.199 c
+215 647.199 218.2 643.999 220.2 644.799 c
+222.2 645.599 225 647.199 225.4 650.399 c
+225.8 653.599 223 655.999 Y
+219.934 657.532 217.194 661.024 215.615 663.347 C
+215.8 660.799 210.6 661.599 v
+205.4 662.399 200.2 665.199 198.6 668.399 c
+197 671.599 194.6 673.999 196.2 670.399 c
+197.8 666.799 200.2 663.199 201.8 662.799 c
+203.4 662.399 203 661.199 200.6 661.599 c
+198.2 661.999 195.4 662.399 191 667.599 c
+F
+0.1 0.55 0.85 0.3 k
+188.4 689.999 m
+190.2 703.6 191.4 707.6 V
+190.6 714.4 193 718.6 v
+195.4 722.8 197.4 729 200.4 734.4 c
+203.4 739.8 203.6 743.8 207.6 745.4 c
+211.6 747 217.6 755.6 220.4 756.6 c
+223.2 757.6 223 756.8 y
+229.8 771.6 243.4 767.6 V
+227.2 770.4 243 779.8 V
+238.2 778.7 241.5 785.7 v
+243.701 790.368 243.2 783.6 232.2 771.8 C
+227.2 763.2 222 760.2 v
+216.8 757.2 204.8 750.2 203.6 746.4 c
+202.4 742.6 199.2 736.8 197.2 735.2 c
+195.2 733.6 192.4 729.4 192 726 C
+190.8 722 189.4 720.8 v
+188 719.6 187.8 716.4 187.8 714.4 c
+187.8 712.4 185.8 709.6 186 707.2 C
+186.8 688.199 186.4 686.199 V
+188.4 689.999 L
+f
+1 g
+179.8 685.399 m
+177.8 686.799 173.4 680.799 V
+180.7 647.799 180.7 646.399 V
+181.8 648.499 180.5 655.699 v
+179.2 662.899 178.3 675.599 y
+179.8 685.399 l
+f
+0.1 0.55 0.85 0.3 k
+201.4 746 m
+183.8 742.8 184.2 713.6 V
+183.4 688.799 l
+182.2 714.4 181 716 v
+179.8 717.6 183.8 728.8 180.6 722.8 C
+166.6 708.8 174.6 687.599 V
+176.1 684.299 173.1 688.899 V
+168.5 701.5 169.6 707.9 V
+169.8 710.1 171.7 712.9 V
+180.3 724.6 183 726.9 V
+184.8 741.3 200.2 746.5 V
+205.9 748.8 201.4 746 V
+f
+0 g
+340.8 812.2 m
+341.46 812.554 341.451 813.524 342.031 813.697 c
+343.18 814.041 343.344 815.108 343.862 815.892 c
+344.735 817.211 344.928 818.744 345.51 820.235 c
+345.782 820.935 345.809 821.89 345.496 822.55 c
+344.322 825.031 343.62 827.48 342.178 829.906 c
+341.91 830.356 341.648 831.15 341.447 831.748 c
+340.984 833.132 339.727 834.123 338.867 835.443 c
+338.579 835.884 339.104 836.809 338.388 836.893 c
+337.491 836.998 336.042 837.578 335.809 836.552 c
+335.221 833.965 336.232 831.442 337.2 829 C
+336.418 828.308 336.752 827.387 336.904 826.62 c
+337.614 823.014 336.416 819.662 335.655 816.188 c
+335.632 816.084 335.974 815.886 335.946 815.824 c
+334.724 813.138 333.272 810.693 331.453 808.312 c
+330.695 807.32 329.823 806.404 329.326 805.341 c
+328.958 804.554 328.55 803.588 328.8 802.6 C
+325.365 799.82 323.115 795.975 320.504 792.129 c
+320.042 791.449 320.333 790.24 320.884 789.971 c
+321.697 789.573 322.653 790.597 323.123 791.443 c
+323.512 792.141 323.865 792.791 324.356 793.434 c
+324.489 793.609 324.31 794.028 324.445 794.149 c
+327.078 796.496 328.747 799.432 331.2 801.8 C
+333.15 802.129 334.687 803.127 336.435 804.14 c
+336.743 804.319 337.267 804.07 337.557 804.265 c
+339.31 805.442 339.308 807.478 339.414 809.388 c
+339.464 810.272 339.66 811.589 340.8 812.2 c
+f
+331.959 816.666 m
+332.083 816.743 331.928 817.166 332.037 817.382 c
+332.199 817.706 332.602 817.894 332.764 818.218 c
+332.873 818.434 332.71 818.814 332.846 818.956 c
+335.179 821.403 335.436 824.427 334.4 827.4 C
+335.424 828.02 335.485 829.282 335.06 830.129 c
+334.207 831.829 334.014 833.755 333.039 835.298 c
+332.237 836.567 330.659 837.811 329.288 836.508 c
+328.867 836.108 328.546 835.321 328.824 834.609 c
+328.888 834.446 329.173 834.3 329.146 834.218 c
+329.039 833.894 328.493 833.67 328.487 833.398 c
+328.457 831.902 327.503 830.391 328.133 829.062 c
+328.905 827.433 329.724 825.576 330.4 823.8 C
+329.166 821.684 330.199 819.235 328.446 817.358 c
+328.31 817.212 328.319 816.826 328.441 816.624 c
+328.733 816.138 329.139 815.732 329.625 815.44 c
+329.827 815.319 330.175 815.317 330.375 815.441 c
+330.953 815.803 331.351 816.29 331.959 816.666 c
+f
+394.771 826.977 m
+396.16 825.185 396.45 822.39 394.401 821 C
+394.951 817.691 398.302 819.67 400.401 820.2 C
+400.292 820.588 400.519 820.932 400.802 820.937 c
+401.859 820.952 402.539 821.984 403.601 821.8 C
+404.035 823.357 405.673 824.059 406.317 825.439 c
+408.043 829.134 407.452 833.407 404.868 836.653 c
+404.666 836.907 404.883 837.424 404.759 837.786 c
+404.003 839.997 401.935 840.312 400.001 841 C
+398.824 844.875 398.163 848.906 396.401 852.6 C
+394.787 852.85 394.089 854.589 392.752 855.309 c
+391.419 856.028 390.851 854.449 390.892 853.403 c
+390.899 853.198 391.351 852.974 391.181 852.609 c
+391.105 852.445 390.845 852.334 390.845 852.2 c
+390.846 852.065 391.067 851.934 391.201 851.8 C
+390.283 850.98 388.86 850.503 388.565 849.358 c
+387.611 845.648 390.184 842.523 391.852 839.322 c
+392.443 838.187 391.707 836.916 390.947 835.708 c
+390.509 835.013 390.617 833.886 390.893 833.03 c
+391.645 830.699 393.236 828.96 394.771 826.977 c
+f
+357.611 808.591 m
+356.124 806.74 352.712 804.171 355.629 802.243 c
+355.823 802.114 356.193 802.11 356.366 802.244 c
+358.387 803.809 360.39 804.712 362.826 805.294 c
+362.95 805.323 363.224 804.856 363.593 805.017 c
+365.206 805.72 367.216 805.662 368.4 807 C
+372.167 806.776 375.732 807.892 379.123 809.2 c
+380.284 809.648 381.554 810.207 382.755 810.709 c
+384.131 811.285 385.335 812.213 386.447 813.354 c
+386.58 813.49 386.934 813.4 387.201 813.4 C
+387.161 814.263 388.123 814.39 388.37 815.012 c
+388.462 815.244 388.312 815.64 388.445 815.742 c
+390.583 817.372 391.503 819.39 390.334 821.767 c
+390.049 822.345 389.8 822.963 389.234 823.439 c
+388.149 824.35 387.047 823.496 386 823.8 C
+385.841 823.172 385.112 823.344 384.726 823.146 c
+383.867 822.707 382.534 823.292 381.675 822.854 c
+380.313 822.159 379.072 821.99 377.65 821.613 c
+377.338 821.531 376.56 821.627 376.4 821 C
+376.266 821.134 376.118 821.368 376.012 821.346 c
+374.104 820.95 372.844 820.736 371.543 819.044 c
+371.44 818.911 370.998 819.09 370.839 818.955 c
+369.882 818.147 369.477 816.913 368.376 816.241 c
+368.175 816.118 367.823 816.286 367.629 816.157 c
+366.983 815.726 366.616 815.085 365.974 814.638 c
+365.645 814.409 365.245 814.734 365.277 814.99 c
+365.522 816.937 366.175 818.724 365.6 820.6 C
+367.677 823.12 370.194 825.069 372 827.8 C
+372.015 829.966 372.707 832.112 372.594 834.189 c
+372.584 834.382 372.296 835.115 372.17 835.462 c
+371.858 836.316 372.764 837.382 371.92 838.106 c
+370.516 839.309 369.224 838.433 368.4 837 C
+366.562 836.61 364.496 835.917 362.918 837.151 c
+361.911 837.938 361.333 838.844 360.534 839.9 c
+359.549 841.202 359.884 842.638 359.954 844.202 c
+359.96 844.33 359.645 844.466 359.645 844.6 c
+359.646 844.735 359.866 844.866 360 845 C
+359.294 845.626 359.019 846.684 358 847 C
+358.305 848.092 357.629 848.976 356.758 849.278 c
+354.763 849.969 353.086 848.057 351.194 847.984 c
+350.68 847.965 350.213 849.003 349.564 849.328 c
+349.132 849.544 348.428 849.577 348.066 849.311 c
+347.378 848.807 346.789 848.693 346.031 848.488 c
+344.414 848.052 343.136 846.958 341.656 846.103 c
+340.171 845.246 339.216 843.809 338.136 842.489 c
+337.195 841.337 337.059 838.923 338.479 838.423 c
+340.322 837.773 341.626 840.476 343.592 840.15 c
+343.904 840.099 344.11 839.788 344 839.4 C
+344.389 839.291 344.607 839.52 344.8 839.8 C
+345.658 838.781 346.822 838.444 347.76 837.571 c
+348.73 836.667 350.476 837.085 351.491 836.088 c
+353.02 834.586 352.461 831.905 354.4 830.6 C
+353.814 829.287 353.207 828.01 352.872 826.583 c
+352.59 825.377 353.584 824.18 354.795 824.271 c
+356.053 824.365 356.315 825.124 356.8 826.2 C
+357.067 825.933 357.536 825.636 357.495 825.42 c
+357.038 823.033 356.011 821.04 355.553 818.609 c
+355.494 818.292 355.189 818.09 354.8 818.2 C
+354.332 814.051 350.28 811.657 347.735 808.492 c
+347.332 807.99 347.328 806.741 347.737 806.338 c
+349.14 804.951 351.1 806.497 352.8 807 C
+353.013 808.206 353.872 809.148 355.204 809.092 c
+355.46 809.082 355.695 809.624 356.019 809.754 c
+356.367 809.892 356.869 809.668 357.155 809.866 c
+358.884 811.061 360.292 812.167 362.03 813.356 c
+362.222 813.487 362.566 813.328 362.782 813.436 c
+363.107 813.598 363.294 813.985 363.617 814.17 c
+363.965 814.37 364.207 814.08 364.4 813.8 C
+363.754 813.451 363.75 812.494 363.168 812.292 c
+362.393 812.024 361.832 811.511 361.158 811.064 c
+360.866 810.871 360.207 811.119 360.103 810.94 c
+359.505 809.912 358.321 809.474 357.611 808.591 c
+f
+302.2 858 m
+292.962 860.872 281.8 835.2 V
+279.4 830 277 828 v
+274.6 826 263.4 822.4 261.4 818.4 C
+251 802.4 L
+265.8 818.4 269 820.8 V
+277 829.2 273.8 822.4 V
+259.8 811.6 261 802.4 V
+255.4 788 254.6 786 V
+270.6 818 273 819.2 v
+275.4 820.4 276.6 820.4 275.4 816.8 c
+274.2 813.2 273.8 796.8 271 794.8 C
+279 815.2 278.2 818.4 V
+281.4 822 283.8 816.8 V
+282.6 800.8 l
+287 788.8 l
+284.6 800 286.2 815.6 V
+284.2 826 288.2 820.4 v
+292.2 814.8 301.8 808.8 301.8 804 C
+296.6 821.6 287.4 826.4 V
+283.4 820.4 l
+282.2 822.4 l
+278.6 823.2 283 830 v
+287.4 836.8 287 837.6 y
+293.4 830.4 295 830.4 V
+308.2 838 309.4 813.6 V
+316.2 828 307 834.8 V
+292.2 836.8 293.4 842 V
+300.6 854.4 L
+304.2 859.6 302.6 856.8 y
+F
+282.2 841.6 m
+269.4 841.6 266.2 836.4 V
+259 826.8 l
+276.2 836.8 280.2 838 v
+284.2 839.2 282.2 841.6 Y
+f
+242.2 835.2 m
+240.2 834 239.8 831.2 v
+239.4 828.4 237 828 237.8 825.2 c
+238.6 822.4 240.6 820 240.6 824 c
+240.6 828 242.2 830 243 831.2 c
+243.8 832.4 245.4 836.8 242.2 835.2 c
+f
+233.4 774 m
+225 778 221.8 781.6 v
+218.6 785.2 219.052 780.034 214.2 780.4 c
+208.353 780.841 209.4 796.8 y
+205.4 789.2 l
+204.2 774.8 212.2 777.2 v
+216.107 778.372 217.4 776.8 215.8 776 c
+214.2 775.2 221.4 774.8 218.6 773.2 c
+215.8 771.6 230.2 776.8 227.8 766.4 C
+233.4 774 L
+f
+220.8 759.6 m
+205.4 755.2 201.8 764.8 V
+197 762.4 199.2 759.4 v
+201.4 756.4 202.6 756 y
+208 754.8 207.4 754 v
+206.8 753.2 204.4 749.8 y
+214.6 755.8 220.8 759.6 v
+f
+1 g
+449.201 681.399 m
+448.774 679.265 447.103 678.464 445.201 677.799 C
+443.284 678.757 440.686 681.863 438.801 679.799 C
+438.327 680.279 437.548 680.339 437.204 681.001 c
+436.739 681.899 437.011 682.945 436.669 683.743 c
+436.124 685.015 435.415 686.381 435.601 687.799 C
+437.407 688.511 438.002 690.417 437.528 692.18 c
+437.459 692.437 437.03 692.634 437.23 692.983 c
+437.416 693.306 437.734 693.533 438.001 693.8 C
+437.866 693.665 437.721 693.432 437.61 693.452 c
+437 693.558 437.124 694.195 437.254 694.582 c
+437.839 696.328 439.853 696.592 441.201 695.4 C
+441.457 695.965 441.966 695.771 442.401 695.8 C
+442.351 696.379 442.759 696.906 442.957 697.326 c
+443.475 698.424 445.104 697.318 445.901 697.93 c
+446.977 698.755 448.04 699.454 449.118 698.851 c
+450.927 697.838 452.636 696.626 453.835 694.885 c
+454.41 694.051 454.65 692.77 454.592 691.812 c
+454.554 691.165 453.173 691.517 452.83 690.588 c
+452.185 688.84 454.016 688.321 454.772 686.983 c
+454.97 686.634 454.706 686.33 454.391 686.232 c
+453.98 686.104 453.196 686.293 453.334 685.84 c
+454.306 682.647 451.55 681.969 449.201 681.399 C
+f
+439.6 661.799 m
+439.593 663.537 437.992 665.293 439.201 666.999 C
+439.336 666.865 439.467 666.644 439.601 666.644 c
+439.736 666.644 439.867 666.865 440.001 666.999 C
+441.496 664.783 445.148 663.855 445.006 661.009 c
+444.984 660.562 443.897 659.644 444.801 658.999 C
+442.988 657.651 442.933 655.281 442.001 653.399 C
+440.763 653.685 439.551 654.048 438.401 654.599 C
+438.753 656.085 438.636 657.769 439.456 659.089 c
+439.89 659.787 439.603 660.866 439.6 661.799 c
+f
+0.8 g
+273.4 670.799 m
+256.542 660.663 270.6 675.999 v
+279.4 685.599 289.4 691.199 y
+299.8 695.6 303.4 696.8 v
+307 698 322.2 703.2 325.4 703.6 c
+328.6 704 338.2 708 345 704 c
+351.8 700 359.8 695.6 y
+343.4 704 339.8 701.6 v
+336.2 699.2 329 699.6 323 696.4 C
+308.2 691.999 305 689.999 v
+301.8 687.999 291.4 676.399 289.8 677.199 c
+288.2 677.999 290.2 678.399 291.4 681.199 c
+292.6 683.999 290.6 685.599 282.6 679.199 c
+274.6 672.799 273.4 670.799 Y
+f
+0 g
+280.805 676.766 m
+282.215 689.806 290.693 688.141 V
+298.919 692.311 301.641 694.279 V
+309.78 695.981 311.09 696.598 v
+329.569 705.298 344.288 700.779 344.835 701.899 c
+345.381 703.018 365.006 695.901 368.615 691.815 c
+369.006 691.372 358.384 697.412 348.686 699.303 c
+340.413 700.917 318.811 699.056 307.905 693.52 c
+304.932 692.011 295.987 686.227 293.456 686.338 c
+290.925 686.45 280.805 676.766 Y
+f
+0.8 g
+277 651.199 m
+261.8 653.599 278.6 655.199 V
+296.6 657.199 300.6 662.399 V
+314.2 671.599 317 671.999 v
+319.8 672.399 349.8 679.599 350.2 681.999 c
+350.6 684.399 356.2 684.399 357.8 683.599 c
+359.4 682.799 358.6 681.599 355.8 680.799 c
+353 679.999 321.8 663.599 315.4 662.399 c
+309 661.199 297.4 653.599 292.6 652.399 c
+287.8 651.199 277 651.199 Y
+f
+0 g
+296.52 658.597 m
+287.938 659.426 296.539 660.245 V
+305.355 663.669 307.403 666.332 V
+314.367 671.043 315.8 671.247 v
+317.234 671.452 331.194 675.139 331.399 676.367 c
+331.604 677.596 365.67 690.177 370.09 686.987 c
+373.001 684.886 363.1 686.563 353.466 682.153 c
+352.111 681.533 318.258 666.946 314.981 666.332 c
+311.704 665.717 305.765 661.826 303.307 661.212 c
+300.85 660.597 296.52 658.597 Y
+f
+288.6 656.399 m
+293.8 656.799 292.6 655.199 v
+291.4 653.599 289 654.399 y
+288.6 656.399 l
+f
+281.4 654.799 m
+286.6 655.199 285.4 653.599 v
+284.2 651.999 281.8 652.799 y
+281.4 654.799 l
+f
+271 653.199 m
+276.2 653.599 275 651.999 v
+273.8 650.399 271.4 651.199 y
+271 653.199 l
+f
+263.4 652.399 m
+268.6 652.799 267.4 651.199 v
+266.2 649.599 263.8 650.399 y
+263.4 652.399 l
+f
+301.8 691.999 m
+306.2 691.999 305 690.399 v
+303.8 688.799 300.6 689.199 y
+301.8 691.999 l
+f
+291.8 686.399 m
+298.306 688.54 295.8 685.199 v
+294.6 683.599 292.2 684.399 y
+291.8 686.399 l
+f
+280.6 681.599 m
+285.8 681.999 284.6 680.399 v
+283.4 678.799 281 679.599 y
+280.6 681.599 l
+f
+273 675.599 m
+278.2 675.999 277 674.399 v
+275.8 672.799 273.4 673.599 y
+273 675.599 l
+f
+266.2 670.799 m
+271.4 671.199 270.2 669.599 v
+269 667.999 266.6 668.799 y
+266.2 670.799 l
+f
+305.282 664.402 m
+312.203 664.934 310.606 662.805 v
+309.009 660.675 305.814 661.74 y
+305.282 664.402 l
+f
+315.682 669.202 m
+322.603 669.734 321.006 667.605 v
+319.409 665.475 316.214 666.54 y
+315.682 669.202 l
+f
+326.482 673.602 m
+333.403 674.134 331.806 672.005 v
+330.209 669.875 327.014 670.94 y
+326.482 673.602 l
+f
+336.882 678.402 m
+343.803 678.934 342.206 676.805 v
+340.609 674.675 337.414 675.74 y
+336.882 678.402 l
+f
+309.282 696.402 m
+316.203 696.934 314.606 694.805 v
+313.009 692.675 309.014 692.94 y
+309.282 696.402 l
+f
+319.282 699.602 m
+326.203 700.134 324.606 698.005 v
+323.009 695.875 318.614 696.14 y
+319.282 699.602 l
+f
+296.6 659.599 m
+301.8 659.999 300.6 658.399 v
+299.4 656.799 297 657.599 y
+296.6 659.599 l
+f
+0.1 0.55 0.85 0.3 k
+223.4 758.8 m
+219 750 218.6 746.8 V
+219.4 755.6 220.6 757.6 v
+221.8 759.6 223.4 758.8 y
+f
+205 744.8 m
+201.8 730.4 202.2 727.6 V
+201 739.2 201.4 740.4 v
+201.8 741.6 205 744.8 y
+f
+0.8 g
+225.8 819.4 m
+225.6 816.2 l
+223.4 816 l
+237.6 803.4 238.2 795.8 V
+239 804 225.8 819.4 V
+f
+0 g
+229.784 818.135 m
+229.353 818.551 229.572 819.296 229.164 819.556 c
+228.355 820.072 230.462 820.129 230.234 820.845 c
+229.851 822.051 230.038 822.072 229.916 823.348 c
+229.859 823.946 230.447 825.486 230.832 825.926 c
+232.278 827.578 230.954 830.51 232.594 832.061 c
+232.898 832.35 233.274 832.902 233.559 833.32 c
+234.218 834.283 235.402 834.771 236.352 835.599 c
+236.67 835.875 236.469 836.702 237.038 836.61 c
+237.752 836.495 238.993 836.625 238.948 835.784 c
+238.835 833.664 237.506 831.944 236.226 830.276 C
+236.677 829.572 236.219 828.937 235.935 828.38 c
+234.6 825.76 234.789 822.919 234.615 820.079 c
+234.61 819.994 234.303 819.916 234.311 819.863 c
+234.664 817.528 235.248 815.329 236.127 813.1 c
+236.493 812.17 236.964 811.275 237.114 810.348 c
+237.225 809.662 237.328 808.829 236.92 808.124 C
+238.955 805.234 237.646 802.583 238.815 799.052 c
+239.022 798.427 240.714 796.513 240.251 796.674 c
+237.738 797.545 237.626 797.943 237.449 798.696 c
+237.303 799.319 236.973 800.696 236.736 801.298 c
+236.672 801.462 236.501 803.346 236.423 803.468 c
+234.91 805.85 236.268 805.674 234.898 808.032 C
+233.47 808.712 232.504 809.816 231.381 810.978 c
+231.183 811.182 232.326 811.906 232.145 812.119 c
+231.053 813.408 229.9 814.175 230.236 815.668 c
+230.391 816.358 230.528 817.415 229.784 818.135 c
+f
+226.2 816.4 m
+226.6 809.6 229 808 v
+231.4 806.4 230.2 807.2 227 808.4 c
+223.8 809.6 225 810.4 y
+222.2 810 224.6 808 v
+227 806 230.6 803.6 229 803.6 c
+227.4 803.6 219.8 807.6 219.8 810.4 c
+219.8 813.2 218.8 817.3 y
+219.9 818.1 224.7 818 V
+226.1 817.3 226.2 816.4 V
+f
+1 g
+1 J 0.1 w
+225.4 797.8 m
+216.88 800.591 198.4 797.2 V
+207.431 799.278 226.2 797 v
+236.5 795.75 225.4 797.8 Y
+b
+227.498 797.871 m
+219.252 801.389 200.547 799.608 V
+209.725 800.897 228.226 797.005 v
+238.38 794.869 227.498 797.871 Y
+b
+229.286 797.778 m
+221.324 801.899 202.539 801.514 V
+211.787 802.118 229.948 796.86 v
+239.914 793.975 229.286 797.778 Y
+b
+230.556 797.555 m
+223.732 801.862 206.858 802.96 V
+215.197 802.79 231.078 796.681 v
+239.794 793.328 230.556 797.555 Y
+b
+345.84 787.039 m
+344.91 786.395 345.124 787.576 v
+345.339 788.757 373.547 801.927 377.161 801.677 C
+346.913 788.471 345.84 787.039 V
+b
+342.446 786.4 m
+341.57 785.685 341.691 786.879 v
+341.812 788.073 368.899 803.418 372.521 803.452 C
+343.404 787.911 342.446 786.4 V
+b
+339.16 785.025 m
+338.332 784.253 338.374 785.453 v
+338.416 786.652 358.233 802.149 368.045 804.023 C
+350.015 795.896 339.16 785.025 V
+b
+336.284 783.162 m
+335.539 782.468 335.577 783.547 v
+335.615 784.627 353.449 798.574 362.28 800.26 C
+346.054 792.946 336.284 783.162 V
+b
+0.8 g
+0 J 1 w
+304.6 635.199 m
+289.4 637.599 306.2 639.199 V
+324.2 641.199 328.2 646.399 V
+341.8 655.599 344.6 655.999 v
+347.4 656.399 363.8 659.999 364.2 662.399 c
+364.6 664.799 370.6 667.199 372.2 666.399 c
+373.8 665.599 373.8 656.399 371 655.599 c
+368.2 654.799 349.4 647.599 343 646.399 c
+336.6 645.199 325 637.599 320.2 636.399 c
+315.4 635.199 304.6 635.199 Y
+f
+0 g
+377.6 672.599 m
+374.6 670.999 373.4 668.399 V
+367 657.799 352.8 654.599 V
+329.8 645.599 322 643.599 V
+308.6 638.599 301.2 639.399 V
+294.2 639.199 300.4 637.599 V
+320.6 639.599 324 641.399 V
+339.6 646.599 342.6 649.199 v
+345.6 651.799 363.8 656.799 366 658.799 c
+368.2 660.799 378 669.199 377.6 672.599 C
+f
+318.882 641.089 m
+324.111 641.315 322.958 639.766 v
+321.805 638.216 319.357 639.09 y
+318.882 641.089 l
+f
+311.68 639.737 m
+316.908 639.963 315.756 638.414 v
+314.603 636.864 312.155 637.737 y
+311.68 639.737 l
+f
+301.251 638.489 m
+306.48 638.716 305.327 637.166 v
+304.174 635.617 301.726 636.49 y
+301.251 638.489 l
+f
+293.617 637.945 m
+298.846 638.171 297.693 636.622 v
+296.54 635.072 294.092 635.946 y
+293.617 637.945 l
+f
+335.415 648.487 m
+342.375 648.788 340.84 646.726 v
+339.306 644.664 336.047 645.826 y
+335.415 648.487 l
+f
+345.73 652.912 m
+351.689 656.213 351.155 651.151 v
+350.885 648.595 346.362 650.251 y
+345.73 652.912 l
+f
+354.862 655.726 m
+362.021 659.427 360.287 653.965 v
+359.509 651.515 355.493 653.065 y
+354.862 655.726 l
+f
+364.376 660.551 m
+368.735 665.452 369.801 658.79 v
+370.207 656.252 365.008 657.89 y
+364.376 660.551 l
+f
+326.834 644.003 m
+332.062 644.23 330.91 642.68 v
+329.757 641.131 327.308 642.004 y
+326.834 644.003 l
+f
+1 g
+1 J 0.1 w
+362.434 765.397 m
+361.708 764.732 361.707 765.803 v
+361.707 766.873 379.191 780.137 388.034 781.521 C
+371.935 774.792 362.434 765.397 V
+b
+0 g
+0 J 1 w
+365.4 701.6 m
+387.401 679.199 396.601 675.599 V
+405.801 664.399 401.801 638.399 V
+398.601 630.799 395.401 651.599 V
+398.601 676.799 387.401 660.799 V
+379 670.699 385.4 670.399 V
+388.601 668.399 389.001 669.999 v
+389.401 671.599 381.4 685.199 364.2 699.6 c
+347 714 365.4 701.6 Y
+f
+1 g
+1 J 0.1 w
+307 662.799 m
+306.8 664.599 308.6 663.799 v
+310.4 662.999 404.601 656.799 436.201 632.799 C
+391.001 655.999 307 662.799 V
+b
+317.4 667.199 m
+317.2 668.999 319 668.199 v
+320.8 667.399 457.401 668.399 481.001 635.999 C
+459.001 661.199 317.4 667.199 V
+b
+329 671.199 m
+328.8 672.999 330.6 672.199 v
+332.4 671.399 505.801 684.399 529.401 651.999 C
+519.801 677.599 329 671.199 V
+b
+339 675.999 m
+338.8 677.799 340.6 676.999 v
+342.4 676.199 464.601 714.8 488.201 682.399 C
+474.801 707 339 675.999 V
+b
+281 653.199 m
+280.8 654.999 282.6 654.199 v
+284.4 653.399 302.2 651.199 304.2 612.399 C
+297 654.399 281 653.199 V
+b
+272.2 651.599 m
+272 653.399 273.8 652.599 v
+275.6 651.799 289.8 656.399 287 617.599 C
+288.2 652.799 272.2 651.599 V
+b
+264.2 651.199 m
+264 652.999 265.8 652.199 v
+267.6 651.399 283 650.799 270.6 628.399 C
+280.2 652.399 264.2 651.199 V
+b
+311.526 695.535 m
+311.082 693.536 312.631 694.753 v
+328.699 707.378 361.141 766.28 416.826 771.914 C
+378.518 784.024 311.526 695.535 V
+b
+322.726 697.335 m
+321.363 698.528 323.231 699.153 v
+325.099 699.778 437.541 772.28 476.826 764.314 C
+449.719 771.824 322.726 697.335 V
+b
+301.885 691.233 m
+301.376 689.634 303.087 690.61 v
+312.062 695.73 315.677 752.941 359.254 754.196 C
+326.843 768.91 301.885 691.233 V
+b
+281.962 680.207 m
+280.885 678.921 282.838 679.175 v
+293.084 680.507 314.489 721.778 358.928 716.699 C
+326.962 731.045 281.962 680.207 V
+b
+293.2 686.333 m
+292.389 684.864 294.258 685.489 v
+304.057 688.763 317.141 733.375 361.729 736.922 C
+327.603 744.865 293.2 686.333 V
+b
+274.922 675.088 m
+274.049 674.046 275.631 674.252 v
+283.93 675.331 301.268 708.76 337.264 704.646 C
+311.371 716.266 274.922 675.088 V
+b
+267.323 669.179 m
+266.318 668.134 267.909 668.252 v
+272.077 668.561 302.715 701.64 321.183 686.138 C
+309.168 704.861 267.323 669.179 V
+b
+336.855 701.102 m
+335.654 702.457 337.586 702.842 v
+339.518 703.226 460.221 760.939 498.184 748.073 C
+472.243 758.947 336.855 701.102 V
+b
+303.4 636.799 m
+303.2 638.599 305 637.799 v
+306.8 636.999 322.2 636.399 309.8 613.999 C
+319.4 637.999 303.4 636.799 V
+b
+313.8 638.399 m
+313.6 640.199 315.4 639.399 v
+317.2 638.599 335 636.399 337 597.599 C
+329.8 639.599 313.8 638.399 V
+b
+320.6 639.999 m
+320.4 641.799 322.2 640.999 v
+324 640.199 348.6 636.799 372.2 604.399 C
+336.6 641.199 320.6 639.999 V
+b
+328.225 642.028 m
+327.788 643.786 329.678 643.232 v
+331.568 642.678 352.002 644.577 390.099 610.401 C
+343.924 645.344 328.225 642.028 V
+b
+338.625 646.428 m
+338.188 648.186 340.078 647.632 v
+341.968 647.078 376.802 642.577 428.499 607.601 C
+354.324 649.744 338.625 646.428 V
+b
+298.2 657.999 m
+298 659.799 299.8 658.999 v
+301.6 658.199 355 655.599 385.4 628.799 C
+350.499 653.574 298.2 657.999 V
+b
+288.2 653.999 m
+288 655.799 289.8 654.999 v
+291.6 654.199 316.2 650.799 339.8 618.399 C
+304.2 655.199 288.2 653.999 V
+b
+349.503 651.038 m
+348.938 652.759 350.864 652.345 v
+352.79 651.932 387.86 649.996 441.981 618.902 C
+364.317 653.296 349.503 651.038 V
+b
+357.903 653.438 m
+357.338 655.159 359.264 654.745 v
+361.19 654.332 396.26 652.396 450.381 621.302 C
+373.317 656.096 357.903 653.438 V
+b
+367.503 658.438 m
+366.938 660.159 368.864 659.745 v
+370.79 659.332 413.86 654.996 503.582 620.702 C
+382.917 661.096 367.503 658.438 V
+b
+0 g
+0 J 1 w
+256.2 651.599 m
+261.4 651.999 260.2 650.399 v
+259 648.799 256.6 649.599 y
+256.2 651.599 l
+f
+287 637.599 m
+292.2 637.999 291 636.399 v
+289.8 634.799 287.4 635.599 y
+287 637.599 l
+f
+278.2 637.999 m
+283.4 638.399 282.2 636.799 v
+281 635.199 278.6 635.999 y
+278.2 637.999 l
+f
+182.831 649.818 m
+187.876 648.495 186.218 647.376 v
+184.561 646.256 182.554 647.798 y
+182.831 649.818 l
+f
+184.831 659.418 m
+189.876 658.095 188.218 656.976 v
+186.561 655.856 184.554 657.398 y
+184.831 659.418 l
+f
+177.631 663.818 m
+182.676 662.495 181.018 661.376 v
+179.361 660.256 177.354 661.798 y
+177.631 663.818 l
+f
+0.8 g
+1 J 0.1 w
+257.4 588.799 m
+255.8 588.799 251.8 586.799 V
+249.8 586.799 238.6 583.199 233 573.199 C
+245.4 582.799 257.4 588.799 V
+f
+345.116 496.153 m
+345.257 495.895 345.312 495.475 345.604 495.458 c
+346.262 495.418 347.495 495.117 347.37 495.753 c
+346.522 500.059 345.648 504.996 341.515 506.803 c
+340.876 507.082 339.434 506.669 339.36 505.785 c
+339.233 504.261 339.116 502.912 339.425 501.446 c
+339.725 500.025 341.883 500.015 342.8 501.399 C
+343.736 499.727 344.168 497.884 345.116 496.153 c
+f
+334.038 491.419 m
+334.786 490.006 334.659 488.147 336.074 487.584 c
+336.814 487.29 338.664 488.265 338.246 489.339 c
+337.444 491.4 337.056 493.639 335.667 495.45 c
+335.467 495.712 335.707 496.245 335.547 496.573 c
+334.953 497.793 333.808 498.528 332.4 498.199 C
+331.285 495.996 332.433 493.867 333.955 492.158 c
+334.091 492.006 333.925 491.63 334.038 491.419 c
+f
+294.436 496.609 m
+294.328 496.986 294.29 497.449 294.455 497.77 c
+294.986 498.803 295.779 499.925 295.442 500.947 c
+295.094 502.003 293.978 501.821 293.328 501.252 c
+292.193 500.258 292.144 498.432 291.453 497.073 c
+291.257 496.687 291.308 496.114 290.867 495.723 c
+290.393 495.302 289.953 493.778 290.049 493.207 c
+290.102 492.894 289.919 482.986 290.141 483.249 c
+290.76 483.982 293.81 493.716 293.879 494.608 c
+293.936 495.339 294.668 495.804 294.436 496.609 c
+f
+268.798 503.401 m
+271.432 505.9 274.222 508.861 273.78 512.573 c
+273.664 513.549 271.889 513.022 271.702 512.176 c
+270.9 508.551 268.861 505.89 266.293 503.498 c
+264.097 501.451 262.235 495.107 262 494.599 C
+265.697 499.855 267.954 502.601 268.798 503.401 c
+f
+255.224 509.365 m
+255.747 509.735 255.445 510.226 255.662 510.558 c
+256.615 512.016 257.916 513.262 257.934 515 c
+257.937 515.277 257.559 515.586 257.224 515.362 c
+256.947 515.178 256.605 515.048 256.497 514.918 c
+254.467 512.469 253.067 509.798 251.624 506.986 c
+251.441 506.629 250.297 502.138 250.61 502.027 c
+250.849 501.942 252.569 506.123 252.779 506.237 c
+254.042 506.923 254.054 508.538 255.224 509.365 c
+f
+271.957 489.821 m
+272.401 490.69 273.977 491.892 273.864 492.781 c
+273.746 493.709 274.214 495.152 273.302 494.464 c
+272.045 493.516 268.596 492.167 268.326 486.359 c
+268.3 485.788 271.274 488.481 271.957 489.821 c
+f
+286.4 506.999 m
+286.8 507.667 287.508 507.194 287.967 507.457 c
+288.615 507.829 289.226 508.387 289.518 509.036 c
+290.488 511.185 292.257 513.005 292.4 515.399 C
+290.909 516.804 290.23 514.764 289.6 513.799 C
+288.277 515.446 287.278 513.572 285.978 513.053 c
+285.908 513.025 285.695 513.372 285.62 513.345 c
+284.443 512.905 283.763 511.824 282.765 511.043 c
+282.594 510.909 282.189 511.089 282.042 510.953 c
+281.39 510.35 280.417 510.025 280.137 509.343 c
+279.027 506.636 275.887 504.541 274 496.999 C
+274.381 496.09 278.512 503.641 278.999 504.339 c
+279.835 505.535 279.953 502.678 281.229 503.344 c
+281.28 503.371 281.466 503.133 281.6 502.999 C
+281.794 503.279 282.012 503.508 282.4 503.399 C
+282.4 503.799 282.266 504.355 282.467 504.514 c
+283.704 505.491 283.62 506.559 284.4 507.799 C
+284.858 507.01 285.919 507.729 286.4 506.999 C
+f
+346.2 452.599 m
+353.6 472.999 349.2 484.199 V
+360.6 462.599 356 451.399 V
+355.6 461.799 351.6 466.799 V
+347.6 453.999 346.2 452.599 V
+f
+331.4 455.199 m
+336.8 463.999 328.8 482.399 V
+328 461.999 321.2 450.999 V
+335.4 471.199 331.4 455.199 V
+f
+321.4 457.199 m
+321.2 477.199 321.6 480.199 V
+317.8 463.599 307.6 453.999 V
+322 465.999 321.4 457.199 V
+f
+311.8 489.199 m
+317.8 475.599 307.8 457.199 V
+314.2 469.399 309.4 476.399 V
+312 479.799 311.8 489.199 V
+f
+292.6 457.599 m
+291.6 473.199 293.4 475.399 V
+293.6 481.799 293.2 482.799 V
+297.2 488.999 297.4 481.599 V
+298.8 473.799 301.6 469.199 V
+305.2 463.799 305 457.399 V
+295 487.599 292.6 457.599 V
+f
+289 485.199 m
+282.4 474.399 280.6 455.399 V
+279.2 461.599 283 475.999 V
+287.2 491.399 289 485.199 V
+f
+267.2 465.399 m
+272.2 470.799 273.6 475.799 V
+277.2 491.599 270.8 482.999 V
+271 474.999 262.8 467.599 V
+267.6 469.999 267.2 465.399 V
+f
+261.4 470.399 m
+264.8 487.799 265.6 488.599 V
+267.4 491.999 264.6 488.799 V
+255.8 469.599 251.8 462.999 V
+259.8 472.199 261.4 470.399 V
+f
+255.6 486.999 m
+267.2 509.399 245.4 483.599 V
+256.4 493.399 255.6 486.999 V
+f
+240.2 501.599 m
+245 520.399 247.6 520.199 V
+255.8 529.199 249.2 518.599 V
+243.2 508.999 243.8 499.199 V
+243.2 508.799 240.2 501.599 V
+f
+570.5 513 m
+558.5 523 556 526.5 V
+569.5 508 569.5 501 V
+572 508.5 570.5 513 V
+f
+576 535 m
+555 550 551.5 557.5 V
+578 528 578 523.5 V
+578.5 532.5 576 535 V
+f
+593 689 m
+581 697 579.5 695 V
+590 688.5 592.5 680 V
+591 689 593 689 V
+f
+601.5 608.5 m
+584 620.5 l
+603 603.5 603.5 599.5 V
+601.5 608.5 L
+f
+0 g
+1 w
+210.75 631 m
+232.75 626.25 l
+S
+261 469 m
+260.5 472.5 251.5 462 v
+S
+266.5 464 m
+268.5 470.5 262 466 v
+S
+320.5 455.5 m
+322 466.5 310.5 453.5 v
+S
+
+showpage
+
+% Modification Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr> - 18 Dec. 1997
+%% %%Trailer
+countdictstack InitDictCount sub { end } repeat
+cleartomark
+restore
+grestore
diff --git a/graphics/pstricks/contrib/pst-mirror/doc/createEPS/xb.pdf b/graphics/pstricks/contrib/pst-mirror/doc/createEPS/xb.pdf
new file mode 100644
index 0000000000..51f7dccf27
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-mirror/doc/createEPS/xb.pdf
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-mirror/doc/createEPS/xc.pdf b/graphics/pstricks/contrib/pst-mirror/doc/createEPS/xc.pdf
new file mode 100644
index 0000000000..1272e7b5ab
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-mirror/doc/createEPS/xc.pdf
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-mirror/doc/pst-mirror-doc.pdf b/graphics/pstricks/contrib/pst-mirror/doc/pst-mirror-doc.pdf
index 33980a133a..9204f3a604 100644
--- a/graphics/pstricks/contrib/pst-mirror/doc/pst-mirror-doc.pdf
+++ b/graphics/pstricks/contrib/pst-mirror/doc/pst-mirror-doc.pdf
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-mirror/doc/pst-mirror-doc.tex b/graphics/pstricks/contrib/pst-mirror/doc/pst-mirror-doc.tex
index 9623d2230e..8221a0aec6 100644
--- a/graphics/pstricks/contrib/pst-mirror/doc/pst-mirror-doc.tex
+++ b/graphics/pstricks/contrib/pst-mirror/doc/pst-mirror-doc.tex
@@ -1034,9 +1034,9 @@ un plan d\'{e}fini comme pour le texte.
{\psset{normale=0 0,Xorigine=15,Yorigine=0,Zorigine=0}
\pstSphereFrame[fillstyle=solid,fillcolor=black](-70,-50)(70,50)
\pstSphereGrid[linecolor=white,linewidth=0.2mm,grille=10,Ymin=-50,Ymax=50,Xmax=70,Xmin=-70](15,0,0)}%
-\pstSphereImage[normale=0 0,scale=0.75](15,0,0){images/donaldNB.eps}
+\pstSphereImage[normale=0 0,scale=0.75](15,0,0){images/tiger-c.eps}
\pstSphereText[fillstyle=solid,fillcolor=white,linecolor=white,fontscale=17,fontname=Symbol,
- normale=0 0,isolatin=false](15,0,25){Donald}
+ normale=0 0,isolatin=false](15,0,25){tiger-b}
\parametricplotSphere[plotpoints=3600,linecolor=white,linewidth=0.5mm,normale=0 0,Xorigine=15,%
Yorigine=30,Zorigine=10]{0}{360}{%
/Radius 10 t 4 mul cos mul def
@@ -1058,7 +1058,7 @@ un plan d\'{e}fini comme pour le texte.
\pstSphereGrid[linecolor=white,linewidth=0.2mm,grille=10,Ymin=-50,Ymax=50,Xmax=70,Xmin=-70](15,0,0)}%
\pstSphereImage[normale=0 0,scale=0.75](15,0,0){images/donaldNB.eps}
\pstSphereText[fillstyle=solid,fillcolor=white,linecolor=white,fontscale=17,fontname=Symbol,
- normale=0 0,isolatin=false](15,0,25){Donald}
+ normale=0 0,isolatin=false](15,0,25){tiger.eps}
\parametricplotSphere[plotpoints=3600,linecolor=white,linewidth=0.5mm,normale=0 0,Xorigine=15,%
Yorigine=30,Zorigine=10]{0}{360}{%
/Radius 10 t 4 mul cos mul def
@@ -1084,7 +1084,7 @@ les plus \'{e}loign\'{e}s de boule, puis ceux qui sont de plus en plus proche de
\psframe*[linecolor=black!15](-4,-4)(4,4)
\pscircle*[linecolor=blue!50]{!5 2 sqrt div}
\psset{Rayon=5}
-\pstSphereImage[normale=0 0](5,0,0){images/donaldNB.eps}
+\pstSphereImage[normale=0 0](5,0,0){images/tiger-c.eps}
%\pstSphereGrid[linecolor=gray,linewidth=0.01,grille=5,Ymin=-100,Ymax=100,Xmax=100,Xmin=-100](5,0,0)%
\end{pspicture}
@@ -1093,7 +1093,7 @@ les plus \'{e}loign\'{e}s de boule, puis ceux qui sont de plus en plus proche de
\psframe*(-5,-5)(5,5)
\pscircle*[linecolor=blue!50]{!5 2 sqrt div}
\psset{Rayon=5}
-\pstSphereImage[normale=0 0](5,0,0){images/donaldNB.eps}
+\pstSphereImage[normale=0 0](5,0,0){images/tiger-c.eps}
%\pstSphereGrid[linecolor=gray,linewidth=0.01,grille=5,Ymin=-100,Ymax=100,Xmax=100,Xmin=-100](5,0,0)%
\end{pspicture}
\end{lstlisting}
diff --git a/graphics/pstricks/contrib/pst-mirror/tex/pst-mirror.tex b/graphics/pstricks/contrib/pst-mirror/tex/pst-mirror.tex
index 89917b065b..e319e9dd6b 100644
--- a/graphics/pstricks/contrib/pst-mirror/tex/pst-mirror.tex
+++ b/graphics/pstricks/contrib/pst-mirror/tex/pst-mirror.tex
@@ -1,4 +1,4 @@
-%% $Id: pst-mirror.tex 248 2021-09-14 08:57:11Z herbert $
+%% $Id: pst-mirror.tex 899 2024-05-17 18:56:24Z herbert $
%%
%% This is file `pst-mirror.tex',
%%
@@ -26,8 +26,8 @@
\ifx\PSTtoolsLoaded\endinput\else\input pst-tools.tex \fi
\ifx\MultidoLoaded\endinput \else\input multido.tex \fi
%
-\def\fileversion{1.02}
-\def\filedate{2021/09/14}%
+\def\fileversion{1.02a}
+\def\filedate{2024/05/17}%
\message{`pst-mirror v\fileversion, \filedate\space (ml,hv)}%
%
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
diff --git a/graphics/pstricks/contrib/pst-node/Changes b/graphics/pstricks/contrib/pst-node/Changes
index cac34e6912..6ef6294b36 100644
--- a/graphics/pstricks/contrib/pst-node/Changes
+++ b/graphics/pstricks/contrib/pst-node/Changes
@@ -1,5 +1,7 @@
----- pst-node.tex
-1.43 2021-09-15 - fix for lualatex and empty value in \psk@nrot
+1.45 2024-07-10 - fix \algparnode (Erich Schmidt)
+1.44 2024-07-04 - modified \psparnode and \algparnode (Erich Schmidt)
+1.43 2022-10-31 - fix for lualatex and empty value in \psk@nrot
1.42a 2020-04-01 - fix typo in the documentation
1.42 2019-03-03 - bugfix for \rnode inside \psframebox*
1.41 2017-12-30 - added \psnpolygon
@@ -56,12 +58,14 @@
----- pst-node.sty
+1.02 2024-07-10 - update package versions (hv)
1.01 2012-09-18 - update package versions (hv)
1.00 2011-06-05 - make ancient variant 97 available (hv)
2008-12-12 first version (hv)
----- pst-node.pro
+1.15a 2024-07-10 - typos
1.15 2014-01-27 - comment out empty lines
1.14 2012-09-18 - add subroutines for global dict
1.13 2011-11-21 - fix bug for xelatex and scaling
diff --git a/graphics/pstricks/contrib/pst-node/README b/graphics/pstricks/contrib/pst-node/README
index 3f4fd08e59..29b62ef30c 100644
--- a/graphics/pstricks/contrib/pst-node/README
+++ b/graphics/pstricks/contrib/pst-node/README
@@ -1,13 +1,10 @@
-This version of pst-node uses the xkeyval package, the extended
-version of keyval.
-
Save the files pst-node.sty|.tex|.pro in a directory, which is part of your
local TeX node. Then do not forget to run texhash to update this node
if these packages are new to your TeX distribution.
For more information see the documentation of your LaTeX distribution
on installing packages into your LaTeX distribution or the
TeX Frequently Asked Questions:
-(http://www.tex.ac.uk/cgi-bin/texfaq2html?label=instpackages).
+(https://texfaq.org/#installing).
pst-node needs pstricks, which should be part of your
local TeX installation, otherwise get it from a CTAN server, f.ex.
diff --git a/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.bib b/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.bib
new file mode 100644
index 0000000000..f2a5d82e84
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.bib
@@ -0,0 +1,35 @@
+@Manual{pstricks2007,
+ Title = {PSTricks - {\PS} macros for Generic TeX. Version 1.5},
+ Author = {Timothy Van Zandt},
+ Organization = {},
+ Address =
+ {\url{http://www.tug.org/tex-archive/graphics/pstricks/base/doc/pst-user.pdf}},
+ Note = {},
+ year = 2007,
+}
+
+
+@Manual{siart,
+ Title = {Befehls\"ubersicht f\"ur \texttt{PSTricks} (Version
+ 0.93},
+ Author = {Uwe Siart},
+ Organization = {},
+ Address =
+ {\url{http://www.siart.de/typografie/pstricks-referenz.pdf}},
+ Note = {},
+ year = 2009,
+}
+
+
+
+
+@Book{PSTricks2,
+ author = {Herbert Vo\ss},
+ title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX},
+ edition = {fünfte},
+ publisher = {DANTE -- Lehmanns},
+ year = {2008},
+ address = {Heidelberg/Hamburg}
+}
+
+
diff --git a/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.pdf b/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.pdf
new file mode 100644
index 0000000000..cb72a62b43
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.pdf
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.tex b/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.tex
new file mode 100644
index 0000000000..8ca96eab4e
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-node/doc/psmatrix-docDE.tex
@@ -0,0 +1,1155 @@
+%% $Id: psmatrix-docDE.tex 696 2017-12-30 19:01:07Z herbert $
+\listfiles
+\documentclass[11pt,ngerman,a4paper,BCOR10mm,DIV12,bibliography=totoc,parskip,smallheadings,
+ headexclude,footexclude,oneside]{pst-doc}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+
+%\setlength{\parindent}{0pt}
+%\setlength{\parskip}{1ex plus 0.2ex minus 0.1ex}
+
+\usepackage{pst-node,pst-grad,pstricks-add,pst-blur,float}
+\def\tab#1{\tabular{@{}l@{}}#1\endtabular}
+\def\OptEinh{\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Einheit}}\kern1pt}
+
+\let\myFV\fileversion
+
+\usepackage{tabularx}
+\usepackage{longtable}
+
+\addbibresource{\jobname.bib}
+
+
+\lstset{explpreset={pos=l,rframe=},frame=,backgroundcolor=\color{white},literate={ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+ {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+ {ß}{\ss}1}
+
+
+\usepackage{bibgerm}
+
+%\psset{subgriddiv=0,gridlabels=7pt,gridcolor=black!15}
+%\hypersetup{pdfauthor={Christine Roemer},pdftitle={psmatrix}}
+%
+\def\bgImage{\hspace*{1cm}%
+\begin{psmatrix}[colsep=0.8cm,rowsep=0.4cm,mcol=c,emnode=r]
+ & & semantische Ebene & &
+ \psshadowbox[framearc=0.25]{Bedeutung}\\
+ & & morphologische Ebene & & \\
+[name=A]\tab{pragmatische\\Ebene} & [name=B]& & & \\
+ & & syntaktische Ebene & & \\
+ & & \tab{phonetisch-phonologische Ebene\\graphische Ebene}
+ & & \psshadowbox[framearc=0.25]{Formativ}
+\end{psmatrix}
+\psset{nodesep=3pt,arrowscale=1.5,arrows=->,
+ armA=6mm,angleB=180}
+\ncline{A}{B}
+\ncangles{A}{1,3} \ncangles{A}{2,3}
+\ncangles{A}{4,3} \ncangles{A}{5,3}
+\ncline{1,3}{1,5} \ncline{5,3}{5,5}
+\ncline{<->}{1,5}{5,5}%
+}
+
+\lstset{basicstyle=\ttfamily\footnotesize}
+
+\begin{document}
+\author{Timothy van Zandt\\Herbert Vo\ss}
+\docauthor{Christine R\"omer}
+\date{\today}
+\title{Schematische \"Ubersichten mit \texttt{psmatrix}}
+
+\maketitle%
+
+\tableofcontents
+
+\clearpage
+\begin{abstract}
+Mit der
+\texttt{psmatrix}-Umgebung\index{psmatrix@\texttt{psmatrix}-Umgebung} k\"onnen au{\ss}erhalb
+einer mathematischen
+Umgebung vielfältige schematische \"Ubersichten gesetzt werden. Das Makro \texttt{psmatrix}
+wird nicht extra geladen. Es ist in verschiedene Pakete des
+PSTricks-Verbundes\index{PSTricks-Verbund}
+(\texttt{pstricks,\\pst-node,pst-grad})\index{pstricks@\texttt{pstricks}}
+\index{pst-node@\texttt{pst-node}} \index{pst-grad@\texttt{pst-grad}} integriert
+ und wird mit ihnen aufgerufen.
+
+\vfill\noindent
+Danke f\"ur die Unterst\"utzung bei der Erstellung dieser Dokumentation an Herbert Vo\ss.
+\end{abstract}
+
+
+\section{Einf\"uhrung}
+
+Mit der
+\texttt{psmatrix}-Umgebung\index{psmatrix@\texttt{psmatrix}-Umgebung} k\"onnen
+au{\ss}erhalb einer mathematischen
+Umgebung schematische \"Ubersichten gesetzt werden. Sie basiert auf dem
+Tabellenmakro \texttt{array}\index{array@\texttt{array}} und gleicht ihm deshalb in der
+Syntax. Es hat jedoch nicht dessen
+Einschr\"ankungen bez\"uglich Verbindungen über die Zellen und Zeilen hinweg. Das Makro
+\texttt{psmatrix}
+wird nicht extra geladen. Es ist in verschiedene Pakete des
+PSTricks-Verbundes\index{PSTricks-Verbund}
+(\texttt{pstricks,\\pst-node,pst-grad})\index{pstricks@\texttt{pstricks}}
+\index{pst-node@\texttt{pst-node}} \index{pst-grad@\texttt{pst-grad}} integriert und
+wird mit ihnen aufgerufen.
+
+\section{Erstellen einer Matrix}
+\subsection{Einordnung}
+
+Das Makro \bs{\texttt{psmatrix}} arbeitet sowohl in einer \TeX - als auch
+\LaTeX-Umgebung:
+
+\begin{BDef}
+\Lcs{psmatrix}\OptArgs \ldots\ \Lcs{endpsmatrix} & \% TeX-Version\\
+\LBEG{psmatrix}\OptArgs \ldots \ \LEND{psmatrix} & \% LaTeX-Version
+\end{BDef}
+
+Da mit der \TeX-Version einige Einschr\"ankungen verbunden sind, wird nur auf
+die \LaTeX-Variante eingegangen. Das Grundprinzip des Strukturaufbaus
+stellt eine Knoten- und Knotenverbindungszuordnung dar. Diese kann mehrfach
+geschachtelt und sowohl bei der Knotenbelegung als auch
+Verbindungsdarstellung in verschiedener Weise ausgestalltet werden. Dazu
+stellt der PSTricksverbund zahlreiche Makros bereit.
+
+\subsection{Matrixgrundstruktur}\index{Matrixgrundstruktur}
+
+Die Knoten werden in der Art einer Tabelle innerhalb der
+\texttt{psmatrix}-Umgebung\index{psmatrix@\texttt{psmatrix}-Umgebung} angeordnet.
+
+\begin{LTXexample}[width=.3\linewidth]
+\begin{psmatrix}[rowsep=0.2cm]
+1 & 2 & 3 \\
+X & Y & Z
+\end{psmatrix}
+\end{LTXexample}
+
+
+\section{Zuordnung Knoten zu Verbindungen}
+
+Die Matrix entsteht durch die Zuordnung von Knoten zu Verbindungen. Die
+Knoten werden in die Zellen in der \texttt{psmatrix}-Umgebung eingetragen
+(siehe obiges Beispiel). Nach \bs{\texttt{end}}\{\texttt{psmatrix}\} werden die gew\"unschten
+Linien definiert. Grunds\"atzlich geschieht dies nach dem Schema
+
+\psframebox{\bs
+nc\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Verbindung}}
+[\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Optionen}}]
+\{Koordinaten ZelleA\}\{Koordinaten ZelleB\}}
+
+Die Koordinaten\index{Zellen-Koordinaten} werden, wenn den Zellen keine
+Namen gegeben werden (siehe
+Parameter \texttt{name}),
+durch abz\"ahlen gewonnen: jeweils erst die Zeile und danach durch Komma abgetrennt
+die Zelle.
+
+\vspace{4mm}
+\begin{LTXexample}[width=.3\linewidth]
+\begin{psmatrix}[rowsep=0.2cm]
+1 & 2 & 3 \\
+X & Y & Z
+\end{psmatrix}
+\ncline[linecolor=red]{1,1}{2,2}
+\ncline[linecolor=green]{1,3}{2,2}
+\ncline[linestyle=dotted]{<-}{1,2}{2,1}
+\ncline[linestyle=dashed]{->}{1,2}{2,3}
+\end{LTXexample}
+
+
+\section{Knotenparameter}
+\subsection{mnode}\index{mnode@\texttt{mnode}}
+
+Der Parameter \texttt{mnode=<Knotenart>} legt die Knotenart fest. Das kann lokal für
+einzelne Knoten oder global für die ganze Matrix erfolgen (siehe folgende
+Beispiele). Dazu muss neben
+dem Paket \texttt{pstricks}\index{pstricks@\texttt{pstricks}} auch
+\texttt{pst-node}\index{pst-node@\texttt{pst-node}} geladen werden.
+
+\begin{LTXexample}[width=.2\linewidth]
+\begin{psmatrix}[mnode=circle,rowsep=0.2cm,colsep=1cm]
+1 & 2 \\
+X & Y
+\end{psmatrix}
+\end{LTXexample}
+
+\begin{LTXexample}[width=.2\linewidth]
+\begin{psmatrix}[mnode=circle,rowsep=0.2cm,colsep=1cm]
+1 & 2 \\
+[mnode=dia] X & Y
+\end{psmatrix}
+\end{LTXexample}
+
+Folgende \textbf{Knotenarten}\index{Knotenarten} stehen zur Verf\"ugung. Ihr Aufruf erfolgt mit
+\texttt{mnode=} über die in Klammern angegebenen K\"urzel.
+
+\begin{compactitem}
+ \item \texttt{Rnode} (R):\index{Rnode@\texttt{Rnode} (R)}
+ Es wird damit das Eingetragene zur Basislinie
+ positioniert. Mittels Optionen kann dies variiert werden.
+\vspace{2mm}
+\begin{LTXexample}[width=.2\linewidth]
+\begin{psmatrix}[rowsep=0.2cm,linecolor=blue,radius=0.5]
+X & [mnode=R,vref=0pt] Y
+\end{psmatrix}
+\ncline{1,1}{1,2}
+\end{LTXexample}
+
+\item \texttt{Cnode} (C):\index{Cnode@\texttt{Cnode} (C)} Ungef\"ullte Kreise werden gesetzt.
+Deren Radius mit dem Parameter \texttt{radius}\index{radius@\texttt{radius}} modifiziert
+werden kann. Es muss irgendetwas eingetragen werden, was dann aber nicht erscheint.
+\vspace{2mm}
+\begin{LTXexample}[width=.3\linewidth]
+\begin{psmatrix}[mnode=C,rowsep=0.2cm,linecolor=blue,radius=0.5]
+ X & Y
+\end{psmatrix}
+\end{LTXexample}
+\vspace{2mm}
+
+\item \texttt{pnode} (p):\index{pnode@\texttt{pnode} (p)} Ein Knoten mit dem Radius Null, ein
+leerer Knoten (siehe folgendes Beispiel, wo der Knoten 1 leer gesetzt wird).
+
+\item \texttt{Circlenode}
+(Circle):\index{Circlenode@\texttt{Circlenode} (Circle)} Ein Knoten, der von einem Kreis
+umschlossen
+wird, dessen Umfang richtet sich nach dem Inhalt. Er kann mit der Option
+\texttt{radius} modifiziert werden (siehe obiges Beispiel).
+
+\vspace{2mm}
+\begin{LTXexample}[width=.42\linewidth]
+\begin{psmatrix}[mnode=Circle,radius=1cm,rowsep=0.2cm]
+ X & Y \\
+[mnode=p] 1 & 2
+\end{psmatrix}
+\end{LTXexample}
+\vspace{2mm}
+
+\item \texttt{dianode} (dia):\index{dianode@\texttt{dianode} (dia)} Ein Knoten, der von
+einer Raute umschlossen
+wird, deren Umfang richtet sich nach dem Inhalt
+
+\vspace{2mm}
+\begin{LTXexample}[width=.2\linewidth]
+\begin{psmatrix}[mnode=dia,rowsep=0.2cm,colsep=0.7cm]
+ X & Y \\
+ 1 & 2
+\end{psmatrix}
+\end{LTXexample}
+\vspace{2mm}
+
+\item \texttt{dotnode} (dot):\index{Rnode@\texttt{dotnode} (dot)} Es wird im unmarkierten
+Fall ein gef\"ullter Kreisknoten gesetzt, der
+u.\,a. \"uber den Parameter \texttt{dotscale} gesteuert
+werden kann.
+
+\vspace{2mm}
+\begin{LTXexample}[width=.2\linewidth]
+\begin{psmatrix}[mnode=dot,rowsep=0.2cm]
+[mnode=dot,dotscale=3] X & Y \\
+[mnode=dot,dotscale=2,dotstyle=triangle]1&2
+\end{psmatrix}
+\end{LTXexample}
+\vspace{2mm}
+
+\item \texttt{rnode} (r):\index{Rnode@\texttt{rnode} (r)}
+Unterscheidet sich von \bs{rnode} (R) in der
+Festlegung des Knotenzentrums, das ohne optionale Parameter das Zentrum
+der umgebenden Box ist. Eingesetzter "`Text"' erscheint pur.
+
+\vspace{2mm}
+\begin{LTXexample}[width=.2\linewidth]
+\begin{psmatrix}[mnode=r,rowsep=0.2cm]
+ X & Y \\
+ 1 & 2
+\end{psmatrix}
+\end{LTXexample}
+\vspace{2mm}
+
+
+
+\item \texttt{fnode} (f):\index{fnode@\texttt{fnode} (f)} Ein leerer
+Rahmen, dessen Gr\"o{"s}e \"uber
+\texttt{framesize=} und
+Koordinatenfestlegungen beeinflusst werden kann.%\footnote{Diese Funktion
+%ist bisher nur eingeschr\"ankt nutzbar, die K\"astchen einer Zeile werden nicht getrennt.
+%Mit "`Text"' gef\"ullte K\"astchen k\"onnen einfach mit \bs{\texttt{fbox}\{
+%\}} oder \bs{\texttt{psframebox}\{ \}} gesetzt werden.}
+
+\vspace{2mm}
+\begin{LTXexample}[width=.2\linewidth]
+\begin{psmatrix}[mnode=f,rowsep=0.2cm]
+ X & Y \\
+ 1 & 2
+\end{psmatrix}
+\end{LTXexample}
+\vspace{2mm}
+
+
+\item \texttt{circlenode}
+(circle):\index{circlenode@\texttt{circlenode} (circle)} Entspricht
+weitgehend \texttt{Circlenode}. Es
+kann aber nicht der Radius ge\"andert werden.
+
+\vspace{2mm}
+\begin{LTXexample}[width=.2\linewidth]
+\begin{psmatrix}[mnode=circle,rowsep=0.2cm,colsep=1cm]
+ X & Y \\
+ 1 & 2
+\end{psmatrix}
+\end{LTXexample}
+\vspace{2mm}
+
+\item \texttt{ovalnode} (oval):\index{ovalnode@\texttt{ovalnode} (oval)} Ovaler Knoten,
+dessen Gr\"o"se aus dem Inhalt resultiert.
+
+\vspace{2mm}
+\begin{LTXexample}[width=.2\linewidth]
+\begin{psmatrix}[mnode=oval,rowsep=0.2cm,colsep=0.7cm]
+ XX & YY \\
+ 1 & 2
+\end{psmatrix}
+\end{LTXexample}
+\vspace{2mm}
+
+
+\item \texttt{trinode} (tri):\index{trinode@\texttt{trinode} (tri)}
+Dreieck, dessen Gr\"o"se aus dem Inhalt resultiert.
+
+\vspace{2mm}
+\begin{LTXexample}[width=.2\linewidth]
+\begin{psmatrix}[mnode=tri,rowsep=0.2cm,colsep=0.7cm]
+ X & Y \\
+ 1 & 2
+\end{psmatrix}
+\end{LTXexample}
+\vspace{2mm}
+
+Mit der Option \texttt{trimode}\index{trimode@\texttt{trimode}} kann die Lage der Dreiecke verändert
+werden. Die Sternversion verkleinert die Basis und erzeugt aus
+stumpfwinkligen (Winkel zwischen 90 und 180 Grad) spitzwinkelige (kleiner
+als 90 Grad) Dreiecke.
+\vspace{2mm}
+\begin{table}[H]
+\centering
+\caption{Ver\"anderung der Dreieckslage}
+\begin{tabular}{@{}ll@{}}
+Befehl & Lage des Dreiecks \\ \hline
+\texttt{trimode=U} & Spitze oben \\
+\texttt{trimode=D} & Spitze unten \\
+\texttt{trimode=R} & Spitze rechts \\
+\texttt{trimode=L} & Spitze links
+\end{tabular}
+\end{table}
+
+\vspace{2mm}
+\begin{LTXexample}[width=.25\linewidth]
+\begin{pspicture}(0,-2)(3,2)
+\begin{psmatrix}[mnode=tri,rowsep=0.2cm,colsep=0.7cm]
+ [trimode=U] Dreieck \\
+ [trimode=*D]Dreieck
+\end{psmatrix}
+\end{pspicture}
+\end{LTXexample}
+\vspace{2mm}
+
+
+ \item \texttt{no node} (none):\index{no node@\texttt{no node} (none)} Ohne Knoten, was für das
+ Einf\"ugen von Verbindungslinien sinnvoll sein kann.
+
+
+\end{compactitem}
+
+
+
+\subsection{emnode}\index{emnode@\texttt{emnode}}
+
+Mit \texttt{emnode} k\"onnen verschiedene Arten (Parameter wie bei
+\texttt{mnode} von Knoten für "`leere"' Zellen gesetzt
+werden. Es muss also nichts in die Zellen eingetragen werden. Wie
+nachfolgendes Beispiel auch belegt, kann es dabei auf der rechten Seite zu
+fehlerhaften Ausgaben kommen, weil
+\bs{pst-node}\index{pst-node@\texttt{pst-node}} da noch nicht v\"ollig korrekt
+arbeitet.
+
+
+\vspace{2mm}
+\begin{LTXexample}[width=.2\linewidth]
+\begin{psmatrix}[emnode=circle,rowsep=0.2cm,colsep=2cm]
+ & \\
+ &
+\end{psmatrix}
+\end{LTXexample}
+\vspace{2mm}
+
+\subsection{nodealign}\index{nodealign@\texttt{nodealign}}
+
+Der Parameter \texttt{nodealign} kann in [\texttt{nodealign=true}]
+abge\"andert werden, um das Zentrum des Knotens auf die Basisebene zu
+verschieben (vgl. \cite[S.\,259]{PSTricks2}).
+
+\section{Parameter zu Zellen und Zeilen}
+
+\subsection{name}\index{name@\texttt{name}}
+
+Der Parameter \texttt{name} erm\"oglicht es, jeder Zelle einen
+selbstgew\"ahlten Namen zu geben, der am Anfang einer Zelle eingef\"ugt werden
+muss. Dies kann beim Setzen von Linien die
+Arbeit erleichtern, man muss dann nicht die Positionen ausz\"ahlen.
+
+\vspace{2mm}
+\begin{LTXexample}[width=.4\linewidth]
+\begin{psmatrix}[emnode=r,colsep=0.4cm,
+ rowsep=0.4cm]
+ & [name=A] Buch & \\
+[name=B]Fachbuch & [name=C]Lehrbuch & [name=D]Roman
+\end{psmatrix}
+\psset{nodesep=3pt,arrows=->}
+\ncline{A}{B} \ncline{A}{C} \ncline{A}{D}
+\end{LTXexample}
+\vspace{2mm}
+
+
+Au"serdem ist es \"uber diese Zellenfestlegung m\"oglich, auch \Lcs{pcline} und
+\Lcs{psline} in einer Matrixumgebung zu benutzen. Diese nehmen die
+Koordinatenargumente (hier gleich Zellennamen) aber in runden Klammern, wie
+in dem folgenden Beispiel zu sehen ist.
+
+\vspace{2mm}
+\begin{LTXexample}[width=.45\linewidth]
+\begin{psmatrix}[emnode=r,colsep=1cm,
+ rowsep=0.4cm]
+[name=A]Buch \psspan{3} & \\[1cm]
+[name=B]Fachbuch & [name=C]Lehrbuch &
+[name=D]Roman
+\end{psmatrix}
+\psset{nodesep=3pt,arrows=->,linecolor=red}
+\psline(A)(C)
+\pcline(A)(B)
+\nbput*[nrot=:D]{\footnotesize \texttt{pcline}}
+\ncline{A}{D}
+\naput*[nrot=:U]{\footnotesize \texttt{ncline}}
+\end{LTXexample}
+
+\Lcs{pcline} geht immer vom Zentrum aus und kann nicht an einer
+Umgebungsbox beginnen oder aufh\"oren. Sie kann deshalb von
+\texttt{nodesep} nicht beeinflusst werden. Andere Parameter --
+beispielsweise \texttt{offset=},\index{offset@\texttt{offset}} der eine vertikale Verschiebung
+erm\"oglicht, -- k\"onnen das aber schon. \Lcs{psline}
+reagiert wiederum darauf nicht.
+
+\vspace{2mm}
+\begin{LTXexample}[width=.3\linewidth]
+\begin{psmatrix}[emnode=r,colsep=1cm,rowsep=0.4cm]
+[name=A]Fachbuch & \\[1cm]
+ & [name=C]Roman
+\end{psmatrix}
+\psset{nodesep=3pt,arrows=<-,linecolor=red,offset=0.3cm}
+\pcline(A)(C)
+\pcline(C)(A)
+\end{LTXexample}
+
+\begin{LTXexample}[width=.3\linewidth]
+\begin{psmatrix}[emnode=r,colsep=1cm,rowsep=0.4cm]
+ [name=A] Fachbuch & \\[1cm]
+ & [name=C] Roman
+\end{psmatrix}
+\psset{nodesep=3pt,arrows=->,linecolor=red,offset=1cm}
+\psline(A)(C)
+\psline(C)(A)
+\end{LTXexample}
+
+
+
+\subsection{mcol}\index{mcol@\texttt{mcol}}
+
+Mit \texttt{mcol} kann lokal und global der horizontale
+Zellenabstand\index{Zellenabstand!horizontal}
+mit den Optionen \texttt{l,r,c} modifiziert werden.
+
+\vspace{2mm}
+\begin{LTXexample}[width=.4\linewidth]
+\begin{psmatrix}[emnode=r,colsep=0.4cm,
+ rowsep=0.4cm,mcol=r]
+ & [name=A] Buch & \\
+[name=B]Fachbuch & [name=C]Lehrbuch & [name=D]Roman
+\end{psmatrix}
+\psset{nodesep=3pt,arrows=->}
+\ncline{A}{B} \ncline{A}{C} \ncline{A}{D}
+\end{LTXexample}
+\vspace{2mm}
+
+\begin{LTXexample}[width=.4\linewidth]
+\begin{psmatrix}[emnode=r,colsep=0.4cm,
+ rowsep=0.4cm,mcol=l]
+ & [name=A]Buch & \\
+[name=B]Fachbuch & [name=C]Lehrbuch & [name=D]Roman
+\end{psmatrix}
+\psset{nodesep=3pt,arrows=->}
+\ncline{A}{B} \ncline{A}{C} \ncline{A}{D}
+\end{LTXexample}
+
+\subsection{rowsep und colsep}\index{Abstand!Zellen und Zeilen}
+
+Mit \texttt{rowsep}\index{rowsep@\texttt{rowsep}} kann man den
+vertikalen und mit \texttt{colsep}\index{colsep@\texttt{colsep}}
+den horizontalen Abstand zwischen
+den Zeilen bzw. Zellen regulieren; welchen hinzuf\"ugen oder mit einem
+negativen Wert reduzieren (siehe Beispiele bei \texttt{name}).
+
+\subsection{mnodesize}\index{mnodesize@\texttt{mnodesize}}
+
+Im Defaultfall wird die Breite der Zellen\index{Zelle!Breite} von deren Inhalt bestimmt;
+innerhalb einer Zellenspalte von der mit dem gr\"o"sten Umfang. Mit
+\texttt{mnodesize=} kann allen Spalten dieselbe Breite gegeben werden.
+Dabei ist zu beachten, dass kein automatischen
+Zeilenumbruch\index{Zelle!Zeilenumbruch} in den Zellen
+erfolgt. Man kann in eine Zelle jedoch mehrere Zeilen über eine Tabelle
+einbringen.
+
+\begin{LTXexample}[width=.52\linewidth]
+\begin{psmatrix}[emnode=r,
+colsep=-0.4cm,rowsep=0.6cm,
+mnodesize=3cm]
+& [name=A]
+ \begin{tabular}{c}Grafische\\Grundelemente\end{tabular} & \\
+[name=B]Linien & [name=C]Polygone &
+[name=D]Rahmen
+\end{psmatrix}
+\psset{nodesep=3pt,arrows=->}
+\ncline{A}{B} \ncline{A}{C}
+\ncline{A}{D}
+\end{LTXexample}
+
+Wenn der von \texttt{mnodesize=} festgelegte Raum nicht ausreichend ist
+erweitert sich einfach die Zelle.
+
+\subsection{psspan}\index{psspan@\texttt{psspan}}
+
+Mit \texttt{psspan\{n\}} k\"onnen Zellen analog zu
+\bs{multicolumn}\index{multicolumn@\texttt{\textbackslash{multicolumn}}} mehrere
+Zellen\index{Zellen!zusammenfassen} zusammengefasst werden.
+
+\begin{LTXexample}[width=.4\linewidth]
+\begin{psmatrix}[emnode=r,colsep=0.4cm,
+rowsep=0.4cm]
+[name=A]Buch \psspan{3} & \\
+[name=B]Fachbuch & [name=C]Lehrbuch & [name=D]Roman
+\end{psmatrix}
+\psset{nodesep=3pt,arrows=->}
+\ncline{A}{B} \ncline{A}{C} \ncline{A}{D}
+\end{LTXexample}
+
+
+\section{Knotenverbindungen}\index{Knotenverbindung}
+
+Die Knotenverbindungen beginnen in der Regel mit \texttt{nc} und haben die Syntax:
+
+\begin{BDef}
+\bs{Knotenverbindung}\OptArgs\{Pfeile\}\{KnotenA\}\{KnotenB\}
+\end{BDef}
+
+Sie gehen von einem Knoten zu einem anderen, wenn es nicht anders festgelegt
+wurde, ist die Zielorientierung die Knotenmitte.
+
+Die Knotenverbindungen können über eine Reihe von Parametern geändert
+werden (vgl. \cite[S.\,43\,f]{PSTricks2} und \cite{siart}). Einige, die für das Zeichnen von
+Strukturen besonders relevant sind, werden in der nachfolgenden Tabelle
+aufgelistet:\index{Knotenverbindung!Parameter}
+
+\begin{table}[H]
+\centering
+\caption{Parameter f\"ur Knotenverbindungen}
+\begin{tabular}{@{}lll@{}}
+Name & Werte & Vorgabe \\ \hline
+\texttt{linewidth} & <Wert>\OptEinh\ & 0.8pt \\
+\texttt{linecolor} & <Farbe> & black \\
+\texttt{linestyle} & none|solid|dotted|dashed & solid \\
+\texttt{shadow} & <an (true)/aus (false)> & false \\
+\texttt{shadowsize} & <Wert>\OptEinh\ & 3pt \\
+\texttt{shadowangle} & <Winkel> & $-$45 \\
+\texttt{shadowcolor} & <Farbe> & darkgray \\
+\texttt{arrows} & <Pfeiltyp> & -- \\
+\texttt{doubleline} & <true/false> & false
+\end{tabular}
+\end{table}
+
+\subsection{ncline}
+
+Mit \Lcs{ncline} wird eine direkte Linie von einem Knoten zum anderen
+gezogen\footnote{Wenn Sie das nächste Beispiel mit den
+folgenden Beispielen vergleichen, können Sie auch sehen, dass eine bessere
+Positionierung in einer einfachen Box über die Umgebung
+\bs{\texttt{pspicture}}
+m\"oglich ist. Zumal ohne diese Umgebung die Kurvenlinien \"uber die Box
+hinausragen w\"urden, wie dies im ersten Beispiel zu \texttt{ncdiag} der
+Fall ist.}.
+
+\begin{LTXexample}[width=.35\linewidth]
+\begin{psmatrix}[emnode=r,colsep=2cm]
+ KnotenX & KnotenY
+\end{psmatrix}
+\ncline[linecolor=red]{1,1}{1,2}
+\end{LTXexample}
+
+
+\subsection{ncarc}\xLcs{ncarc}
+
+Eine Kurve verbindet die Knoten.
+
+\begin{LTXexample}[width=.35\linewidth]
+\begin{pspicture}(0,-0.5)(4,1)
+\begin{psmatrix}[emnode=r,colsep=2cm]
+ KnotenX & KnotenY
+\end{psmatrix}
+\ncarc[linecolor=red]{<->}{1,1}{1,2}
+\end{pspicture}
+\end{LTXexample}
+
+Mit der Option \texttt{arcangle=}\index{arcangle@\texttt{arcangle}} kann der
+Steigungswinkel\index{Steigungswinkel} erh\"oht werden.
+
+\begin{LTXexample}[width=.35\linewidth]
+\begin{pspicture}(0,-0.5)(4,1)
+\begin{psmatrix}[emnode=r,colsep=2cm]
+ KnotenX & KnotenY
+\end{psmatrix}
+\ncarc[arcangle=60,linecolor=red]{<->}{1,1}{1,2}
+\end{pspicture}
+\end{LTXexample}
+
+In der Sternchenversion wird der von der Kurve eingeschlossenen Raum mit
+der Linienfarbe ausgefüllt.
+
+\begin{LTXexample}[width=.4\linewidth]
+\begin{pspicture}(0,-0.5)(4,1)
+\begin{psmatrix}[emnode=r,colsep=2cm]
+ KnotenX & KnotenY
+\end{psmatrix}
+\ncarc*[arcangle=60,linecolor=red]{<->}{1,1}{1,2}
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{ncdiag}
+
+Mit \Lcs{ncdiag} wird eine Linie in drei Segmente "`zerlegt"'. Man kann
+diese Zerlegung über die Winkelfestlegungen (siehe folgendes Beispiel)
+steuern.
+
+\begin{LTXexample}[width=.4\linewidth]
+\begin{psmatrix}[emnode=r,colsep=2cm]
+ KnotenX & KnotenY
+\end{psmatrix}
+\ncdiag[angleA=90,angleB=-90,linecolor=red]{<->}{1,1}{1,2}
+\end{LTXexample}
+
+Die Angabe \texttt{arm=0}\index{arm@\texttt{arm}} erzwingt eine gerade Linie.
+
+\begin{LTXexample}[width=.4\linewidth]
+\begin{psmatrix}[emnode=r,colsep=2cm]
+ KnotenX & KnotenY
+\end{psmatrix}
+\ncdiag[angleA=-90,angleB=90,arm=0,linecolor=red]{<->}{1,1}{1,2}
+\end{LTXexample}
+
+\subsection{ncdiagg}
+
+\Lcs{ncdiagg} ist \Lcs{ncdiag} \"ahnlich. Für den Ausgangsknoten wird aber
+nur eine Verbindung gezeichnet.
+
+\begin{LTXexample}[width=.3\linewidth]
+\usepackage{pstricks-add}
+\begin{pspicture}(-1,-1)(4,6)
+ \circlenode{A}{A}\quad\circlenode{C}{C}
+ \rput(0,4){\circlenode{B}{B}}
+ \rput(1,5){\circlenode{D}{D}}
+ {\psset{arrowscale=2,linearc=0.2,
+ linecolor=red,armA=0.5,angleA=90}
+ \ncdiagg[lineAngle=-160]{->}{A}{B}
+ \ncput*[nrot=:U]{Linie I}
+ \ncdiagg[lineAngle=-160]{->}{C}{D}
+ \ncput*[nrot=:U]{Linie II}}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{ncbar}
+
+\Lcs{ncbar} arbeitet ähnlich wie \Lcs{ncdiag}. Zwei Knoten werden
+durch drei Linienteile verbunden.
+
+\begin{LTXexample}[width=.4\linewidth]
+\begin{pspicture}(0,1)(4,-2)
+\begin{psmatrix}[emnode=r]
+\psset{arrowscale=2}
+Verbinde {\rnode{A}{KnotenX}} mit
+{\rnode{B}{KnotenY}}!
+\end{psmatrix}
+\ncbar[nodesep=3pt,angleA=-90,angleB=90,linecolor=red,arrows=<->,arrowscale=2,
+arm=0.8]{A}{B}
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{ncbarr}
+
+\Lcs{ncbarr} verwendet f\"unf Liniensegmente und erstellt damit eine
+S-f\"ormige Verbindung.
+
+\begin{LTXexample}[width=.3\linewidth]
+\begin{psmatrix}
+ & \circlenode{X}{X}\\[1cm]
+ & \circlenode{Y}{Y}
+\end{psmatrix}
+\ncbarr[angleA=0,linecolor=red]{X}{Y}
+\end{LTXexample}
+
+
+\subsection{ncangle}
+
+\Lcs{ncangle} erm\"oglich genauer berechnete dreiteilige Linien. Es
+arbeitet analog zu \Lcs{ncdiag}.
+
+\begin{LTXexample}[width=.37\linewidth]
+\begin{pspicture}(0,1)(4,-1)
+\begin{psmatrix}[emnode=r,colsep=2cm,
+ rowsep=0.5cm]
+KnotenX & KnotenY \\
+\end{psmatrix}
+\ncdiag[angleA=-90,angleB=135,armA=1cm,armB=1cm,
+linearc=.5,linecolor=red]{->}{1,1}{1,2}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{ncangles}
+
+\Lcs{ncangles} produziert viergliedrige Linien.
+
+\begin{LTXexample}[width=.4\linewidth]
+\begin{pspicture}(0,1)(4,-2.3)
+\begin{psmatrix}[emnode=r,colsep=2cm,
+ rowsep=0.5cm]
+\psframebox{\emph{KnotenX}} &
+\psframebox{\emph{KnotenY}}
+\end{psmatrix}
+\ncangles[angleA=-90,angleB=135,armA=1cm,
+ armB=1cm,
+linearc=.15,linecolor=red]{->}{1,1}{1,2}
+\rput[bl](-5,-0.7){armA}
+\rput[rB](-0.4,0.5){armB}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{ncloop}
+
+\Lcs{ncloop} setzt f\"unfgliedrige Linien. Gegenüber \Lcs{ncangles}
+kommt noch die Option \texttt{loopsize}\index{loopsize@\texttt{loopsize}} hinzu, die die
+H\"ohe für einen Loop (eine Schlinge) vorgibt.
+
+
+\begin{LTXexample}[width=.45\linewidth]
+\begin{pspicture}(-1.5,-1)(4,2)
+\rnode[lB]{A}{\psframebox{Knoten mit Schlinge}}
+\ncloop[angleB=180,loopsize=1,arm=.5,
+ linearc=.2,linecolor=red]{->}{A}{A}
+\ncput[npos=3.5,nrot=:U]{\psline{|<->|}%
+ (0.5,-0.2)(-0.5,-0.2)}
+\nbput[npos=3.5,nrot=:D,labelsep=.35cm]{%
+ {\small\texttt{loopsize}}}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{nccurve}
+
+\Lcs{nccurve} setzt eine B\`ezierkurve zwischen zwei Knoten, die über
+die Winkel \texttt{angleA} und \texttt{angleB} sowie den
+Kurvenparameter\index{Kurvenparameter}
+\texttt{ncurv}\index{nccurv@\texttt{nccurv}} gesteuert werden kann.
+
+\begin{LTXexample}[width=.4\linewidth]
+\begin{psmatrix}[emnode=r,colsep=2cm,
+rowsep=0.5cm]
+{\rnode{A}{\psframebox{KnotenX}}} & \\
+& {\rnode{B}{\psframebox{KnotenY}}}
+\end{psmatrix}
+\nccurve[angleB=180,ncurv=0.9,
+linecolor=red]{A}{B}
+\end{LTXexample}
+
+\subsection{nccircle}
+
+\Lcs{nccircle} erzeugt \"uber einem Knoten einen ungef\"ullten oder gef\"ullten
+(Sternchenversion) Kreis.
+
+\vspace{2mm}
+\begin{LTXexample}[width=.25\linewidth]
+\begin{pspicture}(-1,-1)(3,2)
+\begin{psmatrix}[emnode=r]
+\rnode{A}{herum}
+\end{psmatrix}
+\nccircle[nodesep=3pt,linecolor=red]{->}{A}{.8cm}
+\kern 5pt
+\end{pspicture}
+\end{LTXexample}
+
+\vspace{2mm}
+\begin{LTXexample}[width=.25\linewidth]
+\begin{pspicture}(-1,-1)(3,2)
+\begin{psmatrix}[emnode=r]
+\rnode{A}{dar\"uber}
+\end{psmatrix}
+\nccircle*[nodesep=3pt,linecolor=lightgray]{->}{A}{1cm}
+\kern 5pt
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{offset}
+
+Die Option \texttt{offset}\index{offset@\texttt{offset}} verschiebt, wie
+schon bei den Erl\"auterungen zu dem Parameter \texttt{name} angesprochen,
+die Verbindungslinie parallel zum eigentlich festgelegten Verlauf. Dies ist
+besonders bei zwei Linien sinnvoll und effektiv.
+Wenn man jede Linien einzeln modifizieren m\"ochte, kann dies mit
+\texttt{offsetA}\index{offsetA@\texttt{offsetA}} und
+\texttt{offsetB}\index{offsetB@\texttt{offsetB}}
+geschehen. Beispielsweise, wenn von
+einem Knoten zwei Verbindungen ausgehen sollen.
+
+\vspace{2mm}
+\begin{LTXexample}[width=.2\linewidth]
+\begin{psmatrix}[emnode=r,colsep=1cm,rowsep=0.4cm]
+[name=A]Buch \\
+[name=B]Fachbuch \\
+[name=C]\LaTeX buch
+\end{psmatrix}
+\psset{nodesep=3pt,arrows=->,linecolor=red,offset=0.3cm}
+\pcline[offsetA=0.3cm](A)(B)
+\pcline[offsetB=-0.3cm](A)(C)
+\end{LTXexample}
+
+
+\section{Linien beschriften}\index{Linienbeschriftung}
+
+\subsection{Beschriftung einf\"ugen}
+
+\psframebox{\parbox{0.65\textwidth}{
+\bs ncput\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{*}
+[\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Optionen}}]
+\{Beschriftung auf der Linie\}\\
+\bs naput\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{*}
+[\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Optionen}}]
+\{Beschriftung \"uber der Linie\}\\
+\bs nbput\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{*}
+[\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Optionen}}]
+\{Beschriftung unter der Linie\}
+}}
+
+\begin{LTXexample}[width=.4\linewidth]
+\begin{pspicture}(0,1)(4,-2)
+\begin{psmatrix}[emnode=r]
+\psset{arrowscale=2}
+Verbinde {\rnode{A}{KnotenX}} mit
+{\rnode{B}{KnotenY}}!
+\end{psmatrix}
+\ncbar[nodesep=3pt,angleA=-90,angleB=90,
+linecolor=red,arrows=<->,arrowscale=2,arm=0.8]
+{A}{B}
+\ncput*{auf}
+\naput*{\"uber}
+\nbput*{unter}
+\end{pspicture}
+\end{LTXexample}
+
+Die angegebene Sternchenversion ist besser geeignet, da sie die Linien
+überschreibt und damit die Beschriftungen besser sichtbar sind (vgl. mit
+der nachfolgenden Beispielversion ohne Sternchen). Das betrifft besonders
+die \texttt{naput}-Version.
+
+\begin{LTXexample}[width=.4\linewidth]
+\begin{pspicture}(0,1)(4,-2)
+\begin{psmatrix}[emnode=r]
+\psset{arrowscale=2}
+Verbinde {\rnode{A}{KnotenX}} mit
+{\rnode{B}{KnotenY}}!
+\end{psmatrix}
+\ncbar[nodesep=3pt,angleA=-90,angleB=90,
+linecolor=red,arrows=<->,arrowscale=2,arm=0.8]
+{A}{B}
+\ncput{auf}
+\naput{\"uber}
+\nbput{unter}
+\end{pspicture}
+\end{LTXexample}
+
+Ohne die Angabe von Optionen wird die Beschriftung auf den sichtbaren
+Linienteil geschrieben. Sie orientiert sich dabei an der Linienmitte.
+Mit \texttt{npos=}\index{npos@\texttt{npos}} und
+\text{nrot=}\index{nrot@\texttt{nrot}} kann diese Orientierung ge\"andert werden.
+
+Mit \Lcs{psset}\{labelset=\} kann der Abstand zwischen Label und Linie
+reguliert werden. Wenn der Wert auf 0pt gesetzt wird (also direkt über oder
+unter der Linie, sollte f\"ur \Lcs{naput} bzw. \Lcs{nbput} nicht die
+Sternchenversion gew\"ahlt werden, die wahrscheinlich ohnehin nur f\"ur
+\Lcs{ncput} sinnvoll scheint. Die Nullversion ist immer dann zu nehmen,
+wenn es Probleme mit dem Sichtbarmachen des Labels gibt.
+
+\subsection{npos}
+
+\texttt{npos} ermöglicht die Platzierung der Beschriftung auf den
+verschiedenen Segmenten des entsprechenden Linientyps. Die Zahl gibt vor
+dem Punkt die Segmentnummer (0,1,2,\ldots) und nach dem Punkt den Abstand
+zum Segmentanfang an. Im folgenden Beispiel bekommt die Beschriftung den
+Wert 1.2 und steht damit auf dem zweiten Liniensegment 20\% vom
+Segmentanfang.
+
+\begin{table}[H]
+\centering
+\caption{Zusammenstellung der Kurzformen für die Drehwinkel}\label{tab:wind}
+ \begin{tabular}{@{}l|*{8}{>{\ttfamily}c}@{}}
+ \emph{Buchstabe} & U & L & D & R & N & W & S & E \\\hline
+ \emph{Bedeutung} & Up& Left&Down&Right&North&West&South&East\\
+ \emph{Enstprechung} &0&90&180&270&*0&*90&*180&*270
+%
+% \begin{tabular}{@{}>{\ttfamily}llr@{}}
+% \textrm{Buchstabe} & Bedeutung & Winkel\\\hline
+% U & Up & 0\\
+% L & Left & 90\\
+% D & Down & 180\\
+% R & Right & 270\\
+% N & North & *0\\
+% W & West & *90\\
+% S & South & *180\\
+% E & East & *270
+ \end{tabular}
+\end{table}
+
+\begin{LTXexample}[width=.4\linewidth]
+\begin{pspicture}(0,1)(4,-2)
+\begin{psmatrix}[emnode=r]
+\psset{arrowscale=2}
+Verbinde {\rnode{A}{KnotenX}} mit
+{\rnode{B}{KnotenY}}!
+\end{psmatrix}
+\ncbar[nodesep=3pt,angleA=-90,angleB=90,
+linecolor=red,arrows=<->,arrowscale=2,arm=0.8]
+{A}{B}
+\ncput*[npos=1.2]{auf}
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{nrot}
+
+\texttt{nrot=:Winkel/K\"urzel} erm\"oglicht es die Beschriftung zu
+drehen:
+
+\begin{table}[htb]
+\centering\tabcolsep=3pt
+\caption{Vergleich der verschiedenen Knotenverbindungen bez\"uglich ihrer
+Segmentanzahl}\label{tab:segmente}
+\hspace*{-1em}
+\begin{tabular}{@{} lccc | lccc @{}}
+\emph{Verbindung} & \emph{Segm.} & \emph{Bereich} & \emph{Vorgabe} &
+\emph{Verbindung} & \emph{Segm.} & \emph{Bereich} & \emph{Vorgabe}\\\hline
+ \Lcs{ncline} & $1$ & $0\leq npos\leq 1$ & $0.5$ &
+ \Lcs{nccurve} & $1$ & $0\leq npos\leq 1$ & $0.5$\\
+ \Lcs{ncarc} & $1$ & $0\leq npos\leq 1$ & $0.5$ &
+ \Lcs{ncbar} & $3$ & $0\leq npos\leq 3$ & $1.5$\\
+ \Lcs{ncdiag} & $3$ & $0\leq npos\leq 3$ & $1.5$ &
+ \Lcs{ncdiagg} & $2$ & $0\leq npos\leq 2$ & $0.5$\\
+ \Lcs{ncangle} & $3$ & $0\leq npos\leq 3$ & $1.5$ &
+ \Lcs{ncangles} & $4$ & $0\leq npos\leq 4$ & $1.5$\\
+ \Lcs{ncloop} & $5$ & $0\leq npos\leq 5$ & $2.5$ &
+ \Lcs{nccircle} & $1$ & $0\leq npos\leq 1$ & $0.5$\\
+\end{tabular}
+\end{table}
+
+
+\begin{LTXexample}[width=.4\linewidth]
+\begin{pspicture}(0,1)(4,-2)
+\begin{psmatrix}[emnode=r]
+\psset{arrowscale=2}
+Verbinde {\rnode{A}{KnotenX}} mit
+{\rnode{B}{KnotenY}}!
+\end{psmatrix}
+\ncbar[nodesep=3pt,angleA=-90,angleB=90,
+linecolor=red,arrows=<->,arrowscale=2,arm=0.8]
+{A}{B}
+\ncput*[nrot=:L]{auf}
+\end{pspicture}
+\end{LTXexample}
+
+\section{Strukturbeispiele}
+
+
+
+Jetzt sollen noch einige wenige Beispiele von Struktur\"ubersichten
+vorgestellt werden, die von mir in der \texttt{pstmatrix}-Umgebung gesetzt wurden.
+
+\begin{figure}[H]\centering
+\begin{psmatrix}[colsep=0.8,rowsep=0.8]
+\psframebox[fillcolor=red!40,fillstyle=solid,doubleline=true]
+{$\left[\tabular{c}GF: /Pinguin/\\ WA: +N\endtabular\right]$}
+ & \psframebox[fillcolor=yellow!40,fillstyle=solid]{Vogel} \\
+\psframebox[fillcolor=blue!40,fillstyle=solid,doubleline=true]{\tabular{l}aufrecht\\ gehend\endtabular}
+ & \psshadowbox[fillcolor=red,fillstyle=solid,shadow=true,blur=true,shadowsize=5pt]{\textbf{Pinguin}} &
+ \psframebox[fillcolor=blue!40,fillstyle=solid,doubleline=true]{flugunfähig}\\
+ & \psframebox[fillcolor=green!40,fillstyle=solid]{Felsenpinguin}
+\end{psmatrix}
+\ncline{1,1}{2,2} \naput{s}
+\ncline{1,2}{2,2} \naput{ob}
+\ncline{2,1}{2,2} \naput{a}
+\ncline{2,2}{2,3} \naput{a}
+\ncline{2,2}{3,2} \naput{ub}
+\caption{Ein Frame}
+\end{figure}
+
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle=\rmfamily\small,backgroundcolor={\color{yellow!20}},frame=single]
+\usepackage{pst-node,pst-blur}
+\begin{psmatrix}[colsep=0.8,rowsep=0.8]
+\psframebox[fillcolor=red!40,fillstyle=solid,doubleline=true]
+{$\left[\tabular{c}GF: /Pinguin/\\ WA: +N\endtabular\right]$}
+ & \psframebox[fillcolor=yellow!40,fillstyle=solid]{Vogel} \\
+\psframebox[fillcolor=blue!40,fillstyle=solid,doubleline=true]{\tabular{l}aufrecht\\ gehend\endtabular}
+ & \psshadowbox[fillcolor=red,fillstyle=solid,shadow=true,blur=true,shadowsize=5pt]{\textbf{Pinguin}} &
+ \psframebox[fillcolor=blue!40,fillstyle=solid,doubleline=true]{flugunfähig}\\
+ & \psframebox[fillcolor=green!40,fillstyle=solid]{Felsenpinguin}
+\end{psmatrix}
+\ncline{1,1}{2,2} \naput{s}
+\ncline{1,2}{2,2} \naput{ob}
+\ncline{2,1}{2,2} \naput{a}
+\ncline{2,2}{2,3} \naput{a}
+\ncline{2,2}{3,2} \naput{ub}
+\end{lstlisting}
+
+
+\begin{figure}[H]\centering
+\begin{psmatrix}[colsep=0.8,rowsep=0.8]
+\psset{shortput=nab,framesep=10pt}
+ \psshadowbox[framearc=0.25,fillcolor=blue!20,fillstyle=solid,doubleline=true]{Lebewesen} &
+ \psframebox[fillcolor=yellow!40,fillstyle=solid]{allgemeine Kategorisierung}\\
+ \psshadowbox[framearc=0.25,fillcolor=red!40,fillstyle=solid,doubleline=true]{\textbf{Löwe}}
+& \psframebox[fillcolor=red!40,fillstyle=solid,doubleline=true]{Basisebene}\\
+ \psshadowbox[framearc=0.25,fillcolor=blue!20,fillstyle=solid,doubleline=true]{Höhlenlöwe}
+& \psframebox[fillcolor=green!30,fillstyle=solid]{spezielle Kategorisierung}
+\end{psmatrix}
+\psset{nodesep=2pt,arrows=->}
+\ncline[arrowscale=2]{1,1}{2,1}
+\ncline[arrowscale=2]{2,1}{3,1}
+\caption{Eine konzeptuelle Kategorisierung}
+\end{figure}
+
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle=\rmfamily\small,backgroundcolor={\color{yellow!20}},frame=single]
+\begin{psmatrix}[colsep=0.8,rowsep=0.8]
+\psset{shortput=nab,framesep=10pt}
+ \psshadowbox[framearc=0.25,fillcolor=blue!20,fillstyle=solid,doubleline=true]{Lebewesen} &
+ \psframebox[fillcolor=yellow!40,fillstyle=solid]{allgemeine Kategorisierung}\\
+ \psshadowbox[framearc=0.25,fillcolor=red!40,fillstyle=solid,doubleline=true]{\textbf{Löwe}}
+& \psframebox[fillcolor=red!40,fillstyle=solid,doubleline=true]{Basisebene}\\
+ \psshadowbox[framearc=0.25,fillcolor=blue!20,fillstyle=solid,doubleline=true]{Höhlenlöwe}
+& \psframebox[fillcolor=green!30,fillstyle=solid]{spezielle Kategorisierung}
+\end{psmatrix}
+\psset{nodesep=2pt,arrows=->}
+\ncline[arrowscale=2]{1,1}{2,1}
+\ncline[arrowscale=2]{2,1}{3,1}
+\end{lstlisting}
+
+\begin{figure}[H]\centering
+\psset{framearc=0.2,shadow=true,fillstyle=solid,shadowcolor=black!55}
+\begin{psmatrix}[colsep=0,rowsep=0.9]
+ & & \psframebox[fillcolor=blue!30]{Synchronie}\\
+ & \psframebox[fillcolor=red!30]{Sprache} & \\
+ & & \psframebox[fillcolor=blue!30]{Diachronie} \\
+\psframebox[fillcolor=red!30]{Menschliche Rede} & & \\
+ & \psframebox[fillcolor=red!30]{Sprechen} &
+ \end{psmatrix}
+ \psset{shadow=false}
+\ncline[arrows=->,arrowscale=2]{2,2}{1,3}
+\ncline[arrows=->,arrowscale=2]{2,2}{3,3}
+\ncline[arrows=->,arrowscale=2]{4,1}{2,2}
+\ncline[arrows=->,arrowscale=2]{4,1}{5,2}
+\caption{F. de Saussure zu Sprache}
+\end{figure}
+
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle=\rmfamily\small,backgroundcolor={\color{yellow!20}},frame=single]
+\psset{framearc=0.2,shadow=true,fillstyle=solid,shadowcolor=black!55}
+\begin{psmatrix}[colsep=0,rowsep=0.9]
+ & & \psframebox[fillcolor=blue!30]{Synchronie}\\
+ & \psframebox[fillcolor=red!30]{Sprache} & \\
+ & & \psframebox[fillcolor=blue!30]{Diachronie} \\
+\psframebox[fillcolor=red!30]{Menschliche Rede} & & \\
+ & \psframebox[fillcolor=red!30]{Sprechen} &
+ \end{psmatrix}
+ \psset{shadow=false}
+\ncline[arrows=->,arrowscale=2]{2,2}{1,3}
+\ncline[arrows=->,arrowscale=2]{2,2}{3,3}
+\ncline[arrows=->,arrowscale=2]{4,1}{2,2}
+\ncline[arrows=->,arrowscale=2]{4,1}{5,2}
+\end{lstlisting}
+
+\begin{figure}[H] \centering
+\begin{psmatrix}[emnode=r,colsep=0.5cm,rowsep=0.5cm,mcol=c]
+ & & & & <Metall> & \\
+ & & & [mnode=oval] 18 & &\\
+ <WERKZEUG> & & & & & \\
+ & & & &[mnode=tri] 12 &\\
+ & & & & & <arbeiten> \\
+ & & [mnode=C,linestyle=dashed,radius=0.5,mcol=l] & & &\\
+ \fbox{12} & & & \fbox{51} & & \\
+ & \fbox{36} & & & <Hammer> &\\
+ <Feile> & & <Zange> & & &
+\end{psmatrix}
+\psset{arrowscale=2,labelsep=0pt}
+\ncline{->}{1,5}{2,4}
+\ncarc{->}{4,5}{2,4}\naput[npos=0.4]{OBJ}
+\ncarc{->}{6,3}{4,5}\naput[npos=0.4]{INSTR}
+\ncline{<->}{6,3}{3,1}
+\ncarc{->}{6,3}{7,1}\naput[npos=0.4]{UB}
+\ncarc{->}{6,3}{7,4}\naput[npos=0.4]{UB}
+\ncarc{->}{6,3}{8,2}\naput[npos=0.4]{UB}
+\ncarc{->}{9,1}{7,1} \ncarc{->}{9,3}{8,2}
+\ncarc{->}{8,5}{7,4} \ncline{->}{5,6}{4,5}
+\caption{Begriffliches Merkmalsnetz nach Hoffmann}
+\end{figure}
+
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle=\rmfamily\small,backgroundcolor={\color{yellow!20}},frame=single]
+\begin{psmatrix}[emnode=r,colsep=0.5cm,rowsep=0.5cm,mcol=c]
+ & & & & <Metall> & \\
+ & & & [mnode=oval] 18 & &\\
+ <WERKZEUG> & & & & & \\
+ & & & &[mnode=tri] 12 &\\
+ & & & & & <arbeiten> \\
+ & & [mnode=C,linestyle=dashed,radius=0.5,mcol=l] & & &\\
+ \fbox{12} & & & \fbox{51} & & \\
+ & \fbox{36} & & & <Hammer> &\\
+ <Feile> & & <Zange> & & &
+\end{psmatrix}
+\psset{arrowscale=2,labelsep=0pt}
+\ncline{->}{1,5}{2,4}
+\ncarc{->}{4,5}{2,4}\naput[npos=0.4]{OBJ}
+\ncarc{->}{6,3}{4,5}\naput[npos=0.4]{INSTR}
+\ncline{<->}{6,3}{3,1}
+\ncarc{->}{6,3}{7,1}\naput[npos=0.4]{UB}
+\ncarc{->}{6,3}{7,4}\naput[npos=0.4]{UB}
+\ncarc{->}{6,3}{8,2}\naput[npos=0.4]{UB}
+\ncarc{->}{9,1}{7,1} \ncarc{->}{9,3}{8,2}
+\ncarc{->}{8,5}{7,4} \ncline{->}{5,6}{4,5}
+\end{lstlisting}
+
+\newpage
+\bgroup
+\appendix
+
+%\addcontentsline{toc}{section}{Literaturverzeichnis}
+
+\nocite{*}
+\raggedright
+
+\printbibliography
+\egroup
+\clearpage
+\addcontentsline{toc}{section}{Index}
+\printindex
+
+
+\end{document}
+
+
diff --git a/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.pdf b/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.pdf
index 8be7b3ec52..f8bebfdf1e 100644
--- a/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.pdf
+++ b/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.pdf
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.tex b/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.tex
index 5ff16cb6cf..a4d0faa964 100644
--- a/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.tex
+++ b/graphics/pstricks/contrib/pst-node/doc/pst-node-doc.tex
@@ -1,7 +1,8 @@
-\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{}
-%% $Id: pst-node-doc.tex 438 2022-01-31 17:45:26Z herbert $
-\documentclass[fontsize=11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small,
+%\RequirePackage{pdfmanagement-testphase}
+\DocumentMetadata{}
+%% $Id: pst-node-doc.tex 920 2024-07-11 07:41:04Z herbert $
+\documentclass[fontsize=11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,
+ headings=small,
headinclude=false,footinclude=false,oneside]{pst-doc}
\listfiles
@@ -75,7 +76,8 @@ when also running the main package \LPack{pstricks} with this option.
\vfill
\noindent
-Thanks to: Marco Daniel; Denis Girou; Thomas Iyer; Rolf Niepraschk; Sebastian Rahtz; Andi Setiawan;
+Thanks to: Marco Daniel; Denis Girou; Thomas Iyer; Rolf Niepraschk; Sebastian Rahtz;
+Erich Schmidt; Andi Setiawan;
\end{abstract}
\clearpage
@@ -1356,7 +1358,7 @@ Here is how I used \Lcs{nput} to mark an angle in a previous example:
\end{pspicture}
\end{LTXexample}
-\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%%
For the put macros there are several possibilities:
@@ -1411,7 +1413,7 @@ will produce the same effect as
\end{LTXexample}
-\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%
+%\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Normal behavior with rotation}
If there are a point $B$ of type node and a point $A$ of any type then
@@ -1589,7 +1591,7 @@ connections:
You can include the node connections inside the \Lcs{psmatrix}, in the last entry
and right before \Lcs{endpsmatrix}. One advantage to doing this is that
-\Lkeyset{shortput=tab} is the default within a \Lcs{psmatrix}.
+\Lkeyset{shortput=tab} is the default within a \Lcs{psmatrix}.\label{tab}
\begin{LTXexample}
$ \begin{psmatrix}
@@ -2489,13 +2491,12 @@ For example,
\end{pspicture}
\end{LTXexample}
-
\begin{BDef}
\Lcs{fnpnode}\Largb{xval}\Largb{expression in x}\Largb{nodename}
\end{BDef}
- sets a single node on the graph. Eg,
+ sets a single node on the graph, eg:
\begin{verbatim}
\fnpnode{.5}{x x 1 add mul 2 div}{P}
@@ -2507,7 +2508,12 @@ For example,
\end{verbatim}
If your expression in \texttt{t} is algebraic, you must specify the keyword \texttt{algebraic}, as in
- \Lcs{fnpnode}\verb|[algebraic]{0.5}{x*(x+1)/2}{P}|.
+
+
+\begin{verbatim}
+\fnpnode[algebraic]{0.5}{x*(x+1)/2}{P}
+\end{verbatim}
+
\begin{LTXexample}[width=.35\textwidth]
\begin{pspicture}[showgrid](-.5,-.5)(2.5,3)
@@ -2574,7 +2580,7 @@ turn a list of coordinates into a node sequence P0 P1 ...
\begin{LTXexample}[width=.35\textwidth]
\begin{pspicture}[showgrid,algebraic](-.5,-.5)(2.5,2)
\pnodes{B}(.1,.1)(1;10)(*2 {x^2/4})(0,1.4)
-%definesuP0..P3--now join them
+% defines P0..P3 -- now join them
\psnline[arrowscale=2]{-D>}(0,3){B}
\end{pspicture}
\end{LTXexample}
@@ -2635,7 +2641,7 @@ Conversion between any angle unit and radian unit
\begin{LTXexample}[width=.35\textwidth]
\begin{pspicture}[showgrid,algebraic](-.5,-.5)(2.5,2)
\pnodes{P}(.1,.1)(1;10)(*2 {x^2/4})(0,1.4)
-%defines P0..P3--now join them
+% defines P0..P3 -- now join them
\psncurve[arrowscale=2]{-D>}(0,3){P}
\end{pspicture}
\end{LTXexample}
@@ -2644,7 +2650,7 @@ Conversion between any angle unit and radian unit
\begin{LTXexample}[width=.35\textwidth]
\begin{pspicture}[showgrid,algebraic](-.5,-.5)(2.5,2)
\pnodes{P}(.1,.1)(1;10)(*2 {x^2/4})(0,1.4)
-%defines P0..P3--now join them
+% defines P0..P3 -- now join them
\psnccurve[arrowscale=2]{-D>}(0,3){P}
\end{pspicture}
\end{LTXexample}
@@ -2753,7 +2759,7 @@ line from \verb|<basept>+<nodexpr1>| to \verb|<basept>+<nodexpr2>|.
\curvepnode{2}{\pfn}{P}% sets P, Ptang
\normalvec(Ptang){Q}\uput[-45](P){P}
\psxline[linecolor=red]{<->}(P){-(Ptang)}{1.5(Ptang)}
-\psxline[linecolor=blue]{->}(P){}{.5(Q)}%can use } for {(0,0)}
+\psxline[linecolor=blue]{->}(P){}{.5(Q)}% can use {} for {(0,0)}
\end{pspicture}
\end{LTXexample}
\vspace{2pc}
diff --git a/graphics/pstricks/contrib/pst-node/dvips/pst-node.pro b/graphics/pstricks/contrib/pst-node/dvips/pst-node.pro
index b75ef89863..4c7ee95623 100644
--- a/graphics/pstricks/contrib/pst-node/dvips/pst-node.pro
+++ b/graphics/pstricks/contrib/pst-node/dvips/pst-node.pro
@@ -1,13 +1,13 @@
-% $Id: pst-node.pro 438 2022-01-31 17:45:26Z herbert $
+% $Id: pst-node.pro 919 2024-07-10 18:31:27Z herbert $
%%
%% PostScript prologue for pst-node.tex.
-%% Version 1.15, 2014/01/27.
+%% Version 1.15a, 2024/07/10.
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%
-%%%% EMPTY lines are not alowed!!! Problem with pst-eps -> \par
+%%%% EMPTY lines are not allowed!!! Problem with pst-eps -> \par
%
%
tx@Dict begin % from main pstricks dict
diff --git a/graphics/pstricks/contrib/pst-node/latex/pst-node.sty b/graphics/pstricks/contrib/pst-node/latex/pst-node.sty
index 43edb5aa2b..4fe6a63aa2 100644
--- a/graphics/pstricks/contrib/pst-node/latex/pst-node.sty
+++ b/graphics/pstricks/contrib/pst-node/latex/pst-node.sty
@@ -1,10 +1,10 @@
-% $Id: pst-node.sty 438 2022-01-31 17:45:26Z herbert $
+% $Id: pst-node.sty 919 2024-07-10 18:31:27Z herbert $
%%
%% This is file `pst-node.sty'.
%%
%% IMPORTANT NOTICE:
%%
-%% pst-node.sty Copyright (C) 2004-2017 Herbert Voss <voss@perce.de>
+%% pst-node.sty Copyright (C) 2004-2024 Herbert Voss <voss@perce.de>
%% Rolf Niepraschk <Rolf.Niepraschk@ptb.de>
%%
%% This package may be distributed under the terms of the LaTeX Project
@@ -14,7 +14,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pst-node}
- [2012/09/18 v1.01 LaTeX wrapper for `pst-node' (HV)]
+ [2024/07/10 v1.02 LaTeX wrapper for `pst-node' (HV)]
%
\newif\ifpst@OldVersion\pst@OldVersionfalse
\DeclareOption{97}{\pst@OldVersiontrue}
@@ -32,13 +32,14 @@
\@addtofilelist{pst-node97.pro}}{}%
\else
\RequirePackage{pstricks}
-\ProvidesPackage{pst-node}[2010/04/22 package wrapper for pst-node.tex]
+\ProvidesPackage{pst-node}[2024/07/10 package wrapper for pst-node.tex]
\input{pst-node.tex}
\ProvidesFile{pst-node.tex}
[\filedate\space \fileversion\space `pst-node' (tvz,hv)]
\IfFileExists{pst-node.pro}{%
\ProvidesFile{pst-node.pro}
- [2011/09/18 v. 1.14, PostScript prologue file (hv)]
+ [2024/07/10 v. 1.15a, PostScript prologue file (hv)]
\@addtofilelist{pst-node.pro}}{}%
\fi
+
\endinput
diff --git a/graphics/pstricks/contrib/pst-node/tex/pst-node.tex b/graphics/pstricks/contrib/pst-node/tex/pst-node.tex
index ed3ef60a4b..a653d76eea 100644
--- a/graphics/pstricks/contrib/pst-node/tex/pst-node.tex
+++ b/graphics/pstricks/contrib/pst-node/tex/pst-node.tex
@@ -1,4 +1,4 @@
-% $Id: pst-node.tex 438 2022-01-31 17:45:26Z herbert $
+% $Id: pst-node.tex 918 2024-07-10 17:41:55Z herbert $
%%
%% BEGIN pst-node.tex
%%
@@ -18,8 +18,8 @@
\ifx\PSTricksLoaded\endinput\else\input pstricks.tex \fi\relax
\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi
%
-\def\fileversion{1.43}
-\def\filedate{2022/01/31}
+\def\fileversion{1.45}
+\def\filedate{2024/07/10}
\message{ v\fileversion, \filedate}
%
\edef\TheAtCode{\the\catcode`\@}
@@ -1386,8 +1386,8 @@ tx@NodeDict \pst@tempg known
/dy YB YA sub def
/angle dy dx Atan def
/linelength \pst@number\pst@dimb \pst@number\psunit div def
- XA linelength angle cos mul add YA linelength angle sin mul add ){#4}%
-}
+ XA linelength angle cos mul add YA linelength angle sin mul add ){#4}}
+%
\def\psRelNode{\pst@object{psRelNode}}
\def\psRelNode@i(#1)(#2)#3#4{{% A - B - factor - node name
\use@par
@@ -1402,10 +1402,10 @@ tx@NodeDict \pst@tempg known
/AlphaStrich \psk@angleA\space def
/unit \pst@number\psyunit \pst@number\psxunit div def % yunit/xunit
%
- /dx XB XA sub def
- /dy YB YA sub \ifPst@trueAngle\space unit mul \fi\space def
- /laenge dy dup mul dx dup mul add sqrt #3 mul def
- /Alpha dy dx atan def
+ /dx__ XB XA sub def
+ /dy__ YB YA sub \ifPst@trueAngle\space unit mul \fi\space def
+ /laenge dy__ dup mul dx__ dup mul add sqrt #3 mul def
+ /Alpha dy__ dx__ atan def
/beta Alpha AlphaStrich add def
laenge beta cos mul XA add
laenge beta sin mul \ifPst@trueAngle\space unit div \fi\space YA add ){#4}%
@@ -1537,8 +1537,7 @@ tx@NodeDict \pst@tempg known
\def\trim@ #1{\trim@@ @#1 @ #1 @ @@}%
\def\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}%
\def\unbrace#1{#1}%
-\unbrace{\def\trim@@@ #1 } #2@#3{\expandafter\def%
- \expandafter #3\expandafter {#1}}%
+\unbrace{\def\trim@@@ #1 } #2@#3{\expandafter\def\expandafter #3\expandafter {#1}}%
%
\def\hasparen#1(#2\@nil{%check if expression contains a (--call with \hasparen#1(\@nil
\ifx\relax#2\relax \@parenfalse \else \@parentrue\fi}%
@@ -1577,23 +1576,28 @@ tx@NodeDict \pst@tempg known
\expandafter\testAlg\my@tempA|\@nil\my@next {#1}{#2}{#3}}
%
\def\psparnode#1#2#3{%
-% #1=t value, #2=x(t) y(t) in PS form,#3=node name,
- \pnode(!/t #1 def #2){#3}%
- \pnode(!/t #1 .001 sub def #2
- /t #1 .001 add def
- #2 3 -1 roll sub 3 1 roll sub neg
- 2 copy Pyth dup 3 1 roll div 3 1 roll div ){#3tang}}%unit tangent vector at t
+ % #1=t value, #2=x(t) y(t) in PS form, #3=node name,
+ % also returns unit tangent vector at t with node #3tang
+ \pnode(! /t #1 def #2){#3}%
+ \pnode(! /t #1 dup abs 1 lt {0.001 sub} {dup 0 gt {0.999} {1.001} ifelse mul} ifelse def
+ #2
+ /t #1 dup abs 1 lt {0.001 add} {dup 0 lt {0.999} {1.001} ifelse mul} ifelse def
+ #2
+ 3 -1 roll sub 3 1 roll exch sub 2 copy exch dup mul exch dup mul add sqrt
+ dup 3 1 roll div 3 1 roll div){#3tang}% unit tangent vector at t
+}%
%
\def\algparnode#1#2#3{%
-% #1=t value, #2=x(t) | y(t) in alg form,#3=node name,
-%\pstVerb{tx@Dict begin /t #1 def /Func (#2) AlgParser cvx def end}
-%\pnode(!Func){#3}}%
- \pstVerb{tx@Dict begin /Func (#2) AlgParser cvx def end }
- \pnode(!/t #1 def Func){#3}
- \pnode(!/t #1 .001 sub def Func
- /t #1 .001 add def
- Func 3 -1 roll sub 3 1 roll sub neg
- 2 copy Pyth dup 3 1 roll div 3 1 roll div ){#3tang}%unit tangent vector at t
+% #1=t value, #2=x(t) | y(t) in alg form, #3=node name,
+% also returns unit tangent vector at t with node #3tang
+ \pstVerb{tx@Dict begin /Func (#2) AlgParser cvx def end }%
+ \pnode(! /t #1 def Func){#3}%
+ \pnode(! /t #1 dup abs 1 lt {0.001 sub} {dup 0 gt {0.999} {1.001} ifelse mul} ifelse def
+ Func
+ /t #1 dup abs 1 lt {0.001 add}{dup 0 lt {0.999} {1.001} ifelse mul } ifelse def
+ Func
+ 3 -1 roll sub 3 1 roll exch sub 2 copy exch dup mul exch dup mul add sqrt
+ dup 3 1 roll div 3 1 roll div){#3tang}% unit tangent vector at t
}%
%
\def\nodex#1{%
@@ -1634,8 +1638,7 @@ tx@NodeDict \pst@tempg known
\nodexn{#3}{@TMP@a}%
\AplusB(#1)(@TMP@a){@TMP@B}%
\psline(@TMP@A)(@TMP@B)%
-}%
-\ignorespaces}%
+}\ignorespaces}%
%
\def\curvepnodes{\pst@object{curvepnodes}}
\def\curvepnodes@i#1#2#3#4{{%optional [plotpoints=xx]
@@ -1685,7 +1688,7 @@ tx@NodeDict \pst@tempg known
\else
\multido{\i=0+1}{\pst@cntc}{\pnode(!/x \pst@number\pst@dima\space def x #3){#4\i}%
\advance\pst@dima \pst@dimb}%
-\fi%
+\fi
\expandafter\xdef \csname \PST@root nodecount\endcsname {\the\pst@cnta}%
\ifnum\Pst@Debug>0 \typeout{Created nodes #40 .. #4\the\pst@cnta}\fi%
}\ignorespaces}%
diff --git a/graphics/pstricks/contrib/pst-optic/Changes b/graphics/pstricks/contrib/pst-optic/Changes
index a078ae43c3..e51864d848 100644
--- a/graphics/pstricks/contrib/pst-optic/Changes
+++ b/graphics/pstricks/contrib/pst-optic/Changes
@@ -1,4 +1,6 @@
---- pst-optic.tex
+1.04 2024-06-02 - small fixes to code and documentation
+1.03 2024-05-17 - small fixes to code and documentation
1.02a 2023-05-07 - fix documentation for \psRefractionRay
1.02 2016-07-10 - added option onlyrays, preset to false
1.01 2010-07-23 - bugfixes for \psset[pst-optic,pstricks]
diff --git a/graphics/pstricks/contrib/pst-optic/README b/graphics/pstricks/contrib/pst-optic/README
index 47b0c29eb1..0f33952022 100644
--- a/graphics/pstricks/contrib/pst-optic/README
+++ b/graphics/pstricks/contrib/pst-optic/README
@@ -3,7 +3,7 @@
%% Manuel Luque <Mluque5130@aol.com> (France)
%% Herbert Voss <hvoss@tug.org> (Germany)
%%
-%% 2023-05-07
+%% 2024-06-02
%%
Save the files
@@ -21,5 +21,6 @@ dvips pst-optic-doc.dvi
to get a PostScript file. But pay attention, that the pst-optic
files are saved in the above mentioned way, before you run
-latex on the documentation file.
+latex on the documentation file. Or simply use lualatex to get
+directly the pdf.
diff --git a/graphics/pstricks/contrib/pst-optic/doc/pst-optic-doc.pdf b/graphics/pstricks/contrib/pst-optic/doc/pst-optic-doc.pdf
index a3e3c438ae..182863a16e 100644
--- a/graphics/pstricks/contrib/pst-optic/doc/pst-optic-doc.pdf
+++ b/graphics/pstricks/contrib/pst-optic/doc/pst-optic-doc.pdf
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-optic/doc/pst-optic-doc.tex b/graphics/pstricks/contrib/pst-optic/doc/pst-optic-doc.tex
index 275db43b5a..5ec11a0297 100644
--- a/graphics/pstricks/contrib/pst-optic/doc/pst-optic-doc.tex
+++ b/graphics/pstricks/contrib/pst-optic/doc/pst-optic-doc.tex
@@ -1,4 +1,4 @@
-%% $Id: pst-optic-doc.tex 717 2023-05-07 18:46:46Z herbert $
+%% $Id: pst-optic-doc.tex 903 2024-06-02 06:16:43Z herbert $
\DocumentMetadata{}
\documentclass[11pt,english,bibliography=totoc,parskip=false,headings=small,
@@ -10,6 +10,7 @@
\let\belowcaptionskip\abovecaptionskip
%
%\usepackage[style=dtk]{biblatex}
+%\addbibresource[location=remote]{https://mirror.ctan.org/biblio/ctan-bibdata/ctan.bib}
\addbibresource{\jobname.bib}
\begin{document}
@@ -44,7 +45,8 @@ of having older versions, go to \url{http://www.CTAN.org/} and load the newest v
\vfill\noindent
Thanks to: \\
Jean-C\^ome Charpentier,
-Arnaud Schmittbuhl.
+Arnaud Schmittbuhl,
+Keno Wehr
\end{abstract}
\section{General Options}
@@ -129,10 +131,35 @@ It can be overwritten in the same way with \Lcs{newpsstyle}.
There are macros for the convergent and divergent lens
\begin{BDef}
\Lcs{lens}\OptArgs\\
-\Lcs{lensCVG}\OptArgs\% \textbf{C}on\textbf{v}er\textbf{g}ent (Collecting lens ) -- default\\
-\Lcs{lensDVG}\OptArgs\% \textbf{D}i\textbf{v}er\textbf{g}ent (Scatter lens )
+\Lcs{lensCVG} \% \textbf{C}on\textbf{v}er\textbf{g}ent (Collecting lens ) -- default\\
+\Lcs{lensDVG} \% \textbf{D}i\textbf{v}er\textbf{g}ent (Scatter lens )\\
+\Lcs{pslensCVG}\OptArgs \Largb{lens width}\Largb{lens height}\\
+\Lcs{pslensDVG}\OptArgs \Largb{lens width}\Largb{lens height}\\
\end{BDef}
+
+% \psscalebox{\psk@optic@lensScale}{%
+% \pscustom[linewidth=0.75\pslinewidth]{%
+% \pslensCVG{\psk@optic@lensWidth}{\psk@optic@lensHeight}
+% \fill[fillstyle=solid,fillcolor=BleuVerre]
+
+
+The predefined options for \Lcs{lens} are \texttt{xLeft=-7.5, xRight=7.5, yBottom=-3, yTop=3}.
+
+
+\subsection{Short forms}
+The two macros \Lcs{lensCVG} and \Lcs{lensDVG} draw some more rays as the main macro \Lcs{lens}
+with the setting \Lkeyval{lensType}\texttt{=CVG|DVG}.
+The only valid arguments are \Lkeyword{lensScale}, \Lkeyword{lensWidth}, and \Lkeyword{lensHeight},
+which must be set by \Lcs{psset}.
+
+%\begin{verbatim}
+%lensType=CVG, OA=-7, lensHeight=6, lensWidth=1.5, refractB=2
+%\end{verbatim}
+
+The two macros \Lcs{pslensCVG} and \Lcs{pslensDVG} have two mandatory
+arguments: lens width and lens height.
+
\subsection{The Coordinates of the predefined Nodes}
The following figure shows the coordinates of the predefined nodes (see Table~\ref{tab:generalOptions}).
@@ -157,6 +184,9 @@ The following figure shows the coordinates of the predefined nodes (see Table~\r
\end{pspicture*}}
\captionof{figure}{Coodinates of the predefined Nodes}\label{fig:nodes}
+
+\clearpage
+
\subsection{The Lens Type}
\begin{LTXexample}[wide=false]
@@ -171,7 +201,7 @@ The following figure shows the coordinates of the predefined nodes (see Table~\r
\vspace*{-2ex}
\captionof{figure}{Plan Collecting lens}
-\enlargethispage{2ex}
+%\enlargethispage{2ex}
\begin{LTXexample}[wide=false]
\psscalebox{0.75}{\lens[lensType=DVG,focus=-2,spotAi=270,spotBi=90]}
@@ -185,7 +215,7 @@ The following figure shows the coordinates of the predefined nodes (see Table~\r
\vspace*{-2ex}
\captionof{figure}{Plan Scatter lens}
-\clearpage
+%\clearpage
Using \Lcs{lens}\OptArg{\Lkeyword{lensType}=\ldots} gives the in figures \ref{fig:defaultCVG} and
\ref{fig:defaultDVG} shown lenses with the default values from Table~\ref{tab:defaultLens}.
@@ -204,17 +234,18 @@ Using \Lcs{lens}\OptArg{\Lkeyword{lensType}=\ldots} gives the in figures \ref{fi
Lense height in cm & \Lkeyword{lensHeight} & 5cm\\
Lense width in cm & \Lkeyword{lensWidth} & 0.5cm\footnotemark\\
vertical scale (obsolet) & \Lkeyword{lensScale} & 1\\
- View the lens & \Lkeyword{lensGlass} & \false\\
- show onyl the rays & \Lkeyword{onlyrays} & \false\\
+ View the lens & \Lkeyword{lensGlass} & \true\\
+ show only the rays & \Lkeyword{onlyrays} & \false\\
Second lens & \Lkeyword{lensTwo} & \false\\
Focus in cm & \Lkeyword{focus} & 2\\
- Distance $\mathrm{\overline{OA}}$& \Lkeyword{OA} & -4\\
- Distance $\mathrm{\overline{AB}}$& \Lkeyword{AB} & 1.5\\
- Lens color & \Lkeyword{lenscolor} & \black\\
- Arrow length in cm & \Lkeyword{lensarrowsize} & 0.2\\
- Arrow inset in cm & \Lkeyword{lensarrowinset} & 0.5\\
+ Distance $\mathrm{\overline{OA}}$& \Lkeyword{OA} & -3\\
+ Distance $\mathrm{\overline{AB}}$& \Lkeyword{AB} & 1\\
+ Lens color & \Lkeyword{lenscolor}\footnotemark & \black\\
+ Arrow length in cm & \Lkeyword{lensArrowSize}${}^2$ & 0.2\\
+ Arrow inset in cm & \Lkeyword{lensArrowInset}${}^2$ & 0.5\\
\end{tabular}
\footnotetext{\textsuperscript{1} only for \Lkeyset{lensGlass=true}, otherwise set to \texttt{2\textbackslash pslinewidth}}
+\footnotetext{\textsuperscript{2} only for \Lkeyset{lensGlass=false}}
\end{minipage}
\end{table}
@@ -515,7 +546,11 @@ The macro doesn't draw any lines, only the coordinates of the new point are save
\subsection{\nxLcs{symPlan}}
-\verb|\symPlan| allows to mirroring complete plain graphical objects along a virtual center line. Figure \ref{fig:symPlan} shows that this mirroring is a mathematical one and not a physical one. For more examples look at \cite{pstoptic:2001}. The syntax is:
+\verb|\symPlan| allows to mirroring complete plain graphical objects along a virtual
+center line. Figure \ref{fig:symPlan}
+shows that this mirroring is a mathematical one and not a physical one.
+%For more examples look at \cite{pstoptic:2001}.
+The syntax is:
\begin{BDef}
\Lcs{symPlan}\Largr{node1}\Largr{node2}\Largb{graphic object}
@@ -1071,7 +1106,7 @@ Syntax:
\begin{BDef}
\Lcs{eye}
\end{BDef}
-There are no Options for this symbol of an human eye (Figure~\ref{fig:auge}).
+There are no Options for this symbol of an human eye.
Use the \Lcs{rput}-macro to put the eye elsewhere.
\begin{LTXexample}[width=2cm,pos=l,wide=false]
diff --git a/graphics/pstricks/contrib/pst-optic/tex/pst-optic.tex b/graphics/pstricks/contrib/pst-optic/tex/pst-optic.tex
index 444d075411..0c06f849b3 100644
--- a/graphics/pstricks/contrib/pst-optic/tex/pst-optic.tex
+++ b/graphics/pstricks/contrib/pst-optic/tex/pst-optic.tex
@@ -1,4 +1,4 @@
-%%%% $Id: pst-optic.tex 716 2023-05-07 18:37:07Z herbert $
+%%%% $Id: pst-optic.tex 903 2024-06-02 06:16:43Z herbert $
%% This is file `pst-optic.tex',
%%
%% IMPORTANT NOTICE:
@@ -6,9 +6,9 @@
%% Package `pst-optic.tex'
%%
%% Manuel Luque <Mluque5130@aol.com> (France)
-%% Herbert Voss <voss@perce.de> (Germany)
+%% Herbert Voss <hvoss@tug.org> (Germany)
%%
-%% 2023-05-07
+%% 2024-06-02
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
@@ -30,8 +30,8 @@
\ifx\PSTMultidoLoaded\endinput\else\input multido.tex\fi
\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey\fi
%
-\def\fileversion{1.02a}
-\def\filedate{2023/05/07}
+\def\fileversion{1.04}
+\def\filedate{2024/06/02}
\message{`PST-Optic' v\fileversion, \filedate\space (Manuel Luque and Herbert Voss)}
%
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
@@ -402,8 +402,8 @@
\psset[pst-optic]{lensType=CVG,OA=-7,%
lensHeight=6,%
lensWidth=1.5,%
- refractB=2}
- \ifx\relax#1\relax \else\psset[pst-optic,pstricks]{#1}\fi
+ refractB=2,
+ #1}
\begin{pspicture*}(\psk@optic@xLeft ,\psk@optic@yBottom )
(\psk@optic@xRight ,\psk@optic@yTop)
\pnode(! \psk@optic@xLeft\space 0){xLeft}
@@ -737,8 +737,8 @@
%(#2) est l'abscisse du centre optique
\def\lens{\@ifnextchar[{\pst@lens}{\pst@lens[]}}
\def\pst@lens[#1]{{%
- \psset[pst-optic]{xLeft=-7.5,xRight=7.5,yBottom=-3,yTop=3}%
- \psset[pst-optic,pstricks]{#1}%
+ \psset[pst-optic,pstricks]{xLeft=-7.5,xRight=7.5,yBottom=-3,yTop=3,#1}%
+% \psset[pst-optic,pstricks]{#1}%
\pst@killglue%
% trace les rayons
% calcule la position de l'image
@@ -798,13 +798,19 @@
\begingroup%
\ifPst@lensGlass
\rput(! XO YO){%
- \ifx\psk@optic@lensType\lensTypeCVG\lensCVG%
- \else\ifx\psk@optic@lensType\lensTypePCVG\lensCVG
- \else\lensDVG\fi\fi}%
- \else%
- \ifx\psk@optic@lensType\lensTypeDVG\psset{arrows=>-<}\else
- \ifx\psk@optic@lensType\lensTypePDVG\psset{arrows=>-<}\else\psset{arrows=<->}
- \fi\fi
+ \ifx\psk@optic@lensType\lensTypeCVG \lensCVG%
+ \else\ifx\psk@optic@lensType\lensTypePCVG \lensCVG
+ \else\lensDVG
+ \fi\fi}%
+ \else
+ \ifx\psk@optic@lensType\lensTypeDVG
+ \psset{arrows=>-<}
+ \else
+ \ifx\psk@optic@lensType\lensTypePDVG
+ \psset{arrows=>-<}%
+ \else
+ \psset{arrows=<->}%
+ \fi\fi
\psline[linecolor=\psk@optic@lensColor,
linewidth=\psk@optic@lensWidth,arrowsize=\psk@optic@lensArrowSize,
arrowinset=\psk@optic@lensArrowInset]%
@@ -1999,7 +2005,7 @@
\def\resetOpticOptions{% hv 2006-07-20
\newpsstyle{opticalAxis}{linewidth=0.5pt,linecolor=black,linestyle=solid}
\psset[pst-optic]{%
- lensGlass=false,drawing=true,,lensTwo,rightRay,onlyrays=false,
+ lensGlass=true,drawing=true,lensTwo,rightRay,onlyrays=false,
xLeft=-7.5,xRight=7.5,yBottom=-3.0,yTop=3.0,
lensType=CVG,lensColor=lightgray,lensWidth=0.5,lensDepth=1,
lensHeight=5,lensScale=1,lensArrowSize=0.2,lensArrowInset=0.5,
diff --git a/graphics/tpic2pdftex/Makefile.in b/graphics/tpic2pdftex/Makefile.in
index 3ee8644210..35ec5ed91b 100644
--- a/graphics/tpic2pdftex/Makefile.in
+++ b/graphics/tpic2pdftex/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.5 from Makefile.am.
+# Makefile.in generated by automake 1.17 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+# Copyright (C) 1994-2024 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -70,6 +70,8 @@ am__make_running_with_option = \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+am__rm_f = rm -f $(am__rm_f_notfound)
+am__rm_rf = rm -rf $(am__rm_f_notfound)
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -123,10 +125,9 @@ am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
+ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \
}
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
SCRIPTS = $(bin_SCRIPTS)
@@ -261,6 +262,7 @@ am__sh_e_setup = case $$- in *e*) set +e;; esac
# Default flags passed to test drivers.
am__common_driver_flags = \
--color-tests "$$am__color_tests" \
+ $$am__collect_skipped_logs \
--enable-hard-errors "$$am__enable_hard_errors" \
--expect-failure "$$am__expect_failure"
# To be inserted before the command running the test. Creates the
@@ -285,6 +287,11 @@ if test -f "./$$f"; then dir=./; \
elif test -f "$$f"; then dir=; \
else dir="$(srcdir)/"; fi; \
tst=$$dir$$f; log='$@'; \
+if test -n '$(IGNORE_SKIPPED_LOGS)'; then \
+ am__collect_skipped_logs='--collect-skipped-logs no'; \
+else \
+ am__collect_skipped_logs=''; \
+fi; \
if test -n '$(DISABLE_HARD_ERRORS)'; then \
am__enable_hard_errors=no; \
else \
@@ -345,20 +352,22 @@ distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
if test -d "$(distdir)"; then \
- find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -rf "$(distdir)" \
+ find "$(distdir)" -type d ! -perm -700 -exec chmod u+rwx {} ';' \
+ ; rm -rf "$(distdir)" \
|| { sleep 5 && rm -rf "$(distdir)"; }; \
else :; fi
am__post_remove_distdir = $(am__remove_distdir)
DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
+GZIP_ENV = -9
DIST_TARGETS = dist-gzip
# Exists only to be overridden by the user if desired.
AM_DISTCHECK_DVI_TARGET = dvi
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
-distcleancheck_listfiles = find . -type f -print
+distcleancheck_listfiles = \
+ find . \( -type f -a \! \
+ \( -name .nfs* -o -name .smb* -o -name .__afs* \) \) -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
@@ -414,8 +423,10 @@ ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__rm_f_notfound = @am__rm_f_notfound@
am__tar = @am__tar@
am__untar = @am__untar@
+am__xargs_n = @am__xargs_n@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
@@ -594,7 +605,6 @@ cscope cscopelist:
am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
am--force-recheck:
@:
-
$(TEST_SUITE_LOG): $(TEST_LOGS)
@$(am__set_TESTS_bases); \
am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
@@ -670,10 +680,37 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
result_count $$1 "XPASS:" $$xpass "$$red"; \
result_count $$1 "ERROR:" $$error "$$mgn"; \
}; \
+ output_system_information () \
+ { \
+ echo; \
+ { uname -a | $(AWK) '{ \
+ printf "System information (uname -a):"; \
+ for (i = 1; i < NF; ++i) \
+ { \
+ if (i != 2) \
+ printf " %s", $$i; \
+ } \
+ printf "\n"; \
+}'; } 2>&1; \
+ if test -r /etc/os-release; then \
+ echo "Distribution information (/etc/os-release):"; \
+ sed 8q /etc/os-release; \
+ elif test -r /etc/issue; then \
+ echo "Distribution information (/etc/issue):"; \
+ cat /etc/issue; \
+ fi; \
+ }; \
+ please_report () \
+ { \
+echo "Some test(s) failed. Please report this to $(PACKAGE_BUGREPORT),"; \
+echo "together with the test-suite.log file (gzipped) and your system"; \
+echo "information. Thanks."; \
+ }; \
{ \
echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
$(am__rst_title); \
create_testsuite_report --no-color; \
+ output_system_information; \
echo; \
echo ".. contents:: :depth: 2"; \
echo; \
@@ -693,26 +730,25 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
if $$success; then :; else \
- echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG) for debugging.$${std}";\
if test -n "$(PACKAGE_BUGREPORT)"; then \
- echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ please_report | sed -e "s/^/$${col}/" -e s/'$$'/"$${std}"/; \
fi; \
echo "$$col$$br$$std"; \
fi; \
$$success || exit 1
check-TESTS: $(dist_check_SCRIPTS)
- @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
- @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @$(am__rm_f) $(RECHECK_LOGS)
+ @$(am__rm_f) $(RECHECK_LOGS:.log=.trs)
+ @$(am__rm_f) $(TEST_SUITE_LOG)
@set +e; $(am__set_TESTS_bases); \
log_list=`for i in $$bases; do echo $$i.log; done`; \
- trs_list=`for i in $$bases; do echo $$i.trs; done`; \
- log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ log_list=`echo $$log_list`; \
$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
exit $$?;
recheck: all $(dist_check_SCRIPTS)
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @$(am__rm_f) $(TEST_SUITE_LOG)
@set +e; $(am__set_TESTS_bases); \
bases=`for i in $$bases; do echo $$i; done \
| $(am__list_recheck_tests)` || exit 1; \
@@ -741,7 +777,7 @@ distdir: $(BUILT_SOURCES)
distdir-am: $(DISTFILES)
$(am__remove_distdir)
- test -d "$(distdir)" || mkdir "$(distdir)"
+ $(AM_V_at)$(MKDIR_P) "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
@@ -827,7 +863,7 @@ dist dist-all:
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
- eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
+ eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lz*) \
@@ -837,7 +873,7 @@ distcheck: dist
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
- eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
+ eval GZIP= gzip -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
*.tar.zst*) \
@@ -937,17 +973,17 @@ install-strip:
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
- -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
- -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
- -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ -$(am__rm_f) $(TEST_LOGS)
+ -$(am__rm_f) $(TEST_LOGS:.log=.trs)
+ -$(am__rm_f) $(TEST_SUITE_LOG)
clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+ -$(am__rm_f) $(CLEANFILES)
distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
- -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+ -$(am__rm_f) $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
+ -$(am__rm_f) $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -1062,3 +1098,10 @@ $(tpic_files): Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
+
+# Tell GNU make to disable its built-in pattern rules.
+%:: %,v
+%:: RCS/%,v
+%:: RCS/%
+%:: s.%
+%:: SCCS/s.%
diff --git a/graphics/tpic2pdftex/aclocal.m4 b/graphics/tpic2pdftex/aclocal.m4
index 6f522ebc71..1a674a31f4 100644
--- a/graphics/tpic2pdftex/aclocal.m4
+++ b/graphics/tpic2pdftex/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.16.5 -*- Autoconf -*-
+# generated automatically by aclocal 1.17 -*- Autoconf -*-
-# Copyright (C) 1996-2021 Free Software Foundation, Inc.
+# Copyright (C) 1996-2024 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,7 @@ You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-# Copyright (C) 2002-2021 Free Software Foundation, Inc.
+# Copyright (C) 2002-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.])
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.16'
+[am__api_version='1.17'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.16.5], [],
+m4_if([$1], [1.17], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -51,14 +51,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.16.5])dnl
+[AM_AUTOMAKE_VERSION([1.17])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+# Copyright (C) 2001-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -110,7 +110,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2021 Free Software Foundation, Inc.
+# Copyright (C) 1997-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -141,7 +141,7 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2021 Free Software Foundation, Inc.
+# Copyright (C) 1999-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -273,7 +273,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
# icc doesn't choke on unknown options, it will just issue warnings
# or remarks (even with -Werror). So we grep stderr for any message
# that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # When given -MP, icc 7.0 and 7.1 complain thus:
# icc: Command line warning: ignoring option '-M'; no argument required
# The diagnosis changed in icc 8.0:
# icc: Command line remark: option '-MP' not supported
@@ -332,7 +332,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2021 Free Software Foundation, Inc.
+# Copyright (C) 1999-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -400,7 +400,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2021 Free Software Foundation, Inc.
+# Copyright (C) 1996-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -534,7 +534,7 @@ if test -z "$CSCOPE"; then
fi
AC_SUBST([CSCOPE])
-AC_REQUIRE([AM_SILENT_RULES])dnl
+AC_REQUIRE([_AM_SILENT_RULES])dnl
dnl The testsuite driver may need to know about EXEEXT, so add the
dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
@@ -542,47 +542,9 @@ AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes. So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
- cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present. This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message. This
-can help us improve future automake versions.
+AC_REQUIRE([_AM_PROG_RM_F])
+AC_REQUIRE([_AM_PROG_XARGS_N])
-END
- if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
- echo 'Configuration will proceed anyway, since you have set the' >&2
- echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
- echo >&2
- else
- cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <https://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
- AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
- fi
-fi
dnl The trailing newline in this macro's definition is deliberate, for
dnl backward compatibility and to allow trailing 'dnl'-style comments
dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
@@ -615,7 +577,7 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+# Copyright (C) 2001-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -636,7 +598,7 @@ if test x"${install_sh+set}" != xset; then
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2021 Free Software Foundation, Inc.
+# Copyright (C) 2003-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -658,7 +620,7 @@ AC_SUBST([am__leading_dot])])
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
# From Jim Meyering
-# Copyright (C) 1996-2021 Free Software Foundation, Inc.
+# Copyright (C) 1996-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -693,7 +655,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+# Copyright (C) 2001-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -736,7 +698,7 @@ AC_SUBST([am__quote])])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2021 Free Software Foundation, Inc.
+# Copyright (C) 1997-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -770,7 +732,7 @@ fi
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+# Copyright (C) 2001-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -799,7 +761,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2021 Free Software Foundation, Inc.
+# Copyright (C) 1999-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -846,7 +808,23 @@ AC_LANG_POP([C])])
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+# Copyright (C) 2022-2024 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_RM_F
+# ---------------
+# Check whether 'rm -f' without any arguments works.
+# https://bugs.gnu.org/10828
+AC_DEFUN([_AM_PROG_RM_F],
+[am__rm_f_notfound=
+AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""'])
+AC_SUBST(am__rm_f_notfound)
+])
+
+# Copyright (C) 2001-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -865,16 +843,169 @@ AC_DEFUN([AM_RUN_LOG],
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2021 Free Software Foundation, Inc.
+# Copyright (C) 1996-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# _AM_SLEEP_FRACTIONAL_SECONDS
+# ----------------------------
+AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl
+AC_CACHE_CHECK([whether sleep supports fractional seconds],
+ am_cv_sleep_fractional_seconds, [dnl
+AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes],
+ [am_cv_sleep_fractional_seconds=no])
+])])
+
+# _AM_FILESYSTEM_TIMESTAMP_RESOLUTION
+# -----------------------------------
+# Determine the filesystem's resolution for file modification
+# timestamps. The coarsest we know of is FAT, with a resolution
+# of only two seconds, even with the most recent "exFAT" extensions.
+# The finest (e.g. ext4 with large inodes, XFS, ZFS) is one
+# nanosecond, matching clock_gettime. However, it is probably not
+# possible to delay execution of a shell script for less than one
+# millisecond, due to process creation overhead and scheduling
+# granularity, so we don't check for anything finer than that. (See below.)
+AC_DEFUN([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION], [dnl
+AC_REQUIRE([_AM_SLEEP_FRACTIONAL_SECONDS])
+AC_CACHE_CHECK([filesystem timestamp resolution],
+ am_cv_filesystem_timestamp_resolution, [dnl
+# Default to the worst case.
+am_cv_filesystem_timestamp_resolution=2
+
+# Only try to go finer than 1 sec if sleep can do it.
+# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work,
+# - 1 sec is not much of a win compared to 2 sec, and
+# - it takes 2 seconds to perform the test whether 1 sec works.
+#
+# Instead, just use the default 2s on platforms that have 1s resolution,
+# accept the extra 1s delay when using $sleep in the Automake tests, in
+# exchange for not incurring the 2s delay for running the test for all
+# packages.
+#
+am_try_resolutions=
+if test "$am_cv_sleep_fractional_seconds" = yes; then
+ # Even a millisecond often causes a bunch of false positives,
+ # so just try a hundredth of a second. The time saved between .001 and
+ # .01 is not terribly consequential.
+ am_try_resolutions="0.01 0.1 $am_try_resolutions"
+fi
+
+# In order to catch current-generation FAT out, we must *modify* files
+# that already exist; the *creation* timestamp is finer. Use names
+# that make ls -t sort them differently when they have equal
+# timestamps than when they have distinct timestamps, keeping
+# in mind that ls -t prints the *newest* file first.
+rm -f conftest.ts?
+: > conftest.ts1
+: > conftest.ts2
+: > conftest.ts3
+
+# Make sure ls -t actually works. Do 'set' in a subshell so we don't
+# clobber the current shell's arguments. (Outer-level square brackets
+# are removed by m4; they're present so that m4 does not expand
+# <dollar><star>; be careful, easy to get confused.)
+if (
+ set X `[ls -t conftest.ts[12]]` &&
+ {
+ test "$[]*" != "X conftest.ts1 conftest.ts2" ||
+ test "$[]*" != "X conftest.ts2 conftest.ts1";
+ }
+); then :; else
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ _AS_ECHO_UNQUOTED(
+ ["Bad output from ls -t: \"`[ls -t conftest.ts[12]]`\""],
+ [AS_MESSAGE_LOG_FD])
+ AC_MSG_FAILURE([ls -t produces unexpected output.
+Make sure there is not a broken ls alias in your environment.])
+fi
+
+for am_try_res in $am_try_resolutions; do
+ # Any one fine-grained sleep might happen to cross the boundary
+ # between two values of a coarser actual resolution, but if we do
+ # two fine-grained sleeps in a row, at least one of them will fall
+ # entirely within a coarse interval.
+ echo alpha > conftest.ts1
+ sleep $am_try_res
+ echo beta > conftest.ts2
+ sleep $am_try_res
+ echo gamma > conftest.ts3
+
+ # We assume that 'ls -t' will make use of high-resolution
+ # timestamps if the operating system supports them at all.
+ if (set X `ls -t conftest.ts?` &&
+ test "$[]2" = conftest.ts3 &&
+ test "$[]3" = conftest.ts2 &&
+ test "$[]4" = conftest.ts1); then
+ #
+ # Ok, ls -t worked. If we're at a resolution of 1 second, we're done,
+ # because we don't need to test make.
+ make_ok=true
+ if test $am_try_res != 1; then
+ # But if we've succeeded so far with a subsecond resolution, we
+ # have one more thing to check: make. It can happen that
+ # everything else supports the subsecond mtimes, but make doesn't;
+ # notably on macOS, which ships make 3.81 from 2006 (the last one
+ # released under GPLv2). https://bugs.gnu.org/68808
+ #
+ # We test $MAKE if it is defined in the environment, else "make".
+ # It might get overridden later, but our hope is that in practice
+ # it does not matter: it is the system "make" which is (by far)
+ # the most likely to be broken, whereas if the user overrides it,
+ # probably they did so with a better, or at least not worse, make.
+ # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html
+ #
+ # Create a Makefile (real tab character here):
+ rm -f conftest.mk
+ echo 'conftest.ts1: conftest.ts2' >conftest.mk
+ echo ' touch conftest.ts2' >>conftest.mk
+ #
+ # Now, running
+ # touch conftest.ts1; touch conftest.ts2; make
+ # should touch ts1 because ts2 is newer. This could happen by luck,
+ # but most often, it will fail if make's support is insufficient. So
+ # test for several consecutive successes.
+ #
+ # (We reuse conftest.ts[12] because we still want to modify existing
+ # files, not create new ones, per above.)
+ n=0
+ make=${MAKE-make}
+ until test $n -eq 3; do
+ echo one > conftest.ts1
+ sleep $am_try_res
+ echo two > conftest.ts2 # ts2 should now be newer than ts1
+ if $make -f conftest.mk | grep 'up to date' >/dev/null; then
+ make_ok=false
+ break # out of $n loop
+ fi
+ n=`expr $n + 1`
+ done
+ fi
+ #
+ if $make_ok; then
+ # Everything we know to check worked out, so call this resolution good.
+ am_cv_filesystem_timestamp_resolution=$am_try_res
+ break # out of $am_try_res loop
+ fi
+ # Otherwise, we'll go on to check the next resolution.
+ fi
+done
+rm -f conftest.ts?
+# (end _am_filesystem_timestamp_resolution)
+])])
+
# AM_SANITY_CHECK
# ---------------
AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
+[AC_REQUIRE([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION])
+# This check should not be cached, as it may vary across builds of
+# different projects.
+AC_MSG_CHECKING([whether build environment is sane])
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
@@ -893,49 +1024,40 @@ esac
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
-if (
- am_has_slept=no
- for am_try in 1 2; do
- echo "timestamp, slept: $am_has_slept" > conftest.file
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$[*]" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- if test "$[*]" != "X $srcdir/configure conftest.file" \
- && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
- alias in your environment])
- fi
- if test "$[2]" = conftest.file || test $am_try -eq 2; then
- break
- fi
- # Just in case.
- sleep 1
- am_has_slept=yes
- done
- test "$[2]" = conftest.file
- )
-then
- # Ok.
- :
-else
- AC_MSG_ERROR([newly created file is older than distributed files!
+am_build_env_is_sane=no
+am_has_slept=no
+rm -f conftest.file
+for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[]*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ test "$[]2" = conftest.file
+ ); then
+ am_build_env_is_sane=yes
+ break
+ fi
+ # Just in case.
+ sleep "$am_cv_filesystem_timestamp_resolution"
+ am_has_slept=yes
+done
+
+AC_MSG_RESULT([$am_build_env_is_sane])
+if test "$am_build_env_is_sane" = no; then
+ AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
-AC_MSG_RESULT([yes])
+
# If we didn't sleep, we still need to ensure time stamps of config.status and
# generated files are strictly newer.
am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
- ( sleep 1 ) &
+AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1],, [dnl
+ ( sleep "$am_cv_filesystem_timestamp_resolution" ) &
am_sleep_pid=$!
-fi
+])
AC_CONFIG_COMMANDS_PRE(
[AC_MSG_CHECKING([that generated files are newer than configure])
if test -n "$am_sleep_pid"; then
@@ -946,18 +1068,18 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file
])
-# Copyright (C) 2009-2021 Free Software Foundation, Inc.
+# Copyright (C) 2009-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# AM_SILENT_RULES([DEFAULT])
-# --------------------------
-# Enable less verbose build rules; with the default set to DEFAULT
-# ("yes" being less verbose, "no" or empty being verbose).
-AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules], [dnl
+# _AM_SILENT_RULES
+# ----------------
+# Enable less verbose build rules support.
+AC_DEFUN([_AM_SILENT_RULES],
+[AM_DEFAULT_VERBOSITY=1
+AC_ARG_ENABLE([silent-rules], [dnl
AS_HELP_STRING(
[--enable-silent-rules],
[less verbose build output (undo: "make V=1")])
@@ -965,11 +1087,6 @@ AS_HELP_STRING(
[--disable-silent-rules],
[verbose build output (undo: "make V=0")])dnl
])
-case $enable_silent_rules in @%:@ (((
- yes) AM_DEFAULT_VERBOSITY=0;;
- no) AM_DEFAULT_VERBOSITY=1;;
- *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
-esac
dnl
dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
dnl do not support nested variable expansions.
@@ -988,14 +1105,6 @@ am__doit:
else
am_cv_make_support_nested_variables=no
fi])
-if test $am_cv_make_support_nested_variables = yes; then
- dnl Using '$V' instead of '$(V)' breaks IRIX make.
- AM_V='$(V)'
- AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
- AM_V=$AM_DEFAULT_VERBOSITY
- AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
AC_SUBST([AM_V])dnl
AM_SUBST_NOTMAKE([AM_V])dnl
AC_SUBST([AM_DEFAULT_V])dnl
@@ -1004,9 +1113,33 @@ AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
AM_BACKSLASH='\'
AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+dnl Delay evaluation of AM_DEFAULT_VERBOSITY to the end to allow multiple calls
+dnl to AM_SILENT_RULES to change the default value.
+AC_CONFIG_COMMANDS_PRE([dnl
+case $enable_silent_rules in @%:@ (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+esac
+if test $am_cv_make_support_nested_variables = yes; then
+ dnl Using '$V' instead of '$(V)' breaks IRIX make.
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+])dnl
])
-# Copyright (C) 2001-2021 Free Software Foundation, Inc.
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Set the default verbosity level to DEFAULT ("yes" being less verbose, "no" or
+# empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_REQUIRE([_AM_SILENT_RULES])
+AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])])
+
+# Copyright (C) 2001-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1034,7 +1167,7 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2021 Free Software Foundation, Inc.
+# Copyright (C) 2006-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1053,7 +1186,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2021 Free Software Foundation, Inc.
+# Copyright (C) 2004-2024 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1099,15 +1232,19 @@ m4_if([$1], [v7],
am_uid=`id -u || echo unknown`
am_gid=`id -g || echo unknown`
AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
- if test $am_uid -le $am_max_uid; then
- AC_MSG_RESULT([yes])
+ if test x$am_uid = xunknown; then
+ AC_MSG_WARN([ancient id detected; assuming current UID is ok, but dist-ustar might not work])
+ elif test $am_uid -le $am_max_uid; then
+ AC_MSG_RESULT([yes])
else
- AC_MSG_RESULT([no])
- _am_tools=none
+ AC_MSG_RESULT([no])
+ _am_tools=none
fi
AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
- if test $am_gid -le $am_max_gid; then
- AC_MSG_RESULT([yes])
+ if test x$gm_gid = xunknown; then
+ AC_MSG_WARN([ancient id detected; assuming current GID is ok, but dist-ustar might not work])
+ elif test $am_gid -le $am_max_gid; then
+ AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
_am_tools=none
@@ -1184,6 +1321,26 @@ AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
+# Copyright (C) 2022-2024 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_XARGS_N
+# ----------------
+# Check whether 'xargs -n' works. It should work everywhere, so the fallback
+# is not optimized at all as we never expect to use it.
+AC_DEFUN([_AM_PROG_XARGS_N],
+[AC_CACHE_CHECK([xargs -n works], am_cv_xargs_n_works, [dnl
+AS_IF([test "`echo 1 2 3 | xargs -n2 echo`" = "1 2
+3"], [am_cv_xargs_n_works=yes], [am_cv_xargs_n_works=no])])
+AS_IF([test "$am_cv_xargs_n_works" = yes], [am__xargs_n='xargs -n'], [dnl
+ am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "$@" "$am__xargs_n_arg"; done; }'
+])dnl
+AC_SUBST(am__xargs_n)
+])
+
m4_include([../../m4/kpse-common.m4])
m4_include([../../m4/kpse-warnings.m4])
m4_include([../../m4/kpse-win32.m4])
diff --git a/graphics/tpic2pdftex/configure.texk b/graphics/tpic2pdftex/configure.texk
index 34f8982c14..a54279b813 100755
--- a/graphics/tpic2pdftex/configure.texk
+++ b/graphics/tpic2pdftex/configure.texk
@@ -667,6 +667,8 @@ CC
MAINT
MAINTAINER_MODE_FALSE
MAINTAINER_MODE_TRUE
+am__xargs_n
+am__rm_f_notfound
AM_BACKSLASH
AM_DEFAULT_VERBOSITY
AM_DEFAULT_V
@@ -2406,7 +2408,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-am__api_version='1.16'
+am__api_version='1.17'
@@ -2509,6 +2511,165 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5
+printf %s "checking whether sleep supports fractional seconds... " >&6; }
+if test ${am_cv_sleep_fractional_seconds+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if sleep 0.001 2>/dev/null
+then :
+ am_cv_sleep_fractional_seconds=yes
+else case e in #(
+ e) am_cv_sleep_fractional_seconds=no ;;
+esac
+fi
+ ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5
+printf "%s\n" "$am_cv_sleep_fractional_seconds" >&6; }
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5
+printf %s "checking filesystem timestamp resolution... " >&6; }
+if test ${am_cv_filesystem_timestamp_resolution+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) # Default to the worst case.
+am_cv_filesystem_timestamp_resolution=2
+
+# Only try to go finer than 1 sec if sleep can do it.
+# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work,
+# - 1 sec is not much of a win compared to 2 sec, and
+# - it takes 2 seconds to perform the test whether 1 sec works.
+#
+# Instead, just use the default 2s on platforms that have 1s resolution,
+# accept the extra 1s delay when using $sleep in the Automake tests, in
+# exchange for not incurring the 2s delay for running the test for all
+# packages.
+#
+am_try_resolutions=
+if test "$am_cv_sleep_fractional_seconds" = yes; then
+ # Even a millisecond often causes a bunch of false positives,
+ # so just try a hundredth of a second. The time saved between .001 and
+ # .01 is not terribly consequential.
+ am_try_resolutions="0.01 0.1 $am_try_resolutions"
+fi
+
+# In order to catch current-generation FAT out, we must *modify* files
+# that already exist; the *creation* timestamp is finer. Use names
+# that make ls -t sort them differently when they have equal
+# timestamps than when they have distinct timestamps, keeping
+# in mind that ls -t prints the *newest* file first.
+rm -f conftest.ts?
+: > conftest.ts1
+: > conftest.ts2
+: > conftest.ts3
+
+# Make sure ls -t actually works. Do 'set' in a subshell so we don't
+# clobber the current shell's arguments. (Outer-level square brackets
+# are removed by m4; they're present so that m4 does not expand
+# <dollar><star>; be careful, easy to get confused.)
+if (
+ set X `ls -t conftest.ts[12]` &&
+ {
+ test "$*" != "X conftest.ts1 conftest.ts2" ||
+ test "$*" != "X conftest.ts2 conftest.ts1";
+ }
+); then :; else
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ printf "%s\n" ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+as_fn_error $? "ls -t produces unexpected output.
+Make sure there is not a broken ls alias in your environment.
+See 'config.log' for more details" "$LINENO" 5; }
+fi
+
+for am_try_res in $am_try_resolutions; do
+ # Any one fine-grained sleep might happen to cross the boundary
+ # between two values of a coarser actual resolution, but if we do
+ # two fine-grained sleeps in a row, at least one of them will fall
+ # entirely within a coarse interval.
+ echo alpha > conftest.ts1
+ sleep $am_try_res
+ echo beta > conftest.ts2
+ sleep $am_try_res
+ echo gamma > conftest.ts3
+
+ # We assume that 'ls -t' will make use of high-resolution
+ # timestamps if the operating system supports them at all.
+ if (set X `ls -t conftest.ts?` &&
+ test "$2" = conftest.ts3 &&
+ test "$3" = conftest.ts2 &&
+ test "$4" = conftest.ts1); then
+ #
+ # Ok, ls -t worked. If we're at a resolution of 1 second, we're done,
+ # because we don't need to test make.
+ make_ok=true
+ if test $am_try_res != 1; then
+ # But if we've succeeded so far with a subsecond resolution, we
+ # have one more thing to check: make. It can happen that
+ # everything else supports the subsecond mtimes, but make doesn't;
+ # notably on macOS, which ships make 3.81 from 2006 (the last one
+ # released under GPLv2). https://bugs.gnu.org/68808
+ #
+ # We test $MAKE if it is defined in the environment, else "make".
+ # It might get overridden later, but our hope is that in practice
+ # it does not matter: it is the system "make" which is (by far)
+ # the most likely to be broken, whereas if the user overrides it,
+ # probably they did so with a better, or at least not worse, make.
+ # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html
+ #
+ # Create a Makefile (real tab character here):
+ rm -f conftest.mk
+ echo 'conftest.ts1: conftest.ts2' >conftest.mk
+ echo ' touch conftest.ts2' >>conftest.mk
+ #
+ # Now, running
+ # touch conftest.ts1; touch conftest.ts2; make
+ # should touch ts1 because ts2 is newer. This could happen by luck,
+ # but most often, it will fail if make's support is insufficient. So
+ # test for several consecutive successes.
+ #
+ # (We reuse conftest.ts[12] because we still want to modify existing
+ # files, not create new ones, per above.)
+ n=0
+ make=${MAKE-make}
+ until test $n -eq 3; do
+ echo one > conftest.ts1
+ sleep $am_try_res
+ echo two > conftest.ts2 # ts2 should now be newer than ts1
+ if $make -f conftest.mk | grep 'up to date' >/dev/null; then
+ make_ok=false
+ break # out of $n loop
+ fi
+ n=`expr $n + 1`
+ done
+ fi
+ #
+ if $make_ok; then
+ # Everything we know to check worked out, so call this resolution good.
+ am_cv_filesystem_timestamp_resolution=$am_try_res
+ break # out of $am_try_res loop
+ fi
+ # Otherwise, we'll go on to check the next resolution.
+ fi
+done
+rm -f conftest.ts?
+# (end _am_filesystem_timestamp_resolution)
+ ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5
+printf "%s\n" "$am_cv_filesystem_timestamp_resolution" >&6; }
+
+# This check should not be cached, as it may vary across builds of
+# different projects.
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
printf %s "checking whether build environment is sane... " >&6; }
# Reject unsafe characters in $srcdir or the absolute working directory
@@ -2529,49 +2690,45 @@ esac
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
-if (
- am_has_slept=no
- for am_try in 1 2; do
- echo "timestamp, slept: $am_has_slept" > conftest.file
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$*" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- if test "$*" != "X $srcdir/configure conftest.file" \
- && test "$*" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
- alias in your environment" "$LINENO" 5
- fi
- if test "$2" = conftest.file || test $am_try -eq 2; then
- break
- fi
- # Just in case.
- sleep 1
- am_has_slept=yes
- done
- test "$2" = conftest.file
- )
-then
- # Ok.
- :
-else
- as_fn_error $? "newly created file is older than distributed files!
+am_build_env_is_sane=no
+am_has_slept=no
+rm -f conftest.file
+for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ test "$2" = conftest.file
+ ); then
+ am_build_env_is_sane=yes
+ break
+ fi
+ # Just in case.
+ sleep "$am_cv_filesystem_timestamp_resolution"
+ am_has_slept=yes
+done
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5
+printf "%s\n" "$am_build_env_is_sane" >&6; }
+if test "$am_build_env_is_sane" = no; then
+ as_fn_error $? "newly created file is older than distributed files!
Check your system clock" "$LINENO" 5
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
+
# If we didn't sleep, we still need to ensure time stamps of config.status and
# generated files are strictly newer.
am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
- ( sleep 1 ) &
+if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1
+then :
+
+else case e in #(
+ e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) &
am_sleep_pid=$!
+ ;;
+esac
fi
rm -f conftest.file
@@ -2861,17 +3018,13 @@ else
fi
rmdir .tst 2>/dev/null
+AM_DEFAULT_VERBOSITY=1
# Check whether --enable-silent-rules was given.
if test ${enable_silent_rules+y}
then :
enableval=$enable_silent_rules;
fi
-case $enable_silent_rules in # (((
- yes) AM_DEFAULT_VERBOSITY=0;;
- no) AM_DEFAULT_VERBOSITY=1;;
- *) AM_DEFAULT_VERBOSITY=1;;
-esac
am_make=${MAKE-make}
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
printf %s "checking whether $am_make supports nested variables... " >&6; }
@@ -2894,15 +3047,45 @@ esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
printf "%s\n" "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
- AM_V='$(V)'
- AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
- AM_V=$AM_DEFAULT_VERBOSITY
- AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
AM_BACKSLASH='\'
+am__rm_f_notfound=
+if (rm -f && rm -fr && rm -rf) 2>/dev/null
+then :
+
+else case e in #(
+ e) am__rm_f_notfound='""' ;;
+esac
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5
+printf %s "checking xargs -n works... " >&6; }
+if test ${am_cv_xargs_n_works+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2
+3"
+then :
+ am_cv_xargs_n_works=yes
+else case e in #(
+ e) am_cv_xargs_n_works=no ;;
+esac
+fi ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5
+printf "%s\n" "$am_cv_xargs_n_works" >&6; }
+if test "$am_cv_xargs_n_works" = yes
+then :
+ am__xargs_n='xargs -n'
+else case e in #(
+ e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }'
+ ;;
+esac
+fi
+
@@ -4149,7 +4332,7 @@ else case e in #(
# icc doesn't choke on unknown options, it will just issue warnings
# or remarks (even with -Werror). So we grep stderr for any message
# that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # When given -MP, icc 7.0 and 7.1 complain thus:
# icc: Command line warning: ignoring option '-M'; no argument required
# The diagnosis changed in icc 8.0:
# icc: Command line remark: option '-MP' not supported
@@ -4467,47 +4650,9 @@ fi
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes. So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
- cat >&2 <<'END'
-Oops!
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present. This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message. This
-can help us improve future automake versions.
-END
- if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
- echo 'Configuration will proceed anyway, since you have set the' >&2
- echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
- echo >&2
- else
- cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <https://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
- as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
- fi
-fi
# am_maintainer_mode
@@ -4853,6 +4998,18 @@ printf %s "checking that generated files are newer than configure... " >&6; }
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5
printf "%s\n" "done" >&6; }
+case $enable_silent_rules in # (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+esac
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+
if test -n "$EXEEXT"; then
am__EXEEXT_TRUE=
am__EXEEXT_FALSE='#'