Files
blog/load-balancing-my-homelab/img/infrastructure-overview.svg
T

1 line
84 KiB
XML

<svg id="architecture" width="3452.69580078125" xmlns="http://www.w3.org/2000/svg" class="flowchart" height="2687.199951171875" viewBox="0 0 3452.69580078125 2687.199951171875" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#architecture{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#architecture .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#architecture .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#architecture .error-icon{fill:#a44141;}#architecture .error-text{fill:#ddd;stroke:#ddd;}#architecture .edge-thickness-normal{stroke-width:1px;}#architecture .edge-thickness-thick{stroke-width:3.5px;}#architecture .edge-pattern-solid{stroke-dasharray:0;}#architecture .edge-thickness-invisible{stroke-width:0;fill:none;}#architecture .edge-pattern-dashed{stroke-dasharray:3;}#architecture .edge-pattern-dotted{stroke-dasharray:2;}#architecture .marker{fill:lightgrey;stroke:lightgrey;}#architecture .marker.cross{stroke:lightgrey;}#architecture svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#architecture p{margin:0;}#architecture .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#ccc;}#architecture .cluster-label text{fill:#F9FFFE;}#architecture .cluster-label span{color:#F9FFFE;}#architecture .cluster-label span p{background-color:transparent;}#architecture .label text,#architecture span{fill:#ccc;color:#ccc;}#architecture .node rect,#architecture .node circle,#architecture .node ellipse,#architecture .node polygon,#architecture .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#architecture .rough-node .label text,#architecture .node .label text,#architecture .image-shape .label,#architecture .icon-shape .label{text-anchor:middle;}#architecture .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#architecture .rough-node .label,#architecture .node .label,#architecture .image-shape .label,#architecture .icon-shape .label{text-align:center;}#architecture .node.clickable{cursor:pointer;}#architecture .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#architecture .arrowheadPath{fill:lightgrey;}#architecture .edgePath .path{stroke:lightgrey;stroke-width:2.0px;}#architecture .flowchart-link{stroke:lightgrey;fill:none;}#architecture .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#architecture .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#architecture .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#architecture .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#architecture .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#architecture .cluster text{fill:#F9FFFE;}#architecture .cluster span{color:#F9FFFE;}#architecture div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#architecture .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#architecture rect.text{fill:none;stroke-width:0;}#architecture .icon-shape,#architecture .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#architecture .icon-shape p,#architecture .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#architecture .icon-shape rect,#architecture .image-shape rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#architecture .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#architecture .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#architecture :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#architecture .public rect{fill:#233d58!important;stroke:#7ab5dc!important;color:#f2f6ff!important;}#architecture .public polygon{fill:#233d58!important;stroke:#7ab5dc!important;color:#f2f6ff!important;}#architecture .public ellipse{fill:#233d58!important;stroke:#7ab5dc!important;color:#f2f6ff!important;}#architecture .public circle{fill:#233d58!important;stroke:#7ab5dc!important;color:#f2f6ff!important;}#architecture .public path{fill:#233d58!important;stroke:#7ab5dc!important;color:#f2f6ff!important;}#architecture .public tspan{fill:#f2f6ff!important;}#architecture .edge rect{fill:#284c44!important;stroke:#7bc8a7!important;color:#f2f6ff!important;}#architecture .edge polygon{fill:#284c44!important;stroke:#7bc8a7!important;color:#f2f6ff!important;}#architecture .edge ellipse{fill:#284c44!important;stroke:#7bc8a7!important;color:#f2f6ff!important;}#architecture .edge circle{fill:#284c44!important;stroke:#7bc8a7!important;color:#f2f6ff!important;}#architecture .edge path{fill:#284c44!important;stroke:#7bc8a7!important;color:#f2f6ff!important;}#architecture .edge tspan{fill:#f2f6ff!important;}#architecture .origin rect{fill:#514132!important;stroke:#d6b48c!important;color:#f2f6ff!important;}#architecture .origin polygon{fill:#514132!important;stroke:#d6b48c!important;color:#f2f6ff!important;}#architecture .origin ellipse{fill:#514132!important;stroke:#d6b48c!important;color:#f2f6ff!important;}#architecture .origin circle{fill:#514132!important;stroke:#d6b48c!important;color:#f2f6ff!important;}#architecture .origin path{fill:#514132!important;stroke:#d6b48c!important;color:#f2f6ff!important;}#architecture .origin tspan{fill:#f2f6ff!important;}#architecture .ops rect{fill:#43395c!important;stroke:#b4a0de!important;color:#f2f6ff!important;}#architecture .ops polygon{fill:#43395c!important;stroke:#b4a0de!important;color:#f2f6ff!important;}#architecture .ops ellipse{fill:#43395c!important;stroke:#b4a0de!important;color:#f2f6ff!important;}#architecture .ops circle{fill:#43395c!important;stroke:#b4a0de!important;color:#f2f6ff!important;}#architecture .ops path{fill:#43395c!important;stroke:#b4a0de!important;color:#f2f6ff!important;}#architecture .ops tspan{fill:#f2f6ff!important;}#architecture .monitor rect{fill:#34495b!important;stroke:#9bbdd4!important;color:#f2f6ff!important;}#architecture .monitor polygon{fill:#34495b!important;stroke:#9bbdd4!important;color:#f2f6ff!important;}#architecture .monitor ellipse{fill:#34495b!important;stroke:#9bbdd4!important;color:#f2f6ff!important;}#architecture .monitor circle{fill:#34495b!important;stroke:#9bbdd4!important;color:#f2f6ff!important;}#architecture .monitor path{fill:#34495b!important;stroke:#9bbdd4!important;color:#f2f6ff!important;}#architecture .monitor tspan{fill:#f2f6ff!important;}#architecture .note rect{fill:#4c303a!important;stroke:#dd9ba7!important;color:#fff5f6!important;}#architecture .note polygon{fill:#4c303a!important;stroke:#dd9ba7!important;color:#fff5f6!important;}#architecture .note ellipse{fill:#4c303a!important;stroke:#dd9ba7!important;color:#fff5f6!important;}#architecture .note circle{fill:#4c303a!important;stroke:#dd9ba7!important;color:#fff5f6!important;}#architecture .note path{fill:#4c303a!important;stroke:#dd9ba7!important;color:#fff5f6!important;}#architecture .note tspan{fill:#fff5f6!important;}</style><g><marker id="architecture_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker><marker id="architecture_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker><marker id="architecture_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></circle></marker><marker id="architecture_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></circle></marker><marker id="architecture_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2px; stroke-dasharray: 1px, 0px;"></path></marker><marker id="architecture_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2px; stroke-dasharray: 1px, 0px;"></path></marker><g class="root"><g class="clusters"><g class="cluster" id="MONITORING" data-look="classic"><rect style="" x="8" y="232" width="868.7624969482422" height="563.5999984741211"></rect><g class="cluster-label" transform="translate(363.6479187011719, 232)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Monitoring</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> outside</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> the</tspan></tspan><tspan class="text-outer-tspan" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">mesh</tspan></tspan></text></g></g></g><g class="cluster" id="OPS" data-look="classic"><rect style="" x="2483.6833362579346" y="8" width="961.0125026702881" height="1035.599998474121"></rect><g class="cluster-label" transform="translate(2879.6812562942505, 8)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Deployment</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> and</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> control</tspan></tspan></text></g></g></g><g class="cluster" id="ORIGINS" data-look="classic"><rect style="" x="1931.7166652679443" y="1879.1999969482422" width="640" height="800"></rect><g class="cluster-label" transform="translate(2173.8833293914795, 1879.1999969482422)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Shared</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> private</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> origins</tspan></tspan></text></g></g></g><g class="cluster" id="EDGES" data-look="classic"><rect style="" x="1089.7624988555908" y="546.5999984741211" width="1346.9541664123535" height="1034.599998474121"></rect><g class="cluster-label" transform="translate(1687.6312446594238, 546.5999984741211)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Dedicated</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> entry</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> layer</tspan></tspan></text></g></g></g><g class="cluster" id="PUBLIC" data-look="classic"><rect style="" x="896.7624969482422" y="8" width="1412.9083404541016" height="448"></rect><g class="cluster-label" transform="translate(1554.308334350586, 8)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Public</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> access</tspan></tspan></text></g></g></g><g class="cluster" id="EDGEB" data-look="classic"><rect style="" x="1802.412498474121" y="571.5999984741211" width="614.3041667938232" height="984.5999984741211"></rect><g class="cluster-label" transform="translate(2084.647915840149, 571.5999984741211)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">edge-b</tspan></tspan></text></g></g></g><g class="cluster" id="EDGEA" data-look="classic"><rect style="" x="1109.7624988555908" y="571.5999984741211" width="602.1625003814697" height="984.5999984741211"></rect><g class="cluster-label" transform="translate(1385.927083015442, 571.5999984741211)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">edge-a</tspan></tspan></text></g></g></g></g><g class="edgePaths"><path d="M1596.308,123L1596.308,135.083C1596.308,147.167,1596.308,171.333,1596.308,189.5C1596.308,207.667,1596.308,219.833,1596.308,235.417C1596.308,251,1596.308,270,1596.308,279.5L1596.308,289" id="L_WEB_CF_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_WEB_CF_0" data-points="W3sieCI6MTU5Ni4zMDgzMzgxNjUyODMyLCJ5IjoxMjN9LHsieCI6MTU5Ni4zMDgzMzgxNjUyODMyLCJ5IjoxOTUuNX0seyJ4IjoxNTk2LjMwODMzODE2NTI4MzIsInkiOjIzMn0seyJ4IjoxNTk2LjMwODMzODE2NTI4MzIsInkiOjI5M31d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M1233.352,123L1204.754,135.083C1176.155,147.167,1118.959,171.333,1090.361,189.5C1061.762,207.667,1061.762,219.833,1061.762,235.417C1061.762,251,1061.762,270,1061.762,279.5L1061.762,289" id="L_MEDIA_DNS_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MEDIA_DNS_0" data-points="W3sieCI6MTIzMy4zNTE5MDY1NzAzNTc5LCJ5IjoxMjN9LHsieCI6MTA2MS43NjI0OTY5NDgyNDIyLCJ5IjoxOTUuNX0seyJ4IjoxMDYxLjc2MjQ5Njk0ODI0MjIsInkiOjIzMn0seyJ4IjoxMDYxLjc2MjQ5Njk0ODI0MjIsInkiOjI5M31d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M1343.058,770.6L1343.058,774.767C1343.058,778.933,1343.058,787.267,1343.058,797.517C1343.058,807.767,1343.058,819.933,1343.058,833.433C1343.058,846.933,1343.058,861.767,1343.058,869.183L1343.058,876.6" id="L_HA_SELECTA_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_HA_SELECTA_0" data-points="W3sieCI6MTM0My4wNTgzMzA1MzU4ODg3LCJ5Ijo3NzAuNTk5OTk4NDc0MTIxMX0seyJ4IjoxMzQzLjA1ODMzMDUzNTg4ODcsInkiOjc5NS41OTk5OTg0NzQxMjExfSx7IngiOjEzNDMuMDU4MzMwNTM1ODg4NywieSI6ODMyLjA5OTk5ODQ3NDEyMTF9LHsieCI6MTM0My4wNTgzMzA1MzU4ODg3LCJ5Ijo4ODAuNTk5OTk4NDc0MTIxMX1d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M1300.032,1006.6L1295.82,1012.767C1291.609,1018.933,1283.186,1031.267,1278.974,1044.983C1274.762,1058.7,1274.762,1073.8,1274.762,1088.233C1274.762,1102.667,1274.762,1116.433,1274.762,1123.317L1274.762,1130.2" id="L_SELECTA_GWA_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SELECTA_GWA_0" data-points="W3sieCI6MTMwMC4wMzE5NTY1NzczMDExLCJ5IjoxMDA2LjU5OTk5ODQ3NDEyMTF9LHsieCI6MTI3NC43NjI0OTg4NTU1OTA4LCJ5IjoxMDQzLjU5OTk5ODQ3NDEyMX0seyJ4IjoxMjc0Ljc2MjQ5ODg1NTU5MDgsInkiOjEwODguODk5OTk3NzExMTgxNn0seyJ4IjoxMjc0Ljc2MjQ5ODg1NTU5MDgsInkiOjExMzQuMTk5OTk2OTQ4MjQyMn1d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M1274.762,1284.2L1274.762,1290.283C1274.762,1296.367,1274.762,1308.533,1274.762,1320.033C1274.762,1331.533,1274.762,1342.367,1274.762,1347.783L1274.762,1353.2" id="L_GWA_ANA_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_GWA_ANA_0" data-points="W3sieCI6MTI3NC43NjI0OTg4NTU1OTA4LCJ5IjoxMjg0LjE5OTk5Njk0ODI0MjJ9LHsieCI6MTI3NC43NjI0OTg4NTU1OTA4LCJ5IjoxMzIwLjY5OTk5Njk0ODI0MjJ9LHsieCI6MTI3NC43NjI0OTg4NTU1OTA4LCJ5IjoxMzU3LjE5OTk5Njk0ODI0MjJ9XQ==" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2183.683,770.6L2183.683,774.767C2183.683,778.933,2183.683,787.267,2183.683,797.517C2183.683,807.767,2183.683,819.933,2183.683,833.433C2183.683,846.933,2183.683,861.767,2183.683,869.183L2183.683,876.6" id="L_HB_SELECTB_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_HB_SELECTB_0" data-points="W3sieCI6MjE4My42ODMzMzQzNTA1ODYsInkiOjc3MC41OTk5OTg0NzQxMjExfSx7IngiOjIxODMuNjgzMzM0MzUwNTg2LCJ5Ijo3OTUuNTk5OTk4NDc0MTIxMX0seyJ4IjoyMTgzLjY4MzMzNDM1MDU4NiwieSI6ODMyLjA5OTk5ODQ3NDEyMTF9LHsieCI6MjE4My42ODMzMzQzNTA1ODYsInkiOjg4MC41OTk5OTg0NzQxMjExfV0=" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2226.544,1006.6L2230.74,1012.767C2234.935,1018.933,2243.326,1031.267,2247.521,1044.983C2251.717,1058.7,2251.717,1073.8,2251.717,1088.233C2251.717,1102.667,2251.717,1116.433,2251.717,1123.317L2251.717,1130.2" id="L_SELECTB_GWB_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SELECTB_GWB_0" data-points="W3sieCI6MjIyNi41NDQzMzI4Mjg1MjIsInkiOjEwMDYuNTk5OTk4NDc0MTIxMX0seyJ4IjoyMjUxLjcxNjY2NTI2Nzk0NDMsInkiOjEwNDMuNTk5OTk4NDc0MTIxfSx7IngiOjIyNTEuNzE2NjY1MjY3OTQ0MywieSI6MTA4OC44OTk5OTc3MTExODE2fSx7IngiOjIyNTEuNzE2NjY1MjY3OTQ0MywieSI6MTEzNC4xOTk5OTY5NDgyNDIyfV0=" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2251.717,1284.2L2251.717,1290.283C2251.717,1296.367,2251.717,1308.533,2251.717,1320.033C2251.717,1331.533,2251.717,1342.367,2251.717,1347.783L2251.717,1353.2" id="L_GWB_ANB_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_GWB_ANB_0" data-points="W3sieCI6MjI1MS43MTY2NjUyNjc5NDQzLCJ5IjoxMjg0LjE5OTk5Njk0ODI0MjJ9LHsieCI6MjI1MS43MTY2NjUyNjc5NDQzLCJ5IjoxMzIwLjY5OTk5Njk0ODI0MjJ9LHsieCI6MjI1MS43MTY2NjUyNjc5NDQzLCJ5IjoxMzU3LjE5OTk5Njk0ODI0MjJ9XQ==" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M1473.058,999.473L1490.17,1006.827C1507.282,1014.182,1541.506,1028.891,1558.617,1043.795C1575.729,1058.7,1575.729,1073.8,1666.071,1097.427C1756.412,1121.055,1937.095,1153.209,2027.437,1169.287L2117.779,1185.364" id="L_SELECTA_GWB_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SELECTA_GWB_0" data-points="W3sieCI6MTQ3My4wNTgzMzA1MzU4ODg3LCJ5Ijo5OTkuNDcyOTIyNDA4ODAzNX0seyJ4IjoxNTc1LjcyOTE2NzkzODIzMjQsInkiOjEwNDMuNTk5OTk4NDc0MTIxfSx7IngiOjE1NzUuNzI5MTY3OTM4MjMyNCwieSI6MTA4OC44OTk5OTc3MTExODE2fSx7IngiOjIxMjEuNzE2NjY1MjY3OTQ0MywieSI6MTE4Ni4wNjQ5NTM4MjYwMDIyfV0=" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2053.683,996.645L2034.504,1004.471C2015.325,1012.297,1976.967,1027.948,1957.787,1043.324C1938.608,1058.7,1938.608,1073.8,1850.29,1097.355C1761.972,1120.91,1585.335,1152.919,1497.017,1168.924L1408.698,1184.929" id="L_SELECTB_GWA_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SELECTB_GWA_0" data-points="W3sieCI6MjA1My42ODMzMzQzNTA1ODYsInkiOjk5Ni42NDQ5ODM3MTIwMjUxfSx7IngiOjE5MzguNjA4MzI5NzcyOTQ5MiwieSI6MTA0My41OTk5OTg0NzQxMjF9LHsieCI6MTkzOC42MDgzMjk3NzI5NDkyLCJ5IjoxMDg4Ljg5OTk5NzcxMTE4MTZ9LHsieCI6MTQwNC43NjI0OTg4NTU1OTA4LCJ5IjoxMTg1LjY0MTgxNjQ2MDQ1MjR9XQ==" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M1471.117,375.4L1417.558,388.833C1363.999,402.267,1256.881,429.133,1203.322,450.117C1149.762,471.1,1149.762,486.2,1149.762,501.3C1149.762,516.4,1149.762,531.5,1149.762,543.217C1149.762,554.933,1149.762,563.267,1159.735,573.212C1169.707,583.157,1189.652,594.713,1199.625,600.491L1209.597,606.27" id="L_CF_HA_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CF_HA_0" data-points="W3sieCI6MTQ3MS4xMTY2NzI1MTU4NjkxLCJ5IjozNzUuMzk5ODM2OTY3MjYzOX0seyJ4IjoxMTQ5Ljc2MjQ5ODg1NTU5MDgsInkiOjQ1Nn0seyJ4IjoxMTQ5Ljc2MjQ5ODg1NTU5MDgsInkiOjUwMS4yOTk5OTkyMzcwNjA1NX0seyJ4IjoxMTQ5Ljc2MjQ5ODg1NTU5MDgsInkiOjU0Ni41OTk5OTg0NzQxMjExfSx7IngiOjExNDkuNzYyNDk4ODU1NTkwOCwieSI6NTcxLjU5OTk5ODQ3NDEyMTF9LHsieCI6MTIxMy4wNTgzMzA1MzU4ODg3LCJ5Ijo2MDguMjc1MDQyNTU4NDU3NH1d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M1715.931,395L1739.777,405.167C1763.623,415.333,1811.316,435.667,1835.162,453.383C1859.008,471.1,1859.008,486.2,1859.008,501.3C1859.008,516.4,1859.008,531.5,1859.008,543.217C1859.008,554.933,1859.008,563.267,1890.824,578.408C1922.64,593.55,1986.271,615.5,2018.086,626.476L2049.902,637.451" id="L_CF_HB_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CF_HB_0" data-points="W3sieCI6MTcxNS45MzA2NTY0NjcxNjU0LCJ5IjozOTV9LHsieCI6MTg1OS4wMDgzMzEyOTg4MjgxLCJ5Ijo0NTZ9LHsieCI6MTg1OS4wMDgzMzEyOTg4MjgxLCJ5Ijo1MDEuMjk5OTk5MjM3MDYwNTV9LHsieCI6MTg1OS4wMDgzMzEyOTg4MjgxLCJ5Ijo1NDYuNTk5OTk4NDc0MTIxMX0seyJ4IjoxODU5LjAwODMzMTI5ODgyODEsInkiOjU3MS41OTk5OTg0NzQxMjExfSx7IngiOjIwNTMuNjgzMzM0MzUwNTg2LCJ5Ijo2MzguNzU1MTU0MDUwNzkxOX1d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M1301.829,123L1303.876,135.083C1305.923,147.167,1310.018,171.333,1312.065,189.5C1314.113,207.667,1314.113,219.833,1314.113,244.583C1314.113,269.333,1314.113,306.667,1314.113,344C1314.113,381.333,1314.113,418.667,1314.113,444.883C1314.113,471.1,1314.113,486.2,1314.113,501.3C1314.113,516.4,1314.113,531.5,1314.113,543.217C1314.113,554.933,1314.113,563.267,1315.023,570.955C1315.933,578.642,1317.753,585.685,1318.663,589.206L1319.573,592.727" id="L_MEDIA_HA_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MEDIA_HA_0" data-points="W3sieCI6MTMwMS44Mjg3OTI2NDg2OTg3LCJ5IjoxMjN9LHsieCI6MTMxNC4xMTI1MDMwNTE3NTc4LCJ5IjoxOTUuNX0seyJ4IjoxMzE0LjExMjUwMzA1MTc1NzgsInkiOjIzMn0seyJ4IjoxMzE0LjExMjUwMzA1MTc1NzgsInkiOjM0NH0seyJ4IjoxMzE0LjExMjUwMzA1MTc1NzgsInkiOjQ1Nn0seyJ4IjoxMzE0LjExMjUwMzA1MTc1NzgsInkiOjUwMS4yOTk5OTkyMzcwNjA1NX0seyJ4IjoxMzE0LjExMjUwMzA1MTc1NzgsInkiOjU0Ni41OTk5OTg0NzQxMjExfSx7IngiOjEzMTQuMTEyNTAzMDUxNzU3OCwieSI6NTcxLjU5OTk5ODQ3NDEyMTF9LHsieCI6MTMyMC41NzM2MjUyNTgwMzcsInkiOjU5Ni41OTk5OTg0NzQxMjExfV0=" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M1397.063,107.278L1527.189,121.982C1657.315,136.685,1917.568,166.093,2047.694,186.88C2177.821,207.667,2177.821,219.833,2177.821,244.583C2177.821,269.333,2177.821,306.667,2177.821,344C2177.821,381.333,2177.821,418.667,2177.821,444.883C2177.821,471.1,2177.821,486.2,2177.821,501.3C2177.821,516.4,2177.821,531.5,2177.821,543.217C2177.821,554.933,2177.821,563.267,2178.004,570.934C2178.187,578.602,2178.554,585.604,2178.737,589.105L2178.92,592.605" id="L_MEDIA_HB_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MEDIA_HB_0" data-points="W3sieCI6MTM5Ny4wNjI1MDM4MTQ2OTczLCJ5IjoxMDcuMjc3ODg0NTg1MzA1NzN9LHsieCI6MjE3Ny44MjA4Mzg5MjgyMjI3LCJ5IjoxOTUuNX0seyJ4IjoyMTc3LjgyMDgzODkyODIyMjcsInkiOjIzMn0seyJ4IjoyMTc3LjgyMDgzODkyODIyMjcsInkiOjM0NH0seyJ4IjoyMTc3LjgyMDgzODkyODIyMjcsInkiOjQ1Nn0seyJ4IjoyMTc3LjgyMDgzODkyODIyMjcsInkiOjUwMS4yOTk5OTkyMzcwNjA1NX0seyJ4IjoyMTc3LjgyMDgzODkyODIyMjcsInkiOjU0Ni41OTk5OTg0NzQxMjExfSx7IngiOjIxNzcuODIwODM4OTI4MjIyNywieSI6NTcxLjU5OTk5ODQ3NDEyMTF9LHsieCI6MjE3OS4xMjk0MzE2NTY0Mjg2LCJ5Ijo1OTYuNTk5OTk4NDc0MTIxMX1d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M1771.5,406.114L1754.099,414.428C1736.697,422.743,1701.894,439.371,1684.493,455.236C1667.092,471.1,1667.092,486.2,1667.092,501.3C1667.092,516.4,1667.092,531.5,1667.092,543.217C1667.092,554.933,1667.092,563.267,1635.383,578.393C1603.674,593.52,1540.256,615.44,1508.548,626.4L1476.839,637.36" id="L_PROBE_HA_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_PROBE_HA_0" data-points="W3sieCI6MTc3MS41MDAwMDM4MTQ2OTczLCJ5Ijo0MDYuMTEzODMwODEyNDc4OH0seyJ4IjoxNjY3LjA5MTY2MzM2MDU5NTcsInkiOjQ1Nn0seyJ4IjoxNjY3LjA5MTY2MzM2MDU5NTcsInkiOjUwMS4yOTk5OTkyMzcwNjA1NX0seyJ4IjoxNjY3LjA5MTY2MzM2MDU5NTcsInkiOjU0Ni41OTk5OTg0NzQxMjExfSx7IngiOjE2NjcuMDkxNjYzMzYwNTk1NywieSI6NTcxLjU5OTk5ODQ3NDEyMTF9LHsieCI6MTQ3My4wNTgzMzA1MzU4ODg3LCJ5Ijo2MzguNjY2MzQ5NjAyMDI2M31d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2031.5,381.509L2074.528,393.924C2117.557,406.34,2203.614,431.17,2246.642,451.135C2289.671,471.1,2289.671,486.2,2289.671,501.3C2289.671,516.4,2289.671,531.5,2289.671,543.217C2289.671,554.933,2289.671,563.267,2286.186,571.116C2282.701,578.965,2275.732,586.33,2272.247,590.012L2268.762,593.695" id="L_PROBE_HB_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_PROBE_HB_0" data-points="W3sieCI6MjAzMS41MDAwMDM4MTQ2OTczLCJ5IjozODEuNTA5MjU4MTQxMzk2MjN9LHsieCI6MjI4OS42NzA4Mzc0MDIzNDM4LCJ5Ijo0NTZ9LHsieCI6MjI4OS42NzA4Mzc0MDIzNDM4LCJ5Ijo1MDEuMjk5OTk5MjM3MDYwNTV9LHsieCI6MjI4OS42NzA4Mzc0MDIzNDM4LCJ5Ijo1NDYuNTk5OTk4NDc0MTIxMX0seyJ4IjoyMjg5LjY3MDgzNzQwMjM0MzgsInkiOjU3MS41OTk5OTg0NzQxMjExfSx7IngiOjIyNjYuMDEyOTEyNjE0MDA1LCJ5Ijo1OTYuNTk5OTk4NDc0MTIxMX1d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M1274.762,1531.2L1274.762,1535.367C1274.762,1539.533,1274.762,1547.867,1274.762,1556.2C1274.762,1564.533,1274.762,1572.867,1274.762,1581.2C1274.762,1589.533,1274.762,1597.867,1415.26,1619.866C1555.758,1641.865,1836.753,1677.531,1977.251,1695.363L2117.749,1713.196" id="L_ANA_MESH_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_ANA_MESH_0" data-points="W3sieCI6MTI3NC43NjI0OTg4NTU1OTA4LCJ5IjoxNTMxLjE5OTk5Njk0ODI0MjJ9LHsieCI6MTI3NC43NjI0OTg4NTU1OTA4LCJ5IjoxNTU2LjE5OTk5Njk0ODI0MjJ9LHsieCI6MTI3NC43NjI0OTg4NTU1OTA4LCJ5IjoxNTgxLjE5OTk5Njk0ODI0MjJ9LHsieCI6MTI3NC43NjI0OTg4NTU1OTA4LCJ5IjoxNjA2LjE5OTk5Njk0ODI0MjJ9LHsieCI6MjEyMS43MTY2NjUyNjc5NDQzLCJ5IjoxNzEzLjY5OTczNDY0OTE0NDZ9XQ==" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2251.717,1531.2L2251.717,1535.367C2251.717,1539.533,2251.717,1547.867,2251.717,1556.2C2251.717,1564.533,2251.717,1572.867,2251.717,1581.2C2251.717,1589.533,2251.717,1597.867,2251.717,1605.533C2251.717,1613.2,2251.717,1620.2,2251.717,1623.7L2251.717,1627.2" id="L_ANB_MESH_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_ANB_MESH_0" data-points="W3sieCI6MjI1MS43MTY2NjUyNjc5NDQzLCJ5IjoxNTMxLjE5OTk5Njk0ODI0MjJ9LHsieCI6MjI1MS43MTY2NjUyNjc5NDQzLCJ5IjoxNTU2LjE5OTk5Njk0ODI0MjJ9LHsieCI6MjI1MS43MTY2NjUyNjc5NDQzLCJ5IjoxNTgxLjE5OTk5Njk0ODI0MjJ9LHsieCI6MjI1MS43MTY2NjUyNjc5NDQzLCJ5IjoxNjA2LjE5OTk5Njk0ODI0MjJ9LHsieCI6MjI1MS43MTY2NjUyNjc5NDQzLCJ5IjoxNjMxLjE5OTk5Njk0ODI0MjJ9XQ==" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2096.717,2006.2L2096.717,2010.367C2096.717,2014.533,2096.717,2022.867,2096.717,2048.533C2096.717,2074.2,2096.717,2117.2,2096.717,2138.7L2096.717,2160.2" id="L_ROUTER_FW_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_ROUTER_FW_0" data-points="W3sieCI6MjA5Ni43MTY2NjUyNjc5NDQzLCJ5IjoyMDA2LjE5OTk5Njk0ODI0MjJ9LHsieCI6MjA5Ni43MTY2NjUyNjc5NDQzLCJ5IjoyMDMxLjE5OTk5Njk0ODI0MjJ9LHsieCI6MjA5Ni43MTY2NjUyNjc5NDQzLCJ5IjoyMTY0LjE5OTk5Njk0ODI0Mn1d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2096.717,2242.2L2096.717,2264.367C2096.717,2286.533,2096.717,2330.867,2096.717,2356.533C2096.717,2382.2,2096.717,2389.2,2096.717,2392.7L2096.717,2396.2" id="L_FW_NPM_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_FW_NPM_0" data-points="W3sieCI6MjA5Ni43MTY2NjUyNjc5NDQzLCJ5IjoyMjQyLjE5OTk5Njk0ODI0Mn0seyJ4IjoyMDk2LjcxNjY2NTI2Nzk0NDMsInkiOjIzNzUuMTk5OTk2OTQ4MjQyfSx7IngiOjIwOTYuNzE2NjY1MjY3OTQ0MywieSI6MjQwMC4xOTk5OTY5NDgyNDJ9XQ==" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2096.717,2502.2L2096.717,2506.367C2096.717,2510.533,2096.717,2518.867,2096.717,2526.533C2096.717,2534.2,2096.717,2541.2,2096.717,2544.7L2096.717,2548.2" id="L_NPM_APPS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_NPM_APPS_0" data-points="W3sieCI6MjA5Ni43MTY2NjUyNjc5NDQzLCJ5IjoyNTAyLjE5OTk5Njk0ODI0Mn0seyJ4IjoyMDk2LjcxNjY2NTI2Nzk0NDMsInkiOjI1MjcuMTk5OTk2OTQ4MjQyfSx7IngiOjIwOTYuNzE2NjY1MjY3OTQ0MywieSI6MjU1Mi4xOTk5OTY5NDgyNDJ9XQ==" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2375.467,1829.2L2380.675,1833.367C2385.883,1837.533,2396.3,1845.867,2401.508,1854.2C2406.717,1862.533,2406.717,1870.867,2406.717,1878.533C2406.717,1886.2,2406.717,1893.2,2406.717,1896.7L2406.717,1900.2" id="L_MESH_VPS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MESH_VPS_0" data-points="W3sieCI6MjM3NS40NjY2NjUyNjc5NDQzLCJ5IjoxODI5LjE5OTk5Njk0ODI0MjJ9LHsieCI6MjQwNi43MTY2NjUyNjc5NDQzLCJ5IjoxODU0LjE5OTk5Njk0ODI0MjJ9LHsieCI6MjQwNi43MTY2NjUyNjc5NDQzLCJ5IjoxODc5LjE5OTk5Njk0ODI0MjJ9LHsieCI6MjQwNi43MTY2NjUyNjc5NDQzLCJ5IjoxOTA0LjE5OTk5Njk0ODI0MjJ9XQ==" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2127.967,1829.2L2122.758,1833.367C2117.55,1837.533,2107.133,1845.867,2101.925,1854.2C2096.717,1862.533,2096.717,1870.867,2096.717,1878.533C2096.717,1886.2,2096.717,1893.2,2096.717,1896.7L2096.717,1900.2" id="L_MESH_ROUTER_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MESH_ROUTER_0" data-points="W3sieCI6MjEyNy45NjY2NjUyNjc5NDQzLCJ5IjoxODI5LjE5OTk5Njk0ODI0MjJ9LHsieCI6MjA5Ni43MTY2NjUyNjc5NDQzLCJ5IjoxODU0LjE5OTk5Njk0ODI0MjJ9LHsieCI6MjA5Ni43MTY2NjUyNjc5NDQzLCJ5IjoxODc5LjE5OTk5Njk0ODI0MjJ9LHsieCI6MjA5Ni43MTY2NjUyNjc5NDQzLCJ5IjoxOTA0LjE5OTk5Njk0ODI0MjJ9XQ==" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2652.352,159L2651.74,165.083C2651.129,171.167,2649.906,183.333,2649.295,195.5C2648.683,207.667,2648.683,219.833,2648.683,231.417C2648.683,243,2648.683,254,2648.683,259.5L2648.683,265" id="L_GIT_PLAN_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_GIT_PLAN_0" data-points="W3sieCI6MjY1Mi4zNTE2Nzc5NjY0Nzc0LCJ5IjoxNTl9LHsieCI6MjY0OC42ODMzMzYyNTc5MzQ2LCJ5IjoxOTUuNX0seyJ4IjoyNjQ4LjY4MzMzNjI1NzkzNDYsInkiOjIzMn0seyJ4IjoyNjQ4LjY4MzMzNjI1NzkzNDYsInkiOjI2OX1d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2788.683,158.403L2801.564,164.585C2814.444,170.768,2840.206,183.134,2853.086,195.4C2865.967,207.667,2865.967,219.833,2869.176,229.582C2872.385,239.33,2878.804,246.66,2882.013,250.326L2885.222,253.991" id="L_GIT_DEPLOY_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_GIT_DEPLOY_0" data-points="W3sieCI6Mjc4OC42ODMzMzYyNTc5MzQ2LCJ5IjoxNTguNDAyNTA5MzcwODkxMn0seyJ4IjoyODY1Ljk2NjY2NzE3NTI5MywieSI6MTk1LjV9LHsieCI6Mjg2NS45NjY2NjcxNzUyOTMsInkiOjIzMn0seyJ4IjoyODg3Ljg1NzQ3OTAxMDMwOTQsInkiOjI1N31d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M3284.342,147L3284.342,155.083C3284.342,163.167,3284.342,179.333,3284.342,193.5C3284.342,207.667,3284.342,219.833,3253.254,236.787C3222.166,253.741,3159.989,275.482,3128.901,286.352L3097.813,297.223" id="L_SECRETS_DEPLOY_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SECRETS_DEPLOY_0" data-points="W3sieCI6MzI4NC4zNDE2NzA5ODk5OTAyLCJ5IjoxNDd9LHsieCI6MzI4NC4zNDE2NzA5ODk5OTAyLCJ5IjoxOTUuNX0seyJ4IjozMjg0LjM0MTY3MDk4OTk5MDIsInkiOjIzMn0seyJ4IjozMDk0LjAzNzUwNDE5NjE2NywieSI6Mjk4LjU0MzIwNzY0NjIxMTY3fV0=" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2968.433,431L2968.643,435.167C2968.854,439.333,2969.275,447.667,2969.485,459.383C2969.696,471.1,2969.696,486.2,2969.696,501.3C2969.696,516.4,2969.696,531.5,2969.696,543.217C2969.696,554.933,2969.696,563.267,2969.696,586.1C2969.696,608.933,2969.696,646.267,2969.696,683.6C2969.696,720.933,2969.696,758.267,2969.696,783.017C2969.696,807.767,2969.696,819.933,2969.696,831.433C2969.696,842.933,2969.696,853.767,2969.696,859.183L2969.696,864.6" id="L_DEPLOY_HS_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_DEPLOY_HS_0" data-points="W3sieCI6Mjk2OC40MzI4MTc3ODI2NzQ2LCJ5Ijo0MzF9LHsieCI6Mjk2OS42OTU4Mzg5MjgyMjI3LCJ5Ijo0NTZ9LHsieCI6Mjk2OS42OTU4Mzg5MjgyMjI3LCJ5Ijo1MDEuMjk5OTk5MjM3MDYwNTV9LHsieCI6Mjk2OS42OTU4Mzg5MjgyMjI3LCJ5Ijo1NDYuNTk5OTk4NDc0MTIxMX0seyJ4IjoyOTY5LjY5NTgzODkyODIyMjcsInkiOjU3MS41OTk5OTg0NzQxMjExfSx7IngiOjI5NjkuNjk1ODM4OTI4MjIyNywieSI6NjgzLjU5OTk5ODQ3NDEyMTF9LHsieCI6Mjk2OS42OTU4Mzg5MjgyMjI3LCJ5Ijo3OTUuNTk5OTk4NDc0MTIxMX0seyJ4IjoyOTY5LjY5NTgzODkyODIyMjcsInkiOjgzMi4wOTk5OTg0NzQxMjExfSx7IngiOjI5NjkuNjk1ODM4OTI4MjIyNywieSI6ODY4LjU5OTk5ODQ3NDEyMTF9XQ==" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M3094.038,390.126L3124.981,401.105C3155.924,412.084,3217.81,434.042,3248.753,452.571C3279.696,471.1,3279.696,486.2,3279.696,501.3C3279.696,516.4,3279.696,531.5,3279.696,543.217C3279.696,554.933,3279.696,563.267,3279.696,572.933C3279.696,582.6,3279.696,593.6,3279.696,599.1L3279.696,604.6" id="L_DEPLOY_CERT_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_DEPLOY_CERT_0" data-points="W3sieCI6MzA5NC4wMzc1MDQxOTYxNjcsInkiOjM5MC4xMjU4MjE0OTEwMDkxfSx7IngiOjMyNzkuNjk1ODM4OTI4MjIyNywieSI6NDU2fSx7IngiOjMyNzkuNjk1ODM4OTI4MjIyNywieSI6NTAxLjI5OTk5OTIzNzA2MDU1fSx7IngiOjMyNzkuNjk1ODM4OTI4MjIyNywieSI6NTQ2LjU5OTk5ODQ3NDEyMTF9LHsieCI6MzI3OS42OTU4Mzg5MjgyMjI3LCJ5Ijo1NzEuNTk5OTk4NDc0MTIxMX0seyJ4IjozMjc5LjY5NTgzODkyODIyMjcsInkiOjYwOC41OTk5OTg0NzQxMjExfV0=" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M3279.696,758.6L3279.696,764.767C3279.696,770.933,3279.696,783.267,3279.696,795.517C3279.696,807.767,3279.696,819.933,3279.696,831.433C3279.696,842.933,3279.696,853.767,3279.696,859.183L3279.696,864.6" id="L_CERT_CFAPI_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CERT_CFAPI_0" data-points="W3sieCI6MzI3OS42OTU4Mzg5MjgyMjI3LCJ5Ijo3NTguNTk5OTk4NDc0MTIxMX0seyJ4IjozMjc5LjY5NTgzODkyODIyMjcsInkiOjc5NS41OTk5OTg0NzQxMjExfSx7IngiOjMyNzkuNjk1ODM4OTI4MjIyNywieSI6ODMyLjA5OTk5ODQ3NDEyMTF9LHsieCI6MzI3OS42OTU4Mzg5MjgyMjI3LCJ5Ijo4NjguNTk5OTk4NDc0MTIxMX1d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2834.038,409.64L2818.735,417.366C2803.432,425.093,2772.826,440.547,2757.524,455.823C2742.221,471.1,2742.221,486.2,2742.221,501.3C2742.221,516.4,2742.221,531.5,2742.221,543.217C2742.221,554.933,2742.221,563.267,2531.358,584.312C2320.496,605.358,1898.771,639.116,1687.908,655.996L1477.046,672.875" id="L_DEPLOY_HA_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_DEPLOY_HA_0" data-points="W3sieCI6MjgzNC4wMzc1MDQxOTYxNjcsInkiOjQwOS42Mzk3OTEyMjkyOTYwN30seyJ4IjoyNzQyLjIyMDgzMjgyNDcwNywieSI6NDU2fSx7IngiOjI3NDIuMjIwODMyODI0NzA3LCJ5Ijo1MDEuMjk5OTk5MjM3MDYwNTV9LHsieCI6Mjc0Mi4yMjA4MzI4MjQ3MDcsInkiOjU0Ni41OTk5OTg0NzQxMjExfSx7IngiOjI3NDIuMjIwODMyODI0NzA3LCJ5Ijo1NzEuNTk5OTk4NDc0MTIxMX0seyJ4IjoxNDczLjA1ODMzMDUzNTg4ODcsInkiOjY3My4xOTM3NzMzMzg1OTc1fV0=" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2904.354,431L2901.496,435.167C2898.638,439.333,2892.921,447.667,2890.063,459.383C2887.204,471.1,2887.204,486.2,2887.204,501.3C2887.204,516.4,2887.204,531.5,2887.204,543.217C2887.204,554.933,2887.204,563.267,2792.276,582.546C2697.347,601.825,2507.49,632.05,2412.562,647.163L2317.634,662.275" id="L_DEPLOY_HB_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_DEPLOY_HB_0" data-points="W3sieCI6MjkwNC4zNTQ0Njc5ODgwMTQsInkiOjQzMX0seyJ4IjoyODg3LjIwNDE3MDIyNzA1MSwieSI6NDU2fSx7IngiOjI4ODcuMjA0MTcwMjI3MDUxLCJ5Ijo1MDEuMjk5OTk5MjM3MDYwNTV9LHsieCI6Mjg4Ny4yMDQxNzAyMjcwNTEsInkiOjU0Ni41OTk5OTg0NzQxMjExfSx7IngiOjI4ODcuMjA0MTcwMjI3MDUxLCJ5Ijo1NzEuNTk5OTk4NDc0MTIxMX0seyJ4IjoyMzEzLjY4MzMzNDM1MDU4NiwieSI6NjYyLjkwNDA5NDAyMTExMjV9XQ==" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2969.696,1018.6L2969.696,1022.767C2969.696,1026.933,2969.696,1035.267,2969.696,1046.983C2969.696,1058.7,2969.696,1073.8,2969.696,1101.4C2969.696,1129,2969.696,1169.1,2969.696,1207.733C2969.696,1246.367,2969.696,1283.533,2969.696,1322.7C2969.696,1361.867,2969.696,1403.033,2969.696,1442.283C2969.696,1481.533,2969.696,1518.867,2969.696,1541.7C2969.696,1564.533,2969.696,1572.867,2969.696,1581.2C2969.696,1589.533,2969.696,1597.867,2872.356,1618.845C2775.017,1639.822,2580.337,1673.445,2482.998,1690.256L2385.658,1707.067" id="L_HS_MESH_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_HS_MESH_0" data-points="W3sieCI6Mjk2OS42OTU4Mzg5MjgyMjI3LCJ5IjoxMDE4LjU5OTk5ODQ3NDEyMTF9LHsieCI6Mjk2OS42OTU4Mzg5MjgyMjI3LCJ5IjoxMDQzLjU5OTk5ODQ3NDEyMX0seyJ4IjoyOTY5LjY5NTgzODkyODIyMjcsInkiOjEwODguODk5OTk3NzExMTgxNn0seyJ4IjoyOTY5LjY5NTgzODkyODIyMjcsInkiOjEyMDkuMTk5OTk2OTQ4MjQyMn0seyJ4IjoyOTY5LjY5NTgzODkyODIyMjcsInkiOjEzMjAuNjk5OTk2OTQ4MjQyMn0seyJ4IjoyOTY5LjY5NTgzODkyODIyMjcsInkiOjE0NDQuMTk5OTk2OTQ4MjQyMn0seyJ4IjoyOTY5LjY5NTgzODkyODIyMjcsInkiOjE1NTYuMTk5OTk2OTQ4MjQyMn0seyJ4IjoyOTY5LjY5NTgzODkyODIyMjcsInkiOjE1ODEuMTk5OTk2OTQ4MjQyMn0seyJ4IjoyOTY5LjY5NTgzODkyODIyMjcsInkiOjE2MDYuMTk5OTk2OTQ4MjQyMn0seyJ4IjoyMzgxLjcxNjY2NTI2Nzk0NDMsInkiOjE3MDcuNzQ4MDkyMjI1NDA3Nn1d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M389.696,385.996L353.58,397.664C317.464,409.331,245.232,432.665,209.116,451.883C173,471.1,173,486.2,173,501.3C173,516.4,173,531.5,173,543.217C173,554.933,173,563.267,173,572.933C173,582.6,173,593.6,173,599.1L173,604.6" id="L_PROM_GRAF_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_PROM_GRAF_0" data-points="W3sieCI6Mzg5LjY5NTgzODkyODIyMjY2LCJ5IjozODUuOTk2NDY1OTY1NzAzMX0seyJ4IjoxNzMsInkiOjQ1Nn0seyJ4IjoxNzMsInkiOjUwMS4yOTk5OTkyMzcwNjA1NX0seyJ4IjoxNzMsInkiOjU0Ni41OTk5OTg0NzQxMjExfSx7IngiOjE3MywieSI6NTcxLjU5OTk5ODQ3NDEyMTF9LHsieCI6MTczLCJ5Ijo2MDguNTk5OTk4NDc0MTIxMX1d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M495.123,419L493.102,425.167C491.082,431.333,487.041,443.667,485.02,457.383C483,471.1,483,486.2,483,501.3C483,516.4,483,531.5,483,543.217C483,554.933,483,563.267,483,574.933C483,586.6,483,601.6,483,609.1L483,616.6" id="L_PROM_ALERT_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_PROM_ALERT_0" data-points="W3sieCI6NDk1LjEyMjczMjUwMzA3MzU2LCJ5Ijo0MTl9LHsieCI6NDgzLCJ5Ijo0NTZ9LHsieCI6NDgzLCJ5Ijo1MDEuMjk5OTk5MjM3MDYwNTV9LHsieCI6NDgzLCJ5Ijo1NDYuNTk5OTk4NDc0MTIxMX0seyJ4Ijo0ODMsInkiOjU3MS41OTk5OTg0NzQxMjExfSx7IngiOjQ4MywieSI6NjIwLjU5OTk5ODQ3NDEyMTF9XQ==" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M564.04,419L567.686,425.167C571.332,431.333,578.624,443.667,582.271,457.383C585.917,471.1,585.917,486.2,585.917,501.3C585.917,516.4,585.917,531.5,585.917,543.217C585.917,554.933,585.917,563.267,689.781,582.797C793.645,602.328,1001.373,633.056,1105.237,648.42L1209.101,663.784" id="L_PROM_HA_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_PROM_HA_0" data-points="W3sieCI6NTY0LjA0MDE0MTUxNDM2OTUsInkiOjQxOX0seyJ4Ijo1ODUuOTE2NjY0MTIzNTM1MiwieSI6NDU2fSx7IngiOjU4NS45MTY2NjQxMjM1MzUyLCJ5Ijo1MDEuMjk5OTk5MjM3MDYwNTV9LHsieCI6NTg1LjkxNjY2NDEyMzUzNTIsInkiOjU0Ni41OTk5OTg0NzQxMjExfSx7IngiOjU4NS45MTY2NjQxMjM1MzUyLCJ5Ijo1NzEuNTk5OTk4NDc0MTIxMX0seyJ4IjoxMjEzLjA1ODMzMDUzNTg4ODcsInkiOjY2NC4zNjk3Nzk1NTIyMjMzfV0=" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M649.696,401.765L670.038,410.804C690.381,419.844,731.065,437.922,751.408,454.511C771.75,471.1,771.75,486.2,771.75,501.3C771.75,516.4,771.75,531.5,771.75,543.217C771.75,554.933,771.75,563.267,984.741,584.329C1197.732,605.391,1623.714,639.181,1836.705,656.076L2049.696,672.972" id="L_PROM_HB_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_PROM_HB_0" data-points="W3sieCI6NjQ5LjY5NTgzODkyODIyMjcsInkiOjQwMS43NjUzNjQzMTIxOTA0Nn0seyJ4Ijo3NzEuNzQ5OTkyMzcwNjA1NSwieSI6NDU2fSx7IngiOjc3MS43NDk5OTIzNzA2MDU1LCJ5Ijo1MDEuMjk5OTk5MjM3MDYwNTV9LHsieCI6NzcxLjc0OTk5MjM3MDYwNTUsInkiOjU0Ni41OTk5OTg0NzQxMjExfSx7IngiOjc3MS43NDk5OTIzNzA2MDU1LCJ5Ijo1NzEuNTk5OTk4NDc0MTIxMX0seyJ4IjoyMDUzLjY4MzMzNDM1MDU4NiwieSI6NjczLjI4Nzg5NjkyNzE4Njd9XQ==" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path><path d="M2571.717,2049.442L2605.209,2131.737" id="L_ORIGINS_LIMITS_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_ORIGINS_LIMITS_0" data-points="W3sieCI6MjQwNi43MTY2NjUyNjc5NDQzLCJ5IjoyMDA2LjE5OTk5Njk0ODI0MjJ9LHsieCI6MjQwNi43MTY2NjUyNjc5NDQzLCJ5IjoyMDMxLjE5OTk5Njk0ODI0MjJ9LHsieCI6MjYwNi43MTY2NjUyNjc5NDQzLCJ5IjoyMTM1LjQ0MjQyMTE5MDY2Nn1d" marker-end="url(#architecture_flowchart-v2-pointEnd)"></path></g><g class="edgeLabels"><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_WEB_CF_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel" transform="translate(1061.7624969482422, 195.5)"><g class="label" data-id="L_MEDIA_DNS_0" transform="translate(-44.68333435058594, -11.5)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="89.36666870117188" height="23"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">DNS</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> lookup</tspan></tspan></text></g></g></g><g class="edgeLabel"><g class="label" data-id="L_HA_SELECTA_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel" transform="translate(1274.7624988555908, 1088.8999977111816)"><g class="label" data-id="L_SELECTA_GWA_0" transform="translate(-28.674999237060547, -11.5)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="57.349998474121094" height="23"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">primary</tspan></tspan></text></g></g></g><g class="edgeLabel"><g class="label" data-id="L_GWA_ANA_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel"><g class="label" data-id="L_HB_SELECTB_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel" transform="translate(2251.7166652679443, 1088.8999977111816)"><g class="label" data-id="L_SELECTB_GWB_0" transform="translate(-28.674999237060547, -11.5)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="57.349998474121094" height="23"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">primary</tspan></tspan></text></g></g></g><g class="edgeLabel"><g class="label" data-id="L_GWB_ANB_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel" transform="translate(1575.7291679382324, 1088.8999977111816)"><g class="label" data-id="L_SELECTA_GWB_0" transform="translate(-87.39166259765625, -20.299999237060547)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="174.7833251953125" height="40.599998474121094"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">per-service</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> backup</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> over</tspan></tspan><tspan class="text-outer-tspan" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">encrypted</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> overlay</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(1938.6083297729492, 1088.8999977111816)"><g class="label" data-id="L_SELECTB_GWA_0" transform="translate(-87.39166259765625, -20.299999237060547)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="174.7833251953125" height="40.599998474121094"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">per-service</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> backup</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> over</tspan></tspan><tspan class="text-outer-tspan" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">encrypted</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> overlay</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(1149.7624988555908, 501.29999923706055)"><g class="label" data-id="L_CF_HA_0" transform="translate(-71.80833435058594, -20.299999237060547)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="143.61666870117188" height="40.599998474121094"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">HTTPS</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> to</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> a</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> healthy</tspan></tspan><tspan class="text-outer-tspan" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">endpoint</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(1859.0083312988281, 501.29999923706055)"><g class="label" data-id="L_CF_HB_0" transform="translate(-71.80833435058594, -20.299999237060547)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="143.61666870117188" height="40.599998474121094"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">HTTPS</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> to</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> a</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> healthy</tspan></tspan><tspan class="text-outer-tspan" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">endpoint</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(1314.1125030517578, 344)"><g class="label" data-id="L_MEDIA_HA_0" transform="translate(-87.35000610351562, -20.299999237060547)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="174.70001220703125" height="40.599998474121094"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">direct</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> HTTPS</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> after</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> DNS</tspan></tspan><tspan class="text-outer-tspan" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">selection</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(2177.8208389282227, 344)"><g class="label" data-id="L_MEDIA_HB_0" transform="translate(-87.35000610351562, -20.299999237060547)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="174.70001220703125" height="40.599998474121094"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">direct</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> HTTPS</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> after</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> DNS</tspan></tspan><tspan class="text-outer-tspan" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">selection</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(1667.0916633605957, 501.29999923706055)"><g class="label" data-id="L_PROBE_HA_0" transform="translate(-91.8499984741211, -20.299999237060547)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="183.6999969482422" height="40.599998474121094"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">GET</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /_edge/entry-health:</tspan></tspan><tspan class="text-outer-tspan" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">edge-ready</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(2289.6708374023438, 501.29999923706055)"><g class="label" data-id="L_PROBE_HB_0" transform="translate(-91.8499984741211, -20.299999237060547)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="183.6999969482422" height="40.599998474121094"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">GET</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /_edge/entry-health:</tspan></tspan><tspan class="text-outer-tspan" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">edge-ready</tspan></tspan></text></g></g></g><g class="edgeLabel"><g class="label" data-id="L_ANA_MESH_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel"><g class="label" data-id="L_ANB_MESH_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel"><g class="label" data-id="L_ROUTER_FW_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel"><g class="label" data-id="L_FW_NPM_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel"><g class="label" data-id="L_NPM_APPS_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel"><g class="label" data-id="L_MESH_VPS_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel"><g class="label" data-id="L_MESH_ROUTER_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel"><g class="label" data-id="L_GIT_PLAN_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel"><g class="label" data-id="L_GIT_DEPLOY_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel"><g class="label" data-id="L_SECRETS_DEPLOY_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel" transform="translate(2969.6958389282227, 683.5999984741211)"><g class="label" data-id="L_DEPLOY_HS_0" transform="translate(-59.82500076293945, -20.299999237060547)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="119.6500015258789" height="40.599998474121094"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">delegated</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> policy</tspan></tspan><tspan class="text-outer-tspan" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">management</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(3279.6958389282227, 501.29999923706055)"><g class="label" data-id="L_DEPLOY_CERT_0" transform="translate(-83.83333587646484, -11.5)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="167.6666717529297" height="23"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">configure</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> local</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> renewal</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(3279.6958389282227, 832.0999984741211)"><g class="label" data-id="L_CERT_CFAPI_0" transform="translate(-30.450000762939453, -11.5)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="60.900001525878906" height="23"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">DNS-01</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(2742.220832824707, 501.29999923706055)"><g class="label" data-id="L_DEPLOY_HA_0" transform="translate(-62.491668701171875, -11.5)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="124.98333740234375" height="23"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">deploy</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> and</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> verify</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(2887.204170227051, 501.29999923706055)"><g class="label" data-id="L_DEPLOY_HB_0" transform="translate(-62.491668701171875, -11.5)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="124.98333740234375" height="23"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">deploy</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> and</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> verify</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(2969.6958389282227, 1320.6999969482422)"><g class="label" data-id="L_HS_MESH_0" transform="translate(-91.39166259765625, -11.5)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="182.7833251953125" height="23"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">control</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> and</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> access</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> policy</tspan></tspan></text></g></g></g><g class="edgeLabel"><g class="label" data-id="L_PROM_GRAF_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel"><g class="label" data-id="L_PROM_ALERT_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g><g class="edgeLabel" transform="translate(585.9166641235352, 501.29999923706055)"><g class="label" data-id="L_PROM_HA_0" transform="translate(-82.91666412353516, -11.5)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="165.8333282470703" height="23"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">HTTPS</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /_edge/metrics</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(771.7499923706055, 501.29999923706055)"><g class="label" data-id="L_PROM_HB_0" transform="translate(-82.91666412353516, -11.5)"><g><rect class="background" style="" x="-2" y="-0.9999996423721313" width="165.8333282470703" height="23"></rect><text y="-10.1" style=""><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">HTTPS</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /_edge/metrics</tspan></tspan></text></g></g></g><g class="edgeLabel"><g class="label" data-id="L_ORIGINS_LIMITS_0" transform="translate(0, 0)"><text y="-10.1"><tspan class="text-outer-tspan" x="0" y="-0.1em" dy="1.1em"></tspan></text></g></g></g><g class="nodes"><g class="node default public" id="flowchart-WEB-0" transform="translate(1596.3083381652832, 96)"><rect class="basic label-container" style="fill:#233d58 !important;stroke:#7ab5dc !important" x="-114.93333435058594" y="-27" width="229.86666870117188" height="54"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-84.93333435058594, -12)"><rect></rect><foreignObject width="169.86666870117188" height="24"><div style="color: rgb(242, 246, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Browser and API clients</p></span></div></foreignObject></g></g><g class="node default public" id="flowchart-MEDIA-1" transform="translate(1297.2541694641113, 96)"><rect class="basic label-container" style="fill:#233d58 !important;stroke:#7ab5dc !important" x="-99.80833435058594" y="-27" width="199.61666870117188" height="54"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-69.80833435058594, -12)"><rect></rect><foreignObject width="139.61666870117188" height="24"><div style="color: rgb(242, 246, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Direct media clients</p></span></div></foreignObject></g></g><g class="node default public" id="flowchart-DNS-2" transform="translate(1061.7624969482422, 344)"><rect class="basic label-container" style="fill:#233d58 !important;stroke:#7ab5dc !important" x="-130" y="-51" width="260" height="102"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -36)"><rect></rect><foreignObject width="200" height="72"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Cloudflare DNS-only LB<br/>returns healthy edge addresses</p></span></div></foreignObject></g></g><g class="node default public" id="flowchart-CF-3" transform="translate(1596.3083381652832, 344)"><rect class="basic label-container" style="fill:#233d58 !important;stroke:#7ab5dc !important" x="-125.19166564941406" y="-51" width="250.38333129882812" height="102"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-95.19166564941406, -36)"><rect></rect><foreignObject width="190.38333129882812" height="72"><div style="color: rgb(242, 246, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Cloudflare proxied LB<br/>shared pool, equal weights<br/>session affinity</p></span></div></foreignObject></g></g><g class="node default public" id="flowchart-PROBE-4" transform="translate(1901.5000038146973, 344)"><rect class="basic label-container" style="fill:#233d58 !important;stroke:#7ab5dc !important" x="-130" y="-63" width="260" height="126"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -48)"><rect></rect><foreignObject width="200" height="96"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Cloudflare HTTPS monitor<br/>ingress liveness only<br/>source allowlist + monitor token</p></span></div></foreignObject></g></g><g class="node default edge" id="flowchart-HA-9" transform="translate(1343.0583305358887, 683.5999984741211)"><rect class="basic label-container" style="fill:#284c44 !important;stroke:#7bc8a7 !important" x="-130" y="-87" width="260" height="174"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -72)"><rect></rect><foreignObject width="200" height="144"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>HAProxy HTTPS ingress<br/>validate Host and source<br/>rebuild trusted client headers<br/>normalize paths and apply access rules</p></span></div></foreignObject></g></g><g class="node default edge" id="flowchart-SELECTA-10" transform="translate(1343.0583305358887, 943.5999984741211)"><rect class="basic label-container" style="fill:#284c44 !important;stroke:#7bc8a7 !important" x="-130" y="-63" width="260" height="126"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -48)"><rect></rect><foreignObject width="200" height="96"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Service backend<br/>prefer local path<br/>peer as backup + routing cookie</p></span></div></foreignObject></g></g><g class="node default edge" id="flowchart-GWA-11" transform="translate(1274.7624988555908, 1209.1999969482422)"><rect class="basic label-container" style="fill:#284c44 !important;stroke:#7bc8a7 !important" x="-130" y="-75" width="260" height="150"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -60)"><rect></rect><foreignObject width="200" height="120"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Private service gateway<br/>overlay listener, trusted edges only<br/>local Anubis AND origin must be healthy</p></span></div></foreignObject></g></g><g class="node default edge" id="flowchart-ANA-12" transform="translate(1274.7624988555908, 1444.1999969482422)"><rect class="basic label-container" style="fill:#284c44 !important;stroke:#7bc8a7 !important" x="-130" y="-87" width="260" height="174"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -72)"><rect></rect><foreignObject width="200" height="144"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Per-service Anubis on loopback<br/>browser challenge or client-compatible policy<br/>application authentication still required</p></span></div></foreignObject></g></g><g class="node default edge" id="flowchart-HB-19" transform="translate(2183.683334350586, 683.5999984741211)"><rect class="basic label-container" style="fill:#284c44 !important;stroke:#7bc8a7 !important" x="-130" y="-87" width="260" height="174"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -72)"><rect></rect><foreignObject width="200" height="144"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>HAProxy HTTPS ingress<br/>validate Host and source<br/>rebuild trusted client headers<br/>normalize paths and apply access rules</p></span></div></foreignObject></g></g><g class="node default edge" id="flowchart-SELECTB-20" transform="translate(2183.683334350586, 943.5999984741211)"><rect class="basic label-container" style="fill:#284c44 !important;stroke:#7bc8a7 !important" x="-130" y="-63" width="260" height="126"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -48)"><rect></rect><foreignObject width="200" height="96"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Service backend<br/>prefer local path<br/>peer as backup + routing cookie</p></span></div></foreignObject></g></g><g class="node default edge" id="flowchart-GWB-21" transform="translate(2251.7166652679443, 1209.1999969482422)"><rect class="basic label-container" style="fill:#284c44 !important;stroke:#7bc8a7 !important" x="-130" y="-75" width="260" height="150"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -60)"><rect></rect><foreignObject width="200" height="120"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Private service gateway<br/>overlay listener, trusted edges only<br/>local Anubis AND origin must be healthy</p></span></div></foreignObject></g></g><g class="node default edge" id="flowchart-ANB-22" transform="translate(2251.7166652679443, 1444.1999969482422)"><rect class="basic label-container" style="fill:#284c44 !important;stroke:#7bc8a7 !important" x="-130" y="-87" width="260" height="174"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -72)"><rect></rect><foreignObject width="200" height="144"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Per-service Anubis on loopback<br/>browser challenge or client-compatible policy<br/>application authentication still required</p></span></div></foreignObject></g></g><g class="node default edge" id="flowchart-MESH-45" transform="translate(2251.7166652679443, 1730.1999969482422)"><rect class="basic label-container" style="fill:#284c44 !important;stroke:#7bc8a7 !important" x="-130" y="-99" width="260" height="198"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -84)"><rect></rect><foreignObject width="200" height="168"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Encrypted Tailscale data plane<br/>private routes and least-privilege access<br/>Headscale is the control plane, not an HTTP transit hop</p></span></div></foreignObject></g></g><g class="node default origin" id="flowchart-VPS-50" transform="translate(2406.7166652679443, 1955.1999969482422)"><rect class="basic label-container" style="fill:#514132 !important;stroke:#d6b48c !important" x="-130" y="-51" width="260" height="102"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -36)"><rect></rect><foreignObject width="200" height="72"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Private application hosts<br/>applications bound to private listeners</p></span></div></foreignObject></g></g><g class="node default origin" id="flowchart-ROUTER-51" transform="translate(2096.7166652679443, 1955.1999969482422)"><rect class="basic label-container" style="fill:#514132 !important;stroke:#d6b48c !important" x="-130" y="-51" width="260" height="102"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -36)"><rect></rect><foreignObject width="200" height="72"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Home subnet router<br/>approved route to HTTPS gateway</p></span></div></foreignObject></g></g><g class="node default origin" id="flowchart-FW-52" transform="translate(2096.7166652679443, 2203.199996948242)"><rect class="basic label-container" style="fill:#514132 !important;stroke:#d6b48c !important" x="-117.58333587646484" y="-39" width="235.1666717529297" height="78"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-87.58333587646484, -24)"><rect></rect><foreignObject width="175.1666717529297" height="48"><div style="color: rgb(242, 246, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Home firewall<br/>allow HTTPS to gateway</p></span></div></foreignObject></g></g><g class="node default origin" id="flowchart-NPM-53" transform="translate(2096.7166652679443, 2451.199996948242)"><rect class="basic label-container" style="fill:#514132 !important;stroke:#d6b48c !important" x="-130" y="-51" width="260" height="102"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -36)"><rect></rect><foreignObject width="200" height="72"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Nginx Proxy Manager<br/>private HTTPS with valid origin certificate</p></span></div></foreignObject></g></g><g class="node default origin" id="flowchart-APPS-54" transform="translate(2096.7166652679443, 2603.199996948242)"><rect class="basic label-container" style="fill:#514132 !important;stroke:#d6b48c !important" x="-130" y="-51" width="260" height="102"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -36)"><rect></rect><foreignObject width="200" height="72"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Home applications<br/>native accounts, sessions and tokens</p></span></div></foreignObject></g></g><g class="node default ops" id="flowchart-GIT-63" transform="translate(2658.6833362579346, 96)"><rect class="basic label-container" style="fill:#43395c !important;stroke:#b4a0de !important" x="-130" y="-63" width="260" height="126"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -48)"><rect></rect><foreignObject width="200" height="96"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Git repository<br/>service catalogue + generic templates<br/>no credentials in source</p></span></div></foreignObject></g></g><g class="node default ops" id="flowchart-PLAN-64" transform="translate(2648.6833362579346, 344)"><rect class="basic label-container" style="fill:#43395c !important;stroke:#b4a0de !important" x="-130" y="-75" width="260" height="150"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -60)"><rect></rect><foreignObject width="200" height="120"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Semaphore plan task<br/>local inventory, no deployment secrets<br/>validate catalogue + derived rules</p></span></div></foreignObject></g></g><g class="node default ops" id="flowchart-DEPLOY-65" transform="translate(2964.037504196167, 344)"><rect class="basic label-container" style="fill:#43395c !important;stroke:#b4a0de !important" x="-130" y="-87" width="260" height="174"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -72)"><rect></rect><foreignObject width="200" height="144"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Semaphore deployment task<br/>SSH + sudo, serial rollout<br/>validate candidate with selected HAProxy image<br/>check local AND peer paths</p></span></div></foreignObject></g></g><g class="node default ops" id="flowchart-SECRETS-66" transform="translate(3284.3416709899902, 96)"><rect class="basic label-container" style="fill:#43395c !important;stroke:#b4a0de !important" x="-120.70833587646484" y="-51" width="241.4166717529297" height="102"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-90.70833587646484, -36)"><rect></rect><foreignObject width="181.4166717529297" height="72"><div style="color: rgb(242, 246, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Separate secret values<br/>DNS API / Anubis signing<br/>monitor / metrics</p></span></div></foreignObject></g></g><g class="node default ops" id="flowchart-HS-67" transform="translate(2969.6958389282227, 943.5999984741211)"><rect class="basic label-container" style="fill:#43395c !important;stroke:#b4a0de !important" x="-130" y="-75" width="260" height="150"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -60)"><rect></rect><foreignObject width="200" height="120"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Headscale control host<br/>validate and back up policy candidate<br/>preserve unrelated rules, then reload</p></span></div></foreignObject></g></g><g class="node default ops" id="flowchart-CERT-68" transform="translate(3279.6958389282227, 683.5999984741211)"><rect class="basic label-container" style="fill:#43395c !important;stroke:#b4a0de !important" x="-130" y="-75" width="260" height="150"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -60)"><rect></rect><foreignObject width="200" height="120"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Certbot on each edge<br/>DNS-01 certificate issuance and renewal<br/>validate certificate/key and reload HAProxy</p></span></div></foreignObject></g></g><g class="node default ops" id="flowchart-CFAPI-69" transform="translate(3279.6958389282227, 943.5999984741211)"><rect class="basic label-container" style="fill:#43395c !important;stroke:#b4a0de !important" x="-130" y="-75" width="260" height="150"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -60)"><rect></rect><foreignObject width="200" height="120"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Cloudflare DNS API<br/>certificate challenge + dedicated edge records<br/>application LB publication managed separately</p></span></div></foreignObject></g></g><g class="node default monitor" id="flowchart-PROM-88" transform="translate(519.6958389282227, 344)"><rect class="basic label-container" style="fill:#34495b !important;stroke:#9bbdd4 !important" x="-130" y="-75" width="260" height="150"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -60)"><rect></rect><foreignObject width="200" height="120"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Prometheus<br/>one DNS-only target per edge<br/>verified TLS + authorized source + metrics token</p></span></div></foreignObject></g></g><g class="node default monitor" id="flowchart-GRAF-89" transform="translate(173, 683.5999984741211)"><rect class="basic label-container" style="fill:#34495b !important;stroke:#9bbdd4 !important" x="-130" y="-75" width="260" height="150"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -60)"><rect></rect><foreignObject width="200" height="120"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Grafana<br/>traffic, sessions, service paths<br/>origin probes and backend errors</p></span></div></foreignObject></g></g><g class="node default monitor" id="flowchart-ALERT-90" transform="translate(483, 683.5999984741211)"><rect class="basic label-container" style="fill:#34495b !important;stroke:#9bbdd4 !important" x="-130" y="-63" width="260" height="126"></rect><g class="label" style="color:#f2f6ff !important" transform="translate(-100, -48)"><rect></rect><foreignObject width="200" height="96"><div style="color: rgb(242, 246, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#f2f6ff !important" class="nodeLabel"><p>Optional alert rules and delivery<br/>must be configured separately</p></span></div></foreignObject></g></g><g class="node default note" id="flowchart-LIMITS-99" transform="translate(2736.7166652679443, 2203.199996948242)"><rect class="basic label-container" style="fill:#4c303a !important;stroke:#dd9ba7 !important" x="-130" y="-147" width="260" height="294"></rect><g class="label" style="color:#fff5f6 !important" transform="translate(-100, -132)"><rect></rect><foreignObject width="200" height="264"><div style="color: rgb(255, 245, 246) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#fff5f6 !important" class="nodeLabel"><p>Failure boundaries<br/>Cloudflare bypasses an unavailable public edge<br/>HAProxy bypasses a failed per-service path when its peer is healthy<br/>a failed shared origin is still unavailable<br/>open video streams and WebSockets must reconnect</p></span></div></foreignObject></g></g></g></g></g></svg>