Mercurial > hg > Papers > 2016 > parusu-sigos
changeset 18:4c465c6fe2cc
Fix
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 30 May 2016 02:01:33 +0900 |
parents | f2f9c7110b41 |
children | a2a9d91db377 |
files | paper/pic/codeGear_dataGear.graffle paper/pic/codeGear_dataGear.pdf paper/pic/codeGear_dataGear.svg paper/pic/meta_cg_dg.graffle paper/pic/meta_cg_dg.pdf presen/images/codeGear_dataGear.svg presen/images/meta_cg_dg.svg presen/sigos.html presen/sigos.md |
diffstat | 9 files changed, 1004 insertions(+), 476 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/pic/codeGear_dataGear.svg Mon May 30 02:01:33 2016 +0900 @@ -0,0 +1,201 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="535pt" height="427pt" viewBox="0 0 535 427" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 0.390625 0 L 0.390625 -8.609375 L 7.21875 -8.609375 L 7.21875 0 Z M 6.140625 -1.078125 L 6.140625 -7.53125 L 1.46875 -7.53125 L 1.46875 -1.078125 Z M 6.140625 -1.078125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 4.546875 -8.84375 C 5.628906 -8.84375 6.472656 -8.554688 7.078125 -7.984375 C 7.679688 -7.410156 8.015625 -6.757812 8.078125 -6.03125 L 6.9375 -6.03125 C 6.8125 -6.582031 6.554688 -7.019531 6.171875 -7.34375 C 5.785156 -7.664062 5.242188 -7.828125 4.546875 -7.828125 C 3.703125 -7.828125 3.019531 -7.53125 2.5 -6.9375 C 1.976562 -6.34375 1.71875 -5.429688 1.71875 -4.203125 C 1.71875 -3.191406 1.953125 -2.367188 2.421875 -1.734375 C 2.890625 -1.109375 3.59375 -0.796875 4.53125 -0.796875 C 5.382812 -0.796875 6.039062 -1.128906 6.5 -1.796875 C 6.726562 -2.140625 6.90625 -2.597656 7.03125 -3.171875 L 8.15625 -3.171875 C 8.0625 -2.265625 7.726562 -1.503906 7.15625 -0.890625 C 6.46875 -0.148438 5.546875 0.21875 4.390625 0.21875 C 3.390625 0.21875 2.550781 -0.0820312 1.875 -0.6875 C 0.976562 -1.488281 0.53125 -2.722656 0.53125 -4.390625 C 0.53125 -5.660156 0.863281 -6.703125 1.53125 -7.515625 C 2.257812 -8.398438 3.265625 -8.84375 4.546875 -8.84375 Z M 4.3125 -8.84375 Z M 4.3125 -8.84375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 3.265625 -0.6875 C 3.960938 -0.6875 4.441406 -0.945312 4.703125 -1.46875 C 4.960938 -2 5.09375 -2.585938 5.09375 -3.234375 C 5.09375 -3.828125 5 -4.304688 4.8125 -4.671875 C 4.507812 -5.242188 4 -5.53125 3.28125 -5.53125 C 2.632812 -5.53125 2.164062 -5.285156 1.875 -4.796875 C 1.582031 -4.304688 1.4375 -3.710938 1.4375 -3.015625 C 1.4375 -2.347656 1.582031 -1.789062 1.875 -1.34375 C 2.164062 -0.90625 2.628906 -0.6875 3.265625 -0.6875 Z M 3.3125 -6.453125 C 4.113281 -6.453125 4.789062 -6.179688 5.34375 -5.640625 C 5.90625 -5.109375 6.1875 -4.316406 6.1875 -3.265625 C 6.1875 -2.253906 5.941406 -1.414062 5.453125 -0.75 C 4.960938 -0.09375 4.203125 0.234375 3.171875 0.234375 C 2.304688 0.234375 1.617188 -0.0546875 1.109375 -0.640625 C 0.597656 -1.234375 0.34375 -2.019531 0.34375 -3 C 0.34375 -4.050781 0.609375 -4.890625 1.140625 -5.515625 C 1.679688 -6.140625 2.40625 -6.453125 3.3125 -6.453125 Z M 3.265625 -6.421875 Z M 3.265625 -6.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 1.4375 -3.0625 C 1.4375 -2.394531 1.578125 -1.832031 1.859375 -1.375 C 2.148438 -0.925781 2.609375 -0.703125 3.234375 -0.703125 C 3.722656 -0.703125 4.125 -0.910156 4.4375 -1.328125 C 4.757812 -1.742188 4.921875 -2.347656 4.921875 -3.140625 C 4.921875 -3.929688 4.753906 -4.515625 4.421875 -4.890625 C 4.097656 -5.273438 3.703125 -5.46875 3.234375 -5.46875 C 2.703125 -5.46875 2.269531 -5.265625 1.9375 -4.859375 C 1.601562 -4.453125 1.4375 -3.851562 1.4375 -3.0625 Z M 3.03125 -6.390625 C 3.507812 -6.390625 3.910156 -6.285156 4.234375 -6.078125 C 4.421875 -5.960938 4.632812 -5.757812 4.875 -5.46875 L 4.875 -8.640625 L 5.890625 -8.640625 L 5.890625 0 L 4.9375 0 L 4.9375 -0.875 C 4.695312 -0.488281 4.40625 -0.207031 4.0625 -0.03125 C 3.726562 0.132812 3.34375 0.21875 2.90625 0.21875 C 2.207031 0.21875 1.601562 -0.0703125 1.09375 -0.65625 C 0.582031 -1.25 0.328125 -2.03125 0.328125 -3 C 0.328125 -3.914062 0.5625 -4.707031 1.03125 -5.375 C 1.5 -6.050781 2.164062 -6.390625 3.03125 -6.390625 Z M 3.03125 -6.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 3.390625 -6.421875 C 3.835938 -6.421875 4.269531 -6.316406 4.6875 -6.109375 C 5.101562 -5.898438 5.421875 -5.628906 5.640625 -5.296875 C 5.847656 -4.972656 5.988281 -4.601562 6.0625 -4.1875 C 6.125 -3.894531 6.15625 -3.429688 6.15625 -2.796875 L 1.546875 -2.796875 C 1.566406 -2.160156 1.71875 -1.648438 2 -1.265625 C 2.28125 -0.878906 2.71875 -0.6875 3.3125 -0.6875 C 3.863281 -0.6875 4.300781 -0.867188 4.625 -1.234375 C 4.8125 -1.441406 4.945312 -1.6875 5.03125 -1.96875 L 6.0625 -1.96875 C 6.039062 -1.738281 5.953125 -1.484375 5.796875 -1.203125 C 5.640625 -0.921875 5.46875 -0.6875 5.28125 -0.5 C 4.957031 -0.1875 4.554688 0.0195312 4.078125 0.125 C 3.828125 0.1875 3.539062 0.21875 3.21875 0.21875 C 2.4375 0.21875 1.773438 -0.0625 1.234375 -0.625 C 0.691406 -1.195312 0.421875 -1.992188 0.421875 -3.015625 C 0.421875 -4.023438 0.691406 -4.84375 1.234375 -5.46875 C 1.785156 -6.101562 2.503906 -6.421875 3.390625 -6.421875 Z M 5.0625 -3.640625 C 5.019531 -4.097656 4.921875 -4.460938 4.765625 -4.734375 C 4.484375 -5.242188 4.003906 -5.5 3.328125 -5.5 C 2.835938 -5.5 2.425781 -5.320312 2.09375 -4.96875 C 1.769531 -4.625 1.597656 -4.179688 1.578125 -3.640625 Z M 3.28125 -6.421875 Z M 3.28125 -6.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 4.640625 -8.828125 C 5.441406 -8.828125 6.140625 -8.671875 6.734375 -8.359375 C 7.585938 -7.910156 8.109375 -7.125 8.296875 -6 L 7.15625 -6 C 7.007812 -6.625 6.710938 -7.082031 6.265625 -7.375 C 5.828125 -7.664062 5.273438 -7.8125 4.609375 -7.8125 C 3.804688 -7.8125 3.132812 -7.507812 2.59375 -6.90625 C 2.050781 -6.3125 1.78125 -5.421875 1.78125 -4.234375 C 1.78125 -3.210938 2.003906 -2.378906 2.453125 -1.734375 C 2.898438 -1.097656 3.628906 -0.78125 4.640625 -0.78125 C 5.421875 -0.78125 6.066406 -1.003906 6.578125 -1.453125 C 7.085938 -1.898438 7.347656 -2.628906 7.359375 -3.640625 L 4.671875 -3.640625 L 4.671875 -4.609375 L 8.4375 -4.609375 L 8.4375 0 L 7.6875 0 L 7.40625 -1.109375 C 7.019531 -0.671875 6.671875 -0.367188 6.359375 -0.203125 C 5.847656 0.0859375 5.195312 0.234375 4.40625 0.234375 C 3.394531 0.234375 2.519531 -0.0976562 1.78125 -0.765625 C 0.976562 -1.585938 0.578125 -2.722656 0.578125 -4.171875 C 0.578125 -5.609375 0.96875 -6.753906 1.75 -7.609375 C 2.488281 -8.421875 3.453125 -8.828125 4.640625 -8.828125 Z M 4.4375 -8.84375 Z M 4.4375 -8.84375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 1.578125 -1.671875 C 1.578125 -1.367188 1.6875 -1.128906 1.90625 -0.953125 C 2.132812 -0.773438 2.398438 -0.6875 2.703125 -0.6875 C 3.078125 -0.6875 3.4375 -0.769531 3.78125 -0.9375 C 4.375 -1.226562 4.671875 -1.695312 4.671875 -2.34375 L 4.671875 -3.1875 C 4.535156 -3.113281 4.363281 -3.046875 4.15625 -2.984375 C 3.957031 -2.929688 3.757812 -2.894531 3.5625 -2.875 L 2.9375 -2.796875 C 2.550781 -2.742188 2.257812 -2.660156 2.0625 -2.546875 C 1.738281 -2.367188 1.578125 -2.078125 1.578125 -1.671875 Z M 4.140625 -3.796875 C 4.378906 -3.828125 4.539062 -3.929688 4.625 -4.109375 C 4.664062 -4.203125 4.6875 -4.335938 4.6875 -4.515625 C 4.6875 -4.867188 4.554688 -5.125 4.296875 -5.28125 C 4.046875 -5.445312 3.6875 -5.53125 3.21875 -5.53125 C 2.664062 -5.53125 2.273438 -5.382812 2.046875 -5.09375 C 1.910156 -4.925781 1.820312 -4.679688 1.78125 -4.359375 L 0.796875 -4.359375 C 0.816406 -5.128906 1.066406 -5.664062 1.546875 -5.96875 C 2.035156 -6.269531 2.597656 -6.421875 3.234375 -6.421875 C 3.972656 -6.421875 4.570312 -6.28125 5.03125 -6 C 5.488281 -5.71875 5.71875 -5.28125 5.71875 -4.6875 L 5.71875 -1.078125 C 5.71875 -0.972656 5.738281 -0.882812 5.78125 -0.8125 C 5.832031 -0.75 5.929688 -0.71875 6.078125 -0.71875 C 6.117188 -0.71875 6.164062 -0.71875 6.21875 -0.71875 C 6.28125 -0.726562 6.347656 -0.738281 6.421875 -0.75 L 6.421875 0.03125 C 6.253906 0.0703125 6.125 0.0976562 6.03125 0.109375 C 5.945312 0.128906 5.832031 0.140625 5.6875 0.140625 C 5.320312 0.140625 5.0625 0.0078125 4.90625 -0.25 C 4.8125 -0.382812 4.75 -0.578125 4.71875 -0.828125 C 4.5 -0.546875 4.1875 -0.300781 3.78125 -0.09375 C 3.382812 0.113281 2.945312 0.21875 2.46875 0.21875 C 1.882812 0.21875 1.40625 0.0390625 1.03125 -0.3125 C 0.664062 -0.664062 0.484375 -1.109375 0.484375 -1.640625 C 0.484375 -2.222656 0.664062 -2.675781 1.03125 -3 C 1.394531 -3.320312 1.867188 -3.519531 2.453125 -3.59375 Z M 3.265625 -6.421875 Z M 3.265625 -6.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.796875 -6.28125 L 1.8125 -6.28125 L 1.8125 -5.1875 C 1.882812 -5.40625 2.082031 -5.664062 2.40625 -5.96875 C 2.726562 -6.269531 3.097656 -6.421875 3.515625 -6.421875 C 3.535156 -6.421875 3.566406 -6.414062 3.609375 -6.40625 C 3.660156 -6.40625 3.742188 -6.398438 3.859375 -6.390625 L 3.859375 -5.28125 C 3.796875 -5.289062 3.738281 -5.296875 3.6875 -5.296875 C 3.632812 -5.296875 3.578125 -5.296875 3.515625 -5.296875 C 2.984375 -5.296875 2.570312 -5.125 2.28125 -4.78125 C 2 -4.445312 1.859375 -4.054688 1.859375 -3.609375 L 1.859375 0 L 0.796875 0 Z M 0.796875 -6.28125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 4.21875 -1 C 4.613281 -1 4.9375 -1.039062 5.1875 -1.125 C 5.644531 -1.269531 6.019531 -1.5625 6.3125 -2 C 6.539062 -2.34375 6.703125 -2.785156 6.796875 -3.328125 C 6.859375 -3.660156 6.890625 -3.960938 6.890625 -4.234375 C 6.890625 -5.304688 6.675781 -6.132812 6.25 -6.71875 C 5.832031 -7.3125 5.148438 -7.609375 4.203125 -7.609375 L 2.140625 -7.609375 L 2.140625 -1 Z M 0.96875 -8.609375 L 4.453125 -8.609375 C 5.640625 -8.609375 6.554688 -8.1875 7.203125 -7.34375 C 7.785156 -6.59375 8.078125 -5.625 8.078125 -4.4375 C 8.078125 -3.519531 7.90625 -2.691406 7.5625 -1.953125 C 6.957031 -0.648438 5.914062 0 4.4375 0 L 0.96875 0 Z M 0.96875 -8.609375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 0.984375 -8.03125 L 2.046875 -8.03125 L 2.046875 -6.28125 L 3.046875 -6.28125 L 3.046875 -5.421875 L 2.046875 -5.421875 L 2.046875 -1.3125 C 2.046875 -1.09375 2.125 -0.945312 2.28125 -0.875 C 2.351562 -0.832031 2.488281 -0.8125 2.6875 -0.8125 C 2.738281 -0.8125 2.789062 -0.8125 2.84375 -0.8125 C 2.90625 -0.820312 2.972656 -0.828125 3.046875 -0.828125 L 3.046875 0 C 2.929688 0.03125 2.804688 0.0507812 2.671875 0.0625 C 2.546875 0.0820312 2.40625 0.09375 2.25 0.09375 C 1.757812 0.09375 1.425781 -0.03125 1.25 -0.28125 C 1.070312 -0.53125 0.984375 -0.859375 0.984375 -1.265625 L 0.984375 -5.421875 L 0.140625 -5.421875 L 0.140625 -6.28125 L 0.984375 -6.28125 Z M 0.984375 -8.03125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 6.546875 -10.65625 L 1.625 -10.65625 L 1.625 -0.75 L 6.546875 -0.75 Z M 7.359375 -11.390625 L 7.359375 -0.015625 L 0.8125 -0.015625 L 0.8125 -11.390625 Z M 7.359375 -11.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 1.3125 -11.421875 L 1.3125 0 L 2.828125 0 L 2.828125 -11.421875 Z M 1.3125 -11.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 1.03125 -8.265625 L 1.03125 0 L 2.390625 0 L 2.390625 -4.671875 C 2.390625 -5.046875 2.4375 -5.390625 2.53125 -5.703125 C 2.632812 -6.015625 2.785156 -6.285156 2.984375 -6.515625 C 3.191406 -6.753906 3.445312 -6.9375 3.75 -7.0625 C 4.050781 -7.195312 4.410156 -7.265625 4.828125 -7.265625 C 5.347656 -7.265625 5.757812 -7.113281 6.0625 -6.8125 C 6.363281 -6.519531 6.515625 -6.113281 6.515625 -5.59375 L 6.515625 0 L 7.875 0 L 7.875 -5.4375 C 7.875 -5.882812 7.828125 -6.289062 7.734375 -6.65625 C 7.640625 -7.03125 7.476562 -7.347656 7.25 -7.609375 C 7.03125 -7.878906 6.738281 -8.085938 6.375 -8.234375 C 6.019531 -8.390625 5.570312 -8.46875 5.03125 -8.46875 C 3.800781 -8.46875 2.90625 -7.960938 2.34375 -6.953125 L 2.296875 -6.953125 L 2.296875 -8.265625 Z M 1.03125 -8.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M 1.078125 -8.265625 L 1.078125 3.15625 L 2.4375 3.15625 L 2.4375 -1.109375 L 2.46875 -1.109375 C 2.613281 -0.859375 2.796875 -0.648438 3.015625 -0.484375 C 3.234375 -0.316406 3.460938 -0.1875 3.703125 -0.09375 C 3.953125 0 4.203125 0.0664062 4.453125 0.109375 C 4.703125 0.148438 4.929688 0.171875 5.140625 0.171875 C 5.765625 0.171875 6.3125 0.0625 6.78125 -0.15625 C 7.257812 -0.382812 7.65625 -0.691406 7.96875 -1.078125 C 8.289062 -1.460938 8.523438 -1.914062 8.671875 -2.4375 C 8.828125 -2.96875 8.90625 -3.523438 8.90625 -4.109375 C 8.90625 -4.691406 8.828125 -5.242188 8.671875 -5.765625 C 8.515625 -6.296875 8.273438 -6.757812 7.953125 -7.15625 C 7.640625 -7.5625 7.242188 -7.878906 6.765625 -8.109375 C 6.296875 -8.347656 5.742188 -8.46875 5.109375 -8.46875 C 4.523438 -8.46875 3.992188 -8.363281 3.515625 -8.15625 C 3.035156 -7.945312 2.6875 -7.613281 2.46875 -7.15625 L 2.4375 -7.15625 L 2.4375 -8.265625 Z M 7.46875 -4.203125 C 7.46875 -3.796875 7.425781 -3.398438 7.34375 -3.015625 C 7.257812 -2.640625 7.117188 -2.300781 6.921875 -2 C 6.734375 -1.695312 6.484375 -1.457031 6.171875 -1.28125 C 5.859375 -1.101562 5.460938 -1.015625 4.984375 -1.015625 C 4.515625 -1.015625 4.113281 -1.097656 3.78125 -1.265625 C 3.457031 -1.441406 3.191406 -1.675781 2.984375 -1.96875 C 2.773438 -2.257812 2.625 -2.59375 2.53125 -2.96875 C 2.4375 -3.34375 2.390625 -3.734375 2.390625 -4.140625 C 2.390625 -4.523438 2.429688 -4.90625 2.515625 -5.28125 C 2.609375 -5.65625 2.753906 -5.988281 2.953125 -6.28125 C 3.160156 -6.570312 3.421875 -6.804688 3.734375 -6.984375 C 4.054688 -7.171875 4.445312 -7.265625 4.90625 -7.265625 C 5.34375 -7.265625 5.722656 -7.175781 6.046875 -7 C 6.378906 -6.832031 6.648438 -6.601562 6.859375 -6.3125 C 7.066406 -6.03125 7.21875 -5.703125 7.3125 -5.328125 C 7.414062 -4.960938 7.46875 -4.585938 7.46875 -4.203125 Z M 7.46875 -4.203125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 7.875 0 L 7.875 -8.265625 L 6.515625 -8.265625 L 6.515625 -3.59375 C 6.515625 -3.226562 6.460938 -2.882812 6.359375 -2.5625 C 6.253906 -2.25 6.097656 -1.972656 5.890625 -1.734375 C 5.691406 -1.503906 5.441406 -1.328125 5.140625 -1.203125 C 4.835938 -1.078125 4.476562 -1.015625 4.0625 -1.015625 C 3.539062 -1.015625 3.128906 -1.160156 2.828125 -1.453125 C 2.535156 -1.753906 2.390625 -2.160156 2.390625 -2.671875 L 2.390625 -8.265625 L 1.03125 -8.265625 L 1.03125 -2.828125 C 1.03125 -2.378906 1.070312 -1.972656 1.15625 -1.609375 C 1.25 -1.242188 1.40625 -0.925781 1.625 -0.65625 C 1.851562 -0.382812 2.148438 -0.175781 2.515625 -0.03125 C 2.878906 0.101562 3.332031 0.171875 3.875 0.171875 C 4.476562 0.171875 5.003906 0.0507812 5.453125 -0.1875 C 5.898438 -0.425781 6.269531 -0.800781 6.5625 -1.3125 L 6.59375 -1.3125 L 6.59375 0 Z M 7.875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M 2.90625 -8.265625 L 2.90625 -10.75 L 1.546875 -10.75 L 1.546875 -8.265625 L 0.140625 -8.265625 L 0.140625 -7.078125 L 1.546875 -7.078125 L 1.546875 -1.8125 C 1.546875 -1.425781 1.582031 -1.113281 1.65625 -0.875 C 1.738281 -0.644531 1.851562 -0.460938 2 -0.328125 C 2.15625 -0.203125 2.359375 -0.113281 2.609375 -0.0625 C 2.859375 -0.0195312 3.160156 0 3.515625 0 L 4.5625 0 L 4.5625 -1.203125 L 3.9375 -1.203125 C 3.71875 -1.203125 3.539062 -1.207031 3.40625 -1.21875 C 3.28125 -1.238281 3.175781 -1.273438 3.09375 -1.328125 C 3.019531 -1.378906 2.96875 -1.453125 2.9375 -1.546875 C 2.914062 -1.648438 2.90625 -1.78125 2.90625 -1.9375 L 2.90625 -7.078125 L 4.5625 -7.078125 L 4.5625 -8.265625 Z M 2.90625 -8.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 2.765625 -1.28125 L 2.765625 -10.140625 L 5.328125 -10.140625 C 6.035156 -10.140625 6.628906 -10.039062 7.109375 -9.84375 C 7.585938 -9.644531 7.976562 -9.359375 8.28125 -8.984375 C 8.582031 -8.609375 8.800781 -8.148438 8.9375 -7.609375 C 9.070312 -7.066406 9.140625 -6.457031 9.140625 -5.78125 C 9.140625 -5.070312 9.066406 -4.46875 8.921875 -3.96875 C 8.773438 -3.476562 8.585938 -3.066406 8.359375 -2.734375 C 8.140625 -2.398438 7.890625 -2.132812 7.609375 -1.9375 C 7.328125 -1.75 7.039062 -1.601562 6.75 -1.5 C 6.457031 -1.40625 6.179688 -1.34375 5.921875 -1.3125 C 5.671875 -1.289062 5.460938 -1.28125 5.296875 -1.28125 Z M 1.25 -11.421875 L 1.25 0 L 5.171875 0 C 6.117188 0 6.9375 -0.128906 7.625 -0.390625 C 8.320312 -0.660156 8.894531 -1.046875 9.34375 -1.546875 C 9.789062 -2.054688 10.117188 -2.679688 10.328125 -3.421875 C 10.546875 -4.171875 10.65625 -5.023438 10.65625 -5.984375 C 10.65625 -7.816406 10.179688 -9.179688 9.234375 -10.078125 C 8.285156 -10.972656 6.929688 -11.421875 5.171875 -11.421875 Z M 1.25 -11.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 8.359375 -0.03125 C 8.117188 0.101562 7.789062 0.171875 7.375 0.171875 C 7.019531 0.171875 6.738281 0.0703125 6.53125 -0.125 C 6.320312 -0.320312 6.21875 -0.644531 6.21875 -1.09375 C 5.84375 -0.644531 5.40625 -0.320312 4.90625 -0.125 C 4.414062 0.0703125 3.882812 0.171875 3.3125 0.171875 C 2.9375 0.171875 2.582031 0.128906 2.25 0.046875 C 1.914062 -0.0351562 1.625 -0.164062 1.375 -0.34375 C 1.132812 -0.53125 0.941406 -0.769531 0.796875 -1.0625 C 0.648438 -1.351562 0.578125 -1.707031 0.578125 -2.125 C 0.578125 -2.59375 0.65625 -2.976562 0.8125 -3.28125 C 0.976562 -3.582031 1.191406 -3.820312 1.453125 -4 C 1.710938 -4.1875 2.007812 -4.328125 2.34375 -4.421875 C 2.675781 -4.523438 3.019531 -4.609375 3.375 -4.671875 C 3.75 -4.742188 4.101562 -4.796875 4.4375 -4.828125 C 4.769531 -4.867188 5.066406 -4.925781 5.328125 -5 C 5.585938 -5.070312 5.789062 -5.171875 5.9375 -5.296875 C 6.082031 -5.429688 6.15625 -5.628906 6.15625 -5.890625 C 6.15625 -6.191406 6.097656 -6.429688 5.984375 -6.609375 C 5.878906 -6.785156 5.738281 -6.921875 5.5625 -7.015625 C 5.382812 -7.117188 5.1875 -7.1875 4.96875 -7.21875 C 4.75 -7.25 4.53125 -7.265625 4.3125 -7.265625 C 3.738281 -7.265625 3.257812 -7.15625 2.875 -6.9375 C 2.488281 -6.71875 2.28125 -6.304688 2.25 -5.703125 L 0.890625 -5.703125 C 0.910156 -6.210938 1.015625 -6.640625 1.203125 -6.984375 C 1.398438 -7.335938 1.660156 -7.625 1.984375 -7.84375 C 2.304688 -8.0625 2.671875 -8.21875 3.078125 -8.3125 C 3.492188 -8.414062 3.9375 -8.46875 4.40625 -8.46875 C 4.769531 -8.46875 5.132812 -8.4375 5.5 -8.375 C 5.875 -8.320312 6.207031 -8.210938 6.5 -8.046875 C 6.800781 -7.890625 7.039062 -7.660156 7.21875 -7.359375 C 7.40625 -7.054688 7.5 -6.664062 7.5 -6.1875 L 7.5 -1.9375 C 7.5 -1.613281 7.515625 -1.378906 7.546875 -1.234375 C 7.585938 -1.085938 7.71875 -1.015625 7.9375 -1.015625 C 8.050781 -1.015625 8.191406 -1.039062 8.359375 -1.09375 Z M 6.140625 -4.265625 C 5.972656 -4.140625 5.75 -4.046875 5.46875 -3.984375 C 5.195312 -3.929688 4.90625 -3.882812 4.59375 -3.84375 C 4.289062 -3.8125 3.984375 -3.769531 3.671875 -3.71875 C 3.367188 -3.664062 3.09375 -3.585938 2.84375 -3.484375 C 2.601562 -3.378906 2.40625 -3.226562 2.25 -3.03125 C 2.09375 -2.832031 2.015625 -2.5625 2.015625 -2.21875 C 2.015625 -2 2.054688 -1.8125 2.140625 -1.65625 C 2.234375 -1.5 2.351562 -1.375 2.5 -1.28125 C 2.644531 -1.1875 2.8125 -1.117188 3 -1.078125 C 3.195312 -1.035156 3.398438 -1.015625 3.609375 -1.015625 C 4.054688 -1.015625 4.441406 -1.070312 4.765625 -1.1875 C 5.085938 -1.3125 5.347656 -1.46875 5.546875 -1.65625 C 5.753906 -1.84375 5.90625 -2.046875 6 -2.265625 C 6.09375 -2.484375 6.140625 -2.6875 6.140625 -2.875 Z M 6.140625 -4.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M 9.796875 -1.421875 L 10.1875 0 L 11.15625 0 L 11.15625 -6.015625 L 6.140625 -6.015625 L 6.140625 -4.734375 L 9.796875 -4.734375 C 9.816406 -4.210938 9.742188 -3.722656 9.578125 -3.265625 C 9.421875 -2.816406 9.1875 -2.421875 8.875 -2.078125 C 8.5625 -1.742188 8.175781 -1.484375 7.71875 -1.296875 C 7.257812 -1.109375 6.726562 -1.015625 6.125 -1.015625 C 5.488281 -1.015625 4.925781 -1.140625 4.4375 -1.390625 C 3.957031 -1.640625 3.550781 -1.972656 3.21875 -2.390625 C 2.882812 -2.816406 2.628906 -3.300781 2.453125 -3.84375 C 2.285156 -4.394531 2.203125 -4.96875 2.203125 -5.5625 C 2.203125 -6.175781 2.273438 -6.769531 2.421875 -7.34375 C 2.578125 -7.925781 2.8125 -8.441406 3.125 -8.890625 C 3.4375 -9.347656 3.84375 -9.71875 4.34375 -10 C 4.84375 -10.28125 5.4375 -10.421875 6.125 -10.421875 C 6.550781 -10.421875 6.953125 -10.367188 7.328125 -10.265625 C 7.710938 -10.160156 8.050781 -10.003906 8.34375 -9.796875 C 8.644531 -9.597656 8.894531 -9.34375 9.09375 -9.03125 C 9.300781 -8.71875 9.441406 -8.34375 9.515625 -7.90625 L 11.046875 -7.90625 C 10.929688 -8.570312 10.726562 -9.144531 10.4375 -9.625 C 10.144531 -10.101562 9.78125 -10.492188 9.34375 -10.796875 C 8.914062 -11.109375 8.425781 -11.335938 7.875 -11.484375 C 7.332031 -11.628906 6.75 -11.703125 6.125 -11.703125 C 5.21875 -11.703125 4.425781 -11.53125 3.75 -11.1875 C 3.070312 -10.851562 2.503906 -10.398438 2.046875 -9.828125 C 1.597656 -9.265625 1.257812 -8.609375 1.03125 -7.859375 C 0.800781 -7.109375 0.6875 -6.316406 0.6875 -5.484375 C 0.6875 -4.742188 0.804688 -4.023438 1.046875 -3.328125 C 1.296875 -2.628906 1.65625 -2.015625 2.125 -1.484375 C 2.59375 -0.953125 3.160156 -0.53125 3.828125 -0.21875 C 4.503906 0.09375 5.269531 0.25 6.125 0.25 C 6.800781 0.25 7.46875 0.117188 8.125 -0.140625 C 8.789062 -0.398438 9.347656 -0.828125 9.796875 -1.421875 Z M 9.796875 -1.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 6.765625 -4.921875 L 2.015625 -4.921875 C 2.035156 -5.242188 2.101562 -5.546875 2.21875 -5.828125 C 2.34375 -6.109375 2.503906 -6.351562 2.703125 -6.5625 C 2.910156 -6.78125 3.15625 -6.953125 3.4375 -7.078125 C 3.71875 -7.203125 4.035156 -7.265625 4.390625 -7.265625 C 4.722656 -7.265625 5.03125 -7.203125 5.3125 -7.078125 C 5.601562 -6.953125 5.851562 -6.785156 6.0625 -6.578125 C 6.269531 -6.367188 6.429688 -6.117188 6.546875 -5.828125 C 6.671875 -5.546875 6.742188 -5.242188 6.765625 -4.921875 Z M 8.078125 -2.625 L 6.734375 -2.625 C 6.617188 -2.082031 6.375 -1.675781 6 -1.40625 C 5.632812 -1.144531 5.164062 -1.015625 4.59375 -1.015625 C 4.144531 -1.015625 3.753906 -1.085938 3.421875 -1.234375 C 3.085938 -1.378906 2.8125 -1.578125 2.59375 -1.828125 C 2.382812 -2.078125 2.234375 -2.363281 2.140625 -2.6875 C 2.046875 -3.019531 2.003906 -3.367188 2.015625 -3.734375 L 8.203125 -3.734375 C 8.222656 -4.234375 8.175781 -4.757812 8.0625 -5.3125 C 7.957031 -5.863281 7.757812 -6.375 7.46875 -6.84375 C 7.175781 -7.3125 6.785156 -7.695312 6.296875 -8 C 5.804688 -8.3125 5.195312 -8.46875 4.46875 -8.46875 C 3.894531 -8.46875 3.367188 -8.359375 2.890625 -8.140625 C 2.421875 -7.929688 2.015625 -7.632812 1.671875 -7.25 C 1.328125 -6.863281 1.054688 -6.410156 0.859375 -5.890625 C 0.671875 -5.367188 0.578125 -4.789062 0.578125 -4.15625 C 0.597656 -3.53125 0.691406 -2.945312 0.859375 -2.40625 C 1.023438 -1.875 1.269531 -1.414062 1.59375 -1.03125 C 1.925781 -0.65625 2.332031 -0.359375 2.8125 -0.140625 C 3.300781 0.0664062 3.878906 0.171875 4.546875 0.171875 C 5.484375 0.171875 6.257812 -0.0625 6.875 -0.53125 C 7.5 -1 7.898438 -1.695312 8.078125 -2.625 Z M 8.078125 -2.625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0.96875 -8.265625 L 0.96875 0 L 2.34375 0 L 2.34375 -3.6875 C 2.34375 -4.21875 2.394531 -4.6875 2.5 -5.09375 C 2.601562 -5.507812 2.769531 -5.859375 3 -6.140625 C 3.238281 -6.429688 3.550781 -6.648438 3.9375 -6.796875 C 4.320312 -6.953125 4.785156 -7.03125 5.328125 -7.03125 L 5.328125 -8.46875 C 4.585938 -8.488281 3.976562 -8.335938 3.5 -8.015625 C 3.019531 -7.691406 2.613281 -7.195312 2.28125 -6.53125 L 2.25 -6.53125 L 2.25 -8.265625 Z M 0.96875 -8.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d="M 2.125 -5.71875 C 2.125 -6.289062 2.195312 -6.851562 2.34375 -7.40625 C 2.5 -7.96875 2.734375 -8.472656 3.046875 -8.921875 C 3.367188 -9.367188 3.78125 -9.726562 4.28125 -10 C 4.789062 -10.28125 5.390625 -10.421875 6.078125 -10.421875 C 6.773438 -10.421875 7.375 -10.28125 7.875 -10 C 8.375 -9.726562 8.78125 -9.367188 9.09375 -8.921875 C 9.414062 -8.472656 9.648438 -7.96875 9.796875 -7.40625 C 9.953125 -6.851562 10.03125 -6.289062 10.03125 -5.71875 C 10.03125 -5.132812 9.953125 -4.5625 9.796875 -4 C 9.648438 -3.445312 9.414062 -2.945312 9.09375 -2.5 C 8.78125 -2.050781 8.375 -1.691406 7.875 -1.421875 C 7.375 -1.148438 6.773438 -1.015625 6.078125 -1.015625 C 5.390625 -1.015625 4.789062 -1.148438 4.28125 -1.421875 C 3.78125 -1.691406 3.367188 -2.050781 3.046875 -2.5 C 2.734375 -2.945312 2.5 -3.445312 2.34375 -4 C 2.195312 -4.5625 2.125 -5.132812 2.125 -5.71875 Z M 0.609375 -5.71875 C 0.609375 -4.9375 0.722656 -4.1875 0.953125 -3.46875 C 1.179688 -2.75 1.523438 -2.109375 1.984375 -1.546875 C 2.441406 -0.992188 3.007812 -0.554688 3.6875 -0.234375 C 4.375 0.0859375 5.171875 0.25 6.078125 0.25 C 6.984375 0.25 7.773438 0.0859375 8.453125 -0.234375 C 9.140625 -0.554688 9.710938 -0.992188 10.171875 -1.546875 C 10.628906 -2.109375 10.972656 -2.75 11.203125 -3.46875 C 11.429688 -4.1875 11.546875 -4.9375 11.546875 -5.71875 C 11.546875 -6.488281 11.429688 -7.234375 11.203125 -7.953125 C 10.972656 -8.679688 10.628906 -9.320312 10.171875 -9.875 C 9.710938 -10.425781 9.140625 -10.867188 8.453125 -11.203125 C 7.773438 -11.535156 6.984375 -11.703125 6.078125 -11.703125 C 5.171875 -11.703125 4.375 -11.535156 3.6875 -11.203125 C 3.007812 -10.867188 2.441406 -10.425781 1.984375 -9.875 C 1.523438 -9.320312 1.179688 -8.679688 0.953125 -7.953125 C 0.722656 -7.234375 0.609375 -6.488281 0.609375 -5.71875 Z M 0.609375 -5.71875 "/> +</symbol> +</g> +</defs> +<g id="surface1"> +<rect x="0" y="0" width="535" height="427" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 486 333 L 585 333 L 585 387 L 486 387 Z M 486 333 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="238.15039" y="231"/> + <use xlink:href="#glyph0-2" x="246.81679" y="231"/> + <use xlink:href="#glyph0-3" x="253.49119" y="231"/> + <use xlink:href="#glyph0-4" x="260.16559" y="231"/> + <use xlink:href="#glyph0-5" x="266.83999" y="231"/> + <use xlink:href="#glyph0-6" x="270.17839" y="231"/> + <use xlink:href="#glyph0-4" x="279.51679" y="231"/> + <use xlink:href="#glyph0-7" x="286.19119" y="231"/> + <use xlink:href="#glyph0-8" x="292.86559" y="231"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 279 144 L 459 144 L 459 549 L 279 549 Z M 279 144 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.5 240.589844 C 418.832031 249.375 418.832031 263.625 399.5 272.410156 C 380.171875 281.195312 348.828125 281.195312 329.5 272.410156 C 310.167969 263.625 310.167969 249.375 329.5 240.589844 C 348.828125 231.804688 380.171875 231.804688 399.5 240.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="68.82031" y="127.5"/> + <use xlink:href="#glyph0-7" x="77.48671" y="127.5"/> + <use xlink:href="#glyph0-10" x="84.16111" y="127.5"/> + <use xlink:href="#glyph0-7" x="87.49951" y="127.5"/> + <use xlink:href="#glyph0-5" x="94.17391" y="127.5"/> + <use xlink:href="#glyph0-6" x="97.51231" y="127.5"/> + <use xlink:href="#glyph0-4" x="106.85071" y="127.5"/> + <use xlink:href="#glyph0-7" x="113.52511" y="127.5"/> + <use xlink:href="#glyph0-8" x="120.19951" y="127.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 393.902344 275.011719 L 477.203125 327.453125 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 483.972656 331.714844 L 478.800781 324.914062 L 475.605469 329.992188 Z M 483.972656 331.714844 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="44.248" y="58.776001"/> + <use xlink:href="#glyph1-2" x="48.392" y="58.776001"/> + <use xlink:href="#glyph1-3" x="57.288" y="58.776001"/> + <use xlink:href="#glyph1-4" x="66.776" y="58.776001"/> + <use xlink:href="#glyph1-5" x="75.672" y="58.776001"/> + <use xlink:href="#glyph1-6" x="80.712" y="58.776001"/> + <use xlink:href="#glyph1-7" x="85.16" y="58.776001"/> + <use xlink:href="#glyph1-8" x="96.424" y="58.776001"/> + <use xlink:href="#glyph1-5" x="105.016" y="58.776001"/> + <use xlink:href="#glyph1-8" x="110.056" y="58.776001"/> + <use xlink:href="#glyph1-6" x="118.648" y="58.776001"/> + <use xlink:href="#glyph1-9" x="123.096" y="58.776001"/> + <use xlink:href="#glyph1-10" x="135.24" y="58.776001"/> + <use xlink:href="#glyph1-8" x="143.832" y="58.776001"/> + <use xlink:href="#glyph1-11" x="152.424" y="58.776001"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.5 339.589844 C 418.832031 348.375 418.832031 362.625 399.5 371.410156 C 380.171875 380.195312 348.828125 380.195312 329.5 371.410156 C 310.167969 362.625 310.167969 348.375 329.5 339.589844 C 348.828125 330.804688 380.171875 330.804688 399.5 339.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="68.82031" y="226.5"/> + <use xlink:href="#glyph0-7" x="77.48671" y="226.5"/> + <use xlink:href="#glyph0-10" x="84.16111" y="226.5"/> + <use xlink:href="#glyph0-7" x="87.49951" y="226.5"/> + <use xlink:href="#glyph0-5" x="94.17391" y="226.5"/> + <use xlink:href="#glyph0-6" x="97.51231" y="226.5"/> + <use xlink:href="#glyph0-4" x="106.85071" y="226.5"/> + <use xlink:href="#glyph0-7" x="113.52511" y="226.5"/> + <use xlink:href="#glyph0-8" x="120.19951" y="226.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.5 438.589844 C 418.832031 447.375 418.832031 461.625 399.5 470.410156 C 380.171875 479.195312 348.828125 479.195312 329.5 470.410156 C 310.167969 461.625 310.167969 447.375 329.5 438.589844 C 348.828125 429.804688 380.171875 429.804688 399.5 438.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="68.82031" y="325.5"/> + <use xlink:href="#glyph0-7" x="77.48671" y="325.5"/> + <use xlink:href="#glyph0-10" x="84.16111" y="325.5"/> + <use xlink:href="#glyph0-7" x="87.49951" y="325.5"/> + <use xlink:href="#glyph0-5" x="94.17391" y="325.5"/> + <use xlink:href="#glyph0-6" x="97.51231" y="325.5"/> + <use xlink:href="#glyph0-4" x="106.85071" y="325.5"/> + <use xlink:href="#glyph0-7" x="113.52511" y="325.5"/> + <use xlink:href="#glyph0-8" x="120.19951" y="325.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 414.339844 357.335938 L 475.609375 359.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 483.601562 359.886719 L 475.71875 356.59375 L 475.5 362.589844 Z M 483.601562 359.886719 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 396.285156 436.84375 L 477.347656 391.808594 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 484.339844 387.921875 L 475.890625 389.183594 L 478.804688 394.429688 Z M 484.339844 387.921875 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 612 216 L 792 216 L 792 477 L 612 477 Z M 612 216 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 732.5 303.589844 C 751.832031 312.375 751.832031 326.625 732.5 335.410156 C 713.171875 344.195312 681.828125 344.195312 662.5 335.410156 C 643.167969 326.625 643.167969 312.375 662.5 303.589844 C 681.828125 294.804688 713.171875 294.804688 732.5 303.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="401.82031" y="190.5"/> + <use xlink:href="#glyph0-7" x="410.48671" y="190.5"/> + <use xlink:href="#glyph0-10" x="417.16111" y="190.5"/> + <use xlink:href="#glyph0-7" x="420.49951" y="190.5"/> + <use xlink:href="#glyph0-5" x="427.17391" y="190.5"/> + <use xlink:href="#glyph0-6" x="430.51231" y="190.5"/> + <use xlink:href="#glyph0-4" x="439.85071" y="190.5"/> + <use xlink:href="#glyph0-7" x="446.52511" y="190.5"/> + <use xlink:href="#glyph0-8" x="453.19951" y="190.5"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-12" x="370.72" y="130.776001"/> + <use xlink:href="#glyph1-4" x="382.88" y="130.776001"/> + <use xlink:href="#glyph1-5" x="391.776" y="130.776001"/> + <use xlink:href="#glyph1-3" x="396.816" y="130.776001"/> + <use xlink:href="#glyph1-4" x="406.304" y="130.776001"/> + <use xlink:href="#glyph1-5" x="415.2" y="130.776001"/> + <use xlink:href="#glyph1-6" x="420.24" y="130.776001"/> + <use xlink:href="#glyph1-7" x="424.688" y="130.776001"/> + <use xlink:href="#glyph1-8" x="435.952" y="130.776001"/> + <use xlink:href="#glyph1-5" x="444.544" y="130.776001"/> + <use xlink:href="#glyph1-8" x="449.584" y="130.776001"/> + <use xlink:href="#glyph1-6" x="458.176" y="130.776001"/> + <use xlink:href="#glyph1-9" x="462.624" y="130.776001"/> + <use xlink:href="#glyph1-10" x="474.768" y="130.776001"/> + <use xlink:href="#glyph1-8" x="483.36" y="130.776001"/> + <use xlink:href="#glyph1-11" x="491.952" y="130.776001"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 732.5 384.589844 C 751.832031 393.375 751.832031 407.625 732.5 416.410156 C 713.171875 425.195312 681.828125 425.195312 662.5 416.410156 C 643.167969 407.625 643.167969 393.375 662.5 384.589844 C 681.828125 375.804688 713.171875 375.804688 732.5 384.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="401.82031" y="271.5"/> + <use xlink:href="#glyph0-7" x="410.48671" y="271.5"/> + <use xlink:href="#glyph0-10" x="417.16111" y="271.5"/> + <use xlink:href="#glyph0-7" x="420.49951" y="271.5"/> + <use xlink:href="#glyph0-5" x="427.17391" y="271.5"/> + <use xlink:href="#glyph0-6" x="430.51231" y="271.5"/> + <use xlink:href="#glyph0-4" x="439.85071" y="271.5"/> + <use xlink:href="#glyph0-7" x="446.52511" y="271.5"/> + <use xlink:href="#glyph0-8" x="453.19951" y="271.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 585 348.378906 L 644.3125 333.152344 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 652.0625 331.164062 L 643.566406 330.246094 L 645.058594 336.058594 Z M 652.0625 331.164062 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 585 378 L 641.980469 389.394531 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 649.828125 390.964844 L 642.570312 386.453125 L 641.394531 392.339844 Z M 649.828125 390.964844 " transform="matrix(1,0,0,1,-268,-133)"/> +</g> +</svg>
--- a/presen/images/codeGear_dataGear.svg Sun May 29 19:28:03 2016 +0900 +++ b/presen/images/codeGear_dataGear.svg Mon May 30 02:01:33 2016 +0900 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="463pt" height="76pt" viewBox="0 0 463 76" version="1.1"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="535pt" height="427pt" viewBox="0 0 535 427" version="1.1"> <defs> <g> <symbol overflow="visible" id="glyph0-0"> @@ -30,100 +30,172 @@ <path style="stroke:none;" d="M 0.796875 -6.28125 L 1.8125 -6.28125 L 1.8125 -5.1875 C 1.882812 -5.40625 2.082031 -5.664062 2.40625 -5.96875 C 2.726562 -6.269531 3.097656 -6.421875 3.515625 -6.421875 C 3.535156 -6.421875 3.566406 -6.414062 3.609375 -6.40625 C 3.660156 -6.40625 3.742188 -6.398438 3.859375 -6.390625 L 3.859375 -5.28125 C 3.796875 -5.289062 3.738281 -5.296875 3.6875 -5.296875 C 3.632812 -5.296875 3.578125 -5.296875 3.515625 -5.296875 C 2.984375 -5.296875 2.570312 -5.125 2.28125 -4.78125 C 2 -4.445312 1.859375 -4.054688 1.859375 -3.609375 L 1.859375 0 L 0.796875 0 Z M 0.796875 -6.28125 "/> </symbol> <symbol overflow="visible" id="glyph0-9"> -<path style="stroke:none;" d="M 0.78125 -6.25 L 1.84375 -6.25 L 1.84375 0 L 0.78125 0 Z M 0.78125 -8.609375 L 1.84375 -8.609375 L 1.84375 -7.40625 L 0.78125 -7.40625 Z M 0.78125 -8.609375 "/> +<path style="stroke:none;" d="M 4.21875 -1 C 4.613281 -1 4.9375 -1.039062 5.1875 -1.125 C 5.644531 -1.269531 6.019531 -1.5625 6.3125 -2 C 6.539062 -2.34375 6.703125 -2.785156 6.796875 -3.328125 C 6.859375 -3.660156 6.890625 -3.960938 6.890625 -4.234375 C 6.890625 -5.304688 6.675781 -6.132812 6.25 -6.71875 C 5.832031 -7.3125 5.148438 -7.609375 4.203125 -7.609375 L 2.140625 -7.609375 L 2.140625 -1 Z M 0.96875 -8.609375 L 4.453125 -8.609375 C 5.640625 -8.609375 6.554688 -8.1875 7.203125 -7.34375 C 7.785156 -6.59375 8.078125 -5.625 8.078125 -4.4375 C 8.078125 -3.519531 7.90625 -2.691406 7.5625 -1.953125 C 6.957031 -0.648438 5.914062 0 4.4375 0 L 0.96875 0 Z M 0.96875 -8.609375 "/> </symbol> <symbol overflow="visible" id="glyph0-10"> -<path style="stroke:none;" d="M 0.78125 -6.28125 L 1.78125 -6.28125 L 1.78125 -5.390625 C 2.070312 -5.753906 2.382812 -6.015625 2.71875 -6.171875 C 3.050781 -6.335938 3.421875 -6.421875 3.828125 -6.421875 C 4.710938 -6.421875 5.3125 -6.109375 5.625 -5.484375 C 5.800781 -5.140625 5.890625 -4.65625 5.890625 -4.03125 L 5.890625 0 L 4.8125 0 L 4.8125 -3.953125 C 4.8125 -4.335938 4.753906 -4.644531 4.640625 -4.875 C 4.453125 -5.269531 4.113281 -5.46875 3.625 -5.46875 C 3.375 -5.46875 3.171875 -5.441406 3.015625 -5.390625 C 2.722656 -5.304688 2.46875 -5.132812 2.25 -4.875 C 2.070312 -4.664062 1.957031 -4.453125 1.90625 -4.234375 C 1.851562 -4.015625 1.828125 -3.695312 1.828125 -3.28125 L 1.828125 0 L 0.78125 0 Z M 3.25 -6.421875 Z M 3.25 -6.421875 "/> -</symbol> -<symbol overflow="visible" id="glyph0-11"> -<path style="stroke:none;" d="M 3.421875 -0.703125 C 3.910156 -0.703125 4.316406 -0.910156 4.640625 -1.328125 C 4.972656 -1.742188 5.140625 -2.359375 5.140625 -3.171875 C 5.140625 -3.671875 5.066406 -4.101562 4.921875 -4.46875 C 4.648438 -5.15625 4.148438 -5.5 3.421875 -5.5 C 2.691406 -5.5 2.191406 -5.132812 1.921875 -4.40625 C 1.773438 -4.019531 1.703125 -3.523438 1.703125 -2.921875 C 1.703125 -2.429688 1.773438 -2.019531 1.921875 -1.6875 C 2.191406 -1.03125 2.691406 -0.703125 3.421875 -0.703125 Z M 0.6875 -6.25 L 1.71875 -6.25 L 1.71875 -5.421875 C 1.925781 -5.703125 2.15625 -5.921875 2.40625 -6.078125 C 2.757812 -6.304688 3.175781 -6.421875 3.65625 -6.421875 C 4.375 -6.421875 4.976562 -6.148438 5.46875 -5.609375 C 5.96875 -5.066406 6.21875 -4.289062 6.21875 -3.28125 C 6.21875 -1.90625 5.859375 -0.925781 5.140625 -0.34375 C 4.691406 0.03125 4.164062 0.21875 3.5625 0.21875 C 3.09375 0.21875 2.695312 0.113281 2.375 -0.09375 C 2.1875 -0.21875 1.976562 -0.421875 1.75 -0.703125 L 1.75 2.5 L 0.6875 2.5 Z M 0.6875 -6.25 "/> -</symbol> -<symbol overflow="visible" id="glyph0-12"> -<path style="stroke:none;" d="M 1.828125 -6.28125 L 1.828125 -2.109375 C 1.828125 -1.785156 1.878906 -1.523438 1.984375 -1.328125 C 2.171875 -0.953125 2.519531 -0.765625 3.03125 -0.765625 C 3.757812 -0.765625 4.257812 -1.09375 4.53125 -1.75 C 4.675781 -2.101562 4.75 -2.582031 4.75 -3.1875 L 4.75 -6.28125 L 5.796875 -6.28125 L 5.796875 0 L 4.8125 0 L 4.8125 -0.921875 C 4.675781 -0.679688 4.507812 -0.484375 4.3125 -0.328125 C 3.90625 0.00390625 3.414062 0.171875 2.84375 0.171875 C 1.945312 0.171875 1.335938 -0.128906 1.015625 -0.734375 C 0.835938 -1.046875 0.75 -1.472656 0.75 -2.015625 L 0.75 -6.28125 Z M 3.28125 -6.421875 Z M 3.28125 -6.421875 "/> -</symbol> -<symbol overflow="visible" id="glyph0-13"> <path style="stroke:none;" d="M 0.984375 -8.03125 L 2.046875 -8.03125 L 2.046875 -6.28125 L 3.046875 -6.28125 L 3.046875 -5.421875 L 2.046875 -5.421875 L 2.046875 -1.3125 C 2.046875 -1.09375 2.125 -0.945312 2.28125 -0.875 C 2.351562 -0.832031 2.488281 -0.8125 2.6875 -0.8125 C 2.738281 -0.8125 2.789062 -0.8125 2.84375 -0.8125 C 2.90625 -0.820312 2.972656 -0.828125 3.046875 -0.828125 L 3.046875 0 C 2.929688 0.03125 2.804688 0.0507812 2.671875 0.0625 C 2.546875 0.0820312 2.40625 0.09375 2.25 0.09375 C 1.757812 0.09375 1.425781 -0.03125 1.25 -0.28125 C 1.070312 -0.53125 0.984375 -0.859375 0.984375 -1.265625 L 0.984375 -5.421875 L 0.140625 -5.421875 L 0.140625 -6.28125 L 0.984375 -6.28125 Z M 0.984375 -8.03125 "/> </symbol> -<symbol overflow="visible" id="glyph0-14"> -<path style="stroke:none;" d="M 4.21875 -1 C 4.613281 -1 4.9375 -1.039062 5.1875 -1.125 C 5.644531 -1.269531 6.019531 -1.5625 6.3125 -2 C 6.539062 -2.34375 6.703125 -2.785156 6.796875 -3.328125 C 6.859375 -3.660156 6.890625 -3.960938 6.890625 -4.234375 C 6.890625 -5.304688 6.675781 -6.132812 6.25 -6.71875 C 5.832031 -7.3125 5.148438 -7.609375 4.203125 -7.609375 L 2.140625 -7.609375 L 2.140625 -1 Z M 0.96875 -8.609375 L 4.453125 -8.609375 C 5.640625 -8.609375 6.554688 -8.1875 7.203125 -7.34375 C 7.785156 -6.59375 8.078125 -5.625 8.078125 -4.4375 C 8.078125 -3.519531 7.90625 -2.691406 7.5625 -1.953125 C 6.957031 -0.648438 5.914062 0 4.4375 0 L 0.96875 0 Z M 0.96875 -8.609375 "/> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 6.546875 -10.65625 L 1.625 -10.65625 L 1.625 -0.75 L 6.546875 -0.75 Z M 7.359375 -11.390625 L 7.359375 -0.015625 L 0.8125 -0.015625 L 0.8125 -11.390625 Z M 7.359375 -11.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 1.3125 -11.421875 L 1.3125 0 L 2.828125 0 L 2.828125 -11.421875 Z M 1.3125 -11.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 1.03125 -8.265625 L 1.03125 0 L 2.390625 0 L 2.390625 -4.671875 C 2.390625 -5.046875 2.4375 -5.390625 2.53125 -5.703125 C 2.632812 -6.015625 2.785156 -6.285156 2.984375 -6.515625 C 3.191406 -6.753906 3.445312 -6.9375 3.75 -7.0625 C 4.050781 -7.195312 4.410156 -7.265625 4.828125 -7.265625 C 5.347656 -7.265625 5.757812 -7.113281 6.0625 -6.8125 C 6.363281 -6.519531 6.515625 -6.113281 6.515625 -5.59375 L 6.515625 0 L 7.875 0 L 7.875 -5.4375 C 7.875 -5.882812 7.828125 -6.289062 7.734375 -6.65625 C 7.640625 -7.03125 7.476562 -7.347656 7.25 -7.609375 C 7.03125 -7.878906 6.738281 -8.085938 6.375 -8.234375 C 6.019531 -8.390625 5.570312 -8.46875 5.03125 -8.46875 C 3.800781 -8.46875 2.90625 -7.960938 2.34375 -6.953125 L 2.296875 -6.953125 L 2.296875 -8.265625 Z M 1.03125 -8.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M 1.078125 -8.265625 L 1.078125 3.15625 L 2.4375 3.15625 L 2.4375 -1.109375 L 2.46875 -1.109375 C 2.613281 -0.859375 2.796875 -0.648438 3.015625 -0.484375 C 3.234375 -0.316406 3.460938 -0.1875 3.703125 -0.09375 C 3.953125 0 4.203125 0.0664062 4.453125 0.109375 C 4.703125 0.148438 4.929688 0.171875 5.140625 0.171875 C 5.765625 0.171875 6.3125 0.0625 6.78125 -0.15625 C 7.257812 -0.382812 7.65625 -0.691406 7.96875 -1.078125 C 8.289062 -1.460938 8.523438 -1.914062 8.671875 -2.4375 C 8.828125 -2.96875 8.90625 -3.523438 8.90625 -4.109375 C 8.90625 -4.691406 8.828125 -5.242188 8.671875 -5.765625 C 8.515625 -6.296875 8.273438 -6.757812 7.953125 -7.15625 C 7.640625 -7.5625 7.242188 -7.878906 6.765625 -8.109375 C 6.296875 -8.347656 5.742188 -8.46875 5.109375 -8.46875 C 4.523438 -8.46875 3.992188 -8.363281 3.515625 -8.15625 C 3.035156 -7.945312 2.6875 -7.613281 2.46875 -7.15625 L 2.4375 -7.15625 L 2.4375 -8.265625 Z M 7.46875 -4.203125 C 7.46875 -3.796875 7.425781 -3.398438 7.34375 -3.015625 C 7.257812 -2.640625 7.117188 -2.300781 6.921875 -2 C 6.734375 -1.695312 6.484375 -1.457031 6.171875 -1.28125 C 5.859375 -1.101562 5.460938 -1.015625 4.984375 -1.015625 C 4.515625 -1.015625 4.113281 -1.097656 3.78125 -1.265625 C 3.457031 -1.441406 3.191406 -1.675781 2.984375 -1.96875 C 2.773438 -2.257812 2.625 -2.59375 2.53125 -2.96875 C 2.4375 -3.34375 2.390625 -3.734375 2.390625 -4.140625 C 2.390625 -4.523438 2.429688 -4.90625 2.515625 -5.28125 C 2.609375 -5.65625 2.753906 -5.988281 2.953125 -6.28125 C 3.160156 -6.570312 3.421875 -6.804688 3.734375 -6.984375 C 4.054688 -7.171875 4.445312 -7.265625 4.90625 -7.265625 C 5.34375 -7.265625 5.722656 -7.175781 6.046875 -7 C 6.378906 -6.832031 6.648438 -6.601562 6.859375 -6.3125 C 7.066406 -6.03125 7.21875 -5.703125 7.3125 -5.328125 C 7.414062 -4.960938 7.46875 -4.585938 7.46875 -4.203125 Z M 7.46875 -4.203125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 7.875 0 L 7.875 -8.265625 L 6.515625 -8.265625 L 6.515625 -3.59375 C 6.515625 -3.226562 6.460938 -2.882812 6.359375 -2.5625 C 6.253906 -2.25 6.097656 -1.972656 5.890625 -1.734375 C 5.691406 -1.503906 5.441406 -1.328125 5.140625 -1.203125 C 4.835938 -1.078125 4.476562 -1.015625 4.0625 -1.015625 C 3.539062 -1.015625 3.128906 -1.160156 2.828125 -1.453125 C 2.535156 -1.753906 2.390625 -2.160156 2.390625 -2.671875 L 2.390625 -8.265625 L 1.03125 -8.265625 L 1.03125 -2.828125 C 1.03125 -2.378906 1.070312 -1.972656 1.15625 -1.609375 C 1.25 -1.242188 1.40625 -0.925781 1.625 -0.65625 C 1.851562 -0.382812 2.148438 -0.175781 2.515625 -0.03125 C 2.878906 0.101562 3.332031 0.171875 3.875 0.171875 C 4.476562 0.171875 5.003906 0.0507812 5.453125 -0.1875 C 5.898438 -0.425781 6.269531 -0.800781 6.5625 -1.3125 L 6.59375 -1.3125 L 6.59375 0 Z M 7.875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M 2.90625 -8.265625 L 2.90625 -10.75 L 1.546875 -10.75 L 1.546875 -8.265625 L 0.140625 -8.265625 L 0.140625 -7.078125 L 1.546875 -7.078125 L 1.546875 -1.8125 C 1.546875 -1.425781 1.582031 -1.113281 1.65625 -0.875 C 1.738281 -0.644531 1.851562 -0.460938 2 -0.328125 C 2.15625 -0.203125 2.359375 -0.113281 2.609375 -0.0625 C 2.859375 -0.0195312 3.160156 0 3.515625 0 L 4.5625 0 L 4.5625 -1.203125 L 3.9375 -1.203125 C 3.71875 -1.203125 3.539062 -1.207031 3.40625 -1.21875 C 3.28125 -1.238281 3.175781 -1.273438 3.09375 -1.328125 C 3.019531 -1.378906 2.96875 -1.453125 2.9375 -1.546875 C 2.914062 -1.648438 2.90625 -1.78125 2.90625 -1.9375 L 2.90625 -7.078125 L 4.5625 -7.078125 L 4.5625 -8.265625 Z M 2.90625 -8.265625 "/> </symbol> -<symbol overflow="visible" id="glyph0-15"> -<path style="stroke:none;" d="M 1.40625 -1.96875 C 1.4375 -1.613281 1.523438 -1.34375 1.671875 -1.15625 C 1.929688 -0.820312 2.390625 -0.65625 3.046875 -0.65625 C 3.441406 -0.65625 3.785156 -0.738281 4.078125 -0.90625 C 4.378906 -1.070312 4.53125 -1.332031 4.53125 -1.6875 C 4.53125 -1.957031 4.410156 -2.164062 4.171875 -2.3125 C 4.015625 -2.394531 3.710938 -2.492188 3.265625 -2.609375 L 2.421875 -2.8125 C 1.890625 -2.945312 1.5 -3.097656 1.25 -3.265625 C 0.789062 -3.546875 0.5625 -3.941406 0.5625 -4.453125 C 0.5625 -5.046875 0.773438 -5.523438 1.203125 -5.890625 C 1.628906 -6.253906 2.207031 -6.4375 2.9375 -6.4375 C 3.875 -6.4375 4.550781 -6.160156 4.96875 -5.609375 C 5.238281 -5.253906 5.367188 -4.875 5.359375 -4.46875 L 4.359375 -4.46875 C 4.335938 -4.707031 4.253906 -4.925781 4.109375 -5.125 C 3.867188 -5.394531 3.445312 -5.53125 2.84375 -5.53125 C 2.445312 -5.53125 2.144531 -5.453125 1.9375 -5.296875 C 1.738281 -5.148438 1.640625 -4.953125 1.640625 -4.703125 C 1.640625 -4.429688 1.773438 -4.210938 2.046875 -4.046875 C 2.203125 -3.953125 2.429688 -3.867188 2.734375 -3.796875 L 3.421875 -3.625 C 4.179688 -3.4375 4.691406 -3.257812 4.953125 -3.09375 C 5.359375 -2.820312 5.5625 -2.394531 5.5625 -1.8125 C 5.5625 -1.257812 5.347656 -0.78125 4.921875 -0.375 C 4.503906 0.03125 3.863281 0.234375 3 0.234375 C 2.0625 0.234375 1.394531 0.0234375 1 -0.390625 C 0.613281 -0.816406 0.410156 -1.34375 0.390625 -1.96875 Z M 2.953125 -6.421875 Z M 2.953125 -6.421875 "/> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 2.765625 -1.28125 L 2.765625 -10.140625 L 5.328125 -10.140625 C 6.035156 -10.140625 6.628906 -10.039062 7.109375 -9.84375 C 7.585938 -9.644531 7.976562 -9.359375 8.28125 -8.984375 C 8.582031 -8.609375 8.800781 -8.148438 8.9375 -7.609375 C 9.070312 -7.066406 9.140625 -6.457031 9.140625 -5.78125 C 9.140625 -5.070312 9.066406 -4.46875 8.921875 -3.96875 C 8.773438 -3.476562 8.585938 -3.066406 8.359375 -2.734375 C 8.140625 -2.398438 7.890625 -2.132812 7.609375 -1.9375 C 7.328125 -1.75 7.039062 -1.601562 6.75 -1.5 C 6.457031 -1.40625 6.179688 -1.34375 5.921875 -1.3125 C 5.671875 -1.289062 5.460938 -1.28125 5.296875 -1.28125 Z M 1.25 -11.421875 L 1.25 0 L 5.171875 0 C 6.117188 0 6.9375 -0.128906 7.625 -0.390625 C 8.320312 -0.660156 8.894531 -1.046875 9.34375 -1.546875 C 9.789062 -2.054688 10.117188 -2.679688 10.328125 -3.421875 C 10.546875 -4.171875 10.65625 -5.023438 10.65625 -5.984375 C 10.65625 -7.816406 10.179688 -9.179688 9.234375 -10.078125 C 8.285156 -10.972656 6.929688 -11.421875 5.171875 -11.421875 Z M 1.25 -11.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 8.359375 -0.03125 C 8.117188 0.101562 7.789062 0.171875 7.375 0.171875 C 7.019531 0.171875 6.738281 0.0703125 6.53125 -0.125 C 6.320312 -0.320312 6.21875 -0.644531 6.21875 -1.09375 C 5.84375 -0.644531 5.40625 -0.320312 4.90625 -0.125 C 4.414062 0.0703125 3.882812 0.171875 3.3125 0.171875 C 2.9375 0.171875 2.582031 0.128906 2.25 0.046875 C 1.914062 -0.0351562 1.625 -0.164062 1.375 -0.34375 C 1.132812 -0.53125 0.941406 -0.769531 0.796875 -1.0625 C 0.648438 -1.351562 0.578125 -1.707031 0.578125 -2.125 C 0.578125 -2.59375 0.65625 -2.976562 0.8125 -3.28125 C 0.976562 -3.582031 1.191406 -3.820312 1.453125 -4 C 1.710938 -4.1875 2.007812 -4.328125 2.34375 -4.421875 C 2.675781 -4.523438 3.019531 -4.609375 3.375 -4.671875 C 3.75 -4.742188 4.101562 -4.796875 4.4375 -4.828125 C 4.769531 -4.867188 5.066406 -4.925781 5.328125 -5 C 5.585938 -5.070312 5.789062 -5.171875 5.9375 -5.296875 C 6.082031 -5.429688 6.15625 -5.628906 6.15625 -5.890625 C 6.15625 -6.191406 6.097656 -6.429688 5.984375 -6.609375 C 5.878906 -6.785156 5.738281 -6.921875 5.5625 -7.015625 C 5.382812 -7.117188 5.1875 -7.1875 4.96875 -7.21875 C 4.75 -7.25 4.53125 -7.265625 4.3125 -7.265625 C 3.738281 -7.265625 3.257812 -7.15625 2.875 -6.9375 C 2.488281 -6.71875 2.28125 -6.304688 2.25 -5.703125 L 0.890625 -5.703125 C 0.910156 -6.210938 1.015625 -6.640625 1.203125 -6.984375 C 1.398438 -7.335938 1.660156 -7.625 1.984375 -7.84375 C 2.304688 -8.0625 2.671875 -8.21875 3.078125 -8.3125 C 3.492188 -8.414062 3.9375 -8.46875 4.40625 -8.46875 C 4.769531 -8.46875 5.132812 -8.4375 5.5 -8.375 C 5.875 -8.320312 6.207031 -8.210938 6.5 -8.046875 C 6.800781 -7.890625 7.039062 -7.660156 7.21875 -7.359375 C 7.40625 -7.054688 7.5 -6.664062 7.5 -6.1875 L 7.5 -1.9375 C 7.5 -1.613281 7.515625 -1.378906 7.546875 -1.234375 C 7.585938 -1.085938 7.71875 -1.015625 7.9375 -1.015625 C 8.050781 -1.015625 8.191406 -1.039062 8.359375 -1.09375 Z M 6.140625 -4.265625 C 5.972656 -4.140625 5.75 -4.046875 5.46875 -3.984375 C 5.195312 -3.929688 4.90625 -3.882812 4.59375 -3.84375 C 4.289062 -3.8125 3.984375 -3.769531 3.671875 -3.71875 C 3.367188 -3.664062 3.09375 -3.585938 2.84375 -3.484375 C 2.601562 -3.378906 2.40625 -3.226562 2.25 -3.03125 C 2.09375 -2.832031 2.015625 -2.5625 2.015625 -2.21875 C 2.015625 -2 2.054688 -1.8125 2.140625 -1.65625 C 2.234375 -1.5 2.351562 -1.375 2.5 -1.28125 C 2.644531 -1.1875 2.8125 -1.117188 3 -1.078125 C 3.195312 -1.035156 3.398438 -1.015625 3.609375 -1.015625 C 4.054688 -1.015625 4.441406 -1.070312 4.765625 -1.1875 C 5.085938 -1.3125 5.347656 -1.46875 5.546875 -1.65625 C 5.753906 -1.84375 5.90625 -2.046875 6 -2.265625 C 6.09375 -2.484375 6.140625 -2.6875 6.140625 -2.875 Z M 6.140625 -4.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M 9.796875 -1.421875 L 10.1875 0 L 11.15625 0 L 11.15625 -6.015625 L 6.140625 -6.015625 L 6.140625 -4.734375 L 9.796875 -4.734375 C 9.816406 -4.210938 9.742188 -3.722656 9.578125 -3.265625 C 9.421875 -2.816406 9.1875 -2.421875 8.875 -2.078125 C 8.5625 -1.742188 8.175781 -1.484375 7.71875 -1.296875 C 7.257812 -1.109375 6.726562 -1.015625 6.125 -1.015625 C 5.488281 -1.015625 4.925781 -1.140625 4.4375 -1.390625 C 3.957031 -1.640625 3.550781 -1.972656 3.21875 -2.390625 C 2.882812 -2.816406 2.628906 -3.300781 2.453125 -3.84375 C 2.285156 -4.394531 2.203125 -4.96875 2.203125 -5.5625 C 2.203125 -6.175781 2.273438 -6.769531 2.421875 -7.34375 C 2.578125 -7.925781 2.8125 -8.441406 3.125 -8.890625 C 3.4375 -9.347656 3.84375 -9.71875 4.34375 -10 C 4.84375 -10.28125 5.4375 -10.421875 6.125 -10.421875 C 6.550781 -10.421875 6.953125 -10.367188 7.328125 -10.265625 C 7.710938 -10.160156 8.050781 -10.003906 8.34375 -9.796875 C 8.644531 -9.597656 8.894531 -9.34375 9.09375 -9.03125 C 9.300781 -8.71875 9.441406 -8.34375 9.515625 -7.90625 L 11.046875 -7.90625 C 10.929688 -8.570312 10.726562 -9.144531 10.4375 -9.625 C 10.144531 -10.101562 9.78125 -10.492188 9.34375 -10.796875 C 8.914062 -11.109375 8.425781 -11.335938 7.875 -11.484375 C 7.332031 -11.628906 6.75 -11.703125 6.125 -11.703125 C 5.21875 -11.703125 4.425781 -11.53125 3.75 -11.1875 C 3.070312 -10.851562 2.503906 -10.398438 2.046875 -9.828125 C 1.597656 -9.265625 1.257812 -8.609375 1.03125 -7.859375 C 0.800781 -7.109375 0.6875 -6.316406 0.6875 -5.484375 C 0.6875 -4.742188 0.804688 -4.023438 1.046875 -3.328125 C 1.296875 -2.628906 1.65625 -2.015625 2.125 -1.484375 C 2.59375 -0.953125 3.160156 -0.53125 3.828125 -0.21875 C 4.503906 0.09375 5.269531 0.25 6.125 0.25 C 6.800781 0.25 7.46875 0.117188 8.125 -0.140625 C 8.789062 -0.398438 9.347656 -0.828125 9.796875 -1.421875 Z M 9.796875 -1.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 6.765625 -4.921875 L 2.015625 -4.921875 C 2.035156 -5.242188 2.101562 -5.546875 2.21875 -5.828125 C 2.34375 -6.109375 2.503906 -6.351562 2.703125 -6.5625 C 2.910156 -6.78125 3.15625 -6.953125 3.4375 -7.078125 C 3.71875 -7.203125 4.035156 -7.265625 4.390625 -7.265625 C 4.722656 -7.265625 5.03125 -7.203125 5.3125 -7.078125 C 5.601562 -6.953125 5.851562 -6.785156 6.0625 -6.578125 C 6.269531 -6.367188 6.429688 -6.117188 6.546875 -5.828125 C 6.671875 -5.546875 6.742188 -5.242188 6.765625 -4.921875 Z M 8.078125 -2.625 L 6.734375 -2.625 C 6.617188 -2.082031 6.375 -1.675781 6 -1.40625 C 5.632812 -1.144531 5.164062 -1.015625 4.59375 -1.015625 C 4.144531 -1.015625 3.753906 -1.085938 3.421875 -1.234375 C 3.085938 -1.378906 2.8125 -1.578125 2.59375 -1.828125 C 2.382812 -2.078125 2.234375 -2.363281 2.140625 -2.6875 C 2.046875 -3.019531 2.003906 -3.367188 2.015625 -3.734375 L 8.203125 -3.734375 C 8.222656 -4.234375 8.175781 -4.757812 8.0625 -5.3125 C 7.957031 -5.863281 7.757812 -6.375 7.46875 -6.84375 C 7.175781 -7.3125 6.785156 -7.695312 6.296875 -8 C 5.804688 -8.3125 5.195312 -8.46875 4.46875 -8.46875 C 3.894531 -8.46875 3.367188 -8.359375 2.890625 -8.140625 C 2.421875 -7.929688 2.015625 -7.632812 1.671875 -7.25 C 1.328125 -6.863281 1.054688 -6.410156 0.859375 -5.890625 C 0.671875 -5.367188 0.578125 -4.789062 0.578125 -4.15625 C 0.597656 -3.53125 0.691406 -2.945312 0.859375 -2.40625 C 1.023438 -1.875 1.269531 -1.414062 1.59375 -1.03125 C 1.925781 -0.65625 2.332031 -0.359375 2.8125 -0.140625 C 3.300781 0.0664062 3.878906 0.171875 4.546875 0.171875 C 5.484375 0.171875 6.257812 -0.0625 6.875 -0.53125 C 7.5 -1 7.898438 -1.695312 8.078125 -2.625 Z M 8.078125 -2.625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0.96875 -8.265625 L 0.96875 0 L 2.34375 0 L 2.34375 -3.6875 C 2.34375 -4.21875 2.394531 -4.6875 2.5 -5.09375 C 2.601562 -5.507812 2.769531 -5.859375 3 -6.140625 C 3.238281 -6.429688 3.550781 -6.648438 3.9375 -6.796875 C 4.320312 -6.953125 4.785156 -7.03125 5.328125 -7.03125 L 5.328125 -8.46875 C 4.585938 -8.488281 3.976562 -8.335938 3.5 -8.015625 C 3.019531 -7.691406 2.613281 -7.195312 2.28125 -6.53125 L 2.25 -6.53125 L 2.25 -8.265625 Z M 0.96875 -8.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d="M 2.125 -5.71875 C 2.125 -6.289062 2.195312 -6.851562 2.34375 -7.40625 C 2.5 -7.96875 2.734375 -8.472656 3.046875 -8.921875 C 3.367188 -9.367188 3.78125 -9.726562 4.28125 -10 C 4.789062 -10.28125 5.390625 -10.421875 6.078125 -10.421875 C 6.773438 -10.421875 7.375 -10.28125 7.875 -10 C 8.375 -9.726562 8.78125 -9.367188 9.09375 -8.921875 C 9.414062 -8.472656 9.648438 -7.96875 9.796875 -7.40625 C 9.953125 -6.851562 10.03125 -6.289062 10.03125 -5.71875 C 10.03125 -5.132812 9.953125 -4.5625 9.796875 -4 C 9.648438 -3.445312 9.414062 -2.945312 9.09375 -2.5 C 8.78125 -2.050781 8.375 -1.691406 7.875 -1.421875 C 7.375 -1.148438 6.773438 -1.015625 6.078125 -1.015625 C 5.390625 -1.015625 4.789062 -1.148438 4.28125 -1.421875 C 3.78125 -1.691406 3.367188 -2.050781 3.046875 -2.5 C 2.734375 -2.945312 2.5 -3.445312 2.34375 -4 C 2.195312 -4.5625 2.125 -5.132812 2.125 -5.71875 Z M 0.609375 -5.71875 C 0.609375 -4.9375 0.722656 -4.1875 0.953125 -3.46875 C 1.179688 -2.75 1.523438 -2.109375 1.984375 -1.546875 C 2.441406 -0.992188 3.007812 -0.554688 3.6875 -0.234375 C 4.375 0.0859375 5.171875 0.25 6.078125 0.25 C 6.984375 0.25 7.773438 0.0859375 8.453125 -0.234375 C 9.140625 -0.554688 9.710938 -0.992188 10.171875 -1.546875 C 10.628906 -2.109375 10.972656 -2.75 11.203125 -3.46875 C 11.429688 -4.1875 11.546875 -4.9375 11.546875 -5.71875 C 11.546875 -6.488281 11.429688 -7.234375 11.203125 -7.953125 C 10.972656 -8.679688 10.628906 -9.320312 10.171875 -9.875 C 9.710938 -10.425781 9.140625 -10.867188 8.453125 -11.203125 C 7.773438 -11.535156 6.984375 -11.703125 6.078125 -11.703125 C 5.171875 -11.703125 4.375 -11.535156 3.6875 -11.203125 C 3.007812 -10.867188 2.441406 -10.425781 1.984375 -9.875 C 1.523438 -9.320312 1.179688 -8.679688 0.953125 -7.953125 C 0.722656 -7.234375 0.609375 -6.488281 0.609375 -5.71875 Z M 0.609375 -5.71875 "/> </symbol> </g> </defs> <g id="surface1"> -<rect x="0" y="0" width="463" height="76" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> -<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 486 333 L 585 333 L 585 387 L 486 387 Z M 486 333 " transform="matrix(1,0,0,1,-304,-322)"/> +<rect x="0" y="0" width="535" height="427" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 486 333 L 585 333 L 585 387 L 486 387 Z M 486 333 " transform="matrix(1,0,0,1,-268,-133)"/> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> - <use xlink:href="#glyph0-1" x="202.15039" y="42"/> - <use xlink:href="#glyph0-2" x="210.81679" y="42"/> - <use xlink:href="#glyph0-3" x="217.49119" y="42"/> - <use xlink:href="#glyph0-4" x="224.16559" y="42"/> - <use xlink:href="#glyph0-5" x="230.83999" y="42"/> - <use xlink:href="#glyph0-6" x="234.17839" y="42"/> - <use xlink:href="#glyph0-4" x="243.51679" y="42"/> - <use xlink:href="#glyph0-7" x="250.19119" y="42"/> - <use xlink:href="#glyph0-8" x="256.86559" y="42"/> + <use xlink:href="#glyph0-1" x="238.15039" y="231"/> + <use xlink:href="#glyph0-2" x="246.81679" y="231"/> + <use xlink:href="#glyph0-3" x="253.49119" y="231"/> + <use xlink:href="#glyph0-4" x="260.16559" y="231"/> + <use xlink:href="#glyph0-5" x="266.83999" y="231"/> + <use xlink:href="#glyph0-6" x="270.17839" y="231"/> + <use xlink:href="#glyph0-4" x="279.51679" y="231"/> + <use xlink:href="#glyph0-7" x="286.19119" y="231"/> + <use xlink:href="#glyph0-8" x="292.86559" y="231"/> </g> -<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.5 339.589844 C 418.832031 348.375 418.832031 362.625 399.5 371.410156 C 380.171875 380.195312 348.828125 380.195312 329.5 371.410156 C 310.167969 362.625 310.167969 348.375 329.5 339.589844 C 348.828125 330.804688 380.171875 330.804688 399.5 339.589844 " transform="matrix(1,0,0,1,-304,-322)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 279 144 L 459 144 L 459 549 L 279 549 Z M 279 144 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.5 240.589844 C 418.832031 249.375 418.832031 263.625 399.5 272.410156 C 380.171875 281.195312 348.828125 281.195312 329.5 272.410156 C 310.167969 263.625 310.167969 249.375 329.5 240.589844 C 348.828125 231.804688 380.171875 231.804688 399.5 240.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="68.82031" y="127.5"/> + <use xlink:href="#glyph0-7" x="77.48671" y="127.5"/> + <use xlink:href="#glyph0-10" x="84.16111" y="127.5"/> + <use xlink:href="#glyph0-7" x="87.49951" y="127.5"/> + <use xlink:href="#glyph0-5" x="94.17391" y="127.5"/> + <use xlink:href="#glyph0-6" x="97.51231" y="127.5"/> + <use xlink:href="#glyph0-4" x="106.85071" y="127.5"/> + <use xlink:href="#glyph0-7" x="113.52511" y="127.5"/> + <use xlink:href="#glyph0-8" x="120.19951" y="127.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 393.902344 275.011719 L 477.203125 327.453125 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 483.972656 331.714844 L 478.800781 324.914062 L 475.605469 329.992188 Z M 483.972656 331.714844 " transform="matrix(1,0,0,1,-268,-133)"/> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> - <use xlink:href="#glyph0-9" x="33.14844" y="30.5"/> - <use xlink:href="#glyph0-10" x="35.81484" y="30.5"/> - <use xlink:href="#glyph0-11" x="42.48924" y="30.5"/> - <use xlink:href="#glyph0-12" x="49.16364" y="30.5"/> - <use xlink:href="#glyph0-13" x="55.83804" y="30.5"/> - <use xlink:href="#glyph0-5" x="59.17644" y="30.5"/> - <use xlink:href="#glyph0-14" x="62.51484" y="30.5"/> - <use xlink:href="#glyph0-7" x="71.18124" y="30.5"/> - <use xlink:href="#glyph0-13" x="77.85564" y="30.5"/> - <use xlink:href="#glyph0-7" x="81.19404" y="30.5"/> - <use xlink:href="#glyph0-5" x="87.86844" y="30.5"/> + <use xlink:href="#glyph1-1" x="44.248" y="58.776001"/> + <use xlink:href="#glyph1-2" x="48.392" y="58.776001"/> + <use xlink:href="#glyph1-3" x="57.288" y="58.776001"/> + <use xlink:href="#glyph1-4" x="66.776" y="58.776001"/> + <use xlink:href="#glyph1-5" x="75.672" y="58.776001"/> + <use xlink:href="#glyph1-6" x="80.712" y="58.776001"/> + <use xlink:href="#glyph1-7" x="85.16" y="58.776001"/> + <use xlink:href="#glyph1-8" x="96.424" y="58.776001"/> + <use xlink:href="#glyph1-5" x="105.016" y="58.776001"/> + <use xlink:href="#glyph1-8" x="110.056" y="58.776001"/> + <use xlink:href="#glyph1-6" x="118.648" y="58.776001"/> + <use xlink:href="#glyph1-9" x="123.096" y="58.776001"/> + <use xlink:href="#glyph1-10" x="135.24" y="58.776001"/> + <use xlink:href="#glyph1-8" x="143.832" y="58.776001"/> + <use xlink:href="#glyph1-11" x="152.424" y="58.776001"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.5 339.589844 C 418.832031 348.375 418.832031 362.625 399.5 371.410156 C 380.171875 380.195312 348.828125 380.195312 329.5 371.410156 C 310.167969 362.625 310.167969 348.375 329.5 339.589844 C 348.828125 330.804688 380.171875 330.804688 399.5 339.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="68.82031" y="226.5"/> + <use xlink:href="#glyph0-7" x="77.48671" y="226.5"/> + <use xlink:href="#glyph0-10" x="84.16111" y="226.5"/> + <use xlink:href="#glyph0-7" x="87.49951" y="226.5"/> + <use xlink:href="#glyph0-5" x="94.17391" y="226.5"/> + <use xlink:href="#glyph0-6" x="97.51231" y="226.5"/> + <use xlink:href="#glyph0-4" x="106.85071" y="226.5"/> + <use xlink:href="#glyph0-7" x="113.52511" y="226.5"/> + <use xlink:href="#glyph0-8" x="120.19951" y="226.5"/> </g> -<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> - <use xlink:href="#glyph0-6" x="44.16113" y="44.5"/> -</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.5 438.589844 C 418.832031 447.375 418.832031 461.625 399.5 470.410156 C 380.171875 479.195312 348.828125 479.195312 329.5 470.410156 C 310.167969 461.625 310.167969 447.375 329.5 438.589844 C 348.828125 429.804688 380.171875 429.804688 399.5 438.589844 " transform="matrix(1,0,0,1,-268,-133)"/> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> - <use xlink:href="#glyph0-4" x="53.49473" y="44.5"/> + <use xlink:href="#glyph0-9" x="68.82031" y="325.5"/> + <use xlink:href="#glyph0-7" x="77.48671" y="325.5"/> + <use xlink:href="#glyph0-10" x="84.16111" y="325.5"/> + <use xlink:href="#glyph0-7" x="87.49951" y="325.5"/> + <use xlink:href="#glyph0-5" x="94.17391" y="325.5"/> + <use xlink:href="#glyph0-6" x="97.51231" y="325.5"/> + <use xlink:href="#glyph0-4" x="106.85071" y="325.5"/> + <use xlink:href="#glyph0-7" x="113.52511" y="325.5"/> + <use xlink:href="#glyph0-8" x="120.19951" y="325.5"/> </g> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 414.339844 357.335938 L 475.609375 359.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 483.601562 359.886719 L 475.71875 356.59375 L 475.5 362.589844 Z M 483.601562 359.886719 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 396.285156 436.84375 L 477.347656 391.808594 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 484.339844 387.921875 L 475.890625 389.183594 L 478.804688 394.429688 Z M 484.339844 387.921875 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 612 216 L 792 216 L 792 477 L 612 477 Z M 612 216 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 732.5 303.589844 C 751.832031 312.375 751.832031 326.625 732.5 335.410156 C 713.171875 344.195312 681.828125 344.195312 662.5 335.410156 C 643.167969 326.625 643.167969 312.375 662.5 303.589844 C 681.828125 294.804688 713.171875 294.804688 732.5 303.589844 " transform="matrix(1,0,0,1,-268,-133)"/> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> - <use xlink:href="#glyph0-7" x="60.16913" y="44.5"/> + <use xlink:href="#glyph0-9" x="401.82031" y="190.5"/> + <use xlink:href="#glyph0-7" x="410.48671" y="190.5"/> + <use xlink:href="#glyph0-10" x="417.16111" y="190.5"/> + <use xlink:href="#glyph0-7" x="420.49951" y="190.5"/> + <use xlink:href="#glyph0-5" x="427.17391" y="190.5"/> + <use xlink:href="#glyph0-6" x="430.51231" y="190.5"/> + <use xlink:href="#glyph0-4" x="439.85071" y="190.5"/> + <use xlink:href="#glyph0-7" x="446.52511" y="190.5"/> + <use xlink:href="#glyph0-8" x="453.19951" y="190.5"/> </g> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> - <use xlink:href="#glyph0-8" x="66.84353" y="44.5"/> - <use xlink:href="#glyph0-15" x="70.83953" y="44.5"/> + <use xlink:href="#glyph1-12" x="370.72" y="130.776001"/> + <use xlink:href="#glyph1-4" x="382.88" y="130.776001"/> + <use xlink:href="#glyph1-5" x="391.776" y="130.776001"/> + <use xlink:href="#glyph1-3" x="396.816" y="130.776001"/> + <use xlink:href="#glyph1-4" x="406.304" y="130.776001"/> + <use xlink:href="#glyph1-5" x="415.2" y="130.776001"/> + <use xlink:href="#glyph1-6" x="420.24" y="130.776001"/> + <use xlink:href="#glyph1-7" x="424.688" y="130.776001"/> + <use xlink:href="#glyph1-8" x="435.952" y="130.776001"/> + <use xlink:href="#glyph1-5" x="444.544" y="130.776001"/> + <use xlink:href="#glyph1-8" x="449.584" y="130.776001"/> + <use xlink:href="#glyph1-6" x="458.176" y="130.776001"/> + <use xlink:href="#glyph1-9" x="462.624" y="130.776001"/> + <use xlink:href="#glyph1-10" x="474.768" y="130.776001"/> + <use xlink:href="#glyph1-8" x="483.36" y="130.776001"/> + <use xlink:href="#glyph1-11" x="491.952" y="130.776001"/> </g> -<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 414.5 355.5 L 476.101562 355.5 " transform="matrix(1,0,0,1,-304,-322)"/> -<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 484.101562 355.5 L 476.101562 352.5 L 476.101562 358.5 Z M 484.101562 355.5 " transform="matrix(1,0,0,1,-304,-322)"/> -<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 741.5 339.589844 C 760.832031 348.375 760.832031 362.625 741.5 371.410156 C 722.171875 380.195312 690.828125 380.195312 671.5 371.410156 C 652.167969 362.625 652.167969 348.375 671.5 339.589844 C 690.828125 330.804688 722.171875 330.804688 741.5 339.589844 " transform="matrix(1,0,0,1,-304,-322)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 732.5 384.589844 C 751.832031 393.375 751.832031 407.625 732.5 416.410156 C 713.171875 425.195312 681.828125 425.195312 662.5 416.410156 C 643.167969 407.625 643.167969 393.375 662.5 384.589844 C 681.828125 375.804688 713.171875 375.804688 732.5 384.589844 " transform="matrix(1,0,0,1,-268,-133)"/> <g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> - <use xlink:href="#glyph0-2" x="371.47754" y="30.5"/> - <use xlink:href="#glyph0-12" x="378.15194" y="30.5"/> - <use xlink:href="#glyph0-13" x="384.82634" y="30.5"/> - <use xlink:href="#glyph0-11" x="388.16474" y="30.5"/> - <use xlink:href="#glyph0-12" x="394.83914" y="30.5"/> - <use xlink:href="#glyph0-13" x="401.51354" y="30.5"/> - <use xlink:href="#glyph0-5" x="404.85194" y="30.5"/> - <use xlink:href="#glyph0-14" x="408.19034" y="30.5"/> - <use xlink:href="#glyph0-7" x="416.85674" y="30.5"/> - <use xlink:href="#glyph0-13" x="423.53114" y="30.5"/> - <use xlink:href="#glyph0-7" x="426.86954" y="30.5"/> - <use xlink:href="#glyph0-5" x="433.54394" y="30.5"/> + <use xlink:href="#glyph0-9" x="401.82031" y="271.5"/> + <use xlink:href="#glyph0-7" x="410.48671" y="271.5"/> + <use xlink:href="#glyph0-10" x="417.16111" y="271.5"/> + <use xlink:href="#glyph0-7" x="420.49951" y="271.5"/> + <use xlink:href="#glyph0-5" x="427.17391" y="271.5"/> + <use xlink:href="#glyph0-6" x="430.51231" y="271.5"/> + <use xlink:href="#glyph0-4" x="439.85071" y="271.5"/> + <use xlink:href="#glyph0-7" x="446.52511" y="271.5"/> + <use xlink:href="#glyph0-8" x="453.19951" y="271.5"/> </g> -<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> - <use xlink:href="#glyph0-6" x="386.16113" y="44.5"/> -</g> -<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> - <use xlink:href="#glyph0-4" x="395.49473" y="44.5"/> -</g> -<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> - <use xlink:href="#glyph0-7" x="402.16913" y="44.5"/> -</g> -<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> - <use xlink:href="#glyph0-8" x="408.84353" y="44.5"/> - <use xlink:href="#glyph0-15" x="412.83953" y="44.5"/> -</g> -<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 585 355.5 L 646.601562 355.5 " transform="matrix(1,0,0,1,-304,-322)"/> -<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 654.601562 355.5 L 646.601562 352.5 L 646.601562 358.5 Z M 654.601562 355.5 " transform="matrix(1,0,0,1,-304,-322)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 585 348.378906 L 644.3125 333.152344 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 652.0625 331.164062 L 643.566406 330.246094 L 645.058594 336.058594 Z M 652.0625 331.164062 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 585 378 L 641.980469 389.394531 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 649.828125 390.964844 L 642.570312 386.453125 L 641.394531 392.339844 Z M 649.828125 390.964844 " transform="matrix(1,0,0,1,-268,-133)"/> </g> </svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/images/meta_cg_dg.svg Mon May 30 02:01:33 2016 +0900 @@ -0,0 +1,275 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="608pt" height="522pt" viewBox="0 0 608 522" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 0.296875 0 L 0.296875 -6.453125 L 5.421875 -6.453125 L 5.421875 0 Z M 4.609375 -0.8125 L 4.609375 -5.640625 L 1.09375 -5.640625 L 1.09375 -0.8125 Z M 4.609375 -0.8125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 4.90625 -7.984375 L 1.21875 -7.984375 L 1.21875 -0.5625 L 4.90625 -0.5625 Z M 5.515625 -8.546875 L 5.515625 -0.015625 L 0.609375 -0.015625 L 0.609375 -8.546875 Z M 5.515625 -8.546875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 0.953125 -8.5625 L 0.953125 0 L 2.046875 0 L 2.046875 -7.125 L 2.0625 -7.125 L 4.734375 0 L 5.71875 0 L 8.390625 -7.125 L 8.40625 -7.125 L 8.40625 0 L 9.484375 0 L 9.484375 -8.5625 L 7.9375 -8.5625 L 5.21875 -1.375 L 2.515625 -8.5625 Z M 0.953125 -8.5625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 5.078125 -3.703125 L 1.515625 -3.703125 C 1.523438 -3.941406 1.570312 -4.164062 1.65625 -4.375 C 1.75 -4.582031 1.867188 -4.765625 2.015625 -4.921875 C 2.171875 -5.085938 2.351562 -5.21875 2.5625 -5.3125 C 2.78125 -5.40625 3.019531 -5.453125 3.28125 -5.453125 C 3.539062 -5.453125 3.773438 -5.40625 3.984375 -5.3125 C 4.203125 -5.21875 4.390625 -5.09375 4.546875 -4.9375 C 4.703125 -4.78125 4.820312 -4.59375 4.90625 -4.375 C 5 -4.164062 5.054688 -3.941406 5.078125 -3.703125 Z M 6.0625 -1.96875 L 5.046875 -1.96875 C 4.960938 -1.5625 4.78125 -1.253906 4.5 -1.046875 C 4.226562 -0.847656 3.875 -0.75 3.4375 -0.75 C 3.101562 -0.75 2.8125 -0.804688 2.5625 -0.921875 C 2.320312 -1.035156 2.117188 -1.1875 1.953125 -1.375 C 1.796875 -1.5625 1.679688 -1.773438 1.609375 -2.015625 C 1.535156 -2.265625 1.503906 -2.523438 1.515625 -2.796875 L 6.15625 -2.796875 C 6.175781 -3.171875 6.140625 -3.566406 6.046875 -3.984375 C 5.960938 -4.398438 5.8125 -4.78125 5.59375 -5.125 C 5.375 -5.476562 5.082031 -5.769531 4.71875 -6 C 4.351562 -6.226562 3.894531 -6.34375 3.34375 -6.34375 C 2.925781 -6.34375 2.535156 -6.265625 2.171875 -6.109375 C 1.816406 -5.953125 1.507812 -5.726562 1.25 -5.4375 C 0.988281 -5.144531 0.785156 -4.800781 0.640625 -4.40625 C 0.503906 -4.019531 0.4375 -3.59375 0.4375 -3.125 C 0.445312 -2.644531 0.515625 -2.207031 0.640625 -1.8125 C 0.765625 -1.414062 0.953125 -1.070312 1.203125 -0.78125 C 1.453125 -0.488281 1.753906 -0.265625 2.109375 -0.109375 C 2.472656 0.046875 2.90625 0.125 3.40625 0.125 C 4.113281 0.125 4.695312 -0.046875 5.15625 -0.390625 C 5.625 -0.742188 5.925781 -1.269531 6.0625 -1.96875 Z M 6.0625 -1.96875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M 2.1875 -6.203125 L 2.1875 -8.0625 L 1.15625 -8.0625 L 1.15625 -6.203125 L 0.109375 -6.203125 L 0.109375 -5.296875 L 1.15625 -5.296875 L 1.15625 -1.359375 C 1.15625 -1.066406 1.179688 -0.832031 1.234375 -0.65625 C 1.296875 -0.476562 1.382812 -0.34375 1.5 -0.25 C 1.625 -0.15625 1.78125 -0.0859375 1.96875 -0.046875 C 2.15625 -0.015625 2.378906 0 2.640625 0 L 3.421875 0 L 3.421875 -0.90625 L 2.953125 -0.90625 C 2.796875 -0.90625 2.664062 -0.910156 2.5625 -0.921875 C 2.457031 -0.929688 2.378906 -0.957031 2.328125 -1 C 2.273438 -1.039062 2.238281 -1.09375 2.21875 -1.15625 C 2.195312 -1.226562 2.1875 -1.328125 2.1875 -1.453125 L 2.1875 -5.296875 L 3.421875 -5.296875 L 3.421875 -6.203125 Z M 2.1875 -6.203125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 6.265625 -0.03125 C 6.085938 0.0703125 5.84375 0.125 5.53125 0.125 C 5.269531 0.125 5.0625 0.0507812 4.90625 -0.09375 C 4.75 -0.238281 4.671875 -0.476562 4.671875 -0.8125 C 4.390625 -0.476562 4.0625 -0.238281 3.6875 -0.09375 C 3.3125 0.0507812 2.910156 0.125 2.484375 0.125 C 2.203125 0.125 1.9375 0.09375 1.6875 0.03125 C 1.4375 -0.03125 1.21875 -0.128906 1.03125 -0.265625 C 0.84375 -0.398438 0.695312 -0.578125 0.59375 -0.796875 C 0.488281 -1.015625 0.4375 -1.28125 0.4375 -1.59375 C 0.4375 -1.945312 0.492188 -2.234375 0.609375 -2.453125 C 0.734375 -2.679688 0.890625 -2.863281 1.078125 -3 C 1.273438 -3.144531 1.5 -3.253906 1.75 -3.328125 C 2.007812 -3.398438 2.269531 -3.457031 2.53125 -3.5 C 2.8125 -3.5625 3.078125 -3.601562 3.328125 -3.625 C 3.578125 -3.65625 3.796875 -3.695312 3.984375 -3.75 C 4.179688 -3.800781 4.335938 -3.875 4.453125 -3.96875 C 4.566406 -4.070312 4.625 -4.222656 4.625 -4.421875 C 4.625 -4.640625 4.582031 -4.816406 4.5 -4.953125 C 4.414062 -5.085938 4.304688 -5.191406 4.171875 -5.265625 C 4.035156 -5.335938 3.882812 -5.382812 3.71875 -5.40625 C 3.5625 -5.4375 3.398438 -5.453125 3.234375 -5.453125 C 2.804688 -5.453125 2.445312 -5.367188 2.15625 -5.203125 C 1.875 -5.035156 1.71875 -4.722656 1.6875 -4.265625 L 0.671875 -4.265625 C 0.691406 -4.648438 0.769531 -4.972656 0.90625 -5.234375 C 1.050781 -5.503906 1.242188 -5.71875 1.484375 -5.875 C 1.722656 -6.039062 1.992188 -6.160156 2.296875 -6.234375 C 2.609375 -6.304688 2.941406 -6.34375 3.296875 -6.34375 C 3.578125 -6.34375 3.851562 -6.320312 4.125 -6.28125 C 4.40625 -6.25 4.65625 -6.171875 4.875 -6.046875 C 5.101562 -5.921875 5.285156 -5.742188 5.421875 -5.515625 C 5.554688 -5.296875 5.625 -5.003906 5.625 -4.640625 L 5.625 -1.453125 C 5.625 -1.210938 5.640625 -1.035156 5.671875 -0.921875 C 5.703125 -0.804688 5.796875 -0.75 5.953125 -0.75 C 6.035156 -0.75 6.140625 -0.769531 6.265625 -0.8125 Z M 4.609375 -3.203125 C 4.484375 -3.109375 4.316406 -3.035156 4.109375 -2.984375 C 3.898438 -2.941406 3.679688 -2.90625 3.453125 -2.875 C 3.222656 -2.851562 2.988281 -2.820312 2.75 -2.78125 C 2.519531 -2.75 2.3125 -2.691406 2.125 -2.609375 C 1.945312 -2.535156 1.800781 -2.421875 1.6875 -2.265625 C 1.570312 -2.117188 1.515625 -1.921875 1.515625 -1.671875 C 1.515625 -1.503906 1.546875 -1.359375 1.609375 -1.234375 C 1.679688 -1.117188 1.769531 -1.023438 1.875 -0.953125 C 1.988281 -0.890625 2.113281 -0.835938 2.25 -0.796875 C 2.394531 -0.765625 2.550781 -0.75 2.71875 -0.75 C 3.050781 -0.75 3.335938 -0.796875 3.578125 -0.890625 C 3.816406 -0.984375 4.007812 -1.097656 4.15625 -1.234375 C 4.3125 -1.378906 4.425781 -1.53125 4.5 -1.6875 C 4.570312 -1.851562 4.609375 -2.007812 4.609375 -2.15625 Z M 4.609375 -3.203125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M 2.078125 -0.953125 L 2.078125 -7.609375 L 4 -7.609375 C 4.519531 -7.609375 4.960938 -7.53125 5.328125 -7.375 C 5.691406 -7.226562 5.984375 -7.015625 6.203125 -6.734375 C 6.429688 -6.453125 6.597656 -6.109375 6.703125 -5.703125 C 6.804688 -5.296875 6.859375 -4.835938 6.859375 -4.328125 C 6.859375 -3.804688 6.800781 -3.359375 6.6875 -2.984375 C 6.582031 -2.609375 6.445312 -2.296875 6.28125 -2.046875 C 6.113281 -1.804688 5.921875 -1.613281 5.703125 -1.46875 C 5.492188 -1.320312 5.28125 -1.207031 5.0625 -1.125 C 4.84375 -1.050781 4.632812 -1.003906 4.4375 -0.984375 C 4.25 -0.960938 4.09375 -0.953125 3.96875 -0.953125 Z M 0.9375 -8.5625 L 0.9375 0 L 3.875 0 C 4.582031 0 5.195312 -0.0976562 5.71875 -0.296875 C 6.238281 -0.492188 6.664062 -0.78125 7 -1.15625 C 7.34375 -1.539062 7.59375 -2.007812 7.75 -2.5625 C 7.90625 -3.125 7.984375 -3.765625 7.984375 -4.484375 C 7.984375 -5.859375 7.628906 -6.878906 6.921875 -7.546875 C 6.210938 -8.222656 5.195312 -8.5625 3.875 -8.5625 Z M 0.9375 -8.5625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 7.34375 -1.0625 L 7.640625 0 L 8.359375 0 L 8.359375 -4.515625 L 4.609375 -4.515625 L 4.609375 -3.546875 L 7.34375 -3.546875 C 7.363281 -3.160156 7.3125 -2.796875 7.1875 -2.453125 C 7.070312 -2.109375 6.894531 -1.8125 6.65625 -1.5625 C 6.414062 -1.3125 6.125 -1.113281 5.78125 -0.96875 C 5.4375 -0.820312 5.039062 -0.75 4.59375 -0.75 C 4.113281 -0.75 3.691406 -0.84375 3.328125 -1.03125 C 2.960938 -1.21875 2.65625 -1.46875 2.40625 -1.78125 C 2.164062 -2.101562 1.976562 -2.46875 1.84375 -2.875 C 1.71875 -3.289062 1.65625 -3.722656 1.65625 -4.171875 C 1.65625 -4.628906 1.707031 -5.078125 1.8125 -5.515625 C 1.925781 -5.953125 2.101562 -6.335938 2.34375 -6.671875 C 2.582031 -7.015625 2.882812 -7.289062 3.25 -7.5 C 3.625 -7.707031 4.070312 -7.8125 4.59375 -7.8125 C 4.914062 -7.8125 5.21875 -7.769531 5.5 -7.6875 C 5.78125 -7.613281 6.03125 -7.5 6.25 -7.34375 C 6.476562 -7.195312 6.671875 -7.003906 6.828125 -6.765625 C 6.984375 -6.535156 7.085938 -6.253906 7.140625 -5.921875 L 8.28125 -5.921875 C 8.195312 -6.429688 8.046875 -6.863281 7.828125 -7.21875 C 7.609375 -7.570312 7.335938 -7.863281 7.015625 -8.09375 C 6.691406 -8.332031 6.320312 -8.503906 5.90625 -8.609375 C 5.5 -8.710938 5.0625 -8.765625 4.59375 -8.765625 C 3.914062 -8.765625 3.320312 -8.640625 2.8125 -8.390625 C 2.300781 -8.140625 1.875 -7.800781 1.53125 -7.375 C 1.195312 -6.957031 0.941406 -6.460938 0.765625 -5.890625 C 0.597656 -5.328125 0.515625 -4.734375 0.515625 -4.109375 C 0.515625 -3.554688 0.601562 -3.019531 0.78125 -2.5 C 0.96875 -1.976562 1.238281 -1.515625 1.59375 -1.109375 C 1.945312 -0.710938 2.375 -0.394531 2.875 -0.15625 C 3.382812 0.0703125 3.957031 0.1875 4.59375 0.1875 C 5.101562 0.1875 5.601562 0.09375 6.09375 -0.09375 C 6.59375 -0.289062 7.007812 -0.613281 7.34375 -1.0625 Z M 7.34375 -1.0625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0.734375 -6.203125 L 0.734375 0 L 1.75 0 L 1.75 -2.765625 C 1.75 -3.160156 1.785156 -3.507812 1.859375 -3.8125 C 1.941406 -4.125 2.070312 -4.390625 2.25 -4.609375 C 2.425781 -4.828125 2.660156 -4.988281 2.953125 -5.09375 C 3.242188 -5.207031 3.59375 -5.265625 4 -5.265625 L 4 -6.34375 C 3.445312 -6.363281 2.988281 -6.253906 2.625 -6.015625 C 2.269531 -5.773438 1.96875 -5.398438 1.71875 -4.890625 L 1.6875 -4.890625 L 1.6875 -6.203125 Z M 0.734375 -6.203125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 0.390625 0 L 0.390625 -8.609375 L 7.21875 -8.609375 L 7.21875 0 Z M 6.140625 -1.078125 L 6.140625 -7.53125 L 1.46875 -7.53125 L 1.46875 -1.078125 Z M 6.140625 -1.078125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 4.546875 -8.84375 C 5.628906 -8.84375 6.472656 -8.554688 7.078125 -7.984375 C 7.679688 -7.410156 8.015625 -6.757812 8.078125 -6.03125 L 6.9375 -6.03125 C 6.8125 -6.582031 6.554688 -7.019531 6.171875 -7.34375 C 5.785156 -7.664062 5.242188 -7.828125 4.546875 -7.828125 C 3.703125 -7.828125 3.019531 -7.53125 2.5 -6.9375 C 1.976562 -6.34375 1.71875 -5.429688 1.71875 -4.203125 C 1.71875 -3.191406 1.953125 -2.367188 2.421875 -1.734375 C 2.890625 -1.109375 3.59375 -0.796875 4.53125 -0.796875 C 5.382812 -0.796875 6.039062 -1.128906 6.5 -1.796875 C 6.726562 -2.140625 6.90625 -2.597656 7.03125 -3.171875 L 8.15625 -3.171875 C 8.0625 -2.265625 7.726562 -1.503906 7.15625 -0.890625 C 6.46875 -0.148438 5.546875 0.21875 4.390625 0.21875 C 3.390625 0.21875 2.550781 -0.0820312 1.875 -0.6875 C 0.976562 -1.488281 0.53125 -2.722656 0.53125 -4.390625 C 0.53125 -5.660156 0.863281 -6.703125 1.53125 -7.515625 C 2.257812 -8.398438 3.265625 -8.84375 4.546875 -8.84375 Z M 4.3125 -8.84375 Z M 4.3125 -8.84375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 3.265625 -0.6875 C 3.960938 -0.6875 4.441406 -0.945312 4.703125 -1.46875 C 4.960938 -2 5.09375 -2.585938 5.09375 -3.234375 C 5.09375 -3.828125 5 -4.304688 4.8125 -4.671875 C 4.507812 -5.242188 4 -5.53125 3.28125 -5.53125 C 2.632812 -5.53125 2.164062 -5.285156 1.875 -4.796875 C 1.582031 -4.304688 1.4375 -3.710938 1.4375 -3.015625 C 1.4375 -2.347656 1.582031 -1.789062 1.875 -1.34375 C 2.164062 -0.90625 2.628906 -0.6875 3.265625 -0.6875 Z M 3.3125 -6.453125 C 4.113281 -6.453125 4.789062 -6.179688 5.34375 -5.640625 C 5.90625 -5.109375 6.1875 -4.316406 6.1875 -3.265625 C 6.1875 -2.253906 5.941406 -1.414062 5.453125 -0.75 C 4.960938 -0.09375 4.203125 0.234375 3.171875 0.234375 C 2.304688 0.234375 1.617188 -0.0546875 1.109375 -0.640625 C 0.597656 -1.234375 0.34375 -2.019531 0.34375 -3 C 0.34375 -4.050781 0.609375 -4.890625 1.140625 -5.515625 C 1.679688 -6.140625 2.40625 -6.453125 3.3125 -6.453125 Z M 3.265625 -6.421875 Z M 3.265625 -6.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 1.4375 -3.0625 C 1.4375 -2.394531 1.578125 -1.832031 1.859375 -1.375 C 2.148438 -0.925781 2.609375 -0.703125 3.234375 -0.703125 C 3.722656 -0.703125 4.125 -0.910156 4.4375 -1.328125 C 4.757812 -1.742188 4.921875 -2.347656 4.921875 -3.140625 C 4.921875 -3.929688 4.753906 -4.515625 4.421875 -4.890625 C 4.097656 -5.273438 3.703125 -5.46875 3.234375 -5.46875 C 2.703125 -5.46875 2.269531 -5.265625 1.9375 -4.859375 C 1.601562 -4.453125 1.4375 -3.851562 1.4375 -3.0625 Z M 3.03125 -6.390625 C 3.507812 -6.390625 3.910156 -6.285156 4.234375 -6.078125 C 4.421875 -5.960938 4.632812 -5.757812 4.875 -5.46875 L 4.875 -8.640625 L 5.890625 -8.640625 L 5.890625 0 L 4.9375 0 L 4.9375 -0.875 C 4.695312 -0.488281 4.40625 -0.207031 4.0625 -0.03125 C 3.726562 0.132812 3.34375 0.21875 2.90625 0.21875 C 2.207031 0.21875 1.601562 -0.0703125 1.09375 -0.65625 C 0.582031 -1.25 0.328125 -2.03125 0.328125 -3 C 0.328125 -3.914062 0.5625 -4.707031 1.03125 -5.375 C 1.5 -6.050781 2.164062 -6.390625 3.03125 -6.390625 Z M 3.03125 -6.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 3.390625 -6.421875 C 3.835938 -6.421875 4.269531 -6.316406 4.6875 -6.109375 C 5.101562 -5.898438 5.421875 -5.628906 5.640625 -5.296875 C 5.847656 -4.972656 5.988281 -4.601562 6.0625 -4.1875 C 6.125 -3.894531 6.15625 -3.429688 6.15625 -2.796875 L 1.546875 -2.796875 C 1.566406 -2.160156 1.71875 -1.648438 2 -1.265625 C 2.28125 -0.878906 2.71875 -0.6875 3.3125 -0.6875 C 3.863281 -0.6875 4.300781 -0.867188 4.625 -1.234375 C 4.8125 -1.441406 4.945312 -1.6875 5.03125 -1.96875 L 6.0625 -1.96875 C 6.039062 -1.738281 5.953125 -1.484375 5.796875 -1.203125 C 5.640625 -0.921875 5.46875 -0.6875 5.28125 -0.5 C 4.957031 -0.1875 4.554688 0.0195312 4.078125 0.125 C 3.828125 0.1875 3.539062 0.21875 3.21875 0.21875 C 2.4375 0.21875 1.773438 -0.0625 1.234375 -0.625 C 0.691406 -1.195312 0.421875 -1.992188 0.421875 -3.015625 C 0.421875 -4.023438 0.691406 -4.84375 1.234375 -5.46875 C 1.785156 -6.101562 2.503906 -6.421875 3.390625 -6.421875 Z M 5.0625 -3.640625 C 5.019531 -4.097656 4.921875 -4.460938 4.765625 -4.734375 C 4.484375 -5.242188 4.003906 -5.5 3.328125 -5.5 C 2.835938 -5.5 2.425781 -5.320312 2.09375 -4.96875 C 1.769531 -4.625 1.597656 -4.179688 1.578125 -3.640625 Z M 3.28125 -6.421875 Z M 3.28125 -6.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d="M 4.640625 -8.828125 C 5.441406 -8.828125 6.140625 -8.671875 6.734375 -8.359375 C 7.585938 -7.910156 8.109375 -7.125 8.296875 -6 L 7.15625 -6 C 7.007812 -6.625 6.710938 -7.082031 6.265625 -7.375 C 5.828125 -7.664062 5.273438 -7.8125 4.609375 -7.8125 C 3.804688 -7.8125 3.132812 -7.507812 2.59375 -6.90625 C 2.050781 -6.3125 1.78125 -5.421875 1.78125 -4.234375 C 1.78125 -3.210938 2.003906 -2.378906 2.453125 -1.734375 C 2.898438 -1.097656 3.628906 -0.78125 4.640625 -0.78125 C 5.421875 -0.78125 6.066406 -1.003906 6.578125 -1.453125 C 7.085938 -1.898438 7.347656 -2.628906 7.359375 -3.640625 L 4.671875 -3.640625 L 4.671875 -4.609375 L 8.4375 -4.609375 L 8.4375 0 L 7.6875 0 L 7.40625 -1.109375 C 7.019531 -0.671875 6.671875 -0.367188 6.359375 -0.203125 C 5.847656 0.0859375 5.195312 0.234375 4.40625 0.234375 C 3.394531 0.234375 2.519531 -0.0976562 1.78125 -0.765625 C 0.976562 -1.585938 0.578125 -2.722656 0.578125 -4.171875 C 0.578125 -5.609375 0.96875 -6.753906 1.75 -7.609375 C 2.488281 -8.421875 3.453125 -8.828125 4.640625 -8.828125 Z M 4.4375 -8.84375 Z M 4.4375 -8.84375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 1.578125 -1.671875 C 1.578125 -1.367188 1.6875 -1.128906 1.90625 -0.953125 C 2.132812 -0.773438 2.398438 -0.6875 2.703125 -0.6875 C 3.078125 -0.6875 3.4375 -0.769531 3.78125 -0.9375 C 4.375 -1.226562 4.671875 -1.695312 4.671875 -2.34375 L 4.671875 -3.1875 C 4.535156 -3.113281 4.363281 -3.046875 4.15625 -2.984375 C 3.957031 -2.929688 3.757812 -2.894531 3.5625 -2.875 L 2.9375 -2.796875 C 2.550781 -2.742188 2.257812 -2.660156 2.0625 -2.546875 C 1.738281 -2.367188 1.578125 -2.078125 1.578125 -1.671875 Z M 4.140625 -3.796875 C 4.378906 -3.828125 4.539062 -3.929688 4.625 -4.109375 C 4.664062 -4.203125 4.6875 -4.335938 4.6875 -4.515625 C 4.6875 -4.867188 4.554688 -5.125 4.296875 -5.28125 C 4.046875 -5.445312 3.6875 -5.53125 3.21875 -5.53125 C 2.664062 -5.53125 2.273438 -5.382812 2.046875 -5.09375 C 1.910156 -4.925781 1.820312 -4.679688 1.78125 -4.359375 L 0.796875 -4.359375 C 0.816406 -5.128906 1.066406 -5.664062 1.546875 -5.96875 C 2.035156 -6.269531 2.597656 -6.421875 3.234375 -6.421875 C 3.972656 -6.421875 4.570312 -6.28125 5.03125 -6 C 5.488281 -5.71875 5.71875 -5.28125 5.71875 -4.6875 L 5.71875 -1.078125 C 5.71875 -0.972656 5.738281 -0.882812 5.78125 -0.8125 C 5.832031 -0.75 5.929688 -0.71875 6.078125 -0.71875 C 6.117188 -0.71875 6.164062 -0.71875 6.21875 -0.71875 C 6.28125 -0.726562 6.347656 -0.738281 6.421875 -0.75 L 6.421875 0.03125 C 6.253906 0.0703125 6.125 0.0976562 6.03125 0.109375 C 5.945312 0.128906 5.832031 0.140625 5.6875 0.140625 C 5.320312 0.140625 5.0625 0.0078125 4.90625 -0.25 C 4.8125 -0.382812 4.75 -0.578125 4.71875 -0.828125 C 4.5 -0.546875 4.1875 -0.300781 3.78125 -0.09375 C 3.382812 0.113281 2.945312 0.21875 2.46875 0.21875 C 1.882812 0.21875 1.40625 0.0390625 1.03125 -0.3125 C 0.664062 -0.664062 0.484375 -1.109375 0.484375 -1.640625 C 0.484375 -2.222656 0.664062 -2.675781 1.03125 -3 C 1.394531 -3.320312 1.867188 -3.519531 2.453125 -3.59375 Z M 3.265625 -6.421875 Z M 3.265625 -6.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.796875 -6.28125 L 1.8125 -6.28125 L 1.8125 -5.1875 C 1.882812 -5.40625 2.082031 -5.664062 2.40625 -5.96875 C 2.726562 -6.269531 3.097656 -6.421875 3.515625 -6.421875 C 3.535156 -6.421875 3.566406 -6.414062 3.609375 -6.40625 C 3.660156 -6.40625 3.742188 -6.398438 3.859375 -6.390625 L 3.859375 -5.28125 C 3.796875 -5.289062 3.738281 -5.296875 3.6875 -5.296875 C 3.632812 -5.296875 3.578125 -5.296875 3.515625 -5.296875 C 2.984375 -5.296875 2.570312 -5.125 2.28125 -4.78125 C 2 -4.445312 1.859375 -4.054688 1.859375 -3.609375 L 1.859375 0 L 0.796875 0 Z M 0.796875 -6.28125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 4.21875 -1 C 4.613281 -1 4.9375 -1.039062 5.1875 -1.125 C 5.644531 -1.269531 6.019531 -1.5625 6.3125 -2 C 6.539062 -2.34375 6.703125 -2.785156 6.796875 -3.328125 C 6.859375 -3.660156 6.890625 -3.960938 6.890625 -4.234375 C 6.890625 -5.304688 6.675781 -6.132812 6.25 -6.71875 C 5.832031 -7.3125 5.148438 -7.609375 4.203125 -7.609375 L 2.140625 -7.609375 L 2.140625 -1 Z M 0.96875 -8.609375 L 4.453125 -8.609375 C 5.640625 -8.609375 6.554688 -8.1875 7.203125 -7.34375 C 7.785156 -6.59375 8.078125 -5.625 8.078125 -4.4375 C 8.078125 -3.519531 7.90625 -2.691406 7.5625 -1.953125 C 6.957031 -0.648438 5.914062 0 4.4375 0 L 0.96875 0 Z M 0.96875 -8.609375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 0.984375 -8.03125 L 2.046875 -8.03125 L 2.046875 -6.28125 L 3.046875 -6.28125 L 3.046875 -5.421875 L 2.046875 -5.421875 L 2.046875 -1.3125 C 2.046875 -1.09375 2.125 -0.945312 2.28125 -0.875 C 2.351562 -0.832031 2.488281 -0.8125 2.6875 -0.8125 C 2.738281 -0.8125 2.789062 -0.8125 2.84375 -0.8125 C 2.90625 -0.820312 2.972656 -0.828125 3.046875 -0.828125 L 3.046875 0 C 2.929688 0.03125 2.804688 0.0507812 2.671875 0.0625 C 2.546875 0.0820312 2.40625 0.09375 2.25 0.09375 C 1.757812 0.09375 1.425781 -0.03125 1.25 -0.28125 C 1.070312 -0.53125 0.984375 -0.859375 0.984375 -1.265625 L 0.984375 -5.421875 L 0.140625 -5.421875 L 0.140625 -6.28125 L 0.984375 -6.28125 Z M 0.984375 -8.03125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 0.890625 -8.609375 L 2.5625 -8.609375 L 5.03125 -1.328125 L 7.484375 -8.609375 L 9.140625 -8.609375 L 9.140625 0 L 8.03125 0 L 8.03125 -5.078125 C 8.03125 -5.253906 8.03125 -5.546875 8.03125 -5.953125 C 8.039062 -6.359375 8.046875 -6.796875 8.046875 -7.265625 L 5.59375 0 L 4.4375 0 L 1.96875 -7.265625 L 1.96875 -7 C 1.96875 -6.789062 1.972656 -6.46875 1.984375 -6.03125 C 1.992188 -5.601562 2 -5.285156 2 -5.078125 L 2 0 L 0.890625 0 Z M 0.890625 -8.609375 "/> +</symbol> +</g> +</defs> +<g id="surface1"> +<rect x="0" y="0" width="608" height="522" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<g style="fill:rgb(58.039856%,32.156372%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="451.9492" y="505.58984"/> + <use xlink:href="#glyph0-1" x="454.4494" y="505.58984"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(100%,57.647705%,0%);stroke-opacity:1;stroke-dasharray:4,4;stroke-miterlimit:10;" d="M 178.9375 310.179688 C 204.355469 327.753906 204.355469 356.246094 178.9375 373.820312 C 153.519531 391.394531 112.304688 391.394531 86.886719 373.820312 C 61.46875 356.246094 61.46875 327.753906 86.886719 310.179688 C 112.304688 292.605469 153.519531 292.605469 178.9375 310.179688 " transform="matrix(1,0,0,1,-56,-196)"/> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="33.25201" y="126.332001"/> + <use xlink:href="#glyph1-2" x="43.70401" y="126.332001"/> + <use xlink:href="#glyph1-3" x="50.14801" y="126.332001"/> + <use xlink:href="#glyph1-4" x="53.92801" y="126.332001"/> + <use xlink:href="#glyph1-5" x="60.37201" y="126.332001"/> + <use xlink:href="#glyph1-6" x="63.70801" y="126.332001"/> + <use xlink:href="#glyph1-4" x="72.15601" y="126.332001"/> + <use xlink:href="#glyph1-3" x="78.60001" y="126.332001"/> + <use xlink:href="#glyph1-4" x="82.38001" y="126.332001"/> + <use xlink:href="#glyph1-5" x="88.82401" y="126.332001"/> + <use xlink:href="#glyph1-7" x="92.16001" y="126.332001"/> + <use xlink:href="#glyph1-2" x="101.26801" y="126.332001"/> + <use xlink:href="#glyph1-4" x="107.71201" y="126.332001"/> + <use xlink:href="#glyph1-8" x="114.15601" y="126.332001"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(100%,57.647705%,0%);stroke-opacity:1;stroke-dasharray:4,4;stroke-miterlimit:10;" d="M 633.113281 310.179688 C 658.53125 327.753906 658.53125 356.246094 633.113281 373.820312 C 607.695312 391.394531 566.480469 391.394531 541.0625 373.820312 C 515.644531 356.246094 515.644531 327.753906 541.0625 310.179688 C 566.480469 292.605469 607.695312 292.605469 633.113281 310.179688 " transform="matrix(1,0,0,1,-56,-196)"/> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="487.4275" y="126.332001"/> + <use xlink:href="#glyph1-2" x="497.8795" y="126.332001"/> + <use xlink:href="#glyph1-3" x="504.3235" y="126.332001"/> + <use xlink:href="#glyph1-4" x="508.1035" y="126.332001"/> + <use xlink:href="#glyph1-5" x="514.5475" y="126.332001"/> + <use xlink:href="#glyph1-6" x="517.8835" y="126.332001"/> + <use xlink:href="#glyph1-4" x="526.3315" y="126.332001"/> + <use xlink:href="#glyph1-3" x="532.7755" y="126.332001"/> + <use xlink:href="#glyph1-4" x="536.5555" y="126.332001"/> + <use xlink:href="#glyph1-5" x="542.9995" y="126.332001"/> + <use xlink:href="#glyph1-7" x="546.3355" y="126.332001"/> + <use xlink:href="#glyph1-2" x="555.4435" y="126.332001"/> + <use xlink:href="#glyph1-4" x="561.8875" y="126.332001"/> + <use xlink:href="#glyph1-8" x="568.3315" y="126.332001"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 316.421875 333 L 391.9375 333 L 391.9375 378 L 316.421875 378 Z M 316.421875 333 " transform="matrix(1,0,0,1,-56,-196)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="268.83019" y="163.5"/> + <use xlink:href="#glyph2-2" x="277.49659" y="163.5"/> + <use xlink:href="#glyph2-3" x="284.17099" y="163.5"/> + <use xlink:href="#glyph2-4" x="290.84539" y="163.5"/> + <use xlink:href="#glyph2-5" x="297.51979" y="163.5"/> + <use xlink:href="#glyph2-6" x="300.85819" y="163.5"/> + <use xlink:href="#glyph2-4" x="310.19659" y="163.5"/> + <use xlink:href="#glyph2-7" x="316.87099" y="163.5"/> + <use xlink:href="#glyph2-8" x="323.54539" y="163.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 159.941406 339.589844 C 174.6875 348.375 174.6875 362.625 159.941406 371.410156 C 145.195312 380.195312 121.289062 380.195312 106.542969 371.410156 C 91.796875 362.625 91.796875 348.375 106.542969 339.589844 C 121.289062 330.804688 145.195312 330.804688 159.941406 339.589844 " transform="matrix(1,0,0,1,-56,-196)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-9" x="64.56734" y="156.5"/> + <use xlink:href="#glyph2-7" x="73.23374" y="156.5"/> + <use xlink:href="#glyph2-10" x="79.90814" y="156.5"/> + <use xlink:href="#glyph2-7" x="83.24654" y="156.5"/> + <use xlink:href="#glyph2-5" x="89.92094" y="156.5"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-6" x="63.9023" y="170.5"/> + <use xlink:href="#glyph2-4" x="73.2359" y="170.5"/> + <use xlink:href="#glyph2-7" x="79.9055" y="170.5"/> + <use xlink:href="#glyph2-8" x="86.5751" y="170.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 171.5 355.5 L 306.519531 355.5 " transform="matrix(1,0,0,1,-56,-196)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 314.519531 355.5 L 306.519531 352.5 L 306.519531 358.5 Z M 314.519531 355.5 " transform="matrix(1,0,0,1,-56,-196)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 613.457031 339.589844 C 628.203125 348.375 628.203125 362.625 613.457031 371.410156 C 598.710938 380.195312 574.804688 380.195312 560.058594 371.410156 C 545.3125 362.625 545.3125 348.375 560.058594 339.589844 C 574.804688 330.804688 598.710938 330.804688 613.457031 339.589844 " transform="matrix(1,0,0,1,-56,-196)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-9" x="518.08497" y="156.5"/> + <use xlink:href="#glyph2-7" x="526.75137" y="156.5"/> + <use xlink:href="#glyph2-10" x="533.42577" y="156.5"/> + <use xlink:href="#glyph2-7" x="536.76417" y="156.5"/> + <use xlink:href="#glyph2-5" x="543.43857" y="156.5"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-6" x="517.41993" y="170.5"/> + <use xlink:href="#glyph2-4" x="526.75353" y="170.5"/> + <use xlink:href="#glyph2-7" x="533.42313" y="170.5"/> + <use xlink:href="#glyph2-8" x="540.09273" y="170.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 391.9375 355.5 L 538.601562 355.5 " transform="matrix(1,0,0,1,-56,-196)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 546.601562 355.5 L 538.601562 352.5 L 538.601562 358.5 Z M 546.601562 355.5 " transform="matrix(1,0,0,1,-56,-196)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(100%,57.647705%,0%);stroke-opacity:1;stroke-dasharray:4,4;stroke-miterlimit:10;" d="M 211.824219 335.25 L 282.183594 335.25 L 282.183594 375.75 L 211.824219 375.75 Z M 211.824219 335.25 " transform="matrix(1,0,0,1,-56,-196)"/> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-11" x="161.65449" y="156.5"/> + <use xlink:href="#glyph2-4" x="171.65049" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-10" x="178.32489" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-7" x="181.65849" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-5" x="188.33289" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="191.66649" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-2" x="200.33289" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-3" x="207.00729" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-4" x="213.68169" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-5" x="220.35609" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-6" x="177.66523" y="170.5"/> + <use xlink:href="#glyph2-4" x="186.99883" y="170.5"/> + <use xlink:href="#glyph2-7" x="193.66843" y="170.5"/> + <use xlink:href="#glyph2-8" x="200.33803" y="170.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(100%,57.647705%,0%);stroke-opacity:1;stroke-dasharray:4,4;stroke-miterlimit:10;" d="M 423.839844 335.25 L 493.035156 335.25 L 493.035156 375.75 L 423.839844 375.75 Z M 423.839844 335.25 " transform="matrix(1,0,0,1,-56,-196)"/> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-11" x="373.08859" y="156.5"/> + <use xlink:href="#glyph2-4" x="383.08459" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-10" x="389.75899" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-7" x="393.09259" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-5" x="399.76699" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="403.10059" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-2" x="411.76699" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-3" x="418.44139" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-4" x="425.11579" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-5" x="431.79019" y="156.5"/> +</g> +<g style="fill:rgb(76.078796%,34.509277%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-6" x="389.09933" y="170.5"/> + <use xlink:href="#glyph2-4" x="398.43293" y="170.5"/> + <use xlink:href="#glyph2-7" x="405.10253" y="170.5"/> + <use xlink:href="#glyph2-8" x="411.77213" y="170.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 316.421875 207 L 391.9375 207 L 391.9375 252 L 316.421875 252 Z M 316.421875 207 " transform="matrix(1,0,0,1,-56,-196)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="268.83019" y="37.5"/> + <use xlink:href="#glyph2-2" x="277.49659" y="37.5"/> + <use xlink:href="#glyph2-3" x="284.17099" y="37.5"/> + <use xlink:href="#glyph2-4" x="290.84539" y="37.5"/> + <use xlink:href="#glyph2-5" x="297.51979" y="37.5"/> + <use xlink:href="#glyph2-6" x="300.85819" y="37.5"/> + <use xlink:href="#glyph2-4" x="310.19659" y="37.5"/> + <use xlink:href="#glyph2-7" x="316.87099" y="37.5"/> + <use xlink:href="#glyph2-8" x="323.54539" y="37.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 159.941406 213.589844 C 174.6875 222.375 174.6875 236.625 159.941406 245.410156 C 145.195312 254.195312 121.289062 254.195312 106.542969 245.410156 C 91.796875 236.625 91.796875 222.375 106.542969 213.589844 C 121.289062 204.804688 145.195312 204.804688 159.941406 213.589844 " transform="matrix(1,0,0,1,-56,-196)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-9" x="64.56734" y="30.5"/> + <use xlink:href="#glyph2-7" x="73.23374" y="30.5"/> + <use xlink:href="#glyph2-10" x="79.90814" y="30.5"/> + <use xlink:href="#glyph2-7" x="83.24654" y="30.5"/> + <use xlink:href="#glyph2-5" x="89.92094" y="30.5"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-6" x="63.9023" y="44.5"/> + <use xlink:href="#glyph2-4" x="73.2359" y="44.5"/> + <use xlink:href="#glyph2-7" x="79.9055" y="44.5"/> + <use xlink:href="#glyph2-8" x="86.5751" y="44.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 171.5 229.5 L 306.519531 229.5 " transform="matrix(1,0,0,1,-56,-196)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 314.519531 229.5 L 306.519531 226.5 L 306.519531 232.5 Z M 314.519531 229.5 " transform="matrix(1,0,0,1,-56,-196)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 613.457031 213.589844 C 628.203125 222.375 628.203125 236.625 613.457031 245.410156 C 598.710938 254.195312 574.804688 254.195312 560.058594 245.410156 C 545.3125 236.625 545.3125 222.375 560.058594 213.589844 C 574.804688 204.804688 598.710938 204.804688 613.457031 213.589844 " transform="matrix(1,0,0,1,-56,-196)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-9" x="518.08497" y="30.5"/> + <use xlink:href="#glyph2-7" x="526.75137" y="30.5"/> + <use xlink:href="#glyph2-10" x="533.42577" y="30.5"/> + <use xlink:href="#glyph2-7" x="536.76417" y="30.5"/> + <use xlink:href="#glyph2-5" x="543.43857" y="30.5"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-6" x="517.41993" y="44.5"/> + <use xlink:href="#glyph2-4" x="526.75353" y="44.5"/> + <use xlink:href="#glyph2-7" x="533.42313" y="44.5"/> + <use xlink:href="#glyph2-8" x="540.09273" y="44.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 391.9375 229.5 L 538.601562 229.5 " transform="matrix(1,0,0,1,-56,-196)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 546.601562 229.5 L 538.601562 226.5 L 538.601562 232.5 Z M 546.601562 229.5 " transform="matrix(1,0,0,1,-56,-196)"/> +</g> +</svg>
--- a/presen/sigos.html Sun May 29 19:28:03 2016 +0900 +++ b/presen/sigos.html Mon May 30 02:01:33 2016 +0900 @@ -75,7 +75,7 @@ <td> <div align="left"> 伊波 立樹 - 琉球大学理工学研究科情報工学専攻 + 琉球大学理工学研究科 <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;"> </div> </td> @@ -87,15 +87,26 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.3.1 (2016-04-26) [x86_64-darwin15] - on 2016-05-29 18:34:59 +0900 with Markdown engine kramdown (1.11.1) + on 2016-05-30 01:57:52 +0900 with Markdown engine kramdown (1.11.1) using options {} --> <!-- _S9SLIDE_ --> <h2 id="gears-os">Gears OS</h2> <ul> - <li>当研究室では 処理の単位を Code Gear、 データの単位を Data Gear を用いて、並列性、柔軟性、信頼性を指標とした Gears OS を設計してきた</li> - <li>本研究では Gears OS のプロトタイプとして並列処理機構をCbC(Continuation based C) で実装し、並列処理を行う簡単な例題を用いて評価を行う</li> + <li>当研究室では 処理の単位を Code Gear、 データの単位を Data Gear を用いて + <ul> + <li>並列性</li> + <li>柔軟性</li> + <li>信頼性</li> + </ul> + </li> +</ul> + +<p>を指標とした Gears OS を設計してきた</p> + +<ul> + <li>本研究では Gears OS のプロトタイプとして並列処理機構をCbC(Continuation based C) で実装を行う</li> </ul> @@ -104,22 +115,40 @@ <!-- _S9SLIDE_ --> <h2 id="gears-os-">Gears OS の並列性</h2> <ul> - <li>Code Gear と Data Gear という Code と Data の単位を使って構成される</li> + <li>Gears OS はプログラムの単位として Gear を用いる</li> + <li>Gear には プログラムの処理を示す Code Gear、 Data を示す Data Gear がある</li> <li>Code/Data Gear を用いて記述することでプログラム全体の並列度を高め、効率的に並列処理することが可能</li> </ul> +<div style="text-align: center;"> + <img src="./images/codeGear_dataGear.svg" alt="message" width="450" /> +</div> + </div> <div class='slide '> <!-- _S9SLIDE_ --> <h2 id="gears-os--1">Gears OS の柔軟性</h2> <ul> - <li>Gear を追加することでデータ拡張や機能の追加が可能</li> - <li>GPU 等のさまざまなアーキテクチャでも同じプログラムが動く</li> - <li>バージョンが異なる Gears OS でも Gear の共通部分を用いて通信を行う</li> - <li>実行時の処理の変更を可能とする</li> + <li>Gears OS は Meta Computation を使用することで + <ul> + <li>データ拡張や機能の追加</li> + <li>GPU 等のさまざまなアーキテクチャでも同じプログラムの動作</li> + <li>バージョンが異なる者同士がネットワーク接続しても通信</li> + </ul> + </li> </ul> +<p>等を柔軟に対応する</p> + +<ul> + <li>Meta Computation は 通常の Computaiton と階層を分けて処理を行う</li> +</ul> + +<div style="text-align: center;"> + <img src="./images/meta_gear.svg" alt="message" width="800" /> +</div> + </div> <div class='slide '> @@ -129,13 +158,13 @@ <li>検証 <ul> <li>モデル検査を行う</li> - <li>できるだけ有限状態</li> - <li>スタックや環境など不必要に状態を入れない</li> + <li>モデル検査は状態の数が膨大になると検査するのが難しい</li> + <li>そのため、不必要な状態である環境やスタックをなるべく取り除き、処理を行う</li> </ul> </li> <li>証明 <ul> - <li>Code Gear と Data Gear を理論に定義</li> + <li>Code Gear と Data Gear を理論的に定義</li> </ul> </li> </ul> @@ -144,11 +173,15 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="gears-os--gear">Gears OS での Gear</h2> +<h2 id="section">この発表は</h2> <ul> - <li>Gears OS はプログラムの単位として Gear を用いる</li> - <li>Gear は並列実行の単位、データの分割、 Gear 間の接続等になる</li> - <li>Gear には プログラムの処理を示す Code Gear、 Data を示す Data Gear がある</li> + <li>Gears OS でのGear</li> + <li>Meta Computation</li> + <li>Continuation based C(CbC)</li> + <li>CbC を用いた Gears OS の記述</li> + <li>Gears OS のプロトタイプの構成</li> + <li>まとめ</li> + <li>課題</li> </ul> @@ -160,23 +193,11 @@ <li>Code Gear はプログラムの処理そのものを表す</li> <li>Data Gear は int や 文字列などの Data そのものを表す</li> <li>Code Gear は必要な Input Data Gear が揃ったら実行し、 Output Data Gear を生成する</li> + <li>Code Gear と Input / Output Data Gear の対応から依存関係を解決し、 Code Gear の並列実行を行う</li> </ul> <div style="text-align: center;"> - <img src="./images/codeGear_dataGear.svg" alt="message" width="900" /> -</div> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h2 id="code-gear-data-gear-">Code Gear、 Data Gear での並列実行</h2> -<ul> - <li>Gears OS では Code Gear と Input / Output Data Gear の対応から依存関係を解決し、 Code Gear の並列実行を行う</li> -</ul> - -<div style="text-align: center;"> - <img src="./images/codeGear_dataGear_dependency.svg" alt="message" width="900" /> + <img src="./images/codeGear_dataGear_dependency.svg" alt="message" width="600" /> </div> @@ -185,9 +206,8 @@ <!-- _S9SLIDE_ --> <h2 id="meta-computation">Meta Computation</h2> <ul> - <li>Gears OS の柔軟性は Meta Computation で実現</li> <li>Meta Computation は通常の Computation のための Computation</li> - <li>並列処理の依存関係の解決、 GPUなどのアーキテクチャでの実行のために行う処理など</li> + <li>並列処理の依存関係の解決、 GPUなどのアーキテクチャでの実行のために行う処理などを行う</li> <li>Gears OS では Meta Computation を Meta Code Gear, Meta Data Gear で表現</li> </ul> @@ -197,14 +217,19 @@ <!-- _S9SLIDE_ --> <h2 id="meta-gear">Meta Gear</h2> <ul> - <li>Meta Code Gear は 通常の Code Gear の直後に接続され、 Meta Computation を実行</li> - <li>Meta Computation の実行後は通常の Code Gear で指定した Code Gear へ接続</li> - <li>Meta Data Gear はMeta Computation を行うために使用する Data Gear</li> - <li>Meta 部分は Normal Level からなるべく見えない</li> + <li>Meta Computation は Code/Data Gearの接続の間に行われる</li> + <li>Meta Computation の処理も Code/Data Gear で実現する</li> + <li>この Gear を Meta Code/Data Gearと呼ぶ + <ul> + <li>Meta Code Gear は Meta Computation のプログラム部分</li> + <li>Meta Data Gear は Meta Code Gear で管理されるデータ部分</li> + </ul> + </li> + <li>Gears は通常の Code/Data Gear から Meta Code/Data Gear 接続部分は見えないように実装を行う</li> </ul> <div style="text-align: center;"> - <img src="./images/meta_gear.svg" alt="message" width="900" /> + <img src="./images/meta_cg_dg.svg" alt="message" width="450" /> </div> @@ -224,15 +249,21 @@ <!-- _S9SLIDE_ --> <h2 id="continuation-based-c-1">Continuation based C</h2> <ul> - <li>Code Segment の定義は <code>__code CS名</code> で行う - <ul> - <li>Code Gear も同等に定義する</li> - </ul> - </li> + <li>Code Segment の定義は <code>__code CS名</code> で行う</li> <li>Code Segment 間は <code>goto CS名</code> で移動する。この移動を継続と呼ぶ</li> <li>C の関数呼び出しとは異なり、Code Segment では戻り値を持たない。このような環境を持たない継続を計量継続と呼ぶ</li> </ul> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h2 id="continuation-based-c-2">Continuation based C</h2> +<ul> + <li>このコードは code1、code2 の2つの Code Segment を定義している</li> + <li>code1 内の <code>goto code2</code> でcode2 への継続を行っている</li> +</ul> + <pre lang="c"><code>/* code1 define */ __code code1(List list) { .... @@ -249,11 +280,76 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> +<h2 id="cbc--gears-os-">CbC を用いた Gears OS の記述</h2> +<ul> + <li>Gears OS での Code Gear も Code Segment の定義のように記述する</li> + <li>各 Code Gear の引数は 必要な Data Gear を示す</li> + <li>このコードでは 2つの Code Gear と 1つの Meta Code Gear を定義しており、 code1 から code2への継続を行っている</li> +</ul> + +<pre lang="c"><code>__code code1(struct Array* array, struct LoopCounter* loopCounter) { + ... + goto code2(array); +} + +__code meta_code1(struct Context* context, enum Code next) { + goto (context->code[next])(context); +} + +__code code2(struct Array* array) { + ... +} +</code></pre> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h2 id="cbc--gears-os--1">CbC の Gears OS サポート</h2> +<ul> + <li>実際は code1 から code2 への継続の間には Meta Code Gear である meta_code1 が実行される</li> + <li>しかし、通常は Meta Level の継続をプログラマーは意識する必要はない</li> + <li>そこで、CbC は Code Gear 間の接続に自動的に Meta Code Gear を挟むというサポートを行う</li> + <li>CbC のサポートを行うとこのコードのように展開される</li> + <li>メタレベルのサポートの際は <strong>context</strong> という Meta Data Gear を使用する</li> +</ul> + +<pre lang="c"><code>__code code1(struct Context* context, struct Array* array, struct LoopCounter* loopCounter) { + ... + goto meta_code1(context, Code2); +} + +__code code1_stub(struct Context* context) { + goto code1(context, &context->data[Node]->node.value->array, &context->data[LoopCounter]->loopCounter); +} + +__code meta_code1(struct Context* context, enum Code next) { + goto (context->code[next])(context); +} + +__code code2(struct Context* context, struct Array* array) { + ... +} + +__code code2_stub(struct Context* context) { + goto code1(context, &context->data[Node]->node.value->array); +} +</code></pre> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> <h2 id="context">Context</h2> <ul> - <li>Context は 接続可能な Code/Data Gear のリスト、それらを結びつけるMeta Gear, 独立したメモリ空間をもっている Meta Data Gear</li> - <li>各 Gear にアクセスする際は Context を経由する</li> - <li>Worker 毎にContext を持っている</li> + <li>Context は + <ul> + <li>接続可能な Code/Data Gear のリスト</li> + <li>独立したメモリ空間 +をもっている</li> + </ul> + </li> + <li>各 Code/Data Gear にアクセスする際は Context を経由する</li> </ul> @@ -262,25 +358,16 @@ <!-- _S9SLIDE_ --> <h2 id="context-1">Context</h2> <ul> - <li>実行可能な Code Gear の名前は <strong>enum</strong> で定義する</li> - <li>Context の初期化時に名前と関数ポインタを対応付ける</li> -</ul> - -<pre lang="c"><code>enum Code { - Code1, - Code2, - Code3, - Exit, -}; -</code></pre> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h2 id="context-2">Context</h2> -<ul> - <li>Context は C の構造体で表現される</li> + <li>Context は + <ul> + <li>実行可能な Code Gear の数を示す <strong>CodeNum</strong></li> + <li>実行可能な Code Gear のリストを示す <strong>Code</strong></li> + <li>Data Gear の Allocate 用の <strong>heapStart</strong>, <strong>heap</strong>, <strong>heapLimit</strong></li> + <li>Data Gear の数を示す <strong>dataNum</strong></li> + <li>Data Gear のリストを示す <strong>data</strong> +で構成される</li> + </ul> + </li> </ul> <pre lang="c"><code>/* context define */ @@ -295,14 +382,25 @@ }; </code></pre> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h2 id="context-2">Context</h2> <ul> - <li>実行可能な Code Gear の数を示す <strong>CodeNum</strong></li> - <li>実行可能な Code Gear へのポインタ <strong>Code</strong></li> - <li>Data Gear の Allocate 用の <strong>heapStart</strong>, <strong>heap</strong>, <strong>heapLimit</strong></li> - <li>Data Gear の数を示す <strong>dataNum</strong></li> - <li>Data Gear へのポインタ <strong>data</strong></li> + <li>実行可能な Code Gear の名前は <strong>enum code</strong> で定義する</li> + <li>Context の初期化時に名前と関数ポインタを対応付ける</li> + <li>現在の Gears ではこの enum code 使って接続先の Code Gear を指定する</li> </ul> +<pre lang="c"><code>enum Code { + Code1, + Code2, + Code3, + Exit, +}; +</code></pre> + </div> <div class='slide '> @@ -332,10 +430,11 @@ <!-- _S9SLIDE_ --> <h2 id="code-gear--stub">Code Gear の stub</h2> <ul> - <li>通常 Data Gear にアクセスするにはContext を経由しなければならない</li> - <li>しかし、通常の Code Gear ではMeta Data Gear である Context をあまり参照したくない</li> - <li>そのため、通常の Code Gear で必要な Data Gear を Context から取り出す stub を用意する</li> - <li>stub は一種の Meta Code Gear である</li> + <li>Data Gear にアクセスするにはContext を経由する</li> + <li>だが、通常の Code Gear では Meta Data Gear である Context の参照は避ける必要がある</li> + <li>Gears OS では通常の Code Gear で必要な Data Gear を Context から取り出す stub を用意する</li> + <li>stub は一種の Meta Code Gear であるため、 CbC で自動生成される</li> + <li>このコードでは Array と LoopCounter が必要な code1 の stub を示している</li> </ul> <pre lang="c"><code>__code code1(struct Context* context, struct Array* array, struct LoopCounter* loopCounter) { @@ -352,73 +451,16 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="cbc--gears-os-">CbC の Gears OS サポート</h2> -<ul> - <li>通常の goto の継続では Meta Code Gear への継続が見えてしまう</li> - <li>Code Gear の指定も 一度 Meta を挟む必要があるので enum を指定することで行っている</li> -</ul> - -<pre lang="c"><code>__code code1(struct Context* context, struct Array* array, struct LoopCounter* loopCounter) { - ... - goto meta_code1(context, Code2); -} - -__code code1_stub(struct Context* context) { - goto code1(context, &context->data[Node]->node.value->array, &context->data[LoopCounter]->loopCounter); -} - -__code meta_code1(struct Context* context, enum Code next) { - goto (context->code[next])(context); -} - -__code code2(struct Context* context, struct Array* array) { - ... -} - -__code code2_stub(struct Context* context) { - goto code1(context, &context->data[Node]->node.value->array); -} -</code></pre> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h2 id="cbc--gears-os--1">CbC の Gears OS サポート</h2> -<ul> - <li>Meta Code Gear への接続を自動的に行う構文サポートを行う</li> - <li>stub の自動生成も行う</li> -</ul> - -<pre lang="c"><code>__code code1(struct Context* context, struct Array* array, struct LoopCounter* loopCounter) { - ... - goto code2(array); -} - -__code meta_code1(struct Context* context, enum Code next) { - goto (context->code[next])(context); -} - -__code code2(struct Context* context, struct Array* array) { - ... -} -</code></pre> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> <h2 id="gears-os--3">Gears OS の構成</h2> <ul> <li>Context <ul> - <li>Worker 毎にContext を持っており、 TaskQueue と Persistent Data Tree は共有される</li> + <li>Thread 毎にContext を持っており、 TaskQueue と Persistent Data Tree は共有される</li> </ul> </li> <li>TaskQueue <ul> - <li>CAS を利用したスレッドセーフなQueue</li> - <li>ActiveTaskQueue と WaitTaskQueue の 2種類</li> + <li>実行される Task のリストを扱う</li> </ul> </li> </ul> @@ -457,9 +499,7 @@ <ul> <li>Worker <ul> - <li>Worker は ActiveTaskQueue から Task を取得する</li> - <li>取得した Task から必要な Data Gear を Tree から取得し、 Code Gear を実行</li> - <li>実行後必要なデータを Persistent Data Tree 書き出す</li> + <li>TaskQueue から Task を取得し、実行する</li> </ul> </li> </ul> @@ -475,7 +515,7 @@ <h2 id="taskqueue">TaskQueue</h2> <ul> <li>Task Queue は Task の管理を行う</li> - <li>すべての Worker の Context で共有される</li> + <li>すべての Worker の Thread で共有されるため、 Compare And Swap(CAS) を使用した Synchronized Queue として実装する</li> <li>TaskQueue は 2つで Data Gear で表現される <ul> <li>先頭と末尾の要素を持った Queue 表す Data Gear</li> @@ -505,18 +545,18 @@ <h2 id="taskqueueenqueue">TaskQueueの操作(Enqueue)</h2> <ul> <li>Task を挿入する場合 Queue の last から最後の要素を取り出し、次の要素に新しく挿入する要素を設定</li> - <li>正しく最後の要素が変更できたことをCAS で 保証し、末尾の変更を行う必要がある</li> + <li>正しく最後の要素が変更できたことを CAS で 保証し、末尾の変更を行う必要がある</li> </ul> -<pre lang="c"><code>__code putQueue3(struct Context* context, struct Queue* queue, struct Element* new_element) { +<pre lang="c"><code>__code putQueue3(struct Queue* queue, struct Element* new_element) { struct Element* last = queue->last; if (__sync_bool_compare_and_swap(&queue->last, last, new_element)) { last->next = new_element; - goto meta(context, context->next); + goto exit(); } else { - goto meta(context, PutQueue3); + goto putQueue3(queue, new_element); } } @@ -529,9 +569,9 @@ <h2 id="persistent-data-tree">Persistent Data Tree</h2> <ul> <li>Persistent Data Tree は Data Gear の管理を行う</li> - <li>TaskQueue と同じですべての Context で共有される</li> - <li>挿入・削除・検索における処理時間を保証するために Red-Black Tree アルゴリズムを用いて木構造の平衡性を保つ</li> - <li>Persistent Data Tree への書き込みのみで Worker 間の相互作用を発生させ、目的の処理を行う</li> + <li>TaskQueue と同じですべての Thread で共有される</li> + <li>Red-Black Tree アルゴリズムを用いて木構造の平衡性を保つ</li> + <li>unix のファイルシステムに相当する的な</li> </ul> @@ -542,52 +582,10 @@ <ul> <li>Worker は TaskQueue から Task を取得して実行する</li> <li>TaskQueue へのアクセスは Enqueue 操作と同じで CAS を用いる</li> - <li>Task には実行する Code Gear と実行に必要な Data Gear の key が格納されている</li> + <li>Task には実行する Code Gear と実行に必要な Data Gear の ree の key が格納されている</li> <li>Task が完了したら次の Task を取得する</li> -</ul> - -<pre lang="c"><code>// Task define -union Data { - // size: 8 byte - struct Task { - enum Code code; - int key; - } task; -} -</code></pre> - -<pre lang="c"><code>__code getQueue(struct Context* context, struct Queue* queue, struct Node* node) { - if (queue->first == 0) - return; - - struct Element* first = queue->first; - if (__sync_bool_compare_and_swap(&queue->first, first, first->next)) { - queue->count--; - - context->next = GetQueue; - - context->next = first->task->code; - node->key = first->task->key; - - struct Traverse *t = &context->data[Traverse]->traverse; - t->next = GetQueue; - goto meta(context, Get); - } else { - goto meta(context, GetQueue); - } -} - -</code></pre> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h2 id="worker-1">Worker</h2> -<ul> <li>Worker で実行される Code Gear は他の Code Gear と同様の記述である</li> <li>つまり依存関係のない Code Gear は並列で動作させることができる</li> - <li>Gears OS 自体が Code Gear によって構成されるため、 Gears OS の実装自体が Gears でプログラミングを行う際の指針になる</li> </ul> @@ -597,10 +595,11 @@ <h2 id="taskmanger">TaskManger</h2> <ul> <li>TaskManager は Task の依存関係の解決を行う</li> - <li>Worker の作成と停止も行う</li> + <li>Thread の作成と停止も行う</li> + <li>このコードは Thread の生成を行い、 Thread 毎の context を設定している <strong>Meta Code Gear</strong></li> </ul> -<pre lang="c"><code>// Code Gear +<pre lang="c"><code>// Meta Code Gear __code createWorker(struct Context* context, struct LoopCounter* loopCounter, struct Worker* worker) { int i = loopCounter->i; @@ -625,37 +624,36 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="section">プロトタイプの評価</h2> +<h2 id="section-1">プロトタイプの実行</h2> <ul> <li>今回 Gears OS の構成要素である Persistent Data Tree, TaskQueue, Worker の実装を行った</li> <li>これにより、 Gears OS を用いて依存関係のない並列処理の実行が可能になった</li> - <li>Gears OS の評価として依存関係のない例題を実装して評価を行う</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="twice">Twice</h2> +<h2 id="gears--code-gear-">Gears で実行する Code Gear 例</h2> <ul> - <li>依存関係のない例題として Twice を実装した</li> + <li>プロトタイプのタスクの例題として Twice を実装した</li> <li>Twice は与えられた整数配列を2倍にする例題である</li> </ul> <pre lang="c"><code>// Twice Code Gear -__code twice(struct Context* context, struct LoopCounter* loopCounter, int index, int alignment, int* array) { +__code twice(struct LoopCounter* loopCounter, int index, int alignment, int* array) { int i = loopCounter->i; if (i < alignment) { array[i+index*alignment] = array[i+index*alignment]*2; loopCounter->i++; - goto meta(context, Twice); + goto twice(loopCounter, index, alignment, array); } loopCounter->i = 0; - goto meta(context, context->next); + goto exit(); } </code></pre> @@ -663,9 +661,10 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="section-1">実験環境</h2> +<h2 id="section-2">並列処理の確認</h2> <ul> - <li>測定環境 + <li>Twice を使用し、Gears OS が実際に並列処理されているかどうかの確認を行った</li> + <li>環境 <ul> <li>Model : MacPro Mid 2010</li> <li>OS : Mac OS X 10.10.5</li> @@ -678,11 +677,6 @@ <li>1 Task 当たりの処理量 : 2^11 * 100 elements</li> </ul> - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h2 id="section-2">結果</h2> <table border="1" align="center" width="50%"> <tbody> <tr> @@ -712,13 +706,8 @@ </tbody> </table> -<div style="text-align: center;"> - <img src="./images/twice_640.svg" alt="message" width="900" /> -</div> - <ul> - <li>1 CPU と 12 CPU で約 11.8 倍の速度向上が見られた</li> - <li>十分な台数効果が出てる事がわかる</li> + <li>1cpu と 12cpu では 11.8 倍の向上が見られた</li> </ul> @@ -730,12 +719,13 @@ <li>Cerium は本研究室で開発していた並列プログラミングフレームワーク</li> <li>Cerium では Task と呼ばれる分割されたプログラムを依存関係に沿って実行することで並列実行を可能にする <ul> - <li>本来 Task はデータに依存するもので Task 感の依存関係ではデータの依存関係を保証することが出来ない</li> + <li>本来 Task はデータに依存するもので Task 間の依存関係ではデータの依存関係を保証することが出来ない</li> <li>Gears OS の Task 中身は Code Gear になっており、必要な Input Data Gear が揃わない限り実行しないため、データの依存関係を保証できる</li> </ul> </li> - <li>また Task には汎用ポインタとしてデータの受け渡しを行うため、型情報がなく、型の検査を行うことが出来ない + <li>Task には汎用ポインタとしてデータの受け渡しを行う <ul> + <li>型情報がなく、型の検査を行うことが出来ない</li> <li>Gears OS では 型情報をもつ Data Gear を定義</li> </ul> </li> @@ -749,6 +739,7 @@ <ul> <li>Gears OS は従来の OS が行ってきたネットワーク管理、メモリ管理、並行制御などのメタな部分を Meta Code/Data Gear として定義</li> <li>通常の Code Gear から必要な制御を推論し、 Meta Code Gear を接続することで従来のOSが行ってきた制御の提供を行う</li> + <li>対応表書く</li> </ul> @@ -759,7 +750,7 @@ <ul> <li>Code Gear、 Data Gear によって構成される Gears OS のプロトタイプの設計、実装を行った</li> <li>Gears OS の基本的な機能として TaskQueue、 Persistent Data Tree、 Worker の実装を行った</li> - <li>依存関係のない Twice を用いて並列処理を行い十分な台数効果が出ることを確認した</li> + <li>依存関係のない Twice を実装し、並列処理が行えることを確認した</li> </ul> @@ -780,16 +771,19 @@ </li> <li>Gears OS でのデバック手法 <ul> - <li>軽量継続はスタックを積まないため、スタックトレースが見えない</li> - <li>Context から Data Gear を取得できるため、そこから現在の状況を把握することができる</li> - <li>Context を見ることができる コードを Meta Computation として入れることで Code Gear を止めて、 Data Gear の状態を見ることができる</li> - <li>しかし、 Gears OS は並列実行を基本とするため、 並列で動いているCode Gear に対しては綺麗にデバック出来ない</li> + <li>軽量継続はスタックを積まないため、スタックトレースが見えないためその対策</li> <li>並列処理でのデバック手法も考案する必要がある</li> </ul> </li> <li>型情報の検査 <ul> - <li>プログラムの正しさを保証するために Data Gear 野方情報を検査するシステムを Meta Computation として実装する</li> + <li>プログラムの正しさを保証するために Data Gear の情報を検査するシステムを Meta Computation として実装する</li> + </ul> + </li> + <li>Contextの動的生成 + <ul> + <li>今は静的に自分で生成している</li> + <li>CbC 用の Runtime をつくり、 Context を動的に生成</li> </ul> </li> </ul>
--- a/presen/sigos.md Sun May 29 19:28:03 2016 +0900 +++ b/presen/sigos.md Mon May 30 02:01:33 2016 +0900 @@ -1,65 +1,84 @@ title: Code Gear、 Data Gear に基づく OS のプロトタイプ author: 伊波 立樹 -profile: 琉球大学理工学研究科情報工学専攻 +profile: 琉球大学理工学研究科 lang: Japanese code-engine: coderay ## Gears OS -- 当研究室では 処理の単位を Code Gear、 データの単位を Data Gear を用いて、並列性、柔軟性、信頼性を指標とした Gears OS を設計してきた -- 本研究では Gears OS のプロトタイプとして並列処理機構をCbC(Continuation based C) で実装し、並列処理を行う簡単な例題を用いて評価を行う +- 当研究室では 処理の単位を Code Gear、 データの単位を Data Gear を用いて + - 並列性 + - 柔軟性 + - 信頼性 + +を指標とした Gears OS を設計してきた + +- 本研究では Gears OS のプロトタイプとして並列処理機構をCbC(Continuation based C) で実装を行う ## Gears OS の並列性 -- Code Gear と Data Gear という Code と Data の単位を使って構成される +- Gears OS はプログラムの単位として Gear を用いる +- Gear には プログラムの処理を示す Code Gear、 Data を示す Data Gear がある - Code/Data Gear を用いて記述することでプログラム全体の並列度を高め、効率的に並列処理することが可能 +<div style="text-align: center;"> + <img src="./images/codeGear_dataGear.svg" alt="message" width="450"> +</div> + ## Gears OS の柔軟性 -- Gear を追加することでデータ拡張や機能の追加が可能 -- GPU 等のさまざまなアーキテクチャでも同じプログラムが動く -- バージョンが異なる Gears OS でも Gear の共通部分を用いて通信を行う -- 実行時の処理の変更を可能とする +- Gears OS は Meta Computation を使用することで + - データ拡張や機能の追加 + - GPU 等のさまざまなアーキテクチャでも同じプログラムの動作 + - バージョンが異なる者同士がネットワーク接続しても通信 + +等を柔軟に対応する + +- Meta Computation は 通常の Computaiton と階層を分けて処理を行う + +<div style="text-align: center;"> + <img src="./images/meta_gear.svg" alt="message" width="800"> +</div> ## Gears OS の信頼性 - 検証 - モデル検査を行う - - できるだけ有限状態 - - スタックや環境など不必要に状態を入れない + - モデル検査は状態の数が膨大になると検査するのが難しい + - そのため、不必要な状態である環境やスタックをなるべく取り除き、処理を行う - 証明 - - Code Gear と Data Gear を理論に定義 + - Code Gear と Data Gear を理論的に定義 -## Gears OS での Gear -- Gears OS はプログラムの単位として Gear を用いる -- Gear は並列実行の単位、データの分割、 Gear 間の接続等になる -- Gear には プログラムの処理を示す Code Gear、 Data を示す Data Gear がある +## この発表は +- Gears OS でのGear +- Meta Computation +- Continuation based C(CbC) +- CbC を用いた Gears OS の記述 +- Gears OS のプロトタイプの構成 +- まとめ +- 課題 ## Code Gear、 Data Gear - Code Gear はプログラムの処理そのものを表す - Data Gear は int や 文字列などの Data そのものを表す - Code Gear は必要な Input Data Gear が揃ったら実行し、 Output Data Gear を生成する +- Code Gear と Input / Output Data Gear の対応から依存関係を解決し、 Code Gear の並列実行を行う <div style="text-align: center;"> - <img src="./images/codeGear_dataGear.svg" alt="message" width="900"> + <img src="./images/codeGear_dataGear_dependency.svg" alt="message" width="600"> </div> -## Code Gear、 Data Gear での並列実行 -- Gears OS では Code Gear と Input / Output Data Gear の対応から依存関係を解決し、 Code Gear の並列実行を行う - -<div style="text-align: center;"> - <img src="./images/codeGear_dataGear_dependency.svg" alt="message" width="900"> -</div> ## Meta Computation -- Gears OS の柔軟性は Meta Computation で実現 - Meta Computation は通常の Computation のための Computation -- 並列処理の依存関係の解決、 GPUなどのアーキテクチャでの実行のために行う処理など +- 並列処理の依存関係の解決、 GPUなどのアーキテクチャでの実行のために行う処理などを行う - Gears OS では Meta Computation を Meta Code Gear, Meta Data Gear で表現 ## Meta Gear -- Meta Code Gear は 通常の Code Gear の直後に接続され、 Meta Computation を実行 -- Meta Computation の実行後は通常の Code Gear で指定した Code Gear へ接続 -- Meta Data Gear はMeta Computation を行うために使用する Data Gear -- Meta 部分は Normal Level からなるべく見えない +- Meta Computation は Code/Data Gearの接続の間に行われる +- Meta Computation の処理も Code/Data Gear で実現する +- この Gear を Meta Code/Data Gearと呼ぶ + - Meta Code Gear は Meta Computation のプログラム部分 + - Meta Data Gear は Meta Code Gear で管理されるデータ部分 +- Gears は通常の Code/Data Gear から Meta Code/Data Gear 接続部分は見えないように実装を行う <div style="text-align: center;"> - <img src="./images/meta_gear.svg" alt="message" width="900"> + <img src="./images/meta_cg_dg.svg" alt="message" width="450"> </div> @@ -70,10 +89,13 @@ ## Continuation based C - Code Segment の定義は ``__code CS名`` で行う - - Code Gear も同等に定義する - Code Segment 間は ``goto CS名`` で移動する。この移動を継続と呼ぶ - C の関数呼び出しとは異なり、Code Segment では戻り値を持たない。このような環境を持たない継続を計量継続と呼ぶ +## Continuation based C +- このコードは code1、code2 の2つの Code Segment を定義している +- code1 内の ``goto code2`` でcode2 への継続を行っている + ``` c /* code1 define */ __code code1(List list) { @@ -87,85 +109,32 @@ } ``` -## Context -- Context は 接続可能な Code/Data Gear のリスト、それらを結びつけるMeta Gear, 独立したメモリ空間をもっている Meta Data Gear -- 各 Gear にアクセスする際は Context を経由する -- Worker 毎にContext を持っている - -## Context -- 実行可能な Code Gear の名前は **enum** で定義する -- Context の初期化時に名前と関数ポインタを対応付ける - -``` c -enum Code { - Code1, - Code2, - Code3, - Exit, -}; -``` - -## Context -- Context は C の構造体で表現される +## CbC を用いた Gears OS の記述 +- Gears OS での Code Gear も Code Segment の定義のように記述する +- 各 Code Gear の引数は 必要な Data Gear を示す +- このコードでは 2つの Code Gear と 1つの Meta Code Gear を定義しており、 code1 から code2への継続を行っている ``` c -/* context define */ -struct Context { - int codeNum; - __code (**code) (struct Context*); - void* heapStart; - void* heap; - long heapLimit; - int dataNum; - union Data **data; -}; -``` - -- 実行可能な Code Gear の数を示す **CodeNum** -- 実行可能な Code Gear へのポインタ **Code** -- Data Gear の Allocate 用の **heapStart**, **heap**, **heapLimit** -- Data Gear の数を示す **dataNum** -- Data Gear へのポインタ **data** - -## Data Gear の表現 -- 使用する Data Gear は C の共用体と構造体を用いた表現をする -- これを元に Gears OS は 必要な Data Gear を allocate する - -``` c -/* data Gear define */ -union Data { - struct Time { - enum Code next; - double time; - } time; - struct LoopCounter { - int i; - } loopCounter; - .... -}; -``` - -## Code Gear の stub -- 通常 Data Gear にアクセスするにはContext を経由しなければならない -- しかし、通常の Code Gear ではMeta Data Gear である Context をあまり参照したくない -- そのため、通常の Code Gear で必要な Data Gear を Context から取り出す stub を用意する -- stub は一種の Meta Code Gear である - -``` c -__code code1(struct Context* context, struct Array* array, struct LoopCounter* loopCounter) { +__code code1(struct Array* array, struct LoopCounter* loopCounter) { ... + goto code2(array); } -/* stub define */ -__code code1_stub(struct Context* context) { - goto code1(context, &context->data[Node]->node.value->array, &context->data[LoopCounter]->loopCounter); +__code meta_code1(struct Context* context, enum Code next) { + goto (context->code[next])(context); +} + +__code code2(struct Array* array) { + ... } ``` - ## CbC の Gears OS サポート -- 通常の goto の継続では Meta Code Gear への継続が見えてしまう -- Code Gear の指定も 一度 Meta を挟む必要があるので enum を指定することで行っている +- 実際は code1 から code2 への継続の間には Meta Code Gear である meta_code1 が実行される +- しかし、通常は Meta Level の継続をプログラマーは意識する必要はない +- そこで、CbC は Code Gear 間の接続に自動的に Meta Code Gear を挟むというサポートを行う +- CbC のサポートを行うとこのコードのように展開される +- メタレベルのサポートの際は **context** という Meta Data Gear を使用する ``` c __code code1(struct Context* context, struct Array* array, struct LoopCounter* loopCounter) { @@ -190,31 +159,91 @@ } ``` -## CbC の Gears OS サポート -- Meta Code Gear への接続を自動的に行う構文サポートを行う -- stub の自動生成も行う +## Context +- Context は + - 接続可能な Code/Data Gear のリスト + - 独立したメモリ空間 +をもっている + +- 各 Code/Data Gear にアクセスする際は Context を経由する + +## Context +- Context は + - 実行可能な Code Gear の数を示す **CodeNum** + - 実行可能な Code Gear のリストを示す **Code** + - Data Gear の Allocate 用の **heapStart**, **heap**, **heapLimit** + - Data Gear の数を示す **dataNum** + - Data Gear のリストを示す **data** +で構成される + +``` c +/* context define */ +struct Context { + int codeNum; + __code (**code) (struct Context*); + void* heapStart; + void* heap; + long heapLimit; + int dataNum; + union Data **data; +}; +``` + +## Context +- 実行可能な Code Gear の名前は **enum code** で定義する +- Context の初期化時に名前と関数ポインタを対応付ける +- 現在の Gears ではこの enum code 使って接続先の Code Gear を指定する + +``` c +enum Code { + Code1, + Code2, + Code3, + Exit, +}; +``` + +## Data Gear の表現 +- 使用する Data Gear は C の共用体と構造体を用いた表現をする +- これを元に Gears OS は 必要な Data Gear を allocate する + +``` c +/* data Gear define */ +union Data { + struct Time { + enum Code next; + double time; + } time; + struct LoopCounter { + int i; + } loopCounter; + .... +}; +``` + +## Code Gear の stub +- Data Gear にアクセスするにはContext を経由する +- だが、通常の Code Gear では Meta Data Gear である Context の参照は避ける必要がある +- Gears OS では通常の Code Gear で必要な Data Gear を Context から取り出す stub を用意する +- stub は一種の Meta Code Gear であるため、 CbC で自動生成される +- このコードでは Array と LoopCounter が必要な code1 の stub を示している ``` c __code code1(struct Context* context, struct Array* array, struct LoopCounter* loopCounter) { ... - goto code2(array); } -__code meta_code1(struct Context* context, enum Code next) { - goto (context->code[next])(context); -} - -__code code2(struct Context* context, struct Array* array) { - ... +/* stub define */ +__code code1_stub(struct Context* context) { + goto code1(context, &context->data[Node]->node.value->array, &context->data[LoopCounter]->loopCounter); } ``` ## Gears OS の構成 - Context - - Worker 毎にContext を持っており、 TaskQueue と Persistent Data Tree は共有される + - Thread 毎にContext を持っており、 TaskQueue と Persistent Data Tree は共有される - TaskQueue - - CAS を利用したスレッドセーフなQueue - - ActiveTaskQueue と WaitTaskQueue の 2種類 + - 実行される Task のリストを扱う <div style="text-align: center;"> <img src="./images/gearsos.svg" alt="message" width="750"> @@ -232,9 +261,7 @@ ## Gears OS の構成 - Worker - - Worker は ActiveTaskQueue から Task を取得する - - 取得した Task から必要な Data Gear を Tree から取得し、 Code Gear を実行 - - 実行後必要なデータを Persistent Data Tree 書き出す + - TaskQueue から Task を取得し、実行する <div style="text-align: center;"> <img src="./images/gearsos.svg" alt="message" width="750"> @@ -242,7 +269,7 @@ ## TaskQueue - Task Queue は Task の管理を行う -- すべての Worker の Context で共有される +- すべての Worker の Thread で共有されるため、 Compare And Swap(CAS) を使用した Synchronized Queue として実装する - TaskQueue は 2つで Data Gear で表現される - 先頭と末尾の要素を持った Queue 表す Data Gear - Task と次の要素へのポインタを持った、List を表現する Element という Data Gear @@ -264,18 +291,18 @@ ## TaskQueueの操作(Enqueue) - Task を挿入する場合 Queue の last から最後の要素を取り出し、次の要素に新しく挿入する要素を設定 -- 正しく最後の要素が変更できたことをCAS で 保証し、末尾の変更を行う必要がある +- 正しく最後の要素が変更できたことを CAS で 保証し、末尾の変更を行う必要がある ``` c -__code putQueue3(struct Context* context, struct Queue* queue, struct Element* new_element) { +__code putQueue3(struct Queue* queue, struct Element* new_element) { struct Element* last = queue->last; if (__sync_bool_compare_and_swap(&queue->last, last, new_element)) { last->next = new_element; - goto meta(context, context->next); + goto exit(); } else { - goto meta(context, PutQueue3); + goto putQueue3(queue, new_element); } } @@ -283,62 +310,24 @@ ## Persistent Data Tree - Persistent Data Tree は Data Gear の管理を行う -- TaskQueue と同じですべての Context で共有される -- 挿入・削除・検索における処理時間を保証するために Red-Black Tree アルゴリズムを用いて木構造の平衡性を保つ -- Persistent Data Tree への書き込みのみで Worker 間の相互作用を発生させ、目的の処理を行う +- TaskQueue と同じですべての Thread で共有される +- Red-Black Tree アルゴリズムを用いて木構造の平衡性を保つ +- unix のファイルシステムに相当する的な ## Worker - Worker は TaskQueue から Task を取得して実行する - TaskQueue へのアクセスは Enqueue 操作と同じで CAS を用いる -- Task には実行する Code Gear と実行に必要な Data Gear の key が格納されている +- Task には実行する Code Gear と実行に必要な Data Gear の ree の key が格納されている - Task が完了したら次の Task を取得する -``` c -// Task define -union Data { - // size: 8 byte - struct Task { - enum Code code; - int key; - } task; -} -``` - -``` c -__code getQueue(struct Context* context, struct Queue* queue, struct Node* node) { - if (queue->first == 0) - return; - - struct Element* first = queue->first; - if (__sync_bool_compare_and_swap(&queue->first, first, first->next)) { - queue->count--; - - context->next = GetQueue; - - context->next = first->task->code; - node->key = first->task->key; - - struct Traverse *t = &context->data[Traverse]->traverse; - t->next = GetQueue; - goto meta(context, Get); - } else { - goto meta(context, GetQueue); - } -} - -``` - -## Worker -- Worker で実行される Code Gear は他の Code Gear と同様の記述である -- つまり依存関係のない Code Gear は並列で動作させることができる -- Gears OS 自体が Code Gear によって構成されるため、 Gears OS の実装自体が Gears でプログラミングを行う際の指針になる ## TaskManger - TaskManager は Task の依存関係の解決を行う -- Worker の作成と停止も行う +- Thread の作成と停止も行う +- このコードは Thread の生成を行い、 Thread 毎の context を設定している **Meta Code Gear** ``` c -// Code Gear +// Meta Code Gear __code createWorker(struct Context* context, struct LoopCounter* loopCounter, struct Worker* worker) { int i = loopCounter->i; @@ -359,35 +348,35 @@ } ``` -## プロトタイプの評価 +## プロトタイプの実行 - 今回 Gears OS の構成要素である Persistent Data Tree, TaskQueue, Worker の実装を行った - これにより、 Gears OS を用いて依存関係のない並列処理の実行が可能になった -- Gears OS の評価として依存関係のない例題を実装して評価を行う -## Twice -- 依存関係のない例題として Twice を実装した +## Gears で実行する Code Gear 例 +- プロトタイプのタスクの例題として Twice を実装した - Twice は与えられた整数配列を2倍にする例題である ``` c // Twice Code Gear -__code twice(struct Context* context, struct LoopCounter* loopCounter, int index, int alignment, int* array) { +__code twice(struct LoopCounter* loopCounter, int index, int alignment, int* array) { int i = loopCounter->i; if (i < alignment) { array[i+index*alignment] = array[i+index*alignment]*2; loopCounter->i++; - goto meta(context, Twice); + goto twice(loopCounter, index, alignment, array); } loopCounter->i = 0; - goto meta(context, context->next); + goto exit(); } ``` -## 実験環境 -- 測定環境 +## 並列処理の確認 +- Twice を使用し、Gears OS が実際に並列処理されているかどうかの確認を行った +- 環境 - Model : MacPro Mid 2010 - OS : Mac OS X 10.10.5 - Memory : 16GB @@ -396,7 +385,6 @@ - 分割数 : 640 タスク - 1 Task 当たりの処理量 : 2^11 * 100 elements -## 結果 <table border="1" align='center' width='50%'> <tbody> <tr> @@ -426,29 +414,27 @@ </tbody> </table> -<div style="text-align: center;"> - <img src="./images/twice_640.svg" alt="message" width="900"> -</div> +- 1cpu と 12cpu では 11.8 倍の向上が見られた -- 1 CPU と 12 CPU で約 11.8 倍の速度向上が見られた -- 十分な台数効果が出てる事がわかる ## Cerium との比較 - Cerium は本研究室で開発していた並列プログラミングフレームワーク - Cerium では Task と呼ばれる分割されたプログラムを依存関係に沿って実行することで並列実行を可能にする - - 本来 Task はデータに依存するもので Task 感の依存関係ではデータの依存関係を保証することが出来ない + - 本来 Task はデータに依存するもので Task 間の依存関係ではデータの依存関係を保証することが出来ない - Gears OS の Task 中身は Code Gear になっており、必要な Input Data Gear が揃わない限り実行しないため、データの依存関係を保証できる -- また Task には汎用ポインタとしてデータの受け渡しを行うため、型情報がなく、型の検査を行うことが出来ない +- Task には汎用ポインタとしてデータの受け渡しを行う + - 型情報がなく、型の検査を行うことが出来ない - Gears OS では 型情報をもつ Data Gear を定義 ## 既存の OS との比較 - Gears OS は従来の OS が行ってきたネットワーク管理、メモリ管理、並行制御などのメタな部分を Meta Code/Data Gear として定義 - 通常の Code Gear から必要な制御を推論し、 Meta Code Gear を接続することで従来のOSが行ってきた制御の提供を行う +- 対応表書く ## まとめ - Code Gear、 Data Gear によって構成される Gears OS のプロトタイプの設計、実装を行った - Gears OS の基本的な機能として TaskQueue、 Persistent Data Tree、 Worker の実装を行った -- 依存関係のない Twice を用いて並列処理を行い十分な台数効果が出ることを確認した +- 依存関係のない Twice を実装し、並列処理が行えることを確認した ## 今後の課題 - 一般的に並列処理には依存関係が存在する @@ -459,7 +445,7 @@ - 軽量継続はスタックを積まないため、スタックトレースが見えないためその対策 - 並列処理でのデバック手法も考案する必要がある - 型情報の検査 - - プログラムの正しさを保証するために Data Gear 野方情報を検査するシステムを Meta Computation として実装する + - プログラムの正しさを保証するために Data Gear の情報を検査するシステムを Meta Computation として実装する - Contextの動的生成 - 今は静的に自分で生成している - CbC 用の Runtime をつくり、 Context を動的に生成