Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save underpk/f4091b485f41e172824dd1760df6ce5f to your computer and use it in GitHub Desktop.
Save underpk/f4091b485f41e172824dd1760df6ce5f to your computer and use it in GitHub Desktop.
Split Bluetooth Keyboard

Split bluetooth keyboard

Just some quick notes on something I built fairly quickly; they're published here in the hope that they might be slightly useful for others, or to help inspire others to build something better.

Parts:

  • 2x Adafruit nRF52 https://www.adafruit.com/product/3406 (I got the Pro version, but you'll need a JLink to use the arduino code in this gist if you get the pro, so the link here is the non-pro version)
  • 72x 1N4148 signal diodes
  • 72x Cherry MX compatible keyswitches
  • 6x 1.25u keycaps for modifiers
  • 66x 1u keycaps
  • 2x lipoly battery with JST connector.
  • hot glue to secure the switches in the top plate
  • 20x M3 spacers and standoffs for the case supports
  • 8x M2.5 (M2 will also work) nuts and bolts to mount the controllers

LHS - Left Hand Side

This is a bluetooth peripheral that scans its matrix and publishes the data via bleuart.

RHS - Right Hand Side

This runs as a dual role device; it runs as a Central device that connects to the LHS to read its matrix via bleuart, and runs a bluetooth HID peripheral to publish the combined matrices of the two halves.

You'll want to pair your device with the RHS only!

Wiring

