Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iWGr3-0004vw-7F for pgsql-docs@arkaria.postgresql.org; Sun, 17 Nov 2019 09:28:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1iWGr0-0007bU-Ei for pgsql-docs@arkaria.postgresql.org; Sun, 17 Nov 2019 09:28:22 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iWGr0-0007bN-63 for pgsql-docs@lists.postgresql.org; Sun, 17 Nov 2019 09:28:22 +0000 Received: from mout.kundenserver.de ([212.227.126.133]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iWGqt-00009J-NE for pgsql-docs@lists.postgresql.org; Sun, 17 Nov 2019 09:28:21 +0000 Received: from [192.168.178.43] ([77.189.171.66]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.129]) with ESMTPSA (Nemesis) id 1MiJIk-1huRfJ1SoI-00fUrV for ; Sun, 17 Nov 2019 10:28:11 +0100 To: pgsql-docs@lists.postgresql.org From: =?UTF-8?Q?J=c3=bcrgen_Purtz?= Subject: Shrinking SVG (Again) Message-ID: Date: Sun, 17 Nov 2019 10:28:09 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------4EFB2150C1550CE7D6B2630A" Content-Language: en-US X-Provags-ID: V03:K1:N1pv+dsNxVzHvkeG5b4VlX5pC+f26TRxbAFBvQKrN3HIBrlbpZC JrI3lQDE6lFzTu92o1MuVJudzqMNMYw5hQ85lh85rouH4NJ5+KA4uMi0N0jypVYG30JUalz l+j5xH7iMXOeeXeS4llt1XuMsg/Wig3hBkKEzg3FPS9tklnZkt7PuenEmPSMwnoZlnu3B4C zOJpzTB+S0i+a+HLbEIow== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:MTmvkGpvXAw=:bXmx2TzLIOuHNMnvSpEJN5 KUU85XHM2wcfYfZq6hxj6tUarMZTC/X1QRKEpYLNpFQxYbq9oloZo8bV23CDe7ZlWh3YxzXrF hC+uc3yMDp7+d+SZIvzzjHhTqkt22aAT3p2o0N0v0vaj1T0juKrgL8btlHd0A7gBgTaq+lSzr 0Nd/melqp1Pwu3JTfxTx1WpznM0q69cLI8ygzgRiCZpXUN6YqpNQyo7Ll3joMtFuf61lQ4A6s B1p5M+AUp6Tg6Q+ZvDqfGpz7wECwPn6rWwtfgvgssfmTBP6pq8qHxGEJevpvE58lR2va5FfVn JDTKMMcISolYKTmxsqtkRQFHTN+0VHenfSRh+vuPI1XDgy85hEGI/FhAzi09utUigdjzW7QHp pZHo4aX/1QDAzemnHC0i7jNpYT98Hgs8CJ2r4f3BFrHl/q2LA2Q4SeG/CRFA7aANdqT2CexMt 62OK41gVICUzOD8MkZr0YTpKp2ic9CH0uAtk5BypsnoqWev8Wq/Zjx8QYEdSTfouRz55vZR1N +OgTQBUOKSIAOIWXatl8fmSSDljogesrLtI7mIHXPsIXQTBurHUMeWtFKQxdMxuUBEAcHVnJr FWpsJ1dP17NwHOWPr6bf1AvGqCOShbSp3JqeGCQvbk6GPhl88Yg/kQnhVPq4qbtjyTVfCJl+L 7UohtOcaT2GXNvc4mzBjPd7BqCJe+AwQ8HBMpTqtQqH9aYQweX1wUbWQDyf3vT/aHVp72E3oI Cw06Xvxx+MtYB+OOXa0kVhBEx9mp5OMKq4B8+wv4njhFPgdb97qXP39NnaP6W+MeBFi1/4+eK SAX3XOxXSJKvMfPeWmu+M2cnoTneyHxOeczSlWVGV8QYQJ6QjADar/p46xkvMf63fCJLJQUj9 WFhlVLFZEGfJhyaJYZOw== List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------4EFB2150C1550CE7D6B2630A Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Our current policy says that we use the two tools Graphviz (drawing Graphs) and Ditaa (drawing ascii art) to generate SVG. The two tools are highly specialized and bound to their original purpose. I strongly believe that we will not be able to visualize more complex situations like this http://1.bp.blogspot.com/--CG_kXBFWzw/UgW5JROpbDI/AAAAAAAAAHc/9V8iwO1qluQ/s1600/arch.bmp or that: https://severalnines.com/sites/default/files/blog/node_5266/image5.jpg without using other tools, which are more flexible. In the past, we had many discussions on this topic and didn't come to a final decision in favor on one single or a few number of such tools. However, we came to the important and very helpful conclusion to store two files per graphic: the original tool-specific (simple to read, diff-able) and the generated SVG version. Out in the wild there is the open source tool SVGO https://github.com/svg/svgo. Its purpose is the generation of a small, easy to read SVG file out of any other SVG file by removing all the clutter, tools typically generate. In my opinion it's not perfect, but it has some strong advantages: the generated files are really small and nearly free of unnecessary information; it is flexible because a lot of parameters control the degree of optimization; it is extensible: missing features may be added by ourselves. The SVGO tool is a node.js application. At Ubuntu you can install it:   sudo apt install npm nodejs   sudo npm install -g svgo run it, e.g.:   svgo test1_ink.svg --pretty --indent=2 --precision=2 --multipass --disable=removeComments  \                      --output test1_svgo.svg Please test it with your own examples. In contrast to our previous policy the generated file is the diff-able, whereas the original one is hard to read. Jürgen Purtz --------------4EFB2150C1550CE7D6B2630A Content-Type: image/svg+xml; name="test1_ink.svg" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test1_ink.svg" PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+ CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8p IC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEu MS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHht bG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIK ICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0 dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53 My5vcmcvMTk5OS94bGluayIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5z b3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0i aHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9 IjE1MG1tIgogICBoZWlnaHQ9IjE1MG1tIgogICB2aWV3Qm94PSIwIDAgMTUwIDE1MCIKICAg dmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi4z ICgyNDA1NTQ2LCAyMDE4LTAzLTExKSIKICAgc29kaXBvZGk6ZG9jbmFtZT0idGVzdDFfaW5r LnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczIiPgogICAgPHN5bWJvbAogICAgICAgaWQ9 IlVNTF9hY3RvciIKICAgICAgIHN0cm9rZT0iYmxhY2siCiAgICAgICBmaWxsPSJub25lIj4K ICAgICAgPHRpdGxlCiAgICAgICAgIGlkPSJ0aXRsZTE3ODUiPlVNTCBBY3RvcjwvdGl0bGU+ CiAgICAgIDxjaXJjbGUKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDoxIgogICAgICAg ICBjeD0iNC4yMzMzMzMxIgogICAgICAgICBjeT0iNC4yMzMzMzMxIgogICAgICAgICByPSIy LjExNjY2NjYiCiAgICAgICAgIGlkPSJjaXJjbGUxNzg3IiAvPgogICAgICA8cGF0aAogICAg ICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjEiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rv ci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGQ9Im0gNC4yMzMzMzMzLDYuMzUgdiA5LjUyNSIK ICAgICAgICAgaWQ9InBhdGgxNzg5IiAvPgogICAgICA8cGF0aAogICAgICAgICBzdHlsZT0i c3Ryb2tlLXdpZHRoOjEiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9 IjAiCiAgICAgICAgIGQ9Ik0gMCw5LjI2MDQxNjcgSCA4LjQ2NjY2NjciCiAgICAgICAgIGlk PSJwYXRoMTc5MSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0 aDoxIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAg ICBkPSJNIDAsMjEuMTY2NjY3IDQuMjMzMzMzMywxNS44NzUgOC40NjY2NjY3LDIxLjE2NjY2 NyIKICAgICAgICAgaWQ9InBhdGgxNzkzIiAvPgogICAgPC9zeW1ib2w+CiAgICA8c3ltYm9s CiAgICAgICBpZD0iSVRfbGFwdG9wIgogICAgICAgc3Ryb2tlPSJibGFjayIKICAgICAgIGZp bGw9Im5vbmUiPgogICAgICA8dGl0bGUKICAgICAgICAgaWQ9InRpdGxlMTg0MyI+TGFwdG9w PC90aXRsZT4KICAgICAgPHBhdGgKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDoxIgog ICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBkPSJN IDUuMjkxNjY2NywxMy4yMjkxNjcgViAwIEggMjMuODEyNSB2IDEzLjIyOTE2NyBsIDMuOTY4 NzUsNS4yOTE2NjYgSCAxLjMyMjkxNjcgbCAzLjk2ODc1LC01LjI5MTY2NiBIIDIzLjgxMjUi CiAgICAgICAgIGlkPSJwYXRoMTg0NSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgc3R5bGU9 InN0cm9rZS13aWR0aDoxIgogICAgICAgICB4PSI2LjA4NTQxNjgiCiAgICAgICAgIHk9IjAu NzkzNzQ5OTkiCiAgICAgICAgIHdpZHRoPSIxNi45MzMzMzIiCiAgICAgICAgIGhlaWdodD0i MTEuNjQxNjY2IgogICAgICAgICBpZD0icmVjdDE4NDciIC8+CiAgICAgIDwhLS0gaW5kaWNh dGUgc29tZSBsaW5lcyAtLT4KICAgICAgPHBhdGgKICAgICAgICAgc3R5bGU9InN0cm9rZS13 aWR0aDoxIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAg ICAgICBkPSJtIDcuOTM3NSwyLjY0NTgzMzMgaCA1LjI5MTY2NyIKICAgICAgICAgaWQ9InBh dGgxODQ5IiAvPgogICAgICA8cGF0aAogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjEi CiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGQ9 Im0gNy45Mzc1LDMuOTY4NzUgaCA2LjYxNDU4MyIKICAgICAgICAgaWQ9InBhdGgxODUxIiAv PgogICAgICA8cGF0aAogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjEiCiAgICAgICAg IGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGQ9Im0gNy45Mzc1 LDUuMjkxNjY2NyBoIDIuNjQ1ODMzIgogICAgICAgICBpZD0icGF0aDE4NTMiIC8+CiAgICAg IDxwYXRoCiAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MSIKICAgICAgICAgaW5rc2Nh cGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgZD0ibSA3LjkzNzUsNy45Mzc1 IGggNS4yOTE2NjciCiAgICAgICAgIGlkPSJwYXRoMTg1NSIgLz4KICAgICAgPCEtLSBpbmRp Y2F0ZSBhIGtleSAtLT4KICAgICAgPHJlY3QKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0 aDoxIgogICAgICAgICB4PSIxMS45MDYyNSIKICAgICAgICAgeT0iMTYuNDA0MTY3IgogICAg ICAgICB3aWR0aD0iNS4yOTE2NjY1IgogICAgICAgICBoZWlnaHQ9IjEuMDU4MzMzMyIKICAg ICAgICAgaWQ9InJlY3QxODU3IiAvPgogICAgPC9zeW1ib2w+CiAgPC9kZWZzPgogIDxzb2Rp cG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYi CiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgog ICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRv dz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIwLjciCiAgICAgaW5rc2NhcGU6Y3g9IjI0My4y MDUwMiIKICAgICBpbmtzY2FwZTpjeT0iMzQ1Ljc4NDI4IgogICAgIGlua3NjYXBlOmRvY3Vt ZW50LXVuaXRzPSJtbSIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAg ICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTQ5NiIK ICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MDIiCiAgICAgaW5rc2NhcGU6d2luZG93 LXg9IjYxIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNyIKICAgICBpbmtzY2FwZTp3aW5k b3ctbWF4aW1pemVkPSIwIgogICAgIGZpdC1tYXJnaW4tdG9wPSIwIgogICAgIGZpdC1tYXJn aW4tbGVmdD0iMCIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIwIgogICAgIGZpdC1tYXJnaW4t Ym90dG9tPSIwIiAvPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTUiPgogICAgPHJk ZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8 ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQog ICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0 aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlIC8+CiAgICAgIDwvY2M6V29yaz4KICAg IDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9Ikxh eWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIx IgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMS4zMjQ0NDIsLTExLjU5NTYyNCkiPgog ICAgPGcKICAgICAgIGlkPSJnMTI4NzMiCiAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgy OC4wNTA4MjQsLTg1LjAwNzQ0NCkiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTUu NDk3MDI2IgogICAgICAgICByeD0iMzQuNzczODA4IgogICAgICAgICBjeT0iMTQ1Ljk2NjA5 IgogICAgICAgICBjeD0iMTAyLjcxNzgxIgogICAgICAgICBpZD0icGF0aDQwNDEiCiAgICAg ICAgIHN0eWxlPSJmaWxsOiMwMGZmMDA7c3Ryb2tlOiNmZjAwMDA7c3Ryb2tlLXdpZHRoOjAu MjY0OTk5OTk7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ry b2tlLWRhc2hhcnJheTpub25lIiAvPgogICAgICA8dGV4dAogICAgICAgICBpZD0idGV4dDQw NDUtMiIKICAgICAgICAgeT0iMTQ5LjE3OTciCiAgICAgICAgIHg9Ijg5LjY0ODg4IgogICAg ICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQt c2l6ZToxMC41ODMzMzMwMnB4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6c2Fucy1z ZXJpZjtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDtmaWxsOiMwMDAwMDA7 ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiCiAg ICAgICAgIHhtbDpzcGFjZT0icHJlc2VydmUiPjx0c3BhbgogICAgICAgICAgIHN0eWxlPSJz dHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgICAgICB5PSIxNDkuMTc5NyIKICAgICAg ICAgICB4PSI4OS42NDg4OCIKICAgICAgICAgICBpZD0idHNwYW40MDQzLTMiCiAgICAgICAg ICAgc29kaXBvZGk6cm9sZT0ibGluZSI+RWxsaXBzZTwvdHNwYW4+PHRzcGFuCiAgICAgICAg ICAgaWQ9InRzcGFuNDA0Ny0xIgogICAgICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4y NjQ1ODMzMiIKICAgICAgICAgICB5PSIxNjIuNDA4ODciCiAgICAgICAgICAgeD0iODkuNjQ4 ODgiCiAgICAgICAgICAgc29kaXBvZGk6cm9sZT0ibGluZSIgLz48L3RleHQ+CiAgICA8L2c+ CiAgICA8dXNlCiAgICAgICBpZD0idXNlNDE4OCIKICAgICAgIHRyYW5zZm9ybT0idHJhbnNs YXRlKDExMS41NDIwMSwxMTEuNDQyOTcpIgogICAgICAgeGxpbms6aHJlZj0iI0lUX2xhcHRv cCIKICAgICAgIHg9IjAiCiAgICAgICB5PSIwIgogICAgICAgd2lkdGg9IjEwMCUiCiAgICAg ICBoZWlnaHQ9IjEwMCUiIC8+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImZpbGw6bm9uZTtm aWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ1ODMz MnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1v cGFjaXR5OjEiCiAgICAgICBkPSJNIDEwMy41MDM1Niw1MS4zNDA1MjQgNTQuOTY0MzIzLDM0 LjIxNzY0NyIKICAgICAgIGlkPSJwYXRoNDA4MiIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rv ci10eXBlPSJwb2x5bGluZSIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9 IjAiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0aW9uLXN0YXJ0PSIjZzEyODczIiAvPgogICAg PGcKICAgICAgIGlkPSJnMTI4NjciCiAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyLjM2 NzQzNzYsLTk3Ljc1NTc5NikiPgogICAgICA8cmVjdAogICAgICAgICB5PSIxMjEuNjE5MDUi CiAgICAgICAgIHg9IjI0LjkzMTQ0NiIKICAgICAgICAgaGVpZ2h0PSIyMy40MzQ1MjUiCiAg ICAgICAgIHdpZHRoPSI1OC45NzkyNjciCiAgICAgICAgIGlkPSJyZWN0NDAzOSIKICAgICAg ICAgc3R5bGU9ImZpbGw6IzAwZmZmZjtzdHJva2U6I2ZmMDAwMDtzdHJva2Utd2lkdGg6MC4y NjQ5OTk5OTtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJv a2UtZGFzaGFycmF5Om5vbmUiIC8+CiAgICAgIDx0ZXh0CiAgICAgICAgIGlkPSJ0ZXh0NDA0 NSIKICAgICAgICAgeT0iMTMzLjE2Mzc5IgogICAgICAgICB4PSIyNy43OTYwMzQiCiAgICAg ICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1z aXplOjEwLjU4MzMzMzAycHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTpzYW5zLXNl cmlmO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzAwMDAwMDtm aWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAg ICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHRzcGFuCiAgICAgICAgICAgc3R5bGU9InN0 cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgICAgIHk9IjEzMy4xNjM3OSIKICAgICAg ICAgICB4PSIyNy43OTYwMzQiCiAgICAgICAgICAgaWQ9InRzcGFuNDA0MyIKICAgICAgICAg ICBzb2RpcG9kaTpyb2xlPSJsaW5lIj5SZWN0YW5nbGU8L3RzcGFuPjx0c3BhbgogICAgICAg ICAgIGlkPSJ0c3BhbjQwNDciCiAgICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2 NDU4MzMyIgogICAgICAgICAgIHk9IjE0Ni4zOTI5NiIKICAgICAgICAgICB4PSIyNy43OTYw MzQiCiAgICAgICAgICAgc29kaXBvZGk6cm9sZT0ibGluZSIgLz48L3RleHQ+CiAgICA8L2c+ CiAgICA8dXNlCiAgICAgICBpZD0idXNlNDEzNSIKICAgICAgIHRyYW5zZm9ybT0idHJhbnNs YXRlKDU0LjUxMDc1Miw5OS4wMjA5OTgpIgogICAgICAgeGxpbms6aHJlZj0iI1VNTF9hY3Rv ciIKICAgICAgIHg9IjAiCiAgICAgICB5PSIwIgogICAgICAgd2lkdGg9IjEwMCUiCiAgICAg ICBoZWlnaHQ9IjEwMCUiIC8+CiAgPC9nPgo8L3N2Zz4K --------------4EFB2150C1550CE7D6B2630A Content-Type: image/svg+xml; name="test1_svgo.svg" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test1_svgo.svg" PCEtLUNyZWF0ZWQgd2l0aCBJbmtzY2FwZSAoaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvKS0t Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9 Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxNTBtbSIgaGVpZ2h0PSIx NTBtbSIgdmlld0JveD0iMCAwIDE1MCAxNTAiPgogIDxkZWZzPgogICAgPHN5bWJvbCBpZD0i YiIgc3Ryb2tlPSIjMDAwIiBmaWxsPSJub25lIj4KICAgICAgPGNpcmNsZSBjeD0iNC4yMyIg Y3k9IjQuMjMiIHI9IjIuMTIiLz4KICAgICAgPHBhdGggZD0iTTQuMjMgNi4zNXY5LjUzTTAg OS4yNmg4LjQ3TTAgMjEuMTdsNC4yMy01LjMgNC4yNCA1LjMiLz4KICAgIDwvc3ltYm9sPgog ICAgPHN5bWJvbCBpZD0iYSIgc3Ryb2tlPSIjMDAwIiBmaWxsPSJub25lIj4KICAgICAgPHBh dGggZD0iTTUuMyAxMy4yM1YwaDE4LjV2MTMuMjNsMy45NyA1LjNIMS4zMmwzLjk3LTUuM2gx OC41MiIvPgogICAgICA8cGF0aCBkPSJNNi4wOS43OWgxNi45M3YxMS42NEg2LjA5eiIvPgo8 IS0taW5kaWNhdGUgc29tZSBsaW5lcy0tPgogICAgICA8cGF0aCBkPSJNNy45NCAyLjY1aDUu MjlNNy45NCAzLjk3aDYuNjFNNy45NCA1LjNoMi42NE03Ljk0IDcuOTRoNS4yOSIvPgo8IS0t aW5kaWNhdGUgYSBrZXktLT4KICAgICAgPHBhdGggZD0iTTExLjkxIDE2LjRoNS4yOXYxLjA2 aC01LjI5eiIvPgogICAgPC9zeW1ib2w+CiAgPC9kZWZzPgogIDxnIHRyYW5zZm9ybT0idHJh bnNsYXRlKC0yMS4zMiAtMTEuNikiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjgu MDUgLTg1KSIgc3Ryb2tlLXdpZHRoPSIuMjYiPgogICAgICA8ZWxsaXBzZSByeT0iMTUuNSIg cng9IjM0Ljc3IiBjeT0iMTQ1Ljk3IiBjeD0iMTAyLjcyIiBmaWxsPSIjMGYwIiBzdHJva2U9 InJlZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgogICAgICA8dGV4dCB5PSIxNDkuMTgi IHg9Ijg5LjY1IiBzdHlsZT0ibGluZS1oZWlnaHQ6MS4yNSIgZm9udC13ZWlnaHQ9IjQwMCIg Zm9udC1zaXplPSIxMC41OCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGxldHRlci1zcGFj aW5nPSIwIiB3b3JkLXNwYWNpbmc9IjAiPgogICAgICAgIDx0c3BhbiB5PSIxNDkuMTgiIHg9 Ijg5LjY1Ij5FbGxpcHNlPC90c3Bhbj4KICAgICAgPC90ZXh0PgogICAgPC9nPgogICAgPHVz ZSB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTEuNTQgMTExLjQ0KSIgeGxpbms6aHJlZj0iI2Ei IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiLz4KICAgIDxwYXRoIGQ9Ik0xMDMuNSA1MS4z NEw1NC45NiAzNC4yMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9 Ii4yNiIvPgogICAgPGcgc3Ryb2tlLXdpZHRoPSIuMjYiPgogICAgICA8cGF0aCBmaWxsPSIj MGZmIiBzdHJva2U9InJlZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTI3LjMgMjMu ODZoNTguOThWNDcuM0gyNy4zeiIvPgogICAgICA8dGV4dCB5PSIxMzMuMTYiIHg9IjI3Ljgi IHN0eWxlPSJsaW5lLWhlaWdodDoxLjI1IiBmb250LXdlaWdodD0iNDAwIiBmb250LXNpemU9 IjEwLjU4IiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgbGV0dGVyLXNwYWNpbmc9IjAiIHdv cmQtc3BhY2luZz0iMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMi4zNyAtOTcuNzYpIj4KICAg ICAgICA8dHNwYW4geT0iMTMzLjE2IiB4PSIyNy44Ij5SZWN0YW5nbGU8L3RzcGFuPgogICAg ICA8L3RleHQ+CiAgICA8L2c+CiAgICA8dXNlIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU0LjUx IDk5LjAyKSIgeGxpbms6aHJlZj0iI2IiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiLz4K ICA8L2c+Cjwvc3ZnPgo= --------------4EFB2150C1550CE7D6B2630A--