Flow decomposition and miscellenous improvements
Specifically:
The biggest addition is an initial flow decomposition
implementation that splits flows and flow groups
defined over the logical device into per physical
device flows, based on a very crude and heuristic
approach. We expect this part to be much improved
later on, both in term of genericness as well as
speed.
The flow decomposition is triggered by any flow
or group mods applied to a logical device, and it
consequently touches up the affected device tables.
This uses the POST_UPDATE (post-commit) mechanism
of core.
There is also an initial arhcitecture diagram added
under docs.
Additional improvements:
* Implemented metadata passing across the gRPC
link, both in Voltha and in Chameleon. This paves
the road to pass query args as metadata, and also
to pass HTTP header fields back and forth across
the gRPC API. This is alrady used to pass in depth
for GET /api/v1/local, and it will be used to
allow working with transactions and specific config
revs.
* Improved automatic reload and reconnect of chameleon
after Voltha is restarted.
* Improved error handling in gRPC hanlers, especially
for the "resource not found (404)", and bad argument
(400) type errors. This makes gRPC Rendezvous errors
a bit cleaner, and also allows Chameleon to map these
errors into 404/400 codes.
* Better error logging in generic errors in gRPC handlers.
* Many new test-cases
* Initial skeleton and first many steps implemented for
the automated testing for the cold PON activation
sequence.
* Convenience functions for working with flows (exemplified
by the test-cases)
* Fixed bug in config engine that dropped changes that
were made in a POST_* callback, such as the ones used
to propagae the logical flow tables into the device
tables. The fix was to defer the callbacks till the
initial changes are complete and then execute all
callbacks in sequence.
* Adapter proxy with well defined API that can be
used by the adapters to communicate back to Core.
* Extended simulated_olt and simulated_onu adapters to
both demonstrate discovery-style and provisioned
activation style use cases.
* Adapter-, device-, and logical device agents to provide
the active business logic associated with these
entities.
* Fixed 64-bit value passing across the stack. There was
an issue due to inconsistent use of two JSON<-->Proto
librarier, one of which did not adhere to the Google
specs which recommend passing 64-bit integer values as
strings.
* Annotation added for all gRPC methods.
All Voltha test-cases are passing.
Change-Id: Id949e8d1b76276741471bedf9901ac33bfad9ec6
diff --git a/docs/architecture.svg b/docs/architecture.svg
new file mode 100644
index 0000000..a02ce2f
--- /dev/null
+++ b/docs/architecture.svg
@@ -0,0 +1,1940 @@
+<?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="11in"
+ height="8.5in"
+ viewBox="0 0 990 765"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="architecture.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Send"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker7299"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path7301"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ transform="scale(0.2) rotate(180) translate(6,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker6998"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow1Send"
+ inkscape:collect="always">
+ <path
+ transform="scale(0.2) rotate(180) translate(6,0)"
+ style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ id="path7000" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Send"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker6878"
+ style="overflow:visible;"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path6880"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ transform="scale(0.2) rotate(180) translate(6,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Send"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker6626"
+ style="overflow:visible;"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path6628"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ transform="scale(0.2) rotate(180) translate(6,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker6524"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow1Send"
+ inkscape:collect="always">
+ <path
+ transform="scale(0.2) rotate(180) translate(6,0)"
+ style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ id="path6526" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Send"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker6428"
+ style="overflow:visible;"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path6430"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ transform="scale(0.2) rotate(180) translate(6,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker6338"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow1Send"
+ inkscape:collect="always">
+ <path
+ transform="scale(0.2) rotate(180) translate(6,0)"
+ style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ id="path6340" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Send"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker6254"
+ style="overflow:visible;"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path6256"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ transform="scale(0.2) rotate(180) translate(6,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker6186"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow1Send"
+ inkscape:collect="always">
+ <path
+ transform="scale(0.2) rotate(180) translate(6,0)"
+ style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ id="path6188" />
+ </marker>
+ <marker
+ inkscape:stockid="TriangleOutM"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker6092"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6094"
+ d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
+ style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ transform="scale(0.4)" />
+ </marker>
+ <marker
+ inkscape:stockid="TriangleOutM"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="TriangleOutM"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5225"
+ d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
+ style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ transform="scale(0.4)" />
+ </marker>
+ <marker
+ inkscape:stockid="EmptyTriangleOutM"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="EmptyTriangleOutM"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5243"
+ d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
+ style="fill-rule:evenodd;fill:#ffffff;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1"
+ transform="scale(0.4) translate(-4.5,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker5910"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend">
+ <path
+ transform="scale(0.6) rotate(180) translate(0,0)"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ id="path5912" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Send"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker5642"
+ style="overflow:visible;"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path5644"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ transform="scale(0.2) rotate(180) translate(6,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Send"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Send"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path5095"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ transform="scale(0.2) rotate(180) translate(6,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Mend"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path5107"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(0.6) rotate(180) translate(0,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Lend"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path5083"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.2470588"
+ inkscape:cx="495"
+ inkscape:cy="382.5"
+ inkscape:document-units="cm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="in"
+ objecttolerance="10000"
+ inkscape:snap-perpendicular="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1156"
+ inkscape:window-x="0"
+ inkscape:window-y="1"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4136"
+ units="mm"
+ spacingx="3.5433071"
+ spacingy="3.5433071"
+ color="#b6b6ff"
+ opacity="0.1254902"
+ empcolor="#8a8aff"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <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(0,-287.3622)"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ <g
+ id="g4649"
+ transform="translate(-56.481132,-416.75472)">
+ <rect
+ style="fill:#c0e8ff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.00000001, 1.00000002;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4651"
+ width="854.10309"
+ height="468.18985"
+ x="120.30643"
+ y="966.91339" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="965.6394"
+ y="984.86884"
+ id="text4653"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4655"
+ x="965.6394"
+ y="984.86884">voltha</tspan></text>
+ </g>
+ <g
+ id="g4595"
+ transform="matrix(1,0,0,1.0784076,-66.509434,-356.41783)">
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.96296072;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:2.88888196, 0.96296066;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4597"
+ width="679.03876"
+ height="206.22931"
+ x="295.3707"
+ y="935.82001" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.03700829px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="965.6394"
+ y="953.52435"
+ id="text4599"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4601"
+ x="965.6394"
+ y="953.52435">core</tspan></text>
+ </g>
+ <g
+ id="g4398"
+ transform="translate(-65.707547,-6.8490566)">
+ <rect
+ y="892.91339"
+ x="194.8819"
+ height="124.01569"
+ width="779.52759"
+ id="rect4374"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3, 1;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4314-7"
+ y="910.86884"
+ x="965.6394"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="910.86884"
+ x="965.6394"
+ id="tspan4316-0"
+ sodipodi:role="line">adapters</tspan></text>
+ </g>
+ <g
+ transform="translate(-223.31132,440.99057)"
+ id="g4276">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4278"
+ width="128.02519"
+ height="34.597065"
+ x="449.25955"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="540.95288"
+ id="text4280"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4282"
+ x="512.97003"
+ y="540.95288">simulated_onu</tspan></text>
+ </g>
+ <g
+ id="g4284"
+ transform="translate(-223.31132,397.69811)">
+ <rect
+ y="521.06683"
+ x="449.25955"
+ height="34.597065"
+ width="128.02519"
+ id="rect4286"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4288"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4290"
+ sodipodi:role="line">simulated_olt</tspan></text>
+ </g>
+ <g
+ transform="translate(48.528303,397.69811)"
+ id="g4310">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4312"
+ width="128.02519"
+ height="34.597065"
+ x="449.25955"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4314"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4316"
+ x="512.97003"
+ y="542.95288">maple</tspan></text>
+ </g>
+ <g
+ id="g4318"
+ transform="translate(-86.990568,397.69811)">
+ <rect
+ y="521.06683"
+ x="449.25955"
+ height="34.597065"
+ width="128.02519"
+ id="rect4320"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4322"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4324"
+ sodipodi:role="line">microsemi</tspan></text>
+ </g>
+ <g
+ transform="translate(183.24528,397.69811)"
+ id="g4326">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4328"
+ width="128.02519"
+ height="34.597065"
+ x="449.25955"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4330"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4332"
+ x="512.97003"
+ y="542.95288">tibit_olt</tspan></text>
+ </g>
+ <g
+ id="g4334"
+ transform="translate(183.21079,440.99057)">
+ <rect
+ y="521.06683"
+ x="449.25955"
+ height="34.597065"
+ width="128.02519"
+ id="rect4336"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4338"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4340"
+ sodipodi:role="line">tibit_onu</tspan></text>
+ </g>
+ <g
+ transform="translate(317.96226,397.69811)"
+ id="g4342">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4344"
+ width="128.02519"
+ height="34.597065"
+ x="449.25955"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4346"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4348"
+ x="512.97003"
+ y="542.95288">emulator</tspan></text>
+ </g>
+ <g
+ id="g4350"
+ transform="translate(318.76415,440.99057)">
+ <rect
+ y="521.06683"
+ x="449.25955"
+ height="34.597065"
+ width="128.02519"
+ id="rect4352"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4354"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4356"
+ sodipodi:role="line">grpc_shim</tspan></text>
+ </g>
+ <g
+ transform="translate(-343.74454,404.32945)"
+ id="g4358">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4360"
+ width="79.911987"
+ height="34.597065"
+ x="473.31616"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4362"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4364"
+ x="512.97003"
+ y="542.95288">interface</tspan></text>
+ </g>
+ <g
+ id="g4366"
+ transform="translate(-343.59434,365.68868)">
+ <rect
+ y="521.06683"
+ x="473.30771"
+ height="34.597065"
+ width="79.92894"
+ id="rect4368"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4370"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4372"
+ sodipodi:role="line">loader</tspan></text>
+ </g>
+ <g
+ transform="translate(-91.660377,308.12798)"
+ id="g4403">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4405"
+ width="128.02519"
+ height="34.597065"
+ x="449.25955"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4407"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4409"
+ x="512.97003"
+ y="542.95288">adapter_agent</tspan></text>
+ </g>
+ <g
+ id="g4411"
+ transform="translate(60.297163,308.12798)">
+ <rect
+ y="521.06683"
+ x="449.25955"
+ height="34.597065"
+ width="128.02519"
+ id="rect4413"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4415"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4417"
+ sodipodi:role="line">device_agent</tspan></text>
+ </g>
+ <g
+ transform="translate(-244.76416,131.40566)"
+ id="g4443">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4445"
+ width="79.92894"
+ height="34.597065"
+ x="473.30771"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4447"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4449"
+ x="512.97003"
+ y="542.95288">core</tspan></text>
+ </g>
+ <g
+ id="g4505"
+ transform="translate(-204.95283,50.396223)">
+ <g
+ transform="translate(119.48114,-226.13207)"
+ id="g4497">
+ <rect
+ y="892.91333"
+ x="334.41019"
+ height="95.147758"
+ width="639.99927"
+ id="rect4499"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:2.99999992, 0.99999997;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4501"
+ y="910.86884"
+ x="965.6394"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="910.86884"
+ x="965.6394"
+ id="tspan4503"
+ sodipodi:role="line">config</tspan></text>
+ </g>
+ <g
+ id="g4419"
+ transform="translate(173.20755,155.29878)">
+ <rect
+ y="521.06683"
+ x="449.25955"
+ height="34.597065"
+ width="128.02519"
+ id="rect4421"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4423"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4425"
+ sodipodi:role="line">config_root</tspan></text>
+ </g>
+ <g
+ transform="translate(309.79557,155.29878)"
+ id="g4427">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4429"
+ width="128.02519"
+ height="34.597065"
+ x="449.25955"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4431"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4433"
+ x="512.97003"
+ y="542.95288">config_node</tspan></text>
+ </g>
+ <g
+ id="g4435"
+ transform="translate(445.849,155.29878)">
+ <rect
+ y="521.06683"
+ x="449.25955"
+ height="34.597065"
+ width="128.02519"
+ id="rect4437"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4439"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4441"
+ sodipodi:role="line">config_rev</tspan></text>
+ </g>
+ <g
+ id="g4451"
+ transform="translate(445.849,198.06608)">
+ <rect
+ y="521.06683"
+ x="449.25955"
+ height="34.597065"
+ width="128.02519"
+ id="rect4453"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="100%"
+ id="text4455"
+ y="534.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:100%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ id="tspan4459"
+ y="534.95288"
+ x="512.97003"
+ sodipodi:role="line">config_rev</tspan><tspan
+ id="tspan4487"
+ y="547.45288"
+ x="512.97003"
+ sodipodi:role="line">_persisted</tspan></text>
+ </g>
+ <g
+ transform="translate(37.421385,197.79878)"
+ id="g4461">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4463"
+ width="128.02519"
+ height="34.597065"
+ x="449.25955"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4465"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4467"
+ x="512.97003"
+ y="542.95288">config_branch</tspan></text>
+ </g>
+ <g
+ id="g4469"
+ transform="translate(37.421385,155.56608)">
+ <rect
+ y="521.06683"
+ x="449.25955"
+ height="34.597065"
+ width="128.02519"
+ id="rect4471"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4473"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4475"
+ sodipodi:role="line">config_txn</tspan></text>
+ </g>
+ <g
+ transform="translate(173.47474,198.06608)"
+ id="g4477">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4479"
+ width="128.02519"
+ height="34.597065"
+ x="449.25955"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4481"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4483"
+ x="512.97003"
+ y="542.95288">merge_3way</tspan></text>
+ </g>
+ <g
+ id="g4489"
+ transform="translate(578.74279,158.90724)">
+ <rect
+ y="560.35931"
+ x="179.77777"
+ height="34.597065"
+ width="128.02519"
+ id="rect4491"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4493"
+ y="582.24536"
+ x="243.53607"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="582.24536"
+ x="243.53607"
+ id="tspan4495"
+ sodipodi:role="line">config_proxy</tspan></text>
+ </g>
+ </g>
+ <g
+ id="g4451-4"
+ transform="translate(212.25471,308.12798)">
+ <rect
+ y="521.06683"
+ x="449.25955"
+ height="34.597065"
+ width="128.02519"
+ id="rect4453-3"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="100%"
+ id="text4455-3"
+ y="534.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:100%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ id="tspan4459-3"
+ y="534.95288"
+ x="512.97003"
+ sodipodi:role="line">logical_device</tspan><tspan
+ id="tspan4487-1"
+ y="547.45288"
+ x="512.97003"
+ sodipodi:role="line">_agent</tspan></text>
+ </g>
+ <g
+ transform="translate(60.297163,147.30189)"
+ id="g4571">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4573"
+ width="128.02519"
+ height="34.597065"
+ x="449.25955"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4575"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4577"
+ x="512.97003"
+ y="542.95288">dispatcher</tspan></text>
+ </g>
+ <g
+ id="g4579"
+ transform="translate(212.25471,147.30189)">
+ <rect
+ y="521.06683"
+ x="449.25955"
+ height="34.597065"
+ width="128.02519"
+ id="rect4581"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4583"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4585"
+ sodipodi:role="line">local_handler</tspan></text>
+ </g>
+ <g
+ transform="translate(-91.660377,147.30189)"
+ id="g4587">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4589"
+ width="128.02519"
+ height="34.597065"
+ x="449.25955"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4591"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4593"
+ x="512.97003"
+ y="542.95288">global_handler</tspan></text>
+ </g>
+ <g
+ id="g4603"
+ transform="translate(-409.12264,28.905663)">
+ <rect
+ y="521.06683"
+ x="473.30771"
+ height="34.597065"
+ width="79.92894"
+ id="rect4605"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4607"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4609"
+ sodipodi:role="line">main</tspan></text>
+ </g>
+ <g
+ transform="translate(-372.50318,77.758583)"
+ id="g4611">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4613"
+ width="129.64592"
+ height="34.597065"
+ x="448.44922"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4615"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4617"
+ x="512.97003"
+ y="542.95288">coordinator</tspan></text>
+ </g>
+ <g
+ id="g4619"
+ transform="translate(-409.02831,121.36791)">
+ <rect
+ y="521.06683"
+ x="486.13791"
+ height="34.597065"
+ width="54.268562"
+ id="rect4621"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999982;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4623"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4625"
+ sodipodi:role="line">leader</tspan></text>
+ </g>
+ <g
+ id="g4627"
+ transform="translate(-336.88679,121.36791)">
+ <rect
+ y="521.06683"
+ x="485.336"
+ height="34.597065"
+ width="55.872337"
+ id="rect4629"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4631"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4633"
+ sodipodi:role="line">worker</tspan></text>
+ </g>
+ <g
+ id="g4691"
+ transform="translate(-44.90566,114.09434)">
+ <g
+ id="g4657"
+ transform="translate(-21.603774,-426.21699)">
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.00000004, 1.00000001;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4659"
+ width="678.23688"
+ height="60.413372"
+ x="296.17258"
+ y="893.16669" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="965.6394"
+ y="910.86884"
+ id="text4661"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4663"
+ x="965.6394"
+ y="910.86884">northbound</tspan></text>
+ </g>
+ <g
+ id="g4665"
+ transform="translate(47.783015,-41.660364)">
+ <rect
+ y="521.06683"
+ x="449.25955"
+ height="34.597065"
+ width="128.02519"
+ id="rect4667"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4669"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4671"
+ sodipodi:role="line">grpc_server</tspan></text>
+ </g>
+ <g
+ transform="translate(243.34906,-41.660364)"
+ id="g4673">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4675"
+ width="128.02519"
+ height="34.597065"
+ x="449.25955"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4677"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4679"
+ x="512.97003"
+ y="542.95288">kafka_client</tspan></text>
+ </g>
+ <g
+ id="g4681"
+ transform="translate(-147.78302,-41.660364)">
+ <rect
+ y="521.06683"
+ x="449.25955"
+ height="34.597065"
+ width="128.02519"
+ id="rect4683"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="100%"
+ id="text4685"
+ y="536.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:100%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="536.95288"
+ x="512.97003"
+ id="tspan4687"
+ sodipodi:role="line">rest_server/</tspan><tspan
+ id="tspan4689"
+ y="549.45288"
+ x="512.97003"
+ sodipodi:role="line">health_check</tspan></text>
+ </g>
+ </g>
+ <g
+ id="g4781"
+ transform="translate(-225.72642,331.36792)">
+ <g
+ transform="translate(-543.63208,-537.67925)"
+ id="g4730">
+ <rect
+ y="893.16675"
+ x="844.66315"
+ height="78.856773"
+ width="129.74631"
+ id="rect4732"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.00000013, 1.00000004;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4734"
+ y="910.86884"
+ x="965.6394"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="910.86884"
+ x="965.6394"
+ id="tspan4736"
+ sodipodi:role="line">protos</tspan></text>
+ </g>
+ <g
+ transform="translate(-165.37736,-142.69811)"
+ id="g4710">
+ <rect
+ y="545.87817"
+ x="493.30771"
+ height="24.974424"
+ width="79.92894"
+ id="rect4726"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4724"
+ width="79.92894"
+ height="24.974424"
+ x="489.30771"
+ y="541.87817" />
+ <rect
+ y="537.87817"
+ x="485.30771"
+ height="24.974424"
+ width="79.92894"
+ id="rect4722"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4720"
+ width="79.92894"
+ height="24.974424"
+ x="481.30771"
+ y="533.87817" />
+ <rect
+ y="529.87817"
+ x="477.30771"
+ height="24.974424"
+ width="79.92894"
+ id="rect4718"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4712"
+ width="79.92894"
+ height="24.974424"
+ x="473.30771"
+ y="525.87817" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4714"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4716"
+ x="512.97003"
+ y="542.95288">voltha</tspan></text>
+ </g>
+ </g>
+ <g
+ id="g4796"
+ transform="translate(-372.50318,257.75858)">
+ <rect
+ y="521.06683"
+ x="448.44922"
+ height="34.597065"
+ width="129.64592"
+ id="rect4798"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4800"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4802"
+ sodipodi:role="line">event_bus</tspan></text>
+ </g>
+ <g
+ transform="translate(-372.50318,303.75858)"
+ id="g4804">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4806"
+ width="129.64592"
+ height="34.597065"
+ x="448.44922"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4808"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4810"
+ x="512.97003"
+ y="542.95288">frameio</tspan></text>
+ </g>
+ <g
+ transform="translate(-616.85849,-529.61321)"
+ id="g4812">
+ <rect
+ y="892.91339"
+ x="680.82526"
+ height="177.90683"
+ width="293.58423"
+ id="rect4814"
+ style="fill:#a9e1b9;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.00000001, 1.00000002;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4816"
+ y="910.86884"
+ x="965.6394"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="910.86884"
+ x="965.6394"
+ id="tspan4818"
+ sodipodi:role="line">chameleon</tspan></text>
+ </g>
+ <g
+ transform="translate(-409.12264,-157.09434)"
+ id="g4820">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4822"
+ width="79.92894"
+ height="34.597065"
+ x="473.30771"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4824"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4826"
+ x="512.97003"
+ y="542.95288">main</tspan></text>
+ </g>
+ <g
+ id="g4828"
+ transform="translate(-256.85849,-529.61321)">
+ <rect
+ style="fill:#cbcff7;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3, 1.00000001;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4830"
+ width="353.72574"
+ height="177.90683"
+ x="620.68378"
+ y="892.91339" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="965.6394"
+ y="910.86884"
+ id="text4832"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4834"
+ x="965.6394"
+ y="910.86884">ofagent</tspan></text>
+ </g>
+ <g
+ id="g4836"
+ transform="translate(-109.12264,-157.09434)">
+ <rect
+ y="521.06683"
+ x="473.30771"
+ height="34.597065"
+ width="79.92894"
+ id="rect4838"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4840"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4842"
+ sodipodi:role="line">main</tspan></text>
+ </g>
+ <g
+ transform="translate(-56.858487,-529.61321)"
+ id="g4844">
+ <rect
+ y="892.91339"
+ x="781.0611"
+ height="177.90683"
+ width="193.34837"
+ id="rect4846"
+ style="fill:#f5d5bf;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3, 1.00000001;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4848"
+ y="910.86884"
+ x="965.6394"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="910.86884"
+ x="965.6394"
+ id="tspan4850"
+ sodipodi:role="line">netconf</tspan><tspan
+ y="926.49384"
+ x="965.6394"
+ sodipodi:role="line"
+ id="tspan5026">_server</tspan></text>
+ </g>
+ <g
+ transform="translate(250.87736,-157.09434)"
+ id="g4852">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4854"
+ width="79.92894"
+ height="34.597065"
+ x="473.30771"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4856"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4858"
+ x="512.97003"
+ y="542.95288">main</tspan></text>
+ </g>
+ <g
+ id="g4860"
+ transform="translate(-305.28301,-148.24527)">
+ <rect
+ y="521.06683"
+ x="462.89163"
+ height="34.597065"
+ width="100.76104"
+ id="rect4862"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4864"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4866"
+ sodipodi:role="line">web_server</tspan></text>
+ </g>
+ <g
+ transform="translate(-215.11321,-96.509427)"
+ id="g4868">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4870"
+ width="94.345947"
+ height="34.597065"
+ x="466.09918"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4872"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4874"
+ x="512.97003"
+ y="542.95288">swagger_ui</tspan></text>
+ </g>
+ <g
+ id="g4876"
+ transform="translate(-215.91509,-23.943403)">
+ <rect
+ y="521.06683"
+ x="466.09918"
+ height="34.597065"
+ width="94.345947"
+ id="rect4878"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4880"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4882"
+ sodipodi:role="line">grpc_client</tspan></text>
+ </g>
+ <g
+ id="g4884"
+ transform="translate(-317.72641,-96.113187)">
+ <rect
+ y="521.06683"
+ x="471.7124"
+ height="34.597065"
+ width="83.11953"
+ id="rect4886"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="100%"
+ id="text4888"
+ y="534.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:100%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="534.95288"
+ x="512.97003"
+ id="tspan4890"
+ sodipodi:role="line">swagger</tspan><tspan
+ y="547.45288"
+ x="512.97003"
+ sodipodi:role="line"
+ id="tspan5024">_gen</tspan></text>
+ </g>
+ <g
+ transform="translate(-407.16981,-96.113207)"
+ id="g4892">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999982;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4894"
+ width="65.47802"
+ height="34.597065"
+ x="480.53314"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4896"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4898"
+ x="512.97003"
+ y="542.95288">gw_gen</tspan></text>
+ </g>
+ <g
+ transform="translate(-191.25472,113.67925)"
+ id="g4900">
+ <g
+ id="g4902"
+ transform="translate(-543.63208,-537.67925)">
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.00000013, 1.00000005;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4904"
+ width="164.22743"
+ height="67.630356"
+ x="808.18207"
+ y="889.16675" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="963.6394"
+ y="906.86884"
+ id="text4906"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4908"
+ x="963.6394"
+ y="906.86884">compiled gw modules</tspan></text>
+ </g>
+ <g
+ id="g4910"
+ transform="translate(-167.37736,-148.69811)">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4916"
+ width="79.92894"
+ height="24.974424"
+ x="485.30771"
+ y="537.87817" />
+ <rect
+ y="533.87817"
+ x="481.30771"
+ height="24.974424"
+ width="79.92894"
+ id="rect4918"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4920"
+ width="79.92894"
+ height="24.974424"
+ x="477.30771"
+ y="529.87817" />
+ <rect
+ y="525.87817"
+ x="473.30771"
+ height="24.974424"
+ width="79.92894"
+ id="rect4922"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4924"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4926"
+ sodipodi:role="line">voltha</tspan></text>
+ </g>
+ </g>
+ <g
+ transform="translate(45.506023,-67.354407)"
+ id="g4928">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4930"
+ width="94.345947"
+ height="34.597065"
+ x="466.09918"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4932"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4934"
+ x="512.97003"
+ y="542.95288">agent</tspan></text>
+ </g>
+ <g
+ transform="translate(45.843903,-111.44857)"
+ id="g4944">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4946"
+ width="94.345947"
+ height="34.597065"
+ x="466.09918"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:100%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="534.95288"
+ id="text4948"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan4950"
+ x="512.97003"
+ y="534.95288">connection</tspan><tspan
+ sodipodi:role="line"
+ x="512.97003"
+ y="547.45288"
+ id="tspan4968">_mgr</tspan></text>
+ </g>
+ <g
+ id="g4952"
+ transform="translate(44.857223,-23.551916)">
+ <rect
+ y="521.06683"
+ x="466.09918"
+ height="34.597065"
+ width="94.345947"
+ id="rect4954"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4956"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan4958"
+ sodipodi:role="line">grpc_client</tspan></text>
+ </g>
+ <g
+ transform="translate(146.06018,-67.264017)"
+ id="g4960">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4962"
+ width="94.345947"
+ height="34.597065"
+ x="466.09918"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4964"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4966"
+ x="512.97003"
+ y="542.95288">loxi</tspan></text>
+ </g>
+ <g
+ transform="translate(146.10908,-23.551916)"
+ id="g4970">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4972"
+ width="94.345947"
+ height="34.597065"
+ x="466.09918"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text4974"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4976"
+ x="512.97003"
+ y="542.95288">converter</tspan></text>
+ </g>
+ <g
+ id="g4986"
+ transform="translate(146.07974,-110.94562)">
+ <rect
+ y="521.06683"
+ x="466.09918"
+ height="34.597065"
+ width="94.345947"
+ id="rect4988"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="100%"
+ id="text4990"
+ y="534.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:100%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="534.95288"
+ x="512.97003"
+ id="tspan4992"
+ sodipodi:role="line">of</tspan><tspan
+ id="tspan4994"
+ y="547.45288"
+ x="512.97003"
+ sodipodi:role="line">_connection</tspan></text>
+ </g>
+ <g
+ transform="translate(71.103773,97.641513)"
+ id="g4996">
+ <g
+ id="g4998"
+ transform="translate(-543.63208,-537.67925)">
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.00000013, 1.00000004;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5000"
+ width="129.74631"
+ height="78.856773"
+ x="844.66315"
+ y="893.16675" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="965.6394"
+ y="910.86884"
+ id="text5002"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5004"
+ x="965.6394"
+ y="910.86884">protos</tspan></text>
+ </g>
+ <g
+ id="g5006"
+ transform="translate(-165.37736,-142.69811)">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5008"
+ width="79.92894"
+ height="24.974424"
+ x="493.30771"
+ y="545.87817" />
+ <rect
+ y="541.87817"
+ x="489.30771"
+ height="24.974424"
+ width="79.92894"
+ id="rect5010"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5012"
+ width="79.92894"
+ height="24.974424"
+ x="485.30771"
+ y="537.87817" />
+ <rect
+ y="533.87817"
+ x="481.30771"
+ height="24.974424"
+ width="79.92894"
+ id="rect5014"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5016"
+ width="79.92894"
+ height="24.974424"
+ x="477.30771"
+ y="529.87817" />
+ <rect
+ y="525.87817"
+ x="473.30771"
+ height="24.974424"
+ width="79.92894"
+ id="rect5018"
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text5020"
+ y="542.95288"
+ x="512.97003"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="542.95288"
+ x="512.97003"
+ id="tspan5022"
+ sodipodi:role="line">voltha</tspan></text>
+ </g>
+ </g>
+ <g
+ transform="translate(304.85722,-23.551916)"
+ id="g5028">
+ <rect
+ style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5030"
+ width="94.345947"
+ height="34.597065"
+ x="466.09918"
+ y="521.06683" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="512.97003"
+ y="542.95288"
+ id="text5032"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5034"
+ x="512.97003"
+ y="542.95288">grpc_client</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="311.14832"
+ y="1042.5872"
+ id="text4832-0"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4834-9"
+ x="311.14832"
+ y="1042.5872">Voltha Component Snapshot 11/30/2016</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="REST Device Operation"
+ style="display:inline">
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send)"
+ d="m 210.19277,38.622045 0,45.130738"
+ id="path5074"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5642);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 177.16535,120.11811 0,7.08661 -31.88976,0 -0.28351,75.827"
+ id="path5890"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker6186);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 194.88189,222.87401 53.14961,0"
+ id="path6232"
+ inkscape:connector-curvature="0" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker6254);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 294.09449,244.13386 0,28.34645 219.68504,0 0,35.43307"
+ id="path6246"
+ inkscape:connector-curvature="0" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker6338);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 513.77953,339.80315 0,21.25984 -92.12599,0 0,21.25984"
+ id="path6330"
+ inkscape:connector-curvature="0" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker6428);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 485.43307,400.03937 24.80315,0"
+ id="path6420"
+ inkscape:connector-curvature="0" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker6524);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 637.79528,400.03937 24.80315,0"
+ id="path6516"
+ inkscape:connector-curvature="0" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker6626);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 726.41128,415.45663 -0.0333,12.9292"
+ id="path6618"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker7299);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 574.01575,524.05512 0,17.71653"
+ id="path6756"
+ inkscape:connector-curvature="0" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker6878);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 510.23622,559.48819 -24.80315,0"
+ id="path6870"
+ inkscape:connector-curvature="0" />
+ <path
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker6998);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 421.65354,577.20472 0,53.14961"
+ id="path6990"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect7417"
+ width="639.93085"
+ height="96.591026"
+ x="248.03148"
+ y="428.38583"
+ ry="0" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="495.24677"
+ y="45.700596"
+ id="text4832-0-1"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4834-9-4"
+ x="495.24677"
+ y="45.700596">Propagation of REST Operation on a Device</tspan></text>
+ </g>
+</svg>