From 7b271baae19db1528fbe6621bdf50af89a5a336b Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Fri, 22 Feb 2019 20:29:46 +0100 Subject: 2019-02-22 19:43:00 --- doc/context/documents/general/manuals/bidi.pdf | Bin 136420 -> 136679 bytes doc/context/documents/general/manuals/graphics.pdf | Bin 0 -> 245028 bytes .../documents/general/manuals/interaction.pdf | Bin 0 -> 316342 bytes doc/context/documents/general/manuals/luatex.pdf | Bin 1172923 -> 1518264 bytes doc/context/documents/general/manuals/musings.pdf | Bin 0 -> 5761926 bytes doc/context/documents/general/manuals/nodes.pdf | Bin 349282 -> 346558 bytes doc/context/documents/general/manuals/onandon.pdf | Bin 2920276 -> 6602776 bytes .../documents/general/manuals/rules-mkiv.pdf | Bin 155750 -> 187549 bytes doc/context/documents/general/manuals/texit.pdf | Bin 0 -> 163390 bytes doc/context/documents/general/manuals/tiptrick.pdf | Bin 47528 -> 47908 bytes .../documents/general/manuals/tools-mkiv.pdf | Bin 358708 -> 357263 bytes doc/context/documents/general/manuals/xml-mkiv.pdf | Bin 1353423 -> 1008282 bytes .../documents/general/manuals/xtables-mkiv.pdf | Bin 154883 -> 157802 bytes doc/context/documents/general/qrcs/setup-cs.pdf | Bin 844437 -> 858631 bytes doc/context/documents/general/qrcs/setup-de.pdf | Bin 842070 -> 859030 bytes doc/context/documents/general/qrcs/setup-en.pdf | Bin 846220 -> 865671 bytes doc/context/documents/general/qrcs/setup-fr.pdf | Bin 840822 -> 857355 bytes doc/context/documents/general/qrcs/setup-it.pdf | Bin 843093 -> 862588 bytes .../documents/general/qrcs/setup-mapping-cs.pdf | Bin 359482 -> 348597 bytes .../documents/general/qrcs/setup-mapping-de.pdf | Bin 441554 -> 433010 bytes .../documents/general/qrcs/setup-mapping-en.pdf | Bin 356210 -> 346384 bytes .../documents/general/qrcs/setup-mapping-fr.pdf | Bin 359600 -> 349176 bytes .../documents/general/qrcs/setup-mapping-it.pdf | Bin 358138 -> 347797 bytes .../documents/general/qrcs/setup-mapping-nl.pdf | Bin 356957 -> 347138 bytes .../documents/general/qrcs/setup-mapping-ro.pdf | Bin 610343 -> 510503 bytes doc/context/documents/general/qrcs/setup-nl.pdf | Bin 835674 -> 852315 bytes doc/context/documents/general/qrcs/setup-ro.pdf | Bin 840784 -> 856589 bytes doc/context/examples/calculator/calculator.pdf | Bin 0 -> 145209 bytes doc/context/examples/calculator/calculator.tex | 1871 +++++++++ doc/context/examples/clock/clock.pdf | Bin 0 -> 65731 bytes doc/context/examples/clock/clock.tex | 156 + .../bachotex/2005/bachotex-2005-fonts.tex | 1 + .../bachotex/2005/bachotex-2005-hyphenation.tex | 1 + .../bachotex/2009/bachotex-2009-luatex.tex | 1 + .../bachotex/2009/bachotex-2009-math.tex | 1 + .../bachotex/2009/bachotex-2009-opentype.tex | 1 + .../bachotex/2011/bachotex-2011-ebook.tex | 1 + .../bachotex/2011/bachotex-2011-math.tex | 1 + .../bachotex/2011/bachotex-2011-metapost.tex | 1 + .../bachotex/2012/bachotex-2012-context.tex | 1 + .../bachotex/2012/bachotex-2012-future.tex | 1 + .../bachotex/2014/bachotex-2014-luatex.tex | 1 + .../bachotex/2014/bachotex-2014-metapost.tex | 1 + .../bachotex/2018/bachotex-2018-fonteffects.pdf | Bin 0 -> 269685 bytes .../bachotex/2018/bachotex-2018-fonteffects.tex | 912 ++++ .../bachotex/2018/bachotex-2018-mp.pdf | Bin 0 -> 422585 bytes .../bachotex/2018/bachotex-2018-mp.tex | 1856 +++++++++ .../context/2007/context-2007-luatex.tex | 1 + .../context/2007/context-2007-mkiv.tex | 1 + .../context/2010/context-2010-just-in-time-1.tex | 1 + .../context/2010/context-2010-just-in-time-2.tex | 1 + .../context/2010/context-2010-requirements.tex | 1 + .../2010/context-2010-structure-matters.tex | 1 + .../context/2010/context-2010-workflows.tex | 1 + .../presentations/examples/present-steps-001.pdf | Bin 0 -> 12778 bytes .../presentations/examples/present-steps-001.tex | 114 + .../presentations/tug/2001/tug-2001-ideas.pdf | Bin 0 -> 659331 bytes .../presentations/tug/2001/tug-2001-ideas.tex | 445 ++ .../presentations/tug/2007/tug-2007-fonts.pdf | Bin 0 -> 120377 bytes doc/context/scripts/mkii/ctxtools.man | 2 +- doc/context/scripts/mkii/imgtopdf.man | 2 +- doc/context/scripts/mkii/mptopdf.man | 2 +- doc/context/scripts/mkii/pdftools.man | 2 +- doc/context/scripts/mkii/pstopdf.man | 2 +- doc/context/scripts/mkii/rlxtools.man | 2 +- doc/context/scripts/mkii/texexec.man | 2 +- doc/context/scripts/mkii/texmfstart.html | 4 +- doc/context/scripts/mkii/texmfstart.man | 10 +- doc/context/scripts/mkii/texmfstart.xml | 4 +- doc/context/scripts/mkii/textools.man | 2 +- doc/context/scripts/mkii/texutil.man | 2 +- doc/context/scripts/mkii/tmftools.man | 2 +- doc/context/scripts/mkii/xmltools.man | 2 +- doc/context/scripts/mkiv/context.html | 2 + doc/context/scripts/mkiv/context.man | 8 +- doc/context/scripts/mkiv/context.xml | 6 + doc/context/scripts/mkiv/luatools.man | 2 +- doc/context/scripts/mkiv/mtx-babel.man | 2 +- doc/context/scripts/mkiv/mtx-base.man | 2 +- doc/context/scripts/mkiv/mtx-bibtex.man | 2 +- doc/context/scripts/mkiv/mtx-cache.man | 2 +- doc/context/scripts/mkiv/mtx-chars.man | 2 +- doc/context/scripts/mkiv/mtx-check.man | 2 +- doc/context/scripts/mkiv/mtx-colors.man | 2 +- doc/context/scripts/mkiv/mtx-context.html | 2 + doc/context/scripts/mkiv/mtx-context.man | 8 +- doc/context/scripts/mkiv/mtx-context.xml | 6 + doc/context/scripts/mkiv/mtx-dvi.man | 2 +- doc/context/scripts/mkiv/mtx-epub.man | 2 +- doc/context/scripts/mkiv/mtx-evohome.html | 1 + doc/context/scripts/mkiv/mtx-evohome.man | 5 +- doc/context/scripts/mkiv/mtx-evohome.xml | 1 + doc/context/scripts/mkiv/mtx-fcd.man | 2 +- doc/context/scripts/mkiv/mtx-flac.man | 2 +- doc/context/scripts/mkiv/mtx-fonts.man | 2 +- doc/context/scripts/mkiv/mtx-grep.man | 2 +- doc/context/scripts/mkiv/mtx-interface.man | 2 +- doc/context/scripts/mkiv/mtx-metapost.man | 2 +- doc/context/scripts/mkiv/mtx-metatex.html | 49 - doc/context/scripts/mkiv/mtx-metatex.man | 30 - doc/context/scripts/mkiv/mtx-metatex.xml | 16 - doc/context/scripts/mkiv/mtx-modules.man | 2 +- doc/context/scripts/mkiv/mtx-package.man | 2 +- doc/context/scripts/mkiv/mtx-patterns.html | 61 - doc/context/scripts/mkiv/mtx-patterns.man | 48 - doc/context/scripts/mkiv/mtx-patterns.xml | 34 - doc/context/scripts/mkiv/mtx-pdf.html | 3 +- doc/context/scripts/mkiv/mtx-pdf.man | 8 +- doc/context/scripts/mkiv/mtx-pdf.xml | 7 +- doc/context/scripts/mkiv/mtx-plain.man | 2 +- doc/context/scripts/mkiv/mtx-profile.man | 2 +- doc/context/scripts/mkiv/mtx-rsync.man | 2 +- doc/context/scripts/mkiv/mtx-scite.man | 2 +- doc/context/scripts/mkiv/mtx-server.man | 2 +- doc/context/scripts/mkiv/mtx-texworks.man | 2 +- doc/context/scripts/mkiv/mtx-timing.man | 2 +- doc/context/scripts/mkiv/mtx-tools.man | 2 +- doc/context/scripts/mkiv/mtx-unicode.man | 2 +- doc/context/scripts/mkiv/mtx-unzip.man | 2 +- doc/context/scripts/mkiv/mtx-update.man | 2 +- doc/context/scripts/mkiv/mtx-watch.man | 2 +- doc/context/scripts/mkiv/mtx-youless.html | 4 +- doc/context/scripts/mkiv/mtx-youless.man | 2 +- doc/context/scripts/mkiv/mtxrun.html | 4 +- doc/context/scripts/mkiv/mtxrun.man | 10 +- doc/context/scripts/mkiv/mtxrun.xml | 4 +- .../general/fonts/fonts/fonts-demo-rule.lua | 47 + .../general/fonts/fonts/fonts-extensions.tex | 13 +- .../sources/general/fonts/fonts/fonts-features.tex | 2 +- .../sources/general/fonts/fonts/fonts-tricks.tex | 2 + .../general/manuals/about/about-metafun.tex | 12 +- .../general/manuals/cld/cld-moreonfunctions.tex | 39 +- .../sources/general/manuals/graphics/graphics.tex | 415 ++ .../manuals/interaction/interaction-actions.tex | 204 + .../interaction/interaction-annotations.tex | 106 + .../interaction/interaction-attachments.tex | 174 + .../manuals/interaction/interaction-bookmarks.tex | 75 + .../manuals/interaction/interaction-buttons.tex | 98 + .../manuals/interaction/interaction-comments.tex | 194 + .../manuals/interaction/interaction-contents.tex | 11 + .../manuals/interaction/interaction-enabling.tex | 117 + .../manuals/interaction/interaction-hyperlinks.tex | 32 + .../manuals/interaction/interaction-importing.tex | 73 + .../interaction/interaction-introduction.tex | 58 + .../manuals/interaction/interaction-javascript.tex | 136 + .../manuals/interaction/interaction-menus.tex | 12 + .../manuals/interaction/interaction-progress.tex | 11 + .../manuals/interaction/interaction-structure.tex | 76 + .../manuals/interaction/interaction-style.tex | 59 + .../manuals/interaction/interaction-tagging.tex | 26 + .../manuals/interaction/interaction-titlepage.tex | 47 + .../interaction/interaction-transitions.tex | 64 + .../manuals/interaction/interaction-widgets.tex | 977 +++++ .../general/manuals/interaction/interaction.tex | 34 + .../manuals/languages/languages-numbering.tex | 4 + .../general/manuals/luatex/luatex-contents.tex | 1 - .../general/manuals/luatex/luatex-enhancements.tex | 1052 +++-- .../general/manuals/luatex/luatex-firstpage.tex | 32 + .../general/manuals/luatex/luatex-fonts.tex | 497 ++- .../general/manuals/luatex/luatex-introduction.tex | 130 +- .../general/manuals/luatex/luatex-languages.tex | 793 ++-- .../general/manuals/luatex/luatex-logos.tex | 2 + .../sources/general/manuals/luatex/luatex-lua.tex | 508 ++- .../sources/general/manuals/luatex/luatex-math.tex | 1638 ++++---- .../manuals/luatex/luatex-modifications.tex | 668 +-- .../general/manuals/luatex/luatex-nodes.tex | 1768 +++++--- .../general/manuals/luatex/luatex-preamble.tex | 110 + .../general/manuals/luatex/luatex-registers.tex | 47 + .../general/manuals/luatex/luatex-statistics.tex | 17 + .../general/manuals/luatex/luatex-style.tex | 204 +- .../general/manuals/luatex/luatex-titlepage.tex | 57 +- .../sources/general/manuals/luatex/luatex.tex | 37 +- .../sources/general/manuals/math/math-input.tex | 30 + .../general/manuals/metafun/metafun-lua.tex | 581 ++- .../general/manuals/musings/musings-children.tex | 1253 ++++++ .../general/manuals/musings/musings-contents.tex | 7 + .../manuals/musings/musings-introduction.tex | 31 + .../general/manuals/musings/musings-perception.tex | 180 + .../general/manuals/musings/musings-roadmap.tex | 372 ++ .../general/manuals/musings/musings-stability.tex | 388 ++ .../general/manuals/musings/musings-staygo.tex | 461 +++ .../general/manuals/musings/musings-style.tex | 92 + .../general/manuals/musings/musings-titlepage.tex | 46 + .../general/manuals/musings/musings-whytex.tex | 326 ++ .../sources/general/manuals/musings/musings.tex | 21 + .../sources/general/manuals/nodes/nodes.tex | 102 +- .../general/manuals/notnow/notnow-sidefloats.tex | 2 - .../general/manuals/onandon/onandon-110.tex | 137 + .../sources/general/manuals/onandon/onandon-53.tex | 288 ++ .../general/manuals/onandon/onandon-emoji.tex | 16 +- .../general/manuals/onandon/onandon-execute.tex | 396 ++ .../general/manuals/onandon/onandon-expansion.tex | 307 ++ .../general/manuals/onandon/onandon-fences.tex | 499 +++ .../general/manuals/onandon/onandon-media.tex | 220 + .../general/manuals/onandon/onandon-modern.tex | 1284 ++++++ .../manuals/onandon/onandon-performance.tex | 523 +-- .../general/manuals/onandon/onandon-runtoks.tex | 531 +++ .../general/manuals/onandon/onandon-variable.tex | 328 +- .../sources/general/manuals/onandon/onandon.tex | 22 +- .../sources/general/manuals/rules/rules-mkiv.tex | 232 +- .../general/manuals/texit/texit-conditions.tex | 108 + .../general/manuals/texit/texit-contents.tex | 9 + .../general/manuals/texit/texit-introduction.tex | 24 + .../general/manuals/texit/texit-leaders.tex | 247 ++ .../general/manuals/texit/texit-lookahead.tex | 387 ++ .../sources/general/manuals/texit/texit-style.tex | 52 + .../general/manuals/texit/texit-titlepage.tex | 40 + .../sources/general/manuals/texit/texit.tex | 19 + .../sources/general/manuals/tools/tools-mkiv.tex | 921 ++++- .../general/manuals/xml/xml-mkiv-commands.tex | 893 ++++ .../general/manuals/xml/xml-mkiv-contents.tex | 12 + .../general/manuals/xml/xml-mkiv-converter.tex | 300 ++ .../general/manuals/xml/xml-mkiv-examples.tex | 948 +++++ .../general/manuals/xml/xml-mkiv-expressions.tex | 645 +++ .../general/manuals/xml/xml-mkiv-filtering.tex | 262 ++ .../general/manuals/xml/xml-mkiv-introduction.tex | 42 + .../general/manuals/xml/xml-mkiv-lookups.tex | 314 ++ .../sources/general/manuals/xml/xml-mkiv-lpath.tex | 207 + .../sources/general/manuals/xml/xml-mkiv-style.tex | 155 + .../general/manuals/xml/xml-mkiv-titlepage.tex | 47 + .../general/manuals/xml/xml-mkiv-tricks.tex | 814 ++++ .../sources/general/manuals/xml/xml-mkiv.tex | 4365 +------------------- .../general/manuals/xtables/xtables-mkiv.tex | 95 + 223 files changed, 28050 insertions(+), 8002 deletions(-) create mode 100644 doc/context/documents/general/manuals/graphics.pdf create mode 100644 doc/context/documents/general/manuals/interaction.pdf create mode 100644 doc/context/documents/general/manuals/musings.pdf create mode 100644 doc/context/documents/general/manuals/texit.pdf create mode 100644 doc/context/examples/calculator/calculator.pdf create mode 100644 doc/context/examples/calculator/calculator.tex create mode 100644 doc/context/examples/clock/clock.pdf create mode 100644 doc/context/examples/clock/clock.tex create mode 100644 doc/context/presentations/bachotex/2005/bachotex-2005-fonts.tex create mode 100644 doc/context/presentations/bachotex/2005/bachotex-2005-hyphenation.tex create mode 100644 doc/context/presentations/bachotex/2009/bachotex-2009-luatex.tex create mode 100644 doc/context/presentations/bachotex/2009/bachotex-2009-math.tex create mode 100644 doc/context/presentations/bachotex/2009/bachotex-2009-opentype.tex create mode 100644 doc/context/presentations/bachotex/2011/bachotex-2011-ebook.tex create mode 100644 doc/context/presentations/bachotex/2011/bachotex-2011-math.tex create mode 100644 doc/context/presentations/bachotex/2011/bachotex-2011-metapost.tex create mode 100644 doc/context/presentations/bachotex/2012/bachotex-2012-context.tex create mode 100644 doc/context/presentations/bachotex/2012/bachotex-2012-future.tex create mode 100644 doc/context/presentations/bachotex/2014/bachotex-2014-luatex.tex create mode 100644 doc/context/presentations/bachotex/2014/bachotex-2014-metapost.tex create mode 100644 doc/context/presentations/bachotex/2018/bachotex-2018-fonteffects.pdf create mode 100644 doc/context/presentations/bachotex/2018/bachotex-2018-fonteffects.tex create mode 100644 doc/context/presentations/bachotex/2018/bachotex-2018-mp.pdf create mode 100644 doc/context/presentations/bachotex/2018/bachotex-2018-mp.tex create mode 100644 doc/context/presentations/context/2007/context-2007-luatex.tex create mode 100644 doc/context/presentations/context/2007/context-2007-mkiv.tex create mode 100644 doc/context/presentations/context/2010/context-2010-just-in-time-1.tex create mode 100644 doc/context/presentations/context/2010/context-2010-just-in-time-2.tex create mode 100644 doc/context/presentations/context/2010/context-2010-requirements.tex create mode 100644 doc/context/presentations/context/2010/context-2010-structure-matters.tex create mode 100644 doc/context/presentations/context/2010/context-2010-workflows.tex create mode 100644 doc/context/presentations/examples/present-steps-001.pdf create mode 100644 doc/context/presentations/examples/present-steps-001.tex create mode 100644 doc/context/presentations/tug/2001/tug-2001-ideas.pdf create mode 100644 doc/context/presentations/tug/2001/tug-2001-ideas.tex create mode 100644 doc/context/presentations/tug/2007/tug-2007-fonts.pdf delete mode 100644 doc/context/scripts/mkiv/mtx-metatex.html delete mode 100644 doc/context/scripts/mkiv/mtx-metatex.man delete mode 100644 doc/context/scripts/mkiv/mtx-metatex.xml delete mode 100644 doc/context/scripts/mkiv/mtx-patterns.html delete mode 100644 doc/context/scripts/mkiv/mtx-patterns.man delete mode 100644 doc/context/scripts/mkiv/mtx-patterns.xml create mode 100644 doc/context/sources/general/fonts/fonts/fonts-demo-rule.lua create mode 100644 doc/context/sources/general/manuals/graphics/graphics.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-actions.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-annotations.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-attachments.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-bookmarks.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-buttons.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-comments.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-contents.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-enabling.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-hyperlinks.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-importing.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-introduction.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-javascript.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-menus.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-progress.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-structure.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-style.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-tagging.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-titlepage.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-transitions.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction-widgets.tex create mode 100644 doc/context/sources/general/manuals/interaction/interaction.tex create mode 100644 doc/context/sources/general/manuals/luatex/luatex-firstpage.tex create mode 100644 doc/context/sources/general/manuals/luatex/luatex-preamble.tex create mode 100644 doc/context/sources/general/manuals/luatex/luatex-registers.tex create mode 100644 doc/context/sources/general/manuals/luatex/luatex-statistics.tex create mode 100644 doc/context/sources/general/manuals/musings/musings-children.tex create mode 100644 doc/context/sources/general/manuals/musings/musings-contents.tex create mode 100644 doc/context/sources/general/manuals/musings/musings-introduction.tex create mode 100644 doc/context/sources/general/manuals/musings/musings-perception.tex create mode 100644 doc/context/sources/general/manuals/musings/musings-roadmap.tex create mode 100644 doc/context/sources/general/manuals/musings/musings-stability.tex create mode 100644 doc/context/sources/general/manuals/musings/musings-staygo.tex create mode 100644 doc/context/sources/general/manuals/musings/musings-style.tex create mode 100644 doc/context/sources/general/manuals/musings/musings-titlepage.tex create mode 100644 doc/context/sources/general/manuals/musings/musings-whytex.tex create mode 100644 doc/context/sources/general/manuals/musings/musings.tex create mode 100644 doc/context/sources/general/manuals/onandon/onandon-110.tex create mode 100644 doc/context/sources/general/manuals/onandon/onandon-53.tex create mode 100644 doc/context/sources/general/manuals/onandon/onandon-execute.tex create mode 100644 doc/context/sources/general/manuals/onandon/onandon-expansion.tex create mode 100644 doc/context/sources/general/manuals/onandon/onandon-fences.tex create mode 100644 doc/context/sources/general/manuals/onandon/onandon-media.tex create mode 100644 doc/context/sources/general/manuals/onandon/onandon-modern.tex create mode 100644 doc/context/sources/general/manuals/onandon/onandon-runtoks.tex create mode 100644 doc/context/sources/general/manuals/texit/texit-conditions.tex create mode 100644 doc/context/sources/general/manuals/texit/texit-contents.tex create mode 100644 doc/context/sources/general/manuals/texit/texit-introduction.tex create mode 100644 doc/context/sources/general/manuals/texit/texit-leaders.tex create mode 100644 doc/context/sources/general/manuals/texit/texit-lookahead.tex create mode 100644 doc/context/sources/general/manuals/texit/texit-style.tex create mode 100644 doc/context/sources/general/manuals/texit/texit-titlepage.tex create mode 100644 doc/context/sources/general/manuals/texit/texit.tex create mode 100644 doc/context/sources/general/manuals/xml/xml-mkiv-commands.tex create mode 100644 doc/context/sources/general/manuals/xml/xml-mkiv-contents.tex create mode 100644 doc/context/sources/general/manuals/xml/xml-mkiv-converter.tex create mode 100644 doc/context/sources/general/manuals/xml/xml-mkiv-examples.tex create mode 100644 doc/context/sources/general/manuals/xml/xml-mkiv-expressions.tex create mode 100644 doc/context/sources/general/manuals/xml/xml-mkiv-filtering.tex create mode 100644 doc/context/sources/general/manuals/xml/xml-mkiv-introduction.tex create mode 100644 doc/context/sources/general/manuals/xml/xml-mkiv-lookups.tex create mode 100644 doc/context/sources/general/manuals/xml/xml-mkiv-lpath.tex create mode 100644 doc/context/sources/general/manuals/xml/xml-mkiv-style.tex create mode 100644 doc/context/sources/general/manuals/xml/xml-mkiv-titlepage.tex create mode 100644 doc/context/sources/general/manuals/xml/xml-mkiv-tricks.tex (limited to 'doc') diff --git a/doc/context/documents/general/manuals/bidi.pdf b/doc/context/documents/general/manuals/bidi.pdf index 0d88c7de7..feec5913e 100644 Binary files a/doc/context/documents/general/manuals/bidi.pdf and b/doc/context/documents/general/manuals/bidi.pdf differ diff --git a/doc/context/documents/general/manuals/graphics.pdf b/doc/context/documents/general/manuals/graphics.pdf new file mode 100644 index 000000000..db4d4d4f7 Binary files /dev/null and b/doc/context/documents/general/manuals/graphics.pdf differ diff --git a/doc/context/documents/general/manuals/interaction.pdf b/doc/context/documents/general/manuals/interaction.pdf new file mode 100644 index 000000000..6bfcc99cc Binary files /dev/null and b/doc/context/documents/general/manuals/interaction.pdf differ diff --git a/doc/context/documents/general/manuals/luatex.pdf b/doc/context/documents/general/manuals/luatex.pdf index 0d7adafbe..d932219bc 100644 Binary files a/doc/context/documents/general/manuals/luatex.pdf and b/doc/context/documents/general/manuals/luatex.pdf differ diff --git a/doc/context/documents/general/manuals/musings.pdf b/doc/context/documents/general/manuals/musings.pdf new file mode 100644 index 000000000..9d83dd555 Binary files /dev/null and b/doc/context/documents/general/manuals/musings.pdf differ diff --git a/doc/context/documents/general/manuals/nodes.pdf b/doc/context/documents/general/manuals/nodes.pdf index 8f0ec1b73..c1e94b14d 100644 Binary files a/doc/context/documents/general/manuals/nodes.pdf and b/doc/context/documents/general/manuals/nodes.pdf differ diff --git a/doc/context/documents/general/manuals/onandon.pdf b/doc/context/documents/general/manuals/onandon.pdf index fe291acf0..add044367 100644 Binary files a/doc/context/documents/general/manuals/onandon.pdf and b/doc/context/documents/general/manuals/onandon.pdf differ diff --git a/doc/context/documents/general/manuals/rules-mkiv.pdf b/doc/context/documents/general/manuals/rules-mkiv.pdf index 9861f76ef..dee2a4607 100644 Binary files a/doc/context/documents/general/manuals/rules-mkiv.pdf and b/doc/context/documents/general/manuals/rules-mkiv.pdf differ diff --git a/doc/context/documents/general/manuals/texit.pdf b/doc/context/documents/general/manuals/texit.pdf new file mode 100644 index 000000000..e89fa1caf Binary files /dev/null and b/doc/context/documents/general/manuals/texit.pdf differ diff --git a/doc/context/documents/general/manuals/tiptrick.pdf b/doc/context/documents/general/manuals/tiptrick.pdf index 55d65029a..ea55ab7d8 100644 Binary files a/doc/context/documents/general/manuals/tiptrick.pdf and b/doc/context/documents/general/manuals/tiptrick.pdf differ diff --git a/doc/context/documents/general/manuals/tools-mkiv.pdf b/doc/context/documents/general/manuals/tools-mkiv.pdf index 1da11dcb0..6cde31552 100644 Binary files a/doc/context/documents/general/manuals/tools-mkiv.pdf and b/doc/context/documents/general/manuals/tools-mkiv.pdf differ diff --git a/doc/context/documents/general/manuals/xml-mkiv.pdf b/doc/context/documents/general/manuals/xml-mkiv.pdf index 78f6ffa1c..6508f2ecc 100644 Binary files a/doc/context/documents/general/manuals/xml-mkiv.pdf and b/doc/context/documents/general/manuals/xml-mkiv.pdf differ diff --git a/doc/context/documents/general/manuals/xtables-mkiv.pdf b/doc/context/documents/general/manuals/xtables-mkiv.pdf index d1b1a3ed0..255a730b8 100644 Binary files a/doc/context/documents/general/manuals/xtables-mkiv.pdf and b/doc/context/documents/general/manuals/xtables-mkiv.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-cs.pdf b/doc/context/documents/general/qrcs/setup-cs.pdf index dc3b916a8..eed68e1db 100644 Binary files a/doc/context/documents/general/qrcs/setup-cs.pdf and b/doc/context/documents/general/qrcs/setup-cs.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf index 9c7678654..14a74ddf6 100644 Binary files a/doc/context/documents/general/qrcs/setup-de.pdf and b/doc/context/documents/general/qrcs/setup-de.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf index 39538aa7b..7f468c416 100644 Binary files a/doc/context/documents/general/qrcs/setup-en.pdf and b/doc/context/documents/general/qrcs/setup-en.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf index 99c12ebd6..4bd083e65 100644 Binary files a/doc/context/documents/general/qrcs/setup-fr.pdf and b/doc/context/documents/general/qrcs/setup-fr.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf index c687c7e39..22059b647 100644 Binary files a/doc/context/documents/general/qrcs/setup-it.pdf and b/doc/context/documents/general/qrcs/setup-it.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf index f5bd52a9f..71d7ea47b 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf and b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-de.pdf b/doc/context/documents/general/qrcs/setup-mapping-de.pdf index 274daaf89..8b96f1b12 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-de.pdf and b/doc/context/documents/general/qrcs/setup-mapping-de.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-en.pdf b/doc/context/documents/general/qrcs/setup-mapping-en.pdf index 3aab7cf71..fa1909a0c 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-en.pdf and b/doc/context/documents/general/qrcs/setup-mapping-en.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf index b32744159..5b682a879 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf and b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-it.pdf b/doc/context/documents/general/qrcs/setup-mapping-it.pdf index 309929f72..20876ded0 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-it.pdf and b/doc/context/documents/general/qrcs/setup-mapping-it.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf index c6bb58d3c..618fbaefd 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf and b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf index a43f56921..41cbfaebe 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf and b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf index ce5340b15..e3e352a62 100644 Binary files a/doc/context/documents/general/qrcs/setup-nl.pdf and b/doc/context/documents/general/qrcs/setup-nl.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-ro.pdf b/doc/context/documents/general/qrcs/setup-ro.pdf index 63b27bf7a..410607bc7 100644 Binary files a/doc/context/documents/general/qrcs/setup-ro.pdf and b/doc/context/documents/general/qrcs/setup-ro.pdf differ diff --git a/doc/context/examples/calculator/calculator.pdf b/doc/context/examples/calculator/calculator.pdf new file mode 100644 index 000000000..3c7a4b8e8 Binary files /dev/null and b/doc/context/examples/calculator/calculator.pdf differ diff --git a/doc/context/examples/calculator/calculator.tex b/doc/context/examples/calculator/calculator.tex new file mode 100644 index 000000000..7ff3235a6 --- /dev/null +++ b/doc/context/examples/calculator/calculator.tex @@ -0,0 +1,1871 @@ +%D The calculator +%D +%D This document was made in 1998 as demonstration of widgets in \CONTEXT in \MKII. +%D It has been adapted to run in \MKIV. Not many changes were needed. The macro +%D definitions are layout a bit more readable and we use official scratch variables. +%D +%D The \JAVASCRIPT\ interpeter has changes and also became more strict. So, I +%D reformatted the code bit and added some more semicolons and vars. +%D +%D We changed to font from a Helvetica lookalike to Dejavu but kept the colors as +%D in the original. We also kept the \JAVASCRIPT\ and \METAPOST\ code (although +%D we had to add some initalizations for \METAPOST\ due to the runtime graphic +%D generation. I didn't check the functionality. +%D +%D Should I do it different nowaways? For sure. I might use layers of make nicer +%D \METAPOST\ code but it's also a demonstration of how thinsg were done in 1998. + +% acrobat 3->4 : different field initialization +% acrobat 4->5 : typecasting fails [switch"2" vs 2] +% acrobat 6-> : more strict interpreter + +\starttext + +\dontcomplain + +\setuppapersize + [S6][S6] + +\setupwhitespace + [medium] + +\setupbodyfont + [dejavu,9pt] + +\setuptyping + [margin=standard] + +\setuplayout + [backspace=1cm, + topspace=1cm, + header=0pt, + footer=0pt, + width=middle, + height=middle] + +\setupinteraction + [page=yes, + state=start, + author=Hans Hagen, + title=The Calculator, + color=keyboard] + +\setupinteractionscreen + [option=max] + +\definecolor [action] [r= 1, g=.9, b=.5] +\definecolor [keyboard] [r= 0, g=.7, b=.7] +\definecolor [stack] [r=.7, g=.6, b=.8] + +\useURL[pragma-mail][mailto:pragma@xs4all.nl][][pragma@xs4all.nl] + +%D We have to use \type {String(...)=""} otherwise zero is regarded +%D as non|-|entry (empty). This is a bit fuzzy. + +\def\MinLevel{50} +\def\MaxLevel {8} + +\startJSpreamble {variables} used now + + var Growing = false ; + var MinLevel = -50 ; + var MaxLevel = 8 ; + var Level = 1 ; + var NoErrorFound = ">ok" ; + var NoValueError = ">invalid" ; + var WhateverError = ">error" ; + var OverflowError = ">overflow" ; + var ExhaustedError = ">exhausted" ; + + var Stack = new Array() ; + var Stats = new Array() ; + + // console.clear() ; + + // console.println("preamble loaded: variables") ; + +\stopJSpreamble + +\startJSpreamble {housekeeping} used now + + function do_reset_all () { + if (Growing) { + Level = 1 ; + } else { + Level = MaxLevel ; + } + for (var i=MinLevel ; i<=MaxLevel ; i++) { + Stack[i] = "" ; + } + do_mark (NoErrorFound) ; + } + + function do_refresh (i) { + var vv = this.getField("Stack." + String(i)) ; + if (vv) { + vv.value = Stack[i] ; + vv.readonly = (i != Level) ; + this.dirty = false ; + } + } + + function do_refresh_all () { + for (var i=1 ; i<=MaxLevel ; i++) { + do_refresh(i) ; + } + } + + function do_update_A () { + if (Stack[1] == "") { + for (var i=1 ; i<=MaxLevel ; i++) { + vv = this.getField("Stack." + String(i)) ; + if (vv) { + Level = i ; + if (valid_number(vv.value)) { + Stack[Level] = String(vv.value) + } else { + vv.value = "" ; + this.dirty = false ; + return ; + } + } + } + } + } + + function do_update_B () { + if (String(Stack[MaxLevel-1]) == "") { + for (var i=1 ; i<=MaxLevel ; i++) { + vv = this.getField("Stack." + String(i)) ; + if (vv) { + if (valid_number(vv.value)) { + Stack[Level] = String(vv.value) ; + } else { + vv.value = "" ; + this.dirty = false ; + return ; + } + } + } + } + } + + function do_update () { + if (Growing) { + do_update_A() ; + } else { + do_update_B() ; + } + } + + function do_mark (s) { + var vv = this.getField("Stack." + String(Level)) ; + if (vv) { + vv.value = s ; + this.dirty = false ; + } + } + + // console.println("preamble loaded: housekeeping") ; +\stopJSpreamble + +\startJSpreamble {handling} used now + + function do_enter () { + do_update() ; + var vv = this.getField("Stack." + String(Level)) ; + if ((vv.value!=Stack[Level]) && (String(vv.value).search(/>/)==-1)) { + do_push (vv.value) ; + } else { + do_push (Stack[Level]) ; + } + } + + function do_push_A (Value) { + do_update() ; + Stack[Level] = String(Value) ; + do_parse(Level) ; + if (String(Stack[Level])!="") { + if (LevelMinLevel ; i--) { + Stack[i] = Stack[i-1] ; + } + Stack[MinLevel] = "" ; + do_refresh_all() ; + Level = MaxLevel ; + } else { + while ((Level>1) && (String(Stack[Level])=="")) { + do_refresh(Level) ; + --Level ; + } + } + if (String(Stack[Level])=="") { + return("") ; + } else { + Value = Number(Stack[Level]) ; + Stack[Level] = "" ; + do_refresh(Level) ; + return(Value) ; + } + } + + function do_pop_B () { + do_update() ; + if (String(Stack[MaxLevel])=="") { + for (var i=MaxLevel ; i>MinLevel ; i--) { + Stack[i] = Stack[i-1] ; + } + Stack[MinLevel] = "" ; + do_refresh_all() ; + } + if (String(Stack[MaxLevel])=="") { + return("") ; + } else { + Value = Number(Stack[MaxLevel]) ; + Stack[MaxLevel] = "" ; + return(Value) ; + } + } + + function do_pop () { + if (Growing) { + return(do_pop_A()) ; + } else { + return(do_pop_B()) ; + } + } + + function do_dup () { + var X = do_pop() ; + if (valid_number(X)) { + do_push(X) ; + do_push(X) ; + } else { + do_mark (ErrorString) ; + } + } + + function do_parse ( i ) { + if (valid_number(Stack[i])) { + Stack[i] = parseFloat(Stack[i]) ; + do_refresh(i) ; + } else { + Stack[i] = "" ; + do_refresh(i) ; + do_mark (ErrorString) ; + } + } + + function do_digit ( d ) { + Stack[Level] += String(d) ; + do_refresh(Level) ; + } + + function valid_number ( x ) { + if (String(x) == "") { + ErrorString = NoValueError ; + return(false) ; + } else if (isNaN(x)) { + ErrorString = NoValueError ; + return(false) ; + } else if (isFinite(x)) { + ErrorString = NoErrorFound ; + return(true) ; + } else { + ErrorString = OverflowError ; + return(false) ; + } + } + + // console.println("preamble loaded: handling") ; + +\stopJSpreamble + +\startJSpreamble {operations} used now + + function do_calculate (Operator) { + do_enter() ; + var Y = do_pop() ; + var X = 0 ; + if (valid_number(Y)) { + X = do_pop() ; + if (valid_number(X)) { + switch (Number(Operator)) { + case 1 : + if (Y) { + X /= Y ; + } + break ; + case 2 : + X *= Y ; + break ; + case 3 : + X -= Y ; + break ; + case 4 : + X += Y ; + break ; + case 5 : + X = Math.max(X,Y) ; + break ; + case 6 : + X = Math.min(X,Y) ; + break ; + case 7 : + X = Math.pow(X,Y) ; + break + } + do_push(X) ; + } else { + do_push(Y) ; + ErrorString = NoValueError ; + } + } + do_mark(ErrorString) ; + } + + // console.println("preamble loaded: operations") ; +\stopJSpreamble + +\startJSpreamble {functions} used now + + function do_facultate (Value) { + var n = Math.min(Math.round(Value),500) ; + if (n <= 1) { + return(1) ; + } else { + var m = 1 ; + for (m=1, i=1 ; i<=n ; i++) { + m = m * i ; + } + return(m) ; + } + } + + function do_constant (Operation) { + do_update() ; + switch (Number(Operation)) { + case 1 : + do_push(Math.PI) ; + break ; + case 2 : + do_push(Math.E) ; + break ; + case 3 : + do_push(Math.random(1)) ; + break ; + case 4 : + do_dup() ; + break ; + } + } + + function do_do_memory (mv, Sign) { + var X = do_pop() ; + if (valid_number(X)) { + mv.value += Sign*X ; + if (!valid_number(mv.value)) { + mv.value = "" ; + } + this.dirty = false ; + } + do_mark(ErrorString) ; + } + + function do_memory (Operation) { + var mv = this.getField("Stats.mem") ; + if (mv) { + switch (Number(Operation)) { + case 1 : + mv.value = "" ; + break ; + case 2 : + do_do_memory(mv, 1) ; + break ; + case 3 : + do_do_memory(mv, -1) ; + break ; + case 4 : + if (mv.value == "") { + ErrorString = NoValueError ; + do_mark(ErrorString) ; + } else { + do_push(mv.value) ; + } + break ; + } + this.dirty = false ; + } + } + + function do_operation (Operator) { + do_enter() ; + var X = do_pop() ; + if (valid_number(X)) { + switch (Number(Operator)) { + case 1 : + do_push(Math.sin(X)) ; + break ; + case 2 : + do_push(Math.cos(X)) ; + break ; + case 3 : + do_push(Math.tan(X)) ; + break ; + case 4 : + do_push(Math.exp(X)) ; + break ; + case 5 : + do_push(Math.ceil(X)) ; + break ; + case 6 : + do_push(Math.pow(X,2)) ; + break ; + case 7 : + do_push(do_facultate(X)) ; + break ; + case 8 : + do_push(Math.asin(X)) ; + break ; + case 9 : + do_push(Math.acos(X)) ; + break ; + case 10 : + do_push(Math.atan(X)) ; + break ; + case 11 : + do_push(Math.log(X)) ; + break ; + case 12 : + do_push(Math.floor(X)) ; + break ; + case 13 : + do_push(Math.sqrt(X)) ; + break ; + case 14 : + do_push(Math.round(X)) ; + break ; + case 15 : + do_push(Math.pow(X,-1)) ; + break ; + case 16 : + do_push(X*(2*Math.PI/360)) ; + break ; + case 17 : + do_push(X/(2*Math.PI/360)) ; + break ; + case 18 : + do_push(-X) ; + break ; + } + } + do_mark(ErrorString) ; + } + + // console.println("preamble loaded: functions") ; +\stopJSpreamble + +\startJSpreamble {statistics} used now + + var s_min_max = 1 ; + var s_sqrt = 0 ; + + function do_statcalcs (Sign, X) { + s_n.value += Sign ; + s_sqrt += Sign*X*X ; + s_total.value += Sign*X ; + s_mean.value = s_total.value / s_n.value ; + s_temp = Math.max(s_sqrt - 2*s_total.value*s_mean.value + + s_n.value*s_mean.value*s_mean.value, 0) ; + s_sdev.value = Math.sqrt(s_temp/s_n.value) ; + if (!(valid_number(X) && valid_number(s_sqrt) && + valid_number(s_sdev.value) && valid_number(s_total.value) && + valid_number(s_mean.value))) { + do_statistics(1) ; + } + this.dirty = false ; + } + + function do_statistics(Operator) { + var s_n = this.getField("Stats.n") ; + var s_min = this.getField("Stats.min") ; + var s_max = this.getField("Stats.max") ; + var s_total = this.getField("Stats.total") ; + var s_mean = this.getField("Stats.mean") ; + var s_sdev = this.getField("Stats.sdev") ; + if ((s_sqrt==0) && (s_n.value!="") && (s_n.value>0)) { + s_min_max = 1 ; + s_sqrt = s_n.value*s_sdev.value*s_sdev.value + + 2*s_total.value*s_mean.value - + s_n.value*s_mean.value*s_mean.value ; + } + switch (Number(Operator)) { + case 1 : + s_min_max = 1 ; + s_n.value = "" ; + s_min.value = "" ; + s_max.value = "" ; + s_total.value = "" ; + s_mean.value = "" ; + s_sdev.value = "" ; + s_sqrt = 0 ; + break ; + case 2 : + do_enter() ; + var X = do_pop() ; + if (valid_number(X)) { + if (s_n.value=="") { + s_n.value = 0 ; + s_total.value = 0 ; + s_mean.value = 0 ; + if (s_min_max) { + s_min.value = X ; + s_max.value = X ; + } + } else { + if ((s_min_max) && (Xs_max.value)) { + s_max.value = X ; + } + } + do_statcalcs(1,X) ; + } + break ; + case 3 : + do_enter() ; + var X = do_pop() ; + if (valid_number(X)) { + s_min.value = "" ; + s_max.value = "" ; + s_min_max = 0 ; + if (s_n.value>0) { + do_statcalcs(-1,X) ; + } else { + do_statistics(1) ; + } + } + break ; + } + do_mark(ErrorString) ; + this.dirty = false ; + } + + function do_copystat (Field) { + var sv = this.getField("Stats.".concat(Field)) ; + do_push(sv.value) ; + } + + // console.println("preamble loaded: statistics") ; +\stopJSpreamble + +\startJSpreamble {initialization} used now + do_reset_all() ; + do_update() ; + do_refresh_all() ; + do_mark (NoErrorFound) ; + + // console.println("preamble loaded: initialization") ; +\stopJSpreamble + +%D We could use functions instead but this demonstrates inline +%D code. We also could use predefined references. + +\startJScode{period} + if (Stack[Level].search(/[.|e]/)==-1) { + do_digit(".") ; + } +\stopJScode + +\startJScode{sign} + L = Stack[Level].length ; + if ((L==0) || (Stack[Level].charAt(L-1)=="e")) { + do_digit("-") ; + } +\stopJScode + +\startJScode{exponent} + L = Stack[Level].length ; + if ((L>0) && valid_number(Stack[Level]) && (Stack[Level].search(/[e]/)==-1)) { + do_digit("e") ; + } +\stopJScode + +\startJScode{reset} + do_reset_all() ; + do_refresh_all() ; + do_mark (NoErrorFound) ; +\stopJScode + +\startJScode{clear} + do_update() ; + Stack[Level] = String(Stack[Level]).substring(0,String(Stack[Level]).length-1) ; + do_refresh(Level) ; +\stopJScode + +\startJScode{pop} + X = do_pop() ; + do_mark(NoErrorFound) ; +\stopJScode + +\startJScode{push} + do_enter() ; +\stopJScode + +\startJScode{grow} + Growing = !Growing ; + do_reset_all() ; + do_refresh_all() ; + do_mark (NoErrorFound) ; +\stopJScode + +% graphics + +\startuniqueMPgraphic{page} + fill OverlayBox + withcolor .4white ; + draw OverlayBox enlarged -10pt + withpen pencircle scaled 5pt + withcolor .8white ; +\stopuniqueMPgraphic + +\startuniqueMPgraphic{shape} + path p ; color c ; + p := OverlayBox ; + c := \overlaycolor ; + fill p withcolor c ; + draw p withpen pencircle scaled 1.5pt withcolor .8c ; +\stopuniqueMPgraphic + +\defineoverlay [page] [\uniqueMPgraphic{page}] +\defineoverlay [shape] [\uniqueMPgraphic{shape}] + +\setupbackgrounds + [page] + [background=page] + +\definemeasure[ButtonWidth][\makeupwidth/15] + +\setupbuttons + [width=\measured{ButtonWidth}, + height=\measured{ButtonWidth}, + background=shape, + backgroundcolor=\MPcolor{keyboard}, + frame=off, + style=, + color=] + +\setupfield + [Results] + [horizontal,frame] + [width=fit, + align={lohi}, + height=.5\measured{ButtonWidth}, + background=shape, + backgroundcolor=\MPcolor{stack}, + frame=off] + [width=3.5\measured{ButtonWidth}, + frame=off] + [width=3.5\measured{ButtonWidth}, + height=.45\measured{ButtonWidth}, + option=readonly, + frame=off] + +\starttexdefinition unexpanded Star + \lower.65ex\hbox { + * + } +\stoptexdefinition + +\starttexdefinition unexpanded InfoButton #1 + \setbox\scratchbox\hbox { + \lower .5cm \hbox { + \button [ + width=\dimexpr\overlaywidth + .5cm\relax, + height=\dimexpr\overlayheight + .5cm\relax, + strut=no, + frame=off, + background= + ] { + } [ + info:#1 + ] + } + } + \wd\scratchbox\overlaywidth + \ht\scratchbox\overlayheight + \box\scratchbox +\stoptexdefinition + +\starttexdefinition unexpanded SomeKey #1#2#3 + + \bgroup + + \doifelsenothing {#2} { + \button[background=]{#2}[#3] + } { + \defineoverlay + [infobutton] + [\InfoButton{#1}] + % \button + % [background={infobutton,shape}] + % {#2} + % [#3] + \framed + [offset=overlay, + frame=off, + background=infobutton, + backgroundcolor=red] + {\button{#2}[#3]} + } + + \egroup + + \ignorespaces + +\stoptexdefinition + +\starttexdefinition unexpanded StatField #1 + \hbox \bgroup + \doifelsenothing {#1} { + \framed [ + height=.5\measured{ButtonWidth}, + width=3.5\measured{ButtonWidth}, + frame=off + ] { + } + } { + \definefield[Stats.#1][line][Results] + \field[Stats.#1][option=readonly] + } + \egroup + \ignorespaces +\stoptexdefinition + +\setbox\scratchboxone=\hbox to .4\makeupwidth \bgroup + \ss + \SomeKey {7} {\ssb 7} {JS(do_digit{7})} \hss + \SomeKey {8} {\ssb 8} {JS(do_digit{8})} \hss + \SomeKey {9} {\ssb 9} {JS(do_digit{9})} \hss + \SomeKey {div} {\ssb /} {JS(do_calculate{1})} \hss + \SomeKey {del} {del} {JS(clear)} +\egroup + +\setbox\scratchboxtwo=\hbox to \wd\scratchboxone \bgroup + \ss + \SomeKey {4} {\ssb 4} {JS(do_digit{4})} \hss + \SomeKey {5} {\ssb 5} {JS(do_digit{5})} \hss + \SomeKey {6} {\ssb 6} {JS(do_digit{6})} \hss + \SomeKey {mul} {\ssb \Star} {JS(do_calculate{2})} \hss + \SomeKey {E} {E} {JS(exponent)} +\egroup + +\setbox\scratchboxthree=\hbox to \wd\scratchboxone \bgroup + \ss + \SomeKey {1} {\ssb 1} {JS(do_digit{1})} \hss + \SomeKey {2} {\ssb 2} {JS(do_digit{2})} \hss + \SomeKey {3} {\ssb 3} {JS(do_digit{3})} \hss + \SomeKey {sub} {\ssb --} {JS(do_calculate{3})} \hss + \SomeKey {pop} {pop} {JS(pop)} +\egroup + +\setbox\scratchboxfour=\hbox to \wd\scratchboxone \bgroup + \ss + \SomeKey {0} {\ssb 0} {JS(do_digit{0})} \hss + \SomeKey {period} {\ssb .} {JS(period)} \hss + \SomeKey {sign} {\ssb -} {JS(sign)} \hss + \SomeKey {add} {\ssb +} {JS(do_calculate{4})} \hss + \SomeKey {push} {push} {JS(push)} +\egroup + +\setbox\scratchboxone=\vbox to .8\wd\scratchboxone \bgroup + \box\scratchboxone \vss + \box\scratchboxtwo \vss + \box\scratchboxthree\vss + \box\scratchboxfour +\egroup + +\setbox\scratchboxtwo=\vbox to \ht\scratchboxone \bgroup + \dostepwiserecurse {\MaxLevel} {1} {-1} { + \definefield[Stack.\recurselevel][line][Results] + \hbox \bgroup + \field[Stack.\recurselevel][option=readonly]% + \egroup + \vfill + } + \unskip +\egroup + +\setbox\scratchboxthree=\vbox to \ht\scratchboxone \bgroup + \StatField {n} \vfill + \StatField {min} \vfill + \StatField {max} \vfill + \StatField {total} \vfill + \StatField {mean} \vfill + \StatField {sdev} \vfill + \StatField {} \vfill + \StatField {} +\egroup + +\setbox\scratchboxfour=\vbox to \ht\scratchboxone \bgroup + \ss\setstrut + \setupbuttons + [width=\measured{ButtonWidth}, + height=.5\measured{ButtonWidth}, + backgroundcolor=\MPcolor{action}]% + \SomeKey {sn} {n} {JS(do_copystat{n})} \vfill + \SomeKey {smin} {min} {JS(do_copystat{min})} \vfill + \SomeKey {smax} {max} {JS(do_copystat{max})} \vfill + \SomeKey {stotal} {total} {JS(do_copystat{total})} \vfill + \SomeKey {smean} {mean} {JS(do_copystat{mean})} \vfill + \SomeKey {ssdev} {sdev} {JS(do_copystat{sdev})} \vfill + \SomeKey {} {} {} \vfill + \SomeKey {} {} {} +\egroup + +\setbox\scratchboxone=\hbox to \hsize \bgroup + \box\scratchboxone \hss + \box\scratchboxtwo \hss + \box\scratchboxthree\hss + \box\scratchboxfour +\egroup + +\setupbuttons + [width=1.5cm, + height=1cm, + backgroundcolor=\MPcolor{action}] + +\setbox\scratchboxtwo=\hbox to \wd\scratchboxone \bgroup + \ss\setstrut + \SomeKey {sin} {sin} {JS(do_operation{1})} \hss + \SomeKey {cos} {cos} {JS(do_operation{2})} \hss + \SomeKey {tan} {tan} {JS(do_operation{3})} \hss + \SomeKey {max} {max} {JS(do_calculate{5})} \hss + \SomeKey {exp} {exp} {JS(do_operation{4})} \hss + \SomeKey {ceil} {ceil} {JS(do_operation{5})} \hss + \SomeKey {sqr} {x\high{2}} {JS(do_operation{6})} \hss + \SomeKey {fac} {x!} {JS(do_operation{7})} \hss + \SomeKey {pow} {x\high{y}} {JS(do_calculate{7})} \hss + \SomeKey {rad} {rad} {JS(do_operation{16})} +\egroup + +\setbox\scratchboxthree=\hbox to \wd\scratchboxone \bgroup + \ss\setstrut + \SomeKey {asin} {asin} {JS(do_operation{8})} \hss + \SomeKey {acos} {acos} {JS(do_operation{9})} \hss + \SomeKey {atan} {atan} {JS(do_operation{10})} \hss + \SomeKey {min} {min} {JS(do_calculate{6})} \hss + \SomeKey {ln} {ln} {JS(do_operation{11})} \hss + \SomeKey {floor}{floor} {JS(do_operation{12})} \hss + \SomeKey {sqrt} {sqrt} {JS(do_operation{13})} \hss + \SomeKey {round}{round} {JS(do_operation{14})} \hss + \SomeKey {inv} {1/x} {JS(do_operation{15})} \hss + \SomeKey {deg} {deg} {JS(do_operation{17})} +\egroup + +\setbox\scratchboxfour=\hbox to \wd\scratchboxone \bgroup + \ss\setstrut + \SomeKey {} {} {} \hss + \SomeKey {} {} {} \hss + \setupbuttons + [backgroundcolor=\MPcolor{keyboard}]% + \SomeKey {new} {new} {JS(reset)} \hss + \SomeKey {} {} {} \hss + \SomeKey {} {} {} \hss + \SomeKey {} {} {} \hss + \SomeKey {} {} {} \hss + \SomeKey {newn} {new} {JS(do_statistics{1})} \hss + \SomeKey {addn} {+n} {JS(do_statistics{2})} \hss + \SomeKey {subn} {--n} {JS(do_statistics{3})} +\egroup + +\setbox\scratchboxfive=\hbox to \wd\scratchboxone \bgroup + \ss\setstrut + \SomeKey {neg} {--x} {JS(do_operation{18})} \hss + \SomeKey {random}{random} {JS(do_constant{3})} \hss + \SomeKey {pi} {pi} {JS(do_constant{1})} \hss + \SomeKey {e} {e} {JS(do_constant{2})} \hss + \SomeKey {dup} {dup} {JS(do_constant{4})} \hss + \SomeKey {} {} {} \hss + \SomeKey {} {} {} \hss + \setupbuttons + [backgroundcolor=\MPcolor{keyboard}]% + \SomeKey {} {} {} \hss + \SomeKey {exit} {exit} {CloseDocument} \hss + \SomeKey {help} {info} {info:help} +\egroup + +\setbox\scratchboxsix=\hbox to \wd\scratchboxone \bgroup + \ss\setstrut + \setupbuttons + [width=\measured{ButtonWidth}, + height=.5\measured{ButtonWidth}, + backgroundcolor=\MPcolor{keyboard}]% + \SomeKey {newmem} {new} {JS(do_memory{1})} \hss + \SomeKey {addmem} {+m} {JS(do_memory{2})} \hss + \SomeKey {submem} {--m} {JS(do_memory{3})} \hss + \StatField {mem} \hss + \setupbuttons + [backgroundcolor=\MPcolor{action}]% + \SomeKey {copmem} {mem} {JS(do_memory{4})} \hss + \SomeKey {} {} {} \hss + \setupbuttons + [backgroundcolor=\MPcolor{stack}]% + \SomeKey {grow} {grow} {JS(grow)} \hss + \StatField {} +\egroup + +\startstandardmakeup + + \pagereference[calculator] + + \vfill + + \hbox to \hsize \bgroup + \hss + \vbox to \vsize \bgroup + \box\scratchboxtwo \vss + \box\scratchboxthree\vss + \box\scratchboxone \vss + \box\scratchboxfour \vss + \box\scratchboxfive \vss + \box\scratchboxsix + \egroup + \hss + \egroup + + \vfill + +\stopstandardmakeup + +\starttexdefinition unexpanded BackgroundButton + \button [ + background=screen, + backgroundscreen=.8, + backgroundoffset=5pt, + height=\vsize, + width=\hsize + ] { + } [ + calculator + ] +\stoptexdefinition + +\setuptexttexts + [\BackgroundButton] + [] + +\starttexdefinition unexpanded Key #1#2 + \goto { + \ss#1 + } [ + info:#2 + ] +\stoptexdefinition + +\startstandardmakeup[top=,bottom=] + + \switchtobodyfont[8pt] + + \start + + \setupwhitespace[big] + + \midaligned{\ssd The Calculator} + + \blank[2*big] + + \pagereference[info:help] + This calculator is stack based, which means that one enters values and + invokes an action that acts on the value(s) last entered. Subtracting 10 from + 20 using (\Key {--} {sub}) for instance comes down to clicking: + + \startnarrower\ss + 10\quad in\quad 20\quad -- + \stopnarrower + + while calculating a sinus (\Key {sin} {sin}) results from entering: + + \startnarrower\ss + .89\quad sin + \stopnarrower + + The left column of fields (numbers) shows the Stack. One uses \Key {push} + {push} to push a value on the stack and \Key {pop} {pop} to remove a value. + Clicking \Key {new} {new} removes them all and the \Key {del} {del} button + can be used to undo the last entered digit. When a dyadic operation is + applied, the top value is used as~y. The \Key {grow} {grow} key toggles + between two different visualizations of the stack. + + The stack is considerably larger than the screen representation suggests. In + the rare occasion that one encounters the message {\ss exhausted}, the amount + of stack entries already has totaled far beyond \MinLevel\ and one probably + already has forgotten what the values first entered represent. + + The right column of fields reports the statistic calculations. By clicking on + the tag, one pushes the value on the Stack. The lower buttons are used to + reset~(\Key {new} {newn}), enter~(\Key {+} {addn}) and remove~(\Key {--} + {subn}) values to be taken into account when calculating those statistics. + + This document is produced by \ConTeXt, a macro package written in \TeX. The + graphics are METAPOST graphics. The graphics, the PDF objects and the form + fields as well as JavaScript code were generated and inserted at run time. + Originally we used PDF\TeX\ and \MKII\ to process this document but this one + is done by \LUATEX\ and \MKIV. We kept the design and code original so that + it reflects how things were done (for readability we updated some \TEX\ + definitions). + + \stop + + \vfilll + + \startMPrun + logo_type := 302 ; % force single logo type + mpgraph := 302 ; % and use this number + input mp-prag ; % calculate logo of type + \stopMPrun + + \startlinecorrection + \midaligned{\externalfigure[mprun.302][height=1.5cm]} + \stoplinecorrection + + \midaligned{\strut Hans Hagen, PRAGMA ADE, \ConTeXt\ 18/2/1998--25/9/2018} + + \blank + + \midaligned{\strut\url[pragma-mail]} + +\stopstandardmakeup + +\starttexdefinition unexpanded BackgroundButton + \button [ + background=screen, + backgroundscreen=.8, + backgroundoffset=5pt, + height=\vsize, + width=\hsize + ] { + } [ + firstpage + ] +\stoptexdefinition + +\starttexdefinition unexpanded ShowInfo #1#2 + \startstandardmakeup + \pagereference[info:#1] + \vfill + \hbox to \hsize \bgroup + \hss + \useMPgraphic{#1} + \hss + \egroup + \blank[2*big] + \midaligned{#2} + \vfill + \stopstandardmakeup +\stoptexdefinition + +\startMPinclusions + + path ax, ay, p[] ; + color c ; c := \MPcolor{action} ; + pmax := 0 ; + + let normalpow = pow ; + + def draw_function (text fun) (expr xmin, xmax, xstep) = + pmax := pmax+1 ; + p[pmax] := for x=xmin step xstep until xmax: + (x,fun(x)) .. + endfor (xmax,fun(xmax)) ; + enddef ; + + def draw_axis = % should sort of snap, to-do + pickup pencircle scaled 0 ; + for i=1 upto pmax: + draw p[i] ; + endfor ; + xmin := xpart llcorner currentpicture ; + xmax := xpart urcorner currentpicture ; + ymin := ypart llcorner currentpicture ; + ymax := ypart urcorner currentpicture ; + ax := (xmin,0)--(0,0)--(xmax,0) ; + ay := (0,ymin)--(0,0)--(0,ymax) ; + currentpicture := nullpicture ; + sx := 400/(xmax-xmin) ; + sy := 250/(ymax-ymin) ; + pickup pencircle xscaled (10/sx) yscaled (10/sy) ; + draw ax withcolor .4white ; + draw ay withcolor .4white ; + for i=1 upto pmax: + draw p[i] withcolor c ; + endfor ; + currentpicture := currentpicture xscaled sx yscaled sy ; + pmax := 0 ; + enddef ; + +\stopMPinclusions + +\startuseMPgraphic{sin} + draw_function(sind)(-360,360,60) ; draw_axis ; +\stopuseMPgraphic + +\ShowInfo{sin}{Calculate the sine of the topmost stack entry.} + +\startuseMPgraphic{cos} + draw_function(cosd)(-360,360,60) ; draw_axis ; +\stopuseMPgraphic + +\ShowInfo{cos}{Calculate the cosine of the topmost stack entry.} + +\startuseMPgraphic{tan} + draw_function(tand)(-240,-120,30) ; + draw_function(tand)( -60, 60,30) ; + draw_function(tand)( 120, 240,30) ; + draw_axis ; +\stopuseMPgraphic + +\ShowInfo{tan}{Calculate the tangent of the topmost stack entry.} + +\startuseMPgraphic{asin} + draw_function(asin)(-1,1,.2) ; draw_axis ; +\stopuseMPgraphic + +\ShowInfo{asin}{Calculate the arcsine of the topmost stack entry.} + +\startuseMPgraphic{acos} + draw_function(acos)(-1,1,.2) ; draw_axis ; +\stopuseMPgraphic + +\ShowInfo{acos}{Calculate the arccosine of the topmost stack entry.} + +\startuseMPgraphic{atan} + draw_function(atan)(-1,1,.2) ; draw_axis ; +\stopuseMPgraphic + +\ShowInfo{atan}{Calculate the arctangent of the topmost stack entry.} + +\startuseMPgraphic{sqr} + draw_function(sqr)(-3,3,1) ; draw_axis ; +\stopuseMPgraphic + +\ShowInfo{sqr}{Calculate the square of the topmost stack entry.} + +\startuseMPgraphic{sqrt} + draw_function(sqrt)(0,5,1) ; draw_axis ; +\stopuseMPgraphic + +\ShowInfo{sqrt}{Calculate the square root of the topmost stack entry.} + +\startuseMPgraphic{exp} + draw_function(exp)(0,5,1) ; draw_axis ; +\stopuseMPgraphic + +\ShowInfo{exp}{Calculate the exponential function of the topmost stack entry.} + +\startuseMPgraphic{ln} + draw_function(ln)(0,50,5) ; draw_axis ; +\stopuseMPgraphic + +\ShowInfo{ln}{Calculate the natural logaritm of the topmost stack entry.} + +\startuseMPgraphic{pow} + vardef mypow(expr n) = 3**n enddef ; + draw_function(mypow)(-3,3,.5) ; draw_axis ; +\stopuseMPgraphic + +\ShowInfo{pow}{Calculate x\high{y} where y is the topmost stack entry.} + +\startuseMPgraphic{inv} + draw_function(inv)(-10,10,1) ; draw_axis ; +\stopuseMPgraphic + +\ShowInfo{inv}{Calculate 1/x using the topmost stack entry.} + +\startMPinclusions + + def draw_statistics (expr ShowNew, ShowAdd, ShowSubtract, ShowN, ShowSum, ShowMin, ShowMax, ShowMean, ShowSdev) = + color c ; c := \MPcolor{action} ; + Delta := 20 ; + Total := 100 ; + Range := 24 ; + Sum := 0 ; + Sqr := 0 ; + randomseed := .5 ; + pickup pencircle scaled .5Delta ; + for r := 0 upto Range: + Value[r] := 0 ; + endfor ; + for i=1 upto Total: + r := uniformdeviate 1 ; + Sum := Sum + r ; + Sqr := Sqr + r*r ; + r := round(r*Range) ; + Value[r] := Value[r]+1 ; + endfor ; + Mean := Sum/Total ; + Sdev := sqrt((Sqr-2*Sum*Mean+Total*Mean*Mean)/Total) ; + Mean := Mean*Range ; + Sdev := Sdev*Range ; + SdevMin := Mean-Sdev ; + SdevMax := Mean+Sdev ; + for r := 0 upto Range: + draw (r*Delta,0)--(r*Delta,Value[r]*Delta) + withcolor + if (ShowSdev and (r>SdevMin) and (r4: .8ca else: .8cb fi ; + else: + fill p withcolor .4white ; + fi ; + draw p withcolor ca ; + endfor ; + currentpicture := currentpicture scaled 1.5 ; + enddef ; + +\stopMPinclusions + +\startuseMPgraphic{push} + draw_stack (false, true, false, false) +\stopuseMPgraphic + +\ShowInfo{push}{Push a new entry to the stack.} + +\startuseMPgraphic{pop} + draw_stack (false, false, true, false) +\stopuseMPgraphic + +\ShowInfo{pop}{Remove the topmost entry from the stack.} + +\startuseMPgraphic{new} + draw_stack (true, false, false, false) +\stopuseMPgraphic + +\ShowInfo{new}{Erase the whole stack.} + +\startuseMPgraphic{dup} + draw_stack (false, false, false, true) +\stopuseMPgraphic + +\ShowInfo{dup}{Duplicate the topmost stack entry.} + +\startMPinclusions + + def draw_funcalc (expr p, q, r, action) = + + color b ; b := \MPcolor{keyboard} ; + color c ; c := \MPcolor{stack} ; + + draw ((-2.25max(p,q,r))-1,0)--(-1,0) withcolor .4white ; + + pickup pencircle scaled 2 ; + for i=1 upto p: draw (-i*2.25, 3.75) withcolor c ; endfor ; + for i=1 upto q: draw (-i*2.25, 1.50) withcolor c ; endfor ; + for i=1 upto r: draw (-i*2.25,-1.50) withcolor c ; endfor ; + pickup pencircle scaled .5 ; + + push_boundingbox currentpicture ; + + pair w ; w := (1.125,0) ; + path ww ; ww := -w -- w ; + + if action=1: + draw ww shifted w withcolor b ; + draw ww rotated 90 shifted w withcolor b ; + elseif action=2: + draw ww shifted w withcolor b ; + elseif action=3: + draw ww rotated 45 shifted w withcolor b ; + draw ww rotated 135 shifted w withcolor b ; + elseif action=4: + draw ww rotated 45 shifted w withcolor b ; + fi ; + + pop_boundingbox currentpicture ; + + currentpicture := currentpicture scaled 15 ; + + enddef ; + +\stopMPinclusions + +\startuseMPgraphic{add} + draw_funcalc (6, 6, 7, 1) +\stopuseMPgraphic + +\ShowInfo{add}{Add the two topmost stack entries.} + +\startuseMPgraphic{sub} + draw_funcalc (5, 4, 5, 2) +\stopuseMPgraphic + +\ShowInfo{sub}{Subtract the topmost stack entry from the one below.} + +\startuseMPgraphic{mul} + draw_funcalc (3, 4, 7, 3) +\stopuseMPgraphic + +\ShowInfo{mul}{Multiply the two topmost stack entries.} + +\startuseMPgraphic{div} + draw_funcalc (5, 2, 4, 4) +\stopuseMPgraphic + +\ShowInfo{div}{Divide the pre-last stack entry by the topmost one.} + +\startuseMPgraphic{grow} + + pickup pencircle scaled 5 ; + ahlength := 10 ; + + path p ; p := (0,0)--(60,0) ; + path q ; q := (30,2*15)--(30,7*15) ; + path r ; r := (30,0)--(30,7*15) ; + + for i=0 upto 7: + draw p shifted (0,i*15) withcolor + if i<3: \MPcolor{stack} else: .4white fi ; + endfor ; + + addto currentpicture also currentpicture + rotatedaround (center currentpicture, 180) + shifted (90, 0) ; + + drawarrow q withcolor \MPcolor{keyboard} ; + drawarrow reverse r shifted (90, 0) withcolor \MPcolor{keyboard} ; + + currentpicture := currentpicture scaled 2 ; + +\stopuseMPgraphic + +\ShowInfo{grow}{Toggle grow mode, another way of stacking.} + +\startuseMPgraphic{exit} + + path p ; p := (100,30)--(100,0)--(0,0)--(0,100)--(100,100)--(100,70) ; + pickup pencircle scaled 10 ; + linecap := butt ; + ahlength := 60 ; + ahangle := 75 ; + filldraw + p--cycle + withcolor \MPcolor{action} ; + draw + p + withcolor \MPcolor{stack} ; + push_boundingbox currentpicture ; + pickup pencircle scaled 30 ; + draw + center currentpicture -- + (xpart lrcorner currentpicture+.75ahlength, ypart center currentpicture) + withcolor \MPcolor{keyboard} ; + pickup pencircle scaled 5 ; + drawarrow + center currentpicture -- + (xpart lrcorner currentpicture, ypart center currentpicture) + withcolor \MPcolor{keyboard} ; + pop_boundingbox currentpicture ; + currentpicture := currentpicture scaled 1.75 ; + +\stopuseMPgraphic + +\ShowInfo{exit}{Close this document.} + +\stoptext diff --git a/doc/context/examples/clock/clock.pdf b/doc/context/examples/clock/clock.pdf new file mode 100644 index 000000000..9ce83b407 Binary files /dev/null and b/doc/context/examples/clock/clock.pdf differ diff --git a/doc/context/examples/clock/clock.tex b/doc/context/examples/clock/clock.tex new file mode 100644 index 000000000..6b70de585 --- /dev/null +++ b/doc/context/examples/clock/clock.tex @@ -0,0 +1,156 @@ +%D This example dates from late 2001, and ws probaby made for some \TEX\ related +%D meeting. It's a relative simple example that uses a few function from a general +%D \JAVASCRIPT\ preamble. In fact forcing the \type {FieldStack} code into the +%D is the only adaptation from \MKII\ to \MKIV\ (because we load on demand and here +%D the code is ude sindirectly). +%D +%D Nowadays we could layers instead which is probably a bit more ligthweight than +%D widgets. Also, we should actually synchronize the time but on the other hand, but +%D on the other hand, now it's a sort of stopwatch. + +% \nopdfcompression + +\starttext + +\useJSscripts[fld] + +\useJSpreamble[FieldStack] + +\definepapersize + [clock] + [width=2.5cm, + height=2.5cm] + +\setuppapersize + [clock][clock] + +\setuplayout + [header=0pt, + footer=0pt, + backspace=.25cm, + topspace=.25cm, + width=middle, + height=middle] + +\startJSpreamble stepper used now + + var state = 0 ; + var more = 0 ; + var step = 0 ; + + function step_clock() { + try { + if (more == 60) { + more = 0 ; + Walk_Field("more") ; + } else { + } + more += 1 ; + Walk_Field("clock") ; + this.dirty = false ; + } catch (e) { + } + } + + function start_clock() { + try { + if (state == 0) { + step = app.setInterval ("step_clock()", 1000) ; + step.count = 0 ; + state = 1 ; + } else if (state == 1) { + app.clearInterval (step) ; + state = 2 ; + } else if (state == 2) { + app.clearInterval (step) ; + Reset_Fields("more") ; + Reset_Fields("clock") ; + Set_Field("more", "1") ; + Set_Field("clock", "1") ; + more = 0 ; + state = 0 ; + } + } catch(e) { + } + } + + function stop_clock () { + try { + app.clearInterval(step) ; + } catch(e) { + } + } + +\stopJSpreamble + +\definereference[StopClock] [JS(stop_clock)] +\definereference[StartClock][JS(start_clock)] + +\setupinteraction + [state=start, + closeaction={StopClock,ForgetChanges}, + closepageaction={StopClock}] + +\startreusableMPgraphic{common} + drawoptions(withpen pencircle scaled 1mm withcolor .4white) ; + fill fullsquare scaled 2.5cm ; + drawoptions(withpen pencircle scaled 1mm withcolor .6green) ; + draw fullsquare scaled 2.5cm ; + drawoptions(withpen pencircle scaled 1mm withcolor .6red) ; + draw fullcircle scaled 2cm ; + drawoptions(withpen pencircle scaled 2mm withcolor .6yellow) ; + for i=1 upto 12 : + draw (0,1cm) rotated ((i-1)*(360/12)) ; + endfor ; +\stopreusableMPgraphic + +\startuseMPgraphic{clock} + numeric stp ; stp := (\MPvar{n}-1)*(360/60) ; + pair p ; p := (0,\MPvar{l}-.5mm) ; + drawoptions(withpen pencircle scaled 1mm withcolor .6\MPvar{c}) ; + draw (origin -- p) rotated -stp ; + draw (p shifted (-2mm,-2.5mm)--p--p shifted (2mm,-2.5mm)) rotated -stp ; + setbounds currentpicture to fullsquare scaled 2cm ; + drawoptions(withpen pencircle scaled 2mm withcolor .6white) ; + draw origin ; +\stopuseMPgraphic + +\defineoverlay [common] [\reuseMPgraphic{common}] +\defineoverlay [start] [\overlaybutton{StartClock}] + +\setupbackgrounds + [page] + [background={common,start}] + +\let\clocklist\empty +\let\morelist \empty + +\dorecurse {60} { + \appendtocommalist{step:#1}\clocklist + \definesymbol + [step:#1] + [\useMPgraphic{clock}{n=#1,l=1cm,c=blue}] + \appendtocommalist{more:#1}\morelist + \definesymbol + [more:#1] + [\useMPgraphic{clock}{n=#1,l=.75cm,c=green}] +} + +\definefieldstack + [clock] + [\clocklist] + [width=2cm,height=2cm,offset=overlay,frame=off] + +\definefieldstack + [more] + [\morelist] + [width=2cm,height=2cm,offset=overlay,frame=off] + +\starttext + + \startoverlay + {\fieldstack[more]} + {\fieldstack[clock]} + \stopoverlay + +\stoptext diff --git a/doc/context/presentations/bachotex/2005/bachotex-2005-fonts.tex b/doc/context/presentations/bachotex/2005/bachotex-2005-fonts.tex new file mode 100644 index 000000000..930316939 --- /dev/null +++ b/doc/context/presentations/bachotex/2005/bachotex-2005-fonts.tex @@ -0,0 +1 @@ +\starttext todo \stoptext % see cld-dante diff --git a/doc/context/presentations/bachotex/2005/bachotex-2005-hyphenation.tex b/doc/context/presentations/bachotex/2005/bachotex-2005-hyphenation.tex new file mode 100644 index 000000000..930316939 --- /dev/null +++ b/doc/context/presentations/bachotex/2005/bachotex-2005-hyphenation.tex @@ -0,0 +1 @@ +\starttext todo \stoptext % see cld-dante diff --git a/doc/context/presentations/bachotex/2009/bachotex-2009-luatex.tex b/doc/context/presentations/bachotex/2009/bachotex-2009-luatex.tex new file mode 100644 index 000000000..930316939 --- /dev/null +++ b/doc/context/presentations/bachotex/2009/bachotex-2009-luatex.tex @@ -0,0 +1 @@ +\starttext todo \stoptext % see cld-dante diff --git a/doc/context/presentations/bachotex/2009/bachotex-2009-math.tex b/doc/context/presentations/bachotex/2009/bachotex-2009-math.tex new file mode 100644 index 000000000..930316939 --- /dev/null +++ b/doc/context/presentations/bachotex/2009/bachotex-2009-math.tex @@ -0,0 +1 @@ +\starttext todo \stoptext % see cld-dante diff --git a/doc/context/presentations/bachotex/2009/bachotex-2009-opentype.tex b/doc/context/presentations/bachotex/2009/bachotex-2009-opentype.tex new file mode 100644 index 000000000..930316939 --- /dev/null +++ b/doc/context/presentations/bachotex/2009/bachotex-2009-opentype.tex @@ -0,0 +1 @@ +\starttext todo \stoptext % see cld-dante diff --git a/doc/context/presentations/bachotex/2011/bachotex-2011-ebook.tex b/doc/context/presentations/bachotex/2011/bachotex-2011-ebook.tex new file mode 100644 index 000000000..930316939 --- /dev/null +++ b/doc/context/presentations/bachotex/2011/bachotex-2011-ebook.tex @@ -0,0 +1 @@ +\starttext todo \stoptext % see cld-dante diff --git a/doc/context/presentations/bachotex/2011/bachotex-2011-math.tex b/doc/context/presentations/bachotex/2011/bachotex-2011-math.tex new file mode 100644 index 000000000..930316939 --- /dev/null +++ b/doc/context/presentations/bachotex/2011/bachotex-2011-math.tex @@ -0,0 +1 @@ +\starttext todo \stoptext % see cld-dante diff --git a/doc/context/presentations/bachotex/2011/bachotex-2011-metapost.tex b/doc/context/presentations/bachotex/2011/bachotex-2011-metapost.tex new file mode 100644 index 000000000..930316939 --- /dev/null +++ b/doc/context/presentations/bachotex/2011/bachotex-2011-metapost.tex @@ -0,0 +1 @@ +\starttext todo \stoptext % see cld-dante diff --git a/doc/context/presentations/bachotex/2012/bachotex-2012-context.tex b/doc/context/presentations/bachotex/2012/bachotex-2012-context.tex new file mode 100644 index 000000000..dc4b4890b --- /dev/null +++ b/doc/context/presentations/bachotex/2012/bachotex-2012-context.tex @@ -0,0 +1 @@ +\starttext todo \stoptext diff --git a/doc/context/presentations/bachotex/2012/bachotex-2012-future.tex b/doc/context/presentations/bachotex/2012/bachotex-2012-future.tex new file mode 100644 index 000000000..dc4b4890b --- /dev/null +++ b/doc/context/presentations/bachotex/2012/bachotex-2012-future.tex @@ -0,0 +1 @@ +\starttext todo \stoptext diff --git a/doc/context/presentations/bachotex/2014/bachotex-2014-luatex.tex b/doc/context/presentations/bachotex/2014/bachotex-2014-luatex.tex new file mode 100644 index 000000000..dc4b4890b --- /dev/null +++ b/doc/context/presentations/bachotex/2014/bachotex-2014-luatex.tex @@ -0,0 +1 @@ +\starttext todo \stoptext diff --git a/doc/context/presentations/bachotex/2014/bachotex-2014-metapost.tex b/doc/context/presentations/bachotex/2014/bachotex-2014-metapost.tex new file mode 100644 index 000000000..dc4b4890b --- /dev/null +++ b/doc/context/presentations/bachotex/2014/bachotex-2014-metapost.tex @@ -0,0 +1 @@ +\starttext todo \stoptext diff --git a/doc/context/presentations/bachotex/2018/bachotex-2018-fonteffects.pdf b/doc/context/presentations/bachotex/2018/bachotex-2018-fonteffects.pdf new file mode 100644 index 000000000..eb9abd07a Binary files /dev/null and b/doc/context/presentations/bachotex/2018/bachotex-2018-fonteffects.pdf differ diff --git a/doc/context/presentations/bachotex/2018/bachotex-2018-fonteffects.tex b/doc/context/presentations/bachotex/2018/bachotex-2018-fonteffects.tex new file mode 100644 index 000000000..330fc3340 --- /dev/null +++ b/doc/context/presentations/bachotex/2018/bachotex-2018-fonteffects.tex @@ -0,0 +1,912 @@ +% language=uk + +\definecolor[red] [r=.6] +\definecolor[green] [g=.6] +\definecolor[blue] [b=.6] + +\definecolor[cyan] [g=.6,b=.6] +\definecolor[magenta][r=.6,b=.6] +\definecolor[yellow] [r=.6,g=.6] + +\usemodule[abbreviations-smallcaps] +\usemodule[scite] +\usemodule[scite] + +\setuptyping[option=TEX] +\setuptype[option=TEX] + +\dontcomplain + +\usebodyfont [modern] +\usebodyfont[pagella] +\usebodyfont [dejavu] + +\setuppapersize[S6] + +\definebodyfontenvironment[24pt] + +\definecolor[maincolor][r=.6] +\definecolor[maintrans][r=.6,t=.5,a=1] +\definecolor[moretrans][g=.6,t=.5,a=1] + +\setuplayout + [width=middle, + height=middle, + margin=0cm, + header=0cm, + footer=0cm, + topspace=1cm, + bottomspace=1cm, + backspace=1cm] + +\setupbackgrounds + [page] + [background=color, + backgroundcolor=darkgray] + +\setupbackgrounds + [text][text] + [background=color, + backgroundoffset=5mm, + backgroundcolor=middlegray] + +\definefontfeature[bbox][boundingbox=frame] + +\definefont + [LargeFont] + [SansBold*default,boldened-20,bbox @ 40pt] + +\definefont + [SmallFont] + [SansBold*default,boldened-20 @ 20pt] + +\definefont + [HeadFont] + [SansBold*default,boldened-30 @ 30pt] + +\setupbodyfont + [modernlatin,14.4pt] + +\setuphead + [title] + [style=\HeadFont, + color=maincolor, + align=middle] + +\definefontsynonym[BenchMark][lmroman10regular] + +\starttext + +\startstandardmakeup[footerstate=start] + \LargeFont \maincolor \setupalign[middle] + \vfil + \dontleavehmode\scale[width=.6\textwidth]{\setstrut\strut Modern} + \vfil + \dontleavehmode\scale[width=.8\textwidth]{\setstrut\strut Latin} + \vfil + \vfil + \SmallFont \darkgray Bacho\TeX\ 2018\enspace\emdash\enspace Hans Hagen +\stopstandardmakeup + +\starttitle[title=Why oh why] + +\startitemize +\startitem + In \CONTEXT\ we have a mechanism to apply effects to a glyph stream. +\stopitem +\startitem + An active user on the \CONTEXT\ mailing list wondered if that could be + applied to specific fonts. +\stopitem +\startitem + The particular interest concerned the possibility to bolden fonts. +\stopitem +\startitem + I don't really like effects and not all fonts are suitable for it. +\stopitem +\stopitemize + +\stoptitle + +\starttitle[title=What are effects] + +Normal effects are implemented using the \quote {effects} mechanism, which +already dates way back in \MKII\ times and of course is also available for +\MKIV. + +\defineeffect [inner] [alternative=inner,rulethickness=1.25pt] +\defineeffect [outer] [alternative=outer,rulethickness=1.25pt] +\defineeffect [both] [alternative=both, rulethickness=1.25pt] +\defineeffect [normal] [alternative=normal] + +\starttyping +\defineeffect + [outer] + [alternative=outer, + rulethickness=1.25pt] + +effect \starteffect[outer]effect\stopeffect +\stoptyping + +\startlinecorrection + + \definefont[DemoFont][BenchMark*default @ 70pt] + + \scale[width=\textwidth]{\startcombination[3*2] + {\DemoFont\setstrut\strut\starteffect [inner]effect\stopeffect} + {\startoverlay + {\DemoFont\setstrut\strut\maintrans \starteffect[inner]effect\stopeffect} + {\DemoFont\setstrut\strut\moretrans effect} + \stopoverlay} + {\DemoFont\setstrut\strut\starteffect [outer]effect\stopeffect} + {\startoverlay + {\DemoFont\setstrut\strut\maintrans \starteffect[outer]effect\stopeffect} + {\DemoFont\setstrut\strut\moretrans effect} + \stopoverlay} + {\DemoFont\setstrut\strut\starteffect [both]effect\stopeffect} + {\startoverlay + {\DemoFont\setstrut\strut\maintrans \starteffect [both]effect\stopeffect} + {\DemoFont\setstrut\strut\moretrans effect} + \stopoverlay} + {\startoverlay + {\DemoFont\setstrut\strut\moretrans effect} + {\DemoFont\setstrut\strut\maintrans \starteffect[inner]effect\stopeffect} + \stopoverlay} + {\tttf inner} + {\startoverlay + {\DemoFont\setstrut\strut\moretrans effect} + {\DemoFont\setstrut\strut\maintrans \starteffect[outer]effect\stopeffect} + \stopoverlay} + {\tttf outer} + {\startoverlay + {\DemoFont\setstrut\strut\moretrans effect} + {\DemoFont\setstrut\strut\maintrans \starteffect [both]effect\stopeffect} + \stopoverlay} + {\tttf both} + \stopcombination} + +\stoplinecorrection + +\stoptitle + +\starttitle[title=How tricky is this] + +\startitemize +\startitem + Of course the only way to deal with this nicely is by using runtime created + virtual fonts. +\stopitem +\startitem + So called \PDF\ literals can interfere badly with font switches at the \PDF\ + level and are therefore very inefficient. +\stopitem +\startitem + In order to properly support effects at the font level, we need to be able to + inject the right \PDF\ code in a more clever way. +\stopitem +\startitem + Two new keys were added to the font file definition table: \type{width} and + \type {mode}. When set these inject a \PDF\ line width operation and trigger the + right rendering mode (backend). +\stopitem +\stopitemize + +\stoptitle + +\starttitle[title=What interface do we need] + +\startbuffer +\definefontfeature[effect-1][effect={width=0.8}] +\definefontfeature[bbox] [boundingbox=frame] + +\definefont + [EffectiveFont] + [BenchMark*default,effect-1,bbox @ 12pt] +\stopbuffer + +\typebuffer \getbuffer + +\startlinecorrection[2*big] +\scale[width=\textwidth]{\backgroundline[maincolor]{\EffectiveFont effective}} +\stoplinecorrection + +\page + +\startbuffer +\definefontfeature[effect-2][effect={width=1.1,wdelta=1.20}] +\definefontfeature[effect-3][effect={width=1.1,wdelta=1.80}] + +\definefont + [EffectiveFontA] + [BenchMark*default,effect-2 @ 12pt] + +\definefont + [EffectiveFontB] + [BenchMark*default,effect-3 @ 12pt] +\stopbuffer + +\typebuffer \getbuffer + +\scale[width=\textwidth]{\darkgray\showglyphs \EffectiveFontA effect \EffectiveFontB effect} + +\stoptitle + +\starttitle[title=Can we do better] + +\startitemize +\startitem + This is still not good enough so next came playing with extended shapes. This is an + old feature inherited from \POSTSCRIPT\ times and \PDFTEX. +\stopitem +\startitem + The \LUATEX\ backend is very efficient with this kind of trickery and combines + it with font scaling. +\stopitem +\startitem + It was trivial to add a similar scaling in the vertical direction. +\stopitem +\stopitemize + +\page + +\startbuffer +\definefontfeature[effect-4] + [effect={width=0.5,wdelta=1.5}] + +\definefontfeature[effect-5] + [effect={width=0.5,wdelta=1.5,extend=1.2}] + +\definefont + [EffectiveFontA] + [BenchMark*default,effect-4 @ 12pt] + +\definefont + [EffectiveFontB] + [BenchMark*default,effect-5 @ 12pt] +\stopbuffer + +\typebuffer \getbuffer + +\startlinecorrection[2*big] +\scale[width=\textwidth]{\darkgray\showglyphs \EffectiveFontA effect \EffectiveFontB effect} +\stoplinecorrection + +\page + +\startbuffer +\definefontfeature[effect-6] + [effect={width=0.5,wdelta=1.50}] + +\definefontfeature[effect-7] + [effect={width=0.5,wdelta=1.50,squeeze=1.2}] + +\definefont + [EffectiveFontA] + [BenchMark*default,effect-6 @ 12pt] + +\definefont + [EffectiveFontB] + [BenchMark*default,effect-7 @ 12pt] +\stopbuffer + +\typebuffer \getbuffer + +\startlinecorrection[2*big] +\scale[width=\textwidth]{\darkgray\showglyphs \EffectiveFontA effect \EffectiveFontB effect} +\stoplinecorrection + +\stoptitle + +\starttitle[title=How about math] + +\startitemize +\startitem + I never really needed this kind of trickery but it might be handy for + bold math in titles. +\stopitem +\startitem + But math is kind of special as it has extensibles, uses rules and is controlled + by math parameters. +\stopitem +\startitem + Math parameters are global for a formula so that doesn't work out well for mixed + families using fonts with different design parameters. +\stopitem +\stopitemize + +\page + +\starttyping +\switchtobodyfont[modern] + +$\sqrt{\frac{\frac{1}{a}}{\frac{2}{b}}}$ + +\switchtobodyfont[modernlatin] + +$\mr \sqrt{\frac{\frac{1}{a}}{\frac{2}{b}}}$ +$\mb \sqrt{\frac{\frac{1}{a}}{\frac{2}{b}}}$ +\stoptyping + +\startlinecorrection +\startcombination[3*1] + {\maincolor\switchtobodyfont [modern]\scale[height=.25\textwidth]{$\sqrt{\frac{\frac{1}{a}}{\frac{2}{b}}}$}} {\tttf latinmodern} + {\maincolor\switchtobodyfont[modernlatin]\scale[height=.25\textwidth]{$\sqrt{\frac{\frac{1}{a}}{\frac{2}{b}}}$}} {\tttf modernlatin} + {\maincolor\switchtobodyfont[modernlatin]\scale[height=.25\textwidth]{$\sqrt{\frac{\frac{1}{a}}{\frac{2}{b}}}$}} {\tttf modernlatin} +\stopcombination +\stoplinecorrection + +\stoptitle + +\starttitle[title=Is it useful] + +\startitemize +\startitem + \start \definedfont[BenchMark*default]% + For reading on a different medium than paper a bit bolder font often + works better. This is a normal Latin Modern.\stop +\stopitem +\startitem + Here we use the \type {modernlatin} For reading on a different medium than + paper a bit bolder font often works better. +\stopitem +\startitem + In my opinion a slightly bolder Latin Modern looks a bit more modern, but + that's of course just an opinion. +\stopitem +\startitem + I'm not sure if and when I will use this new trickery; maybe to compensate the + lack of bold math fonts. +\stopitem +\startitem + Performance wise there is no penalty. File don't get larger. Rendering seems to + be somewhat slower. +\stopitem +\startitem + In the end it's probably just another example of feature creep or \TEX\ hobbyism. +\stopitem +\stopitemize + +\stoptitle + +\starttitle[title=Kerning] + +\startMPinclusions + def SampleShapes(expr dx, offset, pw, k) = + picture p ; p := image ( + draw fullcircle scaled 1cm withcolor "maincolor" ; + draw fullsquare scaled 1cm shifted (dx+k,0) withcolor "maincolor" ; + draw point 8 of (fullcircle scaled 1cm) withcolor white ; + draw point 3.5 of (fullsquare scaled 1cm) shifted (dx+k,0) withcolor white ; + ) shifted (offset,0) ; + draw p withpen pencircle scaled pw ; + draw boundingbox p withcolor white ; + enddef ; +\stopMPinclusions + +\startitemize +\startitem + To what extent do we need to compensate dimensions in order to get the kerning + acceptable. +\stopitem +\startitem + Messing around with font features is fragile because there is not much consistency in + how these are organized. +\stopitem +\stopitemize + +\startlinecorrection[2*big] +\startMPcode + SampleShapes(15mm, 0mm,1mm,0mm) ; + SampleShapes(15mm, 40mm,2mm,0mm) ; + SampleShapes(17mm, 80mm,2mm,0mm) ; +\stopMPcode +\stoplinecorrection + +\startlinecorrection[2*big] +\startMPcode + SampleShapes(15mm, 0mm,1mm,0mm) ; + SampleShapes(15mm, 40mm,2mm,2mm) ; + SampleShapes(17mm, 80mm,2mm,2mm) ; +\stopMPcode +\stoplinecorrection + +\startlinecorrection[2*big] +\startMPcode + SampleShapes(10mm, 0mm,1mm,0mm) ; + SampleShapes(10mm, 40mm,1mm,1mm) ; + SampleShapes(10mm, 80mm,2mm,0mm) ; + SampleShapes(10mm,120mm,2mm,2mm) ; +\stopMPcode +\stoplinecorrection + +\stoptitle + +\starttitle[title=Ligatures] + +\definefontfeature + [demo-1] + [default] + [hlig=yes] + +\definefontfeature + [demo-2] + [demo-1] + [effect=0.5] + +\startitemize +\startitem + Ligatures are even less predictable so this is why we cannot apply too much + effect. +\stopitem +\startitem + There can be artifacts due to the way characters are combined (like in Latin + Modern). +\stopitem +\stopitemize + +\startlinecorrection +\startcombination[1*3] + { \scale [width=.8\textwidth] { + \definedfont[texgyrepagellaregular*demo-1]fist effe + \par + \definedfont[texgyrepagellaregular*demo-2]fist effe + } } { + \tttf \maincolor texgyre pagella regular + } { \scale [width=.8\textwidth] { + \definedfont[cambria*demo-1]fist effe + \par + \definedfont[cambria*demo-2]fist effe + } } { + \tttf \maincolor cambria + } { \scale [width=.8\textwidth] { + \definedfont[ebgaramond12regular*demo-1]fist effe + \par + \definedfont[ebgaramond12regular*demo-2]fist effe + } } { + \tttf \maincolor ebgaramond 12 regular + } +\stopcombination +\stoplinecorrection + +\stoptitle + +\starttitle[title=Finetuning] + +\startbuffer +\definefontfeature[lm-bald] + [effect={width=0.25,effect=both}] +\definefontfeature[pg-bald] + [effect={width=0.25,effect=both}] +\definefontfeature[dj-bald] + [effect={width=0.35,effect=both}] + +\definefontfeature[lm-bold] + [effect={width=0.25,hdelta=0,ddelta=0,effect=both, + extend=1.10}] + +\definefontfeature[pg-bold] + [effect={width=0.25,hdelta=0,ddelta=0,effect=both, + extend=1.00}] + +\definefontfeature[dj-bold] + [effect={width=0.35,hdelta=0,ddelta=0,effect=both, + extend=1.05}] +\stopbuffer + +\definefont[lmbald][Serif*default,lm-bald sa d] +\definefont[pgbald][Serif*default,pg-bald sa d] +\definefont[djbald][Serif*default,dj-bald sa d] + +\definefont[lmbold][Serif*default,lm-bold sa d] +\definefont[pgbold][Serif*default,pg-bold sa d] +\definefont[djbold][Serif*default,dj-bold sa d] + +\typebuffer \getbuffer + +\page + +\starttabulate[|l|l|l|l|] +\NC + \NC + \tt \maincolor modern \NC + \tt \maincolor pagella \NC + \tt \maincolor dejavu \NC +\NR +\NC + \maincolor \type{\tfd} \NC + \switchtobodyfont [modern,24pt]\strut\ruledhbox{\tfd ABC}\NC + \switchtobodyfont[pagella,24pt]\strut\ruledhbox{\tfd ABC}\NC + \switchtobodyfont [dejavu,24pt]\strut\ruledhbox{\tfd ABC}\NC +\NR +\NC + \maincolor \type{\..bald} \NC + \switchtobodyfont [modern,24pt]\strut\ruledhbox{\lmbald ABC}\NC + \switchtobodyfont[pagella,24pt]\strut\ruledhbox{\pgbald ABC}\NC + \switchtobodyfont [dejavu,24pt]\strut\ruledhbox{\djbald ABC}\NC +\NR +\NC + \maincolor \type{\bfd} \NC + \switchtobodyfont [modern,24pt]\strut\ruledhbox{\bfd ABC}\NC + \switchtobodyfont[pagella,24pt]\strut\ruledhbox{\bfd ABC}\NC + \switchtobodyfont [dejavu,24pt]\strut\ruledhbox{\bfd ABC}\NC +\NR +\NC + \maincolor \type{\..bold} \NC + \switchtobodyfont [modern,24pt]\strut\ruledhbox{\lmbold ABC}\NC + \switchtobodyfont[pagella,24pt]\strut\ruledhbox{\pgbold ABC}\NC + \switchtobodyfont [dejavu,24pt]\strut\ruledhbox{\djbold ABC}\NC +\NR +\stoptabulate + +\stoptitle + +\starttitle[title=Pagella] + +\startbuffer +\definefontfeature + [pg-fake-1] + [effect={width=0.25,effect=both}] + +\definefontfeature + [pg-fake-2] + [effect={width=0.25,hdelta=0,ddelta=0,effect=both}] + +\definefont[pgregular] [Serif*default] +\definefont[pgbold] [SerifBold*default] +\definefont[pgfakebolda][Serif*default,pg-fake-1] +\definefont[pgfakeboldb][Serif*default,pg-fake-2] + +\definecolor[color-pgregular] [t=.5,a=1,r=.6] +\definecolor[color-pgbold] [t=.5,a=1,g=.6] +\definecolor[color-pgfakebolda][t=.5,a=1,b=.6] +\definecolor[color-pgfakeboldb][t=.5,a=1,r=.6,g=.6] +\stopbuffer + +\typebuffer + +\page + +\startbuffer[sample] + +\start \switchtobodyfont[pagella] \getbuffer + +\startcombination[2*2] + { + \scale [width=\measure{combination}] { + \ruledhbox{\showglyphs\pgregular \SampleWord} + } + } { + regular + } { + \scale [width=\measure{combination}] { + \ruledhbox{\showglyphs\pgbold \SampleWord} + } + } { + bold + } { + \scale [width=\measure{combination}] { + \ruledhbox{\showglyphs\pgfakebolda \SampleWord} + } + } { + fakebolda + } { + \scale [width=\measure{combination}] { + \ruledhbox{\showglyphs\pgfakeboldb \SampleWord} + } + } { + fakeboldb + } +\stopcombination + +\stop + +\page + +\start \switchtobodyfont[pagella] \getbuffer + +\startcombination[2*3] + { + \scale [width=.35\textwidth] { + \startoverlay + {\color[color-pgregular] {\pgregular \SampleWord}} + {\color[color-pgbold] {\pgbold \SampleWord}} + \stopoverlay + } + } { + bold over regular + } { + \scale [width=.35\textwidth] { + \startoverlay + {\color[color-pgregular] {\pgregular \SampleWord}} + {\color[color-pgfakeboldb]{\pgfakeboldb \SampleWord}} + \stopoverlay + } + } { + fakebolda over regular + } { + \scale [width=.35\textwidth] { + \startoverlay + {\color[color-pgregular] {\pgregular \SampleWord}} + {\color[color-pgfakebolda]{\pgfakeboldb \SampleWord}} + \stopoverlay + } + } { + fakeboldb over regular + } { + \scale [width=.35\textwidth] { + \startoverlay + {\color[color-pgbold] {\pgbold \SampleWord}} + {\color[color-pgfakeboldb]{\pgfakeboldb \SampleWord}} + \stopoverlay + } + } { + fakeboldb over bold + } { + \scale [width=.35\textwidth] { + \startoverlay + {\color[color-pgfakebolda]{\pgfakebolda \SampleWord}} + {\color[color-pgfakeboldb]{\pgfakeboldb \SampleWord}} + \stopoverlay + } + } { + fakeboldb over fakebolda + } { + \scale [width=.35\textwidth] { + \startoverlay + {\color[color-pgregular] {\pgregular \SampleWord}} + {\color[color-pgbold] {\pgbold \SampleWord}} + {\color[color-pgfakebolda]{\pgfakebolda \SampleWord}} + {\color[color-pgfakeboldb]{\pgfakeboldb \SampleWord}} + \stopoverlay + } + } { + all four overlayed + } +\stopcombination + +\stop + +\stopbuffer + +\def\SampleWord{\^o\"ep\c s} \getbuffer[sample] +\def\SampleWord{London Grammar} \getbuffer[sample] + +\stoptitle + +\starttitle[title=Arabic] + +\startbuffer +\definefontfeature + [bolden-arabic-1] + [effect={width=0.4}] + +\definefontfeature + [bolden-arabic-2] + [effect={width=0.4,effect=outer}] + +\definefontfeature + [bolden-arabic-3] + [effect={width=0.5,wdelta=0.5,ddelta=.2,hdelta=.2,factor=.1}] +\stopbuffer + +\typebuffer \getbuffer + +\startbuffer + +\setupalign + [righttoleft] + +\setupinterlinespace + [1.5] + +\start + \definedfont[arabictest*arabic,bolden-arabic-1 @ 30pt] + \samplefile{khatt-ar}\blank + \definedfont[arabictest*arabic,bolden-arabic-2 @ 30pt] + \samplefile{khatt-ar}\blank + \definedfont[arabictest*arabic,bolden-arabic-3 @ 30pt] + \samplefile{khatt-ar}\blank +\stop +\stopbuffer + +\page \start \definefontsynonym[arabictest][arabtype] \getbuffer\stop + +\page \start \definefontsynonym[arabictest][husayni] \getbuffer\stop + +\stoptitle + +\starttitle[title=Marks and cursive] + +\startitemize +\startitem + Marks are tricky because they can be anchored at any location and we can + only guess what should be done. +\stopitem +\startitem + Cursive connections still need to connect and we don't know in advance + how shapes overlap. +\stopitem +\stopitemize + +\startMPinclusions + def DrawShapes(expr how) = + def SampleShapes(expr offset, pw, xc, xs, xt, yc, ys, yt, txt, more) = + numeric l ; l := pw * mm ; + picture p ; p := image ( + draw fullcircle scaled 10 ; + draw fullcircle scaled 3 shifted (-3+xc ,8+yc) withcolor "darkred" ; + draw fullsquare scaled 3 shifted ( 6+xs ,7+ys) withcolor "darkblue"; + draw fulltriangle scaled 4 shifted ( 6+xt+5,6+yt) withcolor "darkgreen"; + ) shifted (offset,0) scaled mm ; + draw p + withpen pencircle + if how = 2 : + xscaled l yscaled (l/2) rotated 30 ; + else : + scaled l ; + fi ; + draw boundingbox p + withcolor "darkyellow" ; + draw textext(txt) + shifted (xpart center p, -8mm) ; + draw textext(more) + shifted (xpart center p, -11mm) ; + enddef ; + SampleShapes( 0,1, 0,0,0, 0, 0, 0, "\tinyfont \setstrut \strut original", "\tinyfont \setstrut \strut ") ; + SampleShapes( 25,2, 0,0,0, 0, 0, 0, "\tinyfont \setstrut \strut instance", "\tinyfont \setstrut \strut ") ; + SampleShapes( 50,2,-1,1,0, 0, 0, 0, "\tinyfont \setstrut \strut mark", "\tinyfont \setstrut \strut x only") ; + SampleShapes( 75,2,-1,1,1, 0, 0, 0, "\tinyfont \setstrut \strut mark + mkmk","\tinyfont \setstrut \strut x only") ; + SampleShapes(100,2,-1,1,1, 1, 1, 1, "\tinyfont \setstrut \strut mark + mkmk","\tinyfont \setstrut \strut x and y") ; + SampleShapes(125,2,-1,2,2,-1/2,-1/2,-1/2,"\tinyfont \setstrut \strut mark + mkmk","\tinyfont \setstrut \strut x and -y") ; + enddef ; +\stopMPinclusions + +\startlinecorrection[2*big] +\scale + [width=\textwidth] + {\startMPcode DrawShapes(1) ; \stopMPcode} +\stoplinecorrection + +\startlinecorrection[2*big] +\scale + [width=\textwidth] + {\startMPcode DrawShapes(2) ; \stopMPcode} +\stoplinecorrection + +\stoptitle + +\starttitle[title=Radicals and such] + +Radicals are constructed using rules and extensible characters. Especially the rules +need to be adapted. + +\startbuffer[mathblob] +\def\MathSample + {2\times\sqrt{\frac{\sqrt{\frac{\sqrt{2}}{\sqrt{2}}}} + {\sqrt{\frac{\sqrt{2}}{\sqrt{2}}}}}} +\stopbuffer + +\startbuffer +$\mr \darkblue \MathSample \quad + \mb \darkgreen \MathSample $ +\stopbuffer + +\getbuffer[mathblob] + +\typebuffer + +\startlinecorrection[blank] +\scale[width=\textwidth]{\switchtobodyfont[modernlatin,24pt]\getbuffer} +\stoplinecorrection + +\page + +\startbuffer +\dostepwiserecurse {1} {30} {5} { + $ + \mr \sqrt{\blackrule[width=2mm,height=#1mm,color=darkblue]} + \quad + \mb \sqrt{\blackrule[width=2mm,height=#1mm,color=darkgreen]} + $ +} +\stopbuffer + +\typebuffer + +\startlinecorrection[blank] +\scale[width=\textwidth]{\switchtobodyfont[modernlatin,24pt]\getbuffer} +\stoplinecorrection + +\page + +\definecolor[colormr] [t=.5,a=1,b=.6] +\definecolor[colormb] [t=.5,a=1,g=.6] + +% and a fix in \LUATEX: pickup the value from the font instead of the currently + +\startlinecorrection +\midaligned{\scale[height=.6\textheight]{\startoverlay + {\color[colormb]{$\mb\sqrt{\frac{1}{x}}$}} + {\color[colormr]{$ \sqrt{\frac{1}{x}}$}} +\stopoverlay}} +\stoplinecorrection + +\page + +\unexpanded\def\ShowMathSample#1% + {\switchtobodyfont[#1,14.4pt]% + \mathematics{% + \mr \darkblue \MathSample \quad + \mb \darkgreen \MathSample + }} + +\unexpanded\def\ShowMathCaption#1% + {\switchtobodyfont[#1]% + #1: + $ + {\mr2\enspace \scriptstyle2\enspace \scriptscriptstyle2} + \enspace + {\mb2\enspace \scriptstyle2\enspace \scriptscriptstyle2} + $} + +\midaligned{\startcombination[3*2] + {\ShowMathSample {dejavu}} {\ShowMathCaption{dejavu}} + {\ShowMathSample{pagella}} {\ShowMathCaption{pagella}} + {\ShowMathSample {termes}} {\ShowMathCaption{termes}} + {\ShowMathSample {bonum}} {\ShowMathCaption{bonum}} + {\ShowMathSample {schola}} {\ShowMathCaption{schola}} + {\ShowMathSample{cambria}} {\ShowMathCaption{cambria}} +\stopcombination} + +\page + +\starttyping +\definefontfeature + [boldened-30] + [effect={width=0.3,extend=1.15,squeeze=0.985,% + delta=1,hdelta=0.225,ddelta=0.225,vshift=0.225}] + +\definefontfeature + [boldened-30] + [effect={width=0.30,auto=yes}] +\stoptyping + +\stoptitle + +\starttitle[title=An application] + +\def\MathSample + {\overbrace{2 + + \sqrt{\frac{\sqrt{\frac{\sqrt{2}}{\sqrt{2}}}} + {\sqrt{\frac{\sqrt{\underbar{2}}}{\sqrt{\overbar{2}}}}}}}} + +\startbuffer +\definehead [mysectiona] [section] +\definehead [mysectionb] [mysectiona] + +\setuphead + [mysectiona] + [style=\tfc, + color=darkblue, + before=\blank, + after=\blank] + +\setuphead + [mysectionb] + [style=\bfc, + color=darkred] + +\mysectiona{Regular\quad$\MathSample\quad\mb\MathSample$} +\mysectionb{Bold \quad$\MathSample\quad\mb\MathSample$} +\stopbuffer + +\typebuffer \page \getbuffer \page + +\startcolumns + \switchtobodyfont[modern,12pt] \setupinterlinespace[15pt] \samplefile{poe} \column + \switchtobodyfont[modernlatin,12pt] \setupinterlinespace[15pt] \samplefile{poe} % \column +\stopcolumns + +\stoptitle + +\stoptext diff --git a/doc/context/presentations/bachotex/2018/bachotex-2018-mp.pdf b/doc/context/presentations/bachotex/2018/bachotex-2018-mp.pdf new file mode 100644 index 000000000..11d0a33c9 Binary files /dev/null and b/doc/context/presentations/bachotex/2018/bachotex-2018-mp.pdf differ diff --git a/doc/context/presentations/bachotex/2018/bachotex-2018-mp.tex b/doc/context/presentations/bachotex/2018/bachotex-2018-mp.tex new file mode 100644 index 000000000..020ec179c --- /dev/null +++ b/doc/context/presentations/bachotex/2018/bachotex-2018-mp.tex @@ -0,0 +1,1856 @@ + +\startbuffer[colors] +\definecolor[red] [r=.6] +\definecolor[green] [g=.6] +\definecolor[blue] [b=.6] + +\definecolor[cyan] [g=.6,b=.6] +\definecolor[magenta][r=.6,b=.6] +\definecolor[yellow] [r=.6,g=.6] +\stopbuffer + +\getbuffer[colors] + +\usemodule[abbreviations-smallcaps] +\usemodule[scite] + +\setuptyping[option=TEX] +\setuptype[option=TEX] + +\dontcomplain + +\usebodyfont [modern] +\usebodyfont[pagella] +\usebodyfont [dejavu] + +\setuppapersize[S6] + +\definecolor[maincolor][r=.6] +\definecolor[maintrans][r=.6,t=.5,a=1] +\definecolor[moretrans][g=.6,t=.5,a=1] + +\setupwhitespace[line] + +\setuplayout + [width=middle, + height=middle, + margin=0cm, + header=0cm, + footer=0cm, + topspace=1cm, + bottomspace=1cm, + backspace=1cm] + +\setupbackgrounds + [page] + [background=color, + backgroundcolor=darkgray] + +\setupbackgrounds + [text][text] + [background=color, + backgroundoffset=5mm, + backgroundcolor=middlegray] + +\definefont + [LargeFont] + [SansBold*default,boldened-20 @ 40pt] + +\definefont + [SmallFont] + [SansBold*default,boldened-20 @ 20pt] + +\definefont + [HeadFont] + [SansBold*default,boldened-30 @ 30pt] + +\setupbodyfont + [modernlatin,12pt] + +\setuphead + [title] + [style=\HeadFont, + color=maincolor, + align=middle] + +\starttext + +\startstandardmakeup[footerstate=start] + \LargeFont \maincolor \setupalign[middle] + \vfil + \dontleavehmode\scale[width=.6\textwidth]{\setstrut\strut MetaPost} + \vfil + \dontleavehmode\scale[width=.6\textwidth]{\setstrut\strut Extensions} + \vfil + \dontleavehmode\scale[width=.7\textwidth]{\setstrut\strut A few examples} + \vfil + \vfil + \vfil + \SmallFont \darkgray Bacho\TeX\ 2018\enspace\emdash\enspace Hans Hagen +\stopstandardmakeup + +\starttitle[title=History] + +\startitemize + \startitem + We started using \METAPOST\ some two decades ago and immediately went + the \PDF\ route. + \stopitem + \startitem + We used special colors plus specials to communicate extensions, for instance + \CMYK\ colors and shades. + \stopitem + \startitem + This mechanism was stepwise improved and extended. Some mechanisms, like texts, + needed an extra pass. + \stopitem + \startitem + When we moved to \LUATEX\ and \MPLIB\ we started using pre- and postscripts to + carry information with the paths. + \stopitem + \startitem + Currently we use a bit of \LUA\ from within \MPLIB\ to communicate during the + \METAPOST\ run with \CONTEXT. This permits cleaner interfaces. + \stopitem +\stopitemize + +\stoptitle + +%%%% COLORS %%%% + +\starttitle[title=Colors] + +\startbuffer +\startMPcode + draw image ( + draw image ( + fill unitcircle rotated 45 withcolor "red" ; + fill unitcircle rotated 165 withcolor "green" ; + fill unitcircle rotated 285 withcolor "blue" ; + ) shifted (-1.25,0) ; + draw image ( + fill unitcircle rotated 45 withcolor "cyan" ; + fill unitcircle rotated 165 withcolor "magenta" ; + fill unitcircle rotated 285 withcolor "yellow" ; + ) shifted ( 1.25,0) ; + ) xsized TextWidth; +\stopMPcode +\stopbuffer + +\typebuffer \page \getbuffer \page + +\startbuffer +\startMPcode + draw image ( + draw image ( + fill unitcircle rotated 45 withcolor "red" ; + fill unitcircle rotated 165 withcolor "green" ; + fill unitcircle rotated 285 withcolor "blue" ; + fill unitcircle rotated 45 scaled 2/4 withcolor (1,0,0) ; + fill unitcircle rotated 165 scaled 2/4 withcolor (0,1,0) ; + fill unitcircle rotated 285 scaled 2/4 withcolor (0,0,1) ; + ) shifted (-1.25,0) ; + draw image ( + fill unitcircle rotated 45 withcolor "cyan" ; + fill unitcircle rotated 165 withcolor "magenta" ; + fill unitcircle rotated 285 withcolor "yellow" ; + fill unitcircle rotated 45 scaled 2/4 withcolor (1,0,0,0) ; + fill unitcircle rotated 165 scaled 2/4 withcolor (0,1,0,0) ; + fill unitcircle rotated 285 scaled 2/4 withcolor (0,0,1,0) ; + ) shifted ( 1.25,0) ; + ) xsized TextWidth; +\stopMPcode +\stopbuffer + +\typebuffer[colors] \typebuffer \page \getbuffer \page + +\startbuffer[colors] +\definecolor [whatever] [c=1,a=1,t=0.5] + +\definecolor [blue] [c=1,m=.38,y=0,k=.64] % pantone pms 2965 uncoated m +\definecolor [yellow] [c=0,m=.28,y=1,k=.06] % pantone pms 124 uncoated m + +\definespotcolor [blue-100] [blue] [p=1] +\definespotcolor [yellow-100] [yellow] [p=1] + +\definemultitonecolor [somecolor] [blue=.12,yellow=.28] [c=.1,m=.1,y=.3,k=.1] +\stopbuffer + +\typebuffer[colors] \page + +\startbuffer +% \enabletrackers[metapost.lua] +\startMPcode +vardef C(expr r,dx) = fullcircle scaled r shifted (dx,0) enddef ; + +draw image ( + fill C(3cm,1cm) withcolor (0,1,1,0) ; + fill C(3cm,2cm) withcolor transparent(1,0.5,(1,1,0,0)) ; + fill C(3cm,3cm) withcolor transparent(1,0.5,"blue-100") ; + fill C(3cm,4cm) withcolor 0.75*transparent(1,0.5,"green") ; + fill C(3cm,5cm) withcolor spotcolor("blue-100",(.3,.4,.5)) ; + fill C(3cm,6cm) withcolor 0.75 * spotcolor("blue-100",(.3,.4,.5)) ; + fill C(3cm,7cm) withcolor namedcolor("blue-100") ; + fill C(3cm,8cm) withcolor "blue-100" ; + fill C(3cm,9cm) withcolor (0,1,1,0) withtransparency (1,0.5); +) xsized TextWidth; +\stopMPcode +\stopbuffer + +\typebuffer {\getbuffer[colors] \getbuffer }\page + +\stoptitle + +%%%% SHADES %%%% + +\starttitle[title=Shades] + +\startbuffer +\startMPcode + draw image ( + fill fullcircle scaled 10cm + withshademethod "circular" + withshadevector (5cm,1cm) + withshadecenter (.1,.5) + withshadedomain (.2,.6) + withshadefactor 1.2 + withshadecolors ("red","green") + ; + fill fullcircle scaled 10cm shifted (12cm,0) + withshademethod "circular" + withshadevector (4cm,2cm) + withshadecenter (.2,.8) + withshadedomain (.2,.8) + withshadefactor 1.5 + withshadecolors ("blue","green") + ; + ) xsized TextWidth ; +\stopMPcode +\stopbuffer + +\typebuffer \page \getbuffer \page + +\starttabulate[|l|p|] +\BC domain \NC The range over which the colors run, with a minimum of 0 and maximum of 1. \NC \NR +\BC color \NC A color to start from and one to end with, we default from black to white. \NC \NR +\BC type \NC The shading can be linear or circular. \NC \NR +\BC center \NC The origin of the shade vector. \NC \NR +\BC radius \NC The radius vector of a circular shade. \NC \NR +\BC vector \NC Where we start and end the shading. \NC \NR +\stoptabulate + +For a {\bf linear} shade the centers are the lower left and upper right corners, +for a circular shade it's the center of the path. For a {\bf circular} shade the +radius runs from zero to the maximum distance from the center as determined by +the boundingbox. + +The vector is used as follows: the first coordinate (xpart) determines the point +on the path where we start, the second coordinate (ypart) the point on the +path where we end. + +\startbuffer +\startreusableMPgraphic{bullet} + fill fullcircle + scaled (.75EmWidth) + withshademethod "circular" + withcolor "red" shadedinto "blue" ; +\stopreusableMPgraphic + +\definesymbol[1][\hbox{\lower.125ex\hbox{\reuseMPgraphic{bullet}}}] +\stopbuffer + +\typebuffer \getbuffer + +\startitemize[packed] + \startitem This is item one! \stopitem + \startitem This is item two! \stopitem +\stopitemize + +\page + +A triangle has three points. Using 1 and 2 as second vector value gives the same +results as do values in the range 0 upto 1 and 2 upto 3 (0 again). + +\startbuffer +\startMPcode +fill fulltriangle xyscaled (TextWidth,1cm) + withshademethod "linear" + withshadevector (0.25,0.75) + withshadecolors (darkred,darkgreen) +; + +draw fulltriangle xyscaled (TextWidth,1cm) + shownshadevector (0.25,0.75) + withpen pencircle scaled 2 + withcolor white ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +The shadevector relates to (the x coordinates of) points on the path. A variant is +to use the boundingbox: + +\startbuffer +\startMPcode +for i=1 upto 3 : + fill fulltriangle xyscaled (TextWidth,1cm) shifted (0,-i*15mm) + withshademethod "linear" + withshadedirection (1,1-i/4) + withshadecolors (darkgreen,darkblue) + ; +endfor ; +for i=1 upto 3 : + draw fulltriangle xyscaled (TextWidth,1cm) shifted (0,-i*15mm) + shownshadevector (1,1-i/4) + withpen pencircle scaled 2 + withcolor white ; +endfor ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\stopbuffer + + +To make life convenient we provide a few constants that indicate directions: + +\starttyping +\startMPcode +pair shadedup ; shadedup := (0.5,2.5) ; +pair shadeddown ; shadeddown := (2.5,0.5) ; +pair shadedleft ; shadedleft := (1.5,3.5) ; +pair shadedright ; shadedright := (3.5,1.5) ; +\stopMPcode +\stoptyping + +\startbuffer +\startMPcode +for d = shadedup, shadeddown, shadedleft, shadedright : + fill fullsquare xyscaled (TextWidth,1cm) + withshademethod "linear" + withshadedirection d + withshadecolors (darkgreen,darkblue) + ; + currentpicture := currentpicture shifted (0,15mm) ; +endfor ; + +currentpicture := currentpicture shifted (0,-60mm) ; + +for d = shadedup, shadeddown, shadedleft, shadedright : + draw fullsquare xyscaled (TextWidth,1cm) + shownshadedirection d + withpen pencircle scaled 2 + withcolor .5white ; + currentpicture := currentpicture shifted (0,15mm) ; +endfor ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +In case of a circular shade another method comes in handy. Here the values relate +to the center of path i.e.\ they shift the center by the given fraction of the +width and height of the boundingbox devided by 2. + +\startbuffer +\startMPcode +fill fullcircle xyscaled (TextWidth,4cm) + withshademethod "circular" + withshadecenter (.7,.9) + withshadecolors (darkblue,darkyellow) +; + +draw fullcircle xyscaled (TextWidth,4cm) + shownshadecenter (.7,.9) + withpen pencircle scaled 2 + withcolor .5white ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +You can set a center directly i.e.\ unrelated to the center of the path as +follows: + +\startbuffer +\startMPcode +fill fullcircle xyscaled (TextWidth,4cm) + withshademethod "circular" + withshadeorigin (-30mm,-15mm) + withshadecolors (darkblue,darkyellow) +; + +draw fullcircle xyscaled (TextWidth,4cm) + shownshadeorigin (-30mm,-15mm) + withpen pencircle scaled 2 + withcolor .5white ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +In a similar way you can set an explicit radius: + +\startbuffer +\startMPcode +fill fullcircle xyscaled (TextWidth,3cm) + withshademethod "circular" + withshaderadius (10mm,50mm) + withshadecolors (darkblue,darkyellow) +; + +currentpicture := currentpicture shifted (0,40mm) ; + +fill fullcircle xyscaled (TextWidth,3cm) + withshademethod "circular" + withshaderadius (50mm,10mm) + withshadecolors (darkgreen,darkred) +; + +currentpicture := currentpicture shifted (0,40mm) ; + +fill fullcircle xyscaled (TextWidth,3cm) + withshademethod "circular" + withshaderadius (20mm,30mm) + withshadecolors (darkmagenta,darkcyan) +; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +This one is made for Mojca: + +\startbuffer +\startMPcode +fill fullsquare xyscaled (TextWidth,1cm) + withshademethod "linear" + withshadevector (0,1) + withshadestep ( + withshadefraction .3 + withshadecolors (red,green) + ) + withshadestep ( + withshadefraction .5 + withshadecolors (green,blue) + ) + withshadestep ( + withshadefraction .7 + withshadecolors (blue,red) + ) + withshadestep ( + withshadefraction 1 + withshadecolors (red,yellow) + ) +; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +Shades work well with colors and transparencies. This involves quite some +resource managament in the backend but it's hidden by the interface. + +\startbuffer +\startMPcode +draw image ( + fill fullsquare scaled 5cm + withshademethod "linear" + withshadefactor 1 + withshadedomain (0,1) + withshadevector (0.5,2.75) + withshadecolors (red,green) ; + + fill fullcircle scaled 6cm + withshademethod "circular" + withshadefactor 1 + withshadedomain (0,1) + withshadecenter (.25,.25) + withshadecolors (green,blue) ; + + fill fulltriangle scaled 7cm + withshademethod "circular" + withshadefactor 1 + withshadedomain (0,1) + withshadecenter (.25,.25) + withshadecolors (blue,yellow) ; +) ysized TextHeight ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\startbuffer +\startMPcode +draw image ( + fill fullsquare scaled 5cm + withshademethod "linear" + withshadevector (0.5,2.75) + withshadecolors (red,green) + withtransparency (1,.5) ; + + fill fullcircle scaled 6cm + withshademethod "circular" + withshadecenter (.25,.25) + withshadecolors (green,blue) + withtransparency (1,.5) ; + + fill fulltriangle scaled 7cm + withshademethod "circular" + withshadecenter (.25,.25) + withcolor blue shadedinto yellow + withtransparency (1,.5) ; +) ysized TextHeight ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\startbuffer +\startMPcode +defineshade myshade + withshademethod "circular" + withshadefactor 1 + withshadedomain (0,1) + withshadecolors (black,white) + withtransparency (1,.5) +; + +draw image ( + for i=1 upto 5 : + fill fullcircle randomized 1 xyscaled(5cm,3cm) + shaded myshade ; + endfor ; + + draw image ( + for i=1 upto 5 : + fill fullcircle randomized 1 + shaded myshade + withshadecolors (yellow,blue) ; + endfor ; + ) xyscaled(5cm,3cm) shifted (5cm,0) ; +) xysized (TextWidth, TextHeight) ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + + +\startbuffer +\startMPcode +fill fullsquare xyscaled (15mm, 15mm) + withshademethod "linear" + withshadedirection shadedright + withshadecolors (red,(1,1,1)) ; + +fill fullsquare xyscaled (10mm, 10mm) + withshademethod "circular" + withshadecolors (green,blue) ; + +currentpicture := currentpicture xysized (.4TextWidth,30mm) ; +currentpicture := currentpicture shifted (5mm,5mm) ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\startbuffer +\startMPcode +fill fullsquare xyscaled (15mm, 15mm) + withshademethod "linear" + withshadetransform "no" + withshadedirection shadedright + withshadecolors (red,(1,1,1)) ; + +fill fullsquare xyscaled (10mm, 10mm) + withshademethod "circular" + withshadetransform "no" + withshadecolors (green,blue) ; + +currentpicture := currentpicture xysized (.4TextWidth,30mm) ; +currentpicture := currentpicture shifted (5mm,5mm) ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\stoptitle + +\starttitle[title=Bitmaps] + +\startbuffer +\startMPcode + draw + bitmapimage(2,2,"334455 667788 99aabb ccddee") + scaled 3cm + rotated 15 ; + draw + bitmapimage(2,2,"33 55 77 99") + scaled 2cm + rotated 30 ; + draw + bitmapimage(2,2,"0000ff00 ff00ff00 00ff0000 ffff0000") + scaled 1cm + rotated 45 ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\starttyping +\startMPcode +draw bitmapimage ( + 128, 128, + " + dbdefadbdffbdbdffbdbdffbdbdffbdbdff..... + dcdffbdcdffbdcdffbdcdffbdcdffbdcdff..... + dcdffbdcdffbdcdffbdcdffbdcdffbdcdff..... + ...... + " +) rotated 15 ysized 4cm ; +\stopMPcode +\stoptyping + +\startMPcode +draw bitmapimage ( + 128, 128, + " + dbdefadbdffbdbdffbdbdffbdbdffbdbdffbdbdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffb + dcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffb + dcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffb + dcdffbdcdffbdcdffbdcdffbdce0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fb + dde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fb + dde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fb + dde0fbdde0fbdde0fbdde0fbdee0fbdee0fbdee0fbdee1fbdee1fbdee1fbdee1fbdee1fbdee1fbdee1fbdee1fbdee1fb + dee1fbdee1fbdee1fbdee1fbdee1fbdee1fbdee1fbdee1fbdee1fbdee1fbdee1fbdee1fbdee1fbdee1fbdee1fbdee1fb + daddfadaddfadaddfadaddfadaddfadaddfadadefadadefadadefadadefadadefadadefadadefadadefadadefadadefa + dbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefa + dbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefa + dbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdffbdbdffbdbdffbdbdffbdbdffbdbdffbdcdffb + dcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffb + dcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffb + dcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdce0fbdde0fbdde0fbdde0fb + dde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fbdde0fb + d9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9ddfad9ddfad9ddfad9ddfad9ddfa + d9ddfad9ddfad9ddfad9ddfad9ddfad9ddfad9ddfad9ddfad9ddfad9ddfadaddfadaddfadaddfadaddfadaddfadaddfa + daddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfa + daddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadadefadadefa + dadefadadefadadefadadefadadefadadefadadefadadefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefa + dbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefa + dbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefadbdefa + dbdefadbdffbdbdffbdbdffbdbdffbdbdffbdbdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffbdcdffb + d8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dcfa + d8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfa + d8dcfad8dcfad8dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfa + d9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfa + d9dcfad9dcfad9dcfad9ddfad9ddfad9ddfad9ddfad9ddfad9ddfad9ddfad9ddfad9ddfad9ddfad9ddfad9ddfad9ddfa + d9ddfad9ddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfa + daddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfadaddfa + daddfadaddfadaddfadaddfadaddfadaddfadadefadadefadadefadadefadadefadadefadadefadadefadadefadadefa + d7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafa + d7dafad7dafad7dafad7dafad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfa + d7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad8dbfad8dbfad8dbfa + d8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfa + d8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfa + d8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad8dcfad9dcfad9dcfad9dcfad9dcfad9dcfa + d9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfa + d9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9dcfad9ddfad9ddfad9ddfad9ddfad9ddfa + d5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fa + d6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6dafad6dafad6dafad6dafad6dafad6dafad6dafa + d6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafa + d6dafad6dafad6dafad6dafad6dafad6dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafa + d7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dbfad7dbfad7dbfad7dbfa + d7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfad7dbfa + d7dbfad7dbfad7dbfad7dbfad7dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfa + d8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dbfad8dcfa + d4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fa + d4d8fad5d8fad5d8fad5d8fad5d8fad5d8fad5d8fad5d8fad5d8fad5d8fad5d8fad5d8fad5d8fad5d8fad5d9fad5d9fa + d5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fa + d5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad6d9fa + d6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fa + d6d9fad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafa + d6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad6dafad7dafad7dafa + d7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafad7dafa + d3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fa + d3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad4d7fad4d7fad4d7fad4d7fad4d7fad4d7fa + d4d7fad4d7fad4d7fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fa + d4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fa + d4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad5d8fad5d8fad5d8fad5d8fad5d8fad5d8fad5d8fa + d5d8fad5d8fad5d8fad5d8fad5d8fad5d8fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fa + d5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fa + d5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad5d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fad6d9fa + d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9 + d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9 + d2d6f9d2d6f9d2d6f9d2d6f9d3d6f9d3d6f9d3d6f9d3d6f9d3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fa + d3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fa + d3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fa + d3d7fad3d7fad4d7fad4d7fad4d7fad4d7fad4d7fad4d7fad4d7fad4d7fad4d7fad4d8fad4d8fad4d8fad4d8fad4d8fa + d4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fa + d4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fad4d8fa + d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9 + d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9 + d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d6f9d2d6f9d2d6f9d2d6f9 + d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9 + d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9 + d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d3d6f9d3d6f9d3d6f9d3d6f9 + d3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fa + d3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fad3d7fa + cfd4f9cfd4f9cfd4f9cfd4f9cfd4f9cfd4f9cfd4f9cfd4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9 + d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9 + d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9 + d0d4f9d0d5f9d0d5f9d0d5f9d0d5f9d0d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9 + d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9 + d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9 + d1d5f9d1d5f9d1d5f9d1d5f9d1d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9 + d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9d2d6f9 + ced2f9ced2f9ced2f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9 + ced3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9 + cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9 + cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd4f9cfd4f9cfd4f9cfd4f9cfd4f9cfd4f9cfd4f9cfd4f9cfd4f9cfd4f9 + d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9 + d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9 + d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d5f9d0d5f9d0d5f9d0d5f9d0d5f9d1d5f9d1d5f9 + d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9d1d5f9 + cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9 + cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9ced2f9ced2f9ced2f9ced2f9ced2f9 + ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9 + ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced3f9ced3f9ced3f9ced3f9ced3f9 + ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9 + cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9 + cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd3f9cfd4f9cfd4f9 + cfd4f9cfd4f9cfd4f9cfd4f9cfd4f9cfd4f9cfd4f9cfd4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9d0d4f9 + ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd1f9ccd1f9ccd1f9 + ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9 + ccd1f9ccd1f9ccd1f9ccd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9 + cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9 + cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9 + cdd2f9cdd2f9cdd2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9 + ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9ced2f9 + ced2f9ced2f9ced2f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9ced3f9 + cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9 + cbcff9cbcff9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9 + cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9ccd0f9ccd0f9ccd0f9 + ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9 + ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9 + ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9ccd1f9cdd1f9cdd1f9cdd1f9cdd1f9 + cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9 + cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd1f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9cdd2f9 + c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8cacef8cacef8cacef8cacef8cacef8cacef8cacef8cacef8 + cacef8cacef8cacef8cacef8cacef8cacef8cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9 + cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9 + cacff9cacff9cacff9cacff9cacff9cacff9cacff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9 + cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9 + cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9 + cbd0f9cbd0f9cbd0f9cbd0f9cbd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9 + ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd0f9ccd1f9ccd1f9ccd1f9 + c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8 + c8cdf8c8cdf8c9cdf8c9cdf8c9cdf8c9cdf8c9cdf8c9cdf8c9cdf8c9cdf8c9cdf8c9cef8c9cef8c9cef8c9cef8c9cef8 + c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8 + c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8 + cacef8cacef8cacef8cacef8cacef8cacef8cacef8cacef8cacef8cacef8cacef8cacef8cacef8cacef8cacff9cacff9 + cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9 + cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cacff9cbcff9 + cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9cbcff9 + c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8 + c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c8ccf8c8ccf8c8ccf8c8ccf8c8ccf8 + c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8 + c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8 + c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c9cdf8c9cdf8c9cdf8c9cdf8c9cdf8c9cdf8 + c9cdf8c9cdf8c9cdf8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8 + c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8 + c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8c9cef8cacef8cacef8cacef8cacef8cacef8cacef8cacef8cacef8 + c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8 + c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8 + c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8 + c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8 + c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8 + c7ccf8c7ccf8c7ccf8c8ccf8c8ccf8c8ccf8c8ccf8c8ccf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8 + c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8 + c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8c8cdf8 + c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8 + c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8 + c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5cbf8c5cbf8c5cbf8c5cbf8c6cbf8c6cbf8 + c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8020204020204020204020204 + 020204020204c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8 + c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c7ccf8c7ccf8c7ccf8 + c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8 + c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8c7ccf8 + c3c9f8c3c9f8c3c9f8c3c9f8c3c9f8c3c9f8c3c9f8c3c9f8c3c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8 + c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8 + c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4caf8 + c4caf8c4caf8c4caf8c4caf8c4caf8c4caf8c4caf8c5caf8c5caf8020204020204020204020204020204020204020204 + 020204020204020204020204020204c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8 + c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8 + c5caf8c5caf8c5cbf8c5cbf8c5cbf8c5cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8 + c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8c6cbf8 + c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8 + c2c8f8c2c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8 + c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8 + c3c8f8c3c8f8c3c8f8c3c8f8c3c9f8c3c9f8c3c9f8020204020204020204020204020204020204020204020204020204 + 020204020204020204020204020204020204020204020204c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8 + c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8 + c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4caf8c4caf8c4caf8c4caf8c4caf8c4caf8c4caf8c4caf8c5caf8 + c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8c5caf8 + c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8 + c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c2c7f8c2c7f8c2c7f8c2c7f8 + c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8 + c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8020204020204020204020204020204020204020204020204020204020204 + 0202040202040202040202040a0604020204020204020204020204c2c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8 + c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8 + c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c8f8c3c9f8c3c9f8c3c9f8c3c9f8 + c3c9f8c3c9f8c3c9f8c3c9f8c3c9f8c3c9f8c3c9f8c3c9f8c3c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8c4c9f8 + c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7 + c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7 + c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7 + c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7020204020204020204020204020204020204020204020204020204020204020204 + 0202040202040202040c0c0c343434343434141413020204020204020204c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8 + c1c7f8c1c7f8c1c7f8c1c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8 + c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8c2c7f8 + c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8c2c8f8 + bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc5f7 + bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7 + bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7c0c5f7c0c5f7 + c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7020204020204020204020204020204020204020204020204020204020204020204 + 0202040202040202041414135c5c5c7c7c7c505050242424020204020204020204c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7 + c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c1c6f7c1c6f7c1c6f7 + c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7 + c1c6f7c1c6f7c1c6f7c1c6f7c1c6f7c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8c1c7f8 + bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bec3f7bec3f7bec3f7bec3f7bec3f7bec3f7bec3f7 + bec3f7bec3f7bec3f7bec3f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7 + bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7 + bec4f7bec4f7bec4f7bec4f7020204020204020204020204020204020204020204020204020204020204020204020204 + 0202040202040202041c1c1b6464646c6c6b505050343434141413020204020204bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7 + bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7 + bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7bfc5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7 + c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c5f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7c0c6f7 + bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7 + bcc2f7bcc2f7bcc2f7bdc2f7bdc2f7bdc2f7bdc2f7bdc2f7bdc2f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7 + bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7 + bdc3f7bdc3f7bdc3f7bdc3f7020204020204020204020204020204020204020204020204020204020204020204020204 + 0202040202040202041c1c1b5050504444442c2c2c1c1c1b0c0c0c020204020204020204bec4f7bec4f7bec4f7bec4f7 + bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7 + bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7bec4f7 + bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc4f7bfc5f7 + bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7 + bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bcc1f7bcc1f7bcc2f7bcc2f7 + bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7 + bcc2f7bcc2f7bcc2f7020204020204020204020204020204020204020204020204020204020204020204020204020204 + 020204020204020204141413242424141413020204020204020204020204020204020204bdc2f7bdc2f7bdc2f7bdc2f7 + bdc2f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7 + bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7 + bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bdc3f7bec3f7bec3f7bec3f7bec3f7bec3f7bec3f7bec3f7 + bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7 + bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7 + bac0f7bac0f7bac1f7bac1f7bac1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7 + bbc1f7bbc1f7bbc1f7020204020204020204020204020204020204020204020204020204020204020204020204020204 + 020204020204020204020204020204020204020204020204020204020204020204020204020204bbc1f7bbc1f7bbc1f7 + bbc1f7bbc1f7bbc1f7bbc1f7bcc1f7bcc1f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7 + bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7 + bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7bcc2f7 + b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7 + b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7 + b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9c0f7b9c0f7b9c0f7b9c0f7b9c0f7b9c0f7b9c0f7b9c0f7bac0f7 + bac0f7bac0f7bac0f7020204020204020204020204020204020204020204020204020204020204020204020204020204 + 020204020204020204020204020204020204020204020204020204020204020204020204020204bac0f7bac0f7bac0f7 + bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac1f7bac1f7bac1f7bbc1f7bbc1f7bbc1f7 + bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7 + bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7bbc1f7 + b7bef6b7bef6b7bef6b7bef6b7bef6b7bef6b7bef6b7bef6b7bef6b7bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6 + b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6 + b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bff7b8bff7b8bff7b8bff7 + b8bff7b8bff7b8bff7020204020204020204020204020204020204020204020204020204020204020204020204020204 + 020204020204020204020204020204020204020204020204020204020204020204020204020204020204b9bff7b9bff7 + b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9c0f7 + b9c0f7b9c0f7b9c0f7b9c0f7b9c0f7b9c0f7b9c0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7 + bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7bac0f7 + b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6 + b6bdf6b6bdf6b6bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6 + b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6 + b7bdf6b7bef6b7bef60202040202040202040c0c0c0a06042424240c0c0c020204020204020204020204020204020204 + 0202040202040202040202040c0c0c505050141413020204020204020204020204020204020204020204b8bef6b8bef6 + b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6 + b8bef6b8bef6b8bef6b8bef6b8bff7b8bff7b8bff7b8bff7b8bff7b8bff7b8bff7b8bff7b8bff7b8bff7b8bff7b8bff7 + b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7b9bff7 + b5bbf6b5bbf6b5bbf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6 + b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b6bcf6b6bcf6b6bcf6b6bcf6 + b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6 + b6bcf6b6bcf6b6bcf60202040202040202040202042424240202040c0c0c343434020204020204020204020204020204 + 0a06045c5c5c7c7c7c9494945c5c5c0202041c1c1b141413020204020204020204020204020204020204b7bdf6b7bdf6 + b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6 + b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bdf6b7bef6b7bef6b7bef6b7bef6b7bef6b7bef6b7bef6 + b7bef6b7bef6b7bef6b7bef6b7bef6b7bef6b7bef6b7bef6b7bef6b7bef6b8bef6b8bef6b8bef6b8bef6b8bef6b8bef6 + b4baf6b4baf6b4baf6b4baf6b4baf6b4baf6b4baf6b4baf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6 + b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6 + b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6 + b5bbf6b5bbf6b5bbf60202040202041c1c1b949494bebdbcbebdbc141413020204020204020204020204020204020204 + 747474949494a4a4a4acacacc4c4c49c9c9c0a06040a0604020204020204020204020204020204020204b5bcf6b5bcf6 + b5bcf6b5bcf6b5bcf6b5bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6 + b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bcf6b6bdf6b6bdf6 + b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6b6bdf6 + b2b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3baf6b3baf6b3baf6b3baf6 + b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6 + b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b4baf6 + b4baf6b4baf6b4baf60202040202047c7c7cacacacccccccbebdbc8d8d8c0c0c0c020204020204020204020204565654 + b5b4b3dddddce4e4e4e4e4e4d4d4d4a4a4a4505050020204020204020204020204020204020204020204b4bbf6b4bbf6 + b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b5bbf6b5bbf6 + b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6b5bbf6 + b5bbf6b5bbf6b5bbf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6b5bcf6 + b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b2b8f6b2b8f6b2b8f6b2b8f6b2b8f6b2b8f6 + b2b8f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6 + b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6 + b2b9f6b2b9f6b2b9f6020204020204e4e4e4f4f4f4c4c4c4f4f4f4fefefc9c9c9c020204020204020204020204cccccc + fefefcfefefc3434340c0c0cfefefcfefefce4e4e4020204020204020204020204020204020204020204b3baf6b3baf6 + b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6 + b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b3baf6b4baf6b4baf6b4baf6b4baf6b4baf6b4baf6b4baf6b4baf6b4baf6 + b4baf6b4baf6b4baf6b4baf6b4baf6b4baf6b4baf6b4baf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6b4bbf6 + b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6 + b0b7f6b0b7f6b0b7f6b0b7f6b1b7f6b1b7f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6 + b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6 + b1b8f6b1b8f6b1b8f6020204020204f4f4f40202043c3c3c3c3c3cfefefcf4f4f40c0c0c0202040a0604020204d4d4d4 + fefefc141413020204747474242424f4f4f4fefefc1c1c1b020204020204020204020204020204020204b2b9f6b2b9f6 + b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6 + b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6b2b9f6 + b2b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3b9f6b3baf6b3baf6b3baf6b3baf6 + afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5 + afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb7f6afb7f6b0b7f6b0b7f6b0b7f6 + b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6 + b0b7f6b0b7f6b0b7f6020204020204f4f4f4020204020204747474e4e4e4f4f4f41414131c1c1b5050500a0604d4d4d4 + f4f4f4020204020204020204747474acacacfefefc747474020204020204020204020204020204020204b1b8f6b1b8f6 + b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6 + b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6 + b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b1b8f6b2b8f6b2b8f6b2b8f6b2b8f6b2b8f6b2b8f6 + aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5 + aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5 + aeb6f5aeb6f5aeb6f5aeb6f5aeb6f5aeb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5 + afb6f5afb6f5afb6f5020204020204f4f4f40a06040202044444446c6c6bececec0202040202040202040c0c0cacacac + e4e4e4020204020204020204141413646464fefefca4a4a4020204020204020204020204020204020204afb6f5afb6f5 + afb6f5afb6f5afb6f5afb7f6afb7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6 + b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6 + b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6b0b7f6 + acb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5 + adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5 + adb4f5adb4f5adb4f5adb4f5adb4f5adb5f5adb5f5adb5f5adb5f5adb5f5adb5f5adb5f5adb5f5adb5f5adb5f5adb5f5 + aeb5f5aeb5f5aeb5f5020204020204f4f4f4020204020204020204646464aa7e0ae1b40ae5ac09ecb40be1b40a96720b + f4f4f4020204020204020204020204ccccccfefefc7c7c7c020204020204020204020204020204020204aeb5f5aeb5f5 + aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb6f5aeb6f5aeb6f5aeb6f5aeb6f5aeb6f5afb6f5afb6f5 + afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5 + afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5afb6f5 + abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5acb3f5acb3f5acb3f5acb3f5acb3f5 + acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5 + acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb4f5acb4f5acb4f5acb4f5acb4f5acb4f5acb4f5 + acb4f5acb4f5acb4f5020204020204ecececacacac020204291c04b67e0ad19b09ebbc0bebbc0bd7ac098e6a07c39a0e + ebbc0b5e4a04020204020204242424fefefcfefefc0c0c0c020204020204020204020204020204020204adb4f5adb4f5 + adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb5f5adb5f5adb5f5 + adb5f5adb5f5adb5f5adb5f5adb5f5adb5f5adb5f5adb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5 + aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5aeb5f5 + aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5 + aab2f5aab2f5aab2f5aab2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5 + abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb3f5abb3f5 + abb3f5abb3f5abb3f5020204020204c4c4c4fefefca2895cb98309e5ac09f2b60cebbc0be2bc0cebc40cebc40cf5cd31 + f3cd0cebc40cebbc0bc2930becececfefefcd4d4d4020204020204020204020204020204020204020204020204acb3f5 + acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5acb3f5 + acb3f5acb4f5acb4f5acb4f5acb4f5acb4f5acb4f5acb4f5acb4f5acb4f5acb4f5acb4f5acb4f5acb4f5acb4f5acb4f5 + acb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5adb4f5 + a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5 + a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5aab1f5aab1f5aab1f5 + aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5 + aab1f5aab1f5aab1f50202040202040c0c0ca2895cb98309d19b09ecb40becb40bebbc0bebc40cedcc0ef1d42af2da2c + f6da4af6da14f3cd0cf3c40bebbc0bdaa309946c09020204020204020204020204020204020204020204020204abb2f5 + abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5 + abb2f5abb2f5abb2f5abb2f5abb2f5abb2f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5 + abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5abb3f5acb3f5acb3f5acb3f5acb3f5acb3f5 + a8aff5a8aff5a8aff5a8aff5a8aff5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5 + a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5 + a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5 + a9b0f5a9b0f5a9b0f5020204020204a5720ab67e0acf9407dfa509ebbc0bebbc0bebc40cedcc0ef1d311f2da2cf6da4a + f6da14f6da14f6da14f6da14f6d50df1d311f5cd31a4770a020204020204020204020204020204020204020204a9b1f5 + a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5 + aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab1f5aab2f5aab2f5aab2f5aab2f5aab2f5 + aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5aab2f5 + a6aef4a6aef4a7aef4a7aef4a7aef4a7aef4a7aef4a7aef4a7aef4a7aef4a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5 + a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5 + a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5 + a8aff5a8aff5a8aff50202040c0c0cb37907c08507d89c08e5ac09ecb40bebbc0be2bc0cedcc0ef1d42af6da4af6d50d + f6da14f6d50df6d50df6d50dac8c04a4770ae5ac097c5b0a020204020204020204020204020204020204020204a8b0f5 + a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a9b0f5 + a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5a9b0f5 + a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5a9b1f5 + a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a6adf4a6adf4a6adf4a6adf4a6aef4 + a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4 + a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4 + a6aef4a6aef4a6aef40202040c0c0cb37907cf9407daa309ecb40bf2b60cebc40cebc40cedcc0ef6da4af6d50df6d50d + f6d50df6d50df1d3118e6a07cf9407daa309d89c085c4309020204020204020204020204020204020204020204a7aff5 + a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5 + a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5a8aff5a8aff5a8aff5a8aff5a8aff5a8aff5a8aff5a8aff5 + a8aff5a8aff5a8aff5a8aff5a8aff5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5a8b0f5 + a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4 + a4acf4a4acf4a4acf4a4adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4 + a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4 + a5adf4a5adf4a5adf4020204020204603e05ac8409e5ac09ecb40bf5bd0cebc40cf1d311f1d311f6da14f6da14f1d311 + ebc40c885f07ce8e08d89c08daa309d89c08ce8e080c0c0c0202040202046464640a0604020204020204020204020204 + a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4 + a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4a6aef4 + a6aef4a6aef4a7aef4a7aef4a7aef4a7aef4a7aef4a7aef4a7aef4a7aef4a7aff5a7aff5a7aff5a7aff5a7aff5a7aff5 + a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4 + a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3acf4a3acf4a3acf4a3acf4a3acf4a3acf4a4acf4a4acf4 + a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4 + a4acf4a4acf4a4acf40202040202041c1c1b7c5b0a7c5b0ae1b40af3c40bebcd28ebcd28f1d311f1d311e2bc0c7e620c + b37907cf9407d89c08d89c08cf9418b57e2fa69b871414130202040202042c2c2c8383845c5c5c0c0c0c020204020204 + a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4 + a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4 + a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a5adf4a6adf4a6adf4a6adf4a6adf4a6aef4 + a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4 + a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2abf4a2abf4a2abf4 + a2abf4a2abf4a2abf4a2abf4a2abf4a2abf4a2abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4 + a3abf4a3abf4a3abf4020204020204141413bebdbc906007885f078a66048e6a078a66048a6604ad780ab98309c98e07 + cf9407ce8e08cf9407b98309bebdbcbebdbcbebdbca4a4a40202040202040202047c7c7c7c7c7c4a4a4c020204020204 + a3acf4a3acf4a3acf4a3acf4a3acf4a3acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4 + a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4 + a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4a4acf4 + a0a9f4a0a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4 + a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4 + a1a9f4a1a9f4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4 + a1aaf4a2aaf4a2aaf40202040202043c3c3cbebdbcbebdbc976105a4770ad9b30de1b40ad89c08d7960dd7960dce8e08 + c78a08b98309b58c35bebdbcc4c4c4ccccccc4c4c4bebdbc0202040202040202046464648383845c5c5c0a0604020204 + 020204a2aaf4a2aaf4a2aaf4a2aaf4a2abf4a2abf4a2abf4a2abf4a2abf4a2abf4a2abf4a2abf4a2abf4a2abf4a3abf4 + a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4 + a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4a3abf4 + 9fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f4a0a8f4a0a8f4a0a8f4a0a8f4 + a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4 + a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4 + a0a9f4a0a9f4a0a9f4020204020204343434bebdbcbebdbcbebdbc885f079d6a07b67e0ab67e0ab37907a46d05a46d05 + ba8330bebdbcbfb5a4bebdbcd4d4d4ecececfefefcececec0c0c0c020204020204020204141413020204020204020204 + 020204020204a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4 + a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a1aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4 + a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4a2aaf4 + 9ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f4 + 9ea7f49ea7f49ea7f49ea7f49ea7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f4 + 9fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa8f49fa8f49fa8f49fa8f4 + 9fa8f49fa8f40202040202040202042c2c2cd4d4d4c4c4c4bebdbcbebdbca2895c906007906007976105a3713fb8a378 + bebdbcbebdbcbebdbcd4d4d4fefefcfefefcfefefcfefefcacacac020204020204020204020204020204020204020204 + 0202040c0c0ca0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a8f4a0a9f4 + a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4a0a9f4 + a0a9f4a0a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4a1a9f4 + 9da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f3 + 9da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39ea6f39ea6f3 + 9ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f3 + 9ea6f39ea7f4020204020204020204fefefcecececccccccbebdbcbebdbcbebdbcbebdbcbebdbcbebdbcbebdbcbebdbc + bebdbcc4c4c4d4d4d4f4f4f4fefefcfefefcfefefcfefefcfefefc0c0c0c020204020204020204020204020204020204 + 0202040202041414139fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f49fa7f4 + 9fa7f49fa7f49fa7f49fa7f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f4 + 9fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f49fa8f4a0a8f4a0a8f4a0a8f4a0a8f4 + 9ca4f39ca4f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f3 + 9ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f3 + 9ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39da5f39da5f39da5f39da5f39da5f39da5f39da5f39da5f3 + 9da5f31414130a06040202040a0604fefefcfefefcecececbebdbcbebdbcbebdbcbebdbcbebdbcbebdbcbebdbcbebdbc + d4d4d4e4e4e4f4f4f4fefefcfefefcfefefcfefefcfefefcfefefcbebdbc020204020204020204020204020204020204 + 0202040202040a06049da6f39da6f39da6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f3 + 9ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea6f39ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f4 + 9ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f49ea7f4 + 9aa3f39aa3f39aa3f39ba3f39ba3f39ba3f39ba3f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f3 + 9ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f3 + 9ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f3 + 0202040c0c0c020204020204ecececfefefcfefefcfefefce4e4e4bebdbcbebdbcbebdbcbebdbcbebdbccccccce4e4e4 + fefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc2c2c2c020204020204020204020204020204 + 0202040202040202040202049ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f3 + 9da5f39da5f39da5f39da5f39da5f39da5f39da5f39da5f39da5f39da5f39da5f39da5f39da5f39da6f39da6f39da6f3 + 9da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f39da6f3 + 99a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f39aa3f39aa3f39aa3f39aa3f3 + 9aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f3 + 9aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f3 + 020204020204020204838384fefefcfefefcfefefcfefefcf4f4f4d4d4d4c4c4c4bebdbcbebdbcdddddcf4f4f4fefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4020204020204020204020204020204 + 0202040202040202040202040202049ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f3 + 9ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ca4f39ca4f39ca4f39ca4f39ca4f39ca4f39ca4f3 + 9ca4f39ca4f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f39ca5f3 + 98a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f3 + 98a1f398a2f398a2f398a2f398a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f3 + 99a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f3020204 + 020204020204020204fefefcfefefcfefefcfefefcfefefcfefefcfefefcececece4e4e4f4f4f4fefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc020204020204020204020204020204 + 0202040202040202040202040202049aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f3 + 9aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f39aa3f3 + 9aa3f39aa3f39aa3f39ba3f39ba3f39ba3f39ba3f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f39ba4f3 + 97a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f3 + 97a0f397a0f397a0f397a0f397a0f397a0f397a1f397a1f397a1f397a1f397a1f397a1f397a1f397a1f397a1f398a1f3 + 98a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f3020204020204 + 020204020204e4e4e4fefefcfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc0a0604020204020204020204020204 + 02020402020402020402020402020402020499a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f3 + 99a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f3 + 99a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f399a2f39aa3f39aa3f39aa3f39aa3f3 + 969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3 + 969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff396a0f396a0f396a0f396a0f396a0f3 + 96a0f396a0f396a0f396a0f396a0f396a0f396a0f396a0f397a0f397a0f397a0f397a0f397a0f3020204020204020204 + 020204242424e4e4e4fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc2c2c2c020204020204020204020204 + 02020402020402020402020402020402020402020498a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f3 + 98a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f3 + 98a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f398a1f3 + 949ef2949ef2949ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2 + 959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ff3 + 959ff3959ff3959ff3959ff3959ff3959ff3959ff3959ff3959ff3959ff3959ff3959ff3020204020204020204020204 + 020204838384dddddcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4f4f4f4ecececbebdbc0a0604020204020204020204 + 02020402020402020402020402020402020402020402020496a0f396a0f396a0f396a0f396a0f396a0f396a0f396a0f3 + 97a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f3 + 97a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f397a0f3 + 939df2939df2939df2939df2939df2939df2939df2939df2939df2939df2939df2939df2949df2949df2949df2949df2 + 949df2949df2949df2949df2949df2949df2949df2949df2949df2949df2949df2949df2949df2949df2949df2949df2 + 949df2949df2949df2949df2949ef2949ef2949ef2949ef2949ef2949ef2949ef2949ef2020204020204020204020204 + 0202049c9c9cc4c4c4f4f4f4f4f4f4fefefcfefefcfefefcf4f4f4f4f4f4ececece4e4e4ecececf4f4f4fefefcfefefc + fefefcf4f4f4fefefcfefefcf4f4f4f4f4f4ececececececdddddcd4d4d4dddddcececec0c0c0c020204020204020204 + 020204020204020204020204020204020204020204020204020204959ff3959ff3959ff3959ff3959ff3959ff3959ff3 + 959ff3959ff3959ff3959ff3959ff3959ff3959ff3959ff3959ff3959ff3969ff3969ff3969ff3969ff3969ff3969ff3 + 969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3969ff3 + 929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2 + 929cf2929cf2929cf2929cf2929cf2929cf2939cf2939cf2939cf2939cf2939cf2939cf2939cf2939cf2939cf2939cf2 + 939cf2939cf2939cf2939cf2939cf2939cf2939cf2939cf2939cf2939df2939df2020204020204020204020204020204 + 1414139c9c9ca4a4a4bebdbcd4d4d4ecececf4f4f4fefefcfefefcfefefcdddddce4e4e4f4f4f4fefefcfefefcfefefc + fefefcfefefcf4f4f4e4e4e4ccccccc4c4c4bebdbcbebdbcbebdbcc4c4c4c4c4c4d4d4d4bebdbc020204020204020204 + 020204020204020204020204020204020204020204020204020204020204949df2949df2949ef2949ef2949ef2949ef2 + 949ef2949ef2949ef2949ef2949ef2949ef2949ef2949ef2949ef2949ef2949ef2949ef2949ef2949ef2949ef2949ef2 + 949ef2949ef2949ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2959ef2 + 919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2 + 919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2929bf2 + 929bf2929bf2929bf2929bf2929bf2929bf2929bf2929bf2929bf2929bf2020204020204020204020204020204020204 + 1c1c1ba4a4a4bebdbce4e4e4f4f4f4fefefcfefefcfefefcfefefcfefefce4e4e4f4f4f4fefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcf4f4f4ecececdddddcd4d4d4c4c4c4bebdbcbebdbcc4c4c4e4e4e4646464020204020204 + 565654242424020204020204020204020204020204020204020204020204939cf2939cf2939cf2939cf2939cf2939cf2 + 939cf2939df2939df2939df2939df2939df2939df2939df2939df2939df2939df2939df2939df2939df2939df2939df2 + 939df2939df2939df2939df2939df2939df2939df2939df2939df2939df2939df2939df2949df2949df2949df2949df2 + 909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2 + 909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2 + 909af2909af2909af2909af2909af2909af2909af2909af2909af2919af2020204020204020204020204020204020204 + 141413ccccccecececf4f4f4fefefcfefefcfefefcfefefcfefefcfefefcecececfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcecececdddddcccccccc4c4c4ccccccf4f4f40a0604020204 + 0202040c0c0c444444020204020204020204020204020204020204020204929bf2929bf2929bf2929bf2929bf2929bf2 + 929bf2929bf2929bf2929bf2929bf2929bf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2 + 929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2929cf2 + 8e98f28e98f28e98f28e98f28f98f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f2 + 8f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f2 + 8f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f20202040202040202043c3c3c0202040c0c0c + bebdbcecececfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4d4d4d4bebdbcdddddcf4f4f4020204 + 020204020204020204444444020204020204020204020204020204020204020204909af2909af2909af2909af2909af2 + 909af2919af2919af2919af2919af2919af2919af2919af2919af2919af2919af2919bf2919bf2919bf2919bf2919bf2 + 919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2919bf2 + 8d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d98f28d98f28d98f28d98f28e98f28e98f28e98f2 + 8e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f2 + 8e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f20202040202045c5c5c020204020204505050 + f4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4f4f4f4f4f4f4 + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcdddddcc4c4c4e4e4e4020204 + 0202040202040a06040202043c3c3c0202040202040202040202040202040202048f99f28f99f28f99f28f99f28f99f2 + 8f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f29099f29099f29099f29099f29099f29099f2 + 909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2909af2 + 8c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c97f28c97f2 + 8c97f28c97f28c97f28c97f28c97f28c97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f2 + 8d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f20202040202041414130c0c0c0202040c0c0cf4f4f4 + fefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcdddddcc4c4c4acacac + 0202040c0c0c2424241c1c1b1414131414130202040202040202040202040202040202048e98f28e98f28e98f28e98f2 + 8e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f28e98f2 + 8e98f28e98f28e98f28e98f28f98f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f28f99f2 + 8b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f1 + 8b95f18b95f18b95f18b96f18b96f18b96f18b96f18b96f18b96f18b96f18b96f18b96f18b96f18b96f18b96f18b96f1 + 8c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f1020204020204646464020204020204747474fefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcf4f4f4fefefcfefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefcf4f4f4f4f4f4 + 0202040c0c0c3434343c3c3c0c0c0c4a4a4c0202040202040202040202040202040202048d97f28d97f28d97f28d97f2 + 8d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f2 + 8d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d97f28d98f28d98f28d98f28d98f28e98f28e98f28e98f2 + 8a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f1 + 8a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a95f18a95f18a95f18a95f18a95f18a95f18a95f18a95f1 + 8a95f18a95f18a95f18a95f18a95f18a95f18a95f18a95f1020204020204242424020204020204020204fefefcfefefc + fefefcfefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + 1c1c1b1414133434341c1c1b0c0c0c0202043c3c3c0202040202040202040202040202040202048c96f18c96f18c96f1 + 8c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f1 + 8c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c96f18c97f28c97f2 + 8893f18893f18893f18893f18993f18993f18993f18993f18993f18993f18993f18993f18993f18993f18993f18993f1 + 8993f18993f18993f18993f18993f18993f18993f18993f18993f18993f18993f18993f18993f18994f18994f18994f1 + 8994f18994f18994f18994f18994f18994f18994f18994f10202040202045656540202040202041c1c1bfefefcf4f4f4 + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefce4e4e4fefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcf4f4f4f4f4f4fefefcfefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefc + a4a4a40202040a06040202040202040202045656540202040202040202040202040202040202048a95f18a95f18a95f1 + 8a95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f1 + 8b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f18b95f1 + 8792f18792f18792f18792f18792f18792f18792f18792f18792f18792f18792f18792f18792f18892f18892f18892f1 + 8892f18892f18892f18892f18892f18892f18892f18892f18892f18892f18892f18892f18892f18892f18892f18892f1 + 8892f18892f18893f18893f18893f18893f18893f18893f10202040202040a0604020204020204d4d4d4fefefcfefefc + fefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcf4f4f4ecececfefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcf4f4f4f4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefc0202040202040202040202040202041c1c1b0202040202040202040202040202040202048994f18994f18994f1 + 8994f18994f18994f18994f18994f18994f18994f18994f18994f18994f18994f18a94f18a94f18a94f18a94f18a94f1 + 8a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f18a94f1 + 8691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f1 + 8691f18691f18691f18691f18691f18691f18691f18791f18791f18791f18791f18791f18791f18791f18791f18791f1 + 8791f18791f18791f18791f18791f18791f18791f1020204020204141413020204020204141413fefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4f4f4f4fefefcfefefcfefefcfefefcfefefcfefefc + f4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefc0202040202040202040202040202040202040a06040202040202040202040202040202048893f18893f18893f1 + 8893f18893f18893f18893f18893f18893f18893f18893f18893f18893f18893f18893f18893f18893f18893f18893f1 + 8893f18893f18893f18893f18993f18993f18993f18993f18993f18993f18993f18993f18993f18993f18993f18993f1 + 8590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f1 + 8590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f1 + 8690f18690f18690f18690f18690f18690f18690f10202040202045c5c5c020204020204bebdbcfefefcf4f4f4fefefc + fefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcecececf4f4f4fefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefc0202040202040202040202040202040202040202040202040202040202040202040202040202048791f18792f1 + 8792f18792f18792f18792f18792f18792f18792f18792f18792f18792f18792f18792f18792f18792f18792f18792f1 + 8792f18792f18792f18792f18792f18792f18792f18792f18792f18792f18792f18792f18792f18892f18892f18892f1 + 848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1 + 848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1 + 848ff1848ff1848ff1848ff1848ff1848ff1020204020204020204242424020204020204fefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcecececf4f4f4fefefcfefefcfefefcfefefcfefefcf4f4f4 + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefc0202040202040202040202040202040202040202040202040202040202040202040202040202048690f18690f1 + 8690f18690f18690f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f1 + 8691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f18691f1 + 828df0828df0828ef0828ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0 + 838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0 + 838ef0838ef0838ef0838ef0838ef0838ef00202040202040c0c0c0c0c0c0202040c0c0cfefefcfefefcfefefcfefefc + fefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcecececf4f4f4fefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefc + fefefc0c0c0c020204020204020204020204141413020204020204020204020204020204020204020204848ff1848ff1 + 848ff1848ff1858ff1858ff1858ff1858ff1858ff1858ff18590f18590f18590f18590f18590f18590f18590f18590f1 + 8590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f18590f1 + 818cf0818cf0818cf0818cf0818cf0818cf0818cf0818df0818df0818df0818df0818df0818df0818df0828df0828df0 + 828df0828df0828df0828df0828df0828df0828df0828df0828df0828df0828df0828df0828df0828df0828df0828df0 + 828df0828df0828df0828df0828df00202040202040202040c0c0c0c0c0c020204444444fefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcf4f4f4fefefcf4f4f4dddddcf4f4f4fefefcfefefcfefefcfefefcf4f4f4fefefc + fefefcfefefcfefefcf4f4f4fefefcfefefcf4f4f4fefefcf4f4f4f4f4f4f4f4f4fefefcfefefcfefefcf4f4f4fefefc + f4f4f41c1c1b0202040202040202040202043c3c3c020204020204020204020204020204020204020204838ef0838ef0 + 838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0848ef0848ef0848ff1848ff1848ff1 + 848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1848ff1 + 808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808cf0808cf0808cf0808cf0 + 808cf0808cf0808cf0808cf0808cf0808cf0808cf0818cf0818cf0818cf0818cf0818cf0818cf0818cf0818cf0818cf0 + 818cf0818cf0818cf0818cf002022f0202040202040202041c1c1b141413020204949494fefefcfefefcfefefcfefefc + f4f4f4fefefcfefefcfefefcfefefcfefefcf4f4f4fefefcdddddcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefc + f4f4f4f4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefc3434340202040202040202040202045c5c5c020204020204020204020204020204020204020204828df0828df0 + 828df0828df0828df0828df0828df0828df0828df0828df0828df0828df0828df0828df0828df0828df0828df0828df0 + 828df0828df0828ef0828ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0838ef0 + 7f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af0 + 7f8bf07f8bf07f8bf07f8bf07f8bf07f8bf07f8bf07f8bf07f8bf07f8bf07f8bf07f8bf07f8bf07f8bf07f8bf07f8bf0 + 7f8bf0808bf0808bf0808bf00202040202040202040202042c2c2c2c2c2c020204b5b4b3fefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcdddddcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcf4f4f4f4f4f4fefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefc + fefefc3c3c3c020204020204020204020204141413020204020204020204020204020204020204020204818cf0818cf0 + 818cf0818cf0818cf0818cf0818cf0818cf0818cf0818cf0818cf0818cf0818cf0818cf0818cf0818cf0818cf0818cf0 + 818cf0818cf0818cf0818cf0818cf0818cf0818cf0818df0818df0818df0818df0818df0818df0818df0828df0828df0 + 7e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f0 + 7e89f07e89f07e89f07e89f07e89f07e8af07e8af07e8af07e8af07e8af07e8af07e8af07e8af07e8af07e8af07e8af0 + 7e8af07e8af07e8af07e8af00202040202040202041414134a4a4c747474020204d4d4d4fefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcdddddcf4f4f4fefefcfefefcfefefcfefefcfefefcf4f4f4 + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefc4a4a4c0202040202040202040c0c0c020204020204020204020204020204020204020204020204808bf0808bf0 + 808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0 + 808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808bf0808cf0808cf0808cf0808cf0 + 7c88f07c88f07c88f07c88f07c88f07d88f07d88f07d88f07d88f07d88f07d88f07d88f07d88f07d88f07d88f07d88f0 + 7d88f07d88f07d88f07d88f07d88f07d88f07d88f07d88f07d88f07d88f07d89f07d89f07d89f07d89f07d89f07d89f0 + 7d89f07d89f07d89f07d89f00202040202040202040202040c0c0c5c5c5c020204dddddcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcdddddcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefc + fefefcf4f4f4f4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4fefefcfefefc + fefefc2424240202040202040202043c3c3c0202040202040202040202040202040202040202040202047e8af07e8af0 + 7e8af07e8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af0 + 7f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af07f8af0 + 7b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07c87f07c87f0 + 7c87f07c87f07c87f07c87f07c87f07c87f07c87f07c87f07c87f07c87f07c87f07c87f07c87f07c87f07c87f07c88f0 + 7c88f07c88f07c88f07c88f00202040202040202040202040202040c0c0c020204ccccccfefefcfefefcfefefcfefefc + f4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcdddddcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefc0c0c0c0202040202043c3c3c2424241414132424240c0c0c0202040202040202040202040202047d89f07d89f0 + 7d89f07d89f07d89f07d89f07d89f07d89f07d89f07d89f07d89f07d89f07d89f07d89f07e89f07e89f07e89f07e89f0 + 7e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f07e89f0 + 7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef + 7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7b86ef7b86ef7b86ef7b86ef7b86ef7b86ef7b86ef7b86ef + 7b86ef7b86ef7b86ef7b86ef020204020204885f077453070c0c0c020204444444acacacfefefcfefefcfefefcf4f4f4 + fefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcdddddcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefc0202040c0c0c1414130202040202040202040202040c0c0c3c3c3c4444440202040202040202047c88f07c88f0 + 7c88f07c88f07c88f07c88f07c88f07c88f07c88f07c88f07c88f07c88f07c88f07c88f07c88f07c88f07c88f07c88f0 + 7c88f07c88f07c88f07c88f07c88f07d88f07d88f07d88f07d88f07d88f07d88f07d88f07d88f07d88f07d88f07d88f0 + 7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef + 7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef + 7985ef7a85ef7a85ef7a85ef744e22d89c08f5bd0cf5bd0cf2b60c291c040202044a4a4cfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcf4f4f4fefefcdddddcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefc + ececec0202041414130202040202040202040202040202040202040202043c3c3c6c6c6b0a06040202047b87f07b87f0 + 7b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f0 + 7b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07b87f07c87f07c87f0 + 7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef + 7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef + 7884ef7884ef7884ef7884efcf9418f2b60cf5bd0cf5bd0cf5bd0cf5bd0c392a0c0202040c0c0cdddddcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefce4e4e4f4f4f4fefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcdfa509f3c40bf3cd0c + f5bd0cc39a0e0202040202040202040202040202040202040202040202043434342424241414137a85ef7a85ef7a85ef + 7a85ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef + 7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef7a86ef + 7683ef7683ef7683ef7683ef7683ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef + 7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef + 7783ef7783ef7783efc08507d89c08ecb40bf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c1414130202041c1c1bf4f4f4fefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefce4e4e4fefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefcf4f4f4fefefcfefefcfefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcf4f4f4e5ac09f3c40bf6d50d + f6d50d946c090202040202040202040202040202040202040202040a06041c1c1b0a0604a4770af1d3117884ef7884ef + 7884ef7884ef7884ef7984ef7984ef7984ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef + 7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef7985ef + 7581ef7581ef7581ef7581ef7582ef7582ef7582ef7582ef7582ef7582ef7582ef7582ef7582ef7582ef7582ef7682ef + 7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef + 7682ef7682ef7682efcf9407dfa509f2b60cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cd7ac09020204020204141413dddddc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcdddddcecececf4f4f4fefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcdfa509f5bd0cf3c40b + ebc40c5c4309020204020204020204020204020204020204020204020204020204140d04ebc40cf1d311d7ac097783ef + 7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7784ef7784ef7884ef7884ef7884ef7884ef + 7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef7884ef + 7480ef7480ef7480ef7480ef7480ef7480ef7480ef7480ef7480ef7481ef7481ef7481ef7481ef7481ef7481ef7481ef + 7481ef7481ef7481ef7481ef7481ef7481ef7481ef7481ef7581ef7581ef7581ef7581ef7581ef7581efb67e0ab67e0a + b57e2fb67e0ac78a08d89c08e5ac09f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf3c40bc2930b0202040202040c0c0c + acacacfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4dfa509f2b60cf5bd0c + e1b40a784e04020204020204020204020204020204020204020204020204020204d19b09ebc40cf3c40bebbc0b7682ef + 7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7682ef7683ef + 7683ef7683ef7683ef7683ef7683ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef7783ef + 737fef737fef737fef737fef737fef737fef737fef737fef737fef737fef737fef737fef737fef737fef7380ef7380ef + 7380ef7380ef7380ef7380ef7380ef7380ef7380ef7380ef7380ef7380ef7380efb98309cf9418daa309dfa509daa309 + d89c08dfa509e5ac09ebb316f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf3cd0cb98309020204020204 + 020204444444fefefcf4f4f4f4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefcccccccc4c4c4d89c08f2b60cecb40b + dfa509b67e0a1f16040202040202040202040202040202040202040a0604c08507e1b40aebbc0bf2b60cf2b60c7581ef + 7581ef7581ef7581ef7581ef7581ef7581ef7581ef7581ef7581ef7581ef7581ef7581ef7581ef7581ef7581ef7581ef + 7581ef7581ef7581ef7581ef7582ef7582ef7582ef7582ef7582ef7582ef7582ef7582ef7582ef7582ef7582ef7682ef + 727eee727eee727eee727eee727eee727eee727eee727eee727eee727eee727eee727eee727eee727eee727eee727eee + 727eee727eee727eee727fef727fef727fef727fef727fef727fef727fef727fefcf9418dfa509ebb316ecb40bebb316 + e5ac09ecb40bf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cebbc0bf3c40be2bc0c020204020204 + 0202040202041c1c1becececfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcf4f4f4fefefcfefefcf4f4f4fefefcfefefcfefefcfefefce4e4e4c4c4c4c4c4c4d89c08ecb40be5ac09 + d89c08b98309ab7205020204020204020204020204020204291c04a4770ad89c08e1b40aebbc0bf2b60cf2b60c7480ef + 7480ef7480ef7480ef7480ef7480ef7480ef7480ef7480ef7480ef7480ef7480ef7480ef7480ef7480ef7480ef7480ef + 7480ef7480ef7480ef7480ef7480ef7480ef7480ef7480ef7480ef7481ef7481ef7481ef7481ef7481ef7481ef7481ef + 707dee707dee707dee707dee707dee707dee717dee717dee717dee717dee717dee717dee717dee717dee717dee717dee + 717dee717dee717dee717dee717dee717dee717dee717dee717eee717eee717eeed7960de5ac09ecb40bf5bd0cf2b60c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cedcc0e946c09020204 + 0202040202040202040c0c0cc4c4c4fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcd4d4d4c4c4c4c4c4c4d7960de5ac09e5ac09 + daa309c98e07b98309ad780aa5720aa46d05a46d05ad780ab67e0ac2930be5ac09f2b60cf2b60cf5bd0cf5bd0c727fef + 727fef727fef727fef737fef737fef737fef737fef737fef737fef737fef737fef737fef737fef737fef737fef737fef + 737fef737fef737fef737fef737fef737fef737fef737fef737fef737fef737fef737fef737fef737fef7380ef7380ef + 6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee707cee + 707cee707cee707cee707cee707cee707cee707cee707cee707cee707cee707ceed19b09e5ac09f2b60cf5bd0cf5bd0c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf2b60cf3c40be2bc0c312305 + 020204020204020204020204020204a4a4a4fefefcf4f4f4fefefcfefefcfefefcfefefcfefefcf4f4f4f4f4f4fefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcd4d4d4c4c4c4c4c4c4cf9418e5ac09ecb40b + dfa509d89c08cf9407c78a08c78a08c78a08c78a08cf9407d89c08e5ac09f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cebb316 + 717eee717eee717eee717eee717eee717eee717eee717eee717eee717eee717eee717eee727eee727eee727eee727eee + 727eee727eee727eee727eee727eee727eee727eee727eee727eee727eee727eee727eee727eee727eee727eee727eee + 6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee + 6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6f7bee6f7beecf9418e5ac09f2b60cf5bd0cf5bd0c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cedcc0ed19b09 + 0202040202040202040202040202040a0604ecececfefefcfefefcf4f4f4fefefcfefefcf4f4f4fefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcdddddcc4c4c4bebdbcc18b0ad89c08ecb40b + ecb40bdfa509d89c08d89c08cf9407cf9407d19b09daa309e5ac09ecb40bf5bd0cf5bd0cf5bd0cf5bd0cebbc0bf2b60c + d7ac09707dee707dee707dee707dee707dee707dee707dee707dee707dee707dee707dee707dee707dee707dee707dee + 707dee707dee707dee707dee707dee707dee717dee717dee717dee717dee717dee717dee717dee717dee717dee717dee + 6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee + 6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aeec98e07dfa509ebb316f2b60cf5bd0c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cebc40c + a5720a020204020204020204020204020204838384fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4ecececc4c4c4c4c4c4b98309d89c08ecb40b + ecb40becb40be5ac09dfa509daa309dfa509e5ac09e5ac09ecb40bf2b60cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cebb316 + f2b60cd19b096f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee + 6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee6f7cee707cee + 6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee + 6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79eec98e07d89c08ebb316f5bd0cf5bd0c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cedcc0e + d7ac09020204020204020204020204020204505050fefefcfefefcf4f4f4f4f4f4fefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcf4eedec4c4c4242424c08507d89c08ecb40b + f2b60cf2b60cecb40be5ac09e5ac09e5ac09e5ac09ecb40bf2b60cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c + ebb316ebbc0bc39a0e6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee + 6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee6e7bee + 6a78ee6a78ee6a78ee6a78ee6a78ee6a78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee + 6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78eec08507d89c08e5ac09f5bd0cf5bd0c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cebbc0b + f3cd0cc98e07020204020204020204020204f4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcf4eede141413402c07b98309d89c08ecb40b + f2b60cf5bd0cf5bd0cf5bd0cf2b60cf2b60cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c + f5bd0cf5bd0cf5bd0cf5bd0cdaa3096d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee + 6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee6d7aee + 6976ed6976ed6977ee6977ee6977ee6977ee6977ee6977ee6977ee6977ee6977ee6977ee6977ee6977ee6977ee6977ee + 6a77ee6a77ee6a77ee6a77ee6a77ee6a77ee6a77ee6a77ee6a77ee6a77ee6a77eec78a08d89c08ebb316f5bd0cf5bd0c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c + ebbc0bebc40c4930060c0c0c444444fefefcf4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcf4f4f4f4f4f4fefefcfefefc3c3c3c0202044c3604b98309d89c08ecb40b + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cdaa3096b78ee6b78ee6b79ee6b79ee6b79ee6b79ee6b79ee6c79ee6c79ee6c79ee + 6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee6c79ee + 6875ed6875ed6875ed6875ed6875ed6875ed6876ed6876ed6876ed6876ed6876ed6876ed6876ed6876ed6876ed6876ed + 6876ed6876ed6876ed6876ed6876ed6876ed6876ed6876ed6876ed6976ed6976edc78a08d89c08ebb316f5bd0cf5bd0c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c + ebbc0bedcc0ed19b09a4a4a4fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc + f4f4f4fefefcf4f4f4f4f4f4fefefcfefefcfefefcfefefcf4f4f41c1c1b020204020204654307b98309d89c08ecb40b + f2b60cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cdaa3096a77ee6a77ee6a77ee6a77ee6a77ee6a77ee6a77ee6a78ee6a78ee6a78ee + 6a78ee6a78ee6a78ee6a78ee6a78ee6a78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee6b78ee + 6774ed6774ed6774ed6774ed6774ed6774ed6774ed6774ed6774ed6774ed6774ed6775ed6775ed6775ed6775ed6775ed + 6775ed6775ed6775ed6775ed6775ed6775ed6775ed6775ed6775ed6775ed6775edc78a08d89c08f2b60cf2b60cf5bd0c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c + f2b60cebc40ce2bc0cb98309fefefcfefefcfefefcf4f4f4f4f4f4fefefcfefefcfefefcfefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefc020204020204020204020204784e04b98309dfa509ecb40b + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c + f5bd0cf5bd0cf5bd0cf2b60cebb316cf94186976ed6976ed6976ed6976ed6976ed6976ed6976ed6976ed6976ed6976ed + 6976ed6976ed6977ee6977ee6977ee6977ee6977ee6977ee6977ee6977ee6977ee6977ee6977ee6977ee6977ee6977ee + 6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed + 6674ed6674ed6674ed6674ed6674ed6674ed6674ed6674ed6674ed6674ed6674edc78a08dfa509f2b60cf5bd0cf5bd0c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c + f5bd0cebbc0be2bc0cdfa509906007fefefcfefefcfefefcfefefcfefefcfefefcfefefcfefefcf4f4f4fefefcfefefc + fefefcfefefcfefefcfefefcfefefcfefefc1c1c1b020204020204020204020204020204745307b67e0adaa309f2b60c + f2b60cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c + f5bd0cf5bd0cebb316d89c08ce8e086875ed6875ed6875ed6875ed6875ed6875ed6875ed6875ed6875ed6875ed6875ed + 6875ed6875ed6875ed6875ed6875ed6875ed6876ed6876ed6876ed6876ed6876ed6876ed6876ed6876ed6876ed6876ed + 6472ed6472ed6472ed6472ed6472ed6472ed6472ed6572ed6572ed6572ed6572ed6572ed6572ed6572ed6572ed6572ed + 6572ed6572ed6572ed6572ed6572ed6573ed6573ed6573ed6573ed6573edb37907cf9407f2b60cf5bd0cf5bd0cf5bd0c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c + f5bd0cf2b60ce1b40adfa509aa7e0a444444f4f4f4f4f4f4fefefcfefefcfefefcf4f4f4fefefcfefefcfefefcfefefc + fefefcfefefcfefefcfefefc3c3c3c020204020204020204020204020204020204140d04744904b67e0adaa309f2b60c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf2b60c + f2b60ce5ac09d89c08b57e2f6774ed6774ed6774ed6774ed6774ed6774ed6774ed6774ed6774ed6774ed6774ed6774ed + 6774ed6774ed6774ed6774ed6774ed6774ed6774ed6774ed6774ed6774ed6774ed6775ed6775ed6775ed6775ed6775ed + 6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed + 6471ed6471ed6471ed6471ed6471ed6471ed6471ed6471ed6471ed6471edc08507dfa509ecb40bf5bd0cf2b60cf5bd0c + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf2b60c + f5bd0cf2b60ce5ac09daa309b983095b3a050202048d8d8cf4f4f4f4f4f4fefefcfefefcfefefcfefefcf4f4f4fefefc + f4f4f4c4c4c42424240202040202040202040202040202040202040202040202041f1604784e04b98309daa309f2b60c + f2b60cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf2b60cebb316dfa509 + d89c08ce8e086573ed6573ed6573ed6573ed6573ed6573ed6573ed6573ed6573ed6573ed6573ed6673ed6673ed6673ed + 6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed6673ed + 6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed + 6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270edc78a08d7960de5ac09f2b60cf2b60cf2b60c + f5bd0cf5bd0cf5bd0cf2b60cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c + f5bd0cf5bd0ce5ac09d89c08b98309784e04140d04020204020204020204020204020204020204020204020204020204 + 020204020204020204020204020204020204020204020204020204020204020204402c07875805b98309d89c08ecb40b + f5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cebb316ebb316ebb316dfa509c78a08976105 + 6472ed6472ed6472ed6472ed6472ed6472ed6472ed6472ed6472ed6472ed6472ed6472ed6472ed6472ed6472ed6472ed + 6472ed6472ed6472ed6472ed6472ed6472ed6472ed6572ed6572ed6572ed6572ed6572ed6572ed6572ed6572ed6572ed + 616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed + 616fed616fed616fed616fed616fed616fed616fed616fed616fed616fedb67e0ac98e07cf9407d89c08dfa509e5ac09 + e5ac09e5ac09e5ac09f2b60cf2b60cf5bd0cf5bd0cf2b60cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c + f5bd0cf2b60ce5ac09d89c08b37907784e04493006020204020204020204020204020204020204020204020204020204 + 020204020204020204020204020204020204020204020204020204020204020204493006875805b67e0ad19b09ecb40b + f2b60cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0cf2b60ce5ac09e5ac09daa309ce8e08b67e0a6371ed6371ed + 6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed + 6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed6371ed + 606eec606eec606eec606eec606eec606eec606eec606eec606eec606eec606eec606eec606eec606eec606eec606eec + 606eec606eec606eec606eec606eec606eec606eec606eec606eec606eecad780ab37907b67e0ab98309c18b0ace8e08 + cf9407d89c08d89c08dfa509dfa509e5ac09e5ac09ecb40bf5bd0cf2b60cf2b60cf5bd0cf5bd0cf5bd0cf5bd0cf5bd0c + f5bd0cf2b60cdaa309c78a08ab72057d5305533606020204020204020204020204020204020204020204020204020204 + 020204020204020204020204020204020204020204020204020204020204020204493006835204b37907c98e07dfa509 + f2b60cf5bd0cf2b60cf2b60cf5bd0cf5bd0cf2b60cebb316dfa509d7960dce8e08c78a087449046270ed6270ed6270ed + 6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed + 6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed6270ed + 5e6dec5e6dec5e6dec5e6dec5e6dec5e6dec5e6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec + 5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec9761059d6a07ab7205 + b37907b37907c08507c08507c78a08c78a08cf9407d89c08d89c08dfa509f2b60cf2b60cf2b60cf5bd0cf5bd0cf2b60c + f2b60ce5ac09cf9407b37907976105744904493006020204020204020204020204020204020204020204020204020204 + 020204020204020204020204020204020204020204020204020204020204020204402c07744904ab7205b98309d89c08 + e5ac09ecb40bf2b60cf2b60cf2b60cebb316e5ac09dfa509d7960dc08507b37907606eec606eec606eec606eec606eec + 606fed606fed606fed606fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed + 616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed616fed + 5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec + 5d6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec + 5e6cec8352048f5a049761059b66059b6605a46d05ad780ab37907b98309cf9407d7960dd89c08dfa509dfa509e5ac09 + d89c08c78a08b67e0a9b66058352045b3a05291c040202040202040202040202045e6dec5e6dec5e6dec5e6dec5f6dec + 5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec020204020204020204020204382605654307976105ab7205c18b0a + d89c08dfa509dfa509e5ac09dfa509d89c08cf9407b98309ab7205784e045f6dec5f6dec5f6dec5f6dec5f6dec5f6dec + 5f6dec5f6dec5f6dec5f6dec5f6dec5f6eec5f6eec5f6eec5f6eec5f6eec5f6eec5f6eec5f6eec5f6eec606eec606eec + 606eec606eec606eec606eec606eec606eec606eec606eec606eec606eec606eec606eec606eec606eec606eec606eec + 5c6aec5c6aec5c6aec5c6aec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec + 5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5d6bec5d6bec5d6bec5d6bec5d6bec5d6bec + 5d6bec5d6bec5d6bec5d6bec5d6bec6c4505784e04885f07906007976105ab7205b37907b67e0ab98309c98e07c78a08 + c08507ab72059761058352046c45054930060202045d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec + 5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5e6cec5e6cec402c075b3a058f5a049b6605b37907 + b98309c08507c78a08c98e07c08507b98309b379079d6a077449045e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec + 5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6cec5e6dec5e6dec5e6dec5e6dec5e6dec5e6dec + 5e6dec5e6dec5e6dec5e6dec5e6dec5e6dec5e6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec5f6dec + 5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec + 5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec + 5b6aec5b6aec5b6aec5c6aec5c6aec5c6aec5c6aec5c6aec472f1f603e058352048f5a049761059b66059d6a079b6605 + 9761058352047449046c45055b3a055c6aec5c6aec5c6aec5c6aec5c6aec5c6aec5c6aec5c6bec5c6bec5c6bec5c6bec + 5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec4930067449048f5a04a46d05 + ab7205b37907ad780ab37907ad780aa46d059761055336065d6bec5d6bec5d6bec5d6bec5d6bec5d6bec5d6bec5d6bec + 5d6bec5d6bec5d6bec5d6bec5d6bec5d6bec5d6bec5d6bec5d6bec5d6bec5d6bec5d6bec5d6bec5d6bec5d6bec5d6cec + 5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec5d6cec + 5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a69ec5a69ec5a69ec + 5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec + 5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5b3a05744904744904784e04784e04 + 744904744904603e054930063926205b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec + 5b69ec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec493006603e05875805 + 9761059b66059b66059b6605976105784e046543075b6aec5b6aec5b6aec5b6aec5c6aec5c6aec5c6aec5c6aec5c6aec + 5c6aec5c6aec5c6aec5c6aec5c6aec5c6aec5c6aec5c6aec5c6aec5c6aec5c6aec5c6aec5c6aec5c6aec5c6aec5c6aec + 5c6aec5c6aec5c6aec5c6aec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec5c6bec + 5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5967ec5967ec5967ec5967ec5967ec5967ec5967ec5967ec + 5967ec5967ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec + 5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec493006493006 + 493006402c075968ec5968ec5968ec5968ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec + 5a68ec5a68ec5a68ec5a68ec5a68ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec493006 + 493006533606533606493006402c075a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec5a69ec + 5a69ec5a69ec5a69ec5a69ec5a69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec + 5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b69ec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec5b6aec + 5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb + 5766eb5866eb5866eb5866eb5866eb5866eb5866eb5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec + 5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec + 5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec + 5967ec5967ec5967ec5967ec5967ec5967ec5967ec5967ec5967ec5967ec5968ec5968ec5968ec5968ec5968ec5968ec + 5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec + 5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5968ec5a68ec5a68ec + 5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a68ec5a69ec5a69ec5a69ec + 5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb + 5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5765eb5766eb5766eb5766eb5766eb + 5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb + 5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb + 5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5866eb5866eb5866eb5866eb5866eb5866eb5867ec + 5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec + 5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec + 5867ec5867ec5867ec5867ec5867ec5867ec5867ec5867ec5967ec5967ec5967ec5967ec5967ec5967ec5967ec5967ec + 5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb + 5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb + 5564eb5565eb5565eb5565eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb + 5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb + 5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb + 5665eb5665eb5665eb5765eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb + 5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb + 5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb5766eb + 5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb + 5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb + 5463eb5463eb5463eb5463eb5463eb5463eb5464eb5464eb5464eb5464eb5464eb5464eb5464eb5564eb5564eb5564eb + 5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb + 5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb + 5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5565eb5565eb5565eb5665eb5665eb5665eb5665eb + 5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb + 5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb5665eb + 5262eb5262eb5262eb5262eb5262eb5262eb5262eb5262eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb + 5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb + 5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5363eb5363eb5363eb5363eb5363eb + 5363eb5363eb5363eb5363eb5363eb5363eb5363eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb + 5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb + 5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5464eb5464eb + 5464eb5464eb5464eb5464eb5464eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb + 5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb5564eb + 5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb + 5161eb5161eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb + 5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5262eb + 5262eb5262eb5262eb5262eb5262eb5262eb5262eb5262eb5262eb5262eb5262eb5262eb5262eb5262eb5262eb5262eb + 5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb + 5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb + 5362eb5362eb5362eb5363eb5363eb5363eb5363eb5363eb5363eb5363eb5363eb5363eb5363eb5363eb5363eb5463eb + 5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb5463eb + 505feb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb + 5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5160eb5160eb5160eb5160eb5160eb + 5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb + 5160eb5160eb5160eb5160eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb + 5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5261eb5261eb5261eb5261eb5261eb5261eb + 5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb5261eb + 5261eb5261eb5261eb5261eb5261eb5261eb5261eb5262eb5262eb5262eb5262eb5262eb5262eb5262eb5262eb5262eb + 5262eb5262eb5262eb5262eb5262eb5262eb5262eb5262eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb5362eb + 4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb + 4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb + 4f5feb4f5feb4f5feb4f5feb505feb505feb505feb505feb505feb505feb505feb505feb505feb505feb505feb505feb + 505feb505feb505feb505feb505feb505feb505feb505feb505feb5060eb5060eb5060eb5060eb5060eb5060eb5060eb + 5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb + 5060eb5060eb5060eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb + 5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5160eb5161eb5161eb5161eb5161eb + 5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb5161eb + 4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5eea4e5eea4e5eea4e5eea4e5eea + 4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea + 4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4f5eea4f5eea + 4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5feb4f5feb + 4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb + 4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb505feb505feb505feb505feb + 505feb505feb505feb505feb505feb505feb505feb505feb505feb505feb505feb505feb505feb505feb505feb505feb + 505feb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb5060eb + 4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4d5cea4d5cea4d5cea4d5cea4d5cea4d5cea4d5cea + 4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea + 4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea + 4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea + 4e5dea4e5dea4e5dea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea + 4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea + 4e5eea4e5eea4e5eea4e5eea4e5eea4e5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea + 4f5eea4f5eea4f5eea4f5eea4f5eea4f5eea4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb4f5feb + 4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea + 4b5bea4b5bea4c5bea4c5bea4c5bea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea + 4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea + 4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea + 4c5cea4d5cea4d5cea4d5cea4d5cea4d5cea4d5cea4d5cea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea + 4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea + 4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4d5dea4e5dea + 4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5dea4e5eea4e5eea4e5eea4e5eea4e5eea + 4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea + 4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5bea4a5bea4b5bea4b5bea4b5bea4b5bea4b5bea + 4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea + 4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea + 4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4c5bea4c5bea4c5bea4c5cea4c5cea4c5cea + 4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea + 4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea + 4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4c5cea4d5cea4d5cea4d5cea4d5cea4d5cea4d5cea4d5cea + 4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea + 4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea495aea495aea + 495aea495aea495aea495aea495aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea + 4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea + 4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea + 4a5aea4a5bea4a5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea + 4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea + 4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea4b5bea + 4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea + 4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea + 4858ea4858ea4858ea4859ea4859ea4859ea4859ea4859ea4859ea4859ea4859ea4859ea4859ea4859ea4959ea4959ea + 4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea + 4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea + 4959ea4959ea4959ea4959ea4959ea4959ea495aea495aea495aea495aea495aea495aea495aea4a5aea4a5aea4a5aea + 4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea + 4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea4a5aea + 4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea + 4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea + 4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4758ea4758ea4758ea4758ea4758ea4758ea4758ea4758ea + 4758ea4758ea4758ea4758ea4758ea4758ea4758ea4758ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea + 4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea + 4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4859ea4859ea4859ea4859ea4859ea + 4859ea4859ea4859ea4859ea4859ea4859ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea + 4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea4959ea + 4556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e9 + 4556e94556e94556e94656e94656e94656e94656e94656e94656e94656e94656e94656e94656e94656e94656e94656e9 + 4656e94656e94656e94656e94656e94656e94656e94656e94656e94656e94656e94656e94656e94657ea4657ea4657ea + 4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea + 4657ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea + 4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea + 4758ea4758ea4758ea4758ea4758ea4758ea4758ea4758ea4758ea4758ea4758ea4758ea4758ea4758ea4758ea4758ea + 4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea4858ea + 4455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94455e9 + 4455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94555e94555e94555e94555e9 + 4555e94555e94555e94555e94555e94555e94555e94555e94555e94555e94555e94555e94555e94555e94555e94555e9 + 4555e94555e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e9 + 4556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94656e94656e94656e94656e94656e9 + 4656e94656e94656e94656e94656e94656e94656e94656e94656e94656e94656e94656e94656e94656e94656e94656e9 + 4656e94656e94656e94656e94656e94657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea + 4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4657ea4757ea4757ea4757ea4757ea4757ea4757ea4757ea + 4353e94353e94353e94354e94354e94354e94354e94354e94354e94354e94354e94354e94354e94354e94354e94354e9 + 4354e94354e94354e94354e94354e94354e94354e94354e94354e94354e94354e94354e94354e94354e94354e94354e9 + 4354e94354e94354e94354e94354e94454e94454e94454e94454e94454e94454e94454e94454e94454e94454e94454e9 + 4454e94454e94454e94454e94454e94454e94454e94455e94455e94455e94455e94455e94455e94455e94455e94455e9 + 4455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94455e94455e9 + 4455e94455e94455e94455e94555e94555e94555e94555e94555e94555e94555e94555e94555e94555e94555e94555e9 + 4555e94555e94555e94555e94555e94555e94555e94555e94555e94555e94556e94556e94556e94556e94556e94556e9 + 4556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e94556e9 + " +) rotated 15 ysized 4cm ; +\stopMPcode + +\stoptitle + +\starttitle[title=Layers] + +\startbuffer +\defineviewerlayer[rotation:30] +\defineviewerlayer[rotation:60] +\defineviewerlayer[rotation:90] + +\startMPcode +draw image ( + + fill fullsquare scaled 8cm rotated 30 + withcolor red + withtransparency(1,.5) + onlayer "rotation:30" ; + + fill fullsquare scaled 8cm rotated 60 + withcolor green + withtransparency(1,.5) + onlayer "rotation:60" ; + + fill fullsquare scaled 8cm rotated 90 + withcolor blue + withtransparency(1,.5) + onlayer "rotation:90" ; + +) ysized TextHeight ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\stoptitle + +\starttitle[title=Outlines] + +% \startMPcode +% graphictext ("Hi There!") scaled 10 ; +% \stopMPcode + +\startbuffer +\startMPcode + draw outlinetext.d + ("Hi There!") + (withcolor "red" withpen pencircle scaled 1/10 ) + scaled 10 ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\startbuffer +\startMPcode + draw outlinetext.f + ("Hi There!") + (withcolor "green") + scaled 10 ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\startbuffer +\startMPcode + draw outlinetext.b + ("Hi There!") + (withcolor "green") + (withcolor "red" withpen pencircle scaled 1/10 ) + scaled 10 ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\startbuffer +\startMPcode + draw outlinetext.r + ("Hi There!") + (withcolor "green") + (withcolor "red" withpen pencircle scaled 1/10 ) + scaled 10 ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\startbuffer +\startMPcode + draw outlinetext.d + ("\framed[align=normal]{\input klein }") + (withcolor "white" withpen pencircle scaled 1/10 ) + xsized TextWidth ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\stoptitle + +\starttitle[title=Images] + +\startbuffer +\startMPcode + draw externalfigure ("cow.pdf") xsized 4cm ; +\stopMPcode + +\startMPcode + draw figure ("cow.pdf") rotated -25 xsized 2cm shifted (14cm,-3cm) ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\stoptitle + +\starttitle[title=Text] + +\startbuffer +\startMPcode +draw textext("\bfd Hello, {\green does} this work?") + shifted (4cm,2cm) + rotated 10 + withcolor white ; + +draw textext("\bfd Hello, {\green does} this work?") + shifted (4cm,-2cm) + rotated -10 + withcolor white + withtransparency (1,0.5); + +for i=1 step 10 until 360: + draw textext(decimal i) + shifted (0,4.5cm) + rotated i + withcolor i/360 ; +endfor ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\stoptitle + +\starttitle[title=Paths] + +\startbuffer +\startMPcode +draw image ( + path p ; p := reverse fullcircle scaled 4cm ; + draw p ; + draw followtext(p, + "A nice clip: Rai Thistlethwayte's Betty Page @ Keyscape.\quad") +) ysized .6TextHeight ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\startbuffer +\startMPcode +draw image ( + path p ; p := fullcircle scaled 4cm ; + fill p withcolor white ; + draw followtext(reverse p,"\obeydiscretionaries\samplefile{sapolsky}") ; +) ysized .6TextHeight ; +\stopMPcode +\stopbuffer + +\typebuffer \getbuffer \page + +\startbuffer +\startMPcode +draw image ( + path p ; p := fullcircle scaled 4cm ; + fill p withcolor white ; + draw followtext(reverse p,"\obeydiscretionaries\samplefile{sapolsky}") ; +) ysized TextHeight ; +\stopMPcode +\stopbuffer + +{\showfontkerns \getbuffer} \page + +\stoptitle + +\starttitle[title=So \unknown] + +\startitemize + \startitem + Get rid of old code snippets. And maybe translate some experiments into useful code. + \stopitem + \startitem + Optimize some of the code. On the average the code is quite efficient but less + is often better. + \stopitem + \startitem + Check the \METAFUN\ manual for recent additions. And maybe remove older + (more \MPII ish) solutions. + \stopitem + \startitem + Think about a way to circumvent unwanted suffix expansion so that we can use more keywords + without problems. (Maybe I should come up with a decent \METAPOST\ extension. Needs discussion + with Alan Braslau.) + \stopitem +\stopitemize + +\stoptitle + +\stoptext diff --git a/doc/context/presentations/context/2007/context-2007-luatex.tex b/doc/context/presentations/context/2007/context-2007-luatex.tex new file mode 100644 index 000000000..dc4b4890b --- /dev/null +++ b/doc/context/presentations/context/2007/context-2007-luatex.tex @@ -0,0 +1 @@ +\starttext todo \stoptext diff --git a/doc/context/presentations/context/2007/context-2007-mkiv.tex b/doc/context/presentations/context/2007/context-2007-mkiv.tex new file mode 100644 index 000000000..dc4b4890b --- /dev/null +++ b/doc/context/presentations/context/2007/context-2007-mkiv.tex @@ -0,0 +1 @@ +\starttext todo \stoptext diff --git a/doc/context/presentations/context/2010/context-2010-just-in-time-1.tex b/doc/context/presentations/context/2010/context-2010-just-in-time-1.tex new file mode 100644 index 000000000..dc4b4890b --- /dev/null +++ b/doc/context/presentations/context/2010/context-2010-just-in-time-1.tex @@ -0,0 +1 @@ +\starttext todo \stoptext diff --git a/doc/context/presentations/context/2010/context-2010-just-in-time-2.tex b/doc/context/presentations/context/2010/context-2010-just-in-time-2.tex new file mode 100644 index 000000000..dc4b4890b --- /dev/null +++ b/doc/context/presentations/context/2010/context-2010-just-in-time-2.tex @@ -0,0 +1 @@ +\starttext todo \stoptext diff --git a/doc/context/presentations/context/2010/context-2010-requirements.tex b/doc/context/presentations/context/2010/context-2010-requirements.tex new file mode 100644 index 000000000..dc4b4890b --- /dev/null +++ b/doc/context/presentations/context/2010/context-2010-requirements.tex @@ -0,0 +1 @@ +\starttext todo \stoptext diff --git a/doc/context/presentations/context/2010/context-2010-structure-matters.tex b/doc/context/presentations/context/2010/context-2010-structure-matters.tex new file mode 100644 index 000000000..dc4b4890b --- /dev/null +++ b/doc/context/presentations/context/2010/context-2010-structure-matters.tex @@ -0,0 +1 @@ +\starttext todo \stoptext diff --git a/doc/context/presentations/context/2010/context-2010-workflows.tex b/doc/context/presentations/context/2010/context-2010-workflows.tex new file mode 100644 index 000000000..dc4b4890b --- /dev/null +++ b/doc/context/presentations/context/2010/context-2010-workflows.tex @@ -0,0 +1 @@ +\starttext todo \stoptext diff --git a/doc/context/presentations/examples/present-steps-001.pdf b/doc/context/presentations/examples/present-steps-001.pdf new file mode 100644 index 000000000..c9ad75613 Binary files /dev/null and b/doc/context/presentations/examples/present-steps-001.pdf differ diff --git a/doc/context/presentations/examples/present-steps-001.tex b/doc/context/presentations/examples/present-steps-001.tex new file mode 100644 index 000000000..7a20779fb --- /dev/null +++ b/doc/context/presentations/examples/present-steps-001.tex @@ -0,0 +1,114 @@ +\usemodule[present-steps] + +\setuppapersize + [S6] + +\setupinteraction + [state=start] + + +\setupwhitespace + [big] + +\setupheadertexts + [] + +\setupbodyfont + [modernlatin] + +\setuplist + [chapter] + [interaction=all] + +\defineoverlay + [go-on] + [\overlaybutton{nextpage}] + +\setupbackgrounds + [page] + [background=go-on] + +\starttext + +\title{Contents} + +\placelist + [chapter] + +\startsteps + \startstep + \ifnum\currentstep > 1 + \repeathead[chapter] + \else + \chapter{Step Set 1} + \fi + \stopstep + + \startstep + STEP ONE + \stopstep + + \startstep + STEP TWO + \stopstep + + \startstep + STEP THREE + \stopstep + + \startstep + STEP FOUR + \stopstep + +\stopsteps + +\startsteps + + \startstep[option=title] + \chapter{Step Set 2} + \stopstep + + \startstep[option=repeat] + \repeathead[chapter] + \stopstep + + \startstep[n=2] + this is a formula + \startformula + \startsubstep e = \stopsubstep + \startsubstep m c^2 \stopsubstep + \stopformula + \stopstep + + \startstep + \startitemize + \startitem STEP 1a \stopitem + \startitem STEP 1b \stopitem + \stopitemize + \stopstep + + \startstep[n=2] + this is a formula + \startformula + \startsubstep e = \stopsubstep + \startsubstep m c^2 \stopsubstep + \stopformula + \stopstep + + \startstep + \startitemize[continue] + \startitem STEP 2a \stopitem + \startitem STEP 2b \stopitem + \stopitemize + \stopstep + + \startstep + \startitemize[continue] + \startitem STEP 3a \stopitem + \startitem STEP 3b \stopitem + \stopitemize + \stopstep + +\stopsteps + +\stoptext diff --git a/doc/context/presentations/tug/2001/tug-2001-ideas.pdf b/doc/context/presentations/tug/2001/tug-2001-ideas.pdf new file mode 100644 index 000000000..ca841c206 Binary files /dev/null and b/doc/context/presentations/tug/2001/tug-2001-ideas.pdf differ diff --git a/doc/context/presentations/tug/2001/tug-2001-ideas.tex b/doc/context/presentations/tug/2001/tug-2001-ideas.tex new file mode 100644 index 000000000..48eb8fd3b --- /dev/null +++ b/doc/context/presentations/tug/2001/tug-2001-ideas.tex @@ -0,0 +1,445 @@ +\usemodule[present-dark] + +\usemodule[abr-01] + +\startdocument + +\StartIdea + [ title={Hans Hagen}, + remark={PRAGMA ADE, Hasselt NL}, + url={www.pragma-ade.com}] + +{\bfd \setstrut \strut TUG 2001} + +{\bfa \setstrut \strut A \TEX\ Odyssey} + +\blank[2*big] + +\startitemize [packed] + \startitem what way are we heading \stopitem + \startitem will there be documents \stopitem + \startitem is typography still needed \stopitem + \startitem are we still talking \TEX \stopitem +\stopitemize + +\StopIdea + +\StartIdea + +Until now, the main source of information is books. In the next couple of slides, +I will present some quotes from books I read the last couple of years, written +by: Arthur \remark {Clarke} {physics}, Greg \remark {Bear} {psychology}, Graham +\remark {Hancock} {journalism}, Peter \remark {Wilbur} {ergonomics} and Michael +Burke, Jared \remark {Diamond} {history}, Edward \remark {Tufte} {design}, Peter +Ward and Donald \remark {Brownlee} {biology}, Steve \remark{Reich} {music} and +Beryl Korot, Richard \remark {Kadrey} {fantasy}, Brian \remark {Butterworth} +{math} and of course Donald \remark {Knuth} {informatics}. + +\StopIdea + +\StartIdea + [ title={ed. David G. Stork}, + remark={Hal's Legacy, 1997}] + +[Arthur Clarke:] Although I've never considered 2001 as a strict +predict\-ion|<|but as more of a vision, a way things could work|>|I have long +kept track, informally, of how our vision compares with computer science reality. +Some things we got right---even righter than we ever had reason to suspect. +Others, well, who could have \remark {known} {so, to what extent can we predict +the future of documents}. + +[Summary:] much of the science predicted in 1968 is okay, but with regards to +\remark {computers} {in this respect, \TeX\ is surprisingly up|-|to|-|date} a +couple of points are missed: they have become smaller, \remark {AI} {and +automated text processing is still difficult} is far from operational, natural +speech, reasoning and lipreading are not really available, fault tolerance is +there, we have lcd's, graphical user interfaces and windows, don't communicate in +terminal messages, have mice and other means of input. + +\StopIdea + +\StartIdea + [ title={Arthur Clarke}, + remark={2001, A space Odyssey, p. 66, 1968}] + +After a short walk through a tunnel packed with pipes and \remark {cables} {we +are already going wireless}, and echoing hollowly with rhythmic thumbing and +throbbings, they arrived in executive territory, and Floyd found himself back in +the familiar environment of \remark {typewriters} {the good old times of \quote +{think before you key}}, \remark {office} {indeed, most of today's users run +\quote {office}} computers, \remark {girl} {everyone is now a typist} assistants, +\remark {wall} {when will we go virtual} charts and ringing telephones. + +\StopIdea + +\StartIdea + [ title={Arthur Clarke}, + remark={2001, A space Odyssey, p. 67, 1968}] + +There was plenty to occupy his time, even if he did nothing but sit and read. +When he tired of official reports and memoranda and minutes he would \remark +{plug} {documents will be in the air} his foolscap|-|sized newspad into the +ship's information circuit and scan the latest reports from Earth. One by one he +would conjure up the world's major electronic papers; he knew the \remark {codes} +{who is using codes today} of the more important ones by heart, and had no need +to consult the list on the back of his pad. Switching to the display's unit's +short|-|term memory, he would hold the front page while he quickly \remark +{searched} {we are very good in quick browsing} the headlines and noted the items +that interested him. Each had its own \remark {two|-|digit} {aren't we running +out of 256.256.256.256 already} reference; when he punched that, the +postage|-|stamp|-|sized rectangle would expand until it neatly filled the screen, +and he could read it with comfort. When had finished he would flash back to the +complete remark {page} {will we keep on using composed mixed content pages} and +select a new subject for detailed examination. + +\StopIdea + +\StartIdea + [ title={Arthur Clarke}, + remark={2001, A space Odyssey, p. 109, 1968}] + +Bowman had been a student for more than a half his life; he would continue to be +one until he retired. Thanks to the Twentieth Century \remark {revolution} {that +has been a pretty quiet revolution then} in training and information|-|handling +techniques, he already possessed the \remark {equivalent} {we will stop talking +in those qualifications} of two or three college educations|=|and, what was more, +he could \remark {remember} {with or without implant} \remark {ninety} {is this +still needed with information everywhere} per cent of what he had learned. + +\StopIdea + +\StartIdea + [ title={Arthur Clarke}, + remark={2001, A space Odyssey, p. 132, 1968}] + +The information flashed on the display screen; simultaneously, a sheet of paper +slit out of the slot immediately \remark {beneath} {but aren't screens becoming +like paper} it. Despite all the electronic read|-|outs, there were times when +good, old|-|fashioned printed material was the most \remark {convenient} {good, +because paper is a great invention} form of record. + +\StopIdea + +\StartIdea + [ title={Greg Bear}, + remark={Eon, p. 30, 1985}] + +The office was neatly organized but still looked cluttered. A small desk +manufactured from OTV tank baffles was flanked by chromium bins filled with +\remark {rolls} {not much paper will be used in space, I guess} of paper. A +narrow shelf of \remark {real} {that sounds pretty sad for around 2000} books +hung next to \remark {racks} {will there be such a physical need} of memory +blocks sealed behind tough, alarm-equipped plastic panels. \remark {Maps} {we +will probably always need an overview} and \remark {diagrams} {and for that we +need large projections} were taped to the wall. + +\StopIdea + +\StartIdea + [ title={Greg Bear}, + remark={Eon, p. 132, 1985}] + +Still, she agreed with a nod and settled into the seat, manipulating the controls +with one hand. A simple \remark {circular} {will we move away from rectangular +presentations} graphic display \remark {hovered} {that's indeed what we want} +before her, as crisp and \remark {clear} {good} as something \remark {solid} +{even better}. Takahashi had misinformed her on one point, and her fumbling +triggered a tutorial. It corrected her errors and informed her|<|in only slightly +\remark {accented} {-)} American \remark {English} {what a pitty for dislectic +people}|>|how to operate the equipment properly. Then it provided her with call +\remark {numbers} {we really love numbers, don't we} and codes for other types of +information. + +\StopIdea + +\StartIdea + [ title={Greg Bear}, + remark={Eon, pp. 132/135, 1985}] + +The \remark {illusion} {physical presence will become less important} was +perfect|<|even providing her with a memory of what her apartment looked like. She +could turn her head and look completely behind her if she wished|>|indeed, she +could walk around, even through she knew she was sitting down. \unknown\ The +information had come in \remark {printed} {don't throw away eons of experience} +displays, selected \remark {visuals} {will we keep on changing interfaces} and +even more selected \remark {sounds} {we should have started recording already}. +Where documentation of the multimedia sort was lacking, print took over, but with +subtle and clear vocal accompaniment. Compared to this, simple reading was +\remark {torture} {hm, \unknown} and current video methods as \remark {archaic} +{eh, \unknown} as cave \remark {paintings} {let's be humble then}. + +\StopIdea + +\StartIdea + [ title={Greg Bear}, + remark={Eon, p. 258, 1985}] + +\quotation {The P.M.\ has no suspicion of this when you alone were sent?} Toller +\remark {picted} {finally ideographic scripts will win the game}. The symbols +that flashed between the two men came from pictor torques around their necks, +\remark {devices} {we really need an physical update} that had developed over the +centuries in the Thistledown and in the Axis City. + +\StopIdea + +\StartIdea + [ title={Graham Hancock}, + remark={Fingerprints of the gods, Graham Hancock, p. 120, 1995}] + +More systematically, all over Central America, vast repositories of knowledge +\remark {accumulated} {as today in libraries, on servers and in our houses} since +ancient times were painstakingly gathered, heaped up and burned by zealous +friars. In July 1562, for example, in the main square of Mani (just south of +modern Merida in Yucatan Province) Fr Diego de Landa \remark {burned} {and all +can get lost forever} thousands of Maya codices, story paintings and hieroglyphs +inscribed on rolled|-|up deer \remark {skins} {how about bits curled up on +CDROM's}. + +\StopIdea + +\StartIdea + [ title={Graham Hancock}, + remark={Fingerprints of the gods, Graham Hancock, p. 520/526, 1995}] + +We know that out late twentieth|-|century, post|-|industrial civilization is +about to be destroyed by an \remark {inescapable} {not that imaginary, it has +happened before} cosmic or geological cataclysm. + +We know|<|because our science is pretty good|>|that the destruction is going to +be \remark {{\em near|-|total}} {one 10-30 km meteor or even one lunatic +president will do}. + +\blank \unknown \blank + +I'm sure that we'd want to say more than just \quote {Kilroy was here}. + +\blank \unknown \blank + +And, yes, \remark {they} {pyramid builders 12,000 years ago} found an ingenious +way to tell \remark {us} {who more and more think short|-|term} that they were +\remark {here} {what will we leave behind}. + +\StopIdea + +\StartIdea + [ title={Jared Diamond}, + remark={Guns, Germs and Steel, A Short History of Everybody for the Last + 13,000 years, p. 260, 1997}] + +Human technology developed from the first stone tools, in use by two and a half +million years ago, to the 1996 laser \remark {printer} {the ones that produced +sticky fading print|-|outs} that replaced my already outdated 1992 \remark +{laser} {and now we want color on the desktop} printer and that was used to print +this book's manuscript. The rate of development was undetectably slow at the +beginning, when hundreds of thousands of years passed with no discernible change +in out stone tools and with no surviving evidence for artifacts and of other +materials. Today, technology advances so \remark {rapidly} {so let's be careful +in claiming advance} that it is reported in the daily \remark {newspaper} {less +and less people read them}. + +\StopIdea + +\StartIdea + [ title={Jared Diamond}, + remark={Guns, Germs and Steel, A Short History of Everybody for the Last + 13,000 years, p. 418, 1997}] + +The decision could have gone to another keyboard at any of numerous stages +between the 1860s and the 1880's; nothing about the American environment favored +the \hbox {QWERTY} keyboard over its rivals. \unknown\ For example, if the \hbox +{QWERTY} keyboard of the United States had not been adopted elsewhere in the +world as well|<|say, if Japan or Europe had adopted the more \remark {efficient} +{so why don't we take that one} Dvorak keyboard|>|that trivial decision in the +19\high{th} century might have had big consequences for the competative position +of the 20\high{th}|-|century \remark {American} {isn't \TeX\ also best tuned for +english} technology. + +\StopIdea + +\StartIdea + [ title={Peter Wilbur \& Michael Burke}, + remark={Information Graphics, Innovative Solutions in Contemporary Design, + p. 87, 1998}] + +It was generally \remark {agreed} {so let's judge with care} at that time that +products which tried to fulfil two or more \remark {functions} {how many +functions are there in a book} were compromises and therefore inferior to a +single|-|function product. + +\StopIdea + +\StartIdea + [ title={Peter Wilbur \& Michael Burke}, + remark={Information Graphics, Innovative Solutions in Contemporary Design, + p. 17, 1998}] + +All of this implies that design students of the future will need to have a much +wider range of skills than most graphic and multimedia students possess today. +The coming \remark {together} {which is better: overloaded CNN news screens or +the more traditional ones} of typography, graphics, the moving image, sound and +music requires training in both \remark {aesthetic} {let's hope for the best} +judgment and technical skills, as well as the ability to implement and commission +\remark {multimedia} {the current hype will become a decent craft} productions. +Such a program hardly exists today, and it may be that \remark {designers} {or +will machines do the work} of the future will find themselves on courses equal in +duration and related in structure to those followed by architects. + +\StopIdea + +\StartIdea + [ title={Greg Bear}, + remark={Darwin's radio, p. 271, 1999}] + +\quotation {As far as it goes}, Kaye said. \quotation {I believe our genome is +much more \remark {clever} {let's hope that we can cope with the future} than we +are. It's taken us tens of thousands of years to get to to the point where we +have a hope of understanding how life works. \unknown\ The Earth species have +learned how to anticipate climate change and respond to it in advance, get a head +start, and I believe, in our case, our genome is now responding to social \remark +{change} {like writing, reading, processing, collecting information} and the +\remark {stress} {ability to keep track of things} it causes.} + +\StopIdea + +\StartIdea + [ title={Greg Bear}, + remark={Darwin's radio, p. 404, 1999}] + +She looked at the cover and laughed out loud. It was a copy of WIRED, and on the +brilliant orange cover was printed the black silhouette of a curled fetus with a +green question mark across the middle. The log line read \quotation {\em Human +3.0: Not a Virus, but an \remark {Upgrade} {or: complex talking & communicating +in color, smell and taste}?} + +\StopIdea + +\StartIdea + [title={Edward R. Tufte}] + +We thrive in information|-|thick worlds because of our marvelous and everyday +\remark {capacity} {that is us, now, or maybe until recently} to select, edit, +single out, structure, highlight, group, pair, merge, harmonize, synthesize, +focus, organize, condense, reduce, boil down, choose, categorize, catalog, +classify, list, abstract, scan, look into, idealize, isolate, discriminate, +distinguish, screen, pigeonhole, pick over, sort, integrate, blend, inspect, +filter, lump, skip, smooth, chunk, average, approximate, cluster, aggregate, +outline, summarize, itemize, review, dip into, flip through, browse, glance into, +leaf through, skim, refine, enumerate, glean, synopsize, \remark {winnow} {do we +really} the wheat from the chaff and separate the sheep from the goats. + +\StopIdea + +\StartIdea + [ title={Donald E. Knuth}, + remark={Selected Papers in Computer Science, p. 95, 1996}] + +I believe that the real reason underlying the fact that Computer Science has +become a thriving discipline at essential all of the world's universities, +although it was totally \remark {unknown} {much more is yet unknown, but we don't +know what} twenty years ago, is {\em not} that computers exist in quantity; the +real reason is that the algorithmic thinkers among scientists of the world never +before had a home. We are brought \remark {together} {there will be more new +disciplines} in Computer Science departments {\em because we find people who +think like we do}. At least, that seems a viable hypothesis, which hasn't been +contradicted by my observations during the last half dozen or so years since the +possibility occurred to me. + +\StopIdea + +\StartIdea + [ title={Brian Butterworth}, + remark={The Mathematical Brain, p. 162, 1999}] + +Nevertheless, it is now abundantly clear that infants are born with a \remark +{capacity} {what more is lurking there} to recognize distinct numerosities up to +about~4, and to respond to changes in numerosity. They also possess arithmical +expectations: .... + +\StopIdea + +\StartIdea + [ title={Brian Butterworth}, + remark={The Mathematical Brain, p. 275, 1999}] + +Imagine, if you can, asking Archimed, the greatest mathematician of antiquity, to +solve the equation: + +\startformula +2a^2 + 3ab - 4b^2 = 0 +\stopformula + +\remark {He} {would your parents recognize \type {} as such} would have +less chance than an average educated fourteen|-|year|-|old, simply because he +would not know what the strange \remark {symbols} {or recognize hyperlinks} $0$, +$2$, $3$, and $4$ mean because thet weren't invented till seven centuries after +his murder; nor $+$ and $-$, German inventions of the fifteenth century; not to +mention \remark {$=$} {or be able to interpret a regular expression}, which was +invented by the Englishman Robert Recorde in the sixteenth century. He would also +have had a problem with the \remark {idea} {or be able to picture the internet} +that equations can have negative roots. + +\StopIdea + +\StartIdea + [ title={Richard Kadrey}, + remark={From Myst to Riven, the Creations and Inspirations, p. 16, 1997}] + +Some of basics of the D'ni bookmaking are known, but the most important \remark +{details} {can we still make Gutenberg bibles} have been \remark {lost} {how do +we preserve what we have} over time. \unknown\ From the few existing \remark +{records} {how much is really new} lost it appears that the D'ni have been using +their Linking books for millenia, and that they \remark {linked} {then they +manage their links better than we do} to the earth around 10,000 terrestial years +ago. + +\StopIdea + +\StartIdea + [ title={Richard Kadrey}, + remark={From Myst to Riven, the Creations and Inspirations, p. 81,1997}] + +Glancing at the surface of thing, {\em Myst} and {\em Riven} might seem more of a +technical achievement in computer \remark {artistry} {for this a real new way of +thinking is needed} and the fine points of modeling frames for objects and +designing surface textures and shader programs to reflect hyper|-|reality. It is +very easy to focus exclusively on the cool factor of what you see and to overlook +what is the underlying key to the success of these games: they are \remark +{story} {authorship will change} driven. What really sucks the player in is that +there is a deeply felt {\em purpose} to playing the \remark {game} {and the less +we need to work, the more we will game}. + +\StopIdea + +\StartIdea + [ title={Steve Reich \& Beryl Korot}, + remark={The Cave, 1995}] + +The true underpinnings were our interest in making a \remark {new} {the time is +ready for revolutionary new ways of presenting information} kind of musical +theater based on videotaped documentary sources. The idea was that you would be +able to see and hear people as they spoke on the videotape and simultaneously you +would see and hear on|-|stage musicians \remark {doubling} {also accompanied by +char|-|by|-|char typesetting} them|=|actually playing their speech melodies as +they spoke. + +\StopIdea + +\StartIdea + [ title={Peter D. Ward \& Donald Brownlee}, + remark={Rare Earth, Why Complex Life us Uncommon in the Universe, p. xxiv, + 2000}] + +If it is found to be correct, however, the Rare Earth Hypothesis will reverse +that decentering trend. What if the Earth, with its cargo of advanced animals, is +virtually unique in this quadrant of the galaxy|=|the most diverse planet, say, +in the nearest 10,000 light|-|years? What if it is utterly unique: the only +planet with animals in this galaxy or even in the visible Universe, a bastion of +animals amid a sea of microbe|-|infested worlds? If that is the case, how much +greater the loss the Universe sustains for each species of animals or planet +driven to extinction trough the \remark {careless} {like more and more paper} +stewardship of Homo Sapiens? \crlf Welcome \remark {aboard} {but let's move on +with care}. + +\StopIdea + +\stopdocument diff --git a/doc/context/presentations/tug/2007/tug-2007-fonts.pdf b/doc/context/presentations/tug/2007/tug-2007-fonts.pdf new file mode 100644 index 000000000..53b97ddc7 Binary files /dev/null and b/doc/context/presentations/tug/2007/tug-2007-fonts.pdf differ diff --git a/doc/context/scripts/mkii/ctxtools.man b/doc/context/scripts/mkii/ctxtools.man index 54a0a442c..374ffcc80 100644 --- a/doc/context/scripts/mkii/ctxtools.man +++ b/doc/context/scripts/mkii/ctxtools.man @@ -1,4 +1,4 @@ -.TH "ctxtools" "1" "01-01-2018" "version 1.3.5" "CtxTools" +.TH "ctxtools" "1" "01-01-2019" "version 1.3.5" "CtxTools" .SH NAME .B ctxtools .SH SYNOPSIS diff --git a/doc/context/scripts/mkii/imgtopdf.man b/doc/context/scripts/mkii/imgtopdf.man index 11cc46f95..033d5a1ab 100644 --- a/doc/context/scripts/mkii/imgtopdf.man +++ b/doc/context/scripts/mkii/imgtopdf.man @@ -1,4 +1,4 @@ -.TH "imgtopdf" "1" "01-01-2018" "version 1.1.2" "ImgToPdf" +.TH "imgtopdf" "1" "01-01-2019" "version 1.1.2" "ImgToPdf" .SH NAME .B imgtopdf .SH SYNOPSIS diff --git a/doc/context/scripts/mkii/mptopdf.man b/doc/context/scripts/mkii/mptopdf.man index c6f4655e0..56be81806 100644 --- a/doc/context/scripts/mkii/mptopdf.man +++ b/doc/context/scripts/mkii/mptopdf.man @@ -1,4 +1,4 @@ -.TH "mptopdf" "1" "01-01-2018" "version 1.4.1" "convert MetaPost figures to PDF" +.TH "mptopdf" "1" "01-01-2019" "version 1.4.1" "convert MetaPost figures to PDF" .SH NAME .B mptopdf .SH SYNOPSIS diff --git a/doc/context/scripts/mkii/pdftools.man b/doc/context/scripts/mkii/pdftools.man index 556035a0f..910bce660 100644 --- a/doc/context/scripts/mkii/pdftools.man +++ b/doc/context/scripts/mkii/pdftools.man @@ -1,4 +1,4 @@ -.TH "pdftools" "1" "01-01-2018" "version 1.2.1" "PDFTools" +.TH "pdftools" "1" "01-01-2019" "version 1.2.1" "PDFTools" .SH NAME .B pdftools .SH SYNOPSIS diff --git a/doc/context/scripts/mkii/pstopdf.man b/doc/context/scripts/mkii/pstopdf.man index 1502fa168..607fa1112 100644 --- a/doc/context/scripts/mkii/pstopdf.man +++ b/doc/context/scripts/mkii/pstopdf.man @@ -1,4 +1,4 @@ -.TH "pstopdf" "1" "01-01-2018" "version 2.0.1" "PStoPDF" +.TH "pstopdf" "1" "01-01-2019" "version 2.0.1" "PStoPDF" .SH NAME .B pstopdf .SH SYNOPSIS diff --git a/doc/context/scripts/mkii/rlxtools.man b/doc/context/scripts/mkii/rlxtools.man index 56bc3c690..d2a128b41 100644 --- a/doc/context/scripts/mkii/rlxtools.man +++ b/doc/context/scripts/mkii/rlxtools.man @@ -1,4 +1,4 @@ -.TH "rlxtools" "1" "01-01-2018" "version 1.0.1" "RlxTools" +.TH "rlxtools" "1" "01-01-2019" "version 1.0.1" "RlxTools" .SH NAME .B rlxtools .SH SYNOPSIS diff --git a/doc/context/scripts/mkii/texexec.man b/doc/context/scripts/mkii/texexec.man index 8de194d39..d6b057b65 100644 --- a/doc/context/scripts/mkii/texexec.man +++ b/doc/context/scripts/mkii/texexec.man @@ -1,4 +1,4 @@ -.TH "texexec" "1" "01-01-2018" "version 6.2.1" "TeXExec" +.TH "texexec" "1" "01-01-2019" "version 6.2.1" "TeXExec" .SH NAME .B texexec .SH SYNOPSIS diff --git a/doc/context/scripts/mkii/texmfstart.html b/doc/context/scripts/mkii/texmfstart.html index 6e1f7f618..e7656a159 100644 --- a/doc/context/scripts/mkii/texmfstart.html +++ b/doc/context/scripts/mkii/texmfstart.html @@ -47,9 +47,7 @@ --internalrun script using built in libraries (same as --ctxlua) --locatelocate given filename in database (default) or system (--first --all --detail) - --autotreeuse texmf tree cf. env texmfstart_tree or texmfstarttree --treepathtotreeuse given texmf tree (default file: setuptex.tmf) - --environmentnameuse given (tmf) environment file --pathrunpathgo to given path before execution --ifchangedfilenameonly execute when given file has changed (md checksum) --iftouchedold,newonly execute when given file has changed (time stamp) @@ -66,7 +64,7 @@ --systeminfostrshow current operating system, processor, etc --editlaunch editor with found file - --launchlaunch files like manuals, assumes os support (--all) + --launchlaunch files like manuals, assumes os support (--all,--list) --timedrunrun a script and time its run --autogenerateregenerate databases if needed (handy when used to run context in an editor) diff --git a/doc/context/scripts/mkii/texmfstart.man b/doc/context/scripts/mkii/texmfstart.man index fdff5103c..70dd035c4 100644 --- a/doc/context/scripts/mkii/texmfstart.man +++ b/doc/context/scripts/mkii/texmfstart.man @@ -1,4 +1,4 @@ -.TH "mtxrun" "1" "01-01-2018" "version 1.33" "ConTeXt TDS Runner Tool" +.TH "mtxrun" "1" "01-01-2019" "version 1.33" "ConTeXt TDS Runner Tool" .SH NAME .B mtxrun .SH SYNOPSIS @@ -32,15 +32,9 @@ run script using built in libraries (same as --ctxlua) .B --locate locate given filename in database (default) or system (--first --all --detail) .TP -.B --autotree -use texmf tree cf. env texmfstart_tree or texmfstarttree -.TP .B --tree=pathtotree use given texmf tree (default file: setuptex.tmf) .TP -.B --environment=name -use given (tmf) environment file -.TP .B --path=runpath go to given path before execution .TP @@ -81,7 +75,7 @@ show current operating system, processor, etc launch editor with found file .TP .B --launch -launch files like manuals, assumes os support (--all) +launch files like manuals, assumes os support (--all,--list) .TP .B --timedrun run a script and time its run diff --git a/doc/context/scripts/mkii/texmfstart.xml b/doc/context/scripts/mkii/texmfstart.xml index 0fc6505f4..8f501ff66 100644 --- a/doc/context/scripts/mkii/texmfstart.xml +++ b/doc/context/scripts/mkii/texmfstart.xml @@ -16,9 +16,7 @@ locate given filename in database (default) or system ( ) - use texmf tree cf. env texmfstart_tree or texmfstarttree use given texmf tree (default file: setuptex.tmf) - use given (tmf) environment file go to given path before execution only execute when given file has changed (md checksum) only execute when given file has changed (time stamp) @@ -38,7 +36,7 @@ launch editor with found file - launch files like manuals, assumes os support () + launch files like manuals, assumes os support (,) run a script and time its run diff --git a/doc/context/scripts/mkii/textools.man b/doc/context/scripts/mkii/textools.man index d355ccf5d..8fad158af 100644 --- a/doc/context/scripts/mkii/textools.man +++ b/doc/context/scripts/mkii/textools.man @@ -1,4 +1,4 @@ -.TH "textools" "1" "01-01-2018" "version 1.3.1" "TeXTools" +.TH "textools" "1" "01-01-2019" "version 1.3.1" "TeXTools" .SH NAME .B textools .SH SYNOPSIS diff --git a/doc/context/scripts/mkii/texutil.man b/doc/context/scripts/mkii/texutil.man index 918660e45..cad1b72e8 100644 --- a/doc/context/scripts/mkii/texutil.man +++ b/doc/context/scripts/mkii/texutil.man @@ -1,4 +1,4 @@ -.TH "texutil" "1" "01-01-2018" "version 9.1.0" "TeXUtil" +.TH "texutil" "1" "01-01-2019" "version 9.1.0" "TeXUtil" .SH NAME .B texutil .SH SYNOPSIS diff --git a/doc/context/scripts/mkii/tmftools.man b/doc/context/scripts/mkii/tmftools.man index 68550bb00..465579ded 100644 --- a/doc/context/scripts/mkii/tmftools.man +++ b/doc/context/scripts/mkii/tmftools.man @@ -1,4 +1,4 @@ -.TH "tmftools" "1" "01-01-2018" "version 1.1.0" "TMFTools" +.TH "tmftools" "1" "01-01-2019" "version 1.1.0" "TMFTools" .SH NAME .B tmftools .SH SYNOPSIS diff --git a/doc/context/scripts/mkii/xmltools.man b/doc/context/scripts/mkii/xmltools.man index aacd5ee78..d3ed28a7a 100644 --- a/doc/context/scripts/mkii/xmltools.man +++ b/doc/context/scripts/mkii/xmltools.man @@ -1,4 +1,4 @@ -.TH "xmltools" "1" "01-01-2018" "version 1.2.2" "XMLTools" +.TH "xmltools" "1" "01-01-2019" "version 1.2.2" "XMLTools" .SH NAME .B xmltools .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/context.html b/doc/context/scripts/mkiv/context.html index cb841477a..2c64bf8df 100644 --- a/doc/context/scripts/mkiv/context.html +++ b/doc/context/scripts/mkiv/context.html @@ -61,6 +61,7 @@ --trackerslistset tracker variables (show list with --showtrackers) --directiveslistset directive variables (show list with --showdirectives) --silentlistdisable logcatgories (show list with --showlogcategories) + --stripstrip Lua code (only meant for production where no errors are expected) --errorslistshow errors at the end of a run, quit when in list (also when ----silent) --noconsoledisable logging to the console (logfile only) --purgeresultpurge result file before run @@ -103,6 +104,7 @@ --timinggenerate timing and statistics overview --keeptuckeep previous tuc files (jobname-tuc-[run].tmp) --keeplogkeep previous log files (jobname-log-[run].tmp) + --lmtxforce lmtx mode (when available) --extra=nameprocess extra (mtx-context-... in distribution) --extrasshow extras diff --git a/doc/context/scripts/mkiv/context.man b/doc/context/scripts/mkiv/context.man index 39882b77e..eed6a5723 100644 --- a/doc/context/scripts/mkiv/context.man +++ b/doc/context/scripts/mkiv/context.man @@ -1,4 +1,4 @@ -.TH "mtx-context" "1" "01-01-2018" "version 1.01" "ConTeXt Process Management" +.TH "mtx-context" "1" "01-01-2019" "version 1.01" "ConTeXt Process Management" .SH NAME .B mtx-context .SH SYNOPSIS @@ -65,6 +65,9 @@ set directive variables (show list with --showdirectives) .B --silent=list disable logcatgories (show list with --showlogcategories) .TP +.B --strip +strip Lua code (only meant for production where no errors are expected) +.TP .B --errors=list show errors at the end of a run, quit when in list (also when ----silent) .TP @@ -165,6 +168,9 @@ keep previous tuc files (jobname-tuc-[run].tmp) .B --keeplog keep previous log files (jobname-log-[run].tmp) .TP +.B --lmtx +force lmtx mode (when available) +.TP .B --extra=name process extra (mtx-context-... in distribution) .TP diff --git a/doc/context/scripts/mkiv/context.xml b/doc/context/scripts/mkiv/context.xml index 9003b549a..8c21eaa8c 100644 --- a/doc/context/scripts/mkiv/context.xml +++ b/doc/context/scripts/mkiv/context.xml @@ -70,6 +70,9 @@ disable logcatgories (show list with ) + + strip Lua code (only meant for production where no errors are expected) + show errors at the end of a run, quit when in list (also when ) @@ -187,6 +190,9 @@ keep previous log files (jobname-log-[run].tmp) + + force lmtx mode (when available) + diff --git a/doc/context/scripts/mkiv/luatools.man b/doc/context/scripts/mkiv/luatools.man index 8cdcf0fd6..6750af537 100644 --- a/doc/context/scripts/mkiv/luatools.man +++ b/doc/context/scripts/mkiv/luatools.man @@ -1,4 +1,4 @@ -.TH "luatools" "1" "01-01-2018" "version 1.35" "ConTeXt TDS Management Tool (aka luatools)" +.TH "luatools" "1" "01-01-2019" "version 1.35" "ConTeXt TDS Management Tool (aka luatools)" .SH NAME .B luatools .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-babel.man b/doc/context/scripts/mkiv/mtx-babel.man index 712911333..68b94478d 100644 --- a/doc/context/scripts/mkiv/mtx-babel.man +++ b/doc/context/scripts/mkiv/mtx-babel.man @@ -1,4 +1,4 @@ -.TH "mtx-babel" "1" "01-01-2018" "version 1.20" "Babel Input To UTF Conversion" +.TH "mtx-babel" "1" "01-01-2019" "version 1.20" "Babel Input To UTF Conversion" .SH NAME .B mtx-babel .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-base.man b/doc/context/scripts/mkiv/mtx-base.man index c38347353..757537b1d 100644 --- a/doc/context/scripts/mkiv/mtx-base.man +++ b/doc/context/scripts/mkiv/mtx-base.man @@ -1,4 +1,4 @@ -.TH "mtx-base" "1" "01-01-2018" "version 1.35" "ConTeXt TDS Management Tool (aka luatools)" +.TH "mtx-base" "1" "01-01-2019" "version 1.35" "ConTeXt TDS Management Tool (aka luatools)" .SH NAME .B mtx-base .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-bibtex.man b/doc/context/scripts/mkiv/mtx-bibtex.man index 9553b900d..a2ddce859 100644 --- a/doc/context/scripts/mkiv/mtx-bibtex.man +++ b/doc/context/scripts/mkiv/mtx-bibtex.man @@ -1,4 +1,4 @@ -.TH "mtx-bibtex" "1" "01-01-2018" "version 1.00" "bibtex helpers" +.TH "mtx-bibtex" "1" "01-01-2019" "version 1.00" "bibtex helpers" .SH NAME .B mtx-bibtex .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-cache.man b/doc/context/scripts/mkiv/mtx-cache.man index 188e72078..e659dd3b8 100644 --- a/doc/context/scripts/mkiv/mtx-cache.man +++ b/doc/context/scripts/mkiv/mtx-cache.man @@ -1,4 +1,4 @@ -.TH "mtx-cache" "1" "01-01-2018" "version 0.10" "ConTeXt & MetaTeX Cache Management" +.TH "mtx-cache" "1" "01-01-2019" "version 0.10" "ConTeXt & MetaTeX Cache Management" .SH NAME .B mtx-cache .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-chars.man b/doc/context/scripts/mkiv/mtx-chars.man index 8914c9ed5..dd6c3c6ca 100644 --- a/doc/context/scripts/mkiv/mtx-chars.man +++ b/doc/context/scripts/mkiv/mtx-chars.man @@ -1,4 +1,4 @@ -.TH "mtx-chars" "1" "01-01-2018" "version 0.10" "MkII Character Table Generators" +.TH "mtx-chars" "1" "01-01-2019" "version 0.10" "MkII Character Table Generators" .SH NAME .B mtx-chars .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-check.man b/doc/context/scripts/mkiv/mtx-check.man index 9c1f02a49..6331a2e53 100644 --- a/doc/context/scripts/mkiv/mtx-check.man +++ b/doc/context/scripts/mkiv/mtx-check.man @@ -1,4 +1,4 @@ -.TH "mtx-check" "1" "01-01-2018" "version 0.10" "Basic ConTeXt Syntax Checking" +.TH "mtx-check" "1" "01-01-2019" "version 0.10" "Basic ConTeXt Syntax Checking" .SH NAME .B mtx-check .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-colors.man b/doc/context/scripts/mkiv/mtx-colors.man index de271e01b..4ef9fab0b 100644 --- a/doc/context/scripts/mkiv/mtx-colors.man +++ b/doc/context/scripts/mkiv/mtx-colors.man @@ -1,4 +1,4 @@ -.TH "mtx-colors" "1" "01-01-2018" "version 0.10" "ConTeXt Color Management" +.TH "mtx-colors" "1" "01-01-2019" "version 0.10" "ConTeXt Color Management" .SH NAME .B mtx-colors .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-context.html b/doc/context/scripts/mkiv/mtx-context.html index cb841477a..2c64bf8df 100644 --- a/doc/context/scripts/mkiv/mtx-context.html +++ b/doc/context/scripts/mkiv/mtx-context.html @@ -61,6 +61,7 @@ --trackerslistset tracker variables (show list with --showtrackers) --directiveslistset directive variables (show list with --showdirectives) --silentlistdisable logcatgories (show list with --showlogcategories) + --stripstrip Lua code (only meant for production where no errors are expected) --errorslistshow errors at the end of a run, quit when in list (also when ----silent) --noconsoledisable logging to the console (logfile only) --purgeresultpurge result file before run @@ -103,6 +104,7 @@ --timinggenerate timing and statistics overview --keeptuckeep previous tuc files (jobname-tuc-[run].tmp) --keeplogkeep previous log files (jobname-log-[run].tmp) + --lmtxforce lmtx mode (when available) --extra=nameprocess extra (mtx-context-... in distribution) --extrasshow extras diff --git a/doc/context/scripts/mkiv/mtx-context.man b/doc/context/scripts/mkiv/mtx-context.man index 39882b77e..eed6a5723 100644 --- a/doc/context/scripts/mkiv/mtx-context.man +++ b/doc/context/scripts/mkiv/mtx-context.man @@ -1,4 +1,4 @@ -.TH "mtx-context" "1" "01-01-2018" "version 1.01" "ConTeXt Process Management" +.TH "mtx-context" "1" "01-01-2019" "version 1.01" "ConTeXt Process Management" .SH NAME .B mtx-context .SH SYNOPSIS @@ -65,6 +65,9 @@ set directive variables (show list with --showdirectives) .B --silent=list disable logcatgories (show list with --showlogcategories) .TP +.B --strip +strip Lua code (only meant for production where no errors are expected) +.TP .B --errors=list show errors at the end of a run, quit when in list (also when ----silent) .TP @@ -165,6 +168,9 @@ keep previous tuc files (jobname-tuc-[run].tmp) .B --keeplog keep previous log files (jobname-log-[run].tmp) .TP +.B --lmtx +force lmtx mode (when available) +.TP .B --extra=name process extra (mtx-context-... in distribution) .TP diff --git a/doc/context/scripts/mkiv/mtx-context.xml b/doc/context/scripts/mkiv/mtx-context.xml index 9003b549a..8c21eaa8c 100644 --- a/doc/context/scripts/mkiv/mtx-context.xml +++ b/doc/context/scripts/mkiv/mtx-context.xml @@ -70,6 +70,9 @@ disable logcatgories (show list with ) + + strip Lua code (only meant for production where no errors are expected) + show errors at the end of a run, quit when in list (also when ) @@ -187,6 +190,9 @@ keep previous log files (jobname-log-[run].tmp) + + force lmtx mode (when available) + diff --git a/doc/context/scripts/mkiv/mtx-dvi.man b/doc/context/scripts/mkiv/mtx-dvi.man index 29c5dd772..e16f2d5b6 100644 --- a/doc/context/scripts/mkiv/mtx-dvi.man +++ b/doc/context/scripts/mkiv/mtx-dvi.man @@ -1,4 +1,4 @@ -.TH "mtx-dvi" "1" "01-01-2018" "version 0.01" "ConTeXt DVI Helpers" +.TH "mtx-dvi" "1" "01-01-2019" "version 0.01" "ConTeXt DVI Helpers" .SH NAME .B mtx-dvi .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-epub.man b/doc/context/scripts/mkiv/mtx-epub.man index 3e6875204..ffd6d78ed 100644 --- a/doc/context/scripts/mkiv/mtx-epub.man +++ b/doc/context/scripts/mkiv/mtx-epub.man @@ -1,4 +1,4 @@ -.TH "mtx-epub" "1" "01-01-2018" "version 1.10" "ConTeXt EPUB Helpers" +.TH "mtx-epub" "1" "01-01-2019" "version 1.10" "ConTeXt EPUB Helpers" .SH NAME .B mtx-epub .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-evohome.html b/doc/context/scripts/mkiv/mtx-evohome.html index dc21f7721..c8ec42b95 100644 --- a/doc/context/scripts/mkiv/mtx-evohome.html +++ b/doc/context/scripts/mkiv/mtx-evohome.html @@ -40,6 +40,7 @@ flagvaluedescription --collectcollect data from device + --updateupdate data from device --presetsfile with authenciation data --autofetch temperature data every hour --portserver port when running the service, default: 8068 diff --git a/doc/context/scripts/mkiv/mtx-evohome.man b/doc/context/scripts/mkiv/mtx-evohome.man index 3c20161dc..61355fec1 100644 --- a/doc/context/scripts/mkiv/mtx-evohome.man +++ b/doc/context/scripts/mkiv/mtx-evohome.man @@ -1,4 +1,4 @@ -.TH "mtx-evohome" "1" "01-01-2018" "version 1.00" "Evohome Fetcher" +.TH "mtx-evohome" "1" "01-01-2019" "version 1.00" "Evohome Fetcher" .SH NAME .B mtx-evohome .SH SYNOPSIS @@ -14,6 +14,9 @@ .B --collect collect data from device .TP +.B --update +update data from device +.TP .B --presets file with authenciation data .TP diff --git a/doc/context/scripts/mkiv/mtx-evohome.xml b/doc/context/scripts/mkiv/mtx-evohome.xml index 7224d4183..abdb9fb99 100644 --- a/doc/context/scripts/mkiv/mtx-evohome.xml +++ b/doc/context/scripts/mkiv/mtx-evohome.xml @@ -9,6 +9,7 @@ collect data from device + update data from device file with authenciation data fetch temperature data every hour server port when running the service, default: 8068 diff --git a/doc/context/scripts/mkiv/mtx-fcd.man b/doc/context/scripts/mkiv/mtx-fcd.man index 7b668b091..65f21761d 100644 --- a/doc/context/scripts/mkiv/mtx-fcd.man +++ b/doc/context/scripts/mkiv/mtx-fcd.man @@ -1,4 +1,4 @@ -.TH "mtx-fcd" "1" "01-01-2018" "version 1.00" "Fast Directory Change" +.TH "mtx-fcd" "1" "01-01-2019" "version 1.00" "Fast Directory Change" .SH NAME .B mtx-fcd .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-flac.man b/doc/context/scripts/mkiv/mtx-flac.man index 02c977d76..26acb7e41 100644 --- a/doc/context/scripts/mkiv/mtx-flac.man +++ b/doc/context/scripts/mkiv/mtx-flac.man @@ -1,4 +1,4 @@ -.TH "mtx-flac" "1" "01-01-2018" "version 0.10" "ConTeXt Flac Helpers" +.TH "mtx-flac" "1" "01-01-2019" "version 0.10" "ConTeXt Flac Helpers" .SH NAME .B mtx-flac .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-fonts.man b/doc/context/scripts/mkiv/mtx-fonts.man index c27731e33..a65915e72 100644 --- a/doc/context/scripts/mkiv/mtx-fonts.man +++ b/doc/context/scripts/mkiv/mtx-fonts.man @@ -1,4 +1,4 @@ -.TH "mtx-fonts" "1" "01-01-2018" "version 1.00" "ConTeXt Font Database Management" +.TH "mtx-fonts" "1" "01-01-2019" "version 1.00" "ConTeXt Font Database Management" .SH NAME .B mtx-fonts .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-grep.man b/doc/context/scripts/mkiv/mtx-grep.man index 19675cc51..cd7d52735 100644 --- a/doc/context/scripts/mkiv/mtx-grep.man +++ b/doc/context/scripts/mkiv/mtx-grep.man @@ -1,4 +1,4 @@ -.TH "mtx-grep" "1" "01-01-2018" "version 0.10" "Simple Grepper" +.TH "mtx-grep" "1" "01-01-2019" "version 0.10" "Simple Grepper" .SH NAME .B mtx-grep .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-interface.man b/doc/context/scripts/mkiv/mtx-interface.man index 2dbba85df..026a5f67b 100644 --- a/doc/context/scripts/mkiv/mtx-interface.man +++ b/doc/context/scripts/mkiv/mtx-interface.man @@ -1,4 +1,4 @@ -.TH "mtx-interface" "1" "01-01-2018" "version 0.13" "ConTeXt Interface Related Goodies" +.TH "mtx-interface" "1" "01-01-2019" "version 0.13" "ConTeXt Interface Related Goodies" .SH NAME .B mtx-interface .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-metapost.man b/doc/context/scripts/mkiv/mtx-metapost.man index e8e7b465e..11586b727 100644 --- a/doc/context/scripts/mkiv/mtx-metapost.man +++ b/doc/context/scripts/mkiv/mtx-metapost.man @@ -1,4 +1,4 @@ -.TH "mtx-metapost" "1" "01-01-2018" "version 0.10" "MetaPost to PDF processor" +.TH "mtx-metapost" "1" "01-01-2019" "version 0.10" "MetaPost to PDF processor" .SH NAME .B mtx-metapost .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-metatex.html b/doc/context/scripts/mkiv/mtx-metatex.html deleted file mode 100644 index 18866c0d0..000000000 --- a/doc/context/scripts/mkiv/mtx-metatex.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - MetaTeX Process Management 0.10 - - - - - -
-
MetaTeX Process Management 0.10
-
-
-
-
wiki: http://contextgarden.net | mail: ntg-context@ntg.nl | website: http://www.pragma-ade.nl
-
-
-
- -
-
-

Command line options

- - - - - -
flagvaluedescription
--runprocess (one or more) files (default action)
--makecreate metatex format(s)
-
-
-
- - diff --git a/doc/context/scripts/mkiv/mtx-metatex.man b/doc/context/scripts/mkiv/mtx-metatex.man deleted file mode 100644 index fd45e312f..000000000 --- a/doc/context/scripts/mkiv/mtx-metatex.man +++ /dev/null @@ -1,30 +0,0 @@ -.TH "mtx-metatex" "1" "01-01-2018" "version 0.10" "MetaTeX Process Management" -.SH NAME -.B mtx-metatex -.SH SYNOPSIS -.B mtxrun --script metatex [ -.I OPTIONS ... -.B ] [ -.I FILENAMES -.B ] -.SH DESCRIPTION -.B MetaTeX Process Management -.SH OPTIONS -.TP -.B --run -process (one or more) files (default action) -.TP -.B --make -create metatex format(s) -.SH AUTHOR -More information about ConTeXt and the tools that come with it can be found at: - - -.B "maillist:" -ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context - -.B "webpage:" -http://www.pragma-ade.nl / http://tex.aanhet.net - -.B "wiki:" -http://contextgarden.net diff --git a/doc/context/scripts/mkiv/mtx-metatex.xml b/doc/context/scripts/mkiv/mtx-metatex.xml deleted file mode 100644 index 649673fbf..000000000 --- a/doc/context/scripts/mkiv/mtx-metatex.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - mtx-metatex - MetaTeX Process Management - 0.10 - - - - - process (one or more) files (default action) - create metatex format(s) - - - - diff --git a/doc/context/scripts/mkiv/mtx-modules.man b/doc/context/scripts/mkiv/mtx-modules.man index 2ca40f90f..56172bd0d 100644 --- a/doc/context/scripts/mkiv/mtx-modules.man +++ b/doc/context/scripts/mkiv/mtx-modules.man @@ -1,4 +1,4 @@ -.TH "mtx-modules" "1" "01-01-2018" "version 1.00" "ConTeXt Module Documentation Generators" +.TH "mtx-modules" "1" "01-01-2019" "version 1.00" "ConTeXt Module Documentation Generators" .SH NAME .B mtx-modules .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-package.man b/doc/context/scripts/mkiv/mtx-package.man index 958e4a975..d0bbd6398 100644 --- a/doc/context/scripts/mkiv/mtx-package.man +++ b/doc/context/scripts/mkiv/mtx-package.man @@ -1,4 +1,4 @@ -.TH "mtx-package" "1" "01-01-2018" "version 0.10" "Distribution Related Goodies" +.TH "mtx-package" "1" "01-01-2019" "version 0.10" "Distribution Related Goodies" .SH NAME .B mtx-package .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-patterns.html b/doc/context/scripts/mkiv/mtx-patterns.html deleted file mode 100644 index 7d5da995d..000000000 --- a/doc/context/scripts/mkiv/mtx-patterns.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - ConTeXt Pattern File Management 0.20 - - - - - -
-
ConTeXt Pattern File Management 0.20
-
-
-
-
wiki: http://contextgarden.net | mail: ntg-context@ntg.nl | website: http://www.pragma-ade.nl
-
-
-
- -
-
-

Command line options

- - - - - - - - - - - -
flagvaluedescription
--convertgenerate context language files (mnemonic driven, if not given then all)
--checkcheck pattern file (or those used by context when no file given)
--pathsource path where hyph-foo.tex files are stored
--destinationdestination path
--specificationadditional patterns: e.g.: =cy,hyph-cy,welsh
--compresscompress data
--wordsupdate words in given file
--hyphenateshow hypephenated words
-
-

Examples

-mtxrun --script pattern --check hyph-*.tex -
mtxrun --script pattern --check --path=c:/data/develop/svn-hyphen/trunk/hyph-utf8/tex/generic/hyph-utf8/patterns -
mtxrun --script pattern --convert --path=c:/data/develop/svn-hyphen/trunk/hyph-utf8/tex/generic/hyph-utf8/patterns/tex --destination=e:/tmp/patterns -
mtxrun --script pattern --convert --path=c:/data/develop/svn-hyphen/trunk/hyph-utf8/tex/generic/hyph-utf8/patterns/txt --destination=e:/tmp/patterns -
mtxrun --script pattern --hyphenate --language=nl --left=3 nogalwiedes inderdaad -

-
- - diff --git a/doc/context/scripts/mkiv/mtx-patterns.man b/doc/context/scripts/mkiv/mtx-patterns.man deleted file mode 100644 index 1b7906b23..000000000 --- a/doc/context/scripts/mkiv/mtx-patterns.man +++ /dev/null @@ -1,48 +0,0 @@ -.TH "mtx-patterns" "1" "01-01-2018" "version 0.20" "ConTeXt Pattern File Management" -.SH NAME -.B mtx-patterns -.SH SYNOPSIS -.B mtxrun --script patterns [ -.I OPTIONS ... -.B ] [ -.I FILENAMES -.B ] -.SH DESCRIPTION -.B ConTeXt Pattern File Management -.SH OPTIONS -.TP -.B --convert -generate context language files (mnemonic driven, if not given then all) -.TP -.B --check -check pattern file (or those used by context when no file given) -.TP -.B --path -source path where hyph-foo.tex files are stored -.TP -.B --destination -destination path -.TP -.B --specification -additional patterns: e.g.: =cy,hyph-cy,welsh -.TP -.B --compress -compress data -.TP -.B --words -update words in given file -.TP -.B --hyphenate -show hypephenated words -.SH AUTHOR -More information about ConTeXt and the tools that come with it can be found at: - - -.B "maillist:" -ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context - -.B "webpage:" -http://www.pragma-ade.nl / http://tex.aanhet.net - -.B "wiki:" -http://contextgarden.net diff --git a/doc/context/scripts/mkiv/mtx-patterns.xml b/doc/context/scripts/mkiv/mtx-patterns.xml deleted file mode 100644 index 86f3aa480..000000000 --- a/doc/context/scripts/mkiv/mtx-patterns.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - mtx-patterns - ConTeXt Pattern File Management - 0.20 - - - - - generate context language files (mnemonic driven, if not given then all) - check pattern file (or those used by context when no file given) - source path where hyph-foo.tex files are stored - destination path - additional patterns: e.g.: =cy,hyph-cy,welsh - compress data - update words in given file - show hypephenated words - - - - - - Examples - - mtxrun --script pattern --check hyph-*.tex - mtxrun --script pattern --check --path=c:/data/develop/svn-hyphen/trunk/hyph-utf8/tex/generic/hyph-utf8/patterns - mtxrun --script pattern --convert --path=c:/data/develop/svn-hyphen/trunk/hyph-utf8/tex/generic/hyph-utf8/patterns/tex --destination=e:/tmp/patterns - mtxrun --script pattern --convert --path=c:/data/develop/svn-hyphen/trunk/hyph-utf8/tex/generic/hyph-utf8/patterns/txt --destination=e:/tmp/patterns - mtxrun --script pattern --hyphenate --language=nl --left=3 nogalwiedes inderdaad - - - - diff --git a/doc/context/scripts/mkiv/mtx-pdf.html b/doc/context/scripts/mkiv/mtx-pdf.html index b156c154e..e724148ca 100644 --- a/doc/context/scripts/mkiv/mtx-pdf.html +++ b/doc/context/scripts/mkiv/mtx-pdf.html @@ -41,8 +41,9 @@ --infoshow some info about the given file --metadatashow metadata xml blob + --prettyreplace newlines in metadata --fontsshow used fonts (--detail) - --linearizelinearize given file +
diff --git a/doc/context/scripts/mkiv/mtx-pdf.man b/doc/context/scripts/mkiv/mtx-pdf.man index 30aacc03a..8595fcbaf 100644 --- a/doc/context/scripts/mkiv/mtx-pdf.man +++ b/doc/context/scripts/mkiv/mtx-pdf.man @@ -1,4 +1,4 @@ -.TH "mtx-pdf" "1" "01-01-2018" "version 0.10" "ConTeXt PDF Helpers" +.TH "mtx-pdf" "1" "01-01-2019" "version 0.10" "ConTeXt PDF Helpers" .SH NAME .B mtx-pdf .SH SYNOPSIS @@ -17,11 +17,11 @@ show some info about the given file .B --metadata show metadata xml blob .TP +.B --pretty +replace newlines in metadata +.TP .B --fonts show used fonts (--detail) -.TP -.B --linearize -linearize given file .SH AUTHOR More information about ConTeXt and the tools that come with it can be found at: diff --git a/doc/context/scripts/mkiv/mtx-pdf.xml b/doc/context/scripts/mkiv/mtx-pdf.xml index bc4a9d795..9b3d8f8fe 100644 --- a/doc/context/scripts/mkiv/mtx-pdf.xml +++ b/doc/context/scripts/mkiv/mtx-pdf.xml @@ -10,8 +10,13 @@ show some info about the given file show metadata xml blob + replace newlines in metadata show used fonts ( - linearize given file + + + mtxrun --script pdf --info foo.pdf + mtxrun --script pdf --metadata foo.pdf + mtxrun --script pdf --metadata --pretty foo.pdf
diff --git a/doc/context/scripts/mkiv/mtx-plain.man b/doc/context/scripts/mkiv/mtx-plain.man index fbdf301f7..a242a4a24 100644 --- a/doc/context/scripts/mkiv/mtx-plain.man +++ b/doc/context/scripts/mkiv/mtx-plain.man @@ -1,4 +1,4 @@ -.TH "mtx-plain" "1" "01-01-2018" "version 1.00" "Plain TeX Runner" +.TH "mtx-plain" "1" "01-01-2019" "version 1.00" "Plain TeX Runner" .SH NAME .B mtx-plain .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-profile.man b/doc/context/scripts/mkiv/mtx-profile.man index fefc60e74..1e38a3b5a 100644 --- a/doc/context/scripts/mkiv/mtx-profile.man +++ b/doc/context/scripts/mkiv/mtx-profile.man @@ -1,4 +1,4 @@ -.TH "mtx-profile" "1" "01-01-2018" "version 1.00" "ConTeXt MkIV LuaTeX Profiler" +.TH "mtx-profile" "1" "01-01-2019" "version 1.00" "ConTeXt MkIV LuaTeX Profiler" .SH NAME .B mtx-profile .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-rsync.man b/doc/context/scripts/mkiv/mtx-rsync.man index 6b7e6e8bc..49a139cb4 100644 --- a/doc/context/scripts/mkiv/mtx-rsync.man +++ b/doc/context/scripts/mkiv/mtx-rsync.man @@ -1,4 +1,4 @@ -.TH "mtx-rsync" "1" "01-01-2018" "version 0.10" "Rsync Helpers" +.TH "mtx-rsync" "1" "01-01-2019" "version 0.10" "Rsync Helpers" .SH NAME .B mtx-rsync .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-scite.man b/doc/context/scripts/mkiv/mtx-scite.man index 58733624d..a37d38fde 100644 --- a/doc/context/scripts/mkiv/mtx-scite.man +++ b/doc/context/scripts/mkiv/mtx-scite.man @@ -1,4 +1,4 @@ -.TH "mtx-scite" "1" "01-01-2018" "version 1.00" "Scite Helper Script" +.TH "mtx-scite" "1" "01-01-2019" "version 1.00" "Scite Helper Script" .SH NAME .B mtx-scite .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-server.man b/doc/context/scripts/mkiv/mtx-server.man index dfda87e71..da0c4c05d 100644 --- a/doc/context/scripts/mkiv/mtx-server.man +++ b/doc/context/scripts/mkiv/mtx-server.man @@ -1,4 +1,4 @@ -.TH "mtx-server" "1" "01-01-2018" "version 0.10" "Simple Webserver For Helpers" +.TH "mtx-server" "1" "01-01-2019" "version 0.10" "Simple Webserver For Helpers" .SH NAME .B mtx-server .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-texworks.man b/doc/context/scripts/mkiv/mtx-texworks.man index 1e29cb7db..016aa1f7d 100644 --- a/doc/context/scripts/mkiv/mtx-texworks.man +++ b/doc/context/scripts/mkiv/mtx-texworks.man @@ -1,4 +1,4 @@ -.TH "mtx-texworks" "1" "01-01-2018" "version 1.00" "TeXworks Startup Script" +.TH "mtx-texworks" "1" "01-01-2019" "version 1.00" "TeXworks Startup Script" .SH NAME .B mtx-texworks .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-timing.man b/doc/context/scripts/mkiv/mtx-timing.man index 785c40d78..479506c70 100644 --- a/doc/context/scripts/mkiv/mtx-timing.man +++ b/doc/context/scripts/mkiv/mtx-timing.man @@ -1,4 +1,4 @@ -.TH "mtx-timing" "1" "01-01-2018" "version 0.10" "ConTeXt Timing Tools" +.TH "mtx-timing" "1" "01-01-2019" "version 0.10" "ConTeXt Timing Tools" .SH NAME .B mtx-timing .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-tools.man b/doc/context/scripts/mkiv/mtx-tools.man index d3a92138d..1cee94d9d 100644 --- a/doc/context/scripts/mkiv/mtx-tools.man +++ b/doc/context/scripts/mkiv/mtx-tools.man @@ -1,4 +1,4 @@ -.TH "mtx-tools" "1" "01-01-2018" "version 1.01" "Some File Related Goodies" +.TH "mtx-tools" "1" "01-01-2019" "version 1.01" "Some File Related Goodies" .SH NAME .B mtx-tools .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-unicode.man b/doc/context/scripts/mkiv/mtx-unicode.man index a4665374f..e82ee65ee 100644 --- a/doc/context/scripts/mkiv/mtx-unicode.man +++ b/doc/context/scripts/mkiv/mtx-unicode.man @@ -1,4 +1,4 @@ -.TH "mtx-unicode" "1" "01-01-2018" "version 1.02" "Checker for char-dat.lua" +.TH "mtx-unicode" "1" "01-01-2019" "version 1.02" "Checker for char-dat.lua" .SH NAME .B mtx-unicode .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-unzip.man b/doc/context/scripts/mkiv/mtx-unzip.man index f2a382ad1..f0243c38c 100644 --- a/doc/context/scripts/mkiv/mtx-unzip.man +++ b/doc/context/scripts/mkiv/mtx-unzip.man @@ -1,4 +1,4 @@ -.TH "mtx-unzip" "1" "01-01-2018" "version 0.10" "Simple Unzipper" +.TH "mtx-unzip" "1" "01-01-2019" "version 0.10" "Simple Unzipper" .SH NAME .B mtx-unzip .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-update.man b/doc/context/scripts/mkiv/mtx-update.man index 79743d7d5..4ec518b0d 100644 --- a/doc/context/scripts/mkiv/mtx-update.man +++ b/doc/context/scripts/mkiv/mtx-update.man @@ -1,4 +1,4 @@ -.TH "mtx-update" "1" "01-01-2018" "version 1.03" "ConTeXt Minimals Updater" +.TH "mtx-update" "1" "01-01-2019" "version 1.03" "ConTeXt Minimals Updater" .SH NAME .B mtx-update .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-watch.man b/doc/context/scripts/mkiv/mtx-watch.man index 82dccbb8e..8cc32f4a5 100644 --- a/doc/context/scripts/mkiv/mtx-watch.man +++ b/doc/context/scripts/mkiv/mtx-watch.man @@ -1,4 +1,4 @@ -.TH "mtx-watch" "1" "01-01-2018" "version 1.00" "ConTeXt Request Watchdog" +.TH "mtx-watch" "1" "01-01-2019" "version 1.00" "ConTeXt Request Watchdog" .SH NAME .B mtx-watch .SH SYNOPSIS diff --git a/doc/context/scripts/mkiv/mtx-youless.html b/doc/context/scripts/mkiv/mtx-youless.html index a95170344..78543414c 100644 --- a/doc/context/scripts/mkiv/mtx-youless.html +++ b/doc/context/scripts/mkiv/mtx-youless.html @@ -14,7 +14,7 @@ - YouLess Fetcher 1.100 + YouLess Fetcher 1.10