diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 11:50:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 11:50:49 +0000 |
commit | c853ffb5b2f75f5a889ed2e3ef89b818a736e87a (patch) | |
tree | 7d13a0883bb7936b84d6ecdd7bc332b41ed04bee /share/extensions/other/extension-xaml/tests | |
parent | Initial commit. (diff) | |
download | inkscape-c853ffb5b2f75f5a889ed2e3ef89b818a736e87a.tar.xz inkscape-c853ffb5b2f75f5a889ed2e3ef89b818a736e87a.zip |
Adding upstream version 1.3+ds.upstream/1.3+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'share/extensions/other/extension-xaml/tests')
39 files changed, 5752 insertions, 0 deletions
diff --git a/share/extensions/other/extension-xaml/tests/__init__.py b/share/extensions/other/extension-xaml/tests/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/__init__.py diff --git a/share/extensions/other/extension-xaml/tests/context.py b/share/extensions/other/extension-xaml/tests/context.py new file mode 100644 index 0000000..0ed3c0f --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/context.py @@ -0,0 +1,13 @@ +"""Handles imports for unit tests""" + +import os +import sys +from lxml import etree + +# This is suggested by https://docs.python-guide.org/writing/structure/. +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) + +from inkxaml.tester import Svg2XamlTester +from inkxaml.svg2xaml import XamlOutput + +XamlOutput.__module__ = "svg2xaml" diff --git a/share/extensions/other/extension-xaml/tests/data/cmd/inkscape/65c026b1c9b2d7dafbbeb1287a1530ea.msg b/share/extensions/other/extension-xaml/tests/data/cmd/inkscape/65c026b1c9b2d7dafbbeb1287a1530ea.msg new file mode 100644 index 0000000..f7983d4 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/cmd/inkscape/65c026b1c9b2d7dafbbeb1287a1530ea.msg @@ -0,0 +1,679 @@ +Content-Type: multipart/mixed; boundary="--CALLDATA--//--CALLDATA--" +MIME-Version: 1.0 +Program: inkscape +Arguments: --actions=unlock-all;select-by-element:flowRoot;object-to-path;select-clear;select-by-element:text;object-to-path;select-clear;export-overwrite;export-do input.svg + +----CALLDATA--//--CALLDATA-- +Content-Type: application/octet-stream; Name="input.svg" +MIME-Version: 1.0 +Content-Transfer-Encoding: base64 +Content-Disposition: attachment +Filename: input.svg + +PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjwh +LS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoK +PHN2ZwogICB3aWR0aD0iMTAwMCIKICAgaGVpZ2h0PSIxMDAwIgogICB2aWV3Qm94PSIwIDAgMTAw +MCAxMDAwIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmc4IgogICBpbmtzY2FwZTp2ZXJzaW9u +PSIwLjkyLjQgNWRhNjg5YzMxMywgMjAxOS0wMS0xNCIKICAgc29kaXBvZGk6ZG9jbmFtZT0iaW5w +dXQuc3ZnIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNw +YWNlcy9pbmtzY2FwZSIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vm +b3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53 +My5vcmcvMTk5OS94bGluayIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgog +ICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpuczE9Imh0 +dHBzOi8vbGF1bmNocGFkLm5ldC9qZXNzeWluayI+CiAgPGRlZnMKICAgICBpZD0iZGVmczMzIj4K +ICAgIDxtYXJrZXIKICAgICAgIGlua3NjYXBlOnN0b2NraWQ9IkFycm93MkxzdGFydCIKICAgICAg +IG9yaWVudD0iYXV0byIKICAgICAgIHJlZlk9IjAuMCIKICAgICAgIHJlZlg9IjAuMCIKICAgICAg +IGlkPSJBcnJvdzJMc3RhcnQiCiAgICAgICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZSIKICAgICAg +IGlua3NjYXBlOmlzc3RvY2s9InRydWUiPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDg1 +OSIKICAgICAgICAgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO3N0cm9rZS13aWR0aDowLjYyNTtz +dHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLW9wYWNpdHk6MTtmaWxs +OiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Ik0gOC43MTg1ODc4LDQuMDMzNzM1 +MiBMIC0yLjIwNzI4OTUsMC4wMTYwMTMyNTYgTCA4LjcxODU4ODQsLTQuMDAxNzA3OCBDIDYuOTcz +MDkwMCwtMS42Mjk2NDY5IDYuOTgzMTQ3NiwxLjYxNTc0NDEgOC43MTg1ODc4LDQuMDMzNzM1MiB6 +ICIKICAgICAgICAgdHJhbnNmb3JtPSJzY2FsZSgxLjEpIHRyYW5zbGF0ZSgxLDApIiAvPgogICAg +PC9tYXJrZXI+CiAgPC9kZWZzPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBwYWdlY29sb3I9 +IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0i +MSIKICAgICBvYmplY3R0b2xlcmFuY2U9IjEwIgogICAgIGdyaWR0b2xlcmFuY2U9IjEwIgogICAg +IGd1aWRldG9sZXJhbmNlPSIxMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMCIKICAgICBp +bmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIK +ICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDE3IgogICAgIGlkPSJiYXNlIgogICAgIHNo +b3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAg +ICBpbmtzY2FwZTp6b29tPSIwLjY2NzUwODgiCiAgICAgaW5rc2NhcGU6Y3g9IjIwMi43MzQ5Igog +ICAgIGlua3NjYXBlOmN5PSI0ODEuMTY5ODYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAg +ICAgaW5rc2NhcGU6d2luZG93LXk9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0i +MSIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJ3ZWJzbGljZXItbGF5ZXIiCiAgICAgaW5r +c2NhcGU6c2hvd3BhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6cGFnZWNoZWNrZXJib2FyZD0i +MCIKICAgICBpbmtzY2FwZTpkZXNrY29sb3I9IiNkMWQxZDEiPgogICAgPGlua3NjYXBlOmdyaWQK +ICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkMjciCiAgICAgICBzcGFjaW5neD0i +MTAiCiAgICAgICBzcGFjaW5neT0iMTAiCiAgICAgICBlbXBzcGFjaW5nPSIxMCIKICAgICAgIGNv +bG9yPSIjODA4MGZmIgogICAgICAgb3BhY2l0eT0iMC4yNTA5ODAzOSIKICAgICAgIGVtcGNvbG9y +PSIjMDAwMGZmIgogICAgICAgZW1wb3BhY2l0eT0iMC4yNTA5ODAzOSIgLz4KICA8L3NvZGlwb2Rp +Om5hbWVkdmlldz4KICA8ZwogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9 +IndlYnNsaWNlci1sYXllciIKICAgICBpbmtzY2FwZTpsYWJlbD0iU2xpZGUzIgogICAgIHN0eWxl +PSJkaXNwbGF5OmlubGluZSI+CiAgICA8cmVjdAogICAgICAgaGVpZ2h0PSIyMDEuNDk4MTEiCiAg +ICAgICB3aWR0aD0iMjQ4LjY5MTEyIgogICAgICAgeT0iMzUzLjkyNjYxIgogICAgICAgeD0iNjUx +LjMwODkiCiAgICAgICBpZD0ic2xpY2VyZWN0MSIKICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuNTtm +aWxsOiNmZjAwMDA7c3Ryb2tlLXdpZHRoOjEuMTE5MjcxOTkiPgogICAgICA8ZGVzYwogICAgICAg +ICBpZD0iZGVzYzUxIj5mb3JtYXQ6IHBuZwpkcGk6IDk2CmxheW91dC1kaXNwb3NpdGlvbjogYmct +ZWwtbm9yZXBlYXQKbGF5b3V0LXBvc2l0aW9uLWFuY2hvcjogdGw8L2Rlc2M+CiAgICA8L3JlY3Q+ +CiAgPC9nPgogIDxnCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5 +ZXIyIgogICAgIGlua3NjYXBlOmxhYmVsPSJTbGlkZTIiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5s +aW5lIj4KICAgIDxjaXJjbGUKICAgICAgIHN0eWxlPSJkaXNwbGF5OmlubGluZTtmaWxsOiMwMDAw +ODA7c3Ryb2tlOm5vbmUiCiAgICAgICBpZD0iYzEiCiAgICAgICBjeD0iMTUwIgogICAgICAgY3k9 +IjQ1MCIKICAgICAgIHI9IjUwIgogICAgICAgaW5rc2NhcGU6bGFiZWw9IiNwYXRoMzczNiIgLz4K +ICAgIDxlbGxpcHNlCiAgICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDpub25lO3N0cm9r +ZTojZmYwMDAwO3N0cm9rZS13aWR0aDoxNiIKICAgICAgIGlkPSJjMiIKICAgICAgIGN4PSI0MDAi +CiAgICAgICBjeT0iNDUwIgogICAgICAgcng9IjEwMCIKICAgICAgIHJ5PSI1MCIKICAgICAgIGlu +a3NjYXBlOmxhYmVsPSIjcGF0aDM3MzgiIC8+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImRpc3Bs +YXk6aW5saW5lO2ZpbGw6I2ZmZmYwMDtzdHJva2U6IzAwODAwMDtzdHJva2Utd2lkdGg6MTYiCiAg +ICAgICBpZD0iYzMiCiAgICAgICBzb2RpcG9kaTp0eXBlPSJhcmMiCiAgICAgICBzb2RpcG9kaTpj +eD0iNzAwIgogICAgICAgc29kaXBvZGk6Y3k9IjQ1MCIKICAgICAgIHNvZGlwb2RpOnJ4PSIxMDAi +CiAgICAgICBzb2RpcG9kaTpyeT0iNTAiCiAgICAgICBzb2RpcG9kaTpzdGFydD0iMC41OTAxMzg2 +NSIKICAgICAgIHNvZGlwb2RpOmVuZD0iNS42NDg0NTExIgogICAgICAgZD0ibSA3ODMuMDg2MzUs +NDc3LjgyMzgxIGEgMTAwLDUwIDAgMCAxIC0xMTEuMDk4NDgsMjAuMTc0NDIgMTAwLDUwIDAgMCAx +IC03MS45NjMwMSwtNDYuODgzNDMgMTAwLDUwIDAgMCAxIDY3LjcxMTI3LC00OC40NDA5MSAxMDAs +NTAgMCAwIDEgMTEyLjc4NjgsMTcuNjc3OTMgTCA3MDAsNDUwIFoiCiAgICAgICBpbmtzY2FwZTps +YWJlbD0iI3BhdGgzNzQwIiAvPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJkaXNwbGF5OmlubGlu +ZTtmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEwO21hcmtlci1zdGFydDp1 +cmwoI0Fycm93MkxzdGFydCkiCiAgICAgICBkPSJNIDEwMCw2MDAgMjAwLDcwMCAzMDAsNjAwIDQw +MCw3MDAiCiAgICAgICBpZD0icDEiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJl +PSIwIgogICAgICAgaW5rc2NhcGU6bGFiZWw9IiNwYXRoMzc0NiIgLz4KICAgIDxwYXRoCiAgICAg +ICBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13 +aWR0aDoxMCIKICAgICAgIGQ9Im0gNTAwLDYwMCBjIDAsMCAwLDEwMCAxMDAsMTAwIDEwMCwwIDAs +LTEwMCAxMDAsLTEwMCAxMDAsMCAxMDAsMTAwIDEwMCwxMDAiCiAgICAgICBpZD0icDIiCiAgICAg +ICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgaW5rc2NhcGU6bGFiZWw9 +IiNwYXRoMzc0OCIgLz4KICAgIDxwYXRoCiAgICAgICBzb2RpcG9kaTp0eXBlPSJzdGFyIgogICAg +ICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6I2ZmZmYwMDtzdHJva2U6IzAwODAwMDtzdHJv +a2Utd2lkdGg6MTAiCiAgICAgICBpZD0iczEiCiAgICAgICBzb2RpcG9kaTpzaWRlcz0iNSIKICAg +ICAgIHNvZGlwb2RpOmN4PSIxODkuMDMwMDEiCiAgICAgICBzb2RpcG9kaTpjeT0iODQ3LjkzOTQ1 +IgogICAgICAgc29kaXBvZGk6cjE9IjY5LjM2NDg2OCIKICAgICAgIHNvZGlwb2RpOnIyPSIzNC42 +ODI0MzQiCiAgICAgICBzb2RpcG9kaTphcmcxPSIwLjYzNTk4MzczIgogICAgICAgc29kaXBvZGk6 +YXJnMj0iMS4yNjQzMDIzIgogICAgICAgaW5rc2NhcGU6ZmxhdHNpZGVkPSJmYWxzZSIKICAgICAg +IGlua3NjYXBlOnJvdW5kZWQ9IjAiCiAgICAgICBpbmtzY2FwZTpyYW5kb21pemVkPSIwIgogICAg +ICAgZD0ibSAyNDQuODMzMiw4ODkuMTQwMDUgLTQ1LjMzODg3LC04LjEzNDQ2IC0zMi40MDQyOCwz +Mi43Mzc1MyAtNi4yNzQxNSwtNDUuNjMzNTIgLTQxLjE0ODcyLC0yMC43MDE4NCA0MS40NjEyNCwt +MjAuMDY4NjEgNi45NzI5NywtNDUuNTMxOTcgMzEuODk4NjEsMzMuMjMwNDQgNDUuNDU4MjQsLTcu +NDM4NDcgLTIxLjc0NjgxLDQwLjYwNjE1IHoiCiAgICAgICBpbmtzY2FwZTp0cmFuc2Zvcm0tY2Vu +dGVyLXg9IjYuNDY3MzAxMSIKICAgICAgIGlua3NjYXBlOnRyYW5zZm9ybS1jZW50ZXIteT0iLTAu +MTY0MzAxMzciIC8+CiAgICA8dXNlCiAgICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmUiCiAgICAg +ICB4PSIwIgogICAgICAgeT0iMCIKICAgICAgIHhsaW5rOmhyZWY9IiNzMSIKICAgICAgIGlua3Nj +YXBlOnRyYW5zZm9ybS1jZW50ZXIteD0iNi40NjczMDExIgogICAgICAgaW5rc2NhcGU6dHJhbnNm +b3JtLWNlbnRlci15PSItMC4xNjQzMDEzNyIKICAgICAgIGlkPSJ1MSIKICAgICAgIHRyYW5zZm9y +bT0idHJhbnNsYXRlKDIwMCwyLjk5NjIxNTIpIgogICAgICAgd2lkdGg9IjEwMCUiCiAgICAgICBo +ZWlnaHQ9IjEwMCUiCiAgICAgICBpbmtzY2FwZTpsYWJlbD0iI3VzZTM4MDgiIC8+CiAgPC9nPgog +IDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IlNsaWRlMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9 +ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIj4KICAg +IDxnCiAgICAgICBhcmlhLWxhYmVsPSJIZWxsbyBXb3JsZCIKICAgICAgIGlkPSJ0MSIKICAgICAg +IHN0eWxlPSJmb250LXNpemU6MTQuNjY2N3B4O2xpbmUtaGVpZ2h0OjEuMjUiCiAgICAgICBpbmtz +Y2FwZTpsYWJlbD0iI3RleHQxMiI+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMTA5LjU4OTIx +LDEwMCBoIC0xLjQxNzk3IHYgLTUuMjIwNzE1IGggLTUuMzIwOTcgViAxMDAgaCAtMS40MTc5OCBW +IDg5LjMzNjU2NCBoIDEuNDE3OTggdiA0LjE4MjMwMSBoIDUuMzIwOTcgdiAtNC4xODIzMDEgaCAx +LjQxNzk3IHoiCiAgICAgICAgIGlkPSJwYXRoNzgiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9 +Im0gMTE5LjA0MjM2LDk2LjEzOTk2NSBoIC01Ljg5Mzg5IHEgMCwwLjczNzYzMiAwLjIyMiwxLjI4 +OTA2NiAwLjIyMjAxLDAuNTQ0MjcyIDAuNjA4NzMsMC44OTUxODQgMC4zNzI0LDAuMzQzNzUxIDAu +ODgwODYsMC41MTU2MjYgMC41MTU2MywwLjE3MTg3NSAxLjEzMTUxLDAuMTcxODc1IDAuODE2NDEs +MCAxLjYzOTk4LC0wLjMyMjI2NiAwLjgzMDczLC0wLjMyOTQyOCAxLjE4MTY0LC0wLjY0NDUzMyBo +IDAuMDcxNiB2IDEuNDY4MTAzIHEgLTAuNjgwMzQsMC4yODY0NTkgLTEuMzg5MzMsMC40Nzk4MTkg +LTAuNzA4OTgsMC4xOTMzNjEgLTEuNDg5NTgsMC4xOTMzNjEgLTEuOTkwODksMCAtMy4xMDgwOCwt +MS4wNzQyMjMgLTEuMTE3MTksLTEuMDgxMzgzIC0xLjExNzE5LC0zLjA2NTExMSAwLC0xLjk2MjI0 +NCAxLjA2NzA2LC0zLjExNTI0MiAxLjA3NDIyLC0xLjE1Mjk5NyAyLjgyMTYyLC0xLjE1Mjk5NyAx +LjYxODQ5LDAgMi40OTIxOSwwLjk0NTMxNSAwLjg4MDg2LDAuOTQ1MzE0IDAuODgwODYsMi42ODU1 +NTMgeiBtIC0xLjMxMDU1LC0xLjAzMTI1MiBxIC0wLjAwNywtMS4wNTk4OTkgLTAuNTM3MTEsLTEu +NjM5OTc4IC0wLjUyMjc5LC0wLjU4MDA3OSAtMS41OTcwMSwtMC41ODAwNzkgLTEuMDgxMzgsMCAt +MS43MjU5MSwwLjYzNzM3MSAtMC42MzczNywwLjYzNzM3MSAtMC43MjMzMSwxLjU4MjY4NiB6Igog +ICAgICAgICBpZD0icGF0aDgwIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDEyMi40NDQw +NiwxMDAgaCAtMS4zNDYzNSBWIDg4Ljg1Njc0NSBoIDEuMzQ2MzUgeiIKICAgICAgICAgaWQ9InBh +dGg4MiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAxMjYuNDY4ODEsMTAwIGggLTEuMzQ2 +MzYgViA4OC44NTY3NDUgaCAxLjM0NjM2IHoiCiAgICAgICAgIGlkPSJwYXRoODQiIC8+CiAgICAg +IDxwYXRoCiAgICAgICAgIGQ9Im0gMTM1Ljk1MDYsOTYuMDAzODk3IHEgMCwxLjk1NTA4MyAtMS4w +MDI2LDMuMDg2NTk2IC0xLjAwMjYxLDEuMTMxNTE3IC0yLjY4NTU2LDEuMTMxNTE3IC0xLjY5NzI3 +LDAgLTIuNjk5ODcsLTEuMTMxNTE3IC0wLjk5NTQ1LC0xLjEzMTUxMyAtMC45OTU0NSwtMy4wODY1 +OTYgMCwtMS45NTUwODMgMC45OTU0NSwtMy4wODY1OTYgMS4wMDI2LC0xLjEzODY3NCAyLjY5OTg3 +LC0xLjEzODY3NCAxLjY4Mjk1LDAgMi42ODU1NiwxLjEzODY3NCAxLjAwMjYsMS4xMzE1MTMgMS4w +MDI2LDMuMDg2NTk2IHogbSAtMS4zODkzMiwwIHEgMCwtMS41NTQwNCAtMC42MDg3MywtMi4zMDU5 +OTUgLTAuNjA4NzIsLTAuNzU5MTE2IC0xLjY5MDExLC0wLjc1OTExNiAtMS4wOTU3LDAgLTEuNzA0 +NDMsMC43NTkxMTYgLTAuNjAxNTYsMC43NTE5NTUgLTAuNjAxNTYsMi4zMDU5OTUgMCwxLjUwMzkx +IDAuNjA4NzIsMi4yODQ1MTEgMC42MDg3MywwLjc3MzQzOSAxLjY5NzI3LDAuNzczNDM5IDEuMDc0 +MjIsMCAxLjY4Mjk1LC0wLjc2NjI3OCAwLjYxNTg5LC0wLjc3MzQzOSAwLjYxNTg5LC0yLjI5MTY3 +MiB6IgogICAgICAgICBpZD0icGF0aDg2IiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJNIDE1 +NS43MDkxMSw4OS4zMzY1NjQgMTUyLjkzNzYyLDEwMCBoIC0xLjU5NzAxIEwgMTQ5LjA5OTA3LDkx +LjE0ODQxNyAxNDYuOTA3NjYsMTAwIGggLTEuNTYxMiBsIC0yLjgyMTYyLC0xMC42NjM0MzYgaCAx +LjQ1Mzc4IGwgMi4yNDE1NCw4Ljg2NTkwNiAyLjIwNTczLC04Ljg2NTkwNiBoIDEuNDM5NDYgbCAy +LjIyNzIyLDguOTUxODQ0IDIuMjI3MjIsLTguOTUxODQ0IHoiCiAgICAgICAgIGlkPSJwYXRoODgi +IC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMTYzLjc5NDQyLDk2LjAwMzg5NyBxIDAsMS45 +NTUwODMgLTEuMDAyNjEsMy4wODY1OTYgLTEuMDAyNiwxLjEzMTUxNyAtMi42ODU1NSwxLjEzMTUx +NyAtMS42OTcyNywwIC0yLjY5OTg4LC0xLjEzMTUxNyAtMC45OTU0NCwtMS4xMzE1MTMgLTAuOTk1 +NDQsLTMuMDg2NTk2IDAsLTEuOTU1MDgzIDAuOTk1NDQsLTMuMDg2NTk2IDEuMDAyNjEsLTEuMTM4 +Njc0IDIuNjk5ODgsLTEuMTM4Njc0IDEuNjgyOTUsMCAyLjY4NTU1LDEuMTM4Njc0IDEuMDAyNjEs +MS4xMzE1MTMgMS4wMDI2MSwzLjA4NjU5NiB6IG0gLTEuMzg5MzMsMCBxIDAsLTEuNTU0MDQgLTAu +NjA4NzIsLTIuMzA1OTk1IC0wLjYwODczLC0wLjc1OTExNiAtMS42OTAxMSwtMC43NTkxMTYgLTEu +MDk1NzEsMCAtMS43MDQ0MywwLjc1OTExNiAtMC42MDE1NywwLjc1MTk1NSAtMC42MDE1NywyLjMw +NTk5NSAwLDEuNTAzOTEgMC42MDg3MywyLjI4NDUxMSAwLjYwODcyLDAuNzczNDM5IDEuNjk3Mjcs +MC43NzM0MzkgMS4wNzQyMiwwIDEuNjgyOTUsLTAuNzY2Mjc4IDAuNjE1ODgsLTAuNzczNDM5IDAu +NjE1ODgsLTIuMjkxNjcyIHoiCiAgICAgICAgIGlkPSJwYXRoOTAiIC8+CiAgICAgIDxwYXRoCiAg +ICAgICAgIGQ9Im0gMTcwLjg2OTk2LDkzLjQ2ODczNSBoIC0wLjA3MTYgcSAtMC4zMDA3OCwtMC4w +NzE2MSAtMC41ODcyNCwtMC4xMDAyNjEgLTAuMjc5MywtMC4wMzU4MSAtMC42NjYwMiwtMC4wMzU4 +MSAtMC42MjMwNCwwIC0xLjIwMzEyLDAuMjc5Mjk3IC0wLjU4MDA4LDAuMjcyMTM3IC0xLjExNzE5 +LDAuNzA4OTg2IFYgMTAwIGggLTEuMzQ2MzYgdiAtNy45OTkzNjcgaCAxLjM0NjM2IHYgMS4xODE2 +NDMgcSAwLjgwMjA4LC0wLjY0NDUzMyAxLjQxMDgxLC0wLjkwOTUwNyAwLjYxNTg4LC0wLjI3MjEz +NiAxLjI1MzI1LC0wLjI3MjEzNiAwLjM1MDkyLDAgMC41MDg0NywwLjAyMTQ4IDAuMTU3NTUsMC4w +MTQzMiAwLjQ3MjY2LDAuMDY0NDUgeiIKICAgICAgICAgaWQ9InBhdGg5MiIgLz4KICAgICAgPHBh +dGgKICAgICAgICAgZD0ibSAxNzMuNDk4MjIsMTAwIGggLTEuMzQ2MzYgViA4OC44NTY3NDUgaCAx +LjM0NjM2IHoiCiAgICAgICAgIGlkPSJwYXRoOTQiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9 +Im0gMTgyLjY1MDU4LDEwMCBoIC0xLjM0NjM2IHYgLTAuODM3ODkzIHEgLTAuNTgwMDgsMC41MDEz +MDQgLTEuMjEwMjksMC43ODA2MDEgLTAuNjMwMjEsMC4yNzkzMDIgLTEuMzY3ODQsMC4yNzkzMDIg +LTEuNDMyMjksMCAtMi4yNzczNSwtMS4xMDI4NzEgLTAuODM3ODksLTEuMTAyODY4IC0wLjgzNzg5 +LC0zLjA1Nzk1IDAsLTEuMDE2OTMgMC4yODY0NiwtMS44MTE4NTMgMC4yOTM2MiwtMC43OTQ5MjQg +MC43ODc3NiwtMS4zNTM1MTkgMC40ODY5OCwtMC41NDQyNzIgMS4xMzE1MSwtMC44MzA3MzEgMC42 +NTE3LC0wLjI4NjQ1OSAxLjM0NjM2LC0wLjI4NjQ1OSAwLjYzMDIxLDAgMS4xMTcxOSwwLjEzNjA2 +OCAwLjQ4Njk4LDAuMTI4OTA3IDEuMDI0MDksMC40MDgyMDQgdiAtMy40NjYxNTQgaCAxLjM0NjM2 +IHogbSAtMS4zNDYzNiwtMS45Njk0MDYgdiAtNC41OTA1MDUgcSAtMC41NDQyNywtMC4yNDM0OSAt +MC45NzM5NiwtMC4zMzY1ODkgLTAuNDI5NjksLTAuMDkzMSAtMC45MzgxNSwtMC4wOTMxIC0xLjEz +MTUyLDAgLTEuNzYxNzIsMC43ODc3NjIgLTAuNjMwMjEsMC43ODc3NjIgLTAuNjMwMjEsMi4yMzQz +OCAwLDEuNDI1MTMzIDAuNDg2OTgsMi4xNjk5MjcgMC40ODY5OCwwLjczNzYzMiAxLjU2MTIsMC43 +Mzc2MzIgMC41NzI5MiwwIDEuMTYwMTYsLTAuMjUwNjUyIDAuNTg3MjQsLTAuMjU3ODEzIDEuMDk1 +NywtMC42NTg4NTYgeiIKICAgICAgICAgaWQ9InBhdGg5NiIgLz4KICAgIDwvZz4KICAgIDxnCiAg +ICAgICBhcmlhLWxhYmVsPSJmbG93IHRleHQgd2hpY2ggd3JhcHMiCiAgICAgICB0cmFuc2Zvcm09 +Im1hdHJpeCgwLjI2NDU4MzMzLDAsMCwwLjI2NDU4MzMzLDM3Mi4wMjk2MSwyOC45MDQ1MDUpIgog +ICAgICAgaWQ9InQ0IgogICAgICAgc3R5bGU9ImZvbnQtc2l6ZTo0MHB4O2xpbmUtaGVpZ2h0OjEu +MjUiCiAgICAgICBpbmtzY2FwZTpsYWJlbD0iI2Zsb3dSb290MTQiPgogICAgICA8cGF0aAogICAg +ICAgICBkPSJtIDEyNi45ODk0NiwyMzMuMDQ1NDMgaCAtMC4yNzA2NyBxIC0wLjgzOTA3LC0wLjI0 +MzYxIC0yLjE5MjQyLC0wLjQ4NzIxIC0xLjM1MzM1LC0wLjI3MDY3IC0yLjM4MTg5LC0wLjI3MDY3 +IC0zLjI3NTEsMCAtNC43NjM3OCwxLjQ2MTYyIC0xLjQ2MTYyLDEuNDM0NTUgLTEuNDYxNjIsNS4y +MjM5MiB2IDEuMDI4NTQgaCA5LjE3NTcgdiA0LjI3NjU4IGggLTkuMDEzMyB2IDI1Ljk1NzIgaCAt +NS4wODg1OCB2IC0yNS45NTcyIGggLTMuNDM3NSB2IC00LjI3NjU4IGggMy40Mzc1IHYgLTEuMDAx +NDggcSAwLC01LjM4NjMyIDIuNjc5NjMsLTguMjU1NDEgMi42Nzk2MiwtMi44OTYxNyA3Ljc0MTE0 +LC0yLjg5NjE3IDEuNzA1MjIsMCAzLjA1ODU3LDAuMTYyNDEgMS4zODA0MSwwLjE2MjQgMi41MTcy +MiwwLjM3ODkzIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6NTUuNDMzMXB4IgogICAgICAg +ICBpZD0icGF0aDQxIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDEzNS4zNTMxNSwyNzAu +MjM1NDEgaCAtNS4wODg1OSB2IC00Mi4xMTYxNyBoIDUuMDg4NTkgeiIKICAgICAgICAgc3R5bGU9 +ImZvbnQtc2l6ZTo1NS40MzMxcHgiCiAgICAgICAgIGlkPSJwYXRoNDMiIC8+CiAgICAgIDxwYXRo +CiAgICAgICAgIGQ9Im0gMTcxLjE4OTc4LDI1NS4xMzIwNSBxIDAsNy4zODkyOCAtMy43ODkzNywx +MS42NjU4NiAtMy43ODkzNyw0LjI3NjU3IC0xMC4xNTAxMSw0LjI3NjU3IC02LjQxNDg2LDAgLTEw +LjIwNDIzLC00LjI3NjU3IC0zLjc2MjMxLC00LjI3NjU4IC0zLjc2MjMxLC0xMS42NjU4NiAwLC03 +LjM4OTI3IDMuNzYyMzEsLTExLjY2NTg1IDMuNzg5MzcsLTQuMzAzNjQgMTAuMjA0MjMsLTQuMzAz +NjQgNi4zNjA3NCwwIDEwLjE1MDExLDQuMzAzNjQgMy43ODkzNyw0LjI3NjU4IDMuNzg5MzcsMTEu +NjY1ODUgeiBtIC01LjI1MDk5LDAgcSAwLC01Ljg3MzUyIC0yLjMwMDY5LC04LjcxNTU1IC0yLjMw +MDY5LC0yLjg2OTEgLTYuMzg3OCwtMi44NjkxIC00LjE0MTI0LDAgLTYuNDQxOTMsMi44NjkxIC0y +LjI3MzYyLDIuODQyMDMgLTIuMjczNjIsOC43MTU1NSAwLDUuNjg0MDYgMi4zMDA2OSw4LjYzNDM2 +IDIuMzAwNjksMi45MjMyMyA2LjQxNDg2LDIuOTIzMjMgNC4wNjAwNSwwIDYuMzYwNzQsLTIuODk2 +MTYgMi4zMjc3NSwtMi45MjMyMyAyLjMyNzc1LC04LjY2MTQzIHoiCiAgICAgICAgIHN0eWxlPSJm +b250LXNpemU6NTUuNDMzMXB4IgogICAgICAgICBpZD0icGF0aDQ1IiAvPgogICAgICA8cGF0aAog +ICAgICAgICBkPSJtIDIxNy4wOTUzMiwyNDAuMDAxNjMgLTcuODc2NDgsMzAuMjMzNzggaCAtNC43 +MDk2NSBsIC03Ljc2ODIxLC0yMy4zMDQ2NCAtNy43MTQwOCwyMy4zMDQ2NCBoIC00LjY4MjU5IGwg +LTcuOTU3NjgsLTMwLjIzMzc4IGggNS4zMDUxMiBsIDUuNTQ4NzMsMjMuNDEyOTEgNy41NTE2OCwt +MjMuNDEyOTEgaCA0LjE5NTM3IGwgNy43NDExNSwyMy40MTI5MSA1LjI1MDk4LC0yMy40MTI5MSB6 +IgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOjU1LjQzMzFweCIKICAgICAgICAgaWQ9InBhdGg0 +NyIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAyNTkuNjE3NDgsMjY5Ljk2NDc0IHEgLTEu +NDM0NTUsMC4zNzg5NCAtMy4xMzk3NiwwLjYyMjU0IC0xLjY3ODE1LDAuMjQzNiAtMy4wMDQ0Myww +LjI0MzYgLTQuNjI4NDUsMCAtNy4wMzc0MSwtMi40OTAxNiAtMi40MDg5NiwtMi40OTAxNiAtMi40 +MDg5NiwtNy45ODQ3NSB2IC0xNi4wNzc3NiBoIC0zLjQzNzUgdiAtNC4yNzY1OCBoIDMuNDM3NSB2 +IC04LjY4ODQ5IGggNS4wODg1OSB2IDguNjg4NDkgaCAxMC41MDE5NyB2IDQuMjc2NTggaCAtMTAu +NTAxOTcgdiAxMy43NzcwNyBxIDAsMi4zODE4OSAwLjEwODI3LDMuNzM1MjQgMC4xMDgyNiwxLjMy +NjI4IDAuNzU3ODcsMi40OTAxNiAwLjU5NTQ3LDEuMDgyNjggMS42MjQwMiwxLjU5Njk1IDEuMDU1 +NjEsMC40ODcyMSAzLjE5MzksMC40ODcyMSAxLjI0NTA4LDAgMi41OTg0MiwtMC4zNTE4NyAxLjM1 +MzM1LC0wLjM3ODk0IDEuOTQ4ODIsLTAuNjIyNTQgaCAwLjI3MDY3IHoiCiAgICAgICAgIHN0eWxl +PSJmb250LXNpemU6NTUuNDMzMXB4IgogICAgICAgICBpZD0icGF0aDQ5IiAvPgogICAgICA8cGF0 +aAogICAgICAgICBkPSJtIDI5MS4wNjkyOCwyNTUuNjQ2MzMgaCAtMjIuMjc2MDkgcSAwLDIuNzg3 +ODkgMC44MzkwNyw0Ljg3MjA1IDAuODM5MDgsMi4wNTcwOCAyLjMwMDY5LDMuMzgzMzYgMS40MDc0 +OCwxLjI5OTIyIDMuMzI5MjQsMS45NDg4MiAxLjk0ODgyLDAuNjQ5NjEgNC4yNzY1NywwLjY0OTYx +IDMuMDg1NjMsMCA2LjE5ODMzLC0xLjIxODAxIDMuMTM5NzcsLTEuMjQ1MDggNC40NjYwNSwtMi40 +MzYwMyBoIDAuMjcwNjcgdiA1LjU0ODczIHEgLTIuNTcxMzYsMS4wODI2NyAtNS4yNTA5OSwxLjgx +MzQ4IC0yLjY3OTYzLDAuNzMwODEgLTUuNjI5OTIsMC43MzA4MSAtNy41MjQ2MSwwIC0xMS43NDcw +NiwtNC4wNjAwNCAtNC4yMjI0NCwtNC4wODcxMSAtNC4yMjI0NCwtMTEuNTg0NjUgMCwtNy40MTYz +NSA0LjAzMjk3LC0xMS43NzQxMyA0LjA2MDA1LC00LjM1Nzc3IDEwLjY2NDM4LC00LjM1Nzc3IDYu +MTE3MTMsMCA5LjQxOTMsMy41NzI4MyAzLjMyOTIzLDMuNTcyODQgMy4zMjkyMywxMC4xNTAxMSB6 +IG0gLTQuOTUzMjUsLTMuODk3NjQgcSAtMC4wMjcxLC00LjAwNTkxIC0yLjAzMDAyLC02LjE5ODMz +IC0xLjk3NTg5LC0yLjE5MjQzIC02LjAzNTkzLC0yLjE5MjQzIC00LjA4NzExLDAgLTYuNTIzMTMs +Mi40MDg5NiAtMi40MDg5NiwyLjQwODk2IC0yLjczMzc2LDUuOTgxOCB6IgogICAgICAgICBzdHls +ZT0iZm9udC1zaXplOjU1LjQzMzFweCIKICAgICAgICAgaWQ9InBhdGg1MSIgLz4KICAgICAgPHBh +dGgKICAgICAgICAgZD0ibSAzMjQuOTU3MDksMjcwLjIzNTQxIGggLTYuNDE0ODcgbCAtOC41ODAy +MiwtMTEuNjExNzIgLTguNjM0MzUsMTEuNjExNzIgaCAtNS45Mjc2NiBsIDExLjgwMTE4LC0xNS4w +NzYyOSAtMTEuNjkyOTIsLTE1LjE1NzQ5IGggNi40MTQ4NyBsIDguNTI2MDksMTEuNDIyMjUgOC41 +NTMxNSwtMTEuNDIyMjUgaCA1Ljk1NDczIGwgLTExLjg4MjM5LDE0Ljg4NjgyIHoiCiAgICAgICAg +IHN0eWxlPSJmb250LXNpemU6NTUuNDMzMXB4IgogICAgICAgICBpZD0icGF0aDUzIiAvPgogICAg +ICA8cGF0aAogICAgICAgICBkPSJtIDM0Ny4yODczMSwyNjkuOTY0NzQgcSAtMS40MzQ1NSwwLjM3 +ODk0IC0zLjEzOTc2LDAuNjIyNTQgLTEuNjc4MTUsMC4yNDM2IC0zLjAwNDQzLDAuMjQzNiAtNC42 +Mjg0NSwwIC03LjAzNzQxLC0yLjQ5MDE2IC0yLjQwODk2LC0yLjQ5MDE2IC0yLjQwODk2LC03Ljk4 +NDc1IHYgLTE2LjA3Nzc2IGggLTMuNDM3NSB2IC00LjI3NjU4IGggMy40Mzc1IHYgLTguNjg4NDkg +aCA1LjA4ODU5IHYgOC42ODg0OSBoIDEwLjUwMTk3IHYgNC4yNzY1OCBoIC0xMC41MDE5NyB2IDEz +Ljc3NzA3IHEgMCwyLjM4MTg5IDAuMTA4MjcsMy43MzUyNCAwLjEwODI2LDEuMzI2MjggMC43NTc4 +NywyLjQ5MDE2IDAuNTk1NDcsMS4wODI2OCAxLjYyNDAyLDEuNTk2OTUgMS4wNTU2MSwwLjQ4NzIx +IDMuMTkzOSwwLjQ4NzIxIDEuMjQ1MDgsMCAyLjU5ODQyLC0wLjM1MTg3IDEuMzUzMzUsLTAuMzc4 +OTQgMS45NDg4MiwtMC42MjI1NCBoIDAuMjcwNjcgeiIKICAgICAgICAgc3R5bGU9ImZvbnQtc2l6 +ZTo1NS40MzMxcHgiCiAgICAgICAgIGlkPSJwYXRoNTUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAg +IGQ9Im0gMTQ4Ljc1MTI4LDMwOS4yOTMwMSAtNy44NzY0OCwzMC4yMzM3OCBoIC00LjcwOTY0IGwg +LTcuNzY4MjIsLTIzLjMwNDY0IC03LjcxNDA4LDIzLjMwNDY0IGggLTQuNjgyNTggbCAtNy45NTc2 +OCwtMzAuMjMzNzggaCA1LjMwNTEyIGwgNS41NDg3MywyMy40MTI5MSA3LjU1MTY3LC0yMy40MTI5 +MSBoIDQuMTk1MzggbCA3Ljc0MTE1LDIzLjQxMjkxIDUuMjUwOTgsLTIzLjQxMjkxIHoiCiAgICAg +ICAgIHN0eWxlPSJmb250LXNpemU6NTUuNDMzMXB4IgogICAgICAgICBpZD0icGF0aDU3IiAvPgog +ICAgICA8cGF0aAogICAgICAgICBkPSJtIDE4MS4zNjY5NSwzMzkuNTI2NzkgaCAtNS4wODg1OCB2 +IC0xNy4yMTQ1OCBxIDAsLTIuMDg0MTUgLTAuMjQzNjEsLTMuODk3NjQgLTAuMjQzNiwtMS44NDA1 +NSAtMC44OTMyMSwtMi44NjkwOSAtMC42NzY2NywtMS4xMzY4MSAtMS45NDg4MiwtMS42NzgxNSAt +MS4yNzIxNCwtMC41Njg0MSAtMy4zMDIxNiwtMC41Njg0MSAtMi4wODQxNiwwIC00LjM1Nzc4LDEu +MDI4NTUgLTIuMjczNjIsMS4wMjg1NCAtNC4zNTc3OCwyLjYyNTQ5IHYgMjIuNTczODMgaCAtNS4w +ODg1OCB2IC00Mi4xMTYxNiBoIDUuMDg4NTggdiAxNS4yMzg2OCBxIDIuMzgxODksLTEuOTc1ODgg +NC45MjYxOCwtMy4wODU2MyAyLjU0NDMsLTEuMTA5NzQgNS4yMjM5MiwtMS4xMDk3NCA0Ljg5OTEy +LDAgNy40NzA0OCwyLjk1MDMgMi41NzEzNiwyLjk1MDI5IDIuNTcxMzYsOC40OTkwMiB6IgogICAg +ICAgICBzdHlsZT0iZm9udC1zaXplOjU1LjQzMzFweCIKICAgICAgICAgaWQ9InBhdGg1OSIgLz4K +ICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAxOTYuNjMyNzEsMzA0LjIzMTUgaCAtNS43MzgyIHYg +LTUuMjc4MDYgaCA1LjczODIgeiBtIC0wLjMyNDgxLDM1LjI5NTI5IGggLTUuMDg4NTggdiAtMzAu +MjMzNzggaCA1LjA4ODU4IHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6NTUuNDMzMXB4Igog +ICAgICAgICBpZD0icGF0aDYxIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDIyOC43MzQx +LDMzNy42MzIxIHEgLTIuNTQ0MjksMS4yMTgwMiAtNC44NDQ5OCwxLjg5NDY5IC0yLjI3MzYyLDAu +Njc2NjcgLTQuODQ0OTgsMC42NzY2NyAtMy4yNzUxLDAgLTYuMDA4ODYsLTAuOTQ3MzQgLTIuNzMz +NzcsLTAuOTc0NDEgLTQuNjgyNTksLTIuOTIzMjMgLTEuOTc1ODgsLTEuOTQ4ODIgLTMuMDU4NTYs +LTQuOTI2MTggLTEuMDgyNjgsLTIuOTc3MzcgLTEuMDgyNjgsLTYuOTU2MjEgMCwtNy40MTYzNCA0 +LjA2MDA0LC0xMS42Mzg3OCA0LjA4NzExLC00LjIyMjQ1IDEwLjc3MjY1LC00LjIyMjQ1IDIuNTk4 +NDIsMCA1LjA4ODU4LDAuNzMwODEgMi41MTcyMywwLjczMDgxIDQuNjAxMzgsMS43ODY0MiB2IDUu +NjU2OTkgaCAtMC4yNzA2NyBxIC0yLjMyNzc1LC0xLjgxMzQ4IC00LjgxNzkxLC0yLjc4Nzg5IC0y +LjQ2MzA5LC0wLjk3NDQxIC00LjgxNzkyLC0wLjk3NDQxIC00LjMzMDcxLDAgLTYuODQ3OTMsMi45 +MjMyMyAtMi40OTAxNiwyLjg5NjE2IC0yLjQ5MDE2LDguNTI2MDggMCw1LjQ2NzUzIDIuNDM2MDIs +OC40MTc4MiAyLjQ2MzA5LDIuOTIzMjMgNi45MDIwNywyLjkyMzIzIDEuNTQyODIsMCAzLjEzOTc3 +LC0wLjQwNiAxLjU5Njk1LC0wLjQwNjAxIDIuODY5MDksLTEuMDU1NjEgMS4xMDk3NSwtMC41Njg0 +MSAyLjA4NDE2LC0xLjE5MDk1IDAuOTc0NDEsLTAuNjQ5NjEgMS41NDI4MSwtMS4xMDk3NCBoIDAu +MjcwNjcgeiIKICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTo1NS40MzMxcHgiCiAgICAgICAgIGlk +PSJwYXRoNjMiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMjYwLjUzNzc2LDMzOS41MjY3 +OSBoIC01LjA4ODU5IHYgLTE3LjIxNDU4IHEgMCwtMi4wODQxNSAtMC4yNDM2LC0zLjg5NzY0IC0w +LjI0MzYsLTEuODQwNTUgLTAuODkzMjEsLTIuODY5MDkgLTAuNjc2NjcsLTEuMTM2ODEgLTEuOTQ4 +ODIsLTEuNjc4MTUgLTEuMjcyMTUsLTAuNTY4NDEgLTMuMzAyMTcsLTAuNTY4NDEgLTIuMDg0MTUs +MCAtNC4zNTc3NywxLjAyODU1IC0yLjI3MzYzLDEuMDI4NTQgLTQuMzU3NzgsMi42MjU0OSB2IDIy +LjU3MzgzIGggLTUuMDg4NTkgdiAtNDIuMTE2MTYgaCA1LjA4ODU5IHYgMTUuMjM4NjggcSAyLjM4 +MTg5LC0xLjk3NTg4IDQuOTI2MTgsLTMuMDg1NjMgMi41NDQyOSwtMS4xMDk3NCA1LjIyMzkyLC0x +LjEwOTc0IDQuODk5MTIsMCA3LjQ3MDQ4LDIuOTUwMyAyLjU3MTM2LDIuOTUwMjkgMi41NzEzNiw4 +LjQ5OTAyIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6NTUuNDMzMXB4IgogICAgICAgICBp +ZD0icGF0aDY1IiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDE0OC43NTEyOCwzNzguNTg0 +NCAtNy44NzY0OCwzMC4yMzM3NyBoIC00LjcwOTY0IGwgLTcuNzY4MjIsLTIzLjMwNDY0IC03Ljcx +NDA4LDIzLjMwNDY0IGggLTQuNjgyNTggTCAxMDguMDQyNiwzNzguNTg0NCBoIDUuMzA1MTIgbCA1 +LjU0ODczLDIzLjQxMjkgNy41NTE2NywtMjMuNDEyOSBoIDQuMTk1MzggbCA3Ljc0MTE1LDIzLjQx +MjkgNS4yNTA5OCwtMjMuNDEyOSB6IgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOjU1LjQzMzFw +eCIKICAgICAgICAgaWQ9InBhdGg2NyIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAxNzQu +OTUyMDksMzg0LjEzMzEyIGggLTAuMjcwNjcgcSAtMS4xMzY4MiwtMC4yNzA2NyAtMi4yMTk0OSwt +MC4zNzg5NCAtMS4wNTU2MSwtMC4xMzUzMyAtMi41MTcyMywtMC4xMzUzMyAtMi4zNTQ4MiwwIC00 +LjU0NzI1LDEuMDU1NjEgLTIuMTkyNDIsMS4wMjg1NCAtNC4yMjI0NCwyLjY3OTYzIHYgMjEuNDY0 +MDggaCAtNS4wODg1OCBWIDM3OC41ODQ0IGggNS4wODg1OCB2IDQuNDY2MDQgcSAzLjAzMTUsLTIu +NDM2MDIgNS4zMzIxOSwtMy40Mzc1IDIuMzI3NzYsLTEuMDI4NTQgNC43MzY3MSwtMS4wMjg1NCAx +LjMyNjI4LDAgMS45MjE3NiwwLjA4MTIgMC41OTU0NywwLjA1NDEgMS43ODY0MiwwLjI0MzYgeiIK +ICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTo1NS40MzMxcHgiCiAgICAgICAgIGlkPSJwYXRoNjki +IC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMjAyLjI2MjYzLDQwOC44MTgxNyBoIC01LjA2 +MTUyIHYgLTMuMjIwOTYgcSAtMC42NzY2NywwLjQ2MDEzIC0xLjg0MDU1LDEuMjk5MjEgLTEuMTM2 +ODEsMC44MTIwMSAtMi4yMTk0OSwxLjI5OTIxIC0xLjI3MjE1LDAuNjIyNTQgLTIuOTIzMjMsMS4w +Mjg1NSAtMS42NTEwOCwwLjQzMzA3IC0zLjg3MDU3LDAuNDMzMDcgLTQuMDg3MTEsMCAtNi45Mjkx +NCwtMi43MDY3IC0yLjg0MjAzLC0yLjcwNjY5IC0yLjg0MjAzLC02LjkwMjA3IDAsLTMuNDM3NSAx +LjQ2MTYyLC01LjU0ODcyIDEuNDg4NjgsLTIuMTM4MjkgNC4yMjI0NCwtMy4zNTYzIDIuNzYwODMs +LTEuMjE4MDEgNi42MzE0LC0xLjY1MTA5IDMuODcwNTcsLTAuNDMzMDcgOC4zMDk1NSwtMC42NDk2 +IHYgLTAuNzg0OTQgcSAwLC0xLjczMjI5IC0wLjYyMjU0LC0yLjg2OTEgLTAuNTk1NDcsLTEuMTM2 +ODEgLTEuNzMyMjgsLTEuNzg2NDIgLTEuMDgyNjgsLTAuNjIyNTQgLTIuNTk4NDMsLTAuODM5MDcg +LTEuNTE1NzUsLTAuMjE2NTQgLTMuMTY2ODMsLTAuMjE2NTQgLTIuMDAyOTUsMCAtNC40NjYwNSww +LjU0MTM0IC0yLjQ2MzA5LDAuNTE0MjcgLTUuMDg4NTgsMS41MTU3NSBoIC0wLjI3MDY3IFYgMzc5 +LjIzNCBxIDEuNDg4NjgsLTAuNDA2IDQuMzAzNjQsLTAuODkzMjEgMi44MTQ5NiwtMC40ODcyIDUu +NTQ4NzMsLTAuNDg3MiAzLjE5MzksMCA1LjU0ODcyLDAuNTQxMzQgMi4zODE4OSwwLjUxNDI3IDQu +MTE0MTgsMS43ODY0MiAxLjcwNTIxLDEuMjQ1MDcgMi41OTg0MiwzLjIyMDk2IDAuODkzMjEsMS45 +NzU4OSAwLjg5MzIxLDQuODk5MTIgeiBtIC01LjA2MTUyLC03LjQ0MzQxIHYgLTguNDE3ODIgcSAt +Mi4zMjc3NSwwLjEzNTM0IC01LjQ5NDU5LDAuNDA2MDEgLTMuMTM5NzYsMC4yNzA2NyAtNC45ODAz +MSwwLjc4NDk0IC0yLjE5MjQzLDAuNjIyNTQgLTMuNTQ1NzcsMS45NDg4MiAtMS4zNTMzNSwxLjI5 +OTIxIC0xLjM1MzM1LDMuNTk5OSAwLDIuNTk4NDMgMS41Njk4OCwzLjkyNDcxIDEuNTY5ODgsMS4y +OTkyMSA0Ljc5MDg1LDEuMjk5MjEgMi42Nzk2MywwIDQuODk5MTIsLTEuMDI4NTQgMi4yMTk0OSwt +MS4wNTU2MSA0LjExNDE3LC0yLjUxNzIzIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6NTUu +NDMzMXB4IgogICAgICAgICBpZD0icGF0aDcxIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJt +IDIzOC42Njc2NywzOTMuMzM1ODggcSAwLDMuNjgxMSAtMS4wNTU2MSw2LjczOTY3IC0xLjA1NTYx +LDMuMDMxNSAtMi45NzczNiw1LjE0MjcyIC0xLjc4NjQyLDIuMDAyOTUgLTQuMjIyNDUsMy4xMTI3 +IC0yLjQwODk1LDEuMDgyNjggLTUuMTE1NjUsMS4wODI2OCAtMi4zNTQ4MiwwIC00LjI3NjU3LC0w +LjUxNDI4IC0xLjg5NDY5LC0wLjUxNDI3IC0zLjg3MDU4LC0xLjU5Njk1IHYgMTIuNjY3MzMgaCAt +NS4wODg1OCBWIDM3OC41ODQ0IGggNS4wODg1OCB2IDMuMTY2ODMgcSAyLjAzMDAyLC0xLjcwNTIy +IDQuNTQ3MjUsLTIuODQyMDMgMi41NDQyOSwtMS4xNjM4OCA1LjQxMzM5LC0xLjE2Mzg4IDUuNDY3 +NTIsMCA4LjQ5OTAyLDQuMTQxMjQgMy4wNTg1Niw0LjExNDE4IDMuMDU4NTYsMTEuNDQ5MzIgeiBt +IC01LjI1MDk4LDAuMTM1MzMgcSAwLC01LjQ2NzUyIC0xLjg2NzYyLC04LjE3NDIxIC0xLjg2NzYy +LC0yLjcwNjcgLTUuNzM4MiwtMi43MDY3IC0yLjE5MjQyLDAgLTQuNDExOTEsMC45NDczNSAtMi4y +MTk0OSwwLjk0NzM0IC00LjI0OTUxLDIuNDkwMTYgdiAxNy4xMzMzNyBxIDIuMTY1MzYsMC45NzQ0 +MSAzLjcwODE3LDEuMzI2MjggMS41Njk4OSwwLjM1MTg3IDMuNTQ1NzcsMC4zNTE4NyA0LjI0OTUx +LDAgNi42MzE0LC0yLjg2OTA5IDIuMzgxOSwtMi44NjkxIDIuMzgxOSwtOC40OTkwMyB6IgogICAg +ICAgICBzdHlsZT0iZm9udC1zaXplOjU1LjQzMzFweCIKICAgICAgICAgaWQ9InBhdGg3MyIgLz4K +ICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAyNjguMTk3NzIsNDAwLjEwMjYyIHEgMCw0LjE0MTI0 +IC0zLjQzNzUsNi43OTM4IC0zLjQxMDQ0LDIuNjUyNTYgLTkuMzM4MSwyLjY1MjU2IC0zLjM1NjMs +MCAtNi4xNzEyNiwtMC43ODQ5NCAtMi43ODc5LC0wLjgxMjAxIC00LjY4MjU4LC0xLjc1OTM1IHYg +LTUuNzExMTMgaCAwLjI3MDY3IHEgMi40MDg5NSwxLjgxMzQ5IDUuMzU5MjUsMi44OTYxNiAyLjk1 +MDMsMS4wNTU2MiA1LjY1Njk5LDEuMDU1NjIgMy4zNTYzLDAgNS4yNTA5OSwtMS4wODI2OCAxLjg5 +NDY4LC0xLjA4MjY4IDEuODk0NjgsLTMuNDEwNDQgMCwtMS43ODY0MiAtMS4wMjg1NCwtMi43MDY2 +OSAtMS4wMjg1NCwtMC45MjAyOCAtMy45NTE3NywtMS41Njk4OCAtMS4wODI2OCwtMC4yNDM2MSAt +Mi44NDIwMywtMC41Njg0MSAtMS43MzIyOSwtMC4zMjQ4IC0zLjE2NjgzLC0wLjcwMzc0IC0zLjk3 +ODg1LC0xLjA1NTYxIC01LjY1NywtMy4wODU2MyAtMS42NTEwOCwtMi4wNTcwOSAtMS42NTEwOCwt +NS4wMzQ0NSAwLC0xLjg2NzYyIDAuNzU3ODcsLTMuNTE4NzEgMC43ODQ5NSwtMS42NTEwOCAyLjM1 +NDgzLC0yLjk1MDI5IDEuNTE1NzUsLTEuMjcyMTUgMy44NDM1MSwtMi4wMDI5NiAyLjM1NDgyLC0w +Ljc1Nzg3IDUuMjUwOTgsLTAuNzU3ODcgMi43MDY3LDAgNS40Njc1MiwwLjY3NjY3IDIuNzg3OSww +LjY0OTYxIDQuNjI4NDUsMS41OTY5NSB2IDUuNDQwNDYgaCAtMC4yNzA2NyBxIC0xLjk0ODgyLC0x +LjQzNDU1IC00LjczNjcxLC0yLjQwODk2IC0yLjc4NzksLTEuMDAxNDggLTUuNDY3NTIsLTEuMDAx +NDggLTIuNzg3OSwwIC00LjcwOTY1LDEuMDgyNjggLTEuOTIxNzYsMS4wNTU2MSAtMS45MjE3Niwz +LjE2NjgzIDAsMS44Njc2MiAxLjE2Mzg4LDIuODE0OTYgMS4xMzY4MSwwLjk0NzM1IDMuNjgxMTEs +MS41NDI4MiAxLjQwNzQ4LDAuMzI0OCAzLjEzOTc2LDAuNjQ5NjEgMS43NTkzNSwwLjMyNDggMi45 +MjMyMywwLjU5NTQ3IDMuNTQ1NzcsMC44MTIwMSA1LjQ2NzUyLDIuNzg3OSAxLjkyMTc2LDIuMDAy +OTUgMS45MjE3Niw1LjMwNTEyIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6NTUuNDMzMXB4 +IgogICAgICAgICBpZD0icGF0aDc1IiAvPgogICAgPC9nPgogICAgPGcKICAgICAgIGFyaWEtbGFi +ZWw9IlVQUEVSIgogICAgICAgaWQ9InQyIgogICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3 +cHg7bGluZS1oZWlnaHQ6MS4yNSIKICAgICAgIGlua3NjYXBlOmxhYmVsPSIjdGV4dDM3MjciPgog +ICAgICA8cGF0aAogICAgICAgICBkPSJtIDIwOS40NjAzMSw5NS43MTc0MzggcSAwLDEuMTYwMTU5 +IC0wLjI1NzgxLDIuMDI2Njk3IC0wLjI1MDY2LDAuODU5Mzc3IC0wLjgzMDc0LDEuNDMyMjk1IC0w +LjU1MTQzLDAuNTQ0MjcyIC0xLjI4OTA2LDAuNzk0OTI0IC0wLjczNzYzLDAuMjUwNjU2IC0xLjcx +ODc2LDAuMjUwNjU2IC0xLjAwMjYsMCAtMS43NDc0LC0wLjI2NDk3OSAtMC43NDQ3OSwtMC4yNjQ5 +NzQgLTEuMjUzMjUsLTAuNzgwNjAxIC0wLjU4MDA4LC0wLjU4NzI0MSAtMC44Mzc5LC0xLjQxNzk3 +MiAtMC4yNTA2NSwtMC44MzA3MzEgLTAuMjUwNjUsLTIuMDQxMDIgdiAtNi4zODA4NzQgaCAxLjQx +Nzk3IHYgNi40NTI0ODkgcSAwLDAuODY2NTM4IDAuMTE0NTksMS4zNjc4NDIgMC4xMjE3NCwwLjUw +MTMwMyAwLjQwMTA0LDAuOTA5NTA3IDAuMzE1MTEsMC40NjU0OTYgMC44NTIyMiwwLjcwMTgyNCAw +LjU0NDI3LDAuMjM2MzI5IDEuMzAzMzgsMC4yMzYzMjkgMC43NjYyOCwwIDEuMzAzMzksLTAuMjI5 +MTY3IDAuNTM3MTEsLTAuMjM2MzI5IDAuODU5MzgsLTAuNzA4OTg2IDAuMjc5MywtMC40MDgyMDQg +MC4zOTM4OCwtMC45MzA5OTIgMC4xMjE3NSwtMC41Mjk5NDkgMC4xMjE3NSwtMS4zMTA1NSB2IC02 +LjQ4ODI5NiBoIDEuNDE3OTcgeiIKICAgICAgICAgaWQ9InBhdGg5OSIgLz4KICAgICAgPHBhdGgK +ICAgICAgICAgZD0ibSAyMTkuMTQyNjIsOTIuNTU5MjI4IHEgMCwwLjcwODk4NiAtMC4yNTA2NSwx +LjMxNzcxMSAtMC4yNDM0OSwwLjYwMTU2NCAtMC42ODc1LDEuMDQ1NTc1IC0wLjU1MTQzLDAuNTUx +NDM0IC0xLjMwMzM5LDAuODMwNzMxIC0wLjc1MTk1LDAuMjcyMTM2IC0xLjg5Nzc5LDAuMjcyMTM2 +IGggLTEuNDE3OTcgViAxMDAgaCAtMS40MTc5NyBWIDg5LjMzNjU2NCBoIDIuODkzMjMgcSAwLjk1 +OTY0LDAgMS42MjU2NiwwLjE2NDcxNCAwLjY2NjAxLDAuMTU3NTUyIDEuMTgxNjQsMC41MDEzMDMg +MC42MDg3MywwLjQwODIwNCAwLjkzODE1LDEuMDE2OTMgMC4zMzY1OSwwLjYwODcyNSAwLjMzNjU5 +LDEuNTM5NzE3IHogbSAtMS40NzUyNiwwLjAzNTgxIHEgMCwtMC41NTE0MzMgLTAuMTkzMzYsLTAu +OTU5NjM4IC0wLjE5MzM2LC0wLjQwODIwNCAtMC41ODcyNCwtMC42NjYwMTcgLTAuMzQzNzUsLTAu +MjIyMDA1IC0wLjc4Nzc2LC0wLjMxNTEwNSAtMC40MzY4NSwtMC4xMDAyNiAtMS4xMTAwMywtMC4x +MDAyNiBoIC0xLjQwMzY1IHYgNC4yNjEwNzcgaCAxLjE5NTk2IHEgMC44NTkzOCwwIDEuMzk2NDks +LTAuMTUwMzkxIDAuNTM3MTEsLTAuMTU3NTUyIDAuODczNywtMC40OTQxNDEgMC4zMzY1OSwtMC4z +NDM3NTEgMC40NzI2NiwtMC43MjMzMDkgMC4xNDMyMywtMC4zNzk1NTkgMC4xNDMyMywtMC44NTIy +MTYgeiIKICAgICAgICAgaWQ9InBhdGgxMDEiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0g +MjI3Ljk4NzA0LDkyLjU1OTIyOCBxIDAsMC43MDg5ODYgLTAuMjUwNjUsMS4zMTc3MTEgLTAuMjQz +NDksMC42MDE1NjQgLTAuNjg3NSwxLjA0NTU3NSAtMC41NTE0MywwLjU1MTQzNCAtMS4zMDMzOSww +LjgzMDczMSAtMC43NTE5NSwwLjI3MjEzNiAtMS44OTc3OSwwLjI3MjEzNiBoIC0xLjQxNzk3IFYg +MTAwIGggLTEuNDE3OTcgViA4OS4zMzY1NjQgaCAyLjg5MzIzIHEgMC45NTk2NCwwIDEuNjI1NjYs +MC4xNjQ3MTQgMC42NjYwMSwwLjE1NzU1MiAxLjE4MTY0LDAuNTAxMzAzIDAuNjA4NzMsMC40MDgy +MDQgMC45MzgxNSwxLjAxNjkzIDAuMzM2NTksMC42MDg3MjUgMC4zMzY1OSwxLjUzOTcxNyB6IG0g +LTEuNDc1MjYsMC4wMzU4MSBxIDAsLTAuNTUxNDMzIC0wLjE5MzM2LC0wLjk1OTYzOCAtMC4xOTMz +NiwtMC40MDgyMDQgLTAuNTg3MjQsLTAuNjY2MDE3IC0wLjM0Mzc1LC0wLjIyMjAwNSAtMC43ODc3 +NiwtMC4zMTUxMDUgLTAuNDM2ODUsLTAuMTAwMjYgLTEuMTEwMDMsLTAuMTAwMjYgaCAtMS40MDM2 +NSB2IDQuMjYxMDc3IGggMS4xOTU5NiBxIDAuODU5MzgsMCAxLjM5NjQ5LC0wLjE1MDM5MSAwLjUz +NzExLC0wLjE1NzU1MiAwLjg3MzcsLTAuNDk0MTQxIDAuMzM2NTksLTAuMzQzNzUxIDAuNDcyNjYs +LTAuNzIzMzA5IDAuMTQzMjMsLTAuMzc5NTU5IDAuMTQzMjMsLTAuODUyMjE2IHoiCiAgICAgICAg +IGlkPSJwYXRoMTAzIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDIzNi44ODE1OSwxMDAg +aCAtNy4wMjU0IFYgODkuMzM2NTY0IGggNy4wMjU0IHYgMS4yNjA0MiBoIC01LjYwNzQzIHYgMi45 +MjE4ODEgaCA1LjYwNzQzIHYgMS4yNjA0MiBoIC01LjYwNzQzIHYgMy45NjAyOTUgaCA1LjYwNzQz +IHoiCiAgICAgICAgIGlkPSJwYXRoMTA1IiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDI0 +Ny45NTMyNCwxMDAgaCAtMS44NDA1IGwgLTMuNTY2NDIsLTQuMjM5NTkzIGggLTEuOTk4MDUgViAx +MDAgSCAyMzkuMTMwMyBWIDg5LjMzNjU2NCBoIDIuOTg2MzQgcSAwLjk2Njc5LDAgMS42MTEzMyww +LjEyODkwNyAwLjY0NDUzLDAuMTIxNzQ1IDEuMTYwMTYsMC40NDQwMTEgMC41ODAwOCwwLjM2NTIz +NSAwLjkwMjM0LDAuOTIzODMgMC4zMjk0MywwLjU1MTQzNCAwLjMyOTQzLDEuNDAzNjQ5IDAsMS4x +NTI5OTggLTAuNTgwMDgsMS45MzM1OTkgLTAuNTgwMDgsMC43NzM0MzkgLTEuNTk3MDEsMS4xNjcz +MiB6IG0gLTMuMzE1NzcsLTcuNjYyNzc4IHEgMCwtMC40NTgzMzQgLTAuMTY0NzEsLTAuODA5MjQ3 +IC0wLjE1NzU1LC0wLjM1ODA3MyAtMC41Mjk5NSwtMC42MDE1NjQgLTAuMzA3OTQsLTAuMjA3Njgy +IC0wLjczMDQ3LC0wLjI4NjQ1OSAtMC40MjI1MywtMC4wODU5NCAtMC45OTU0NCwtMC4wODU5NCBo +IC0xLjY2ODYzIHYgNC4wMjQ3NDkgaCAxLjQzMjMgcSAwLjY3MzE4LDAgMS4xNzQ0OCwtMC4xMTQ1 +ODQgMC41MDEzLC0wLjEyMTc0NSAwLjg1MjIxLC0wLjQ0NDAxMSAwLjMyMjI3LC0wLjMwMDc4MiAw +LjQ3MjY2LC0wLjY4NzUwMiAwLjE1NzU1LC0wLjM5Mzg4MSAwLjE1NzU1LC0wLjk5NTQ0NSB6Igog +ICAgICAgICBpZD0icGF0aDEwNyIgLz4KICAgIDwvZz4KICAgIDxnCiAgICAgICBhcmlhLWxhYmVs +PSJNdWx0aSBsaW5lCnRleHQKRk9PIgogICAgICAgaWQ9InQzIgogICAgICAgc3R5bGU9ImZvbnQt +c2l6ZToxMC41ODMzcHg7bGluZS1oZWlnaHQ6MS4yNSIKICAgICAgIGlua3NjYXBlOmxhYmVsPSIj +dGV4dDM3MzUiPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDMxMC45Mjg0MSwxMDAgaCAtMS40 +MTc5NyB2IC05LjE4ODE3MiBsIC0yLjk2NDg1LDYuMjUxOTY3IGggLTAuODQ1MDYgbCAtMi45NDMz +NiwtNi4yNTE5NjcgViAxMDAgaCAtMS4zMjQ4OCBWIDg5LjMzNjU2NCBoIDEuOTMzNiBsIDIuODQz +MTEsNS45MzY4NjMgMi43NSwtNS45MzY4NjMgaCAxLjk2OTQxIHoiCiAgICAgICAgIHN0eWxlPSJm +b250LXNpemU6MTQuNjY2N3B4IgogICAgICAgICBpZD0icGF0aDExMCIgLz4KICAgICAgPHBhdGgK +ICAgICAgICAgZD0ibSAzMjAuMzE3MSwxMDAgaCAtMS4zNDYzNSB2IC0wLjg4ODAyMyBxIC0wLjY4 +MDM0LDAuNTM3MTExIC0xLjMwMzM5LDAuODIzNTcgLTAuNjIzMDUsMC4yODY0NjMgLTEuMzc1LDAu +Mjg2NDYzIC0xLjI2MDQyLDAgLTEuOTYyMjUsLTAuNzY2MjgyIC0wLjcwMTgyLC0wLjc3MzQzOSAt +MC43MDE4MiwtMi4yNjMwMjYgdiAtNS4xOTIwNjkgaCAxLjM0NjM1IHYgNC41NTQ2OTggcSAwLDAu +NjA4NzI1IDAuMDU3MywxLjA0NTU3NSAwLjA1NzMsMC40Mjk2ODggMC4yNDM0OSwwLjczNzYzMiAw +LjE5MzM2LDAuMzE1MTA1IDAuNTAxMywwLjQ1ODMzNCAwLjMwNzk0LDAuMTQzMjMgMC44OTUxOCww +LjE0MzIzIDAuNTIyNzksMCAxLjEzODY4LC0wLjI3MjEzNiAwLjYyMzA1LC0wLjI3MjEzNiAxLjE2 +MDE2LC0wLjY5NDY2MyB2IC01Ljk3MjY3IGggMS4zNDYzNSB6IgogICAgICAgICBzdHlsZT0iZm9u +dC1zaXplOjE0LjY2NjdweCIKICAgICAgICAgaWQ9InBhdGgxMTIiIC8+CiAgICAgIDxwYXRoCiAg +ICAgICAgIGQ9Im0gMzI0LjMyNzUzLDEwMCBoIC0xLjM0NjM2IFYgODguODU2NzQ1IGggMS4zNDYz +NiB6IgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOjE0LjY2NjdweCIKICAgICAgICAgaWQ9InBh +dGgxMTQiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMzMxLjE0NTI1LDk5LjkyODM4NSBx +IC0wLjM3OTU1LDAuMTAwMjY1IC0wLjgzMDczLDAuMTY0NzE1IC0wLjQ0NDAxLDAuMDY0NCAtMC43 +OTQ5MiwwLjA2NDQgLTEuMjI0NjEsMCAtMS44NjE5OCwtMC42NTg4NTMgLTAuNjM3MzgsLTAuNjU4 +ODU2IC0wLjYzNzM4LC0yLjExMjYzNSB2IC00LjI1MzkxNiBoIC0wLjkwOTUgdiAtMS4xMzE1MTMg +aCAwLjkwOTUgdiAtMi4yOTg4MzQgaCAxLjM0NjM2IHYgMi4yOTg4MzQgaCAyLjc3ODY1IHYgMS4x +MzE1MTMgaCAtMi43Nzg2NSB2IDMuNjQ1MTkgcSAwLDAuNjMwMjEgMC4wMjg2LDAuOTg4Mjg0IDAu +MDI4NiwwLjM1MDkxMiAwLjIwMDUyLDAuNjU4ODU2IDAuMTU3NTUsMC4yODY0NTkgMC40Mjk2OSww +LjQyMjUyNyAwLjI3OTI5LDAuMTI4OTA2IDAuODQ1MDUsMC4xMjg5MDYgMC4zMjk0MywwIDAuNjg3 +NSwtMC4wOTMxIDAuMzU4MDgsLTAuMTAwMjYxIDAuNTE1NjMsLTAuMTY0NzE0IGggMC4wNzE2IHoi +CiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTQuNjY2N3B4IgogICAgICAgICBpZD0icGF0aDEx +NiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAzMzQuMjE3NTMsOTAuNjYxNDM3IGggLTEu +NTE4MjQgdiAtMS4zOTY0ODggaCAxLjUxODI0IHogTSAzMzQuMTMxNTksMTAwIGggLTEuMzQ2MzYg +diAtNy45OTkzNjcgaCAxLjM0NjM2IHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTQuNjY2 +N3B4IgogICAgICAgICBpZD0icGF0aDExOCIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAz +NDMuMzEyNiwxMDAgaCAtMS4zNDYzNiBWIDg4Ljg1Njc0NSBoIDEuMzQ2MzYgeiIKICAgICAgICAg +c3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAgICAgIGlkPSJwYXRoMTIwIiAvPgogICAg +ICA8cGF0aAogICAgICAgICBkPSJtIDM0Ny40MjMyOSw5MC42NjE0MzcgaCAtMS41MTgyNCB2IC0x +LjM5NjQ4OCBoIDEuNTE4MjQgeiBNIDM0Ny4zMzczNSwxMDAgaCAtMS4zNDYzNiB2IC03Ljk5OTM2 +NyBoIDEuMzQ2MzYgeiIKICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAg +ICAgIGlkPSJwYXRoMTIyIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDM1Ni42OTAyMywx +MDAgaCAtMS4zNDYzNSB2IC00LjU1NDY5OCBxIDAsLTAuNTUxNDM0IC0wLjA2NDUsLTEuMDMxMjUy +IC0wLjA2NDUsLTAuNDg2OTgxIC0wLjIzNjMyLC0wLjc1OTExNyAtMC4xNzkwNCwtMC4zMDA3ODIg +LTAuNTE1NjMsLTAuNDQ0MDExIC0wLjMzNjU5LC0wLjE1MDM5MSAtMC44NzM3LC0wLjE1MDM5MSAt +MC41NTE0MywwIC0xLjE1MywwLjI3MjEzNiAtMC42MDE1NiwwLjI3MjEzNiAtMS4xNTMsMC42OTQ2 +NjMgViAxMDAgaCAtMS4zNDYzNSB2IC03Ljk5OTM2NyBoIDEuMzQ2MzUgdiAwLjg4ODAyMyBxIDAu +NjMwMjEsLTAuNTIyNzg4IDEuMzAzMzksLTAuODE2NDA5IDAuNjczMTgsLTAuMjkzNjIgMS4zODIx +NywtMC4yOTM2MiAxLjI5NjIyLDAgMS45NzY1NiwwLjc4MDYwMSAwLjY4MDM0LDAuNzgwNiAwLjY4 +MDM0LDIuMjQ4NzAzIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTQuNjY2N3B4IgogICAg +ICAgICBpZD0icGF0aDEyNCIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAzNjUuOTc4Njcs +OTYuMTM5OTY1IGggLTUuODkzOSBxIDAsMC43Mzc2MzIgMC4yMjIwMSwxLjI4OTA2NiAwLjIyMiww +LjU0NDI3MiAwLjYwODcyLDAuODk1MTg0IDAuMzcyNCwwLjM0Mzc1MSAwLjg4MDg2LDAuNTE1NjI2 +IDAuNTE1NjMsMC4xNzE4NzUgMS4xMzE1MiwwLjE3MTg3NSAwLjgxNjQsMCAxLjYzOTk3LC0wLjMy +MjI2NiAwLjgzMDc0LC0wLjMyOTQyOCAxLjE4MTY1LC0wLjY0NDUzMyBoIDAuMDcxNiB2IDEuNDY4 +MTAzIHEgLTAuNjgwMzQsMC4yODY0NTkgLTEuMzg5MzIsMC40Nzk4MTkgLTAuNzA4OTksMC4xOTMz +NjEgLTEuNDg5NTksMC4xOTMzNjEgLTEuOTkwODksMCAtMy4xMDgwOCwtMS4wNzQyMjMgLTEuMTE3 +MTksLTEuMDgxMzgzIC0xLjExNzE5LC0zLjA2NTExMSAwLC0xLjk2MjI0NCAxLjA2NzA2LC0zLjEx +NTI0MiAxLjA3NDIyLC0xLjE1Mjk5NyAyLjgyMTYyLC0xLjE1Mjk5NyAxLjYxODQ5LDAgMi40OTIx +OSwwLjk0NTMxNSAwLjg4MDg3LDAuOTQ1MzE0IDAuODgwODcsMi42ODU1NTMgeiBtIC0xLjMxMDU1 +LC0xLjAzMTI1MiBxIC0wLjAwNywtMS4wNTk4OTkgLTAuNTM3MTIsLTEuNjM5OTc4IC0wLjUyMjc4 +LC0wLjU4MDA3OSAtMS41OTcsLTAuNTgwMDc5IC0xLjA4MTM5LDAgLTEuNzI1OTIsMC42MzczNzEg +LTAuNjM3MzcsMC42MzczNzEgLTAuNzIzMzEsMS41ODI2ODYgeiIKICAgICAgICAgc3R5bGU9ImZv +bnQtc2l6ZToxNC42NjY3cHgiCiAgICAgICAgIGlkPSJwYXRoMTI2IiAvPgogICAgICA8cGF0aAog +ICAgICAgICBkPSJtIDMwNS40Nzg1MywxMTguMjYxNzYgcSAtMC4zNzk1NiwwLjEwMDI2IC0wLjgz +MDczLDAuMTY0NzEgLTAuNDQ0MDEsMC4wNjQ1IC0wLjc5NDkzLDAuMDY0NSAtMS4yMjQ2MSwwIC0x +Ljg2MTk4LC0wLjY1ODg2IC0wLjYzNzM3LC0wLjY1ODg1IC0wLjYzNzM3LC0yLjExMjYzIHYgLTQu +MjUzOTIgaCAtMC45MDk1MSB2IC0xLjEzMTUxIGggMC45MDk1MSB2IC0yLjI5ODg0IGggMS4zNDYz +NiB2IDIuMjk4ODQgaCAyLjc3ODY1IHYgMS4xMzE1MSBoIC0yLjc3ODY1IHYgMy42NDUxOSBxIDAs +MC42MzAyMSAwLjAyODYsMC45ODgyOSAwLjAyODYsMC4zNTA5MSAwLjIwMDUyLDAuNjU4ODUgMC4x +NTc1NiwwLjI4NjQ2IDAuNDI5NjksMC40MjI1MyAwLjI3OTMsMC4xMjg5IDAuODQ1MDYsMC4xMjg5 +IDAuMzI5NDIsMCAwLjY4NzUsLTAuMDkzMSAwLjM1ODA3LC0wLjEwMDI3IDAuNTE1NjIsLTAuMTY0 +NzIgaCAwLjA3MTYgeiIKICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAg +ICAgIGlkPSJwYXRoMTI4IiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDMxMy44MDAxNiwx +MTQuNDczMzQgaCAtNS44OTM4OSBxIDAsMC43Mzc2MyAwLjIyMiwxLjI4OTA3IDAuMjIyMDEsMC41 +NDQyNyAwLjYwODczLDAuODk1MTggMC4zNzI0LDAuMzQzNzUgMC44ODA4NiwwLjUxNTYzIDAuNTE1 +NjMsMC4xNzE4NyAxLjEzMTUxLDAuMTcxODcgMC44MTY0MSwwIDEuNjM5OTgsLTAuMzIyMjYgMC44 +MzA3MywtMC4zMjk0MyAxLjE4MTY0LC0wLjY0NDU0IGggMC4wNzE2IHYgMS40NjgxMSBxIC0wLjY4 +MDM0LDAuMjg2NDUgLTEuMzg5MzMsMC40Nzk4MSAtMC43MDg5OCwwLjE5MzM2IC0xLjQ4OTU4LDAu +MTkzMzYgLTEuOTkwODksMCAtMy4xMDgwOCwtMS4wNzQyMiAtMS4xMTcxOSwtMS4wODEzOCAtMS4x +MTcxOSwtMy4wNjUxMSAwLC0xLjk2MjI0IDEuMDY3MDYsLTMuMTE1MjQgMS4wNzQyMiwtMS4xNTMg +Mi44MjE2MiwtMS4xNTMgMS42MTg0OSwwIDIuNDkyMTksMC45NDUzMiAwLjg4MDg2LDAuOTQ1MzEg +MC44ODA4NiwyLjY4NTU1IHogbSAtMS4zMTA1NSwtMS4wMzEyNSBxIC0wLjAwNywtMS4wNTk5IC0w +LjUzNzExLC0xLjYzOTk4IC0wLjUyMjc5LC0wLjU4MDA4IC0xLjU5NzAxLC0wLjU4MDA4IC0xLjA4 +MTM4LDAgLTEuNzI1OTEsMC42MzczNyAtMC42MzczNywwLjYzNzM3IC0wLjcyMzMxLDEuNTgyNjkg +eiIKICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAgICAgIGlkPSJwYXRo +MTMwIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDMyMi43NjYzMywxMTguMzMzMzggaCAt +MS42OTcyNyBsIC0yLjI3MDE5LC0zLjA3MjI4IC0yLjI4NDUxLDMuMDcyMjggSCAzMTQuOTQ2IGwg +My4xMjI0LC0zLjk4ODk1IC0zLjA5Mzc2LC00LjAxMDQyIGggMS42OTcyNyBsIDIuMjU1ODcsMy4w +MjIxNCAyLjI2MzAyLC0zLjAyMjE0IGggMS41NzU1MyBsIC0zLjE0Mzg5LDMuOTM4ODEgeiIKICAg +ICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAgICAgIGlkPSJwYXRoMTMyIiAv +PgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDMyOC42NzQ1NSwxMTguMjYxNzYgcSAtMC4zNzk1 +NiwwLjEwMDI2IC0wLjgzMDczLDAuMTY0NzEgLTAuNDQ0MDIsMC4wNjQ1IC0wLjc5NDkzLDAuMDY0 +NSAtMS4yMjQ2MSwwIC0xLjg2MTk4LC0wLjY1ODg2IC0wLjYzNzM3LC0wLjY1ODg1IC0wLjYzNzM3 +LC0yLjExMjYzIHYgLTQuMjUzOTIgaCAtMC45MDk1MSB2IC0xLjEzMTUxIGggMC45MDk1MSB2IC0y +LjI5ODg0IGggMS4zNDYzNSB2IDIuMjk4ODQgaCAyLjc3ODY2IHYgMS4xMzE1MSBoIC0yLjc3ODY2 +IHYgMy42NDUxOSBxIDAsMC42MzAyMSAwLjAyODYsMC45ODgyOSAwLjAyODcsMC4zNTA5MSAwLjIw +MDUyLDAuNjU4ODUgMC4xNTc1NSwwLjI4NjQ2IDAuNDI5NjksMC40MjI1MyAwLjI3OTMsMC4xMjg5 +IDAuODQ1MDUsMC4xMjg5IDAuMzI5NDMsMCAwLjY4NzUxLC0wLjA5MzEgMC4zNTgwNywtMC4xMDAy +NyAwLjUxNTYyLC0wLjE2NDcyIGggMC4wNzE2IHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6 +MTQuNjY2N3B4IgogICAgICAgICBpZD0icGF0aDEzNCIgLz4KICAgICAgPHBhdGgKICAgICAgICAg +ZD0ibSAzMDguMjQyODYsMTI3LjI2MzczIGggLTUuMzkyNTkgdiAzLjAwNzgyIGggNC42MzM0NyB2 +IDEuMjYwNDIgaCAtNC42MzM0NyB2IDUuMTM0NzggaCAtMS40MTc5OCB2IC0xMC42NjM0NCBoIDYu +ODEwNTcgeiIKICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAgICAgIGlk +PSJwYXRoMTM2IiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDMxNy44MTA1OSwxMjcuMjI3 +OTMgcSAwLjY1MTY5LDAuNzE2MTQgMC45OTU0NCwxLjc1NDU2IDAuMzUwOTIsMS4wMzg0MSAwLjM1 +MDkyLDIuMzU2MTIgMCwxLjMxNzcyIC0wLjM1ODA4LDIuMzYzMjkgLTAuMzUwOTEsMS4wMzg0MSAt +MC45ODgyOCwxLjczMzA4IC0wLjY1ODg2LDAuNzIzMzEgLTEuNTYxMiwxLjA4ODU0IC0wLjg5NTE5 +LDAuMzY1MjQgLTIuMDQ4MTksMC4zNjUyNCAtMS4xMjQzNSwwIC0yLjA0ODE4LC0wLjM3MjQgLTAu +OTE2NjcsLTAuMzcyNCAtMS41NjEyLC0xLjA4MTM4IC0wLjY0NDUzLC0wLjcwODk5IC0wLjk5NTQ0 +LC0xLjc0MDI0IC0wLjM0Mzc1LC0xLjAzMTI1IC0wLjM0Mzc1LC0yLjM1NjEzIDAsLTEuMzAzMzgg +MC4zNDM3NSwtMi4zMzQ2NCAwLjM0Mzc1LC0xLjAzODQxIDEuMDAyNiwtMS43NzYwNCAwLjYzMDIx +LC0wLjcwMTgzIDEuNTYxMiwtMS4wNzQyMiAwLjkzODE2LC0wLjM3MjQgMi4wNDEwMiwtMC4zNzI0 +IDEuMTQ1ODQsMCAyLjA1NTM1LDAuMzc5NTYgMC45MTY2NywwLjM3MjM5IDEuNTU0MDQsMS4wNjcw +NiB6IG0gLTAuMTI4OTEsNC4xMTA2OCBxIDAsLTIuMDc2ODIgLTAuOTMwOTksLTMuMjAxMTggLTAu +OTMwOTksLTEuMTMxNTEgLTIuNTQyMzIsLTEuMTMxNTEgLTEuNjI1NjYsMCAtMi41NTY2NSwxLjEz +MTUxIC0wLjkyMzgzLDEuMTI0MzYgLTAuOTIzODMsMy4yMDExOCAwLDIuMDk4MzIgMC45NDUzMSwz +LjIxNTUxIDAuOTQ1MzIsMS4xMTAwMiAyLjUzNTE3LDEuMTEwMDIgMS41ODk4NCwwIDIuNTI4LC0x +LjExMDAyIDAuOTQ1MzEsLTEuMTE3MTkgMC45NDUzMSwtMy4yMTU1MSB6IgogICAgICAgICBzdHls +ZT0iZm9udC1zaXplOjE0LjY2NjdweCIKICAgICAgICAgaWQ9InBhdGgxMzgiIC8+CiAgICAgIDxw +YXRoCiAgICAgICAgIGQ9Im0gMzI5LjM1NDg5LDEyNy4yMjc5MyBxIDAuNjUxNjksMC43MTYxNCAw +Ljk5NTQ0LDEuNzU0NTYgMC4zNTA5MSwxLjAzODQxIDAuMzUwOTEsMi4zNTYxMiAwLDEuMzE3NzIg +LTAuMzU4MDcsMi4zNjMyOSAtMC4zNTA5MSwxLjAzODQxIC0wLjk4ODI4LDEuNzMzMDggLTAuNjU4 +ODYsMC43MjMzMSAtMS41NjEyMSwxLjA4ODU0IC0wLjg5NTE4LDAuMzY1MjQgLTIuMDQ4MTgsMC4z +NjUyNCAtMS4xMjQzNSwwIC0yLjA0ODE4LC0wLjM3MjQgLTAuOTE2NjcsLTAuMzcyNCAtMS41NjEy +LC0xLjA4MTM4IC0wLjY0NDUzLC0wLjcwODk5IC0wLjk5NTQ1LC0xLjc0MDI0IC0wLjM0Mzc1LC0x +LjAzMTI1IC0wLjM0Mzc1LC0yLjM1NjEzIDAsLTEuMzAzMzggMC4zNDM3NSwtMi4zMzQ2NCAwLjM0 +Mzc2LC0xLjAzODQxIDEuMDAyNjEsLTEuNzc2MDQgMC42MzAyMSwtMC43MDE4MyAxLjU2MTIsLTEu +MDc0MjIgMC45MzgxNiwtMC4zNzI0IDIuMDQxMDIsLTAuMzcyNCAxLjE0NTg0LDAgMi4wNTUzNSww +LjM3OTU2IDAuOTE2NjcsMC4zNzIzOSAxLjU1NDA0LDEuMDY3MDYgeiBtIC0wLjEyODkxLDQuMTEw +NjggcSAwLC0yLjA3NjgyIC0wLjkzMDk5LC0zLjIwMTE4IC0wLjkzMDk5LC0xLjEzMTUxIC0yLjU0 +MjMzLC0xLjEzMTUxIC0xLjYyNTY1LDAgLTIuNTU2NjQsMS4xMzE1MSAtMC45MjM4MywxLjEyNDM2 +IC0wLjkyMzgzLDMuMjAxMTggMCwyLjA5ODMyIDAuOTQ1MzEsMy4yMTU1MSAwLjk0NTMyLDEuMTEw +MDIgMi41MzUxNiwxLjExMDAyIDEuNTg5ODUsMCAyLjUyODAxLC0xLjExMDAyIDAuOTQ1MzEsLTEu +MTE3MTkgMC45NDUzMSwtMy4yMTU1MSB6IgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOjE0LjY2 +NjdweCIKICAgICAgICAgaWQ9InBhdGgxNDAiIC8+CiAgICA8L2c+CiAgICA8ZwogICAgICAgaWQ9 +InQ1IgogICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDQ1LjcxMDM4LC0xMjkuNjQ4MDcpIgog +ICAgICAgaW5rc2NhcGU6bGFiZWw9IiNnMzc3MiI+CiAgICAgIDxnCiAgICAgICAgIGFyaWEtbGFi +ZWw9Ikdyb3VwZWQiCiAgICAgICAgIGlkPSJ0ZXh0Mzc2MiIKICAgICAgICAgc3R5bGU9ImZvbnQt +c2l6ZToxMC41ODMzcHg7bGluZS1oZWlnaHQ6MS4yNSI+CiAgICAgICAgPHBhdGgKICAgICAgICAg +ICBkPSJtIDY0LjYxNjQ2MiwyMjguODYwMzEgcSAtMC44NzM3LDAuNDAxMDQgLTEuOTEyMTEzLDAu +NzAxODIgLTEuMDMxMjUzLDAuMjkzNjIgLTEuOTk4MDUyLDAuMjkzNjIgLTEuMjQ2MDk3LDAgLTIu +Mjg0NTEsLTAuMzQzNzUgLTEuMDM4NDE0LC0wLjM0Mzc1IC0xLjc2ODg4NSwtMS4wMzEyNSAtMC43 +Mzc2MzIsLTAuNjk0NjYgLTEuMTM4Njc0LC0xLjczMzA4IC0wLjQwMTA0MywtMS4wNDU1NyAtMC40 +MDEwNDMsLTIuNDQyMDYgMCwtMi41NTY2NSAxLjQ4OTU4NywtNC4wMzE5MSAxLjQ5Njc0OCwtMS40 +ODI0MiA0LjEwMzUyNSwtMS40ODI0MiAwLjkwOTUwNywwIDEuODU0ODIyLDAuMjIyIDAuOTUyNDc2 +LDAuMjE0ODUgMi4wNDgxODIsMC43Mzc2MyB2IDEuNjgyOTUgaCAtMC4xMjg5MDcgcSAtMC4yMjIw +MDUsLTAuMTcxODggLTAuNjQ0NTMyLC0wLjQ1MTE3IC0wLjQyMjUyNywtMC4yNzkzIC0wLjgzMDcz +MiwtMC40NjU1IC0wLjQ5NDE0MSwtMC4yMjIgLTEuMTI0MzUxLC0wLjM2NTIzIC0wLjYyMzA0OCwt +MC4xNTA0IC0xLjQxNzk3MiwtMC4xNTA0IC0xLjc5MDM2OSwwIC0yLjgzNTk0NCwxLjE1MyAtMS4w +Mzg0MTQsMS4xNDU4NCAtMS4wMzg0MTQsMy4xMDgwOCAwLDIuMDY5NjcgMS4wODg1NDQsMy4yMjI2 +NyAxLjA4ODU0NCwxLjE0NTgzIDIuOTY0ODUxLDEuMTQ1ODMgMC42ODc1MDEsMCAxLjM2Nzg0MSwt +MC4xMzYwNyAwLjY4NzUwMiwtMC4xMzYwNiAxLjIwMzEyOCwtMC4zNTA5MSB2IC0yLjYxMzk0IGgg +LTIuODU3NDI4IHYgLTEuMjQ2MDkgaCA0LjI2MTA3NyB6IgogICAgICAgICAgIHN0eWxlPSJmb250 +LXNpemU6MTQuNjY2N3B4IgogICAgICAgICAgIGlkPSJwYXRoMTQzIiAvPgogICAgICAgIDxwYXRo +CiAgICAgICAgICAgZD0ibSA3MS45Nzg0NTksMjIzLjExNjgxIGggLTAuMDcxNjEgcSAtMC4zMDA3 +ODIsLTAuMDcxNiAtMC41ODcyNDEsLTAuMTAwMjYgLTAuMjc5Mjk4LC0wLjAzNTggLTAuNjY2MDE3 +LC0wLjAzNTggLTAuNjIzMDQ5LDAgLTEuMjAzMTI4LDAuMjc5MyAtMC41ODAwNzksMC4yNzIxMyAt +MS4xMTcxOSwwLjcwODk4IHYgNS42NzkwNSBoIC0xLjM0NjM1NyB2IC03Ljk5OTM3IGggMS4zNDYz +NTcgdiAxLjE4MTY1IHEgMC44MDIwODUsLTAuNjQ0NTQgMS40MTA4MSwtMC45MDk1MSAwLjYxNTg4 +NywtMC4yNzIxNCAxLjI1MzI1OSwtMC4yNzIxNCAwLjM1MDkxMiwwIDAuNTA4NDY0LDAuMDIxNSAw +LjE1NzU1MywwLjAxNDMgMC40NzI2NTgsMC4wNjQ1IHoiCiAgICAgICAgICAgc3R5bGU9ImZvbnQt +c2l6ZToxNC42NjY3cHgiCiAgICAgICAgICAgaWQ9InBhdGgxNDUiIC8+CiAgICAgICAgPHBhdGgK +ICAgICAgICAgICBkPSJtIDgwLjA2Mzc2NCwyMjUuNjUxOTcgcSAwLDEuOTU1MDggLTEuMDAyNjA2 +LDMuMDg2NTkgLTEuMDAyNjA3LDEuMTMxNTIgLTIuNjg1NTUzLDEuMTMxNTIgLTEuNjk3MjcsMCAt +Mi42OTk4NzYsLTEuMTMxNTIgLTAuOTk1NDQ1LC0xLjEzMTUxIC0wLjk5NTQ0NSwtMy4wODY1OSAw +LC0xLjk1NTA4IDAuOTk1NDQ1LC0zLjA4NjYgMS4wMDI2MDYsLTEuMTM4NjcgMi42OTk4NzYsLTEu +MTM4NjcgMS42ODI5NDYsMCAyLjY4NTU1MywxLjEzODY3IDEuMDAyNjA2LDEuMTMxNTIgMS4wMDI2 +MDYsMy4wODY2IHogbSAtMS4zODkzMjYsMCBxIDAsLTEuNTU0MDQgLTAuNjA4NzI1LC0yLjMwNiAt +MC42MDg3MjYsLTAuNzU5MTEgLTEuNjkwMTA4LC0wLjc1OTExIC0xLjA5NTcwNiwwIC0xLjcwNDQz +MSwwLjc1OTExIC0wLjYwMTU2NCwwLjc1MTk2IC0wLjYwMTU2NCwyLjMwNiAwLDEuNTAzOTEgMC42 +MDg3MjUsMi4yODQ1MSAwLjYwODcyNiwwLjc3MzQ0IDEuNjk3MjcsMC43NzM0NCAxLjA3NDIyMSww +IDEuNjgyOTQ2LC0wLjc2NjI4IDAuNjE1ODg3LC0wLjc3MzQ0IDAuNjE1ODg3LC0yLjI5MTY3IHoi +CiAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAgICAgICAgaWQ9InBh +dGgxNDciIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBkPSJtIDg4Ljc3OTI3OCwyMjkuNjQ4 +MDcgaCAtMS4zNDYzNTcgdiAtMC44ODgwMiBxIC0wLjY4MDM0LDAuNTM3MTEgLTEuMzAzMzg4LDAu +ODIzNTcgLTAuNjIzMDQ5LDAuMjg2NDYgLTEuMzc1MDA0LDAuMjg2NDYgLTEuMjYwNDE5LDAgLTEu +OTYyMjQ0LC0wLjc2NjI4IC0wLjcwMTgyNCwtMC43NzM0NCAtMC43MDE4MjQsLTIuMjYzMDMgdiAt +NS4xOTIwNyBoIDEuMzQ2MzU3IHYgNC41NTQ3IHEgMCwwLjYwODczIDAuMDU3MjksMS4wNDU1OCAw +LjA1NzI5LDAuNDI5NjkgMC4yNDM0OSwwLjczNzYzIDAuMTkzMzYsMC4zMTUxIDAuNTAxMzAzLDAu +NDU4MzMgMC4zMDc5NDQsMC4xNDMyMyAwLjg5NTE4NSwwLjE0MzIzIDAuNTIyNzg3LDAgMS4xMzg2 +NzQsLTAuMjcyMTMgMC42MjMwNDgsLTAuMjcyMTQgMS4xNjAxNTksLTAuNjk0NjcgdiAtNS45NzI2 +NyBoIDEuMzQ2MzU3IHoiCiAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAg +ICAgICAgICAgaWQ9InBhdGgxNDkiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBkPSJtIDk4 +LjQ2ODc1NSwyMjUuNTUxNzEgcSAwLDAuOTczOTYgLTAuMjc5Mjk3LDEuNzgzMiAtMC4yNzkyOTgs +MC44MDIwOSAtMC43ODc3NjMsMS4zNjA2OSAtMC40NzI2NTcsMC41Mjk5NCAtMS4xMTcxOSwwLjgy +MzU2IC0wLjYzNzM3MSwwLjI4NjQ2IC0xLjM1MzUxOCwwLjI4NjQ2IC0wLjYyMzA0OSwwIC0xLjEz +MTUxMywtMC4xMzYwNiAtMC41MDEzMDQsLTAuMTM2MDcgLTEuMDI0MDkxLC0wLjQyMjUzIHYgMy4z +NTE1NyBoIC0xLjM0NjM1NyB2IC0xMC45NDk5IGggMS4zNDYzNTcgdiAwLjgzNzkgcSAwLjUzNzEx +LC0wLjQ1MTE4IDEuMjAzMTI4LC0wLjc1MTk2IDAuNjczMTc4LC0wLjMwNzk0IDEuNDMyMjk0LC0w +LjMwNzk0IDEuNDQ2NjE4LDAgMi4yNDg3MDQsMS4wOTU3IDAuODA5MjQ2LDEuMDg4NTUgMC44MDky +NDYsMy4wMjkzMSB6IG0gLTEuMzg5MzI2LDAuMDM1OCBxIDAsLTEuNDQ2NjIgLTAuNDk0MTQyLC0y +LjE2Mjc3IC0wLjQ5NDE0MSwtMC43MTYxNSAtMS41MTgyMzIsLTAuNzE2MTUgLTAuNTgwMDgsMCAt +MS4xNjczMjEsMC4yNTA2NSAtMC41ODcyNDEsMC4yNTA2NiAtMS4xMjQzNTEsMC42NTg4NiB2IDQu +NTMzMjEgcSAwLjU3MjkxOCwwLjI1NzgyIDAuOTgxMTIyLDAuMzUwOTIgMC40MTUzNjUsMC4wOTMx +IDAuOTM4MTUzLDAuMDkzMSAxLjEyNDM1MiwwIDEuNzU0NTYxLC0wLjc1OTExIDAuNjMwMjEsLTAu +NzU5MTIgMC42MzAyMSwtMi4yNDg3IHoiCiAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42 +NjY3cHgiCiAgICAgICAgICAgaWQ9InBhdGgxNTEiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAg +ICBkPSJtIDEwNy4yNjMwNCwyMjUuNzg4MDQgaCAtNS44OTM4OSBxIDAsMC43Mzc2MyAwLjIyMjAx +LDEuMjg5MDYgMC4yMjIsMC41NDQyNyAwLjYwODcyLDAuODk1MTkgMC4zNzI0LDAuMzQzNzUgMC44 +ODA4NiwwLjUxNTYyIDAuNTE1NjMsMC4xNzE4OCAxLjEzMTUxLDAuMTcxODggMC44MTY0MSwwIDEu +NjM5OTgsLTAuMzIyMjcgMC44MzA3MywtMC4zMjk0MyAxLjE4MTY1LC0wLjY0NDUzIGggMC4wNzE2 +IHYgMS40NjgxIHEgLTAuNjgwMzQsMC4yODY0NiAtMS4zODkzMywwLjQ3OTgyIC0wLjcwODk4LDAu +MTkzMzYgLTEuNDg5NTgsMC4xOTMzNiAtMS45OTA4OSwwIC0zLjEwODA4LC0xLjA3NDIyIC0xLjEx +NzE5LC0xLjA4MTM4IC0xLjExNzE5LC0zLjA2NTExIDAsLTEuOTYyMjUgMS4wNjcwNiwtMy4xMTUy +NCAxLjA3NDIyLC0xLjE1MyAyLjgyMTYyLC0xLjE1MyAxLjYxODQ5LDAgMi40OTIxOSwwLjk0NTMx +IDAuODgwODYsMC45NDUzMiAwLjg4MDg2LDIuNjg1NTYgeiBtIC0xLjMxMDU1LC0xLjAzMTI2IHEg +LTAuMDA3LC0xLjA1OTg5IC0wLjUzNzExLC0xLjYzOTk3IC0wLjUyMjc5LC0wLjU4MDA4IC0xLjU5 +NzAxLC0wLjU4MDA4IC0xLjA4MTM4LDAgLTEuNzI1OTEsMC42MzczNyAtMC42MzczNywwLjYzNzM3 +IC0wLjcyMzMxLDEuNTgyNjggeiIKICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjE0LjY2Njdw +eCIKICAgICAgICAgICBpZD0icGF0aDE1MyIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIGQ9 +Ik0gMTE1Ljc5MjM2LDIyOS42NDgwNyBIIDExNC40NDYgdiAtMC44Mzc4OSBxIC0wLjU4MDA4LDAu +NTAxMyAtMS4yMTAyOSwwLjc4MDYgLTAuNjMwMjEsMC4yNzkzIC0xLjM2Nzg0LDAuMjc5MyAtMS40 +MzIyOSwwIC0yLjI3NzM1LC0xLjEwMjg3IC0wLjgzNzg5LC0xLjEwMjg3IC0wLjgzNzg5LC0zLjA1 +Nzk1IDAsLTEuMDE2OTMgMC4yODY0NiwtMS44MTE4NSAwLjI5MzYyLC0wLjc5NDkzIDAuNzg3NzYs +LTEuMzUzNTIgMC40ODY5OCwtMC41NDQyNyAxLjEzMTUxLC0wLjgzMDczIDAuNjUxNywtMC4yODY0 +NiAxLjM0NjM2LC0wLjI4NjQ2IDAuNjMwMjEsMCAxLjExNzE5LDAuMTM2MDcgMC40ODY5OCwwLjEy +ODkgMS4wMjQwOSwwLjQwODIgdiAtMy40NjYxNSBoIDEuMzQ2MzYgeiBtIC0xLjM0NjM2LC0xLjk2 +OTQgdiAtNC41OTA1MSBxIC0wLjU0NDI3LC0wLjI0MzQ5IC0wLjk3Mzk2LC0wLjMzNjU5IC0wLjQy +OTY5LC0wLjA5MzEgLTAuOTM4MTUsLTAuMDkzMSAtMS4xMzE1MSwwIC0xLjc2MTcyLDAuNzg3NzYg +LTAuNjMwMjEsMC43ODc3NyAtMC42MzAyMSwyLjIzNDM4IDAsMS40MjUxNCAwLjQ4Njk4LDIuMTY5 +OTMgMC40ODY5OCwwLjczNzYzIDEuNTYxMiwwLjczNzYzIDAuNTcyOTIsMCAxLjE2MDE2LC0wLjI1 +MDY1IDAuNTg3MjQsLTAuMjU3ODEgMS4wOTU3LC0wLjY1ODg1IHoiCiAgICAgICAgICAgc3R5bGU9 +ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAgICAgICAgaWQ9InBhdGgxNTUiIC8+CiAgICAgIDwv +Zz4KICAgICAgPGcKICAgICAgICAgYXJpYS1sYWJlbD0idGV4dCIKICAgICAgICAgaWQ9InRleHQz +NzY2IgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOjE0LjY2NjdweDtsaW5lLWhlaWdodDoxLjI1 +Ij4KICAgICAgICA8cGF0aAogICAgICAgICAgIGQ9Im0gNTkuNzY4MTQ4LDI1OS41NzY0NiBxIC0w +LjM3OTU1OSwwLjEwMDI2IC0wLjgzMDczMSwwLjE2NDcxIC0wLjQ0NDAxMiwwLjA2NDQgLTAuNzk0 +OTI0LDAuMDY0NCAtMS4yMjQ2MTIsMCAtMS44NjE5ODQsLTAuNjU4ODUgLTAuNjM3MzcxLC0wLjY1 +ODg2IC0wLjYzNzM3MSwtMi4xMTI2NCB2IC00LjI1MzkxIGggLTAuOTA5NTA3IHYgLTEuMTMxNTIg +aCAwLjkwOTUwNyB2IC0yLjI5ODgzIGggMS4zNDYzNTcgdiAyLjI5ODgzIGggMi43Nzg2NTMgdiAx +LjEzMTUyIGggLTIuNzc4NjUzIHYgMy42NDUxOSBxIDAsMC42MzAyMSAwLjAyODY1LDAuOTg4Mjgg +MC4wMjg2NSwwLjM1MDkxIDAuMjAwNTIyLDAuNjU4ODYgMC4xNTc1NTIsMC4yODY0NiAwLjQyOTY4 +OCwwLjQyMjUyIDAuMjc5Mjk4LDAuMTI4OTEgMC44NDUwNTQsMC4xMjg5MSAwLjMyOTQyOCwwIDAu +Njg3NTAyLC0wLjA5MzEgMC4zNTgwNzMsLTAuMTAwMjYgMC41MTU2MjYsLTAuMTY0NzEgaCAwLjA3 +MTYxIHoiCiAgICAgICAgICAgaWQ9InBhdGgxNTgiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAg +ICBkPSJtIDY4LjA4OTc4MSwyNTUuNzg4MDQgaCAtNS44OTM4OTMgcSAwLDAuNzM3NjMgMC4yMjIw +MDUsMS4yODkwNiAwLjIyMjAwNiwwLjU0NDI3IDAuNjA4NzI2LDAuODk1MTkgMC4zNzIzOTYsMC4z +NDM3NSAwLjg4MDg2MSwwLjUxNTYyIDAuNTE1NjI2LDAuMTcxODggMS4xMzE1MTMsMC4xNzE4OCAw +LjgxNjQwOCwwIDEuNjM5OTc4LC0wLjMyMjI3IDAuODMwNzMxLC0wLjMyOTQzIDEuMTgxNjQzLC0w +LjY0NDUzIGggMC4wNzE2MiB2IDEuNDY4MSBxIC0wLjY4MDM0LDAuMjg2NDYgLTEuMzg5MzI2LDAu +NDc5ODIgLTAuNzA4OTg2LDAuMTkzMzYgLTEuNDg5NTg3LDAuMTkzMzYgLTEuOTkwODksMCAtMy4x +MDgwOCwtMS4wNzQyMiAtMS4xMTcxOSwtMS4wODEzOCAtMS4xMTcxOSwtMy4wNjUxMSAwLC0xLjk2 +MjI1IDEuMDY3MDYsLTMuMTE1MjQgMS4wNzQyMjEsLTEuMTUzIDIuODIxNjIxLC0xLjE1MyAxLjYx +ODQ5MywwIDIuNDkyMTkzLDAuOTQ1MzEgMC44ODA4NjEsMC45NDUzMiAwLjg4MDg2MSwyLjY4NTU2 +IHogbSAtMS4zMTA1NDksLTEuMDMxMjYgcSAtMC4wMDcyLC0xLjA1OTg5IC0wLjUzNzExMSwtMS42 +Mzk5NyAtMC41MjI3ODgsLTAuNTgwMDggLTEuNTk3MDA5LC0wLjU4MDA4IC0xLjA4MTM4MywwIC0x +LjcyNTkxNSwwLjYzNzM3IC0wLjYzNzM3MiwwLjYzNzM3IC0wLjcyMzMwOSwxLjU4MjY4IHoiCiAg +ICAgICAgICAgaWQ9InBhdGgxNjAiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBkPSJtIDc3 +LjA1NTk0OCwyNTkuNjQ4MDcgaCAtMS42OTcyNjkgbCAtMi4yNzAxODgsLTMuMDcyMjcgLTIuMjg0 +NTEsMy4wNzIyNyBoIC0xLjU2ODM2MyBsIDMuMTIyNDAzLC0zLjk4ODk0IC0zLjA5Mzc1NywtNC4w +MTA0MyBoIDEuNjk3MjY5IGwgMi4yNTU4NjUsMy4wMjIxNSAyLjI2MzAyNiwtMy4wMjIxNSBoIDEu +NTc1NTI0IGwgLTMuMTQzODg3LDMuOTM4ODIgeiIKICAgICAgICAgICBpZD0icGF0aDE2MiIgLz4K +ICAgICAgICA8cGF0aAogICAgICAgICAgIGQ9Im0gODIuOTY0MTY2LDI1OS41NzY0NiBxIC0wLjM3 +OTU1OCwwLjEwMDI2IC0wLjgzMDczMSwwLjE2NDcxIC0wLjQ0NDAxMiwwLjA2NDQgLTAuNzk0OTI0 +LDAuMDY0NCAtMS4yMjQ2MTIsMCAtMS44NjE5ODMsLTAuNjU4ODUgLTAuNjM3MzcyLC0wLjY1ODg2 +IC0wLjYzNzM3MiwtMi4xMTI2NCB2IC00LjI1MzkxIGggLTAuOTA5NTA3IHYgLTEuMTMxNTIgaCAw +LjkwOTUwNyB2IC0yLjI5ODgzIGggMS4zNDYzNTggdiAyLjI5ODgzIGggMi43Nzg2NTIgdiAxLjEz +MTUyIGggLTIuNzc4NjUyIHYgMy42NDUxOSBxIDAsMC42MzAyMSAwLjAyODY1LDAuOTg4MjggMC4w +Mjg2NCwwLjM1MDkxIDAuMjAwNTIxLDAuNjU4ODYgMC4xNTc1NTIsMC4yODY0NiAwLjQyOTY4OCww +LjQyMjUyIDAuMjc5Mjk4LDAuMTI4OTEgMC44NDUwNTQsMC4xMjg5MSAwLjMyOTQyOCwwIDAuNjg3 +NTAyLC0wLjA5MzEgMC4zNTgwNzQsLTAuMTAwMjYgMC41MTU2MjYsLTAuMTY0NzEgaCAwLjA3MTYy +IHoiCiAgICAgICAgICAgaWQ9InBhdGgxNjQiIC8+CiAgICAgIDwvZz4KICAgIDwvZz4KICAgIDxy +ZWN0CiAgICAgICBzdHlsZT0iZmlsbDojMDAwMDgwO3N0cm9rZTpub25lIgogICAgICAgaWQ9InIx +IgogICAgICAgd2lkdGg9IjEwMCIKICAgICAgIGhlaWdodD0iMTAwIgogICAgICAgeD0iMTAwIgog +ICAgICAgeT0iMjAwIgogICAgICAgaW5rc2NhcGU6bGFiZWw9IiNyZWN0MzczMiIgLz4KICAgIDxy +ZWN0CiAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojZmYwMDAwO3N0cm9rZS13aWR0aDox +NiIKICAgICAgIGlkPSJyMiIKICAgICAgIHdpZHRoPSIyMDAiCiAgICAgICBoZWlnaHQ9IjEwMCIK +ICAgICAgIHg9IjMwMCIKICAgICAgIHk9IjIwMCIKICAgICAgIGlua3NjYXBlOmxhYmVsPSIjcmVj +dDM3MzQiIC8+CiAgICA8cmVjdAogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmYwMDtzdHJva2U6IzAw +ODAwMDtzdHJva2Utd2lkdGg6MTYiCiAgICAgICBpZD0icjMiCiAgICAgICB3aWR0aD0iMjAwIgog +ICAgICAgaGVpZ2h0PSIxMDAiCiAgICAgICB4PSI2MDAiCiAgICAgICB5PSIyMDAiCiAgICAgICBy +eT0iMzguOTUwNzk4IgogICAgICAgcng9IjQ0Ljk0MzIyNiIKICAgICAgIGlua3NjYXBlOmxhYmVs +PSIjcmVjdDM3NDQiIC8+CiAgPC9nPgogIDxzY3JpcHQKICAgICBuczE6dmVyc2lvbj0iMS41LjUi +CiAgICAgaWQ9Ikplc3N5SW5rIj4vLyBkdW1teQo8L3NjcmlwdD4KPC9zdmc+Cg== + +----CALLDATA--//--CALLDATA---- diff --git a/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__avaloniaui.out b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__avaloniaui.out new file mode 100644 index 0000000..6c962c6 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__avaloniaui.out @@ -0,0 +1,387 @@ +<?xml version="1.0" ?> +<Viewbox Name="input" Stretch="Uniform" xmlns="https://github.com/avaloniaui" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> + <Canvas Height="1000.0" UseLayoutRounding="False" Width="1000.0"> + <Canvas.Clip> + <RectangleGeometry Rect="0.0,0.0,1000.0,1000.0"/> + </Canvas.Clip> + <Canvas UseLayoutRounding="False"> + <Rectangle Canvas.Left="651.3089" Canvas.Top="353.92661" Fill="#ffff0000" Height="201.49811" Opacity="0.5" Width="248.69112"/> + </Canvas> + <Canvas UseLayoutRounding="False"> + <Ellipse Canvas.Left="100.0" Canvas.Top="400.0" Fill="#ff000080" Height="100.0" Width="100.0"/> + <Ellipse Canvas.Left="292.0" Canvas.Top="392.0" Height="116.0" Stroke="#ffff0000" StrokeJoin="Miter" StrokeThickness="16.0" Width="216.0"/> + <Path Fill="#ffffff00" Stroke="#ff008000" StrokeJoin="Miter" StrokeThickness="16.0"> + <Path.Data> + <PathGeometry Figures="m 783.086 477.824 a 100 50 0 0 1 -111.098 20.1744 a 100 50 0 0 1 -71.963 -46.8834 a 100 50 0 0 1 67.7113 -48.4409 a 100 50 0 0 1 112.787 17.6779 L 700 450 Z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Canvas> + <Path Stroke="#ff000000" StrokeJoin="Miter" StrokeThickness="10.0"> + <Path.Data> + <PathGeometry Figures="M 100 600 L 200 700 L 300 600 L 400 700" FillRule="NonZero"/> + </Path.Data> + </Path> + <Canvas RenderTransformOrigin="0,0" UseLayoutRounding="False"> + <Canvas.RenderTransform> + <MatrixTransform Matrix="7.0710678118654755,7.0710678118654755,-7.0710678118654755,7.0710678118654755,100.0,600.0"/> + </Canvas.RenderTransform> + <Path Fill="#ff000000" RenderTransformOrigin="0,0" Stroke="#ff000000" StrokeJoin="Round" StrokeThickness="0.625"> + <Path.RenderTransform> + <MatrixTransform Matrix="1.1,0.0,0.0,1.1,1.1,0.0"/> + </Path.RenderTransform> + <Path.Data> + <PathGeometry Figures="M 8.71859 4.03374 L -2.20729 0.0160133 L 8.71859 -4.00171 C 6.97309 -1.62965 6.98315 1.61574 8.71859 4.03374 z"/> + </Path.Data> + </Path> + </Canvas> + </Canvas> + <Path Stroke="#ff000000" StrokeJoin="Miter" StrokeThickness="10.0"> + <Path.Data> + <PathGeometry Figures="m 500 600 c 0 0 0 100 100 100 c 100 0 0 -100 100 -100 c 100 0 100 100 100 100" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ffffff00" Stroke="#ff008000" StrokeJoin="Miter" StrokeThickness="10.0"> + <Path.Data> + <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ffffff00" RenderTransformOrigin="0,0" Stroke="#ff008000" StrokeJoin="Miter" StrokeThickness="10.0"> + <Path.RenderTransform> + <MatrixTransform Matrix="1.0,0.0,0.0,1.0,200.0,2.99622"/> + </Path.RenderTransform> + <Path.Data> + <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="NonZero"/> + </Path.Data> + </Path> + </Canvas> + <Canvas UseLayoutRounding="False"> + <Canvas UseLayoutRounding="False"> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 109.589 100 h -1.41797 v -5.22072 h -5.32097 V 100 h -1.41798 V 89.3366 h 1.41798 v 4.1823 h 5.32097 v -4.1823 h 1.41797 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 119.042 96.14 h -5.89389 q 0 0.737632 0.222 1.28907 q 0.22201 0.544272 0.60873 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13151 0.171875 q 0.81641 0 1.63998 -0.322266 q 0.83073 -0.329428 1.18164 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38933 0.479819 q -0.70898 0.193361 -1.48958 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88086 0.945314 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.580079 -1.59701 -0.580079 q -1.08138 0 -1.72591 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 122.444 100 h -1.34635 V 88.8567 h 1.34635 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 126.469 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 135.951 96.0039 q 0 1.95508 -1.0026 3.0866 q -1.00261 1.13152 -2.68556 1.13152 q -1.69727 0 -2.69987 -1.13152 q -0.99545 -1.13151 -0.99545 -3.0866 q 0 -1.95508 0.99545 -3.0866 q 1.0026 -1.13867 2.69987 -1.13867 q 1.68295 0 2.68556 1.13867 q 1.0026 1.13151 1.0026 3.0866 z m -1.38932 0 q 0 -1.55404 -0.60873 -2.30599 q -0.60872 -0.759116 -1.69011 -0.759116 q -1.0957 0 -1.70443 0.759116 q -0.60156 0.751955 -0.60156 2.30599 q 0 1.50391 0.60872 2.28451 q 0.60873 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61589 -0.773439 0.61589 -2.29167 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="M 155.709 89.3366 L 152.938 100 h -1.59701 L 149.099 91.1484 L 146.908 100 h -1.5612 l -2.82162 -10.6634 h 1.45378 l 2.24154 8.86591 l 2.20573 -8.86591 h 1.43946 l 2.22722 8.95184 l 2.22722 -8.95184 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 163.794 96.0039 q 0 1.95508 -1.00261 3.0866 q -1.0026 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.99544 -1.13151 -0.99544 -3.0866 q 0 -1.95508 0.99544 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13151 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.60872 -2.30599 q -0.60873 -0.759116 -1.69011 -0.759116 q -1.09571 0 -1.70443 0.759116 q -0.60157 0.751955 -0.60157 2.30599 q 0 1.50391 0.60873 2.28451 q 0.60872 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61588 -0.773439 0.61588 -2.29167 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 170.87 93.4687 h -0.0716 q -0.30078 -0.07161 -0.58724 -0.100261 q -0.2793 -0.03581 -0.66602 -0.03581 q -0.62304 0 -1.20312 0.279297 q -0.58008 0.272137 -1.11719 0.708986 V 100 h -1.34636 v -7.99937 h 1.34636 v 1.18164 q 0.80208 -0.644533 1.41081 -0.909507 q 0.61588 -0.272136 1.25325 -0.272136 q 0.35092 0 0.50847 0.02148 q 0.15755 0.01432 0.47266 0.06445 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 173.498 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 182.651 100 h -1.34636 v -0.837893 q -0.58008 0.501304 -1.21029 0.780601 q -0.63021 0.279302 -1.36784 0.279302 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.794924 0.78776 -1.35352 q 0.48698 -0.544272 1.13151 -0.830731 q 0.6517 -0.286459 1.34636 -0.286459 q 0.63021 0 1.11719 0.136068 q 0.48698 0.128907 1.02409 0.408204 v -3.46615 h 1.34636 z m -1.34636 -1.96941 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.336589 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13152 0 -1.76172 0.787762 q -0.63021 0.787762 -0.63021 2.23438 q 0 1.42513 0.48698 2.16993 q 0.48698 0.737632 1.5612 0.737632 q 0.57292 0 1.16016 -0.250652 q 0.58724 -0.257813 1.0957 -0.658856 z" FillRule="NonZero"/> + </Path.Data> + </Path> + </Canvas> + <Canvas RenderTransformOrigin="0,0" UseLayoutRounding="False"> + <Canvas.RenderTransform> + <MatrixTransform Matrix="0.26458333,0.0,0.0,0.26458333,372.02961,28.904505"/> + </Canvas.RenderTransform> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 126.989 233.045 h -0.27067 q -0.83907 -0.24361 -2.19242 -0.48721 q -1.35335 -0.27067 -2.38189 -0.27067 q -3.2751 0 -4.76378 1.46162 q -1.46162 1.43455 -1.46162 5.22392 v 1.02854 h 9.1757 v 4.27658 h -9.0133 v 25.9572 h -5.08858 v -25.9572 h -3.4375 v -4.27658 h 3.4375 v -1.00148 q 0 -5.38632 2.67963 -8.25541 q 2.67962 -2.89617 7.74114 -2.89617 q 1.70522 0 3.05857 0.16241 q 1.38041 0.1624 2.51722 0.37893 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 135.353 270.235 h -5.08859 v -42.1162 h 5.08859 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 171.19 255.132 q 0 7.38928 -3.78937 11.6659 q -3.78937 4.27657 -10.1501 4.27657 q -6.41486 0 -10.2042 -4.27657 q -3.76231 -4.27658 -3.76231 -11.6659 q 0 -7.38927 3.76231 -11.6659 q 3.78937 -4.30364 10.2042 -4.30364 q 6.36074 0 10.1501 4.30364 q 3.78937 4.27658 3.78937 11.6659 z m -5.25099 0 q 0 -5.87352 -2.30069 -8.71555 q -2.30069 -2.8691 -6.3878 -2.8691 q -4.14124 0 -6.44193 2.8691 q -2.27362 2.84203 -2.27362 8.71555 q 0 5.68406 2.30069 8.63436 q 2.30069 2.92323 6.41486 2.92323 q 4.06005 0 6.36074 -2.89616 q 2.32775 -2.92323 2.32775 -8.66143 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 217.095 240.002 l -7.87648 30.2338 h -4.70965 l -7.76821 -23.3046 l -7.71408 23.3046 h -4.68259 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55168 -23.4129 h 4.19537 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 259.617 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 291.069 255.646 h -22.2761 q 0 2.78789 0.83907 4.87205 q 0.83908 2.05708 2.30069 3.38336 q 1.40748 1.29922 3.32924 1.94882 q 1.94882 0.64961 4.27657 0.64961 q 3.08563 0 6.19833 -1.21801 q 3.13977 -1.24508 4.46605 -2.43603 h 0.27067 v 5.54873 q -2.57136 1.08267 -5.25099 1.81348 q -2.67963 0.73081 -5.62992 0.73081 q -7.52461 0 -11.7471 -4.06004 q -4.22244 -4.08711 -4.22244 -11.5846 q 0 -7.41635 4.03297 -11.7741 q 4.06005 -4.35777 10.6644 -4.35777 q 6.11713 0 9.4193 3.57283 q 3.32923 3.57284 3.32923 10.1501 z m -4.95325 -3.89764 q -0.0271 -4.00591 -2.03002 -6.19833 q -1.97589 -2.19243 -6.03593 -2.19243 q -4.08711 0 -6.52313 2.40896 q -2.40896 2.40896 -2.73376 5.9818 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 324.957 270.235 h -6.41487 l -8.58022 -11.6117 l -8.63435 11.6117 h -5.92766 l 11.8012 -15.0763 l -11.6929 -15.1575 h 6.41487 l 8.52609 11.4223 l 8.55315 -11.4223 h 5.95473 l -11.8824 14.8868 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 347.287 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 148.751 309.293 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 181.367 339.527 h -5.08858 v -17.2146 q 0 -2.08415 -0.24361 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27214 -0.56841 -3.30216 -0.56841 q -2.08416 0 -4.35778 1.02855 q -2.27362 1.02854 -4.35778 2.62549 v 22.5738 h -5.08858 v -42.1162 h 5.08858 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.5443 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 196.633 304.231 h -5.7382 v -5.27806 h 5.7382 z m -0.32481 35.2953 h -5.08858 v -30.2338 h 5.08858 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 228.734 337.632 q -2.54429 1.21802 -4.84498 1.89469 q -2.27362 0.67667 -4.84498 0.67667 q -3.2751 0 -6.00886 -0.94734 q -2.73377 -0.97441 -4.68259 -2.92323 q -1.97588 -1.94882 -3.05856 -4.92618 q -1.08268 -2.97737 -1.08268 -6.95621 q 0 -7.41634 4.06004 -11.6388 q 4.08711 -4.22245 10.7727 -4.22245 q 2.59842 0 5.08858 0.73081 q 2.51723 0.73081 4.60138 1.78642 v 5.65699 h -0.27067 q -2.32775 -1.81348 -4.81791 -2.78789 q -2.46309 -0.97441 -4.81792 -0.97441 q -4.33071 0 -6.84793 2.92323 q -2.49016 2.89616 -2.49016 8.52608 q 0 5.46753 2.43602 8.41782 q 2.46309 2.92323 6.90207 2.92323 q 1.54282 0 3.13977 -0.406 q 1.59695 -0.40601 2.86909 -1.05561 q 1.10975 -0.56841 2.08416 -1.19095 q 0.97441 -0.64961 1.54281 -1.10974 h 0.27067 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 260.538 339.527 h -5.08859 v -17.2146 q 0 -2.08415 -0.2436 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27215 -0.56841 -3.30217 -0.56841 q -2.08415 0 -4.35777 1.02855 q -2.27363 1.02854 -4.35778 2.62549 v 22.5738 h -5.08859 v -42.1162 h 5.08859 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.54429 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 148.751 378.584 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 L 108.043 378.584 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 174.952 384.133 h -0.27067 q -1.13682 -0.27067 -2.21949 -0.37894 q -1.05561 -0.13533 -2.51723 -0.13533 q -2.35482 0 -4.54725 1.05561 q -2.19242 1.02854 -4.22244 2.67963 v 21.4641 h -5.08858 V 378.584 h 5.08858 v 4.46604 q 3.0315 -2.43602 5.33219 -3.4375 q 2.32776 -1.02854 4.73671 -1.02854 q 1.32628 0 1.92176 0.0812 q 0.59547 0.0541 1.78642 0.2436 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 202.263 408.818 h -5.06152 v -3.22096 q -0.67667 0.46013 -1.84055 1.29921 q -1.13681 0.81201 -2.21949 1.29921 q -1.27215 0.62254 -2.92323 1.02855 q -1.65108 0.43307 -3.87057 0.43307 q -4.08711 0 -6.92914 -2.7067 q -2.84203 -2.70669 -2.84203 -6.90207 q 0 -3.4375 1.46162 -5.54872 q 1.48868 -2.13829 4.22244 -3.3563 q 2.76083 -1.21801 6.6314 -1.65109 q 3.87057 -0.43307 8.30955 -0.6496 v -0.78494 q 0 -1.73229 -0.62254 -2.8691 q -0.59547 -1.13681 -1.73228 -1.78642 q -1.08268 -0.62254 -2.59843 -0.83907 q -1.51575 -0.21654 -3.16683 -0.21654 q -2.00295 0 -4.46605 0.54134 q -2.46309 0.51427 -5.08858 1.51575 h -0.27067 V 379.234 q 1.48868 -0.406 4.30364 -0.89321 q 2.81496 -0.4872 5.54873 -0.4872 q 3.1939 0 5.54872 0.54134 q 2.38189 0.51427 4.11418 1.78642 q 1.70521 1.24507 2.59842 3.22096 q 0.89321 1.97589 0.89321 4.89912 z m -5.06152 -7.44341 v -8.41782 q -2.32775 0.13534 -5.49459 0.40601 q -3.13976 0.27067 -4.98031 0.78494 q -2.19243 0.62254 -3.54577 1.94882 q -1.35335 1.29921 -1.35335 3.5999 q 0 2.59843 1.56988 3.92471 q 1.56988 1.29921 4.79085 1.29921 q 2.67963 0 4.89912 -1.02854 q 2.21949 -1.05561 4.11417 -2.51723 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 238.668 393.336 q 0 3.6811 -1.05561 6.73967 q -1.05561 3.0315 -2.97736 5.14272 q -1.78642 2.00295 -4.22245 3.1127 q -2.40895 1.08268 -5.11565 1.08268 q -2.35482 0 -4.27657 -0.51428 q -1.89469 -0.51427 -3.87058 -1.59695 v 12.6673 h -5.08858 V 378.584 h 5.08858 v 3.16683 q 2.03002 -1.70522 4.54725 -2.84203 q 2.54429 -1.16388 5.41339 -1.16388 q 5.46752 0 8.49902 4.14124 q 3.05856 4.11418 3.05856 11.4493 z m -5.25098 0.13533 q 0 -5.46752 -1.86762 -8.17421 q -1.86762 -2.7067 -5.7382 -2.7067 q -2.19242 0 -4.41191 0.94735 q -2.21949 0.94734 -4.24951 2.49016 v 17.1334 q 2.16536 0.97441 3.70817 1.32628 q 1.56989 0.35187 3.54577 0.35187 q 4.24951 0 6.6314 -2.86909 q 2.3819 -2.8691 2.3819 -8.49903 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 268.198 400.103 q 0 4.14124 -3.4375 6.7938 q -3.41044 2.65256 -9.3381 2.65256 q -3.3563 0 -6.17126 -0.78494 q -2.7879 -0.81201 -4.68258 -1.75935 v -5.71113 h 0.27067 q 2.40895 1.81349 5.35925 2.89616 q 2.9503 1.05562 5.65699 1.05562 q 3.3563 0 5.25099 -1.08268 q 1.89468 -1.08268 1.89468 -3.41044 q 0 -1.78642 -1.02854 -2.70669 q -1.02854 -0.92028 -3.95177 -1.56988 q -1.08268 -0.24361 -2.84203 -0.56841 q -1.73229 -0.3248 -3.16683 -0.70374 q -3.97885 -1.05561 -5.657 -3.08563 q -1.65108 -2.05709 -1.65108 -5.03445 q 0 -1.86762 0.75787 -3.51871 q 0.78495 -1.65108 2.35483 -2.95029 q 1.51575 -1.27215 3.84351 -2.00296 q 2.35482 -0.75787 5.25098 -0.75787 q 2.7067 0 5.46752 0.67667 q 2.7879 0.64961 4.62845 1.59695 v 5.44046 h -0.27067 q -1.94882 -1.43455 -4.73671 -2.40896 q -2.7879 -1.00148 -5.46752 -1.00148 q -2.7879 0 -4.70965 1.08268 q -1.92176 1.05561 -1.92176 3.16683 q 0 1.86762 1.16388 2.81496 q 1.13681 0.94735 3.68111 1.54282 q 1.40748 0.3248 3.13976 0.64961 q 1.75935 0.3248 2.92323 0.59547 q 3.54577 0.81201 5.46752 2.7879 q 1.92176 2.00295 1.92176 5.30512 z" FillRule="NonZero"/> + </Path.Data> + </Path> + </Canvas> + <Canvas UseLayoutRounding="False"> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 209.46 95.7174 q 0 1.16016 -0.25781 2.0267 q -0.25066 0.859377 -0.83074 1.4323 q -0.55143 0.544272 -1.28906 0.794924 q -0.73763 0.250656 -1.71876 0.250656 q -1.0026 0 -1.7474 -0.264979 q -0.74479 -0.264974 -1.25325 -0.780601 q -0.58008 -0.587241 -0.8379 -1.41797 q -0.25065 -0.830731 -0.25065 -2.04102 v -6.38087 h 1.41797 v 6.45249 q 0 0.866538 0.11459 1.36784 q 0.12174 0.501303 0.40104 0.909507 q 0.31511 0.465496 0.85222 0.701824 q 0.54427 0.236329 1.30338 0.236329 q 0.76628 0 1.30339 -0.229167 q 0.53711 -0.236329 0.85938 -0.708986 q 0.2793 -0.408204 0.39388 -0.930992 q 0.12175 -0.529949 0.12175 -1.31055 v -6.4883 h 1.41797 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 219.143 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 227.987 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 236.882 100 h -7.0254 V 89.3366 h 7.0254 v 1.26042 h -5.60743 v 2.92188 h 5.60743 v 1.26042 h -5.60743 v 3.96029 h 5.60743 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 247.953 100 h -1.8405 l -3.56642 -4.23959 h -1.99805 V 100 H 239.13 V 89.3366 h 2.98634 q 0.96679 0 1.61133 0.128907 q 0.64453 0.121745 1.16016 0.444011 q 0.58008 0.365235 0.90234 0.92383 q 0.32943 0.551434 0.32943 1.40365 q 0 1.153 -0.58008 1.9336 q -0.58008 0.773439 -1.59701 1.16732 z m -3.31577 -7.66278 q 0 -0.458334 -0.16471 -0.809247 q -0.15755 -0.358073 -0.52995 -0.601564 q -0.30794 -0.207682 -0.73047 -0.286459 q -0.42253 -0.08594 -0.99544 -0.08594 h -1.66863 v 4.02475 h 1.4323 q 0.67318 0 1.17448 -0.114584 q 0.5013 -0.121745 0.85221 -0.444011 q 0.32227 -0.300782 0.47266 -0.687502 q 0.15755 -0.393881 0.15755 -0.995445 z" FillRule="NonZero"/> + </Path.Data> + </Path> + </Canvas> + <Canvas UseLayoutRounding="False"> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 310.928 100 h -1.41797 v -9.18817 l -2.96485 6.25197 h -0.84506 l -2.94336 -6.25197 V 100 h -1.32488 V 89.3366 h 1.9336 l 2.84311 5.93686 l 2.75 -5.93686 h 1.96941 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 320.317 100 h -1.34635 v -0.888023 q -0.68034 0.537111 -1.30339 0.82357 q -0.62305 0.286463 -1.375 0.286463 q -1.26042 0 -1.96225 -0.766282 q -0.70182 -0.773439 -0.70182 -2.26303 v -5.19207 h 1.34635 v 4.5547 q 0 0.608725 0.0573 1.04557 q 0.0573 0.429688 0.24349 0.737632 q 0.19336 0.315105 0.5013 0.458334 q 0.30794 0.14323 0.89518 0.14323 q 0.52279 0 1.13868 -0.272136 q 0.62305 -0.272136 1.16016 -0.694663 v -5.97267 h 1.34635 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 324.328 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 331.145 99.9284 q -0.37955 0.100265 -0.83073 0.164715 q -0.44401 0.0644 -0.79492 0.0644 q -1.22461 0 -1.86198 -0.658853 q -0.63738 -0.658856 -0.63738 -2.11264 v -4.25392 h -0.9095 v -1.13151 h 0.9095 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.988284 q 0.0286 0.350912 0.20052 0.658856 q 0.15755 0.286459 0.42969 0.422527 q 0.27929 0.128906 0.84505 0.128906 q 0.32943 0 0.6875 -0.0931 q 0.35808 -0.100261 0.51563 -0.164714 h 0.0716 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 334.218 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 334.132 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 343.313 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 347.423 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 347.337 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 356.69 100 h -1.34635 v -4.5547 q 0 -0.551434 -0.0645 -1.03125 q -0.0645 -0.486981 -0.23632 -0.759117 q -0.17904 -0.300782 -0.51563 -0.444011 q -0.33659 -0.150391 -0.8737 -0.150391 q -0.55143 0 -1.153 0.272136 q -0.60156 0.272136 -1.153 0.694663 V 100 h -1.34635 v -7.99937 h 1.34635 v 0.888023 q 0.63021 -0.522788 1.30339 -0.816409 q 0.67318 -0.29362 1.38217 -0.29362 q 1.29622 0 1.97656 0.780601 q 0.68034 0.7806 0.68034 2.2487 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 365.979 96.14 h -5.8939 q 0 0.737632 0.22201 1.28907 q 0.222 0.544272 0.60872 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13152 0.171875 q 0.8164 0 1.63997 -0.322266 q 0.83074 -0.329428 1.18165 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38932 0.479819 q -0.70899 0.193361 -1.48959 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88087 0.945314 0.88087 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53712 -1.63998 q -0.52278 -0.580079 -1.597 -0.580079 q -1.08139 0 -1.72592 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 305.479 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44401 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34636 v 2.29884 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0286 0.35091 0.20052 0.65885 q 0.15756 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84506 0.1289 q 0.32942 0 0.6875 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 313.8 114.473 h -5.89389 q 0 0.73763 0.222 1.28907 q 0.22201 0.54427 0.60873 0.89518 q 0.3724 0.34375 0.88086 0.51563 q 0.51563 0.17187 1.13151 0.17187 q 0.81641 0 1.63998 -0.32226 q 0.83073 -0.32943 1.18164 -0.64454 h 0.0716 v 1.46811 q -0.68034 0.28645 -1.38933 0.47981 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94532 q 0.88086 0.94531 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58269 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 322.766 118.333 h -1.69727 l -2.27019 -3.07228 l -2.28451 3.07228 H 314.946 l 3.1224 -3.98895 l -3.09376 -4.01042 h 1.69727 l 2.25587 3.02214 l 2.26302 -3.02214 h 1.57553 l -3.14389 3.93881 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 328.675 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44402 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34635 v 2.29884 h 2.77866 v 1.13151 h -2.77866 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0287 0.35091 0.20052 0.65885 q 0.15755 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84505 0.1289 q 0.32943 0 0.68751 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 308.243 127.264 h -5.39259 v 3.00782 h 4.63347 v 1.26042 h -4.63347 v 5.13478 h -1.41798 v -10.6634 h 6.81057 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 317.811 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35092 1.03841 0.35092 2.35612 q 0 1.31772 -0.35808 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.5612 1.08854 q -0.89519 0.36524 -2.04819 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99544 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34375 -1.03841 1.0026 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54232 -1.13151 q -1.62566 0 -2.55665 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53517 1.11002 q 1.58984 0 2.528 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 329.355 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35091 1.03841 0.35091 2.35612 q 0 1.31772 -0.35807 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.56121 1.08854 q -0.89518 0.36524 -2.04818 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99545 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34376 -1.03841 1.00261 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54233 -1.13151 q -1.62565 0 -2.55664 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53516 1.11002 q 1.58985 0 2.52801 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="NonZero"/> + </Path.Data> + </Path> + </Canvas> + <Canvas RenderTransformOrigin="0,0" UseLayoutRounding="False"> + <Canvas.RenderTransform> + <MatrixTransform Matrix="1.0,0.0,0.0,1.0,445.71038,-129.64807"/> + </Canvas.RenderTransform> + <Canvas UseLayoutRounding="False"> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 64.6165 228.86 q -0.8737 0.40104 -1.91211 0.70182 q -1.03125 0.29362 -1.99805 0.29362 q -1.2461 0 -2.28451 -0.34375 q -1.03841 -0.34375 -1.76889 -1.03125 q -0.737632 -0.69466 -1.13867 -1.73308 q -0.401043 -1.04557 -0.401043 -2.44206 q 0 -2.55665 1.48959 -4.03191 q 1.49675 -1.48242 4.10353 -1.48242 q 0.909507 0 1.85482 0.222 q 0.952476 0.21485 2.04818 0.73763 v 1.68295 h -0.128907 q -0.222005 -0.17188 -0.644532 -0.45117 q -0.422527 -0.2793 -0.830732 -0.4655 q -0.494141 -0.222 -1.12435 -0.36523 q -0.623048 -0.1504 -1.41797 -0.1504 q -1.79037 0 -2.83594 1.153 q -1.03841 1.14584 -1.03841 3.10808 q 0 2.06967 1.08854 3.22267 q 1.08854 1.14583 2.96485 1.14583 q 0.687501 0 1.36784 -0.13607 q 0.687502 -0.13606 1.20313 -0.35091 v -2.61394 h -2.85743 v -1.24609 h 4.26108 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 71.9785 223.117 h -0.07161 q -0.300782 -0.0716 -0.587241 -0.10026 q -0.279298 -0.0358 -0.666017 -0.0358 q -0.623049 0 -1.20313 0.2793 q -0.580079 0.27213 -1.11719 0.70898 v 5.67905 h -1.34636 v -7.99937 h 1.34636 v 1.18165 q 0.802085 -0.64454 1.41081 -0.90951 q 0.615887 -0.27214 1.25326 -0.27214 q 0.350912 0 0.508464 0.0215 q 0.157553 0.0143 0.472658 0.0645 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 80.0638 225.652 q 0 1.95508 -1.00261 3.08659 q -1.00261 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.995445 -1.13151 -0.995445 -3.08659 q 0 -1.95508 0.995445 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13152 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.608725 -2.306 q -0.608726 -0.75911 -1.69011 -0.75911 q -1.09571 0 -1.70443 0.75911 q -0.601564 0.75196 -0.601564 2.306 q 0 1.50391 0.608725 2.28451 q 0.608726 0.77344 1.69727 0.77344 q 1.07422 0 1.68295 -0.76628 q 0.615887 -0.77344 0.615887 -2.29167 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 88.7793 229.648 h -1.34636 v -0.88802 q -0.68034 0.53711 -1.30339 0.82357 q -0.623049 0.28646 -1.375 0.28646 q -1.26042 0 -1.96224 -0.76628 q -0.701824 -0.77344 -0.701824 -2.26303 v -5.19207 h 1.34636 v 4.5547 q 0 0.60873 0.05729 1.04558 q 0.05729 0.42969 0.24349 0.73763 q 0.19336 0.3151 0.501303 0.45833 q 0.307944 0.14323 0.895185 0.14323 q 0.522787 0 1.13867 -0.27213 q 0.623048 -0.27214 1.16016 -0.69467 v -5.97267 h 1.34636 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 98.4688 225.552 q 0 0.97396 -0.279297 1.7832 q -0.279298 0.80209 -0.787763 1.36069 q -0.472657 0.52994 -1.11719 0.82356 q -0.637371 0.28646 -1.35352 0.28646 q -0.623049 0 -1.13151 -0.13606 q -0.501304 -0.13607 -1.02409 -0.42253 v 3.35157 h -1.34636 v -10.9499 h 1.34636 v 0.8379 q 0.53711 -0.45118 1.20313 -0.75196 q 0.673178 -0.30794 1.43229 -0.30794 q 1.44662 0 2.2487 1.0957 q 0.809246 1.08855 0.809246 3.02931 z m -1.38933 0.0358 q 0 -1.44662 -0.494142 -2.16277 q -0.494141 -0.71615 -1.51823 -0.71615 q -0.58008 0 -1.16732 0.25065 q -0.587241 0.25066 -1.12435 0.65886 v 4.53321 q 0.572918 0.25782 0.981122 0.35092 q 0.415365 0.0931 0.938153 0.0931 q 1.12435 0 1.75456 -0.75911 q 0.63021 -0.75912 0.63021 -2.2487 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 107.263 225.788 h -5.89389 q 0 0.73763 0.22201 1.28906 q 0.222 0.54427 0.60872 0.89519 q 0.3724 0.34375 0.88086 0.51562 q 0.51563 0.17188 1.13151 0.17188 q 0.81641 0 1.63998 -0.32227 q 0.83073 -0.32943 1.18165 -0.64453 h 0.0716 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.88086 0.94532 0.88086 2.68556 z m -1.31055 -1.03126 q -0.007 -1.05989 -0.53711 -1.63997 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58268 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="M 115.792 229.648 H 114.446 v -0.83789 q -0.58008 0.5013 -1.21029 0.7806 q -0.63021 0.2793 -1.36784 0.2793 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.79493 0.78776 -1.35352 q 0.48698 -0.54427 1.13151 -0.83073 q 0.6517 -0.28646 1.34636 -0.28646 q 0.63021 0 1.11719 0.13607 q 0.48698 0.1289 1.02409 0.4082 v -3.46615 h 1.34636 z m -1.34636 -1.9694 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.33659 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13151 0 -1.76172 0.78776 q -0.63021 0.78777 -0.63021 2.23438 q 0 1.42514 0.48698 2.16993 q 0.48698 0.73763 1.5612 0.73763 q 0.57292 0 1.16016 -0.25065 q 0.58724 -0.25781 1.0957 -0.65885 z" FillRule="NonZero"/> + </Path.Data> + </Path> + </Canvas> + <Canvas UseLayoutRounding="False"> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 59.7681 259.576 q -0.379559 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637371 -0.65886 -0.637371 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02865 0.35091 0.200522 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358073 -0.10026 0.515626 -0.16471 h 0.07161 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 68.0898 255.788 h -5.89389 q 0 0.73763 0.222005 1.28906 q 0.222006 0.54427 0.608726 0.89519 q 0.372396 0.34375 0.880861 0.51562 q 0.515626 0.17188 1.13151 0.17188 q 0.816408 0 1.63998 -0.32227 q 0.830731 -0.32943 1.18164 -0.64453 h 0.07162 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.708986 0.19336 -1.48959 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.880861 0.94532 0.880861 2.68556 z m -1.31055 -1.03126 q -0.0072 -1.05989 -0.537111 -1.63997 q -0.522788 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72592 0.63737 q -0.637372 0.63737 -0.723309 1.58268 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 77.0559 259.648 h -1.69727 l -2.27019 -3.07227 l -2.28451 3.07227 h -1.56836 l 3.1224 -3.98894 l -3.09376 -4.01043 h 1.69727 l 2.25587 3.02215 l 2.26303 -3.02215 h 1.57552 l -3.14389 3.93882 z" FillRule="NonZero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 82.9642 259.576 q -0.379558 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637372 -0.65886 -0.637372 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02864 0.35091 0.200521 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358074 -0.10026 0.515626 -0.16471 h 0.07162 z" FillRule="NonZero"/> + </Path.Data> + </Path> + </Canvas> + </Canvas> + <Rectangle Canvas.Left="100.0" Canvas.Top="200.0" Fill="#ff000080" Height="100.0" Width="100.0"/> + <Rectangle Canvas.Left="292.0" Canvas.Top="192.0" Height="116.0" Stroke="#ffff0000" StrokeJoin="Miter" StrokeThickness="16.0" Width="216.0"/> + <Path Fill="#ffffff00" Stroke="#ff008000" StrokeJoin="Miter" StrokeThickness="16.0"> + <Path.Data> + <PathGeometry Figures="M 644.943 200 L 755.057 200 A 44.9432 38.9508 0 0 1 800 238.951 L 800 261.049 A 44.9432 38.9508 0 0 1 755.057 300 L 644.943 300 A 44.9432 38.9508 0 0 1 600 261.049 L 600 238.951 A 44.9432 38.9508 0 0 1 644.943 200 z" FillRule="NonZero"/> + </Path.Data> + </Path> + </Canvas> + </Canvas> +</Viewbox> diff --git a/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__wpf__--indent__4.out b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__wpf__--indent__4.out new file mode 100644 index 0000000..a3acb8d --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__wpf__--indent__4.out @@ -0,0 +1,84 @@ +<?xml version="1.0" ?> +<Viewbox Name="test" Stretch="Uniform" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> + <Canvas Height="1000.0" UseLayoutRounding="False" Width="1000.0"> + <Canvas.Clip> + <RectangleGeometry Rect="0.0,0.0,1000.0,1000.0"/> + </Canvas.Clip> + <Canvas UseLayoutRounding="False"> + <Rectangle Canvas.Left="651.3089" Canvas.Top="353.92661" Fill="#ffff0000" Height="201.49811" Opacity="0.5" RadiusX="0.0" RadiusY="0.0" Width="248.69112"/> + </Canvas> + <Canvas UseLayoutRounding="False"> + <Ellipse Canvas.Left="100.0" Canvas.Top="400.0" Fill="#ff000080" Height="100.0" Width="100.0"/> + <Ellipse Canvas.Left="292.0" Canvas.Top="392.0" Height="116.0" Stroke="#ffff0000" StrokeDashCap="Flat" StrokeThickness="16.0" Width="216.0"/> + <Path Fill="#ffffff00" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="16.0"> + <Path.Data> + <PathGeometry Figures="m 783.086 477.824 a 100 50 0 0 1 -111.098 20.1744 a 100 50 0 0 1 -71.963 -46.8834 a 100 50 0 0 1 67.7113 -48.4409 a 100 50 0 0 1 112.787 17.6779 L 700 450 Z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Canvas> + <Path Stroke="#ff000000" StrokeDashCap="Flat" StrokeThickness="10.0"> + <Path.Data> + <PathGeometry Figures="M 100 600 L 200 700 L 300 600 L 400 700" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Canvas RenderTransform="7.0710678118654755,7.0710678118654755,-7.0710678118654755,7.0710678118654755,100.0,600.0" UseLayoutRounding="False"> + <Path Fill="#ff000000" RenderTransform="1.1,0.0,0.0,1.1,1.1,0.0" Stroke="#ff000000" StrokeDashCap="Flat" StrokeLineJoin="Round" StrokeThickness="0.625"> + <Path.Data> + <PathGeometry Figures="M 8.71859 4.03374 L -2.20729 0.0160133 L 8.71859 -4.00171 C 6.97309 -1.62965 6.98315 1.61574 8.71859 4.03374 z"/> + </Path.Data> + </Path> + </Canvas> + </Canvas> + <Path Stroke="#ff000000" StrokeDashCap="Flat" StrokeThickness="10.0"> + <Path.Data> + <PathGeometry Figures="m 500 600 c 0 0 0 100 100 100 c 100 0 0 -100 100 -100 c 100 0 100 100 100 100" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ffffff00" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="10.0"> + <Path.Data> + <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ffffff00" RenderTransform="1.0,0.0,0.0,1.0,200.0,2.99622" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="10.0"> + <Path.Data> + <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + </Canvas> + <Canvas UseLayoutRounding="False"> + <TextBlock Canvas.Left="100.0" Canvas.Top="87.16666639249999" FontFamily="Arial" FontSize="14.66666698" Foreground="#ff000000" LineHeight="18.333333725"> + Hello World + <LineBreak/> + </TextBlock> + <TextBlock Canvas.Left="105.71429" Canvas.Top="224.66254" FontFamily="Arial" FontSize="40.0" Foreground="#ff000000" LineHeight="50.0" RenderTransform="0.26458333,0.0,0.0,0.26458333,294.2855588767857,-136.3160720405418" TextWrapping="Wrap" Width="264.5675"> + <Span FontSize="55.43307114">flow text which wraps</Span> + <LineBreak/> + </TextBlock> + <TextBlock Canvas.Left="200.0" Canvas.Top="87.16666639249999" FontFamily="Arial" FontSize="14.66666698" Foreground="#ff000000" LineHeight="18.333333725"> + UPPER + <LineBreak/> + </TextBlock> + <TextBlock Canvas.Left="300.0" Canvas.Top="90.73958360750001" FontFamily="Arial" FontSize="10.58333302" Foreground="#ff000000" LineHeight="13.229166274999999"> + <Span FontSize="14.66666698">Multi line</Span> + <LineBreak/> + <Span FontSize="14.66666698">text</Span> + <LineBreak/> + <Span FontSize="14.66666698">FOO</Span> + <LineBreak/> + </TextBlock> + <Canvas RenderTransform="1.0,0.0,0.0,1.0,445.71038,-129.64807" UseLayoutRounding="False"> + <TextBlock Canvas.Left="54.289616" Canvas.Top="220.3876536075" FontFamily="Arial" FontSize="10.58333302" Foreground="#ff000000" LineHeight="13.229166274999999"> + <Span FontSize="14.66666698">Grouped</Span> + <LineBreak/> + </TextBlock> + <TextBlock Canvas.Left="54.289619" Canvas.Top="246.8147363925" FontFamily="Arial" FontSize="14.66666698" Foreground="#ff000000" LineHeight="18.333333725"> + text + <LineBreak/> + </TextBlock> + </Canvas> + <Rectangle Canvas.Left="100.0" Canvas.Top="200.0" Fill="#ff000080" Height="100.0" RadiusX="0.0" RadiusY="0.0" Width="100.0"/> + <Rectangle Canvas.Left="292.0" Canvas.Top="192.0" Height="116.0" RadiusX="0.0" RadiusY="0.0" Stroke="#ffff0000" StrokeDashCap="Flat" StrokeThickness="16.0" Width="216.0"/> + <Rectangle Canvas.Left="592.0" Canvas.Top="192.0" Fill="#ffffff00" Height="116.0" RadiusX="44.943226" RadiusY="38.950798" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="16.0" Width="216.0"/> + </Canvas> + </Canvas> +</Viewbox> diff --git a/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__wpf__--text-to-path__True.out b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__wpf__--text-to-path__True.out new file mode 100644 index 0000000..43eda32 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__wpf__--text-to-path__True.out @@ -0,0 +1,368 @@ +<?xml version="1.0" ?> +<Viewbox Name="input" Stretch="Uniform" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> + <Canvas Height="1000.0" UseLayoutRounding="False" Width="1000.0"> + <Canvas.Clip> + <RectangleGeometry Rect="0.0,0.0,1000.0,1000.0"/> + </Canvas.Clip> + <Canvas UseLayoutRounding="False"> + <Rectangle Canvas.Left="651.3089" Canvas.Top="353.92661" Fill="#ffff0000" Height="201.49811" Opacity="0.5" RadiusX="0.0" RadiusY="0.0" Width="248.69112"/> + </Canvas> + <Canvas UseLayoutRounding="False"> + <Ellipse Canvas.Left="100.0" Canvas.Top="400.0" Fill="#ff000080" Height="100.0" Width="100.0"/> + <Ellipse Canvas.Left="292.0" Canvas.Top="392.0" Height="116.0" Stroke="#ffff0000" StrokeDashCap="Flat" StrokeThickness="16.0" Width="216.0"/> + <Path Fill="#ffffff00" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="16.0"> + <Path.Data> + <PathGeometry Figures="m 783.086 477.824 a 100 50 0 0 1 -111.098 20.1744 a 100 50 0 0 1 -71.963 -46.8834 a 100 50 0 0 1 67.7113 -48.4409 a 100 50 0 0 1 112.787 17.6779 L 700 450 Z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Canvas> + <Path Stroke="#ff000000" StrokeDashCap="Flat" StrokeThickness="10.0"> + <Path.Data> + <PathGeometry Figures="M 100 600 L 200 700 L 300 600 L 400 700" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Canvas RenderTransform="7.0710678118654755,7.0710678118654755,-7.0710678118654755,7.0710678118654755,100.0,600.0" UseLayoutRounding="False"> + <Path Fill="#ff000000" RenderTransform="1.1,0.0,0.0,1.1,1.1,0.0" Stroke="#ff000000" StrokeDashCap="Flat" StrokeLineJoin="Round" StrokeThickness="0.625"> + <Path.Data> + <PathGeometry Figures="M 8.71859 4.03374 L -2.20729 0.0160133 L 8.71859 -4.00171 C 6.97309 -1.62965 6.98315 1.61574 8.71859 4.03374 z"/> + </Path.Data> + </Path> + </Canvas> + </Canvas> + <Path Stroke="#ff000000" StrokeDashCap="Flat" StrokeThickness="10.0"> + <Path.Data> + <PathGeometry Figures="m 500 600 c 0 0 0 100 100 100 c 100 0 0 -100 100 -100 c 100 0 100 100 100 100" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ffffff00" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="10.0"> + <Path.Data> + <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ffffff00" RenderTransform="1.0,0.0,0.0,1.0,200.0,2.99622" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="10.0"> + <Path.Data> + <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + </Canvas> + <Canvas UseLayoutRounding="False"> + <Canvas UseLayoutRounding="False"> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 109.589 100 h -1.41797 v -5.22072 h -5.32097 V 100 h -1.41798 V 89.3366 h 1.41798 v 4.1823 h 5.32097 v -4.1823 h 1.41797 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 119.042 96.14 h -5.89389 q 0 0.737632 0.222 1.28907 q 0.22201 0.544272 0.60873 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13151 0.171875 q 0.81641 0 1.63998 -0.322266 q 0.83073 -0.329428 1.18164 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38933 0.479819 q -0.70898 0.193361 -1.48958 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88086 0.945314 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.580079 -1.59701 -0.580079 q -1.08138 0 -1.72591 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 122.444 100 h -1.34635 V 88.8567 h 1.34635 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 126.469 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 135.951 96.0039 q 0 1.95508 -1.0026 3.0866 q -1.00261 1.13152 -2.68556 1.13152 q -1.69727 0 -2.69987 -1.13152 q -0.99545 -1.13151 -0.99545 -3.0866 q 0 -1.95508 0.99545 -3.0866 q 1.0026 -1.13867 2.69987 -1.13867 q 1.68295 0 2.68556 1.13867 q 1.0026 1.13151 1.0026 3.0866 z m -1.38932 0 q 0 -1.55404 -0.60873 -2.30599 q -0.60872 -0.759116 -1.69011 -0.759116 q -1.0957 0 -1.70443 0.759116 q -0.60156 0.751955 -0.60156 2.30599 q 0 1.50391 0.60872 2.28451 q 0.60873 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61589 -0.773439 0.61589 -2.29167 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="M 155.709 89.3366 L 152.938 100 h -1.59701 L 149.099 91.1484 L 146.908 100 h -1.5612 l -2.82162 -10.6634 h 1.45378 l 2.24154 8.86591 l 2.20573 -8.86591 h 1.43946 l 2.22722 8.95184 l 2.22722 -8.95184 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 163.794 96.0039 q 0 1.95508 -1.00261 3.0866 q -1.0026 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.99544 -1.13151 -0.99544 -3.0866 q 0 -1.95508 0.99544 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13151 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.60872 -2.30599 q -0.60873 -0.759116 -1.69011 -0.759116 q -1.09571 0 -1.70443 0.759116 q -0.60157 0.751955 -0.60157 2.30599 q 0 1.50391 0.60873 2.28451 q 0.60872 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61588 -0.773439 0.61588 -2.29167 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 170.87 93.4687 h -0.0716 q -0.30078 -0.07161 -0.58724 -0.100261 q -0.2793 -0.03581 -0.66602 -0.03581 q -0.62304 0 -1.20312 0.279297 q -0.58008 0.272137 -1.11719 0.708986 V 100 h -1.34636 v -7.99937 h 1.34636 v 1.18164 q 0.80208 -0.644533 1.41081 -0.909507 q 0.61588 -0.272136 1.25325 -0.272136 q 0.35092 0 0.50847 0.02148 q 0.15755 0.01432 0.47266 0.06445 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 173.498 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 182.651 100 h -1.34636 v -0.837893 q -0.58008 0.501304 -1.21029 0.780601 q -0.63021 0.279302 -1.36784 0.279302 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.794924 0.78776 -1.35352 q 0.48698 -0.544272 1.13151 -0.830731 q 0.6517 -0.286459 1.34636 -0.286459 q 0.63021 0 1.11719 0.136068 q 0.48698 0.128907 1.02409 0.408204 v -3.46615 h 1.34636 z m -1.34636 -1.96941 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.336589 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13152 0 -1.76172 0.787762 q -0.63021 0.787762 -0.63021 2.23438 q 0 1.42513 0.48698 2.16993 q 0.48698 0.737632 1.5612 0.737632 q 0.57292 0 1.16016 -0.250652 q 0.58724 -0.257813 1.0957 -0.658856 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + </Canvas> + <Canvas RenderTransform="0.26458333,0.0,0.0,0.26458333,372.02961,28.904505" UseLayoutRounding="False"> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 126.989 233.045 h -0.27067 q -0.83907 -0.24361 -2.19242 -0.48721 q -1.35335 -0.27067 -2.38189 -0.27067 q -3.2751 0 -4.76378 1.46162 q -1.46162 1.43455 -1.46162 5.22392 v 1.02854 h 9.1757 v 4.27658 h -9.0133 v 25.9572 h -5.08858 v -25.9572 h -3.4375 v -4.27658 h 3.4375 v -1.00148 q 0 -5.38632 2.67963 -8.25541 q 2.67962 -2.89617 7.74114 -2.89617 q 1.70522 0 3.05857 0.16241 q 1.38041 0.1624 2.51722 0.37893 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 135.353 270.235 h -5.08859 v -42.1162 h 5.08859 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 171.19 255.132 q 0 7.38928 -3.78937 11.6659 q -3.78937 4.27657 -10.1501 4.27657 q -6.41486 0 -10.2042 -4.27657 q -3.76231 -4.27658 -3.76231 -11.6659 q 0 -7.38927 3.76231 -11.6659 q 3.78937 -4.30364 10.2042 -4.30364 q 6.36074 0 10.1501 4.30364 q 3.78937 4.27658 3.78937 11.6659 z m -5.25099 0 q 0 -5.87352 -2.30069 -8.71555 q -2.30069 -2.8691 -6.3878 -2.8691 q -4.14124 0 -6.44193 2.8691 q -2.27362 2.84203 -2.27362 8.71555 q 0 5.68406 2.30069 8.63436 q 2.30069 2.92323 6.41486 2.92323 q 4.06005 0 6.36074 -2.89616 q 2.32775 -2.92323 2.32775 -8.66143 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 217.095 240.002 l -7.87648 30.2338 h -4.70965 l -7.76821 -23.3046 l -7.71408 23.3046 h -4.68259 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55168 -23.4129 h 4.19537 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 259.617 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 291.069 255.646 h -22.2761 q 0 2.78789 0.83907 4.87205 q 0.83908 2.05708 2.30069 3.38336 q 1.40748 1.29922 3.32924 1.94882 q 1.94882 0.64961 4.27657 0.64961 q 3.08563 0 6.19833 -1.21801 q 3.13977 -1.24508 4.46605 -2.43603 h 0.27067 v 5.54873 q -2.57136 1.08267 -5.25099 1.81348 q -2.67963 0.73081 -5.62992 0.73081 q -7.52461 0 -11.7471 -4.06004 q -4.22244 -4.08711 -4.22244 -11.5846 q 0 -7.41635 4.03297 -11.7741 q 4.06005 -4.35777 10.6644 -4.35777 q 6.11713 0 9.4193 3.57283 q 3.32923 3.57284 3.32923 10.1501 z m -4.95325 -3.89764 q -0.0271 -4.00591 -2.03002 -6.19833 q -1.97589 -2.19243 -6.03593 -2.19243 q -4.08711 0 -6.52313 2.40896 q -2.40896 2.40896 -2.73376 5.9818 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 324.957 270.235 h -6.41487 l -8.58022 -11.6117 l -8.63435 11.6117 h -5.92766 l 11.8012 -15.0763 l -11.6929 -15.1575 h 6.41487 l 8.52609 11.4223 l 8.55315 -11.4223 h 5.95473 l -11.8824 14.8868 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 347.287 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 148.751 309.293 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 181.367 339.527 h -5.08858 v -17.2146 q 0 -2.08415 -0.24361 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27214 -0.56841 -3.30216 -0.56841 q -2.08416 0 -4.35778 1.02855 q -2.27362 1.02854 -4.35778 2.62549 v 22.5738 h -5.08858 v -42.1162 h 5.08858 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.5443 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 196.633 304.231 h -5.7382 v -5.27806 h 5.7382 z m -0.32481 35.2953 h -5.08858 v -30.2338 h 5.08858 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 228.734 337.632 q -2.54429 1.21802 -4.84498 1.89469 q -2.27362 0.67667 -4.84498 0.67667 q -3.2751 0 -6.00886 -0.94734 q -2.73377 -0.97441 -4.68259 -2.92323 q -1.97588 -1.94882 -3.05856 -4.92618 q -1.08268 -2.97737 -1.08268 -6.95621 q 0 -7.41634 4.06004 -11.6388 q 4.08711 -4.22245 10.7727 -4.22245 q 2.59842 0 5.08858 0.73081 q 2.51723 0.73081 4.60138 1.78642 v 5.65699 h -0.27067 q -2.32775 -1.81348 -4.81791 -2.78789 q -2.46309 -0.97441 -4.81792 -0.97441 q -4.33071 0 -6.84793 2.92323 q -2.49016 2.89616 -2.49016 8.52608 q 0 5.46753 2.43602 8.41782 q 2.46309 2.92323 6.90207 2.92323 q 1.54282 0 3.13977 -0.406 q 1.59695 -0.40601 2.86909 -1.05561 q 1.10975 -0.56841 2.08416 -1.19095 q 0.97441 -0.64961 1.54281 -1.10974 h 0.27067 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 260.538 339.527 h -5.08859 v -17.2146 q 0 -2.08415 -0.2436 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27215 -0.56841 -3.30217 -0.56841 q -2.08415 0 -4.35777 1.02855 q -2.27363 1.02854 -4.35778 2.62549 v 22.5738 h -5.08859 v -42.1162 h 5.08859 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.54429 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 148.751 378.584 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 L 108.043 378.584 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 174.952 384.133 h -0.27067 q -1.13682 -0.27067 -2.21949 -0.37894 q -1.05561 -0.13533 -2.51723 -0.13533 q -2.35482 0 -4.54725 1.05561 q -2.19242 1.02854 -4.22244 2.67963 v 21.4641 h -5.08858 V 378.584 h 5.08858 v 4.46604 q 3.0315 -2.43602 5.33219 -3.4375 q 2.32776 -1.02854 4.73671 -1.02854 q 1.32628 0 1.92176 0.0812 q 0.59547 0.0541 1.78642 0.2436 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 202.263 408.818 h -5.06152 v -3.22096 q -0.67667 0.46013 -1.84055 1.29921 q -1.13681 0.81201 -2.21949 1.29921 q -1.27215 0.62254 -2.92323 1.02855 q -1.65108 0.43307 -3.87057 0.43307 q -4.08711 0 -6.92914 -2.7067 q -2.84203 -2.70669 -2.84203 -6.90207 q 0 -3.4375 1.46162 -5.54872 q 1.48868 -2.13829 4.22244 -3.3563 q 2.76083 -1.21801 6.6314 -1.65109 q 3.87057 -0.43307 8.30955 -0.6496 v -0.78494 q 0 -1.73229 -0.62254 -2.8691 q -0.59547 -1.13681 -1.73228 -1.78642 q -1.08268 -0.62254 -2.59843 -0.83907 q -1.51575 -0.21654 -3.16683 -0.21654 q -2.00295 0 -4.46605 0.54134 q -2.46309 0.51427 -5.08858 1.51575 h -0.27067 V 379.234 q 1.48868 -0.406 4.30364 -0.89321 q 2.81496 -0.4872 5.54873 -0.4872 q 3.1939 0 5.54872 0.54134 q 2.38189 0.51427 4.11418 1.78642 q 1.70521 1.24507 2.59842 3.22096 q 0.89321 1.97589 0.89321 4.89912 z m -5.06152 -7.44341 v -8.41782 q -2.32775 0.13534 -5.49459 0.40601 q -3.13976 0.27067 -4.98031 0.78494 q -2.19243 0.62254 -3.54577 1.94882 q -1.35335 1.29921 -1.35335 3.5999 q 0 2.59843 1.56988 3.92471 q 1.56988 1.29921 4.79085 1.29921 q 2.67963 0 4.89912 -1.02854 q 2.21949 -1.05561 4.11417 -2.51723 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 238.668 393.336 q 0 3.6811 -1.05561 6.73967 q -1.05561 3.0315 -2.97736 5.14272 q -1.78642 2.00295 -4.22245 3.1127 q -2.40895 1.08268 -5.11565 1.08268 q -2.35482 0 -4.27657 -0.51428 q -1.89469 -0.51427 -3.87058 -1.59695 v 12.6673 h -5.08858 V 378.584 h 5.08858 v 3.16683 q 2.03002 -1.70522 4.54725 -2.84203 q 2.54429 -1.16388 5.41339 -1.16388 q 5.46752 0 8.49902 4.14124 q 3.05856 4.11418 3.05856 11.4493 z m -5.25098 0.13533 q 0 -5.46752 -1.86762 -8.17421 q -1.86762 -2.7067 -5.7382 -2.7067 q -2.19242 0 -4.41191 0.94735 q -2.21949 0.94734 -4.24951 2.49016 v 17.1334 q 2.16536 0.97441 3.70817 1.32628 q 1.56989 0.35187 3.54577 0.35187 q 4.24951 0 6.6314 -2.86909 q 2.3819 -2.8691 2.3819 -8.49903 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 268.198 400.103 q 0 4.14124 -3.4375 6.7938 q -3.41044 2.65256 -9.3381 2.65256 q -3.3563 0 -6.17126 -0.78494 q -2.7879 -0.81201 -4.68258 -1.75935 v -5.71113 h 0.27067 q 2.40895 1.81349 5.35925 2.89616 q 2.9503 1.05562 5.65699 1.05562 q 3.3563 0 5.25099 -1.08268 q 1.89468 -1.08268 1.89468 -3.41044 q 0 -1.78642 -1.02854 -2.70669 q -1.02854 -0.92028 -3.95177 -1.56988 q -1.08268 -0.24361 -2.84203 -0.56841 q -1.73229 -0.3248 -3.16683 -0.70374 q -3.97885 -1.05561 -5.657 -3.08563 q -1.65108 -2.05709 -1.65108 -5.03445 q 0 -1.86762 0.75787 -3.51871 q 0.78495 -1.65108 2.35483 -2.95029 q 1.51575 -1.27215 3.84351 -2.00296 q 2.35482 -0.75787 5.25098 -0.75787 q 2.7067 0 5.46752 0.67667 q 2.7879 0.64961 4.62845 1.59695 v 5.44046 h -0.27067 q -1.94882 -1.43455 -4.73671 -2.40896 q -2.7879 -1.00148 -5.46752 -1.00148 q -2.7879 0 -4.70965 1.08268 q -1.92176 1.05561 -1.92176 3.16683 q 0 1.86762 1.16388 2.81496 q 1.13681 0.94735 3.68111 1.54282 q 1.40748 0.3248 3.13976 0.64961 q 1.75935 0.3248 2.92323 0.59547 q 3.54577 0.81201 5.46752 2.7879 q 1.92176 2.00295 1.92176 5.30512 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + </Canvas> + <Canvas UseLayoutRounding="False"> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 209.46 95.7174 q 0 1.16016 -0.25781 2.0267 q -0.25066 0.859377 -0.83074 1.4323 q -0.55143 0.544272 -1.28906 0.794924 q -0.73763 0.250656 -1.71876 0.250656 q -1.0026 0 -1.7474 -0.264979 q -0.74479 -0.264974 -1.25325 -0.780601 q -0.58008 -0.587241 -0.8379 -1.41797 q -0.25065 -0.830731 -0.25065 -2.04102 v -6.38087 h 1.41797 v 6.45249 q 0 0.866538 0.11459 1.36784 q 0.12174 0.501303 0.40104 0.909507 q 0.31511 0.465496 0.85222 0.701824 q 0.54427 0.236329 1.30338 0.236329 q 0.76628 0 1.30339 -0.229167 q 0.53711 -0.236329 0.85938 -0.708986 q 0.2793 -0.408204 0.39388 -0.930992 q 0.12175 -0.529949 0.12175 -1.31055 v -6.4883 h 1.41797 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 219.143 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 227.987 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 236.882 100 h -7.0254 V 89.3366 h 7.0254 v 1.26042 h -5.60743 v 2.92188 h 5.60743 v 1.26042 h -5.60743 v 3.96029 h 5.60743 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 247.953 100 h -1.8405 l -3.56642 -4.23959 h -1.99805 V 100 H 239.13 V 89.3366 h 2.98634 q 0.96679 0 1.61133 0.128907 q 0.64453 0.121745 1.16016 0.444011 q 0.58008 0.365235 0.90234 0.92383 q 0.32943 0.551434 0.32943 1.40365 q 0 1.153 -0.58008 1.9336 q -0.58008 0.773439 -1.59701 1.16732 z m -3.31577 -7.66278 q 0 -0.458334 -0.16471 -0.809247 q -0.15755 -0.358073 -0.52995 -0.601564 q -0.30794 -0.207682 -0.73047 -0.286459 q -0.42253 -0.08594 -0.99544 -0.08594 h -1.66863 v 4.02475 h 1.4323 q 0.67318 0 1.17448 -0.114584 q 0.5013 -0.121745 0.85221 -0.444011 q 0.32227 -0.300782 0.47266 -0.687502 q 0.15755 -0.393881 0.15755 -0.995445 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + </Canvas> + <Canvas UseLayoutRounding="False"> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 310.928 100 h -1.41797 v -9.18817 l -2.96485 6.25197 h -0.84506 l -2.94336 -6.25197 V 100 h -1.32488 V 89.3366 h 1.9336 l 2.84311 5.93686 l 2.75 -5.93686 h 1.96941 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 320.317 100 h -1.34635 v -0.888023 q -0.68034 0.537111 -1.30339 0.82357 q -0.62305 0.286463 -1.375 0.286463 q -1.26042 0 -1.96225 -0.766282 q -0.70182 -0.773439 -0.70182 -2.26303 v -5.19207 h 1.34635 v 4.5547 q 0 0.608725 0.0573 1.04557 q 0.0573 0.429688 0.24349 0.737632 q 0.19336 0.315105 0.5013 0.458334 q 0.30794 0.14323 0.89518 0.14323 q 0.52279 0 1.13868 -0.272136 q 0.62305 -0.272136 1.16016 -0.694663 v -5.97267 h 1.34635 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 324.328 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 331.145 99.9284 q -0.37955 0.100265 -0.83073 0.164715 q -0.44401 0.0644 -0.79492 0.0644 q -1.22461 0 -1.86198 -0.658853 q -0.63738 -0.658856 -0.63738 -2.11264 v -4.25392 h -0.9095 v -1.13151 h 0.9095 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.988284 q 0.0286 0.350912 0.20052 0.658856 q 0.15755 0.286459 0.42969 0.422527 q 0.27929 0.128906 0.84505 0.128906 q 0.32943 0 0.6875 -0.0931 q 0.35808 -0.100261 0.51563 -0.164714 h 0.0716 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 334.218 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 334.132 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 343.313 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 347.423 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 347.337 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 356.69 100 h -1.34635 v -4.5547 q 0 -0.551434 -0.0645 -1.03125 q -0.0645 -0.486981 -0.23632 -0.759117 q -0.17904 -0.300782 -0.51563 -0.444011 q -0.33659 -0.150391 -0.8737 -0.150391 q -0.55143 0 -1.153 0.272136 q -0.60156 0.272136 -1.153 0.694663 V 100 h -1.34635 v -7.99937 h 1.34635 v 0.888023 q 0.63021 -0.522788 1.30339 -0.816409 q 0.67318 -0.29362 1.38217 -0.29362 q 1.29622 0 1.97656 0.780601 q 0.68034 0.7806 0.68034 2.2487 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 365.979 96.14 h -5.8939 q 0 0.737632 0.22201 1.28907 q 0.222 0.544272 0.60872 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13152 0.171875 q 0.8164 0 1.63997 -0.322266 q 0.83074 -0.329428 1.18165 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38932 0.479819 q -0.70899 0.193361 -1.48959 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88087 0.945314 0.88087 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53712 -1.63998 q -0.52278 -0.580079 -1.597 -0.580079 q -1.08139 0 -1.72592 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 305.479 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44401 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34636 v 2.29884 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0286 0.35091 0.20052 0.65885 q 0.15756 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84506 0.1289 q 0.32942 0 0.6875 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 313.8 114.473 h -5.89389 q 0 0.73763 0.222 1.28907 q 0.22201 0.54427 0.60873 0.89518 q 0.3724 0.34375 0.88086 0.51563 q 0.51563 0.17187 1.13151 0.17187 q 0.81641 0 1.63998 -0.32226 q 0.83073 -0.32943 1.18164 -0.64454 h 0.0716 v 1.46811 q -0.68034 0.28645 -1.38933 0.47981 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94532 q 0.88086 0.94531 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58269 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 322.766 118.333 h -1.69727 l -2.27019 -3.07228 l -2.28451 3.07228 H 314.946 l 3.1224 -3.98895 l -3.09376 -4.01042 h 1.69727 l 2.25587 3.02214 l 2.26302 -3.02214 h 1.57553 l -3.14389 3.93881 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 328.675 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44402 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34635 v 2.29884 h 2.77866 v 1.13151 h -2.77866 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0287 0.35091 0.20052 0.65885 q 0.15755 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84505 0.1289 q 0.32943 0 0.68751 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 308.243 127.264 h -5.39259 v 3.00782 h 4.63347 v 1.26042 h -4.63347 v 5.13478 h -1.41798 v -10.6634 h 6.81057 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 317.811 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35092 1.03841 0.35092 2.35612 q 0 1.31772 -0.35808 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.5612 1.08854 q -0.89519 0.36524 -2.04819 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99544 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34375 -1.03841 1.0026 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54232 -1.13151 q -1.62566 0 -2.55665 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53517 1.11002 q 1.58984 0 2.528 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 329.355 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35091 1.03841 0.35091 2.35612 q 0 1.31772 -0.35807 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.56121 1.08854 q -0.89518 0.36524 -2.04818 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99545 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34376 -1.03841 1.00261 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54233 -1.13151 q -1.62565 0 -2.55664 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53516 1.11002 q 1.58985 0 2.52801 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + </Canvas> + <Canvas RenderTransform="1.0,0.0,0.0,1.0,445.71038,-129.64807" UseLayoutRounding="False"> + <Canvas UseLayoutRounding="False"> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 64.6165 228.86 q -0.8737 0.40104 -1.91211 0.70182 q -1.03125 0.29362 -1.99805 0.29362 q -1.2461 0 -2.28451 -0.34375 q -1.03841 -0.34375 -1.76889 -1.03125 q -0.737632 -0.69466 -1.13867 -1.73308 q -0.401043 -1.04557 -0.401043 -2.44206 q 0 -2.55665 1.48959 -4.03191 q 1.49675 -1.48242 4.10353 -1.48242 q 0.909507 0 1.85482 0.222 q 0.952476 0.21485 2.04818 0.73763 v 1.68295 h -0.128907 q -0.222005 -0.17188 -0.644532 -0.45117 q -0.422527 -0.2793 -0.830732 -0.4655 q -0.494141 -0.222 -1.12435 -0.36523 q -0.623048 -0.1504 -1.41797 -0.1504 q -1.79037 0 -2.83594 1.153 q -1.03841 1.14584 -1.03841 3.10808 q 0 2.06967 1.08854 3.22267 q 1.08854 1.14583 2.96485 1.14583 q 0.687501 0 1.36784 -0.13607 q 0.687502 -0.13606 1.20313 -0.35091 v -2.61394 h -2.85743 v -1.24609 h 4.26108 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 71.9785 223.117 h -0.07161 q -0.300782 -0.0716 -0.587241 -0.10026 q -0.279298 -0.0358 -0.666017 -0.0358 q -0.623049 0 -1.20313 0.2793 q -0.580079 0.27213 -1.11719 0.70898 v 5.67905 h -1.34636 v -7.99937 h 1.34636 v 1.18165 q 0.802085 -0.64454 1.41081 -0.90951 q 0.615887 -0.27214 1.25326 -0.27214 q 0.350912 0 0.508464 0.0215 q 0.157553 0.0143 0.472658 0.0645 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 80.0638 225.652 q 0 1.95508 -1.00261 3.08659 q -1.00261 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.995445 -1.13151 -0.995445 -3.08659 q 0 -1.95508 0.995445 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13152 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.608725 -2.306 q -0.608726 -0.75911 -1.69011 -0.75911 q -1.09571 0 -1.70443 0.75911 q -0.601564 0.75196 -0.601564 2.306 q 0 1.50391 0.608725 2.28451 q 0.608726 0.77344 1.69727 0.77344 q 1.07422 0 1.68295 -0.76628 q 0.615887 -0.77344 0.615887 -2.29167 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 88.7793 229.648 h -1.34636 v -0.88802 q -0.68034 0.53711 -1.30339 0.82357 q -0.623049 0.28646 -1.375 0.28646 q -1.26042 0 -1.96224 -0.76628 q -0.701824 -0.77344 -0.701824 -2.26303 v -5.19207 h 1.34636 v 4.5547 q 0 0.60873 0.05729 1.04558 q 0.05729 0.42969 0.24349 0.73763 q 0.19336 0.3151 0.501303 0.45833 q 0.307944 0.14323 0.895185 0.14323 q 0.522787 0 1.13867 -0.27213 q 0.623048 -0.27214 1.16016 -0.69467 v -5.97267 h 1.34636 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 98.4688 225.552 q 0 0.97396 -0.279297 1.7832 q -0.279298 0.80209 -0.787763 1.36069 q -0.472657 0.52994 -1.11719 0.82356 q -0.637371 0.28646 -1.35352 0.28646 q -0.623049 0 -1.13151 -0.13606 q -0.501304 -0.13607 -1.02409 -0.42253 v 3.35157 h -1.34636 v -10.9499 h 1.34636 v 0.8379 q 0.53711 -0.45118 1.20313 -0.75196 q 0.673178 -0.30794 1.43229 -0.30794 q 1.44662 0 2.2487 1.0957 q 0.809246 1.08855 0.809246 3.02931 z m -1.38933 0.0358 q 0 -1.44662 -0.494142 -2.16277 q -0.494141 -0.71615 -1.51823 -0.71615 q -0.58008 0 -1.16732 0.25065 q -0.587241 0.25066 -1.12435 0.65886 v 4.53321 q 0.572918 0.25782 0.981122 0.35092 q 0.415365 0.0931 0.938153 0.0931 q 1.12435 0 1.75456 -0.75911 q 0.63021 -0.75912 0.63021 -2.2487 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 107.263 225.788 h -5.89389 q 0 0.73763 0.22201 1.28906 q 0.222 0.54427 0.60872 0.89519 q 0.3724 0.34375 0.88086 0.51562 q 0.51563 0.17188 1.13151 0.17188 q 0.81641 0 1.63998 -0.32227 q 0.83073 -0.32943 1.18165 -0.64453 h 0.0716 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.88086 0.94532 0.88086 2.68556 z m -1.31055 -1.03126 q -0.007 -1.05989 -0.53711 -1.63997 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58268 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="M 115.792 229.648 H 114.446 v -0.83789 q -0.58008 0.5013 -1.21029 0.7806 q -0.63021 0.2793 -1.36784 0.2793 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.79493 0.78776 -1.35352 q 0.48698 -0.54427 1.13151 -0.83073 q 0.6517 -0.28646 1.34636 -0.28646 q 0.63021 0 1.11719 0.13607 q 0.48698 0.1289 1.02409 0.4082 v -3.46615 h 1.34636 z m -1.34636 -1.9694 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.33659 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13151 0 -1.76172 0.78776 q -0.63021 0.78777 -0.63021 2.23438 q 0 1.42514 0.48698 2.16993 q 0.48698 0.73763 1.5612 0.73763 q 0.57292 0 1.16016 -0.25065 q 0.58724 -0.25781 1.0957 -0.65885 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + </Canvas> + <Canvas UseLayoutRounding="False"> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 59.7681 259.576 q -0.379559 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637371 -0.65886 -0.637371 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02865 0.35091 0.200522 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358073 -0.10026 0.515626 -0.16471 h 0.07161 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 68.0898 255.788 h -5.89389 q 0 0.73763 0.222005 1.28906 q 0.222006 0.54427 0.608726 0.89519 q 0.372396 0.34375 0.880861 0.51562 q 0.515626 0.17188 1.13151 0.17188 q 0.816408 0 1.63998 -0.32227 q 0.830731 -0.32943 1.18164 -0.64453 h 0.07162 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.708986 0.19336 -1.48959 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.880861 0.94532 0.880861 2.68556 z m -1.31055 -1.03126 q -0.0072 -1.05989 -0.537111 -1.63997 q -0.522788 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72592 0.63737 q -0.637372 0.63737 -0.723309 1.58268 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 77.0559 259.648 h -1.69727 l -2.27019 -3.07227 l -2.28451 3.07227 h -1.56836 l 3.1224 -3.98894 l -3.09376 -4.01043 h 1.69727 l 2.25587 3.02215 l 2.26303 -3.02215 h 1.57552 l -3.14389 3.93882 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + <Path Fill="#ff000000"> + <Path.Data> + <PathGeometry Figures="m 82.9642 259.576 q -0.379558 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637372 -0.65886 -0.637372 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02864 0.35091 0.200521 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358074 -0.10026 0.515626 -0.16471 h 0.07162 z" FillRule="Nonzero"/> + </Path.Data> + </Path> + </Canvas> + </Canvas> + <Rectangle Canvas.Left="100.0" Canvas.Top="200.0" Fill="#ff000080" Height="100.0" RadiusX="0.0" RadiusY="0.0" Width="100.0"/> + <Rectangle Canvas.Left="292.0" Canvas.Top="192.0" Height="116.0" RadiusX="0.0" RadiusY="0.0" Stroke="#ffff0000" StrokeDashCap="Flat" StrokeThickness="16.0" Width="216.0"/> + <Rectangle Canvas.Left="592.0" Canvas.Top="192.0" Fill="#ffffff00" Height="116.0" RadiusX="44.943226" RadiusY="38.950798" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="16.0" Width="216.0"/> + </Canvas> + </Canvas> +</Viewbox> diff --git a/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__lowlevel__--target__avaloniaui.out b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__lowlevel__--target__avaloniaui.out new file mode 100644 index 0000000..30332c6 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__lowlevel__--target__avaloniaui.out @@ -0,0 +1,441 @@ +<?xml version="1.0" ?> +<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns="https://github.com/avaloniaui"> + <DrawingGroup x:Key="input"> + <DrawingGroup.ClipGeometry> + <RectangleGeometry Rect="0.0,0.0,1000.0,1000.0"/> + </DrawingGroup.ClipGeometry> + <DrawingGroup> + <DrawingGroup Opacity="0.5"> + <GeometryDrawing Brush="#ffff0000"> + <GeometryDrawing.Geometry> + <RectangleGeometry Rect="651.3089,353.92661,248.69112,201.49811"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + </DrawingGroup> + <DrawingGroup> + <GeometryDrawing Brush="#ff000080"> + <GeometryDrawing.Geometry> + <EllipseGeometry RadiusX="50.0" RadiusY="50.0" Center="150.0,450.0"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing> + <GeometryDrawing.Pen> + <Pen Brush="#ffff0000" LineJoin="Miter" Thickness="16.0"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <EllipseGeometry RadiusX="100.0" RadiusY="50.0" Center="400.0,450.0"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ffffff00"> + <GeometryDrawing.Pen> + <Pen Brush="#ff008000" LineJoin="Miter" Thickness="16.0"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 783.086 477.824 a 100 50 0 0 1 -111.098 20.1744 a 100 50 0 0 1 -71.963 -46.8834 a 100 50 0 0 1 67.7113 -48.4409 a 100 50 0 0 1 112.787 17.6779 L 700 450 Z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <DrawingGroup> + <GeometryDrawing> + <GeometryDrawing.Pen> + <Pen Brush="#ff000000" LineJoin="Miter" Thickness="10.0"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <PathGeometry Figures="M 100 600 L 200 700 L 300 600 L 400 700" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <DrawingGroup> + <DrawingGroup.Transform> + <MatrixTransform Matrix="7.0710678118654755,7.0710678118654755,-7.0710678118654755,7.0710678118654755,100.0,600.0"/> + </DrawingGroup.Transform> + <DrawingGroup> + <DrawingGroup.Transform> + <MatrixTransform Matrix="1.1,0.0,0.0,1.1,1.1,0.0"/> + </DrawingGroup.Transform> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Pen> + <Pen Brush="#ff000000" LineJoin="Round" Thickness="0.625"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <PathGeometry Figures="M 8.71859 4.03374 L -2.20729 0.0160133 L 8.71859 -4.00171 C 6.97309 -1.62965 6.98315 1.61574 8.71859 4.03374 z"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + </DrawingGroup> + </DrawingGroup> + <GeometryDrawing> + <GeometryDrawing.Pen> + <Pen Brush="#ff000000" LineJoin="Miter" Thickness="10.0"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 500 600 c 0 0 0 100 100 100 c 100 0 0 -100 100 -100 c 100 0 100 100 100 100" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ffffff00"> + <GeometryDrawing.Pen> + <Pen Brush="#ff008000" LineJoin="Miter" Thickness="10.0"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <DrawingGroup> + <DrawingGroup.Transform> + <MatrixTransform Matrix="1.0,0.0,0.0,1.0,200.0,2.99622"/> + </DrawingGroup.Transform> + <GeometryDrawing Brush="#ffffff00"> + <GeometryDrawing.Pen> + <Pen Brush="#ff008000" LineJoin="Miter" Thickness="10.0"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + </DrawingGroup> + <DrawingGroup> + <DrawingGroup> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 109.589 100 h -1.41797 v -5.22072 h -5.32097 V 100 h -1.41798 V 89.3366 h 1.41798 v 4.1823 h 5.32097 v -4.1823 h 1.41797 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 119.042 96.14 h -5.89389 q 0 0.737632 0.222 1.28907 q 0.22201 0.544272 0.60873 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13151 0.171875 q 0.81641 0 1.63998 -0.322266 q 0.83073 -0.329428 1.18164 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38933 0.479819 q -0.70898 0.193361 -1.48958 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88086 0.945314 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.580079 -1.59701 -0.580079 q -1.08138 0 -1.72591 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 122.444 100 h -1.34635 V 88.8567 h 1.34635 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 126.469 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 135.951 96.0039 q 0 1.95508 -1.0026 3.0866 q -1.00261 1.13152 -2.68556 1.13152 q -1.69727 0 -2.69987 -1.13152 q -0.99545 -1.13151 -0.99545 -3.0866 q 0 -1.95508 0.99545 -3.0866 q 1.0026 -1.13867 2.69987 -1.13867 q 1.68295 0 2.68556 1.13867 q 1.0026 1.13151 1.0026 3.0866 z m -1.38932 0 q 0 -1.55404 -0.60873 -2.30599 q -0.60872 -0.759116 -1.69011 -0.759116 q -1.0957 0 -1.70443 0.759116 q -0.60156 0.751955 -0.60156 2.30599 q 0 1.50391 0.60872 2.28451 q 0.60873 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61589 -0.773439 0.61589 -2.29167 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="M 155.709 89.3366 L 152.938 100 h -1.59701 L 149.099 91.1484 L 146.908 100 h -1.5612 l -2.82162 -10.6634 h 1.45378 l 2.24154 8.86591 l 2.20573 -8.86591 h 1.43946 l 2.22722 8.95184 l 2.22722 -8.95184 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 163.794 96.0039 q 0 1.95508 -1.00261 3.0866 q -1.0026 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.99544 -1.13151 -0.99544 -3.0866 q 0 -1.95508 0.99544 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13151 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.60872 -2.30599 q -0.60873 -0.759116 -1.69011 -0.759116 q -1.09571 0 -1.70443 0.759116 q -0.60157 0.751955 -0.60157 2.30599 q 0 1.50391 0.60873 2.28451 q 0.60872 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61588 -0.773439 0.61588 -2.29167 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 170.87 93.4687 h -0.0716 q -0.30078 -0.07161 -0.58724 -0.100261 q -0.2793 -0.03581 -0.66602 -0.03581 q -0.62304 0 -1.20312 0.279297 q -0.58008 0.272137 -1.11719 0.708986 V 100 h -1.34636 v -7.99937 h 1.34636 v 1.18164 q 0.80208 -0.644533 1.41081 -0.909507 q 0.61588 -0.272136 1.25325 -0.272136 q 0.35092 0 0.50847 0.02148 q 0.15755 0.01432 0.47266 0.06445 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 173.498 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 182.651 100 h -1.34636 v -0.837893 q -0.58008 0.501304 -1.21029 0.780601 q -0.63021 0.279302 -1.36784 0.279302 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.794924 0.78776 -1.35352 q 0.48698 -0.544272 1.13151 -0.830731 q 0.6517 -0.286459 1.34636 -0.286459 q 0.63021 0 1.11719 0.136068 q 0.48698 0.128907 1.02409 0.408204 v -3.46615 h 1.34636 z m -1.34636 -1.96941 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.336589 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13152 0 -1.76172 0.787762 q -0.63021 0.787762 -0.63021 2.23438 q 0 1.42513 0.48698 2.16993 q 0.48698 0.737632 1.5612 0.737632 q 0.57292 0 1.16016 -0.250652 q 0.58724 -0.257813 1.0957 -0.658856 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + <DrawingGroup> + <DrawingGroup.Transform> + <MatrixTransform Matrix="0.26458333,0.0,0.0,0.26458333,372.02961,28.904505"/> + </DrawingGroup.Transform> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 126.989 233.045 h -0.27067 q -0.83907 -0.24361 -2.19242 -0.48721 q -1.35335 -0.27067 -2.38189 -0.27067 q -3.2751 0 -4.76378 1.46162 q -1.46162 1.43455 -1.46162 5.22392 v 1.02854 h 9.1757 v 4.27658 h -9.0133 v 25.9572 h -5.08858 v -25.9572 h -3.4375 v -4.27658 h 3.4375 v -1.00148 q 0 -5.38632 2.67963 -8.25541 q 2.67962 -2.89617 7.74114 -2.89617 q 1.70522 0 3.05857 0.16241 q 1.38041 0.1624 2.51722 0.37893 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 135.353 270.235 h -5.08859 v -42.1162 h 5.08859 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 171.19 255.132 q 0 7.38928 -3.78937 11.6659 q -3.78937 4.27657 -10.1501 4.27657 q -6.41486 0 -10.2042 -4.27657 q -3.76231 -4.27658 -3.76231 -11.6659 q 0 -7.38927 3.76231 -11.6659 q 3.78937 -4.30364 10.2042 -4.30364 q 6.36074 0 10.1501 4.30364 q 3.78937 4.27658 3.78937 11.6659 z m -5.25099 0 q 0 -5.87352 -2.30069 -8.71555 q -2.30069 -2.8691 -6.3878 -2.8691 q -4.14124 0 -6.44193 2.8691 q -2.27362 2.84203 -2.27362 8.71555 q 0 5.68406 2.30069 8.63436 q 2.30069 2.92323 6.41486 2.92323 q 4.06005 0 6.36074 -2.89616 q 2.32775 -2.92323 2.32775 -8.66143 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 217.095 240.002 l -7.87648 30.2338 h -4.70965 l -7.76821 -23.3046 l -7.71408 23.3046 h -4.68259 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55168 -23.4129 h 4.19537 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 259.617 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 291.069 255.646 h -22.2761 q 0 2.78789 0.83907 4.87205 q 0.83908 2.05708 2.30069 3.38336 q 1.40748 1.29922 3.32924 1.94882 q 1.94882 0.64961 4.27657 0.64961 q 3.08563 0 6.19833 -1.21801 q 3.13977 -1.24508 4.46605 -2.43603 h 0.27067 v 5.54873 q -2.57136 1.08267 -5.25099 1.81348 q -2.67963 0.73081 -5.62992 0.73081 q -7.52461 0 -11.7471 -4.06004 q -4.22244 -4.08711 -4.22244 -11.5846 q 0 -7.41635 4.03297 -11.7741 q 4.06005 -4.35777 10.6644 -4.35777 q 6.11713 0 9.4193 3.57283 q 3.32923 3.57284 3.32923 10.1501 z m -4.95325 -3.89764 q -0.0271 -4.00591 -2.03002 -6.19833 q -1.97589 -2.19243 -6.03593 -2.19243 q -4.08711 0 -6.52313 2.40896 q -2.40896 2.40896 -2.73376 5.9818 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 324.957 270.235 h -6.41487 l -8.58022 -11.6117 l -8.63435 11.6117 h -5.92766 l 11.8012 -15.0763 l -11.6929 -15.1575 h 6.41487 l 8.52609 11.4223 l 8.55315 -11.4223 h 5.95473 l -11.8824 14.8868 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 347.287 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 148.751 309.293 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 181.367 339.527 h -5.08858 v -17.2146 q 0 -2.08415 -0.24361 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27214 -0.56841 -3.30216 -0.56841 q -2.08416 0 -4.35778 1.02855 q -2.27362 1.02854 -4.35778 2.62549 v 22.5738 h -5.08858 v -42.1162 h 5.08858 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.5443 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 196.633 304.231 h -5.7382 v -5.27806 h 5.7382 z m -0.32481 35.2953 h -5.08858 v -30.2338 h 5.08858 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 228.734 337.632 q -2.54429 1.21802 -4.84498 1.89469 q -2.27362 0.67667 -4.84498 0.67667 q -3.2751 0 -6.00886 -0.94734 q -2.73377 -0.97441 -4.68259 -2.92323 q -1.97588 -1.94882 -3.05856 -4.92618 q -1.08268 -2.97737 -1.08268 -6.95621 q 0 -7.41634 4.06004 -11.6388 q 4.08711 -4.22245 10.7727 -4.22245 q 2.59842 0 5.08858 0.73081 q 2.51723 0.73081 4.60138 1.78642 v 5.65699 h -0.27067 q -2.32775 -1.81348 -4.81791 -2.78789 q -2.46309 -0.97441 -4.81792 -0.97441 q -4.33071 0 -6.84793 2.92323 q -2.49016 2.89616 -2.49016 8.52608 q 0 5.46753 2.43602 8.41782 q 2.46309 2.92323 6.90207 2.92323 q 1.54282 0 3.13977 -0.406 q 1.59695 -0.40601 2.86909 -1.05561 q 1.10975 -0.56841 2.08416 -1.19095 q 0.97441 -0.64961 1.54281 -1.10974 h 0.27067 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 260.538 339.527 h -5.08859 v -17.2146 q 0 -2.08415 -0.2436 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27215 -0.56841 -3.30217 -0.56841 q -2.08415 0 -4.35777 1.02855 q -2.27363 1.02854 -4.35778 2.62549 v 22.5738 h -5.08859 v -42.1162 h 5.08859 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.54429 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 148.751 378.584 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 L 108.043 378.584 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 174.952 384.133 h -0.27067 q -1.13682 -0.27067 -2.21949 -0.37894 q -1.05561 -0.13533 -2.51723 -0.13533 q -2.35482 0 -4.54725 1.05561 q -2.19242 1.02854 -4.22244 2.67963 v 21.4641 h -5.08858 V 378.584 h 5.08858 v 4.46604 q 3.0315 -2.43602 5.33219 -3.4375 q 2.32776 -1.02854 4.73671 -1.02854 q 1.32628 0 1.92176 0.0812 q 0.59547 0.0541 1.78642 0.2436 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 202.263 408.818 h -5.06152 v -3.22096 q -0.67667 0.46013 -1.84055 1.29921 q -1.13681 0.81201 -2.21949 1.29921 q -1.27215 0.62254 -2.92323 1.02855 q -1.65108 0.43307 -3.87057 0.43307 q -4.08711 0 -6.92914 -2.7067 q -2.84203 -2.70669 -2.84203 -6.90207 q 0 -3.4375 1.46162 -5.54872 q 1.48868 -2.13829 4.22244 -3.3563 q 2.76083 -1.21801 6.6314 -1.65109 q 3.87057 -0.43307 8.30955 -0.6496 v -0.78494 q 0 -1.73229 -0.62254 -2.8691 q -0.59547 -1.13681 -1.73228 -1.78642 q -1.08268 -0.62254 -2.59843 -0.83907 q -1.51575 -0.21654 -3.16683 -0.21654 q -2.00295 0 -4.46605 0.54134 q -2.46309 0.51427 -5.08858 1.51575 h -0.27067 V 379.234 q 1.48868 -0.406 4.30364 -0.89321 q 2.81496 -0.4872 5.54873 -0.4872 q 3.1939 0 5.54872 0.54134 q 2.38189 0.51427 4.11418 1.78642 q 1.70521 1.24507 2.59842 3.22096 q 0.89321 1.97589 0.89321 4.89912 z m -5.06152 -7.44341 v -8.41782 q -2.32775 0.13534 -5.49459 0.40601 q -3.13976 0.27067 -4.98031 0.78494 q -2.19243 0.62254 -3.54577 1.94882 q -1.35335 1.29921 -1.35335 3.5999 q 0 2.59843 1.56988 3.92471 q 1.56988 1.29921 4.79085 1.29921 q 2.67963 0 4.89912 -1.02854 q 2.21949 -1.05561 4.11417 -2.51723 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 238.668 393.336 q 0 3.6811 -1.05561 6.73967 q -1.05561 3.0315 -2.97736 5.14272 q -1.78642 2.00295 -4.22245 3.1127 q -2.40895 1.08268 -5.11565 1.08268 q -2.35482 0 -4.27657 -0.51428 q -1.89469 -0.51427 -3.87058 -1.59695 v 12.6673 h -5.08858 V 378.584 h 5.08858 v 3.16683 q 2.03002 -1.70522 4.54725 -2.84203 q 2.54429 -1.16388 5.41339 -1.16388 q 5.46752 0 8.49902 4.14124 q 3.05856 4.11418 3.05856 11.4493 z m -5.25098 0.13533 q 0 -5.46752 -1.86762 -8.17421 q -1.86762 -2.7067 -5.7382 -2.7067 q -2.19242 0 -4.41191 0.94735 q -2.21949 0.94734 -4.24951 2.49016 v 17.1334 q 2.16536 0.97441 3.70817 1.32628 q 1.56989 0.35187 3.54577 0.35187 q 4.24951 0 6.6314 -2.86909 q 2.3819 -2.8691 2.3819 -8.49903 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 268.198 400.103 q 0 4.14124 -3.4375 6.7938 q -3.41044 2.65256 -9.3381 2.65256 q -3.3563 0 -6.17126 -0.78494 q -2.7879 -0.81201 -4.68258 -1.75935 v -5.71113 h 0.27067 q 2.40895 1.81349 5.35925 2.89616 q 2.9503 1.05562 5.65699 1.05562 q 3.3563 0 5.25099 -1.08268 q 1.89468 -1.08268 1.89468 -3.41044 q 0 -1.78642 -1.02854 -2.70669 q -1.02854 -0.92028 -3.95177 -1.56988 q -1.08268 -0.24361 -2.84203 -0.56841 q -1.73229 -0.3248 -3.16683 -0.70374 q -3.97885 -1.05561 -5.657 -3.08563 q -1.65108 -2.05709 -1.65108 -5.03445 q 0 -1.86762 0.75787 -3.51871 q 0.78495 -1.65108 2.35483 -2.95029 q 1.51575 -1.27215 3.84351 -2.00296 q 2.35482 -0.75787 5.25098 -0.75787 q 2.7067 0 5.46752 0.67667 q 2.7879 0.64961 4.62845 1.59695 v 5.44046 h -0.27067 q -1.94882 -1.43455 -4.73671 -2.40896 q -2.7879 -1.00148 -5.46752 -1.00148 q -2.7879 0 -4.70965 1.08268 q -1.92176 1.05561 -1.92176 3.16683 q 0 1.86762 1.16388 2.81496 q 1.13681 0.94735 3.68111 1.54282 q 1.40748 0.3248 3.13976 0.64961 q 1.75935 0.3248 2.92323 0.59547 q 3.54577 0.81201 5.46752 2.7879 q 1.92176 2.00295 1.92176 5.30512 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + <DrawingGroup> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 209.46 95.7174 q 0 1.16016 -0.25781 2.0267 q -0.25066 0.859377 -0.83074 1.4323 q -0.55143 0.544272 -1.28906 0.794924 q -0.73763 0.250656 -1.71876 0.250656 q -1.0026 0 -1.7474 -0.264979 q -0.74479 -0.264974 -1.25325 -0.780601 q -0.58008 -0.587241 -0.8379 -1.41797 q -0.25065 -0.830731 -0.25065 -2.04102 v -6.38087 h 1.41797 v 6.45249 q 0 0.866538 0.11459 1.36784 q 0.12174 0.501303 0.40104 0.909507 q 0.31511 0.465496 0.85222 0.701824 q 0.54427 0.236329 1.30338 0.236329 q 0.76628 0 1.30339 -0.229167 q 0.53711 -0.236329 0.85938 -0.708986 q 0.2793 -0.408204 0.39388 -0.930992 q 0.12175 -0.529949 0.12175 -1.31055 v -6.4883 h 1.41797 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 219.143 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 227.987 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 236.882 100 h -7.0254 V 89.3366 h 7.0254 v 1.26042 h -5.60743 v 2.92188 h 5.60743 v 1.26042 h -5.60743 v 3.96029 h 5.60743 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 247.953 100 h -1.8405 l -3.56642 -4.23959 h -1.99805 V 100 H 239.13 V 89.3366 h 2.98634 q 0.96679 0 1.61133 0.128907 q 0.64453 0.121745 1.16016 0.444011 q 0.58008 0.365235 0.90234 0.92383 q 0.32943 0.551434 0.32943 1.40365 q 0 1.153 -0.58008 1.9336 q -0.58008 0.773439 -1.59701 1.16732 z m -3.31577 -7.66278 q 0 -0.458334 -0.16471 -0.809247 q -0.15755 -0.358073 -0.52995 -0.601564 q -0.30794 -0.207682 -0.73047 -0.286459 q -0.42253 -0.08594 -0.99544 -0.08594 h -1.66863 v 4.02475 h 1.4323 q 0.67318 0 1.17448 -0.114584 q 0.5013 -0.121745 0.85221 -0.444011 q 0.32227 -0.300782 0.47266 -0.687502 q 0.15755 -0.393881 0.15755 -0.995445 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + <DrawingGroup> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 310.928 100 h -1.41797 v -9.18817 l -2.96485 6.25197 h -0.84506 l -2.94336 -6.25197 V 100 h -1.32488 V 89.3366 h 1.9336 l 2.84311 5.93686 l 2.75 -5.93686 h 1.96941 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 320.317 100 h -1.34635 v -0.888023 q -0.68034 0.537111 -1.30339 0.82357 q -0.62305 0.286463 -1.375 0.286463 q -1.26042 0 -1.96225 -0.766282 q -0.70182 -0.773439 -0.70182 -2.26303 v -5.19207 h 1.34635 v 4.5547 q 0 0.608725 0.0573 1.04557 q 0.0573 0.429688 0.24349 0.737632 q 0.19336 0.315105 0.5013 0.458334 q 0.30794 0.14323 0.89518 0.14323 q 0.52279 0 1.13868 -0.272136 q 0.62305 -0.272136 1.16016 -0.694663 v -5.97267 h 1.34635 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 324.328 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 331.145 99.9284 q -0.37955 0.100265 -0.83073 0.164715 q -0.44401 0.0644 -0.79492 0.0644 q -1.22461 0 -1.86198 -0.658853 q -0.63738 -0.658856 -0.63738 -2.11264 v -4.25392 h -0.9095 v -1.13151 h 0.9095 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.988284 q 0.0286 0.350912 0.20052 0.658856 q 0.15755 0.286459 0.42969 0.422527 q 0.27929 0.128906 0.84505 0.128906 q 0.32943 0 0.6875 -0.0931 q 0.35808 -0.100261 0.51563 -0.164714 h 0.0716 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 334.218 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 334.132 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 343.313 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 347.423 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 347.337 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 356.69 100 h -1.34635 v -4.5547 q 0 -0.551434 -0.0645 -1.03125 q -0.0645 -0.486981 -0.23632 -0.759117 q -0.17904 -0.300782 -0.51563 -0.444011 q -0.33659 -0.150391 -0.8737 -0.150391 q -0.55143 0 -1.153 0.272136 q -0.60156 0.272136 -1.153 0.694663 V 100 h -1.34635 v -7.99937 h 1.34635 v 0.888023 q 0.63021 -0.522788 1.30339 -0.816409 q 0.67318 -0.29362 1.38217 -0.29362 q 1.29622 0 1.97656 0.780601 q 0.68034 0.7806 0.68034 2.2487 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 365.979 96.14 h -5.8939 q 0 0.737632 0.22201 1.28907 q 0.222 0.544272 0.60872 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13152 0.171875 q 0.8164 0 1.63997 -0.322266 q 0.83074 -0.329428 1.18165 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38932 0.479819 q -0.70899 0.193361 -1.48959 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88087 0.945314 0.88087 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53712 -1.63998 q -0.52278 -0.580079 -1.597 -0.580079 q -1.08139 0 -1.72592 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 305.479 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44401 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34636 v 2.29884 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0286 0.35091 0.20052 0.65885 q 0.15756 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84506 0.1289 q 0.32942 0 0.6875 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 313.8 114.473 h -5.89389 q 0 0.73763 0.222 1.28907 q 0.22201 0.54427 0.60873 0.89518 q 0.3724 0.34375 0.88086 0.51563 q 0.51563 0.17187 1.13151 0.17187 q 0.81641 0 1.63998 -0.32226 q 0.83073 -0.32943 1.18164 -0.64454 h 0.0716 v 1.46811 q -0.68034 0.28645 -1.38933 0.47981 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94532 q 0.88086 0.94531 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58269 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 322.766 118.333 h -1.69727 l -2.27019 -3.07228 l -2.28451 3.07228 H 314.946 l 3.1224 -3.98895 l -3.09376 -4.01042 h 1.69727 l 2.25587 3.02214 l 2.26302 -3.02214 h 1.57553 l -3.14389 3.93881 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 328.675 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44402 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34635 v 2.29884 h 2.77866 v 1.13151 h -2.77866 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0287 0.35091 0.20052 0.65885 q 0.15755 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84505 0.1289 q 0.32943 0 0.68751 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 308.243 127.264 h -5.39259 v 3.00782 h 4.63347 v 1.26042 h -4.63347 v 5.13478 h -1.41798 v -10.6634 h 6.81057 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 317.811 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35092 1.03841 0.35092 2.35612 q 0 1.31772 -0.35808 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.5612 1.08854 q -0.89519 0.36524 -2.04819 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99544 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34375 -1.03841 1.0026 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54232 -1.13151 q -1.62566 0 -2.55665 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53517 1.11002 q 1.58984 0 2.528 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 329.355 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35091 1.03841 0.35091 2.35612 q 0 1.31772 -0.35807 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.56121 1.08854 q -0.89518 0.36524 -2.04818 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99545 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34376 -1.03841 1.00261 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54233 -1.13151 q -1.62565 0 -2.55664 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53516 1.11002 q 1.58985 0 2.52801 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + <DrawingGroup> + <DrawingGroup.Transform> + <MatrixTransform Matrix="1.0,0.0,0.0,1.0,445.71038,-129.64807"/> + </DrawingGroup.Transform> + <DrawingGroup> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 64.6165 228.86 q -0.8737 0.40104 -1.91211 0.70182 q -1.03125 0.29362 -1.99805 0.29362 q -1.2461 0 -2.28451 -0.34375 q -1.03841 -0.34375 -1.76889 -1.03125 q -0.737632 -0.69466 -1.13867 -1.73308 q -0.401043 -1.04557 -0.401043 -2.44206 q 0 -2.55665 1.48959 -4.03191 q 1.49675 -1.48242 4.10353 -1.48242 q 0.909507 0 1.85482 0.222 q 0.952476 0.21485 2.04818 0.73763 v 1.68295 h -0.128907 q -0.222005 -0.17188 -0.644532 -0.45117 q -0.422527 -0.2793 -0.830732 -0.4655 q -0.494141 -0.222 -1.12435 -0.36523 q -0.623048 -0.1504 -1.41797 -0.1504 q -1.79037 0 -2.83594 1.153 q -1.03841 1.14584 -1.03841 3.10808 q 0 2.06967 1.08854 3.22267 q 1.08854 1.14583 2.96485 1.14583 q 0.687501 0 1.36784 -0.13607 q 0.687502 -0.13606 1.20313 -0.35091 v -2.61394 h -2.85743 v -1.24609 h 4.26108 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 71.9785 223.117 h -0.07161 q -0.300782 -0.0716 -0.587241 -0.10026 q -0.279298 -0.0358 -0.666017 -0.0358 q -0.623049 0 -1.20313 0.2793 q -0.580079 0.27213 -1.11719 0.70898 v 5.67905 h -1.34636 v -7.99937 h 1.34636 v 1.18165 q 0.802085 -0.64454 1.41081 -0.90951 q 0.615887 -0.27214 1.25326 -0.27214 q 0.350912 0 0.508464 0.0215 q 0.157553 0.0143 0.472658 0.0645 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 80.0638 225.652 q 0 1.95508 -1.00261 3.08659 q -1.00261 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.995445 -1.13151 -0.995445 -3.08659 q 0 -1.95508 0.995445 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13152 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.608725 -2.306 q -0.608726 -0.75911 -1.69011 -0.75911 q -1.09571 0 -1.70443 0.75911 q -0.601564 0.75196 -0.601564 2.306 q 0 1.50391 0.608725 2.28451 q 0.608726 0.77344 1.69727 0.77344 q 1.07422 0 1.68295 -0.76628 q 0.615887 -0.77344 0.615887 -2.29167 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 88.7793 229.648 h -1.34636 v -0.88802 q -0.68034 0.53711 -1.30339 0.82357 q -0.623049 0.28646 -1.375 0.28646 q -1.26042 0 -1.96224 -0.76628 q -0.701824 -0.77344 -0.701824 -2.26303 v -5.19207 h 1.34636 v 4.5547 q 0 0.60873 0.05729 1.04558 q 0.05729 0.42969 0.24349 0.73763 q 0.19336 0.3151 0.501303 0.45833 q 0.307944 0.14323 0.895185 0.14323 q 0.522787 0 1.13867 -0.27213 q 0.623048 -0.27214 1.16016 -0.69467 v -5.97267 h 1.34636 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 98.4688 225.552 q 0 0.97396 -0.279297 1.7832 q -0.279298 0.80209 -0.787763 1.36069 q -0.472657 0.52994 -1.11719 0.82356 q -0.637371 0.28646 -1.35352 0.28646 q -0.623049 0 -1.13151 -0.13606 q -0.501304 -0.13607 -1.02409 -0.42253 v 3.35157 h -1.34636 v -10.9499 h 1.34636 v 0.8379 q 0.53711 -0.45118 1.20313 -0.75196 q 0.673178 -0.30794 1.43229 -0.30794 q 1.44662 0 2.2487 1.0957 q 0.809246 1.08855 0.809246 3.02931 z m -1.38933 0.0358 q 0 -1.44662 -0.494142 -2.16277 q -0.494141 -0.71615 -1.51823 -0.71615 q -0.58008 0 -1.16732 0.25065 q -0.587241 0.25066 -1.12435 0.65886 v 4.53321 q 0.572918 0.25782 0.981122 0.35092 q 0.415365 0.0931 0.938153 0.0931 q 1.12435 0 1.75456 -0.75911 q 0.63021 -0.75912 0.63021 -2.2487 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 107.263 225.788 h -5.89389 q 0 0.73763 0.22201 1.28906 q 0.222 0.54427 0.60872 0.89519 q 0.3724 0.34375 0.88086 0.51562 q 0.51563 0.17188 1.13151 0.17188 q 0.81641 0 1.63998 -0.32227 q 0.83073 -0.32943 1.18165 -0.64453 h 0.0716 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.88086 0.94532 0.88086 2.68556 z m -1.31055 -1.03126 q -0.007 -1.05989 -0.53711 -1.63997 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58268 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="M 115.792 229.648 H 114.446 v -0.83789 q -0.58008 0.5013 -1.21029 0.7806 q -0.63021 0.2793 -1.36784 0.2793 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.79493 0.78776 -1.35352 q 0.48698 -0.54427 1.13151 -0.83073 q 0.6517 -0.28646 1.34636 -0.28646 q 0.63021 0 1.11719 0.13607 q 0.48698 0.1289 1.02409 0.4082 v -3.46615 h 1.34636 z m -1.34636 -1.9694 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.33659 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13151 0 -1.76172 0.78776 q -0.63021 0.78777 -0.63021 2.23438 q 0 1.42514 0.48698 2.16993 q 0.48698 0.73763 1.5612 0.73763 q 0.57292 0 1.16016 -0.25065 q 0.58724 -0.25781 1.0957 -0.65885 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + <DrawingGroup> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 59.7681 259.576 q -0.379559 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637371 -0.65886 -0.637371 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02865 0.35091 0.200522 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358073 -0.10026 0.515626 -0.16471 h 0.07161 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 68.0898 255.788 h -5.89389 q 0 0.73763 0.222005 1.28906 q 0.222006 0.54427 0.608726 0.89519 q 0.372396 0.34375 0.880861 0.51562 q 0.515626 0.17188 1.13151 0.17188 q 0.816408 0 1.63998 -0.32227 q 0.830731 -0.32943 1.18164 -0.64453 h 0.07162 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.708986 0.19336 -1.48959 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.880861 0.94532 0.880861 2.68556 z m -1.31055 -1.03126 q -0.0072 -1.05989 -0.537111 -1.63997 q -0.522788 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72592 0.63737 q -0.637372 0.63737 -0.723309 1.58268 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 77.0559 259.648 h -1.69727 l -2.27019 -3.07227 l -2.28451 3.07227 h -1.56836 l 3.1224 -3.98894 l -3.09376 -4.01043 h 1.69727 l 2.25587 3.02215 l 2.26303 -3.02215 h 1.57552 l -3.14389 3.93882 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 82.9642 259.576 q -0.379558 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637372 -0.65886 -0.637372 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02864 0.35091 0.200521 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358074 -0.10026 0.515626 -0.16471 h 0.07162 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + </DrawingGroup> + <GeometryDrawing Brush="#ff000080"> + <GeometryDrawing.Geometry> + <RectangleGeometry Rect="100.0,200.0,100.0,100.0"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing> + <GeometryDrawing.Pen> + <Pen Brush="#ffff0000" LineJoin="Miter" Thickness="16.0"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <RectangleGeometry Rect="300.0,200.0,200.0,100.0"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ffffff00"> + <GeometryDrawing.Pen> + <Pen Brush="#ff008000" LineJoin="Miter" Thickness="16.0"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <PathGeometry Figures="M 644.943 200 L 755.057 200 A 44.9432 38.9508 0 0 1 800 238.951 L 800 261.049 A 44.9432 38.9508 0 0 1 755.057 300 L 644.943 300 A 44.9432 38.9508 0 0 1 600 261.049 L 600 238.951 A 44.9432 38.9508 0 0 1 644.943 200 z" FillRule="NonZero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + </DrawingGroup> + <DrawingImage Drawing="{StaticResource input}" x:Key="di_input"/> +</ResourceDictionary> diff --git a/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__lowlevel__--target__wpf.out b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__lowlevel__--target__wpf.out new file mode 100644 index 0000000..fb1ccfc --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__lowlevel__--target__wpf.out @@ -0,0 +1,426 @@ +<?xml version="1.0" ?> +<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> + <DrawingGroup x:Key="input"> + <DrawingGroup.ClipGeometry> + <RectangleGeometry Rect="0.0,0.0,1000.0,1000.0"/> + </DrawingGroup.ClipGeometry> + <DrawingGroup> + <DrawingGroup Opacity="0.5"> + <GeometryDrawing Brush="#ffff0000"> + <GeometryDrawing.Geometry> + <RectangleGeometry Rect="651.3089,353.92661,248.69112,201.49811"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + </DrawingGroup> + <DrawingGroup> + <GeometryDrawing Brush="#ff000080"> + <GeometryDrawing.Geometry> + <EllipseGeometry RadiusX="50.0" RadiusY="50.0" Center="150.0,450.0"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing> + <GeometryDrawing.Pen> + <Pen Brush="#ffff0000" Thickness="16.0" DashCap="Flat"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <EllipseGeometry RadiusX="100.0" RadiusY="50.0" Center="400.0,450.0"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ffffff00"> + <GeometryDrawing.Pen> + <Pen Brush="#ff008000" Thickness="16.0" DashCap="Flat"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 783.086 477.824 a 100 50 0 0 1 -111.098 20.1744 a 100 50 0 0 1 -71.963 -46.8834 a 100 50 0 0 1 67.7113 -48.4409 a 100 50 0 0 1 112.787 17.6779 L 700 450 Z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <DrawingGroup> + <GeometryDrawing> + <GeometryDrawing.Pen> + <Pen Brush="#ff000000" Thickness="10.0" DashCap="Flat"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <PathGeometry Figures="M 100 600 L 200 700 L 300 600 L 400 700" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <DrawingGroup Transform="7.0710678118654755,7.0710678118654755,-7.0710678118654755,7.0710678118654755,100.0,600.0"> + <DrawingGroup Transform="1.1,0.0,0.0,1.1,1.1,0.0"> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Pen> + <Pen Brush="#ff000000" LineJoin="Round" Thickness="0.625" DashCap="Flat"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <PathGeometry Figures="M 8.71859 4.03374 L -2.20729 0.0160133 L 8.71859 -4.00171 C 6.97309 -1.62965 6.98315 1.61574 8.71859 4.03374 z"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + </DrawingGroup> + </DrawingGroup> + <GeometryDrawing> + <GeometryDrawing.Pen> + <Pen Brush="#ff000000" Thickness="10.0" DashCap="Flat"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 500 600 c 0 0 0 100 100 100 c 100 0 0 -100 100 -100 c 100 0 100 100 100 100" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ffffff00"> + <GeometryDrawing.Pen> + <Pen Brush="#ff008000" Thickness="10.0" DashCap="Flat"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <DrawingGroup Transform="1.0,0.0,0.0,1.0,200.0,2.99622"> + <GeometryDrawing Brush="#ffffff00"> + <GeometryDrawing.Pen> + <Pen Brush="#ff008000" Thickness="10.0" DashCap="Flat"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + </DrawingGroup> + <DrawingGroup> + <DrawingGroup> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 109.589 100 h -1.41797 v -5.22072 h -5.32097 V 100 h -1.41798 V 89.3366 h 1.41798 v 4.1823 h 5.32097 v -4.1823 h 1.41797 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 119.042 96.14 h -5.89389 q 0 0.737632 0.222 1.28907 q 0.22201 0.544272 0.60873 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13151 0.171875 q 0.81641 0 1.63998 -0.322266 q 0.83073 -0.329428 1.18164 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38933 0.479819 q -0.70898 0.193361 -1.48958 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88086 0.945314 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.580079 -1.59701 -0.580079 q -1.08138 0 -1.72591 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 122.444 100 h -1.34635 V 88.8567 h 1.34635 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 126.469 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 135.951 96.0039 q 0 1.95508 -1.0026 3.0866 q -1.00261 1.13152 -2.68556 1.13152 q -1.69727 0 -2.69987 -1.13152 q -0.99545 -1.13151 -0.99545 -3.0866 q 0 -1.95508 0.99545 -3.0866 q 1.0026 -1.13867 2.69987 -1.13867 q 1.68295 0 2.68556 1.13867 q 1.0026 1.13151 1.0026 3.0866 z m -1.38932 0 q 0 -1.55404 -0.60873 -2.30599 q -0.60872 -0.759116 -1.69011 -0.759116 q -1.0957 0 -1.70443 0.759116 q -0.60156 0.751955 -0.60156 2.30599 q 0 1.50391 0.60872 2.28451 q 0.60873 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61589 -0.773439 0.61589 -2.29167 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="M 155.709 89.3366 L 152.938 100 h -1.59701 L 149.099 91.1484 L 146.908 100 h -1.5612 l -2.82162 -10.6634 h 1.45378 l 2.24154 8.86591 l 2.20573 -8.86591 h 1.43946 l 2.22722 8.95184 l 2.22722 -8.95184 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 163.794 96.0039 q 0 1.95508 -1.00261 3.0866 q -1.0026 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.99544 -1.13151 -0.99544 -3.0866 q 0 -1.95508 0.99544 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13151 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.60872 -2.30599 q -0.60873 -0.759116 -1.69011 -0.759116 q -1.09571 0 -1.70443 0.759116 q -0.60157 0.751955 -0.60157 2.30599 q 0 1.50391 0.60873 2.28451 q 0.60872 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61588 -0.773439 0.61588 -2.29167 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 170.87 93.4687 h -0.0716 q -0.30078 -0.07161 -0.58724 -0.100261 q -0.2793 -0.03581 -0.66602 -0.03581 q -0.62304 0 -1.20312 0.279297 q -0.58008 0.272137 -1.11719 0.708986 V 100 h -1.34636 v -7.99937 h 1.34636 v 1.18164 q 0.80208 -0.644533 1.41081 -0.909507 q 0.61588 -0.272136 1.25325 -0.272136 q 0.35092 0 0.50847 0.02148 q 0.15755 0.01432 0.47266 0.06445 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 173.498 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 182.651 100 h -1.34636 v -0.837893 q -0.58008 0.501304 -1.21029 0.780601 q -0.63021 0.279302 -1.36784 0.279302 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.794924 0.78776 -1.35352 q 0.48698 -0.544272 1.13151 -0.830731 q 0.6517 -0.286459 1.34636 -0.286459 q 0.63021 0 1.11719 0.136068 q 0.48698 0.128907 1.02409 0.408204 v -3.46615 h 1.34636 z m -1.34636 -1.96941 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.336589 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13152 0 -1.76172 0.787762 q -0.63021 0.787762 -0.63021 2.23438 q 0 1.42513 0.48698 2.16993 q 0.48698 0.737632 1.5612 0.737632 q 0.57292 0 1.16016 -0.250652 q 0.58724 -0.257813 1.0957 -0.658856 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + <DrawingGroup Transform="0.26458333,0.0,0.0,0.26458333,372.02961,28.904505"> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 126.989 233.045 h -0.27067 q -0.83907 -0.24361 -2.19242 -0.48721 q -1.35335 -0.27067 -2.38189 -0.27067 q -3.2751 0 -4.76378 1.46162 q -1.46162 1.43455 -1.46162 5.22392 v 1.02854 h 9.1757 v 4.27658 h -9.0133 v 25.9572 h -5.08858 v -25.9572 h -3.4375 v -4.27658 h 3.4375 v -1.00148 q 0 -5.38632 2.67963 -8.25541 q 2.67962 -2.89617 7.74114 -2.89617 q 1.70522 0 3.05857 0.16241 q 1.38041 0.1624 2.51722 0.37893 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 135.353 270.235 h -5.08859 v -42.1162 h 5.08859 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 171.19 255.132 q 0 7.38928 -3.78937 11.6659 q -3.78937 4.27657 -10.1501 4.27657 q -6.41486 0 -10.2042 -4.27657 q -3.76231 -4.27658 -3.76231 -11.6659 q 0 -7.38927 3.76231 -11.6659 q 3.78937 -4.30364 10.2042 -4.30364 q 6.36074 0 10.1501 4.30364 q 3.78937 4.27658 3.78937 11.6659 z m -5.25099 0 q 0 -5.87352 -2.30069 -8.71555 q -2.30069 -2.8691 -6.3878 -2.8691 q -4.14124 0 -6.44193 2.8691 q -2.27362 2.84203 -2.27362 8.71555 q 0 5.68406 2.30069 8.63436 q 2.30069 2.92323 6.41486 2.92323 q 4.06005 0 6.36074 -2.89616 q 2.32775 -2.92323 2.32775 -8.66143 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 217.095 240.002 l -7.87648 30.2338 h -4.70965 l -7.76821 -23.3046 l -7.71408 23.3046 h -4.68259 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55168 -23.4129 h 4.19537 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 259.617 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 291.069 255.646 h -22.2761 q 0 2.78789 0.83907 4.87205 q 0.83908 2.05708 2.30069 3.38336 q 1.40748 1.29922 3.32924 1.94882 q 1.94882 0.64961 4.27657 0.64961 q 3.08563 0 6.19833 -1.21801 q 3.13977 -1.24508 4.46605 -2.43603 h 0.27067 v 5.54873 q -2.57136 1.08267 -5.25099 1.81348 q -2.67963 0.73081 -5.62992 0.73081 q -7.52461 0 -11.7471 -4.06004 q -4.22244 -4.08711 -4.22244 -11.5846 q 0 -7.41635 4.03297 -11.7741 q 4.06005 -4.35777 10.6644 -4.35777 q 6.11713 0 9.4193 3.57283 q 3.32923 3.57284 3.32923 10.1501 z m -4.95325 -3.89764 q -0.0271 -4.00591 -2.03002 -6.19833 q -1.97589 -2.19243 -6.03593 -2.19243 q -4.08711 0 -6.52313 2.40896 q -2.40896 2.40896 -2.73376 5.9818 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 324.957 270.235 h -6.41487 l -8.58022 -11.6117 l -8.63435 11.6117 h -5.92766 l 11.8012 -15.0763 l -11.6929 -15.1575 h 6.41487 l 8.52609 11.4223 l 8.55315 -11.4223 h 5.95473 l -11.8824 14.8868 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 347.287 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 148.751 309.293 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 181.367 339.527 h -5.08858 v -17.2146 q 0 -2.08415 -0.24361 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27214 -0.56841 -3.30216 -0.56841 q -2.08416 0 -4.35778 1.02855 q -2.27362 1.02854 -4.35778 2.62549 v 22.5738 h -5.08858 v -42.1162 h 5.08858 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.5443 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 196.633 304.231 h -5.7382 v -5.27806 h 5.7382 z m -0.32481 35.2953 h -5.08858 v -30.2338 h 5.08858 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 228.734 337.632 q -2.54429 1.21802 -4.84498 1.89469 q -2.27362 0.67667 -4.84498 0.67667 q -3.2751 0 -6.00886 -0.94734 q -2.73377 -0.97441 -4.68259 -2.92323 q -1.97588 -1.94882 -3.05856 -4.92618 q -1.08268 -2.97737 -1.08268 -6.95621 q 0 -7.41634 4.06004 -11.6388 q 4.08711 -4.22245 10.7727 -4.22245 q 2.59842 0 5.08858 0.73081 q 2.51723 0.73081 4.60138 1.78642 v 5.65699 h -0.27067 q -2.32775 -1.81348 -4.81791 -2.78789 q -2.46309 -0.97441 -4.81792 -0.97441 q -4.33071 0 -6.84793 2.92323 q -2.49016 2.89616 -2.49016 8.52608 q 0 5.46753 2.43602 8.41782 q 2.46309 2.92323 6.90207 2.92323 q 1.54282 0 3.13977 -0.406 q 1.59695 -0.40601 2.86909 -1.05561 q 1.10975 -0.56841 2.08416 -1.19095 q 0.97441 -0.64961 1.54281 -1.10974 h 0.27067 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 260.538 339.527 h -5.08859 v -17.2146 q 0 -2.08415 -0.2436 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27215 -0.56841 -3.30217 -0.56841 q -2.08415 0 -4.35777 1.02855 q -2.27363 1.02854 -4.35778 2.62549 v 22.5738 h -5.08859 v -42.1162 h 5.08859 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.54429 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 148.751 378.584 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 L 108.043 378.584 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 174.952 384.133 h -0.27067 q -1.13682 -0.27067 -2.21949 -0.37894 q -1.05561 -0.13533 -2.51723 -0.13533 q -2.35482 0 -4.54725 1.05561 q -2.19242 1.02854 -4.22244 2.67963 v 21.4641 h -5.08858 V 378.584 h 5.08858 v 4.46604 q 3.0315 -2.43602 5.33219 -3.4375 q 2.32776 -1.02854 4.73671 -1.02854 q 1.32628 0 1.92176 0.0812 q 0.59547 0.0541 1.78642 0.2436 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 202.263 408.818 h -5.06152 v -3.22096 q -0.67667 0.46013 -1.84055 1.29921 q -1.13681 0.81201 -2.21949 1.29921 q -1.27215 0.62254 -2.92323 1.02855 q -1.65108 0.43307 -3.87057 0.43307 q -4.08711 0 -6.92914 -2.7067 q -2.84203 -2.70669 -2.84203 -6.90207 q 0 -3.4375 1.46162 -5.54872 q 1.48868 -2.13829 4.22244 -3.3563 q 2.76083 -1.21801 6.6314 -1.65109 q 3.87057 -0.43307 8.30955 -0.6496 v -0.78494 q 0 -1.73229 -0.62254 -2.8691 q -0.59547 -1.13681 -1.73228 -1.78642 q -1.08268 -0.62254 -2.59843 -0.83907 q -1.51575 -0.21654 -3.16683 -0.21654 q -2.00295 0 -4.46605 0.54134 q -2.46309 0.51427 -5.08858 1.51575 h -0.27067 V 379.234 q 1.48868 -0.406 4.30364 -0.89321 q 2.81496 -0.4872 5.54873 -0.4872 q 3.1939 0 5.54872 0.54134 q 2.38189 0.51427 4.11418 1.78642 q 1.70521 1.24507 2.59842 3.22096 q 0.89321 1.97589 0.89321 4.89912 z m -5.06152 -7.44341 v -8.41782 q -2.32775 0.13534 -5.49459 0.40601 q -3.13976 0.27067 -4.98031 0.78494 q -2.19243 0.62254 -3.54577 1.94882 q -1.35335 1.29921 -1.35335 3.5999 q 0 2.59843 1.56988 3.92471 q 1.56988 1.29921 4.79085 1.29921 q 2.67963 0 4.89912 -1.02854 q 2.21949 -1.05561 4.11417 -2.51723 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 238.668 393.336 q 0 3.6811 -1.05561 6.73967 q -1.05561 3.0315 -2.97736 5.14272 q -1.78642 2.00295 -4.22245 3.1127 q -2.40895 1.08268 -5.11565 1.08268 q -2.35482 0 -4.27657 -0.51428 q -1.89469 -0.51427 -3.87058 -1.59695 v 12.6673 h -5.08858 V 378.584 h 5.08858 v 3.16683 q 2.03002 -1.70522 4.54725 -2.84203 q 2.54429 -1.16388 5.41339 -1.16388 q 5.46752 0 8.49902 4.14124 q 3.05856 4.11418 3.05856 11.4493 z m -5.25098 0.13533 q 0 -5.46752 -1.86762 -8.17421 q -1.86762 -2.7067 -5.7382 -2.7067 q -2.19242 0 -4.41191 0.94735 q -2.21949 0.94734 -4.24951 2.49016 v 17.1334 q 2.16536 0.97441 3.70817 1.32628 q 1.56989 0.35187 3.54577 0.35187 q 4.24951 0 6.6314 -2.86909 q 2.3819 -2.8691 2.3819 -8.49903 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 268.198 400.103 q 0 4.14124 -3.4375 6.7938 q -3.41044 2.65256 -9.3381 2.65256 q -3.3563 0 -6.17126 -0.78494 q -2.7879 -0.81201 -4.68258 -1.75935 v -5.71113 h 0.27067 q 2.40895 1.81349 5.35925 2.89616 q 2.9503 1.05562 5.65699 1.05562 q 3.3563 0 5.25099 -1.08268 q 1.89468 -1.08268 1.89468 -3.41044 q 0 -1.78642 -1.02854 -2.70669 q -1.02854 -0.92028 -3.95177 -1.56988 q -1.08268 -0.24361 -2.84203 -0.56841 q -1.73229 -0.3248 -3.16683 -0.70374 q -3.97885 -1.05561 -5.657 -3.08563 q -1.65108 -2.05709 -1.65108 -5.03445 q 0 -1.86762 0.75787 -3.51871 q 0.78495 -1.65108 2.35483 -2.95029 q 1.51575 -1.27215 3.84351 -2.00296 q 2.35482 -0.75787 5.25098 -0.75787 q 2.7067 0 5.46752 0.67667 q 2.7879 0.64961 4.62845 1.59695 v 5.44046 h -0.27067 q -1.94882 -1.43455 -4.73671 -2.40896 q -2.7879 -1.00148 -5.46752 -1.00148 q -2.7879 0 -4.70965 1.08268 q -1.92176 1.05561 -1.92176 3.16683 q 0 1.86762 1.16388 2.81496 q 1.13681 0.94735 3.68111 1.54282 q 1.40748 0.3248 3.13976 0.64961 q 1.75935 0.3248 2.92323 0.59547 q 3.54577 0.81201 5.46752 2.7879 q 1.92176 2.00295 1.92176 5.30512 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + <DrawingGroup> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 209.46 95.7174 q 0 1.16016 -0.25781 2.0267 q -0.25066 0.859377 -0.83074 1.4323 q -0.55143 0.544272 -1.28906 0.794924 q -0.73763 0.250656 -1.71876 0.250656 q -1.0026 0 -1.7474 -0.264979 q -0.74479 -0.264974 -1.25325 -0.780601 q -0.58008 -0.587241 -0.8379 -1.41797 q -0.25065 -0.830731 -0.25065 -2.04102 v -6.38087 h 1.41797 v 6.45249 q 0 0.866538 0.11459 1.36784 q 0.12174 0.501303 0.40104 0.909507 q 0.31511 0.465496 0.85222 0.701824 q 0.54427 0.236329 1.30338 0.236329 q 0.76628 0 1.30339 -0.229167 q 0.53711 -0.236329 0.85938 -0.708986 q 0.2793 -0.408204 0.39388 -0.930992 q 0.12175 -0.529949 0.12175 -1.31055 v -6.4883 h 1.41797 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 219.143 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 227.987 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 236.882 100 h -7.0254 V 89.3366 h 7.0254 v 1.26042 h -5.60743 v 2.92188 h 5.60743 v 1.26042 h -5.60743 v 3.96029 h 5.60743 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 247.953 100 h -1.8405 l -3.56642 -4.23959 h -1.99805 V 100 H 239.13 V 89.3366 h 2.98634 q 0.96679 0 1.61133 0.128907 q 0.64453 0.121745 1.16016 0.444011 q 0.58008 0.365235 0.90234 0.92383 q 0.32943 0.551434 0.32943 1.40365 q 0 1.153 -0.58008 1.9336 q -0.58008 0.773439 -1.59701 1.16732 z m -3.31577 -7.66278 q 0 -0.458334 -0.16471 -0.809247 q -0.15755 -0.358073 -0.52995 -0.601564 q -0.30794 -0.207682 -0.73047 -0.286459 q -0.42253 -0.08594 -0.99544 -0.08594 h -1.66863 v 4.02475 h 1.4323 q 0.67318 0 1.17448 -0.114584 q 0.5013 -0.121745 0.85221 -0.444011 q 0.32227 -0.300782 0.47266 -0.687502 q 0.15755 -0.393881 0.15755 -0.995445 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + <DrawingGroup> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 310.928 100 h -1.41797 v -9.18817 l -2.96485 6.25197 h -0.84506 l -2.94336 -6.25197 V 100 h -1.32488 V 89.3366 h 1.9336 l 2.84311 5.93686 l 2.75 -5.93686 h 1.96941 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 320.317 100 h -1.34635 v -0.888023 q -0.68034 0.537111 -1.30339 0.82357 q -0.62305 0.286463 -1.375 0.286463 q -1.26042 0 -1.96225 -0.766282 q -0.70182 -0.773439 -0.70182 -2.26303 v -5.19207 h 1.34635 v 4.5547 q 0 0.608725 0.0573 1.04557 q 0.0573 0.429688 0.24349 0.737632 q 0.19336 0.315105 0.5013 0.458334 q 0.30794 0.14323 0.89518 0.14323 q 0.52279 0 1.13868 -0.272136 q 0.62305 -0.272136 1.16016 -0.694663 v -5.97267 h 1.34635 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 324.328 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 331.145 99.9284 q -0.37955 0.100265 -0.83073 0.164715 q -0.44401 0.0644 -0.79492 0.0644 q -1.22461 0 -1.86198 -0.658853 q -0.63738 -0.658856 -0.63738 -2.11264 v -4.25392 h -0.9095 v -1.13151 h 0.9095 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.988284 q 0.0286 0.350912 0.20052 0.658856 q 0.15755 0.286459 0.42969 0.422527 q 0.27929 0.128906 0.84505 0.128906 q 0.32943 0 0.6875 -0.0931 q 0.35808 -0.100261 0.51563 -0.164714 h 0.0716 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 334.218 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 334.132 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 343.313 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 347.423 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 347.337 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 356.69 100 h -1.34635 v -4.5547 q 0 -0.551434 -0.0645 -1.03125 q -0.0645 -0.486981 -0.23632 -0.759117 q -0.17904 -0.300782 -0.51563 -0.444011 q -0.33659 -0.150391 -0.8737 -0.150391 q -0.55143 0 -1.153 0.272136 q -0.60156 0.272136 -1.153 0.694663 V 100 h -1.34635 v -7.99937 h 1.34635 v 0.888023 q 0.63021 -0.522788 1.30339 -0.816409 q 0.67318 -0.29362 1.38217 -0.29362 q 1.29622 0 1.97656 0.780601 q 0.68034 0.7806 0.68034 2.2487 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 365.979 96.14 h -5.8939 q 0 0.737632 0.22201 1.28907 q 0.222 0.544272 0.60872 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13152 0.171875 q 0.8164 0 1.63997 -0.322266 q 0.83074 -0.329428 1.18165 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38932 0.479819 q -0.70899 0.193361 -1.48959 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88087 0.945314 0.88087 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53712 -1.63998 q -0.52278 -0.580079 -1.597 -0.580079 q -1.08139 0 -1.72592 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 305.479 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44401 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34636 v 2.29884 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0286 0.35091 0.20052 0.65885 q 0.15756 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84506 0.1289 q 0.32942 0 0.6875 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 313.8 114.473 h -5.89389 q 0 0.73763 0.222 1.28907 q 0.22201 0.54427 0.60873 0.89518 q 0.3724 0.34375 0.88086 0.51563 q 0.51563 0.17187 1.13151 0.17187 q 0.81641 0 1.63998 -0.32226 q 0.83073 -0.32943 1.18164 -0.64454 h 0.0716 v 1.46811 q -0.68034 0.28645 -1.38933 0.47981 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94532 q 0.88086 0.94531 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58269 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 322.766 118.333 h -1.69727 l -2.27019 -3.07228 l -2.28451 3.07228 H 314.946 l 3.1224 -3.98895 l -3.09376 -4.01042 h 1.69727 l 2.25587 3.02214 l 2.26302 -3.02214 h 1.57553 l -3.14389 3.93881 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 328.675 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44402 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34635 v 2.29884 h 2.77866 v 1.13151 h -2.77866 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0287 0.35091 0.20052 0.65885 q 0.15755 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84505 0.1289 q 0.32943 0 0.68751 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 308.243 127.264 h -5.39259 v 3.00782 h 4.63347 v 1.26042 h -4.63347 v 5.13478 h -1.41798 v -10.6634 h 6.81057 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 317.811 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35092 1.03841 0.35092 2.35612 q 0 1.31772 -0.35808 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.5612 1.08854 q -0.89519 0.36524 -2.04819 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99544 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34375 -1.03841 1.0026 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54232 -1.13151 q -1.62566 0 -2.55665 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53517 1.11002 q 1.58984 0 2.528 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 329.355 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35091 1.03841 0.35091 2.35612 q 0 1.31772 -0.35807 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.56121 1.08854 q -0.89518 0.36524 -2.04818 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99545 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34376 -1.03841 1.00261 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54233 -1.13151 q -1.62565 0 -2.55664 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53516 1.11002 q 1.58985 0 2.52801 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + <DrawingGroup Transform="1.0,0.0,0.0,1.0,445.71038,-129.64807"> + <DrawingGroup> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 64.6165 228.86 q -0.8737 0.40104 -1.91211 0.70182 q -1.03125 0.29362 -1.99805 0.29362 q -1.2461 0 -2.28451 -0.34375 q -1.03841 -0.34375 -1.76889 -1.03125 q -0.737632 -0.69466 -1.13867 -1.73308 q -0.401043 -1.04557 -0.401043 -2.44206 q 0 -2.55665 1.48959 -4.03191 q 1.49675 -1.48242 4.10353 -1.48242 q 0.909507 0 1.85482 0.222 q 0.952476 0.21485 2.04818 0.73763 v 1.68295 h -0.128907 q -0.222005 -0.17188 -0.644532 -0.45117 q -0.422527 -0.2793 -0.830732 -0.4655 q -0.494141 -0.222 -1.12435 -0.36523 q -0.623048 -0.1504 -1.41797 -0.1504 q -1.79037 0 -2.83594 1.153 q -1.03841 1.14584 -1.03841 3.10808 q 0 2.06967 1.08854 3.22267 q 1.08854 1.14583 2.96485 1.14583 q 0.687501 0 1.36784 -0.13607 q 0.687502 -0.13606 1.20313 -0.35091 v -2.61394 h -2.85743 v -1.24609 h 4.26108 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 71.9785 223.117 h -0.07161 q -0.300782 -0.0716 -0.587241 -0.10026 q -0.279298 -0.0358 -0.666017 -0.0358 q -0.623049 0 -1.20313 0.2793 q -0.580079 0.27213 -1.11719 0.70898 v 5.67905 h -1.34636 v -7.99937 h 1.34636 v 1.18165 q 0.802085 -0.64454 1.41081 -0.90951 q 0.615887 -0.27214 1.25326 -0.27214 q 0.350912 0 0.508464 0.0215 q 0.157553 0.0143 0.472658 0.0645 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 80.0638 225.652 q 0 1.95508 -1.00261 3.08659 q -1.00261 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.995445 -1.13151 -0.995445 -3.08659 q 0 -1.95508 0.995445 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13152 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.608725 -2.306 q -0.608726 -0.75911 -1.69011 -0.75911 q -1.09571 0 -1.70443 0.75911 q -0.601564 0.75196 -0.601564 2.306 q 0 1.50391 0.608725 2.28451 q 0.608726 0.77344 1.69727 0.77344 q 1.07422 0 1.68295 -0.76628 q 0.615887 -0.77344 0.615887 -2.29167 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 88.7793 229.648 h -1.34636 v -0.88802 q -0.68034 0.53711 -1.30339 0.82357 q -0.623049 0.28646 -1.375 0.28646 q -1.26042 0 -1.96224 -0.76628 q -0.701824 -0.77344 -0.701824 -2.26303 v -5.19207 h 1.34636 v 4.5547 q 0 0.60873 0.05729 1.04558 q 0.05729 0.42969 0.24349 0.73763 q 0.19336 0.3151 0.501303 0.45833 q 0.307944 0.14323 0.895185 0.14323 q 0.522787 0 1.13867 -0.27213 q 0.623048 -0.27214 1.16016 -0.69467 v -5.97267 h 1.34636 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 98.4688 225.552 q 0 0.97396 -0.279297 1.7832 q -0.279298 0.80209 -0.787763 1.36069 q -0.472657 0.52994 -1.11719 0.82356 q -0.637371 0.28646 -1.35352 0.28646 q -0.623049 0 -1.13151 -0.13606 q -0.501304 -0.13607 -1.02409 -0.42253 v 3.35157 h -1.34636 v -10.9499 h 1.34636 v 0.8379 q 0.53711 -0.45118 1.20313 -0.75196 q 0.673178 -0.30794 1.43229 -0.30794 q 1.44662 0 2.2487 1.0957 q 0.809246 1.08855 0.809246 3.02931 z m -1.38933 0.0358 q 0 -1.44662 -0.494142 -2.16277 q -0.494141 -0.71615 -1.51823 -0.71615 q -0.58008 0 -1.16732 0.25065 q -0.587241 0.25066 -1.12435 0.65886 v 4.53321 q 0.572918 0.25782 0.981122 0.35092 q 0.415365 0.0931 0.938153 0.0931 q 1.12435 0 1.75456 -0.75911 q 0.63021 -0.75912 0.63021 -2.2487 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 107.263 225.788 h -5.89389 q 0 0.73763 0.22201 1.28906 q 0.222 0.54427 0.60872 0.89519 q 0.3724 0.34375 0.88086 0.51562 q 0.51563 0.17188 1.13151 0.17188 q 0.81641 0 1.63998 -0.32227 q 0.83073 -0.32943 1.18165 -0.64453 h 0.0716 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.88086 0.94532 0.88086 2.68556 z m -1.31055 -1.03126 q -0.007 -1.05989 -0.53711 -1.63997 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58268 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="M 115.792 229.648 H 114.446 v -0.83789 q -0.58008 0.5013 -1.21029 0.7806 q -0.63021 0.2793 -1.36784 0.2793 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.79493 0.78776 -1.35352 q 0.48698 -0.54427 1.13151 -0.83073 q 0.6517 -0.28646 1.34636 -0.28646 q 0.63021 0 1.11719 0.13607 q 0.48698 0.1289 1.02409 0.4082 v -3.46615 h 1.34636 z m -1.34636 -1.9694 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.33659 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13151 0 -1.76172 0.78776 q -0.63021 0.78777 -0.63021 2.23438 q 0 1.42514 0.48698 2.16993 q 0.48698 0.73763 1.5612 0.73763 q 0.57292 0 1.16016 -0.25065 q 0.58724 -0.25781 1.0957 -0.65885 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + <DrawingGroup> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 59.7681 259.576 q -0.379559 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637371 -0.65886 -0.637371 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02865 0.35091 0.200522 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358073 -0.10026 0.515626 -0.16471 h 0.07161 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 68.0898 255.788 h -5.89389 q 0 0.73763 0.222005 1.28906 q 0.222006 0.54427 0.608726 0.89519 q 0.372396 0.34375 0.880861 0.51562 q 0.515626 0.17188 1.13151 0.17188 q 0.816408 0 1.63998 -0.32227 q 0.830731 -0.32943 1.18164 -0.64453 h 0.07162 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.708986 0.19336 -1.48959 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.880861 0.94532 0.880861 2.68556 z m -1.31055 -1.03126 q -0.0072 -1.05989 -0.537111 -1.63997 q -0.522788 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72592 0.63737 q -0.637372 0.63737 -0.723309 1.58268 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 77.0559 259.648 h -1.69727 l -2.27019 -3.07227 l -2.28451 3.07227 h -1.56836 l 3.1224 -3.98894 l -3.09376 -4.01043 h 1.69727 l 2.25587 3.02215 l 2.26303 -3.02215 h 1.57552 l -3.14389 3.93882 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ff000000"> + <GeometryDrawing.Geometry> + <PathGeometry Figures="m 82.9642 259.576 q -0.379558 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637372 -0.65886 -0.637372 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02864 0.35091 0.200521 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358074 -0.10026 0.515626 -0.16471 h 0.07162 z" FillRule="Nonzero"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + </DrawingGroup> + <GeometryDrawing Brush="#ff000080"> + <GeometryDrawing.Geometry> + <RectangleGeometry Rect="100.0,200.0,100.0,100.0"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing> + <GeometryDrawing.Pen> + <Pen Brush="#ffff0000" Thickness="16.0" DashCap="Flat"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <RectangleGeometry Rect="300.0,200.0,200.0,100.0"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + <GeometryDrawing Brush="#ffffff00"> + <GeometryDrawing.Pen> + <Pen Brush="#ff008000" Thickness="16.0" DashCap="Flat"/> + </GeometryDrawing.Pen> + <GeometryDrawing.Geometry> + <RectangleGeometry Rect="600.0,200.0,200.0,100.0" RadiusX="44.943226" RadiusY="38.950798"/> + </GeometryDrawing.Geometry> + </GeometryDrawing> + </DrawingGroup> + </DrawingGroup> + <DrawingImage Drawing="{StaticResource input}" x:Key="di_input"/> +</ResourceDictionary> diff --git a/share/extensions/other/extension-xaml/tests/data/svg/blur.svg b/share/extensions/other/extension-xaml/tests/data/svg/blur.svg new file mode 100644 index 0000000..296ceb0 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/blur.svg @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg width="100%" height="100%" viewBox="0 0 480 360" version="1.1" id="svg5" inkscape:version="1.2 (dc2aedaf03, 2022-05-15)" sodipodi:docname="blur.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs id="defs2"> + <filter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter793" x="-0.16660433" y="-0.15277301" width="1.3332087" height="1.305546"> + <feGaussianBlur inkscape:collect="always" stdDeviation="5 5" id="feGaussianBlur795" /> + </filter> + <filter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter793-0" x="-0.17121048" y="-0.17121048" width="1.342421" height="1.342421"> + <feGaussianBlur inkscape:collect="always" stdDeviation="70" id="feGaussianBlur795-2" /> + </filter> + <filter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter3317" x="-0.23445084" y="-0.25878262" width="1.4689017" height="1.5175652"> + <feGaussianBlur inkscape:collect="always" stdDeviation="7" id="feGaussianBlur3319" /> + </filter> + <filter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter3468" x="-0.084709811" y="-0.07978879" width="1.1704886" height="1.1683093"> + <feGaussianBlur inkscape:collect="always" stdDeviation="3" id="feGaussianBlur3470" /> + </filter> + </defs> + <rect style="fill:#00ffff;stroke-width:0.465806;filter:url(#filter793);stop-color:#000000" id="rect184" width="72.026939" height="78.547905" x="23.416168" y="43.275448" /> + <rect style="mix-blend-mode:normal;fill:#00ffff;stroke-width:0.44532;filter:url(#filter793-0);stop-color:#000000" id="rect184-4" width="1000" height="1000" x="127.01048" y="39.866764" transform="scale(0.1)translate(1400, 500)" /> + <path style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3468)" d="M 296.26671,61.788243 362.01573,40.400005 404.00005,149.71767 Z" id="path3465" /> + <g id="g3315" style="filter:url(#filter3317)"> + <rect style="fill:#008000;stroke-width:6.778;stop-color:#000000" id="rect3390" width="114.86276" height="69.709816" x="232.89415" y="247.94513" /> + <rect style="mix-blend-mode:normal;fill:#008000;stroke-width:0.465808;stop-color:#000000" id="rect184-4-3" width="79.58226" height="72.099617" x="89.880905" y="191.2991" /> + </g> +</svg> diff --git a/share/extensions/other/extension-xaml/tests/data/svg/circle_defaults.svg b/share/extensions/other/extension-xaml/tests/data/svg/circle_defaults.svg new file mode 100644 index 0000000..cde96e9 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/circle_defaults.svg @@ -0,0 +1,32 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360"> + <!-- Derived from shapes-circle-02-t.svg und shapes-ellipse-02-t.svg from the SVG unit test suite +under the 3-clause BSD license--> + <g fill="green" stroke="#000000"> + <!-- Set cx and cy coordinate to default.--> + <circle r="50" /> + + <!-- Set cx coordinate to default.--> + <circle cy="100" r="50" /> + + <!-- Set cy coordinate to default.--> + <circle cx="100" r="50" /> + + <!-- Set r attribute to 0 (should not display a circle).--> + <circle cx="100" cy="100" r="0" /> + + <!-- Set all values to draw a circle --> + <circle cx="150" cy="100" r="50" /> + + <!-- Set cx and cy coordinate to default.--> + <ellipse rx="100" ry="50" /> + + <!-- Set rx attribute to 0.--> + <ellipse cx="100" cy="150" rx="0" ry="50" /> + + <!-- Set ry attribute to 0.--> + <ellipse cx="200" cy="50" rx="100" ry="0" /> + + <!-- Set all values attribute to drawn an ellipse.--> + <ellipse cx="250" cy="250" rx="100" ry="50" /> + </g> +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/clip_complex.svg b/share/extensions/other/extension-xaml/tests/data/svg/clip_complex.svg new file mode 100644 index 0000000..1fa9119 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/clip_complex.svg @@ -0,0 +1,24 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" + viewBox="0 0 480 360"> + <!-- Derived from masking-path-01-b.svg and masking-path-05-f.svg + from the SVG unit test suite under the 3-clause BSD license--> + <defs> + <clipPath id="clip1"> + <path clip-rule="evenodd" d="M200,40l20,0 0,60 20,0 0,-20 -60,0 0,-20 80,0 0,60 -60,0 0,-80z" /> + </clipPath> + <clipPath id="clip2"> + <path clip-rule="nonzero" d="M200,170l20,0 0,60 20,0 0,-20 -60,0 0,-20 80,0 0,60 -60,0 0,-80z" /> + </clipPath> + <clipPath id="clip3"> + <rect x="90" y="50" width="175" height="200" /> + <rect x="225" y="160" width="95" height="75" /> + </clipPath> + </defs> + <rect x="115" y="40" width="225" height="40" fill="red" stroke="blue" stroke-width="5" clip-path="url(#clip3)" /> + <g clip-path="url(#clip3)"> + <rect x="115" y="190" width="225" height="40" fill="aqua" stroke="blue" stroke-width="5" /> + <rect x="115" y="240" width="225" height="40" fill="lime" stroke="green" stroke-width="5" /> + </g> + <rect x="50" y="30" width="350" height="100" fill="red" clip-path="url(#clip1)" transform="translate(150,0)"/> + <rect x="50" y="160" width="350" height="100" fill="blue" clip-path="url(#clip2)" transform="translate(150,0)"/> +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/clip_single.svg b/share/extensions/other/extension-xaml/tests/data/svg/clip_single.svg new file mode 100644 index 0000000..a714902 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/clip_single.svg @@ -0,0 +1,72 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" + viewBox="0 0 480 360"> + <!-- Derived from masking-path-08-b.svg + from the SVG unit test suite under the 3-clause BSD license--> + + + <defs> + <clipPath id="emptyclip"> + </clipPath> + <clipPath id="hiddenclip"> + <rect x="40" y="40" width="20" height="20" visibility="hidden" /> + </clipPath> + <clipPath id="displayclip"> + <rect x="40" y="40" width="20" height="20" display="none" /> + </clipPath> + <clipPath id="opacityclip"> + <rect x="40" y="40" width="20" height="20" opacity="0" /> + </clipPath> + <clipPath id="strokefillclip"> + <rect x="40" y="40" width="20" height="20" stroke="none" fill="none" /> + </clipPath> + <clipPath id="strokewidthclip"> + <rect x="40" y="40" width="20" height="20" stroke="black" stroke-width="80" /> + </clipPath> + <clipPath id="strokeopacityclip"> + <rect x="40" y="40" width="20" height="20" stroke="black" stroke-opacity="0" stroke-width="80" /> + </clipPath> + <clipPath id="fillopacityclip"> + <rect x="40" y="40" width="20" height="20" fill-opacity="0" /> + </clipPath> + </defs> + + <g> + <rect width="100" height="100" fill="red" clip-path="url(#emptyclip)" /> + </g> + + <g transform="translate(110 0)"> + <rect width="100" height="100" fill="red" clip-path="url(#hiddenclip)" /> + </g> + + <g transform="translate(220 0)"> + <rect width="100" height="100" fill="red" clip-path="url(#displayclip)" /> + </g> + + <!-- This has an intentionally broken clip-path url --> + <g transform="translate(0 110)"> + <rect width="100" height="100" fill="red" clip-path="url(#unknown)" /> + </g> + + <g transform="translate(110 110)"> + <rect width="100" height="100" fill="red" clip-path="url(#opacityclip)" /> + </g> + + <g transform="translate(220 110)"> + <rect width="100" height="100" fill="red" clip-path="url(#strokefillclip)" /> + </g> + + <g transform="translate(0 220)"> + <rect width="100" height="100" fill="red" clip-path="url(#strokewidthclip)" /> + </g> + + <g transform="translate(110 220)"> + <rect width="100" height="100" fill="red" clip-path="url(#strokeopacityclip)" /> + </g> + + <g transform="translate(220 220)"> + <rect width="100" height="100" fill="red" clip-path="url(#fillopacityclip)" /> + </g> + + + +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/clips_and_masks.svg b/share/extensions/other/extension-xaml/tests/data/svg/clips_and_masks.svg new file mode 100644 index 0000000..4beccd4 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/clips_and_masks.svg @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg13556" + inkscape:version="1.1-dev (d1a926bd5e, 2020-11-14)" + sodipodi:docname="clips_and_masks.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs13552"> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath13846"> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 40.565583,169.25411 125.00155,213.98274 95.588201,270.21716 47.572909,191.02479 Z" + id="path13848" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath14259"> + <path + id="path14261" + style="stroke:#ff00ff;stroke-width:0.264583" + d="M 126.20114,40.02528 A 23.801659,23.801659 0 0 1 102.39948,63.826938 23.801659,23.801659 0 0 1 78.597818,40.02528 23.801659,23.801659 0 0 1 102.39948,16.223621 23.801659,23.801659 0 0 1 126.20114,40.02528 Z" /> + </clipPath> + <mask + maskUnits="userSpaceOnUse" + id="mask5225"> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 104.29088,196.45513 -0.7464,-49.07734 25.25593,28.33562 31.39136,-29.83103 0.79046,50.34807 -5.60361,1.25689 -2.46557,-33.69356 -22.69324,19.90202 -22.05043,-16.72667 z" + id="path5227" /> + </mask> + <mask + maskUnits="userSpaceOnUse" + id="mask5460"> + <path + id="path5462" + style="fill:#ffffff;stroke:#ff00ff;stroke-width:0.264583" + inkscape:transform-center-x="2.5828768" + inkscape:transform-center-y="0.0811432" + d="m 169.64048,220.5459 -8.45374,16.45466 8.7624,16.29237 -18.26165,-2.95521 -12.78723,13.36816 -2.83259,-18.28108 -16.66535,-8.03039 16.51102,-8.34312 2.48748,-18.33121 13.03696,13.12474 z" /> + </mask> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="367.14286" + inkscape:cy="492.85714" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1366" + inkscape:window-height="717" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:snap-global="false" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + id="path14112" + style="stroke-width:0.264583;stroke:#ff00ff" + d="M 103.01046,57.276211 A 23.801659,23.801659 0 0 1 79.208801,81.077869 23.801659,23.801659 0 0 1 55.407143,57.276211 23.801659,23.801659 0 0 1 79.208801,33.474552 23.801659,23.801659 0 0 1 103.01046,57.276211 Z" + clip-path="url(#clipPath14259)" /> + <path + id="path5331" + style="stroke:#ff00ff;stroke-width:0.264583" + inkscape:transform-center-x="-1.2994782" + inkscape:transform-center-y="-1.3937968" + d="m 160.04313,261.88254 -14.88713,-10.98156 -17.48608,6.03804 5.84371,-17.55198 -11.14602,-14.76439 18.49874,0.13383 10.59746,-15.16294 5.58914,17.6347 17.69561,5.39318 -15.04446,10.76501 z" + mask="url(#mask5460)" /> + </g> +</svg> diff --git a/share/extensions/other/extension-xaml/tests/data/svg/gradient_with_mixed_offsets.svg b/share/extensions/other/extension-xaml/tests/data/svg/gradient_with_mixed_offsets.svg new file mode 100644 index 0000000..be376bd --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/gradient_with_mixed_offsets.svg @@ -0,0 +1,26 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="8cm" height="4cm" viewBox="0 0 800 400" version="1.1" + xmlns="http://www.w3.org/2000/svg"> + <desc>Example radgrad01 - fill a rectangle by referencing a + radial gradient paint server</desc> + <g> + <defs> + <radialGradient id="MyGradient" gradientUnits="userSpaceOnUse" + cx="400" cy="200" r="300" fx="400" fy="200"> + <stop offset="0%" stop-color="red" /> + <stop offset="50" stop-color="blue" /> + <stop offset="100%" stop-color="red" /> + </radialGradient> + </defs> + + <!-- Outline the drawing area in blue --> + <rect fill="none" stroke="blue" + x="1" y="1" width="798" height="398"/> + + <!-- The rectangle is filled using a radial gradient paint server --> + <rect fill="url(#MyGradient)" stroke="black" stroke-width="5" + x="100" y="100" width="600" height="200"/> + </g> +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/guides.svg b/share/extensions/other/extension-xaml/tests/data/svg/guides.svg new file mode 100644 index 0000000..f67b40d --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/guides.svg @@ -0,0 +1,233 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="ref_guides.svg" + inkscape:version="0.0" + inkscape:export-ydpi="96" + inkscape:export-xdpi="96" + inkscape:export-filename="{tempdir}/guides.png" + id="svg8" + version="1.1" + viewBox="0 0 1000 1000" + height="1000" + width="1000"> + <style + id="style872"></style> + <metadata + id="metadata41"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs33" /> + <sodipodi:namedview + inkscape:bbox-nodes="true" + inkscape:bbox-paths="true" + inkscape:snap-page="true" + inkscape:snap-nodes="true" + inkscape:snap-bbox="true" + inkscape:snap-global="true" + inkscape:guide-bbox="true" + showguides="true" + inkscape:document-rotation="0" + inkscape:current-layer="layer2" + inkscape:window-maximized="1" + inkscape:window-y="0" + inkscape:window-x="0" + inkscape:cy="465.64169" + inkscape:cx="544.90051" + inkscape:zoom="0.77183614" + inkscape:snap-text-baseline="true" + showgrid="true" + id="base" + inkscape:window-height="1017" + inkscape:window-width="1920" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff"> + <inkscape:grid + originy="0" + originx="0" + empopacity="0.25098039" + empcolor="#ff0000" + opacity="0.25098039" + color="#8080ff" + empspacing="2" + spacingy="100" + spacingx="100" + id="grid27" + type="xygrid" /> + <sodipodi:guide + id="guide880" + orientation="1,0" + position="46.936577,700" /> + <sodipodi:guide + id="guide882" + orientation="0,-1" + position="46.936577,951.0227" /> + <sodipodi:guide + id="guide884" + orientation="1,0" + position="953.01659,951.0227" /> + <sodipodi:guide + id="guide886" + orientation="0,-1" + position="953.01659,49.024128" /> + <sodipodi:guide + id="guide888" + orientation="0.70710678,-0.70710678" + position="46.936577,49.024128" /> + <sodipodi:guide + id="guide890" + orientation="-0.70710678,-0.70710678" + position="953.01659,49.024128" /> + </sodipodi:namedview> + <g + style="display:inline" + inkscape:label="Slide3" + id="webslicer-layer" + inkscape:groupmode="layer" /> + <g + style="display:inline" + inkscape:label="Slide2" + id="layer2" + inkscape:groupmode="layer"> + <use + transform="matrix(1.8978616,0,0,1.8909129,-450.29818,-444.94362)" + inkscape:label="#use3808" + height="100%" + width="100%" + id="u1" + inkscape:transform-center-y="-0.31067244" + inkscape:transform-center-x="12.274064" + xlink:href="#s1" + y="0" + x="0" + style="display:inline;stroke-width:0.527876" /> + <path + inkscape:transform-center-y="-0.16430137" + inkscape:transform-center-x="6.4673011" + d="M 558.40487,540.93476 513.066,532.8003 480.66172,565.53783 474.38757,519.90431 433.23885,499.20247 474.70009,479.13386 481.67306,433.60189 513.57167,466.83233 559.02991,459.39386 537.2831,500.00001 Z" + inkscape:randomized="0" + inkscape:rounded="0" + inkscape:flatsided="false" + sodipodi:arg2="1.2643023" + sodipodi:arg1="0.63598373" + sodipodi:r2="34.682434" + sodipodi:r1="69.364868" + sodipodi:cy="499.73415" + sodipodi:cx="502.60169" + sodipodi:sides="5" + id="s1" + style="display:inline;fill:#fcaf3e;stroke:#a40000;stroke-width:10" + sodipodi:type="star" /> + <rect + ry="2.1866901" + y="100" + x="300" + height="100" + width="100" + id="rect900" + style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" /> + <rect + style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" + id="rect902" + width="100" + height="100" + x="500" + y="100" + ry="2.1866901" /> + <rect + ry="2.1866901" + y="100" + x="697.91248" + height="100" + width="100" + id="rect904" + style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" /> + <rect + style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" + id="rect906" + width="100" + height="100" + x="700" + y="800" + ry="2.1866901" /> + <rect + ry="2.1866901" + y="796" + x="504" + height="100" + width="100" + id="rect908" + style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:16;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" /> + <rect + style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:32;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" + id="rect910" + width="100" + height="100" + x="300" + y="800" + ry="2.1866901" /> + <circle + r="50" + cy="350" + cx="150" + id="path912" + style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" /> + <circle + style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" + id="circle914" + cx="149.5" + cy="549.5" + r="50" /> + <circle + r="50" + cy="749" + cx="146.91245" + id="circle916" + style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" /> + <circle + style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" + id="circle918" + cx="852" + cy="752" + r="50" /> + <circle + r="50" + cy="554" + cx="854" + id="circle920" + style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:16;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" /> + <circle + style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:32;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" + id="circle922" + cx="842" + cy="358" + r="50" /> + </g> + <g + style="display:inline" + id="layer1" + inkscape:groupmode="layer" + inkscape:label="Slide1" /> +</svg> diff --git a/share/extensions/other/extension-xaml/tests/data/svg/layers.svg b/share/extensions/other/extension-xaml/tests/data/svg/layers.svg new file mode 100644 index 0000000..f1f5e10 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/layers.svg @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> + +<svg width="100%" height="100%" viewBox="0 0 480 360" version="1.1" id="svg5" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" sodipodi:docname="layers.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + + <defs id="defs2" /> + <g inkscape:groupmode="layer" id="layer5" inkscape:label="0: Open with&*_ /\1 special chars"> + <rect style="fill:none;stroke:#666666" id="rect413" width="77.485771" height="103.82237" x="348.84445" + y="52.251659" /> + </g> + <g inkscape:label="Save" inkscape:groupmode="layer" id="layer1" sodipodi:insentive="true" style="display:none"> + <g inkscape:groupmode="layer" id="layer3" inkscape:label="Sublayer" /> + <rect style="fill:none;stroke:#666666" id="rect241" width="86.137764" height="88.213371" x="39.436565" + y="47.738998" /> + </g> + <g inkscape:groupmode="layer" id="layer2" inkscape:label="Save"> + <ellipse style="fill:none;stroke:#666666" id="path354" cx="229.87366" cy="134.39566" rx="36.842052" + ry="47.220097" /> + <path sodipodi:type="star" style="fill:none;stroke:#666666" id="path408" inkscape:flatsided="false" + sodipodi:sides="5" sodipodi:cx="80.948738" sodipodi:cy="220.01453" sodipodi:r1="62.302845" + sodipodi:r2="31.151423" sodipodi:arg1="0.52327832" sodipodi:arg2="1.1515969" inkscape:rounded="0" + inkscape:randomized="0" + d="M 134.91456,251.14866 93.628281,248.46871 68.014778,280.96005 57.8054,240.86631 18.989285,226.5468 l 34.976541,-22.09934 1.623824,-41.34129 31.82607,26.43559 39.81969,-11.23081 -15.30695,38.43744 z" + inkscape:transform-center-x="3.9968135" inkscape:transform-center-y="2.0185843" /> + </g> + <g inkscape:groupmode="layer" id="layer4" inkscape:label="di_Save" /> + <g id="justagroup" inkscape:label="Just_a_group"/> +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/lineargradient_simple.svg b/share/extensions/other/extension-xaml/tests/data/svg/lineargradient_simple.svg new file mode 100644 index 0000000..75339e5 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/lineargradient_simple.svg @@ -0,0 +1,20 @@ +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 480 360"> + <!-- Derived from pservers-grad-01-b.svg and pservers-grad-07-b.svg + from the SVG unit test suite under the 3-clause BSD license--> + <defs> + <linearGradient id="Grad1a" gradientUnits="objectBoundingBox" x1="0" y1="0" x2="1" y2="1"> + <stop stop-color="blue" offset="0" /> + <stop stop-color="lime" offset="1" /> + </linearGradient> + <linearGradient id="Grad1b" xlink:href="#Grad1a" /> + <linearGradient id="Gradient" gradientUnits="userSpaceOnUse" x1="10" y1="10" x2="200" y2="10" spreadMethod="reflect"> + <stop stop-color="blue" offset="-1"/> + <stop stop-color="lime" offset="0.2"/> + </linearGradient> + </defs> + <rect x="20" y="20" width="440" height="80" fill="url(#Grad1a)" /> + <rect x="20" y="120" width="440" height="80" fill="url(#Grad1b)" /> + <rect x="25" y="250" width="440" height="80" fill="none" stroke="url(#Gradient)" stroke-width="20"/> + +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/markers_basic.svg b/share/extensions/other/extension-xaml/tests/data/svg/markers_basic.svg new file mode 100644 index 0000000..2e6561c --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/markers_basic.svg @@ -0,0 +1,41 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360"> + <!-- Derived from painting-marker-01-f.svg from the SVG unit test suite + under the 3-clause BSD license--> + <defs> + <marker id="marker1" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth"> + <rect width="10" height="10" fill="purple" stroke="none"/> + </marker> + <marker id="marker2" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth" orient="auto"> + <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/> + </marker> + <marker id="markerStart" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth"> + <rect width="10" height="10" fill="purple" stroke="none"/> + </marker> + <marker id="markerMiddle" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth"> + <circle cx="5" cy="5" r="5" fill="green" stroke="none"/> + </marker> + <marker id="markerEnd" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth"> + <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/> + </marker> + </defs> + <!-- ===================================================================== --> + <!-- Basic Marker Test --> + <!-- ===================================================================== --> + <path fill="none" stroke="black" stroke-width="8" style="marker: url(#marker1)" d="M 130 40 L 180 40 L 180 90"/> + + <!-- ===================================================================== --> + <!-- Start, Middle and End Marker Test --> + <!-- ===================================================================== --> + <path fill="none" stroke="black" stroke-width="8" marker-start="url(#markerStart)" marker-mid="url(#markerMiddle)" marker-end="url(#markerEnd)" d="M 130 135 L 180 135 L 180 185"/> + + <!-- ===================================================================== --> + <!-- Auto Orientation Marker Test --> + <!-- ===================================================================== --> + <path fill="none" stroke="black" stroke-width="8" marker-start="url(#marker2)" marker-mid="url(#marker2)" marker-end="url(#marker2)" d="M 130 230 L 180 230 L 180 280"/> + + <!-- userSpaceOnUse, only marker-mod, display=none (but still displayed)--> + <marker id="testMarker" markerWidth="10" markerHeight="10" display="none" markerUnits="userSpaceOnUse"> + <path d="M 0 0 L 20 20 L 0 15 z" fill="green" /> + </marker> + <path d="M 300 20 L 325 50 L 350 20" stroke="black" stroke-width="8" fill="none" marker-mid="url(#testMarker)"/> +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/masks.svg b/share/extensions/other/extension-xaml/tests/data/svg/masks.svg new file mode 100644 index 0000000..6b0d7b4 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/masks.svg @@ -0,0 +1,29 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" + viewBox="0 0 480 360"> + <!-- Derived from masking-mask-01-b.svg and masking-mask-02-f.svg + from the SVG unit test suite under the 3-clause BSD license--> + <defs> + <mask id="testMask" /> + </defs> + + <!-- Draw a red rectangle in the background --> + <rect x="10" y="30" width="100" height="260" fill="red" /> + <!-- Apply a gradient ramp based opacity --> + <mask id="mask1" maskUnits="userSpaceOnUse" x="60" y="50" width="100" height="60" color-interpolation="linearRGB"> + <defs> + <linearGradient gradientUnits="userSpaceOnUse" id="Grad1" x1="60" y1="50" x2="60" y2="120"> + <stop stop-color="white" stop-opacity="1" offset="0" /> + <stop stop-color="white" stop-opacity="0.5" offset="1" /> + </linearGradient> + </defs> + <rect x="60" y="50" width="100" height="60" fill="url(#Grad1)" /> + </mask> + <rect x="60" y="50" width="100" height="60" fill="lime" mask="url(#mask1)" /> + <!-- Simulate a uniform opacity using a mask --> + <mask id="mask2" maskUnits="userSpaceOnUse" x="60" y="120" width="100" height="30" color-interpolation="linearRGB"> + <rect x="60" y="120" width="100" height="30" fill-opacity="0.5" fill="white" /> + </mask> + <rect x="60" y="120" width="100" height="30" fill="lime" mask="url(#mask2)" /> + <!-- An element referencing an empty mask should not be rendered --> + <rect x="100" y="100" width="250" height="150" fill="red" mask="url(#testMask)" /> +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/paint-order.svg b/share/extensions/other/extension-xaml/tests/data/svg/paint-order.svg new file mode 100644 index 0000000..89a180e --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/paint-order.svg @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg width="100%" height="100%" viewBox="0 0 480 360" version="1.1" id="svg4564" inkscape:version="1.2 (dc2aedaf03, 2022-05-15)" sodipodi:docname="paint-order.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview id="namedview4566" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" inkscape:document-units="mm" showgrid="false" inkscape:zoom="2" inkscape:cx="248" inkscape:cy="145.5" inkscape:window-width="2560" inkscape:window-height="1377" inkscape:window-x="1912" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="layer1" /> + <defs id="defs4561"> + <marker markerWidth="2" markerHeight="2" refX="5" refY="5" orient="0" id="pin" viewBox="0 0 10 10" inkscape:stockid="pin" preserveAspectRatio="xMidYMid" inkscape:isstock="true" inkscape:collect="always"> + <rect fill="blue" x="0" y="0" width="10" height="10"/> + </marker> + </defs> + <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#pin)" d="M 55,115 V 60 h 50 l 35,55 z" id="path5987" sodipodi:nodetypes="ccccc" /> + <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#pin);paint-order:stroke fill markers" d="M 175,115 V 60 h 50 l 35,55 z" id="path6673" sodipodi:nodetypes="ccccc" /> + <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#pin);paint-order:fill markers stroke" d="M 295,115 V 60 h 50 l 35,55 z" id="path6675" sodipodi:nodetypes="ccccc" /> + <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#pin);paint-order:markers fill stroke" d="m 55,215 v -55 h 50 l 35,55 z" id="path6679" sodipodi:nodetypes="ccccc" /> + <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#pin);paint-order:stroke markers fill" d="m 175,215 v -55 h 50 l 35,55 z" id="path6681" sodipodi:nodetypes="ccccc" /> + <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#pin);paint-order:markers stroke fill" d="m 295,215 v -55 h 50 l 35,55 z" id="path6683" sodipodi:nodetypes="ccccc" /> + <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" d="m 175,315 v -55 h 50 l 35,55 z" id="path6679" sodipodi:nodetypes="ccccc" /> + <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" d="m 55,315 v -55 h 50 l 35,55 z" id="path6679" sodipodi:nodetypes="ccccc" /> +</svg> diff --git a/share/extensions/other/extension-xaml/tests/data/svg/paths.svg b/share/extensions/other/extension-xaml/tests/data/svg/paths.svg new file mode 100644 index 0000000..b87bd4c --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/paths.svg @@ -0,0 +1,14 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360"> + <!-- Derived from path-data-01|02|03|13|19-t.svg from the SVG unit test suite +under the 3-clause BSD license--> + <path id="X_curve_MCSmcs" fill="#00ff00" stroke="#00c000" + d="m 396,258 c -65,0 -100,-50 -100,-50 0,0 -35,-55 -100,-55 m 0,105 c 65,0 100,-50 100,-50 0,0 35,-55 100,-55" /> + <path id="Bez_MQMqz" fill="none" stroke="#0000ff" stroke-width="3" + d="m 285,20 q 15,100 115,10 m 50,50 Q 375,-20 287,20 Z" /> + <path id="Arc_MaZmAzmaz" fill="#609040" stroke="#000000" stroke-width="3" + d=" M 30 100 a 40 40 0 0 1 65 50 Z m 30 30 A 20 20 0 0 0 125 230 Z m 40 24 a 20 20 0 0 1 65 50 z " /> + <path fill="none" stroke="#000000" + d=" m 62.00000 56.00000 51.96152 90.00000 -103.92304 0.00000 51.96152 -90.00000 z m 0.00000 15.00000 38.97114 67.50000 -77.91228 0.00000 38.97114 -67.50000 z " + id="path5" /> + <path d="M220 20 L 240 20 260 20 " stroke-width="3" stroke="black" fill="none" id="path7" /> +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/patterns.svg b/share/extensions/other/extension-xaml/tests/data/svg/patterns.svg new file mode 100644 index 0000000..76f5f21 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/patterns.svg @@ -0,0 +1,21 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360" + xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Derived from pservers-pattern-01-b.svg from the SVG unit test suite +under the 3-clause BSD license--> + <defs> + <pattern id="pattern" viewBox="0 0 100 100" patternTransform="rotate(45)" height="0.1" width="0.1"> + <rect y="50" width="50" height="50" fill="blue"/> + <rect x="50" width="50" height="50" fill="blue"/> + </pattern> + </defs> + <pattern patternUnits="userSpaceOnUse" id="pat1" x="10" y="10" width="20" height="20"> + <rect x="5" y="5" width="10" height="10" fill="yellow"/> + <rect x="10" y="10" width="10" height="10" fill="green"/> + </pattern> + <rect x="25" y="10" width="430" height="60" stroke="black" fill="url(#pat1)"/> + <pattern id="pat3" patternTransform="rotate(45)" xlink:href="#pat1"> + </pattern> + <rect x="35" y="110" width="410" height="40" fill="none" stroke="url(#pat1)" stroke-width="20"/> + <rect x="20" y="200" fill="url(#pat3)" width="200" height="100"/> + <rect x="250" y="200" fill="url(#pattern)" width="100" height="100"/> +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/polygon_polyline_line.svg b/share/extensions/other/extension-xaml/tests/data/svg/polygon_polyline_line.svg new file mode 100644 index 0000000..c3687bd --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/polygon_polyline_line.svg @@ -0,0 +1,13 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360"> + <!-- Derived from shapes-line-02-t.svg + shapes-polygon-01-t.svg + shapes-polygon-03-t.svg + shapes-polyline-01-t.svg + from the SVG unit test suite under the 3-clause BSD license--> + <line x1="100" y1="100" x2="200" y2="150" stroke-width="10" stroke="black" fill="red" id="line2" /> + <polygon id="polygon-07" fill="none" stroke="#00FF00" stroke-width="8" + points="270,225 300,245 320,225 340,245 280,280 390,280 420,240 280,185" /> + <polyline id="polyline-06" fill="#ff00ff" stroke="#000000" stroke-width="8" + points="270,75 300,95 320,75 340,95 280,130 390,130 420,90 280,35" /> + <polyline fill="red" points="80,200 80,300 150,250 80,200 250" id="polyline6" /> +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/radialgradient_focal.svg b/share/extensions/other/extension-xaml/tests/data/svg/radialgradient_focal.svg new file mode 100644 index 0000000..25fb597 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/radialgradient_focal.svg @@ -0,0 +1,48 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" + viewBox="0 0 480 360"> + <!-- Derived from pservers-grad-12-b.svg and pservers-grad-13-b.svg + from the SVG unit test suite under the 3-clause BSD license--> + <defs> + <radialGradient id="grad1d" gradientUnits="objectBoundingBox" cx="10%" cy="10%" r="75%" fx="00.00%" fy="75%"> + <stop offset="0" stop-opacity="0" /> + <stop offset=".5" stop-color="darkblue" /> + <stop offset="1" stop-opacity="0" /> + </radialGradient> + <radialGradient id="grad6d" gradientUnits="objectBoundingBox" cx="10%" cy="10%" r="75%" fx="83.33%" fy="75%"> + <stop offset="0" stop-opacity="0" /> + <stop offset=".5" stop-color="darkblue" /> + <stop offset="1" stop-opacity="0" /> + </radialGradient> + <radialGradient id="Grad1"> + <stop stop-color="#009" offset="0" /> + <stop stop-color="lime" offset="1" /> + </radialGradient> + <radialGradient id="Grad2" gradientUnits="objectBoundingBox" cx=".2" cy=".2" fx=".2" fy=".2" r=".5"> + <stop stop-color="#009" offset="0" /> + <stop stop-color="lime" offset="1" /> + </radialGradient> + + <g id="alpha"> + <rect x="00" y="0" width="100" height="60" fill="yellow" /> + <rect x="00" y="0" width="20" height="60" fill="gold" /> + <rect x="25" y="0" width="20" height="60" fill="orange" /> + <rect x="50" y="0" width="20" height="60" fill="sienna" /> + <rect x="75" y="0" width="20" height="60" fill="gold" /> + <rect x="00" y="0" width="100" height="60" /> + <!-- inherits a radial gradient --> + </g> + </defs> + <radialGradient id="Grad3" cx="25" cy="215" r="25" fx="25" fy="215" gradientUnits="userSpaceOnUse"> + <stop stop-color="yellow" offset="0" /> + <stop stop-color="blue" offset="1" /> + </radialGradient> + <g id="group1" stroke="black" stroke-width="0.5"> + <rect x="10" y="35" width="460" height="50" fill="url(#Grad1)" /> + <rect x="10" y="125" width="460" height="50" fill="url(#Grad2)" /> + <rect transform="translate(10, 260) rotate(-90)" x="0" y="0" width="50" height="460" fill="url(#Grad3)" /> + + <use xlink:href="#alpha" x="017.5" y="240" fill="url(#grad1d)" /> + <use xlink:href="#alpha" x="355" y="240" fill="url(#grad6d)" /> + + </g> +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/rect_basic.svg b/share/extensions/other/extension-xaml/tests/data/svg/rect_basic.svg new file mode 100644 index 0000000..0334411 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/rect_basic.svg @@ -0,0 +1,8 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360"> +<!-- Derived from shapes-rect-01-t.svg from the SVG unit test suite +under the 3-clause BSD license--> + <rect id="Simple-rect-no-fill" fill="none" stroke="#000000" x="30" y="46" width="50" height="80" /> + <rect id="Simple-rect-filled" fill="fuchsia" stroke="#000000" x="130" y="46" width="50" height="80" /> + <rect id="Simple-round-rect-filled" fill="fuchsia" x="350" y="46" width="50" height="80" rx="30"/> + <rect id="rect-06" fill="#00FF00" x="350" y="196" width="50" height="80" rx="30" ry="50"/> +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/rect_defaults.svg b/share/extensions/other/extension-xaml/tests/data/svg/rect_defaults.svg new file mode 100644 index 0000000..eae50b7 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/rect_defaults.svg @@ -0,0 +1,23 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360"> + <!-- Derived from shapes-rect-02-t.svg from the SVG unit test suite +under the 3-clause BSD license--> + <g fill="green" stroke="#000000"> + <!-- Set x coordinate to default. --> + <rect y="46" width="50" height="80" /> + + <!-- Set y coordinate to default. --> + <rect x="130" width="50" height="80" /> + + <!-- Set width to default. --> + <rect x="250" y="46" height="80" width="0" /> + + <!-- Set height to default. --> + <rect x="350" y="46" height="0" width="50" /> + + <!-- Set rx to default. --> + <rect x="30" y="196" width="50" height="80" ry="20" /> + + <!-- Set ry to default. --> + <rect x="130" y="196" width="50" height="80" rx="20" /> + </g> +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/shapes.svg b/share/extensions/other/extension-xaml/tests/data/svg/shapes.svg new file mode 100644 index 0000000..eb9caed --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/shapes.svg @@ -0,0 +1,284 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:ns1="https://launchpad.net/jessyink" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="1000" + height="1000" + viewBox="0 0 1000 1000" + version="1.1" + id="svg8" + inkscape:version="0.92.4 5da689c313, 2019-01-14" + sodipodi:docname="test.svg"> + <defs + id="defs33"> + <marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path859" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) translate(1,0)" /> + </marker> + </defs> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="1017" + id="base" + showgrid="true" + inkscape:snap-text-baseline="true" + inkscape:zoom="0.6675088" + inkscape:cx="202.7349" + inkscape:cy="481.16986" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="webslicer-layer"> + <inkscape:grid + type="xygrid" + id="grid27" + spacingx="10" + spacingy="10" + empspacing="10" + color="#8080ff" + opacity="0.25098039" + empcolor="#0000ff" + empopacity="0.25098039" /> + </sodipodi:namedview> + <g + inkscape:groupmode="layer" + id="webslicer-layer" + inkscape:label="Slide3" + style="display:inline"> + <rect + height="201.49811" + width="248.69112" + y="353.92661" + x="651.3089" + id="slicerect1" + style="opacity:0.5;fill:#ff0000;stroke-width:1.11927199"> + <desc + id="desc51">format: png +dpi: 96 +layout-disposition: bg-el-norepeat +layout-position-anchor: tl</desc> + </rect> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Slide2" + style="display:inline"> + <circle + style="display:inline;fill:#000080;stroke:none" + id="c1" + cx="150" + cy="450" + r="50" + inkscape:label="#path3736" /> + <ellipse + style="display:inline;fill:none;stroke:#ff0000;stroke-width:16" + id="c2" + cx="400" + cy="450" + rx="100" + ry="50" + inkscape:label="#path3738" /> + <path + style="display:inline;fill:#ffff00;stroke:#008000;stroke-width:16" + id="c3" + sodipodi:type="arc" + sodipodi:cx="700" + sodipodi:cy="450" + sodipodi:rx="100" + sodipodi:ry="50" + sodipodi:start="0.59013865" + sodipodi:end="5.6484511" + d="m 783.08635,477.82381 a 100,50 0 0 1 -111.09848,20.17442 100,50 0 0 1 -71.96301,-46.88343 100,50 0 0 1 67.71127,-48.44091 100,50 0 0 1 112.7868,17.67793 L 700,450 Z" + inkscape:label="#path3740" /> + <path + style="display:inline;fill:none;stroke:#000000;stroke-width:10;marker-start:url(#Arrow2Lstart)" + d="M 100,600 200,700 300,600 400,700" + id="p1" + inkscape:connector-curvature="0" + inkscape:label="#path3746" /> + <path + style="display:inline;fill:none;stroke:#000000;stroke-width:10" + d="m 500,600 c 0,0 0,100 100,100 100,0 0,-100 100,-100 100,0 100,100 100,100" + id="p2" + inkscape:connector-curvature="0" + inkscape:label="#path3748" /> + <path + sodipodi:type="star" + style="display:inline;fill:#ffff00;stroke:#008000;stroke-width:10" + id="s1" + sodipodi:sides="5" + sodipodi:cx="189.03001" + sodipodi:cy="847.93945" + sodipodi:r1="69.364868" + sodipodi:r2="34.682434" + sodipodi:arg1="0.63598373" + sodipodi:arg2="1.2643023" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 244.8332,889.14005 -45.33887,-8.13446 -32.40428,32.73753 -6.27415,-45.63352 -41.14872,-20.70184 41.46124,-20.06861 6.97297,-45.53197 31.89861,33.23044 45.45824,-7.43847 -21.74681,40.60615 z" + inkscape:transform-center-x="6.4673011" + inkscape:transform-center-y="-0.16430137" /> + <use + style="display:inline" + x="0" + y="0" + xlink:href="#s1" + inkscape:transform-center-x="6.4673011" + inkscape:transform-center-y="-0.16430137" + id="u1" + transform="translate(200,2.9962152)" + width="100%" + height="100%" + inkscape:label="#use3808" /> + </g> + <g + inkscape:label="Slide1" + inkscape:groupmode="layer" + id="layer1" + style="display:inline"> + <text + xml:space="preserve" + style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none" + x="100" + y="100" + id="t1" + inkscape:label="#text12"><tspan + sodipodi:role="line" + id="tspan10" + x="100" + y="100">Hello World</tspan></text> + <flowRoot + xml:space="preserve" + id="t4" + style="font-size:40px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none" + transform="matrix(0.26458333,0,0,0.26458333,372.02961,28.904505)" + inkscape:label="#flowRoot14"><flowRegion + id="flowRegion16"><rect + id="rect18" + width="264.5675" + height="262.16187" + x="105.71429" + y="219.66254" /></flowRegion><flowPara + id="flowPara20" + style="font-size:55.43307114px">flow text which wraps</flowPara></flowRoot> <text + xml:space="preserve" + style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none" + x="200" + y="100" + id="t2" + inkscape:label="#text3727"><tspan + sodipodi:role="line" + id="tspan3725" + x="200" + y="100" + style="font-size:14.66666698px">UPPER</tspan></text> + <text + xml:space="preserve" + style="font-size:10.58333302px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none" + x="300" + y="100" + id="t3" + inkscape:label="#text3735"><tspan + sodipodi:role="line" + id="tspan3733" + x="300" + y="100" + style="font-size:14.66666698px">Multi line</tspan><tspan + sodipodi:role="line" + x="300" + y="118.33334" + id="tspan3737" + style="font-size:14.66666698px">text</tspan><tspan + sodipodi:role="line" + x="300" + y="136.66667" + id="tspan3739" + style="font-size:14.66666698px">FOO</tspan></text> + <g + id="t5" + transform="translate(445.71038,-129.64807)" + inkscape:label="#g3772"> + <text + id="text3762" + y="229.64807" + x="54.289616" + style="font-size:10.58333302px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none" + xml:space="preserve"><tspan + y="229.64807" + x="54.289616" + id="tspan3760" + sodipodi:role="line" + style="font-size:14.66666698px">Grouped</tspan></text> + <text + id="text3766" + y="259.64807" + x="54.289619" + style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none" + xml:space="preserve"><tspan + y="259.64807" + x="54.289619" + id="tspan3764" + sodipodi:role="line" + style="font-size:14.66666698px">text</tspan></text> + </g> + <rect + style="fill:#000080;stroke:none" + id="r1" + width="100" + height="100" + x="100" + y="200" + inkscape:label="#rect3732" /> + <rect + style="fill:none;stroke:#ff0000;stroke-width:16" + id="r2" + width="200" + height="100" + x="300" + y="200" + inkscape:label="#rect3734" /> + <rect + style="fill:#ffff00;stroke:#008000;stroke-width:16" + id="r3" + width="200" + height="100" + x="600" + y="200" + ry="38.950798" + rx="44.943226" + inkscape:label="#rect3744" /> + </g> + <script + ns1:version="1.5.5" + id="JessyInk">// dummy +</script> +</svg> diff --git a/share/extensions/other/extension-xaml/tests/data/svg/strokestyle.svg b/share/extensions/other/extension-xaml/tests/data/svg/strokestyle.svg new file mode 100644 index 0000000..8a76587 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/strokestyle.svg @@ -0,0 +1,13 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" + viewBox="0 0 480 360"> + <!-- Derived from painting-stroke-03-t.svg and painting-stroke-06-t.svg + from the SVG unit test suite under the 3-clause BSD license--> + <path fill="none" stroke="blue" stroke-width="30" stroke-linecap="round" d="M 30 110 l 200 20 l -200 20 " /> + <path fill="none" stroke="blue" stroke-width="30" stroke-linejoin="miter" stroke-miterlimit="1" + d="M 30 190 l 200 20 l -200 20" /> + <path stroke="black" stroke-width="10" fill="none" stroke-dasharray="none" d=" M 20 20 L 200 20" /> + + <path stroke="black" stroke-width="20" fill="none" stroke-dasharray="5,2,5,5,2,5" d=" M 20 60 L 200 60"/> + <path stroke="blue" stroke-width="10" fill="none" stroke-dasharray="5,2,5" d=" M 20 60 L 200 60" /> + +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/swatches.svg b/share/extensions/other/extension-xaml/tests/data/svg/swatches.svg new file mode 100644 index 0000000..340a316 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/swatches.svg @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg width="100%" height="100%" viewBox="0 0 480 360" version="1.1" id="svg1011" inkscape:version="1.2 (dc2aedaf03, 2022-05-15)" sodipodi:docname="swatches.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview id="namedview1013" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" inkscape:document-units="mm" showgrid="false" inkscape:zoom="2.5247521" inkscape:cx="161.0059" inkscape:cy="223.78434" inkscape:window-width="2560" inkscape:window-height="1377" inkscape:window-x="1912" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="layer1" /> + <defs id="defs1008"> + <linearGradient id="background" inkscape:swatch="solid"> + <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop4542" /> + </linearGradient> + <linearGradient id="foreground" inkscape:swatch="solid"> + <stop style="stop-color:#000000;stop-opacity:0.5;" offset="0" id="stop4423" /> + </linearGradient> + <linearGradient id="accent" inkscape:swatch="solid"> + <stop style="stop-color:#ff0000;stop-opacity:1;" offset="0" id="stop4417" /> + </linearGradient> + <linearGradient inkscape:collect="always" xlink:href="#accent" id="linearGradient4421" x1="150" y1="60" x2="230" y2="60" gradientUnits="userSpaceOnUse" /> + <linearGradient inkscape:collect="always" xlink:href="#foreground" id="linearGradient4427" x1="150" y1="60" x2="230" y2="60" gradientUnits="userSpaceOnUse" /> + <linearGradient inkscape:collect="always" xlink:href="#background" id="linearGradient4546" x1="100" y1="200" x2="140" y2="200" gradientUnits="userSpaceOnUse" /> + <linearGradient inkscape:collect="always" xlink:href="#accent" id="linearGradient4552" x1="49.673347" y1="189.90646" x2="143.3302" y2="189.90646" gradientUnits="userSpaceOnUse" /> + <linearGradient inkscape:collect="always" xlink:href="#foreground" id="linearGradient4558" x1="49.673347" y1="189.90646" x2="143.3302" y2="189.90646" gradientUnits="userSpaceOnUse" /> + </defs> + <g inkscape:label="Layer 1" inkscape:groupmode="layer"> + <rect style="fill:#000000;stroke:#ff0000;stroke-width:18;stroke-dasharray:none;stop-color:#000000" id="rect4153" width="61" height="61" x="29" y="29" /> + <rect style="fill:url(#linearGradient4427);stroke:url(#linearGradient4421);stroke-width:18;stroke-dasharray:none;stop-color:#000000;fill-opacity:1.0" id="rect4153-7" width="61" height="61" x="159" y="29" /> + <path id="path4319" style="stroke:url(#linearGradient4558);stroke-width:6;stop-color:#000000;fill-opacity:1.0;fill:url(#linearGradient4552);stroke-dasharray:none" d="M 50,230 H 143 L 96,150 Z" /> + <circle style="fill:url(#linearGradient4546);stroke:none;stroke-width:18;stroke-dasharray:none;stop-color:#000000;fill-opacity:1.0" id="path4481" cx="120" cy="200" r="20" /> + </g> +</svg> diff --git a/share/extensions/other/extension-xaml/tests/data/svg/test.svg b/share/extensions/other/extension-xaml/tests/data/svg/test.svg new file mode 100644 index 0000000..f8b6601 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/test.svg @@ -0,0 +1,28 @@ +<svg viewBox="-1 -1 162 92" xmlns="http://www.w3.org/2000/svg"> + <defs> + <path id="smiley" d="M50,10 A40,40,1,1,1,50,90 A40,40,1,1,1,50,10 M30,40 Q36,35,42,40 M58,40 Q64,35,70,40 M30,60 Q50,75,70,60 Q50,75,30,60" /> + </defs> + + <!-- (width>height) meet --> + <svg preserveAspectRatio="xMidYMid meet" x="0" y="0" viewBox="0 0 100 100" width="20" height="10"><use href="#smiley" /></svg> + <svg preserveAspectRatio="xMinYMid meet" x="25" y="0" viewBox="0 0 100 100" width="20" height="10"><use href="#smiley" /></svg> + <svg preserveAspectRatio="xMaxYMid meet" x="50" y="0" viewBox="0 0 100 100" width="20" height="10"><use href="#smiley" /></svg> + + <!-- (width>height) slice --> + <svg preserveAspectRatio="xMidYMin slice" x="0" y="15" viewBox="0 0 100 100" width="20" height="10"><use href="#smiley" /></svg> + <svg preserveAspectRatio="xMidYMid slice" x="25" y="15" viewBox="0 0 100 100" width="20" height="10"><use href="#smiley" /></svg> + <svg preserveAspectRatio="xMidYMax slice" x="50" y="15" viewBox="0 0 100 100" width="20" height="10"><use href="#smiley" /></svg> + + <!-- (width<height) meet --> + <svg preserveAspectRatio="xMidYMin meet" x="75" y="0" viewBox="0 0 100 100" width="10" height="25"><use href="#smiley" /></svg> + <svg preserveAspectRatio="xMidYMid meet" x="90" y="0" viewBox="0 0 100 100" width="10" height="25"><use href="#smiley" /></svg> + <svg preserveAspectRatio="xMidYMax meet" x="105" y="0" viewBox="0 0 100 100" width="10" height="25"><use href="#smiley" /></svg> + + <!-- (width<height) slice --> + <svg preserveAspectRatio="xMinYMid slice" x="120" y="0" viewBox="0 0 100 100" width="10" height="25"><use href="#smiley" /></svg> + <svg preserveAspectRatio="xMidYMid slice" x="135" y="0" viewBox="0 0 100 100" width="10" height="25"><use href="#smiley" /></svg> + <svg preserveAspectRatio="xMaxYMid slice" x="150" y="0" viewBox="0 0 100 100" width="10" height="25"><use href="#smiley" /></svg> + + <!-- none --> + <svg preserveAspectRatio="none" x="0" y="30" viewBox="0 0 100 100" width="160" height="60"><use href="#smiley" /></svg> +</svg>
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/data/svg/text-decorations.svg b/share/extensions/other/extension-xaml/tests/data/svg/text-decorations.svg new file mode 100644 index 0000000..d6b93fd --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/text-decorations.svg @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> + +<svg width="100mm" height="40mm" viewBox="0 0 100 40" version="1.1" inkscape:version="1.2 (dc2aedaf03, 2022-05-15)" sodipodi:docname="text-decorations.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="2" y="5.0039978"><tspan style="text-decoration:underline">Underlined</tspan> text</text> + <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff00ff;fill-opacity:0.5;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="30.164551" y="5.0536323"><tspan style="text-decoration-line:overline">Overlined</tspan> no shorthand</text> + <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:green;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="2" y="8.7957726"><tspan style="text-decoration-line:underline;text-decoration-style:dotted">Dotted underlined</tspan> text</text> + <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="36.355827" y="8.6846189"><tspan style="text-decoration:dashed overline;">dashed overlined</tspan> text</text> + <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="2" y="12.593491"><tspan style="text-decoration:wavy line-through #ff00000">Wavy striked through</tspan> text</text> + <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="2" y="16.858685"><tspan style="text-decoration:wavy red underline overline;">Wavy over- and underline</tspan> text</text> + <text xml:space="preserve" style="font-size:1.41111px;line-height:0;font-family:sans-serif;text-decoration:wavy blue underline;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="50" y="11.523354">small Wavy</text> + <text xml:space="preserve" style="font-size:20px;line-height:0;font-family:sans-serif;text-decoration:wavy blue underline;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="70" y="19">big</text> + <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="2" y="27"><tspan style="text-decoration-line:underline overline;text-decoration-style:double;text-decoration-color:#000000"><tspan style="font-size:6.35px">Double</tspan> over- and underline</tspan> text</text> + <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;text-decoration:underline red;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="2" y="35">Everything red underlined, plus black strikethrough <tspan style="font-size:2.82222px;text-decoration:line-through;">here</tspan></text> +</svg> diff --git a/share/extensions/other/extension-xaml/tests/data/svg/text_types.svg b/share/extensions/other/extension-xaml/tests/data/svg/text_types.svg new file mode 100644 index 0000000..194833f --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/data/svg/text_types.svg @@ -0,0 +1,327 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="142.15878" + height="96.270485" + viewBox="0 0 142.15879 96.270485" + version="1.1" + id="svg5" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + sodipodi:docname="text_types.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + objecttolerance="10.0" + gridtolerance="10.0" + guidetolerance="10.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="px" + showgrid="false" + inkscape:zoom="8" + inkscape:cx="77.4375" + inkscape:cy="80.6875" + inkscape:window-width="1368" + inkscape:window-height="850" + inkscape:window-x="-6" + inkscape:window-y="-6" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" + units="px" + lock-margins="true" + fit-margin-top="5" + fit-margin-left="5" + fit-margin-right="5" + fit-margin-bottom="5" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1" /> + <defs + id="defs2"> + <rect + x="106.75" + y="60.125001" + width="33.25" + height="13" + id="rect405" /> + <rect + x="100" + y="300" + width="200" + height="90" + id="rect127697" /> + <filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter4223" + x="-0.014790819" + y="-0.10231475" + width="1.0295816" + height="1.2046295"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="0.16541762" + id="feGaussianBlur4225" /> + </filter> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-8.0187893,28.437623)"> + <text + xml:space="preserve" + id="regular" + style="font-size:3px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;fill:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round" + x="13" + y="5"><tspan + sodipodi:role="line" + style="stroke-width:0.5" + x="13" + y="5" + id="tspan107965">This is a regular text</tspan><tspan + sodipodi:role="line" + style="stroke-width:0.5" + x="13" + y="8.75" + id="tspan753">With a <tspan + style="font-style:normal;font-variant:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-decoration:underline;text-decoration-line:underline;text-decoration-style:solid;text-decoration-color:#ff0000" + id="tspan426">line break.</tspan></tspan></text> + <text + xml:space="preserve" + id="regular-transform" + style="font-size:3px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;fill:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round" + x="80" + y="-6" + transform="matrix(1.2,0.5,-0.4,0.7,0,0)"><tspan + sodipodi:role="line" + style="stroke-width:0.5" + x="80" + y="-6" + id="tspan890">This is regular text</tspan><tspan + sodipodi:role="line" + style="stroke-width:0.5" + x="80" + y="-2.25" + id="tspan894">with a line break</tspan><tspan + sodipodi:role="line" + style="stroke-width:0.5" + x="80" + y="1.5" + id="tspan166626">and some transforms.</tspan></text> + <text + xml:space="preserve" + style="font-size:3px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;white-space:pre;inline-size:25.75;display:inline;fill:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round" + id="inline-size" + transform="translate(13,3)"><tspan + x="0" + y="11.480255" + id="tspan2116"><tspan + style="stroke-width:0.5" + id="tspan2114">This is an SVG2 </tspan></tspan><tspan + x="0" + y="15.230256" + id="tspan2124"><tspan + style="stroke-width:0.5" + id="tspan2118">flowed text </tspan><tspan + style="stroke-width:0.5" + id="tspan2120">(inlin</tspan><tspan + id="tspan2122">e </tspan></tspan><tspan + x="0" + y="18.980256" + id="tspan2130"><tspan + id="tspan2126">siz</tspan><tspan + style="stroke-width:0.5" + id="tspan2128">e). +</tspan></tspan><tspan + x="0" + y="22.730256" + id="tspan2136"><tspan + style="stroke-width:0.5" + id="tspan2132">This is a line </tspan><tspan + style="stroke-width:0.5" + id="tspan2134">break </tspan></tspan><tspan + x="0" + y="26.480256" + id="tspan2146"><tspan + style="font-weight:bold;-inkscape-font-specification:'Arial Bold'" + id="tspan2138">inside</tspan><tspan + style="stroke-width:0.5" + id="tspan2140"> </tspan><tspan + style="stroke-width:0.5" + id="tspan2142">that </tspan><tspan + style="stroke-width:0.5" + id="tspan2144">text.</tspan></tspan></text> + <text + xml:space="preserve" + id="shape-inside" + style="font-size:20px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect127697);display:inline;fill:#000000;stroke-width:1.88976;stroke-linecap:round;stroke-linejoin:round" + transform="matrix(0.15,0,0,0.15,-3,-3)"><tspan + x="100" + y="318.01509" + id="tspan2148">This is an SVG2 </tspan><tspan + x="100" + y="343.01509" + id="tspan2150">flowed text (shape </tspan><tspan + x="100" + y="368.01509" + id="tspan2152">inside)</tspan></text> + <text + xml:space="preserve" + style="font-size:3.175px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;letter-spacing:0.0343958px;fill:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round" + x="13" + y="58" + id="kerning"><tspan + sodipodi:role="line" + style="stroke-width:0.5" + x="13" + y="58" + id="tspan19510">This is a <tspan + style="letter-spacing:0.320146px" + id="tspan25400">text</tspan> with kerns adjusted in tspans</tspan><tspan + sodipodi:role="line" + style="stroke-width:0.5" + x="13" + y="61.96875" + id="tspan1285">(as Inkscape does it)</tspan></text> + <flowRoot + xml:space="preserve" + style="font-size:12px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;fill:#000000;stroke-width:1.88976;stroke-linecap:round;stroke-linejoin:round" + id="flowroot" + transform="translate(-32,-8)scale(0.25)"><flowRegion + id="flowRegion92145"><rect + id="rect92147" + width="150" + height="80.5" + x="314" + y="70" /></flowRegion><flowPara + id="flowPara92157" + style="font-size:10px">This is an SVG1.2 flowed text (flowroot)</flowPara><flowPara + id="flowPara92168">And this is a linebreak <flowSpan + style="font-size:20.5px" + id="flowSpan323">inside.</flowSpan></flowPara></flowRoot> + <flowRoot + xml:space="preserve" + style="font-size:12px;line-height:20px;font-family:Arial;-inkscape-font-specification:Arial;fill:#000000;stroke-width:1.88976;stroke-linecap:round;stroke-linejoin:round" + id="flowroot-abs-lineheight" + transform="translate(10, -10)scale(0.25)"><flowRegion + id="flowRegion92145-9"><rect + id="rect92147-2" + width="150" + height="81.669708" + x="300" + y="70" /></flowRegion><flowPara + id="flowPara92157-6" + style="font-size:10px">This is an SVG1.2 flowed text</flowPara><flowPara + style="font-size:10px" + id="flowPara181051">With absolute line-height</flowPara><flowPara + id="flowPara92168-7" /></flowRoot> + <flowRoot + xml:space="preserve" + style="font-size:12px;font-family:Arial;-inkscape-font-specification:Arial;fill:#000000;stroke-width:1.88976;stroke-linecap:round;stroke-linejoin:round" + id="flowroot-no-lineheight" + transform="translate(10, 0)scale(0.25)"><flowRegion + id="flowRegion92145-9-5"><rect + id="rect92147-2-1" + width="170" + height="66.55159" + x="300" + y="70" /></flowRegion><flowPara + id="flowPara178978">This is an SVG1.2 flowed text</flowPara><flowPara + id="flowPara191038">without line height.</flowPara></flowRoot> + <text + y="4.9445772" + x="51.84655" + style="font-variant:normal;font-weight:normal;font-stretch:normal;font-size:1.37276px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#110f0d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352777" + id="manual-kerns"><tspan + style="stroke-width:0.352777" + x="51.84655 52.646873 52.99144 58.482491 59.282814 59.627373 71.752998 72.553322 72.897888 75.069603 75.869919 76.214493 78.387573 79.187889 79.532463 82.391922 83.192253 83.536812 103.09733 103.89765 104.24221 109.73325 110.53359 110.87815 116.36782 117.16816 117.51272 119.68581 120.48612 120.83068" + y="4.9445772" + sodipodi:role="line" + id="tspan5688">0.50.10.10.10.34.20.54.30.14.5</tspan></text> + <text + xml:space="preserve" + style="font-size:5.33333px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;writing-mode:lr-tb;direction:ltr;fill:#000000;stroke-width:1.88976;stroke-linecap:round;stroke-linejoin:round" + x="13.65625" + y="-19.117189" + id="title"><tspan + sodipodi:role="line" + id="tspan156918" + x="13.65625" + y="-19.117189" + style="font-size:5.33333px;direction:ltr">This is a test document containing different transformed </tspan><tspan + sodipodi:role="line" + x="13.65625" + y="-12.450527" + style="font-size:5.33333px;direction:ltr" + id="tspan163610">text elements that were created using different methods.</tspan><tspan + sodipodi:role="line" + x="13.65625" + y="-5.7838631" + style="font-size:5.33333px;direction:ltr" + id="tspan168431">The containing layer has a transform applied as well.</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.33333px;font-family:Arial, Verdana;-inkscape-font-specification:'Arial, Verdana';fill:#000000;filter:url(#filter4223)" + x="50" + y="40" + id="text4221"><tspan + sodipodi:role="line" + id="tspan4219" + x="52.03619" + y="44.747932">Blurred text</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.33333px;font-family:Arial, Verdana;-inkscape-font-specification:'Arial, Verdana';display:none;fill:#000000" + x="86.330864" + y="60.657829" + id="text7345"><tspan + sodipodi:role="line" + id="tspan7343" + x="86.330864" + y="60.657829">This text should be invisible</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:50%;font-size:normal;font-family:Arial;fill:#000000;stroke-width:0.192272" + x="400" + y="300" + id="text7457" + transform="scale(0.2)"><tspan + sodipodi:role="line" + style="text-decoration:red overline blink;" + id="tspan7455" + x="81.044586" + y="55.852364">Non-Inkscape properties</tspan></text> + <text + xml:space="preserve" + transform="translate(21.143789,-30.187623)" + id="text403" + style="font-weight:bold;font-size:2px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana Bold';white-space:pre;shape-inside:url(#rect405);display:inline;fill:#000000"><tspan + x="106.75" + y="61.949661" + id="tspan2154">This is a text +</tspan><tspan + x="106.75" + y="65.199661" + id="tspan2158"><tspan + style="line-height:2" + id="tspan2156">which changes +</tspan></tspan><tspan + x="106.75" + y="69.199661" + id="tspan2162"><tspan + style="line-height:2" + id="tspan2160">line-height</tspan> +</tspan><tspan + x="106.75" + y="72.449661" + id="tspan2164">midway twice.</tspan></text> + </g> +</svg> diff --git a/share/extensions/other/extension-xaml/tests/dev_requirements.txt b/share/extensions/other/extension-xaml/tests/dev_requirements.txt new file mode 100644 index 0000000..0e358d9 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/dev_requirements.txt @@ -0,0 +1,11 @@ +# Dev Requirements +pytest +pytest-cov + +# Code requirements +typing +lxml +numpy +scour +pyserial +cssselect
\ No newline at end of file diff --git a/share/extensions/other/extension-xaml/tests/test_inx_good.py b/share/extensions/other/extension-xaml/tests/test_inx_good.py new file mode 100644 index 0000000..3feaa14 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/test_inx_good.py @@ -0,0 +1,12 @@ +import os + +from inkex.tester import TestCase +from inkex.tester.inx import InxMixin + + +class SvgToXamlInxTestCase(InxMixin, TestCase): + """Check that inx defaults match, and all parameters are there""" + + def test_my_inx_file(self): + os.chdir("inkxaml") + self.assertInxIsGood("svg2xaml.inx") diff --git a/share/extensions/other/extension-xaml/tests/test_svg2xaml_adv.py b/share/extensions/other/extension-xaml/tests/test_svg2xaml_adv.py new file mode 100644 index 0000000..95f5e68 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/test_svg2xaml_adv.py @@ -0,0 +1,786 @@ +from math import sqrt + +import inkex +from .context import Svg2XamlTester + +"""More SVG2XAML custom tests""" + + +class XamlAdvancedPrimitiveTests(Svg2XamlTester): + """Here we test more advanced primitives: + - masks and clips + - patterns + - markers""" + + def test_clip_single(self): + """Test clips consisting of a single element, applied to a single object.""" + dwg = self.run_to_dg("clip_single.svg") + # For the first three tests, empty clip paths are provided. These can be + # simplified into an empty string. + for i in range(3): + # Clips can only be specified on DrawingGroups. + self.assertTagEqual(dwg[i], "DrawingGroup") + self.assertTagEqual(dwg[i][0], "DrawingGroup") + self.assertPropertyEqual(dwg[i][0], "ClipGeometry", "") + + # The next test has an invalid clip url set. + # This means we don't even need a wrapper. + self.assertTagEqual(dwg[3], "DrawingGroup") + self.assertTagEqual(dwg[3][0], "GeometryDrawing") + self.assertPropertyEqual(dwg[3], "ClipGeometry", None, default=None) + + # The next five clips specify different fill/stroke information, including + # none and zero opacity, proving that this has no effect on the clip. + + for i in range(4, 9): + self.assertTagEqual(dwg[i], "DrawingGroup") + self.assertTagEqual(dwg[i][0], "DrawingGroup") + self.assertTagEqual(dwg[i][0][1], "DrawingGroup.ClipGeometry") + # We don't need a geometry group, as the clips only have one child + self.assertTagEqual(dwg[i][0][1][0], "RectangleGeometry") + self.assertPropertyEqual(dwg[i][0][1][0], "Rect", [40, 40, 20, 20]) + + def test_clip_single_canvas(self): + """Test clips consisting of a single element, applied to a single object, + for canvas-type output""" + canvas = self.run_to_canvas("clip_single.svg") + # For the first three tests, empty clip paths are provided. These can be + # simplified into an empty string. + for i in range(3): + self.assertTagEqual(canvas[i], "Canvas") + self.assertTagEqual(canvas[i][0], "Rectangle") + self.assertPropertyEqual(canvas[i][0], "Clip", "") + + # The next test has an invalid clip url set. + self.assertTagEqual(canvas[3], "Canvas") + self.assertTagEqual(canvas[3][0], "Rectangle") + self.assertPropertyEqual(canvas[3][0], "ClipGeometry", None, default=None) + + # The next five clips specify different fill/stroke information, including + # none and zero opacity, proving that this has no effect on the clip. + for i in range(4, 9): + self.assertTagEqual(canvas[i], "Canvas") + self.assertTagEqual(canvas[i][0], "Rectangle") + self.assertTagEqual(canvas[i][0][0], "Rectangle.Clip") + # We don't need a geometry group, as the clips only have one child + self.assertTagEqual(canvas[i][0][0][0], "RectangleGeometry") + self.assertPropertyEqual(canvas[i][0][0][0], "Rect", [40, 40, 20, 20]) + + def test_clip_multiple(self): + """Test that a single clip applied to multiple objects works; + the clip is applied to a group and a rectangle, and itself consists of + two rectangles (which are unioned internally).""" + + dwg = self.run_to_dg("clip_complex.svg") + for i in [0, 1]: + self.assertTagEqual(dwg[i], "DrawingGroup") + self.assertTagEqual(dwg[i][-1], "DrawingGroup.ClipGeometry") + self.assertTagEqual(dwg[i][-1][0], "GeometryGroup") + self.assertPropertyEqual(dwg[i][-1][0], "FillRule", "Nonzero") + self.assertEqual(len(dwg[i][-1][0]), 2) # The clip has two children + self.assertTagEqual(dwg[i][-1][0][0], "RectangleGeometry") + self.assertTagEqual(dwg[i][-1][0][1], "RectangleGeometry") + self.assertPropertyEqual(dwg[i][-1][0][0], "Rect", [90, 50, 175, 200]) + self.assertPropertyEqual(dwg[i][-1][0][1], "Rect", [225, 160, 95, 75]) + self.assertTagEqual(dwg[0][0], "GeometryDrawing") + self.assertTagEqual(dwg[1][0], "GeometryDrawing") + self.assertTagEqual(dwg[1][1], "GeometryDrawing") + + def test_clip_multiple_canvas(self): + """Test that a single clip applied to multiple objects works; + the clip is applied to a group and a rectangle, and itself consists of + two rectangles (which are unioned internally); now for a canvas""" + + dwg = self.run_to_canvas("clip_complex.svg") + + self.assertTagEqual(dwg[0], "Rectangle") + self.assertTagEqual(dwg[1], "Canvas") + + self.assertTagEqual(dwg[0][-1], "Rectangle.Clip") + self.assertTagEqual(dwg[1][-1], "Canvas.Clip") + for i in [0, 1]: + self.assertTagEqual(dwg[i][-1][0], "GeometryGroup") + self.assertPropertyEqual(dwg[i][-1][0], "FillRule", "Nonzero") + self.assertEqual(len(dwg[i][-1][0]), 2) # The clip has two children + self.assertTagEqual(dwg[i][-1][0][0], "RectangleGeometry") + self.assertTagEqual(dwg[i][-1][0][1], "RectangleGeometry") + self.assertPropertyEqual(dwg[i][-1][0][0], "Rect", [90, 50, 175, 200]) + self.assertPropertyEqual(dwg[i][-1][0][1], "Rect", [225, 160, 95, 75]) + self.assertTagEqual(dwg[1][0], "Rectangle") + self.assertTagEqual(dwg[1][1], "Rectangle") + + def test_cliprule(self): + """Test that the clip-rule attribute of a clippath is converted to fill-rule.""" + + dwg = self.run_to_dg("clip_complex.svg") + for i in [2, 3]: + self.assertTagEqual(dwg[i], "DrawingGroup") + self.assertPropertyEqual(dwg[i], "Transform", [1, 0, 0, 1, 150, 0]) + self.assertTagEqual(dwg[i][-1], "DrawingGroup.ClipGeometry") + self.assertTagEqual(dwg[i][-1][0], "PathGeometry") + self.assertPropertyEqual( + dwg[i][-1][0], + "FillRule", + "EvenOdd" if i == 2 else "Nonzero", + default="EvenOdd", + ) + self.assertTagEqual(dwg[i][0], "GeometryDrawing") + + dwg = self.run_to_canvas("clip_complex.svg") + for i in [2, 3]: + self.assertTagEqual(dwg[i], "Rectangle") + self.assertPropertyEqual(dwg[i], "RenderTransform", [1, 0, 0, 1, 150, 0]) + self.assertTagEqual(dwg[i][-1], "Rectangle.Clip") + self.assertTagEqual(dwg[i][-1][0], "PathGeometry") + self.assertPropertyEqual( + dwg[i][-1][0], + "FillRule", + "EvenOdd" if i == 2 else "Nonzero", + default="EvenOdd", + ) + self.assertPropertyEqual( + dwg[i][-1][0], + "Transform", + [ + 1, + 0, + 0, + 1, + -float(dwg[i].get("Canvas.Left")), + -float(dwg[i].get("Canvas.Top")), + ], + ) + + def test_opacitymask(self): + """Test opacity masks.""" + # Objects 2 and 3 have an opacity mask consisting of 1 element applied; + # the first is a linear gradient and the second is a solid brush. + # Object 4 has an empty mask, and is clipped away completely. + dwg = self.run_to_dg("masks.svg") + canvas = self.run_to_canvas("masks.svg") + for dgg in [dwg, canvas]: + for i in [1, 2]: + opm = dgg[i][1 if dwg == dgg else 0] + if dgg == dwg: + self.assertTagEqual( + opm, + "DrawingGroup.OpacityMask" + if dgg == dwg + else "Rectangle.OpacityMask", + ) + self.assertTagEqual(opm[0], "DrawingBrush") + self.assertTagEqual(opm[0][0], "DrawingBrush.Drawing") + self.assertPropertyEqual(opm[0], "ViewboxUnits", "Absolute") + self.assertPropertyEqual(opm[0], "ViewportUnits", "Absolute") + vb = ( + [60, 50, 100, 60] + if i == 1 + else ([60, 120, 100, 30] if i == 2 else [0, 0, 0, 0]) + ) + self.assertPropertyEqual(opm[0], "Viewbox", vb, separator=" ") + self.assertPropertyEqual(opm[0], "Viewport", vb, separator=" ") + if dgg == canvas and i < 3: + self.assertPropertyEqual( + opm[0], + "Transform", + [1, 0, 0, 1, -60, -120] if i == 2 else [1, 0, 0, 1, -60, -50], + ) + # Two solutions are acceptable; optionally the GeometryDrawing can be + # wrapped in a DrawingGroup. + if i < 3: + if opm[0][0][0].tag == f"{{{self.xamlns}}}GeometryDrawing": + gdw = opm[0][0] + elif opm[0][0][0].tag == f"{{{self.xamlns}}}DrawingGroup": + gdw = opm[0][0][0][0] + self.assertTagEqual(gdw, "GeometryDrawing") + # The remainder is a standard group parser, so a cursory check is + # sufficient + if i == 1: + self.assertTagEqual(gdw[1][0], "RectangleGeometry") + self.assertTagEqual(gdw[0][0], "LinearGradientBrush") + if i == 2: + self.assertTagEqual(gdw[0][0], "RectangleGeometry") + self.assertPropertyEqual(gdw, "Brush", "#7fffffff") + else: + if len(opm[0][0]) == 0: + # This would be ok + pass + if len(opm[0][0]) == 1: + self.assertTagEqual(opm[0][0][0], "DrawingGroup") + self.assertEqual(len(opm[0][0][0]), 0) + + def test_mask_noxywh(self): + """Inkscape-created masks typically don't have x/y/width/height set""" + dwg = self.run_to_dg("../svg/clips_and_masks.svg") + mask = dwg[0][1][-1] + self.assertTagEqual(mask, "DrawingGroup.OpacityMask") + viewbox = mask[0].get("Viewbox") + self.assertPropertyEqual(mask[0], "TileMode", "None", default="None") + self.assertEqual(viewbox, mask[0].get("Viewport")) + viewbox = list(map(float, viewbox.split())) + # Tight bounding box + self.assertLessEqual(viewbox[0], 119.103416442871) + self.assertLessEqual(viewbox[1], 210.436676025391) + self.assertGreaterEqual(viewbox[2], 51.0891952514648) + self.assertGreaterEqual(viewbox[3], 53.5543518066406) + + def test_patterns(self): + dwg = self.run_to_dg("patterns.svg") + # Canvas works pretty much identical so we don't test it explicitly + # The first pattern is absolute, but has a nonzero x / y value. + # The first two elements reference the same pattern, but for the second one, + # it's applied to the stroke. + # The second pattern (third object) references the first one, but + # applies an additional transform. This is representative of patterns created + # in Inkscape. Apart from the transform, all should be identical. + self.assertTagEqual(dwg[0][0], "GeometryDrawing.Brush") + self.assertTagEqual(dwg[2][0], "GeometryDrawing.Brush") + self.assertTagEqual(dwg[1][1], "GeometryDrawing.Pen") + for i in (0, 1, 2): + dbr = dwg[i][1 if i == 1 else 0][0] + if i == 1: + self.assertTagEqual(dbr, "Pen") + self.assertPropertyEqual(dbr, "Thickness", 20) + self.assertTagEqual(dbr[0], "Pen.Brush") + dbr = dbr[0][0] + self.assertTagEqual(dbr, "DrawingBrush") + self.assertPropertyEqual(dbr, "TileMode", "Tile") + self.assertPropertyEqual(dbr, "Viewbox", [10, 10, 20, 20], separator=" ") + self.assertPropertyEqual(dbr, "Viewport", [10, 10, 20, 20], separator=" ") + self.assertPropertyEqual(dbr, "ViewboxUnits", "Absolute") + self.assertPropertyEqual(dbr, "ViewportUnits", "Absolute") + self.assertTagEqual(dbr[0], "DrawingBrush.Drawing") + self.assertTagEqual(dbr[0][0], "DrawingGroup") + self.assertEqual(len(dbr[0][0]), 2) + self.assertTagEqual(dbr[0][0][1], "GeometryDrawing") + self.assertPropertyEqual(dbr[0][0], "Transform", [1, 0, 0, 1, 10, 10]) + self.assertPropertyEqual(dbr[0][0][0][0][0], "Rect", [5, 5, 10, 10]) + if i == 2: + os2 = 1 / sqrt(2) + self.assertPropertyEqual( + dbr, + "Transform", + (os2, os2, -os2, os2, 0, 0), + ) + + # The third pattern is defined in relative coordinates. The logic for this + # is rather different than in SVG. + dbr = dwg[3][0][0] + self.assertTagEqual(dbr, "DrawingBrush") + self.assertPropertyEqual( + dbr, + "Transform", + (os2, os2, -os2, os2, 0, 0), + ) + self.assertPropertyEqual(dbr, "TileMode", "Tile") + self.assertPropertyEqual(dbr, "Viewbox", [0, 0, 0.1, 0.1], separator=" ") + self.assertPropertyEqual(dbr, "Viewport", [0, 0, 0.1, 0.1], separator=" ") + self.assertPropertyEqual(dbr, "ViewboxUnits", "Absolute") + self.assertPropertyEqual( + dbr, + "ViewportUnits", + "RelativeToBoundingBox", + default="RelativeToBoundingBox", + ) + self.assertTagEqual(dbr[0], "DrawingBrush.Drawing") + self.assertTagEqual(dbr[0][0], "DrawingGroup") + self.assertEqual(len(dbr[0][0]), 2) + self.assertTagEqual(dbr[0][0][1], "GeometryDrawing") + self.assertPropertyEqual(dbr[0][0], "Transform", [0.001, 0, 0, 0.001, 0, 0]) + self.assertPropertyEqual(dbr[0][0][0][0][0], "Rect", [0, 50, 50, 50]) + + def test_markers(self): + """Test marker export""" + dwg = self.run_to_dg("markers_basic.svg") + + # There are four paths / four groups plus one global clip. + self.assertEqual(len(dwg), 5) + # Each group has four children, the path and three markers. + for i in range(3): + self.assertEqual(len(dwg[i]), 4) + self.assertTagEqual(dwg[i][0], "GeometryDrawing") + self.assertTagEqual(dwg[i][0][0][0], "PathGeometry") + for j in range(1, 4): + self.assertTagEqual(dwg[i][j], "DrawingGroup") + self.assertTagEqual(dwg[i][j][0], "GeometryDrawing") + self.assertTagEqual(dwg[i][j][0][0], "GeometryDrawing.Geometry") + if i == 2: + self.assertTagEqual(dwg[i][j][0][0][0], "PathGeometry") + if i == 0: + self.assertTagEqual(dwg[i][j][0][0][0], "RectangleGeometry") + self.assertTagEqual(dwg[i][j][1], "DrawingGroup.ClipGeometry") + self.assertTagEqual(dwg[i][j][1][0], "RectangleGeometry") + self.assertPropertyEqual(dwg[i][j][1][0], "Rect", [0, 0, 10, 10]) + if i == 1: + self.assertTagEqual(dwg[i][1][0][0][0], "RectangleGeometry") + self.assertTagEqual(dwg[i][2][0][0][0], "EllipseGeometry") + self.assertTagEqual(dwg[i][3][0][0][0], "PathGeometry") + # Now for canvas. + canvas = self.run_to_canvas("markers_basic.svg") + # There are four paths / four groups plus one global clip. + self.assertEqual(len(canvas), 5) + # Each group has four children, the path and three markers. + for i in range(3): + self.assertEqual(len(canvas[i]), 4) + self.assertTagEqual(canvas[i][0], "Path") + self.assertTagEqual(canvas[i][0][0][0], "PathGeometry") + for j in range(1, 4): + self.assertTagEqual(canvas[i][j], "Canvas") + if i == 2: + self.assertTagEqual(canvas[i][j][0], "Path") + if i == 0: + self.assertTagEqual(canvas[i][j][0], "Rectangle") + self.assertTagEqual(canvas[i][j][1], "Canvas.Clip") + self.assertTagEqual(canvas[i][j][1][0], "RectangleGeometry") + self.assertPropertyEqual(canvas[i][j][1][0], "Rect", [0, 0, 10, 10]) + if i == 1: + self.assertTagEqual(canvas[i][1][0], "Rectangle") + self.assertTagEqual(canvas[i][2][0], "Ellipse") + self.assertTagEqual(canvas[i][3][0], "Path") + for dgg in [dwg, canvas]: + # Now we need to check the transforms. + # first path + trans_attr = "Transform" if dwg == dgg else "RenderTransform" + for i, node in enumerate([(130, 40), (180, 40), (180, 90)]): + p1m1 = inkex.Transform( + f"translate({node}) rotate(0) scale(8) translate(-1, -1) scale(0.2, 0.2)" + ) + self.assertEqual( + p1m1, inkex.Transform(f"matrix({dgg[0][i+1].get(trans_attr)})") + ) + for i, node in enumerate([(130, 135), (180, 135), (180, 185)]): + p1m1 = inkex.Transform( + f"translate({node}) rotate(0) scale(8) translate(-1, -1) scale(0.2, 0.2)" + ) + self.assertEqual( + p1m1, inkex.Transform(f"matrix({dgg[1][i+1].get(trans_attr)})") + ) + for i, node in enumerate( + [[(130, 230), 0], [(180, 230), 45], [(180, 280), 90]] + ): + p1m1 = inkex.Transform( + f"translate({node[0]}) rotate({node[1]}) scale(8) translate(-1, -1) scale(0.2, 0.2)" + ) + self.assertEqual( + p1m1, inkex.Transform(f"matrix({dgg[2][i+1].get(trans_attr)})") + ) + + def test_markers_adv(self): + """Test another marker. It doesn't have a viewbox, has display=none, + is only set on the middle node and userSpaceOnUse""" + dwg = self.run_to_dg("markers_basic.svg") + # code mostly copied from above + i = 3 + j = 1 + self.assertTagEqual(dwg[i][0], "GeometryDrawing") + self.assertTagEqual(dwg[i][0][0][0], "PathGeometry") + self.assertEqual(len(dwg[i]), 2) + self.assertTagEqual(dwg[i][j], "DrawingGroup") + self.assertTagEqual(dwg[i][j][0], "GeometryDrawing") + self.assertTagEqual(dwg[i][j][0][0], "GeometryDrawing.Geometry") + self.assertTagEqual(dwg[i][j][0][0][0], "PathGeometry") + self.assertTagEqual(dwg[i][j][1], "DrawingGroup.ClipGeometry") + self.assertTagEqual(dwg[i][j][1][0], "RectangleGeometry") + self.assertPropertyEqual(dwg[i][j][1][0], "Rect", [0, 0, 10, 10]) + p1m1 = inkex.Transform( + f"translate(325 50) rotate(0) translate(0, 0) scale(1, 1)" + ) + self.assertEqual(p1m1, inkex.Transform(f'matrix({dwg[i][j].get("Transform")})')) + + def test_paintorder(self): + """Test paint order, which we can only emulate by splitting up the objects""" + + dgg = self.run_to_dg("paint-order.svg") + canvas = self.run_to_canvas("paint-order.svg") + for dwg in [dgg, canvas]: + self.assertEqual(len(dwg), 9) # 7 objects + one clip + for i in range(7): + # The first 6 have markers, so they need to be a group. + # The 7th also, because its stroke is painted before its fill. + self.assertTagEqual(dwg[i], "DrawingGroup" if dwg == dgg else "Canvas") + # The last one has "fill markers stroke", but since no markers are + # set, it can be drawn as one. + self.assertTagEqual(dwg[7], "GeometryDrawing" if dwg == dgg else "Path") + + # The first group has a drawing with fill and stroke and three markers. + def assertMarkers(dwg, idx, start): + for i in range(start, start + 3): + if dwg == dgg: + self.assertTagEqual(dwg[idx][i], "DrawingGroup") + self.assertPropertyEqual( + dwg[idx][i][0][0][0], "Rect", [0, 0, 10, 10] + ) + else: + self.assertTagEqual(dwg[idx][i], "Canvas") + self.assertPropertyEqual(dwg[idx][i][0], "Canvas.Left", 0) + self.assertPropertyEqual(dwg[idx][i][0], "Width", 10) + + def assertStrokeFill(dwg, idx, fillidx, strokeidx, markeridx): + self.assertEqual( + len(dwg[idx]), + (5 if strokeidx != fillidx else 4) - (0 if markeridx >= 0 else 3), + ) + self.assertTagEqual( + dwg[idx][strokeidx], "GeometryDrawing" if dwg == dgg else "Path" + ) + self.assertTagEqual( + dwg[idx][fillidx], "GeometryDrawing" if dwg == dgg else "Path" + ) + if dwg == dgg: + if fillidx != strokeidx: + self.assertPropertyEqual( + dwg[idx][strokeidx], "Brush", None, default=None + ) + self.assertPropertyEqual( + dwg[idx][strokeidx][1][0], "Brush", "#ff000000" + ) + self.assertPropertyEqual(dwg[idx][fillidx], "Brush", "#7fff0000") + else: + if fillidx != strokeidx: + self.assertPropertyEqual( + dwg[idx][strokeidx], "Fill", None, default=None + ) + self.assertPropertyEqual(dwg[idx][strokeidx], "Stroke", "#ff000000") + self.assertPropertyEqual(dwg[idx][fillidx], "Fill", "#7fff0000") + self.assertEqual( + dwg[idx][fillidx][0][0].get("Figures"), + dwg[idx][strokeidx][0][0].get("Figures"), + ) + if markeridx != -1: + assertMarkers(dwg, idx, markeridx) + + assertStrokeFill(dwg, 0, 0, 0, 1) + # The second group has stroke fill markers. + assertStrokeFill(dwg, 1, 1, 0, 2) + # The third group has fill markers stroke. + assertStrokeFill(dwg, 2, 0, 4, 1) + # The fourth group has markers fill stroke. + assertStrokeFill(dwg, 3, 3, 3, 0) + # The fifth group has stroke markers fill. + assertStrokeFill(dwg, 4, 4, 0, 1) + # The sixth group has markers stroke fill. + assertStrokeFill(dwg, 5, 4, 3, 0) + # The seventh group doesn't have markers, but stroke before fill + assertStrokeFill(dwg, 6, 1, 0, -1) + # The last group has fill markers stroke, and can be painted in one + # because there are no markers. + self.assertTagEqual(dgg[7], "GeometryDrawing") + self.assertPropertyEqual(dgg[7][1][0], "Brush", "#ff000000") + self.assertPropertyEqual(dgg[7], "Brush", "#7fff0000") + + self.assertTagEqual(canvas[7], "Path") + self.assertPropertyEqual(canvas[7], "Stroke", "#ff000000") + self.assertPropertyEqual(canvas[7], "Fill", "#7fff0000") + + def test_paint_order_rectangles(self): + """For objects that are defined by top/left/width/height, the coordinates + are different for the fill-object""" + canvas = self.run_to_canvas("../svg/guides.svg") + # Group of the last ellipse, which has stroke fill paint order and + # half-transparent fill + el_group = canvas[1][-1] + self.assertPropertyEqual(el_group[0], "Canvas.Left", 776) + self.assertPropertyEqual(el_group[0], "Canvas.Top", 292) + self.assertPropertyEqual(el_group[0], "Width", 132) + self.assertPropertyEqual(el_group[0], "Height", 132) + self.assertPropertyEqual(el_group[0], "Fill", None, default=None) + self.assertPropertyEqual(el_group[0], "Stroke", "#ffa40000") + self.assertPropertyEqual(el_group[0], "StrokeThickness", 32) + + self.assertPropertyEqual(el_group[1], "Canvas.Left", 792) + self.assertPropertyEqual(el_group[1], "Canvas.Top", 308) + self.assertPropertyEqual(el_group[1], "Width", 100) + self.assertPropertyEqual(el_group[1], "Height", 100) + self.assertPropertyEqual(el_group[1], "Fill", "#7ffcaf3e") + self.assertPropertyEqual(el_group[1], "Stroke", None, default=None) + self.assertPropertyEqual(el_group[1], "StrokeThickness", None, default=None) + + def test_swatches_color(self): + """Test the swatch-treatment setting. + With swatch-treatment=color, all brushes are defined inline.""" + + for i in ["lowlevel", "canvas"]: + dct = Svg2XamlTester.run_to_tree( + self.data_file("svg", "swatches.svg"), + ["--target=wpf", f"--mode={i}", "--swatch-treatment=color"], + ) + brushes = dct.xpath("//xaml:SolidColorBrush", namespaces=self.namespaces) + self.assertEqual(len(brushes), 0) + dwg = dct.xpath( + "//xaml:DrawingGroup" if i == "lowlevel" else "//xaml:Canvas", + namespaces=self.namespaces, + )[0][0] + if i == "lowlevel": + self.assertPropertyEqual(dwg[0], "Brush", "#ff000000") + self.assertPropertyEqual(dwg[0][1][0], "Brush", "#ffff0000") + self.assertPropertyEqual(dwg[1], "Brush", "#7f000000") + self.assertPropertyEqual(dwg[1][1][0], "Brush", "#ffff0000") + self.assertPropertyEqual(dwg[2], "Brush", "#ffff0000") + self.assertPropertyEqual(dwg[2][1][0], "Brush", "#7f000000") + self.assertPropertyEqual(dwg[3], "Brush", "#ffffffff") + if i == "canvas": + self.assertPropertyEqual(dwg[0], "Fill", "#ff000000") + self.assertPropertyEqual(dwg[0], "Stroke", "#ffff0000") + self.assertPropertyEqual(dwg[1], "Fill", "#7f000000") + self.assertPropertyEqual(dwg[1], "Stroke", "#ffff0000") + self.assertPropertyEqual(dwg[2], "Fill", "#ffff0000") + self.assertPropertyEqual(dwg[2], "Stroke", "#7f000000") + self.assertPropertyEqual(dwg[3], "Fill", "#ffffffff") + + def test_blur(self): + # Test blur, only works for Canvas. + canvas = self.run_to_canvas("blur.svg") + # The first element has a blur with stdDev given by two (identical) values + for i in range(2): + self.assertTagEqual(canvas[i], "Rectangle") + self.assertTagEqual(canvas[i][0], "Rectangle.Effect") + self.assertTagEqual(canvas[i][0][0], "BlurEffect") + self.assertPropertyEqual(canvas[0][0][0], "Radius", 15.5) + # The second element has a single value, and is transformed (scale transform) + self.assertPropertyEqual(canvas[1][0][0], "Radius", 217) + # The third element is a blurred path + self.assertTagEqual(canvas[2][1], "Path.Effect") + self.assertPropertyEqual(canvas[2][1][0], "Radius", 9.3) + # The fourth element is a blurred group + self.assertTagEqual(canvas[3], "Canvas") + self.assertTagEqual(canvas[3][2], "Canvas.Effect") + self.assertTagEqual(canvas[3][2][0], "BlurEffect") + self.assertPropertyEqual(canvas[3][2][0], "Radius", 21.7) + + +class SvgToXAMLOptionsTests(Svg2XamlTester): + """Test the CLI options of the converter.""" + + def test_swatches_resources(self): + """Test the swatch-treatment setting. + With swatch-treatment=StaticResource oder DynamicResource""" + + for i in ["lowlevel", "canvas"]: + for restype in ["StaticResource", "DynamicResource"]: + dct = Svg2XamlTester.run_to_tree( + self.data_file("svg", "swatches.svg"), + ["--target=wpf", f"--mode={i}", f"--swatch-treatment={restype}"], + ) + brushes = dct.xpath( + "//xaml:SolidColorBrush", namespaces=self.namespaces + ) + self.assertEqual(len(brushes), 3) + # The order doesn't matter + brushes = sorted(brushes, key=lambda x: x.get(self.KEY_ATTR)) + self.assertPropertyEqual(brushes[0], self.KEY_ATTR, "accent") + self.assertPropertyEqual(brushes[0], "Color", "#ffff0000") + self.assertPropertyEqual(brushes[1], self.KEY_ATTR, "background") + self.assertPropertyEqual(brushes[1], "Color", "#ffffffff") + # The third swatch has a stop-opacity set + self.assertPropertyEqual(brushes[2], self.KEY_ATTR, "foreground") + self.assertPropertyEqual(brushes[2], "Color", "#7f000000") + dwg = dct.xpath( + "//xaml:DrawingGroup" if i == "lowlevel" else "//xaml:Canvas", + namespaces=self.namespaces, + )[0][0] + if i == "lowlevel": + self.assertPropertyEqual(dwg[0], "Brush", "#ff000000") + self.assertPropertyEqual(dwg[0][1][0], "Brush", "#ffff0000") + self.assertPropertyEqual( + dwg[1], "Brush", f"{{{restype} foreground}}" + ) + self.assertPropertyEqual( + dwg[1][1][0], "Brush", f"{{{restype} accent}}" + ) + self.assertPropertyEqual(dwg[2], "Brush", f"{{{restype} accent}}") + self.assertPropertyEqual( + dwg[2][1][0], "Brush", f"{{{restype} foreground}}" + ) + self.assertPropertyEqual( + dwg[3], "Brush", f"{{{restype} background}}" + ) + if i == "canvas": + # The swatches should be children of the toplevel Viewbox ResourceDictionary + for brush in brushes: + self.assertTagEqual( + brush.getparent().getparent(), "Viewbox.Resources" + ) + self.assertPropertyEqual(dwg[0], "Fill", "#ff000000") + self.assertPropertyEqual(dwg[0], "Stroke", "#ffff0000") + self.assertPropertyEqual( + dwg[1], "Fill", f"{{{restype} foreground}}" + ) + self.assertPropertyEqual(dwg[1], "Stroke", f"{{{restype} accent}}") + self.assertPropertyEqual(dwg[2], "Fill", f"{{{restype} accent}}") + self.assertPropertyEqual( + dwg[2], "Stroke", f"{{{restype} foreground}}" + ) + self.assertPropertyEqual( + dwg[3], "Fill", f"{{{restype} background}}" + ) + + def test_swatches_canvas_layers(self): + """The swatches should be in the Grid's resources. Otherwise, all stays the same.""" + dct = Svg2XamlTester.run_to_tree( + self.data_file("svg", "swatches.svg"), + [ + "--target=wpf", + "--mode=canvas", + "--swatch-treatment=StaticResource", + "--layers-as-resources=True", + ], + ) + brushes = dct.xpath("//xaml:SolidColorBrush", namespaces=self.namespaces) + self.assertEqual(len(brushes), 3) + for brush in brushes: + self.assertTagEqual(brush.getparent().getparent(), "Grid.Resources") + + def layer_basic_checks(self, dct, idd, name, len_children, type_of_first_child): + """Check a few basic properties for lowlevel ResourceDict entries""" + self.assertTagEqual(dct[2 * idd], "DrawingGroup") + self.assertPropertyEqual(dct[2 * idd], self.KEY_ATTR, name) + self.assertTagEqual(dct[2 * idd + 1], "DrawingImage") + self.assertPropertyEqual(dct[2 * idd + 1], self.KEY_ATTR, "di_" + name) + self.assertPropertyEqual( + dct[2 * idd + 1], "Drawing", f"{{StaticResource {name}}}" + ) + self.assertEqual(len(dct[2 * idd]), len_children) + self.assertTagEqual(dct[2 * idd][0], type_of_first_child) + + def layer_canvas_checks(self, dct, idd, name, len_children, type_of_first_child): + """Check a few basic properties for canvas ResourceDict entries""" + self.assertTagEqual(dct[idd], "Viewbox") + self.assertTagEqual(dct[idd][0], "Canvas") + self.assertPropertyEqual(dct[idd], "Name", name) + self.assertEqual(len(dct[idd][0]), len_children) + self.assertEqual(len(dct[idd]), 1) + self.assertTagEqual(dct[idd][0][0], type_of_first_child) + + def test_layers_false_lowlevel(self): + """Layers as resources is switched off. Test that the resulting ResourceDict + is well-formed.""" + dct = Svg2XamlTester.run_to_tree( + self.data_file("svg", "layers.svg"), + ["--target=wpf", "--mode=lowlevel", "--layers-as-resources=false"], + ) + self.assertEqual(len(dct), 2) + # For layers as resources=false, the last non-layer group + # in the root group is not ignored. There should be 5 children + 1 clip. + self.layer_basic_checks(dct, 0, "layers", 6, "DrawingGroup") + # The second layer is set to be invisible. + self.assertPropertyEqual(dct[0][1], "ClipGeometry", "", default=None) + self.assertEqual(len(dct[1]), 0) + # If no sodipodi:docname is unset, check that a random id gets set and + # correctly referenced. + dct = Svg2XamlTester.run_to_tree( + self.data_file("svg", "rect_basic.svg"), + ["--target=wpf", "--mode=lowlevel", "--layers-as-resources=false"], + ) + key = dct[0].get(self.KEY_ATTR) + self.assertIn("DrawingGroup_", key) + self.layer_basic_checks(dct, 0, key, 5, "GeometryDrawing") + + def test_referencingtype(self): + """Test DrawingBrush as referencing element""" + dct = Svg2XamlTester.run_to_tree( + self.data_file("svg", "layers.svg"), + [ + "--target=wpf", + "--mode=lowlevel", + "--layers-as-resources=false", + "--referencing-type=DrawingBrush", + ], + ) + self.assertEqual(len(dct), 2) + self.assertTagEqual(dct[0], "DrawingGroup") + self.assertPropertyEqual(dct[0], self.KEY_ATTR, "layers") + self.assertTagEqual(dct[1], "DrawingBrush") + self.assertPropertyEqual(dct[1], self.KEY_ATTR, "db_layers") + self.assertPropertyEqual(dct[1], "Drawing", "{StaticResource layers}") + self.assertPropertyEqual(dct[1], "Stretch", "Uniform") + + def test_layers_false_canvas(self): + """Same test for canvas. In this case, the root element is a ViewBox, + which does not need a name.""" + vbx = Svg2XamlTester.run_to_tree( + self.data_file("svg", "layers.svg"), + ["--target=wpf", "--mode=canvas", "--layers-as-resources=false"], + ) + self.assertTagEqual(vbx, "Viewbox") + self.assertTagEqual(vbx[0], "Canvas") + self.assertPropertyEqual(vbx, "Name", "layers") + self.assertEqual(len(vbx[0]), 6) + self.assertEqual(len(vbx), 1) + self.assertTagEqual(vbx[0][0], "Canvas") + # The second subgroup is invisible. + self.assertPropertyEqual(vbx[0][1], "Visibility", "Hidden") + + def test_layers_true_lowlevel(self): + """Layers as resources is enabled. There are layers that are hidden, + layers with duplicate names, sublayers and "trick layers" starting with di_. + + Test that the resulting ResourceDictionary is well-formed.""" + dct = Svg2XamlTester.run_to_tree( + self.data_file("svg", "layers.svg"), + ["--target=wpf", "--mode=lowlevel", "--layers-as-resources=true"], + ) + # The first layer has display:none. For layers as resources, this is ignored. + # There are also invalid characters in the key, that also starts with a number + # (invalid). These get fixed. + self.layer_basic_checks( + dct, 0, "_0__Open_with______1_special_chars", 2, "GeometryDrawing" + ) + # The second layer has a sublayer as first child. Only top level layers are + # stored as resources. The second child is a normal rect + self.layer_basic_checks(dct, 1, "Save", 3, "DrawingGroup") + # The third layer has the same label as the second layer. A random number is + # appended. There are two children. + self.layer_basic_checks(dct, 2, "Save_595", 3, "GeometryDrawing") + # The fourth layer's is "di_Save", which already exists from the second one. + self.layer_basic_checks(dct, 3, "di_Save_874", 1, "DrawingGroup.ClipGeometry") + # In total, there are four layers. The last group is ignored because it's not + # a layer. + self.assertEqual(len(dct), 8) + # The ClipGeometry should be identical for all children. + for i in range(4): + self.assertTagEqual(dct[2 * i][-1], "DrawingGroup.ClipGeometry") + self.assertTagEqual(dct[2 * i][-1][0], "RectangleGeometry") + self.assertPropertyEqual(dct[2 * i][-1][0], "Rect", [0, 0, 480, 360]) + + def test_layers_true_canvas(self): + """Same test as above for canvas. In this case, the root element is a grid""" + grid = Svg2XamlTester.run_to_tree( + self.data_file("svg", "layers.svg"), + ["--target=wpf", "--mode=canvas", "--layers-as-resources=true"], + ) + self.assertTagEqual(grid, "Grid") + # The first layer has display:none. For layers as resources, this is ignored. + # There are also invalid characters in the key, that also starts with a number + # (invalid). These get fixed. + self.layer_canvas_checks( + grid, 0, "_0__Open_with______1_special_chars", 2, "Rectangle" + ) + # The second layer has a sublayer as first child. Only top level layers are + # stored as resources. The second child is a normal rect + self.layer_canvas_checks(grid, 1, "Save", 3, "Canvas") + # The third layer has the same label as the second layer. A random number is + # appended. There are two children. + self.layer_canvas_checks(grid, 2, "Save_595", 3, "Ellipse") + # The fourth layer's is "di_Save". This leads to collisions only for lowlevel. + self.layer_canvas_checks(grid, 3, "di_Save", 1, "Canvas.Clip") + # In total, there are four layers. The last group is ignored because it's not + # a layer. + try: + self.assertEqual(len(grid), 4) + except AssertionError: + # There might be an empty resource dictionary. + self.assertEqual(len(grid), 5) + self.assertTagEqual(grid[4], "Grid.Resources") + try: + self.assertEqual(len(grid[4]), 0) + except AssertionError: + self.assertEqual(len(grid[4]), 1) + self.assertTagEqual(grid[4][0], "ResourceDictionary") + self.assertEqual(len(grid[4][0]), 0) + # The Clip should be identical for all children. + for i in range(4): + self.assertPropertyEqual(grid[i][0], "Width", 480) + self.assertPropertyEqual(grid[i][0], "Height", 360) + self.assertTagEqual(grid[i][0][-1], "Canvas.Clip") + self.assertTagEqual(grid[i][0][-1][0], "RectangleGeometry") + self.assertPropertyEqual(grid[i][0][-1][0], "Rect", [0, 0, 480, 360]) diff --git a/share/extensions/other/extension-xaml/tests/test_svg2xaml_avalonia.py b/share/extensions/other/extension-xaml/tests/test_svg2xaml_avalonia.py new file mode 100644 index 0000000..b0391c5 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/test_svg2xaml_avalonia.py @@ -0,0 +1,160 @@ +"""Tests for Avalonia XAML export""" + +from .context import Svg2XamlTester + + +class XamlAvaloniaTests(Svg2XamlTester): + """We only test the things that are different from WPF XAML.""" + + xamlns = "https://github.com/avaloniaui" + namespaces = { + "x": "http://schemas.microsoft.com/winfx/2006/xaml", + "d": "http://schemas.microsoft.com/expression/blend/2008", + "xaml": xamlns, + } + + def run_to_dg(self, svg, args=None): + return super().run_to_dg( + svg, args=args or ["--target=avaloniaui", "--mode=lowlevel"] + ) + + def run_to_canvas(self, svg, args=None): + return super().run_to_canvas( + svg, args=args or ["--target=avaloniaui", "--mode=canvas"] + ) + + def test_rect_lowlevel(self): + """Difference to WPF: there is no Radius for RectangleGeometry, and we have to + manually clamp the radius""" + dwg = self.run_to_dg("rect_basic.svg") + self.assertEqual(len(dwg), 5) # 4 rects + BoundingBox + for i in range(2): + self.assertTagEqual(dwg[i], "GeometryDrawing") + self.assertTagEqual(dwg[i][0], "GeometryDrawing.Geometry") + self.assertTagEqual(dwg[i][0][0], "RectangleGeometry") + for i in [2, 3]: + self.assertTagEqual(dwg[i], "GeometryDrawing") + self.assertTagEqual(dwg[i][0], "GeometryDrawing.Geometry") + self.assertTagEqual(dwg[i][0][0], "PathGeometry") + # Check that radius clamping works properly + self.assertPropertyEqual( + dwg[2][0][0], + "Figures", + "M 375 46 L 375 46 A 25 30 0 0 1 400 76 L 400 96 A 25 30 0 0 1 375 126 L 375 126 A 25 30 0 0 1 350 96 L 350 76 A 25 30 0 0 1 375 46 z", + ) + self.assertPropertyEqual( + dwg[3][0][0], + "Figures", + "M 375 196 L 375 196 A 25 40 0 0 1 400 236 L 400 236 A 25 40 0 0 1 375 276 L 375 276 A 25 40 0 0 1 350 236 L 350 236 A 25 40 0 0 1 375 196 z", + ) + + def test_rect_canvas(self): + """Also test the IsVisible property""" + dwg = self.run_to_canvas("rect_defaults.svg") + self.assertEqual(len(dwg), 2) # they are wrapped in a subcanvas + grp = dwg[0] + self.assertEqual(len(dwg[0]), 6) + self.assertPropertyEqual(grp[0], "Canvas.Left", -0.5, default=0.0) + # default differs from WPF + self.assertPropertyEqual(grp[0], "StrokeJoin", "Miter", default="Bevel") + self.assertPropertyEqual(grp[1], "Canvas.Top", -0.5, default=0.0) + # two rectangles have no visibility (w/h = 0) + self.assertPropertyEqual(grp[2], "IsVisible", "False") + self.assertPropertyEqual(grp[3], "IsVisible", "False") + # check that the radius is symmetric if one attribute is missing + # However, this is a path in Avalonia (note "A 20 20") + self.assertPropertyEqual( + grp[4][0][0], + "Figures", + "M 50 196 L 60 196 A 20 20 0 0 1 80 216 L 80 256 A 20 20 0 0 1 60 276 L 50 276 A 20 20 0 0 1 30 256 L 30 216 A 20 20 0 0 1 50 196 z", + ) + self.assertPropertyEqual(grp[4][0][0], "FillRule", "NonZero") # Nonzero in WPF + self.assertPropertyEqual( + grp[5][0][0], + "Figures", + "M 150 196 L 160 196 A 20 20 0 0 1 180 216 L 180 256 A 20 20 0 0 1 160 276 L 150 276 A 20 20 0 0 1 130 256 L 130 216 A 20 20 0 0 1 150 196 z", + ) + self.assertPropertyEqual(grp[5][0][0], "FillRule", "NonZero") # Nonzero in WPF + # fill and stroke were inherited from the group + self.assertPropertyEqual(grp[0], "Fill", "#ff008000") + self.assertPropertyEqual(grp[0], "Stroke", "#ff000000") + + def test_radialgradient(self): + """Radial gradients with ObjectBoundingBox have too much logical differences + to SVG (and maybe the API will change in the future), and Inkscape isn't + even using this. The output isn't ideal for now, so we don't test it.""" + dgg = self.run_to_dg("radialgradient_focal.svg") + canvas = self.run_to_canvas("radialgradient_focal.svg") + for dwg in [dgg, canvas]: + # Next element: gradient is defined outside defs, has userSpaceOnUse, + # and is also transformed. This does not affect the gradient though. + # For canvas, the nesting depth is one lower than for lowlevel (which + # does not support transforming RectangleGeometries) + if dwg == dgg: + br = dwg[0][2][0][0][0] + else: + br = dwg[0][2][0][0] + self.assertTagEqual(br, "RadialGradientBrush") + # Radius is relative to untransformed bounding box, but it's possible that + # this will change in the future, see: + # https://github.com/AvaloniaUI/Avalonia/blob/2737c5038755c251edcc8456650368a8b9043dae/src/Avalonia.Base/Media/RadialGradientBrush.cs#L62 + self.assertPropertyEqual(br, "Radius", 0.5) + self.assertPropertyEqual(br, "Center", [25, 215]) + self.assertPropertyEqual(br, "GradientOrigin", [25, 215]) + if dwg == dgg: + self.assertTagEqual(dwg[0][2][1], "DrawingGroup.Transform") + self.assertTagEqual(dwg[0][2][1][0], "MatrixTransform") + self.assertPropertyEqual( + dwg[0][2][1][0], + "Matrix", + (0, -1, 1, 0, 10, 260), + ) + if dwg == canvas: + # Comparison value is different because of Canvas.Left / strokewidth + self.assertTagEqual(dwg[0][2][1], "Rectangle.RenderTransform") + self.assertTagEqual(dwg[0][2][1][0], "MatrixTransform") + self.assertPropertyEqual(dwg[0][2], "RenderTransformOrigin", [0, 0]) + self.assertPropertyEqual( + dwg[0][2][1][0], "Matrix", (0, -1, 1, 0, 10, 260.5) + ) + + def test_patterns(self): + dwg = self.run_to_dg("patterns.svg") + # The first pattern is absolute, but has a nonzero x / y value. + # The first two elements reference the same pattern, but for the second one, + # it's applied to the stroke. + # The second pattern (third object) references the first one, but + # applies an additional transform. This is representative of patterns created + # in Inkscape. Apart from the transform, all should be identical. + self.assertTagEqual(dwg[0][0], "GeometryDrawing.Brush") + self.assertTagEqual(dwg[2][0], "GeometryDrawing.Brush") + self.assertTagEqual(dwg[1][1], "GeometryDrawing.Pen") + for i in (0, 1, 2): + dbr = dwg[i][1 if i == 1 else 0][0] + if i == 1: + self.assertTagEqual(dbr, "Pen") + self.assertPropertyEqual(dbr, "Thickness", 20) + self.assertTagEqual(dbr[0], "Pen.Brush") + dbr = dbr[0][0] + self.assertTagEqual(dbr, "VisualBrush") + self.assertPropertyEqual(dbr, "TileMode", "Tile") + self.assertPropertyEqual(dbr, "SourceRect", [10, 10, 20, 20], separator=" ") + + self.assertPropertyEqual( + dbr, "DestinationRect", [-10, -10, 20, 20], separator=" " + ) + self.assertPropertyEqual(dbr, "ViewboxUnits", None, default=None) + self.assertPropertyEqual(dbr, "ViewportUnits", None, default=None) + self.assertTagEqual(dbr[0], "VisualBrush.Visual") + self.assertTagEqual(dbr[0][0], "Canvas") + self.assertGreaterEqual(float(dbr[0][0].get("Width")), 30) + self.assertGreaterEqual(float(dbr[0][0].get("Height")), 30) + self.assertEqual(len(dbr[0][0]), 3) + self.assertTagEqual(dbr[0][0][1], "Rectangle") + self.assertPropertyEqual(dbr[0][0][2][0], "Matrix", [1, 0, 0, 1, 10, 10]) + self.assertPropertyEqual(dbr[0][0][0], "Canvas.Left", 5) + self.assertPropertyEqual(dbr[0][0][0], "Canvas.Top", 5) + self.assertPropertyEqual(dbr[0][0][0], "Width", 10) + self.assertPropertyEqual(dbr[0][0][0], "Height", 10) + + self.assertPropertyEqual(dbr, "Transform", None) diff --git a/share/extensions/other/extension-xaml/tests/test_svg2xaml_basic.py b/share/extensions/other/extension-xaml/tests/test_svg2xaml_basic.py new file mode 100644 index 0000000..c31c164 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/test_svg2xaml_basic.py @@ -0,0 +1,554 @@ +from .context import Svg2XamlTester + + +class WPFBasicPrimitiveTests(Svg2XamlTester): + """Basic tests for target=wpf: + - shapes (lowlevel and canvas) and paths + - gradients + - stroke style + """ + + def test_rect_lowlevel(self): + """Based on shapes-rect-01-t.svg""" + dwg = self.run_to_dg("rect_basic.svg") + self.assertEqual(len(dwg), 5) # 4 rects + BoundingBox + for i in range(4): + self.assertTagEqual(dwg[i], "GeometryDrawing") + self.assertTagEqual(dwg[i][0], "GeometryDrawing.Geometry") + self.assertTagEqual(dwg[i][0][0], "RectangleGeometry") + + # Coordinates + self.assertPropertyEqual(dwg[0][0][0], "Rect", [30, 46, 50, 80]) + # Stroke + self.assertTagEqual(dwg[0][1], "GeometryDrawing.Pen") + self.assertTagEqual(dwg[0][1][0], "Pen") + self.assertPropertyEqual(dwg[0][1][0], "Brush", "#ff000000") + self.assertPropertyEqual(dwg[0][1][0], "Thickness", 1) + self.assertPropertyEqual(dwg[0][1][0], "DashCap", "Flat") + # Fill + self.assertPropertyEqual(dwg[1], "Brush", "#ffff00ff") + # Check that both Fill and stroke are set. + self.assertTagEqual(dwg[1][1][0], "Pen") + # Rounding + # If only rx is given, we need to set both + self.assertPropertyEqual(dwg[2][0][0], "RadiusX", 30) + self.assertPropertyEqual(dwg[2][0][0], "RadiusY", 30) + # both are given + self.assertPropertyEqual(dwg[3][0][0], "RadiusX", 30) + self.assertPropertyEqual(dwg[3][0][0], "RadiusY", 50) + + def test_rect_defaults(self): + """Based on shapes-rect-02-t.svg""" + dwg = self.run_to_dg("rect_defaults.svg") + self.assertEqual(len(dwg), 2) # they are wrapped in a group + grp = dwg[0] + self.assertEqual(len(dwg[0]), 4) # two rectangles are ignored (w/h = 0) + self.assertPropertyEqual(grp[0][0][0], "Rect", [0, 46, 50, 80]) + self.assertPropertyEqual(grp[1][0][0], "Rect", [130, 0, 50, 80]) + # check that the radius is symmetric if one attribute is missing + self.assertPropertyEqual(grp[2][0][0], "RadiusX", 20) + self.assertPropertyEqual(grp[2][0][0], "RadiusY", 20) + self.assertPropertyEqual(grp[3][0][0], "RadiusX", 20) + self.assertPropertyEqual(grp[3][0][0], "RadiusY", 20) + # fill and stroke were inherited from the group + self.assertPropertyEqual(grp[0], "Brush", "#ff008000") + self.assertPropertyEqual(grp[0][1][0], "Brush", "#ff000000") + + def test_rect_canvas(self): + """Based on shapes-rect-01-t.svg""" + dwg = self.run_to_canvas("rect_basic.svg") + self.assertEqual(len(dwg), 5) # 4 rects + Canvas.Clip + for i in range(4): + self.assertTagEqual(dwg[i], "Rectangle") + + # Coordinates + self.assertPropertyEqual(dwg[0], "Canvas.Left", 29.5) # 30 - 1/2 of the stroke + self.assertPropertyEqual(dwg[0], "Canvas.Top", 45.5) + self.assertPropertyEqual(dwg[0], "Width", 51) + self.assertPropertyEqual(dwg[0], "Height", 81) + # Stroke + self.assertPropertyEqual(dwg[0], "Stroke", "#ff000000") + self.assertPropertyEqual(dwg[0], "StrokeThickness", 1) + self.assertPropertyEqual(dwg[0], "StrokeDashCap", "Flat") + # Fill + self.assertPropertyEqual(dwg[1], "Fill", "#ffff00ff") + # Check that both Fill and stroke are set. + self.assertPropertyEqual(dwg[1], "Stroke", "#ff000000") + # Rounding + # If only rx is given, we need to set both + self.assertPropertyEqual(dwg[2], "RadiusX", 30) + self.assertPropertyEqual(dwg[2], "RadiusY", 30) + # both are given + self.assertPropertyEqual(dwg[3], "RadiusX", 30) + self.assertPropertyEqual(dwg[3], "RadiusY", 50) + + def test_rect_defaults_canvas(self): + """Based on shapes-rect-02-t.svg""" + dwg = self.run_to_canvas("rect_defaults.svg") + self.assertEqual(len(dwg), 2) # they are wrapped in a subcanvas + grp = dwg[0] + self.assertEqual(len(dwg[0]), 6) + self.assertPropertyEqual(grp[0], "Canvas.Left", -0.5, default=0.0) + self.assertPropertyEqual(grp[1], "Canvas.Top", -0.5, default=0.0) + # two rectangles have no visibility (w/h = 0) + self.assertPropertyEqual(grp[2], "Visibility", "Hidden") + self.assertPropertyEqual(grp[3], "Visibility", "Hidden") + # check that the radius is symmetric if one attribute is missing + self.assertPropertyEqual(grp[4], "RadiusX", 20) + self.assertPropertyEqual(grp[4], "RadiusY", 20) + self.assertPropertyEqual(grp[5], "RadiusX", 20) + self.assertPropertyEqual(grp[5], "RadiusY", 20) + # fill and stroke were inherited from the group + self.assertPropertyEqual(grp[0], "Fill", "#ff008000") + self.assertPropertyEqual(grp[0], "Stroke", "#ff000000") + + def test_circle_defaults(self): + """Based on shapes-circle-02-t.svg and shapes-ellipse-02-t.svg""" + dwg = self.run_to_dg("circle_defaults.svg") + self.assertEqual(len(dwg), 2) # they are wrapped in a group + grp = dwg[0] + # one circle and two ellipses are ignored (r = 0) + self.assertEqual(len(dwg[0]), 6) + self.assertTagEqual(grp[0][0][0], "EllipseGeometry") + # missing centers + self.assertPropertyEqual(grp[0][0][0], "RadiusX", 50) + self.assertPropertyEqual(grp[0][0][0], "RadiusY", 50) + self.assertPropertyEqual(grp[0][0][0], "Center", [0, 0]) + # missing radius: not rendered + self.assertPropertyEqual(grp[3][0][0], "RadiusX", 50) + self.assertPropertyEqual(grp[3][0][0], "RadiusY", 50) + self.assertPropertyEqual(grp[3][0][0], "Center", [150, 100]) + # fill and stroke were inherited from the group + self.assertPropertyEqual(grp[0], "Brush", "#ff008000") + self.assertPropertyEqual(grp[0][1][0], "Brush", "#ff000000") + # Ellipses + self.assertTagEqual(grp[4][0][0], "EllipseGeometry") + self.assertPropertyEqual(grp[4][0][0], "RadiusX", 100) + self.assertPropertyEqual(grp[4][0][0], "RadiusY", 50) + self.assertPropertyEqual(grp[4][0][0], "Center", [0, 0]) + self.assertPropertyEqual(grp[5][0][0], "RadiusX", 100) + self.assertPropertyEqual(grp[5][0][0], "RadiusY", 50) + self.assertPropertyEqual(grp[5][0][0], "Center", [250, 250]) + + def test_circle_defaults_canvas(self): + """Based on shapes-circle-02-t.svg and shapes-ellipse-02-t.svg""" + dwg = self.run_to_canvas("circle_defaults.svg") + self.assertEqual(len(dwg), 2) # they are wrapped in a group + grp = dwg[0] + self.assertEqual(len(dwg[0]), 9) + self.assertTagEqual(grp[0], "Ellipse") + # missing centers + self.assertPropertyEqual(grp[0], "Width", 101) + self.assertPropertyEqual(grp[0], "Height", 101) + self.assertPropertyEqual(grp[0], "Canvas.Left", -50.5) + self.assertPropertyEqual(grp[0], "Canvas.Top", -50.5) + # missing radius: not rendered + self.assertPropertyEqual(grp[3], "Visibility", "Hidden") + self.assertPropertyEqual(grp[4], "Width", 101) + self.assertPropertyEqual(grp[4], "Height", 101) + self.assertPropertyEqual(grp[4], "Canvas.Left", 99.5) + self.assertPropertyEqual(grp[4], "Canvas.Top", 49.5) + # fill and stroke were inherited from the group + self.assertPropertyEqual(grp[0], "Fill", "#ff008000") + self.assertPropertyEqual(grp[0], "Stroke", "#ff000000") + + self.assertTagEqual(grp[5], "Ellipse") + self.assertPropertyEqual(grp[5], "Width", 201) + self.assertPropertyEqual(grp[5], "Height", 101) + self.assertPropertyEqual(grp[5], "Canvas.Left", -100.5) + self.assertPropertyEqual(grp[5], "Canvas.Top", -50.5) + self.assertPropertyEqual(grp[8], "Width", 201) + self.assertPropertyEqual(grp[8], "Height", 101) + self.assertPropertyEqual(grp[8], "Canvas.Left", 149.5) + self.assertPropertyEqual(grp[8], "Canvas.Top", 199.5) + + def test_line_polyx(self): + """Test translations of line, polyline and polygon""" + dwg = self.run_to_dg("polygon_polyline_line.svg") + self.assertEqual(len(dwg), 5) + + # The first element is a simple line + self.assertTagEqual(dwg[0][0][0], "LineGeometry") + self.assertPropertyEqual(dwg[0][0][0], "StartPoint", [100, 100]) + self.assertPropertyEqual(dwg[0][0][0], "EndPoint", [200, 150]) + + # The second element is a polygon, which is approximated by a closed + # PathGeometry, since WPF doesn't have a polygon. + self.assertTagEqual(dwg[1][0][0], "PathGeometry") + self.assertPropertyEqual( + dwg[1][0][0], + "Figures", + "M 270 225 L 300 245 L 320 225 L 340 245 L 280 280 L 390 280 L 420 240 L 280 185 Z", + ) + + # Same for polylines, except the path is open. + self.assertTagEqual(dwg[2][0][0], "PathGeometry") + self.assertPropertyEqual( + dwg[2][0][0], + "Figures", + "M 270 75 L 300 95 L 320 75 L 340 95 L 280 130 L 390 130 L 420 90 L 280 35", + ) + + # The last is again a polygon, except that an extra (invalid) coordinate is + # specified, this would be a syntax error in XAML and is thus ignored. + self.assertTagEqual(dwg[3][0][0], "PathGeometry") + self.assertPropertyEqual( + dwg[3][0][0], "Figures", "M 80 200 L 80 300 L 150 250 L 80 200" + ) + + def test_line_polyx_canvas(self): + """Test translations of line, polyline and polygon""" + dwg = self.run_to_canvas("polygon_polyline_line.svg") + self.assertEqual(len(dwg), 5) + + # The first element is a simple line + self.assertTagEqual(dwg[0], "Line") + self.assertPropertyEqual(dwg[0], "X1", 100.0) + self.assertPropertyEqual(dwg[0], "X2", 200.0) + self.assertPropertyEqual(dwg[0], "Y1", 100.0) + self.assertPropertyEqual(dwg[0], "Y2", 150.0) + + # The second element is a polygon, which is approximated by a closed + # PathGeometry, since WPF doesn't have a polygon. + self.assertTagEqual(dwg[1], "Path") + self.assertTagEqual(dwg[1][0], "Path.Data") + self.assertTagEqual(dwg[1][0][0], "PathGeometry") + self.assertPropertyEqual( + dwg[1][0][0], + "Figures", + "M 270 225 L 300 245 L 320 225 L 340 245 L 280 280 L 390 280 L 420 240 L 280 185 Z", + ) + + # Same for polylines, except the path is open. + self.assertTagEqual(dwg[2], "Path") + self.assertTagEqual(dwg[2][0], "Path.Data") + self.assertTagEqual(dwg[2][0][0], "PathGeometry") + self.assertPropertyEqual( + dwg[2][0][0], + "Figures", + "M 270 75 L 300 95 L 320 75 L 340 95 L 280 130 L 390 130 L 420 90 L 280 35", + ) + + # The last is again a polygon, except that an extra (invalid) coordinate is + # specified, this would be a syntax error in XAML and is thus ignored. + self.assertTagEqual(dwg[3][0][0], "PathGeometry") + self.assertPropertyEqual( + dwg[3][0][0], "Figures", "M 80 200 L 80 300 L 150 250 L 80 200" + ) + + def test_path_syntax(self): + """Path syntax in XAML is identical, but it doesn't deal with invalid paths + very well.""" + dgg = self.run_to_dg("paths.svg") + canvas = self.run_to_canvas("paths.svg") + + for dwg in [dgg, canvas]: + # Path geometries have the same nesting depth in Canvas and DrawingGroup, + # so we can reuse the unit test + self.assertEqual(len(dwg), 6) + self.assertTagEqual(dwg[0][0][0], "PathGeometry") + # First path tests cubic bezier commands, and is open + self.assertPropertyEqual( + dwg[0][0][0], + "Figures", + "m 396 258 c -65 0 -100 -50 -100 -50 c 0 0 -35 -55 -100 -55 m 0 105 c 65 0 100 -50 100 -50 c 0 0 35 -55 100 -55", + ) + # The default for the fillrule is different, so fillrule needs to be specified + self.assertPropertyEqual( + dwg[0][0][0], + "FillRule", + "Nonzero", + ) + # Second path tests quadratic bezier commands, and is closed + self.assertPropertyEqual( + dwg[1][0][0], + "Figures", + "m 285 20 q 15 100 115 10 m 50 50 Q 375 -20 287 20 Z", + ) + # Third path tests absolute and relative path commands + self.assertPropertyEqual( + dwg[2][0][0], + "Figures", + "M 30 100 a 40 40 0 0 1 65 50 Z m 30 30 A 20 20 0 0 0 125 230 Z m 40 24 a 20 20 0 0 1 65 50 z", + ) + # Fourth path tests implicit lineto + self.assertPropertyEqual( + dwg[3][0][0], + "Figures", + "m 62 56 l 51.9615 90 l -103.923 0 l 51.9615 -90 z m 0 15 l 38.9711 67.5 l -77.9123 0 l 38.9711 -67.5 z", + ) + # Fifth path tests command repetition + self.assertPropertyEqual( + dwg[4][0][0], + "Figures", + "M 220 20 L 240 20 L 260 20", + ) + + def test_lingrad_simple(self): + """Simple linear gradients, based on pservers-grad-01-t.svg""" + dgg = self.run_to_dg("lineargradient_simple.svg") + canvas = self.run_to_canvas("lineargradient_simple.svg") + # Both linear gradients should yield the same code. + # For WPF, gradient normal and userspace-normal can differ; for XAML they + # cannot. To achieve visually identical rendering without computing the + # bounding box, we wrap the WPF gradient (if userSpaceOnUse is enabled, which + # is default for SVG, but not really used in Inkscape) in a DrawingBrush, + # which is strechted to fill the viewbox. + + for dwg in [dgg, canvas]: + for i in range(2): + gdw = dwg[i] + if dwg == dgg: + self.assertTagEqual(gdw[0], "GeometryDrawing.Brush") + else: + self.assertTagEqual(gdw[0], "Rectangle.Fill") + dbr = gdw[0][0] + self.assertTagEqual(dbr, "DrawingBrush") + self.assertPropertyEqual(dbr, "Viewbox", [0, 0, 1, 1]) + self.assertPropertyEqual(dbr, "Stretch", "Fill") + self.assertEqual(len(dbr), 1) + self.assertTagEqual(dbr[0], "DrawingBrush.Drawing") + inner_gdr = dbr[0][0] + self.assertTagEqual(inner_gdr, "GeometryDrawing") + self.assertEqual(len(inner_gdr), 2) + self.assertTagEqual(inner_gdr[0], "GeometryDrawing.Brush") + lgb = inner_gdr[0][0] + self.assertTagEqual(lgb, "LinearGradientBrush") + self.assertPropertyEqual( + lgb, + "MappingMode", + "RelativeToBoundingBox", + default="RelativeToBoundingBox", + ) + self.assertPropertyEqual(lgb, "StartPoint", [0, 0]) + self.assertPropertyEqual(lgb, "EndPoint", [1, 1]) + self.assertTagEqual(lgb[0], "GradientStop") + self.assertPropertyEqual(lgb[0], "Color", "#ff0000ff") + self.assertPropertyEqual(lgb[0], "Offset", 0) + self.assertTagEqual(lgb[1], "GradientStop") + self.assertPropertyEqual(lgb[1], "Color", "#ff00ff00") + self.assertPropertyEqual(lgb[1], "Offset", 1) + + self.assertTagEqual(inner_gdr[1], "GeometryDrawing.Geometry") + self.assertTagEqual(inner_gdr[1][0], "RectangleGeometry") + self.assertPropertyEqual(inner_gdr[1][0], "Rect", [0, 0, 1, 1]) + # The third gradient fills the stroke, and uses absolute mapping. + # For a canvas object, this requires an additional transform. + gdw = dwg[2] + if dwg == dgg: + self.assertTagEqual(gdw[1][0][0], "Pen.Brush") + self.assertPropertyEqual(gdw[1][0], "Thickness", 20) + lgb = gdw[1][0][0][0] + else: + self.assertTagEqual(gdw[0], "Rectangle.Stroke") + self.assertPropertyEqual(gdw, "StrokeThickness", 20) + lgb = gdw[0][0] + self.assertTagEqual(lgb, "LinearGradientBrush") + self.assertPropertyEqual( + lgb, "MappingMode", "Absolute", default="RelativeToBoundingBox" + ) + # spreadMethod attribute + self.assertPropertyEqual(lgb, "SpreadMethod", "Reflect") + self.assertPropertyEqual(lgb, "StartPoint", [10, 10]) + self.assertPropertyEqual(lgb, "EndPoint", [200, 10]) + if dwg == canvas: + self.assertPropertyEqual(lgb, "Transform", [1, 0, 0, 1, -15, -240]) + self.assertTagEqual(lgb[0], "GradientStop") + self.assertPropertyEqual(lgb[0], "Color", "#ff0000ff") + # test clamping of stop values (svg value: -1.0 would be invalid in XAML) + self.assertPropertyEqual(lgb[0], "Offset", 0) + self.assertTagEqual(lgb[1], "GradientStop") + self.assertPropertyEqual(lgb[1], "Color", "#ff00ff00") + self.assertPropertyEqual(lgb[1], "Offset", 0.2) + + def test_radialgradient(self): + """Test unit types on radial gradient""" + dgg = self.run_to_dg("radialgradient_focal.svg") + canvas = self.run_to_canvas("radialgradient_focal.svg") + for dwg in [dgg, canvas]: + br = dwg[0][0][0][0] + # Test default attributes + if dwg == dgg: + self.assertTagEqual(dwg[0][0][0], "GeometryDrawing.Brush") + else: + self.assertTagEqual(dwg[0][0][0], "Rectangle.Fill") + self.assertTagEqual(br, "RadialGradientBrush") + self.assertPropertyEqual(br, "RadiusX", 0.5) + self.assertPropertyEqual(br, "RadiusY", 0.5) + self.assertPropertyEqual(br, "Center", [0.5, 0.5]) + self.assertPropertyEqual(br, "GradientOrigin", [0.5, 0.5]) + self.assertEqual(len(br), 2) + self.assertTagEqual(br[0], "GradientStop") + self.assertTagEqual(br[1], "GradientStop") + self.assertPropertyEqual(br[0], "Color", "#ff000099") + self.assertPropertyEqual(br[1], "Color", "#ff00ff00") + self.assertPropertyEqual(br[0], "Offset", 0) + self.assertPropertyEqual(br[1], "Offset", 1) + # Next element has all the properties set, but the stops are identical. + br = dwg[0][1][0][0] + self.assertTagEqual(br, "RadialGradientBrush") + self.assertPropertyEqual(br, "RadiusX", 0.5) + self.assertPropertyEqual(br, "RadiusY", 0.5) + self.assertPropertyEqual(br, "Center", [0.2, 0.2]) + self.assertPropertyEqual(br, "GradientOrigin", [0.2, 0.2]) + # Next element: gradient is defined outside defs, has userSpaceOnUse, + # and is also transformed. This does not affect the gradient though. + # For canvas, the nesting depth is one lower than for lowlevel (which + # does not support transforming RectangleGeometries) + if dwg == dgg: + br = dwg[0][2][0][0][0] + else: + br = dwg[0][2][0][0] + self.assertTagEqual(br, "RadialGradientBrush") + self.assertPropertyEqual(br, "RadiusX", 25) + self.assertPropertyEqual(br, "RadiusY", 25) + self.assertPropertyEqual(br, "Center", [25, 215]) + self.assertPropertyEqual(br, "GradientOrigin", [25, 215]) + self.assertPropertyEqual(br, "MappingMode", "Absolute") + if dwg == dgg: + self.assertPropertyEqual( + dwg[0][2], + "Transform", + (0, -1, 1, 0, 10, 260), + ) + if dwg == canvas: + # Comparison value is different because of Canvas.Left / strokewidth + self.assertPropertyEqual( + dwg[0][2], + "RenderTransform", + (0, -1, 1, 0, 10, 260.5), + ) + + def test_radialgradient_focal(self): + """Test clamping of focal points on radial gradients""" + # Next element is a clone of a group. One element has its fill unset and is + # thus inherited from the clone's fill. The gradient also uses the stop-opacity + # attribute, and the stops and coordinates are specified as percentages. + # We're also checking that the clone has the coorect transform set. + dgg = self.run_to_dg("radialgradient_focal.svg") + canvas = self.run_to_canvas("radialgradient_focal.svg") + for dwg in [dgg, canvas]: + group = dwg[0][3] + if dwg == dgg: + self.assertPropertyEqual( + group, + "Transform", + (1, 0, 0, 1, 17.5, 240), + ) + else: + self.assertPropertyEqual( + group, + "RenderTransform", + (1, 0, 0, 1, 17.5, 240), + ) + self.assertEqual(len(group), 6) # 6 children, the last has the gradient set + br = group[5][0][0] + self.assertPropertyEqual(br, "RadiusX", 0.75) + self.assertPropertyEqual(br, "RadiusY", 0.75) + self.assertPropertyEqual(br, "Center", [0.1, 0.1]) + self.assertPropertyEqual(br, "GradientOrigin", [0, 0.75]) + self.assertEqual(len(br), 3) + self.assertTagEqual(br[0], "GradientStop") + self.assertTagEqual(br[1], "GradientStop") + self.assertTagEqual(br[2], "GradientStop") + self.assertPropertyEqual(br[0], "Color", "#00000000") + self.assertPropertyEqual(br[1], "Color", "#ff00008b") + self.assertPropertyEqual(br[2], "Color", "#00000000") + self.assertPropertyEqual(br[0], "Offset", 0) + self.assertPropertyEqual(br[1], "Offset", 0.5) + self.assertPropertyEqual(br[2], "Offset", 1) + # The next element has a focal point outside the "gradient ellipse". + # According to the specification, it is clamped to the radius. + # We just test that the origin lies on the ellipse. + br = dwg[0][4][5][0][0] + origin = tuple(map(float, br.get("GradientOrigin").split(","))) + dist = (origin[0] - 0.1) ** 2 + (origin[1] - 0.1) ** 2 + self.assertAlmostEqual(dist, 0.75**2) + # Also check that the direction of the vector from center to origin + # remains identical. + self.assertAlmostEqual((origin[0] - 0.1) / (origin[1] - 0.1), 0.7333 / 0.65) + + def test_radialgradient_clamping(self): + dgg = self.run_to_dg("gradient_with_mixed_offsets.svg") + self.assertTagEqual(dgg[0][1][0], "GeometryDrawing.Brush") + br = dgg[0][1][0][0] + self.assertTagEqual(br, "RadialGradientBrush") + self.assertPropertyEqual(br[0], "Color", "#ffff0000") + self.assertPropertyEqual(br[1], "Color", "#ff0000ff") + self.assertPropertyEqual(br[2], "Color", "#ffff0000") + self.assertPropertyEqual(br[0], "Offset", 0) + self.assertPropertyEqual(br[1], "Offset", 1) + self.assertPropertyEqual(br[2], "Offset", 1) + + def test_strokestyle(self): + """Test stroke-linecap and stroke-dasharray""" + dgg = self.run_to_dg("strokestyle.svg") + # First test has a round dashcap. All three dashcaps need to be set to achieve + # equal rendering + self.assertTagEqual(dgg[0][1], "GeometryDrawing.Pen") + self.assertTagEqual(dgg[0][1][0], "Pen") + self.assertPropertyEqual(dgg[0][1][0], "Thickness", 30) + self.assertPropertyEqual(dgg[0][1][0], "DashCap", "Round") + self.assertPropertyEqual(dgg[0][1][0], "EndLineCap", "Round") + self.assertPropertyEqual(dgg[0][1][0], "StartLineCap", "Round") + # Second test has flat dashcap ("butt"), which is "Flat" in XAML + self.assertTagEqual(dgg[1][1], "GeometryDrawing.Pen") + self.assertTagEqual(dgg[1][1][0], "Pen") + self.assertPropertyEqual(dgg[1][1][0], "Thickness", 30) + self.assertPropertyEqual(dgg[1][1][0], "DashCap", "Flat", default="Square") + self.assertPropertyEqual(dgg[1][1][0], "EndLineCap", "Flat", default="Flat") + self.assertPropertyEqual(dgg[1][1][0], "StartLineCap", "Flat", default="Flat") + # Third test has Stroke-dasharray "none", so attribute should not be set + # in XAML + self.assertTagEqual(dgg[2][1], "GeometryDrawing.Pen") + self.assertEqual(len(dgg[2][1][0]), 0) # no children for lowlevel + # The next two tests have the same linestyle, but the second one specified using + # an odd number of argument to stroke-dasharray. + # The XAML representation is different because dashes differ by a factor of + # the line thickness + self.assertPropertyEqual(dgg[3][1][0], "Thickness", 20) + self.assertEqual(len(dgg[3][1][0]), 1) + self.assertTagEqual(dgg[3][1][0][0], "Pen.DashStyle") + self.assertTagEqual(dgg[3][1][0][0][0], "DashStyle") + self.assertPropertyEqual( + dgg[3][1][0][0][0], "Dashes", [0.25, 0.1, 0.25, 0.25, 0.1, 0.25] + ) + self.assertPropertyEqual(dgg[4][1][0], "Thickness", 10) + self.assertPropertyEqual( + dgg[4][1][0][0][0], "Dashes", [0.5, 0.2, 0.5, 0.5, 0.2, 0.5] + ) + + def test_strokestyle_canvas(self): + """Test stroke-linecap and stroke-dasharray""" + canvas = self.run_to_canvas("strokestyle.svg") + # First test has a round dashcap. All three dashcaps need to be set to achieve + # equal rendering + self.assertTagEqual(canvas[0], "Path") + self.assertPropertyEqual(canvas[0], "StrokeThickness", 30) + self.assertPropertyEqual(canvas[0], "StrokeDashCap", "Round") + self.assertPropertyEqual(canvas[0], "StrokeEndLineCap", "Round") + self.assertPropertyEqual(canvas[0], "StrokeStartLineCap", "Round") + # Second test has flat dashcap ("butt"), which is "Flat" in XAML + self.assertTagEqual(canvas[1], "Path") + self.assertPropertyEqual(canvas[1], "StrokeThickness", 30) + self.assertPropertyEqual(canvas[1], "StrokeDashCap", "Flat", default="Square") + self.assertPropertyEqual(canvas[1], "StrokeEndLineCap", "Flat", default="Flat") + self.assertPropertyEqual( + canvas[1], "StrokeStartLineCap", "Flat", default="Flat" + ) + # Third test has Stroke-dasharray "none", so attribute should not be set + # in XAML + self.assertTagEqual(canvas[2], "Path") + self.assertPropertyEqual(canvas[2], "StrokeDashArray", None, default=None) + # The next two tests have the same linestyle, but the second one specified using + # an odd number of argument to stroke-dasharray. + # The XAML representation is different because dashes differ by a factor of + # the line thickness + self.assertPropertyEqual(canvas[3], "StrokeThickness", 20) + self.assertPropertyEqual( + canvas[3], "StrokeDashArray", [0.25, 0.1, 0.25, 0.25, 0.1, 0.25] + ) + self.assertPropertyEqual(canvas[4], "StrokeThickness", 10) + self.assertPropertyEqual( + canvas[4], "StrokeDashArray", [0.5, 0.2, 0.5, 0.5, 0.2, 0.5] + ) diff --git a/share/extensions/other/extension-xaml/tests/test_svg2xaml_runthrough.py b/share/extensions/other/extension-xaml/tests/test_svg2xaml_runthrough.py new file mode 100644 index 0000000..aef90c4 --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/test_svg2xaml_runthrough.py @@ -0,0 +1,52 @@ +""" +Full run-through test for svg2xaml. Only covers basic cases. +""" +from io import BytesIO + +from inkex.tester.mock import Capture +from .context import XamlOutput +from inkex.tester import ComparisonMixin, TestCase +from inkex.tester.filters import CompareNumericFuzzy + + +class XamlOutputRunthroughTest(ComparisonMixin, TestCase): + """Test basic configuration of XAML export. The other parameters + are checked mostly in test_svg2xaml_adv.py""" + + effect_class = XamlOutput + compare_file = "svg/shapes.svg" + compare_filters = [CompareNumericFuzzy()] + comparisons = [ + ("--mode=canvas", "--target=wpf", "--indent=4"), + ("--mode=canvas", "--target=wpf", "--text-to-path=True"), + ("--mode=lowlevel", "--target=wpf"), + ( + "--mode=canvas", + "--target=avaloniaui", + ), + ( + "--mode=lowlevel", + "--target=avaloniaui", + ), + ] + + +class TestLayerWarning(TestCase): + """Test that a warning is created when we run Layers as Resources with + toplevel elements that are not layers""" + + def test_warning(self): + with Capture("stderr") as stderr: + exporter = XamlOutput() + out = BytesIO() + exporter.run( + [ + "--target=wpf", + "--mode=lowlevel", + "--layers-as-resources=true", + self.data_file("svg", "circle_defaults.svg"), + ], + output=out, + ) + + self.assertIn("root element", stderr.getvalue()) diff --git a/share/extensions/other/extension-xaml/tests/test_svg2xaml_text.py b/share/extensions/other/extension-xaml/tests/test_svg2xaml_text.py new file mode 100644 index 0000000..a56cd7b --- /dev/null +++ b/share/extensions/other/extension-xaml/tests/test_svg2xaml_text.py @@ -0,0 +1,301 @@ +"""Text tests for XAML export""" + +from .context import Svg2XamlTester +import inkex + + +class XamlTestCanvasTexts(Svg2XamlTester): + """Test Text support""" + + def setUp(self): + self.canvas = self.run_to_canvas("text_types.svg")[0] + + def assert_position( + self, + text, + fontsize, + lineheight, + left, + top, + transform=inkex.Transform(), + flowroot=False, + ): + if flowroot: + top = top - fontsize + fontsize * (lineheight + 1) / 2 + else: + top = top - fontsize + fontsize * (lineheight - 1) / 2 + + self.assertPropertyEqual(text, "Canvas.Left", left) + self.assertPropertyEqual(text, "Canvas.Top", top) + self.assertPropertyEqual(text, "FontSize", fontsize) + self.assertPropertyEqual( + text, "LineHeight", lineheight * fontsize, default=fontsize + ) + + trans = ( + inkex.Transform(f"translate({-left}, {-top})") + @ inkex.Transform(transform) + @ inkex.Transform(f"translate({left}, {top})") + ) + self.assertPropertyEqual( + text, "RenderTransform", list(trans.to_hexad()), default="1, 0, 0, 1, 0, 0" + ) + + def test_regular_text(self): + """The first text is a regular text.""" + text = self.canvas[0] + self.assertTagEqual(text, "TextBlock") + self.assert_position(text, 3, 1.25, 13, 5) + + self.assertPropertyEqual(text, "FontFamily", "Arial") + self.assertPropertyEqual(text, "Foreground", "#ff000000") + self.assertEqual(text.text.strip(), "This is a regular text") + self.assertTagEqual(text[0], "LineBreak") + self.assertEqual(text[0].tail.strip(), "With a") + self.assertTagEqual(text[1], "Span") + # This span can not be simplified because it has a decoration + # applied (in form of a property child), we don't test the contents + # here (see decorations tests) + self.assertTagEqual(text[1][0], "Span.TextDecorations") + self.assertEqual(text[1][0].tail.strip(), "line break.") + self.assertTagEqual(text[2], "LineBreak") + + def test_transformed_text(self): + """The text has a transform set, check that this + is corrected for Canvas.Left/Canvas.Top""" + # Check that position and transform are correct + text = self.canvas[1] + self.assert_position(text, 3, 1.25, 80, -6, "matrix(1.2,0.5,-0.4,0.7,0,0)") + + # check the contents + self.assertEqual(text.text.strip(), "This is regular text") + self.assertTagEqual(text[0], "LineBreak") + self.assertEqual(text[0].tail.strip(), "with a line break") + self.assertTagEqual(text[1], "LineBreak") + self.assertEqual(text[1].tail.strip(), "and some transforms.") + + def test_inline_size(self): + """Test that an SVG2 inline-size text is converted to + an auto-wrapped textblock.""" + text = self.canvas[2] + # Testing for position ommitted, same as above + self.assertPropertyEqual(text, "TextWrapping", "Wrap") + self.assertPropertyEqual(text, "Width", 25.75) + self.assertEqual( + text.text.strip(), "This is an SVG2 flowed text (inline size)." + ) + self.assertEqual(text[0].tail.strip(), "This is a line break") + self.assertTagEqual(text[0], "LineBreak") + self.assertEqual(text[1].text.strip(), "inside") + self.assertTagEqual(text[1], "Span") + self.assertPropertyEqual(text[1], "FontWeight", "Bold") + self.assertEqual(text[1].tail.strip(), "that text.") + + def test_shape_inside(self): + """For a shape inside: rectangle, the text is converted + to an auto-wrapped textblock""" + text = self.canvas[3] + self.assert_position( + text, 20, 1.25, 100, 318.01509, "matrix(0.15,0,0,0.15,-3,-3)" + ) + + self.assertPropertyEqual(text, "TextWrapping", "Wrap") + self.assertPropertyEqual(text, "Width", 200) + self.assertEqual( + text.text.strip(), "This is an SVG2 flowed text (shape inside)" + ) + + def test_svg12_flowed_text(self): + """The position computation is slightly different for flowroots""" + text = self.canvas[5] + self.assert_position( + text, 12, 1.25, 314, 70, "translate(-32,-8)scale(0.25)", True + ) + self.assertPropertyEqual(text, "TextWrapping", "Wrap") + self.assertPropertyEqual(text, "Width", 150) + self.assertTagEqual(text[0], "Span") + self.assertPropertyEqual(text[0], "FontSize", 10) + self.assertEqual( + text[0].text.strip(), "This is an SVG1.2 flowed text (flowroot)" + ) + self.assertTagEqual(text[1], "LineBreak") + self.assertEqual(text[1].tail.strip(), "And this is a linebreak") + self.assertTagEqual(text[2], "Span") + self.assertPropertyEqual(text[2], "FontSize", 20.5) + self.assertEqual(text[2].text.strip(), "inside.") + # Also check that absolute line heights on flowroots + # are processed correctly + text = self.canvas[6] + self.assert_position( + text, 12, 20 / 12, 300, 70, "translate(10, -10)scale(0.25)", True + ) + # also no line height, assume default value of 1.2 + text = self.canvas[7] + self.assert_position(text, 12, 1, 300, 70, "translate(10, 0)scale(0.25)", True) + + def test_style(self): + """Test Blur and invisible text""" + text = self.canvas[10] + # Only test for the blur + self.assertTagEqual(text[1], "TextBlock.Effect") + self.assertTagEqual(text[1][0], "BlurEffect") + self.assertPropertyEqual(text[1][0], "Radius", 1) + self.assertEqual(text[1].tail.strip(), "Blurred text") + + text = self.canvas[11] + self.assertPropertyEqual(text, "FontFamily", "Arial, Verdana") + self.assertPropertyEqual(text, "Visibility", "Hidden") + self.assertEqual(text.text.strip(), "This text should be invisible") + + def test_non_ink_attributes(self): + """Test some code paths that can only be triggered with + non-inkscape properties""" + + text = self.canvas[12] + # Font weight specified numerically + self.assertPropertyEqual(text, "FontWeight", "Heavy") + # Font stretch in percent + self.assertPropertyEqual(text, "FontStretch", "UltraCondensed") + # Also the text decoration is set to blink + # (which is not supported by XAML, so we don't test it explicitly) + + def test_variable_line_height(self): + """An SVG2 text with differing line height is split into multiple.""" + first = 60.199661 + text = self.canvas[13] + self.assertEqual(text.text.strip(), "This is a text") + self.assertPropertyEqual(text, "Canvas.Top", first) + text = self.canvas[14] + self.assertEqual(text.text.strip(), "which changes") + self.assertPropertyEqual(text, "Canvas.Top", first + 3.25) + text = self.canvas[15] + self.assertEqual(text.text.strip(), "line-height") + self.assertPropertyEqual(text, "Canvas.Top", first + 3.25 + 4) + text = self.canvas[16] + self.assertEqual(text.text.strip(), "midway twice.") + self.assertPropertyEqual(text, "Canvas.Top", first + 3.25 * 2 + 4) + + +class TextDecorationsText(Svg2XamlTester): + def setUp(self): + self.canvas = self.run_to_canvas("text-decorations.svg") + + def test_abbrev(self): + """Check that the simplest decorations work""" + canvas = self.canvas + # The first text has the first word underlined. + text = canvas[0] + self.assertEqual(len(text), 1) + self.assertTagEqual(text[0], "Span") + self.assertPropertyEqual(text[0], "TextDecorations", "Underline") + self.assertEqual(text[0].text, "Underlined") + self.assertEqual(text[0].tail.strip(), "text") + + # The second text has a different color and the first word is overlined. + text = canvas[1] + self.assertEqual(len(text), 1) + self.assertTagEqual(text[0], "Span") + self.assertPropertyEqual(text, "Foreground", "#7fff00ff") + self.assertPropertyEqual(text[0], "TextDecorations", "Overline") + self.assertEqual(text[0].text, "Overlined") + self.assertEqual(text[0].tail.strip(), "no shorthand") + + def test_linestyle(self): + """Check dotted and dashed decoration""" + canvas = self.canvas + # The third text is dotted underlined. Here, we have to add a real + # TextDecoration element. + text = canvas[2] + self.assertEqual(len(text), 1) + self.assertTagEqual(text[0], "Span") + self.assertEqual(len(text[0]), 1) + self.assertTagEqual(text[0][0], "Span.TextDecorations") + self.assertTagEqual(text[0][0][0], "TextDecorationCollection") + self.assertTagEqual(text[0][0][0][0], "TextDecoration") + self.assertPropertyEqual(text[0][0][0][0], "Location", "Underline") + + self.assertTagEqual(text[0][0][0][0][0], "TextDecoration.Pen") + pen = text[0][0][0][0][0][0] + self.assertTagEqual(pen, "Pen") + self.assertPropertyEqual(pen, "Brush", "#ff008000") + self.assertPropertyEqual(pen, "DashCap", "Round") + self.assertPropertyEqual(pen, "Thickness", 1) + + self.assertTagEqual(pen[0], "Pen.DashStyle") + self.assertTagEqual(pen[0][0], "DashStyle") + dashes = pen[0][0].get("Dashes").split(",") + # The first entry needs to be 0, the second entry larger than 1. + # The spec leaves the exact style to the user agent + self.assertEqual(float(dashes[0]), 0) + self.assertGreater(float(dashes[1]), 1) + # In this case the text follows the property child Span.TextDecorations as tail + # It must not be before, this would be a syntax error if there are other + # children as well + self.assertEqual(text[0][0].tail.strip(), "Dotted underlined") + self.assertEqual(text[0].tail.strip(), "text") + + # The fourth text is overlined with a dashed line. Only check what's different + # to the above case. + text = canvas[3] + self.assertPropertyEqual(text[0][0][0][0], "Location", "Overline") + pen = text[0][0][0][0][0][0] + self.assertPropertyEqual(pen, "DashCap", "Flat") + dashes = pen[0][0].get("Dashes").split(",") + # The exact values dont matter, but both ned to be > 0 and equal + self.assertEqual(dashes[0], dashes[1]) + self.assertGreater(float(dashes[0]), 1) + + self.assertEqual(text[0][0].tail.strip(), "dashed overlined") + self.assertEqual(text[0].tail.strip(), "text") + + def test_multiple(self): + """Check multiple text decoration""" + canvas = self.canvas + # The 9th text has a double over and underline in a part of the text, + # and the font size changes midway. + text = canvas[8] + self.assertTagEqual(text[0][0], "Span") + self.assertEqual(text[0][0].text, "Double") + self.assertPropertyEqual(text[0][0], "FontSize", 6.35) + self.assertEqual(text[0][0].tail.strip(), "over- and underline") + + coll = text[0][1][0] + self.assertTagEqual(coll, "TextDecorationCollection") + self.assertEqual(len(coll), 4) + self.assertPropertyEqual(coll[0], "Location", "Underline") + self.assertTagEqual(coll[0][0], "TextDecoration.Pen") + self.assertTagEqual(coll[0][0][0], "Pen") + brush = coll[0][0][0] + self.assertPropertyEqual(brush, "Brush", "#ff000000") + self.assertPropertyEqual(brush, "Thickness", 1) + + dec = text[0][1][0][1] + self.assertPropertyEqual(dec, "Location", "Underline") + self.assertPropertyEqual(dec, "PenOffset", 0.1) + self.assertPropertyEqual(dec, "PenOffsetUnit", "FontRenderingEmSize") + + dec = text[0][1][0][2] + self.assertPropertyEqual(dec, "Location", "Overline") + + dec = text[0][1][0][3] + self.assertPropertyEqual(dec, "Location", "Overline") + self.assertPropertyEqual(dec, "PenOffset", -0.1) + self.assertPropertyEqual(dec, "PenOffsetUnit", "FontRenderingEmSize") + + self.assertEqual(text[0].tail.strip(), "text") + + # The 10th text has a red underline everywhere (decoration is applied to the + # TextBlock) plus a text-colored strikethrough in the last word. + text = canvas[9] + + self.assertEqual(len(text), 2) + self.assertEqual(text[0].text, "here") + self.assertPropertyEqual(text[0], "TextDecorations", "Strikethrough") + self.assertTagEqual(text[1], "TextBlock.TextDecorations") + self.assertEqual( + text[1].tail.strip(), "Everything red underlined, plus black strikethrough" + ) + self.assertTagEqual(text[1][0], "TextDecorationCollection") + self.assertTagEqual(text[1][0][0], "TextDecoration") + self.assertPropertyEqual(text[1][0][0], "Location", "Underline") + self.assertPropertyEqual(text[1][0][0][0][0], "Brush", "#ffff0000") |