<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than draw.io -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1398px" height="1322px" viewBox="0 0 1398 1322" content="<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0" version="29.2.7"> <diagram name="第 1 页" id="YIh3J6XpkH3YtkhXfsbK"> <mxGraphModel dx="1637" dy="1092" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <mxCell id="94N08Kva36iO9Ms0-uW4-1" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Runtime Layer" vertex="1"> <mxGeometry height="538" width="670" x="10" y="640" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-2" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Execution Engine" vertex="1"> <mxGeometry height="385" width="696" x="710" y="671" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-3" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Orchestration Layer" vertex="1"> <mxGeometry height="464" width="246" x="846" y="133" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-4" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Definition Layer" vertex="1"> <mxGeometry height="230" width="325" x="1040" y="1110" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-5" parent="1" style="rounded=1;whiteSpace=wrap;arcSize=50;strokeWidth=2;" value="User / Client" vertex="1"> <mxGeometry height="39" width="117" x="910" y="20" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-6" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Orchid" vertex="1"> <mxGeometry height="54" width="107" x="915" y="158" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-7" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Recipe" vertex="1"> <mxGeometry height="54" width="108" x="1222" y="1135" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-42" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;dashed=1;curved=1;" target="94N08Kva36iO9Ms0-uW4-23"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-8" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Step" vertex="1"> <mxGeometry height="54" width="92" x="1069" y="1135" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-9" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Param" vertex="1"> <mxGeometry height="54" width="104" x="1063" y="1250" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-10" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Pipeline" vertex="1"> <mxGeometry height="54" width="117" x="910" y="262" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-11" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Operon Protocol" vertex="1"> <mxGeometry height="54" width="176" x="881" y="390" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-12" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Operon.Execute" vertex="1"> <mxGeometry height="54" width="175" x="881" y="518" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-13" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Executor Behaviour" vertex="1"> <mxGeometry height="54" width="199" x="870" y="696" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-14" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Executor.Async" vertex="1"> <mxGeometry height="54" width="167" x="777" y="849" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-15" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Executor.Serial" vertex="1"> <mxGeometry height="54" width="167" x="994" y="849" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-16" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Scheduler" vertex="1"> <mxGeometry height="54" width="130" x="1211" y="849" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-17" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Scheduler.Context" vertex="1"> <mxGeometry height="54" width="190" x="1181" y="977" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-18" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Runner" vertex="1"> <mxGeometry height="54" width="110" x="292" y="650" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-19" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Hooks Stack" vertex="1"> <mxGeometry height="54" width="145" x="275" y="778" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-20" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Hooks.Telemetry" vertex="1"> <mxGeometry height="54" width="180" x="45" y="956" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-21" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Extra Hooks" vertex="1"> <mxGeometry height="54" width="145" x="275" y="956" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-22" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Hooks.Core" vertex="1"> <mxGeometry height="54" width="141" x="469" y="956" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-23" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="Step Implementation" vertex="1"> <mxGeometry height="54" width="210" x="435" y="1084" as="geometry" /> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-24" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-5" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-6" value="Orchid.run/3"> <mxGeometry relative="1" as="geometry"> <Array as="points" /> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-25" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-7" style="curved=1;startArrow=none;endArrow=block;exitX=0;exitY=0.5;entryX=1;entryY=0.5;rounded=0;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" target="94N08Kva36iO9Ms0-uW4-8" value="contains"> <mxGeometry relative="1" as="geometry"> <Array as="points" /> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-26" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-8" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-9" value="io / payload"> <mxGeometry relative="1" as="geometry"> <Array as="points" /> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-27" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-6" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-10" value=""> <mxGeometry relative="1" as="geometry"> <Array as="points" /> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-28" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-10" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-11" value="Stack"> <mxGeometry relative="1" as="geometry"> <Array as="points" /> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-29" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-11" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-12" value="Impl"> <mxGeometry relative="1" as="geometry"> <Array as="points" /> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-30" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-12" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-13" value="Calls"> <mxGeometry relative="1" as="geometry"> <Array as="points" /> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-31" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-13" style="curved=1;dashed=1;dashPattern=2 3;startArrow=none;endArrow=block;exitX=0.27;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-14" value="Impl"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="860" y="787" /> </Array> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-32" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-13" style="curved=1;dashed=1;dashPattern=2 3;startArrow=none;endArrow=block;exitX=0.73;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-15" value="Impl"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="1078" y="787" /> </Array> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-33" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-13" style="curved=1;startArrow=block;endArrow=block;exitX=1;exitY=0.88;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-16" value="Get Ready / Merge"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="1276" y="787" /> </Array> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-34" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-16" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-17" value="Builds"> <mxGeometry relative="1" as="geometry"> <Array as="points" /> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-35" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-17" style="curved=1;dashed=1;dashPattern=2 3;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.49;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-7" value="Validates"> <mxGeometry relative="1" as="geometry"> <Array as="points" /> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-36" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-13" style="curved=1;startArrow=none;endArrow=block;exitX=0;exitY=0.5;entryX=0.5;entryY=0;rounded=0;entryDx=0;entryDy=0;exitDx=0;exitDy=0;" target="94N08Kva36iO9Ms0-uW4-18" value="Spawns/Calls"> <mxGeometry relative="1" x="-0.1637" y="30" as="geometry"> <mxPoint as="offset" /> <Array as="points"> <mxPoint x="630" y="560" /> </Array> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-37" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-18" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-19" value="onion model"> <mxGeometry relative="1" as="geometry"> <Array as="points" /> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-38" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-19" style="curved=1;startArrow=none;endArrow=block;exitX=0;exitY=0.83;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-20" value="1"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="135" y="857" /> </Array> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-39" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-19" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-21" value="2"> <mxGeometry relative="1" as="geometry"> <Array as="points" /> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-40" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-19" style="curved=1;startArrow=none;endArrow=block;exitX=1;exitY=0.86;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-22" value="3"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="540" y="857" /> </Array> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-41" edge="1" parent="1" source="94N08Kva36iO9Ms0-uW4-22" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="94N08Kva36iO9Ms0-uW4-23" value="Executes"> <mxGeometry relative="1" as="geometry"> <Array as="points" /> </mxGeometry> </mxCell> <mxCell id="94N08Kva36iO9Ms0-uW4-43" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="has" vertex="1"> <mxGeometry height="30" width="60" x="860" y="1120" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> </mxfile> "><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="94N08Kva36iO9Ms0-uW4-1"><g transform="translate(0.5,0.5)"><rect x="1" y="621" width="670" height="538" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 668px; height: 1px; padding-top: 890px; margin-left: 2px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Runtime Layer</div></div></div></foreignObject><text x="336" y="894" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Runtime Layer</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-2"><g transform="translate(0.5,0.5)"><rect x="701" y="652" width="696" height="385" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 694px; height: 1px; padding-top: 845px; margin-left: 702px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Execution Engine</div></div></div></foreignObject><text x="1049" y="848" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Execution Engine</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-3"><g transform="translate(0.5,0.5)"><rect x="837" y="114" width="246" height="464" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 244px; height: 1px; padding-top: 346px; margin-left: 838px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Orchestration Layer</div></div></div></foreignObject><text x="960" y="350" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Orchestration Layer</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-4"><g transform="translate(0.5,0.5)"><rect x="1031" y="1091" width="325" height="230" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 323px; height: 1px; padding-top: 1206px; margin-left: 1032px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Definition Layer</div></div></div></foreignObject><text x="1194" y="1210" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Definition Layer</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-5"><g transform="translate(0.5,0.5)"><rect x="901" y="1" width="117" height="39" rx="19.5" ry="19.5" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 115px; height: 1px; padding-top: 21px; margin-left: 902px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">User / Client</div></div></div></foreignObject><text x="960" y="24" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">User / Client</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-6"><g transform="translate(0.5,0.5)"><rect x="906" y="139" width="107" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 105px; height: 1px; padding-top: 166px; margin-left: 907px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Orchid</div></div></div></foreignObject><text x="960" y="170" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Orchid</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-7"><g transform="translate(0.5,0.5)"><rect x="1213" y="1116" width="108" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 106px; height: 1px; padding-top: 1143px; margin-left: 1214px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Recipe</div></div></div></foreignObject><text x="1267" y="1147" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Recipe</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-42"><g transform="translate(0.5,0.5)"><path d="M 1060 1143 Q 848 1143 848 1117.54 Q 848 1092.08 642.37 1092" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 637.12 1092 L 644.12 1088.5 L 642.37 1092 L 644.12 1095.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-8"><g transform="translate(0.5,0.5)"><rect x="1060" y="1116" width="92" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 90px; height: 1px; padding-top: 1143px; margin-left: 1061px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Step</div></div></div></foreignObject><text x="1106" y="1147" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Step</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-9"><g transform="translate(0.5,0.5)"><rect x="1054" y="1231" width="104" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 102px; height: 1px; padding-top: 1258px; margin-left: 1055px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Param</div></div></div></foreignObject><text x="1106" y="1262" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Param</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-10"><g transform="translate(0.5,0.5)"><rect x="901" y="243" width="117" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 115px; height: 1px; padding-top: 270px; margin-left: 902px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Pipeline</div></div></div></foreignObject><text x="960" y="274" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Pipeline</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-11"><g transform="translate(0.5,0.5)"><rect x="872" y="371" width="176" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 174px; height: 1px; padding-top: 398px; margin-left: 873px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Operon Protocol</div></div></div></foreignObject><text x="960" y="402" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Operon Protocol</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-12"><g transform="translate(0.5,0.5)"><rect x="872" y="499" width="175" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 173px; height: 1px; padding-top: 526px; margin-left: 873px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Operon.Execute</div></div></div></foreignObject><text x="960" y="530" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Operon.Execute</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-13"><g transform="translate(0.5,0.5)"><rect x="861" y="677" width="199" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 197px; height: 1px; padding-top: 704px; margin-left: 862px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Executor Behaviour</div></div></div></foreignObject><text x="960" y="708" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Executor Behaviour</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-14"><g transform="translate(0.5,0.5)"><rect x="768" y="830" width="167" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 165px; height: 1px; padding-top: 857px; margin-left: 769px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Executor.Async</div></div></div></foreignObject><text x="852" y="861" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Executor.Async</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-15"><g transform="translate(0.5,0.5)"><rect x="985" y="830" width="167" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 165px; height: 1px; padding-top: 857px; margin-left: 986px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Executor.Serial</div></div></div></foreignObject><text x="1069" y="861" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Executor.Serial</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-16"><g transform="translate(0.5,0.5)"><rect x="1202" y="830" width="130" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 857px; margin-left: 1203px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Scheduler</div></div></div></foreignObject><text x="1267" y="861" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Scheduler</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-17"><g transform="translate(0.5,0.5)"><rect x="1172" y="958" width="190" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 985px; margin-left: 1173px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Scheduler.Context</div></div></div></foreignObject><text x="1267" y="989" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Scheduler.Context</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-18"><g transform="translate(0.5,0.5)"><rect x="283" y="631" width="110" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 658px; margin-left: 284px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Runner</div></div></div></foreignObject><text x="338" y="662" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Runner</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-19"><g transform="translate(0.5,0.5)"><rect x="266" y="759" width="145" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 143px; height: 1px; padding-top: 786px; margin-left: 267px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Hooks Stack</div></div></div></foreignObject><text x="338" y="790" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Hooks Stack</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-20"><g transform="translate(0.5,0.5)"><rect x="36" y="937" width="180" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 964px; margin-left: 37px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Hooks.Telemetry</div></div></div></foreignObject><text x="126" y="968" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Hooks.Telemetry</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-21"><g transform="translate(0.5,0.5)"><rect x="266" y="937" width="145" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 143px; height: 1px; padding-top: 964px; margin-left: 267px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Extra Hooks</div></div></div></foreignObject><text x="338" y="968" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Extra Hooks</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-22"><g transform="translate(0.5,0.5)"><rect x="460" y="937" width="141" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 139px; height: 1px; padding-top: 964px; margin-left: 461px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Hooks.Core</div></div></div></foreignObject><text x="531" y="968" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Hooks.Core</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-23"><g transform="translate(0.5,0.5)"><rect x="426" y="1065" width="210" height="54" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 208px; height: 1px; padding-top: 1092px; margin-left: 427px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Step Implementation</div></div></div></foreignObject><text x="531" y="1096" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Step Implementation</text></switch></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-24"><g transform="translate(0.5,0.5)"><path d="M 959.5 40 Q 959.5 40 959.5 130.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 959.5 137.88 L 956 130.88 L 963 130.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="929" y="83" width="62" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="959.5" y="93.73">Orchid.run/3</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-25"><g transform="translate(0.5,0.5)"><path d="M 1213 1143 Q 1213 1143 1160.12 1143" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 1153.12 1143 L 1160.12 1139.5 L 1160.12 1146.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="1161" y="1137" width="43" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="1182.23" y="1147.5">contains</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-26"><g transform="translate(0.5,0.5)"><path d="M 1106 1170 Q 1106 1170 1106 1222.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 1106 1229.88 L 1102.5 1222.88 L 1109.5 1222.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="1078" y="1195" width="58" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="1106" y="1205.27">io / payload</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-27"><g transform="translate(0.5,0.5)"><path d="M 959.5 193 Q 959.5 193 959.5 234.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 959.5 241.88 L 956 234.88 L 963 234.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-28"><g transform="translate(0.5,0.5)"><path d="M 959.5 297 Q 959.5 297 959.95 362.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 959.99 369.88 L 956.45 362.91 L 963.45 362.86 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="945" y="328" width="30" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="959.75" y="338.42">Stack</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-29"><g transform="translate(0.5,0.5)"><path d="M 960 425 Q 960 425 959.55 490.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 959.51 497.88 L 956.05 490.86 L 963.05 490.91 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="949" y="456" width="23" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="959.75" y="466.42">Impl</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-30"><g transform="translate(0.5,0.5)"><path d="M 959.5 553 Q 959.5 553 960.43 668.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 960.49 675.88 L 956.93 668.91 L 963.93 668.85 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="947" y="609" width="26" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="960" y="619.04">Calls</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-31"><g transform="translate(0.5,0.5)"><path d="M 914.73 731 Q 851 768 851.43 821.88" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="2 3" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 851.49 828.88 L 847.93 821.91 L 854.93 821.85 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="845" y="759" width="23" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="856.19" y="769.49">Impl</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-32"><g transform="translate(0.5,0.5)"><path d="M 1006.27 731 Q 1069 768 1068.57 821.88" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="2 3" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 1068.51 828.88 L 1065.07 821.85 L 1072.07 821.91 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="1054" y="759" width="23" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="1064.58" y="769.89">Impl</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-33"><g transform="translate(0.5,0.5)"><path d="M 1067.94 726.19 Q 1267 768 1267 821.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 1061.09 724.75 L 1068.66 722.76 L 1067.23 729.61 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 1267 828.88 L 1263.5 821.88 L 1270.5 821.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="1147" y="747" width="95" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="1194" y="757.17">Get Ready / Merge</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-34"><g transform="translate(0.5,0.5)"><path d="M 1267 884 Q 1267 884 1267 949.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 1267 956.88 L 1263.5 949.88 L 1270.5 949.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="1252" y="915" width="32" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="1267" y="925.42">Builds</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-35"><g transform="translate(0.5,0.5)"><path d="M 1267 1012 Q 1267 1012 1266 1107.88" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="2 3" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 1265.93 1114.88 L 1262.5 1107.85 L 1269.5 1107.92 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="1244" y="1058" width="46" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="1266.46" y="1068.8">Validates</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-36"><g transform="translate(0.5,0.5)"><path d="M 861 704 Q 621 541 345.74 628.54" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 339.07 630.66 L 344.68 625.2 L 346.8 631.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="607" y="585" width="69" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="640.51" y="595.02">Spawns/Calls</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-37"><g transform="translate(0.5,0.5)"><path d="M 338 685 Q 338 685 338.45 750.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 338.49 757.88 L 334.95 750.91 L 341.95 750.86 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="308" y="716" width="62" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="338.25" y="726.42">onion model</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-38"><g transform="translate(0.5,0.5)"><path d="M 266 803.82 Q 126 838 126 928.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 126 935.88 L 122.5 928.88 L 129.5 928.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="144" y="827" width="8" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="147.93" y="837.15">1</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-39"><g transform="translate(0.5,0.5)"><path d="M 338.5 813 Q 338.5 813 338.5 928.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 338.5 935.88 L 335 928.88 L 342 928.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="335" y="869" width="8" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="338.5" y="879.04">2</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-40"><g transform="translate(0.5,0.5)"><path d="M 411 805.44 Q 531 838 530.54 928.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 530.51 935.88 L 527.04 928.86 L 534.04 928.9 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="516" y="829" width="8" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="519.39" y="839.35">3</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-41"><g transform="translate(0.5,0.5)"><path d="M 530.5 991 Q 530.5 991 530.95 1056.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 530.99 1063.88 L 527.45 1056.91 L 534.45 1056.86 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="11px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><rect fill="#ffffff" stroke="none" x="508" y="1022" width="47" height="14" stroke-width="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><text x="530.75" y="1032.42">Executes</text></g></g></g><g data-cell-id="94N08Kva36iO9Ms0-uW4-43"><g transform="translate(0.5,0.5)"><rect x="851" y="1101" width="60" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 1116px; margin-left: 852px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">has</div></div></div></foreignObject><text x="881" y="1120" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">has</text></switch></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>