You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@samza.apache.org by we...@apache.org on 2018/09/29 05:59:29 UTC
[1/2] samza git commit: SAMZA-1915: Added docs for table API
Repository: samza
Updated Branches:
refs/heads/master 11471672d -> 6c9715fbc
http://git-wip-us.apache.org/repos/asf/samza/blob/6c9715fb/docs/img/versioned/learn/documentation/api/table-class-diagram.svg
----------------------------------------------------------------------
diff --git a/docs/img/versioned/learn/documentation/api/table-class-diagram.svg b/docs/img/versioned/learn/documentation/api/table-class-diagram.svg
new file mode 100644
index 0000000..ae604c0
--- /dev/null
+++ b/docs/img/versioned/learn/documentation/api/table-class-diagram.svg
@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<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="161.74503mm"
+ height="112.12096mm"
+ viewBox="0 0 161.74503 112.12096"
+ version="1.1"
+ id="svg142"
+ inkscape:version="0.92.3 (2405546, 2018-03-11)"
+ sodipodi:docname="table2.svg">
+ <defs
+ id="defs136">
+ <clipPath
+ id="clipEmfPath1"
+ clipPathUnits="userSpaceOnUse">
+ <path
+ id="path144"
+ d="M 0,0 H 613.35144 V 426.00979 H 0 Z"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <pattern
+ y="0"
+ x="0"
+ height="6"
+ width="6"
+ patternUnits="userSpaceOnUse"
+ id="EMFhbasepattern" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="305.65988"
+ inkscape:cy="211.88212"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="1366"
+ inkscape:window-height="705"
+ inkscape:window-x="-8"
+ inkscape:window-y="-8"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata139">
+ <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>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-24.960824,-92.772856)">
+ <path
+ id="path150"
+ d="m 82.032741,92.80822 v 13.62257 H 126.91791 V 92.80822 Z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path152"
+ d="M 216.74745,52.502712 H 386.39216 V 1.0158366 H 216.74745 Z"
+ clip-path="url(#clipEmfPath1)"
+ style="fill:none;stroke:#000000;stroke-width:0.26732543px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.26458333,0,0,0.26458333,24.684978,92.539447)" />
+ <text
+ id="text158"
+ y="98.461517"
+ x="92.679207"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan156"
+ y="98.461517"
+ x="92.679207"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan154"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0"><<interface>></tspan></tspan></text>
+ <text
+ id="text164"
+ y="103.53136"
+ x="99.891167"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan162"
+ y="103.53136"
+ x="99.891167"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan160"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0">Table</tspan></tspan></text>
+ <path
+ id="path166"
+ d="m 82.032741,113.85742 v 13.62257 h 44.885169 v -13.62257 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path168"
+ d="M 82.032741,127.47999 H 126.91791 V 113.85742 H 82.032741 Z"
+ style="fill:none;stroke:#000000;stroke-width:0.07072985px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <text
+ id="text174"
+ y="119.51072"
+ x="92.679207"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan172"
+ y="119.51072"
+ x="92.679207"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan170"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0"><<interface>></tspan></tspan></text>
+ <text
+ id="text180"
+ y="124.58056"
+ x="91.91375"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan178"
+ y="124.58056"
+ x="91.91375"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan176"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0">ReadableTable</tspan></tspan></text>
+ <path
+ id="path182"
+ d="M 82.032741,134.90663 V 148.5292 H 126.91791 V 134.90663 Z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path184"
+ d="M 82.032741,148.5292 H 126.91791 V 134.90663 H 82.032741 Z"
+ style="fill:none;stroke:#000000;stroke-width:0.07072985px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <text
+ id="text190"
+ y="140.55992"
+ x="92.679207"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan188"
+ y="140.55992"
+ x="92.679207"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan186"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0"><<interface>></tspan></tspan></text>
+ <text
+ id="text196"
+ y="145.62976"
+ x="90.712067"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan194"
+ y="145.62976"
+ x="90.712067"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan192"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0">ReadWriteTable</tspan></tspan></text>
+ <path
+ id="path198"
+ d="m 104.46825,113.85742 v -4.45598"
+ style="fill:none;stroke:#000000;stroke-width:0.22633553px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path200"
+ d="m 105.45847,109.40144 -0.99022,-2.97065 -0.99022,2.97065 z"
+ style="fill:none;stroke:#000000;stroke-width:0.22633553px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path202"
+ d="m 104.46825,134.90663 v -4.45598"
+ style="fill:none;stroke:#000000;stroke-width:0.22633553px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path204"
+ d="m 105.45847,130.45065 -0.99022,-2.97066 -0.99022,2.97066 z"
+ style="fill:none;stroke:#000000;stroke-width:0.22633553px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path206"
+ d="m 81.028377,165.44778 v 13.63671 h 44.885163 v -13.63671 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path208"
+ d="M 81.028377,179.08449 H 125.91354 V 165.44778 H 81.028377 Z"
+ style="fill:none;stroke:#000000;stroke-width:0.07072985px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <text
+ id="text214"
+ y="171.10335"
+ x="91.679832"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan212"
+ y="171.10335"
+ x="91.679832"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan210"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0"><<interface>></tspan></tspan></text>
+ <text
+ id="text220"
+ y="176.17319"
+ x="89.932335"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan218"
+ y="176.17319"
+ x="89.932335"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan216"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0">TableDescriptor</tspan></tspan></text>
+ <path
+ id="path222"
+ d="m 24.996189,191.23588 v 13.62257 h 44.885163 v -13.62257 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path224"
+ d="M 1.1762318,424.51276 H 170.82094 V 373.02589 H 1.1762318 Z"
+ clip-path="url(#clipEmfPath1)"
+ style="fill:none;stroke:#000000;stroke-width:0.26732543px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.26458333,0,0,0.26458333,24.684978,92.539447)" />
+ <text
+ id="text230"
+ y="199.41685"
+ x="27.136927"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan228"
+ y="199.41685"
+ x="27.136927"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan226"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0">RemoteTableDescriptor</tspan></tspan></text>
+ <path
+ id="path232"
+ d="m 78.666,191.23588 v 13.62257 h 49.60992 v -13.62257 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path234"
+ d="M 204.02276,424.51276 H 391.52481 V 373.02589 H 204.02276 Z"
+ clip-path="url(#clipEmfPath1)"
+ style="fill:none;stroke:#000000;stroke-width:0.26732543px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.26458333,0,0,0.26458333,24.684978,92.539447)" />
+ <text
+ id="text240"
+ y="199.41685"
+ x="80.938965"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan238"
+ y="199.41685"
+ x="80.938965"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan236"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0">InMemoryTableDescriptor</tspan></tspan></text>
+ <path
+ id="path242"
+ d="m 137.06056,191.23588 v 13.62257 h 49.60992 v -13.62257 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path244"
+ d="M 424.72662,424.51276 H 612.22867 V 373.02589 H 424.72662 Z"
+ clip-path="url(#clipEmfPath1)"
+ style="fill:none;stroke:#000000;stroke-width:0.26732543px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.26458333,0,0,0.26458333,24.684978,92.539447)" />
+ <text
+ id="text250"
+ y="199.41685"
+ x="140.97668"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan248"
+ y="199.41685"
+ x="140.97668"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan246"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:4.29947901px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0">RocksDbTableDescriptor</tspan></tspan></text>
+ <path
+ id="path252"
+ d="m 47.31853,191.23588 v -1.58435 c 0,-0.0707 0.05658,-0.11317 0.113168,-0.11317 0.07073,0 0.113168,0.0424 0.113168,0.11317 v 1.58435 c 0,0.0566 -0.04244,0.11317 -0.113168,0.11317 -0.05658,0 -0.113168,-0.0566 -0.113168,-0.11317 z m 0,-2.71603 v -1.58435 c 0,-0.0707 0.05658,-0.11316 0.113168,-0.11316 0.07073,0 0.113168,0.0424 0.113168,0.11316 v 1.58435 c 0,0.0566 -0.04244,0.11317 -0.113168,0.11317 -0.05658,0 -0.113168,-0.0566 -0.113168,-0.11317 z m 0.113168,-2.82919 h 1.584349 c 0.07073,0 0.113167,0.0424 0.113167,0.11317 0,0.0566 -0.04244,0.11317 -0.113167,0.11317 h -1.584349 c -0.05658,0 -0.113168,-0.0566 -0.113168,-0.11317 0,-0.0707 0.05658,-0.11317 0.113168,-0.11317 z m 2.716026,0 h 1.584349 c 0.07073,0 0.113167,0.0424 0.113167,0.11317 0,0.0566 -0.04244,0.11317 -0.113167,0.11317 h -1.584349 c -0.05658,0 -0.113168,-0.0566 -0.113168,-0.11317 0,-0.0707 0.05658,-0.11317 0.113168,-0.11317 z m 2.716027,0 H 54.4481 c 0.07073,0 0.113168,0.0424 0.113168,0.11317 0,0.0566 -0.04244,0.
11317 -0.113168,0.11317 h -1.584349 c -0.05658,0 -0.113167,-0.0566 -0.113167,-0.11317 0,-0.0707 0.05658,-0.11317 0.113167,-0.11317 z m 2.716025,0 h 1.584349 c 0.07073,0 0.113167,0.0424 0.113167,0.11317 0,0.0566 -0.04244,0.11317 -0.113167,0.11317 h -1.584349 c -0.05658,0 -0.113168,-0.0566 -0.113168,-0.11317 0,-0.0707 0.05658,-0.11317 0.113168,-0.11317 z m 2.716027,0 h 1.584349 c 0.07073,0 0.113168,0.0424 0.113168,0.11317 0,0.0566 -0.04244,0.11317 -0.113168,0.11317 h -1.584349 c -0.05658,0 -0.113167,-0.0566 -0.113167,-0.11317 0,-0.0707 0.05658,-0.11317 0.113167,-0.11317 z m 2.716025,0 h 1.584349 c 0.07073,0 0.113167,0.0424 0.113167,0.11317 0,0.0566 -0.04244,0.11317 -0.113167,0.11317 h -1.584349 c -0.05658,0 -0.113168,-0.0566 -0.113168,-0.11317 0,-0.0707 0.05658,-0.11317 0.113168,-0.11317 z m 2.716027,0 h 1.584349 c 0.07073,0 0.113167,0.0424 0.113167,0.11317 0,0.0566 -0.04244,0.11317 -0.113167,0.11317 h -1.584349 c -0.05658,0 -0.113167,-0.0566 -0.113167,-0.11317 0,-0.0707 0.05658,-0.11
317 0.113167,-0.11317 z m 2.716027,0 h 1.584349 c 0.07073,0 0.113168,0.0424 0.113168,0.11317 0,0.0566 -0.04244,0.11317 -0.113168,0.11317 h -1.584349 c -0.05658,0 -0.113167,-0.0566 -0.113167,-0.11317 0,-0.0707 0.05658,-0.11317 0.113167,-0.11317 z m 2.716025,0 h 1.584349 c 0.07073,0 0.113167,0.0424 0.113167,0.11317 0,0.0566 -0.04244,0.11317 -0.113167,0.11317 h -1.584349 c -0.05658,0 -0.113168,-0.0566 -0.113168,-0.11317 0,-0.0707 0.05658,-0.11317 0.113168,-0.11317 z m 2.716027,0 h 1.584349 c 0.07073,0 0.113168,0.0424 0.113168,0.11317 0,0.0566 -0.04244,0.11317 -0.113168,0.11317 h -1.584349 c -0.05658,0 -0.113167,-0.0566 -0.113167,-0.11317 0,-0.0707 0.05658,-0.11317 0.113167,-0.11317 z m 2.716025,0 h 1.584349 c 0.07073,0 0.113167,0.0424 0.113167,0.11317 0,0.0566 -0.04244,0.11317 -0.113167,0.11317 h -1.584349 c -0.05658,0 -0.113168,-0.0566 -0.113168,-0.11317 0,-0.0707 0.05658,-0.11317 0.113168,-0.11317 z m 2.716027,0 h 1.584349 c 0.07073,0 0.113168,0.0424 0.113168,0.11317 0,0.0566 -0.0424
4,0.11317 -0.113168,0.11317 h -1.584349 c -0.05658,0 -0.113167,-0.0566 -0.113167,-0.11317 0,-0.0707 0.05658,-0.11317 0.113167,-0.11317 z m 2.716028,0 h 1.584348 c 0.07073,0 0.113168,0.0424 0.113168,0.11317 0,0.0566 -0.04244,0.11317 -0.113168,0.11317 h -1.584348 c -0.05658,0 -0.113168,-0.0566 -0.113168,-0.11317 0,-0.0707 0.05658,-0.11317 0.113168,-0.11317 z m 2.716024,0 h 1.584349 c 0.07073,0 0.113168,0.0424 0.113168,0.11317 0,0.0566 -0.04244,0.11317 -0.113168,0.11317 h -1.584349 c -0.05658,0 -0.113167,-0.0566 -0.113167,-0.11317 0,-0.0707 0.05658,-0.11317 0.113167,-0.11317 z m 2.716027,0 h 1.584349 c 0.07073,0 0.113168,0.0424 0.113168,0.11317 0,0.0566 -0.04244,0.11317 -0.113168,0.11317 h -1.584349 c -0.05658,0 -0.113167,-0.0566 -0.113167,-0.11317 0,-0.0707 0.05658,-0.11317 0.113167,-0.11317 z m 2.716025,0 h 1.584349 c 0.07073,0 0.113168,0.0424 0.113168,0.11317 0,0.0566 -0.04244,0.11317 -0.113168,0.11317 H 88.17209 c -0.05658,0 -0.113167,-0.0566 -0.113167,-0.11317 0,-0.0707 0.05658,-0
.11317 0.113167,-0.11317 z m 2.716027,0 h 1.584349 c 0.07073,0 0.113168,0.0424 0.113168,0.11317 0,0.0566 -0.04244,0.11317 -0.113168,0.11317 h -1.584349 c -0.05658,0 -0.113167,-0.0566 -0.113167,-0.11317 0,-0.0707 0.05658,-0.11317 0.113167,-0.11317 z m 2.716028,0 h 1.584349 c 0.07073,0 0.113167,0.0424 0.113167,0.11317 0,0.0566 -0.04244,0.11317 -0.113167,0.11317 h -1.584349 c -0.05658,0 -0.113168,-0.0566 -0.113168,-0.11317 0,-0.0707 0.05658,-0.11317 0.113168,-0.11317 z m 2.716024,0 h 1.584349 c 0.07073,0 0.113168,0.0424 0.113168,0.11317 0,0.0566 -0.04244,0.11317 -0.113168,0.11317 h -1.584349 c -0.05658,0 -0.113167,-0.0566 -0.113167,-0.11317 0,-0.0707 0.05658,-0.11317 0.113167,-0.11317 z m 2.716028,0 h 1.584343 c 0.0707,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0424,0.11317 -0.11317,0.11317 h -1.584343 c -0.05658,0 -0.113168,-0.0566 -0.113168,-0.11317 0,-0.0707 0.05658,-0.11317 0.113168,-0.11317 z m 2.716023,0 h 1.58435 c 0.0707,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0424,0.113
17 -0.11317,0.11317 h -1.58435 c -0.0566,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0566,-0.11317 0.11317,-0.11317 z m 1.61264,-0.8912 v -1.58434 c 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 0.0566,0 0.11317,0.0424 0.11317,0.11317 v 1.58434 c 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 z m 0,-2.71602 v -0.0424 c 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 0.0566,0 0.11317,0.0424 0.11317,0.11317 v 0.0424 c 0,0.0566 -0.0566,0.11316 -0.11317,0.11316 -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11316 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01414597px;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path254"
+ d="m 104.4541,182.041 -0.97607,-2.95651 -0.99022,2.95651 z"
+ style="fill:none;stroke:#000000;stroke-width:0.22633553px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path256"
+ d="m 103.36486,191.23588 v -1.58435 c 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 0.0566,0 0.11317,0.0424 0.11317,0.11317 v 1.58435 c 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 z m 0,-2.71603 v -1.58435 c 0,-0.0707 0.0424,-0.11316 0.11317,-0.11316 0.0566,0 0.11317,0.0424 0.11317,0.11316 v 1.58435 c 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 z m 0,-2.71602 v -1.58435 c 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 0.0566,0 0.11317,0.0424 0.11317,0.11317 v 1.58435 c 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 z m 0,-2.71603 v -1.0468 c 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 0.0566,0 0.11317,0.0424 0.11317,0.11317 v 1.0468 c 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01414597px;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path258"
+ d="m 104.4541,182.041 -0.97607,-2.95651 -0.99022,2.95651 z"
+ style="fill:none;stroke:#000000;stroke-width:0.22633553px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path260"
+ d="m 161.75943,191.23588 v -1.58435 c 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 0.0566,0 0.11316,0.0424 0.11316,0.11317 v 1.58435 c 0,0.0566 -0.0566,0.11317 -0.11316,0.11317 -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 z m 0,-2.71603 v -1.58435 c 0,-0.0707 0.0424,-0.11316 0.11317,-0.11316 0.0566,0 0.11316,0.0424 0.11316,0.11316 v 1.58435 c 0,0.0566 -0.0566,0.11317 -0.11316,0.11317 -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 z m 0.11317,-2.60285 h -1.58435 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58435 c 0.0566,0 0.11316,0.0424 0.11316,0.11317 0,0.0566 -0.0566,0.11317 -0.11316,0.11317 z m -2.71603,0 h -1.58435 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58435 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -2.71602,0 h -1.58435 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58435 c 0.0566
,0 0.11316,0.0424 0.11316,0.11317 0,0.0566 -0.0566,0.11317 -0.11316,0.11317 z m -2.71603,0 h -1.58435 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58435 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -2.71603,0 h -1.58435 c -0.0707,0 -0.11316,-0.0566 -0.11316,-0.11317 0,-0.0707 0.0424,-0.11317 0.11316,-0.11317 h 1.58435 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -2.71602,0 h -1.58435 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58435 c 0.0566,0 0.11316,0.0424 0.11316,0.11317 0,0.0566 -0.0566,0.11317 -0.11316,0.11317 z m -2.71603,0 h -1.58435 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58435 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -2.71603,0 h -1.58434 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.070
7 0.0424,-0.11317 0.11317,-0.11317 h 1.58434 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -2.71602,0 h -1.58435 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58435 c 0.0566,0 0.11316,0.0424 0.11316,0.11317 0,0.0566 -0.0566,0.11317 -0.11316,0.11317 z m -2.71603,0 h -1.58435 c -0.0707,0 -0.11316,-0.0566 -0.11316,-0.11317 0,-0.0707 0.0424,-0.11317 0.11316,-0.11317 h 1.58435 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -2.71603,0 h -1.58434 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58434 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -2.71602,0 h -1.58435 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58435 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -2.71603,0 h -1.58435 c
-0.0707,0 -0.11316,-0.0566 -0.11316,-0.11317 0,-0.0707 0.0424,-0.11317 0.11316,-0.11317 h 1.58435 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -2.71602,0 h -1.58435 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58435 c 0.0566,0 0.11316,0.0424 0.11316,0.11317 0,0.0566 -0.0566,0.11317 -0.11316,0.11317 z m -2.71603,0 h -1.58435 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58435 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -2.71603,0 h -1.58435 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58435 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -2.71603,0 h -1.58434 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58434 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,
0.11317 -0.11317,0.11317 z m -2.71602,0 h -1.58435 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58435 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -2.71603,0 h -1.58435 c -0.0707,0 -0.11316,-0.0566 -0.11316,-0.11317 0,-0.0707 0.0424,-0.11317 0.11316,-0.11317 h 1.58435 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -2.71602,0 h -1.58435 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58435 c 0.0566,0 0.11316,0.0424 0.11316,0.11317 0,0.0566 -0.0566,0.11317 -0.11316,0.11317 z m -2.71603,0 h -1.58435 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 h 1.58435 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -2.71603,0 h -1.35801 c -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 v -0.22634 c 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 0.0
566,0 0.11317,0.0424 0.11317,0.11317 v 0.22634 l -0.11317,-0.11317 h 1.35801 c 0.0566,0 0.11317,0.0424 0.11317,0.11317 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 z m -1.47118,-1.47119 v -1.58434 c 0,-0.0707 0.0424,-0.11317 0.11317,-0.11317 0.0566,0 0.11317,0.0424 0.11317,0.11317 v 1.58434 c 0,0.0566 -0.0566,0.11317 -0.11317,0.11317 -0.0707,0 -0.11317,-0.0566 -0.11317,-0.11317 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01414597px;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path262"
+ d="m 104.4541,182.041 -0.97607,-2.95651 -0.99022,2.95651 z"
+ style="fill:none;stroke:#000000;stroke-width:0.22633553px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
http://git-wip-us.apache.org/repos/asf/samza/blob/6c9715fb/docs/img/versioned/learn/documentation/api/table-descriptor-class-diagram.svg
----------------------------------------------------------------------
diff --git a/docs/img/versioned/learn/documentation/api/table-descriptor-class-diagram.svg b/docs/img/versioned/learn/documentation/api/table-descriptor-class-diagram.svg
new file mode 100644
index 0000000..df3d213
--- /dev/null
+++ b/docs/img/versioned/learn/documentation/api/table-descriptor-class-diagram.svg
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<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="85.625557mm"
+ height="60.502312mm"
+ viewBox="0 0 85.625557 60.502312"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.3 (2405546, 2018-03-11)"
+ sodipodi:docname="table1.svg">
+ <defs
+ id="defs2">
+ <clipPath
+ id="clipEmfPath1"
+ clipPathUnits="userSpaceOnUse">
+ <path
+ id="path10"
+ d="M 0,0 H 325.92315 V 230.96916 H 0 Z"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <pattern
+ y="0"
+ x="0"
+ height="6"
+ width="6"
+ patternUnits="userSpaceOnUse"
+ id="EMFhbasepattern" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="216.09779"
+ inkscape:cy="-19.950636"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="1366"
+ inkscape:window-height="705"
+ inkscape:window-x="-8"
+ inkscape:window-y="-8"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata5">
+ <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>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-48.657461,-83.052416)">
+ <path
+ id="path16"
+ d="M 48.692826,83.08778 V 94.630892 H 86.717193 V 83.08778 Z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path18"
+ d="M 1.0158366,44.643345 H 144.72998 V 1.0158366 H 1.0158366 Z"
+ clip-path="url(#clipEmfPath1)"
+ style="fill:none;stroke:#000000;stroke-width:0.26732543px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.26458333,0,0,0.26458333,48.424052,82.819007)" />
+ <text
+ id="text24"
+ y="88.060989"
+ x="59.312599"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:2.94348955px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan22"
+ y="88.060989"
+ x="59.312599"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan20"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:2.94348955px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0"><<interface>></tspan></tspan></text>
+ <text
+ id="text30"
+ y="91.682304"
+ x="58.064411"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:2.94348955px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan28"
+ y="91.682304"
+ x="58.064411"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan26"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:2.94348955px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0">TableDescriptor</tspan></tspan></text>
+ <path
+ id="path32"
+ d="m 48.692826,102.09996 v 11.54312 h 38.024367 v -11.54312 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path34"
+ d="M 1.0158366,116.50042 H 144.72998 V 72.872909 H 1.0158366 Z"
+ clip-path="url(#clipEmfPath1)"
+ style="fill:none;stroke:#000000;stroke-width:0.26732543px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.26458333,0,0,0.26458333,48.424052,82.819007)" />
+ <text
+ id="text40"
+ y="108.88383"
+ x="53.237019"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:2.94348955px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan38"
+ y="108.88383"
+ x="53.237019"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan36"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:2.94348955px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0">RemoteTableDescriptor</tspan></tspan></text>
+ <path
+ id="path42"
+ d="m 67.591841,102.09996 v -1.58435 c 0,-0.0566 0.05658,-0.11316 0.113168,-0.11316 0.05658,0 0.113168,0.0566 0.113168,0.11316 v 1.58435 c 0,0.0566 -0.05658,0.11317 -0.113168,0.11317 -0.05658,0 -0.113168,-0.0566 -0.113168,-0.11317 z m 0,-2.716022 v -1.584349 c 0,-0.05658 0.05658,-0.113167 0.113168,-0.113167 0.05658,0 0.113168,0.05658 0.113168,0.113167 v 1.584349 c 0,0.05658 -0.05658,0.113168 -0.113168,0.113168 -0.05658,0 -0.113168,-0.05658 -0.113168,-0.113168 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.01414597px;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path44"
+ d="M 68.695227,97.5874 67.705009,94.630892 66.714791,97.5874 Z"
+ style="fill:none;stroke:#000000;stroke-width:0.22633553px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path46"
+ d="m 98.93931,115.6801 v 11.54311 h 35.30834 V 115.6801 Z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path48"
+ d="M 190.92381,167.8269 H 324.37266 V 124.19939 H 190.92381 Z"
+ clip-path="url(#clipEmfPath1)"
+ style="fill:none;stroke:#000000;stroke-width:0.26732543px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.26458333,0,0,0.26458333,48.424052,82.819007)" />
+ <text
+ id="text54"
+ y="120.65331"
+ x="108.20107"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:2.94348955px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan52"
+ y="120.65331"
+ x="108.20107"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan50"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:2.94348955px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0"><<interface>></tspan></tspan></text>
+ <text
+ id="text60"
+ y="124.27463"
+ x="104.90981"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:2.94348955px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan58"
+ y="124.27463"
+ x="104.90981"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan56"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:2.94348955px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0">TableReadFunction</tspan></tspan></text>
+ <path
+ id="path62"
+ d="m 98.93931,131.97625 v 11.54311 h 35.30834 v -11.54311 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path64"
+ d="m 190.92381,229.41867 h 133.44885 v -43.6275 H 190.92381 Z"
+ clip-path="url(#clipEmfPath1)"
+ style="fill:none;stroke:#000000;stroke-width:0.26732543px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.26458333,0,0,0.26458333,48.424052,82.819007)" />
+ <text
+ id="text70"
+ y="136.94946"
+ x="108.20107"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:2.94348955px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan68"
+ y="136.94946"
+ x="108.20107"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan66"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:2.94348955px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0"><<interface>></tspan></tspan></text>
+ <text
+ id="text76"
+ y="140.57079"
+ x="104.52448"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:2.94348955px;line-height:125%;font-family:Calibri;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan74"
+ y="140.57079"
+ x="104.52448"
+ sodipodi:role="line"
+ style="stroke-width:0.26458332"><tspan
+ id="tspan72"
+ style="font-style:normal;font-variant:normal;font-weight:400;font-size:2.94348955px;font-family:Calibri;fill:#000000;stroke-width:0.26458332"
+ dy="0"
+ dx="0">TableWriteFunction</tspan></tspan></text>
+ <path
+ id="path78"
+ d="m 86.943528,107.87152 h 5.205716 v 13.58013 h 6.790066"
+ style="fill:none;stroke:#000000;stroke-width:0.22633553px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path80"
+ d="m 88.527877,106.85301 -2.03702,1.01851 2.03702,1.01851 2.037019,-1.01851 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path82"
+ d="m 88.527877,106.85301 -2.03702,1.01851 2.03702,1.01851 2.037019,-1.01851 z"
+ style="fill:none;stroke:#000000;stroke-width:0.22633553px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path84"
+ d="m 86.943528,107.87152 h 5.205716 v 29.87629 h 6.790066"
+ style="fill:none;stroke:#000000;stroke-width:0.22633553px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path86"
+ d="m 88.527877,106.85301 -2.03702,1.01851 2.03702,1.01851 2.037019,-1.01851 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path88"
+ d="m 88.527877,106.85301 -2.03702,1.01851 2.03702,1.01851 2.037019,-1.01851 z"
+ style="fill:none;stroke:#000000;stroke-width:0.22633553px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
http://git-wip-us.apache.org/repos/asf/samza/blob/6c9715fb/docs/learn/documentation/versioned/api/table-api.md
----------------------------------------------------------------------
diff --git a/docs/learn/documentation/versioned/api/table-api.md b/docs/learn/documentation/versioned/api/table-api.md
new file mode 100644
index 0000000..d95dfac
--- /dev/null
+++ b/docs/learn/documentation/versioned/api/table-api.md
@@ -0,0 +1,558 @@
+---
+layout: page
+title: Samza Table API
+---
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+
+# Introduction
+
+Samza Table API is an abstraction for data sources that support random
+access by key, which simplifies stream-table-join. It is the natural
+evolution of the existing [storage API] (https://github.com/apache/samza/blob/master/samza-kv/src/main/scala/org/apache/samza/storage/kv/KeyValueStorageEngine.scala),
+and it offers support for both local and remote data sources and
+composition through hybrid tables.
+
+For various reasons, a real-time stream often only contain minimal or a
+small amount of information, and may need to be augmented with richer
+information fetched from adjunct data sources through joining. This is
+quite common in advertising, relevance ranking, fraud detection, and
+other domains. However, there exists a wide variety of data stores with
+different characteristics and levels of sophistication. Samza Table API
+simplifies the application developer experience by hiding the details of
+individual technologies, while making it easier to migrate from one
+technology to another.
+
+For remote data sources, the Samza remote table provides optimized access
+such as caching, rate-limiting, retry and batching (future) support.
+
+In addition, more advanced functionalities can be provided through table
+composition. For example, bootstrapping a stream is often used to build
+an authoritative local cache, and today stream processing has to wait
+until bootstrap is completed. A hybrid table can provide access to remote
+data source while the local cache is being built, so that stream processing
+could begin earlier.
+
+Application developers can now take advantage of the aforementioned benefits,
+which are all encapsulated under the Samza Table API.
+
+# Sample Applications
+
+Sample applications demonstrating how to use Samza Table API can be found
+[here] (https://github.com/apache/samza-hello-samza/tree/latest/src/main/java/samza/examples/cookbook).
+
+# Architecture and Concepts
+
+The diagram below illustrates the overall architecture of Samza Table API.
+
+![diagram-medium](/img/{{site.version}}/learn/documentation/api/table-api-arch.svg)
+
+Let’s look at a few concepts before diving into the API.
+
+![diagram-medium](/img/{{site.version}}/learn/documentation/api/table-class-diagram.svg)
+
+[`Table`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/table/Table.java) -
+This interface represents a dataset that can be accessed by key. We support
+two types of tables: read-only and read-write. A table can be accessed either
+synchronously or asynchronously and a request may contain one or more keys.
+There are three broad categories of tables: local, remote and hybrid.
+
+[`ReadableTable`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/table/ReadableTable.java) -
+Interface that represents a read-only table. It implements Table.
+
+[`ReadWriteTable`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/table/ReadWriteTable.java) -
+Interface that represents a read-write table. It implements Table.
+
+[`TableDescriptor`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/operators/TableDescriptor.java) -
+User-facing object that contains metadata that completely describes a table.
+It may include identifier, serialization, provider, configuration, etc.
+Example implementations of this interface are
+
+* [`RemoteTableDescriptor`] (https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/remote/RemoteTableDescriptor.java)
+ facilitates access to remotely stored data,
+* [`InMemoryTableDescriptor`] (https://github.com/apache/samza/blob/master/samza-kv-inmemory/src/main/java/org/apache/samza/storage/kv/inmemory/InMemoryTableDescriptor.java)
+ describes a table stored in-memory, and
+* [`RocksDbTableDescriptor`] (https://github.com/apache/samza/blob/master/samza-kv-rocksdb/src/main/java/org/apache/samza/storage/kv/RocksDbTableDescriptor.java)
+ describes a table stored in RocksDB.
+
+# Table Sync and Async API
+
+Samza Table supports both synchronous and asynchronous API. Below is an example for
+the **`get`** operation.
+
+{% highlight java %}
+ /**
+ * Gets the value associated with the specified {@code key}.
+ *
+ * @param key the key with which the associated value is to be fetched.
+ * @return if found, the value associated with the specified {@code key};
+ * otherwise, {@code null}.
+ * @throws NullPointerException if the specified {@code key} is {@code null}.
+ */
+ V get(K key);
+
+ /**
+ * Asynchronously gets the value associated with the specified {@code key}.
+ *
+ * @param key the key with which the associated value is to be fetched.
+ * @return completableFuture for the requested value
+ * @throws NullPointerException if the specified {@code key} is {@code null}.
+ */
+ CompletableFuture<V> getAsync(K key);
+{% endhighlight %}
+
+
+# Using Table with Samza High Level API
+
+The code snippet below illustrates the usage of table in Samza high level API.
+
+{% highlight java %}
+ 1 class SamzaStreamApplication implements StreamApplication {
+ 2 @Override
+ 3 public void describe(StreamApplicationDescriptor appDesc) {
+ 4 TableDescriptor<Integer, Profile> desc = new InMemoryTableDescriptor(
+ 5 "t1", KVSerde.of(new IntegerSerde(), new ProfileJsonSerde()));
+ 6
+ 7 Table<KV<Integer, Profile>> table = appDesc.getTable(desc);
+ 8
+ 9 appDesc.getInputStream("PageView", new NoOpSerde<PageView>())
+10 .map(new MyMapFunc())
+11 .join(table, new MyJoinFunc())
+12 .sendTo(anotherTable);
+13 }
+14 }
+15
+16 static class MyMapFunc implements MapFunction<PageView, KV<Integer, PageView>> {
+17 private ReadableTable<Integer, Profile> profileTable;
+18
+19 @Override
+20 public void init(Config config, TaskContext context) {
+21 profileTable = (ReadableTable<Integer, Profile>) context.getTable("t1");
+22 }
+23
+24 @Override
+25 public KV<Integer, PageView> apply(PageView message) {
+26 return new KV.of(message.getId(), message);
+27 }
+28 }
+29
+30 static class MyJoinFunc implements StreamTableJoinFunction
+31 <Integer, KV<Integer, PageView>, KV<Integer, Profile>, EnrichedPageView> {
+32
+33 @Override
+34 public EnrichedPageView apply(KV<Integer, PageView> m, KV<Integer, Profile> r) {
+35 counterPerJoinFn.get(this.currentSeqNo).incrementAndGet();
+36 return r == null ? null : new EnrichedPageView(
+37 m.getValue().getPageKey(), m.getKey(), r.getValue().getCompany());
+38 }
+39 }
+{% endhighlight %}
+
+In the code snippet above, we read from an input stream, perform transformation,
+join with a table and finally write the output to another table.
+
+1. Line 4-5: A `TableDescriptor` for an in-memory table is created, and then
+ the serde is set.
+2. Line 7: A table object is created from the `TableDescriptor`; internally,
+ the `TableDescriptor` is converted to a `TableSpec`, and registered with the
+ `TaskApplicationDescriptor`. The table object has a reference to the `TableSpec`.
+3. Line 9: creates an `InputStream`
+4. Line 10: applies a map operator defined in line 16-28, all table instances
+ can be accessed from the task context in `Task.init()`. In this example,
+ it is stored in a local variable.
+5. Line 11: joins the mapped stream with the table using the supplied join
+ function defined in lines 30-39.
+6. Line 12: writes the join result stream to another table
+
+# Using Table with Samza Low Level API
+
+The code snippet below illustrates the usage of table in Samza low level API.
+
+{% highlight java %}
+ 1 class SamzaTaskApplication implements TaskApplication {
+ 2
+ 3 @Override
+ 4 public void describe(TaskApplicationDescriptor appDesc) {
+ 5 DelegatingSystemDescriptor ksd = new DelegatingSystemDescriptor("mySystem");
+ 6
+ 7 TableDescriptor<Integer, Profile> tableDesc = new InMemoryTableDescriptor(
+ 8 "T1", KVSerde.of(new IntegerSerde(), new ProfileJsonSerde()));
+ 9 GenericInputDescriptor<Profile> profileISD = ksd.getInputDescriptor("Profile", new NoOpSerde<>());
+10
+11 appDesc.addTable(tableDesc);
+12 appDesc.addInputStream(profileISD);
+13 }
+14
+15
+16 public class MyStreamTask implements StreamTask, InitableTask {
+17 private ReadWriteTable<Integer, Profile> profileTable;
+18
+19 @Override
+20 public void init(Config config, TaskContext context) {
+21 profileTable = (ReadWriteTable<Integer, Profile>) context.getTable("t1");
+22 }
+23
+24 @Override
+25 public void process(IncomingMessageEnvelope envelope, MessageCollector collector, TaskCoordinator coordinator) {
+26 String key = (String)message.getKey();
+27 Profile profile = (Profile)message.getMessage();
+28 profileTable.put(key, profile);
+29 }
+30 }
+{% endhighlight %}
+
+In the code snippet above, we read from an input stream, perform transformation,
+join with a table and finally write the output to another table.
+
+1. Line 7-8: A `TableDescriptor` for an in-memory table is created with tableId “t1”,
+ and then the serde is set.
+2. Line 9: creates an `InputStreamDescriptor`.
+3. Line 11-12: adds `TableDescriptor` and `InputStreamDescriptor` to the `TaskApplicationDescriptor`.
+4. Line 16: `InitiableStreamTask` is implemented.
+5. Line 21: A reference to table “t1” is obtained in the `Task.init()` method.
+6. Line 26-28: gets the profile key and record from the incoming stream and writes to the table.
+
+[`ReadableTable`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/table/ReadableTable.java)
+or [`ReadWriteTable`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/table/ReadWriteTable.java)
+can be used in the
+[`StreamTask.process()`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/task/StreamTask.java#L49)
+method on the table reference obtained
+in the
+[`InitableTask.init()`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/task/InitableTask.java#L35)
+method.
+
+
+# Table Metrics
+
+The table below summarizes table metrics:
+
+
+| Metrics | Class | Description |
+|---------|-------|-------------|
+|`get-ns`|`ReadableTable`|Average latency of `get/getAsync()` operations|
+|`getAll-ns`|`ReadableTable`|Average latency of `getAll/getAllAsync()` operations|
+|`num-gets`|`ReadableTable`|Count of `get/getAsync()` operations
+|`num-getAlls`|`ReadableTable`|Count of `getAll/getAllAsync()` operations
+|`put-ns`|`ReadWriteTable`|Average latency of `put/putAsync()` operations
+|`putAll-ns`|`ReadWriteTable`|Average latency of `putAll/putAllAsync()` operations
+|`num-puts`|`ReadWriteTable`|Count of `put/putAsync()` operations
+|`num-putAlls`|`ReadWriteTable`|Count of `putAll/putAllAsync()` operations
+|`delete-ns`|`ReadWriteTable`|Average latency of `delete/deleteAsync()` operations
+|`deleteAll-ns`|`ReadWriteTable`|Average latency of `deleteAll/deleteAllAsync()` operations
+|`delete-num`|`ReadWriteTable`|Count of `delete/deleteAsync()` operations
+|`deleteAll-num`|`ReadWriteTable`|Count of `deleteAll/deleteAllAsync()` operations
+|`flush-ns`|`ReadWriteTable`|Average latency of flush operations
+|`flush-num`|`ReadWriteTable`|Count of flush operations
+|`hit-rate`|`CachingTable`|Cache hit rate (%)
+|`miss-rate`|`CachingTable`|Cache miss rate (%)
+|`req-count`|`CachingTable`|Count of requests
+|`retry-count`|`TableRetryPolicy`|Count of retries executed (excluding the first attempt)
+|`success-count`|`TableRetryPolicy`|Count of successes at first attempt
+|`perm-failure-count`|`TableRetryPolicy`|Count of operations that failed permanently and exhausted all retries
+|`retry-timer`|`TableRetryPolicy`|Total time spent in each IO; this is updated only when at least one retry has been attempted.
+
+
+# Table Types
+
+## Remote Table
+
+[`RemoteTable`](https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/remote/RemoteTableDescriptor.java)
+provides a unified abstraction for Samza applications to access any remote data
+store through stream-table join in high-level API or direct access in low-level
+API. Remote Table is a store-agnostic abstraction that can be customized to
+access new types of stores by writing pluggable I/O "Read/Write" functions,
+implementations of
+[`TableReadFunction`](https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/remote/TableReadFunction.java) and
+[`TableWriteFunction`](https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/remote/TableWriteFunction.java)
+interfaces. Remote Table also provides common functionality, eg. rate limiting
+(built-in) and caching (hybrid).
+
+The async APIs in Remote Table are recommended over the sync versions for higher
+throughput. They can be used with Samza with low-level API to achieve the maximum
+throughput.
+
+Remote Tables are represented by class
+[`RemoteReadableTable`](https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/remote/RemoteReadableTable.java) and
+[`RemoteReadWriteTable`](https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/remote/RemoteReadWriteTable.java).
+All configuration options of a Remote Table can be found in the
+[`RemoteTableDescriptor`](https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/remote/RemoteTableDescriptor.java) class.
+
+### Rate Limiting
+
+Remote Table has built-in client-side rate limiting support in both of its sync
+and async executions. This is useful when a remote data store does not have
+server-side rate limiting or is not sophisticated enough to handle heavy
+inbound requests.
+
+#### Configuration
+
+Rate limiting can be enabled with [`RemoteTableDescriptor`](https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/remote/RemoteTableDescriptor.java) in two ways:
+
+1. Default: `withReadRateLimit()` and `withWriteRateLimit()`. The
+ [default implementation](https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/util/EmbeddedTaggedRateLimiter.java)
+ uses [Guava](https://google.github.io/guava/releases/snapshot-jre/api/docs/com/google/common/util/concurrent/RateLimiter.html)
+ for rate limiting and provides basic throttling on read/write rates.
+2. User-defined instance: `withRateLimiter()`. Tailored for more advanced
+ usages, eg. custom policies and/or rate limiter libraries
+
+#### Quota
+
+For the default rate limiter, a per-container quota needs to be specified, and
+is divided evenly among all task instances. Application developers are expected
+to calculate such quota from a global quota against the number of containers.
+
+### Retry
+
+I/O failures are not uncommon given the inherently unreliable network and complex
+behaviors of distributed data stores. To be fault-tolerant, Remote Table provides
+built-in support for retrying failed I/O operations originated from the data store
+clients.
+
+Retry capability can be added to a [`RemoteTableDescriptor`](https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/remote/RemoteTableDescriptor.java) by providing a
+[`TableRetryPolicy`] (https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/retry/TableRetryPolicy.java),
+ which consists of three aspects:
+
+* Backoff/Sleep policy - fixed, random, exponential with jitters
+* Termination policy - by total attempts and/or delay
+* Retriable exception classification - predicate on `Throwable`
+
+By default, retry is disabled as such failed I/O operations will propagate up and
+the caller is expected to handle the exception. When enabled, retry is on a
+per-request basis such that each individual request is retried independently.
+
+Lastly, Remote Table retry provides a set of standard metrics for monitoring.
+They can be found in
+[`RetryMetrics`] (https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/retry/RetryMetrics.java).
+
+## Local Table
+
+A table is considered local when its data physically co-exists on the same host
+machine as its running job, e.g. in memory or on disk. Local tables are particularly
+useful when data needs to be accessed frequently with low latency, such as a cache.
+Samza Table API supports in-memory and RocksDB-based local tables, which are based
+on the current implementation of in-memory and RocksDB stores. Both tables provide
+feature parity to existing in-memory and RocksDB-based stores. For more detailed
+information please refer to
+[`RocksDbTableDescriptor`] (https://github.com/apache/samza/blob/master/samza-kv-rocksdb/src/main/java/org/apache/samza/storage/kv/RocksDbTableDescriptor.java) and
+[`InMemoryTableDescriptor`] (https://github.com/apache/samza/blob/master/samza-kv-inmemory/src/main/java/org/apache/samza/storage/kv/inmemory/InMemoryTableDescriptor.java).
+
+## Hybrid Table
+
+Hybrid Table consists of one or more tables, and it orchestrates operations between
+them to achieve more advanced functionality. Caching support for remote table is
+currently built on top of hybrid Table because cache can be naturally abstracted
+as a table, eg. local table is also a durable cache.
+
+### Caching
+
+Despite the convenience of remote table, it still incurs the same latency as accessing
+the remote store directly. Whenever eventual consistency is acceptable, Samza
+applications can leverage the caching support in Table API to reduce such latency
+in addition to using the async methods.
+
+[`CachingTable`] (https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/caching/CachingTable.java)
+is the generic table type for combining a cache table (Guava, RocksDb, Couchbase)
+with a remote table. Both the cache and data tables are pluggable, and `CachingTable`
+handles the interactions between them for caching semantics.
+
+#### Write Policies
+
+Caching Table supports below write policies and you can configure them with
+[`CachingTableDescriptor`] (https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/caching/CachingTableDescriptor.java).
+
+* Write-through: records are written to both the data store and cache
+* Write-around: records are written only to data store bypassing the cache
+ * Useful when read-path has no locality with read-path
+
+#### Synchronization
+
+No synchronization is done between data store and cache in `CachingTable` because
+it is very cumbersome in the async code paths. Given eventual consistency is a
+presumed trade-off for enabling caching, it should be acceptable for the table
+and cache to not always be in-sync. Last but not least, unsynchronized operations
+in `CachingTable` deliver much higher throughput.
+
+#### Configuration
+
+Similar to
+[`RateLimiter`](https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/util/RateLimiter.java)
+configuration in remote table, caching can be configured in two ways:
+
+1. Default: `withCacheSize()`, `withReadTtl()`, `withWriteTtl()`
+2. Custom `CacheTable` instance: `withCache()`
+
+The default
+[`CacheTable`] (https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/caching/guava/GuavaCacheTable.java)
+is an in-memory cache implemented on top of
+[Guava Cache] (https://github.com/google/guava/wiki/CachesExplained).
+
+# Implementing Your Own Tables
+
+## More Concepts
+
+[`TableSpec`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/table/TableSpec.java)
+- Internal representation of a table, containing all information about a table.
+
+[`TableProvider`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/table/TableProvider.java)
+- Provides the underlying table implementation that conforms to Table API.
+
+[`TableManager`] (https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/TableManager.java)
+- Responsible for lifecycle of all table instances within a task; it is
+created during instantiation of Samza container.
+
+## Lifecycle of a Table
+
+The life of a table goes through a few phases
+
+1. **Declaration** - at first one declares the table by creating a `TableDescriptor`. In both
+ Samza high level and low level API, the `TableDescriptor` is registered with stream
+ graph, internally converted to `TableSpec` and in return a reference to a `Table`
+ object is obtained that can participate in the building of the DAG.
+2. **Instantiation** - during planning stage, configuration is
+ [generated] (https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/execution/JobNode.java)
+ from `TableSpec`,
+ and the actual tables are instantiated during initialization of
+ [Samza container] (https://github.com/apache/samza/blob/master/samza-core/src/main/scala/org/apache/samza/container/SamzaContainer.scala).
+3. **Usage** - there are a few ways to access a table instance
+ * In Samza high level API, a reference to Table can be obtained from a `TableDescriptor`,
+ which can be used to participate in the DAG operations such as
+ [`join()`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/operators/MessageStream.java) and
+ [`sendTo()`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/operators/MessageStream.java)
+ * In Samza high level API, all table instances can be retrieved from `TaskContext` using
+ table-id during initialization of a
+ [`InitableFunction`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/operators/functions/InitableFunction.java).
+ * In Samza low level API, all table instances can be retrieved from `TaskContext` using
+ table-id during initialization of a
+ [`InitableTask`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/task/InitableTask.java).
+4. **Cleanup** -
+ [`close()`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/table/ReadableTable.java)
+ is invoked on all tables when a job is stopped.
+
+## Developing a Local Table
+
+Developing a local table involves implementing a new table descriptor, provider and provider factory.
+
+1. [`TableDescriptor`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/operators/TableDescriptor.java) - this is the user facing object that contains primarily configuration parameters.
+ In addition, a few internal methods need to be implemented
+ * `generateTableSpecConfig()` should convert parameters in the table descriptor
+ to a `Map<String, String>`, so that information about a table can be transferred
+ to a `TableSpec`.
+ * `getTableSpec()` creates a `TableSpec` object, which is the internal representation
+ of a table.
+2. [`TableProvider`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/table/TableProvider.java) - provides the implementation for a table. It ensures a table is
+ properly constructed and also manages its lifecycle. Methods to implement are
+ * `generateConfig()` generates all Samza configuration relevant to the table.
+ Note in the case of RocksDB, store configuration is also generated here.
+
+Note:
+
+* Since the current local table implementation relies on Samza store implementation,
+ adding a local table requires providing the store implementation first.
+
+## Developing a Remote Table
+
+The generic design of remote table abstracts away mach common functionality.
+Therefore, adding a new remote table type is much more straightforward than
+writing a Samza table from scratch. You only need to implement the
+[`TableReadFunction`](https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/remote/TableReadFunction.java) and
+[`TableWriteFunction`](https://github.com/apache/samza/blob/master/samza-core/src/main/java/org/apache/samza/table/remote/TableWriteFunction.java)
+(if supported) interfaces, and the new table type is readily usable with the
+Remote Table framework.
+
+![diagram-medium](/img/{{site.version}}/learn/documentation/api/table-descriptor-class-diagram.svg)
+
+Since the interfaces have sufficient javadocs and are self-explanatory, we present a
+high-level guideline to call out some less obvious aspects and help ensure consistency
+among future I/O (Read/Write) function implementations in the following sections.
+
+### Serializability
+
+Samza Remote Table I/O function interfaces extend `java.io.Serializable`, which imposes
+a serializability expectation on their implementations, i.e.
+
+1. All fields within I/O function classes must be serializable.
+2. Non-serializable fields must be marked transient. Otherwise, serialization
+ of I/O function will fail. Typical examples of such fields are store client
+ objects.
+3. Consequently, non-serializable fields must be initialized within the
+ implementation of the init() method of the InitableFunction interface extended
+ by both TableReadFunction and TableWriteFunction interfaces. Otherwise,
+ non-serializable fields will be null after I/O function is deserialized.
+
+{% highlight java %}
+class ReadFunction implements TableReadFunction {
+ @Override
+ public void init(Config config, TaskContext context) {
+ /* Initialize all transient fields here. */
+ }
+}
+
+class WriteFunction implements TableWriteFunction {
+ @Override
+ public void init(Config config, TaskContext context) {
+ /* Initialize all transient fields here. */
+ }
+}
+{% endhighlight %}
+
+### Logging
+
+Our recommendation is to:
+
+1. Avoid doing any informational logging in I/O functions that are typically
+ invoked extensively in Samza applications, e.g.
+ * `TableReadFunction.get[All]()`
+ * `TableWriteFunction.put[All]()`
+ * `TableWriteFunction.delete[All]()`
+2. Log all initialization-related successes/failures occurring in overrides of
+`InitableFunction.init()` to improve diagnosability.
+
+### Handling Client Exceptions and Retrying Failed Requests
+
+Implementations of I/O functions for remote stores are likely to utilize a
+client object for communicating with their corresponding store endpoints.
+In this setup, it is possible for an I/O function to run into situations
+where the client it uses throws, e.g. in response to networking or logical
+errors.
+
+We recommend:
+
+1. Catching all such errors, wrapping and throwing them in a
+[`SamzaException`] (https://github.com/apache/samza/blob/master/samza-api/src/main/java/org/apache/samza/SamzaException.java).
+2. Attempting no retry in the face of client errors or failed requests. The
+ intent of the current design of Samza Remote Table API is to handle
+ retries at a higher and more abstract Remote Table level, which implies
+ retrying is not a responsibility of I/O functions.
+
+### Caching
+
+Samza Remote Table API can be configured to utilize user-supplied caches.
+You may refer to the [Caching](#caching) section under Hybrid Table for more details.
+
+### Rate Limiting
+Samza Remote Table API offers generic rate limiting capabilities that can
+be used with all I/O function implementations. You may refer to the
+[Rate Limiting](#rate-limiting) section under Remote Table for more details.
+
+### Separate vs Combined Read/Write Implementations
+
+It is up to the developer whether to implement both `TableReadFunction` and
+`TableWriteFunction` in one class or two separate classes. Defining them in
+separate classes can be cleaner if their implementations are elaborate and
+extended, whereas keeping them in a single class may be more practical if
+they share a considerable amount of code or are relatively short.
http://git-wip-us.apache.org/repos/asf/samza/blob/6c9715fb/docs/learn/documentation/versioned/index.html
----------------------------------------------------------------------
diff --git a/docs/learn/documentation/versioned/index.html b/docs/learn/documentation/versioned/index.html
index 193297c..b37b616 100644
--- a/docs/learn/documentation/versioned/index.html
+++ b/docs/learn/documentation/versioned/index.html
@@ -28,6 +28,7 @@ title: Documentation
<ul class="documentation-list">
<li><a href="comparisons/introduction.html">Low-level API</a></li>
<li><a href="comparisons/mupd8.html">Streams DSL</a></li>
+ <li><a href="api/table-api.html">Table API</a></li>
<li><a href="comparisons/storm.html">Samza SQL</a></li>
<li><a href="comparisons/spark-streaming.html">Apache BEAM</a></li>
<!-- TODO comparisons pages
[2/2] samza git commit: SAMZA-1915: Added docs for table API
Posted by we...@apache.org.
SAMZA-1915: Added docs for table API
As per subject
Author: Wei Song <ws...@linkedin.com>
Reviewers: Jagadish Venkatraman <jv...@linkedin.com>
Closes #666 from weisong44/SAMZA-1915 and squashes the following commits:
b7794af5 [Wei Song] Updated table section in CSS
396d5e8a [Wei Song] Merged from master
1e5de45a [Wei Song] Merge remote-tracking branch 'upstream/master'
e0e70acf [Wei Song] Merge branch 'master' into SAMZA-1915
c85604e0 [Wei Song] Merge remote-tracking branch 'upstream/master'
d687f716 [Wei Song] SAMZA-1915: Added docs for table API
242d8442 [Wei Song] Merge remote-tracking branch 'upstream/master'
ec7d8409 [Wei Song] Merge remote-tracking branch 'upstream/master'
e19b4dc9 [Wei Song] Merge remote-tracking branch 'upstream/master'
8ee78441 [Wei Song] Merge remote-tracking branch 'upstream/master'
1c6a2eae [Wei Song] Merge remote-tracking branch 'upstream/master'
a6c94add [Wei Song] Merge remote-tracking branch 'upstream/master'
41299b5b [Wei Song] Merge remote-tracking branch 'upstream/master'
239a0950 [Wei Song] Merge remote-tracking branch 'upstream/master'
eca00204 [Wei Song] Merge remote-tracking branch 'upstream/master'
51562391 [Wei Song] Merge remote-tracking branch 'upstream/master'
de708f5e [Wei Song] Merge remote-tracking branch 'upstream/master'
df2f8d7b [Wei Song] Merge remote-tracking branch 'upstream/master'
f28b491d [Wei Song] Merge remote-tracking branch 'upstream/master'
4782c61d [Wei Song] Merge remote-tracking branch 'upstream/master'
0440f75f [Wei Song] Merge remote-tracking branch 'upstream/master'
aae0f380 [Wei Song] Merge remote-tracking branch 'upstream/master'
a15a7c9a [Wei Song] Merge remote-tracking branch 'upstream/master'
5cbf9af9 [Wei Song] Merge remote-tracking branch 'upstream/master'
3f7ed71f [Wei Song] Added self to committer list
Project: http://git-wip-us.apache.org/repos/asf/samza/repo
Commit: http://git-wip-us.apache.org/repos/asf/samza/commit/6c9715fb
Tree: http://git-wip-us.apache.org/repos/asf/samza/tree/6c9715fb
Diff: http://git-wip-us.apache.org/repos/asf/samza/diff/6c9715fb
Branch: refs/heads/master
Commit: 6c9715fbc85f973907807cccc26c9d7d3ed983df
Parents: 1147167
Author: Wei Song <ws...@linkedin.com>
Authored: Fri Sep 28 22:59:19 2018 -0700
Committer: Wei Song <ws...@linkedin.com>
Committed: Fri Sep 28 22:59:19 2018 -0700
----------------------------------------------------------------------
docs/_config.yml | 2 +-
docs/css/main.new.css | 1 +
.../learn/documentation/api/table-api-arch.svg | 1 +
.../documentation/api/table-class-diagram.svg | 370 ++++++++++++
.../api/table-descriptor-class-diagram.svg | 270 +++++++++
.../documentation/versioned/api/table-api.md | 558 +++++++++++++++++++
docs/learn/documentation/versioned/index.html | 1 +
7 files changed, 1202 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/samza/blob/6c9715fb/docs/_config.yml
----------------------------------------------------------------------
diff --git a/docs/_config.yml b/docs/_config.yml
index 15e0c19..0d13138 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -42,4 +42,4 @@ collections:
releases:
output: true
powered-by:
- output: false
\ No newline at end of file
+ output: false
http://git-wip-us.apache.org/repos/asf/samza/blob/6c9715fb/docs/css/main.new.css
----------------------------------------------------------------------
diff --git a/docs/css/main.new.css b/docs/css/main.new.css
index cd88e37..7608b96 100644
--- a/docs/css/main.new.css
+++ b/docs/css/main.new.css
@@ -828,6 +828,7 @@ a.side-navigation__group-title::after {
table {
border-collapse: collapse;
margin: 1em 0;
+ border:1px solid #000000;
font-size : 12px;
font-family : "Myriad Web",Verdana,Helvetica,Arial,sans-serif;
}
http://git-wip-us.apache.org/repos/asf/samza/blob/6c9715fb/docs/img/versioned/learn/documentation/api/table-api-arch.svg
----------------------------------------------------------------------
diff --git a/docs/img/versioned/learn/documentation/api/table-api-arch.svg b/docs/img/versioned/learn/documentation/api/table-api-arch.svg
new file mode 100644
index 0000000..dd2b017
--- /dev/null
+++ b/docs/img/versioned/learn/documentation/api/table-api-arch.svg
@@ -0,0 +1 @@
+<svg version="1.1" viewBox="0.0 0.0 1024.0 768.0" fill="none" stroke="none" stroke-linecap="square" stroke-miterlimit="10" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><clipPath id="p.0"><path d="m0 0l1024.0 0l0 768.0l-1024.0 0l0 -768.0z" clip-rule="nonzero"/></clipPath><g clip-path="url(#p.0)"><path fill="#000000" fill-opacity="0.0" d="m0 0l1024.0 0l0 768.0l-1024.0 0z" fill-rule="evenodd"/><path fill="#cfe2f3" d="m477.66403 121.56956l383.7795 0l0 510.29922l-383.7795 0z" fill-rule="evenodd"/><path fill="#d9ead3" d="m230.0 121.56956l227.74802 0l0 510.29922l-227.74802 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m572.8924 156.06561l190.99213 0l0 41.007874l-190.99213 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m572.8924 156.06561l190.99213 0l0 41.007874l-190.99213 0z" fill-rule="evenodd"/><path fill="#000000" d="m628.63666 183.48955l0 -11.78125l-4.40625 0l0 -1.578125l10.578125 0
l0 1.578125l-4.40625 0l0 11.78125l-1.765625 0zm14.099121 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875
0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm5.7038574 4.859375l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.844421 4.90625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.816711 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.
125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm8.750732 1.46875l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.10
9375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm12.8341675 8.0l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.7031
25l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm15.516357 1.671875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm15.453857 2.21875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.67
1875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125z" fill-rule="nonzero"/><path fill="#ffffff" d="m499.66403 421.44357l337.44882 0l0 183.55905l-337.44882 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m499.66403 421.44357l337.44882 0l0 183.55905l-337.44882 0z" fill-rule="evenodd"/><path fill="#000000" d="m615.1637 448.36356l0 -11.78125l-4.40625 0l0 -1.578125l10.578125 0l0 1.578125l-4.40625 0l0 11.78125l-1.765625 0zm14.099121 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.82812
5 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.
9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm5.7038574 4.859375l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.844482 4.90625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.81665 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265
625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.344482 5.765625l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm10.4592285 7.0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q
0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.6188965 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm11.985107 4.84375l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 -11.46875l0 -1.890625l1.640625 0l0 1.
890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm10.410461 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.906921 1.71875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0
.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m531.19946 473.4147l133.95276 0l0 46.48819l-133.95276 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m531.19946 473.4147l133.95276 0l0 46.48819l-133.95276 0z" fill-rule="evenodd"/><path fill="#000000" d="m577.23517 503.5788l0 -13.359375l1.78125 0
l0 11.78125l6.5625 0l0 1.578125l-8.34375 0zm9.641357 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.610107 1.296875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0
.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm9.328125 2.359375q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.156
25l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1569214 4.859375l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m678.0002 473.4147l133.95276 0l0 46.48819l-133.95276 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m678.0002 473.4147l133.95276 0l0 46.48819l-133.95276 0z" fill-rule="evenodd"/><path fill="#000000" d="m713.7832 503.5788l0 -13.359375l5.921875 0q1.78125 0 2.703125 0.359375q0.9375 0.359375 1.484375 1.28125q0.5625 0.90625 0.5625 2.015625q0 1.40625 -0.921875 2.390625q-0.921875 0.96875 -2.84375 1.234375q0.703125 0.34375 1.078125 0.671875q0.765625
0.703125 1.453125 1.765625l2.328125 3.640625l-2.21875 0l-1.765625 -2.78125q-0.78125 -1.203125 -1.28125 -1.828125q-0.5 -0.640625 -0.90625 -0.890625q-0.390625 -0.265625 -0.796875 -0.359375q-0.296875 -0.078125 -0.984375 -0.078125l-2.046875 0l0 5.9375l-1.765625 0zm1.765625 -7.453125l3.796875 0q1.21875 0 1.890625 -0.25q0.6875 -0.265625 1.046875 -0.8125q0.359375 -0.546875 0.359375 -1.1875q0 -0.953125 -0.6875 -1.5625q-0.6875 -0.609375 -2.1875 -0.609375l-4.21875 0l0 4.421875zm18.097961 4.34375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.7812
5 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.141357 5.765625l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm14.9313965 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.5
9375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm12.875732 3.375l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm8.230164 -1.640625l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625
-1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#ffffff" d="m252.87665 254.13387l182.74014 0l0 37.354324l-182.74014 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m252.87665 254.13387l182.74014 0l0 37.354324l-182.74014 0z" fill-rule="evenodd"/><path fill="#000000" d="m274.5784 275.43414l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.79
6875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm16.412323 2.828125l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.
46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.5895691 1.46875l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.853302 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.
546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm15.453827 4.578125q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375
0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.2038574 4.859375l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375
q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm14.900177 -4.015625l0 -1.640625l5.03125 0l0 1.640625l-5.03125 0zm10.431427 2.546875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm7.9176636 0.28125q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.5
46875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm5.7038574 4.859375l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375
-1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.844452 4.90625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.816711 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.
90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm14.309021 -5.6875l0 -1.90625l1.640625 0l0 1.90625l-1.640625 0zm-2.078125 15.203125l0.3125 -1.390625q0.5 0.125 0.78125 0.125q0.5 0 0.734375 -0.328125q0.25 -0.328125 0.25 -1.671875l0 -10.15625l1.640625 0l0 10.203125q0 1.78125 -0.46875 2.484375q-0.59375 0.90625 -1.96875 0.90625q-0.65625 0 -1.28125 -0.171875zm5.629181 -8.59375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.297607 -6.625l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.6718
75l1.640625 0l0 9.671875l-1.640625 0zm4.144806 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m265.78873 58.44357l140.0 0l0 41.007877l-140.0 0z" fill-rule="evenodd"/><path fill="#000000" d="m288.22232 70.3l2.28125 0l0 9.9375q0 2.578125 -0.59375 4.109375q-0.578125 1.515625 -2.109375 2.484375q-1.53125 0.953125 -4.015625 0.953125q-2.421875 0 -3.953125 -0.828125q-1.53125 -0.84375 -2.1875 -2.421875q-0.65625 -1.578125 -0.65625 -4.296875l0 -9.9375l2.265625 0l0 9.921875q0 2.234375 0.421875 3.296875q0.421875 1.0625 1.421875 1.640625q1.015625 0.5625 2.484375 0.5625q2.515625 0 3.5781
25 -1.125q1.0625 -1.140625 1.0625 -4.375l0 -9.921875zm4.9414062 13.46875l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.937
5 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm21.375 -0.296875l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm11.738281 7.421875l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140
625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm15.191406 0l0 -10.8125l-1.875 0l0 -1.640625l1.875 0l0 -1.3125q0 -1.265625 0.21875 -1.875q0.296875 -0.8125 1.0625 -1.3125q0.78125 -0.515625 2.15625 -0.515625q0.890625 0 1.96875 0.203125l-0.3125 1.84375q-0.65625 -0.125 -1.25 -0.125q-0.953125 0 -1.359375 0.421875q-0.390625 0.40625 -0.390625 1.53125l0 1.140625l2.421875 0l0 1.640625l-2.421875 0l0 10.8125l-2.09375 0zm14.277344 -1.53125q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0
.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm13.519531 1.6875l2.078125 0.265625q-0.34375 2.15625 -1.75 3.375q-1.390625 1.203125 -3.4375 1.203125q-2.546875 0 -4.109375 -1.671875q-1.546875 -1.671875 -1.546875 -4.78125q0 -2.015625 0.671875 -3.53125q0.671875 -1.515625 2.03125 -2.265625q1.359375 -0.765625 2.96875 -0.765625q2.03125 0 3.3125 1.03125q1.296875 1.03125 1.65625 2.90625l-2.046875 0.328125q-0.296875 -1.265625 -1.046875 -1.890625q-0.734375 -0.640625 -1.796875
-0.640625q-1.59375 0 -2.59375 1.15625q-0.984375 1.140625 -0.984375 3.609375q0 2.5 0.953125 3.640625q0.96875 1.140625 2.515625 1.140625q1.234375 0 2.0625 -0.765625q0.84375 -0.765625 1.0625 -2.34375zm3.890625 -10.1875l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.3164062 0l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm12.972656 1.03125l2.046875 0.3125q0.125 0.9375 0.71875 1.375q0.78125 0.5937576 2.140625 0.5937576q1.46875 0 2.265625 -0.5937576q0.796875 -0.578125 1.078125 -1.640625q0.15625 -0.640625 0.140625 -2.703125q-1.375 1.625 -3.4375 1.625q-2.5625 0 -3.96875 -1.84375q-1.40625 -1.
859375 -1.40625 -4.453125q0 -1.78125 0.640625 -3.28125q0.640625 -1.515625 1.859375 -2.328125q1.234375 -0.828125 2.890625 -0.828125q2.203125 0 3.625 1.78125l0 -1.5l1.953125 0l0 10.765625q0 2.90625 -0.59375 4.109375q-0.59375 1.2187576 -1.875 1.9218826q-1.28125 0.703125 -3.15625 0.703125q-2.234375 0 -3.609375 -1.0q-1.359375 -1.0 -1.3125 -3.0156326zm1.734375 -7.484375q0 2.453125 0.96875 3.578125q0.984375 1.125 2.453125 1.125q1.453125 0 2.4375 -1.109375q0.984375 -1.125 0.984375 -3.515625q0 -2.28125 -1.015625 -3.4375q-1.015625 -1.171875 -2.453125 -1.171875q-1.40625 0 -2.390625 1.140625q-0.984375 1.140625 -0.984375 3.390625z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m636.7808 58.44357l140.0 0l0 41.007877l-140.0 0z" fill-rule="evenodd"/><path fill="#000000" d="m667.85114 81.97188l2.140625 -0.1875q0.15625 1.28125 0.703125 2.109375q0.5625 0.828125 1.734375 1.34375q1.171875 0.5 2.640625 0.5q1.296875 0 2.296875 -0.375q1.0 -0.390625 1.484375 -1.0625q0.484375 -0.6875 0.4843
75 -1.484375q0 -0.796875 -0.46875 -1.40625q-0.46875 -0.609375 -1.546875 -1.015625q-0.6875 -0.265625 -3.0625 -0.828125q-2.359375 -0.578125 -3.3125 -1.078125q-1.234375 -0.640625 -1.84375 -1.59375q-0.59375 -0.96875 -0.59375 -2.140625q0 -1.3125 0.734375 -2.4375q0.75 -1.125 2.15625 -1.703125q1.421875 -0.59375 3.15625 -0.59375q1.90625 0 3.359375 0.609375q1.46875 0.609375 2.25 1.8125q0.796875 1.1875 0.84375 2.703125l-2.171875 0.171875q-0.171875 -1.640625 -1.1875 -2.46875q-1.015625 -0.828125 -3.0 -0.828125q-2.0625 0 -3.015625 0.765625q-0.9375 0.75 -0.9375 1.8125q0 0.921875 0.671875 1.515625q0.65625 0.609375 3.421875 1.234375q2.78125 0.625 3.8125 1.09375q1.5 0.6875 2.203125 1.75q0.71875 1.0625 0.71875 2.4375q0 1.375 -0.78125 2.59375q-0.78125 1.203125 -2.25 1.890625q-1.46875 0.671875 -3.3125 0.671875q-2.328125 0 -3.90625 -0.671875q-1.578125 -0.6875 -2.484375 -2.046875q-0.890625 -1.375 -0.9375 -3.09375zm16.414062 10.312508l-0.234375 -1.9843826q0.703125 0.18750763 1.21875 0.18750763q0.703125 0
1.125 -0.23438263q0.421875 -0.234375 0.6875 -0.65625q0.203125 -0.3125 0.640625 -1.5625q0.0625 -0.1875 0.1875 -0.515625l-4.71875 -12.484375l2.265625 0l2.59375 7.21875q0.5 1.359375 0.90625 2.875q0.359375 -1.453125 0.859375 -2.828125l2.671875 -7.265625l2.109375 0l-4.734375 12.671875q-0.765625 2.046875 -1.1875 2.8125076q-0.5625 1.046875 -1.296875 1.53125q-0.71875 0.484375 -1.734375 0.484375q-0.609375 0 -1.359375 -0.25zm11.25 -8.515633l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q
-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm17.453125 1.828125l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm10.589844 -2.125l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.3437
5 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm11.753906 7.421875l0 -12.453125l1.890625 0l0 1.75q0.59375 -0.90625 1.5625 -1.46875q0.96875 -0.5625 2.21875 -0.5625q1.375 0 2.25 0.578125q0.890625 0.578125 1.265625 1.609375q1.46875 -2.1875 3.84375 -2.1875q1.84375 0 2.84375 1.03125q1.0 1.03125 1.0 3.15625l0 8.546875l-2.109375 0l0 -7.84375q0 -1.265625 -0.203125 -1.8125q-0.203125 -0.5625 -0.75 -0.90625q-0.53125 -0.34375 -1.25 -0.34375q-1.3125 0 -2.1875 0.875q-0.859375 0.875 -0.859375 2.796875l0 7.234375l-2.109375 0l0 -8.09375q0 -1.40625 -0.
515625 -2.109375q-0.515625 -0.703125 -1.6875 -0.703125q-0.890625 0 -1.65625 0.46875q-0.75 0.46875 -1.09375 1.375q-0.34375 0.90625 -0.34375 2.609375l0 6.453125l-2.109375 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m252.8924 157.8924l182.74014 0l0 37.354324l-182.74014 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m252.8924 157.8924l182.74014 0l0 37.354324l-182.74014 0z" fill-rule="evenodd"/><path fill="#000000" d="m325.77225 183.48955l0 -11.78125l-4.40625 0l0 -1.578125l10.578125 0l0 1.578125l-4.40625 0l0 11.78125l-1.765625 0zm14.099091 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625
-0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm5.7038574 4.859375l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.2968
75 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.844452 4.90625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.816711 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125
-0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#ffffff" d="m252.8924 477.23096l182.74014 0l0 53.448853l-182.74014 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m252.8924 477.23096l182.74014 0l0 53.448853l-182.74014 0z" fill-rule="evenodd"/><path fill="#000000" d="m301.06116 497.516l1.765625 0l0 7.71875q0 2.015625 -0.453125 3.203125q-0.453125 1.1875 -1.640625 1.9375q-1.1875 0.734375 -3.125 0.734375q-1.875 0 -3.078125 -0.640625q-1.1875 -0.65625 -1.703125 -1.875q-0.5 -1.234375 -0.5 -3.359375l0 -7.71875l1.765625 0l0 7.71875q0 1.734375 0.3125 2.5625q0.328125 0.8125 1.109375 1.265625q0.796875 0.453125 1.9375 0.453125q1.953125 0 2.78125 -0.890625q0.828125 -0.890625 0.828125 -3.390625l0 -7.71875zm3.8479614 10.46875l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.
875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125zm16.609375 -0.21875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q
-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125702 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.587677 -4.015625l0 -1.640625l5.03125 0l0 1.640625l-5.03125 0zm13.118927 4.015625l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125
q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.906982 1.71875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.218
75 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.531952 5.765625l0 -8.40625l-1.453125 0l0 -1.265625l1.453125 0l0 -1.03125q0 -0.96875 0.171875 -1.453125q0.234375 -0.640625 0.828125 -1.03125q0.59375 -0.390625 1.671875 -0.390625q0.6875 0 1.53125 0.15625l-0.25 1.4375q-0.5 -0.09375 -0.953125 -0.09375q-0.75 0 -1.0625 0.328125q-0.3125 0.3125 -0.3125 1.1875l0 0.890625l1.890625 0l0 1.265625l-1.890625 0l0 8.40625l-1.625 0zm4.792694 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.144806 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.51562
5l0 5.28125l-1.640625 0zm17.000732 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm15.406952 5.765625l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm
-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m131.0 398.89764l749.6378 0" fill-rule="evenodd"/><path stroke="#000000" stroke-width="3.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="12.0,9.0" d="m131.0 398.89764l749.6378 0" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m108.45538 196.45932l140.0 0l0 41.007874l-140.0 0z" fill-rule="evenodd"/><path fill="#000000" d="m154.65656 225.50325l0 -15.15625l-5.65625 0l0 -2.03125l13.625 0l0 2.03125l-5.6875 0l0 15.15625l-2.28125 0zm18.144531 -1.53125q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.093
75 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm7.3476562 6.25l-1.953125 0l0 -17.1875l2.109375
0l0 6.140625q1.328125 -1.6875 3.40625 -1.6875q1.140625 0 2.171875 0.46875q1.03125 0.46875 1.6875 1.3125q0.65625 0.828125 1.03125 2.015625q0.375 1.171875 0.375 2.53125q0 3.1875 -1.578125 4.9375q-1.578125 1.75 -3.796875 1.75q-2.203125 0 -3.453125 -1.84375l0 1.5625zm-0.03125 -6.3125q0 2.234375 0.609375 3.234375q1.0 1.625 2.703125 1.625q1.375 0 2.375 -1.203125q1.015625 -1.203125 1.015625 -3.578125q0 -2.4375 -0.96875 -3.59375q-0.953125 -1.171875 -2.328125 -1.171875q-1.390625 0 -2.40625 1.203125q-1.0 1.203125 -1.0 3.484375zm11.378906 6.3125l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm13.910156 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0
1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m108.45538 483.45145l140.0 0l0 41.007843l-140.0 0z" fill-rule="evenodd"/><path fill="#000000" d="m158.01984 512.49536l0 -17.18747l2.28125 0l0 17.18747l-2.28125 0zm6.0117188 0l0 -12.4530945l1.890625 0l0 1.75q0.59375 -0.90625 1.5625 -1.46875q0.96875 -0.5625 2.21875 -0.5625q1.375 0 2.25 0.578125q0.890625 0.578125 1.265625 1.609375q1.46875 -2.1875 3.84375 -2.1875q1.84375 0 2.84375 1.03125q1.0 1.03125 1.0 3.15625l0 8.5468445l-2.109375 0l0 -7.8437195q0 -1.265625 -0.203125 -1.8125q-0.203125 -0.5625 -0.75 -0.90625q-0.53125 -0.34375 -1.25 -0.34375q-1.3125 0 -2.1875 0.875q-0.859375 0.875 -0.859375 2.796875l0 7.2343445l-2.109375 0l0 -8.0937195q0 -1.40625 -0.515625 -2.109375q-0.515625 -0.703125 -1.6875 -0.703125q
-0.890625 0 -1.65625 0.46875q-0.75 0.46875 -1.09375 1.375q-0.34375 0.90625 -0.34375 2.609375l0 6.4530945l-2.109375 0zm19.992188 4.765625l0 -17.21872l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8124695 -2.734375 0.8124695q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.45309448 -1.375 -1.1405945l0 6.0624695l-2.109375 0zm1.921875 -10.9218445q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm11.378906 6.1562195l0 -17.18747l2.109375 0l0 17.18747l-2.109375 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m252.8924 300.90814l182.74014 0l0 53.448822l-182.74014 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0"
stroke-linejoin="round" stroke-linecap="butt" d="m252.8924 300.90814l182.74014 0l0 53.448822l-182.74014 0z" fill-rule="evenodd"/><path fill="#000000" d="m280.8205 319.25568l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.
953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm16.412323 2.828125l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.5895691 1.46875l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.2
8125 1.921875l0 5.0625l-1.625 0zm12.853302 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm15.453827 4.578125q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.01
5625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.2038574 4.859375l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.
234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm14.900177 -4.015625l0 -1.640625l5.03125 0l0 1.640625l-5.03125 0zm10.431427 2.546875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0
0.71875 -0.0625zm0.9957886 -3.375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm8.656982 0.828125l0 -1.640625l5.03125 0l0 1.640625l-5.03125 0zm10.431427 2.546875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.3
28125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm7.9176636 0.28125q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.
4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm5.7038574 4.859375l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.844452 4.90625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.816711 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.81
25 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#000000" d="m302.93082 344.0838l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.718
75 -0.0625zm8.230164 -1.640625l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.228302 0l0 -9.671875l1.46875 0l0 1.359375q0
.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm15.540802 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.144806 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0
-1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm16.688232 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.
265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.781952 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051941 -10.0l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm3.535431 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3
125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.297607 4.84375l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m531.19946 533.5696l280.75592 0l0 46.48816l-280.75592 0z" fill-rule="evenodd
"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m531.19946 533.5696l280.75592 0l0 46.48816l-280.75592 0z" fill-rule="evenodd"/><path fill="#000000" d="m646.12244 563.73364l0 -13.359375l1.765625 0l0 5.484375l6.9375 0l0 -5.484375l1.765625 0l0 13.359375l-1.765625 0l0 -6.296875l-6.9375 0l0 6.296875l-1.765625 0zm13.129211 3.71875l-0.1875 -1.53125q0.546875 0.140625 0.9375 0.140625q0.546875 0 0.875 -0.1875q0.328125 -0.171875 0.546875 -0.5q0.15625 -0.25 0.5 -1.21875q0.046875 -0.140625 0.140625 -0.40625l-3.671875 -9.6875l1.765625 0l2.015625 5.59375q0.390625 1.078125 0.703125 2.25q0.28125 -1.125 0.671875 -2.203125l2.078125 -5.640625l1.640625 0l-3.6875 9.828125q-0.59375 1.609375 -0.921875 2.203125q-0.4375 0.8125 -1.0 1.1875q-0.5625 0.375 -1.34375 0.375q-0.484375 0 -1.0625 -0.203125zm10.90625 -3.71875l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515
625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.875671 4.90625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2283325 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm10.410461 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78
125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125z" fill-rule="nonzero"/><path fill="#ffffff" d="m252.8924 206.01312l182.74014 0l0 37.354324l-182.74014 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m252.8924 206.01312l182.74014 0l0 37.354324l-182.74014 0z" fill-rule="evenodd"/><path fill="#000000" d="m283.26733 231.61029l0 -11.78125l-4.40625 0l0 -1.578125l10.578125 0l0 1.578125l-4.40625 0l0 11.78125l-1.765625 0zm14.099091 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.8
28125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.437
5q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm5.7038574 4.859375l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.844452 4.90625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.816711 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375
3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.344452 5.765625l0 -13.359375l4.609375 0q1.546875 0 2.375 0.203125q1.140625 0.25 1.953125 0.953125q1.0625 0.890625 1.578125 2.28125q0.53125 1.390625 0.53125 3.171875q0 1.515625 -0.359375 2.703125q-0.359375 1.171875 -0.921875 1.9375q-0.546875 0.765625 -1.203125 1.21875q-0.65625 0.4375 -1.59375 0.671875q-0.9375 0.21875 -2.140625 0.21875l-4.828125 0zm1.765625 -1.578125l2.859375 0q1.3125 0 2.0625 -0.234375q0.75 -0.25 1.203125 -0.703125q0.625 -0.625 0.96875 -1.6875q0.359375 -1.0625 0.359375 -2.578125q0 -2.09375 -0.6875 -3.21875q-0.6875 -1.125 -1.671875 -1.5q-0.703125 -0.28125 -2.28125 -0.28
125l-2.8125 0l0 10.203125zm18.129211 -1.53125l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm8.485077 2.875l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.2
96875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125zm16.296875 -0.65625l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.281
25 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm3.0 3.546875l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.228302 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1448364 3.703125l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625
0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm12.469452 3.3125l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm0.9958191 -3.375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65
625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281952 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0z" fill-rule="nonzero"/></g></svg>
\ No newline at end of file