This uses standard matrix wiring (which I've unhelpfully not shown here); each switch has a diode to prevent ghosting. The diodes are used to form the rows. The columns are shown in matrix.svg.

The rows are connected to the A0-A5 pins on the LHS of the controller. The columns are connected to the pins on the other side. Take care to avoid the special pin 31 which is used to sample the battery voltage.

Case

The included case.svg file is ready for use with ponoko.com. I used a blue matte acrylic in my build.

Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1116.852pt"
height="1116.85pt"
viewBox="0 0 1116.852 1116.85"
xml:space="preserve"
id="svg2338"
sodipodi:version="0.32"
inkscape:version="0.92.1 r"
sodipodi:docname="scission-hand-wire.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1"><metadata
id="metadata2382"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs2380"><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 698.03125 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="1396.0651 : 698.03125 : 1"
inkscape:persp3d-origin="698.03253 : 465.35417 : 1"
id="perspective46224" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
id="perspective37556-9" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
id="perspective16301-9" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 270.7085 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="541.41699 : 270.7085 : 1"
inkscape:persp3d-origin="270.7085 : 180.47233 : 1"
id="perspective12409-1" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
id="perspective9337-7" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
id="perspective8562-2" /><inkscape:perspective
id="perspective3083-3"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 338.38501 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective23419-6"
inkscape:persp3d-origin="270.7085 : 180.47233 : 1"
inkscape:vp_z="541.41699 : 270.7085 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 270.7085 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective27913-5"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 338.38501 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
id="perspective27913" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 270.7085 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="541.41699 : 270.7085 : 1"
inkscape:persp3d-origin="270.7085 : 180.47233 : 1"
id="perspective23419" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
id="perspective3083" /><inkscape:perspective
id="perspective8562"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective9337"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective12409"
inkscape:persp3d-origin="270.7085 : 180.47233 : 1"
inkscape:vp_z="541.41699 : 270.7085 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 270.7085 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective16301"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 338.38501 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective37556"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 338.38501 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective51446"
inkscape:persp3d-origin="270.70999 : 180.47333 : 1"
inkscape:vp_z="541.41998 : 270.70999 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 270.70999 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
id="perspective37556-9-8" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
id="perspective16301-9-1" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 270.7085 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="541.41699 : 270.7085 : 1"
inkscape:persp3d-origin="270.7085 : 180.47233 : 1"
id="perspective12409-1-2" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
id="perspective9337-7-0" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
id="perspective8562-2-5" /><inkscape:perspective
id="perspective3083-3-7"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 338.38501 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective23419-6-3"
inkscape:persp3d-origin="270.7085 : 180.47233 : 1"
inkscape:vp_z="541.41699 : 270.7085 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 270.7085 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective27913-5-7"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 338.38501 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
id="perspective27913-9" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 270.7085 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="541.41699 : 270.7085 : 1"
inkscape:persp3d-origin="270.7085 : 180.47233 : 1"
id="perspective23419-3" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
id="perspective3083-1" /><inkscape:perspective
id="perspective8562-25"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective9337-6"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective12409-8"
inkscape:persp3d-origin="270.7085 : 180.47233 : 1"
inkscape:vp_z="541.41699 : 270.7085 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 270.7085 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective16301-5"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 338.38501 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective37556-4"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 338.38501 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
id="perspective37556-9-1" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
id="perspective16301-9-3" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 270.7085 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="541.41699 : 270.7085 : 1"
inkscape:persp3d-origin="270.7085 : 180.47233 : 1"
id="perspective12409-1-9" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
id="perspective9337-7-1" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
id="perspective8562-2-7" /><inkscape:perspective
id="perspective3083-3-8"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 338.38501 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective23419-6-8"
inkscape:persp3d-origin="270.7085 : 180.47233 : 1"
inkscape:vp_z="541.41699 : 270.7085 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 270.7085 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective27913-5-4"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 338.38501 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
id="perspective27913-1" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 270.7085 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="541.41699 : 270.7085 : 1"
inkscape:persp3d-origin="270.7085 : 180.47233 : 1"
id="perspective23419-9" /><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
id="perspective3083-8" /><inkscape:perspective
id="perspective8562-6"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective9337-2"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective12409-3"
inkscape:persp3d-origin="270.7085 : 180.47233 : 1"
inkscape:vp_z="541.41699 : 270.7085 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 270.7085 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective16301-56"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 338.38501 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective37556-5"
inkscape:persp3d-origin="338.38562 : 225.59001 : 1"
inkscape:vp_z="676.77124 : 338.38501 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 338.38501 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective10328"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective11034"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective3083-7"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" /><inkscape:perspective
id="perspective2997"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" /></defs><sodipodi:namedview
inkscape:window-height="856"
inkscape:window-width="1347"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
inkscape:zoom="0.96"
inkscape:cx="391.59463"
inkscape:cy="584.27759"
inkscape:window-x="68"
inkscape:window-y="22"
inkscape:current-layer="layer11"
showgrid="false"
inkscape:window-maximized="0"
inkscape:document-units="mm" /><g
inkscape:groupmode="layer"
id="layer11"
inkscape:label="Your Design"><g
id="g16281"
transform="matrix(2.8346455,0,0,2.8346455,4.0030363,25.505879)"><path
id="path16263"
d="m 27.346212,5 -0.243127,0.01185 -0.240822,0.035438 -0.236234,0.05869 -0.229406,0.081386 -0.220405,0.1033102 -0.209312,0.1242551 -0.196237,0.1440218 -0.1813,0.1624233 -0.164644,0.1792849 -0.146429,0.194447 -0.126825,0.2077655 -0.106018,0.2191145 -13.300557,31.2893437 -0.09333,0.258065 -0.06449,0.26674 -0.03486,0.272201 -0.0048,0.274382 4.585613,122.687912 0.02207,0.25087 0.0472,0.24738 0.07185,0.24137 0.09577,0.23292 0.118713,0.22211 0.140457,0.20903 0.160775,0.19384 0.179461,0.17669 0.196326,0.15773 0.211199,0.13718 0.223929,0.11523 0.234386,0.0921 0.242465,0.0681 0.248083,0.0433 123.593877,15.22131 0.23783,0.0178 0.23845,-0.005 0.2369,-0.0276 0.23318,-0.0501 0.22736,-0.0721 0.21945,-0.0934 0.20955,-0.11388 0.19775,-0.13333 0.18414,-0.15157 0.16887,-0.16843 0.15204,-0.18375 0.13385,-0.1974 0.11442,-0.20926 0.094,-0.21921 0.0727,-0.22716 6.78727,-25.33046 5.24658,-19.58049 0.0476,-0.21536 0.0285,-0.21872 5.241,-61.301612 L 162,70.486017 V 15.073865 l -0.0123,-0.247905 -0.0369,-0.245462 -0.061,-0.240599 -0.0846,-0.233363 -0.10728,-0.223828 -0.12895,-0.212086 -0.14935,-0.198254 -0.16827,-0.182468 -0.18553,-0.164881 -0.20097,-0.145672 -0.21443,-0.125025 -0.22576,-0.103145 -0.23488,-0.08025 -0.24169,-0.05656 L 159.702,12.582047 66.303264,5.0081795 66.101199,5 Z M 15.545654,38.789344 v 0 l -0.0072,0.147025 -0.0216,0.14561 -0.03577,0.142792 -0.04959,0.138598 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.118235 -0.09886,0.10907 -0.109071,0.09886 -0.118234,0.08769 -0.12626,0.07568 -0.13307,0.06294 -0.138599,0.04959 -0.142791,0.03577 -0.14561,0.0216 -0.147026,0.0072 -0.147025,-0.0072 -0.14561,-0.0216 -0.142792,-0.03577 -0.138598,-0.04959 -0.13307,-0.06294 -0.12626,-0.07568 -0.118235,-0.08769 -0.10907,-0.09886 -0.09886,-0.10907 -0.08769,-0.118235 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.138598 -0.03577,-0.142792 -0.0216,-0.14561 -0.0072,-0.147025 0.0072,-0.147026 0.0216,-0.14561 0.03577,-0.142791 0.04959,-0.138598 0.06294,-0.13307 0.07568,-0.126261 0.08769,-0.118234 0.09886,-0.10907 0.10907,-0.09886 0.118235,-0.08769 0.12626,-0.07568 0.13307,-0.06294 0.138598,-0.04959 0.142792,-0.03577 0.14561,-0.0216 0.147025,-0.0072 0.147026,0.0072 0.14561,0.0216 0.142791,0.03577 0.138599,0.04959 0.13307,0.06294 0.12626,0.07568 0.118234,0.08769 0.109071,0.09886 0.09886,0.10907 0.08769,0.118234 0.07568,0.126261 0.06294,0.13307 0.04959,0.138598 0.03577,0.142791 0.0216,0.14561 z m 2.292807,61.343956 v 0 l -0.0072,0.14703 -0.0216,0.14561 -0.03577,0.14279 -0.04959,0.1386 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.11823 -0.09886,0.10907 -0.10907,0.0989 -0.118235,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.138598,0.0496 -0.142792,0.0358 -0.145609,0.0216 -0.147026,0.007 -0.147026,-0.007 -0.14561,-0.0216 -0.142791,-0.0358 -0.138598,-0.0496 -0.13307,-0.0629 -0.126261,-0.0757 -0.118234,-0.0877 -0.10907,-0.0989 -0.09886,-0.10907 -0.08769,-0.11823 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.1386 -0.03577,-0.14279 -0.0216,-0.14561 -0.0072,-0.14703 0.0072,-0.147026 0.0216,-0.145609 0.03577,-0.142792 0.04959,-0.138598 0.06294,-0.13307 0.07568,-0.12626 0.08769,-0.118235 0.09886,-0.10907 0.10907,-0.09886 0.118234,-0.08769 0.126261,-0.07568 0.13307,-0.06294 0.138598,-0.04959 0.142791,-0.03577 0.14561,-0.0216 0.147026,-0.0072 0.147026,0.0072 0.145609,0.0216 0.142792,0.03577 0.138598,0.04959 0.13307,0.06294 0.12626,0.07568 0.118235,0.08769 0.10907,0.09886 0.09886,0.10907 0.08769,0.118235 0.07568,0.12626 0.06294,0.13307 0.04959,0.138598 0.03577,0.142792 0.0216,0.145609 z m 2.292806,61.34396 -0.0072,0.14702 -0.0216,0.14561 -0.03577,0.14279 -0.04959,0.1386 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.11824 -0.09886,0.10907 -0.10907,0.0988 -0.118234,0.0877 -0.126261,0.0757 -0.13307,0.0629 -0.138598,0.0496 -0.142791,0.0358 -0.14561,0.0216 -0.147026,0.007 -0.147025,-0.007 -0.14561,-0.0216 -0.142792,-0.0358 -0.138598,-0.0496 -0.13307,-0.0629 -0.12626,-0.0757 -0.118235,-0.0877 -0.10907,-0.0988 -0.09886,-0.10907 -0.08769,-0.11824 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.1386 -0.03577,-0.14279 -0.0216,-0.14561 -0.0072,-0.14702 0.0072,-0.14703 0.0216,-0.14561 0.03577,-0.14279 0.04959,-0.1386 0.06294,-0.13307 0.07568,-0.12626 0.08769,-0.11823 0.09886,-0.10907 0.10907,-0.0989 0.118235,-0.0877 0.12626,-0.0757 0.13307,-0.0629 0.138598,-0.0496 0.142792,-0.0358 0.14561,-0.0216 0.147025,-0.007 0.147026,0.007 0.14561,0.0216 0.142791,0.0358 0.138598,0.0496 0.13307,0.0629 0.126261,0.0757 0.118234,0.0877 0.10907,0.0989 0.09886,0.10907 0.08769,0.11823 0.07568,0.12626 0.06294,0.13307 0.04959,0.1386 0.03577,0.14279 0.0216,0.14561 z m 61.796939,7.61065 -0.0072,0.14703 -0.0216,0.14561 -0.03577,0.14279 -0.04959,0.1386 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.11823 -0.09886,0.10907 -0.10907,0.0989 -0.118235,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.138598,0.0496 -0.142792,0.0358 -0.145609,0.0216 -0.147026,0.007 -0.147026,-0.007 -0.14561,-0.0216 -0.142791,-0.0358 -0.138598,-0.0496 -0.13307,-0.0629 -0.126261,-0.0757 -0.118234,-0.0877 -0.10907,-0.0989 -0.09886,-0.10907 -0.08769,-0.11823 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.1386 -0.03577,-0.14279 -0.0216,-0.14561 -0.0072,-0.14703 0.0072,-0.14702 0.0216,-0.14561 0.03577,-0.14279 0.04959,-0.1386 0.06294,-0.13307 0.07568,-0.12626 0.08769,-0.11824 0.09886,-0.10907 0.10907,-0.0988 0.118234,-0.0877 0.126261,-0.0757 0.13307,-0.0629 0.138598,-0.0496 0.142791,-0.0358 0.14561,-0.0216 0.147026,-0.007 0.147026,0.007 0.145609,0.0216 0.142792,0.0358 0.138598,0.0496 0.13307,0.0629 0.12626,0.0757 0.118235,0.0877 0.10907,0.0988 0.09886,0.10907 0.08769,0.11824 0.07568,0.12626 0.06294,0.13307 0.04959,0.1386 0.03577,0.14279 0.0216,0.14561 z m 61.796934,7.61066 -0.007,0.14703 -0.0216,0.14561 -0.0358,0.14279 -0.0496,0.1386 -0.0629,0.13307 -0.0757,0.12626 -0.0877,0.11823 -0.0989,0.10907 -0.10907,0.0989 -0.11823,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.1386,0.0496 -0.14279,0.0358 -0.14561,0.0216 -0.14703,0.007 -0.14702,-0.007 -0.14561,-0.0216 -0.14279,-0.0358 -0.1386,-0.0496 -0.13307,-0.0629 -0.12626,-0.0757 -0.11824,-0.0877 -0.10907,-0.0989 -0.0988,-0.10907 -0.0877,-0.11823 -0.0757,-0.12626 -0.0629,-0.13307 -0.0496,-0.1386 -0.0358,-0.14279 -0.0216,-0.14561 -0.007,-0.14703 0.007,-0.14702 0.0216,-0.14561 0.0358,-0.1428 0.0496,-0.13859 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.11824 0.0988,-0.10907 0.10907,-0.0988 0.11824,-0.0877 0.12626,-0.0757 0.13307,-0.0629 0.1386,-0.0496 0.14279,-0.0358 0.14561,-0.0216 0.14702,-0.007 0.14703,0.007 0.14561,0.0216 0.14279,0.0358 0.1386,0.0496 0.13307,0.0629 0.12626,0.0757 0.11823,0.0877 0.10907,0.0988 0.0989,0.10907 0.0877,0.11824 0.0757,0.12626 0.0629,0.13307 0.0496,0.13859 0.0358,0.1428 0.0216,0.14561 z M 155.759,131.78762 v 0 l -0.007,0.14703 -0.0216,0.14561 -0.0358,0.14279 -0.0496,0.1386 -0.0629,0.13307 -0.0757,0.12626 -0.0877,0.11823 -0.0988,0.10907 -0.10907,0.0989 -0.11824,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.1386,0.0496 -0.14279,0.0358 -0.14561,0.0216 -0.14702,0.007 -0.14703,-0.007 -0.14561,-0.0216 -0.14279,-0.0358 -0.1386,-0.0496 -0.13307,-0.0629 -0.12626,-0.0757 -0.11823,-0.0877 -0.10907,-0.0989 -0.0989,-0.10907 -0.0877,-0.11823 -0.0757,-0.12626 -0.0629,-0.13307 -0.0496,-0.1386 -0.0358,-0.14279 -0.0216,-0.14561 -0.007,-0.14703 0.007,-0.14702 0.0216,-0.14561 0.0358,-0.14279 0.0496,-0.1386 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.11824 0.0989,-0.10907 0.10907,-0.0988 0.11823,-0.0877 0.12626,-0.0757 0.13307,-0.0629 0.1386,-0.0496 0.14279,-0.0358 0.14561,-0.0216 0.14703,-0.007 0.14702,0.007 0.14561,0.0216 0.14279,0.0358 0.1386,0.0496 0.13307,0.0629 0.12626,0.0757 0.11824,0.0877 0.10907,0.0988 0.0988,0.10907 0.0877,0.11824 0.0757,0.12626 0.0629,0.13307 0.0496,0.1386 0.0358,0.14279 0.0216,0.14561 z M 161,70.486017 v 0 l -0.007,0.147026 -0.0216,0.14561 -0.0358,0.142791 -0.0496,0.138598 -0.0629,0.13307 -0.0757,0.12626 -0.0877,0.118235 -0.0989,0.10907 -0.10907,0.09886 -0.11823,0.08769 -0.12626,0.07568 -0.13307,0.06294 -0.1386,0.04959 -0.14279,0.03577 -0.14561,0.0216 -0.14703,0.0072 -0.14703,-0.0072 -0.14561,-0.0216 -0.14279,-0.03577 -0.1386,-0.04959 -0.13307,-0.06294 -0.12626,-0.07568 -0.11823,-0.08769 -0.10907,-0.09886 -0.0989,-0.10907 -0.0877,-0.118235 -0.0757,-0.12626 -0.0629,-0.13307 -0.0496,-0.138598 -0.0358,-0.142791 -0.0216,-0.14561 -0.007,-0.147026 0.007,-0.147026 0.0216,-0.145609 0.0358,-0.142792 0.0496,-0.138598 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.118235 0.0989,-0.10907 0.10907,-0.09886 0.11823,-0.08769 0.12626,-0.07568 0.13307,-0.06294 0.1386,-0.04959 0.14279,-0.03577 0.14561,-0.0216 0.14703,-0.0072 0.14703,0.0072 0.14561,0.0216 0.14279,0.03577 0.1386,0.04959 0.13307,0.06294 0.12626,0.07568 0.11823,0.08769 0.10907,0.09886 0.0989,0.10907 0.0877,0.118235 0.0757,0.12626 0.0629,0.13307 0.0496,0.138598 0.0358,0.142792 0.0216,0.145609 z m 0,-55.412152 v 0 l -0.007,0.147026 -0.0216,0.14561 -0.0358,0.142791 -0.0496,0.138598 -0.0629,0.13307 -0.0757,0.126261 -0.0877,0.118234 -0.0989,0.10907 -0.10907,0.09886 -0.11823,0.08769 -0.12626,0.07568 -0.13307,0.06294 -0.1386,0.04959 -0.14279,0.03577 -0.14561,0.0216 -0.14703,0.0072 -0.14703,-0.0072 -0.14561,-0.0216 -0.14279,-0.03577 -0.1386,-0.04959 -0.13307,-0.06294 -0.12626,-0.07568 -0.11823,-0.08769 -0.10907,-0.09886 -0.0989,-0.10907 -0.0877,-0.118234 -0.0757,-0.126261 -0.0629,-0.13307 -0.0496,-0.138598 -0.0358,-0.142791 -0.0216,-0.14561 -0.007,-0.147026 0.007,-0.147025 0.0216,-0.14561 0.0358,-0.142792 0.0496,-0.138598 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.118235 0.0989,-0.10907 0.10907,-0.09885 0.11823,-0.08769 0.12626,-0.07568 0.13307,-0.06294 0.1386,-0.04959 0.14279,-0.03577 0.14561,-0.0216 0.14703,-0.0072 0.14703,0.0072 0.14561,0.0216 0.14279,0.03577 0.1386,0.04959 0.13307,0.06294 0.12626,0.07568 0.11823,0.08769 0.10907,0.09885 0.0989,0.10907 0.0877,0.118235 0.0757,0.12626 0.0629,0.13307 0.0496,0.138598 0.0358,0.142792 0.0216,0.14561 z M 67.601199,7.5 v 0 l -0.0072,0.1470257 -0.0216,0.1456098 -0.03577,0.1427915 -0.04959,0.1385981 -0.06294,0.13307 -0.07568,0.1262602 -0.08769,0.1182346 -0.09885,0.1090703 -0.109071,0.098856 -0.118234,0.087689 -0.12626,0.075678 -0.13307,0.062937 -0.138598,0.049591 -0.142792,0.035767 -0.14561,0.021599 L 66.101199,9 65.954173,8.99278 65.808563,8.971181 65.665771,8.935414 65.527173,8.885823 65.394103,8.822886 65.267843,8.747208 65.149609,8.659519 65.040538,8.560663 64.941678,8.4515927 64.853988,8.3333581 64.778308,8.2070979 64.715368,8.0740279 64.665788,7.935427 64.630021,7.7926355 64.608421,7.6470257 64.601199,7.5 l 0.0072,-0.1470257 0.0216,-0.1456098 0.03577,-0.1427915 0.04959,-0.1385981 0.06294,-0.13307 0.07568,-0.1262602 0.08769,-0.1182346 0.09886,-0.1090703 0.109071,-0.098855 0.118234,-0.087689 0.12626,-0.075677 0.13307,-0.062937 0.138598,-0.049591 0.142792,-0.035767 0.14561,-0.021599 L 66.101199,6 l 0.147025,0.00722 0.14561,0.021599 0.142792,0.035767 0.138598,0.049591 0.13307,0.062937 0.12626,0.075677 0.118234,0.087689 0.109071,0.098855 0.09885,0.1090703 0.08769,0.1182346 0.07568,0.1262602 0.06294,0.13307 0.04959,0.1385981 0.03577,0.1427915 0.0216,0.1456098 z m -38.754987,0 v 0 l -0.0072,0.1470257 -0.0216,0.1456098 -0.03577,0.1427915 -0.04959,0.1385981 -0.06294,0.13307 -0.07568,0.1262602 -0.08769,0.1182346 -0.09886,0.1090703 -0.10907,0.098856 -0.118235,0.087689 -0.12626,0.075678 -0.13307,0.062937 -0.138598,0.049591 -0.142792,0.035767 -0.14561,0.021599 L 27.346212,9 27.199186,8.99278 27.053576,8.971181 26.910785,8.935414 26.772186,8.885823 26.639116,8.822886 26.512856,8.747208 26.394622,8.659519 26.285551,8.560663 26.186691,8.4515927 26.099001,8.3333581 26.023321,8.2070979 25.960381,8.0740279 25.910801,7.935427 25.875034,7.7926355 25.853434,7.6470257 25.846212,7.5 l 0.0072,-0.1470257 0.0216,-0.1456098 0.03577,-0.1427915 0.04959,-0.1385981 0.06294,-0.13307 0.07568,-0.1262602 0.08769,-0.1182346 0.09886,-0.1090703 0.109071,-0.098855 0.118234,-0.087689 0.12626,-0.075677 0.13307,-0.062937 0.138599,-0.049591 0.142791,-0.035767 0.14561,-0.021599 L 27.346212,6 l 0.147025,0.00722 0.14561,0.021599 0.142792,0.035767 0.138598,0.049591 0.13307,0.062937 0.12626,0.075677 0.118235,0.087689 0.10907,0.098855 0.09886,0.1090703 0.08769,0.1182346 0.07568,0.1262602 0.06294,0.13307 0.04959,0.1385981 0.03577,0.1427915 0.0216,0.1456098 z"
inkscape:connector-curvature="0"
style="fill:none;stroke:#0000ff;stroke-width:0.01mm" /><polygon
id="polygon16265"
points="153.75866,16.734657 153.87601,16.692669 153.98867,16.639382 154.09557,16.575309 154.19568,16.501066 154.28803,16.417368 154.37172,16.325022 154.44597,16.224917 154.51004,16.118016 154.56333,16.00535 154.60531,15.888004 154.6356,15.767107 154.65388,15.643824 154.66,15.519342 154.65388,15.394861 154.6356,15.271578 154.60531,15.150681 154.56333,15.033335 154.51004,14.920669 154.44597,14.813768 154.37172,14.713663 154.28803,14.621317 154.19568,14.537619 154.09557,14.463376 153.98867,14.399302 153.87601,14.346015 153.75866,14.304028 153.63776,14.273745 153.51448,14.255458 153.39,14.249342 153.26552,14.255458 153.14224,14.273745 153.02134,14.304028 152.90399,14.346015 152.79133,14.399302 152.68443,14.463376 152.58432,14.537619 152.49197,14.621317 152.40828,14.713663 152.33403,14.813768 152.26996,14.920669 152.21667,15.033335 152.17469,15.150681 152.1444,15.271578 152.12612,15.394861 152.12,15.519342 152.12612,15.643824 152.1444,15.767107 152.17469,15.888004 152.21667,16.00535 152.26996,16.118016 152.33403,16.224917 152.40828,16.325022 152.49197,16.417368 152.58432,16.501066 152.68443,16.575309 152.79133,16.639382 152.90399,16.692669 153.02134,16.734657 153.14224,16.76494 153.26552,16.783227 153.39,16.789342 153.39,16.789342 153.51448,16.783227 153.63776,16.76494 "
style="fill:none;stroke:#0000ff;stroke-width:0.01mm" /><polygon
id="polygon16267"
points="135.97866,16.734657 136.09601,16.692669 136.20867,16.639382 136.31557,16.575309 136.41568,16.501066 136.50803,16.417368 136.59172,16.325022 136.66597,16.224917 136.73004,16.118016 136.78333,16.00535 136.82531,15.888004 136.8556,15.767107 136.87388,15.643824 136.88,15.519342 136.87388,15.394861 136.8556,15.271578 136.82531,15.150681 136.78333,15.033335 136.73004,14.920669 136.66597,14.813768 136.59172,14.713663 136.50803,14.621317 136.41568,14.537619 136.31557,14.463376 136.20867,14.399302 136.09601,14.346015 135.97866,14.304028 135.85776,14.273745 135.73448,14.255458 135.61,14.249342 135.48552,14.255458 135.36224,14.273745 135.24134,14.304028 135.12399,14.346015 135.01133,14.399302 134.90443,14.463376 134.80432,14.537619 134.71197,14.621317 134.62828,14.713663 134.55403,14.813768 134.48996,14.920669 134.43667,15.033335 134.39469,15.150681 134.3644,15.271578 134.34612,15.394861 134.34,15.519342 134.34612,15.643824 134.3644,15.767107 134.39469,15.888004 134.43667,16.00535 134.48996,16.118016 134.55403,16.224917 134.62828,16.325022 134.71197,16.417368 134.80432,16.501066 134.90443,16.575309 135.01133,16.639382 135.12399,16.692669 135.24134,16.734657 135.36224,16.76494 135.48552,16.783227 135.61,16.789342 135.73448,16.783227 135.85776,16.76494 "
style="fill:none;stroke:#0000ff;stroke-width:0.01mm" /><polygon
id="polygon16269"
points="135.97866,62.454657 136.09601,62.412669 136.20867,62.359382 136.31557,62.295309 136.41568,62.221066 136.50803,62.137368 136.59172,62.045022 136.66597,61.944917 136.73004,61.838016 136.78333,61.72535 136.82531,61.608004 136.8556,61.487107 136.87388,61.363824 136.88,61.239342 136.87388,61.114861 136.8556,60.991578 136.82531,60.870681 136.78333,60.753335 136.73004,60.640669 136.66597,60.533768 136.59172,60.433663 136.50803,60.341317 136.41568,60.257619 136.31557,60.183376 136.20867,60.119302 136.09601,60.066015 135.97866,60.024028 135.85776,59.993745 135.73448,59.975458 135.61,59.969342 135.48552,59.975458 135.36224,59.993745 135.24134,60.024028 135.12399,60.066015 135.01133,60.119302 134.90443,60.183376 134.80432,60.257619 134.71197,60.341317 134.62828,60.433663 134.55403,60.533768 134.48996,60.640669 134.43667,60.753335 134.39469,60.870681 134.3644,60.991578 134.34612,61.114861 134.34,61.239342 134.34612,61.363824 134.3644,61.487107 134.39469,61.608004 134.43667,61.72535 134.48996,61.838016 134.55403,61.944917 134.62828,62.045022 134.71197,62.137368 134.80432,62.221066 134.90443,62.295309 135.01133,62.359382 135.12399,62.412669 135.24134,62.454657 135.36224,62.48494 135.48552,62.503227 135.61,62.509342 135.73448,62.503227 135.85776,62.48494 "
style="fill:none;stroke:#0000ff;stroke-width:0.01mm" /><polygon
id="polygon16271"
points="153.75866,62.454657 153.87601,62.412669 153.98867,62.359382 154.09557,62.295309 154.19568,62.221066 154.28803,62.137368 154.37172,62.045022 154.44597,61.944917 154.51004,61.838016 154.56333,61.72535 154.60531,61.608004 154.6356,61.487107 154.65388,61.363824 154.66,61.239342 154.65388,61.114861 154.6356,60.991578 154.60531,60.870681 154.56333,60.753335 154.51004,60.640669 154.44597,60.533768 154.37172,60.433663 154.28803,60.341317 154.19568,60.257619 154.09557,60.183376 153.98867,60.119302 153.87601,60.066015 153.75866,60.024028 153.63776,59.993745 153.51448,59.975458 153.39,59.969342 153.26552,59.975458 153.14224,59.993745 153.02134,60.024028 152.90399,60.066015 152.79133,60.119302 152.68443,60.183376 152.58432,60.257619 152.49197,60.341317 152.40828,60.433663 152.33403,60.533768 152.26996,60.640669 152.21667,60.753335 152.17469,60.870681 152.1444,60.991578 152.12612,61.114861 152.12,61.239342 152.12612,61.363824 152.1444,61.487107 152.17469,61.608004 152.21667,61.72535 152.26996,61.838016 152.33403,61.944917 152.40828,62.045022 152.49197,62.137368 152.58432,62.221066 152.68443,62.295309 152.79133,62.359382 152.90399,62.412669 153.02134,62.454657 153.14224,62.48494 153.26552,62.503227 153.39,62.509342 153.39,62.509342 153.51448,62.503227 153.63776,62.48494 "
style="fill:none;stroke:#0000ff;stroke-width:0.01mm" /><polygon
id="polygon16273"
points="34.119908,7.06074 34.065325,6.9081897 33.996052,6.761724 33.912756,6.6227535 33.81624,6.4926167 33.707433,6.3725667 33.587383,6.2637597 33.457246,6.1672437 33.318276,6.083948 33.17181,6.0146749 33.01926,5.9600915 32.862094,5.9207235 32.701826,5.89695 32.54,5.889 32.378174,5.89695 32.217906,5.9207235 32.06074,5.9600915 31.90819,6.0146749 31.761724,6.083948 31.622754,6.1672437 31.492617,6.2637597 31.372567,6.3725667 31.26376,6.4926167 31.167244,6.6227535 31.083948,6.761724 31.014675,6.9081897 30.960092,7.06074 30.920724,7.2179059 30.89695,7.3781737 30.889,7.54 30.89695,7.7018263 30.920724,7.8620941 30.960092,8.01926 31.014675,8.1718103 31.083948,8.318276 31.167244,8.4572465 31.26376,8.5873833 31.372567,8.7074333 31.492617,8.8162403 31.622754,8.9127563 31.761724,8.996052 31.90819,9.0653251 32.06074,9.1199085 32.217906,9.1592765 32.378174,9.18305 32.54,9.191 32.701826,9.18305 32.862094,9.1592765 33.01926,9.1199085 33.17181,9.0653251 33.318276,8.996052 33.457246,8.9127563 33.587383,8.8162403 33.707433,8.7074333 33.81624,8.5873833 33.912756,8.4572465 33.996052,8.318276 34.065325,8.1718103 34.119908,8.01926 34.159276,7.8620941 34.18305,7.7018263 34.191,7.54 34.191,7.54 34.18305,7.3781737 34.159276,7.2179059 "
style="fill:none;stroke:#0000ff;stroke-width:0.01mm" /><polygon
id="polygon16275"
points="62.059908,7.06074 62.005325,6.9081897 61.936052,6.761724 61.852756,6.6227535 61.75624,6.4926167 61.647433,6.3725667 61.527383,6.2637597 61.397246,6.1672437 61.258276,6.083948 61.11181,6.0146749 60.95926,5.9600915 60.802094,5.9207235 60.641826,5.89695 60.48,5.889 60.318174,5.89695 60.157906,5.9207235 60.00074,5.9600915 59.84819,6.0146749 59.701724,6.083948 59.562754,6.1672437 59.432617,6.2637597 59.312567,6.3725667 59.20376,6.4926167 59.107244,6.6227535 59.023948,6.761724 58.954675,6.9081897 58.900092,7.06074 58.860724,7.2179059 58.83695,7.3781737 58.829,7.54 58.83695,7.7018263 58.860724,7.8620941 58.900092,8.01926 58.954675,8.1718103 59.023948,8.318276 59.107244,8.4572465 59.20376,8.5873833 59.312567,8.7074333 59.432617,8.8162403 59.562754,8.9127563 59.701724,8.996052 59.84819,9.0653251 60.00074,9.1199085 60.157906,9.1592765 60.318174,9.18305 60.48,9.191 60.641826,9.18305 60.802094,9.1592765 60.95926,9.1199085 61.11181,9.0653251 61.258276,8.996052 61.397246,8.9127563 61.527383,8.8162403 61.647433,8.7074333 61.75624,8.5873833 61.852756,8.4572465 61.936052,8.318276 62.005325,8.1718103 62.059908,8.01926 62.099276,7.8620941 62.12305,7.7018263 62.131,7.54 62.131,7.54 62.12305,7.3781737 62.099276,7.2179059 "
style="fill:none;stroke:#0000ff;stroke-width:0.01mm" /></g><g
id="g16281-3"
transform="matrix(-2.8346455,0,0,2.8346455,966.28517,26.095014)"><path
id="path16263-9"
d="m 27.346212,5 -0.243127,0.01185 -0.240822,0.035438 -0.236234,0.05869 -0.229406,0.081386 -0.220405,0.1033102 -0.209312,0.1242551 -0.196237,0.1440218 -0.1813,0.1624233 -0.164644,0.1792849 -0.146429,0.194447 -0.126825,0.2077655 -0.106018,0.2191145 -13.300557,31.2893437 -0.09333,0.258065 -0.06449,0.26674 -0.03486,0.272201 -0.0048,0.274382 4.585613,122.687912 0.02207,0.25087 0.0472,0.24738 0.07185,0.24137 0.09577,0.23292 0.118713,0.22211 0.140457,0.20903 0.160775,0.19384 0.179461,0.17669 0.196326,0.15773 0.211199,0.13718 0.223929,0.11523 0.234386,0.0921 0.242465,0.0681 0.248083,0.0433 123.593877,15.22131 0.23783,0.0178 0.23845,-0.005 0.2369,-0.0276 0.23318,-0.0501 0.22736,-0.0721 0.21945,-0.0934 0.20955,-0.11388 0.19775,-0.13333 0.18414,-0.15157 0.16887,-0.16843 0.15204,-0.18375 0.13385,-0.1974 0.11442,-0.20926 0.094,-0.21921 0.0727,-0.22716 6.78727,-25.33046 5.24658,-19.58049 0.0476,-0.21536 0.0285,-0.21872 5.241,-61.301612 L 162,70.486017 V 15.073865 l -0.0123,-0.247905 -0.0369,-0.245462 -0.061,-0.240599 -0.0846,-0.233363 -0.10728,-0.223828 -0.12895,-0.212086 -0.14935,-0.198254 -0.16827,-0.182468 -0.18553,-0.164881 -0.20097,-0.145672 -0.21443,-0.125025 -0.22576,-0.103145 -0.23488,-0.08025 -0.24169,-0.05656 L 159.702,12.582047 66.303264,5.0081795 66.101199,5 Z M 15.545654,38.789344 v 0 l -0.0072,0.147025 -0.0216,0.14561 -0.03577,0.142792 -0.04959,0.138598 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.118235 -0.09886,0.10907 -0.109071,0.09886 -0.118234,0.08769 -0.12626,0.07568 -0.13307,0.06294 -0.138599,0.04959 -0.142791,0.03577 -0.14561,0.0216 -0.147026,0.0072 -0.147025,-0.0072 -0.14561,-0.0216 -0.142792,-0.03577 -0.138598,-0.04959 -0.13307,-0.06294 -0.12626,-0.07568 -0.118235,-0.08769 -0.10907,-0.09886 -0.09886,-0.10907 -0.08769,-0.118235 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.138598 -0.03577,-0.142792 -0.0216,-0.14561 -0.0072,-0.147025 0.0072,-0.147026 0.0216,-0.14561 0.03577,-0.142791 0.04959,-0.138598 0.06294,-0.13307 0.07568,-0.126261 0.08769,-0.118234 0.09886,-0.10907 0.10907,-0.09886 0.118235,-0.08769 0.12626,-0.07568 0.13307,-0.06294 0.138598,-0.04959 0.142792,-0.03577 0.14561,-0.0216 0.147025,-0.0072 0.147026,0.0072 0.14561,0.0216 0.142791,0.03577 0.138599,0.04959 0.13307,0.06294 0.12626,0.07568 0.118234,0.08769 0.109071,0.09886 0.09886,0.10907 0.08769,0.118234 0.07568,0.126261 0.06294,0.13307 0.04959,0.138598 0.03577,0.142791 0.0216,0.14561 z m 2.292807,61.343956 v 0 l -0.0072,0.14703 -0.0216,0.14561 -0.03577,0.14279 -0.04959,0.1386 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.11823 -0.09886,0.10907 -0.10907,0.0989 -0.118235,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.138598,0.0496 -0.142792,0.0358 -0.145609,0.0216 -0.147026,0.007 -0.147026,-0.007 -0.14561,-0.0216 -0.142791,-0.0358 -0.138598,-0.0496 -0.13307,-0.0629 -0.126261,-0.0757 -0.118234,-0.0877 -0.10907,-0.0989 -0.09886,-0.10907 -0.08769,-0.11823 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.1386 -0.03577,-0.14279 -0.0216,-0.14561 -0.0072,-0.14703 0.0072,-0.147026 0.0216,-0.145609 0.03577,-0.142792 0.04959,-0.138598 0.06294,-0.13307 0.07568,-0.12626 0.08769,-0.118235 0.09886,-0.10907 0.10907,-0.09886 0.118234,-0.08769 0.126261,-0.07568 0.13307,-0.06294 0.138598,-0.04959 0.142791,-0.03577 0.14561,-0.0216 0.147026,-0.0072 0.147026,0.0072 0.145609,0.0216 0.142792,0.03577 0.138598,0.04959 0.13307,0.06294 0.12626,0.07568 0.118235,0.08769 0.10907,0.09886 0.09886,0.10907 0.08769,0.118235 0.07568,0.12626 0.06294,0.13307 0.04959,0.138598 0.03577,0.142792 0.0216,0.145609 z m 2.292806,61.34396 -0.0072,0.14702 -0.0216,0.14561 -0.03577,0.14279 -0.04959,0.1386 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.11824 -0.09886,0.10907 -0.10907,0.0988 -0.118234,0.0877 -0.126261,0.0757 -0.13307,0.0629 -0.138598,0.0496 -0.142791,0.0358 -0.14561,0.0216 -0.147026,0.007 -0.147025,-0.007 -0.14561,-0.0216 -0.142792,-0.0358 -0.138598,-0.0496 -0.13307,-0.0629 -0.12626,-0.0757 -0.118235,-0.0877 -0.10907,-0.0988 -0.09886,-0.10907 -0.08769,-0.11824 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.1386 -0.03577,-0.14279 -0.0216,-0.14561 -0.0072,-0.14702 0.0072,-0.14703 0.0216,-0.14561 0.03577,-0.14279 0.04959,-0.1386 0.06294,-0.13307 0.07568,-0.12626 0.08769,-0.11823 0.09886,-0.10907 0.10907,-0.0989 0.118235,-0.0877 0.12626,-0.0757 0.13307,-0.0629 0.138598,-0.0496 0.142792,-0.0358 0.14561,-0.0216 0.147025,-0.007 0.147026,0.007 0.14561,0.0216 0.142791,0.0358 0.138598,0.0496 0.13307,0.0629 0.126261,0.0757 0.118234,0.0877 0.10907,0.0989 0.09886,0.10907 0.08769,0.11823 0.07568,0.12626 0.06294,0.13307 0.04959,0.1386 0.03577,0.14279 0.0216,0.14561 z m 61.796939,7.61065 -0.0072,0.14703 -0.0216,0.14561 -0.03577,0.14279 -0.04959,0.1386 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.11823 -0.09886,0.10907 -0.10907,0.0989 -0.118235,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.138598,0.0496 -0.142792,0.0358 -0.145609,0.0216 -0.147026,0.007 -0.147026,-0.007 -0.14561,-0.0216 -0.142791,-0.0358 -0.138598,-0.0496 -0.13307,-0.0629 -0.126261,-0.0757 -0.118234,-0.0877 -0.10907,-0.0989 -0.09886,-0.10907 -0.08769,-0.11823 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.1386 -0.03577,-0.14279 -0.0216,-0.14561 -0.0072,-0.14703 0.0072,-0.14702 0.0216,-0.14561 0.03577,-0.14279 0.04959,-0.1386 0.06294,-0.13307 0.07568,-0.12626 0.08769,-0.11824 0.09886,-0.10907 0.10907,-0.0988 0.118234,-0.0877 0.126261,-0.0757 0.13307,-0.0629 0.138598,-0.0496 0.142791,-0.0358 0.14561,-0.0216 0.147026,-0.007 0.147026,0.007 0.145609,0.0216 0.142792,0.0358 0.138598,0.0496 0.13307,0.0629 0.12626,0.0757 0.118235,0.0877 0.10907,0.0988 0.09886,0.10907 0.08769,0.11824 0.07568,0.12626 0.06294,0.13307 0.04959,0.1386 0.03577,0.14279 0.0216,0.14561 z m 61.796934,7.61066 -0.007,0.14703 -0.0216,0.14561 -0.0358,0.14279 -0.0496,0.1386 -0.0629,0.13307 -0.0757,0.12626 -0.0877,0.11823 -0.0989,0.10907 -0.10907,0.0989 -0.11823,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.1386,0.0496 -0.14279,0.0358 -0.14561,0.0216 -0.14703,0.007 -0.14702,-0.007 -0.14561,-0.0216 -0.14279,-0.0358 -0.1386,-0.0496 -0.13307,-0.0629 -0.12626,-0.0757 -0.11824,-0.0877 -0.10907,-0.0989 -0.0988,-0.10907 -0.0877,-0.11823 -0.0757,-0.12626 -0.0629,-0.13307 -0.0496,-0.1386 -0.0358,-0.14279 -0.0216,-0.14561 -0.007,-0.14703 0.007,-0.14702 0.0216,-0.14561 0.0358,-0.1428 0.0496,-0.13859 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.11824 0.0988,-0.10907 0.10907,-0.0988 0.11824,-0.0877 0.12626,-0.0757 0.13307,-0.0629 0.1386,-0.0496 0.14279,-0.0358 0.14561,-0.0216 0.14702,-0.007 0.14703,0.007 0.14561,0.0216 0.14279,0.0358 0.1386,0.0496 0.13307,0.0629 0.12626,0.0757 0.11823,0.0877 0.10907,0.0988 0.0989,0.10907 0.0877,0.11824 0.0757,0.12626 0.0629,0.13307 0.0496,0.13859 0.0358,0.1428 0.0216,0.14561 z M 155.759,131.78762 v 0 l -0.007,0.14703 -0.0216,0.14561 -0.0358,0.14279 -0.0496,0.1386 -0.0629,0.13307 -0.0757,0.12626 -0.0877,0.11823 -0.0988,0.10907 -0.10907,0.0989 -0.11824,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.1386,0.0496 -0.14279,0.0358 -0.14561,0.0216 -0.14702,0.007 -0.14703,-0.007 -0.14561,-0.0216 -0.14279,-0.0358 -0.1386,-0.0496 -0.13307,-0.0629 -0.12626,-0.0757 -0.11823,-0.0877 -0.10907,-0.0989 -0.0989,-0.10907 -0.0877,-0.11823 -0.0757,-0.12626 -0.0629,-0.13307 -0.0496,-0.1386 -0.0358,-0.14279 -0.0216,-0.14561 -0.007,-0.14703 0.007,-0.14702 0.0216,-0.14561 0.0358,-0.14279 0.0496,-0.1386 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.11824 0.0989,-0.10907 0.10907,-0.0988 0.11823,-0.0877 0.12626,-0.0757 0.13307,-0.0629 0.1386,-0.0496 0.14279,-0.0358 0.14561,-0.0216 0.14703,-0.007 0.14702,0.007 0.14561,0.0216 0.14279,0.0358 0.1386,0.0496 0.13307,0.0629 0.12626,0.0757 0.11824,0.0877 0.10907,0.0988 0.0988,0.10907 0.0877,0.11824 0.0757,0.12626 0.0629,0.13307 0.0496,0.1386 0.0358,0.14279 0.0216,0.14561 z M 161,70.486017 v 0 l -0.007,0.147026 -0.0216,0.14561 -0.0358,0.142791 -0.0496,0.138598 -0.0629,0.13307 -0.0757,0.12626 -0.0877,0.118235 -0.0989,0.10907 -0.10907,0.09886 -0.11823,0.08769 -0.12626,0.07568 -0.13307,0.06294 -0.1386,0.04959 -0.14279,0.03577 -0.14561,0.0216 -0.14703,0.0072 -0.14703,-0.0072 -0.14561,-0.0216 -0.14279,-0.03577 -0.1386,-0.04959 -0.13307,-0.06294 -0.12626,-0.07568 -0.11823,-0.08769 -0.10907,-0.09886 -0.0989,-0.10907 -0.0877,-0.118235 -0.0757,-0.12626 -0.0629,-0.13307 -0.0496,-0.138598 -0.0358,-0.142791 -0.0216,-0.14561 -0.007,-0.147026 0.007,-0.147026 0.0216,-0.145609 0.0358,-0.142792 0.0496,-0.138598 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.118235 0.0989,-0.10907 0.10907,-0.09886 0.11823,-0.08769 0.12626,-0.07568 0.13307,-0.06294 0.1386,-0.04959 0.14279,-0.03577 0.14561,-0.0216 0.14703,-0.0072 0.14703,0.0072 0.14561,0.0216 0.14279,0.03577 0.1386,0.04959 0.13307,0.06294 0.12626,0.07568 0.11823,0.08769 0.10907,0.09886 0.0989,0.10907 0.0877,0.118235 0.0757,0.12626 0.0629,0.13307 0.0496,0.138598 0.0358,0.142792 0.0216,0.145609 z m 0,-55.412152 v 0 l -0.007,0.147026 -0.0216,0.14561 -0.0358,0.142791 -0.0496,0.138598 -0.0629,0.13307 -0.0757,0.126261 -0.0877,0.118234 -0.0989,0.10907 -0.10907,0.09886 -0.11823,0.08769 -0.12626,0.07568 -0.13307,0.06294 -0.1386,0.04959 -0.14279,0.03577 -0.14561,0.0216 -0.14703,0.0072 -0.14703,-0.0072 -0.14561,-0.0216 -0.14279,-0.03577 -0.1386,-0.04959 -0.13307,-0.06294 -0.12626,-0.07568 -0.11823,-0.08769 -0.10907,-0.09886 -0.0989,-0.10907 -0.0877,-0.118234 -0.0757,-0.126261 -0.0629,-0.13307 -0.0496,-0.138598 -0.0358,-0.142791 -0.0216,-0.14561 -0.007,-0.147026 0.007,-0.147025 0.0216,-0.14561 0.0358,-0.142792 0.0496,-0.138598 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.118235 0.0989,-0.10907 0.10907,-0.09885 0.11823,-0.08769 0.12626,-0.07568 0.13307,-0.06294 0.1386,-0.04959 0.14279,-0.03577 0.14561,-0.0216 0.14703,-0.0072 0.14703,0.0072 0.14561,0.0216 0.14279,0.03577 0.1386,0.04959 0.13307,0.06294 0.12626,0.07568 0.11823,0.08769 0.10907,0.09885 0.0989,0.10907 0.0877,0.118235 0.0757,0.12626 0.0629,0.13307 0.0496,0.138598 0.0358,0.142792 0.0216,0.14561 z M 67.601199,7.5 v 0 l -0.0072,0.1470257 -0.0216,0.1456098 -0.03577,0.1427915 -0.04959,0.1385981 -0.06294,0.13307 -0.07568,0.1262602 -0.08769,0.1182346 -0.09885,0.1090703 -0.109071,0.098856 -0.118234,0.087689 -0.12626,0.075678 -0.13307,0.062937 -0.138598,0.049591 -0.142792,0.035767 -0.14561,0.021599 L 66.101199,9 65.954173,8.99278 65.808563,8.971181 65.665771,8.935414 65.527173,8.885823 65.394103,8.822886 65.267843,8.747208 65.149609,8.659519 65.040538,8.560663 64.941678,8.4515927 64.853988,8.3333581 64.778308,8.2070979 64.715368,8.0740279 64.665788,7.935427 64.630021,7.7926355 64.608421,7.6470257 64.601199,7.5 l 0.0072,-0.1470257 0.0216,-0.1456098 0.03577,-0.1427915 0.04959,-0.1385981 0.06294,-0.13307 0.07568,-0.1262602 0.08769,-0.1182346 0.09886,-0.1090703 0.109071,-0.098855 0.118234,-0.087689 0.12626,-0.075677 0.13307,-0.062937 0.138598,-0.049591 0.142792,-0.035767 0.14561,-0.021599 L 66.101199,6 l 0.147025,0.00722 0.14561,0.021599 0.142792,0.035767 0.138598,0.049591 0.13307,0.062937 0.12626,0.075677 0.118234,0.087689 0.109071,0.098855 0.09885,0.1090703 0.08769,0.1182346 0.07568,0.1262602 0.06294,0.13307 0.04959,0.1385981 0.03577,0.1427915 0.0216,0.1456098 z m -38.754987,0 v 0 l -0.0072,0.1470257 -0.0216,0.1456098 -0.03577,0.1427915 -0.04959,0.1385981 -0.06294,0.13307 -0.07568,0.1262602 -0.08769,0.1182346 -0.09886,0.1090703 -0.10907,0.098856 -0.118235,0.087689 -0.12626,0.075678 -0.13307,0.062937 -0.138598,0.049591 -0.142792,0.035767 -0.14561,0.021599 L 27.346212,9 27.199186,8.99278 27.053576,8.971181 26.910785,8.935414 26.772186,8.885823 26.639116,8.822886 26.512856,8.747208 26.394622,8.659519 26.285551,8.560663 26.186691,8.4515927 26.099001,8.3333581 26.023321,8.2070979 25.960381,8.0740279 25.910801,7.935427 25.875034,7.7926355 25.853434,7.6470257 25.846212,7.5 l 0.0072,-0.1470257 0.0216,-0.1456098 0.03577,-0.1427915 0.04959,-0.1385981 0.06294,-0.13307 0.07568,-0.1262602 0.08769,-0.1182346 0.09886,-0.1090703 0.109071,-0.098855 0.118234,-0.087689 0.12626,-0.075677 0.13307,-0.062937 0.138599,-0.049591 0.142791,-0.035767 0.14561,-0.021599 L 27.346212,6 l 0.147025,0.00722 0.14561,0.021599 0.142792,0.035767 0.138598,0.049591 0.13307,0.062937 0.12626,0.075677 0.118235,0.087689 0.10907,0.098855 0.09886,0.1090703 0.08769,0.1182346 0.07568,0.1262602 0.06294,0.13307 0.04959,0.1385981 0.03577,0.1427915 0.0216,0.1456098 z"
inkscape:connector-curvature="0"
style="fill:none;stroke:#0000ff;stroke-width:0.01mm" /><polygon
id="polygon16265-9"
points="154.37172,16.325022 154.44597,16.224917 154.51004,16.118016 154.56333,16.00535 154.60531,15.888004 154.6356,15.767107 154.65388,15.643824 154.66,15.519342 154.65388,15.394861 154.6356,15.271578 154.60531,15.150681 154.56333,15.033335 154.51004,14.920669 154.44597,14.813768 154.37172,14.713663 154.28803,14.621317 154.19568,14.537619 154.09557,14.463376 153.98867,14.399302 153.87601,14.346015 153.75866,14.304028 153.63776,14.273745 153.51448,14.255458 153.39,14.249342 153.26552,14.255458 153.14224,14.273745 153.02134,14.304028 152.90399,14.346015 152.79133,14.399302 152.68443,14.463376 152.58432,14.537619 152.49197,14.621317 152.40828,14.713663 152.33403,14.813768 152.26996,14.920669 152.21667,15.033335 152.17469,15.150681 152.1444,15.271578 152.12612,15.394861 152.12,15.519342 152.12612,15.643824 152.1444,15.767107 152.17469,15.888004 152.21667,16.00535 152.26996,16.118016 152.33403,16.224917 152.40828,16.325022 152.49197,16.417368 152.58432,16.501066 152.68443,16.575309 152.79133,16.639382 152.90399,16.692669 153.02134,16.734657 153.14224,16.76494 153.26552,16.783227 153.39,16.789342 153.39,16.789342 153.51448,16.783227 153.63776,16.76494 153.75866,16.734657 153.87601,16.692669 153.98867,16.639382 154.09557,16.575309 154.19568,16.501066 154.28803,16.417368 "
style="fill:none;stroke:#0000ff;stroke-width:0.01mm" /><polygon
id="polygon16267-7"
points="136.59172,16.325022 136.66597,16.224917 136.73004,16.118016 136.78333,16.00535 136.82531,15.888004 136.8556,15.767107 136.87388,15.643824 136.88,15.519342 136.87388,15.394861 136.8556,15.271578 136.82531,15.150681 136.78333,15.033335 136.73004,14.920669 136.66597,14.813768 136.59172,14.713663 136.50803,14.621317 136.41568,14.537619 136.31557,14.463376 136.20867,14.399302 136.09601,14.346015 135.97866,14.304028 135.85776,14.273745 135.73448,14.255458 135.61,14.249342 135.48552,14.255458 135.36224,14.273745 135.24134,14.304028 135.12399,14.346015 135.01133,14.399302 134.90443,14.463376 134.80432,14.537619 134.71197,14.621317 134.62828,14.713663 134.55403,14.813768 134.48996,14.920669 134.43667,15.033335 134.39469,15.150681 134.3644,15.271578 134.34612,15.394861 134.34,15.519342 134.34612,15.643824 134.3644,15.767107 134.39469,15.888004 134.43667,16.00535 134.48996,16.118016 134.55403,16.224917 134.62828,16.325022 134.71197,16.417368 134.80432,16.501066 134.90443,16.575309 135.01133,16.639382 135.12399,16.692669 135.24134,16.734657 135.36224,16.76494 135.48552,16.783227 135.61,16.789342 135.73448,16.783227 135.85776,16.76494 135.97866,16.734657 136.09601,16.692669 136.20867,16.639382 136.31557,16.575309 136.41568,16.501066 136.50803,16.417368 "
style="fill:none;stroke:#0000ff;stroke-width:0.01mm" /><polygon
id="polygon16269-0"
points="136.59172,62.045022 136.66597,61.944917 136.73004,61.838016 136.78333,61.72535 136.82531,61.608004 136.8556,61.487107 136.87388,61.363824 136.88,61.239342 136.87388,61.114861 136.8556,60.991578 136.82531,60.870681 136.78333,60.753335 136.73004,60.640669 136.66597,60.533768 136.59172,60.433663 136.50803,60.341317 136.41568,60.257619 136.31557,60.183376 136.20867,60.119302 136.09601,60.066015 135.97866,60.024028 135.85776,59.993745 135.73448,59.975458 135.61,59.969342 135.48552,59.975458 135.36224,59.993745 135.24134,60.024028 135.12399,60.066015 135.01133,60.119302 134.90443,60.183376 134.80432,60.257619 134.71197,60.341317 134.62828,60.433663 134.55403,60.533768 134.48996,60.640669 134.43667,60.753335 134.39469,60.870681 134.3644,60.991578 134.34612,61.114861 134.34,61.239342 134.34612,61.363824 134.3644,61.487107 134.39469,61.608004 134.43667,61.72535 134.48996,61.838016 134.55403,61.944917 134.62828,62.045022 134.71197,62.137368 134.80432,62.221066 134.90443,62.295309 135.01133,62.359382 135.12399,62.412669 135.24134,62.454657 135.36224,62.48494 135.48552,62.503227 135.61,62.509342 135.73448,62.503227 135.85776,62.48494 135.97866,62.454657 136.09601,62.412669 136.20867,62.359382 136.31557,62.295309 136.41568,62.221066 136.50803,62.137368 "
style="fill:none;stroke:#0000ff;stroke-width:0.01mm" /><polygon
id="polygon16271-3"
points="154.37172,62.045022 154.44597,61.944917 154.51004,61.838016 154.56333,61.72535 154.60531,61.608004 154.6356,61.487107 154.65388,61.363824 154.66,61.239342 154.65388,61.114861 154.6356,60.991578 154.60531,60.870681 154.56333,60.753335 154.51004,60.640669 154.44597,60.533768 154.37172,60.433663 154.28803,60.341317 154.19568,60.257619 154.09557,60.183376 153.98867,60.119302 153.87601,60.066015 153.75866,60.024028 153.63776,59.993745 153.51448,59.975458 153.39,59.969342 153.26552,59.975458 153.14224,59.993745 153.02134,60.024028 152.90399,60.066015 152.79133,60.119302 152.68443,60.183376 152.58432,60.257619 152.49197,60.341317 152.40828,60.433663 152.33403,60.533768 152.26996,60.640669 152.21667,60.753335 152.17469,60.870681 152.1444,60.991578 152.12612,61.114861 152.12,61.239342 152.12612,61.363824 152.1444,61.487107 152.17469,61.608004 152.21667,61.72535 152.26996,61.838016 152.33403,61.944917 152.40828,62.045022 152.49197,62.137368 152.58432,62.221066 152.68443,62.295309 152.79133,62.359382 152.90399,62.412669 153.02134,62.454657 153.14224,62.48494 153.26552,62.503227 153.39,62.509342 153.39,62.509342 153.51448,62.503227 153.63776,62.48494 153.75866,62.454657 153.87601,62.412669 153.98867,62.359382 154.09557,62.295309 154.19568,62.221066 154.28803,62.137368 "
style="fill:none;stroke:#0000ff;stroke-width:0.01mm" /><polygon
id="polygon16273-9"
points="33.587383,6.2637597 33.457246,6.1672437 33.318276,6.083948 33.17181,6.0146749 33.01926,5.9600915 32.862094,5.9207235 32.701826,5.89695 32.54,5.889 32.378174,5.89695 32.217906,5.9207235 32.06074,5.9600915 31.90819,6.0146749 31.761724,6.083948 31.622754,6.1672437 31.492617,6.2637597 31.372567,6.3725667 31.26376,6.4926167 31.167244,6.6227535 31.083948,6.761724 31.014675,6.9081897 30.960092,7.06074 30.920724,7.2179059 30.89695,7.3781737 30.889,7.54 30.89695,7.7018263 30.920724,7.8620941 30.960092,8.01926 31.014675,8.1718103 31.083948,8.318276 31.167244,8.4572465 31.26376,8.5873833 31.372567,8.7074333 31.492617,8.8162403 31.622754,8.9127563 31.761724,8.996052 31.90819,9.0653251 32.06074,9.1199085 32.217906,9.1592765 32.378174,9.18305 32.54,9.191 32.701826,9.18305 32.862094,9.1592765 33.01926,9.1199085 33.17181,9.0653251 33.318276,8.996052 33.457246,8.9127563 33.587383,8.8162403 33.707433,8.7074333 33.81624,8.5873833 33.912756,8.4572465 33.996052,8.318276 34.065325,8.1718103 34.119908,8.01926 34.159276,7.8620941 34.18305,7.7018263 34.191,7.54 34.191,7.54 34.18305,7.3781737 34.159276,7.2179059 34.119908,7.06074 34.065325,6.9081897 33.996052,6.761724 33.912756,6.6227535 33.81624,6.4926167 33.707433,6.3725667 "
style="fill:none;stroke:#0000ff;stroke-width:0.01mm" /><polygon
id="polygon16275-8"
points="61.527383,6.2637597 61.397246,6.1672437 61.258276,6.083948 61.11181,6.0146749 60.95926,5.9600915 60.802094,5.9207235 60.641826,5.89695 60.48,5.889 60.318174,5.89695 60.157906,5.9207235 60.00074,5.9600915 59.84819,6.0146749 59.701724,6.083948 59.562754,6.1672437 59.432617,6.2637597 59.312567,6.3725667 59.20376,6.4926167 59.107244,6.6227535 59.023948,6.761724 58.954675,6.9081897 58.900092,7.06074 58.860724,7.2179059 58.83695,7.3781737 58.829,7.54 58.83695,7.7018263 58.860724,7.8620941 58.900092,8.01926 58.954675,8.1718103 59.023948,8.318276 59.107244,8.4572465 59.20376,8.5873833 59.312567,8.7074333 59.432617,8.8162403 59.562754,8.9127563 59.701724,8.996052 59.84819,9.0653251 60.00074,9.1199085 60.157906,9.1592765 60.318174,9.18305 60.48,9.191 60.641826,9.18305 60.802094,9.1592765 60.95926,9.1199085 61.11181,9.0653251 61.258276,8.996052 61.397246,8.9127563 61.527383,8.8162403 61.647433,8.7074333 61.75624,8.5873833 61.852756,8.4572465 61.936052,8.318276 62.005325,8.1718103 62.059908,8.01926 62.099276,7.8620941 62.12305,7.7018263 62.131,7.54 62.131,7.54 62.12305,7.3781737 62.099276,7.2179059 62.059908,7.06074 62.005325,6.9081897 61.936052,6.761724 61.852756,6.6227535 61.75624,6.4926167 61.647433,6.3725667 "
style="fill:none;stroke:#0000ff;stroke-width:0.01mm" /></g><g
id="g16404"
transform="matrix(2.8346455,0,0,2.8346455,16.527331,558.9075)"><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 27.346212,5 -0.243127,0.01185 -0.240822,0.035438 -0.236234,0.05869 -0.229406,0.081386 -0.220405,0.1033102 -0.209312,0.1242551 -0.196237,0.1440218 -0.1813,0.1624233 -0.164644,0.1792849 -0.146429,0.194447 -0.126825,0.2077655 -0.106018,0.2191145 -13.300557,31.2893437 -0.09333,0.258065 -0.06449,0.26674 -0.03486,0.272201 -0.0048,0.274382 4.585613,122.687912 0.02207,0.25087 0.0472,0.24738 0.07185,0.24137 0.09577,0.23292 0.118713,0.22211 0.140457,0.20903 0.160775,0.19384 0.179461,0.17669 0.196326,0.15773 0.211199,0.13718 0.223929,0.11523 0.234386,0.0921 0.242465,0.0681 0.248083,0.0433 123.593877,15.22131 0.23783,0.0178 0.23845,-0.005 0.2369,-0.0276 0.23318,-0.0501 0.22736,-0.0721 0.21945,-0.0934 0.20955,-0.11388 0.19775,-0.13333 0.18414,-0.15157 0.16887,-0.16843 0.15204,-0.18375 0.13385,-0.1974 0.11442,-0.20926 0.094,-0.21921 0.0727,-0.22716 6.78727,-25.33046 5.24658,-19.58049 0.0476,-0.21536 0.0285,-0.21872 5.241,-61.301612 L 162,70.486017 V 15.073865 l -0.0123,-0.247905 -0.0369,-0.245462 -0.061,-0.240599 -0.0846,-0.233363 -0.10728,-0.223828 -0.12895,-0.212086 -0.14935,-0.198254 -0.16827,-0.182468 -0.18553,-0.164881 -0.20097,-0.145672 -0.21443,-0.125025 -0.22576,-0.103145 -0.23488,-0.08025 -0.24169,-0.05656 L 159.702,12.582047 66.303264,5.0081795 66.101199,5 Z"
id="path19818" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 145.02021,135.26102 -3.62346,13.52296 -13.52297,-3.62347 3.62347,-13.52296 z"
id="path19816" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 143.05038,115.01119 -3.62346,13.52296 -13.52297,-3.62346 3.62347,-13.52296 z"
id="path19814" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 140.08971,153.6619 -3.62347,13.52297 -13.52296,-3.62347 3.62347,-13.52296 z"
id="path19812" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 137.79707,86.597882 -0.79369,13.977488 -13.97749,-0.793703 0.7937,-13.977484 z"
id="path19810" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 126.61933,130.33051 -3.62347,13.52297 -13.52296,-3.62347 3.62346,-13.52296 z"
id="path19808" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 122.15271,26.082381 -0.7937,13.977483 -13.97749,-0.793699 0.7937,-13.977483 z"
id="path19806" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 121.68882,148.7314 -3.62346,13.52296 -13.52297,-3.62346 3.62347,-13.52297 z"
id="path19804" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 121.07271,45.101742 -0.7937,13.977483 -13.97748,-0.793699 0.79369,-13.977483 z"
id="path19802" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 119.99271,64.121103 -0.7937,13.977484 -13.97748,-0.793699 0.7937,-13.977484 z"
id="path19800" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 118.91271,83.140465 -0.7937,13.977483 -13.97748,-0.793699 0.7937,-13.977483 z"
id="path19798" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 117.83272,102.15983 -0.7937,13.97748 -13.97749,-0.7937 0.7937,-13.97748 z"
id="path19796" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 107.60213,127.70012 -3.62347,13.52296 -13.522963,-3.62346 3.623467,-13.52296 z"
id="path19794" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="M 103.13334,25.002383 102.33965,38.979867 88.362162,38.186168 89.155861,24.208684 Z"
id="path19792" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 102.05531,148.40112 -3.623467,13.52296 -13.522962,-3.62346 3.623467,-13.52297 z"
id="path19790" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 102.05331,44.021744 -0.7937,13.977484 -13.977486,-0.793699 0.793699,-13.977484 z"
id="path19788" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="M 100.97331,63.041106 100.17961,77.018589 86.202127,76.22489 86.995826,62.247407 Z"
id="path19786" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 99.893312,82.060467 -0.793699,13.977484 -13.977484,-0.7937 0.793699,-13.977483 z"
id="path19784" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 98.813314,101.07983 -0.793699,13.97748 -13.977483,-0.7937 0.793699,-13.97748 z"
id="path19782" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 78.675,51.625 v 14 h -14 v -14 z"
id="path19780" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 78.675,32.575 v 14 h -14 v -14 z"
id="path19778" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 78.675,139.73125 v 14 h -14 v -14 z"
id="path19776" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 78.675,120.68125 v 14 h -14 v -14 z"
id="path19774" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 78.675,89.725 v 14 h -14 v -14 z"
id="path19772" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 78.675,70.675 v 14 h -14 v -14 z"
id="path19770" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 59.625,75.4375 v 14 h -14 v -14 z"
id="path19768" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 59.625,56.3875 v 14 h -14 v -14 z"
id="path19766" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 59.625,37.3375 v 14 h -14 v -14 z"
id="path19764" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 59.625,94.4875 v 14 h -14 v -14 z"
id="path19762" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 59.625,120.68125 v 14 h -14 v -14 z"
id="path19760" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 59.625,139.73125 v 14 h -14 v -14 z"
id="path19758" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 40.575,120.68125 v 14 h -14 v -14 z"
id="path19756" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 40.575,139.73125 v 14 h -14 v -14 z"
id="path19754" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 39.611574,100.72098 0.793699,13.97748 -13.977483,0.7937 -0.793699,-13.97748 z"
id="path19752" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="M 38.531576,81.701618 39.325275,95.679101 25.347792,96.4728 24.554093,82.495317 Z"
id="path19750" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="M 37.451579,62.682257 38.245278,76.65974 24.267794,77.453439 23.474095,63.475956 Z"
id="path19748" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="M 36.371581,43.662895 37.16528,57.640379 23.187797,58.434078 22.394098,44.456594 Z"
id="path19746" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 15.545654,38.789344 v 0 l -0.0072,0.147025 -0.0216,0.14561 -0.03577,0.142792 -0.04959,0.138598 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.118235 -0.09886,0.10907 -0.109071,0.09886 -0.118234,0.08769 -0.12626,0.07568 -0.13307,0.06294 -0.138599,0.04959 -0.142791,0.03577 -0.14561,0.0216 -0.147026,0.0072 -0.147025,-0.0072 -0.14561,-0.0216 -0.142792,-0.03577 -0.138598,-0.04959 -0.13307,-0.06294 -0.12626,-0.07568 -0.118235,-0.08769 -0.10907,-0.09886 -0.09886,-0.10907 -0.08769,-0.118235 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.138598 -0.03577,-0.142792 -0.0216,-0.14561 -0.0072,-0.147025 0.0072,-0.147026 0.0216,-0.14561 0.03577,-0.142791 0.04959,-0.138598 0.06294,-0.13307 0.07568,-0.126261 0.08769,-0.118234 0.09886,-0.10907 0.10907,-0.09886 0.118235,-0.08769 0.12626,-0.07568 0.13307,-0.06294 0.138598,-0.04959 0.142792,-0.03577 0.14561,-0.0216 0.147025,-0.0072 0.147026,0.0072 0.14561,0.0216 0.142791,0.03577 0.138599,0.04959 0.13307,0.06294 0.12626,0.07568 0.118234,0.08769 0.109071,0.09886 0.09886,0.10907 0.08769,0.118234 0.07568,0.126261 0.06294,0.13307 0.04959,0.138598 0.03577,0.142791 0.0216,0.14561 z"
id="path19744" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 17.838461,100.1333 v 0 l -0.0072,0.14703 -0.0216,0.14561 -0.03577,0.14279 -0.04959,0.1386 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.11823 -0.09886,0.10907 -0.10907,0.0989 -0.118235,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.138598,0.0496 -0.142792,0.0358 -0.145609,0.0216 -0.147026,0.007 -0.147026,-0.007 -0.14561,-0.0216 -0.142791,-0.0358 -0.138598,-0.0496 -0.13307,-0.0629 -0.126261,-0.0757 -0.118234,-0.0877 -0.10907,-0.0989 -0.09886,-0.10907 -0.08769,-0.11823 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.1386 -0.03577,-0.14279 -0.0216,-0.14561 -0.0072,-0.14703 0.0072,-0.147026 0.0216,-0.145609 0.03577,-0.142792 0.04959,-0.138598 0.06294,-0.13307 0.07568,-0.12626 0.08769,-0.118235 0.09886,-0.10907 0.10907,-0.09886 0.118234,-0.08769 0.126261,-0.07568 0.13307,-0.06294 0.138598,-0.04959 0.142791,-0.03577 0.14561,-0.0216 0.147026,-0.0072 0.147026,0.0072 0.145609,0.0216 0.142792,0.03577 0.138598,0.04959 0.13307,0.06294 0.12626,0.07568 0.118235,0.08769 0.10907,0.09886 0.09886,0.10907 0.08769,0.118235 0.07568,0.12626 0.06294,0.13307 0.04959,0.138598 0.03577,0.142792 0.0216,0.145609 z"
id="path19742" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 20.131267,161.47726 -0.0072,0.14702 -0.0216,0.14561 -0.03577,0.14279 -0.04959,0.1386 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.11824 -0.09886,0.10907 -0.10907,0.0988 -0.118234,0.0877 -0.126261,0.0757 -0.13307,0.0629 -0.138598,0.0496 -0.142791,0.0358 -0.14561,0.0216 -0.147026,0.007 -0.147025,-0.007 -0.14561,-0.0216 -0.142792,-0.0358 -0.138598,-0.0496 -0.13307,-0.0629 -0.12626,-0.0757 -0.118235,-0.0877 -0.10907,-0.0988 -0.09886,-0.10907 -0.08769,-0.11824 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.1386 -0.03577,-0.14279 -0.0216,-0.14561 -0.0072,-0.14702 0.0072,-0.14703 0.0216,-0.14561 0.03577,-0.14279 0.04959,-0.1386 0.06294,-0.13307 0.07568,-0.12626 0.08769,-0.11823 0.09886,-0.10907 0.10907,-0.0989 0.118235,-0.0877 0.12626,-0.0757 0.13307,-0.0629 0.138598,-0.0496 0.142792,-0.0358 0.14561,-0.0216 0.147025,-0.007 0.147026,0.007 0.14561,0.0216 0.142791,0.0358 0.138598,0.0496 0.13307,0.0629 0.126261,0.0757 0.118234,0.0877 0.10907,0.0989 0.09886,0.10907 0.08769,0.11823 0.07568,0.12626 0.06294,0.13307 0.04959,0.1386 0.03577,0.14279 0.0216,0.14561 z"
id="path19740" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 81.928206,169.08791 -0.0072,0.14703 -0.0216,0.14561 -0.03577,0.14279 -0.04959,0.1386 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.11823 -0.09886,0.10907 -0.10907,0.0989 -0.118235,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.138598,0.0496 -0.142792,0.0358 -0.145609,0.0216 -0.147026,0.007 -0.147026,-0.007 -0.14561,-0.0216 -0.142791,-0.0358 -0.138598,-0.0496 -0.13307,-0.0629 -0.126261,-0.0757 -0.118234,-0.0877 -0.10907,-0.0989 -0.09886,-0.10907 -0.08769,-0.11823 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.1386 -0.03577,-0.14279 -0.0216,-0.14561 -0.0072,-0.14703 0.0072,-0.14702 0.0216,-0.14561 0.03577,-0.14279 0.04959,-0.1386 0.06294,-0.13307 0.07568,-0.12626 0.08769,-0.11824 0.09886,-0.10907 0.10907,-0.0988 0.118234,-0.0877 0.126261,-0.0757 0.13307,-0.0629 0.138598,-0.0496 0.142791,-0.0358 0.14561,-0.0216 0.147026,-0.007 0.147026,0.007 0.145609,0.0216 0.142792,0.0358 0.138598,0.0496 0.13307,0.0629 0.12626,0.0757 0.118235,0.0877 0.10907,0.0988 0.09886,0.10907 0.08769,0.11824 0.07568,0.12626 0.06294,0.13307 0.04959,0.1386 0.03577,0.14279 0.0216,0.14561 z"
id="path19738" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 143.72514,176.69857 -0.007,0.14703 -0.0216,0.14561 -0.0358,0.14279 -0.0496,0.1386 -0.0629,0.13307 -0.0757,0.12626 -0.0877,0.11823 -0.0989,0.10907 -0.10907,0.0989 -0.11823,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.1386,0.0496 -0.14279,0.0358 -0.14561,0.0216 -0.14703,0.007 -0.14702,-0.007 -0.14561,-0.0216 -0.14279,-0.0358 -0.1386,-0.0496 -0.13307,-0.0629 -0.12626,-0.0757 -0.11824,-0.0877 -0.10907,-0.0989 -0.0988,-0.10907 -0.0877,-0.11823 -0.0757,-0.12626 -0.0629,-0.13307 -0.0496,-0.1386 -0.0358,-0.14279 -0.0216,-0.14561 -0.007,-0.14703 0.007,-0.14702 0.0216,-0.14561 0.0358,-0.1428 0.0496,-0.13859 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.11824 0.0988,-0.10907 0.10907,-0.0988 0.11824,-0.0877 0.12626,-0.0757 0.13307,-0.0629 0.1386,-0.0496 0.14279,-0.0358 0.14561,-0.0216 0.14702,-0.007 0.14703,0.007 0.14561,0.0216 0.14279,0.0358 0.1386,0.0496 0.13307,0.0629 0.12626,0.0757 0.11823,0.0877 0.10907,0.0988 0.0989,0.10907 0.0877,0.11824 0.0757,0.12626 0.0629,0.13307 0.0496,0.13859 0.0358,0.1428 0.0216,0.14561 z"
id="path19736" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 155.759,131.78762 v 0 l -0.007,0.14703 -0.0216,0.14561 -0.0358,0.14279 -0.0496,0.1386 -0.0629,0.13307 -0.0757,0.12626 -0.0877,0.11823 -0.0988,0.10907 -0.10907,0.0989 -0.11824,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.1386,0.0496 -0.14279,0.0358 -0.14561,0.0216 -0.14702,0.007 -0.14703,-0.007 -0.14561,-0.0216 -0.14279,-0.0358 -0.1386,-0.0496 -0.13307,-0.0629 -0.12626,-0.0757 -0.11823,-0.0877 -0.10907,-0.0989 -0.0989,-0.10907 -0.0877,-0.11823 -0.0757,-0.12626 -0.0629,-0.13307 -0.0496,-0.1386 -0.0358,-0.14279 -0.0216,-0.14561 -0.007,-0.14703 0.007,-0.14702 0.0216,-0.14561 0.0358,-0.14279 0.0496,-0.1386 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.11824 0.0989,-0.10907 0.10907,-0.0988 0.11823,-0.0877 0.12626,-0.0757 0.13307,-0.0629 0.1386,-0.0496 0.14279,-0.0358 0.14561,-0.0216 0.14703,-0.007 0.14702,0.007 0.14561,0.0216 0.14279,0.0358 0.1386,0.0496 0.13307,0.0629 0.12626,0.0757 0.11824,0.0877 0.10907,0.0988 0.0988,0.10907 0.0877,0.11824 0.0757,0.12626 0.0629,0.13307 0.0496,0.1386 0.0358,0.14279 0.0216,0.14561 z"
id="path19734" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 161,70.486017 v 0 l -0.007,0.147026 -0.0216,0.14561 -0.0358,0.142791 -0.0496,0.138598 -0.0629,0.13307 -0.0757,0.12626 -0.0877,0.118235 -0.0989,0.10907 -0.10907,0.09886 -0.11823,0.08769 -0.12626,0.07568 -0.13307,0.06294 -0.1386,0.04959 -0.14279,0.03577 -0.14561,0.0216 -0.14703,0.0072 -0.14703,-0.0072 -0.14561,-0.0216 -0.14279,-0.03577 -0.1386,-0.04959 -0.13307,-0.06294 -0.12626,-0.07568 -0.11823,-0.08769 -0.10907,-0.09886 -0.0989,-0.10907 -0.0877,-0.118235 -0.0757,-0.12626 -0.0629,-0.13307 -0.0496,-0.138598 -0.0358,-0.142791 -0.0216,-0.14561 -0.007,-0.147026 0.007,-0.147026 0.0216,-0.145609 0.0358,-0.142792 0.0496,-0.138598 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.118235 0.0989,-0.10907 0.10907,-0.09886 0.11823,-0.08769 0.12626,-0.07568 0.13307,-0.06294 0.1386,-0.04959 0.14279,-0.03577 0.14561,-0.0216 0.14703,-0.0072 0.14703,0.0072 0.14561,0.0216 0.14279,0.03577 0.1386,0.04959 0.13307,0.06294 0.12626,0.07568 0.11823,0.08769 0.10907,0.09886 0.0989,0.10907 0.0877,0.118235 0.0757,0.12626 0.0629,0.13307 0.0496,0.138598 0.0358,0.142792 0.0216,0.145609 z"
id="path19732" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 161,15.073865 v 0 l -0.007,0.147026 -0.0216,0.14561 -0.0358,0.142791 -0.0496,0.138598 -0.0629,0.13307 -0.0757,0.126261 -0.0877,0.118234 -0.0989,0.10907 -0.10907,0.09886 -0.11823,0.08769 -0.12626,0.07568 -0.13307,0.06294 -0.1386,0.04959 -0.14279,0.03577 -0.14561,0.0216 -0.14703,0.0072 -0.14703,-0.0072 -0.14561,-0.0216 -0.14279,-0.03577 -0.1386,-0.04959 -0.13307,-0.06294 -0.12626,-0.07568 -0.11823,-0.08769 -0.10907,-0.09886 -0.0989,-0.10907 -0.0877,-0.118234 -0.0757,-0.126261 -0.0629,-0.13307 -0.0496,-0.138598 -0.0358,-0.142791 -0.0216,-0.14561 -0.007,-0.147026 0.007,-0.147025 0.0216,-0.14561 0.0358,-0.142792 0.0496,-0.138598 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.118235 0.0989,-0.10907 0.10907,-0.09885 0.11823,-0.08769 0.12626,-0.07568 0.13307,-0.06294 0.1386,-0.04959 0.14279,-0.03577 0.14561,-0.0216 0.14703,-0.0072 0.14703,0.0072 0.14561,0.0216 0.14279,0.03577 0.1386,0.04959 0.13307,0.06294 0.12626,0.07568 0.11823,0.08769 0.10907,0.09885 0.0989,0.10907 0.0877,0.118235 0.0757,0.12626 0.0629,0.13307 0.0496,0.138598 0.0358,0.142792 0.0216,0.14561 z"
id="path19730" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 67.601199,7.5 v 0 l -0.0072,0.1470257 -0.0216,0.1456098 -0.03577,0.1427915 -0.04959,0.1385981 -0.06294,0.13307 -0.07568,0.1262602 -0.08769,0.1182346 -0.09885,0.1090703 -0.109071,0.098856 -0.118234,0.087689 -0.12626,0.075678 -0.13307,0.062937 -0.138598,0.049591 -0.142792,0.035767 -0.14561,0.021599 L 66.101199,9 65.954173,8.99278 65.808563,8.971181 65.665771,8.935414 65.527173,8.885823 65.394103,8.822886 65.267843,8.747208 65.149609,8.659519 65.040538,8.560663 64.941678,8.4515927 64.853988,8.3333581 64.778308,8.2070979 64.715368,8.0740279 64.665788,7.935427 64.630021,7.7926355 64.608421,7.6470257 64.601199,7.5 l 0.0072,-0.1470257 0.0216,-0.1456098 0.03577,-0.1427915 0.04959,-0.1385981 0.06294,-0.13307 0.07568,-0.1262602 0.08769,-0.1182346 0.09886,-0.1090703 0.109071,-0.098855 0.118234,-0.087689 0.12626,-0.075677 0.13307,-0.062937 0.138598,-0.049591 0.142792,-0.035767 0.14561,-0.021599 L 66.101199,6 l 0.147025,0.00722 0.14561,0.021599 0.142792,0.035767 0.138598,0.049591 0.13307,0.062937 0.12626,0.075677 0.118234,0.087689 0.109071,0.098855 0.09885,0.1090703 0.08769,0.1182346 0.07568,0.1262602 0.06294,0.13307 0.04959,0.1385981 0.03577,0.1427915 0.0216,0.1456098 z"
id="path19728" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 28.846212,7.5 v 0 l -0.0072,0.1470257 -0.0216,0.1456098 -0.03577,0.1427915 -0.04959,0.1385981 -0.06294,0.13307 -0.07568,0.1262602 -0.08769,0.1182346 -0.09886,0.1090703 -0.10907,0.098856 -0.118235,0.087689 -0.12626,0.075678 -0.13307,0.062937 -0.138598,0.049591 -0.142792,0.035767 -0.14561,0.021599 L 27.346212,9 27.199186,8.99278 27.053576,8.971181 26.910785,8.935414 26.772186,8.885823 26.639116,8.822886 26.512856,8.747208 26.394622,8.659519 26.285551,8.560663 26.186691,8.4515927 26.099001,8.3333581 26.023321,8.2070979 25.960381,8.0740279 25.910801,7.935427 25.875034,7.7926355 25.853434,7.6470257 25.846212,7.5 l 0.0072,-0.1470257 0.0216,-0.1456098 0.03577,-0.1427915 0.04959,-0.1385981 0.06294,-0.13307 0.07568,-0.1262602 0.08769,-0.1182346 0.09886,-0.1090703 0.109071,-0.098855 0.118234,-0.087689 0.12626,-0.075677 0.13307,-0.062937 0.138599,-0.049591 0.142791,-0.035767 0.14561,-0.021599 L 27.346212,6 l 0.147025,0.00722 0.14561,0.021599 0.142792,0.035767 0.138598,0.049591 0.13307,0.062937 0.12626,0.075677 0.118235,0.087689 0.10907,0.098855 0.09886,0.1090703 0.08769,0.1182346 0.07568,0.1262602 0.06294,0.13307 0.04959,0.1385981 0.03577,0.1427915 0.0216,0.1456098 z"
id="path16402" /></g><g
id="g16404-7"
transform="matrix(-2.8346455,0,0,2.8346455,985.03517,566.72)"><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 27.346212,5 -0.243127,0.01185 -0.240822,0.035438 -0.236234,0.05869 -0.229406,0.081386 -0.220405,0.1033102 -0.209312,0.1242551 -0.196237,0.1440218 -0.1813,0.1624233 -0.164644,0.1792849 -0.146429,0.194447 -0.126825,0.2077655 -0.106018,0.2191145 -13.300557,31.2893437 -0.09333,0.258065 -0.06449,0.26674 -0.03486,0.272201 -0.0048,0.274382 4.585613,122.687912 0.02207,0.25087 0.0472,0.24738 0.07185,0.24137 0.09577,0.23292 0.118713,0.22211 0.140457,0.20903 0.160775,0.19384 0.179461,0.17669 0.196326,0.15773 0.211199,0.13718 0.223929,0.11523 0.234386,0.0921 0.242465,0.0681 0.248083,0.0433 123.593877,15.22131 0.23783,0.0178 0.23845,-0.005 0.2369,-0.0276 0.23318,-0.0501 0.22736,-0.0721 0.21945,-0.0934 0.20955,-0.11388 0.19775,-0.13333 0.18414,-0.15157 0.16887,-0.16843 0.15204,-0.18375 0.13385,-0.1974 0.11442,-0.20926 0.094,-0.21921 0.0727,-0.22716 6.78727,-25.33046 5.24658,-19.58049 0.0476,-0.21536 0.0285,-0.21872 5.241,-61.301612 L 162,70.486017 V 15.073865 l -0.0123,-0.247905 -0.0369,-0.245462 -0.061,-0.240599 -0.0846,-0.233363 -0.10728,-0.223828 -0.12895,-0.212086 -0.14935,-0.198254 -0.16827,-0.182468 -0.18553,-0.164881 -0.20097,-0.145672 -0.21443,-0.125025 -0.22576,-0.103145 -0.23488,-0.08025 -0.24169,-0.05656 L 159.702,12.582047 66.303264,5.0081795 66.101199,5 Z"
id="path19912" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 145.02021,135.26102 -3.62346,13.52296 -13.52297,-3.62347 3.62347,-13.52296 z"
id="path19910" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 143.05038,115.01119 -3.62346,13.52296 -13.52297,-3.62346 3.62347,-13.52296 z"
id="path19908" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 140.08971,153.6619 -3.62347,13.52297 -13.52296,-3.62347 3.62347,-13.52296 z"
id="path19906" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 137.79707,86.597882 -0.79369,13.977488 -13.97749,-0.793703 0.7937,-13.977484 z"
id="path19904" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 126.61933,130.33051 -3.62347,13.52297 -13.52296,-3.62347 3.62346,-13.52296 z"
id="path19902" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 122.15271,26.082381 -0.7937,13.977483 -13.97749,-0.793699 0.7937,-13.977483 z"
id="path19900" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 121.68882,148.7314 -3.62346,13.52296 -13.52297,-3.62346 3.62347,-13.52297 z"
id="path19898" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 121.07271,45.101742 -0.7937,13.977483 -13.97748,-0.793699 0.79369,-13.977483 z"
id="path19896" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 119.99271,64.121103 -0.7937,13.977484 -13.97748,-0.793699 0.7937,-13.977484 z"
id="path19894" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 118.91271,83.140465 -0.7937,13.977483 -13.97748,-0.793699 0.7937,-13.977483 z"
id="path19892" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 117.83272,102.15983 -0.7937,13.97748 -13.97749,-0.7937 0.7937,-13.97748 z"
id="path19890" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 107.60213,127.70012 -3.62347,13.52296 -13.522963,-3.62346 3.623467,-13.52296 z"
id="path19888" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="M 103.13334,25.002383 102.33965,38.979867 88.362162,38.186168 89.155861,24.208684 Z"
id="path19886" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 102.05531,148.40112 -3.623467,13.52296 -13.522962,-3.62346 3.623467,-13.52297 z"
id="path19884" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 102.05331,44.021744 -0.7937,13.977484 -13.977486,-0.793699 0.793699,-13.977484 z"
id="path19882" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="M 100.97331,63.041106 100.17961,77.018589 86.202127,76.22489 86.995826,62.247407 Z"
id="path19880" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 99.893312,82.060467 -0.793699,13.977484 -13.977484,-0.7937 0.793699,-13.977483 z"
id="path19878" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 98.813314,101.07983 -0.793699,13.97748 -13.977483,-0.7937 0.793699,-13.97748 z"
id="path19876" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 78.675,51.625 v 14 h -14 v -14 z"
id="path19874" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 78.675,32.575 v 14 h -14 v -14 z"
id="path19872" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 78.675,139.73125 v 14 h -14 v -14 z"
id="path19870" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 78.675,120.68125 v 14 h -14 v -14 z"
id="path19868" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 78.675,89.725 v 14 h -14 v -14 z"
id="path19866" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 78.675,70.675 v 14 h -14 v -14 z"
id="path19864" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 59.625,75.4375 v 14 h -14 v -14 z"
id="path19862" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 59.625,56.3875 v 14 h -14 v -14 z"
id="path19860" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 59.625,37.3375 v 14 h -14 v -14 z"
id="path19858" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 59.625,94.4875 v 14 h -14 v -14 z"
id="path19856" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 59.625,120.68125 v 14 h -14 v -14 z"
id="path19854" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 59.625,139.73125 v 14 h -14 v -14 z"
id="path19852" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 40.575,120.68125 v 14 h -14 v -14 z"
id="path19850" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 40.575,139.73125 v 14 h -14 v -14 z"
id="path19848" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 39.611574,100.72098 0.793699,13.97748 -13.977483,0.7937 -0.793699,-13.97748 z"
id="path19846" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="M 38.531576,81.701618 39.325275,95.679101 25.347792,96.4728 24.554093,82.495317 Z"
id="path19844" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="M 37.451579,62.682257 38.245278,76.65974 24.267794,77.453439 23.474095,63.475956 Z"
id="path19842" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="M 36.371581,43.662895 37.16528,57.640379 23.187797,58.434078 22.394098,44.456594 Z"
id="path19840" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 15.545654,38.789344 v 0 l -0.0072,0.147025 -0.0216,0.14561 -0.03577,0.142792 -0.04959,0.138598 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.118235 -0.09886,0.10907 -0.109071,0.09886 -0.118234,0.08769 -0.12626,0.07568 -0.13307,0.06294 -0.138599,0.04959 -0.142791,0.03577 -0.14561,0.0216 -0.147026,0.0072 -0.147025,-0.0072 -0.14561,-0.0216 -0.142792,-0.03577 -0.138598,-0.04959 -0.13307,-0.06294 -0.12626,-0.07568 -0.118235,-0.08769 -0.10907,-0.09886 -0.09886,-0.10907 -0.08769,-0.118235 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.138598 -0.03577,-0.142792 -0.0216,-0.14561 -0.0072,-0.147025 0.0072,-0.147026 0.0216,-0.14561 0.03577,-0.142791 0.04959,-0.138598 0.06294,-0.13307 0.07568,-0.126261 0.08769,-0.118234 0.09886,-0.10907 0.10907,-0.09886 0.118235,-0.08769 0.12626,-0.07568 0.13307,-0.06294 0.138598,-0.04959 0.142792,-0.03577 0.14561,-0.0216 0.147025,-0.0072 0.147026,0.0072 0.14561,0.0216 0.142791,0.03577 0.138599,0.04959 0.13307,0.06294 0.12626,0.07568 0.118234,0.08769 0.109071,0.09886 0.09886,0.10907 0.08769,0.118234 0.07568,0.126261 0.06294,0.13307 0.04959,0.138598 0.03577,0.142791 0.0216,0.14561 z"
id="path19838" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 17.838461,100.1333 v 0 l -0.0072,0.14703 -0.0216,0.14561 -0.03577,0.14279 -0.04959,0.1386 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.11823 -0.09886,0.10907 -0.10907,0.0989 -0.118235,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.138598,0.0496 -0.142792,0.0358 -0.145609,0.0216 -0.147026,0.007 -0.147026,-0.007 -0.14561,-0.0216 -0.142791,-0.0358 -0.138598,-0.0496 -0.13307,-0.0629 -0.126261,-0.0757 -0.118234,-0.0877 -0.10907,-0.0989 -0.09886,-0.10907 -0.08769,-0.11823 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.1386 -0.03577,-0.14279 -0.0216,-0.14561 -0.0072,-0.14703 0.0072,-0.147026 0.0216,-0.145609 0.03577,-0.142792 0.04959,-0.138598 0.06294,-0.13307 0.07568,-0.12626 0.08769,-0.118235 0.09886,-0.10907 0.10907,-0.09886 0.118234,-0.08769 0.126261,-0.07568 0.13307,-0.06294 0.138598,-0.04959 0.142791,-0.03577 0.14561,-0.0216 0.147026,-0.0072 0.147026,0.0072 0.145609,0.0216 0.142792,0.03577 0.138598,0.04959 0.13307,0.06294 0.12626,0.07568 0.118235,0.08769 0.10907,0.09886 0.09886,0.10907 0.08769,0.118235 0.07568,0.12626 0.06294,0.13307 0.04959,0.138598 0.03577,0.142792 0.0216,0.145609 z"
id="path19836" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 20.131267,161.47726 -0.0072,0.14702 -0.0216,0.14561 -0.03577,0.14279 -0.04959,0.1386 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.11824 -0.09886,0.10907 -0.10907,0.0988 -0.118234,0.0877 -0.126261,0.0757 -0.13307,0.0629 -0.138598,0.0496 -0.142791,0.0358 -0.14561,0.0216 -0.147026,0.007 -0.147025,-0.007 -0.14561,-0.0216 -0.142792,-0.0358 -0.138598,-0.0496 -0.13307,-0.0629 -0.12626,-0.0757 -0.118235,-0.0877 -0.10907,-0.0988 -0.09886,-0.10907 -0.08769,-0.11824 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.1386 -0.03577,-0.14279 -0.0216,-0.14561 -0.0072,-0.14702 0.0072,-0.14703 0.0216,-0.14561 0.03577,-0.14279 0.04959,-0.1386 0.06294,-0.13307 0.07568,-0.12626 0.08769,-0.11823 0.09886,-0.10907 0.10907,-0.0989 0.118235,-0.0877 0.12626,-0.0757 0.13307,-0.0629 0.138598,-0.0496 0.142792,-0.0358 0.14561,-0.0216 0.147025,-0.007 0.147026,0.007 0.14561,0.0216 0.142791,0.0358 0.138598,0.0496 0.13307,0.0629 0.126261,0.0757 0.118234,0.0877 0.10907,0.0989 0.09886,0.10907 0.08769,0.11823 0.07568,0.12626 0.06294,0.13307 0.04959,0.1386 0.03577,0.14279 0.0216,0.14561 z"
id="path19834" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 81.928206,169.08791 -0.0072,0.14703 -0.0216,0.14561 -0.03577,0.14279 -0.04959,0.1386 -0.06294,0.13307 -0.07568,0.12626 -0.08769,0.11823 -0.09886,0.10907 -0.10907,0.0989 -0.118235,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.138598,0.0496 -0.142792,0.0358 -0.145609,0.0216 -0.147026,0.007 -0.147026,-0.007 -0.14561,-0.0216 -0.142791,-0.0358 -0.138598,-0.0496 -0.13307,-0.0629 -0.126261,-0.0757 -0.118234,-0.0877 -0.10907,-0.0989 -0.09886,-0.10907 -0.08769,-0.11823 -0.07568,-0.12626 -0.06294,-0.13307 -0.04959,-0.1386 -0.03577,-0.14279 -0.0216,-0.14561 -0.0072,-0.14703 0.0072,-0.14702 0.0216,-0.14561 0.03577,-0.14279 0.04959,-0.1386 0.06294,-0.13307 0.07568,-0.12626 0.08769,-0.11824 0.09886,-0.10907 0.10907,-0.0988 0.118234,-0.0877 0.126261,-0.0757 0.13307,-0.0629 0.138598,-0.0496 0.142791,-0.0358 0.14561,-0.0216 0.147026,-0.007 0.147026,0.007 0.145609,0.0216 0.142792,0.0358 0.138598,0.0496 0.13307,0.0629 0.12626,0.0757 0.118235,0.0877 0.10907,0.0988 0.09886,0.10907 0.08769,0.11824 0.07568,0.12626 0.06294,0.13307 0.04959,0.1386 0.03577,0.14279 0.0216,0.14561 z"
id="path19832" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 143.72514,176.69857 -0.007,0.14703 -0.0216,0.14561 -0.0358,0.14279 -0.0496,0.1386 -0.0629,0.13307 -0.0757,0.12626 -0.0877,0.11823 -0.0989,0.10907 -0.10907,0.0989 -0.11823,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.1386,0.0496 -0.14279,0.0358 -0.14561,0.0216 -0.14703,0.007 -0.14702,-0.007 -0.14561,-0.0216 -0.14279,-0.0358 -0.1386,-0.0496 -0.13307,-0.0629 -0.12626,-0.0757 -0.11824,-0.0877 -0.10907,-0.0989 -0.0988,-0.10907 -0.0877,-0.11823 -0.0757,-0.12626 -0.0629,-0.13307 -0.0496,-0.1386 -0.0358,-0.14279 -0.0216,-0.14561 -0.007,-0.14703 0.007,-0.14702 0.0216,-0.14561 0.0358,-0.1428 0.0496,-0.13859 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.11824 0.0988,-0.10907 0.10907,-0.0988 0.11824,-0.0877 0.12626,-0.0757 0.13307,-0.0629 0.1386,-0.0496 0.14279,-0.0358 0.14561,-0.0216 0.14702,-0.007 0.14703,0.007 0.14561,0.0216 0.14279,0.0358 0.1386,0.0496 0.13307,0.0629 0.12626,0.0757 0.11823,0.0877 0.10907,0.0988 0.0989,0.10907 0.0877,0.11824 0.0757,0.12626 0.0629,0.13307 0.0496,0.13859 0.0358,0.1428 0.0216,0.14561 z"
id="path19830" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 155.759,131.78762 v 0 l -0.007,0.14703 -0.0216,0.14561 -0.0358,0.14279 -0.0496,0.1386 -0.0629,0.13307 -0.0757,0.12626 -0.0877,0.11823 -0.0988,0.10907 -0.10907,0.0989 -0.11824,0.0877 -0.12626,0.0757 -0.13307,0.0629 -0.1386,0.0496 -0.14279,0.0358 -0.14561,0.0216 -0.14702,0.007 -0.14703,-0.007 -0.14561,-0.0216 -0.14279,-0.0358 -0.1386,-0.0496 -0.13307,-0.0629 -0.12626,-0.0757 -0.11823,-0.0877 -0.10907,-0.0989 -0.0989,-0.10907 -0.0877,-0.11823 -0.0757,-0.12626 -0.0629,-0.13307 -0.0496,-0.1386 -0.0358,-0.14279 -0.0216,-0.14561 -0.007,-0.14703 0.007,-0.14702 0.0216,-0.14561 0.0358,-0.14279 0.0496,-0.1386 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.11824 0.0989,-0.10907 0.10907,-0.0988 0.11823,-0.0877 0.12626,-0.0757 0.13307,-0.0629 0.1386,-0.0496 0.14279,-0.0358 0.14561,-0.0216 0.14703,-0.007 0.14702,0.007 0.14561,0.0216 0.14279,0.0358 0.1386,0.0496 0.13307,0.0629 0.12626,0.0757 0.11824,0.0877 0.10907,0.0988 0.0988,0.10907 0.0877,0.11824 0.0757,0.12626 0.0629,0.13307 0.0496,0.1386 0.0358,0.14279 0.0216,0.14561 z"
id="path19828" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 161,70.486017 v 0 l -0.007,0.147026 -0.0216,0.14561 -0.0358,0.142791 -0.0496,0.138598 -0.0629,0.13307 -0.0757,0.12626 -0.0877,0.118235 -0.0989,0.10907 -0.10907,0.09886 -0.11823,0.08769 -0.12626,0.07568 -0.13307,0.06294 -0.1386,0.04959 -0.14279,0.03577 -0.14561,0.0216 -0.14703,0.0072 -0.14703,-0.0072 -0.14561,-0.0216 -0.14279,-0.03577 -0.1386,-0.04959 -0.13307,-0.06294 -0.12626,-0.07568 -0.11823,-0.08769 -0.10907,-0.09886 -0.0989,-0.10907 -0.0877,-0.118235 -0.0757,-0.12626 -0.0629,-0.13307 -0.0496,-0.138598 -0.0358,-0.142791 -0.0216,-0.14561 -0.007,-0.147026 0.007,-0.147026 0.0216,-0.145609 0.0358,-0.142792 0.0496,-0.138598 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.118235 0.0989,-0.10907 0.10907,-0.09886 0.11823,-0.08769 0.12626,-0.07568 0.13307,-0.06294 0.1386,-0.04959 0.14279,-0.03577 0.14561,-0.0216 0.14703,-0.0072 0.14703,0.0072 0.14561,0.0216 0.14279,0.03577 0.1386,0.04959 0.13307,0.06294 0.12626,0.07568 0.11823,0.08769 0.10907,0.09886 0.0989,0.10907 0.0877,0.118235 0.0757,0.12626 0.0629,0.13307 0.0496,0.138598 0.0358,0.142792 0.0216,0.145609 z"
id="path19826" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 161,15.073865 v 0 l -0.007,0.147026 -0.0216,0.14561 -0.0358,0.142791 -0.0496,0.138598 -0.0629,0.13307 -0.0757,0.126261 -0.0877,0.118234 -0.0989,0.10907 -0.10907,0.09886 -0.11823,0.08769 -0.12626,0.07568 -0.13307,0.06294 -0.1386,0.04959 -0.14279,0.03577 -0.14561,0.0216 -0.14703,0.0072 -0.14703,-0.0072 -0.14561,-0.0216 -0.14279,-0.03577 -0.1386,-0.04959 -0.13307,-0.06294 -0.12626,-0.07568 -0.11823,-0.08769 -0.10907,-0.09886 -0.0989,-0.10907 -0.0877,-0.118234 -0.0757,-0.126261 -0.0629,-0.13307 -0.0496,-0.138598 -0.0358,-0.142791 -0.0216,-0.14561 -0.007,-0.147026 0.007,-0.147025 0.0216,-0.14561 0.0358,-0.142792 0.0496,-0.138598 0.0629,-0.13307 0.0757,-0.12626 0.0877,-0.118235 0.0989,-0.10907 0.10907,-0.09885 0.11823,-0.08769 0.12626,-0.07568 0.13307,-0.06294 0.1386,-0.04959 0.14279,-0.03577 0.14561,-0.0216 0.14703,-0.0072 0.14703,0.0072 0.14561,0.0216 0.14279,0.03577 0.1386,0.04959 0.13307,0.06294 0.12626,0.07568 0.11823,0.08769 0.10907,0.09885 0.0989,0.10907 0.0877,0.118235 0.0757,0.12626 0.0629,0.13307 0.0496,0.138598 0.0358,0.142792 0.0216,0.14561 z"
id="path19824" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 67.601199,7.5 v 0 l -0.0072,0.1470257 -0.0216,0.1456098 -0.03577,0.1427915 -0.04959,0.1385981 -0.06294,0.13307 -0.07568,0.1262602 -0.08769,0.1182346 -0.09885,0.1090703 -0.109071,0.098856 -0.118234,0.087689 -0.12626,0.075678 -0.13307,0.062937 -0.138598,0.049591 -0.142792,0.035767 -0.14561,0.021599 L 66.101199,9 65.954173,8.99278 65.808563,8.971181 65.665771,8.935414 65.527173,8.885823 65.394103,8.822886 65.267843,8.747208 65.149609,8.659519 65.040538,8.560663 64.941678,8.4515927 64.853988,8.3333581 64.778308,8.2070979 64.715368,8.0740279 64.665788,7.935427 64.630021,7.7926355 64.608421,7.6470257 64.601199,7.5 l 0.0072,-0.1470257 0.0216,-0.1456098 0.03577,-0.1427915 0.04959,-0.1385981 0.06294,-0.13307 0.07568,-0.1262602 0.08769,-0.1182346 0.09886,-0.1090703 0.109071,-0.098855 0.118234,-0.087689 0.12626,-0.075677 0.13307,-0.062937 0.138598,-0.049591 0.142792,-0.035767 0.14561,-0.021599 L 66.101199,6 l 0.147025,0.00722 0.14561,0.021599 0.142792,0.035767 0.138598,0.049591 0.13307,0.062937 0.12626,0.075677 0.118234,0.087689 0.109071,0.098855 0.09885,0.1090703 0.08769,0.1182346 0.07568,0.1262602 0.06294,0.13307 0.04959,0.1385981 0.03577,0.1427915 0.0216,0.1456098 z"
id="path19822" /><path
style="fill:none;stroke:#0000ff;stroke-width:0.01mm"
d="m 28.846212,7.5 v 0 l -0.0072,0.1470257 -0.0216,0.1456098 -0.03577,0.1427915 -0.04959,0.1385981 -0.06294,0.13307 -0.07568,0.1262602 -0.08769,0.1182346 -0.09886,0.1090703 -0.10907,0.098856 -0.118235,0.087689 -0.12626,0.075678 -0.13307,0.062937 -0.138598,0.049591 -0.142792,0.035767 -0.14561,0.021599 L 27.346212,9 27.199186,8.99278 27.053576,8.971181 26.910785,8.935414 26.772186,8.885823 26.639116,8.822886 26.512856,8.747208 26.394622,8.659519 26.285551,8.560663 26.186691,8.4515927 26.099001,8.3333581 26.023321,8.2070979 25.960381,8.0740279 25.910801,7.935427 25.875034,7.7926355 25.853434,7.6470257 25.846212,7.5 l 0.0072,-0.1470257 0.0216,-0.1456098 0.03577,-0.1427915 0.04959,-0.1385981 0.06294,-0.13307 0.07568,-0.1262602 0.08769,-0.1182346 0.09886,-0.1090703 0.109071,-0.098855 0.118234,-0.087689 0.12626,-0.075677 0.13307,-0.062937 0.138599,-0.049591 0.142791,-0.035767 0.14561,-0.021599 L 27.346212,6 l 0.147025,0.00722 0.14561,0.021599 0.142792,0.035767 0.138598,0.049591 0.13307,0.062937 0.12626,0.075677 0.118235,0.087689 0.10907,0.098855 0.09886,0.1090703 0.08769,0.1182346 0.07568,0.1262602 0.06294,0.13307 0.04959,0.1385981 0.03577,0.1427915 0.0216,0.1456098 z"
id="path16402-6" /></g></g></svg>
#include <bluefruit.h>
BLEDis bledis;
BLEUart bleuart;
static const int colPins[] = {16,15,7,11,30,27};
static const int rowPins[] = {2,3,4,5,28,29};
void setup()
{
for (auto &pin: rowPins) {
pinMode(pin, OUTPUT);
digitalWrite(pin, HIGH);
}
for (auto &pin: colPins) {
pinMode(pin, INPUT_PULLUP);
}
Serial.begin(115200);
Bluefruit.begin();
Bluefruit.autoConnLed(false);
Bluefruit.setTxPower(0);
Bluefruit.setName("Scission LHS");
bledis.setManufacturer("Wez Furlong");
bledis.setModel("Handwire1");
bledis.begin();
bleuart.begin();
startAdv();
}
void startAdv(void)
{
Bluefruit.Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
Bluefruit.Advertising.addTxPower();
Bluefruit.Advertising.addAppearance(BLE_APPEARANCE_HID_KEYBOARD);
Bluefruit.Advertising.addService(bleuart);
Bluefruit.ScanResponse.addName();
Bluefruit.Advertising.restartOnDisconnect(true);
Bluefruit.Advertising.setInterval(32, 244); // in unit of 0.625 ms
Bluefruit.Advertising.setFastTimeout(30); // number of seconds in fast mode
Bluefruit.Advertising.start(0); // 0 = Don't stop advertising after n seconds
}
struct matrix_t {
uint8_t rows[6];
};
struct matrix_t lastRead = {0,0,0,0,0,0};
struct matrix_t read_matrix() {
matrix_t matrix = {0,0,0,0,0,0};
for (int rowNum = 0; rowNum < 6; ++rowNum) {
digitalWrite(rowPins[rowNum], LOW);
for (int colNum = 0; colNum < 6; ++colNum) {
if (!digitalRead(colPins[colNum])) {
matrix.rows[rowNum] |= 1 << colNum;
}
}
digitalWrite(rowPins[rowNum], HIGH);
}
return matrix;
}
void loop()
{
auto down = read_matrix();
uint8_t report[16];
uint8_t repsize = 0;
for (int rowNum = 0; rowNum < 6; ++rowNum) {
for (int colNum = 0; colNum < 6; ++colNum) {
auto mask = 1 << colNum;
auto current = lastRead.rows[rowNum] & mask;
auto thisScan = down.rows[rowNum] & mask;
if (current != thisScan) {
auto scanCode = (rowNum * 6) + colNum;
if (thisScan) {
scanCode |= 0b10000000;
}
report[repsize++] = scanCode;
}
}
}
if (repsize) {
lastRead = down;
#if 0
Serial.print("repsize=");
Serial.print(repsize);
Serial.print(" ");
for (int i = 0; i < repsize; i++) {
Serial.print(report[i], HEX);
Serial.print(" ");
}
Serial.print("\r\n");
#endif
bleuart.write(report, repsize);
}
// Request CPU to enter low-power mode until an event/interrupt occurs
waitForEvent();
}
void rtos_idle_callback(void)
{
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
#include <bluefruit.h>
BLEDis dis;
BLEHidAdafruit hid;
BLEClientUart clientUart;
BLEBas battery;
static uint8_t battery_level = 0;
static uint32_t last_bat_time = 0;
static const int colPins[] = {16,15,7,11,30,27};
static const int rowPins[] = {2,3,4,5,28,29};
struct matrix_t {
uint16_t rows[6];
};
struct matrix_t remoteMatrix = {0,0,0,0,0,0};
struct matrix_t lastRead = {0,0,0,0,0,0};
void resetKeyMatrix();
void setup()
{
for (auto &pin: rowPins) {
pinMode(pin, OUTPUT);
digitalWrite(pin, HIGH);
}
for (auto &pin: colPins) {
pinMode(pin, INPUT_PULLUP);
}
Serial.begin(115200);
resetKeyMatrix();
// Central and peripheral
Bluefruit.begin(true, true);
//Bluefruit.clearBonds();
Bluefruit.autoConnLed(false);
battery.begin();
Bluefruit.setTxPower(0);
Bluefruit.setName("Scission RHS");
Bluefruit.Central.setConnectCallback(cent_connect_callback);
Bluefruit.Central.setDisconnectCallback(cent_disconnect_callback);
dis.setManufacturer("Wez Furlong");
dis.setModel("Handwire1");
dis.setHardwareRev("0001");
dis.setSoftwareRev(__DATE__);
dis.begin();
clientUart.begin();
// clientUart.setRxCallback(cent_bleuart_rx_callback);
/* Start Central Scanning
* - Enable auto scan if disconnected
* - Interval = 100 ms, window = 80 ms
* - Filter only accept bleuart service
* - Don't use active scan
* - Start(timeout) with timeout = 0 will scan forever (until connected)
*/
Bluefruit.Scanner.setRxCallback(scan_callback);
Bluefruit.Scanner.restartOnDisconnect(true);
Bluefruit.Scanner.setInterval(160, 80); // in unit of 0.625 ms
Bluefruit.Scanner.filterUuid(BLEUART_UUID_SERVICE);
Bluefruit.Scanner.useActiveScan(false);
Bluefruit.Scanner.start(0); // 0 = Don't stop scanning after n seconds
hid.begin();
// delay(5000);
// Bluefruit.printInfo();
startAdv();
}
void cent_connect_callback(uint16_t conn_handle)
{
char peer_name[32] = { 0 };
Bluefruit.Gap.getPeerName(conn_handle, peer_name, sizeof(peer_name));
Serial.print("[Cent] Connected to ");
Serial.println(peer_name);
if (clientUart.discover(conn_handle)) {
// Enable TXD's notify
clientUart.enableTXD();
} else {
Bluefruit.Central.disconnect(conn_handle);
}
resetKeyMatrix();
}
void cent_disconnect_callback(uint16_t conn_handle, uint8_t reason)
{
(void) conn_handle;
(void) reason;
Serial.println("[Cent] Disconnected");
resetKeyMatrix();
}
void scan_callback(ble_gap_evt_adv_report_t* report)
{
// Check if advertising contain BleUart service
if (Bluefruit.Scanner.checkReportForService(report, clientUart)) {
// Connect to device with bleuart service in advertising
Bluefruit.Central.connect(report);
}
}
void startAdv(void)
{
Bluefruit.Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
Bluefruit.Advertising.addTxPower();
Bluefruit.Advertising.addAppearance(BLE_APPEARANCE_HID_KEYBOARD);
Bluefruit.Advertising.addService(hid);
Bluefruit.ScanResponse.addService(battery);
Bluefruit.Advertising.addName();
Bluefruit.Advertising.restartOnDisconnect(true);
Bluefruit.Advertising.setInterval(32, 244); // in unit of 0.625 ms
Bluefruit.Advertising.setFastTimeout(30); // number of seconds in fast mode
Bluefruit.Advertising.start(0); // 0 = Don't stop advertising after n seconds
}
static constexpr uint32_t kMask = 0xf00;
static constexpr uint32_t kKeyPress = 0x100;
static constexpr uint32_t kModifier = 0x200;
static constexpr uint32_t kLayer = 0x300;
static constexpr uint32_t kTapHold = 0x400;
static constexpr uint32_t kToggleMod = 0x500;
static constexpr uint32_t kKeyAndMod = 0x600;
typedef uint32_t action_t;
#define PASTE(a, b) a ## b
#define ___ 0
#define KEY(a) kKeyPress | PASTE(HID_KEY_, a)
#define MOD(a) kModifier | PASTE(KEYBOARD_MODIFIER_, a)
#define TMOD(a) kToggleMod | PASTE(KEYBOARD_MODIFIER_, a)
#define TAPH(a, b) kTapHold | PASTE(HID_KEY_, a) | (PASTE(KEYBOARD_MODIFIER_, b) << 16)
#define KANDMOD(a, b) kKeyAndMod | PASTE(HID_KEY_, a) | (PASTE(KEYBOARD_MODIFIER_, b) << 16)
#define LAYER(n) kLayer | n
#define KEYMAP( \
l00, l01, l02, l03, l04, l05, \
l10, l11, l12, l13, l14, l15, \
l20, l21, l22, l23, l24, l25, \
l30, l31, l32, l33, l34, l35, \
l40, l41, l42, l43, l44, l45, \
l50, l51, l52, l53, l54, l55, \
r00, r01, r02, r03, r04, r05, \
r10, r11, r12, r13, r14, r15, \
r20, r21, r22, r23, r24, r25, \
r30, r31, r32, r33, r34, r35, \
r40, r41, r42, r43, r44, r45, \
r50, r51, r52, r53, r54, r55) \
{l00, l01, l02, l03, l04, l05, r00, r01, r02, r03, r04, r05, \
l10, l11, l12, l13, l14, l15, r10, r11, r12, r13, r14, r15, \
l20, l21, l22, l23, l24, l25, r20, r21, r22, r23, r24, r25, \
l30, l31, l32, l33, l34, l35, r30, r31, r32, r33, r34, r35, \
l40, l41, l42, l43, l44, l45, r40, r41, r42, r43, r44, r45, \
l50, l51, l52, l53, l54, l55, r50, r51, r52, r53, r54, r55}
struct keystate {
uint8_t scanCode;
bool down;
uint32_t lastChange;
action_t action;
};
struct keystate keyStates[16];
uint8_t layer_stack[8];
static uint8_t layer_pos = 0;
void resetKeyMatrix() {
layer_pos = 0;
layer_stack[0] = 0;
memset(&remoteMatrix, 0, sizeof(remoteMatrix));
memset(&lastRead, 0, sizeof(lastRead));
memset(keyStates, 0xff, sizeof(keyStates));
hid.keyRelease();
}
void printState(struct keystate *state) {
Serial.print("scanCode=");
Serial.print(state->scanCode, HEX);
Serial.print(" down=");
Serial.print(state->down);
Serial.print(" lastChange=");
Serial.print(state->lastChange);
Serial.print(" action=");
Serial.print(state->action, HEX);
Serial.println("");
}
struct keystate* stateSlot(uint8_t scanCode, uint32_t now) {
struct keystate *vacant = nullptr;
struct keystate *reap = nullptr;
for (auto &s : keyStates) {
if (s.scanCode == scanCode) {
return &s;
}
if (!vacant && s.scanCode == 0xff) {
vacant = &s;
continue;
}
if (!s.down) {
if (!reap) {
reap = &s;
} else if (now - s.lastChange > now - reap->lastChange) {
// Idle longer than the other reapable candidate; choose
// the eldest of them
reap = &s;
}
}
}
if (vacant) {
return vacant;
}
return reap;
}
const action_t keymap[2][72] = {
// Layer 0
KEYMAP(
// LEFT
KEY(1), KEY(2), KEY(3), ___ /* BLUE */, KANDMOD(C,LEFTGUI),MOD(LEFTALT),
KEY(Q), KEY(W), KEY(E), KEY(4), KEY(5), MOD(LEFTGUI),
KEY(A), KEY(S), KEY(D), KEY(R), KEY(T), KEY(TAB),
KEY(Z), KEY(X), KEY(C), KEY(F), KEY(G), KEY(DELETE),
KEY(BACKSLASH), KEY(MINUS), KEY(EQUAL), KEY(V), KEY(B), KEY(BACKSPACE),
LAYER(1), KEY(BRACKET_LEFT), KEY(BRACKET_RIGHT), MOD(LEFTSHIFT), ___ /* REKT */, TAPH(ESCAPE, LEFTCTRL),
// RIGHT
MOD(RIGHTALT), KANDMOD(V,LEFTGUI), ___ /* RED */, KEY(8), KEY(9), KEY(0),
MOD(RIGHTGUI), KEY(6), KEY(7), KEY(I), KEY(O), KEY(P),
KEY(PAGE_UP), KEY(Y), KEY(U), KEY(K), KEY(L), KEY(SEMICOLON),
KEY(PAGE_DOWN), KEY(H), KEY(J), KEY(COMMA), KEY(PERIOD), KEY(SLASH),
KEY(SPACE), KEY(N), KEY(M), KEY(GRAVE), KEY(ARROW_UP), KEY(APOSTROPHE),
MOD(RIGHTCTRL), KEY(RETURN), MOD(RIGHTSHIFT), KEY(ARROW_LEFT), KEY(ARROW_DOWN), KEY(ARROW_RIGHT)
),
// Layer 1
KEYMAP(
// LEFT
KEY(F1), KEY(F2), KEY(F3), ___, ___, ___,
___, ___, ___, KEY(F4), KEY(F5), ___,
___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___,
// RIGHT
___, ___, ___, KEY(F8), KEY(F9), KEY(F10),
___, KEY(F6), KEY(F7), ___, ___, ___,
___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___,
___, ___, ___, ___, ___, ___
)
};
// Remote matrix is the LHS
void updateRemoteMatrix() {
while (clientUart.available() )
{
auto ch = (uint8_t) clientUart.read();
auto down = ch & 0x80;
ch &= ~0x80;
auto rowNum = ch / 6;
auto colNum = ch - (rowNum * 6);
if (down) {
remoteMatrix.rows[rowNum] |= 1 << colNum;
} else {
remoteMatrix.rows[rowNum] &= ~(1 << colNum);
}
#if 0
Serial.print("remote=");
Serial.print(ch, HEX);
Serial.print("\r\n");
#endif
}
}
struct matrix_t readMatrix() {
matrix_t matrix = remoteMatrix;
for (int rowNum = 0; rowNum < 6; ++rowNum) {
digitalWrite(rowPins[rowNum], LOW);
for (int colNum = 0; colNum < 6; ++colNum) {
if (!digitalRead(colPins[colNum])) {
matrix.rows[rowNum] |= 1 << (colNum + 6);
}
}
digitalWrite(rowPins[rowNum], HIGH);
}
return matrix;
}
void readBattery() {
auto now = millis();
if (now - last_bat_time <= 10000) {
// There's a lot of variance in the reading, so no need
// to over-report it.
return;
}
last_bat_time = now;
constexpr int VBAT = 31; // pin 31 is available for sampling the battery
float measuredvbat = analogRead(VBAT) * 6.6 / 1024;
uint8_t bat_percentage = (uint8_t)round((measuredvbat - 3.7) * 200);
bat_percentage = min(bat_percentage, 100);
if (battery_level != bat_percentage) {
battery_level = bat_percentage;
battery.notify(battery_level);
}
}
static uint32_t resolveActionForScanCodeOnActiveLayer(uint8_t scanCode) {
int s = layer_pos;
while (s >= 0 && keymap[layer_stack[s]][scanCode] == ___) {
--s;
}
return keymap[layer_stack[s]][scanCode];
}
void loop()
{
auto down = readMatrix();
bool keysChanged = false;
updateRemoteMatrix();
readBattery();
auto now = millis();
for (int rowNum = 0; rowNum < 6; ++rowNum) {
for (int colNum = 0; colNum < 12; ++colNum) {
auto scanCode = (rowNum * 12) + colNum;
auto isDown = down.rows[rowNum] & (1 << colNum);
auto wasDown = lastRead.rows[rowNum] & (1 << colNum);
if (isDown == wasDown) {
continue;
}
keysChanged = true;
auto state = stateSlot(scanCode, now);
if (isDown && !state) {
// Silently drop this key; we're tracking too many
// other keys right now
continue;
}
printState(state);
bool isTransition = false;
if (state) {
if (state->scanCode == scanCode) {
// Update the transition time, if any
if (state->down != isDown) {
state->lastChange = now;
state->down = isDown;
if (isDown) {
state->action = resolveActionForScanCodeOnActiveLayer(scanCode);
}
isTransition = true;
}
} else {
// We claimed a new slot, so set the transition
// time to the current time.
state->down = isDown;
state->scanCode = scanCode;
state->lastChange = now;
if (isDown) {
state->action = resolveActionForScanCodeOnActiveLayer(scanCode);
}
isTransition = true;
}
if (isTransition) {
switch (state->action & kMask) {
case kLayer:
if (state->down) {
// Push the new layer stack position
layer_stack[++layer_pos] = state->action & 0xff;
} else {
// Pop off the layer stack
--layer_pos;
}
break;
}
}
}
}
}
if (keysChanged) {
uint8_t report[6] = {0,0,0,0,0,0};
uint8_t repsize = 0;
uint8_t mods = 0;
for (auto &state: keyStates) {
if (state.scanCode != 0xff && state.down) {
switch (state.action & kMask) {
case kTapHold:
if (now - state.lastChange > 200) {
// Holding
mods |= (state.action >> 16) & 0xff;
} else {
// Tapping
auto key = state.action & 0xff;
if (key != 0 && repsize < 6) {
report[repsize++] = key;
}
}
break;
case kKeyAndMod:
{
mods |= (state.action >> 16) & 0xff;
auto key = state.action & 0xff;
if (key != 0 && repsize < 6) {
report[repsize++] = key;
}
}
break;
case kKeyPress:
{
auto key = state.action & 0xff;
if (key != 0 && repsize < 6) {
report[repsize++] = key;
}
}
break;
case kModifier:
mods |= state.action & 0xff;
break;
case kToggleMod:
mods ^= state.action & 0xff;
break;
}
}
}
#if 1
Serial.print("mods=");
Serial.print(mods, HEX);
Serial.print(" repsize=");
Serial.print(repsize);
for (int i = 0; i < repsize; i++) {
Serial.print(" ");
Serial.print(report[i], HEX);
}
Serial.print("\r\n");
#endif
hid.keyboardReport(mods, report);
lastRead = down;
}
// Request CPU to enter low-power mode until an event/interrupt occurs
waitForEvent();
}
void rtos_idle_callback(void)
{
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment