ahriman/docs/ahriman-architecture.svg
2021-09-26 14:39:35 +03:00

3591 lines
316 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.49.0 (0)
-->
<!-- Title: G Pages: 1 -->
<svg width="7470pt" height="2994pt"
viewBox="0.00 0.00 7469.94 2993.99" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 2989.99)">
<title>G</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-2989.99 7465.94,-2989.99 7465.94,4 -4,4"/>
<!-- ahriman_application_ahriman -->
<g id="node1" class="node">
<title>ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#793434" stroke="black" cx="1397" cy="-28.99" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="1397" y="-37.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1397" y="-26.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1397" y="-15.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman</text>
</g>
<!-- ahriman_application_application -->
<g id="node2" class="node">
<title>ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#950303" stroke="black" cx="1271" cy="-1049.95" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="1271" y="-1058.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1271" y="-1047.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1271" y="-1036.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application</text>
</g>
<!-- ahriman_application_handlers_add -->
<g id="node4" class="node">
<title>ahriman_application_handlers_add</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="987" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="987" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="987" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="987" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="987" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">add</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_add -->
<g id="edge1" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M987,-939.41C970,-924.05 969.3,-898.71 973.18,-876.48"/>
<polygon fill="#950303" stroke="black" points="976.64,-877.04 975.24,-866.54 969.78,-875.62 976.64,-877.04"/>
</g>
<!-- ahriman_application_handlers_clean -->
<g id="node5" class="node">
<title>ahriman_application_handlers_clean</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="876" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="876" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="876" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="876" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="876" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">clean</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_clean -->
<g id="edge2" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_clean</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1225.82,-1042.33C1164.87,-1031.29 1056.03,-1003.81 987,-941.41"/>
<path fill="none" stroke="black" d="M987,-939.41C961.18,-916.08 933.03,-888.78 911.54,-867.53"/>
<polygon fill="#950303" stroke="black" points="913.79,-864.84 904.23,-860.28 908.87,-869.81 913.79,-864.84"/>
</g>
<!-- ahriman_application_handlers_init -->
<g id="node8" class="node">
<title>ahriman_application_handlers_init</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="1692" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1692" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1692" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1692" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1692" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">init</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_init -->
<g id="edge3" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_init</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1518,-939.41C1569.6,-905.47 1584.66,-900.43 1637,-867.64 1640.58,-865.4 1644.28,-863.05 1647.99,-860.68"/>
<polygon fill="#950303" stroke="black" points="1650.09,-863.49 1656.61,-855.14 1646.31,-857.61 1650.09,-863.49"/>
</g>
<!-- ahriman_application_handlers_key_import -->
<g id="node9" class="node">
<title>ahriman_application_handlers_key_import</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="1470" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1470" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1470" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1470" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1470" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">key_import</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_key_import -->
<g id="edge4" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_key_import</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1313.45,-1037.81C1346.12,-1027.21 1390.25,-1008.18 1418,-977.18 1442.81,-949.47 1456,-909.09 1462.88,-877.93"/>
<polygon fill="#950303" stroke="black" points="1466.39,-878.24 1464.98,-867.74 1459.53,-876.83 1466.39,-878.24"/>
</g>
<!-- ahriman_application_handlers_rebuild -->
<g id="node10" class="node">
<title>ahriman_application_handlers_rebuild</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="1581" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1581" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1581" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1581" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1581" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">rebuild</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_rebuild -->
<g id="edge5" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_rebuild</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1316.5,-1043.28C1364.65,-1035.37 1440.89,-1017.19 1494,-977.18 1509.29,-965.66 1502,-951.93 1518,-941.41"/>
<path fill="none" stroke="black" d="M1518,-939.41C1540.46,-924.64 1555.96,-898.87 1565.96,-876.27"/>
<polygon fill="#950303" stroke="black" points="1569.29,-877.39 1569.92,-866.81 1562.83,-874.69 1569.29,-877.39"/>
</g>
<!-- ahriman_application_handlers_remove -->
<g id="node11" class="node">
<title>ahriman_application_handlers_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="303" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="303" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="303" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="303" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="303" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">remove</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_remove -->
<g id="edge6" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1224.49,-1047.34C1086.07,-1041 667.2,-1010.42 358,-867.64 353.93,-865.77 349.82,-863.62 345.77,-861.34"/>
<polygon fill="#950303" stroke="black" points="347.43,-858.25 337.04,-856.16 343.86,-864.27 347.43,-858.25"/>
</g>
<!-- ahriman_application_handlers_remove_unknown -->
<g id="node12" class="node">
<title>ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="2044" cy="-830.87" rx="65.11" ry="36.54"/>
<text text-anchor="middle" x="2044" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2044" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="2044" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="2044" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">remove_unknown</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge7" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1317.47,-1046.25C1436.98,-1038.82 1752.35,-1016.01 1849,-977.18 1909.72,-952.79 1968.38,-904.68 2005.23,-870.51"/>
<polygon fill="#950303" stroke="black" points="2007.86,-872.84 2012.76,-863.44 2003.07,-867.73 2007.86,-872.84"/>
</g>
<!-- ahriman_application_handlers_report -->
<g id="node13" class="node">
<title>ahriman_application_handlers_report</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="525" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="525" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="525" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="525" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="525" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_report -->
<g id="edge8" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1224.25,-1049.28C1127.37,-1047.94 900.41,-1034.28 741,-941.41"/>
<path fill="none" stroke="black" d="M741,-939.41C673.66,-900.18 649.58,-904.67 581,-867.64 577.01,-865.49 572.92,-863.15 568.87,-860.74"/>
<polygon fill="#950303" stroke="black" points="570.44,-857.6 560.08,-855.38 566.79,-863.58 570.44,-857.6"/>
</g>
<!-- ahriman_application_handlers_setup -->
<g id="node15" class="node">
<title>ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="1359" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1359" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1359" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1359" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1359" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">setup</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge9" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1311.8,-1035.41C1350.73,-1019.62 1403.54,-989.37 1404,-941.41"/>
<path fill="none" stroke="black" d="M1404,-939.41C1404.23,-916.18 1395.2,-892.15 1385.17,-872.72"/>
<polygon fill="#950303" stroke="black" points="1388.21,-870.98 1380.36,-863.85 1382.05,-874.31 1388.21,-870.98"/>
</g>
<!-- ahriman_application_handlers_sign -->
<g id="node16" class="node">
<title>ahriman_application_handlers_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="765" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="765" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="765" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="765" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="765" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sign</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_sign -->
<g id="edge10" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M741,-939.41C718.7,-926.42 726.57,-897.25 739.01,-872.56"/>
<polygon fill="#950303" stroke="black" points="742.11,-874.18 743.75,-863.71 735.94,-870.87 742.11,-874.18"/>
</g>
<!-- ahriman_application_handlers_status -->
<g id="node17" class="node">
<title>ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="1914" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1914" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1914" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1914" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1914" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_status -->
<g id="edge11" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1317.67,-1047.01C1430.77,-1041.6 1716.19,-1023.62 1798,-977.18 1839.88,-953.42 1872.34,-908.01 1892.14,-874.25"/>
<polygon fill="#950303" stroke="black" points="1895.21,-875.92 1897.14,-865.5 1889.14,-872.45 1895.21,-875.92"/>
</g>
<!-- ahriman_application_handlers_status_update -->
<g id="node18" class="node">
<title>ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="645" cy="-830.87" rx="55.31" ry="36.54"/>
<text text-anchor="middle" x="645" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="645" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="645" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="645" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status_update</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge12" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M741,-939.41C713.17,-923.2 689.06,-896.11 671.96,-873.18"/>
<polygon fill="#950303" stroke="black" points="674.69,-870.98 665.99,-864.94 669.03,-875.09 674.69,-870.98"/>
</g>
<!-- ahriman_application_handlers_sync -->
<g id="node19" class="node">
<title>ahriman_application_handlers_sync</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="1098" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1098" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1098" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1098" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1098" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sync</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_sync -->
<g id="edge13" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_sync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1226.32,-1041.44C1174.01,-1029.82 1094.82,-1002.16 1098,-941.41"/>
</g>
<!-- ahriman_application_handlers_update -->
<g id="node20" class="node">
<title>ahriman_application_handlers_update</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="1209" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1209" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1209" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1209" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1209" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">update</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_update -->
<g id="edge14" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1243.66,-1026.1C1221.97,-1005.02 1197.12,-972.4 1209,-941.41"/>
</g>
<!-- ahriman_application_handlers_user -->
<g id="node21" class="node">
<title>ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="1803" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1803" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1803" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1803" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1803" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_user -->
<g id="edge15" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1314.81,-1039.74C1367.37,-1028.05 1457.7,-1005.9 1532,-977.18 1632.4,-938.38 1654.75,-921.41 1748,-867.64 1751.82,-865.44 1755.75,-863.08 1759.66,-860.67"/>
<polygon fill="#950303" stroke="black" points="1761.53,-863.63 1768.14,-855.34 1757.81,-857.7 1761.53,-863.63"/>
</g>
<!-- ahriman_application_handlers -->
<g id="node3" class="node">
<title>ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#950303" stroke="black" cx="1397" cy="-122.97" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="1397" y="-131.47" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1397" y="-120.47" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1397" y="-109.47" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers</text>
</g>
<!-- ahriman_application_handlers&#45;&gt;ahriman_application_ahriman -->
<g id="edge16" class="edge">
<title>ahriman_application_handlers&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1397,-93.88C1397,-85.84 1397,-76.94 1397,-68.39"/>
<polygon fill="#950303" stroke="black" points="1400.5,-68.23 1397,-58.23 1393.5,-68.23 1400.5,-68.23"/>
</g>
<!-- ahriman_application_handlers_add&#45;&gt;ahriman_application_handlers -->
<g id="edge17" class="edge">
<title>ahriman_application_handlers_add&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1021.78,-806.27C1028.4,-802.06 1035.34,-797.83 1042,-794.1 1113.73,-753.93 1182.19,-792.28 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_clean&#45;&gt;ahriman_application_handlers -->
<g id="edge18" class="edge">
<title>ahriman_application_handlers_clean&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M910.02,-805.53C916.77,-801.35 923.95,-797.32 931,-794.1 1047.94,-740.8 1167.09,-836.05 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_dump -->
<g id="node6" class="node">
<title>ahriman_application_handlers_dump</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="414" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="414" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="414" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="414" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="414" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">dump</text>
</g>
<!-- ahriman_application_handlers_dump&#45;&gt;ahriman_application_handlers -->
<g id="edge19" class="edge">
<title>ahriman_application_handlers_dump&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M447.31,-804.72C454.19,-800.55 461.6,-796.74 469,-794.1 546.91,-766.38 1182.03,-792.73 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_handler -->
<g id="node7" class="node">
<title>ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b30404" stroke="black" cx="1284" cy="-940.41" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1284" y="-954.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1284" y="-943.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1284" y="-932.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1284" y="-921.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handler</text>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers -->
<g id="edge20" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1286.93,-903.33C1287.91,-882.33 1287.91,-855.45 1284,-831.87"/>
<path fill="none" stroke="black" d="M1284,-829.87C1281.06,-812.12 1274.42,-809.44 1265,-794.1 1242.37,-757.26 1190.71,-753.73 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_add -->
<g id="edge21" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1238.89,-930.14C1189.21,-919 1107.65,-897.95 1042,-867.64 1037.93,-865.77 1033.82,-863.62 1029.77,-861.34"/>
<polygon fill="#b30404" stroke="black" points="1031.43,-858.25 1021.04,-856.16 1027.86,-864.27 1031.43,-858.25"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_clean -->
<g id="edge22" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_clean</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1237.55,-935.56C1168.47,-928.6 1035.61,-910.47 931,-867.64 926.8,-865.92 922.57,-863.87 918.42,-861.63"/>
<polygon fill="#b30404" stroke="black" points="919.93,-858.46 909.52,-856.48 916.43,-864.52 919.93,-858.46"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_dump -->
<g id="edge23" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_dump</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1238.02,-932.77C1182.1,-924.88 1084.8,-911.77 1001,-903.64 883.06,-892.21 581.4,-905.15 469,-867.64 464.51,-866.15 460.03,-864.19 455.67,-861.97"/>
<polygon fill="#b30404" stroke="black" points="457.37,-858.91 446.93,-857.09 453.96,-865.02 457.37,-858.91"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_init -->
<g id="edge24" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_init</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1329.7,-932.31C1411.99,-919.16 1581.66,-890.3 1637,-867.64 1641.2,-865.92 1645.43,-863.87 1649.58,-861.63"/>
<polygon fill="#b30404" stroke="black" points="1651.57,-864.52 1658.48,-856.48 1648.07,-858.46 1651.57,-864.52"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_key_import -->
<g id="edge25" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_key_import</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1322.55,-919.28C1348.88,-905.29 1384.4,-885.94 1415,-867.64 1418.63,-865.47 1422.36,-863.18 1426.09,-860.85"/>
<polygon fill="#b30404" stroke="black" points="1428.17,-863.67 1434.74,-855.36 1424.42,-857.76 1428.17,-863.67"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_rebuild -->
<g id="edge26" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_rebuild</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1329.11,-930.14C1378.79,-919 1460.35,-897.95 1526,-867.64 1530.07,-865.77 1534.18,-863.62 1538.23,-861.34"/>
<polygon fill="#b30404" stroke="black" points="1540.14,-864.27 1546.96,-856.16 1536.57,-858.25 1540.14,-864.27"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_remove -->
<g id="edge27" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1238.03,-932.6C1182.13,-924.55 1084.84,-911.28 1001,-903.64 858.48,-890.66 494.01,-912.16 358,-867.64 353.5,-866.17 349.01,-864.23 344.65,-862.02"/>
<polygon fill="#b30404" stroke="black" points="346.35,-858.96 335.91,-857.16 342.95,-865.08 346.35,-858.96"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge28" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1329.35,-930.9C1373.72,-922.83 1443.29,-910.91 1504,-903.64 1710.26,-878.95 1769.45,-921.78 1970,-867.64 1976.39,-865.92 1982.89,-863.65 1989.25,-861.08"/>
<polygon fill="#b30404" stroke="black" points="1990.63,-864.3 1998.45,-857.14 1987.88,-857.86 1990.63,-864.3"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_report -->
<g id="edge29" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1237.99,-933.02C1182.05,-925.38 1084.72,-912.52 1001,-903.64 814.69,-883.89 758.43,-927.82 581,-867.64 576.39,-866.08 571.79,-864.06 567.3,-861.78"/>
<polygon fill="#b30404" stroke="black" points="568.76,-858.59 558.31,-856.79 565.36,-864.71 568.76,-858.59"/>
</g>
<!-- ahriman_application_handlers_search -->
<g id="node14" class="node">
<title>ahriman_application_handlers_search</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="7340" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="7340" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="7340" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="7340" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="7340" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">search</text>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_search -->
<g id="edge30" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1328.83,-930.04C1373.11,-921.28 1442.88,-908.79 1504,-903.64 2077.2,-855.34 6106.03,-885.24 6681,-867.64 6903.95,-860.82 7168.9,-843.69 7283.05,-835.87"/>
<polygon fill="#b30404" stroke="black" points="7283.55,-839.35 7293.29,-835.17 7283.07,-832.36 7283.55,-839.35"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge31" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1306.1,-907.73C1313.95,-896.46 1322.91,-883.63 1331.18,-871.76"/>
<polygon fill="#b30404" stroke="black" points="1334.21,-873.54 1337.06,-863.33 1328.47,-869.53 1334.21,-873.54"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_sign -->
<g id="edge32" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1237.94,-933.41C1128.43,-918.98 858.69,-882.43 820,-867.64 815.76,-866.02 811.5,-864.04 807.34,-861.84"/>
<polygon fill="#b30404" stroke="black" points="808.84,-858.67 798.42,-856.76 805.37,-864.75 808.84,-858.67"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_status -->
<g id="edge33" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1329.39,-931.22C1373.79,-923.39 1443.39,-911.64 1504,-903.64 1661.23,-882.91 1709.43,-920.36 1859,-867.64 1863.46,-866.07 1867.93,-864.06 1872.28,-861.81"/>
<polygon fill="#b30404" stroke="black" points="1874.01,-864.85 1881,-856.89 1870.57,-858.75 1874.01,-864.85"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge34" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1237.93,-933.55C1181.93,-926.42 1084.54,-914.07 1001,-903.64 871.25,-887.45 833.28,-908.3 709,-867.64 703.78,-865.94 698.51,-863.79 693.34,-861.4"/>
<polygon fill="#b30404" stroke="black" points="694.71,-858.17 684.2,-856.88 691.61,-864.45 694.71,-858.17"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_sync -->
<g id="edge35" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_sync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1245.45,-919.28C1219.12,-905.29 1183.6,-885.94 1153,-867.64 1149.37,-865.47 1145.64,-863.18 1141.91,-860.85"/>
<polygon fill="#b30404" stroke="black" points="1143.58,-857.76 1133.26,-855.36 1139.83,-863.67 1143.58,-857.76"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_update -->
<g id="edge36" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1261.9,-907.73C1254.05,-896.46 1245.09,-883.63 1236.82,-871.76"/>
<polygon fill="#b30404" stroke="black" points="1239.53,-869.53 1230.94,-863.33 1233.79,-873.54 1239.53,-869.53"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_user -->
<g id="edge37" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1329.47,-931.82C1373.94,-924.44 1443.58,-913.01 1504,-903.64 1612.32,-886.85 1645.47,-906.42 1748,-867.64 1752.25,-866.04 1756.51,-864.06 1760.68,-861.87"/>
<polygon fill="#b30404" stroke="black" points="1762.64,-864.78 1769.6,-856.8 1759.18,-858.7 1762.64,-864.78"/>
</g>
<!-- ahriman_application_handlers_web -->
<g id="node22" class="node">
<title>ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="1397" cy="-224.74" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1397" y="-238.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1397" y="-227.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1397" y="-216.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1397" y="-205.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web</text>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_web -->
<g id="edge38" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1284,-829.87C1268.07,-727.72 1284,-700.63 1284,-597.24 1284,-597.24 1284,-597.24 1284,-334.5 1284,-314.11 1322.69,-280.34 1354.8,-255.83"/>
<polygon fill="#b30404" stroke="black" points="1356.91,-258.62 1362.79,-249.81 1352.7,-253.03 1356.91,-258.62"/>
</g>
<!-- ahriman_application_handlers_init&#45;&gt;ahriman_application_handlers -->
<g id="edge39" class="edge">
<title>ahriman_application_handlers_init&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1658.68,-804.73C1651.81,-800.56 1644.4,-796.75 1637,-794.1 1498.46,-744.66 1450.09,-796.16 1308,-758.1 1261.57,-745.67 1193.32,-760 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_key_import&#45;&gt;ahriman_application_handlers -->
<g id="edge40" class="edge">
<title>ahriman_application_handlers_key_import&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1435.86,-805.79C1429.12,-801.58 1421.97,-797.48 1415,-794.1 1326.65,-751.36 1176.99,-807.34 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_rebuild&#45;&gt;ahriman_application_handlers -->
<g id="edge41" class="edge">
<title>ahriman_application_handlers_rebuild&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1547.56,-805.05C1540.7,-800.86 1533.33,-796.95 1526,-794.1 1390.58,-741.56 1161.63,-851.87 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_remove&#45;&gt;ahriman_application_handlers -->
<g id="edge42" class="edge">
<title>ahriman_application_handlers_remove&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M335.99,-804.82C342.95,-800.59 350.47,-796.73 358,-794.1 447.69,-762.89 1178.03,-804.33 1209,-714.56"/>
<path fill="none" stroke="black" d="M1209,-712.56C1281.43,-502.58 1201.16,-412.1 1322,-225.74"/>
<path fill="none" stroke="black" d="M1322,-223.74C1330.1,-207.66 1330.78,-202.79 1341,-187.97 1348.6,-176.94 1357.85,-165.69 1366.63,-155.76"/>
<polygon fill="#913030" stroke="black" points="1369.43,-157.88 1373.52,-148.11 1364.22,-153.19 1369.43,-157.88"/>
</g>
<!-- ahriman_application_handlers_remove_unknown&#45;&gt;ahriman_application_handlers -->
<g id="edge43" class="edge">
<title>ahriman_application_handlers_remove_unknown&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1996.32,-805.49C1987.66,-801.45 1978.64,-797.48 1970,-794.1 1689.66,-684.53 1322,-898.24 1322,-597.24 1322,-597.24 1322,-597.24 1322,-334.5 1322,-286.16 1296.23,-266.64 1322,-225.74"/>
</g>
<!-- ahriman_application_handlers_report&#45;&gt;ahriman_application_handlers -->
<g id="edge44" class="edge">
<title>ahriman_application_handlers_report&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M558.7,-805.02C565.78,-800.77 573.41,-796.85 581,-794.1 713.28,-746.24 1163.13,-847.54 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_search&#45;&gt;ahriman_application_handlers -->
<g id="edge45" class="edge">
<title>ahriman_application_handlers_search&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M7330.85,-794.68C7319.9,-749.36 7303,-667.99 7303,-597.24 7303,-597.24 7303,-597.24 7303,-297.5 7303,-142.86 2060,-125.58 1453.91,-124.1"/>
<polygon fill="#913030" stroke="black" points="1453.69,-120.6 1443.68,-124.07 1453.67,-127.6 1453.69,-120.6"/>
</g>
<!-- ahriman_application_handlers_setup&#45;&gt;ahriman_application_handlers -->
<g id="edge46" class="edge">
<title>ahriman_application_handlers_setup&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1322.83,-807.13C1276.95,-777.6 1204.29,-728.22 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_sign&#45;&gt;ahriman_application_handlers -->
<g id="edge47" class="edge">
<title>ahriman_application_handlers_sign&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M798.53,-805.27C805.38,-801.06 812.73,-797.09 820,-794.1 901.64,-760.63 1180.23,-797.97 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_status&#45;&gt;ahriman_application_handlers -->
<g id="edge48" class="edge">
<title>ahriman_application_handlers_status&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1881.07,-804.65C1874.11,-800.43 1866.57,-796.62 1859,-794.1 1626.12,-716.69 1546.39,-816.4 1308,-758.1 1261.31,-746.69 1193.32,-760 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_status_update&#45;&gt;ahriman_application_handlers -->
<g id="edge49" class="edge">
<title>ahriman_application_handlers_status_update&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M684.62,-804.92C692.47,-800.79 700.82,-796.94 709,-794.1 815.3,-757.25 1172.31,-820.92 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_sync&#45;&gt;ahriman_application_handlers -->
<g id="edge50" class="edge">
<title>ahriman_application_handlers_sync&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1133.16,-806.58C1160.35,-786.12 1195.54,-753.57 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_update&#45;&gt;ahriman_application_handlers -->
<g id="edge51" class="edge">
<title>ahriman_application_handlers_update&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1203.12,-794.32C1200.67,-771.01 1200.15,-740.2 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_user&#45;&gt;ahriman_application_handlers -->
<g id="edge52" class="edge">
<title>ahriman_application_handlers_user&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1770.04,-804.75C1763.08,-800.52 1755.55,-796.68 1748,-794.1 1562.32,-730.69 1498.21,-806.27 1308,-758.1 1261.4,-746.3 1193.32,-760 1209,-714.56"/>
</g>
<!-- ahriman_application_handlers_web&#45;&gt;ahriman_application_handlers -->
<g id="edge53" class="edge">
<title>ahriman_application_handlers_web&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1397,-187.72C1397,-179.48 1397,-170.69 1397,-162.35"/>
<polygon fill="#822b2b" stroke="black" points="1400.5,-162.11 1397,-152.11 1393.5,-162.11 1400.5,-162.11"/>
</g>
<!-- ahriman_application_lock -->
<g id="node23" class="node">
<title>ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="1859" cy="-1525.11" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="1859" y="-1533.61" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1859" y="-1522.61" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1859" y="-1511.61" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">lock</text>
</g>
<!-- ahriman_application_lock&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge54" class="edge">
<title>ahriman_application_lock&#45;&gt;ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1843.36,-1497.75C1825.01,-1467.71 1792.91,-1417.73 1760,-1378.8 1714.64,-1325.14 1697.43,-1317.14 1646,-1269.26 1539.98,-1170.55 1503.34,-1156.37 1404,-1050.95"/>
</g>
<!-- ahriman_core -->
<g id="node24" class="node">
<title>ahriman_core</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="2337" cy="-2550.5" rx="42.94" ry="18"/>
<text text-anchor="middle" x="2337" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.core</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_application -->
<g id="edge55" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1368,-2455.51C1287.82,-2416.23 1358.99,-2328.58 1292,-2269.55"/>
<path fill="none" stroke="black" d="M1292,-2267.55C1281.79,-2254.73 1280.74,-2249.87 1268,-2239.56 1242.03,-2218.53 1222.87,-2229.65 1202,-2203.56 1143.26,-2130.1 1158.63,-2092.95 1144,-2000.03 1120.05,-1847.9 1053.48,-1435.77 1138,-1307.03"/>
<path fill="none" stroke="black" d="M1138,-1305.03C1147.05,-1288.16 1148.56,-1282.9 1162,-1269.26 1181.73,-1249.24 1214,-1261.37 1214,-1233.26"/>
<path fill="none" stroke="black" d="M1214,-1232.26C1214,-1200.36 1192.55,-1184.1 1214,-1160.49"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_add -->
<g id="edge56" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2294.33,-2547.97C2140,-2542.23 1611.21,-2520.39 1446,-2485.5 1409.96,-2477.89 1401.67,-2472.44 1368,-2457.51"/>
<path fill="none" stroke="black" d="M1368,-2455.51C1232.4,-2395.39 1194.4,-2384.18 1074,-2297.54 1024.49,-2261.92 1014.12,-2249.5 974,-2203.56 796.58,-2000.39 760,-1905.38 760,-1635.65 760,-1635.65 760,-1635.65 760,-1524.11 760,-1361.62 798,-1322.98 798,-1160.49 798,-1160.49 798,-1160.49 798,-1048.95 798,-1003.71 892.58,-913.85 947.93,-865.13"/>
<polygon fill="#f91010" stroke="black" points="950.57,-867.47 955.79,-858.25 945.96,-862.2 950.57,-867.47"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_clean -->
<g id="edge57" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_clean</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2294.19,-2548.52C2129.53,-2544.47 1537.1,-2527.26 1354,-2485.5 1245.13,-2460.68 1218.87,-2445.28 1121,-2391.52 1082.2,-2370.21 1077.05,-2357.78 1040,-2333.54 945.61,-2271.77 891.21,-2292.64 822,-2203.56 730.76,-2086.12 653.33,-1709.06 632,-1561.88 627.31,-1529.53 630.94,-1521.01 632,-1488.34 636.22,-1358.2 586.04,-1003.16 670,-903.64 714.49,-850.91 757.6,-894.85 821,-867.64 825.11,-865.88 829.26,-863.81 833.34,-861.58"/>
<polygon fill="#f91010" stroke="black" points="835.22,-864.53 842.1,-856.47 831.69,-858.48 835.22,-864.53"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_dump -->
<g id="edge58" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_dump</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2293.97,-2549.09C2063.01,-2546.69 975.53,-2532.98 834,-2485.5 764.34,-2462.14 752.65,-2440.63 698,-2391.52 535.43,-2245.42 304,-1926.32 304,-1854.73 304,-1854.73 304,-1854.73 304,-1743.19 304,-1418.07 264.06,-1326.46 351,-1013.18 364.19,-965.64 383.2,-912.43 396.89,-876.02"/>
<polygon fill="#f91010" stroke="black" points="400.33,-876.81 400.59,-866.22 393.78,-874.33 400.33,-876.81"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge59" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1292,-2361.53C1227.87,-2297.07 1200.64,-2285.87 1162,-2203.56 1103.77,-2079.5 1008.39,-1232.7 1026,-1160.49"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_init -->
<g id="edge60" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_init</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2294,-2455.51C2250.06,-2322.33 2094.67,-2478.94 1985,-2391.52 1867.38,-2297.77 1784,-1895.6 1784,-1745.19 1784,-1745.19 1784,-1745.19 1784,-1414.57 1784,-1204.28 1887.81,-1124.3 1784,-941.41"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_key_import -->
<g id="edge61" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_key_import</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2327.7,-2532.69C2318.05,-2514.61 2303.1,-2484.77 2294,-2457.51"/>
<path fill="none" stroke="black" d="M2294,-2455.51C2268.19,-2378.24 2004.17,-2431.19 1933,-2391.52 1869.5,-2356.13 1859.41,-2333.05 1824,-2269.55"/>
<path fill="none" stroke="black" d="M1824,-2267.55C1756.1,-2160.75 1594,-1867.08 1594,-1526.11 1594,-1526.11 1594,-1526.11 1594,-1414.57 1594,-1300.39 1632,-1274.67 1632,-1160.49 1632,-1160.49 1632,-1160.49 1632,-1048.95 1632,-978.74 1613.92,-958.43 1570,-903.64 1565.51,-898.05 1538.2,-878.56 1513.26,-861.31"/>
<polygon fill="#f91010" stroke="black" points="1515.15,-858.36 1504.93,-855.57 1511.17,-864.12 1515.15,-858.36"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_rebuild -->
<g id="edge62" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_rebuild</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1824,-2267.55C1800.42,-2220.51 1746,-1694.52 1746,-1526.11 1746,-1526.11 1746,-1526.11 1746,-1414.57 1746,-1333.99 1703.14,-1301.5 1746,-1233.26"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_remove -->
<g id="edge63" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2293.99,-2548.79C2054.29,-2544.71 888.42,-2523.08 733,-2485.5 305.4,-2382.13 76,-2185.1 76,-1745.19 76,-1745.19 76,-1745.19 76,-1305.03 76,-1240.79 60.78,-1222.9 76,-1160.49"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge64" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2294,-2455.51C2293.24,-2452.66 2699.16,-2334.37 2702,-2333.54 2745.85,-2320.78 3460.3,-2141.46 3493,-2109.57 3609.26,-1996.19 3520,-1907.58 3520,-1745.19 3520,-1745.19 3520,-1745.19 3520,-1232.26 3520,-1092.11 3697.54,-1165.7 3778,-1050.95"/>
<path fill="none" stroke="black" d="M3778,-1048.95C3791.02,-1027.21 3833.36,-959.88 3816,-941.41"/>
<path fill="none" stroke="black" d="M3816,-939.41C3757.02,-876.68 2450.27,-841.51 2119.53,-833.6"/>
<polygon fill="#f91010" stroke="black" points="2119.18,-830.09 2109.1,-833.35 2119.02,-837.09 2119.18,-830.09"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_report -->
<g id="edge65" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2294.1,-2548.75C2078.78,-2544.83 1121.25,-2525.28 995,-2485.5 787.2,-2420.04 720.49,-2380.94 594,-2203.56 433.82,-1978.92 342,-1468.21 342,-1307.03 342,-1307.03 342,-1307.03 342,-1158.49 342,-1039.61 435.41,-923.88 488.76,-867.48"/>
<polygon fill="#f91010" stroke="black" points="491.61,-869.56 496,-859.92 486.56,-864.72 491.61,-869.56"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_search -->
<g id="edge66" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2360.24,-2535.18C2370.25,-2529.79 2382.31,-2524.3 2394,-2521.5 2536,-2487.49 4876.19,-2493.14 5022,-2485.5 5481.27,-2461.45 6720.26,-2580.25 7083,-2297.54 7143.02,-2250.76 7259,-1711.75 7259,-1635.65 7259,-1635.65 7259,-1635.65 7259,-1305.03 7259,-1270.98 7266.98,-1262.31 7283,-1232.26 7292.54,-1214.37 7299.12,-1212.69 7311,-1196.26 7322.22,-1180.75 7330.13,-1179 7335,-1160.49"/>
<path fill="none" stroke="black" d="M7335,-1158.49C7343.97,-1111.51 7346.17,-1098.24 7339,-1050.95"/>
<path fill="none" stroke="black" d="M7339,-1048.95C7330.13,-990.48 7332.51,-922.13 7335.68,-877.98"/>
<polygon fill="#f91010" stroke="black" points="7339.18,-878.08 7336.45,-867.84 7332.2,-877.55 7339.18,-878.08"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge67" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2294.12,-2548.98C2141.2,-2546.71 1628.89,-2535.42 1577,-2485.5 1463.3,-2376.14 1508.96,-1937.57 1490,-1780.96 1478.21,-1683.62 1469.79,-1659.76 1464,-1561.88 1462.07,-1529.25 1463.52,-1521.02 1464,-1488.34 1465.78,-1366.76 1539.36,-1047.53 1480,-941.41"/>
<path fill="none" stroke="black" d="M1480,-939.41C1460.41,-907.85 1428.79,-880.21 1402.78,-860.85"/>
<polygon fill="#f91010" stroke="black" points="1404.7,-857.92 1394.56,-854.87 1400.58,-863.58 1404.7,-857.92"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_sign -->
<g id="edge68" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2294.03,-2549.79C2105.64,-2550.68 1352.11,-2550.05 1126,-2485.5 991.35,-2447.07 975.97,-2394.7 850,-2333.54 813.09,-2315.62 795.71,-2324.74 765,-2297.54 418.19,-1990.36 571.47,-1732 594,-1269.26 601.95,-1105.99 537.74,-1035.76 634,-903.64 655.77,-873.76 676.69,-885.63 709,-867.64 712.96,-865.44 717.03,-863.07 721.07,-860.63"/>
<polygon fill="#f91010" stroke="black" points="723.16,-863.46 729.84,-855.24 719.49,-857.49 723.16,-863.46"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_status -->
<g id="edge69" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2294,-2455.51C2288.82,-2435.92 2570.34,-2249.49 2588,-2239.56 2683.54,-2185.83 2709.31,-2170.66 2816,-2145.57 2870.98,-2132.65 3284.51,-2150.9 3323,-2109.57 3345.28,-2085.66 3325.76,-2068.6 3323,-2036.03 3316.09,-1954.58 3292,-1936.48 3292,-1854.73 3292,-1854.73 3292,-1854.73 3292,-1633.65 3292,-1476.91 3398.95,-1461.59 3425,-1307.03"/>
<path fill="none" stroke="black" d="M3425,-1305.03C3431.22,-1241.09 3371.57,-1196.15 3425,-1160.49"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge70" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2293.89,-2549.73C2110.79,-2550.32 1397.17,-2548.47 1183,-2485.5 1177.93,-2484.01 855.94,-2301.07 852,-2297.54 736.11,-2193.73 608,-1889.87 608,-1854.73 608,-1854.73 608,-1854.73 608,-1743.19 608,-1400.4 538.03,-1319.39 518,-977.18 516.09,-944.55 501.53,-931.87 518,-903.64 518.29,-903.15 559.36,-879.98 594.72,-860.1"/>
<polygon fill="#f91010" stroke="black" points="596.55,-863.09 603.55,-855.14 593.12,-856.99 596.55,-863.09"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_sync -->
<g id="edge71" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_sync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1368,-2455.51C1319.52,-2434.02 1331.15,-2399.3 1292,-2363.53"/>
<path fill="none" stroke="black" d="M1292,-2361.53C1248.53,-2321.82 1226.51,-2327.8 1176,-2297.54 1133.28,-2271.94 1020.18,-2213.57 988,-2175.57"/>
<path fill="none" stroke="black" d="M988,-2173.57C877.25,-2055.76 907.59,-1978.43 916,-1816.96 934.69,-1458.27 821.09,-1324.63 1000,-1013.18 1026.89,-966.37 1095.18,-995.33 1098,-941.41"/>
<path fill="none" stroke="black" d="M1098,-939.41C1095.44,-919.41 1095.04,-897.15 1095.43,-878.09"/>
<polygon fill="#f91010" stroke="black" points="1098.94,-877.96 1095.73,-867.87 1091.94,-877.76 1098.94,-877.96"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_update -->
<g id="edge72" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M988,-2173.57C967.44,-2148.73 993.19,-1039.37 1012,-1013.18 1066.37,-937.5 1175.63,-1028.42 1209,-941.41"/>
<path fill="none" stroke="black" d="M1209,-939.41C1214.74,-919.66 1215.54,-896.98 1214.58,-877.56"/>
<polygon fill="#f91010" stroke="black" points="1218.07,-877.19 1213.92,-867.44 1211.08,-877.65 1218.07,-877.19"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_user -->
<g id="edge73" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1292,-2267.55C1103.96,-1961.85 1228.86,-1718.79 1504,-1488.34 1666.91,-1351.89 1727.85,-1337.79 1929,-1269.26 2013.25,-1240.56 2056.1,-1288.36 2126,-1233.26"/>
<path fill="none" stroke="black" d="M2126,-1232.26C2152.15,-1207.39 2172.97,-1195.45 2164,-1160.49"/>
<path fill="none" stroke="black" d="M2164,-1158.49C2143.13,-1077.2 1937.39,-925.48 1846.17,-861.52"/>
<polygon fill="#f91010" stroke="black" points="1847.91,-858.46 1837.71,-855.61 1843.9,-864.2 1847.91,-858.46"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_web -->
<g id="edge74" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2294,-2455.51C2271.63,-2385.84 2545.52,-2407.17 2617,-2391.52 2621.1,-2390.62 3789.32,-2112.8 3792,-2109.57 3926.73,-1947.31 3816,-1846.55 3816,-1635.65 3816,-1635.65 3816,-1635.65 3816,-1158.49 3816,-738.94 4061.77,-606.26 4457,-465.49 4547.01,-433.43 6115.94,-412.88 6172,-335.5"/>
<path fill="none" stroke="black" d="M6172,-334.5C6227.96,-223.66 1996.45,-225.02 1453.98,-225.65"/>
<polygon fill="#f91010" stroke="black" points="1453.67,-222.15 1443.67,-225.66 1453.68,-229.15 1453.67,-222.15"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_lock -->
<g id="edge75" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2293.96,-2549.35C2136.06,-2548.36 1595.13,-2540.93 1544,-2485.5 1441.56,-2374.46 1508.63,-2292.46 1544,-2145.57 1569.6,-2039.26 1595.77,-2017.77 1656,-1926.5 1667.58,-1908.95 1899.21,-1656.63 1898,-1635.65"/>
<path fill="none" stroke="black" d="M1898,-1633.65C1891.33,-1609.82 1881.91,-1583.71 1874,-1563.18"/>
<polygon fill="#f91010" stroke="black" points="1877.15,-1561.63 1870.26,-1553.59 1870.63,-1564.18 1877.15,-1561.63"/>
</g>
<!-- ahriman_models_auth_settings -->
<g id="node62" class="node">
<title>ahriman_models_auth_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="5245" cy="-2072.8" rx="53.07" ry="28.98"/>
<text text-anchor="middle" x="5245" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5245" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5245" y="-2059.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth_settings</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_auth_settings -->
<g id="edge76" class="edge">
<title>ahriman_core&#45;&gt;ahriman_models_auth_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2360.25,-2535.22C2370.26,-2529.85 2382.32,-2524.35 2394,-2521.5 2575.4,-2477.31 3887.63,-2496.72 4074,-2485.5 4126.83,-2482.33 4976.3,-2418.22 5022,-2391.52 5133.75,-2326.23 5203.33,-2180.08 5231.13,-2111.15"/>
<polygon fill="#f91010" stroke="black" points="5234.5,-2112.14 5234.92,-2101.56 5227.99,-2109.57 5234.5,-2112.14"/>
</g>
<!-- ahriman_models_build_status -->
<g id="node63" class="node">
<title>ahriman_models_build_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e50505" stroke="black" cx="5540" cy="-2362.53" rx="48.58" ry="28.98"/>
<text text-anchor="middle" x="5540" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5540" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5540" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">build_status</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_build_status -->
<g id="edge77" class="edge">
<title>ahriman_core&#45;&gt;ahriman_models_build_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2360.25,-2535.22C2370.26,-2529.84 2382.32,-2524.34 2394,-2521.5 2583.63,-2475.4 3954.95,-2491.84 4150,-2485.5 4430.13,-2476.41 4500.57,-2479.3 4780,-2457.51"/>
<path fill="none" stroke="black" d="M4780,-2455.51C4810.14,-2453.16 4812.63,-2434.71 4842,-2427.52 5118.72,-2359.76 5206.17,-2462.81 5482,-2391.52 5486.63,-2390.33 5491.33,-2388.75 5495.95,-2386.95"/>
<polygon fill="#f91010" stroke="black" points="5497.42,-2390.13 5505.26,-2383 5494.69,-2383.68 5497.42,-2390.13"/>
</g>
<!-- ahriman_models_package -->
<g id="node66" class="node">
<title>ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#950303" stroke="black" cx="3571" cy="-2362.53" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3571" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3571" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3571" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">package</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_package -->
<g id="edge78" class="edge">
<title>ahriman_core&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2361.53,-2535.47C2409.65,-2508.76 2520.58,-2451.18 2622,-2427.52 2796.15,-2386.9 3354.92,-2369.21 3522.84,-2364.73"/>
<polygon fill="#f91010" stroke="black" points="3522.96,-2368.22 3532.86,-2364.46 3522.77,-2361.23 3522.96,-2368.22"/>
</g>
<!-- ahriman_models_package_source -->
<g id="node68" class="node">
<title>ahriman_models_package_source</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="5821" cy="-2362.53" rx="62.45" ry="28.98"/>
<text text-anchor="middle" x="5821" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5821" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5821" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">package_source</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_package_source -->
<g id="edge79" class="edge">
<title>ahriman_core&#45;&gt;ahriman_models_package_source</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2360.24,-2535.18C2370.25,-2529.8 2382.31,-2524.31 2394,-2521.5 2669.77,-2455.39 4669.61,-2548.98 4946,-2485.5 5005.29,-2471.89 5010.98,-2442.3 5070,-2427.52 5361.43,-2354.55 5450.75,-2452.12 5745,-2391.52 5752.01,-2390.08 5759.23,-2388.1 5766.31,-2385.87"/>
<polygon fill="#f91010" stroke="black" points="5767.46,-2389.17 5775.83,-2382.68 5765.24,-2382.53 5767.46,-2389.17"/>
</g>
<!-- ahriman_models_report_settings -->
<g id="node69" class="node">
<title>ahriman_models_report_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b03a3a" stroke="black" cx="2052" cy="-2362.53" rx="57.97" ry="28.98"/>
<text text-anchor="middle" x="2052" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2052" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2052" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report_settings</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_report_settings -->
<g id="edge80" class="edge">
<title>ahriman_core&#45;&gt;ahriman_models_report_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2294,-2455.51C2284.36,-2419.18 2184,-2391.06 2115.59,-2375.93"/>
<polygon fill="#f91010" stroke="black" points="2116.25,-2372.49 2105.74,-2373.79 2114.77,-2379.33 2116.25,-2372.49"/>
</g>
<!-- ahriman_models_sign_settings -->
<g id="node71" class="node">
<title>ahriman_models_sign_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="2294" cy="-2362.53" rx="52.15" ry="28.98"/>
<text text-anchor="middle" x="2294" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2294" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2294" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sign_settings</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_sign_settings -->
<g id="edge81" class="edge">
<title>ahriman_core&#45;&gt;ahriman_models_sign_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2294,-2455.51C2289.42,-2438.26 2288.84,-2418.53 2289.64,-2401.78"/>
<polygon fill="#f91010" stroke="black" points="2293.14,-2401.99 2290.3,-2391.79 2286.15,-2401.54 2293.14,-2401.99"/>
</g>
<!-- ahriman_models_upload_settings -->
<g id="node73" class="node">
<title>ahriman_models_upload_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b03a3a" stroke="black" cx="4882" cy="-2362.53" rx="60.21" ry="28.98"/>
<text text-anchor="middle" x="4882" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4882" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="4882" y="-2349.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload_settings</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_models_upload_settings -->
<g id="edge82" class="edge">
<title>ahriman_core&#45;&gt;ahriman_models_upload_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2360.26,-2535.26C2370.27,-2529.89 2382.33,-2524.39 2394,-2521.5 2671.11,-2453.03 3395.78,-2528.3 3678,-2485.5 3723.63,-2478.59 3731.97,-2460.9 3778,-2457.51"/>
<path fill="none" stroke="black" d="M3778,-2455.51C3806.15,-2453.44 3807.69,-2434.64 3835,-2427.52 3980.79,-2389.55 4361.65,-2401.21 4512,-2391.52 4616.99,-2384.76 4738.61,-2375.23 4812.91,-2369.22"/>
<polygon fill="#f91010" stroke="black" points="4813.39,-2372.69 4823.07,-2368.4 4812.82,-2365.72 4813.39,-2372.69"/>
</g>
<!-- ahriman_web_middlewares_auth_handler -->
<g id="node80" class="node">
<title>ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="6797" cy="-713.56" rx="52.15" ry="36.54"/>
<text text-anchor="middle" x="6797" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6797" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="6797" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">middlewares.</text>
<text text-anchor="middle" x="6797" y="-694.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth_handler</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge83" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2360.24,-2535.18C2370.25,-2529.8 2382.31,-2524.31 2394,-2521.5 2661.55,-2457.3 4607.47,-2567.83 4870,-2485.5 4913.99,-2471.71 4912.26,-2442.08 4956,-2427.52 5109.26,-2376.5 5531.86,-2451.11 5682,-2391.52 5718.92,-2376.87 5713,-2347.98 5750,-2333.54 5847.16,-2295.61 6609.25,-2365.93 6688,-2297.54 6738.59,-2253.61 6727.91,-2066.42 6737,-2000.03 6743.67,-1951.35 6745.99,-1939.27 6752,-1890.5 6781.86,-1648.16 6784.15,-1586.73 6795,-1342.8 6797.18,-1293.71 6802.38,-1281.1 6797,-1232.26 6793.42,-1199.78 6781.71,-1193.16 6781,-1160.49"/>
</g>
<!-- ahriman_web_views_base -->
<g id="node84" class="node">
<title>ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#950303" stroke="black" cx="5403" cy="-830.87" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5403" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5403" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5403" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5403" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">base</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_views_base -->
<g id="edge84" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4780,-2455.51C4810.14,-2453.16 4812.6,-2434.59 4842,-2427.52 4923.77,-2407.87 5535.14,-2447.39 5598,-2391.52 5609.87,-2380.97 5643.69,-2125.4 5645,-2109.57 5647.7,-2077 5646.82,-2068.67 5645,-2036.03 5639.99,-1946.42 5585.44,-1317.7 5555,-1233.26"/>
</g>
<!-- ahriman_web_views_index -->
<g id="node85" class="node">
<title>ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4933" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4933" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4933" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4933" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4933" y="-694.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">index</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_views_index -->
<g id="edge85" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3778,-2455.51C3806.15,-2453.44 3807.62,-2434.35 3835,-2427.52 3895.19,-2412.51 4907.85,-2436.09 4951,-2391.52 5024.81,-2315.29 4921.39,-2363.48 4796,-2109.57 4660.1,-1834.38 4634.65,-1755.06 4584,-1452.34 4559.82,-1307.83 4544.7,-1265.16 4579,-1122.72 4604.6,-1016.41 4621.81,-988.32 4691,-903.64 4723.37,-864.03 4753.44,-874.98 4781,-831.87"/>
<path fill="none" stroke="black" d="M4781,-829.87C4811.46,-782.69 4841,-793 4885,-758.1 4889.41,-754.61 4893.93,-750.82 4898.34,-746.98"/>
<polygon fill="#f91010" stroke="black" points="4900.97,-749.33 4906.13,-740.07 4896.33,-744.09 4900.97,-749.33"/>
</g>
<!-- ahriman_web_views_service_reload_auth -->
<g id="node88" class="node">
<title>ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4829" cy="-713.56" rx="47.25" ry="44.6"/>
<text text-anchor="middle" x="4829" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4829" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4829" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4829" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="4829" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">reload_auth</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge86" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2360.59,-2535.32C2370.55,-2530.04 2382.5,-2524.57 2394,-2521.5 2631.97,-2458.01 2701.72,-2507.92 2947,-2485.5 3302.64,-2453.01 3413.74,-2524.94 3745,-2391.52 4107.87,-2245.37 4196,-2026.85 4196,-1635.65 4196,-1635.65 4196,-1635.65 4196,-1414.57 4196,-1324.61 4255.93,-1318.05 4286,-1233.26 4354.21,-1040.93 4255.22,-914.47 4420,-794.1 4475.36,-753.67 4672.95,-729.5 4771.81,-719.68"/>
<polygon fill="#f91010" stroke="black" points="4772.31,-723.15 4781.93,-718.69 4771.63,-716.18 4772.31,-723.15"/>
</g>
<!-- ahriman_web_views_status_package -->
<g id="node93" class="node">
<title>ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5922" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5922" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5922" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5922" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5922" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="5922" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">package</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_views_status_package -->
<g id="edge87" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2360.24,-2535.18C2370.25,-2529.8 2382.32,-2524.31 2394,-2521.5 2653.32,-2459.21 4534.1,-2545.32 4794,-2485.5 4853.29,-2471.86 4858.97,-2442.24 4918,-2427.52 5220.7,-2352.05 5320.31,-2481.56 5619,-2391.52 5667.45,-2376.92 5668.75,-2348.8 5717,-2333.54 5911.68,-2271.96 5988.27,-2380.13 6175,-2297.54 6340.56,-2224.32 6373.08,-2105 6343,-1926.5 6334.44,-1875.68 6330.66,-1861.64 6305,-1816.96 6282.38,-1777.57 5788.76,-1238.86 5773,-1196.26 5761.66,-1165.61 5763.11,-1153.87 5773,-1122.72 5802.84,-1028.71 5906.38,-1039.91 5901,-941.41"/>
<path fill="none" stroke="black" d="M5901,-939.41C5893.84,-880.43 5902.51,-812.49 5910.79,-766.86"/>
<polygon fill="#f91010" stroke="black" points="5914.25,-767.38 5912.65,-756.9 5907.37,-766.09 5914.25,-767.38"/>
</g>
<!-- ahriman_web_views_user_login -->
<g id="node97" class="node">
<title>ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5309" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5309" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5309" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5309" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5309" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user.</text>
<text text-anchor="middle" x="5309" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">login</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_views_user_login -->
<g id="edge88" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2360.25,-2535.23C2370.26,-2529.85 2382.33,-2524.35 2394,-2521.5 2567.72,-2479.1 3835.24,-2547.43 4003,-2485.5 4041.22,-2471.4 4035.9,-2441.96 4074,-2427.52 4167.89,-2391.93 4907.43,-2463.93 4977,-2391.52 4994.86,-2372.94 4978.5,-2359.27 4977,-2333.54 4968.32,-2184.56 4946.68,-2149.02 4938,-2000.03 4919.99,-1690.95 5009,-1616.64 5009,-1307.03 5009,-1307.03 5009,-1307.03 5009,-1232.26 5009,-1101.9 4984.47,-1071.08 4971,-941.41"/>
</g>
<!-- ahriman_web_views_user_logout -->
<g id="node98" class="node">
<title>ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4411" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4411" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4411" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4411" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4411" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user.</text>
<text text-anchor="middle" x="4411" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">logout</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge89" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2360.95,-2535.48C2370.87,-2530.28 2382.69,-2524.84 2394,-2521.5 2436.92,-2508.85 3149.46,-2431.81 3194,-2427.52 3406.51,-2407.06 3469.33,-2455.52 3673,-2391.52 3751.31,-2366.92 3769.97,-2351.3 3832,-2297.54 3848.36,-2283.36 3937.39,-2159.47 3954,-2145.57 3979.62,-2124.13 3999.8,-2136.19 4020,-2109.57 4110.65,-1990.18 4066.67,-1927.97 4096,-1780.96 4118.56,-1667.88 4109.64,-1359.03 4182,-1269.26 4209.04,-1235.72 4272.36,-1276.34 4272,-1233.26"/>
<path fill="none" stroke="black" d="M4272,-1232.26C4271.48,-1210.26 4246.41,-1216.6 4238,-1196.26 4206.9,-1121.06 4217.14,-1092.58 4235,-1013.18 4242.74,-978.75 4265.35,-976.52 4269,-941.41"/>
<path fill="none" stroke="black" d="M4269,-939.41C4273.45,-874.11 4255.1,-847.47 4293,-794.1 4312.35,-766.86 4331.39,-776.92 4359,-758.1 4363.62,-754.95 4368.32,-751.47 4372.9,-747.89"/>
<polygon fill="#f91010" stroke="black" points="4375.39,-750.39 4381,-741.39 4371.01,-744.93 4375.39,-750.39"/>
</g>
<!-- ahriman_web_web -->
<g id="node99" class="node">
<title>ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="6172" cy="-400.5" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="6172" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6172" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="6172" y="-387" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web</text>
</g>
<!-- ahriman_core&#45;&gt;ahriman_web_web -->
<g id="edge90" class="edge">
<title>ahriman_core&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2361.98,-2535.63C2371.75,-2530.63 2383.18,-2525.3 2394,-2521.5 2463.59,-2497.08 2486.62,-2510.54 2556,-2485.5 2609.1,-2466.34 2614.39,-2441.82 2669,-2427.52 2771.08,-2400.8 3521.86,-2435.02 3618,-2391.52 3650.36,-2376.88 3646.36,-2357.03 3673,-2333.54 3693.27,-2315.67 3701.02,-2314.57 3722,-2297.54 3770.63,-2258.07 3783.84,-2248.94 3827,-2203.56 3864.02,-2164.63 3870.56,-2152.39 3903,-2109.57 3950.8,-2046.47 4006,-2043.43 4006,-1964.27 4006,-1964.27 4006,-1964.27 4006,-1232.26 4006,-1142.1 4050.59,-1128.25 4097,-1050.95"/>
<path fill="none" stroke="black" d="M4097,-1048.95C4139.35,-971.93 4151.29,-737 4207,-669.01 4250.82,-615.54 4338.46,-666.06 4345,-597.24"/>
<path fill="none" stroke="black" d="M4345,-595.24C4363.59,-397.48 5936.14,-491.03 6125,-429.49 6128.5,-428.35 6132.02,-426.91 6135.47,-425.29"/>
<polygon fill="#f91010" stroke="black" points="6137.13,-428.38 6144.39,-420.66 6133.9,-422.16 6137.13,-428.38"/>
</g>
<!-- ahriman_core_alpm -->
<g id="node25" class="node">
<title>ahriman_core_alpm</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#ce3b3b" stroke="black" cx="2550" cy="-2550.5" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2550" y="-2559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2550" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2550" y="-2537" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">alpm</text>
</g>
<!-- ahriman_core_repository_properties -->
<g id="node45" class="node">
<title>ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="2718" cy="-1634.65" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="2718" y="-1648.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2718" y="-1637.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2718" y="-1626.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="2718" y="-1615.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">properties</text>
</g>
<!-- ahriman_core_alpm&#45;&gt;ahriman_core_repository_properties -->
<g id="edge91" class="edge">
<title>ahriman_core_alpm&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2528.15,-2526.5C2499.32,-2496.01 2447.16,-2440.35 2404,-2391.52 2381.66,-2366.24 2383.15,-2352.14 2355,-2333.54 2309.61,-2303.55 2288.39,-2318.05 2238,-2297.54 2071.18,-2229.65 1971.62,-2264.03 1879,-2109.57 1862.19,-2081.54 1861.98,-2063.93 1879,-2036.03 1897.22,-2006.17 1924.32,-2024.83 1949,-2000.03 1994.5,-1954.31 2035.8,-1783.09 2088,-1745.19"/>
<path fill="none" stroke="black" d="M2088,-1743.19C2113.4,-1724.03 2119.6,-1716.8 2150,-1707.42 2353.15,-1644.73 2419.75,-1718.83 2627,-1671.42 2641.66,-1668.06 2657.06,-1662.75 2670.94,-1657.23"/>
<polygon fill="#ce3b3b" stroke="black" points="2672.36,-1660.44 2680.29,-1653.4 2669.71,-1653.96 2672.36,-1660.44"/>
</g>
<!-- ahriman_core_alpm&#45;&gt;ahriman_models_package -->
<g id="edge92" class="edge">
<title>ahriman_core_alpm&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2576.97,-2529.88C2617.46,-2501.61 2697.4,-2450.33 2774,-2427.52 2915.45,-2385.41 3371.82,-2369.1 3522.34,-2364.79"/>
<polygon fill="#ce3b3b" stroke="black" points="3522.74,-2368.28 3532.64,-2364.5 3522.55,-2361.28 3522.74,-2368.28"/>
</g>
<!-- ahriman_core_alpm_pacman -->
<g id="node26" class="node">
<title>ahriman_core_alpm_pacman</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b42d2d" stroke="black" cx="2550" cy="-2652.26" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2550" y="-2666.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2550" y="-2655.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2550" y="-2644.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">alpm.</text>
<text text-anchor="middle" x="2550" y="-2633.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">pacman</text>
</g>
<!-- ahriman_core_alpm_pacman&#45;&gt;ahriman_core_repository_properties -->
<g id="edge93" class="edge">
<title>ahriman_core_alpm_pacman&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2521.03,-2628.08C2513.84,-2623.27 2505.92,-2618.7 2498,-2615.49 2409.02,-2579.43 2374.73,-2613.63 2285,-2579.49 2137.94,-2523.53 2061.2,-2529.18 1985,-2391.52 1972.52,-2368.98 1982.27,-2359.17 1985,-2333.54 1999.3,-2199.05 1997.75,-2161.2 2049,-2036.03 2092.7,-1929.32 2104.48,-1896.47 2188,-1816.96 2259.44,-1748.95 2287.72,-1739.45 2381,-1707.42 2485.51,-1671.53 2520.21,-1699.82 2627,-1671.42 2641.4,-1667.59 2656.61,-1662.18 2670.4,-1656.73"/>
<polygon fill="#b42d2d" stroke="black" points="2671.73,-1659.97 2679.69,-1652.97 2669.11,-1653.48 2671.73,-1659.97"/>
</g>
<!-- ahriman_core_alpm_pacman&#45;&gt;ahriman_models_package -->
<g id="edge94" class="edge">
<title>ahriman_core_alpm_pacman&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2584.97,-2636.78C2680.76,-2597.65 2956.11,-2488.58 3194,-2427.52 3310.6,-2397.59 3451.17,-2377.96 3523.25,-2369.05"/>
<polygon fill="#b42d2d" stroke="black" points="3523.88,-2372.5 3533.38,-2367.81 3523.03,-2365.55 3523.88,-2372.5"/>
</g>
<!-- ahriman_core_alpm_repo -->
<g id="node27" class="node">
<title>ahriman_core_alpm_repo</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="1926" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="1926" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1926" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="1926" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">alpm.</text>
<text text-anchor="middle" x="1926" y="-2053.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repo</text>
</g>
<!-- ahriman_core_alpm_repo&#45;&gt;ahriman_core_repository_properties -->
<g id="edge95" class="edge">
<title>ahriman_core_alpm_repo&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1956.63,-2050.59C1985.14,-2030.73 2023.61,-2003.58 2026,-2000.03 2091.19,-1903.4 1999.18,-1820.68 2088,-1745.19"/>
</g>
<!-- ahriman_core_auth -->
<g id="node28" class="node">
<title>ahriman_core_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="4829" cy="-1159.49" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4829" y="-1167.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4829" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4829" y="-1145.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth</text>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge96" class="edge">
<title>ahriman_core_auth&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4866.62,-1154.02C4938.35,-1145 5099.27,-1122.4 5231,-1086.72 5322.41,-1061.96 5341.63,-1044.53 5431,-1013.18 5576.03,-962.32 5610.13,-941.85 5759,-903.64 6124.45,-809.84 6573.8,-744.57 6735.45,-722.65"/>
<polygon fill="#f91010" stroke="black" points="6736.24,-726.08 6745.68,-721.27 6735.3,-719.14 6736.24,-726.08"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_base -->
<g id="edge97" class="edge">
<title>ahriman_core_auth&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4860.39,-1142.7C4888.17,-1128.54 4929.66,-1106.94 4965,-1086.72 5099.26,-1009.9 5126.07,-979.29 5261,-903.64 5293.58,-885.38 5331.36,-866.39 5359.75,-852.53"/>
<polygon fill="#f91010" stroke="black" points="5361.54,-855.56 5369,-848.04 5358.48,-849.26 5361.54,-855.56"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_index -->
<g id="edge98" class="edge">
<title>ahriman_core_auth&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4832.95,-1130.22C4835.53,-1108.54 4838.21,-1077.88 4837,-1050.95"/>
<path fill="none" stroke="black" d="M4837,-1048.95C4832.52,-949.42 4733.23,-919.32 4781,-831.87"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge99" class="edge">
<title>ahriman_core_auth&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4705,-939.41C4688.29,-894.64 4679.07,-872.02 4705,-831.87"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_user_login -->
<g id="edge100" class="edge">
<title>ahriman_core_auth&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4837,-1048.95C4834.95,-935.59 4900.07,-920.33 4971,-831.87"/>
<path fill="none" stroke="black" d="M4971,-829.87C5009.36,-779.44 5047.49,-809.31 5109,-794.1 5176.82,-777.34 5200.34,-790.93 5262,-758.1 5265.92,-756.02 5269.75,-753.53 5273.44,-750.8"/>
<polygon fill="#f91010" stroke="black" points="5275.64,-753.53 5281.25,-744.55 5271.26,-748.07 5275.64,-753.53"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge101" class="edge">
<title>ahriman_core_auth&#45;&gt;ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4801.22,-1139.34C4793.4,-1133.96 4784.87,-1128.1 4777,-1122.72 4753.49,-1106.65 4738.93,-1110.97 4724,-1086.72 4689.84,-1031.27 4727.77,-1002.43 4705,-941.41"/>
<path fill="none" stroke="black" d="M4705,-939.41C4678.39,-877.74 4626.37,-907.08 4572,-867.64 4524.45,-833.16 4476.5,-785.52 4445.45,-752.59"/>
<polygon fill="#f91010" stroke="black" points="4447.71,-749.88 4438.32,-744.97 4442.59,-754.66 4447.71,-749.88"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_web -->
<g id="edge102" class="edge">
<title>ahriman_core_auth&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4795.64,-1145.1C4768.51,-1132.95 4730.51,-1112.94 4704,-1086.72 4550.81,-935.22 4607.77,-823.9 4458,-669.01 4416.64,-626.24 4338.46,-656.38 4345,-597.24"/>
</g>
<!-- ahriman_core_auth_auth -->
<g id="node29" class="node">
<title>ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#910707" stroke="black" cx="5507" cy="-1744.19" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5507" y="-1758.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5507" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5507" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="5507" y="-1725.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth</text>
</g>
<!-- ahriman_core_auth_mapping -->
<g id="node31" class="node">
<title>ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b2222" stroke="black" cx="5151" cy="-1634.65" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5151" y="-1648.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5151" y="-1637.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5151" y="-1626.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="5151" y="-1615.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">mapping</text>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge103" class="edge">
<title>ahriman_core_auth_auth&#45;&gt;ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5460.91,-1729.26C5392.6,-1708.63 5265.25,-1670.16 5197,-1649.54"/>
<polygon fill="#910707" stroke="black" points="5459.99,-1732.64 5470.57,-1732.18 5462.01,-1725.94 5459.99,-1732.64"/>
<polygon fill="#910707" stroke="black" points="5197.96,-1646.18 5187.37,-1646.64 5195.93,-1652.88 5197.96,-1646.18"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge104" class="edge">
<title>ahriman_core_auth_auth&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5541.07,-1727.05C5676.98,-1663.08 6194.48,-1423.27 6637,-1269.26 6693.88,-1249.47 6861.6,-1244.24 6898,-1196.26 6917.75,-1170.22 6902.3,-1155.12 6898,-1122.72 6892.51,-1081.35 6847.42,-983.12 6849,-941.41"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_views_base -->
<g id="edge105" class="edge">
<title>ahriman_core_auth_auth&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5505.26,-1707.25C5503.27,-1657.84 5500.99,-1566.2 5507,-1488.34 5514.58,-1390.1 5515.44,-1364.42 5541,-1269.26 5545.45,-1252.68 5559.29,-1249.88 5555,-1233.26"/>
<path fill="none" stroke="black" d="M5555,-1232.26C5544.28,-1207.84 5525.5,-1215.46 5507,-1196.26 5452.6,-1139.81 5425.35,-1127.17 5407,-1050.95"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge106" class="edge">
<title>ahriman_core_auth_auth&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5485.11,-1713.7C5440.48,-1656.46 5332.52,-1532.08 5207,-1488.34 5084.01,-1445.48 4724.76,-1532.37 4622,-1452.34 4598.49,-1434.03 4442.22,-966.04 4459,-941.41"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_web -->
<g id="edge107" class="edge">
<title>ahriman_core_auth_auth&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5544.06,-1734.75C5749.66,-1687.12 6746.87,-1445.18 6916,-1196.26 6995.79,-1078.82 7048.91,-676.14 6968,-559.47 6921.76,-492.79 6869.32,-532.29 6797,-495.48"/>
</g>
<!-- ahriman_core_auth_helpers -->
<g id="node30" class="node">
<title>ahriman_core_auth_helpers</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#d92626" stroke="black" cx="4771" cy="-1049.95" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4771" y="-1063.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4771" y="-1052.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4771" y="-1041.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="4771" y="-1030.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">helpers</text>
</g>
<!-- ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_index -->
<g id="edge108" class="edge">
<title>ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4743,-939.41C4724.9,-892.06 4756.7,-876.36 4781,-831.87"/>
</g>
<!-- ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_user_login -->
<g id="edge109" class="edge">
<title>ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4783.32,-1014.81C4806.63,-956.16 4863.4,-838.34 4957,-794.1 5080.41,-735.78 5138.07,-815.3 5262,-758.1 5266.09,-756.22 5270.06,-753.84 5273.84,-751.17"/>
<polygon fill="#d92626" stroke="black" points="5276.09,-753.86 5281.82,-744.95 5271.78,-748.34 5276.09,-753.86"/>
</g>
<!-- ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge110" class="edge">
<title>ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4763.83,-1013.47C4759.03,-992.21 4751.95,-964.84 4743,-941.41"/>
<path fill="none" stroke="black" d="M4743,-939.41C4736.17,-921.53 4732.81,-916.9 4719,-903.64 4638.08,-825.92 4519.92,-764.52 4456.04,-734.56"/>
<polygon fill="#d92626" stroke="black" points="4457.19,-731.23 4446.64,-730.2 4454.24,-737.58 4457.19,-731.23"/>
</g>
<!-- ahriman_core_auth_oauth -->
<g id="node32" class="node">
<title>ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b2222" stroke="black" cx="5160" cy="-1525.11" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5160" y="-1539.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5160" y="-1528.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5160" y="-1517.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="5160" y="-1506.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">oauth</text>
</g>
<!-- ahriman_core_auth_mapping&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge112" class="edge">
<title>ahriman_core_auth_mapping&#45;&gt;ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5154,-1597.84C5154.68,-1589.67 5155.42,-1580.88 5156.13,-1572.35"/>
<polygon fill="#8b2222" stroke="black" points="5159.64,-1572.39 5156.99,-1562.13 5152.66,-1571.8 5159.64,-1572.39"/>
</g>
<!-- ahriman_core_auth_oauth&#45;&gt;ahriman_core_auth_auth -->
<g id="edge113" class="edge">
<title>ahriman_core_auth_oauth&#45;&gt;ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5194.9,-1540.16C5225.56,-1553.19 5270.79,-1574.11 5307,-1597.88 5349.04,-1625.47 5352.5,-1641.6 5393,-1671.42 5416.17,-1688.48 5443.41,-1705.72 5465.44,-1719.03"/>
<polygon fill="#8b2222" stroke="black" points="5463.86,-1722.15 5474.23,-1724.29 5467.45,-1716.15 5463.86,-1722.15"/>
</g>
<!-- ahriman_core_auth_oauth&#45;&gt;ahriman_web_views_user_login -->
<g id="edge114" class="edge">
<title>ahriman_core_auth_oauth&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5154.96,-1488.47C5149.33,-1445.53 5141,-1371.15 5141,-1307.03 5141,-1307.03 5141,-1307.03 5141,-1158.49 5141,-996.52 5050.02,-923.83 5147,-794.1 5179.07,-751.21 5215.66,-784.96 5262,-758.1 5265.84,-755.88 5269.62,-753.29 5273.28,-750.5"/>
<polygon fill="#8b2222" stroke="black" points="5275.51,-753.2 5281.03,-744.16 5271.08,-747.78 5275.51,-753.2"/>
</g>
<!-- ahriman_core_build_tools -->
<g id="node33" class="node">
<title>ahriman_core_build_tools</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e72222" stroke="black" cx="912" cy="-2550.5" rx="44.6" ry="28.98"/>
<text text-anchor="middle" x="912" y="-2559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="912" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="912" y="-2537" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">build_tools</text>
</g>
<!-- ahriman_core_build_tools&#45;&gt;ahriman_application_application -->
<g id="edge115" class="edge">
<title>ahriman_core_build_tools&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M882.18,-2528.85C792.6,-2465.73 532,-2273.68 532,-2175.57 532,-2175.57 532,-2175.57 532,-1962.27 532,-1862.09 586.16,-1606.45 646,-1526.11"/>
</g>
<!-- ahriman_core_repository_executor -->
<g id="node44" class="node">
<title>ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="2718" cy="-1415.57" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="2718" y="-1429.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2718" y="-1418.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2718" y="-1407.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="2718" y="-1396.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">executor</text>
</g>
<!-- ahriman_core_build_tools&#45;&gt;ahriman_core_repository_executor -->
<g id="edge116" class="edge">
<title>ahriman_core_build_tools&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M942.78,-2529.29C1005.45,-2487.82 1151.79,-2389.23 1268,-2297.54 1483.36,-2127.62 1530.06,-2076.17 1732,-1890.5 1818.32,-1811.12 1822.56,-1769.57 1922,-1707.42 2177.36,-1547.82 2533.19,-1457.51 2665.62,-1427.71"/>
<polygon fill="#e72222" stroke="black" points="2666.51,-1431.1 2675.51,-1425.51 2664.99,-1424.27 2666.51,-1431.1"/>
</g>
<!-- ahriman_core_tree -->
<g id="node55" class="node">
<title>ahriman_core_tree</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="1300" cy="-1853.73" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="1300" y="-1862.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1300" y="-1851.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="1300" y="-1840.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">tree</text>
</g>
<!-- ahriman_core_build_tools&#45;&gt;ahriman_core_tree -->
<g id="edge117" class="edge">
<title>ahriman_core_build_tools&#45;&gt;ahriman_core_tree</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M908.77,-2521.58C905.31,-2490.05 900.02,-2437.18 898,-2391.52 892.95,-2277.22 899.93,-2232.77 974,-2145.57 1074.37,-2027.42 1239.87,-2115.93 1272,-1964.27"/>
<path fill="none" stroke="black" d="M1272,-1962.27C1279.7,-1939.32 1286.58,-1913.03 1291.59,-1892.19"/>
<polygon fill="#e72222" stroke="black" points="1295.01,-1892.98 1293.9,-1882.44 1288.19,-1891.37 1295.01,-1892.98"/>
</g>
<!-- ahriman_core_build_tools&#45;&gt;ahriman_models_package -->
<g id="edge118" class="edge">
<title>ahriman_core_build_tools&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M955.47,-2543.75C1003.67,-2537.55 1083.78,-2527.71 1153,-2521.5 1404.94,-2498.91 1468.93,-2506.56 1721,-2485.5 1969.91,-2464.72 2030.95,-2446.6 2280,-2427.52 2764.08,-2390.45 3351.99,-2370.33 3522.51,-2364.99"/>
<polygon fill="#e72222" stroke="black" points="3522.78,-2368.49 3532.67,-2364.68 3522.56,-2361.49 3522.78,-2368.49"/>
</g>
<!-- ahriman_core_build_tools_task -->
<g id="node34" class="node">
<title>ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#a51212" stroke="black" cx="1329" cy="-2072.8" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1329" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1329" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="1329" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">build_tools.</text>
<text text-anchor="middle" x="1329" y="-2053.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">task</text>
</g>
<!-- ahriman_core_build_tools_task&#45;&gt;ahriman_application_application -->
<g id="edge119" class="edge">
<title>ahriman_core_build_tools_task&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1296.15,-2046.45C1282.23,-2033.97 1267.15,-2017.8 1258,-2000.03 1222.21,-1930.57 1095.91,-1372.87 1138,-1307.03"/>
</g>
<!-- ahriman_core_build_tools_task&#45;&gt;ahriman_core_repository_executor -->
<g id="edge120" class="edge">
<title>ahriman_core_build_tools_task&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1344.31,-2037.79C1393.34,-1933.43 1557.73,-1617.09 1803,-1488.34 1879.24,-1448.32 2479.12,-1424.71 2663.96,-1418.34"/>
<polygon fill="#a51212" stroke="black" points="2664.12,-1421.83 2674,-1417.99 2663.88,-1414.84 2664.12,-1421.83"/>
</g>
<!-- ahriman_core_build_tools_task&#45;&gt;ahriman_core_tree -->
<g id="edge121" class="edge">
<title>ahriman_core_build_tools_task&#45;&gt;ahriman_core_tree</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1300.72,-2043.4C1283.49,-2022.65 1265.87,-1993.21 1272,-1964.27"/>
</g>
<!-- ahriman_core_configuration -->
<g id="node35" class="node">
<title>ahriman_core_configuration</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e50505" stroke="black" cx="5163" cy="-2791.02" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="5163" y="-2799.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5163" y="-2788.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5163" y="-2777.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">configuration</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_application -->
<g id="edge123" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5112.1,-2790.07C4668.68,-2790.43 1467.61,-2790.78 1047,-2726.03 990.16,-2717.28 967.29,-2725.72 923,-2689.03 894.67,-2665.55 910.46,-2642.05 885,-2615.49 862.68,-2592.21 846.68,-2600.24 822,-2579.49 796.4,-2557.96 796.82,-2545.96 774,-2521.5 704.52,-2447.04 656.39,-2453.15 608,-2363.53"/>
<path fill="none" stroke="black" d="M608,-2361.53C524.84,-2276.54 524.3,-2228.32 518,-2109.57 505.85,-1880.59 476.1,-1800.21 584,-1597.88 603.83,-1560.68 617.81,-1557.45 646,-1526.11"/>
<path fill="none" stroke="black" d="M646,-1524.11C847.57,-1302.27 1012.4,-1382.31 1214,-1160.49"/>
<path fill="none" stroke="black" d="M1214,-1158.49C1226.54,-1134.51 1240.79,-1107.62 1251.91,-1086.72"/>
<polygon fill="#e50505" stroke="black" points="1255.02,-1088.34 1256.63,-1077.87 1248.84,-1085.05 1255.02,-1088.34"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_add -->
<g id="edge124" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M266,-1852.73C270.77,-1824.43 650.93,-920.71 674,-903.64 767.08,-834.8 823.55,-908.17 932,-867.64 936.26,-866.05 940.52,-864.09 944.69,-861.91"/>
<polygon fill="#e50505" stroke="black" points="946.65,-864.82 953.62,-856.84 943.19,-858.73 946.65,-864.82"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_clean -->
<g id="edge125" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_clean</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5112.09,-2789.69C4645.67,-2786.68 1126.59,-2762.73 909,-2726.03"/>
<path fill="none" stroke="black" d="M909,-2725.03C801.34,-2706.87 761.3,-2742.29 666,-2689.03 396.24,-2538.26 397.65,-2377.78 342,-2073.8"/>
<path fill="none" stroke="black" d="M342,-2071.8C314.87,-1973.25 256.11,-1956.47 266,-1854.73"/>
<path fill="none" stroke="black" d="M266,-1633.65C266,-1452.08 488.13,-1013.1 633,-903.64 700.88,-852.36 742.09,-899.43 821,-867.64 825.21,-865.95 829.45,-863.91 833.6,-861.68"/>
<polygon fill="#e50505" stroke="black" points="835.59,-864.57 842.5,-856.55 832.09,-858.51 835.59,-864.57"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_dump -->
<g id="edge126" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_dump</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M228,-2651.26C208.52,-2609.97 76,-2315.2 76,-2269.55 76,-2269.55 76,-2269.55 76,-2071.8 76,-1925.66 114,-1891.33 114,-1745.19 114,-1745.19 114,-1745.19 114,-1048.95 114,-913.49 244.12,-939.43 359,-867.64 362.59,-865.4 366.29,-863.06 370,-860.69"/>
<polygon fill="#e50505" stroke="black" points="372.1,-863.5 378.62,-855.15 368.31,-857.61 372.1,-863.5"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge127" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M608,-2361.53C533.46,-2237.39 563.37,-2177.56 594,-2036.03 639.25,-1827 698.45,-1789.73 793,-1597.88 890.37,-1400.31 973.24,-1374.33 1026,-1160.49"/>
<path fill="none" stroke="black" d="M1026,-1158.49C1027.78,-1134.66 1006.68,-1065.01 1026,-1050.95"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_init -->
<g id="edge128" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_init</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5112.04,-2789.98C4750.07,-2789.59 2581.18,-2784.81 2550,-2726.03"/>
<path fill="none" stroke="black" d="M2550,-2725.03C2518.19,-2665.05 1387.04,-2690.09 1330,-2653.26"/>
<path fill="none" stroke="black" d="M1330,-2651.26C1214.66,-2576.78 1236.03,-2168.26 1273,-2036.03 1301.09,-1935.56 1727.81,-1332.5 1760,-1233.26 1800.16,-1109.46 1839.13,-1059.31 1784,-941.41"/>
<path fill="none" stroke="black" d="M1784,-939.41C1769.61,-912.52 1747.54,-886.42 1728.62,-866.67"/>
<polygon fill="#e50505" stroke="black" points="1731.04,-864.14 1721.55,-859.42 1726.03,-869.03 1731.04,-864.14"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_key_import -->
<g id="edge129" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_key_import</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1061,-2651.26C1063.74,-2632.06 1072.69,-2629.6 1086,-2615.49 1117.48,-2582.11 1154.19,-2595.55 1167,-2551.5"/>
<path fill="none" stroke="black" d="M1167,-2549.5C1194.53,-2454.8 1166.8,-2418.07 1116,-2333.54 1103.51,-2312.75 1092.99,-2313.8 1075,-2297.54 1029.51,-2256.42 998.48,-2259.77 974,-2203.56 955.63,-2161.37 911.93,-2109.29 977,-1926.5 1046.34,-1731.69 1158.17,-1738.32 1266,-1561.88 1414.88,-1318.28 1471.52,-1256.2 1532,-977.18 1538.92,-945.24 1543.4,-934.28 1532,-903.64 1526.87,-889.86 1517.77,-876.96 1508.1,-866"/>
<polygon fill="#e50505" stroke="black" points="1510.38,-863.31 1501,-858.38 1505.26,-868.08 1510.38,-863.31"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_rebuild -->
<g id="edge130" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_rebuild</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1167,-2549.5C1264.78,-2186.36 1081.9,-2043.83 1250,-1707.42 1275.82,-1655.73 1285.07,-1643.9 1320,-1597.88 1359.49,-1545.85 1371.3,-1534.02 1418,-1488.34 1471.53,-1435.98 1487.24,-1425.21 1546,-1378.8 1632.27,-1310.67 1686.67,-1325.81 1746,-1233.26"/>
<path fill="none" stroke="black" d="M1746,-1232.26C1789.24,-1094.46 1674.68,-938.02 1614.79,-868.51"/>
<polygon fill="#e50505" stroke="black" points="1617.34,-866.1 1608.13,-860.86 1612.06,-870.7 1617.34,-866.1"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_remove -->
<g id="edge131" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5111.94,-2790.24C4754.07,-2791.56 2584.67,-2796.32 821,-2726.03 567.78,-2715.93 471.62,-2815.47 252,-2689.03 235.41,-2679.47 235.59,-2670.83 228,-2653.26"/>
<path fill="none" stroke="black" d="M228,-2651.26C211.04,-2642.38 216.26,-2630.19 204,-2615.49 189.31,-2597.87 182.21,-2596.67 167,-2579.49 97.41,-2500.9 67.02,-2487.27 24,-2391.52 1.35,-2341.13 0,-2324.8 0,-2269.55 0,-2269.55 0,-2269.55 0,-1305.03 0,-1270.98 8.49,-1262.58 24,-1232.26 41.94,-1197.19 66.16,-1198.63 76,-1160.49"/>
<path fill="none" stroke="black" d="M76,-1158.49C97.37,-1044.61 54.1,-990.33 131,-903.64 161.06,-869.76 209.68,-851.47 247.57,-841.86"/>
<polygon fill="#e50505" stroke="black" points="248.54,-845.22 257.45,-839.48 246.91,-838.42 248.54,-845.22"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge132" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5111.99,-2788.91C4899.8,-2783.62 4098,-2756.78 4098,-2653.26 4098,-2653.26 4098,-2653.26 4098,-2549.5 4098,-2411.74 4075.99,-2375.85 4096,-2239.56 4104.76,-2179.88 4121.59,-2168.38 4135,-2109.57 4149.54,-2045.83 4158,-2029.65 4158,-1964.27 4158,-1964.27 4158,-1964.27 4158,-1852.73 4158,-1786.11 4046.22,-1330.5 4020,-1269.26 3959.05,-1126.9 3900.81,-1114.91 3830,-977.18 3822.19,-962 3827.69,-953.85 3816,-941.41"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_report -->
<g id="edge133" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5112.05,-2790.19C4604.71,-2791.74 475.17,-2799.84 266,-2653.26"/>
<path fill="none" stroke="black" d="M266,-2651.26C258.43,-2646.05 228.52,-2587.97 225,-2579.49 189.3,-2493.52 114,-2268.65 114,-2175.57 114,-2175.57 114,-2175.57 114,-2071.8 114,-1925.66 152,-1891.33 152,-1745.19 152,-1745.19 152,-1745.19 152,-1524.11 152,-1290.95 124.58,-1194.63 271,-1013.18 318.88,-953.85 339.77,-946.24 403,-903.64 431.04,-884.76 440.92,-884.87 470,-867.64 473.64,-865.49 477.38,-863.21 481.11,-860.88"/>
<polygon fill="#e50505" stroke="black" points="483.19,-863.71 489.77,-855.41 479.45,-857.79 483.19,-863.71"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_search -->
<g id="edge134" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5210.99,-2780.83C5246.26,-2774.46 5295.44,-2766.37 5339,-2762.03 5437.87,-2752.18 7052.44,-2755.82 7126,-2689.03 7171.68,-2647.55 7145,-2613.2 7145,-2551.5 7145,-2551.5 7145,-2551.5 7145,-2455.51 7145,-2286.85 7246.87,-2269.31 7301,-2109.57 7322.29,-2046.76 7335,-2030.59 7335,-1964.27 7335,-1964.27 7335,-1964.27 7335,-1305.03 7335,-1240.79 7322.95,-1223.59 7335,-1160.49"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge135" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1061,-2651.26C1100.85,-2372.22 853.5,-2312.78 907,-2036.03 916.96,-1984.52 929.7,-1974.44 951,-1926.5 995,-1827.47 1007.01,-1803.03 1058,-1707.42 1095.52,-1637.07 1397.29,-1163.71 1418,-1086.72 1426.49,-1055.16 1421.14,-1045.72 1418,-1013.18 1414.87,-980.83 1403.69,-973.91 1404,-941.41"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_sign -->
<g id="edge136" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M266,-2651.26C215.86,-2610.69 228,-2428.03 228,-2363.53 228,-2363.53 228,-2363.53 228,-2071.8 228,-1925.66 190,-1891.33 190,-1745.19 190,-1745.19 190,-1745.19 190,-1524.11 190,-1203.72 291.18,-1082.5 557,-903.64 614.6,-864.89 645.07,-894.71 709,-867.64 713.35,-865.8 717.75,-863.63 722.06,-861.29"/>
<polygon fill="#e50505" stroke="black" points="723.83,-864.31 730.75,-856.28 720.33,-858.24 723.83,-864.31"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_status -->
<g id="edge137" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2484,-2651.26C2473.4,-2636.7 2489.52,-2627.41 2503,-2615.49 2536.51,-2585.85 2562.81,-2608.34 2597,-2579.49 2639.82,-2543.35 2806.12,-2174.68 2854,-2145.57 2914.77,-2108.64 3444.15,-2161.25 3493,-2109.57 3515.45,-2085.82 3494.52,-2068.68 3493,-2036.03 3477.87,-1710.98 3426.32,-1632.44 3425,-1307.03"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge138" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M266,-1852.73C264.11,-1756.27 270.39,-1732.03 266,-1635.65"/>
<path fill="none" stroke="black" d="M266,-1633.65C261.1,-1535.82 228,-1514.52 228,-1416.57 228,-1416.57 228,-1416.57 228,-1158.49 228,-1139.59 240.5,-1138.44 251,-1122.72 283.92,-1073.45 287.62,-1057.46 327,-1013.18 375.87,-958.23 386.36,-938.7 451,-903.64 503.7,-875.07 525.55,-890.43 581,-867.64 585.81,-865.67 590.71,-863.41 595.55,-861.02"/>
<polygon fill="#e50505" stroke="black" points="597.47,-863.97 604.76,-856.28 594.26,-857.75 597.47,-863.97"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_sync -->
<g id="edge139" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_sync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M342,-2071.8C314.76,-1910.16 355.07,-1865.34 399,-1707.42 424.85,-1614.49 650.12,-961.9 727,-903.64 783.33,-860.96 976.49,-891.55 1043,-867.64 1047.28,-866.11 1051.55,-864.18 1055.73,-862.02"/>
<polygon fill="#e50505" stroke="black" points="1057.67,-864.95 1064.67,-856.99 1054.24,-858.85 1057.67,-864.95"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_update -->
<g id="edge140" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M909,-2725.03C436.27,-2613.84 414.45,-2183.35 511,-1707.42 521.16,-1657.33 525.26,-1644.59 546,-1597.88 645.08,-1374.66 659.82,-1305.32 822,-1122.72 876.96,-1060.84 1076.4,-922.04 1165.49,-861.29"/>
<polygon fill="#e50505" stroke="black" points="1167.72,-864.01 1174.01,-855.49 1163.78,-858.22 1167.72,-864.01"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_user -->
<g id="edge141" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M836,-2549.5C693.72,-2304.71 600.87,-2190.56 703,-1926.5 859.89,-1520.86 1092.75,-1546.31 1428,-1269.26 1589.5,-1135.8 1703.4,-1164.12 1798,-977.18 1813.5,-946.56 1813.94,-907.47 1810.95,-877.56"/>
<polygon fill="#e50505" stroke="black" points="1814.4,-876.91 1809.77,-867.38 1807.45,-877.72 1814.4,-876.91"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_web -->
<g id="edge142" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5211.52,-2782.04C5246.84,-2776.3 5295.85,-2768.46 5339,-2762.03 5571.56,-2727.34 5631.3,-2729.11 5863,-2689.03 6378.05,-2599.92 6622.08,-2685.83 6972,-2297.54 7172.03,-2075.58 7218.2,-1275.87 7226,-977.18 7231.59,-763.16 7360.32,-662.99 7227,-495.48"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_lock -->
<g id="edge143" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5111.97,-2789.95C4646.48,-2789.23 1151.45,-2782 1061,-2726.03"/>
<path fill="none" stroke="black" d="M1061,-2725.03C994.41,-2683.82 988.14,-2658.95 923,-2615.49 895.53,-2597.16 883.15,-2600.89 858,-2579.49 845.95,-2569.23 847.63,-2562.22 836,-2551.5"/>
<path fill="none" stroke="black" d="M836,-2549.5C753,-2468.11 872.06,-2133.12 936,-2036.03 1149.42,-1712.01 1642.08,-1575 1805.35,-1537.43"/>
<polygon fill="#e50505" stroke="black" points="1806.19,-1540.83 1815.17,-1535.2 1804.64,-1534 1806.19,-1540.83"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_alpm_pacman -->
<g id="edge144" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_alpm_pacman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2550,-2725.03C2545.78,-2717.12 2543.93,-2707.99 2543.46,-2698.95"/>
<polygon fill="#e50505" stroke="black" points="2546.96,-2698.85 2543.45,-2688.85 2539.96,-2698.85 2546.96,-2698.85"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_auth -->
<g id="edge145" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5178.74,-2763.33C5201.72,-2726.23 5247.56,-2658.75 5301,-2615.49 5374.22,-2556.21 5403.74,-2557.01 5491,-2521.5 5583.36,-2483.93 5923.16,-2462.5 5911,-2363.53"/>
<path fill="none" stroke="black" d="M5911,-2361.53C5906.68,-2347.13 5903.24,-2343.52 5892,-2333.54 5798.06,-2250.12 5710.08,-2308.48 5641,-2203.56 5599.95,-2141.21 5649.26,-2107.88 5629,-2036.03 5604.36,-1948.68 5561.14,-1941.65 5535,-1854.73"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge146" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5163,-2651.26C5178.18,-2550.3 5189.25,-2526.31 5215,-2427.52 5252.11,-2285.17 5286.35,-2255.22 5307,-2109.57 5311.59,-2077.21 5326.11,-2062.55 5307,-2036.03 5277.42,-1994.99 5237.98,-2032.29 5199,-2000.03 5184.97,-1988.42 5189.16,-1979.38 5179,-1964.27"/>
<path fill="none" stroke="black" d="M5179,-1962.27C5171.34,-1950.78 5159.2,-1768.93 5153.77,-1681.67"/>
<polygon fill="#e50505" stroke="black" points="5157.26,-1681.28 5153.15,-1671.52 5150.27,-1681.72 5157.26,-1681.28"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge147" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5163,-2651.26C5182.39,-2543.54 5315,-2566.96 5315,-2457.51 5315,-2457.51 5315,-2457.51 5315,-2361.53 5315,-2127.37 5525.41,-2079.27 5459,-1854.73"/>
<path fill="none" stroke="black" d="M5459,-1852.73C5444.27,-1816.99 5268.18,-1635.86 5193.33,-1559.81"/>
<polygon fill="#e50505" stroke="black" points="5195.5,-1557.02 5185.99,-1552.35 5190.51,-1561.93 5195.5,-1557.02"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge148" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1061,-2725.03C1033.88,-2708.24 1059.44,-2685.12 1061,-2653.26"/>
<path fill="none" stroke="black" d="M1061,-2651.26C1063.84,-2593.32 1027.5,-2576.13 1047,-2521.5 1047.52,-2520.04 1329.52,-2177.04 1330,-2175.57"/>
<path fill="none" stroke="black" d="M1330,-2173.57C1332.75,-2156.14 1333.16,-2136.79 1332.65,-2119.8"/>
<polygon fill="#e50505" stroke="black" points="1336.13,-2119.41 1332.22,-2109.57 1329.14,-2119.7 1336.13,-2119.41"/>
</g>
<!-- ahriman_core_report_email -->
<g id="node38" class="node">
<title>ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="3178" cy="-1744.19" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3178" y="-1758.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3178" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3178" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="3178" y="-1725.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">email</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_report_email -->
<g id="edge149" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2484,-2651.26C2406.84,-2537.97 2449.4,-2148.32 2528,-2036.03 2537.52,-2022.44 2988.74,-1826.87 3133.68,-1764.29"/>
<polygon fill="#e50505" stroke="black" points="3135.38,-1767.37 3143.18,-1760.19 3132.61,-1760.94 3135.38,-1767.37"/>
</g>
<!-- ahriman_core_report_html -->
<g id="node39" class="node">
<title>ahriman_core_report_html</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="3930" cy="-1525.11" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3930" y="-1539.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3930" y="-1528.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3930" y="-1517.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="3930" y="-1506.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">html</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_report_html -->
<g id="edge150" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_report_html</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5112.25,-2788.41C4910.22,-2781.33 4174,-2748.97 4174,-2653.26 4174,-2653.26 4174,-2653.26 4174,-2549.5 4174,-2432.27 4117.14,-2412.84 4096,-2297.54 4078.03,-2199.54 4082,-2173.44 4082,-2073.8 4082,-2073.8 4082,-2073.8 4082,-1962.27 4082,-1865.79 4105.72,-1838.71 4082,-1745.19"/>
<path fill="none" stroke="black" d="M4082,-1743.19C4061.81,-1668.44 4002.48,-1598.16 3964.2,-1558.78"/>
<polygon fill="#e50505" stroke="black" points="3966.35,-1555.98 3956.84,-1551.32 3961.37,-1560.9 3966.35,-1555.98"/>
</g>
<!-- ahriman_core_report_jinja_template -->
<g id="node40" class="node">
<title>ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#832020" stroke="black" cx="3678" cy="-1853.73" rx="54.39" ry="36.54"/>
<text text-anchor="middle" x="3678" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3678" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3678" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="3678" y="-1834.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">jinja_template</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge151" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2550,-2725.03C2511.99,-2653.79 3946.61,-2746.83 4003,-2689.03 4195.27,-2491.93 3823.19,-1988.93 3773,-1926.5 3760.1,-1910.44 3742.85,-1896.02 3726.59,-1884.38"/>
<polygon fill="#e50505" stroke="black" points="3728.42,-1881.39 3718.21,-1878.55 3724.42,-1887.13 3728.42,-1881.39"/>
</g>
<!-- ahriman_core_report_report -->
<g id="node41" class="node">
<title>ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b1818" stroke="black" cx="2894" cy="-1634.65" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2894" y="-1648.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2894" y="-1637.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2894" y="-1626.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="2894" y="-1615.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_report_report -->
<g id="edge152" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2408,-2549.5C2350.18,-2449.49 2434.69,-2137.98 2489,-2036.03 2580.82,-1863.69 2772.03,-1718.95 2854.62,-1661.81"/>
<polygon fill="#e50505" stroke="black" points="2856.7,-1664.62 2862.97,-1656.07 2852.74,-1658.85 2856.7,-1664.62"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_repository_properties -->
<g id="edge153" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1330,-2651.26C1249.59,-2591.8 1313.58,-2519 1354,-2427.52 1397.38,-2329.34 1901.18,-1753.77 1998,-1707.42 2124.28,-1646.96 2490.24,-1701.4 2627,-1671.42 2641.68,-1668.2 2657.1,-1662.92 2670.98,-1657.4"/>
<polygon fill="#e50505" stroke="black" points="2672.4,-1660.6 2680.32,-1653.57 2669.74,-1654.13 2672.4,-1660.6"/>
</g>
<!-- ahriman_core_sign_gpg -->
<g id="node49" class="node">
<title>ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#932424" stroke="black" cx="2172" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2172" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2172" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2172" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sign.</text>
<text text-anchor="middle" x="2172" y="-2053.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">gpg</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge154" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2484,-2651.26C2449.12,-2607.78 2435.35,-2600.06 2408,-2551.5"/>
<path fill="none" stroke="black" d="M2408,-2549.5C2400.62,-2536.39 2399.08,-2532.66 2389,-2521.5 2372.28,-2503.02 2362.56,-2504.13 2346,-2485.5 2325.52,-2462.48 2331.18,-2447.82 2308,-2427.52 2280.18,-2403.17 2252.69,-2422.82 2233,-2391.52 2203.78,-2345.09 2252.58,-2324.41 2252,-2269.55"/>
<path fill="none" stroke="black" d="M2252,-2267.55C2250.05,-2226.71 2276.39,-2208.37 2252,-2175.57"/>
</g>
<!-- ahriman_core_spawn -->
<g id="node50" class="node">
<title>ahriman_core_spawn</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b62020" stroke="black" cx="6778" cy="-2174.57" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="6778" y="-2183.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6778" y="-2172.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="6778" y="-2161.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">spawn</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_spawn -->
<g id="edge155" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_spawn</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5210.81,-2780.84C5307.92,-2761.86 5524.97,-2717.71 5595,-2689.03 5653.94,-2664.88 5659.6,-2640.91 5718,-2615.49 5908.09,-2532.73 5968.13,-2547.39 6166,-2485.5 6416.57,-2407.14 6508.28,-2444.24 6726,-2297.54 6739.59,-2288.38 6737.9,-2280.6 6750,-2269.55"/>
</g>
<!-- ahriman_core_status_client -->
<g id="node52" class="node">
<title>ahriman_core_status_client</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#931a1a" stroke="black" cx="2742" cy="-1853.73" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2742" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2742" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2742" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="2742" y="-1834.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">client</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_status_client -->
<g id="edge156" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_status_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2550,-2725.03C2537.67,-2701.78 2520.01,-2709.11 2503,-2689.03 2491.37,-2675.29 2495.26,-2667.3 2484,-2653.26"/>
<path fill="none" stroke="black" d="M2484,-2651.26C2425.16,-2577.92 2366.62,-2626.15 2285,-2579.49 2211.3,-2537.35 2138,-2542.41 2138,-2457.51 2138,-2457.51 2138,-2457.51 2138,-2361.53 2138,-2216.75 2034.12,-2148.74 2125,-2036.03 2172.39,-1977.27 2218.1,-2019.63 2291,-2000.03 2441.27,-1959.64 2615.71,-1899.6 2696.55,-1871.01"/>
<polygon fill="#e50505" stroke="black" points="2698.15,-1874.16 2706.4,-1867.52 2695.81,-1867.56 2698.15,-1874.16"/>
</g>
<!-- ahriman_core_status_watcher -->
<g id="node53" class="node">
<title>ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b2222" stroke="black" cx="4659" cy="-1159.49" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4659" y="-1173.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4659" y="-1162.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4659" y="-1151.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="4659" y="-1140.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">watcher</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_status_watcher -->
<g id="edge157" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5122,-2455.51C5089,-2362.89 5109.91,-2331.09 5074,-2239.56 5049.56,-2177.26 5029.05,-2168.86 4998,-2109.57 4845.75,-1818.84 4610.21,-1716.7 4743,-1416.57"/>
</g>
<!-- ahriman_core_status_web_client -->
<g id="node54" class="node">
<title>ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5911" cy="-1744.19" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="5911" y="-1758.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5911" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5911" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="5911" y="-1725.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web_client</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_status_web_client -->
<g id="edge158" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5429,-2725.03C5477.44,-2705.35 5498.57,-2719.59 5541,-2689.03 5573.9,-2665.33 5563.4,-2640.9 5595,-2615.49 5605.04,-2607.41 5794.66,-2525.22 5807,-2521.5 5898.94,-2493.83 5934.12,-2528.42 6020,-2485.5 6074.27,-2458.39 6086.11,-2442.5 6119,-2391.52 6152.37,-2339.8 6298.58,-1899.18 6256,-1854.73"/>
</g>
<!-- ahriman_core_upload_rsync -->
<g id="node57" class="node">
<title>ahriman_core_upload_rsync</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="4566" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4566" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4566" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4566" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="4566" y="-2053.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">rsync</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge159" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_upload_rsync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5161.01,-2761.87C5159.51,-2734.14 5158.42,-2690.61 5163,-2653.26"/>
<path fill="none" stroke="black" d="M5163,-2651.26C5169.27,-2609.57 5124.39,-2614.56 5101,-2579.49 5093.28,-2567.92 5091.6,-2564.63 5087,-2551.5"/>
<path fill="none" stroke="black" d="M5087,-2549.5C5063.56,-2482.53 5045.5,-2462.91 4984,-2427.52 4904.2,-2381.61 4842.99,-2458.67 4780,-2391.52 4713.93,-2321.09 4801.15,-2260.93 4756,-2175.57"/>
</g>
<!-- ahriman_core_upload_s3 -->
<g id="node58" class="node">
<title>ahriman_core_upload_s3</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="6095" cy="-1853.73" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="6095" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6095" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="6095" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="6095" y="-1834.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">s3</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge160" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_upload_s3</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5212.15,-2783.33C5266.77,-2774.74 5356.79,-2757.1 5429,-2726.03"/>
<path fill="none" stroke="black" d="M5429,-2725.03C5500.93,-2694.08 5504.42,-2662.55 5567,-2615.49 5624.56,-2572.2 5632.04,-2548.03 5699,-2521.5 5809.1,-2477.9 5859.11,-2542.34 5963,-2485.5 6096.89,-2412.26 6131.24,-2353.63 6159,-2203.56 6178.85,-2096.25 6103.67,-2073.39 6104,-1964.27"/>
</g>
<!-- ahriman_core_upload_upload -->
<g id="node59" class="node">
<title>ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b1818" stroke="black" cx="4536" cy="-1963.27" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4536" y="-1977.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4536" y="-1966.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4536" y="-1955.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="4536" y="-1944.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_upload_upload -->
<g id="edge161" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5087,-2549.5C5069.76,-2509.3 5136.87,-2498.65 5122,-2457.51"/>
<path fill="none" stroke="black" d="M5122,-2455.51C5116.43,-2440.1 5112.43,-2435.29 5098,-2427.52 5041.79,-2397.26 4857.28,-2437.51 4813,-2391.52 4746.17,-2322.11 4851.91,-2252.57 4794,-2175.57"/>
<path fill="none" stroke="black" d="M4794,-2173.57C4783.84,-2160.71 4783.02,-2155.52 4770,-2145.57 4740.3,-2122.89 4724.99,-2130.46 4694,-2109.57 4687.19,-2104.98 4614.82,-2037.8 4570.43,-1996.41"/>
<polygon fill="#e50505" stroke="black" points="4572.72,-1993.77 4563.02,-1989.51 4567.95,-1998.89 4572.72,-1993.77"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_web_views_base -->
<g id="edge162" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5192.61,-2767.36C5261.34,-2715.85 5438.64,-2589.22 5606,-2521.5 5747.92,-2464.08 5848.77,-2524.29 5925,-2391.52 5937.83,-2369.17 5927.81,-2359.16 5925,-2333.54 5923.21,-2317.25 5918.79,-2313.83 5917,-2297.54 5914.19,-2271.92 5912.38,-2264.91 5917,-2239.56 5928.07,-2178.82 5946.77,-2168.24 5966,-2109.57 5966.37,-2108.45 6057.84,-1782.13 6058,-1780.96 6062.45,-1748.58 6072.47,-1736.72 6058,-1707.42 6046.35,-1683.82 6029.28,-1690.34 6011,-1671.42 5973.35,-1632.43 5812.13,-1405.31 5781,-1342.8 5758.16,-1296.93 5773.07,-1276.13 5745,-1233.26"/>
<path fill="none" stroke="black" d="M5745,-1232.26C5628.91,-1079.92 5512.45,-1112.83 5427,-941.41"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_web_web -->
<g id="edge163" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5211.61,-2782.08C5302.36,-2766.87 5503.42,-2731.35 5670,-2689.03 6238.76,-2544.51 6449.68,-2633.26 6931,-2297.54 6974.16,-2267.44 6982.47,-2252 7003,-2203.56 7106.95,-1958.27 7159.21,-1279.21 7145,-1013.18 7137.88,-879.89 7141.46,-844.97 7113,-714.56"/>
</g>
<!-- ahriman_core_exceptions -->
<g id="node36" class="node">
<title>ahriman_core_exceptions</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="5353" cy="-2885" rx="44.6" ry="28.98"/>
<text text-anchor="middle" x="5353" y="-2893.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5353" y="-2882.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5353" y="-2871.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">exceptions</text>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge164" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M114,-2455.51C95.57,-2360.77 200.93,-1679.78 252,-1597.88 307.72,-1508.52 940.85,-1112.9 1026,-1050.95"/>
<path fill="none" stroke="black" d="M1026,-1048.95C1099.17,-991.25 1138.69,-1016.86 1223,-977.18 1228.27,-974.7 1233.67,-971.92 1238.99,-969.02"/>
<polygon fill="#f91010" stroke="black" points="1240.8,-972.02 1247.81,-964.08 1237.37,-965.91 1240.8,-972.02"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge165" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5308.43,-2883.96C4851.03,-2883.43 1025.18,-2876.48 947,-2792.02"/>
<path fill="none" stroke="black" d="M947,-2790.02C830.88,-2664.56 215.18,-2822.34 190,-2653.26"/>
<path fill="none" stroke="black" d="M190,-2651.26C136.84,-2575.56 131.45,-2548.35 114,-2457.51"/>
<path fill="none" stroke="black" d="M114,-2455.51C86.78,-2370.48 38,-2358.84 38,-2269.55 38,-2269.55 38,-2269.55 38,-1305.03 38,-1248.13 306.9,-932.39 356,-903.64 443.39,-852.47 485.33,-900.86 581,-867.64 586.11,-865.87 591.29,-863.7 596.37,-861.31"/>
<polygon fill="#f91010" stroke="black" points="597.99,-864.41 605.38,-856.82 594.87,-858.15 597.99,-864.41"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_application_lock -->
<g id="edge166" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M190,-2651.26C157.1,-2295.77 1065.21,-1713.45 1403,-1597.88 1541.58,-1550.46 1714.71,-1534.17 1802.42,-1528.73"/>
<polygon fill="#f91010" stroke="black" points="1802.65,-1532.22 1812.43,-1528.13 1802.24,-1525.23 1802.65,-1532.22"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge167" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_alpm_repo</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M947,-2790.02C919.47,-2765.31 880.99,-2759.27 895,-2725.03 943.02,-2607.65 979.5,-2573.89 1095,-2521.5 1221.9,-2463.95 1604.69,-2562.23 1721,-2485.5 1754.86,-2463.17 1864.12,-2216.92 1907.75,-2116.28"/>
<polygon fill="#f91010" stroke="black" points="1911.01,-2117.57 1911.77,-2107 1904.58,-2114.79 1911.01,-2117.57"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_auth_auth -->
<g id="edge168" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5392.08,-2870.86C5526.27,-2823.11 5957.53,-2646.54 5911,-2363.53"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge169" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5353,-2790.02C5310.18,-2735.62 5452.88,-2780.96 5495,-2726.03 5505.14,-2712.81 5499.66,-2705.63 5501,-2689.03 5507.01,-2614.39 5507.32,-2592.33 5483,-2521.5 5467.77,-2477.14 5459.1,-2467.76 5435,-2427.52 5424.99,-2410.81 5415.82,-2410.11 5410,-2391.52 5338.4,-2162.9 5562.05,-2071 5459,-1854.73"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge170" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M947,-2790.02C862.32,-2709.25 722,-2770.28 722,-2653.26 722,-2653.26 722,-2653.26 722,-2549.5 722,-2269.74 1126.38,-2129.76 1275.02,-2087.75"/>
<polygon fill="#f91010" stroke="black" points="1276.16,-2091.07 1284.86,-2085.01 1274.28,-2084.33 1276.16,-2091.07"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_configuration -->
<g id="edge171" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_configuration</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5317.71,-2866.92C5287.4,-2852.24 5243.45,-2830.96 5210.13,-2814.84"/>
<polygon fill="#f91010" stroke="black" points="5211.56,-2811.64 5201.04,-2810.43 5208.51,-2817.94 5211.56,-2811.64"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_report_report -->
<g id="edge172" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M947,-2790.02C895.7,-2735.02 1083.52,-2550.28 1153,-2521.5 1276.62,-2470.32 1638.22,-2552.55 1754,-2485.5 1857.39,-2425.63 1964.51,-2120.5 2049,-2036.03 2079.25,-2005.79 2508.57,-1728.36 2563,-1707.42 2650.56,-1673.73 2679.59,-1692.55 2771,-1671.42 2796.76,-1665.46 2825.13,-1657.32 2848.12,-1650.31"/>
<polygon fill="#f91010" stroke="black" points="2849.42,-1653.57 2857.95,-1647.28 2847.36,-1646.88 2849.42,-1653.57"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge173" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M947,-2790.02C395.02,-2665.47 2176,-3023.37 2176,-2457.51 2176,-2457.51 2176,-2457.51 2176,-2361.53 2176,-2339.21 2265.32,-2193.48 2252,-2175.57"/>
<path fill="none" stroke="black" d="M2252,-2173.57C2235.12,-2152.89 2216.45,-2129.64 2201.4,-2110.78"/>
<polygon fill="#f91010" stroke="black" points="2203.94,-2108.36 2194.97,-2102.72 2198.47,-2112.72 2203.94,-2108.36"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_status_watcher -->
<g id="edge174" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5353,-2790.02C5322.18,-2751.49 5457.22,-2772.27 5443,-2725.03 5397.28,-2573.17 5334.73,-2558.96 5246,-2427.52 5160.9,-2301.45 5138.49,-2270.7 5052,-2145.57 5040.92,-2129.55 5036.3,-2126.69 5027,-2109.57 5007.13,-2073.02 4724.84,-1454 4743,-1416.57"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_upload_upload -->
<g id="edge175" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5353,-2790.02C5327.64,-2757.69 5306.57,-2653.9 5292,-2615.49 5259.98,-2531.08 5267.67,-2500.85 5215,-2427.52 5140.56,-2323.89 5100,-2316.21 4998,-2239.56 4995.92,-2238 4686.34,-2037.17 4684,-2036.03 4639.64,-2014.46 4622.01,-2024.21 4579,-2000.03 4576.46,-1998.61 4573.93,-1997.02 4571.43,-1995.34"/>
<polygon fill="#f91010" stroke="black" points="4573.28,-1992.36 4563.14,-1989.31 4569.17,-1998.02 4573.28,-1992.36"/>
</g>
<!-- ahriman_core_util -->
<g id="node60" class="node">
<title>ahriman_core_util</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#db0505" stroke="black" cx="3208" cy="-2550.5" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3208" y="-2559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3208" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3208" y="-2537" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">util</text>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_util -->
<g id="edge176" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_util</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5353,-2790.02C5328.78,-2752.25 5300.24,-2769.5 5256,-2762.03 5107,-2736.86 4029.38,-2763.68 3898,-2689.03 3881.36,-2679.57 3893.05,-2655.2 3874,-2653.26"/>
<path fill="none" stroke="black" d="M3874,-2651.26C3640.86,-2623.97 3363.76,-2578.12 3255.06,-2559.61"/>
<polygon fill="#f91010" stroke="black" points="3255.52,-2556.14 3245.07,-2557.91 3254.34,-2563.04 3255.52,-2556.14"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_auth_settings -->
<g id="edge177" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_models_auth_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5353,-2790.02C5313.91,-2739.85 5447.56,-2780.13 5481,-2726.03 5506.83,-2684.24 5485.89,-2664.37 5481,-2615.49 5476.76,-2573.08 5478.17,-2560.93 5462,-2521.5 5435.8,-2457.64 5409.27,-2452.54 5377,-2391.52 5325.29,-2293.74 5279.32,-2171.16 5257.84,-2110.84"/>
<polygon fill="#f91010" stroke="black" points="5261.12,-2109.62 5254.49,-2101.36 5254.52,-2111.95 5261.12,-2109.62"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_package -->
<g id="edge178" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5353,-2790.02C5307.78,-2732.33 5271.83,-2744.87 5201,-2726.03"/>
<path fill="none" stroke="black" d="M5201,-2725.03C5064.58,-2688.73 4052.44,-2761 3931,-2689.03 3898.43,-2669.72 3912.8,-2644.1 3888,-2615.49 3801.8,-2516.05 3672.17,-2427.31 3608.71,-2386.8"/>
<polygon fill="#f91010" stroke="black" points="3610.52,-2383.81 3600.2,-2381.41 3606.78,-2389.72 3610.52,-2383.81"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_report_settings -->
<g id="edge179" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_models_report_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M947,-2790.02C832.73,-2763.05 857.16,-2766.12 1316,-2615.49 1539.88,-2541.99 1610.74,-2571.82 1830,-2485.5 1895.27,-2459.81 1965.39,-2418.78 2008.98,-2391.5"/>
<polygon fill="#f91010" stroke="black" points="2011,-2394.36 2017.6,-2386.07 2007.27,-2388.44 2011,-2394.36"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_sign_settings -->
<g id="edge180" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_models_sign_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5361.32,-2856.14C5365.46,-2836.21 5366.99,-2809.86 5353,-2792.02"/>
<path fill="none" stroke="black" d="M5353,-2790.02C5326.11,-2755.71 5302.03,-2768.99 5259,-2762.03 5009.46,-2721.62 4374.54,-2737.24 4122,-2726.03 3834.26,-2713.25 3761.99,-2713.39 3475,-2689.03 3258.41,-2670.64 2698.06,-2675.4 2503,-2579.49 2459.15,-2557.93 2367.6,-2452.33 2321.61,-2397.19"/>
<polygon fill="#f91010" stroke="black" points="2324.25,-2394.89 2315.17,-2389.44 2318.87,-2399.37 2324.25,-2394.89"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_upload_settings -->
<g id="edge181" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_models_upload_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5353,-2790.02C5236.89,-2642.45 5286.71,-2539.52 5136,-2427.52 5082.4,-2387.69 5006.7,-2372.5 4951.91,-2366.79"/>
<polygon fill="#f91010" stroke="black" points="4952.22,-2363.3 4941.93,-2365.83 4951.55,-2370.27 4952.22,-2363.3"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_web_views_status_package -->
<g id="edge182" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5394.87,-2874.79C5425.93,-2868.37 5469.4,-2860.22 5508,-2856.01 5693.57,-2835.79 7183,-2912.7 7183,-2726.03 7183,-2726.03 7183,-2726.03 7183,-2361.53 7183,-2168.55 6353.62,-1058.89 6239,-903.64 6201.57,-852.95 6200.64,-830.2 6149,-794.1 6093.88,-755.58 6018.28,-734.04 5969.77,-723.37"/>
<polygon fill="#f91010" stroke="black" points="5970.36,-719.92 5959.85,-721.25 5968.9,-726.76 5970.36,-719.92"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_web_web -->
<g id="edge183" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5201,-2725.03C5152.83,-2712.22 5211.13,-2651.81 5177,-2615.49 4878.17,-2297.45 4525.24,-2634.56 4248,-2297.54 4219.38,-2262.74 4220.75,-2247.31 4210,-2203.56 4210,-2203.56 4097,-1050.95 4097,-1050.95"/>
</g>
<!-- ahriman_core_report -->
<g id="node37" class="node">
<title>ahriman_core_report</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e72222" stroke="black" cx="2486" cy="-1634.65" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2486" y="-1643.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2486" y="-1632.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2486" y="-1621.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report</text>
</g>
<!-- ahriman_core_report&#45;&gt;ahriman_core_repository_executor -->
<g id="edge184" class="edge">
<title>ahriman_core_report&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2510.28,-1612.06C2531.6,-1591.84 2561.95,-1559.76 2580,-1526.11"/>
<path fill="none" stroke="black" d="M2580,-1524.11C2600.13,-1486.59 2639.58,-1457.92 2671.17,-1439.66"/>
<polygon fill="#e72222" stroke="black" points="2673.26,-1442.5 2680.27,-1434.55 2669.83,-1436.39 2673.26,-1442.5"/>
</g>
<!-- ahriman_core_report_email&#45;&gt;ahriman_core_report_report -->
<g id="edge185" class="edge">
<title>ahriman_core_report_email&#45;&gt;ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3133.22,-1726.23C3080.11,-1706.12 2992.07,-1672.78 2938.9,-1652.65"/>
<polygon fill="#7a2828" stroke="black" points="3132.01,-1729.52 3142.61,-1729.78 3134.49,-1722.97 3132.01,-1729.52"/>
<polygon fill="#7a2828" stroke="black" points="2939.98,-1649.32 2929.39,-1649.05 2937.51,-1655.86 2939.98,-1649.32"/>
</g>
<!-- ahriman_core_report_jinja_template&#45;&gt;ahriman_core_report_email -->
<g id="edge187" class="edge">
<title>ahriman_core_report_jinja_template&#45;&gt;ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3626.37,-1841.62C3528.88,-1820.65 3319.03,-1775.52 3225.12,-1755.32"/>
<polygon fill="#832020" stroke="black" points="3225.83,-1751.9 3215.32,-1753.21 3224.36,-1758.74 3225.83,-1751.9"/>
</g>
<!-- ahriman_core_report_jinja_template&#45;&gt;ahriman_core_report_html -->
<g id="edge188" class="edge">
<title>ahriman_core_report_jinja_template&#45;&gt;ahriman_core_report_html</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3723.6,-1833.37C3789.09,-1802.16 3902,-1734.07 3902,-1635.65"/>
<path fill="none" stroke="black" d="M3902,-1633.65C3904.13,-1612.4 3909.66,-1589.42 3915.24,-1570.17"/>
<polygon fill="#832020" stroke="black" points="3918.63,-1571.07 3918.15,-1560.48 3911.92,-1569.06 3918.63,-1571.07"/>
</g>
<!-- ahriman_core_report_report&#45;&gt;ahriman_core_report_html -->
<g id="edge190" class="edge">
<title>ahriman_core_report_report&#45;&gt;ahriman_core_report_html</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2942.16,-1628.65C3115.81,-1610.62 3708.63,-1549.09 3882.01,-1531.09"/>
<polygon fill="#8b1818" stroke="black" points="2941.69,-1625.18 2932.1,-1629.69 2942.41,-1632.14 2941.69,-1625.18"/>
<polygon fill="#8b1818" stroke="black" points="3882.52,-1534.56 3892.1,-1530.04 3881.79,-1527.59 3882.52,-1534.56"/>
</g>
<!-- ahriman_core_report_report&#45;&gt;ahriman_core_repository_executor -->
<g id="edge191" class="edge">
<title>ahriman_core_report_report&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2864.62,-1610.67C2841.09,-1590.73 2808.97,-1559.84 2790,-1526.11"/>
</g>
<!-- ahriman_core_repository -->
<g id="node42" class="node">
<title>ahriman_core_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="1980" cy="-1306.03" rx="42.35" ry="28.98"/>
<text text-anchor="middle" x="1980" y="-1314.53" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1980" y="-1303.53" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="1980" y="-1292.53" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository</text>
</g>
<!-- ahriman_core_repository&#45;&gt;ahriman_application_application -->
<g id="edge192" class="edge">
<title>ahriman_core_repository&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1940.55,-1294.86C1891.32,-1281.87 1804.74,-1258.11 1732,-1233.26 1578.45,-1180.81 1401.03,-1106.74 1318.18,-1071.34"/>
<polygon fill="#f91010" stroke="black" points="1319.36,-1068.03 1308.79,-1067.32 1316.61,-1074.47 1319.36,-1068.03"/>
</g>
<!-- ahriman_core_repository&#45;&gt;ahriman_core_status_watcher -->
<g id="edge193" class="edge">
<title>ahriman_core_repository&#45;&gt;ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2022.38,-1303.09C2142.23,-1297.6 2493.87,-1281.6 2786,-1269.26 2887.16,-1264.99 4510.93,-1228.24 4607,-1196.26 4612.01,-1194.6 4616.97,-1192.29 4621.72,-1189.65"/>
<polygon fill="#f91010" stroke="black" points="4623.88,-1192.43 4630.58,-1184.22 4620.22,-1186.46 4623.88,-1192.43"/>
</g>
<!-- ahriman_core_repository_cleaner -->
<g id="node43" class="node">
<title>ahriman_core_repository_cleaner</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b42d2d" stroke="black" cx="2718" cy="-1525.11" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="2718" y="-1539.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2718" y="-1528.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2718" y="-1517.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="2718" y="-1506.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">cleaner</text>
</g>
<!-- ahriman_core_repository_cleaner&#45;&gt;ahriman_core_repository_executor -->
<g id="edge194" class="edge">
<title>ahriman_core_repository_cleaner&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2718,-1488.3C2718,-1480.13 2718,-1471.34 2718,-1462.81"/>
<polygon fill="#b42d2d" stroke="black" points="2721.5,-1462.59 2718,-1452.59 2714.5,-1462.59 2721.5,-1462.59"/>
</g>
<!-- ahriman_core_repository_update_handler -->
<g id="node47" class="node">
<title>ahriman_core_repository_update_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="2839" cy="-1415.57" rx="58.88" ry="36.54"/>
<text text-anchor="middle" x="2839" y="-1429.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2839" y="-1418.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2839" y="-1407.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="2839" y="-1396.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">update_handler</text>
</g>
<!-- ahriman_core_repository_cleaner&#45;&gt;ahriman_core_repository_update_handler -->
<g id="edge195" class="edge">
<title>ahriman_core_repository_cleaner&#45;&gt;ahriman_core_repository_update_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2747.6,-1497.8C2762.75,-1484.34 2781.44,-1467.73 2797.96,-1453.05"/>
<polygon fill="#b42d2d" stroke="black" points="2800.72,-1455.27 2805.87,-1446.02 2796.07,-1450.04 2800.72,-1455.27"/>
</g>
<!-- ahriman_core_repository_repository -->
<g id="node46" class="node">
<title>ahriman_core_repository_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#932424" stroke="black" cx="2839" cy="-1306.03" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="2839" y="-1320.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2839" y="-1309.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2839" y="-1298.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="2839" y="-1287.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository</text>
</g>
<!-- ahriman_core_repository_executor&#45;&gt;ahriman_core_repository_repository -->
<g id="edge196" class="edge">
<title>ahriman_core_repository_executor&#45;&gt;ahriman_core_repository_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2747.6,-1388.26C2763.86,-1373.81 2784.19,-1355.74 2801.55,-1340.32"/>
<polygon fill="#732626" stroke="black" points="2804.14,-1342.7 2809.29,-1333.44 2799.49,-1337.47 2804.14,-1342.7"/>
</g>
<!-- ahriman_core_repository_properties&#45;&gt;ahriman_core_repository_cleaner -->
<g id="edge197" class="edge">
<title>ahriman_core_repository_properties&#45;&gt;ahriman_core_repository_cleaner</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2718,-1597.84C2718,-1589.67 2718,-1580.88 2718,-1572.35"/>
<polygon fill="#732626" stroke="black" points="2721.5,-1572.13 2718,-1562.13 2714.5,-1572.13 2721.5,-1572.13"/>
</g>
<!-- ahriman_core_repository_repository&#45;&gt;ahriman_application_application -->
<g id="edge198" class="edge">
<title>ahriman_core_repository_repository&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2795.31,-1300.75C2618.34,-1282.92 1937.96,-1209.7 1390,-1086.72 1367.1,-1081.58 1342.18,-1074.35 1321.09,-1067.74"/>
<polygon fill="#932424" stroke="black" points="1321.97,-1064.35 1311.38,-1064.65 1319.85,-1071.02 1321.97,-1064.35"/>
</g>
<!-- ahriman_core_repository_repository&#45;&gt;ahriman_core_status_watcher -->
<g id="edge199" class="edge">
<title>ahriman_core_repository_repository&#45;&gt;ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2882.87,-1303.9C3059.19,-1299.13 3733.26,-1278.78 4286,-1233.26 4429.13,-1221.48 4472.53,-1246.67 4607,-1196.26 4611.88,-1194.43 4616.74,-1192.05 4621.41,-1189.38"/>
<polygon fill="#932424" stroke="black" points="4623.49,-1192.21 4630.15,-1183.97 4619.8,-1186.26 4623.49,-1192.21"/>
</g>
<!-- ahriman_core_repository_update_handler&#45;&gt;ahriman_core_repository_repository -->
<g id="edge200" class="edge">
<title>ahriman_core_repository_update_handler&#45;&gt;ahriman_core_repository_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2839,-1378.76C2839,-1370.59 2839,-1361.8 2839,-1353.27"/>
<polygon fill="#993333" stroke="black" points="2842.5,-1353.05 2839,-1343.05 2835.5,-1353.05 2842.5,-1353.05"/>
</g>
<!-- ahriman_core_sign -->
<g id="node48" class="node">
<title>ahriman_core_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#ce3b3b" stroke="black" cx="3446" cy="-2072.8" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3446" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3446" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3446" y="-2059.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sign</text>
</g>
<!-- ahriman_core_sign&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge201" class="edge">
<title>ahriman_core_sign&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3469.52,-2049.8C3509.43,-2012.45 3590.79,-1936.32 3639.23,-1891"/>
<polygon fill="#ce3b3b" stroke="black" points="3641.8,-1893.39 3646.71,-1884 3637.02,-1888.28 3641.8,-1893.39"/>
</g>
<!-- ahriman_core_sign&#45;&gt;ahriman_core_repository_properties -->
<g id="edge202" class="edge">
<title>ahriman_core_sign&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3426.72,-2047.78C3416.05,-2034.09 3402.8,-2016.45 3392,-2000.03 3309.71,-1874.93 3350.78,-1788.67 3225,-1707.42 3154.12,-1661.63 2929.98,-1686.75 2847,-1671.42 2820.7,-1666.56 2791.99,-1658.84 2768.34,-1651.82"/>
<polygon fill="#ce3b3b" stroke="black" points="2769.12,-1648.4 2758.53,-1648.86 2767.09,-1655.1 2769.12,-1648.4"/>
</g>
<!-- ahriman_core_sign_gpg&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge203" class="edge">
<title>ahriman_core_sign_gpg&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2210.08,-2067.99C2344.96,-2054.47 2795.41,-2009.13 2860,-2000.03 3143.91,-1960.06 3480.1,-1894.56 3616.21,-1867.27"/>
<polygon fill="#932424" stroke="black" points="3616.94,-1870.69 3626.05,-1865.29 3615.56,-1863.83 3616.94,-1870.69"/>
</g>
<!-- ahriman_core_sign_gpg&#45;&gt;ahriman_core_repository_properties -->
<g id="edge204" class="edge">
<title>ahriman_core_sign_gpg&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2189.02,-2039.85C2228.91,-1968.23 2335.76,-1794.32 2476,-1707.42 2534.64,-1671.08 2561.18,-1692.09 2627,-1671.42 2641.21,-1666.95 2656.37,-1661.35 2670.16,-1655.91"/>
<polygon fill="#932424" stroke="black" points="2671.48,-1659.15 2679.46,-1652.18 2668.88,-1652.65 2671.48,-1659.15"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_application_handlers_web -->
<g id="edge205" class="edge">
<title>ahriman_core_spawn&#45;&gt;ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6864,-2071.8C6943.42,-1854.8 7156.05,-1314.14 7197,-1086.72 7238.55,-855.99 7184.27,-792.14 7213,-559.47 7216.57,-530.58 7242.45,-520.16 7227,-495.48"/>
<path fill="none" stroke="black" d="M7227,-493.48C7189.1,-447.92 6135.21,-381.97 6172,-335.5"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_web_views_base -->
<g id="edge206" class="edge">
<title>ahriman_core_spawn&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6803.96,-2152.99C6824.71,-2134.73 6852.21,-2106.02 6864,-2073.8"/>
<path fill="none" stroke="black" d="M6864,-2071.8C6881.42,-2024.2 6848.97,-2009.45 6826,-1964.27"/>
<path fill="none" stroke="black" d="M6826,-1962.27C6563.43,-1445.68 6085.25,-1702.34 5745,-1233.26"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_web_web -->
<g id="edge207" class="edge">
<title>ahriman_core_spawn&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6826,-1962.27C6781.92,-1828.09 6905.84,-1804.18 6954,-1671.42 6978.21,-1604.67 7116.16,-1121.36 7107,-1050.95"/>
</g>
<!-- ahriman_core_status -->
<g id="node51" class="node">
<title>ahriman_core_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="3902" cy="-1853.73" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3902" y="-1862.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3902" y="-1851.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3902" y="-1840.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status</text>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_application_lock -->
<g id="edge208" class="edge">
<title>ahriman_core_status&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3865.76,-1844.05C3744.51,-1815.17 3353.41,-1723.19 3225,-1707.42 3168.78,-1700.51 2252.22,-1704.17 2206,-1671.42 2192.07,-1661.55 2208.58,-1639.72 2192,-1635.65"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_core_repository_properties -->
<g id="edge209" class="edge">
<title>ahriman_core_status&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3874.15,-1833.87C3823.95,-1801.07 3713.85,-1734.43 3610,-1707.42 3281.44,-1621.96 3182.22,-1725.11 2847,-1671.42 2820.6,-1667.19 2791.87,-1659.53 2768.24,-1652.39"/>
<polygon fill="#f91010" stroke="black" points="2769.03,-1648.97 2758.44,-1649.37 2766.97,-1655.66 2769.03,-1648.97"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_web_views_base -->
<g id="edge210" class="edge">
<title>ahriman_core_status&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3936.97,-1842.02C4104.72,-1789 4835.12,-1538.73 5231,-1086.72 5292.95,-1015.99 5281.29,-979.38 5337,-903.64 5346.71,-890.44 5358.51,-876.97 5369.44,-865.31"/>
<polygon fill="#f91010" stroke="black" points="5372.1,-867.59 5376.46,-857.93 5367.03,-862.76 5372.1,-867.59"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_web_web -->
<g id="edge211" class="edge">
<title>ahriman_core_status&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3894.56,-1825.07C3879.22,-1763.27 3848.29,-1609.86 3883,-1488.34 3919.75,-1359.71 4146.25,-1099.24 4201,-977.18 4235.72,-899.78 4200.73,-859.31 4255,-794.1 4277.63,-766.91 4301.72,-783.84 4326,-758.1 4340.49,-742.75 4339.62,-734.98 4345,-714.56"/>
<path fill="none" stroke="black" d="M4345,-712.56C4357.25,-662.79 4340.15,-648.26 4345,-597.24"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_application_lock -->
<g id="edge212" class="edge">
<title>ahriman_core_status_client&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2703.84,-1852.45C2598.4,-1850.93 2306.3,-1841.24 2236,-1780.96 2210.39,-1758.99 2224.75,-1643.75 2192,-1635.65"/>
<path fill="none" stroke="black" d="M2192,-1633.65C2089.31,-1608.42 1972.31,-1567.78 1907.94,-1544.35"/>
<polygon fill="#931a1a" stroke="black" points="1909.05,-1541.03 1898.45,-1540.89 1906.64,-1547.61 1909.05,-1541.03"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_core_repository_properties -->
<g id="edge213" class="edge">
<title>ahriman_core_status_client&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2738.04,-1816.88C2733.95,-1779.88 2727.55,-1722.02 2723.09,-1681.66"/>
<polygon fill="#931a1a" stroke="black" points="2726.55,-1681.1 2721.97,-1671.55 2719.59,-1681.87 2726.55,-1681.1"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_core_status_web_client -->
<g id="edge214" class="edge">
<title>ahriman_core_status_client&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2790.47,-1850.32C2922.66,-1843.85 3300.55,-1825.97 3615,-1816.96 3859.38,-1809.95 5574.76,-1826.29 5815,-1780.96 5831.2,-1777.9 5848.26,-1772.37 5863.42,-1766.55"/>
<polygon fill="#931a1a" stroke="black" points="2790.1,-1846.84 2780.28,-1850.82 2790.44,-1853.83 2790.1,-1846.84"/>
<polygon fill="#931a1a" stroke="black" points="5865.09,-1769.66 5873.09,-1762.71 5862.5,-1763.15 5865.09,-1769.66"/>
</g>
<!-- ahriman_core_status_watcher&#45;&gt;ahriman_web_views_base -->
<g id="edge215" class="edge">
<title>ahriman_core_status_watcher&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4693.89,-1143.92C4726.42,-1130.05 4776.08,-1108.18 4818,-1086.72 4963.16,-1012.4 4985.32,-966.02 5136,-903.64 5209.95,-873.03 5300.85,-851.85 5355.24,-840.8"/>
<polygon fill="#8b2222" stroke="black" points="5356.17,-844.18 5365.29,-838.79 5354.79,-837.32 5356.17,-844.18"/>
</g>
<!-- ahriman_core_status_watcher&#45;&gt;ahriman_web_web -->
<g id="edge216" class="edge">
<title>ahriman_core_status_watcher&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4629.52,-1135.67C4622.42,-1130.9 4614.66,-1126.26 4607,-1122.72 4551.01,-1096.87 4521.88,-1124.32 4473,-1086.72 4334.35,-980.08 4304.9,-884.82 4345,-714.56"/>
</g>
<!-- ahriman_core_tree&#45;&gt;ahriman_application_application -->
<g id="edge218" class="edge">
<title>ahriman_core_tree&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1292.73,-1824.88C1279.57,-1773.36 1251.9,-1659.5 1238,-1561.88 1217.35,-1416.9 1214,-1379.7 1214,-1233.26"/>
</g>
<!-- ahriman_core_upload -->
<g id="node56" class="node">
<title>ahriman_core_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e72222" stroke="black" cx="2580" cy="-1634.65" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2580" y="-1643.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2580" y="-1632.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2580" y="-1621.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload</text>
</g>
<!-- ahriman_core_upload&#45;&gt;ahriman_core_repository_executor -->
<g id="edge219" class="edge">
<title>ahriman_core_upload&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2573.11,-1605.84C2569.01,-1583.03 2566.85,-1550.62 2580,-1526.11"/>
</g>
<!-- ahriman_core_upload_rsync&#45;&gt;ahriman_core_upload_upload -->
<g id="edge220" class="edge">
<title>ahriman_core_upload_rsync&#45;&gt;ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4553.65,-2027.53C4551.96,-2021.48 4550.23,-2015.26 4548.53,-2009.19"/>
<polygon fill="#8a2e2e" stroke="black" points="4550.28,-2028.49 4556.34,-2037.19 4557.03,-2026.61 4550.28,-2028.49"/>
<polygon fill="#8a2e2e" stroke="black" points="4551.8,-2007.88 4545.74,-1999.19 4545.06,-2009.76 4551.8,-2007.88"/>
</g>
<!-- ahriman_core_upload_upload&#45;&gt;ahriman_core_repository_executor -->
<g id="edge222" class="edge">
<title>ahriman_core_upload_upload&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4538.67,-1926.42C4539.23,-1895.03 4535.59,-1849.48 4514,-1816.96 4359.27,-1583.82 4245.17,-1568.22 3977,-1488.34 3720.04,-1411.8 3026.19,-1534.58 2771,-1452.34 2766.48,-1450.88 2762,-1448.92 2757.66,-1446.65"/>
<polygon fill="#8b1818" stroke="black" points="2759.4,-1443.62 2748.99,-1441.64 2755.9,-1449.68 2759.4,-1443.62"/>
</g>
<!-- ahriman_core_upload_upload&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge224" class="edge">
<title>ahriman_core_upload_upload&#45;&gt;ahriman_core_upload_s3</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4584.11,-1958.45C4675.2,-1951.34 4879.09,-1935.92 5051,-1926.5 5448.5,-1904.7 5551.68,-1945.22 5946,-1890.5 5980.89,-1885.65 6019.54,-1876.25 6048.73,-1868.3"/>
<polygon fill="#8b1818" stroke="black" points="4583.79,-1954.97 4574.09,-1959.24 4584.34,-1961.95 4583.79,-1954.97"/>
<polygon fill="#8b1818" stroke="black" points="6049.94,-1871.6 6058.64,-1865.56 6048.07,-1864.86 6049.94,-1871.6"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_application_application -->
<g id="edge225" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3169.76,-2547.6C3073.56,-2542.88 2813.71,-2530.29 2597,-2521.5 2540.34,-2519.21 1623.19,-2518.39 1577,-2485.5 1467.55,-2407.6 1512.31,-2330.39 1468,-2203.56 1408.62,-2033.59 1401.84,-1988.44 1347,-1816.96 1305.58,-1687.43 1290.6,-1656.5 1252,-1526.11"/>
<path fill="none" stroke="black" d="M1252,-1524.11C1225.95,-1413.36 1254.2,-1379.97 1228,-1269.26 1224.05,-1252.56 1214,-1250.43 1214,-1233.26"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge226" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_alpm_repo</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3169.79,-2549.34C3083.91,-2547.99 2869.93,-2539.05 2701,-2485.5 2661.26,-2472.91 2122.88,-2180.86 1967.63,-2096.46"/>
<polygon fill="#db0505" stroke="black" points="1969.27,-2093.37 1958.82,-2091.66 1965.93,-2099.52 1969.27,-2093.37"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge227" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3169.76,-2547.57C3073.56,-2542.78 2813.72,-2530.04 2597,-2521.5 2536.4,-2519.12 1560.29,-2512.53 1506,-2485.5 1457.91,-2461.57 1458.39,-2437.13 1430,-2391.52 1374.1,-2301.73 1310.31,-2279.49 1330,-2175.57"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_report_email -->
<g id="edge228" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3173.34,-2537.8C3052.17,-2495.11 2661.79,-2341.56 2792,-2175.57"/>
<path fill="none" stroke="black" d="M2792,-2173.57C2797.94,-2158.29 2801.36,-2152.94 2816,-2145.57 2916.88,-2094.78 3246.01,-2192.22 3323,-2109.57 3345.28,-2085.66 3335.21,-2066.35 3323,-2036.03 3306.47,-1994.99 3260.87,-2007.98 3254,-1964.27"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge229" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3245.55,-2544.27C3323.87,-2531.57 3506.63,-2492.41 3618,-2391.52 3735.18,-2285.38 3744.99,-2228.42 3778,-2073.8"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_repository_repository -->
<g id="edge230" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_repository_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3200.84,-2521.72C3197.47,-2502.33 3196.38,-2476.61 3208,-2457.51"/>
<path fill="none" stroke="black" d="M3208,-2455.51C3286.09,-2327.15 3225.9,-2239.71 3343,-2145.57 3407.6,-2093.64 3473.35,-2173.59 3526,-2109.57 3546.76,-2084.33 3531.43,-2068.26 3526,-2036.03 3477.55,-1748.66 3469.9,-1660.87 3311,-1416.57"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge231" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3169.84,-2548.41C3097.67,-2545.27 2937.16,-2533.04 2812,-2485.5 2663.1,-2428.95 2656.5,-2360.87 2526,-2269.55"/>
<path fill="none" stroke="black" d="M2526,-2267.55C2422.52,-2208.78 2358.97,-2277.85 2266,-2203.56 2255.13,-2194.87 2260.3,-2186.73 2252,-2175.57"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_status_web_client -->
<g id="edge232" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3246.15,-2549.04C3491.56,-2545.96 4843.55,-2527.23 5022,-2485.5 5051.44,-2478.62 5053.9,-2460.36 5084,-2457.51"/>
<path fill="none" stroke="black" d="M5084,-2455.51C5100.31,-2453.97 5093.36,-2434.88 5108,-2427.52 5212.11,-2375.24 5518.45,-2421.59 5631,-2391.52 5687.84,-2376.34 5693.37,-2349.5 5750,-2333.54 5830.15,-2310.94 6056.74,-2347.98 6123,-2297.54 6158.59,-2270.45 6143.19,-2245.4 6159,-2203.56 6174.75,-2161.86 6180.93,-2152.19 6194,-2109.57 6196.14,-2102.61 6260.94,-1860.08 6256,-1854.73"/>
<path fill="none" stroke="black" d="M6256,-1852.73C6242.04,-1839.63 6248.25,-1827.07 6232,-1816.96 6129.96,-1753.46 6076.32,-1823.7 5964,-1780.96 5959.74,-1779.34 5955.49,-1777.32 5951.34,-1775.07"/>
<polygon fill="#db0505" stroke="black" points="5952.88,-1771.91 5942.49,-1769.84 5949.32,-1777.94 5952.88,-1771.91"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge233" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_upload_rsync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3246.51,-2549.43C3483.76,-2548.85 4738.7,-2543.08 4794,-2485.5 4811.85,-2466.92 4805.96,-2450.35 4794,-2427.52 4780.95,-2402.62 4755.05,-2416.42 4742,-2391.52 4710.65,-2331.7 4734.74,-2306.71 4742,-2239.56 4745.13,-2210.61 4765.91,-2202.94 4756,-2175.57"/>
<path fill="none" stroke="black" d="M4756,-2173.57C4724.39,-2113.8 4678.75,-2139.24 4618,-2109.57 4613.38,-2107.32 4608.71,-2104.69 4604.15,-2101.9"/>
<polygon fill="#db0505" stroke="black" points="4605.9,-2098.86 4595.6,-2096.38 4602.11,-2104.74 4605.9,-2098.86"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_models_build_status -->
<g id="edge234" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_models_build_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4970,-2455.51C4986.16,-2452.77 4979.37,-2434.91 4994,-2427.52 5091.06,-2378.49 5376.96,-2419.65 5482,-2391.52 5486.62,-2390.29 5491.31,-2388.68 5495.92,-2386.87"/>
<polygon fill="#db0505" stroke="black" points="5497.41,-2390.04 5505.23,-2382.9 5494.66,-2383.6 5497.41,-2390.04"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_models_package -->
<g id="edge235" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3208,-2455.51C3240.74,-2401.7 3431.91,-2376.65 3522.9,-2367.65"/>
<polygon fill="#db0505" stroke="black" points="3523.34,-2371.13 3532.96,-2366.68 3522.67,-2364.16 3523.34,-2371.13"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_models_package_source -->
<g id="edge236" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_models_package_source</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5084,-2455.51C5100.31,-2453.97 5093.31,-2434.79 5108,-2427.52 5235.09,-2364.68 5606.18,-2420.34 5745,-2391.52 5752,-2390.07 5759.23,-2388.09 5766.3,-2385.84"/>
<polygon fill="#db0505" stroke="black" points="5767.46,-2389.15 5775.83,-2382.65 5765.23,-2382.51 5767.46,-2389.15"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_web_views_index -->
<g id="edge237" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3246.44,-2548.95C3494.98,-2545.33 4866.88,-2523.67 4946,-2485.5 4960.76,-2478.39 4953.84,-2460.26 4970,-2457.51"/>
<path fill="none" stroke="black" d="M4970,-2455.51C4984.35,-2453.08 4982.44,-2405.99 4984,-2391.52 4986.77,-2365.9 4991.18,-2358.29 4984,-2333.54 4956.47,-2238.58 4934.95,-2215.45 4865,-2145.57 4843.8,-2124.4 4822.46,-2135.81 4808,-2109.57 4792.22,-2080.95 4806.06,-2068.66 4808,-2036.03 4827.37,-1710.31 4895,-1633.33 4895,-1307.03 4895,-1307.03 4895,-1307.03 4895,-1232.26 4895,-1132.95 4880.01,-1108.16 4851,-1013.18 4849.42,-1008.02 4778.48,-836.65 4781,-831.87"/>
</g>
<!-- ahriman_models -->
<g id="node61" class="node">
<title>ahriman_models</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="4452" cy="-2362.53" rx="50.75" ry="18"/>
<text text-anchor="middle" x="4452" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.models</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_ahriman -->
<g id="edge238" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4500.12,-2356.89C4569.26,-2350.43 4700.76,-2338.92 4813,-2333.54 4867.14,-2330.94 6716.61,-2323.85 6764,-2297.54 6993.7,-2170.03 7129.09,-1450.84 7194,-1196.26 7199.66,-1174.08 7269.68,-811.97 7284,-794.1 7335.91,-729.32 7430.19,-794.38 7453,-714.56"/>
<path fill="none" stroke="black" d="M7453,-712.56C7503.45,-528.72 7321.97,-488.19 7341,-298.5"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_application -->
<g id="edge239" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2868,-2173.57C2767.5,-2156.81 2508.62,-2147.37 2414,-2109.57 2361.77,-2088.71 2363.72,-2055.65 2311,-2036.03 2148.27,-1975.49 2079.9,-2072.24 1922,-2000.03 1818.77,-1952.83 1328,-1629.25 1328,-1416.57 1328,-1416.57 1328,-1416.57 1328,-1305.03 1328,-1240.79 1362.69,-1214.56 1328,-1160.49"/>
<path fill="none" stroke="black" d="M1328,-1158.49C1312.63,-1135.78 1298.19,-1108.45 1287.69,-1087.03"/>
<polygon fill="#f91010" stroke="black" points="1290.8,-1085.42 1283.3,-1077.94 1284.5,-1088.47 1290.8,-1085.42"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge240" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4401.24,-2361.51C4273.69,-2360.6 3929.9,-2352.77 3650,-2297.54 3567.13,-2281.19 3551.96,-2255.47 3469,-2239.56 3241.49,-2195.9 3168.68,-2277.11 2949,-2203.56 2927.38,-2196.32 2928.35,-2180.1 2906,-2175.57"/>
<path fill="none" stroke="black" d="M2906,-2173.57C2889.95,-2170.26 2896.52,-2153.17 2882,-2145.57 2741.85,-2072.31 2680.16,-2152.67 2528,-2109.57 2455.79,-2089.12 2447.73,-2058.09 2376,-2036.03 2270.8,-2003.69 2232.31,-2043.04 2131,-2000.03 2001.64,-1945.12 1987.97,-1892.89 1903,-1780.96 1708.12,-1524.23 1639.98,-1472.55 1474,-1196.26 1437.09,-1134.81 1443.51,-1110.76 1404,-1050.95"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge241" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4262,-2267.55C4246.22,-2240.72 4249.59,-1738.51 4248,-1707.42 4243.88,-1626.7 4234,-1606.93 4234,-1526.11 4234,-1526.11 4234,-1526.11 4234,-1414.57 4234,-1125.08 4096.32,-1017.12 3830,-903.64 3671.14,-835.95 2438.37,-831.72 2119.23,-831.76"/>
<polygon fill="#f91010" stroke="black" points="2119.16,-828.26 2109.16,-831.77 2119.16,-835.26 2119.16,-828.26"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge242" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2906,-2173.57C2889.96,-2170.21 2896.36,-2153.47 2882,-2145.57 2783.62,-2091.51 2732.79,-2159.01 2632,-2109.57 2589.8,-2088.88 2594.04,-2063.64 2556,-2036.03 2359.85,-1893.67 2215.59,-1977.67 2074,-1780.96 2035.76,-1727.83 2050,-1701.1 2050,-1635.65 2050,-1635.65 2050,-1635.65 2050,-1414.57 2050,-1349.44 2064.16,-1325.32 2031,-1269.26 1891.01,-1032.63 1777.84,-1026.74 1532,-903.64 1482.97,-879.09 1463.69,-890.82 1414,-867.64 1409.94,-865.75 1405.83,-863.6 1401.78,-861.3"/>
<polygon fill="#f91010" stroke="black" points="1403.45,-858.22 1393.06,-856.12 1399.87,-864.24 1403.45,-858.22"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_status -->
<g id="edge243" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4402.2,-2359.12C4265.16,-2352.15 3884.69,-2330.3 3764,-2297.54 3705.29,-2281.6 3699.01,-2254.36 3640,-2239.56 3496.89,-2203.65 3111.48,-2264.27 2977,-2203.56 2944.06,-2188.69 2952.16,-2162.05 2920,-2145.57 2826.34,-2097.61 2775.98,-2164.13 2686,-2109.57 2651.33,-2088.55 2657.87,-2067.26 2632,-2036.03 2490.63,-1865.42 2407.49,-1860.51 2292,-1671.42 2238.05,-1583.08 2236.19,-1553.21 2213,-1452.34 2180,-1308.76 2230.63,-1260.32 2178,-1122.72 2135.11,-1010.59 2106.14,-987.26 2020,-903.64 2014.55,-898.35 1984.69,-878.25 1958.05,-860.66"/>
<polygon fill="#f91010" stroke="black" points="1959.83,-857.63 1949.55,-855.06 1955.97,-863.48 1959.83,-857.63"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_user -->
<g id="edge244" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2542,-2071.8C2415.07,-2029.05 2126,-1769.59 2126,-1635.65 2126,-1635.65 2126,-1635.65 2126,-1414.57 2126,-1333.99 2062.94,-1283.43 2126,-1233.26"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_lock -->
<g id="edge245" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2906,-2173.57C2889.94,-2170.3 2896.42,-2153.36 2882,-2145.57 2772.39,-2086.35 2722.02,-2149.48 2604,-2109.57 2573.86,-2099.38 2572.3,-2083.5 2542,-2073.8"/>
<path fill="none" stroke="black" d="M2542,-2071.8C2497.04,-2057.42 2487.15,-2049.8 2442,-2036.03 2379.72,-2017.05 2359.7,-2026.01 2300,-2000.03 2135.16,-1928.32 2075.92,-1918.35 1960,-1780.96 1914.72,-1727.29 1894.8,-1705.79 1898,-1635.65"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge246" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_alpm_repo</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4401.76,-2359.91C4135.26,-2351.27 2896.1,-2310.52 2816,-2297.54 2724.64,-2282.74 2705.46,-2263.26 2616,-2239.56 2375.5,-2175.84 2085.06,-2109.51 1973.13,-2084.33"/>
<polygon fill="#f91010" stroke="black" points="1973.7,-2080.87 1963.18,-2082.1 1972.17,-2087.7 1973.7,-2080.87"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_auth -->
<g id="edge247" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4489.37,-2350.3C4530.39,-2337.85 4598.11,-2316.97 4656,-2297.54 4728.5,-2273.21 4744.98,-2262.28 4818,-2239.56 5032.72,-2172.72 5101.08,-2199.96 5307,-2109.57 5417.03,-2061.28 5504.4,-2080.47 5535,-1964.27"/>
<path fill="none" stroke="black" d="M5535,-1962.27C5544.07,-1915.34 5548.76,-1900.5 5535,-1854.73"/>
<path fill="none" stroke="black" d="M5535,-1852.73C5528.85,-1832.27 5522.78,-1809.4 5517.88,-1790.02"/>
<polygon fill="#f91010" stroke="black" points="5521.25,-1789.09 5515.42,-1780.24 5514.46,-1790.79 5521.25,-1789.09"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge248" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4670,-2071.8C4674.68,-2042.2 5003.56,-1760.76 5114.74,-1666.35"/>
<polygon fill="#f91010" stroke="black" points="5117.31,-1668.76 5122.67,-1659.62 5112.78,-1663.42 5117.31,-1668.76"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge249" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4474.04,-2346.31C4535.81,-2303.62 4706.85,-2185.23 4718,-2175.57"/>
<path fill="none" stroke="black" d="M4718,-2173.57C4754.05,-2140.08 4666,-2122.85 4670,-2073.8"/>
<path fill="none" stroke="black" d="M4670,-2071.8C4691.56,-1807.39 5002.61,-1611.9 5117.64,-1548.3"/>
<polygon fill="#f91010" stroke="black" points="5119.46,-1551.3 5126.55,-1543.42 5116.1,-1545.16 5119.46,-1551.3"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge250" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4401.71,-2359.83C4271.94,-2355.43 3915.19,-2343.36 3618,-2333.54 3126.45,-2317.29 3000.76,-2352.28 2512,-2297.54 2157.54,-2257.84 2074.58,-2211.23 1724,-2145.57 1602.87,-2122.89 1460.64,-2097.3 1384.23,-2083.65"/>
<polygon fill="#f91010" stroke="black" points="1384.81,-2080.19 1374.35,-2081.88 1383.58,-2087.08 1384.81,-2080.19"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_email -->
<g id="edge251" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3664,-2173.57C3586.04,-2159.6 3566.48,-2156.24 3488,-2145.57 3417.31,-2135.97 3216.53,-2162.77 3169,-2109.57 3147.22,-2085.2 3155.23,-2065.68 3169,-2036.03 3189.83,-1991.19 3255.05,-2013.7 3254,-1964.27"/>
<path fill="none" stroke="black" d="M3254,-1962.27C3251.46,-1897.96 3221.99,-1828.58 3200.51,-1786.01"/>
<polygon fill="#f91010" stroke="black" points="3203.61,-1784.37 3195.93,-1777.08 3197.38,-1787.57 3203.61,-1784.37"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_html -->
<g id="edge252" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_report_html</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4408,-2353.31C4363.24,-2342.43 4295.8,-2318.58 4262,-2269.55"/>
<path fill="none" stroke="black" d="M4262,-2267.55C4227.16,-2217 4106.29,-1801.57 4082,-1745.19"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge253" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4186,-2267.55C4170.24,-2263.05 4172.95,-2251.75 4162,-2239.56 4034.51,-2097.5 4030.54,-2026.57 3868,-1926.5 3819.86,-1896.86 3798.38,-1911.76 3746,-1890.5 3740.16,-1888.13 3734.16,-1885.41 3728.26,-1882.56"/>
<polygon fill="#f91010" stroke="black" points="3729.61,-1879.32 3719.1,-1878 3726.49,-1885.59 3729.61,-1879.32"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_report -->
<g id="edge254" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4401.32,-2361.31C4335.4,-2358.89 4218.65,-2347.17 4134,-2297.54 4119.86,-2289.25 4126.05,-2272.86 4110,-2269.55"/>
<path fill="none" stroke="black" d="M4110,-2267.55C4064.8,-2258.23 4055.49,-2247.33 4010,-2239.56 3768.53,-2198.32 3697.27,-2264.49 3460,-2203.56 3401.07,-2188.42 3394.72,-2161.49 3336,-2145.57 3252,-2122.8 3016.34,-2160.83 2946,-2109.57 2889.26,-2068.22 2884,-2034.48 2884,-1964.27 2884,-1964.27 2884,-1964.27 2884,-1852.73 2884,-1793.52 2887.76,-1725.34 2890.67,-1681.42"/>
<polygon fill="#f91010" stroke="black" points="2894.16,-1681.56 2891.35,-1671.35 2887.18,-1681.09 2894.16,-1681.56"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_executor -->
<g id="edge255" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4404.94,-2355.67C4295.01,-2341.85 4012.91,-2305.68 3778,-2269.55"/>
<path fill="none" stroke="black" d="M3778,-2267.55C3732.38,-2260.53 3723.49,-2247.38 3678,-2239.56 3444.88,-2199.47 3378.91,-2250.13 3147,-2203.56 3068.73,-2187.84 3054.5,-2164.73 2977,-2145.57 2876.98,-2120.85 2823.76,-2179.4 2748,-2109.57 2650.82,-2020 2663.5,-1945.32 2695,-1816.96 2712.39,-1746.09 2749.04,-1741.01 2771,-1671.42 2790.6,-1609.3 2821.93,-1582.88 2790,-1526.11"/>
<path fill="none" stroke="black" d="M2790,-1524.11C2781.32,-1508.34 2780.6,-1503.57 2771,-1488.34 2763.96,-1477.17 2755.74,-1465.49 2747.9,-1454.86"/>
<polygon fill="#f91010" stroke="black" points="2750.51,-1452.52 2741.72,-1446.6 2744.91,-1456.71 2750.51,-1452.52"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_properties -->
<g id="edge256" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3778,-2267.55C3732.4,-2260.43 3723.41,-2247.79 3678,-2239.56 3494.53,-2206.28 3439.2,-2255.09 3260,-2203.56 3205.75,-2187.96 3200.99,-2162.05 3147,-2145.57 3017.29,-2105.99 2962.61,-2175.32 2844,-2109.57 2741.01,-2052.49 2724.6,-2004.47 2695,-1890.5 2676.32,-1818.54 2691.89,-1731.76 2704.91,-1680.28"/>
<polygon fill="#f91010" stroke="black" points="2708.33,-1681.03 2707.47,-1670.47 2701.56,-1679.26 2708.33,-1681.03"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_repository -->
<g id="edge257" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_repository_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4110,-2267.55C4064.8,-2258.23 4055.35,-2248.11 4010,-2239.56 3851.98,-2209.77 3808.5,-2230.65 3650,-2203.56 3542.69,-2185.21 3519.16,-2164.79 3412,-2145.57 3343.95,-2133.37 3152.37,-2157.96 3103,-2109.57 2975.04,-1984.16 3065.54,-1874.2 3131,-1707.42 3137.94,-1689.73 3319.95,-1433.33 3311,-1416.57"/>
<path fill="none" stroke="black" d="M3311,-1414.57C3265.56,-1344.71 3007.29,-1318.55 2893.19,-1310.31"/>
<polygon fill="#f91010" stroke="black" points="2893.15,-1306.8 2882.93,-1309.59 2892.66,-1313.78 2893.15,-1306.8"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_update_handler -->
<g id="edge258" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_repository_update_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4413.18,-2350.86C4371.78,-2339.13 4304.54,-2319.08 4248,-2297.54 4219.75,-2286.78 4214.68,-2279.1 4186,-2269.55"/>
<path fill="none" stroke="black" d="M4186,-2267.55C4172.8,-2263.15 4183.35,-2247.6 4172,-2239.56 4079.14,-2173.8 3775.98,-2195.73 3664,-2175.57"/>
<path fill="none" stroke="black" d="M3664,-2173.57C3586.05,-2159.53 3566.52,-2156 3488,-2145.57 3413.34,-2135.66 3209.9,-2156.51 3151,-2109.57 3083.71,-2055.94 3119.6,-2006.53 3088,-1926.5 3029.24,-1777.68 3013.44,-1740.54 2941,-1597.88 2924.37,-1565.12 2908.01,-1561.96 2900,-1526.11"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge259" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4401.19,-2360.77C4265.86,-2358.12 3885.78,-2346.53 3574,-2297.54 3466.45,-2280.64 3443.48,-2256.9 3336,-2239.56 3238.27,-2223.79 2980.19,-2248.52 2892,-2203.56 2877.4,-2196.11 2884.12,-2178.5 2868,-2175.57"/>
<path fill="none" stroke="black" d="M2868,-2173.57C2650.49,-2137.3 2593.98,-2142.84 2376,-2109.57 2322.26,-2101.37 2260.84,-2090.38 2219.56,-2082.76"/>
<polygon fill="#f91010" stroke="black" points="2219.99,-2079.28 2209.52,-2080.9 2218.71,-2086.16 2219.99,-2079.28"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_spawn -->
<g id="edge260" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_spawn</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6674,-2267.55C6701.81,-2250.35 6729.36,-2225.55 6749.1,-2206.03"/>
<polygon fill="#f91010" stroke="black" points="6751.69,-2208.39 6756.27,-2198.83 6746.73,-2203.45 6751.69,-2208.39"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_client -->
<g id="edge261" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_status_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3778,-2267.55C3732.41,-2260.34 3723.26,-2248.61 3678,-2239.56 3548.91,-2213.74 3510.53,-2239.89 3384,-2203.56 3325.52,-2186.77 3318.72,-2161.49 3260,-2145.57 3176,-2122.8 2933.71,-2168.87 2870,-2109.57 2822.09,-2064.98 2875.39,-2022.75 2846,-1964.27"/>
<path fill="none" stroke="black" d="M2846,-1962.27C2827.37,-1933.37 2800.19,-1905.6 2778.29,-1885.52"/>
<polygon fill="#f91010" stroke="black" points="2780.56,-1882.85 2770.79,-1878.75 2775.87,-1888.04 2780.56,-1882.85"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_watcher -->
<g id="edge262" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4456.93,-2344.47C4466.23,-2311.86 4486.63,-2238.34 4500,-2175.57"/>
<path fill="none" stroke="black" d="M4500,-2173.57C4512.12,-2130.91 4499.39,-2118.14 4500,-2073.8"/>
<path fill="none" stroke="black" d="M4500,-2071.8C4500.44,-2039.54 4491.45,-2032.21 4489,-2000.03 4484.08,-1935.46 4480.82,-1916.59 4500,-1854.73"/>
<path fill="none" stroke="black" d="M4500,-1852.73C4549.73,-1636.47 4630.74,-1607.98 4743,-1416.57"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_web_client -->
<g id="edge263" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4501.65,-2358.57C4612.63,-2351.43 4877.53,-2331.3 4960,-2297.54 4999.32,-2281.45 4996.07,-2254.06 5036,-2239.56 5202.43,-2179.1 5678.15,-2291.22 5832,-2203.56 5858.77,-2188.3 5847.95,-2167.09 5870,-2145.57 5891.72,-2124.39 5906.17,-2130.64 5928,-2109.57 5941.78,-2096.28 5945.88,-2091.94 5952,-2073.8"/>
<path fill="none" stroke="black" d="M5952,-2071.8C5983.68,-1980.24 5933.72,-1951.6 5932,-1854.73"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_tree -->
<g id="edge264" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_tree</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4401.6,-2360.64C4243.47,-2357.43 3743.25,-2344.03 3332,-2297.54 2901.72,-2248.9 2785.11,-2251.47 2376,-2109.57 2303.2,-2084.32 2293.48,-2055.77 2219,-2036.03 2025.48,-1984.76 1966.34,-2039.15 1770,-2000.03 1665.99,-1979.31 1644.31,-1957.86 1543,-1926.5 1474.2,-1905.2 1394.01,-1881.79 1345.14,-1867.68"/>
<polygon fill="#f91010" stroke="black" points="1346.08,-1864.3 1335.5,-1864.9 1344.14,-1871.03 1346.08,-1864.3"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge265" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_upload_rsync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4500,-2173.57C4505.14,-2149.43 4519.72,-2126.22 4533.88,-2108.26"/>
<polygon fill="#f91010" stroke="black" points="4536.69,-2110.35 4540.32,-2100.39 4531.27,-2105.91 4536.69,-2110.35"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge266" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_upload_s3</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4499.71,-2356.44C4599.35,-2345.78 4836.86,-2320.21 5036,-2297.54 5254.33,-2272.69 5308.62,-2263.91 5527,-2239.56 5603.17,-2231.06 5800.65,-2236.18 5870,-2203.56 5910.95,-2184.29 6104.34,-1978.35 6104,-1964.27"/>
<path fill="none" stroke="black" d="M6104,-1962.27C6104.06,-1942.03 6102.47,-1919.73 6100.61,-1900.71"/>
<polygon fill="#f91010" stroke="black" points="6104.06,-1900.1 6099.55,-1890.51 6097.1,-1900.82 6104.06,-1900.1"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_upload -->
<g id="edge267" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4500,-2071.8C4500.31,-2049.41 4507.45,-2025.67 4515.3,-2006.22"/>
<polygon fill="#f91010" stroke="black" points="4518.63,-2007.33 4519.3,-1996.75 4512.18,-2004.6 4518.63,-2007.33"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge268" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6750,-1743.19C6727.87,-1484.79 6797.92,-1419.28 6781,-1160.49"/>
<path fill="none" stroke="black" d="M6781,-1158.49C6779.78,-1101.96 6840.52,-1106.86 6849,-1050.95"/>
<path fill="none" stroke="black" d="M6849,-1048.95C6856.17,-1001.7 6851.23,-989.16 6849,-941.41"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_base -->
<g id="edge269" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4496.21,-2353.72C4554.9,-2342.97 4661.56,-2322.14 4751,-2297.54 4766.72,-2293.22 5293.77,-2119.1 5307,-2109.57 5406.13,-2038.18 5434.08,-2006.29 5473,-1890.5 5483.41,-1859.51 5478.63,-1849.15 5473,-1816.96 5470.07,-1800.2 5464.51,-1797.36 5460,-1780.96 5403.18,-1574.14 5369,-1521.51 5369,-1307.03 5369,-1307.03 5369,-1307.03 5369,-1232.26 5369,-1149.93 5431.14,-1129.67 5407,-1050.95"/>
<path fill="none" stroke="black" d="M5407,-1048.95C5386.89,-992.45 5390.23,-922.33 5395.64,-877.34"/>
<polygon fill="#f91010" stroke="black" points="5399.13,-877.67 5396.93,-867.31 5392.19,-876.78 5399.13,-877.67"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_index -->
<g id="edge270" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4414,-2267.55C4404.22,-2181.32 4455.42,-1574.34 4467,-1488.34 4489.12,-1324.03 4486.31,-1279.23 4541,-1122.72 4599.47,-955.38 4614.13,-883.83 4767,-794.1 4814.29,-766.35 4837.32,-785.18 4885,-758.1 4890.14,-755.19 4895.19,-751.63 4899.97,-747.82"/>
<polygon fill="#f91010" stroke="black" points="4902.37,-750.38 4907.74,-741.25 4897.85,-745.04 4902.37,-750.38"/>
</g>
<!-- ahriman_web_views_service_add -->
<g id="node87" class="node">
<title>ahriman_web_views_service_add</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="5734" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5734" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5734" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5734" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5734" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="5734" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">add</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_service_add -->
<g id="edge271" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_service_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4501.74,-2358.99C4578.84,-2353.86 4731.01,-2338.97 4853,-2297.54 4904.22,-2280.14 4907.88,-2254.02 4960,-2239.56 5045.84,-2215.73 5694.54,-2262.88 5761,-2203.56 5816.77,-2153.78 5780.93,-2110.62 5776,-2036.03 5767.14,-1901.9 5591.7,-948.24 5659,-831.87"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge272" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4441.96,-2344.65C4432.07,-2326.74 4417.88,-2297.27 4414,-2269.55"/>
<path fill="none" stroke="black" d="M4414,-2267.55C4401.94,-2181.39 4386,-2160.81 4386,-2073.8 4386,-2073.8 4386,-2073.8 4386,-1962.27 4386,-1816.12 4348,-1781.79 4348,-1635.65 4348,-1635.65 4348,-1635.65 4348,-1305.03 4348,-1067.99 4314.92,-940.94 4501,-794.1 4580.03,-731.74 4700.71,-717.26 4771.54,-714.47"/>
<polygon fill="#f91010" stroke="black" points="4771.74,-717.97 4781.62,-714.14 4771.51,-710.97 4771.74,-717.97"/>
</g>
<!-- ahriman_web_views_service_remove -->
<g id="node89" class="node">
<title>ahriman_web_views_service_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="5828" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5828" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5828" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5828" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5828" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="5828" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">remove</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge273" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_service_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4500.41,-2357C4569.64,-2350.71 4700.95,-2339.42 4813,-2333.54 4885.71,-2329.72 6061.8,-2336.97 6123,-2297.54 6310.76,-2176.56 6405.41,-1994.59 6270,-1816.96 6233.4,-1768.94 6187.78,-1816.55 6139,-1780.96 6107.47,-1757.95 6112.82,-1739.78 6091,-1707.42 6086.16,-1700.24 5737.59,-1204.52 5735,-1196.26 5709.74,-1115.78 5779.24,-871.48 5811.99,-765.04"/>
<polygon fill="#f91010" stroke="black" points="5815.33,-766.07 5814.94,-755.48 5808.64,-764 5815.33,-766.07"/>
</g>
<!-- ahriman_web_views_service_search -->
<g id="node90" class="node">
<title>ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="6277" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="6277" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6277" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="6277" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="6277" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="6277" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">search</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_service_search -->
<g id="edge274" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6598,-2071.8C6605.04,-2039.19 6615.06,-2033.03 6620,-2000.03 6624.84,-1967.71 6622.51,-1959.08 6620,-1926.5 6612.42,-1828.25 6603.81,-1804.33 6586,-1707.42 6569.49,-1617.62 6452.23,-987.01 6415,-903.64 6389.11,-845.69 6343.45,-788.07 6311.77,-751.94"/>
<polygon fill="#f91010" stroke="black" points="6314.09,-749.29 6304.84,-744.13 6308.86,-753.93 6314.09,-749.29"/>
</g>
<!-- ahriman_web_views_status_ahriman -->
<g id="node92" class="node">
<title>ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="5403" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5403" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5403" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5403" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5403" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="5403" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge275" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4718,-2173.57C4853.88,-2047.33 4933.19,-2085.29 5112,-2036.03 5188.97,-2014.83 5237.52,-2061.89 5288,-2000.03 5308.67,-1974.71 5289.32,-1959.15 5288,-1926.5 5286.03,-1877.73 5227.88,-1098.52 5217,-1050.95"/>
<path fill="none" stroke="black" d="M5217,-1048.95C5179.17,-940.42 5180.88,-876.52 5261,-794.1 5292.47,-761.73 5317.62,-781.89 5356,-758.1 5359.77,-755.77 5363.51,-753.1 5367.13,-750.27"/>
<polygon fill="#f91010" stroke="black" points="5369.4,-752.93 5374.85,-743.85 5364.92,-747.55 5369.4,-752.93"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_status_package -->
<g id="edge276" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4500.12,-2356.93C4569.26,-2350.52 4700.77,-2339.06 4813,-2333.54 4860.81,-2331.19 6496.59,-2324.72 6536,-2297.54 6620.94,-2238.96 6580.85,-2175.55 6598,-2073.8"/>
<path fill="none" stroke="black" d="M6598,-2071.8C6694.26,-1588.03 6079.72,-1661.55 5916,-1196.26 5878.34,-1089.23 5907.7,-1054.68 5901,-941.41"/>
</g>
<!-- ahriman_web_views_status_packages -->
<g id="node94" class="node">
<title>ahriman_web_views_status_packages</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="5501" cy="-713.56" rx="41.94" ry="44.6"/>
<text text-anchor="middle" x="5501" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5501" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5501" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5501" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="5501" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">packages</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge277" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_status_packages</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4489.35,-2350.23C4520.85,-2339.63 4566.24,-2321.77 4601,-2297.54 4630.14,-2277.23 4625.21,-2257.27 4656,-2239.56 4716.17,-2204.93 4742.24,-2225.81 4808,-2203.56 4980.91,-2145.04 5011.68,-2099.04 5183,-2036.03 5236.46,-2016.37 5271.85,-2045.62 5306,-2000.03 5325.6,-1973.88 5306.31,-1959.18 5306,-1926.5 5303.11,-1618.35 5293,-1541.42 5293,-1233.26 5293,-1233.26 5293,-1233.26 5293,-1158.49 5293,-994.14 5251.62,-921.06 5356,-794.1 5384.41,-759.55 5411.54,-780.96 5450,-758.1 5454.1,-755.67 5458.19,-752.9 5462.18,-749.96"/>
<polygon fill="#f91010" stroke="black" points="5464.42,-752.65 5470.17,-743.75 5460.13,-747.12 5464.42,-752.65"/>
</g>
<!-- ahriman_web_views_status_status -->
<g id="node95" class="node">
<title>ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="6371" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="6371" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6371" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="6371" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="6371" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="6371" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_status_status -->
<g id="edge278" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4500.12,-2356.92C4569.26,-2350.5 4700.77,-2339.03 4813,-2333.54 5203.95,-2314.4 6186.79,-2354.75 6574,-2297.54 6619.66,-2290.79 6634.75,-2293.82 6674,-2269.55"/>
<path fill="none" stroke="black" d="M6674,-2267.55C6686.47,-2259.84 6752.44,-1759.65 6750,-1745.19"/>
<path fill="none" stroke="black" d="M6750,-1743.19C6745.58,-1704.05 6710.54,-1708.76 6698,-1671.42 6589.37,-1347.86 6743.59,-1239.35 6682,-903.64 6672.67,-852.81 6680.58,-829.58 6643,-794.1 6581.41,-735.96 6479.64,-720.04 6419.59,-715.85"/>
<polygon fill="#f91010" stroke="black" points="6419.44,-712.34 6409.24,-715.22 6419.01,-719.33 6419.44,-712.34"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_user_login -->
<g id="edge279" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4500,-1852.73C4511.18,-1815.76 4527.61,-1813.11 4549,-1780.96 4677.55,-1587.75 4731.41,-1551.45 4833,-1342.8 4915.58,-1173.19 4970.14,-1130.05 4971,-941.41"/>
<path fill="none" stroke="black" d="M4971,-939.41C4968.53,-915.64 4955.45,-850.02 4971,-831.87"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge280" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4435.9,-2345.46C4424.46,-2333.24 4409.49,-2315.51 4400,-2297.54 4352.32,-2207.27 4348,-2175.89 4348,-2073.8 4348,-2073.8 4348,-2073.8 4348,-1962.27 4348,-1765.5 4272,-1722.88 4272,-1526.11 4272,-1526.11 4272,-1526.11 4272,-1414.57 4272,-1333.99 4272.68,-1313.84 4272,-1233.26"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_auth -->
<g id="edge281" class="edge">
<title>ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5284.24,-2053.24C5307.93,-2040.64 5337.56,-2022.25 5359,-2000.03 5420.33,-1936.47 5466.25,-1842.74 5489.65,-1788.44"/>
<polygon fill="#c82323" stroke="black" points="5492.93,-1789.67 5493.62,-1779.1 5486.49,-1786.93 5492.93,-1789.67"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge282" class="edge">
<title>ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5141,-1743.19C5138.88,-1722.79 5140.4,-1700.2 5142.83,-1681.01"/>
<polygon fill="#c82323" stroke="black" points="5146.31,-1681.41 5144.21,-1671.02 5139.37,-1680.45 5146.31,-1681.41"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge283" class="edge">
<title>ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5211.02,-2050.41C5194.2,-2037.9 5175.33,-2020.53 5165,-2000.03 5113.81,-1898.44 5152.75,-1858.35 5141,-1745.19"/>
<path fill="none" stroke="black" d="M5141,-1743.19C5137.46,-1707.48 5112.46,-1706.29 5104,-1671.42 5096.29,-1639.65 5093.37,-1628.79 5104,-1597.88 5108.76,-1584.05 5117.39,-1570.84 5126.48,-1559.61"/>
<polygon fill="#c82323" stroke="black" points="5129.31,-1561.68 5133.13,-1551.8 5123.98,-1557.15 5129.31,-1561.68"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_ahriman -->
<g id="edge284" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5586.98,-2353.92C5629.44,-2347.36 5693.74,-2338.23 5750,-2333.54 5867.66,-2323.73 6705.52,-2348.54 6812,-2297.54 6905.23,-2252.88 6901.15,-2201.21 6949,-2109.57 7154.13,-1716.77 7202.89,-1614.62 7349,-1196.26 7376.77,-1116.76 7439.01,-914.91 7453,-831.87"/>
<path fill="none" stroke="black" d="M7453,-829.87C7456.03,-778.71 7437.15,-763.3 7453,-714.56"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_handlers_status -->
<g id="edge285" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5505.29,-2341.93C5497.82,-2338.53 5489.81,-2335.47 5482,-2333.54 5372.35,-2306.41 4564.42,-2352.98 4466,-2297.54 4439.16,-2282.42 4454.37,-2255.5 4428,-2239.56 4357.31,-2196.81 4139.97,-2213.79 4058,-2203.56 3888.47,-2182.39 3848.02,-2162.34 3678,-2145.57 3589.78,-2136.88 2960.24,-2149.31 2881,-2109.57 2786.97,-2062.43 2807.01,-1999.22 2731,-1926.5 2594.25,-1795.65 2495.21,-1828.75 2390,-1671.42 2316.93,-1562.15 2266.08,-1482.39 2347,-1378.8 2470.79,-1220.33 2589.18,-1310.51 2786,-1269.26 3067.96,-1210.18 3160.57,-1274.82 3425,-1160.49"/>
<path fill="none" stroke="black" d="M3425,-1158.49C3488.23,-1116.29 3537.28,-1124.09 3558,-1050.95"/>
<path fill="none" stroke="black" d="M3558,-1048.95C3654.83,-707.23 2304.72,-986.44 1970,-867.64 1965.42,-866.02 1960.82,-863.96 1956.35,-861.65"/>
<polygon fill="#e50505" stroke="black" points="1957.81,-858.45 1947.37,-856.62 1954.39,-864.56 1957.81,-858.45"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_lock -->
<g id="edge286" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5505.3,-2341.93C5497.82,-2338.53 5489.82,-2335.47 5482,-2333.54 5256.63,-2277.9 4668.77,-2322.69 4438,-2297.54 4296.92,-2282.17 4264.5,-2259.56 4124,-2239.56 3552.64,-2158.2 3390.51,-2254.97 2832,-2109.57 2743.16,-2086.45 2152.28,-1828.91 2074,-1780.96 2030.75,-1754.46 1898,-1686.37 1898,-1635.65"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_client -->
<g id="edge287" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_core_status_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5505.29,-2341.96C5497.81,-2338.56 5489.81,-2335.49 5482,-2333.54 5097.08,-2237.31 4975.5,-2391.42 4590,-2297.54 4530.89,-2283.14 4523.52,-2259.38 4466,-2239.56 4290.07,-2178.92 4242.51,-2169.69 4058,-2145.57 3939.61,-2130.1 3094.95,-2153.7 2984,-2109.57 2915.67,-2082.4 2902.13,-2060.3 2860,-2000.03 2850.22,-1986.04 2855.25,-1978.61 2846,-1964.27"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_watcher -->
<g id="edge288" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5546.66,-2333.51C5549.71,-2314.49 5550.76,-2289.31 5541,-2269.55"/>
<path fill="none" stroke="black" d="M5541,-2267.55C5474.53,-2132.94 5369.38,-2190.08 5226,-2145.57 5159.7,-2124.99 5124.86,-2156.83 5074,-2109.57 5005.35,-2045.78 4975.38,-1796.74 4947,-1707.42 4939.93,-1685.16 4817,-1330.3 4819,-1307.03"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_web_client -->
<g id="edge289" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5583.45,-2349.33C5651.11,-2328.59 5782.9,-2281.01 5870,-2203.56 5920.98,-2158.23 5934.23,-2139.67 5952,-2073.8"/>
</g>
<!-- ahriman_models_counters -->
<g id="node64" class="node">
<title>ahriman_models_counters</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b42d2d" stroke="black" cx="6075" cy="-2268.55" rx="38.78" ry="28.98"/>
<text text-anchor="middle" x="6075" y="-2277.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6075" y="-2266.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="6075" y="-2255.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">counters</text>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_models_counters -->
<g id="edge290" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_models_counters</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5582.37,-2348C5600.29,-2342.74 5621.5,-2337.13 5641,-2333.54 5808.27,-2302.71 5859.02,-2346.19 6022,-2297.54 6026.86,-2296.09 6031.79,-2294.18 6036.59,-2292.03"/>
<polygon fill="#e50505" stroke="black" points="6038.12,-2295.17 6045.6,-2287.67 6035.08,-2288.87 6038.12,-2295.17"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge291" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5541,-2267.55C5511.34,-2192.85 5608.8,-2187.36 5629,-2109.57 5637.22,-2077.94 5632.66,-2068.51 5629,-2036.03 5612.23,-1887.17 5605.27,-1848.18 5554,-1707.42 5441.75,-1399.26 5293.78,-1369.8 5217,-1050.95"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_web_views_status_package -->
<g id="edge292" class="edge">
<title>ahriman_models_build_status&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5586.02,-2352.74C5621.64,-2346.31 5672.26,-2337.96 5717,-2333.54 5766.52,-2328.64 6574.21,-2329.91 6612,-2297.54 6653.96,-2261.59 6636,-2230.82 6636,-2175.57 6636,-2175.57 6636,-2175.57 6636,-2071.8 6636,-1782.22 6566.59,-1675.95 6346,-1488.34 6313.5,-1460.7 6295.2,-1471.35 6257,-1452.34 6172.14,-1410.1 6124.92,-1422.75 6074,-1342.8 5994.89,-1218.58 6122.97,-1134.86 6040,-1013.18 6000.83,-955.74 5909.48,-1010.42 5901,-941.41"/>
</g>
<!-- ahriman_models_internal_status -->
<g id="node65" class="node">
<title>ahriman_models_internal_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="6093" cy="-2174.57" rx="56.64" ry="28.98"/>
<text text-anchor="middle" x="6093" y="-2183.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6093" y="-2172.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="6093" y="-2161.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">internal_status</text>
</g>
<!-- ahriman_models_counters&#45;&gt;ahriman_models_internal_status -->
<g id="edge293" class="edge">
<title>ahriman_models_counters&#45;&gt;ahriman_models_internal_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6080.5,-2239.45C6082.1,-2231.25 6083.88,-2222.15 6085.59,-2213.44"/>
<polygon fill="#b42d2d" stroke="black" points="6089.05,-2213.98 6087.54,-2203.49 6082.18,-2212.63 6089.05,-2213.98"/>
</g>
<!-- ahriman_models_counters&#45;&gt;ahriman_web_views_status_status -->
<g id="edge294" class="edge">
<title>ahriman_models_counters&#45;&gt;ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6104.23,-2248.99C6121.37,-2237.25 6142.78,-2221.02 6159,-2203.56 6272.04,-2081.89 6280.28,-2034.5 6363,-1890.5 6483.82,-1680.17 6785.79,-1016.95 6629,-831.87"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_core_status_client -->
<g id="edge295" class="edge">
<title>ahriman_models_internal_status&#45;&gt;ahriman_core_status_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6037.86,-2167.72C5972.05,-2161.03 5858.64,-2150.36 5761,-2145.57 5617.16,-2138.52 3307.56,-2148.82 3169,-2109.57 3158.28,-2106.54 2887.07,-1942.61 2782.55,-1879.3"/>
<polygon fill="#c82323" stroke="black" points="2784.21,-1876.22 2773.84,-1874.03 2780.58,-1882.2 2784.21,-1876.22"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_core_status_web_client -->
<g id="edge296" class="edge">
<title>ahriman_models_internal_status&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6099.96,-2145.69C6114.14,-2089.76 6146.65,-1965.83 6166,-1926.5 6183.39,-1891.15 6224.41,-1893.59 6218,-1854.73"/>
<path fill="none" stroke="black" d="M6218,-1852.73C6210.62,-1816.13 6177.44,-1828.69 6142,-1816.96 6065.38,-1791.59 6038.45,-1812.14 5964,-1780.96 5959.86,-1779.22 5955.7,-1777.14 5951.63,-1774.87"/>
<polygon fill="#c82323" stroke="black" points="5953.3,-1771.79 5942.93,-1769.64 5949.7,-1777.79 5953.3,-1771.79"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_web_views_status_status -->
<g id="edge297" class="edge">
<title>ahriman_models_internal_status&#45;&gt;ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6218,-1852.73C6200.22,-1764.58 6350.82,-1567.22 6394,-1488.34 6457.92,-1371.57 6492.81,-1352.99 6551,-1233.26 6581.34,-1170.83 6589.62,-1154.41 6605,-1086.72 6630.21,-975.78 6690.58,-927.53 6629,-831.87"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_application -->
<g id="edge298" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3532.9,-2360.17C3376.01,-2354.21 2779.87,-2328.11 2602,-2269.55"/>
<path fill="none" stroke="black" d="M2602,-2267.55C2600.98,-2267.21 2461.94,-2204.09 2461,-2203.56 2347.21,-2139.04 2342.2,-2080 2219,-2036.03 2030.45,-1968.75 1953.03,-2081.14 1770,-2000.03 1531.36,-1894.28 1539.31,-1768.76 1342,-1597.88 1303.33,-1564.39 1269.79,-1574.08 1252,-1526.11"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge299" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3626,-2267.55C3673.95,-2177.69 3751.86,-2203.18 3792,-2109.57 3804.88,-2079.54 3792.57,-2068.71 3792,-2036.03 3788.89,-1858 3778,-1813.71 3778,-1635.65 3778,-1635.65 3778,-1635.65 3778,-1232.26 3778,-1151.68 3732.48,-1117.44 3778,-1050.95"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_handlers_status -->
<g id="edge300" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3572.67,-2333.42C3576.18,-2272.63 3584.25,-2124.39 3587,-2000.03 3587.72,-1967.36 3587.54,-1959.18 3587,-1926.5 3586.19,-1877.83 3544.89,-1097.82 3558,-1050.95"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge301" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3522.51,-2361.84C3348.18,-2362.39 2737.09,-2359.49 2238,-2297.54 2028.33,-2271.51 1972.67,-2269.66 1772,-2203.56 1714.22,-2184.52 1706.12,-2163.54 1648,-2145.57 1553.34,-2116.31 1523.89,-2134.51 1428,-2109.57 1412.19,-2105.46 1395.34,-2099.86 1380.12,-2094.31"/>
<polygon fill="#950303" stroke="black" points="3522.66,-2365.34 3532.64,-2361.8 3522.63,-2358.34 3522.66,-2365.34"/>
<polygon fill="#950303" stroke="black" points="1380.96,-2090.89 1370.37,-2090.68 1378.52,-2097.45 1380.96,-2090.89"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_email -->
<g id="edge302" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3533.28,-2357.46C3360.31,-2338.31 2657.2,-2254.74 2792,-2175.57"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_html -->
<g id="edge303" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_report_html</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3600.67,-2343.83C3659.64,-2307.24 3792.39,-2217.59 3868,-2109.57 3927.53,-2024.53 3930.71,-1992.68 3949,-1890.5 3963.34,-1810.37 3967.08,-1785.47 3944,-1707.42 3933.52,-1671.98 3898.31,-1672.42 3902,-1635.65"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge304" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3587.57,-2336.39C3599.14,-2318.24 3614.51,-2292.93 3626,-2269.55"/>
<path fill="none" stroke="black" d="M3626,-2267.55C3650.37,-2217.96 3613.74,-2187.26 3650,-2145.57 3682.1,-2108.67 3715.26,-2139.43 3754,-2109.57 3769.16,-2097.89 3771.96,-2091.97 3778,-2073.8"/>
<path fill="none" stroke="black" d="M3778,-2071.8C3798.01,-2006.24 3750.54,-1934.88 3714.36,-1892.52"/>
<polygon fill="#950303" stroke="black" points="3716.97,-1890.19 3707.75,-1884.96 3711.69,-1894.79 3716.97,-1890.19"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_report -->
<g id="edge305" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3532.5,-2360.45C3482.04,-2357.12 3393.24,-2344.44 3336,-2297.54 3325.24,-2288.72 3324.89,-2283.15 3322,-2269.55"/>
<path fill="none" stroke="black" d="M3322,-2267.55C3300.48,-2166.34 3451.52,-2204.36 3493,-2109.57 3506.1,-2079.63 3502.4,-2067.34 3493,-2036.03 3442.65,-1868.41 3421.78,-1804.28 3276,-1707.42 3221.8,-1671.41 3032.45,-1648.92 2942.35,-1640.02"/>
<polygon fill="#950303" stroke="black" points="2942.43,-1636.51 2932.13,-1639.03 2941.75,-1643.48 2942.43,-1636.51"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_executor -->
<g id="edge306" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2602,-2267.55C2407.15,-2202.79 2427.91,-2009.22 2500,-1816.96 2530.14,-1736.57 2596.86,-1751.8 2627,-1671.42 2638.48,-1640.81 2636.34,-1629.2 2627,-1597.88 2616.1,-1561.34 2561.97,-1559.71 2580,-1526.11"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_repository -->
<g id="edge307" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_repository_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3322,-2267.55C3315.76,-2215.9 3379.88,-2236.67 3420,-2203.56 3507.07,-2131.69 3543.63,-2109.31 3572,-2000.03 3580.21,-1968.4 3573.26,-1959.16 3572,-1926.5 3568.89,-1845.73 3558,-1826.01 3558,-1745.19 3558,-1745.19 3558,-1745.19 3558,-1633.65 3558,-1341.57 3060.07,-1309.42 2892.95,-1306.86"/>
<polygon fill="#950303" stroke="black" points="2892.94,-1303.36 2882.89,-1306.74 2892.85,-1310.36 2892.94,-1303.36"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_update_handler -->
<g id="edge308" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_repository_update_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2602,-2267.55C2501.19,-2228.74 2493.61,-2138.44 2528,-2036.03 2592.7,-1843.36 2691.17,-1840.47 2804,-1671.42 2825.02,-1639.93 2826.17,-1629.49 2847,-1597.88 2868.82,-1564.77 2908.91,-1564.75 2900,-1526.11"/>
<path fill="none" stroke="black" d="M2900,-1524.11C2894.72,-1500.49 2882.26,-1476.82 2869.97,-1457.72"/>
<polygon fill="#950303" stroke="black" points="2872.81,-1455.68 2864.36,-1449.29 2866.98,-1459.55 2872.81,-1455.68"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_client -->
<g id="edge309" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_status_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3532.85,-2361.29C3381.88,-2359.95 2831.89,-2351.39 2778,-2297.54 2671.23,-2190.83 2706.67,-1988.48 2729.28,-1899.09"/>
<polygon fill="#950303" stroke="black" points="2732.71,-1899.82 2731.83,-1889.27 2725.93,-1898.07 2732.71,-1899.82"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_watcher -->
<g id="edge310" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3609.13,-2360.1C3686.46,-2355.78 3865.5,-2338.49 3996,-2269.55"/>
<path fill="none" stroke="black" d="M3996,-2267.55C4078.43,-2224 4073.78,-2180.74 4134,-2109.57 4364.56,-1837.08 4361.2,-1707.43 4643,-1488.34 4672.82,-1465.15 4691.56,-1477.2 4720,-1452.34 4734.23,-1439.9 4733.5,-1432.91 4743,-1416.57"/>
<path fill="none" stroke="black" d="M4743,-1414.57C4750.75,-1397.06 4756.05,-1394.5 4767,-1378.8 4789.53,-1346.49 4814.93,-1346.21 4819,-1307.03"/>
<path fill="none" stroke="black" d="M4819,-1305.03C4819.86,-1296.78 4742.83,-1230.67 4695.35,-1190.77"/>
<polygon fill="#950303" stroke="black" points="4697.34,-1187.87 4687.43,-1184.13 4692.84,-1193.23 4697.34,-1187.87"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_web_client -->
<g id="edge311" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3609.07,-2358.16C3697.98,-2350.04 3926.03,-2327.82 4115,-2297.54 4242.63,-2277.09 4271.57,-2254.21 4400,-2239.56 4550.3,-2222.41 5622.5,-2264.41 5761,-2203.56 5814.23,-2180.17 5822.27,-2159.54 5852,-2109.57 5912.7,-2007.55 5933.84,-1973.43 5932,-1854.73"/>
<path fill="none" stroke="black" d="M5932,-1852.73C5929.66,-1832.06 5925.48,-1809.43 5921.47,-1790.28"/>
<polygon fill="#950303" stroke="black" points="5924.85,-1789.37 5919.33,-1780.32 5918.01,-1790.84 5924.85,-1789.37"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_tree -->
<g id="edge312" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_tree</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3532.83,-2360.39C3367.72,-2355.29 2714.25,-2333.2 2512,-2297.54 2222.98,-2246.59 2154.52,-2210.66 1879,-2109.57 1672.16,-2033.69 1433.94,-1920.24 1340.54,-1874.7"/>
<polygon fill="#950303" stroke="black" points="1341.96,-1871.49 1331.43,-1870.25 1338.88,-1877.78 1341.96,-1871.49"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge313" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_upload_rsync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3609.03,-2358.36C3685.7,-2351.44 3863.99,-2332.73 4010,-2297.54 4135.98,-2267.18 4165.71,-2251.75 4286,-2203.56 4371.8,-2169.18 4469.12,-2122.21 4523.47,-2095.23"/>
<polygon fill="#950303" stroke="black" points="4525.06,-2098.35 4532.46,-2090.76 4521.94,-2092.08 4525.06,-2098.35"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge314" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_upload_s3</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3609.05,-2360.08C3725.93,-2355.65 4090.13,-2342.09 4392,-2333.54 4436.35,-2332.28 5955.62,-2326.78 5989,-2297.54 6030.27,-2261.39 5982.17,-2223.97 6008,-2175.57"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_upload -->
<g id="edge315" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3996,-2267.55C4192.8,-2184.45 4409.38,-2047.67 4496.5,-1990.58"/>
<polygon fill="#950303" stroke="black" points="4498.58,-1993.4 4505.01,-1984.98 4494.73,-1987.55 4498.58,-1993.4"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_models_counters -->
<g id="edge316" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_models_counters</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3609.05,-2360.07C3725.93,-2355.62 4090.13,-2342.02 4392,-2333.54 4573.08,-2328.45 5846.66,-2343.06 6022,-2297.54 6026.97,-2296.25 6032,-2294.42 6036.87,-2292.3"/>
<polygon fill="#950303" stroke="black" points="6038.48,-2295.4 6046,-2287.94 6035.47,-2289.09 6038.48,-2295.4"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_web_views_status_package -->
<g id="edge317" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3609.05,-2360C3725.93,-2355.36 4090.11,-2341.26 4392,-2333.54 4450.63,-2332.04 6458.78,-2336.06 6503,-2297.54 6544.37,-2261.5 6522,-2230.43 6522,-2175.57 6522,-2175.57 6522,-2175.57 6522,-2071.8 6522,-1670.03 6383.73,-1588.56 6297,-1196.26 6279.13,-1115.45 6295.17,-1089.44 6263,-1013.18 6224.66,-922.3 6206.54,-899.78 6135,-831.87"/>
</g>
<!-- ahriman_models_package_description -->
<g id="node67" class="node">
<title>ahriman_models_package_description</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c04040" stroke="black" cx="3919" cy="-2456.51" rx="74.91" ry="28.98"/>
<text text-anchor="middle" x="3919" y="-2465.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3919" y="-2454.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3919" y="-2443.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">package_description</text>
</g>
<!-- ahriman_models_package_description&#45;&gt;ahriman_models_package -->
<g id="edge318" class="edge">
<title>ahriman_models_package_description&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3862.66,-2437.21C3851.86,-2433.87 3840.61,-2430.5 3830,-2427.52 3756,-2406.77 3669.11,-2386.03 3617.14,-2374.01"/>
<polygon fill="#c04040" stroke="black" points="3617.75,-2370.56 3607.22,-2371.73 3616.18,-2377.38 3617.75,-2370.56"/>
</g>
<!-- ahriman_models_package_source&#45;&gt;ahriman_application_ahriman -->
<g id="edge319" class="edge">
<title>ahriman_models_package_source&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5883.16,-2360.31C6093.91,-2355.81 6773.17,-2338.26 6862,-2297.54 7085.06,-2195.3 7131.8,-2113.12 7235,-1890.5 7336.02,-1672.59 7438.82,-1071.64 7453,-831.87"/>
</g>
<!-- ahriman_models_package_source&#45;&gt;ahriman_application_application -->
<g id="edge320" class="edge">
<title>ahriman_models_package_source&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5761.51,-2353.65C5565.53,-2327.56 4941.35,-2243.39 4742,-2203.56 4639.47,-2183.07 4617.58,-2159.86 4514,-2145.57 4356.55,-2123.85 3230.19,-2171.94 3084,-2109.57 2914.14,-2037.11 2954.32,-1899.26 2789,-1816.96 2688.11,-1766.73 2645.82,-1813.74 2538,-1780.96 2430.44,-1748.25 2406.9,-1728.41 2310,-1671.42 2261.2,-1642.72 2254.59,-1626.93 2206,-1597.88 1831.81,-1374.17 1572.36,-1521.53 1328,-1160.49"/>
</g>
<!-- ahriman_models_package_source&#45;&gt;ahriman_core_spawn -->
<g id="edge321" class="edge">
<title>ahriman_models_package_source&#45;&gt;ahriman_core_spawn</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5883.02,-2359.9C6075,-2354.48 6651.12,-2335.23 6726,-2297.54 6740.64,-2290.17 6737.9,-2280.6 6750,-2269.55"/>
<path fill="none" stroke="black" d="M6750,-2267.55C6764.97,-2253.87 6772.04,-2232.45 6775.33,-2213.73"/>
<polygon fill="#c82323" stroke="black" points="6778.82,-2214.07 6776.8,-2203.67 6771.89,-2213.06 6778.82,-2214.07"/>
</g>
<!-- ahriman_models_report_settings&#45;&gt;ahriman_core_report_report -->
<g id="edge322" class="edge">
<title>ahriman_models_report_settings&#45;&gt;ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2046.23,-2333.6C2035.21,-2271.89 2018.37,-2122.52 2092,-2036.03 2129.2,-1992.34 2163.43,-2023.04 2216,-2000.03 2274,-1974.65 2283.73,-1959.1 2338,-1926.5 2500.52,-1828.88 2533.31,-1789.92 2704,-1707.42 2751.85,-1684.29 2809.22,-1663.51 2848.31,-1650.34"/>
<polygon fill="#b03a3a" stroke="black" points="2849.46,-1653.65 2857.84,-1647.16 2847.24,-1647.01 2849.46,-1653.65"/>
</g>
<!-- ahriman_models_repository_paths -->
<g id="node70" class="node">
<title>ahriman_models_repository_paths</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="1649" cy="-2456.51" rx="62.87" ry="28.98"/>
<text text-anchor="middle" x="1649" y="-2465.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1649" y="-2454.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="1649" y="-2443.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository_paths</text>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge323" class="edge">
<title>ahriman_models_repository_paths&#45;&gt;ahriman_application_handlers_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1644.8,-2427.52C1639.8,-2391.17 1632.31,-2325.72 1634,-2269.55"/>
<path fill="none" stroke="black" d="M1634,-2267.55C1634.4,-2239.57 1509.52,-1808.39 1504,-1780.96 1495.92,-1740.83 1427.2,-1084.68 1404,-1050.95"/>
<path fill="none" stroke="black" d="M1404,-1048.95C1381.06,-1020.31 1350.12,-992.79 1325.41,-972.75"/>
<polygon fill="#f91010" stroke="black" points="1327.28,-969.77 1317.28,-966.26 1322.91,-975.24 1327.28,-969.77"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge324" class="edge">
<title>ahriman_models_repository_paths&#45;&gt;ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1634,-2267.55C1638.38,-2226.9 1619.68,-2213.86 1634,-2175.57"/>
<path fill="none" stroke="black" d="M1634,-2173.57C1634.58,-2172.03 1532.23,-1233.89 1532,-1232.26 1513.7,-1102.23 1552.46,-1050.93 1480,-941.41"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge325" class="edge">
<title>ahriman_models_repository_paths&#45;&gt;ahriman_core_alpm_repo</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1634,-2267.55C1634,-2208.79 1800.22,-2128.41 1881.84,-2092.48"/>
<polygon fill="#f91010" stroke="black" points="1883.59,-2095.53 1891.36,-2088.32 1880.79,-2089.12 1883.59,-2095.53"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge326" class="edge">
<title>ahriman_models_repository_paths&#45;&gt;ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1627.01,-2429.28C1571.56,-2363.13 1425.86,-2189.34 1360.97,-2111.94"/>
<polygon fill="#f91010" stroke="black" points="1363.31,-2109.29 1354.21,-2103.87 1357.95,-2113.79 1363.31,-2109.29"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_repository_properties -->
<g id="edge327" class="edge">
<title>ahriman_models_repository_paths&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1634,-2173.57C1654.32,-2121.21 1797.76,-2064.78 1846,-2036.03 1874.7,-2018.93 1889.09,-2024.36 1912,-2000.03 2013.9,-1891.81 1944.6,-1780.58 2074,-1707.42 2181.2,-1646.8 2506.81,-1698.26 2627,-1671.42 2641.67,-1668.14 2657.08,-1662.85 2670.97,-1657.33"/>
<polygon fill="#f91010" stroke="black" points="2672.39,-1660.53 2680.31,-1653.5 2669.73,-1654.06 2672.39,-1660.53"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_models_package -->
<g id="edge328" class="edge">
<title>ahriman_models_repository_paths&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1694.34,-2436.37C1704.58,-2432.8 1715.53,-2429.55 1726,-2427.52 1816.67,-2409.93 3240.25,-2372.13 3522.56,-2364.78"/>
<polygon fill="#f91010" stroke="black" points="3522.97,-2368.27 3532.88,-2364.51 3522.79,-2361.27 3522.97,-2368.27"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_application_ahriman -->
<g id="edge329" class="edge">
<title>ahriman_models_sign_settings&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2244.23,-2353.5C2209.21,-2347.86 2161.25,-2340.18 2119,-2333.54 1761.85,-2277.39 1619.49,-2400.03 1316,-2203.56 1115.38,-2073.68 722,-1546.02 722,-1307.03 722,-1307.03 722,-1307.03 722,-1158.49 722,-895.29 228,-1095.08 228,-831.87 228,-831.87 228,-831.87 228,-223.74 228,-109.59 1106.71,-47.74 1340.46,-33.3"/>
<polygon fill="#c82323" stroke="black" points="1340.69,-36.8 1350.45,-32.69 1340.26,-29.81 1340.69,-36.8"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge330" class="edge">
<title>ahriman_models_sign_settings&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2345.73,-2357.4C2398.22,-2351.17 2480.07,-2335.69 2540,-2297.54 2568.22,-2279.57 2558.82,-2255.92 2588,-2239.56 2632.31,-2214.72 3449.24,-2135.36 3493,-2109.57 3576.21,-2060.54 3632.68,-1957.81 3659.69,-1898.85"/>
<polygon fill="#c82323" stroke="black" points="3663.01,-1899.99 3663.92,-1889.43 3656.63,-1897.12 3663.01,-1899.99"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge331" class="edge">
<title>ahriman_models_sign_settings&#45;&gt;ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2274.89,-2335.19C2263.92,-2317.53 2252.25,-2293.25 2252,-2269.55"/>
</g>
<!-- ahriman_models_smtp_ssl_settings -->
<g id="node72" class="node">
<title>ahriman_models_smtp_ssl_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="3246" cy="-2072.8" rx="67.76" ry="28.98"/>
<text text-anchor="middle" x="3246" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3246" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3246" y="-2059.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">smtp_ssl_settings</text>
</g>
<!-- ahriman_models_smtp_ssl_settings&#45;&gt;ahriman_core_report_email -->
<g id="edge332" class="edge">
<title>ahriman_models_smtp_ssl_settings&#45;&gt;ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3249.58,-2043.54C3251.97,-2021.88 3254.57,-1991.22 3254,-1964.27"/>
</g>
<!-- ahriman_models_upload_settings&#45;&gt;ahriman_core_upload_upload -->
<g id="edge333" class="edge">
<title>ahriman_models_upload_settings&#45;&gt;ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4873.73,-2333.51C4861.27,-2294.78 4834.7,-2224.17 4794,-2175.57"/>
</g>
<!-- ahriman_models_user -->
<g id="node74" class="node">
<title>ahriman_models_user</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#af1313" stroke="black" cx="5582" cy="-2072.8" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="5582" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5582" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5582" y="-2059.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user</text>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_application_handlers_user -->
<g id="edge334" class="edge">
<title>ahriman_models_user&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5544.85,-2065.55C5393.11,-2040.08 4819.83,-1944.71 4637,-1926.5 4463.89,-1909.25 4020.7,-1943.47 3855,-1890.5 3797.57,-1872.13 3796.74,-1839.94 3741,-1816.96 3686.81,-1794.62 3283.14,-1714.87 3225,-1707.42 3138.28,-1696.3 2505.1,-1728.64 2439,-1671.42 2351.59,-1595.75 2341,-1276.1 2341,-1160.49 2341,-1160.49 2341,-1160.49 2341,-1048.95 2341,-819.66 2069.4,-956.44 1858,-867.64 1853.87,-865.91 1849.71,-863.86 1845.63,-861.65"/>
<polygon fill="#af1313" stroke="black" points="1847.27,-858.55 1836.87,-856.56 1843.76,-864.6 1847.27,-858.55"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_auth_auth -->
<g id="edge335" class="edge">
<title>ahriman_models_user&#45;&gt;ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5561.44,-2048.23C5545.4,-2026.94 5527.06,-1994.41 5535,-1964.27"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge336" class="edge">
<title>ahriman_models_user&#45;&gt;ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5547.27,-2060.75C5521.69,-2052.95 5485.96,-2042.73 5454,-2036.03 5341.97,-2012.58 5293.43,-2064.72 5199,-2000.03 5183.97,-1989.74 5189.18,-1979.37 5179,-1964.27"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_status_web_client -->
<g id="edge337" class="edge">
<title>ahriman_models_user&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5601.8,-2047.94C5626.5,-2018.56 5670.42,-1967.5 5711,-1926.5 5765.04,-1871.89 5831.89,-1812.87 5872.97,-1777.48"/>
<polygon fill="#af1313" stroke="black" points="5875.28,-1780.11 5880.59,-1770.94 5870.72,-1774.8 5875.28,-1780.11"/>
</g>
<!-- ahriman_models_user_access -->
<g id="node75" class="node">
<title>ahriman_models_user_access</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="5701" cy="-2174.57" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="5701" y="-2183.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5701" y="-2172.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5701" y="-2161.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user_access</text>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_application_ahriman -->
<g id="edge338" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6066,-2071.8C6149.19,-2041.29 6177.27,-2047.65 6252,-2000.03 6469.21,-1861.64 6951.79,-1415.47 7087,-1196.26 7113.76,-1152.88 7106.79,-1135.68 7121,-1086.72 7200.74,-812.04 7211.82,-740.9 7289,-465.49 7309.98,-390.64 7310.78,-370.12 7341,-298.5"/>
<path fill="none" stroke="black" d="M7341,-297.5C7344.18,-265.77 7357.48,-253.05 7341,-225.74"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_application_handlers_user -->
<g id="edge339" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5650.05,-2171.99C5505.96,-2167.55 5083.21,-2154.69 4732,-2145.57 4645.17,-2143.32 3245.99,-2149.77 3169,-2109.57 3026.18,-2035 3088.04,-1907.84 2955,-1816.96 2798.19,-1709.84 2726.19,-1753.65 2542,-1707.42 2474.66,-1690.52 2443.39,-1715.79 2390,-1671.42 2199.04,-1512.71 2240.32,-1396.77 2164,-1160.49"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_core_auth_auth -->
<g id="edge340" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5722.17,-2147.94C5736.52,-2128.82 5754.24,-2101.36 5762,-2073.8"/>
<path fill="none" stroke="black" d="M5762,-2071.8C5775.7,-2023.15 5747.72,-2009.42 5725,-1964.27"/>
<path fill="none" stroke="black" d="M5725,-1962.27C5702.82,-1918.18 5599.05,-1824.61 5543.05,-1775.99"/>
<polygon fill="#f91010" stroke="black" points="5545.34,-1773.33 5535.48,-1769.43 5540.75,-1778.62 5545.34,-1773.33"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge341" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5659.37,-2157.56C5567.86,-2122.4 5356,-2041.11 5340,-2036.03 5278.35,-2016.49 5250.27,-2039.46 5199,-2000.03 5184.56,-1988.93 5189.18,-1979.37 5179,-1964.27"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_models_user -->
<g id="edge342" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_models_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5673.1,-2150.18C5655.82,-2135.69 5633.54,-2117.01 5615.34,-2101.75"/>
<polygon fill="#f91010" stroke="black" points="5617.2,-2098.75 5607.29,-2095.01 5612.71,-2104.11 5617.2,-2098.75"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge343" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5748.32,-2163.74C5801.64,-2152.29 5890.72,-2132.06 5966,-2109.57 6011.23,-2096.07 6021.82,-2090.43 6066,-2073.8"/>
<path fill="none" stroke="black" d="M6066,-2071.8C6164.36,-2034.8 6408,-1850.28 6408,-1745.19 6408,-1745.19 6408,-1745.19 6408,-1633.65 6408,-1450.8 6500.77,-1423.48 6599,-1269.26 6697.44,-1114.71 6827.43,-1123.38 6849,-941.41"/>
<path fill="none" stroke="black" d="M6849,-939.41C6850.36,-875.41 6829.77,-803.71 6814.09,-758.85"/>
<polygon fill="#f91010" stroke="black" points="6817.39,-757.67 6810.73,-749.42 6810.8,-760.02 6817.39,-757.67"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_base -->
<g id="edge344" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5687,-1852.73C5665.55,-1790.89 5674.69,-1771.82 5663,-1707.42 5624.57,-1495.6 5651.32,-1431.17 5569,-1232.26 5554.33,-1196.8 5541.23,-1193.1 5521,-1160.49"/>
<path fill="none" stroke="black" d="M5521,-1158.49C5495.18,-1105.97 5457.37,-1108.16 5445,-1050.95"/>
<path fill="none" stroke="black" d="M5445,-1048.95C5434.76,-1001.59 5448.62,-984.78 5427,-941.41"/>
<path fill="none" stroke="black" d="M5427,-939.41C5417.48,-920.32 5411.7,-897.44 5408.21,-877.71"/>
<polygon fill="#f91010" stroke="black" points="5411.64,-877.02 5406.58,-867.71 5404.73,-878.14 5411.64,-877.02"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_index -->
<g id="edge345" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5065,-1962.27C4986.55,-1780.15 4971,-1724.41 4971,-1526.11 4971,-1526.11 4971,-1526.11 4971,-1232.26 4971,-1140.81 4947.12,-868.98 4937.22,-760.25"/>
<polygon fill="#f91010" stroke="black" points="4940.7,-759.89 4936.31,-750.25 4933.73,-760.53 4940.7,-759.89"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_service_add -->
<g id="edge346" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_service_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5521,-1158.49C5492.12,-1099.75 5523.21,-1074.91 5545,-1013.18 5563.62,-960.43 5572.54,-947.71 5607,-903.64 5621.33,-885.32 5632,-886.94 5645,-867.64 5654.54,-853.48 5649.49,-846.05 5659,-831.87"/>
<path fill="none" stroke="black" d="M5659,-829.87C5673.19,-805.34 5690.33,-778.78 5704.65,-757.34"/>
<polygon fill="#f91010" stroke="black" points="5707.72,-759.04 5710.39,-748.78 5701.91,-755.14 5707.72,-759.04"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge347" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5650.87,-2169.15C5517.01,-2157.2 5159.95,-2124.11 5139,-2109.57 5079.45,-2068.26 5097.72,-2028.93 5065,-1964.27"/>
<path fill="none" stroke="black" d="M5065,-1962.27C5022.63,-1896.91 4624.92,-1518.61 4584,-1452.34 4522.59,-1352.88 4400.97,-1042.88 4459,-941.41"/>
<path fill="none" stroke="black" d="M4459,-939.41C4505.33,-806.9 4680.96,-748.06 4772.59,-725.93"/>
<polygon fill="#f91010" stroke="black" points="4773.6,-729.29 4782.53,-723.59 4772,-722.47 4773.6,-729.29"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge348" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_service_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5762,-2071.8C5801.64,-1931.09 5810.29,-1891.09 5801,-1745.19"/>
<path fill="none" stroke="black" d="M5801,-1743.19C5777.2,-1416.33 5629.74,-1333.93 5697,-1013.18 5716.96,-917.99 5769.13,-816.06 5801.29,-759.32"/>
<polygon fill="#f91010" stroke="black" points="5804.35,-761.03 5806.27,-750.61 5798.27,-757.55 5804.35,-761.03"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_service_search -->
<g id="edge349" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5734.4,-2152.24C5749.19,-2141.19 5765.57,-2126.47 5776,-2109.57 5871.82,-1954.35 5772.87,-1868.75 5858,-1707.42 5932.81,-1565.64 6008.6,-1573.98 6113,-1452.34 6204.95,-1345.2 6246.21,-1326.39 6301,-1196.26 6326.4,-1135.93 6319.39,-1116.17 6325,-1050.95"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge350" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5725,-1962.27C5703.45,-1916.38 5705.49,-1901.92 5687,-1854.73"/>
<path fill="none" stroke="black" d="M5687,-1852.73C5634.52,-1718.79 5600.75,-1694.49 5545,-1561.88 5438.1,-1307.62 5383.91,-1248.98 5337,-977.18 5323.09,-896.57 5327.74,-870.87 5356,-794.1 5360.55,-781.75 5367.01,-769.14 5373.69,-757.71"/>
<polygon fill="#f91010" stroke="black" points="5376.88,-759.2 5379.06,-748.83 5370.89,-755.57 5376.88,-759.2"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_status_package -->
<g id="edge351" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5801,-1743.19C5803.68,-1508.3 6060.8,-1561.7 6146,-1342.8 6166.6,-1289.88 6174.67,-872.5 6135,-831.87"/>
<path fill="none" stroke="black" d="M6135,-829.87C6077,-774.82 6038.67,-799.09 5970,-758.1 5966.09,-755.77 5962.22,-753.09 5958.47,-750.22"/>
<polygon fill="#f91010" stroke="black" points="5960.45,-747.32 5950.48,-743.73 5956.03,-752.75 5960.45,-747.32"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge352" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_status_packages</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5445,-1048.95C5433.56,-996.05 5467.45,-846.62 5487.45,-766.62"/>
<polygon fill="#f91010" stroke="black" points="5490.89,-767.3 5489.93,-756.75 5484.1,-765.59 5490.89,-767.3"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_status_status -->
<g id="edge353" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5738.74,-2154.99C5759.82,-2143.57 5785.82,-2127.68 5806,-2109.57 5900.41,-2024.85 6430.89,-1307.96 6491,-1196.26 6532.03,-1120.01 6677.95,-903.29 6629,-831.87"/>
<path fill="none" stroke="black" d="M6629,-829.87C6574.55,-765.6 6477.09,-735.67 6418.8,-722.93"/>
<polygon fill="#f91010" stroke="black" points="6419.25,-719.45 6408.74,-720.81 6417.81,-726.3 6419.25,-719.45"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_user_login -->
<g id="edge354" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5651.11,-2168.75C5524.92,-2156.4 5201.63,-2123.57 5183,-2109.57 5140.64,-2077.76 5150.01,-2051.12 5136,-2000.03 5097.04,-1857.98 5108.36,-1817.91 5093,-1671.42 5062.4,-1379.56 5106.08,-1299.33 5041,-1013.18 5036.21,-992.13 4957.93,-849.06 4971,-831.87"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge355" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5650.73,-2169.18C5508.33,-2156.65 5110.85,-2120.87 5085,-2109.57 4814.56,-1991.38 4759.87,-1909.91 4586,-1671.42 4481.81,-1528.51 4253.05,-1117.55 4269,-941.41"/>
</g>
<!-- ahriman_models_user_identity -->
<g id="node76" class="node">
<title>ahriman_models_user_identity</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#ce3b3b" stroke="black" cx="5980" cy="-1049.95" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="5980" y="-1058.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5980" y="-1047.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5980" y="-1036.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user_identity</text>
</g>
<!-- ahriman_models_user_identity&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge356" class="edge">
<title>ahriman_models_user_identity&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6020.52,-1032.37C6155.36,-977.18 6589.14,-799.63 6742.59,-736.83"/>
<polygon fill="#ce3b3b" stroke="black" points="6744.36,-739.89 6752.29,-732.86 6741.7,-733.41 6744.36,-739.89"/>
</g>
<!-- ahriman_models_user_identity&#45;&gt;ahriman_web_views_user_login -->
<g id="edge357" class="edge">
<title>ahriman_models_user_identity&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5950.33,-1026.13C5898.48,-986.32 5796.01,-907.96 5787,-903.64 5728.28,-875.51 5705.17,-892.51 5645,-867.64 5585.78,-843.18 5580.62,-817.58 5521,-794.1 5451.16,-766.61 5422.54,-792.84 5356,-758.1 5352.07,-756.05 5348.22,-753.58 5344.52,-750.87"/>
<polygon fill="#ce3b3b" stroke="black" points="5346.7,-748.14 5336.71,-744.63 5342.34,-753.61 5346.7,-748.14"/>
</g>
<!-- ahriman_version -->
<g id="node77" class="node">
<title>ahriman_version</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e72222" stroke="black" cx="6011" cy="-1744.19" rx="38.37" ry="21.43"/>
<text text-anchor="middle" x="6011" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6011" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">version</text>
</g>
<!-- ahriman_version&#45;&gt;ahriman_application_ahriman -->
<g id="edge358" class="edge">
<title>ahriman_version&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6041.96,-1731.64C6151.81,-1689.85 6530.67,-1538.54 6800,-1342.8 6874.62,-1288.57 6897.96,-1274.4 6947,-1196.26 6974.39,-1152.61 6969.76,-1135.95 6985,-1086.72 7089.85,-747.97 7062.97,-635.16 7251,-334.5 7284.27,-281.31 7313.98,-282.37 7341,-225.74"/>
<path fill="none" stroke="black" d="M7341,-223.74C7371.51,-71.06 2065.05,-34.08 1454.11,-30.33"/>
<polygon fill="#e72222" stroke="black" points="1453.82,-26.82 1443.8,-30.26 1453.78,-33.82 1453.82,-26.82"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_application_lock -->
<g id="edge359" class="edge">
<title>ahriman_version&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5992.99,-1725.12C5984.85,-1718.2 5974.67,-1711.08 5964,-1707.42 5778.75,-1643.89 2632.41,-1702.23 2439,-1671.42 2331.76,-1654.33 2311.08,-1625.25 2206,-1597.88 2103.79,-1571.25 1982.61,-1548.06 1913.87,-1535.67"/>
<polygon fill="#e72222" stroke="black" points="1914.16,-1532.17 1903.7,-1533.85 1912.93,-1539.06 1914.16,-1532.17"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_web_views_index -->
<g id="edge360" class="edge">
<title>ahriman_version&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5990.59,-1726.22C5982.56,-1719.93 5973.1,-1712.98 5964,-1707.42 5932.46,-1688.12 5920.71,-1690.43 5889,-1671.42 5582.71,-1487.77 5485.34,-1456.72 5241,-1196.26 5107,-1053.42 4996.59,-844.61 4953.01,-756.38"/>
<polygon fill="#e72222" stroke="black" points="4956.07,-754.66 4948.52,-747.22 4949.78,-757.74 4956.07,-754.66"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_web_views_status_status -->
<g id="edge361" class="edge">
<title>ahriman_version&#45;&gt;ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6030.73,-1725.61C6087.55,-1673.65 6252.03,-1513.71 6323,-1342.8 6404.78,-1145.84 6384.17,-1080.83 6390,-867.64 6390.89,-834.97 6393.82,-826.56 6390,-794.1 6388.91,-784.89 6387.14,-775.19 6385.11,-765.86"/>
<polygon fill="#e72222" stroke="black" points="6388.48,-764.88 6382.82,-755.92 6381.66,-766.45 6388.48,-764.88"/>
</g>
<!-- ahriman_web -->
<g id="node78" class="node">
<title>ahriman_web</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="6074" cy="-400.5" rx="41.59" ry="18"/>
<text text-anchor="middle" x="6074" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.web</text>
</g>
<!-- ahriman_web&#45;&gt;ahriman_application_handlers_web -->
<g id="edge362" class="edge">
<title>ahriman_web&#45;&gt;ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6098.87,-385.7C6124.35,-371.16 6161.66,-348.57 6172,-335.5"/>
</g>
<!-- ahriman_web_middlewares -->
<g id="node79" class="node">
<title>ahriman_web_middlewares</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="6211" cy="-494.48" rx="50.41" ry="28.98"/>
<text text-anchor="middle" x="6211" y="-502.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6211" y="-491.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="6211" y="-480.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">middlewares</text>
</g>
<!-- ahriman_web_middlewares&#45;&gt;ahriman_web_web -->
<g id="edge363" class="edge">
<title>ahriman_web_middlewares&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6199.3,-465.88C6195.57,-457.08 6191.38,-447.21 6187.43,-437.89"/>
<polygon fill="#c82323" stroke="black" points="6190.55,-436.28 6183.42,-428.44 6184.11,-439.01 6190.55,-436.28"/>
</g>
<!-- ahriman_web_middlewares_auth_handler&#45;&gt;ahriman_web_web -->
<g id="edge364" class="edge">
<title>ahriman_web_middlewares_auth_handler&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6803.88,-676.87C6813.89,-619.58 6828.1,-511.85 6797,-495.48"/>
<path fill="none" stroke="black" d="M6797,-493.48C6568.64,-377.23 6468.61,-505.83 6224,-429.49 6219.35,-428.04 6214.64,-426.16 6210.04,-424.07"/>
<polygon fill="#732626" stroke="black" points="6211.35,-420.81 6200.84,-419.53 6208.26,-427.09 6211.35,-420.81"/>
</g>
<!-- ahriman_web_middlewares_exception_handler -->
<g id="node81" class="node">
<title>ahriman_web_middlewares_exception_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="6892" cy="-596.24" rx="67.35" ry="36.54"/>
<text text-anchor="middle" x="6892" y="-610.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6892" y="-599.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="6892" y="-588.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">middlewares.</text>
<text text-anchor="middle" x="6892" y="-577.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">exception_handler</text>
</g>
<!-- ahriman_web_middlewares_exception_handler&#45;&gt;ahriman_web_web -->
<g id="edge365" class="edge">
<title>ahriman_web_middlewares_exception_handler&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6869.04,-561.48C6851.9,-539.04 6826.42,-510.96 6797,-495.48"/>
</g>
<!-- ahriman_web_routes -->
<g id="node82" class="node">
<title>ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5994" cy="-494.48" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="5994" y="-502.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5994" y="-491.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5994" y="-480.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">routes</text>
</g>
<!-- ahriman_web_routes&#45;&gt;ahriman_web_web -->
<g id="edge366" class="edge">
<title>ahriman_web_routes&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6026.14,-478.69C6052.89,-466.16 6091.83,-447.43 6125,-429.49 6128.02,-427.86 6131.11,-426.13 6134.21,-424.37"/>
<polygon fill="#732626" stroke="black" points="6135.98,-427.39 6142.88,-419.34 6132.47,-421.33 6135.98,-427.39"/>
</g>
<!-- ahriman_web_views -->
<g id="node83" class="node">
<title>ahriman_web_views</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="5856" cy="-596.24" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="5856" y="-604.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5856" y="-593.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5856" y="-582.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views</text>
</g>
<!-- ahriman_web_views&#45;&gt;ahriman_web_routes -->
<g id="edge367" class="edge">
<title>ahriman_web_views&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5883.26,-575.53C5904.81,-559.95 5935.06,-538.09 5958.49,-521.15"/>
<polygon fill="#f91010" stroke="black" points="5960.74,-523.84 5966.79,-515.15 5956.64,-518.17 5960.74,-523.84"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_index -->
<g id="edge368" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5364.84,-826.22C5274.07,-817.07 5047.82,-791.51 4980,-758.1 4974.76,-755.52 4969.69,-752.17 4964.94,-748.46"/>
<polygon fill="#950303" stroke="black" points="4967.18,-745.77 4957.28,-741.98 4962.65,-751.11 4967.18,-745.77"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_add -->
<g id="edge369" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_service_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5438.74,-817.42C5499,-796.43 5620.78,-754 5687.57,-730.73"/>
<polygon fill="#950303" stroke="black" points="5689.11,-733.9 5697.41,-727.31 5686.81,-727.29 5689.11,-733.9"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge370" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5364.84,-827.11C5260.61,-819.15 4973.08,-794.43 4886,-758.1 4880.97,-756.01 4876,-753.35 4871.2,-750.4"/>
<polygon fill="#950303" stroke="black" points="4873.07,-747.43 4862.8,-744.8 4869.19,-753.26 4873.07,-747.43"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge371" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_service_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5440.15,-821.38C5473.73,-813.82 5524.56,-802.66 5569,-794.1 5662.85,-776.03 5695.27,-800.34 5781,-758.1 5784.87,-756.2 5788.65,-753.87 5792.28,-751.29"/>
<polygon fill="#950303" stroke="black" points="5794.72,-753.82 5800.42,-744.89 5790.4,-748.31 5794.72,-753.82"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_search -->
<g id="edge372" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5439.68,-820.62C5473.16,-812.49 5524.12,-800.93 5569,-794.1 5745.47,-767.25 5791.68,-778.61 5969,-758.1 6061.3,-747.43 6168.65,-731.44 6229.13,-722.09"/>
<polygon fill="#950303" stroke="black" points="6229.8,-725.53 6239.15,-720.54 6228.73,-718.61 6229.8,-725.53"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge373" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5403,-794.02C5403,-785.94 5403,-777.19 5403,-768.55"/>
<polygon fill="#950303" stroke="black" points="5406.5,-768.51 5403,-758.51 5399.5,-768.51 5406.5,-768.51"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_package -->
<g id="edge374" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5440.06,-820.83C5473.57,-812.91 5524.36,-801.52 5569,-794.1 5704.09,-771.66 5750.65,-815.46 5875,-758.1 5879.09,-756.22 5883.06,-753.84 5886.84,-751.17"/>
<polygon fill="#950303" stroke="black" points="5889.09,-753.86 5894.82,-744.95 5884.78,-748.34 5889.09,-753.86"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge375" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_status_packages</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5426.72,-801.96C5438.69,-787.88 5453.42,-770.55 5466.6,-755.04"/>
<polygon fill="#950303" stroke="black" points="5469.52,-757.01 5473.33,-747.12 5464.18,-752.47 5469.52,-757.01"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_status -->
<g id="edge376" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5439.62,-820.17C5473.05,-811.74 5523.98,-799.99 5569,-794.1 5735.55,-772.34 6169.13,-823.12 6324,-758.1 6328.15,-756.36 6332.16,-754.08 6335.98,-751.48"/>
<polygon fill="#950303" stroke="black" points="6338.18,-754.2 6343.99,-745.34 6333.92,-748.64 6338.18,-754.2"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_user_login -->
<g id="edge377" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5379.76,-801.37C5368.19,-787.17 5354.01,-769.77 5341.38,-754.29"/>
<polygon fill="#950303" stroke="black" points="5343.98,-751.93 5334.95,-746.39 5338.55,-756.35 5343.98,-751.93"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge378" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5365,-825.63C5266.95,-814.66 4997.41,-784.38 4773,-758.1 4660.57,-744.94 4528.58,-728.92 4459.21,-720.45"/>
<polygon fill="#950303" stroke="black" points="4459.39,-716.95 4449.04,-719.21 4458.54,-723.9 4459.39,-716.95"/>
</g>
<!-- ahriman_web_views_index&#45;&gt;ahriman_web_routes -->
<g id="edge379" class="edge">
<title>ahriman_web_views_index&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4958.75,-686.33C4965.37,-680.26 4972.7,-674.1 4980,-669.01 5037.67,-628.78 5059.85,-631.95 5121,-597.24"/>
</g>
<!-- ahriman_web_views_service -->
<g id="node86" class="node">
<title>ahriman_web_views_service</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="5027" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5027" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5027" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5027" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5027" y="-694.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service</text>
</g>
<!-- ahriman_web_views_service&#45;&gt;ahriman_web_routes -->
<g id="edge380" class="edge">
<title>ahriman_web_views_service&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5044.03,-680.52C5060.12,-653.64 5086.86,-616.62 5121,-597.24"/>
</g>
<!-- ahriman_web_views_service_add&#45;&gt;ahriman_web_routes -->
<g id="edge381" class="edge">
<title>ahriman_web_views_service_add&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5761.92,-682.87C5767.84,-677.72 5774.33,-672.8 5781,-669.01 5830.14,-641.06 5859.21,-668.76 5903,-633.01 5916.94,-621.62 5910.11,-610.76 5922,-597.24"/>
</g>
<!-- ahriman_web_views_service_reload_auth&#45;&gt;ahriman_web_routes -->
<g id="edge382" class="edge">
<title>ahriman_web_views_service_reload_auth&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4863.57,-683.08C4870.69,-677.91 4878.36,-672.93 4886,-669.01 4983.15,-619.12 5026.02,-651.14 5121,-597.24"/>
</g>
<!-- ahriman_web_views_service_remove&#45;&gt;ahriman_web_routes -->
<g id="edge383" class="edge">
<title>ahriman_web_views_service_remove&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5857.41,-685.09C5872.13,-670.46 5889.62,-651.67 5903,-633.01 5913.49,-618.38 5910.11,-610.76 5922,-597.24"/>
</g>
<!-- ahriman_web_views_service_search&#45;&gt;ahriman_web_routes -->
<g id="edge384" class="edge">
<title>ahriman_web_views_service_search&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6245.36,-688.29C6191.86,-647.25 6083.93,-564.46 6028.53,-521.97"/>
<polygon fill="#822b2b" stroke="black" points="6030.5,-519.06 6020.43,-515.75 6026.24,-524.62 6030.5,-519.06"/>
</g>
<!-- ahriman_web_views_status -->
<g id="node91" class="node">
<title>ahriman_web_views_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="5121" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5121" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5121" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5121" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5121" y="-694.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status</text>
</g>
<!-- ahriman_web_views_status&#45;&gt;ahriman_web_routes -->
<g id="edge385" class="edge">
<title>ahriman_web_views_status&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5108.06,-678.92C5099.56,-650.6 5094.36,-612.36 5121,-597.24"/>
</g>
<!-- ahriman_web_views_status_ahriman&#45;&gt;ahriman_web_routes -->
<g id="edge386" class="edge">
<title>ahriman_web_views_status_ahriman&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5375.05,-682.92C5369.14,-677.76 5362.65,-672.84 5356,-669.01 5261.33,-614.57 5026.02,-651.14 5121,-597.24"/>
</g>
<!-- ahriman_web_views_status_package&#45;&gt;ahriman_web_routes -->
<g id="edge387" class="edge">
<title>ahriman_web_views_status_package&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5909.67,-671.29C5905.09,-646.9 5904.62,-617.01 5922,-597.24"/>
</g>
<!-- ahriman_web_views_status_packages&#45;&gt;ahriman_web_routes -->
<g id="edge388" class="edge">
<title>ahriman_web_views_status_packages&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5541.47,-702.28C5579.04,-692.94 5636.59,-679.1 5687,-669.01 5782.43,-649.91 5824.01,-689.86 5903,-633.01 5917.61,-622.49 5910.11,-610.76 5922,-597.24"/>
<path fill="none" stroke="black" d="M5922,-595.24C5940.18,-574.56 5958.31,-549.41 5971.83,-529.53"/>
<polygon fill="#8a2e2e" stroke="black" points="5974.83,-531.34 5977.51,-521.09 5969.03,-527.43 5974.83,-531.34"/>
</g>
<!-- ahriman_web_views_status_status&#45;&gt;ahriman_web_routes -->
<g id="edge389" class="edge">
<title>ahriman_web_views_status_status&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6342.27,-684.12C6336.42,-678.86 6330.16,-673.58 6324,-669.01 6229.33,-598.73 6102.31,-540.61 6036.91,-512.92"/>
<polygon fill="#732626" stroke="black" points="6037.91,-509.55 6027.33,-508.9 6035.2,-516 6037.91,-509.55"/>
</g>
<!-- ahriman_web_views_user -->
<g id="node96" class="node">
<title>ahriman_web_views_user</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="5215" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5215" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5215" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5215" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5215" y="-694.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user</text>
</g>
<!-- ahriman_web_views_user&#45;&gt;ahriman_web_routes -->
<g id="edge390" class="edge">
<title>ahriman_web_views_user&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5189.24,-686.35C5158.17,-654.07 5111.23,-602.79 5121,-597.24"/>
</g>
<!-- ahriman_web_views_user_login&#45;&gt;ahriman_web_routes -->
<g id="edge391" class="edge">
<title>ahriman_web_views_user_login&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5280.48,-683.82C5274.61,-678.59 5268.3,-673.4 5262,-669.01 5204.33,-628.78 5059.85,-631.95 5121,-597.24"/>
</g>
<!-- ahriman_web_views_user_logout&#45;&gt;ahriman_web_routes -->
<g id="edge392" class="edge">
<title>ahriman_web_views_user_logout&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4448.9,-707.97C4587.48,-690.97 5061.74,-630.87 5121,-597.24"/>
<path fill="none" stroke="black" d="M5121,-595.24C5263.8,-514.19 5783.76,-498.91 5945.59,-496.1"/>
<polygon fill="#732626" stroke="black" points="5945.78,-499.59 5955.72,-495.93 5945.67,-492.59 5945.78,-499.59"/>
</g>
<!-- ahriman_web_web&#45;&gt;ahriman_application_handlers_web -->
<g id="edge393" class="edge">
<title>ahriman_web_web&#45;&gt;ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6164.78,-371.76C6163.26,-359.45 6164.07,-345.52 6172,-335.5"/>
</g>
<!-- aioauthclient -->
<g id="node100" class="node">
<title>aioauthclient</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b67b53" stroke="black" points="5278.5,-1981.27 5275.5,-1985.27 5254.5,-1985.27 5251.5,-1981.27 5207.5,-1981.27 5207.5,-1945.27 5278.5,-1945.27 5278.5,-1981.27"/>
<text text-anchor="middle" x="5243" y="-1960.77" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aioauthclient</text>
</g>
<!-- aioauthclient&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge394" class="edge">
<title>aioauthclient&#45;&gt;ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5243.06,-1945.1C5242.81,-1892.08 5238.57,-1726.78 5198,-1597.88 5194.6,-1587.07 5189.58,-1575.97 5184.31,-1565.83"/>
<polygon fill="#b67b53" stroke="black" points="5187.27,-1563.95 5179.43,-1556.82 5181.12,-1567.28 5187.27,-1563.95"/>
</g>
<!-- aiohttp -->
<g id="node101" class="node">
<title>aiohttp</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#f9c806" stroke="black" points="6137,-1324.03 6134,-1328.03 6113,-1328.03 6110,-1324.03 6083,-1324.03 6083,-1288.03 6137,-1288.03 6137,-1324.03"/>
<text text-anchor="middle" x="6110" y="-1303.53" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttp</text>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_middlewares -->
<g id="edge395" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_middlewares</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6249,-1048.95C6267.85,-937.09 6304.12,-899.82 6263,-794.1 6255.13,-773.88 6238.59,-778.04 6230,-758.1 6197.93,-683.72 6201.15,-586.49 6206.17,-533.68"/>
<polygon fill="#f9c806" stroke="black" points="6209.66,-534.03 6207.19,-523.73 6202.69,-533.32 6209.66,-534.03"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge396" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6195,-1232.26C6237.12,-1205.78 6258.49,-1222.11 6301,-1196.26 6497.12,-1076.98 6540.2,-1023.21 6667,-831.87"/>
<path fill="none" stroke="black" d="M6667,-829.87C6689.2,-796.37 6723.5,-766.51 6751.29,-745.57"/>
<polygon fill="#f9c806" stroke="black" points="6753.73,-748.12 6759.69,-739.37 6749.57,-742.5 6753.73,-748.12"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_middlewares_exception_handler -->
<g id="edge397" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_middlewares_exception_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6137.15,-1301.28C6214.98,-1290.53 6445.55,-1258.68 6637,-1232.26 6695,-1224.26 6859.53,-1240.4 6898,-1196.26 6919.47,-1171.62 6898.54,-1155.4 6898,-1122.72 6896.67,-1042.11 6892,-1022.04 6892,-941.41 6892,-941.41 6892,-941.41 6892,-829.87 6892,-765.1 6892,-690.19 6892,-643.26"/>
<polygon fill="#f9c806" stroke="black" points="6895.5,-643.11 6892,-633.11 6888.5,-643.11 6895.5,-643.11"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_routes -->
<g id="edge398" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6135,-1158.49C6178.92,-1002.49 6216.29,-941.54 6149,-794.1 6121.27,-733.36 5877.91,-647.39 5922,-597.24"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_base -->
<g id="edge399" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5787,-1158.49C5766.9,-1148.25 5529.96,-942.53 5438.61,-862.94"/>
<polygon fill="#f9c806" stroke="black" points="5440.84,-860.24 5431,-856.31 5436.24,-865.52 5440.84,-860.24"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_add -->
<g id="edge400" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_service_add</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5773,-939.41C5743.31,-886.45 5735.19,-816.31 5733.46,-768.55"/>
<polygon fill="#f9c806" stroke="black" points="5736.95,-768.31 5733.17,-758.41 5729.96,-768.5 5736.95,-768.31"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge401" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6082.88,-1299.68C6011.53,-1285.84 5812.51,-1248.81 5645,-1232.26 5549.49,-1222.83 4864.23,-1245.74 4782,-1196.26 4749.56,-1176.74 4761.92,-1152.86 4739,-1122.72 4725.49,-1104.96 4713.6,-1106.87 4704,-1086.72 4655.27,-984.47 4643.54,-927.02 4705,-831.87"/>
<path fill="none" stroke="black" d="M4705,-829.87C4723.28,-795.99 4755.3,-766.6 4782.23,-745.97"/>
<polygon fill="#f9c806" stroke="black" points="4784.49,-748.64 4790.4,-739.85 4780.3,-743.04 4784.49,-748.64"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge402" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_service_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6119,-1232.26C6124.48,-1200.04 6126.14,-1191.95 6135,-1160.49"/>
<path fill="none" stroke="black" d="M6135,-1158.49C6147.95,-1112.49 6148.55,-1096.79 6135,-1050.95"/>
<path fill="none" stroke="black" d="M6135,-1048.95C6123.84,-1011.2 5943.09,-828.68 5864.27,-750.37"/>
<polygon fill="#f9c806" stroke="black" points="5866.53,-747.68 5856.97,-743.12 5861.6,-752.65 5866.53,-747.68"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_search -->
<g id="edge403" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6127.42,-1287.77C6143.84,-1272.15 6169.66,-1249.2 6195,-1233.26"/>
<path fill="none" stroke="black" d="M6195,-1232.26C6238.9,-1204.66 6254.03,-1200.52 6287,-1160.49"/>
<path fill="none" stroke="black" d="M6287,-1158.49C6303.11,-1138.93 6322.83,-1076.2 6325,-1050.95"/>
<path fill="none" stroke="black" d="M6325,-1048.95C6334.76,-935.6 6322.87,-905.75 6301,-794.1 6299.15,-784.65 6296.63,-774.71 6293.92,-765.19"/>
<polygon fill="#f9c806" stroke="black" points="6297.23,-764.05 6291.04,-755.45 6290.52,-766.03 6297.23,-764.05"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge404" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6021,-1232.26C5991.45,-1192.66 6036.13,-1158.45 6002,-1122.72 5950.75,-1069.08 5902.01,-1125.88 5839,-1086.72 5803.41,-1064.61 5809.04,-1043.39 5780,-1013.18 5728.58,-959.69 5712.02,-949.91 5654,-903.64 5589.46,-852.18 5571.69,-841.35 5504,-794.1 5480.35,-777.6 5472.65,-775.96 5450,-758.1 5446.52,-755.36 5442.98,-752.41 5439.48,-749.39"/>
<polygon fill="#f9c806" stroke="black" points="5441.75,-746.73 5431.95,-742.71 5437.11,-751.96 5441.75,-746.73"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_package -->
<g id="edge405" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6135,-1048.95C6098.66,-932.83 6113.92,-886.71 6035,-794.1 6014.58,-770.14 5999.71,-776.27 5974,-758.1 5969.43,-754.88 5964.77,-751.35 5960.2,-747.74"/>
<polygon fill="#f9c806" stroke="black" points="5962.11,-744.78 5952.13,-741.21 5957.7,-750.22 5962.11,-744.78"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge406" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_status_packages</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6111.73,-1287.86C6113.29,-1273.28 6115.84,-1251.83 6119,-1233.26"/>
<path fill="none" stroke="black" d="M6119,-1232.26C6129.3,-1171.78 6085.29,-1157.87 6035,-1122.72 5991.1,-1092.04 5966.47,-1113.35 5920,-1086.72 5877.81,-1062.55 5877.07,-1043.43 5839,-1013.18 5816.99,-995.7 5804.44,-999.23 5787,-977.18 5776.41,-963.79 5782.28,-955.74 5773,-941.41"/>
<path fill="none" stroke="black" d="M5773,-939.41C5761.95,-923.78 5762.12,-917.58 5749,-903.64 5686.25,-836.98 5598.2,-775.89 5545.65,-742.09"/>
<polygon fill="#f9c806" stroke="black" points="5547.52,-739.14 5537.21,-736.7 5543.76,-745.04 5547.52,-739.14"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_status -->
<g id="edge407" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6287,-1158.49C6312.04,-1128.09 6325.26,-1123.64 6339,-1086.72 6379.09,-979.05 6379.01,-842.16 6375.17,-768.06"/>
<polygon fill="#f9c806" stroke="black" points="6378.66,-767.82 6374.61,-758.04 6371.67,-768.22 6378.66,-767.82"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_user_login -->
<g id="edge408" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6082.85,-1293.79C6026.85,-1270.41 5894.75,-1214.24 5787,-1160.49"/>
<path fill="none" stroke="black" d="M5787,-1158.49C5711.9,-1121.64 5688.47,-1122.82 5613,-1086.72 5567.29,-1064.86 5448.45,-1013.39 5413,-977.18 5356.2,-919.17 5329.37,-826.35 5317.5,-768.01"/>
<polygon fill="#f9c806" stroke="black" points="5320.88,-767.03 5315.52,-757.89 5314.01,-768.37 5320.88,-767.03"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge409" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6082.73,-1304.52C5899.62,-1300.87 4852.92,-1276.57 4739,-1196.26 4709.72,-1175.62 4730.21,-1149.13 4706,-1122.72 4616.25,-1024.82 4519.49,-1087.14 4445,-977.18 4402.76,-914.83 4400.66,-824.75 4404.62,-767.95"/>
<polygon fill="#f9c806" stroke="black" points="4408.13,-767.99 4405.42,-757.75 4401.15,-767.44 4408.13,-767.99"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_web -->
<g id="edge410" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6119,-1232.26C6123.24,-1211.87 6136.42,-1212.86 6149,-1196.26 6196.37,-1133.79 6238.62,-1128.66 6249,-1050.95"/>
<path fill="none" stroke="black" d="M6249,-1048.95C6278.5,-926.8 6116.32,-620.03 6133,-495.48"/>
</g>
<!-- aiohttpjinja2 -->
<g id="node103" class="node">
<title>aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#69b03a" stroke="black" points="5993,-1177.49 5990,-1181.49 5969,-1181.49 5966,-1177.49 5925,-1177.49 5925,-1141.49 5993,-1141.49 5993,-1177.49"/>
<text text-anchor="middle" x="5959" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttpjinja2</text>
</g>
<!-- aiohttp&#45;&gt;aiohttpjinja2 -->
<g id="edge411" class="edge">
<title>aiohttp&#45;&gt;aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6082.8,-1288.45C6063.4,-1275.46 6037.86,-1255.85 6021,-1233.26"/>
<path fill="none" stroke="black" d="M6021,-1232.26C6008.82,-1215.94 5993.93,-1198.63 5981.8,-1185.1"/>
<polygon fill="#f9c806" stroke="black" points="5984.32,-1182.67 5975.01,-1177.61 5979.13,-1187.37 5984.32,-1182.67"/>
</g>
<!-- aiohttpsession -->
<g id="node105" class="node">
<title>aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#3db86e" stroke="black" points="6889,-1177.49 6886,-1181.49 6865,-1181.49 6862,-1177.49 6809,-1177.49 6809,-1141.49 6889,-1141.49 6889,-1177.49"/>
<text text-anchor="middle" x="6849" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttpsession</text>
</g>
<!-- aiohttp&#45;&gt;aiohttpsession -->
<g id="edge412" class="edge">
<title>aiohttp&#45;&gt;aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6137.34,-1296.95C6189.62,-1281.83 6307.57,-1249.24 6409,-1232.26 6578.94,-1203.81 6632.51,-1253.56 6795,-1196.26 6803.71,-1193.19 6812.38,-1188.41 6820.15,-1183.33"/>
<polygon fill="#f9c806" stroke="black" points="6822.27,-1186.12 6828.49,-1177.55 6818.28,-1180.37 6822.27,-1186.12"/>
</g>
<!-- aiohttpdebugtoolbar -->
<g id="node102" class="node">
<title>aiohttpdebugtoolbar</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#a2b653" stroke="black" points="4316.5,-731.56 4313.5,-735.56 4292.5,-735.56 4289.5,-731.56 4215.5,-731.56 4215.5,-695.56 4316.5,-695.56 4316.5,-731.56"/>
<text text-anchor="middle" x="4266" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttpdebugtoolbar</text>
</g>
<!-- aiohttpdebugtoolbar&#45;&gt;ahriman_web_web -->
<g id="edge413" class="edge">
<title>aiohttpdebugtoolbar&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4286,-695.41C4307.9,-674.76 4340.52,-637.76 4345,-597.24"/>
</g>
<!-- aiohttpjinja2&#45;&gt;ahriman_web_views_index -->
<g id="edge414" class="edge">
<title>aiohttpjinja2&#45;&gt;ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5924.76,-1144.86C5893.88,-1131.89 5847.79,-1110.81 5811,-1086.72 5706.27,-1018.17 5700.06,-974.68 5597,-903.64 5569.49,-884.68 5558.23,-887.01 5531,-867.64 5491.38,-839.46 5494.66,-813.34 5450,-794.1 5257.6,-711.21 5171.98,-841.97 4980,-758.1 4974.65,-755.77 4969.51,-752.55 4964.73,-748.92"/>
<polygon fill="#69b03a" stroke="black" points="4966.96,-746.23 4957.04,-742.5 4962.47,-751.6 4966.96,-746.23"/>
</g>
<!-- aiohttpjinja2&#45;&gt;ahriman_web_web -->
<g id="edge415" class="edge">
<title>aiohttpjinja2&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5986.83,-1141.3C6004.98,-1128.54 6027.55,-1109.47 6040,-1086.72 6167.74,-853.39 6083.59,-756.85 6133,-495.48"/>
<path fill="none" stroke="black" d="M6133,-493.48C6135.64,-473.79 6143.72,-453.31 6151.85,-436.68"/>
<polygon fill="#69b03a" stroke="black" points="6155.17,-437.87 6156.6,-427.38 6148.93,-434.69 6155.17,-437.87"/>
</g>
<!-- aiohttpsecurity -->
<g id="node104" class="node">
<title>aiohttpsecurity</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#3bce3b" stroke="black" points="4711,-1433.57 4708,-1437.57 4687,-1437.57 4684,-1433.57 4631,-1433.57 4631,-1397.57 4711,-1397.57 4711,-1433.57"/>
<text text-anchor="middle" x="4671" y="-1413.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttpsecurity</text>
</g>
<!-- aiohttpsecurity&#45;&gt;ahriman_core_auth_helpers -->
<g id="edge416" class="edge">
<title>aiohttpsecurity&#45;&gt;ahriman_core_auth_helpers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4593,-1158.49C4593.75,-1140.51 4598.87,-1135.04 4612,-1122.72 4621,-1114.28 4683.03,-1087.48 4726.89,-1069.13"/>
<polygon fill="#3bce3b" stroke="black" points="4728.34,-1072.32 4736.22,-1065.24 4725.65,-1065.86 4728.34,-1072.32"/>
</g>
<!-- aiohttpsecurity&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge417" class="edge">
<title>aiohttpsecurity&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4711.01,-1413.88C4932.77,-1409.86 6006.17,-1388.2 6146,-1342.8 6394.06,-1262.25 6467.88,-1199.04 6605,-977.18 6641.92,-917.46 6628.21,-890.4 6667,-831.87"/>
</g>
<!-- aiohttpsecurity&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge418" class="edge">
<title>aiohttpsecurity&#45;&gt;ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4665.05,-1397.55C4646.65,-1344.63 4591.97,-1185.04 4593,-1160.49"/>
<path fill="none" stroke="black" d="M4593,-1158.49C4620.89,-993.12 4587.38,-925.96 4691,-794.1 4712.57,-766.66 4746.42,-746.94 4775.2,-734"/>
<polygon fill="#3bce3b" stroke="black" points="4776.95,-737.05 4784.74,-729.87 4774.17,-730.63 4776.95,-737.05"/>
</g>
<!-- aiohttpsession&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge419" class="edge">
<title>aiohttpsession&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6847.42,-1141.24C6845.82,-1119.9 6844.21,-1082.52 6849,-1050.95"/>
</g>
<!-- aur -->
<g id="node106" class="node">
<title>aur</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#33ccae" stroke="black" points="7117,-2670.26 7114,-2674.26 7093,-2674.26 7090,-2670.26 7063,-2670.26 7063,-2634.26 7117,-2634.26 7117,-2670.26"/>
<text text-anchor="middle" x="7090" y="-2649.76" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aur</text>
</g>
<!-- aur&#45;&gt;ahriman_application_handlers_search -->
<g id="edge420" class="edge">
<title>aur&#45;&gt;ahriman_application_handlers_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M7107,-2455.51C7052.79,-2293.82 7208.93,-2267.62 7273,-2109.57 7390.98,-1818.53 7411,-1730.62 7411,-1416.57 7411,-1416.57 7411,-1416.57 7411,-1232.26 7411,-1145.56 7354.34,-1136.29 7339,-1050.95"/>
</g>
<!-- aur&#45;&gt;ahriman_models_package -->
<g id="edge421" class="edge">
<title>aur&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M7062.8,-2647.38C6889.92,-2622.91 5926.22,-2488.84 5136,-2427.52 4830.27,-2403.8 3848.56,-2372.21 3619.23,-2365.03"/>
<polygon fill="#33ccae" stroke="black" points="3619.3,-2361.53 3609.19,-2364.71 3619.08,-2368.52 3619.3,-2361.53"/>
</g>
<!-- aur&#45;&gt;ahriman_web_views_service_search -->
<g id="edge422" class="edge">
<title>aur&#45;&gt;ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M7096.09,-2634.1C7107.36,-2599.59 7128.45,-2519.76 7107,-2457.51"/>
<path fill="none" stroke="black" d="M7107,-2455.51C7024.96,-2240 6940,-2194.87 6940,-1964.27 6940,-1964.27 6940,-1964.27 6940,-1852.73 6940,-1587.11 6578.06,-976.53 6385,-794.1 6362.12,-772.48 6349.25,-776.91 6324,-758.1 6320.44,-755.45 6316.85,-752.57 6313.32,-749.59"/>
<polygon fill="#33ccae" stroke="black" points="6315.58,-746.92 6305.74,-742.98 6310.98,-752.19 6315.58,-746.92"/>
</g>
<!-- boto3 -->
<g id="node107" class="node">
<title>boto3</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#40a6c0" stroke="black" points="5980,-2286.55 5977,-2290.55 5956,-2290.55 5953,-2286.55 5926,-2286.55 5926,-2250.55 5980,-2250.55 5980,-2286.55"/>
<text text-anchor="middle" x="5953" y="-2266.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">boto3</text>
</g>
<!-- boto3&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge423" class="edge">
<title>boto3&#45;&gt;ahriman_core_upload_s3</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5963.53,-2250.37C5974.74,-2231.97 5992.92,-2201.88 6008,-2175.57"/>
<path fill="none" stroke="black" d="M6008,-2173.57C6015.48,-2160.52 6016.37,-2156.21 6027,-2145.57 6047.13,-2125.44 6064.66,-2133.56 6080,-2109.57 6115.26,-2054.43 6106.68,-2029.67 6104,-1964.27"/>
</g>
<!-- cryptography -->
<g id="node108" class="node">
<title>cryptography</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#196be6" stroke="black" points="6908,-2903 6905,-2907 6884,-2907 6881,-2903 6834,-2903 6834,-2867 6908,-2867 6908,-2903"/>
<text text-anchor="middle" x="6871" y="-2882.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">cryptography</text>
</g>
<!-- cryptography&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge424" class="edge">
<title>cryptography&#45;&gt;ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M7335,-2361.53C7308.82,-2053.71 7392.49,-1979.29 7418,-1671.42 7422.02,-1622.85 7421.67,-1610.59 7423,-1561.88 7427.01,-1415.43 7429.84,-1378.68 7425,-1232.26 7421.78,-1134.73 7463.09,-864.96 7396,-794.1 7350.29,-745.83 7164.91,-766.85 7099,-758.1 7015.48,-747.02 6919.17,-732.9 6858.2,-723.8"/>
<polygon fill="#196be6" stroke="black" points="6858.39,-720.28 6847.98,-722.27 6857.35,-727.21 6858.39,-720.28"/>
</g>
<!-- cryptography&#45;&gt;aiohttpsession -->
<g id="edge425" class="edge">
<title>cryptography&#45;&gt;aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6908.19,-2879.5C7018.29,-2865.14 7335,-2816.02 7335,-2726.03 7335,-2726.03 7335,-2726.03 7335,-2549.5 7335,-2466.85 7350.78,-2444.66 7335,-2363.53"/>
<path fill="none" stroke="black" d="M7335,-2361.53C7218.07,-1835.4 7133.01,-1714.84 6893,-1232.26 6885.17,-1216.53 6874.99,-1199.74 6866.39,-1186.36"/>
<polygon fill="#196be6" stroke="black" points="6869.14,-1184.16 6860.74,-1177.69 6863.27,-1187.98 6869.14,-1184.16"/>
</g>
<!-- requests -->
<g id="node112" class="node">
<title>requests</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#dd18b5" stroke="black" points="6435,-2809.02 6432,-2813.02 6411,-2813.02 6408,-2809.02 6381,-2809.02 6381,-2773.02 6435,-2773.02 6435,-2809.02"/>
<text text-anchor="middle" x="6408" y="-2788.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">requests</text>
</g>
<!-- cryptography&#45;&gt;requests -->
<g id="edge426" class="edge">
<title>cryptography&#45;&gt;requests</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6833.89,-2876.63C6747.08,-2859.38 6531.56,-2816.57 6444.93,-2799.35"/>
<polygon fill="#196be6" stroke="black" points="6445.51,-2795.9 6435.02,-2797.39 6444.14,-2802.77 6445.51,-2795.9"/>
</g>
<!-- jinja2 -->
<g id="node109" class="node">
<title>jinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#3b3bce" stroke="black" points="6494,-2286.55 6491,-2290.55 6470,-2290.55 6467,-2286.55 6440,-2286.55 6440,-2250.55 6494,-2250.55 6494,-2286.55"/>
<text text-anchor="middle" x="6467" y="-2266.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">jinja2</text>
</g>
<!-- jinja2&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge427" class="edge">
<title>jinja2&#45;&gt;ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6439.8,-2265.27C6381.67,-2260.42 6240.98,-2248.76 6123,-2239.56 5908.83,-2222.85 5854.62,-2226.25 5641,-2203.56 5337.17,-2171.28 5253.5,-2194.49 4960,-2109.57 4884.04,-2087.6 4872.43,-2062.72 4798,-2036.03 4739.95,-2015.22 4718.12,-2029.59 4664,-2000.03 4621.32,-1976.73 4627.97,-1944.99 4583,-1926.5 4410.81,-1855.7 3925.74,-1939.01 3746,-1890.5 3739.51,-1888.74 3732.94,-1886.3 3726.57,-1883.49"/>
<polygon fill="#3b3bce" stroke="black" points="3727.96,-1880.28 3717.43,-1879.17 3724.97,-1886.61 3727.96,-1880.28"/>
</g>
<!-- jinja2&#45;&gt;ahriman_web_web -->
<g id="edge428" class="edge">
<title>jinja2&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6475,-2250.43C6493.26,-2211.68 6539.81,-2114.52 6584,-2036.03 6733.99,-1769.62 6810.25,-1725.28 6948,-1452.34 6969.61,-1409.51 7107.41,-1098.92 7107,-1050.95"/>
<path fill="none" stroke="black" d="M7107,-1048.95C7105.05,-935.65 7089.14,-907 7099,-794.1 7102.12,-758.34 7113,-750.45 7113,-714.56"/>
<path fill="none" stroke="black" d="M7113,-712.56C7104.9,-539.33 6978.33,-511.01 6811,-465.49 6558.79,-396.87 6475.38,-501.1 6224,-429.49 6219.32,-428.15 6214.58,-426.35 6209.97,-424.3"/>
<polygon fill="#3b3bce" stroke="black" points="6211.28,-421.04 6200.75,-419.81 6208.21,-427.33 6211.28,-421.04"/>
</g>
<!-- jinja2&#45;&gt;aiohttpjinja2 -->
<g id="edge429" class="edge">
<title>jinja2&#45;&gt;aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6470.15,-2250.27C6478.74,-2199.13 6499.4,-2044.77 6460,-1926.5 6359.07,-1623.52 6200.4,-1619.51 6041,-1342.8 6010.44,-1289.75 5983.06,-1223.24 5968.99,-1187.01"/>
<polygon fill="#3b3bce" stroke="black" points="5972.24,-1185.71 5965.38,-1177.64 5965.7,-1188.23 5972.24,-1185.71"/>
</g>
<!-- passlib -->
<g id="node110" class="node">
<title>passlib</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#763bce" stroke="black" points="5473,-2380.53 5470,-2384.53 5449,-2384.53 5446,-2380.53 5419,-2380.53 5419,-2344.53 5473,-2344.53 5473,-2380.53"/>
<text text-anchor="middle" x="5446" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">passlib</text>
</g>
<!-- passlib&#45;&gt;ahriman_models_user -->
<g id="edge430" class="edge">
<title>passlib&#45;&gt;ahriman_models_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5450.88,-2344.32C5461.88,-2306.82 5490.67,-2215.49 5529,-2145.57 5536.56,-2131.78 5546.47,-2117.63 5555.66,-2105.59"/>
<polygon fill="#763bce" stroke="black" points="5558.49,-2107.65 5561.88,-2097.61 5552.97,-2103.35 5558.49,-2107.65"/>
</g>
<!-- pyalpm -->
<g id="node111" class="node">
<title>pyalpm</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b13bce" stroke="black" points="5361,-2985.99 5358,-2989.99 5337,-2989.99 5334,-2985.99 5307,-2985.99 5307,-2949.99 5361,-2949.99 5361,-2985.99"/>
<text text-anchor="middle" x="5334" y="-2965.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">pyalpm</text>
</g>
<!-- pyalpm&#45;&gt;ahriman_core_alpm_pacman -->
<g id="edge431" class="edge">
<title>pyalpm&#45;&gt;ahriman_core_alpm_pacman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5321.79,-2949.66C5314.81,-2939.46 5306.06,-2926.21 5299,-2913.99 5261.24,-2848.6 5286.62,-2802.7 5223,-2762.03 5167.88,-2726.79 4111.38,-2728.21 4046,-2726.03 3589.96,-2710.83 3475.58,-2714.57 3020,-2689.03 2865.68,-2680.38 2683.24,-2665.02 2598.17,-2657.56"/>
<polygon fill="#b13bce" stroke="black" points="2598.31,-2654.06 2588.04,-2656.67 2597.7,-2661.03 2598.31,-2654.06"/>
</g>
<!-- pyalpm&#45;&gt;ahriman_models_package -->
<g id="edge432" class="edge">
<title>pyalpm&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5522,-2884C5662.66,-2705.36 5369.41,-2612.41 5161,-2521.5 5006.67,-2454.19 4960.45,-2452.93 4794,-2427.52 4561.31,-2392 3816.27,-2370.06 3619.2,-2364.77"/>
<polygon fill="#b13bce" stroke="black" points="3619.24,-2361.27 3609.15,-2364.51 3619.05,-2368.27 3619.24,-2361.27"/>
</g>
<!-- pyalpm&#45;&gt;ahriman_models_package_description -->
<g id="edge433" class="edge">
<title>pyalpm&#45;&gt;ahriman_models_package_description</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5361.08,-2963.59C5402.78,-2956.81 5482.05,-2937.55 5522,-2886"/>
<path fill="none" stroke="black" d="M5522,-2884C5559.81,-2835.21 5158.27,-2544.54 5101,-2521.5 5000.16,-2480.94 4258.69,-2463.72 4004.35,-2458.96"/>
<polygon fill="#b13bce" stroke="black" points="4004.12,-2455.46 3994.06,-2458.77 4003.99,-2462.46 4004.12,-2455.46"/>
</g>
<!-- requests&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge434" class="edge">
<title>requests&#45;&gt;ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6380.9,-2789.38C6141.54,-2783.67 4385.15,-2740.41 3860,-2689.03 3547.04,-2658.41 3463.99,-2663.64 3161,-2579.49 2858.41,-2495.44 2799.08,-2424.64 2526,-2269.55"/>
</g>
<!-- requests&#45;&gt;ahriman_core_status_web_client -->
<g id="edge435" class="edge">
<title>requests&#45;&gt;ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6408,-2772.75C6408,-2746.8 6408,-2696.23 6408,-2653.26 6408,-2653.26 6408,-2653.26 6408,-2071.8 6408,-1954.02 6341.9,-1935.3 6256,-1854.73"/>
</g>
<!-- requests&#45;&gt;ahriman_core_util -->
<g id="edge436" class="edge">
<title>requests&#45;&gt;ahriman_core_util</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6380.78,-2787.75C6266.59,-2778.33 5814.96,-2741.97 5443,-2725.03 5275.13,-2717.38 4091.93,-2737.42 3931,-2689.03 3902.36,-2680.41 3903.76,-2656.22 3874,-2653.26"/>
</g>
<!-- requests&#45;&gt;aur -->
<g id="edge437" class="edge">
<title>requests&#45;&gt;aur</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6435.16,-2784.57C6541.56,-2763.24 6930.23,-2685.3 7052.75,-2660.73"/>
<polygon fill="#dd18b5" stroke="black" points="7053.65,-2664.12 7062.77,-2658.72 7052.27,-2657.25 7053.65,-2664.12"/>
</g>
<!-- srcinfo -->
<g id="node113" class="node">
<title>srcinfo</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b6537b" stroke="black" points="3994,-2670.26 3991,-2674.26 3970,-2674.26 3967,-2670.26 3940,-2670.26 3940,-2634.26 3994,-2634.26 3994,-2670.26"/>
<text text-anchor="middle" x="3967" y="-2649.76" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">srcinfo</text>
</g>
<!-- srcinfo&#45;&gt;ahriman_models_package -->
<g id="edge438" class="edge">
<title>srcinfo&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3952.93,-2633.99C3928.58,-2604.03 3877.15,-2540.34 3835,-2485.5 3815.45,-2460.07 3818.35,-2445.83 3792,-2427.52 3739.59,-2391.1 3666.51,-2375.22 3618.98,-2368.42"/>
<polygon fill="#b6537b" stroke="black" points="3619.33,-2364.94 3608.95,-2367.07 3618.39,-2371.87 3619.33,-2364.94"/>
</g>
</g>
</svg>