ahriman/docs/ahriman-architecture.svg
2021-10-15 04:55:46 +03:00

3846 lines
342 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="7506pt" height="3138pt"
viewBox="0.00 0.00 7505.97 3137.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 3133.99)">
<title>G</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-3133.99 7501.97,-3133.99 7501.97,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="#723131" stroke="black" cx="1954" cy="-28.99" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="1954" y="-37.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1954" y="-26.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1954" 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="979" cy="-1049.95" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="979" y="-1058.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="979" y="-1047.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="979" 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="1236" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1236" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1236" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1236" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1236" 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="M972.22,-1021.21C968.19,-998.43 966.07,-966.04 979,-941.41"/>
</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="1125" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1125" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1125" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1125" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1125" 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="M957.74,-1024.12C940.45,-1000.78 921.81,-965.87 941,-941.41"/>
</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="1014" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1014" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1014" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1014" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1014" 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="M942.94,-1031.32C904.85,-1010.37 853.78,-974.14 881,-941.41"/>
</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="903" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="903" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="903" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="903" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="903" 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="M843,-939.41C831.57,-914.21 847.04,-886.99 865.13,-866.25"/>
<polygon fill="#950303" stroke="black" points="867.95,-868.36 872.14,-858.63 862.8,-863.62 867.95,-868.36"/>
</g>
<!-- ahriman_application_handlers_patch -->
<g id="node10" class="node">
<title>ahriman_application_handlers_patch</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="1773" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1773" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1773" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1773" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1773" y="-811.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">patch</text>
</g>
<!-- ahriman_application_application&#45;&gt;ahriman_application_handlers_patch -->
<g id="edge5" class="edge">
<title>ahriman_application_application&#45;&gt;ahriman_application_handlers_patch</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1025.51,-1046.69C1114.61,-1041.38 1314.84,-1024.77 1476,-977.18 1551.06,-955.02 1564.68,-935.88 1636,-903.64 1671.9,-887.42 1682.3,-886.3 1717,-867.64 1720.99,-865.5 1725.08,-863.16 1729.14,-860.76"/>
<polygon fill="#950303" stroke="black" points="1731.21,-863.59 1737.93,-855.4 1727.57,-857.61 1731.21,-863.59"/>
</g>
<!-- ahriman_application_handlers_rebuild -->
<g id="node11" class="node">
<title>ahriman_application_handlers_rebuild</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="792" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="792" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="792" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="792" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="792" 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="edge6" 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="M943.29,-1031.05C919.87,-1018.18 889.52,-999.24 867,-977.18 853.32,-963.79 850.91,-958.85 843,-941.41"/>
<path fill="none" stroke="black" d="M843,-939.41C833.32,-918.07 822.2,-894.52 812.82,-874.92"/>
<polygon fill="#950303" stroke="black" points="815.85,-873.14 808.37,-865.64 809.54,-876.17 815.85,-873.14"/>
</g>
<!-- ahriman_application_handlers_remove -->
<g id="node12" class="node">
<title>ahriman_application_handlers_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="681" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="681" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="681" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="681" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="681" 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="edge7" 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="M939.48,-1034.24C908.05,-1021.59 863.75,-1001.54 829,-977.18 784.69,-946.13 741.4,-901.47 713.21,-869.87"/>
<polygon fill="#950303" stroke="black" points="715.62,-867.31 706.37,-862.14 710.37,-871.95 715.62,-867.31"/>
</g>
<!-- ahriman_application_handlers_remove_unknown -->
<g id="node13" class="node">
<title>ahriman_application_handlers_remove_unknown</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="1515" cy="-830.87" rx="65.11" ry="36.54"/>
<text text-anchor="middle" x="1515" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1515" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1515" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1515" 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="edge8" 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="M1016.64,-1032.44C1049.15,-1018.08 1097.33,-996.6 1139,-977.18 1207.02,-945.48 1221.32,-931.5 1291,-903.64 1292.94,-902.87 1383.88,-873.77 1449.28,-852.87"/>
<polygon fill="#950303" stroke="black" points="1450.67,-856.1 1459.13,-849.72 1448.54,-849.43 1450.67,-856.1"/>
</g>
<!-- ahriman_application_handlers_report -->
<g id="node14" class="node">
<title>ahriman_application_handlers_report</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="570" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="570" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="570" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="570" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="570" 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="edge9" 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="M934.49,-1040.89C885.63,-1030.82 805.9,-1010.69 744,-977.18 690.26,-948.1 637.71,-900.84 604.66,-868.16"/>
<polygon fill="#950303" stroke="black" points="607.06,-865.6 597.51,-861.01 602.11,-870.55 607.06,-865.6"/>
</g>
<!-- ahriman_application_handlers_setup -->
<g id="node16" class="node">
<title>ahriman_application_handlers_setup</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="1884" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1884" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1884" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1884" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1884" 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="edge10" 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="M1025.73,-1049.81C1133.97,-1050.52 1409.16,-1044.89 1626,-977.18 1708.17,-951.53 1793.23,-897.27 1842.24,-862.8"/>
<polygon fill="#950303" stroke="black" points="1844.54,-865.46 1850.67,-856.81 1840.49,-859.75 1844.54,-865.46"/>
</g>
<!-- ahriman_application_handlers_sign -->
<g id="node17" class="node">
<title>ahriman_application_handlers_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="459" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="459" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="459" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="459" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="459" 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="edge11" 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="M932.77,-1045.1C819.9,-1035.32 532.82,-1008.1 442,-977.18 411.88,-966.93 388.95,-971.94 380,-941.41"/>
</g>
<!-- ahriman_application_handlers_status -->
<g id="node18" class="node">
<title>ahriman_application_handlers_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="1347" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1347" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1347" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1347" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1347" 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="edge12" 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="M1013.34,-1030.11C1045.47,-1011.1 1093.17,-979.22 1125,-941.41"/>
<path fill="none" stroke="black" d="M1125,-939.41C1177.03,-877.61 1218.74,-901.7 1292,-867.64 1296.06,-865.76 1300.17,-863.6 1304.22,-861.31"/>
<polygon fill="#950303" stroke="black" points="1306.14,-864.25 1312.94,-856.13 1302.56,-858.23 1306.14,-864.25"/>
</g>
<!-- ahriman_application_handlers_status_update -->
<g id="node19" class="node">
<title>ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="1653" cy="-830.87" rx="55.31" ry="36.54"/>
<text text-anchor="middle" x="1653" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1653" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1653" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1653" 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="edge13" 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="M1025.69,-1046.9C1105.45,-1042.12 1272.02,-1026.57 1403,-977.18 1461.17,-955.25 1468.15,-934.71 1522,-903.64 1551.28,-886.75 1559.36,-883.89 1589,-867.64 1593.42,-865.22 1598.01,-862.69 1602.6,-860.15"/>
<polygon fill="#950303" stroke="black" points="1604.36,-863.17 1611.4,-855.26 1600.96,-857.05 1604.36,-863.17"/>
</g>
<!-- ahriman_application_handlers_sync -->
<g id="node20" class="node">
<title>ahriman_application_handlers_sync</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="1995" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1995" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1995" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1995" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1995" 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="edge14" 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="M1025.65,-1046.6C1166.26,-1039.17 1584.29,-1014.46 1715,-977.18 1786.02,-956.93 1797.52,-935.79 1864,-903.64 1897.65,-887.37 1907.37,-885.87 1940,-867.64 1943.85,-865.49 1947.8,-863.17 1951.72,-860.79"/>
<polygon fill="#950303" stroke="black" points="1953.58,-863.75 1960.22,-855.49 1949.88,-857.8 1953.58,-863.75"/>
</g>
<!-- ahriman_application_handlers_update -->
<g id="node21" class="node">
<title>ahriman_application_handlers_update</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="348" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="348" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="348" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="348" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="348" 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="edge15" 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="M932.68,-1045.09C793.31,-1033.28 386.15,-997.19 366,-977.18 340.37,-951.72 337.65,-909.75 340.3,-877.44"/>
<polygon fill="#950303" stroke="black" points="343.8,-877.63 341.33,-867.33 336.84,-876.92 343.8,-877.63"/>
</g>
<!-- ahriman_application_handlers_user -->
<g id="node22" class="node">
<title>ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="2106" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="2106" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2106" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="2106" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="2106" 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="edge16" 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="M1025.45,-1046.91C1176.7,-1039.96 1653.92,-1015.47 1803,-977.18 1919.71,-947.21 1945.04,-925.02 2051,-867.64 2054.88,-865.54 2058.84,-863.26 2062.78,-860.9"/>
<polygon fill="#950303" stroke="black" points="2064.63,-863.87 2071.3,-855.63 2060.96,-857.91 2064.63,-863.87"/>
</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="1954" cy="-122.97" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="1954" y="-131.47" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1954" y="-120.47" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1954" 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="edge17" 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="M1954,-93.88C1954,-85.84 1954,-76.94 1954,-68.39"/>
<polygon fill="#950303" stroke="black" points="1957.5,-68.23 1954,-58.23 1950.5,-68.23 1957.5,-68.23"/>
</g>
<!-- ahriman_application_handlers_add&#45;&gt;ahriman_application_handlers -->
<g id="edge18" 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="M1201.98,-805.53C1195.23,-801.35 1188.05,-797.32 1181,-794.1 1064.06,-740.8 804,-796.5 903,-714.56"/>
</g>
<!-- ahriman_application_handlers_clean&#45;&gt;ahriman_application_handlers -->
<g id="edge19" 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="M1090.22,-806.27C1083.6,-802.06 1076.66,-797.83 1070,-794.1 998.27,-753.93 839.67,-766.98 903,-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="7055" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="7055" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="7055" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="7055" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="7055" 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="edge20" 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="M7056.25,-794.01C7057.73,-748.32 7060,-666.92 7060,-597.24 7060,-597.24 7060,-597.24 7060,-334.5 7060,-279.93 7155.21,-264.71 7117,-225.74"/>
<path fill="none" stroke="black" d="M7117,-223.74C7017.78,-132.98 2568.03,-124.71 2011.05,-124.03"/>
<polygon fill="#993333" stroke="black" points="2010.86,-120.53 2000.85,-124.02 2010.85,-127.53 2010.86,-120.53"/>
</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="1347" cy="-940.41" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1347" y="-954.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1347" y="-943.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1347" y="-932.41" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1347" 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="edge21" 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="M1372.56,-909.25C1382.6,-896.76 1393.88,-881.88 1403,-867.64 1422.85,-836.67 1417.13,-822.1 1441,-794.1 1586.13,-623.95 1738.26,-691.46 1846,-495.48"/>
<path fill="none" stroke="black" d="M1846,-493.48C1864.41,-456.98 1837.14,-441.41 1846,-401.5"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_add -->
<g id="edge22" 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="M1318.13,-911.44C1304.23,-897.98 1287.42,-881.69 1272.64,-867.37"/>
<polygon fill="#b30404" stroke="black" points="1274.73,-864.53 1265.12,-860.08 1269.86,-869.55 1274.73,-864.53"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_clean -->
<g id="edge23" 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="M1305.25,-923.77C1270.9,-910.36 1221.32,-889.75 1180,-867.64 1176.11,-865.56 1172.14,-863.29 1168.2,-860.94"/>
<polygon fill="#b30404" stroke="black" points="1170.02,-857.95 1159.67,-855.69 1166.35,-863.91 1170.02,-857.95"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_dump -->
<g id="edge24" 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="M1393.91,-939.32C1854.3,-938.3 5572.09,-928.23 6682,-867.64 6794.53,-861.5 6925.56,-847.29 6998.53,-838.75"/>
<polygon fill="#b30404" stroke="black" points="6999.34,-842.18 7008.86,-837.53 6998.52,-835.22 6999.34,-842.18"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_init -->
<g id="edge25" 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="M1301.21,-932.29C1244.85,-922.47 1147.01,-901.98 1069,-867.64 1064.9,-865.84 1060.76,-863.75 1056.7,-861.5"/>
<polygon fill="#b30404" stroke="black" points="1058.35,-858.4 1047.95,-856.36 1054.81,-864.44 1058.35,-858.4"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_key_import -->
<g id="edge26" 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="M1300.46,-936.73C1225.79,-931.14 1075.69,-914.59 958,-867.64 953.78,-865.96 949.54,-863.93 945.39,-861.71"/>
<polygon fill="#b30404" stroke="black" points="946.9,-858.54 936.48,-856.59 943.4,-864.61 946.9,-858.54"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_patch -->
<g id="edge27" class="edge">
<title>ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_patch</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1391.91,-929.99C1427.23,-922.63 1477.71,-912.26 1522,-903.64 1608.51,-886.82 1635.01,-899.96 1717,-867.64 1721.46,-865.89 1725.95,-863.76 1730.34,-861.42"/>
<polygon fill="#b30404" stroke="black" points="1732.21,-864.38 1739.17,-856.39 1728.75,-858.3 1732.21,-864.38"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_rebuild -->
<g id="edge28" 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="M1300.2,-939.34C1209.69,-937.78 1005.63,-927.28 847,-867.64 842.75,-866.04 838.48,-864.08 834.32,-861.89"/>
<polygon fill="#b30404" stroke="black" points="835.82,-858.72 825.39,-856.82 832.36,-864.8 835.82,-858.72"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_remove -->
<g id="edge29" 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="M1300.29,-936.69C1176.1,-929.01 840.09,-905.26 736,-867.64 731.73,-866.1 727.45,-864.17 723.27,-862.01"/>
<polygon fill="#b30404" stroke="black" points="724.77,-858.83 714.34,-856.97 721.33,-864.93 724.77,-858.83"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge30" 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="M1382.63,-916.61C1406.25,-901.48 1437.62,-881.41 1463.89,-864.59"/>
<polygon fill="#b30404" stroke="black" points="1466.05,-867.36 1472.59,-859.02 1462.28,-861.47 1466.05,-867.36"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_report -->
<g id="edge31" 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="M1300.47,-936.07C1150.93,-925.17 688.62,-889.99 625,-867.64 620.53,-866.07 616.07,-864.07 611.72,-861.82"/>
<polygon fill="#b30404" stroke="black" points="613.43,-858.76 603,-856.9 609.99,-864.86 613.43,-858.76"/>
</g>
<!-- ahriman_application_handlers_search -->
<g id="node15" class="node">
<title>ahriman_application_handlers_search</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="7319" cy="-830.87" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="7319" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="7319" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="7319" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="7319" 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="edge32" 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="M1393.79,-939.28C1908.54,-937.77 6508.99,-922.81 7111,-867.64 7163.42,-862.84 7222.5,-852.16 7264.27,-843.72"/>
<polygon fill="#b30404" stroke="black" points="7265.14,-847.11 7274.23,-841.68 7263.73,-840.26 7265.14,-847.11"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge33" 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="M1393.83,-938.99C1481.93,-936.79 1677.1,-925.2 1829,-867.64 1833.25,-866.03 1837.51,-864.06 1841.67,-861.87"/>
<polygon fill="#b30404" stroke="black" points="1843.64,-864.78 1850.6,-856.79 1840.17,-858.69 1843.64,-864.78"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_sign -->
<g id="edge34" 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="M1300.44,-936.03C1130.49,-923.61 551.45,-880.52 514,-867.64 509.52,-866.1 505.05,-864.12 500.7,-861.88"/>
<polygon fill="#b30404" stroke="black" points="502.4,-858.82 491.97,-856.98 498.97,-864.93 502.4,-858.82"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_status -->
<g id="edge35" 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="M1347,-903.6C1347,-895.44 1347,-886.65 1347,-878.11"/>
<polygon fill="#b30404" stroke="black" points="1350.5,-877.89 1347,-867.89 1343.5,-877.89 1350.5,-877.89"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge36" 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="M1388.6,-923.34C1406.18,-916.82 1426.95,-909.47 1446,-903.64 1508.68,-884.48 1528.09,-891.84 1589,-867.64 1593.83,-865.73 1598.75,-863.51 1603.6,-861.14"/>
<polygon fill="#b30404" stroke="black" points="1605.51,-864.1 1612.82,-856.43 1602.32,-857.86 1605.51,-864.1"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_sync -->
<g id="edge37" 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="M1393.65,-936.5C1515.24,-928.48 1839.36,-904.21 1940,-867.64 1944.27,-866.09 1948.55,-864.16 1952.72,-861.99"/>
<polygon fill="#b30404" stroke="black" points="1954.67,-864.91 1961.66,-856.95 1951.23,-858.81 1954.67,-864.91"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_update -->
<g id="edge38" 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="M1300.46,-936.03C1111.82,-922.3 413.77,-871.29 403,-867.64 398.52,-866.13 394.04,-864.16 389.68,-861.93"/>
<polygon fill="#b30404" stroke="black" points="391.39,-858.87 380.95,-857.04 387.96,-864.98 391.39,-858.87"/>
</g>
<!-- ahriman_application_handlers_handler&#45;&gt;ahriman_application_handlers_user -->
<g id="edge39" 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="M1393.77,-937.52C1530.72,-931.51 1928.91,-910.71 2051,-867.64 2055.46,-866.07 2059.93,-864.06 2064.28,-861.81"/>
<polygon fill="#b30404" stroke="black" points="2066.01,-864.85 2073,-856.88 2062.57,-858.75 2066.01,-864.85"/>
</g>
<!-- ahriman_application_handlers_web -->
<g id="node23" class="node">
<title>ahriman_application_handlers_web</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="1954" cy="-224.74" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1954" y="-238.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1954" y="-227.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1954" y="-216.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">handlers.</text>
<text text-anchor="middle" x="1954" 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="edge40" 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="M1846,-493.48C1867.31,-454.72 1866.4,-442.07 1884,-401.5"/>
<path fill="none" stroke="black" d="M1884,-399.5C1889.98,-385.7 1892.47,-382.23 1903,-371.5 1922.44,-351.71 1972.85,-355.86 1954,-335.5"/>
<path fill="none" stroke="black" d="M1954,-334.5C1938.49,-317.76 1937.63,-292.58 1941.04,-270.67"/>
<polygon fill="#b30404" stroke="black" points="1944.53,-271.02 1942.94,-260.55 1937.65,-269.73 1944.53,-271.02"/>
</g>
<!-- ahriman_application_handlers_init&#45;&gt;ahriman_application_handlers -->
<g id="edge41" 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="M979.7,-805.44C940.7,-776.34 884.64,-729.75 903,-714.56"/>
</g>
<!-- ahriman_application_handlers_key_import&#45;&gt;ahriman_application_handlers -->
<g id="edge42" 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="M890.67,-795.17C883.69,-768.56 880.33,-733.32 903,-714.56"/>
</g>
<!-- ahriman_application_handlers_patch&#45;&gt;ahriman_application_handlers -->
<g id="edge43" class="edge">
<title>ahriman_application_handlers_patch&#45;&gt;ahriman_application_handlers</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1809.39,-807.52C1837.71,-787.41 1873.87,-754.85 1884,-714.56"/>
</g>
<!-- ahriman_application_handlers_rebuild&#45;&gt;ahriman_application_handlers -->
<g id="edge44" 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="M817.68,-799.62C839.17,-775.23 871.32,-740.78 903,-714.56"/>
</g>
<!-- ahriman_application_handlers_remove&#45;&gt;ahriman_application_handlers -->
<g id="edge45" 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="M715.78,-806.27C722.4,-802.06 729.34,-797.83 736,-794.1 807.73,-753.93 839.67,-766.98 903,-714.56"/>
</g>
<!-- ahriman_application_handlers_remove_unknown&#45;&gt;ahriman_application_handlers -->
<g id="edge46" 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="M1562.2,-805.45C1570.98,-801.37 1580.18,-797.39 1589,-794.1 1716.24,-746.67 1850.88,-846.25 1884,-714.56"/>
<path fill="none" stroke="black" d="M1884,-712.56C1910.91,-605.56 1877.15,-574.47 1860,-465.49 1855.47,-436.73 1836.32,-428.95 1846,-401.5"/>
</g>
<!-- ahriman_application_handlers_report&#45;&gt;ahriman_application_handlers -->
<g id="edge47" 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="M604.02,-805.53C610.77,-801.35 617.95,-797.32 625,-794.1 741.94,-740.8 804,-796.5 903,-714.56"/>
</g>
<!-- ahriman_application_handlers_search&#45;&gt;ahriman_application_handlers -->
<g id="edge48" 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="M7309.33,-794.48C7275.37,-671.22 7161.22,-266.18 7117,-225.74"/>
</g>
<!-- ahriman_application_handlers_setup&#45;&gt;ahriman_application_handlers -->
<g id="edge49" 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="M1879.56,-794.25C1877.77,-771.18 1877.43,-740.67 1884,-714.56"/>
</g>
<!-- ahriman_application_handlers_sign&#45;&gt;ahriman_application_handlers -->
<g id="edge50" 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="M492.53,-805.27C499.38,-801.06 506.73,-797.09 514,-794.1 677.27,-727.15 767.06,-827.08 903,-714.56"/>
</g>
<!-- ahriman_application_handlers_status&#45;&gt;ahriman_application_handlers -->
<g id="edge51" 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="M1313.47,-805.27C1306.62,-801.06 1299.27,-797.09 1292,-794.1 1128.73,-727.15 767.06,-827.08 903,-714.56"/>
</g>
<!-- ahriman_application_handlers_status_update&#45;&gt;ahriman_application_handlers -->
<g id="edge52" 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="M1694.44,-806.2C1701.91,-802.08 1709.65,-797.9 1717,-794.1 1790.03,-756.35 1863.95,-794.29 1884,-714.56"/>
</g>
<!-- ahriman_application_handlers_sync&#45;&gt;ahriman_application_handlers -->
<g id="edge53" 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="M1961.09,-805.19C1926.43,-778.52 1878.39,-736.86 1884,-714.56"/>
</g>
<!-- ahriman_application_handlers_update&#45;&gt;ahriman_application_handlers -->
<g id="edge54" 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="M381.42,-805.02C388.29,-800.83 395.66,-796.93 403,-794.1 613.02,-713.32 729.66,-858.04 903,-714.56"/>
<path fill="none" stroke="black" d="M903,-712.56C1072.98,-571.85 1768.53,-608.11 1846,-401.5"/>
<path fill="none" stroke="black" d="M1846,-399.5C1861.2,-303.88 1853.3,-273.84 1898,-187.97 1904.13,-176.19 1912.87,-164.78 1921.62,-154.95"/>
<polygon fill="#913030" stroke="black" points="1924.37,-157.13 1928.6,-147.42 1919.23,-152.38 1924.37,-157.13"/>
</g>
<!-- ahriman_application_handlers_user&#45;&gt;ahriman_application_handlers -->
<g id="edge55" 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="M2071.22,-806.27C2064.6,-802.06 2057.66,-797.83 2051,-794.1 1979.27,-753.93 1863.95,-794.29 1884,-714.56"/>
</g>
<!-- ahriman_application_handlers_web&#45;&gt;ahriman_application_handlers -->
<g id="edge56" 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="M1954,-187.72C1954,-179.48 1954,-170.69 1954,-162.35"/>
<polygon fill="#822b2b" stroke="black" points="1957.5,-162.11 1954,-152.11 1950.5,-162.11 1957.5,-162.11"/>
</g>
<!-- ahriman_application_lock -->
<g id="node24" class="node">
<title>ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="1939" cy="-1525.11" rx="46.84" ry="28.98"/>
<text text-anchor="middle" x="1939" y="-1533.61" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1939" y="-1522.61" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">application.</text>
<text text-anchor="middle" x="1939" 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="edge57" 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="M1897.08,-1511.81C1788.22,-1477.02 1504.23,-1366.74 1493,-1160.49"/>
</g>
<!-- ahriman_core -->
<g id="node25" class="node">
<title>ahriman_core</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="2461" cy="-2550.5" rx="42.94" ry="18"/>
<text text-anchor="middle" x="2461" 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="edge58" 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="M2417.79,-2549.83C2308.56,-2549.75 2013.23,-2543.69 1776,-2485.5 1722.38,-2472.35 1356.65,-2334.9 1316,-2297.54 1122.15,-2119.4 1102,-2008.46 1102,-1745.19 1102,-1745.19 1102,-1745.19 1102,-1633.65 1102,-1488.48 1185.45,-1425.81 1102,-1307.03"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_add -->
<g id="edge59" 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="M2417.84,-2549.05C2317.17,-2547.14 2059.63,-2537.14 1852,-2485.5 1785.05,-2468.85 1772.39,-2452.31 1708,-2427.52 1664.7,-2410.85 1652.73,-2409.62 1610,-2391.52 1565.7,-2372.76 1450.48,-2330.02 1415,-2297.54 1101.62,-2010.67 1252.4,-1791.38 1151,-1378.8 1110.31,-1213.25 1114.47,-1164.01 1035,-1013.18 1016.14,-977.39 960.2,-977.24 979,-941.41"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_clean -->
<g id="edge60" 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="M2418.11,-2548.24C2255.31,-2543.22 1681.2,-2523 1609,-2485.5 1594.71,-2478.08 1601.92,-2459.93 1586,-2457.51"/>
<path fill="none" stroke="black" d="M1586,-2455.51C1507.69,-2443.62 1488.5,-2438.08 1410,-2427.52 1337.55,-2417.78 1136.53,-2441.31 1083,-2391.52 1027.54,-2339.95 784.97,-1106.91 836,-1050.95"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_dump -->
<g id="edge61" 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="M2495.99,-2539.82C2521.54,-2533.26 2557.13,-2525.13 2589,-2521.5 3288.75,-2441.86 5057.67,-2559.84 5758,-2485.5 5820.23,-2478.9 5833.66,-2463.06 5896,-2457.51"/>
<path fill="none" stroke="black" d="M5896,-2455.51C5941.97,-2451.42 5950.69,-2436.3 5996,-2427.52 6139.11,-2399.78 6183.91,-2438.22 6322,-2391.52 6661.56,-2276.69 6785.08,-2206.64 6954,-1890.5 6955.23,-1888.2 7130,-1163.1 7130,-1160.49"/>
<path fill="none" stroke="black" d="M7130,-1158.49C7123.02,-1055.67 7089.79,-938.76 7069.98,-876.49"/>
<polygon fill="#f91010" stroke="black" points="7073.19,-875.06 7066.8,-866.61 7066.53,-877.2 7073.19,-875.06"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge62" 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="M1624,-2361.53C1609.24,-2354.41 1612.36,-2344.3 1600,-2333.54 1577.69,-2314.1 1565.96,-2317.37 1544,-2297.54 1464.66,-2225.92 1432.88,-2209.13 1394,-2109.57 1269.86,-1791.7 1354.78,-1684.05 1354,-1342.8 1353.93,-1310.12 1338.83,-1298.21 1354,-1269.26 1367.05,-1244.36 1388.27,-1255.07 1406,-1233.26"/>
<path fill="none" stroke="black" d="M1406,-1232.26C1435.4,-1191.66 1481.65,-1209.32 1493,-1160.49"/>
<path fill="none" stroke="black" d="M1493,-1158.49C1503.82,-1111.94 1525.95,-1085.58 1493,-1050.95"/>
<path fill="none" stroke="black" d="M1493,-1048.95C1463.08,-1017.51 1423.03,-988.74 1392.45,-968.88"/>
<polygon fill="#f91010" stroke="black" points="1393.99,-965.72 1383.69,-963.27 1390.22,-971.61 1393.99,-965.72"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_init -->
<g id="edge63" 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="M2418.04,-2549.59C2288.92,-2549.19 1893.4,-2543 1572,-2485.5 1480.9,-2469.21 1462.75,-2445.68 1372,-2427.52 1302.26,-2413.57 1108.31,-2437.44 1054,-2391.52 987.99,-2335.71 1023.84,-2287.7 1004,-2203.56 971.26,-2064.69 964.25,-2029.7 933,-1890.5 900.23,-1744.52 883.4,-1709.65 860,-1561.88 834.47,-1400.65 835.02,-1359.19 825,-1196.26 820.01,-1115.04 794.55,-1089.79 822,-1013.18 835.93,-974.31 854.59,-973.16 881,-941.41"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_key_import -->
<g id="edge64" 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="M2418.13,-2548.13C2242.29,-2542.34 1575.9,-2518.62 1368,-2485.5 1205.97,-2459.7 1129.77,-2504.72 1011,-2391.52 646.59,-2044.18 684,-1810.46 684,-1307.03 684,-1307.03 684,-1307.03 684,-1232.26 684,-1072.62 737.79,-1034.66 829,-903.64 838.74,-889.66 851.47,-876.14 863.62,-864.69"/>
<polygon fill="#f91010" stroke="black" points="866.09,-867.18 871.08,-857.83 861.35,-862.02 866.09,-867.18"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_patch -->
<g id="edge65" class="edge">
<title>ahriman_core&#45;&gt;ahriman_application_handlers_patch</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1866,-2455.51C1741.95,-2388.37 1718.29,-2337.15 1673,-2203.56 1664.73,-2179.15 1671.71,-2171.31 1673,-2145.57 1687.8,-1850.07 1649.93,-1754.58 1779,-1488.34 1815.94,-1412.13 1854.93,-1413.21 1902,-1342.8 1922.45,-1312.22 1923.06,-1301.92 1940,-1269.26 1956.84,-1236.79 1969.31,-1231.79 1978,-1196.26 1995.44,-1124.98 2005.19,-949.41 1968,-903.64 1927.48,-853.78 1886.81,-893.5 1828,-867.64 1823.9,-865.84 1819.76,-863.75 1815.7,-861.5"/>
<polygon fill="#f91010" stroke="black" points="1817.34,-858.41 1806.95,-856.37 1813.8,-864.45 1817.34,-858.41"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_rebuild -->
<g id="edge66" 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="M2418.15,-2547.75C2183.69,-2538.19 1066.19,-2492.3 1050,-2485.5 993.46,-2461.78 991.72,-2435.5 949,-2391.52 544,-1974.6 487.37,-1685.69 632,-1122.72 657.18,-1024.7 723.1,-924.3 762.02,-870.91"/>
<polygon fill="#f91010" stroke="black" points="764.92,-872.88 768.03,-862.75 759.28,-868.73 764.92,-872.88"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_remove -->
<g id="edge67" 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="M722,-2361.53C651.03,-2315.6 494,-1720.19 494,-1635.65 494,-1635.65 494,-1635.65 494,-1414.57 494,-1309.09 385.51,-1019.88 456,-941.41"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge68" 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="M1866,-2455.51C1838.45,-2443.06 1831.62,-2439.82 1804,-2427.52 1767.64,-2411.33 1753.46,-2415.9 1722,-2391.52 1709.49,-2381.83 1713.1,-2372.41 1700,-2363.53"/>
<path fill="none" stroke="black" d="M1700,-2361.53C1675.64,-2345.01 1602.58,-2320.38 1584,-2297.54 1556.41,-2263.63 1562.21,-2246.67 1555,-2203.56 1510.99,-1940.26 1513.38,-1086.78 1514.66,-878.19"/>
<polygon fill="#f91010" stroke="black" points="1518.16,-877.92 1514.72,-867.9 1511.16,-877.88 1518.16,-877.92"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_report -->
<g id="edge69" 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="M2418.29,-2547.77C2176.85,-2538.02 992.99,-2490.02 975,-2485.5 959.87,-2481.7 734.88,-2372.34 722,-2363.53"/>
<path fill="none" stroke="black" d="M722,-2361.53C708.45,-2352.31 709.78,-2344.93 698,-2333.54 679.58,-2315.74 668.17,-2318.17 653,-2297.54 445.1,-2014.78 458.88,-1900.33 366,-1561.88 348.68,-1498.76 342,-1482.03 342,-1416.57 342,-1416.57 342,-1416.57 342,-1305.03 342,-1213.11 384.31,-975.21 442,-903.64 464.7,-875.48 483.56,-885.54 515,-867.64 518.83,-865.46 522.77,-863.12 526.68,-860.72"/>
<polygon fill="#f91010" stroke="black" points="528.56,-863.68 535.18,-855.4 524.84,-857.74 528.56,-863.68"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_search -->
<g id="edge70" 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="M5896,-2455.51C6363.11,-2412.2 6520.51,-2447.85 6921,-2203.56 7142.38,-2068.52 7282,-2004.5 7282,-1745.19 7282,-1745.19 7282,-1745.19 7282,-1414.57 7282,-1370.88 7347.94,-1275.77 7358,-1233.26"/>
<path fill="none" stroke="black" d="M7358,-1232.26C7371.42,-1103.56 7344.99,-951.42 7329.36,-877.19"/>
<polygon fill="#f91010" stroke="black" points="7332.74,-876.29 7327.23,-867.24 7325.9,-877.75 7332.74,-876.29"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge71" 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="M1938,-2361.53C1969.99,-2249.92 1884.47,-2224.64 1869,-2109.57 1843.88,-1922.77 1715.38,-1878.29 1883,-1488.34 1950.94,-1330.27 2531.08,-1081.36 2431,-941.41"/>
<path fill="none" stroke="black" d="M2431,-939.41C2410.78,-914.85 2399.36,-913.15 2369,-903.64 2185.98,-846.35 2120.43,-929.8 1939,-867.64 1934.52,-866.11 1930.05,-864.13 1925.69,-861.89"/>
<polygon fill="#f91010" stroke="black" points="1927.4,-858.84 1916.97,-856.99 1923.97,-864.94 1927.4,-858.84"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_sign -->
<g id="edge72" 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="M2418.29,-2547.76C2309.5,-2543.35 2013.06,-2531.33 1766,-2521.5 1664.22,-2517.46 947.97,-2513.38 850,-2485.5 686.91,-2439.1 633.94,-2421.27 518,-2297.54 368.54,-2138.04 304,-2073.31 304,-1854.73 304,-1854.73 304,-1854.73 304,-1743.19 304,-1467.35 227.01,-1391.27 290,-1122.72 300.27,-1078.93 392.66,-984.58 380,-941.41"/>
<path fill="none" stroke="black" d="M380,-939.41C371.35,-909.74 393.17,-881.79 416.05,-861.82"/>
<polygon fill="#f91010" stroke="black" points="418.36,-864.45 423.81,-855.37 413.89,-859.07 418.36,-864.45"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_status -->
<g id="edge73" 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="M2419.45,-2545.27C2289.82,-2532.03 1900.71,-2491.86 1889,-2485.5 1874.85,-2477.83 1880.67,-2464.15 1866,-2457.51"/>
<path fill="none" stroke="black" d="M1866,-2455.51C1838.45,-2443.06 1832.29,-2438.18 1804,-2427.52 1752.69,-2408.2 1737.31,-2410.84 1686,-2391.52 1657.71,-2380.87 1651.31,-2376.5 1624,-2363.53"/>
<path fill="none" stroke="black" d="M1624,-2361.53C1609.2,-2354.5 1613.79,-2342.4 1600,-2333.54 1551.36,-2302.28 1522.53,-2330.45 1475,-2297.54 1365.6,-2221.81 1274.61,-1929.42 1264,-1890.5 1186.6,-1606.56 1241.1,-1522.43 1192,-1232.26 1189.23,-1215.91 1114.32,-954.1 1125,-941.41"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge74" 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="M1700,-2361.53C1499.17,-2216.63 1560.76,-2063.69 1582,-1816.96 1590.48,-1718.5 1588.37,-1691.5 1620,-1597.88 1655.13,-1493.89 1659.07,-1459.01 1734,-1378.8 1754.97,-1356.35 1777.96,-1369.59 1793,-1342.8 1809,-1314.3 1798.04,-1301.55 1793,-1269.26 1769.79,-1120.63 1704.74,-953.49 1672.14,-875.87"/>
<polygon fill="#f91010" stroke="black" points="1675.26,-874.26 1668.14,-866.41 1668.81,-876.98 1675.26,-874.26"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_sync -->
<g id="edge75" 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="M2449.88,-2532.78C2439.14,-2514.77 2424.92,-2485 2428,-2457.51"/>
<path fill="none" stroke="black" d="M2428,-2455.51C2443.43,-2317.65 2442.13,-2274.54 2391,-2145.57 2376.39,-2108.71 2339.87,-2113.41 2338,-2073.8"/>
<path fill="none" stroke="black" d="M2338,-2071.8C2340.52,-2019.77 2586.36,-1730.62 2633,-1707.42 2739.02,-1654.67 2813.5,-1755.38 2897,-1671.42 2942.93,-1625.24 2916,-1591.24 2916,-1526.11 2916,-1526.11 2916,-1526.11 2916,-1232.26 2916,-1182.85 2907.58,-1163.83 2935,-1122.72 2968.02,-1073.23 3032.07,-1108.27 3048,-1050.95"/>
<path fill="none" stroke="black" d="M3048,-1048.95C3105.41,-830.98 2263.34,-940.42 2050,-867.64 2045.52,-866.12 2041.04,-864.14 2036.69,-861.9"/>
<polygon fill="#f91010" stroke="black" points="2038.4,-858.85 2027.96,-857.01 2034.97,-864.95 2038.4,-858.85"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_update -->
<g id="edge76" 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="M2418.3,-2547.67C2309.51,-2543.04 2013.09,-2530.56 1766,-2521.5 1645.02,-2517.07 791.41,-2525.1 677,-2485.5 610.3,-2462.42 604.36,-2435.3 549,-2391.52 316.24,-2207.47 152,-2151.46 152,-1854.73 152,-1854.73 152,-1854.73 152,-1048.95 152,-978.74 166.59,-955.44 214,-903.64 236.23,-879.35 268.63,-861.69 296,-849.96"/>
<polygon fill="#f91010" stroke="black" points="297.54,-853.12 305.45,-846.06 294.87,-846.65 297.54,-853.12"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_user -->
<g id="edge77" 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="M2338,-2071.8C2339.23,-2027.26 2372.61,-2027.11 2408,-2000.03 2568.21,-1877.44 2573.48,-1795.45 2755,-1707.42 2826.45,-1672.77 2860.16,-1709.21 2930,-1671.42 2970.5,-1649.5 2965.4,-1624.48 3003,-1597.88 3033.51,-1576.29 3059.01,-1593.46 3079,-1561.88 3079,-1561.88 3079,-1378.8 3079,-1378.8 3082.34,-1329.78 3061.68,-1306.28 3094,-1269.26 3212.64,-1133.39 3381.64,-1308.31 3485,-1160.49"/>
<path fill="none" stroke="black" d="M3485,-1158.49C3511.66,-1118.82 3443.47,-1074.6 3485,-1050.95"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_handlers_web -->
<g id="edge78" 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="M2498.25,-2541.35C2523.78,-2535.76 2558.44,-2528.18 2589,-2521.5 2662.33,-2505.49 2682.75,-2509.12 2754,-2485.5 2813.28,-2465.85 2821.36,-2442.48 2882,-2427.52 3148.7,-2361.75 3237.36,-2475.19 3499,-2391.52 3527.06,-2382.55 3933.46,-2135.19 3948,-2109.57 4012.23,-1996.47 3970.12,-1945.9 3953,-1816.96 3942.02,-1734.21 3904,-1719.12 3904,-1635.65 3904,-1635.65 3904,-1635.65 3904,-1158.49 3904,-344.44 2969.87,-743.07 2186,-523.47 2046.61,-484.42 1826.39,-534.29 1884,-401.5"/>
</g>
<!-- ahriman_core&#45;&gt;ahriman_application_lock -->
<g id="edge79" 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="M1866,-2455.51C1820.34,-2430.8 1938.68,-2415.44 1938,-2363.53"/>
<path fill="none" stroke="black" d="M1938,-2361.53C1936.47,-2245.44 1884.47,-2224.64 1869,-2109.57 1851.15,-1976.78 1936.91,-1875.26 1938,-1635.65"/>
</g>
<!-- ahriman_models_auth_settings -->
<g id="node66" class="node">
<title>ahriman_models_auth_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="6408" cy="-2072.8" rx="53.07" ry="28.98"/>
<text text-anchor="middle" x="6408" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6408" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="6408" 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="edge80" 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="M2495.99,-2539.84C2521.54,-2533.28 2557.13,-2525.16 2589,-2521.5 3199.5,-2451.51 4744.94,-2567.09 5354,-2485.5 5455.93,-2471.85 5476.4,-2443.42 5578,-2427.52 5716.54,-2405.85 6082.86,-2454.8 6208,-2391.52 6237.85,-2376.42 6231.9,-2356.74 6256,-2333.54 6274.95,-2315.29 6286.5,-2318.03 6303,-2297.54 6349.38,-2239.94 6380.91,-2158.49 6396.55,-2111.41"/>
<polygon fill="#f91010" stroke="black" points="6399.97,-2112.21 6399.74,-2101.62 6393.31,-2110.05 6399.97,-2112.21"/>
</g>
<!-- ahriman_models_build_status -->
<g id="node67" class="node">
<title>ahriman_models_build_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e50505" stroke="black" cx="4329" cy="-2362.53" rx="48.58" ry="28.98"/>
<text text-anchor="middle" x="4329" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4329" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="4329" 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="edge81" 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="M2496.3,-2540.04C2521.84,-2533.63 2557.3,-2525.6 2589,-2521.5 2780.25,-2496.81 3268.37,-2529.99 3456,-2485.5 3485.42,-2478.53 3487.87,-2460.03 3518,-2457.51"/>
<path fill="none" stroke="black" d="M3518,-2455.51C3563.99,-2451.67 3572.6,-2435.85 3618,-2427.52 3857.27,-2383.65 4147.6,-2369.44 4270.04,-2365.19"/>
<polygon fill="#f91010" stroke="black" points="4270.43,-2368.68 4280.31,-2364.84 4270.2,-2361.68 4270.43,-2368.68"/>
</g>
<!-- ahriman_models_package -->
<g id="node70" class="node">
<title>ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#950303" stroke="black" cx="3262" cy="-2362.53" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3262" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3262" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3262" 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="edge82" 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="M2454.95,-2532.5C2446.98,-2507.26 2437.13,-2462.33 2466,-2457.51"/>
</g>
<!-- ahriman_models_package_source -->
<g id="node72" class="node">
<title>ahriman_models_package_source</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="1154" cy="-2362.53" rx="62.45" ry="28.98"/>
<text text-anchor="middle" x="1154" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1154" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="1154" 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="edge83" 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="M1586,-2455.51C1453.96,-2435.45 1301.62,-2400.11 1217.73,-2379.57"/>
<polygon fill="#f91010" stroke="black" points="1218.39,-2376.13 1207.84,-2377.14 1216.72,-2382.92 1218.39,-2376.13"/>
</g>
<!-- ahriman_models_report_settings -->
<g id="node73" class="node">
<title>ahriman_models_report_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b03a3a" stroke="black" cx="3432" cy="-2362.53" rx="57.97" ry="28.98"/>
<text text-anchor="middle" x="3432" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3432" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3432" 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="edge84" 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="M2486.84,-2535.8C2538.04,-2509.42 2656.75,-2451.99 2764,-2427.52 3000.67,-2373.52 3068.79,-2426.56 3309,-2391.52 3329.58,-2388.52 3351.81,-2383.89 3371.64,-2379.26"/>
<polygon fill="#f91010" stroke="black" points="3372.55,-2382.64 3381.47,-2376.92 3370.93,-2375.83 3372.55,-2382.64"/>
</g>
<!-- ahriman_models_sign_settings -->
<g id="node75" class="node">
<title>ahriman_models_sign_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="2546" cy="-2362.53" rx="52.15" ry="28.98"/>
<text text-anchor="middle" x="2546" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2546" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2546" 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="edge85" 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="M2428,-2455.51C2431.85,-2421.12 2463.65,-2397.62 2493.26,-2382.98"/>
<polygon fill="#f91010" stroke="black" points="2494.78,-2386.13 2502.35,-2378.72 2491.81,-2379.8 2494.78,-2386.13"/>
</g>
<!-- ahriman_models_upload_settings -->
<g id="node77" class="node">
<title>ahriman_models_upload_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b03a3a" stroke="black" cx="5352" cy="-2362.53" rx="60.21" ry="28.98"/>
<text text-anchor="middle" x="5352" y="-2371.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5352" y="-2360.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5352" 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="edge86" 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="M2496.29,-2540C2521.83,-2533.56 2557.29,-2525.52 2589,-2521.5 2805.42,-2494.09 3358.37,-2538.43 3570,-2485.5 3627.08,-2471.23 3631.84,-2441.46 3689,-2427.52 3844.17,-2389.68 4966.72,-2403.35 5126,-2391.52 5179.7,-2387.53 5240.23,-2379.87 5285.12,-2373.56"/>
<polygon fill="#f91010" stroke="black" points="5285.62,-2377.03 5295.03,-2372.16 5284.64,-2370.1 5285.62,-2377.03"/>
</g>
<!-- ahriman_web_middlewares_auth_handler -->
<g id="node84" class="node">
<title>ahriman_web_middlewares_auth_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="6942" cy="-713.56" rx="52.15" ry="36.54"/>
<text text-anchor="middle" x="6942" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6942" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="6942" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">middlewares.</text>
<text text-anchor="middle" x="6942" 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="edge87" 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="M2495.99,-2539.83C2521.54,-2533.26 2557.13,-2525.14 2589,-2521.5 2923.52,-2483.34 5289.26,-2553.56 5619,-2485.5 5684.56,-2471.97 5692.85,-2442.9 5758,-2427.52 5872.03,-2400.61 6178.23,-2441.92 6284,-2391.52 6315.79,-2376.38 6312.45,-2357.77 6338,-2333.54 6356.08,-2316.39 6362.27,-2313.99 6381,-2297.54 6512.2,-2182.29 6940,-1919.82 6940,-1745.19 6940,-1745.19 6940,-1745.19 6940,-1633.65 6940,-1420.66 6965.53,-1367.41 7016,-1160.49"/>
</g>
<!-- ahriman_web_views_base -->
<g id="node88" class="node">
<title>ahriman_web_views_base</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#950303" stroke="black" cx="5523" cy="-830.87" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5523" y="-844.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5523" y="-833.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5523" y="-822.87" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5523" 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="edge88" 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="M2496,-2539.87C2521.55,-2533.33 2557.14,-2525.21 2589,-2521.5 3073.57,-2465.12 4297.5,-2521.66 4784,-2485.5 4942.28,-2473.74 5340.17,-2437.77 5492,-2391.52 5582.12,-2364.07 5632.3,-2377.57 5682,-2297.54 5695.6,-2275.65 5695.15,-2261.72 5682,-2239.56 5664.94,-2210.82 5633.52,-2232.01 5616,-2203.56 5587.08,-2156.59 5609.12,-1761.81 5600,-1707.42 5577.62,-1573.97 5510,-1551.88 5510,-1416.57 5510,-1416.57 5510,-1416.57 5510,-1305.03 5510,-1238.61 5559.04,-1225.99 5548,-1160.49"/>
<path fill="none" stroke="black" d="M5548,-1158.49C5523.23,-1059.32 5451.27,-1041.51 5472,-941.41"/>
</g>
<!-- ahriman_web_views_index -->
<g id="node89" class="node">
<title>ahriman_web_views_index</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4919" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4919" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4919" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4919" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4919" 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="edge89" 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="M3518,-2455.51C3542.61,-2453.46 3542.26,-2434.34 3566,-2427.52 3812.39,-2356.78 4466.18,-2433.9 4719,-2391.52 4899.37,-2361.29 5112,-2452.43 5112,-2269.55 5112,-2269.55 5112,-2269.55 5112,-2173.57 5112,-2111.52 5111.8,-2093.34 5088,-2036.03 5034.78,-1907.89 4965.49,-1907.24 4908,-1780.96 4804.16,-1552.88 4825.96,-1478.42 4774,-1233.26 4736.58,-1056.67 4610.95,-981.45 4712,-831.87"/>
</g>
<!-- ahriman_web_views_service_reload_auth -->
<g id="node92" class="node">
<title>ahriman_web_views_service_reload_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="6649" cy="-713.56" rx="47.25" ry="44.6"/>
<text text-anchor="middle" x="6649" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6649" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="6649" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="6649" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="6649" 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="edge90" 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="M2495.99,-2539.83C2521.54,-2533.27 2557.13,-2525.15 2589,-2521.5 3227.33,-2448.5 4842.14,-2562.53 5480,-2485.5 5593.24,-2471.83 5617.2,-2444.43 5730,-2427.52 5843.68,-2410.48 6143.75,-2444.04 6246,-2391.52 6275.76,-2376.24 6270.69,-2357.54 6294,-2333.54 6310.9,-2316.14 6317.26,-2314.07 6335,-2297.54 6421.89,-2216.55 6454.51,-2205.18 6525,-2109.57 6557.57,-2065.4 6559.77,-2050.21 6582,-2000.03 6624.04,-1905.12 6630.63,-1879.59 6663,-1780.96 6704.48,-1654.56 6806.65,-1594.14 6726,-1488.34 6689.4,-1440.32 6631.6,-1500.36 6595,-1452.34 6575.19,-1426.35 6588,-1410.73 6595,-1378.8 6621.85,-1256.4 6630.78,-1217.29 6713,-1122.72 6732.41,-1100.39 6754.82,-1112.69 6769,-1086.72 6827.38,-979.78 6683.29,-952.75 6668,-831.87"/>
</g>
<!-- ahriman_web_views_status_package -->
<g id="node98" class="node">
<title>ahriman_web_views_status_package</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5450" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5450" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5450" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5450" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5450" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="5450" 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="edge91" 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="M2496.01,-2539.99C2521.57,-2533.5 2557.16,-2525.4 2589,-2521.5 3148.6,-2452.98 3293.8,-2511.11 3857,-2485.5 4269.38,-2466.76 4371.92,-2452.05 4784,-2427.52 4854.77,-2423.31 5364.34,-2434.13 5421,-2391.52 5500.34,-2331.86 5465.75,-2129.03 5469,-2000.03 5471.05,-1918.61 5476.52,-1896.91 5461,-1816.96 5396.14,-1482.79 5281.25,-1423.24 5230,-1086.72 5217.75,-1006.28 5198.11,-978.5 5230,-903.64 5257.54,-839 5288.35,-837 5344,-794.1 5368.33,-775.35 5378.5,-776.64 5403,-758.1 5406.54,-755.43 5410.12,-752.53 5413.63,-749.54"/>
<polygon fill="#f91010" stroke="black" points="5415.99,-752.13 5421.2,-742.91 5411.37,-746.87 5415.99,-752.13"/>
</g>
<!-- ahriman_web_views_user_login -->
<g id="node102" class="node">
<title>ahriman_web_views_user_login</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="6098" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="6098" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6098" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="6098" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="6098" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user.</text>
<text text-anchor="middle" x="6098" 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="edge92" 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="M6194,-2361.53C6205.35,-2353.49 6201.64,-2345.91 6208,-2333.54 6216.27,-2317.45 6220.92,-2314.58 6227,-2297.54 6255.63,-2217.26 6256.51,-2194.38 6265,-2109.57 6268.25,-2077.05 6278.3,-2065.89 6265,-2036.03 6255.27,-2014.19 6234.73,-2021.88 6225,-2000.03 6158.61,-1850.97 6214.69,-1789.17 6270,-1635.65"/>
</g>
<!-- ahriman_web_views_user_logout -->
<g id="node103" class="node">
<title>ahriman_web_views_user_logout</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5910" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5910" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5910" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5910" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5910" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">user.</text>
<text text-anchor="middle" x="5910" 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="edge93" 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="M2495.99,-2539.85C2521.54,-2533.3 2557.14,-2525.18 2589,-2521.5 3135.21,-2458.46 4516.23,-2543.47 5063,-2485.5 5194.14,-2471.6 5223.12,-2443.72 5354,-2427.52 5446.9,-2416.03 6119.38,-2420.04 6194,-2363.53"/>
<path fill="none" stroke="black" d="M6194,-2361.53C6227.18,-2336.79 6110.11,-2040.97 6104,-2000.03 6101.53,-1983.45 6050.59,-807.86 6041,-794.1 6017.76,-760.79 5991.06,-780.23 5957,-758.1 5953.28,-755.69 5949.58,-752.97 5945.98,-750.09"/>
<polygon fill="#f91010" stroke="black" points="5948.2,-747.39 5938.29,-743.63 5943.69,-752.74 5948.2,-747.39"/>
</g>
<!-- ahriman_web_web -->
<g id="node104" class="node">
<title>ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5358" cy="-400.5" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="5358" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5358" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5358" 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="edge94" 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="M2497.26,-2540.77C2522.81,-2534.82 2557.87,-2527.05 2589,-2521.5 3005.53,-2447.37 3127.66,-2516.02 3532,-2391.52 3711.7,-2336.19 3764.66,-2321.61 3911,-2203.56 4050.33,-2091.16 4045.26,-1994.7 4024,-1816.96 4014.15,-1734.62 3980,-1718.57 3980,-1635.65 3980,-1635.65 3980,-1635.65 3980,-1158.49 3980,-923.79 4083.25,-861.82 4266,-714.56"/>
<path fill="none" stroke="black" d="M4266,-712.56C4347.94,-630.53 4398.07,-652.5 4500,-597.24"/>
<path fill="none" stroke="black" d="M4500,-595.24C4693.47,-490.35 4775.8,-563.8 4985,-495.48"/>
<path fill="none" stroke="black" d="M4985,-493.48C5100.27,-455.83 5239.94,-425.27 5311.22,-410.71"/>
<polygon fill="#f91010" stroke="black" points="5312.12,-414.1 5321.23,-408.68 5310.73,-407.24 5312.12,-414.1"/>
</g>
<!-- ahriman_core_alpm -->
<g id="node26" class="node">
<title>ahriman_core_alpm</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#ce3b3b" stroke="black" cx="2636" cy="-2550.5" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2636" y="-2559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2636" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2636" y="-2537" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">alpm</text>
</g>
<!-- ahriman_core_repository_properties -->
<g id="node47" class="node">
<title>ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="2844" cy="-1634.65" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="2844" y="-1648.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2844" y="-1637.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2844" y="-1626.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="2844" 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="edge95" 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="M2640.08,-2521.58C2644.98,-2477.25 2648.03,-2390 2607,-2333.54 2585.27,-2303.63 2558.63,-2323.19 2532,-2297.54 2498,-2264.78 2447.77,-2154.41 2433,-2109.57 2397.14,-2000.75 2374.96,-1967.72 2394,-1854.73"/>
</g>
<!-- ahriman_core_alpm&#45;&gt;ahriman_models_package -->
<g id="edge96" 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="M2658.8,-2526.85C2679.14,-2507.28 2710.22,-2478.86 2740,-2457.51"/>
<path fill="none" stroke="black" d="M2740,-2455.51C2753.32,-2445.97 2749.58,-2435.31 2764,-2427.52 2841.1,-2385.91 3104.17,-2370.19 3213.62,-2365.36"/>
<polygon fill="#ce3b3b" stroke="black" points="3213.88,-2368.85 3223.72,-2364.93 3213.58,-2361.86 3213.88,-2368.85"/>
</g>
<!-- ahriman_core_alpm_pacman -->
<g id="node27" class="node">
<title>ahriman_core_alpm_pacman</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b42d2d" stroke="black" cx="2570" cy="-2652.26" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2570" y="-2666.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2570" y="-2655.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2570" y="-2644.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">alpm.</text>
<text text-anchor="middle" x="2570" 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="edge97" 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="M2534.98,-2636.71C2488.82,-2617.38 2412.95,-2585.01 2409,-2579.49 2352.7,-2500.72 2416.26,-2230.62 2370,-2145.57 2357.59,-2122.77 2335.37,-2132.91 2324,-2109.57 2309.68,-2080.19 2318.01,-2068.17 2324,-2036.03 2339.82,-1951.12 2373.03,-1938.52 2394,-1854.73"/>
<path fill="none" stroke="black" d="M2394,-1852.73C2399.14,-1805.21 2358.63,-1777.34 2394,-1745.19"/>
</g>
<!-- ahriman_core_alpm_pacman&#45;&gt;ahriman_models_package -->
<g id="edge98" 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="M2607.19,-2642.82C2655.28,-2631.33 2741.15,-2608.77 2811,-2579.49 2860.16,-2558.88 2868.39,-2545.48 2916,-2521.5 3023.93,-2467.16 3154.36,-2409.79 3219.97,-2381.49"/>
<polygon fill="#b42d2d" stroke="black" points="3221.37,-2384.69 3229.17,-2377.52 3218.6,-2378.26 3221.37,-2384.69"/>
</g>
<!-- ahriman_core_alpm_repo -->
<g id="node28" class="node">
<title>ahriman_core_alpm_repo</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="2158" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2158" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2158" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2158" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">alpm.</text>
<text text-anchor="middle" x="2158" 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="edge99" 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="M2149.56,-2036.72C2143.94,-2006.63 2139.63,-1962.56 2152,-1926.5 2158.58,-1907.32 2168.12,-1906.92 2180,-1890.5 2191.22,-1874.98 2190.2,-1867.99 2204,-1854.73"/>
</g>
<!-- ahriman_core_auth -->
<g id="node29" class="node">
<title>ahriman_core_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="6336" cy="-1159.49" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="6336" y="-1167.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6336" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="6336" 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="edge100" 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="M6373.92,-1156.06C6466.94,-1149.48 6703.64,-1128.95 6769,-1086.72 6827.77,-1048.75 6898.18,-850.02 6927.79,-759.52"/>
<polygon fill="#f91010" stroke="black" points="6931.18,-760.41 6930.94,-749.82 6924.52,-758.24 6931.18,-760.41"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_base -->
<g id="edge101" 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="M6297.75,-1157.8C6226.33,-1155.15 6069.32,-1142.83 5952,-1086.72 5906.63,-1065.02 5907.6,-1041.45 5866,-1013.18 5764.58,-944.27 5633.95,-881.68 5566.94,-851.27"/>
<polygon fill="#f91010" stroke="black" points="5568.08,-847.94 5557.53,-847.02 5565.2,-854.32 5568.08,-847.94"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_index -->
<g id="edge102" 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="M6297.91,-1155.84C6199.37,-1148.51 5938.4,-1125.83 5862,-1086.72 5821.28,-1065.88 5829.06,-1036.98 5790,-1013.18 5743.54,-984.87 5724.82,-993.74 5673,-977.18 5378.19,-882.98 5299.53,-872.61 5012,-758.1 4995.4,-751.5 4977.55,-743.39 4961.97,-735.97"/>
<polygon fill="#f91010" stroke="black" points="4963.12,-732.64 4952.59,-731.46 4960.08,-738.95 4963.12,-732.64"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge103" 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="M6353.5,-1133.67C6404.25,-1061.69 6552.01,-852.11 6617.33,-759.48"/>
<polygon fill="#f91010" stroke="black" points="6620.3,-761.34 6623.2,-751.15 6614.57,-757.31 6620.3,-761.34"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_user_login -->
<g id="edge104" 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="M6346.12,-1131.34C6366.09,-1073 6404.57,-932.83 6355,-831.87"/>
<path fill="none" stroke="black" d="M6355,-829.87C6345.51,-813.25 6346.19,-805.76 6331,-794.1 6275.64,-751.63 6196.13,-730.98 6145.79,-721.59"/>
<polygon fill="#f91010" stroke="black" points="6146.28,-718.12 6135.82,-719.81 6145.04,-725.01 6146.28,-718.12"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge105" 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="M6326.22,-1131.44C6305.19,-1074.46 6252.79,-938.56 6194,-831.87"/>
</g>
<!-- ahriman_core_auth&#45;&gt;ahriman_web_web -->
<g id="edge106" 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="M6355,-829.87C6152.3,-474.95 5577.09,-413.94 5406.35,-403.58"/>
<polygon fill="#f91010" stroke="black" points="5406.35,-400.08 5396.17,-403 5405.95,-407.07 5406.35,-400.08"/>
</g>
<!-- ahriman_core_auth_auth -->
<g id="node30" class="node">
<title>ahriman_core_auth_auth</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#910707" stroke="black" cx="6616" cy="-1744.19" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="6616" y="-1758.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6616" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="6616" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="6616" y="-1725.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth</text>
</g>
<!-- ahriman_core_auth_mapping -->
<g id="node32" class="node">
<title>ahriman_core_auth_mapping</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b2222" stroke="black" cx="6446" cy="-1634.65" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="6446" y="-1648.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6446" y="-1637.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="6446" y="-1626.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="6446" 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="edge107" 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="M6575.87,-1717.8C6548.81,-1700.68 6513.24,-1678.18 6486.16,-1661.06"/>
<polygon fill="#910707" stroke="black" points="6574.1,-1720.82 6584.42,-1723.21 6577.84,-1714.91 6574.1,-1720.82"/>
<polygon fill="#910707" stroke="black" points="6488.02,-1658.09 6477.7,-1655.7 6484.28,-1664 6488.02,-1658.09"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge108" 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="M6712,-1524.11C6757.52,-1455.75 6890.89,-1299.08 6940,-1233.26"/>
<path fill="none" stroke="black" d="M6940,-1232.26C6956.6,-1207.32 6976.62,-1218.23 6997,-1196.26 7009.24,-1183.06 7011.73,-1177.98 7016,-1160.49"/>
<path fill="none" stroke="black" d="M7016,-1158.49C7027.32,-1112.06 7002.74,-1096.87 7016,-1050.95"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_views_base -->
<g id="edge109" 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="M6619.15,-1707.48C6621.89,-1652.32 6618.32,-1546.67 6559,-1488.34 6386.86,-1319.1 6264.57,-1421.66 6027,-1378.8 5924.31,-1360.27 5892.88,-1378.95 5795,-1342.8 5736.68,-1321.26 5731.52,-1297.25 5676,-1269.26 5637.53,-1249.86 5615.02,-1265.1 5586,-1233.26"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge110" 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="M6628.34,-1709.37C6644.84,-1665.71 6676.22,-1588.01 6712,-1526.11"/>
<path fill="none" stroke="black" d="M6712,-1524.11C6785.36,-1413.64 6735.92,-1359.28 6774,-1232.26 6793.95,-1165.72 6818.11,-1154.98 6831,-1086.72 6842.99,-1023.25 6851.3,-1001.66 6828,-941.41"/>
</g>
<!-- ahriman_core_auth_auth&#45;&gt;ahriman_web_web -->
<g id="edge111" 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="M6644.18,-1719.03C6723.98,-1648.5 6950.84,-1432.86 7030,-1196.26 7071.26,-1072.93 7075.26,-1025.57 7030,-903.64 7022.65,-883.85 7006.35,-887.44 6999,-867.64 6987.63,-837 6994.42,-826.47 6999,-794.1 7004.16,-757.67 7029.62,-750.56 7022,-714.56"/>
<path fill="none" stroke="black" d="M7022,-712.56C7010.08,-662.71 7043.17,-643.92 7022,-597.24"/>
</g>
<!-- ahriman_core_auth_helpers -->
<g id="node31" class="node">
<title>ahriman_core_auth_helpers</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#d92626" stroke="black" cx="6108" cy="-1049.95" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="6108" y="-1063.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6108" y="-1052.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="6108" y="-1041.95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="6108" 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="edge112" 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="M6127.81,-1017.95C6139.51,-997.22 6152.68,-968.81 6156,-941.41"/>
<path fill="none" stroke="black" d="M6156,-939.41C6166.72,-851 6099.2,-830.7 6018,-794.1 5916.03,-748.14 5120.73,-784.35 5012,-758.1 4994.33,-753.84 4975.97,-746.06 4960.29,-738.25"/>
<polygon fill="#d92626" stroke="black" points="4961.88,-735.13 4951.39,-733.67 4958.68,-741.35 4961.88,-735.13"/>
</g>
<!-- ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_user_login -->
<g id="edge113" 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="M6134.47,-1023.21C6146.6,-1010.3 6160.37,-993.87 6170,-977.18 6211.52,-905.2 6245.81,-868.11 6208,-794.1 6194.31,-767.31 6166.91,-747.45 6142.88,-734.28"/>
<polygon fill="#d92626" stroke="black" points="6144.36,-731.1 6133.87,-729.56 6141.11,-737.3 6144.36,-731.1"/>
</g>
<!-- ahriman_core_auth_helpers&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge114" 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="M6156,-939.41C6162.1,-889.09 6218.47,-876.27 6194,-831.87"/>
<path fill="none" stroke="black" d="M6194,-829.87C6161.56,-771.01 5989.56,-774.85 5957,-758.1 5953.16,-756.13 5949.41,-753.75 5945.8,-751.14"/>
<polygon fill="#d92626" stroke="black" points="5947.68,-748.17 5937.67,-744.7 5943.33,-753.65 5947.68,-748.17"/>
</g>
<!-- ahriman_core_auth_oauth -->
<g id="node33" class="node">
<title>ahriman_core_auth_oauth</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b2222" stroke="black" cx="6512" cy="-1525.11" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="6512" y="-1539.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6512" y="-1528.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="6512" y="-1517.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">auth.</text>
<text text-anchor="middle" x="6512" 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="edge116" 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="M6465.09,-1602.54C6472.14,-1591.06 6480.22,-1577.89 6487.67,-1565.76"/>
<polygon fill="#8b2222" stroke="black" points="6490.71,-1567.5 6492.95,-1557.14 6484.74,-1563.84 6490.71,-1567.5"/>
</g>
<!-- ahriman_core_auth_oauth&#45;&gt;ahriman_core_auth_auth -->
<g id="edge117" 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="M6524.99,-1559.84C6536.79,-1589.64 6555.19,-1634.06 6574,-1671.42 6579.32,-1681.99 6585.54,-1693.15 6591.54,-1703.44"/>
<polygon fill="#8b2222" stroke="black" points="6588.63,-1705.39 6596.73,-1712.22 6594.66,-1701.83 6588.63,-1705.39"/>
</g>
<!-- ahriman_core_auth_oauth&#45;&gt;ahriman_web_views_user_login -->
<g id="edge118" 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="M6513.52,-1488.17C6516.25,-1394.58 6515.76,-1136.97 6440,-941.41"/>
</g>
<!-- ahriman_core_build_tools -->
<g id="node34" class="node">
<title>ahriman_core_build_tools</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="1603" cy="-2550.5" rx="44.6" ry="28.98"/>
<text text-anchor="middle" x="1603" y="-2559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1603" y="-2548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="1603" 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="edge119" 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="M1559.23,-2544.38C1512.29,-2537.25 1437.08,-2520.96 1382,-2485.5 1368.22,-2476.64 1372.32,-2465.48 1358,-2457.51"/>
<path fill="none" stroke="black" d="M1358,-2455.51C1343.68,-2447.55 1348.43,-2435.29 1334,-2427.52 1221.98,-2367.19 1150.8,-2469.16 1050,-2391.52 914.23,-2286.94 1040.95,-1762.94 1026,-1635.65"/>
<path fill="none" stroke="black" d="M1026,-1633.65C1013.51,-1569.39 1035.62,-1552.2 1050,-1488.34 1054.6,-1467.89 1110.14,-1326.34 1102,-1307.03"/>
<path fill="none" stroke="black" d="M1102,-1305.03C1055.12,-1224.46 937.97,-1252.93 950,-1160.49"/>
</g>
<!-- ahriman_core_build_tools&#45;&gt;ahriman_application_handlers_patch -->
<g id="edge120" class="edge">
<title>ahriman_core_build_tools&#45;&gt;ahriman_application_handlers_patch</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1358,-2455.51C1357.47,-2455.2 1278.14,-2298.14 1278,-2297.54 1251.01,-2184.49 1254.88,-2149.52 1280,-2036.03 1290.07,-1990.54 1589.54,-1304.53 1620,-1269.26 1639.59,-1246.59 1658.33,-1256.7 1677,-1233.26 1761.38,-1127.33 1773.49,-959.02 1774.05,-878.18"/>
<polygon fill="#f91010" stroke="black" points="1777.55,-877.84 1774.06,-867.84 1770.55,-877.83 1777.55,-877.84"/>
</g>
<!-- ahriman_core_repository_executor -->
<g id="node46" class="node">
<title>ahriman_core_repository_executor</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="2988" cy="-1415.57" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="2988" y="-1429.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2988" y="-1418.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2988" y="-1407.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="2988" 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="edge121" 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="M1358,-2455.51C1267.13,-2401.64 1954.63,-1856.96 2028,-1780.96 2059.13,-1748.71 2063.57,-1737.27 2097,-1707.42 2157.78,-1653.15 2174.71,-1640.74 2244,-1597.88 2335.88,-1541.05 2357.83,-1520.41 2461,-1488.34 2628.17,-1436.37 2836.78,-1422.01 2933.76,-1418.06"/>
<polygon fill="#f91010" stroke="black" points="2934.05,-1421.55 2943.91,-1417.67 2933.78,-1414.56 2934.05,-1421.55"/>
</g>
<!-- ahriman_core_tree -->
<g id="node57" class="node">
<title>ahriman_core_tree</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="1720" cy="-2174.57" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="1720" y="-2183.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1720" y="-2172.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="1720" y="-2161.07" 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="edge122" 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="M1611.6,-2522C1632.29,-2455.87 1684.86,-2287.88 1708.35,-2212.81"/>
<polygon fill="#f91010" stroke="black" points="1711.82,-2213.44 1711.46,-2202.85 1705.14,-2211.35 1711.82,-2213.44"/>
</g>
<!-- ahriman_core_build_tools&#45;&gt;ahriman_models_package -->
<g id="edge123" 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="M1644.44,-2539.6C1671.03,-2533.57 1706.39,-2526.16 1738,-2521.5 2059.34,-2474.23 2145.63,-2510.99 2466,-2457.51"/>
<path fill="none" stroke="black" d="M2466,-2455.51C2522.58,-2446.07 2535.34,-2436.49 2592,-2427.52 2823.44,-2390.91 3103.41,-2372.39 3213.86,-2366.08"/>
<polygon fill="#f91010" stroke="black" points="3214.23,-2369.57 3224.02,-2365.51 3213.83,-2362.58 3214.23,-2369.57"/>
</g>
<!-- ahriman_core_build_tools_sources -->
<g id="node35" class="node">
<title>ahriman_core_build_tools_sources</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#df0b0b" stroke="black" cx="1935" cy="-2652.26" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1935" y="-2666.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1935" y="-2655.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="1935" y="-2644.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">build_tools.</text>
<text text-anchor="middle" x="1935" y="-2633.26" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sources</text>
</g>
<!-- ahriman_core_build_tools_sources&#45;&gt;ahriman_application_application -->
<g id="edge124" class="edge">
<title>ahriman_core_build_tools_sources&#45;&gt;ahriman_application_application</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1896.16,-2631.71C1882.51,-2625.6 1866.86,-2619.43 1852,-2615.49 1605.6,-2550.11 1522.76,-2635.28 1282,-2551.5"/>
<path fill="none" stroke="black" d="M1282,-2549.5C1061.85,-2472.89 946.95,-2494.33 822,-2297.54 748.85,-2182.33 763.02,-2135.44 746,-2000.03 741.92,-1967.61 735.39,-1957.41 746,-1926.5 752.58,-1907.32 762,-1906.83 774,-1890.5 809.09,-1842.75 823.15,-1833.78 850,-1780.96 962.12,-1560.37 981.31,-1478.72 950,-1233.26"/>
</g>
<!-- ahriman_core_build_tools_sources&#45;&gt;ahriman_application_handlers_patch -->
<g id="edge125" class="edge">
<title>ahriman_core_build_tools_sources&#45;&gt;ahriman_application_handlers_patch</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1282,-2549.5C1264.05,-2542.47 1255.61,-2222.82 1255,-2203.56 1252.63,-2129.14 1242.18,-2109.38 1255,-2036.03 1298.69,-1786.08 1659.32,-1057.88 1751.57,-874.29"/>
<polygon fill="#df0b0b" stroke="black" points="1754.77,-875.72 1756.14,-865.21 1748.52,-872.57 1754.77,-875.72"/>
</g>
<!-- ahriman_core_build_tools_task -->
<g id="node36" class="node">
<title>ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="1939" cy="-2072.8" rx="46.84" ry="36.54"/>
<text text-anchor="middle" x="1939" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1939" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="1939" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">build_tools.</text>
<text text-anchor="middle" x="1939" y="-2053.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">task</text>
</g>
<!-- ahriman_core_build_tools_sources&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge126" class="edge">
<title>ahriman_core_build_tools_sources&#45;&gt;ahriman_core_build_tools_task</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1752,-2549.5C1712.22,-2519.72 1784.61,-2376.25 1810,-2333.54 1862.04,-2245.99 1983.59,-2277.13 1976,-2175.57"/>
<path fill="none" stroke="black" d="M1976,-2173.57C1974.74,-2153.97 1968.14,-2133.44 1960.86,-2116.14"/>
<polygon fill="#df0b0b" stroke="black" points="1964.01,-2114.62 1956.77,-2106.88 1957.61,-2117.45 1964.01,-2114.62"/>
</g>
<!-- ahriman_core_build_tools_sources&#45;&gt;ahriman_core_tree -->
<g id="edge127" class="edge">
<title>ahriman_core_build_tools_sources&#45;&gt;ahriman_core_tree</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1898.39,-2629.41C1890.39,-2624.75 1881.94,-2619.9 1874,-2615.49 1820.47,-2585.77 1801.62,-2587.37 1752,-2551.5"/>
<path fill="none" stroke="black" d="M1752,-2549.5C1738.72,-2539.89 1742.02,-2529.99 1728,-2521.5 1667.13,-2484.65 1616.3,-2541.19 1572,-2485.5 1499.38,-2394.21 1624.18,-2261.45 1687.08,-2203.91"/>
<polygon fill="#df0b0b" stroke="black" points="1689.71,-2206.25 1694.79,-2196.95 1685.02,-2201.05 1689.71,-2206.25"/>
</g>
<!-- ahriman_core_build_tools_sources&#45;&gt;ahriman_models_package -->
<g id="edge128" class="edge">
<title>ahriman_core_build_tools_sources&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1981.42,-2648.07C2140.31,-2637.02 2654.19,-2599.82 2683,-2579.49 2731.89,-2544.98 2691.36,-2492.37 2740,-2457.51"/>
</g>
<!-- ahriman_core_build_tools_task&#45;&gt;ahriman_core_repository_executor -->
<g id="edge129" 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="M1950.16,-2036.83C1960.66,-2006.42 1978.05,-1961.82 2000,-1926.5 2068.02,-1817.02 2084.77,-1781.84 2190,-1707.42 2436.7,-1532.95 2799.74,-1451.44 2934.82,-1425.85"/>
<polygon fill="#7a2828" stroke="black" points="2935.72,-1429.24 2944.9,-1423.97 2934.43,-1422.36 2935.72,-1429.24"/>
</g>
<!-- ahriman_core_configuration -->
<g id="node37" class="node">
<title>ahriman_core_configuration</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e50505" stroke="black" cx="4815" cy="-2791.02" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="4815" y="-2799.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4815" y="-2788.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4815" 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="edge130" 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="M456,-2361.53C429.53,-2266.84 470.99,-2238.19 504,-2145.57 507.94,-2134.51 854.43,-1389.14 860,-1378.8 878.04,-1345.32 946.04,-1271.08 950,-1233.26"/>
<path fill="none" stroke="black" d="M950,-1232.26C953.53,-1200.56 943.61,-1191.74 950,-1160.49"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_add -->
<g id="edge131" 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="M532,-2549.5C529.25,-2520.54 464.98,-2326.35 461,-2297.54 457.47,-2272.01 457.61,-2265.1 461,-2239.56 473.33,-2146.67 489.42,-2125.88 516,-2036.03 574.03,-1839.87 590.57,-1791.36 657,-1597.88 673.83,-1548.86 677.7,-1536.44 697,-1488.34 716.79,-1439.01 722.7,-1427.05 745,-1378.8 820.84,-1214.75 822.47,-1163.37 923,-1013.18 934.91,-995.39 941.9,-994.11 955,-977.18 966.72,-962.04 968.4,-957.35 979,-941.41"/>
<path fill="none" stroke="black" d="M979,-939.41C1032.37,-860.49 1095.59,-909.86 1181,-867.64 1184.96,-865.69 1188.97,-863.51 1192.94,-861.21"/>
<polygon fill="#e50505" stroke="black" points="1194.76,-864.2 1201.52,-856.05 1191.15,-858.21 1194.76,-864.2"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_clean -->
<g id="edge132" 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="M456,-2455.51C428.57,-2425.2 467.08,-2402.88 456,-2363.53"/>
<path fill="none" stroke="black" d="M456,-2361.53C362.21,-2028.52 655.18,-1320.67 679,-1269.26 729.23,-1160.82 755.02,-1138.84 836,-1050.95"/>
<path fill="none" stroke="black" d="M836,-1048.95C873.19,-993.47 899.76,-993.97 941,-941.41"/>
<path fill="none" stroke="black" d="M941,-939.41C952.82,-924.35 949.82,-915.31 965,-903.64 1004.12,-873.59 1025.65,-889.26 1070,-867.64 1073.97,-865.71 1077.99,-863.54 1081.97,-861.26"/>
<polygon fill="#e50505" stroke="black" points="1083.77,-864.26 1090.55,-856.11 1080.17,-858.25 1083.77,-864.26"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_dump -->
<g id="edge133" 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="M4858.42,-2775.33C4875.27,-2770.24 4894.85,-2765.05 4913,-2762.03 5217.22,-2711.35 5300.84,-2770.69 5606,-2726.03 5777.22,-2700.97 6479.17,-2473.84 6645,-2391.52 6897.49,-2266.19 7030.21,-2257.93 7144,-2000.03 7148.69,-1989.41 7176.43,-1489.16 7130,-1160.49"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge134" 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="M4763.99,-2788.93C4496.18,-2783.18 3225.4,-2755.48 2186,-2726.03 2058.87,-2722.42 1165.17,-2720.71 1042,-2689.03 938.14,-2662.31 911.37,-2645.69 827,-2579.49 731.47,-2504.52 686.42,-2453.04 708,-2333.54 742.32,-2143.5 789.1,-2106.12 860,-1926.5 956.8,-1681.24 955.22,-1606.6 1088,-1378.8 1098.21,-1361.29 1107.45,-1361.18 1116,-1342.8 1171.9,-1222.56 1080.21,-1140.52 1178,-1050.95"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_init -->
<g id="edge135" 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="M266,-2267.55C266,-2035.06 464.8,-1471.77 579,-1269.26 653.56,-1137.04 699.49,-1122.31 805,-1013.18 837.29,-979.78 852.02,-977.73 881,-941.41"/>
<path fill="none" stroke="black" d="M881,-939.41C892.95,-920.49 936.93,-886.57 971.09,-861.87"/>
<polygon fill="#e50505" stroke="black" points="973.45,-864.48 979.53,-855.81 969.37,-858.8 973.45,-864.48"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_key_import -->
<g id="edge136" 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="M532,-2651.26C490.36,-2636.02 538.11,-2595.41 532,-2551.5"/>
<path fill="none" stroke="black" d="M532,-2549.5C524.69,-2496.97 491.58,-2496.84 456,-2457.51"/>
<path fill="none" stroke="black" d="M456,-2455.51C376.73,-2367.89 275.34,-2387.34 266,-2269.55"/>
<path fill="none" stroke="black" d="M266,-2267.55C228.64,-2171.44 264.3,-2137.78 281,-2036.03 351.14,-1608.62 391.14,-1489.83 621,-1122.72 683.76,-1022.49 681.92,-980.26 772,-903.64 800.47,-879.43 815.37,-885.87 848,-867.64 851.85,-865.49 855.8,-863.17 859.72,-860.79"/>
<polygon fill="#e50505" stroke="black" points="861.58,-863.75 868.22,-855.49 857.88,-857.8 861.58,-863.75"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_patch -->
<g id="edge137" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_application_handlers_patch</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2200,-2725.03C2110.46,-2719.8 1879.11,-2727.3 1798,-2689.03 1736.17,-2659.85 1731.26,-2634 1690,-2579.49 1672.11,-2555.84 1680.59,-2539.47 1657,-2521.5 1605.2,-2482.06 1557.65,-2534.7 1515,-2485.5 1443.36,-2402.87 1502.52,-2348.83 1507,-2239.56 1512.71,-2100.28 1507.61,-2064.67 1526,-1926.5 1565.74,-1627.96 1572.46,-1546.12 1691,-1269.26 1705.73,-1234.85 1717.74,-1230.44 1733,-1196.26 1786.81,-1075.71 1794.03,-1035.27 1784,-903.64 1783.35,-895.15 1782.28,-886.14 1781.05,-877.48"/>
<polygon fill="#e50505" stroke="black" points="1784.51,-876.9 1779.56,-867.53 1777.58,-877.94 1784.51,-876.9"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_rebuild -->
<g id="edge138" 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="M266,-2549.5C171.39,-2471.45 219.78,-2122.55 214,-2000.03 200.59,-1716.1 244.67,-1635.85 366,-1378.8 476.07,-1145.59 520.89,-1090.13 699,-903.64 713.75,-888.2 732,-873.37 748.42,-861.25"/>
<polygon fill="#e50505" stroke="black" points="750.76,-863.87 756.81,-855.17 746.66,-858.21 750.76,-863.87"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_remove -->
<g id="edge139" 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="M4764.03,-2790.32C4425.22,-2792.01 2463.13,-2796.63 870,-2689.03 719.28,-2678.85 673.87,-2705.16 532,-2653.26"/>
<path fill="none" stroke="black" d="M532,-2651.26C414,-2606.33 369.2,-2624.24 266,-2551.5"/>
<path fill="none" stroke="black" d="M266,-2549.5C265.05,-2548.83 212.5,-2486.55 212,-2485.5 164.44,-2385.79 171.86,-2349.95 176,-2239.56 192.37,-1803.36 191.37,-1683.83 328,-1269.26 376.96,-1120.7 346.36,-1052.97 456,-941.41"/>
<path fill="none" stroke="black" d="M456,-939.41C512.7,-880.16 553.56,-906.1 626,-867.64 629.9,-865.57 633.87,-863.31 637.82,-860.96"/>
<polygon fill="#e50505" stroke="black" points="639.66,-863.94 646.35,-855.72 636,-857.97 639.66,-863.94"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge140" 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="M4763.78,-2790.03C4496.21,-2789.84 3231.99,-2785.68 2200,-2726.03"/>
<path fill="none" stroke="black" d="M2200,-2725.03C2001.28,-2713.54 1500.84,-2724.64 1305,-2689.03 1152.54,-2661.3 1076.2,-2695.96 974,-2579.49 684.32,-2249.36 931.38,-2008.21 1088,-1597.88 1127.44,-1494.56 1152.57,-1475.63 1206,-1378.8 1310.14,-1190.05 1437.68,-966.71 1490.4,-874.72"/>
<polygon fill="#e50505" stroke="black" points="1493.48,-876.39 1495.42,-865.98 1487.41,-872.91 1493.48,-876.39"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_report -->
<g id="edge141" 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="M342,-2725.03C296.74,-2704.17 347.91,-2655.36 318,-2615.49 297.95,-2588.76 277,-2601.66 252,-2579.49 213.62,-2545.45 204.69,-2532.87 185,-2485.5 168.74,-2446.38 173.64,-2433.64 169,-2391.52 135.69,-2088.99 103.79,-2009.85 138,-1707.42 152.98,-1574.96 222.92,-1246.66 272,-1122.72 313.52,-1017.87 311.8,-973.91 400,-903.64 441.89,-870.27 466.54,-890.46 515,-867.64 519.05,-865.74 523.16,-863.57 527.2,-861.27"/>
<polygon fill="#e50505" stroke="black" points="529.12,-864.2 535.92,-856.08 525.54,-858.19 529.12,-864.2"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_search -->
<g id="edge142" 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="M4858.42,-2775.32C4875.27,-2770.22 4894.85,-2765.04 4913,-2762.03 5224.7,-2710.3 5308.33,-2754.6 5623,-2726.03 5748.89,-2714.59 5780.33,-2709.94 5905,-2689.03 6349.73,-2614.42 6487.86,-2670.75 6899,-2485.5 6938.01,-2467.93 7025.66,-2400.03 7048,-2363.53"/>
<path fill="none" stroke="black" d="M7048,-2361.53C7101.16,-2271.24 7171.44,-2294.77 7223,-2203.56 7293.31,-2079.16 7333.09,-1422.01 7358,-1233.26"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge143" 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="M4764,-2790.26C4426.72,-2791.65 2523.26,-2796.31 2276,-2726.03"/>
<path fill="none" stroke="black" d="M2276,-2725.03C2105.58,-2676.59 2041.22,-2760.26 1879,-2689.03 1834.48,-2669.48 1837.04,-2644.48 1798,-2615.49 1773.03,-2596.95 1761.59,-2599.76 1738,-2579.49 1712.63,-2557.68 1718.31,-2539.34 1690,-2521.5 1634.18,-2486.34 1586.6,-2537.5 1546,-2485.5 1422.73,-2327.62 1650.33,-1791.14 1703,-1597.88 1735.37,-1479.1 1760.02,-1454.86 1811,-1342.8 1884.23,-1181.83 1932.38,-1150.4 1968,-977.18 1974.58,-945.17 1981.68,-933.33 1968,-903.64 1963.23,-893.3 1944.8,-877.1 1926.41,-862.7"/>
<polygon fill="#e50505" stroke="black" points="1928.07,-859.57 1918.01,-856.25 1923.81,-865.12 1928.07,-859.57"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_sign -->
<g id="edge144" 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="M4763.87,-2789.55C4271.97,-2785.02 395.61,-2748.65 342,-2726.03"/>
<path fill="none" stroke="black" d="M342,-2725.03C220.77,-2673.88 195.78,-2614.12 168,-2485.5 53.81,-1956.89 75.27,-1794.27 205,-1269.26 246.13,-1102.82 209.52,-1027.56 328,-903.64 353.83,-876.63 371.37,-885.87 404,-867.64 407.85,-865.49 411.8,-863.17 415.72,-860.79"/>
<polygon fill="#e50505" stroke="black" points="417.58,-863.75 424.22,-855.49 413.88,-857.8 417.58,-863.75"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_status -->
<g id="edge145" 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="M532,-2549.5C532,-2454.28 1057.11,-1008.18 1125,-941.41"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge146" 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="M988,-2549.5C956.45,-2510.47 1037.36,-2380.88 1054,-2333.54 1067.34,-2295.59 1537.44,-1120.64 1635.27,-876.17"/>
<polygon fill="#e50505" stroke="black" points="1638.66,-877.13 1639.13,-866.54 1632.16,-874.52 1638.66,-877.13"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_sync -->
<g id="edge147" 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="M4764.1,-2789.86C4423.87,-2788.62 2492.58,-2779.29 2466,-2726.03"/>
<path fill="none" stroke="black" d="M2466,-2725.03C2441.5,-2675.92 2479.17,-2648.52 2523,-2615.49 2587.11,-2567.17 2646.73,-2639.55 2700,-2579.49 2893.21,-2361.65 2679.67,-2208.28 2753,-1926.5 2766.48,-1874.7 2769.13,-1858.39 2803,-1816.96 2957.76,-1627.64 3153.54,-1689.01 3215,-1452.34 3235.52,-1373.32 3229.69,-1345.31 3200,-1269.26 3157.01,-1159.13 3081.74,-1164.26 3048,-1050.95"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_update -->
<g id="edge148" 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="M4764.08,-2789.44C4276.16,-2783.85 443.92,-2739.57 328,-2726.03 179.69,-2708.7 0,-2802.58 0,-2653.26 0,-2653.26 0,-2653.26 0,-1048.95 0,-953.22 77.47,-953.82 159,-903.64 201.44,-877.53 254.93,-858.31 294.17,-846.36"/>
<polygon fill="#e50505" stroke="black" points="295.24,-849.7 303.82,-843.48 293.24,-842.99 295.24,-849.7"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_user -->
<g id="edge149" 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="M4764.51,-2786.36C4593.98,-2773.33 4050,-2726.07 4050,-2653.26 4050,-2653.26 4050,-2653.26 4050,-2267.55 4050,-2066.95 4071.91,-2011.75 4024,-1816.96 4002.88,-1731.08 3942,-1724.09 3942,-1635.65 3942,-1635.65 3942,-1635.65 3942,-1232.26 3942,-1060.27 3749.82,-1117.95 3651,-977.18 3641.19,-963.21 3650.57,-951.77 3637,-941.41"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_handlers_web -->
<g id="edge150" 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="M4858.46,-2775.58C4875.32,-2770.52 4894.89,-2765.28 4913,-2762.03 5115.7,-2725.56 5169.82,-2743.88 5375,-2726.03 5546.25,-2711.13 5591.92,-2725.06 5760,-2689.03 5892.6,-2660.6 6795.59,-2359.93 6916,-2297.54 7133.46,-2184.86 7244,-2099.64 7244,-1854.73 7244,-1854.73 7244,-1854.73 7244,-939.41 7244,-807.68 7178.54,-451.67 7074,-371.5 6968.19,-290.37 2564.26,-233.29 2010.92,-226.43"/>
<polygon fill="#e50505" stroke="black" points="2010.83,-222.93 2000.78,-226.3 2010.74,-229.93 2010.83,-222.93"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_application_lock -->
<g id="edge151" 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="M2200,-2725.03C1928.51,-2707.12 1215.13,-2701.29 988,-2551.5"/>
<path fill="none" stroke="black" d="M988,-2549.5C904.21,-2486.46 1019.02,-2416.62 1083,-2333.54 1232.64,-2139.22 1933.9,-1880.87 1938,-1635.65"/>
<path fill="none" stroke="black" d="M1938,-1633.65C1937.37,-1610.76 1937.58,-1585.13 1937.96,-1564.63"/>
<polygon fill="#e50505" stroke="black" points="1941.46,-1564.49 1938.17,-1554.42 1934.46,-1564.34 1941.46,-1564.49"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_alpm_pacman -->
<g id="edge152" 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="M2466,-2725.03C2458.73,-2710.47 2494.82,-2688.68 2526.45,-2672.93"/>
<polygon fill="#e50505" stroke="black" points="2528.18,-2675.98 2535.64,-2668.46 2525.11,-2669.69 2528.18,-2675.98"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_auth -->
<g id="edge153" 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="M4858.48,-2775.64C4875.33,-2770.58 4894.9,-2765.34 4913,-2762.03 5100.33,-2727.71 5151.37,-2752.27 5340,-2726.03 5425.21,-2714.17 5448.34,-2716.1 5530,-2689.03 5711.85,-2628.74 5749.07,-2589.45 5910,-2485.5 5948.72,-2460.49 5952.5,-2442.78 5996,-2427.52 6181.14,-2362.57 6257.02,-2471.92 6436,-2391.52 6477.36,-2372.94 6713.18,-2151.26 6731,-2109.57 6780.52,-1993.75 6693.31,-1849.28 6644.96,-1782.38"/>
<polygon fill="#e50505" stroke="black" points="6647.72,-1780.22 6638.99,-1774.23 6642.08,-1784.36 6647.72,-1780.22"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge154" 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="M4858.51,-2775.81C4875.37,-2770.78 4894.93,-2765.51 4913,-2762.03 5036.23,-2738.3 5359.17,-2741.86 5473,-2689.03 5495.55,-2678.56 5493.4,-2663.62 5516,-2653.26"/>
<path fill="none" stroke="black" d="M5516,-2651.26C5531.6,-2644.32 5518.49,-2628.09 5530,-2615.49 5554.13,-2589.07 5570.65,-2596.73 5602,-2579.49 5672.92,-2540.47 5689.75,-2529.03 5758,-2485.5 5796.87,-2460.72 5800.5,-2442.78 5844,-2427.52 5936.57,-2395.04 6197.72,-2438.21 6284,-2391.52 6423.55,-2316.01 6451.55,-2259.67 6503,-2109.57 6513.6,-2078.66 6504.62,-2068.68 6503,-2036.03 6496.55,-1906.29 6468.57,-1874.98 6474,-1745.19"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge155" 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="M5516,-2651.26C5531.53,-2644.17 5517.27,-2626.86 5530,-2615.49 5576.31,-2574.12 5608.05,-2604.25 5665,-2579.49 5737.15,-2548.12 5748.49,-2527.53 5815,-2485.5 5855.54,-2459.89 5860.55,-2442.83 5906,-2427.52 6090.27,-2365.47 6163.76,-2469.21 6342,-2391.52 6398.81,-2366.76 6407.41,-2346.81 6445,-2297.54 6499.45,-2226.16 6506.92,-2198.54 6519,-2109.57 6545.96,-1911.02 6527.08,-1670.98 6517.1,-1572.09"/>
<polygon fill="#e50505" stroke="black" points="6520.55,-1571.44 6516.05,-1561.85 6513.59,-1572.16 6520.55,-1571.44"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge156" 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="M2276,-2725.03C2234.69,-2712.79 2214.59,-2721.26 2186,-2689.03 2048.8,-2534.35 2131.54,-2435.65 2066,-2239.56 2051.72,-2196.83 2054.84,-2181.76 2028,-2145.57 2015.82,-2129.15 1999.02,-2114.32 1983.3,-2102.46"/>
<polygon fill="#e50505" stroke="black" points="1985.35,-2099.62 1975.21,-2096.54 1981.21,-2105.27 1985.35,-2099.62"/>
</g>
<!-- ahriman_core_report_email -->
<g id="node40" class="node">
<title>ahriman_core_report_email</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#7a2828" stroke="black" cx="3589" cy="-1744.19" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3589" y="-1758.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3589" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3589" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="3589" 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="edge157" 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="M4763.89,-2790.23C4547.16,-2789.73 3713.16,-2773.36 3670,-2551.5"/>
<path fill="none" stroke="black" d="M3670,-2549.5C3630.44,-2491.63 3630.52,-2462.9 3570,-2427.52 3490.14,-2380.84 3424.49,-2462.36 3365,-2391.52 3348.43,-2371.79 3356.48,-2357.86 3365,-2333.54 3400.32,-2232.66 3424.64,-2202.66 3515,-2145.57 3574.42,-2108.03 3613.3,-2152.45 3669,-2109.57 3683.26,-2098.59 3680.8,-2090.3 3688,-2073.8"/>
</g>
<!-- ahriman_core_report_html -->
<g id="node41" class="node">
<title>ahriman_core_report_html</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="4312" cy="-1525.11" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4312" y="-1539.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4312" y="-1528.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4312" y="-1517.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="4312" 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="edge158" 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="M4922,-2549.5C4896.9,-2495.6 5001.85,-2356.12 5012,-2297.54 5016.4,-2272.15 5020.13,-2264.01 5012,-2239.56 4952.3,-2059.96 4604.75,-1709.62 4452,-1597.88 4422.19,-1576.07 4384.82,-1557.28 4356.18,-1544.4"/>
<polygon fill="#e50505" stroke="black" points="4357.39,-1541.11 4346.83,-1540.26 4354.56,-1547.51 4357.39,-1541.11"/>
</g>
<!-- ahriman_core_report_jinja_template -->
<g id="node42" class="node">
<title>ahriman_core_report_jinja_template</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#832020" stroke="black" cx="3795" cy="-1853.73" rx="54.39" ry="36.54"/>
<text text-anchor="middle" x="3795" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3795" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3795" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="3795" 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="edge159" 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="M4764.16,-2788.84C4613.66,-2784.86 4172.42,-2769.71 4036,-2726.03 3975.87,-2706.77 3914,-2716.39 3914,-2653.26 3914,-2653.26 3914,-2653.26 3914,-2549.5 3914,-2411.1 3863.8,-2376.47 3884,-2239.56 3889.62,-2201.5 3912.19,-2105.5 3934,-2073.8"/>
</g>
<!-- ahriman_core_report_report -->
<g id="node43" class="node">
<title>ahriman_core_report_report</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b1818" stroke="black" cx="3589" cy="-1634.65" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="3589" y="-1648.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3589" y="-1637.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3589" y="-1626.65" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">report.</text>
<text text-anchor="middle" x="3589" 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="edge160" 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="M3670,-2549.5C3624.3,-2480.63 3670,-2446.18 3670,-2363.53 3670,-2363.53 3670,-2363.53 3670,-2267.55 3670,-2193.63 3710.3,-2182.56 3722,-2109.57 3727.17,-2077.3 3725.14,-2068.57 3722,-2036.03 3707.71,-1887.93 3726.58,-1839.47 3658,-1707.42 3649.95,-1691.92 3637.51,-1677.48 3625.39,-1665.67"/>
<polygon fill="#e50505" stroke="black" points="3627.62,-1662.96 3617.93,-1658.67 3622.83,-1668.07 3627.62,-1662.96"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_repository_properties -->
<g id="edge161" 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="M2276,-2725.03C2053.78,-2654.65 2319.54,-2436.32 2332,-2203.56 2333.38,-2177.82 2338.46,-2170.52 2332,-2145.57 2327.41,-2127.86 2316.59,-2127.29 2312,-2109.57 2270.36,-1948.88 2271.17,-1856.85 2394,-1745.19"/>
<path fill="none" stroke="black" d="M2394,-1743.19C2463.27,-1681.73 2700.73,-1705.1 2791,-1671.42 2795.27,-1669.82 2799.53,-1667.82 2803.68,-1665.58"/>
<polygon fill="#e50505" stroke="black" points="2805.69,-1668.46 2812.54,-1660.37 2802.14,-1662.43 2805.69,-1668.46"/>
</g>
<!-- ahriman_core_sign_gpg -->
<g id="node51" class="node">
<title>ahriman_core_sign_gpg</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#932424" stroke="black" cx="2480" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2480" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2480" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2480" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">sign.</text>
<text text-anchor="middle" x="2480" 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="edge162" 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="M2276,-2725.03C2242.19,-2714.59 2316.66,-2707.22 2347,-2689.03 2395.86,-2659.73 2399.15,-2636.77 2452,-2615.49 2548.39,-2576.68 2615.42,-2658.41 2683,-2579.49 2699.76,-2559.91 2685.25,-2547.18 2683,-2521.5 2682.15,-2511.78 2628.03,-2183.23 2622,-2175.57"/>
<path fill="none" stroke="black" d="M2622,-2173.57C2611.36,-2161.1 2610.74,-2155.89 2598,-2145.57 2572.03,-2124.55 2560.47,-2127.07 2532,-2109.57 2527.68,-2106.92 2523.22,-2104.05 2518.81,-2101.14"/>
<polygon fill="#e50505" stroke="black" points="2520.7,-2098.19 2510.45,-2095.52 2516.8,-2104 2520.7,-2098.19"/>
</g>
<!-- ahriman_core_spawn -->
<g id="node52" class="node">
<title>ahriman_core_spawn</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b62020" stroke="black" cx="4192" cy="-2174.57" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4192" y="-2183.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4192" y="-2172.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4192" 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="edge163" 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="M4854.85,-2772.97C4876.78,-2762.05 4903.26,-2746.14 4922,-2726.03"/>
<path fill="none" stroke="black" d="M4922,-2725.03C4974.57,-2668.6 4916.84,-2628.45 4922,-2551.5"/>
<path fill="none" stroke="black" d="M4922,-2549.5C4921.54,-2475.07 4324.85,-2442.9 4271,-2391.52 4230.37,-2352.76 4209.74,-2318.08 4238,-2269.55"/>
</g>
<!-- ahriman_core_status_client -->
<g id="node54" class="node">
<title>ahriman_core_status_client</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#931a1a" stroke="black" cx="2850" cy="-1853.73" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="2850" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2850" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2850" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="2850" 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="edge164" 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="M2276,-2725.03C1977.72,-2626.7 2199.95,-2246.58 2433,-2036.03 2544.06,-1935.7 2719.33,-1884.54 2802.8,-1864.74"/>
<polygon fill="#e50505" stroke="black" points="2803.8,-1868.1 2812.75,-1862.43 2802.22,-1861.28 2803.8,-1868.1"/>
</g>
<!-- ahriman_core_status_watcher -->
<g id="node55" class="node">
<title>ahriman_core_status_watcher</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8b2222" stroke="black" cx="4484" cy="-1159.49" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="4484" y="-1173.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4484" y="-1162.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4484" y="-1151.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="4484" 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="edge165" 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="M4922,-2725.03C5078.67,-2569.37 5065.11,-2457.26 5028,-2239.56 5020.56,-2195.92 5012.33,-2186.31 4995,-2145.57 4902.6,-1928.42 4831.07,-1895.15 4756,-1671.42 4747.87,-1647.18 4712,-1420.29 4712,-1416.57"/>
<path fill="none" stroke="black" d="M4712,-1414.57C4706.14,-1367.14 4734.7,-1349.09 4712,-1307.03"/>
</g>
<!-- ahriman_core_status_web_client -->
<g id="node56" class="node">
<title>ahriman_core_status_web_client</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4470" cy="-1744.19" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="4470" y="-1758.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4470" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4470" y="-1736.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="4470" 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="edge166" 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="M4922,-2549.5C4866.39,-2423.02 4938.03,-2371.79 4898,-2239.56 4867.96,-2140.33 4854.93,-2111.66 4784,-2036.03 4682.58,-1927.9 4550.28,-1995.57 4504,-1854.73"/>
</g>
<!-- ahriman_core_upload_github -->
<g id="node59" class="node">
<title>ahriman_core_upload_github</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="5292" cy="-2072.8" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5292" y="-2086.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5292" y="-2075.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5292" y="-2064.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="5292" y="-2053.8" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">github</text>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_core_upload_github -->
<g id="edge167" class="edge">
<title>ahriman_core_configuration&#45;&gt;ahriman_core_upload_github</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4857.02,-2774.37C4958.88,-2735.39 5213.34,-2631.33 5250,-2551.5"/>
<path fill="none" stroke="black" d="M5250,-2549.5C5272.15,-2511.3 5192.63,-2525.54 5174,-2485.5 5163.13,-2462.14 5169.08,-2452.82 5174,-2427.52 5191.21,-2339.07 5204.19,-2317.15 5250,-2239.56 5268.63,-2208 5291.66,-2210.72 5302,-2175.57"/>
<path fill="none" stroke="black" d="M5302,-2173.57C5305.65,-2155.92 5304.71,-2136.23 5302.3,-2119.04"/>
<polygon fill="#e50505" stroke="black" points="5305.68,-2118.02 5300.63,-2108.7 5298.77,-2119.13 5305.68,-2118.02"/>
</g>
<!-- ahriman_core_upload_rsync -->
<g id="node60" class="node">
<title>ahriman_core_upload_rsync</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="5330" cy="-1853.73" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5330" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5330" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5330" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="5330" y="-1834.73" 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="edge168" 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="M4858.52,-2775.85C4875.38,-2770.82 4894.94,-2765.54 4913,-2762.03 5060.85,-2733.24 5107.84,-2775.82 5250,-2726.03"/>
<path fill="none" stroke="black" d="M5250,-2725.03C5353.14,-2688.9 5315.61,-2603.38 5388,-2521.5 5443.44,-2458.79 5705.24,-2344.51 5668,-2269.55"/>
<path fill="none" stroke="black" d="M5668,-2267.55C5629.54,-2198.46 5557.97,-2259.41 5502,-2203.56 5445.47,-2147.15 5470.7,-2108.44 5437,-2036.03 5413.58,-1985.71 5405.56,-1974.09 5377,-1926.5 5370.53,-1915.72 5363.22,-1904.25 5356.33,-1893.72"/>
<polygon fill="#e50505" stroke="black" points="5359.09,-1891.55 5350.66,-1885.12 5353.25,-1895.4 5359.09,-1891.55"/>
</g>
<!-- ahriman_core_upload_s3 -->
<g id="node61" class="node">
<title>ahriman_core_upload_s3</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="5918" cy="-1853.73" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5918" y="-1867.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5918" y="-1856.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5918" y="-1845.73" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="5918" 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="edge169" 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="M5250,-2725.03C5322.1,-2702.64 5348.37,-2722.58 5416,-2689.03 5461.05,-2666.68 5462.31,-2646.37 5502,-2615.49 5616.24,-2526.58 5646.95,-2506.92 5768,-2427.52 5861.05,-2366.49 5927.43,-2394.52 5982,-2297.54 6039.62,-2195.13 5998.21,-2139.77 5943,-2036.03 5924.37,-2001.03 5884.42,-2003.52 5890,-1964.27"/>
</g>
<!-- ahriman_core_upload_upload -->
<g id="node62" class="node">
<title>ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a0f0f" stroke="black" cx="5330" cy="-1963.27" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5330" y="-1977.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5330" y="-1966.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5330" y="-1955.27" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">upload.</text>
<text text-anchor="middle" x="5330" 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="edge170" 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="M5250,-2549.5C5306.4,-2462.75 5372.33,-2482.83 5421,-2391.52 5446.81,-2343.11 5442.52,-2324.35 5440,-2269.55"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_web_views_base -->
<g id="edge171" 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="M5250,-2725.03C5289.47,-2712.4 5301.78,-2712.39 5336,-2689.03 5374,-2663.09 5593.39,-2425.87 5624,-2391.52 5659.92,-2351.2 5682.83,-2348.39 5701,-2297.54 5709.67,-2273.27 5705.75,-2264.88 5701,-2239.56 5697.83,-2222.68 5690.17,-2220.43 5687,-2203.56 5666.95,-2096.68 5738,-2073.01 5738,-1964.27 5738,-1964.27 5738,-1964.27 5738,-1852.73 5738,-1739.29 5713.09,-1710.79 5724,-1597.88 5727.13,-1565.53 5738,-1558.61 5738,-1526.11"/>
<path fill="none" stroke="black" d="M5738,-1524.11C5730.79,-1378.43 5683.91,-1341.36 5586,-1233.26"/>
<path fill="none" stroke="black" d="M5586,-1232.26C5562.11,-1205.21 5558.9,-1194.9 5548,-1160.49"/>
</g>
<!-- ahriman_core_configuration&#45;&gt;ahriman_web_web -->
<g id="edge172" 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="M4858.47,-2775.61C4875.33,-2770.55 4894.89,-2765.31 4913,-2762.03 5107.8,-2726.67 5160.16,-2747.28 5357,-2726.03 5479.17,-2712.83 5511.48,-2717.58 5631,-2689.03 5728.83,-2665.65 6395.65,-2435.72 6486,-2391.52 6619.64,-2326.14 6650.18,-2300.55 6763,-2203.56 6858.2,-2121.71 7092,-1885.06 7092,-1854.73 7092,-1854.73 7092,-1854.73 7092,-1524.11 7092,-1311.12 7168,-1263.94 7168,-1050.95 7168,-1050.95 7168,-1050.95 7168,-939.41 7168,-870.04 7150.61,-851.06 7111,-794.1 7080.71,-750.55 7034.34,-766.16 7022,-714.56"/>
</g>
<!-- ahriman_core_exceptions -->
<g id="node38" class="node">
<title>ahriman_core_exceptions</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="5744" cy="-2885" rx="44.6" ry="28.98"/>
<text text-anchor="middle" x="5744" y="-2893.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5744" y="-2882.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="5744" 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="edge173" 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="M5699.45,-2882.3C5575.98,-2877.64 5218.89,-2864.41 4922,-2856.01 3661.74,-2820.33 3341.91,-2902.54 2086,-2792.02"/>
<path fill="none" stroke="black" d="M2086,-2790.02C1988.64,-2781.45 406.14,-2784.73 328,-2726.03 300.77,-2705.57 310.48,-2686.69 304,-2653.26"/>
<path fill="none" stroke="black" d="M304,-2651.26C290.5,-2614.25 272.54,-2613.1 252,-2579.49 220.28,-2527.6 190,-2518.33 190,-2457.51 190,-2457.51 190,-2457.51 190,-2173.57 190,-2108.08 901.08,-1316.9 946,-1269.26 1043.13,-1166.25 1068.04,-1140.14 1178,-1050.95"/>
<path fill="none" stroke="black" d="M1178,-1048.95C1214.72,-1015.31 1263.24,-985.66 1298.87,-966.06"/>
<polygon fill="#f91010" stroke="black" points="1300.98,-968.9 1308.1,-961.05 1297.64,-962.74 1300.98,-968.9"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_application_lock -->
<g id="edge174" 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="M304,-2651.26C265.3,-2502.98 494,-2516.77 494,-2363.53 494,-2363.53 494,-2363.53 494,-2267.55 494,-1964.49 1402.03,-1713.88 1682,-1597.88 1749.75,-1569.81 1831.98,-1549.01 1884.88,-1537.22"/>
<polygon fill="#f91010" stroke="black" points="1885.71,-1540.62 1894.73,-1535.06 1884.21,-1533.79 1885.71,-1540.62"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge175" 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="M2086,-2790.02C2077.58,-2789.31 2134.78,-2278.59 2152.73,-2120.13"/>
<polygon fill="#f91010" stroke="black" points="2156.26,-2120.1 2153.9,-2109.77 2149.3,-2119.31 2156.26,-2120.1"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_auth_auth -->
<g id="edge176" 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="M5788.29,-2881.43C5967.05,-2870.99 6626.76,-2831.74 6645,-2820.01 6981.23,-2603.79 6836.13,-2316.41 6748,-1926.5 6736.36,-1874.99 6733.38,-1859.42 6702,-1816.96 6689.3,-1799.78 6671.67,-1784.13 6655.67,-1771.86"/>
<polygon fill="#f91010" stroke="black" points="6657.6,-1768.93 6647.49,-1765.76 6653.41,-1774.54 6657.6,-1768.93"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge177" 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="M6631,-2790.02C6710.53,-2771.55 6972,-2734.9 6972,-2653.26 6972,-2653.26 6972,-2653.26 6972,-2361.53 6972,-2008.64 6653.15,-1664.28 6546.37,-1558.85"/>
<polygon fill="#f91010" stroke="black" points="6548.65,-1556.18 6539.06,-1551.68 6543.75,-1561.18 6548.65,-1556.18"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge178" 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="M2086,-2790.02C2024.72,-2784.83 2037.81,-2300.27 2028,-2239.56 2023.36,-2210.82 2024.49,-2202.72 2014,-2175.57"/>
<path fill="none" stroke="black" d="M2014,-2173.57C2007.68,-2149.39 1991.83,-2126.74 1976.32,-2109.16"/>
<polygon fill="#f91010" stroke="black" points="1978.59,-2106.46 1969.26,-2101.45 1973.43,-2111.19 1978.59,-2106.46"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_configuration -->
<g id="edge179" 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="M5699.46,-2883.71C5574.43,-2882.23 5209.95,-2873.29 4913,-2820.01 4898.28,-2817.37 4882.6,-2813.42 4868.2,-2809.32"/>
<polygon fill="#f91010" stroke="black" points="4869.04,-2805.92 4858.46,-2806.47 4867.08,-2812.64 4869.04,-2805.92"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_report_report -->
<g id="edge180" 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="M5748.15,-2856.02C5749.91,-2837.46 5750.3,-2812.8 5744,-2792.02"/>
<path fill="none" stroke="black" d="M5744,-2790.02C5724.84,-2726.81 5519.57,-2732.92 5454,-2725.03 5350.56,-2712.57 3676.79,-2724.97 3579,-2689.03 3322.86,-2594.89 3230.73,-2540.25 3106,-2297.54 3052.76,-2193.95 3082.12,-2152.3 3089,-2036.03 3091.89,-1987.09 3075.33,-1967.63 3102,-1926.5 3208.32,-1762.53 3442.42,-1678 3542.33,-1648.28"/>
<polygon fill="#f91010" stroke="black" points="3543.52,-1651.58 3552.14,-1645.41 3541.56,-1644.86 3543.52,-1651.58"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_repository_properties -->
<g id="edge181" class="edge">
<title>ahriman_core_exceptions&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2014,-2173.57C1987.66,-2072.81 2115,-1799.26 2204,-1745.19"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge182" 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="M2086,-2790.02C2042,-2786.3 2126.15,-2751.8 2162,-2726.03"/>
<path fill="none" stroke="black" d="M2162,-2725.03C2213.16,-2688.24 2197.01,-2646.25 2252,-2615.49 2354.19,-2558.32 2413.53,-2641.27 2513,-2579.49 2525.77,-2571.55 2523.72,-2564.04 2532,-2551.5"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_status_watcher -->
<g id="edge183" 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="M5744,-2790.02C5702.81,-2661.02 5340.24,-2514.24 5283,-2391.52 5249.2,-2319.05 5378.61,-2105.51 5339,-2036.03 5332.11,-2023.95 4917.63,-1790.99 4908,-1780.96 4876.16,-1747.79 4717.64,-1462.2 4712,-1416.57"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_upload_upload -->
<g id="edge184" 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="M5744,-2790.02C5738.09,-2759.13 5779.58,-2755.55 5772,-2725.03 5758.72,-2671.56 5744.12,-2661.61 5714,-2615.49 5606.77,-2451.26 5445.56,-2465.6 5440,-2269.55"/>
</g>
<!-- ahriman_core_util -->
<g id="node63" class="node">
<title>ahriman_core_util</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#db0505" stroke="black" cx="4960" cy="-2791.02" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="4960" y="-2799.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4960" y="-2788.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="4960" y="-2777.52" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">util</text>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_core_util -->
<g id="edge185" 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="M5700.45,-2878.89C5564.69,-2862.96 5149.82,-2814.29 5008.07,-2797.66"/>
<polygon fill="#f91010" stroke="black" points="5008.29,-2794.16 4997.95,-2796.47 5007.47,-2801.11 5008.29,-2794.16"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_auth_settings -->
<g id="edge186" 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="M5788.38,-2880.96C5944.51,-2870.04 6467.78,-2831.3 6631,-2792.02"/>
<path fill="none" stroke="black" d="M6631,-2790.02C6690.1,-2775.8 6631,-2714.04 6631,-2653.26 6631,-2653.26 6631,-2653.26 6631,-2267.55 6631,-2220.53 6516.58,-2141.46 6451.66,-2100.38"/>
<polygon fill="#f91010" stroke="black" points="6453.17,-2097.2 6442.84,-2094.85 6449.45,-2103.13 6453.17,-2097.2"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_package -->
<g id="edge187" 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="M5744,-2790.02C5736.38,-2732.69 5549.28,-2733.03 5492,-2725.03 5413.96,-2714.12 4139.64,-2732.63 4074,-2689.03 4018.15,-2651.93 4062.92,-2595.12 4012,-2551.5"/>
<path fill="none" stroke="black" d="M4012,-2549.5C3892.79,-2464.6 3832.38,-2514.8 3689,-2485.5 3629.82,-2473.41 3612.74,-2478.24 3556,-2457.51"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_report_settings -->
<g id="edge188" 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="M5744,-2790.02C5738.32,-2737.32 5692.22,-2747.03 5644,-2725.03 5346.14,-2589.1 5257.38,-2584.07 4936,-2521.5 4388.32,-2414.88 3713.47,-2376.42 3500.02,-2366.43"/>
<polygon fill="#f91010" stroke="black" points="3500.06,-2362.92 3489.91,-2365.96 3499.74,-2369.92 3500.06,-2362.92"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_sign_settings -->
<g id="edge189" 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="M2162,-2725.03C2197.38,-2700.44 2212.38,-2705.94 2252,-2689.03 2324.73,-2657.99 2339.62,-2642.32 2414,-2615.49 2471.2,-2594.85 2509.09,-2627.81 2546,-2579.49 2585.33,-2528 2571.56,-2447.61 2558.46,-2400.8"/>
<polygon fill="#f91010" stroke="black" points="2561.78,-2399.68 2555.6,-2391.07 2555.06,-2401.65 2561.78,-2399.68"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_models_upload_settings -->
<g id="edge190" 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="M5744,-2790.02C5742.78,-2760.5 5770.09,-2751.99 5758,-2725.03 5718.91,-2637.89 5487.86,-2462.58 5392.81,-2392.98"/>
<polygon fill="#f91010" stroke="black" points="5394.73,-2390.05 5384.59,-2386.98 5390.6,-2395.7 5394.73,-2390.05"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_web_views_status_package -->
<g id="edge191" 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="M5744,-2790.02C5732.67,-2757.94 5768.85,-2755.41 5786,-2726.03 5858.43,-2601.96 5929.33,-2569.88 5910,-2427.52 5904.17,-2384.58 5908.67,-2369.17 5884,-2333.54 5843.62,-2275.22 5815.17,-2277.13 5755,-2239.56 5726,-2221.44 5708.94,-2229.79 5687,-2203.56 5519.81,-2003.71 5370.15,-1344.17 5330,-1086.72 5312.44,-974.14 5292.7,-925.25 5358,-831.87"/>
<path fill="none" stroke="black" d="M5358,-829.87C5372.8,-801.06 5395.43,-772.58 5414.54,-751.12"/>
<polygon fill="#f91010" stroke="black" points="5417.28,-753.31 5421.4,-743.55 5412.1,-748.61 5417.28,-753.31"/>
</g>
<!-- ahriman_core_exceptions&#45;&gt;ahriman_web_web -->
<g id="edge192" 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="M5788.52,-2881.45C5970.78,-2870.97 6652.44,-2831.18 6697,-2820.01 6830.65,-2786.49 6878.79,-2784.65 6978,-2689.03 7159.33,-2514.26 7396,-1887.49 7396,-1635.65 7396,-1635.65 7396,-1635.65 7396,-1232.26 7396,-1037.3 7469.6,-964.57 7375,-794.1 7230.11,-533.01 7081.4,-526.02 6789,-465.49 6516.16,-409 5624.57,-402.37 5406.47,-401.6"/>
<polygon fill="#f91010" stroke="black" points="5406.31,-398.1 5396.3,-401.56 5406.29,-405.1 5406.31,-398.1"/>
</g>
<!-- ahriman_core_report -->
<g id="node39" class="node">
<title>ahriman_core_report</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e72222" stroke="black" cx="2650" cy="-1634.65" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2650" y="-1643.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2650" y="-1632.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2650" 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="edge193" 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="M2676.03,-1613.15C2682.77,-1608.04 2690.08,-1602.65 2697,-1597.88 2782.11,-1539.17 2885.7,-1476.65 2943.51,-1442.53"/>
<polygon fill="#e72222" stroke="black" points="2945.54,-1445.39 2952.38,-1437.3 2941.99,-1439.36 2945.54,-1445.39"/>
</g>
<!-- ahriman_core_report_email&#45;&gt;ahriman_core_report_report -->
<g id="edge194" 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="M3589,-1697.17C3589,-1692.1 3589,-1686.95 3589,-1681.88"/>
<polygon fill="#7a2828" stroke="black" points="3585.5,-1697.38 3589,-1707.38 3592.5,-1697.38 3585.5,-1697.38"/>
<polygon fill="#7a2828" stroke="black" points="3592.5,-1681.67 3589,-1671.67 3585.5,-1681.67 3592.5,-1681.67"/>
</g>
<!-- ahriman_core_report_jinja_template&#45;&gt;ahriman_core_report_email -->
<g id="edge196" 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="M3752.32,-1830.44C3716.83,-1811.92 3666.6,-1785.7 3631.24,-1767.24"/>
<polygon fill="#832020" stroke="black" points="3632.62,-1764.01 3622.14,-1762.49 3629.39,-1770.22 3632.62,-1764.01"/>
</g>
<!-- ahriman_core_report_jinja_template&#45;&gt;ahriman_core_report_html -->
<g id="edge197" 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="M3834.28,-1827.91C3930.14,-1767.35 4175.25,-1612.5 4271.92,-1551.43"/>
<polygon fill="#832020" stroke="black" points="4273.95,-1554.29 4280.54,-1545.99 4270.21,-1548.37 4273.95,-1554.29"/>
</g>
<!-- ahriman_core_report_report&#45;&gt;ahriman_core_report_html -->
<g id="edge199" 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="M3636.6,-1626.57C3767.58,-1607.09 4132.28,-1552.84 4263.88,-1533.27"/>
<polygon fill="#8b1818" stroke="black" points="3635.98,-1623.12 3626.6,-1628.06 3637.01,-1630.05 3635.98,-1623.12"/>
<polygon fill="#8b1818" stroke="black" points="4264.67,-1536.69 4274.05,-1531.75 4263.64,-1529.76 4264.67,-1536.69"/>
</g>
<!-- ahriman_core_report_report&#45;&gt;ahriman_core_repository_executor -->
<g id="edge200" 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="M3550.96,-1629.86C3485.61,-1622.47 3348.57,-1603.11 3240,-1561.88 3160.94,-1531.86 3077.49,-1478.94 3029.22,-1445.93"/>
<polygon fill="#8b1818" stroke="black" points="3031.13,-1442.99 3020.91,-1440.2 3027.16,-1448.76 3031.13,-1442.99"/>
</g>
<!-- ahriman_core_repository -->
<g id="node44" class="node">
<title>ahriman_core_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="1742" cy="-1306.03" rx="42.35" ry="28.98"/>
<text text-anchor="middle" x="1742" y="-1314.53" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1742" y="-1303.53" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="1742" 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="edge201" 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="M1705.33,-1291.07C1621.65,-1259.4 1409.92,-1180.41 1230,-1122.72 1161.82,-1100.86 1082.21,-1078.65 1031.24,-1064.85"/>
<polygon fill="#f91010" stroke="black" points="1032,-1061.43 1021.44,-1062.2 1030.18,-1068.19 1032,-1061.43"/>
</g>
<!-- ahriman_core_repository&#45;&gt;ahriman_core_status_watcher -->
<g id="edge202" 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="M1784.25,-1302.8C2100.74,-1286.12 4097.79,-1180.85 4435.52,-1163.05"/>
<polygon fill="#f91010" stroke="black" points="4436.12,-1166.52 4445.93,-1162.5 4435.76,-1159.53 4436.12,-1166.52"/>
</g>
<!-- ahriman_core_repository_cleaner -->
<g id="node45" class="node">
<title>ahriman_core_repository_cleaner</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b42d2d" stroke="black" cx="3026" cy="-1525.11" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="3026" y="-1539.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3026" y="-1528.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3026" y="-1517.11" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3026" 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="edge203" 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="M3013.77,-1489.49C3010.51,-1480.28 3006.95,-1470.21 3003.55,-1460.57"/>
<polygon fill="#b42d2d" stroke="black" points="3006.84,-1459.39 3000.21,-1451.12 3000.24,-1461.72 3006.84,-1459.39"/>
</g>
<!-- ahriman_core_repository_update_handler -->
<g id="node49" class="node">
<title>ahriman_core_repository_update_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#993333" stroke="black" cx="3147" cy="-1415.57" rx="58.88" ry="36.54"/>
<text text-anchor="middle" x="3147" y="-1429.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3147" y="-1418.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3147" y="-1407.57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3147" 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="edge204" 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="M3055.6,-1497.8C3070.75,-1484.34 3089.44,-1467.73 3105.96,-1453.05"/>
<polygon fill="#b42d2d" stroke="black" points="3108.72,-1455.27 3113.87,-1446.02 3104.07,-1450.04 3108.72,-1455.27"/>
</g>
<!-- ahriman_core_repository_repository -->
<g id="node48" class="node">
<title>ahriman_core_repository_repository</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#932424" stroke="black" cx="3147" cy="-1306.03" rx="43.68" ry="36.54"/>
<text text-anchor="middle" x="3147" y="-1320.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3147" y="-1309.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3147" y="-1298.03" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">repository.</text>
<text text-anchor="middle" x="3147" 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="edge205" 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="M3021.72,-1391.76C3045.96,-1375.37 3078.82,-1353.14 3104.8,-1335.57"/>
<polygon fill="#732626" stroke="black" points="3107.01,-1338.31 3113.33,-1329.8 3103.08,-1332.51 3107.01,-1338.31"/>
</g>
<!-- ahriman_core_repository_properties&#45;&gt;ahriman_core_repository_cleaner -->
<g id="edge206" 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="M2879.97,-1613.18C2904.8,-1598.97 2938.53,-1579.49 2968,-1561.88 2972.7,-1559.07 2977.59,-1556.11 2982.45,-1553.15"/>
<polygon fill="#732626" stroke="black" points="2984.43,-1556.04 2991.13,-1547.83 2980.78,-1550.07 2984.43,-1556.04"/>
</g>
<!-- ahriman_core_repository_repository&#45;&gt;ahriman_application_application -->
<g id="edge207" 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="M3103.22,-1301.54C2889.8,-1284.25 1937.5,-1203.88 1164,-1086.72 1119.51,-1079.98 1069.41,-1070.16 1032.58,-1062.51"/>
<polygon fill="#932424" stroke="black" points="1033.06,-1059.03 1022.56,-1060.41 1031.63,-1065.89 1033.06,-1059.03"/>
</g>
<!-- ahriman_core_repository_repository&#45;&gt;ahriman_core_status_watcher -->
<g id="edge208" 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="M3190.92,-1303.89C3372.61,-1298.9 4065.96,-1277.31 4280,-1233.26 4337.11,-1221.51 4399.89,-1197.29 4440.51,-1180.03"/>
<polygon fill="#932424" stroke="black" points="4442.03,-1183.18 4449.83,-1176.02 4439.26,-1176.75 4442.03,-1183.18"/>
</g>
<!-- ahriman_core_repository_update_handler&#45;&gt;ahriman_core_repository_repository -->
<g id="edge209" 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="M3147,-1378.76C3147,-1370.59 3147,-1361.8 3147,-1353.27"/>
<polygon fill="#993333" stroke="black" points="3150.5,-1353.05 3147,-1343.05 3143.5,-1353.05 3150.5,-1353.05"/>
</g>
<!-- ahriman_core_sign -->
<g id="node50" class="node">
<title>ahriman_core_sign</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#ce3b3b" stroke="black" cx="3868" cy="-2072.8" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3868" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3868" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3868" 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="edge210" 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="M3779,-1962.27C3769.48,-1942.72 3771.76,-1919 3777.16,-1898.82"/>
<polygon fill="#ce3b3b" stroke="black" points="3780.51,-1899.81 3780.01,-1889.23 3773.8,-1897.81 3780.51,-1899.81"/>
</g>
<!-- ahriman_core_sign&#45;&gt;ahriman_core_repository_properties -->
<g id="edge211" 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="M3844.26,-2049.78C3823.86,-2029.5 3795.24,-1997.6 3779,-1964.27"/>
<path fill="none" stroke="black" d="M3779,-1962.27C3762.3,-1927.99 3751.32,-1923.37 3732,-1890.5 3685.44,-1811.29 3712.39,-1758.47 3636,-1707.42 3574.83,-1666.54 3066.41,-1643.98 2897.97,-1637.57"/>
<polygon fill="#ce3b3b" stroke="black" points="2897.97,-1634.07 2887.84,-1637.19 2897.71,-1641.06 2897.97,-1634.07"/>
</g>
<!-- ahriman_core_sign_gpg&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge212" 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="M2517.59,-2065.6C2700.82,-2035.35 3500.99,-1903.26 3732.22,-1865.09"/>
<polygon fill="#932424" stroke="black" points="3732.85,-1868.53 3742.15,-1863.45 3731.71,-1861.63 3732.85,-1868.53"/>
</g>
<!-- ahriman_core_sign_gpg&#45;&gt;ahriman_core_repository_properties -->
<g id="edge213" 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="M2477.19,-2035.97C2473.57,-1962.45 2476.74,-1794.2 2571,-1707.42 2643.89,-1640.31 2698.91,-1707.98 2791,-1671.42 2795.18,-1669.76 2799.36,-1667.73 2803.43,-1665.49"/>
<polygon fill="#932424" stroke="black" points="2805.34,-1668.43 2812.16,-1660.32 2801.77,-1662.41 2805.34,-1668.43"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_application_handlers_web -->
<g id="edge214" 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="M4210.28,-2148.75C4222.79,-2129.39 4237.25,-2101.26 4238,-2073.8"/>
<path fill="none" stroke="black" d="M4238,-2071.8C4238.94,-2037.15 4135.87,-1813.88 4125,-1780.96 4109.17,-1733.03 4108.21,-1720.14 4095,-1671.42 4077.5,-1606.88 4056,-1592.98 4056,-1526.11 4056,-1526.11 4056,-1526.11 4056,-939.41 4056,-797.22 4003.24,-748 3885,-669.01 3160.81,-185.21 2657.11,-849.47 1954,-335.5"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_web_views_base -->
<g id="edge215" 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="M4225.91,-2160.76C4241.31,-2155.37 4259.88,-2149.46 4277,-2145.57 4398.93,-2117.9 4438.32,-2151.8 4556,-2109.57 4786.19,-2026.98 4792.78,-1902.2 5022,-1816.96 5121.45,-1779.97 5182.51,-1855.52 5258,-1780.96 5304.57,-1734.96 5282,-1701.1 5282,-1635.65 5282,-1635.65 5282,-1635.65 5282,-1414.57 5282,-1234.06 5262.87,-1174.44 5344,-1013.18 5376.99,-947.61 5442.42,-890.87 5484.37,-859.06"/>
<polygon fill="#b62020" stroke="black" points="5486.52,-861.82 5492.43,-853.03 5482.33,-856.22 5486.52,-861.82"/>
</g>
<!-- ahriman_core_spawn&#45;&gt;ahriman_web_web -->
<g id="edge216" 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="M4238,-2071.8C4249.36,-1821.23 4094,-1776.94 4094,-1526.11 4094,-1526.11 4094,-1526.11 4094,-1414.57 4094,-1309.09 4072.46,-1028.49 4132,-941.41"/>
</g>
<!-- ahriman_core_status -->
<g id="node53" class="node">
<title>ahriman_core_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="3906" cy="-1853.73" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="3906" y="-1862.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3906" y="-1851.23" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="3906" 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="edge217" 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="M3880.61,-1831.94C3848.12,-1806.64 3789.1,-1764.85 3731,-1745.19"/>
<path fill="none" stroke="black" d="M3731,-1743.19C3688.27,-1728.72 3680.27,-1716.09 3636,-1707.42 3343.24,-1650.06 2585.92,-1732.93 2294,-1671.42 2176.3,-1646.62 2047.97,-1584.48 1982.6,-1550.04"/>
<polygon fill="#f91010" stroke="black" points="1983.89,-1546.76 1973.42,-1545.16 1980.61,-1552.94 1983.89,-1546.76"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_core_repository_properties -->
<g id="edge218" 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="M3731,-1743.19C3700.87,-1732.99 3699.34,-1716.97 3669,-1707.42 3524.25,-1661.84 3057.18,-1642.63 2897.84,-1637.29"/>
<polygon fill="#f91010" stroke="black" points="2897.91,-1633.79 2887.8,-1636.96 2897.68,-1640.79 2897.91,-1633.79"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_web_views_base -->
<g id="edge219" 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="M3944.19,-1851.24C4150.96,-1843.09 5127.78,-1803.44 5149,-1780.96 5171.44,-1757.19 5153.96,-1739.72 5149,-1707.42 5136.18,-1623.93 5092,-1610.58 5092,-1526.11 5092,-1526.11 5092,-1526.11 5092,-1232.26 5092,-1037.47 5228.03,-1022.96 5382,-903.64 5390.51,-897.05 5441.44,-871.63 5479.67,-852.91"/>
<polygon fill="#f91010" stroke="black" points="5481.63,-855.85 5489.08,-848.31 5478.56,-849.56 5481.63,-855.85"/>
</g>
<!-- ahriman_core_status&#45;&gt;ahriman_web_web -->
<g id="edge220" 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="M3890.22,-1827.07C3867.42,-1787.5 3828,-1708.53 3828,-1635.65 3828,-1635.65 3828,-1635.65 3828,-595.24 3828,-442.15 5049.13,-407.96 5309.53,-402.41"/>
<polygon fill="#f91010" stroke="black" points="5309.87,-405.91 5319.8,-402.2 5309.73,-398.91 5309.87,-405.91"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_application_lock -->
<g id="edge221" 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="M2811.5,-1851.9C2687.63,-1848.73 2301.01,-1834.67 2190,-1780.96 2085.52,-1730.4 1999.81,-1617.82 1961.15,-1560.73"/>
<polygon fill="#931a1a" stroke="black" points="1964.04,-1558.76 1955.57,-1552.4 1958.22,-1562.65 1964.04,-1558.76"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_core_repository_properties -->
<g id="edge222" 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="M2849.01,-1816.88C2847.99,-1779.88 2846.39,-1722.02 2845.27,-1681.66"/>
<polygon fill="#931a1a" stroke="black" points="2848.77,-1681.45 2844.99,-1671.55 2841.77,-1681.64 2848.77,-1681.45"/>
</g>
<!-- ahriman_core_status_client&#45;&gt;ahriman_core_status_web_client -->
<g id="edge223" 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="M2898.18,-1849.53C3134.28,-1833.86 4167.59,-1765.26 4416.11,-1748.76"/>
<polygon fill="#931a1a" stroke="black" points="2897.8,-1846.05 2888.05,-1850.2 2898.26,-1853.03 2897.8,-1846.05"/>
<polygon fill="#931a1a" stroke="black" points="4416.58,-1752.24 4426.33,-1748.09 4416.12,-1745.26 4416.58,-1752.24"/>
</g>
<!-- ahriman_core_status_watcher&#45;&gt;ahriman_web_views_base -->
<g id="edge224" 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="M4518.44,-1143.12C4533.79,-1136.51 4552.16,-1128.89 4569,-1122.72 4874.72,-1010.77 4952.6,-984.37 5268,-903.64 5347.04,-883.42 5370.59,-893.4 5448,-867.64 5459.01,-863.98 5470.51,-859.09 5481.1,-854.1"/>
<polygon fill="#8b2222" stroke="black" points="5482.66,-857.23 5490.13,-849.72 5479.61,-850.93 5482.66,-857.23"/>
</g>
<!-- ahriman_core_status_watcher&#45;&gt;ahriman_web_web -->
<g id="edge225" 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="M4476.89,-1123.12C4474.62,-1111.53 4472.14,-1098.59 4470,-1086.72 4458.4,-1022.3 4479.81,-997.46 4446,-941.41"/>
<path fill="none" stroke="black" d="M4446,-939.41C4366.79,-838.85 4168.99,-798.08 4266,-714.56"/>
</g>
<!-- ahriman_core_tree&#45;&gt;ahriman_application_application -->
<g id="edge227" 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="M1687.71,-2158.89C1576.47,-2105.87 1216,-1912.71 1216,-1635.65 1216,-1635.65 1216,-1635.65 1216,-1524.11 1216,-1453.89 1188.59,-1439.9 1154,-1378.8 1134.59,-1344.52 1119.47,-1342.34 1102,-1307.03"/>
</g>
<!-- ahriman_core_upload -->
<g id="node58" class="node">
<title>ahriman_core_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f31616" stroke="black" cx="2744" cy="-1634.65" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2744" y="-1643.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2744" y="-1632.15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">core.</text>
<text text-anchor="middle" x="2744" 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="edge228" 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="M2769.58,-1612.45C2776.33,-1607.35 2783.76,-1602.15 2791,-1597.88 2859.19,-1557.68 2939.76,-1603.97 2954,-1526.11"/>
<path fill="none" stroke="black" d="M2954,-1524.11C2957.9,-1502.79 2964.78,-1479.79 2971.34,-1460.57"/>
<polygon fill="#f31616" stroke="black" points="2974.73,-1461.48 2974.73,-1450.88 2968.12,-1459.17 2974.73,-1461.48"/>
</g>
<!-- ahriman_core_upload_github&#45;&gt;ahriman_core_upload_upload -->
<g id="edge229" class="edge">
<title>ahriman_core_upload_github&#45;&gt;ahriman_core_upload_upload</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5307.44,-2028.1C5309.79,-2021.46 5312.21,-2014.61 5314.56,-2007.97"/>
<polygon fill="#822b2b" stroke="black" points="5304.06,-2027.18 5304.02,-2037.78 5310.66,-2029.52 5304.06,-2027.18"/>
<polygon fill="#822b2b" stroke="black" points="5317.89,-2009.03 5317.92,-1998.44 5311.29,-2006.7 5317.89,-2009.03"/>
</g>
<!-- ahriman_core_upload_upload&#45;&gt;ahriman_core_repository_executor -->
<g id="edge232" 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="M5294.68,-1949.27C5182.94,-1908.57 4826.6,-1781.83 4523,-1707.42 3890.02,-1552.27 3706.28,-1629.11 3079,-1452.34 3064.66,-1448.3 3049.46,-1442.83 3035.68,-1437.38"/>
<polygon fill="#8a0f0f" stroke="black" points="3036.97,-1434.12 3026.38,-1433.63 3034.35,-1440.61 3036.97,-1434.12"/>
</g>
<!-- ahriman_core_upload_upload&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge234" class="edge">
<title>ahriman_core_upload_upload&#45;&gt;ahriman_core_upload_rsync</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5330,-1916.24C5330,-1911.18 5330,-1906.02 5330,-1900.96"/>
<polygon fill="#8a0f0f" stroke="black" points="5326.5,-1916.46 5330,-1926.46 5333.5,-1916.46 5326.5,-1916.46"/>
<polygon fill="#8a0f0f" stroke="black" points="5333.5,-1900.75 5330,-1890.75 5326.5,-1900.75 5333.5,-1900.75"/>
</g>
<!-- ahriman_core_upload_upload&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge235" 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="M5377.84,-1956.69C5461.83,-1946.48 5641,-1922.82 5790,-1890.5 5817.55,-1884.52 5847.95,-1876.1 5872.22,-1868.93"/>
<polygon fill="#8a0f0f" stroke="black" points="5377.35,-1953.22 5367.84,-1957.89 5378.19,-1960.17 5377.35,-1953.22"/>
<polygon fill="#8a0f0f" stroke="black" points="5873.29,-1872.26 5881.87,-1866.05 5871.29,-1865.56 5873.29,-1872.26"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_application_application -->
<g id="edge236" 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="M4926.68,-2776.44C4911.23,-2770.82 4892.47,-2764.95 4875,-2762.03 4586,-2713.64 2530.45,-2744.41 2238,-2726.03"/>
<path fill="none" stroke="black" d="M2238,-2725.03C1765.16,-2695.31 1636.05,-2714.76 1182,-2579.49 964.81,-2514.78 879.95,-2539.15 708,-2391.52 582.11,-2283.44 572.36,-2200.54 594,-2036.03 633.67,-1734.57 650.71,-1652.1 784,-1378.8 809.97,-1325.54 824.19,-1316.47 860,-1269.26 897.92,-1219.27 937.43,-1221.96 950,-1160.49"/>
<path fill="none" stroke="black" d="M950,-1158.49C953.6,-1134.67 960.56,-1108.56 966.77,-1088.03"/>
<polygon fill="#db0505" stroke="black" points="970.12,-1089.02 969.73,-1078.44 963.44,-1086.96 970.12,-1089.02"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_application_lock -->
<g id="edge237" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_application_lock</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4926.68,-2776.44C4911.23,-2770.83 4892.47,-2764.96 4875,-2762.03 4313.67,-2667.93 2877.47,-2806.39 2314,-2726.03"/>
<path fill="none" stroke="black" d="M2314,-2725.03C2217.97,-2711.33 1967.96,-2727.68 1879,-2689.03 1834.4,-2669.65 1842.74,-2634.53 1798,-2615.49 1689.38,-2569.25 1352.76,-2661.65 1268,-2579.49 1233.31,-2545.86 1220.18,-2189.63 1240,-2145.57 1380.03,-1834.38 1762.21,-1616.2 1893.78,-1548.41"/>
<polygon fill="#db0505" stroke="black" points="1895.51,-1551.46 1902.82,-1543.79 1892.32,-1545.23 1895.51,-1551.46"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge238" 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="M4926.66,-2776.58C4911.21,-2770.99 4892.44,-2765.1 4875,-2762.03 4617.51,-2716.61 2769.86,-2775.16 2523,-2689.03 2484.54,-2675.61 2396.82,-2614.5 2376,-2579.49 2329.65,-2501.55 2401.6,-2210.69 2318,-2175.57"/>
<path fill="none" stroke="black" d="M2318,-2173.57C2273.58,-2154.92 2227.36,-2124.74 2196.08,-2102.45"/>
<polygon fill="#db0505" stroke="black" points="2197.83,-2099.4 2187.67,-2096.39 2193.74,-2105.08 2197.83,-2099.4"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_build_tools_sources -->
<g id="edge239" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_build_tools_sources</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2314,-2725.03C2197.99,-2707.27 2063.19,-2680.19 1989.7,-2664.87"/>
<polygon fill="#db0505" stroke="black" points="1990.25,-2661.41 1979.75,-2662.79 1988.82,-2668.26 1990.25,-2661.41"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge240" 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="M2314,-2725.03C2195.79,-2706.93 2243.43,-2577.94 2138,-2521.5 2081.53,-2491.27 1894.37,-2533.55 1852,-2485.5 1802.56,-2429.45 1870.22,-2385.44 1924,-2333.54 1959.32,-2299.46 2002.95,-2317.37 2014,-2269.55"/>
<path fill="none" stroke="black" d="M2014,-2267.55C2019.65,-2223.68 1978.85,-2219.71 1976,-2175.57"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_report_email -->
<g id="edge241" 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="M2930,-2549.5C2745.48,-2394.98 2934.23,-2208.59 3102,-2036.03 3254.9,-1878.77 3443.54,-2039.96 3561,-1854.73"/>
<path fill="none" stroke="black" d="M3561,-1852.73C3570.68,-1833.5 3577.24,-1810.61 3581.56,-1790.9"/>
<polygon fill="#db0505" stroke="black" points="3585.02,-1791.42 3583.62,-1780.92 3578.17,-1790.01 3585.02,-1791.42"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge242" 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="M4961.46,-2761.77C4960.73,-2749.4 4957.88,-2735.38 4950,-2725.03 4669.05,-2355.99 4301.62,-2648.16 3998,-2297.54 3964.15,-2258.45 3904.93,-2116.58 3934,-2073.8"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_repository_properties -->
<g id="edge243" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_repository_properties</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4926.67,-2776.47C4911.23,-2770.86 4892.46,-2764.99 4875,-2762.03 4651.27,-2724.11 3059.62,-2737.81 2833,-2726.03 2737.66,-2721.07 2484.96,-2741.18 2405,-2689.03 2163.11,-2531.27 2152.66,-2395.34 2111,-2109.57 2099.11,-2028.05 2097.05,-1996.8 2140,-1926.5 2152.47,-1906.09 2164.33,-1908.56 2180,-1890.5 2192.54,-1876.03 2190.5,-1868.3 2204,-1854.73"/>
<path fill="none" stroke="black" d="M2204,-1852.73C2267.95,-1773.99 2286.13,-1745.87 2380,-1707.42 2549.68,-1637.91 2618.16,-1732.66 2791,-1671.42 2795.29,-1669.9 2799.58,-1667.94 2803.73,-1665.73"/>
<polygon fill="#db0505" stroke="black" points="2805.73,-1668.62 2812.61,-1660.57 2802.21,-1662.58 2805.73,-1668.62"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_repository_repository -->
<g id="edge244" 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="M2314,-2725.03C2265.14,-2718.18 2254.52,-2708.04 2209,-2689.03 2071.86,-2631.75 1688.31,-2517.85 1610,-2391.52 1568.64,-2324.8 1838.79,-1525.11 1883,-1488.34 1906.85,-1468.5 2856.05,-1344.65 3093.56,-1313.92"/>
<polygon fill="#db0505" stroke="black" points="3094.2,-1317.37 3103.67,-1312.62 3093.3,-1310.43 3094.2,-1317.37"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge245" 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="M4931.26,-2771.66C4923.94,-2767.81 4915.9,-2764.24 4908,-2762.03 4616.39,-2680.16 3847.06,-2730.23 3547,-2689.03 3268.66,-2650.81 3131.83,-2746.94 2930,-2551.5"/>
<path fill="none" stroke="black" d="M2930,-2549.5C2770.24,-2405.15 2761.75,-2339.36 2622,-2175.57"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_status_web_client -->
<g id="edge246" 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="M4998.16,-2788.17C5074.78,-2783.59 5242.99,-2768.78 5278,-2726.03 5335.72,-2655.53 5320.98,-2592.6 5264,-2521.5 5252.51,-2507.17 4965.02,-2431.09 4947,-2427.52 4870.74,-2412.41 4654.91,-2445.55 4599,-2391.52 4519.64,-2314.84 4589.49,-2253.17 4565,-2145.57 4557.57,-2112.91 4551.27,-2105.99 4542,-2073.8"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_upload_github -->
<g id="edge247" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_upload_github</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5440,-2725.03C5477.33,-2703.52 5505.85,-2724.7 5530,-2689.03 5548.32,-2661.96 5547.24,-2643.25 5530,-2615.49 5523.79,-2605.48 5350.75,-2526.31 5340,-2521.5 5300.66,-2503.94 5274.15,-2521.18 5250,-2485.5 5171.69,-2369.84 5271.03,-2311.76 5302,-2175.57"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge248" 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="M4998.14,-2789.66C5122.73,-2787.97 5516.21,-2778.53 5630,-2726.03"/>
<path fill="none" stroke="black" d="M5630,-2725.03C5814.45,-2639.92 5757.45,-2451.93 5668,-2269.55"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge249" class="edge">
<title>ahriman_core_util&#45;&gt;ahriman_core_upload_s3</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5630,-2725.03C5673.95,-2710.14 5694.76,-2721.4 5728,-2689.03 5807.31,-2611.77 5820,-2568.24 5820,-2457.51 5820,-2457.51 5820,-2457.51 5820,-2361.53 5820,-2316.37 5896.29,-2220.37 5902,-2175.57"/>
<path fill="none" stroke="black" d="M5902,-2173.57C5905.08,-2080.44 5876.69,-2056.48 5890,-1964.27"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_models_build_status -->
<g id="edge250" 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="M4998.16,-2789.06C5085.1,-2786.02 5288.59,-2773.67 5264,-2725.03 5163.4,-2526.02 5067.3,-2509.68 4860,-2427.52 4857.26,-2426.44 4524.3,-2386.75 4387.09,-2370.43"/>
<polygon fill="#db0505" stroke="black" points="4387.11,-2366.91 4376.77,-2369.21 4386.29,-2373.86 4387.11,-2366.91"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_models_package -->
<g id="edge251" 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="M4956.89,-2761.93C4953.84,-2748.49 4947.83,-2733.5 4936,-2725.03 4813.4,-2637.17 3692.81,-2788.01 3579,-2689.03 3532.24,-2648.36 3559.78,-2613.35 3556,-2551.5"/>
<path fill="none" stroke="black" d="M3556,-2549.5C3549.44,-2509.15 3594.4,-2471.54 3556,-2457.51"/>
<path fill="none" stroke="black" d="M3556,-2455.51C3540.61,-2449.89 3546.25,-2435.61 3532,-2427.52 3450.03,-2380.99 3413.04,-2419.41 3323,-2391.52 3316.27,-2389.44 3309.32,-2386.78 3302.62,-2383.93"/>
<polygon fill="#db0505" stroke="black" points="3303.61,-2380.53 3293.05,-2379.66 3300.76,-2386.93 3303.61,-2380.53"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_models_package_source -->
<g id="edge252" 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="M2238,-2725.03C2063.38,-2714.28 2012.43,-2742.97 1846,-2689.03 1785.05,-2669.27 1783.13,-2634.68 1722,-2615.49 1617.41,-2582.65 1317.09,-2646.07 1230,-2579.49 1174.58,-2537.12 1159.43,-2451.33 1155.38,-2401.58"/>
<polygon fill="#db0505" stroke="black" points="1158.87,-2401.27 1154.67,-2391.54 1151.88,-2401.76 1158.87,-2401.27"/>
</g>
<!-- ahriman_core_util&#45;&gt;ahriman_web_views_index -->
<g id="edge253" 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="M4998.3,-2788.98C5098.65,-2785.62 5366.52,-2772.43 5440,-2726.03"/>
<path fill="none" stroke="black" d="M5440,-2725.03C5445.86,-2721.33 5301.31,-2525.95 5296,-2521.5 5267.01,-2497.28 5242.86,-2514.79 5219,-2485.5 5089.31,-2326.3 5178.91,-2230.18 5112,-2036.03 5071.36,-1918.12 5044.26,-1895.54 4995,-1780.96 4974.28,-1732.76 4968.81,-1720.77 4951,-1671.42 4840.98,-1366.59 4795.63,-1294.12 4728,-977.18 4714.44,-913.64 4672.76,-883.66 4712,-831.87"/>
<path fill="none" stroke="black" d="M4712,-829.87C4751.54,-762.71 4807,-801.11 4872,-758.1 4876.64,-755.04 4881.26,-751.5 4885.69,-747.81"/>
<polygon fill="#db0505" stroke="black" points="4888.2,-750.26 4893.42,-741.04 4883.59,-744.99 4888.2,-750.26"/>
</g>
<!-- ahriman_models -->
<g id="node64" class="node">
<title>ahriman_models</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="4659" cy="-2362.53" rx="50.75" ry="18"/>
<text text-anchor="middle" x="4659" 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="edge254" 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="M4709.14,-2359.17C4815.09,-2354.2 5069.55,-2342.4 5283,-2333.54 5387.87,-2329.19 6126.03,-2326.21 6227,-2297.54 6368.63,-2257.33 7064.38,-1841.11 7106,-1780.96 7246.78,-1577.46 7206,-1480.71 7206,-1233.26 7206,-1233.26 7206,-1233.26 7206,-939.41 7206,-738.77 7298.08,-695.87 7288,-495.48"/>
<path fill="none" stroke="black" d="M7288,-493.48C7268.7,-407.33 7241.19,-386.35 7250,-298.5"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_application -->
<g id="edge255" 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="M4611.39,-2356.04C4557.14,-2349.92 4465.77,-2340.04 4387,-2333.54 4130.04,-2312.34 4059.48,-2354.42 3808,-2297.54 3740.71,-2282.32 3728.01,-2265.3 3664,-2239.56 3638,-2229.1 3457.25,-2152.11 3430,-2145.57 3254.7,-2103.53 3199.26,-2159.34 3026,-2109.57 2987.3,-2098.46 2414.38,-1801.92 2380,-1780.96 2237.8,-1694.26 2205.41,-1666.7 2076,-1561.88 2038.22,-1531.27 2037.19,-1512.51 1995,-1488.34 1948.53,-1461.72 1930.5,-1470.17 1880,-1452.34 1587.21,-1348.99 1503.5,-1343.25 1230,-1196.26 1179.81,-1169.29 1174.04,-1151.72 1125,-1122.72 1092.75,-1103.66 1054.72,-1085.08 1025.56,-1071.6"/>
<polygon fill="#f91010" stroke="black" points="1026.98,-1068.4 1016.43,-1067.41 1024.06,-1074.76 1026.98,-1068.4"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_handler -->
<g id="edge256" 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="M3116,-2071.8C3002.35,-1974.93 3030.35,-1884.18 2897,-1816.96 2788.5,-1762.26 2742.92,-1814.01 2626,-1780.96 2510.83,-1748.4 2484.18,-1730.33 2380,-1671.42 2327.65,-1641.82 1537,-1091.95 1493,-1050.95"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_patch -->
<g id="edge257" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_handlers_patch</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3154,-2071.8C3139.49,-2035.18 3193.85,-2037.51 3206,-2000.03 3216.08,-1968.94 3213.77,-1958.24 3206,-1926.5 3192.96,-1873.19 3194.29,-1847.96 3149,-1816.96 3028.35,-1734.36 2960.42,-1828.04 2822,-1780.96 2762.42,-1760.69 2758.69,-1732.57 2701,-1707.42 2647.22,-1683.97 2615.76,-1712.63 2574,-1671.42 2453.45,-1552.45 2480.97,-1054.62 2355,-941.41"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge258" 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="M3116,-2071.8C3058.64,-2028.49 3083.86,-1986.97 3045,-1926.5 3010.94,-1873.49 3010.26,-1847.22 2955,-1816.96 2836.83,-1752.24 2779.86,-1829.05 2654,-1780.96 2600.78,-1760.62 2598.95,-1734.82 2549,-1707.42 2512.31,-1687.29 2494.34,-1697.98 2462,-1671.42 2416.79,-1634.28 2420.41,-1611.24 2389,-1561.88 2287.06,-1401.69 2260.51,-1362.08 2168,-1196.26 2150.08,-1164.13 2153.57,-1150.97 2130,-1122.72 2104.47,-1092.12 2022.24,-1033.58 1988,-1013.18 1884.83,-951.73 1854.8,-941.99 1741,-903.64 1675.21,-881.48 1654.42,-890.89 1589,-867.64 1583.18,-865.57 1577.2,-863.18 1571.3,-860.63"/>
<polygon fill="#f91010" stroke="black" points="1572.67,-857.41 1562.12,-856.53 1569.82,-863.8 1572.67,-857.41"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge259" 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="M3898,-2267.55C3868.76,-2259.87 3864.24,-2250.35 3836,-2239.56 3786.37,-2220.59 3769.16,-2228.04 3722,-2203.56 3684.29,-2183.98 3685.55,-2161.1 3646,-2145.57 3568.9,-2115.29 3330.67,-2170.91 3275,-2109.57 3253.03,-2085.37 3271.87,-2068.57 3275,-2036.03 3276.56,-2019.81 3280.44,-2016.26 3282,-2000.03 3285.13,-1967.5 3291.57,-1957.75 3282,-1926.5 3264.8,-1870.32 3255.59,-1851.41 3208,-1816.96 3171.89,-1790.81 2865.51,-1717.13 2822,-1707.42 2725.73,-1685.92 2675.1,-1738.74 2603,-1671.42 2572.55,-1642.98 2454.55,-975.79 2431,-941.41"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_status -->
<g id="edge260" 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="M4611.38,-2356.18C4557.12,-2350.18 4465.74,-2340.41 4387,-2333.54 4163.72,-2314.07 4103.67,-2342.03 3884,-2297.54 3876.06,-2295.93 3614.1,-2208.88 3608,-2203.56 3597.52,-2194.41 3607.32,-2179.58 3594,-2175.57"/>
<path fill="none" stroke="black" d="M3594,-2173.57C3559.36,-2162.35 3552.55,-2153.44 3517,-2145.57 3336.23,-2105.61 3278.33,-2166.01 3102,-2109.57 3067.78,-2098.62 2574.72,-1801.15 2545,-1780.96 2479.36,-1736.36 2461.65,-1725.95 2404,-1671.42 2214.78,-1492.45 2206.06,-1410.34 2016,-1232.26 1850.6,-1077.28 1833.3,-995.3 1626,-903.64 1549.39,-869.77 1521.55,-890.62 1441,-867.64 1426.54,-863.52 1411.17,-858.12 1397.14,-852.77"/>
<polygon fill="#f91010" stroke="black" points="1398.25,-849.45 1387.67,-849.09 1395.72,-855.98 1398.25,-849.45"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge261" class="edge">
<title>ahriman_models&#45;&gt;ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4610.86,-2356.43C4556.51,-2350.7 4465.43,-2341.2 4387,-2333.54 4214.2,-2316.65 4168.74,-2329.07 3998,-2297.54 3952.61,-2289.16 3942.74,-2280.88 3898,-2269.55"/>
<path fill="none" stroke="black" d="M3898,-2267.55C3868.69,-2260.13 3864.83,-2248.65 3836,-2239.56 3754.04,-2213.69 3717.47,-2251.3 3646,-2203.56 3620.38,-2186.44 3634.32,-2161.6 3608,-2145.57 3520.75,-2092.46 3201.15,-2164.41 3154,-2073.8"/>
<path fill="none" stroke="black" d="M3154,-2071.8C3139.03,-2042.96 3164.87,-2032.38 3168,-2000.03 3171.14,-1967.5 3181.44,-1956.29 3168,-1926.5 3137.77,-1859.46 3111.32,-1846.54 3044,-1816.96 2903.67,-1755.29 2831.41,-1861.51 2701,-1780.96 2668,-1760.57 2685.16,-1730.52 2654,-1707.42 2606.53,-1672.21 2573.63,-1706.4 2526,-1671.42 2442.96,-1610.43 2094.95,-955.64 2006,-903.64 1894.26,-838.32 1840,-907.97 1717,-867.64 1711.78,-865.93 1706.51,-863.78 1701.34,-861.39"/>
<polygon fill="#f91010" stroke="black" points="1702.71,-858.17 1692.2,-856.87 1699.61,-864.44 1702.71,-858.17"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_handlers_user -->
<g id="edge262" 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="M4088,-2267.55C4052.94,-2246.53 4111.04,-2209.34 4088,-2175.57"/>
<path fill="none" stroke="black" d="M4088,-2173.57C4014.67,-2066.08 3598.13,-2201.45 3506,-2109.57 3425.53,-2029.32 3494.24,-1968 3485,-1854.73"/>
<path fill="none" stroke="black" d="M3485,-1852.73C3481.92,-1756.3 3485,-1732.13 3485,-1635.65 3485,-1635.65 3485,-1635.65 3485,-1305.03 3485,-1240.79 3448.47,-1213.33 3485,-1160.49"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_application_lock -->
<g id="edge263" 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="M4611.4,-2355.94C4557.15,-2349.73 4465.8,-2339.76 4387,-2333.54 4096.35,-2310.61 4017.1,-2358.51 3732,-2297.54 3547.65,-2258.12 3519.74,-2187.74 3336,-2145.57 3151.67,-2103.28 3092.11,-2167.27 2912,-2109.57 2850.98,-2090.03 2846.13,-2062.99 2788,-2036.03 2743.63,-2015.45 2730.12,-2016.33 2684,-2000.03 2548.58,-1952.2 2514.93,-1939.69 2380,-1890.5 2297.78,-1860.52 2078.74,-1804.07 2014,-1745.19"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge264" 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="M4611.91,-2355.74C4557.74,-2349.3 4466.08,-2339.08 4387,-2333.54 3959.75,-2303.6 3851.14,-2329.04 3424,-2297.54 3300.7,-2288.45 2431.95,-2223.52 2318,-2175.57"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_auth -->
<g id="edge265" 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="M4709.15,-2359.22C4815.1,-2354.36 5069.57,-2342.75 5283,-2333.54 5475.88,-2325.21 5963.15,-2342.07 6151,-2297.54 6180.42,-2290.57 6187.12,-2285.17 6213,-2269.55"/>
<path fill="none" stroke="black" d="M6213,-2267.55C6273.02,-2231.33 6252.72,-2181.35 6313,-2145.57 6386.91,-2101.71 6446.15,-2174.04 6503,-2109.57 6545.8,-2061.04 6491.55,-2025.65 6512,-1964.27"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge266" 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="M5968,-2267.55C6125.56,-2171.24 6156.75,-2134.45 6313,-2036.03 6339.64,-2019.26 6351.11,-2021.64 6374,-2000.03 6387.92,-1986.89 6387.89,-1980.52 6398,-1964.27"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge267" 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="M5968,-2173.57C5987.39,-2119.61 6038.08,-2148.69 6080,-2109.57 6179.55,-2016.69 6205.77,-1983.5 6250,-1854.73"/>
<path fill="none" stroke="black" d="M6250,-1852.73C6258.49,-1821.04 6376.24,-1621.49 6399,-1597.88 6419.06,-1577.07 6446.3,-1559.54 6469,-1547.02"/>
<polygon fill="#f91010" stroke="black" points="6470.95,-1549.94 6478.1,-1542.13 6467.64,-1543.78 6470.95,-1549.94"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge268" 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="M2660,-2267.55C2499.9,-2253.03 2459.11,-2245.79 2304,-2203.56 2232.23,-2184.02 2217.05,-2170.59 2147,-2145.57 2094.1,-2126.68 2033.35,-2105.81 1991.21,-2091.47"/>
<polygon fill="#f91010" stroke="black" points="1992.31,-2088.15 1981.72,-2088.24 1990.06,-2094.78 1992.31,-2088.15"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_email -->
<g id="edge269" 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="M4088,-2173.57C4021.71,-2071.11 3920.35,-2180.43 3821,-2109.57 3704.92,-2026.78 3633.3,-1865.99 3604.12,-1788.72"/>
<polygon fill="#f91010" stroke="black" points="3607.38,-1787.42 3600.61,-1779.27 3600.82,-1789.86 3607.38,-1787.42"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_html -->
<g id="edge270" 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="M4705.3,-2355.05C4756.46,-2345.42 4837.71,-2322.41 4884,-2269.55"/>
<path fill="none" stroke="black" d="M4884,-2267.55C4918.94,-2227.65 4825.68,-2225.56 4808,-2175.57"/>
<path fill="none" stroke="black" d="M4808,-2173.57C4792.18,-2128.84 4798.78,-2111.52 4770,-2073.8"/>
<path fill="none" stroke="black" d="M4770,-2071.8C4721.24,-2007.91 4656.78,-2060.65 4604,-2000.03 4515.39,-1898.26 4596.04,-1820.89 4523,-1707.42 4509.51,-1686.46 4498.98,-1687.57 4480,-1671.42 4434.05,-1632.32 4381.52,-1586.73 4347.61,-1557.2"/>
<polygon fill="#f91010" stroke="black" points="4349.66,-1554.35 4339.82,-1550.41 4345.06,-1559.62 4349.66,-1554.35"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge271" 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="M4088,-2173.57C4025.76,-2076.29 4016.42,-2045.17 3934,-1964.27"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_report_report -->
<g id="edge272" 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="M4088,-2173.57C4052.46,-2119.1 4060.88,-2096.92 4038,-2036.03 4001.27,-1938.27 4019.02,-1897.89 3953,-1816.96 3869.72,-1714.86 3714.42,-1665.27 3636.36,-1645.88"/>
<polygon fill="#f91010" stroke="black" points="3636.87,-1642.41 3626.33,-1643.45 3635.22,-1649.21 3636.87,-1642.41"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_executor -->
<g id="edge273" 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="M4012,-2267.55C3972.26,-2255.21 3871.01,-2226.06 3836,-2203.56 3805.6,-2184.02 3811.63,-2161.1 3779,-2145.57 3702,-2108.95 3461.65,-2165.16 3397,-2109.57 3295.36,-2022.19 3393.12,-1931.8 3324,-1816.96 3224.55,-1651.73 3103.95,-1703.44 2973,-1561.88 2960.78,-1548.66 2949.43,-1543.52 2954,-1526.11"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_properties -->
<g id="edge274" 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="M4610.87,-2356.47C4473.22,-2341.97 4086.95,-2301.08 4074,-2297.54 4044.83,-2289.58 4040.87,-2278.53 4012,-2269.55"/>
<path fill="none" stroke="black" d="M4012,-2267.55C3966.64,-2253.43 3850.81,-2224.16 3808,-2203.56 3766.46,-2183.56 3765.48,-2160.88 3722,-2145.57 3631.55,-2113.74 3356.91,-2180.15 3292,-2109.57 3269.87,-2085.52 3281.39,-2066.95 3292,-2036.03 3298.58,-2016.86 3313.42,-2019.21 3320,-2000.03 3346.81,-1921.9 3343.31,-1878.31 3288,-1816.96 3182.54,-1699.98 2990.52,-1656.88 2897.43,-1642.35"/>
<polygon fill="#f91010" stroke="black" points="2897.8,-1638.87 2887.39,-1640.83 2896.75,-1645.79 2897.8,-1638.87"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_repository -->
<g id="edge275" 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="M4611.1,-2356.51C4478.88,-2342.59 4117.78,-2304.07 4107,-2297.54 4094.14,-2289.75 4101,-2277.11 4088,-2269.55"/>
<path fill="none" stroke="black" d="M4088,-2267.55C3998.99,-2215.76 3988.84,-2177.71 3891,-2145.57 3796.32,-2114.47 3511.58,-2182.81 3444,-2109.57 3421.84,-2085.55 3443.83,-2068.72 3444,-2036.03 3444.67,-1906.76 3447,-1874.46 3447,-1745.19 3447,-1745.19 3447,-1745.19 3447,-1524.11 3447,-1403.06 3284.7,-1342.64 3198.85,-1319.15"/>
<polygon fill="#f91010" stroke="black" points="3199.59,-1315.72 3189.03,-1316.53 3197.79,-1322.49 3199.59,-1315.72"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_repository_update_handler -->
<g id="edge276" 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="M4012,-2267.55C3921.33,-2238.64 3925.57,-2177.74 3836,-2145.57 3745.75,-2113.16 3472.73,-2178.43 3406,-2109.57 3404.05,-2107.57 3386.41,-1709.83 3385,-1707.42 3316.48,-1590.56 3112.16,-1658.68 3140,-1526.11"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge277" 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="M4611.9,-2355.82C4557.73,-2349.45 4466.07,-2339.29 4387,-2333.54 4199.55,-2319.91 3722.99,-2348.2 3542,-2297.54 3407.15,-2259.79 3400.3,-2185.24 3266,-2145.57 3049.77,-2081.72 2984.35,-2131.87 2760,-2109.57 2678.28,-2101.45 2583.58,-2088.64 2527.9,-2080.75"/>
<polygon fill="#f91010" stroke="black" points="2528.36,-2077.28 2517.97,-2079.34 2527.37,-2084.21 2528.36,-2077.28"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_spawn -->
<g id="edge278" 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="M4630.92,-2347.38C4582.65,-2323.37 4480.48,-2273.9 4391,-2239.56 4341.4,-2220.52 4327.57,-2219.87 4277,-2203.56 4263.8,-2199.3 4249.48,-2194.61 4236.41,-2190.3"/>
<polygon fill="#f91010" stroke="black" points="4237.3,-2186.91 4226.71,-2187.1 4235.11,-2193.56 4237.3,-2186.91"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_client -->
<g id="edge279" 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="M3594,-2173.57C3569.61,-2166.21 3161.58,-2123.1 3140,-2109.57 3123.78,-2099.41 3130.35,-2086.48 3116,-2073.8"/>
<path fill="none" stroke="black" d="M3116,-2071.8C3041.74,-2006.24 3024.42,-1988.29 2947,-1926.5 2928.29,-1911.56 2906.95,-1895.65 2889.06,-1882.62"/>
<polygon fill="#f91010" stroke="black" points="2890.73,-1879.51 2880.58,-1876.47 2886.62,-1885.18 2890.73,-1879.51"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_watcher -->
<g id="edge280" 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="M4808,-2173.57C4787.31,-2115.07 4797.86,-2096.51 4784,-2036.03 4735.34,-1823.72 4679.64,-1778.81 4660,-1561.88 4657.05,-1529.33 4655.45,-1520.71 4660,-1488.34 4662.92,-1467.59 4720.04,-1326.38 4712,-1307.03"/>
<path fill="none" stroke="black" d="M4712,-1305.03C4676.51,-1239.29 4613.78,-1285.11 4560,-1233.26"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_status_web_client -->
<g id="edge281" 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="M4676.19,-2345.45C4687.65,-2333.49 4701.71,-2316.09 4708,-2297.54 4729.68,-2233.57 4737.1,-2206.52 4708,-2145.57 4681.87,-2090.84 4511.25,-2024.48 4504,-1964.27"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_tree -->
<g id="edge282" 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="M4611.92,-2355.6C4557.76,-2349.03 4466.11,-2338.68 4387,-2333.54 3620.54,-2283.71 3424.95,-2338.9 2660,-2269.55"/>
<path fill="none" stroke="black" d="M2660,-2267.55C2349.75,-2239.42 2271.86,-2235.68 1962,-2203.56 1894.45,-2196.55 1816.42,-2187.32 1767.65,-2181.41"/>
<polygon fill="#f91010" stroke="black" points="1768.04,-2177.94 1757.7,-2180.21 1767.2,-2184.89 1768.04,-2177.94"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_github -->
<g id="edge283" class="edge">
<title>ahriman_models&#45;&gt;ahriman_core_upload_github</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4998,-2267.55C5049.35,-2246.17 5192.88,-2233.12 5240,-2203.56 5253.88,-2194.85 5251.31,-2185.94 5264,-2175.57"/>
<path fill="none" stroke="black" d="M5264,-2173.57C5279.89,-2160.58 5287.18,-2139.34 5290.38,-2119.8"/>
<polygon fill="#f91010" stroke="black" points="5293.86,-2120.16 5291.7,-2109.79 5286.92,-2119.24 5293.86,-2120.16"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge284" 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="M4703.91,-2354.12C4770.35,-2342.1 4897.76,-2315.03 4998,-2269.55"/>
<path fill="none" stroke="black" d="M4998,-2267.55C5082.23,-2229.33 5023.2,-2151.1 5074,-2073.8"/>
<path fill="none" stroke="black" d="M5074,-2071.8C5082.6,-2057.06 5076.35,-2048.52 5088,-2036.03 5113.5,-2008.71 5132.75,-2020.54 5164,-2000.03 5214.1,-1967.16 5264.97,-1920.19 5296.95,-1888.64"/>
<polygon fill="#f91010" stroke="black" points="5299.64,-1890.9 5304.27,-1881.36 5294.71,-1885.93 5299.64,-1890.9"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge285" 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="M5853,-2071.8C5850.05,-2021.35 5881.76,-2014.13 5890,-1964.27"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_core_upload_upload -->
<g id="edge286" 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="M4998,-2267.55C5136.9,-2209.71 5132.59,-2136.05 5245,-2036.03 5260.73,-2022.04 5278.47,-2006.95 5293.66,-1994.24"/>
<polygon fill="#f91010" stroke="black" points="5295.92,-1996.92 5301.35,-1987.83 5291.43,-1991.54 5295.92,-1996.92"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge287" 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="M6213,-2267.55C6312.89,-2222.76 6327.72,-2191.71 6427,-2145.57 6469.08,-2126.02 6486.68,-2135.74 6525,-2109.57 6624.58,-2041.59 6630.26,-1997.92 6685,-1890.5 6709.21,-1842.98 6716.12,-1831.2 6734,-1780.96 6767.8,-1685.95 6774.79,-1661.06 6793,-1561.88 6796.31,-1543.83 6815.12,-1248.04 6826,-1233.26"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_base -->
<g id="edge288" 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="M4884,-2267.55C4908.14,-2239.98 4913.79,-2232.7 4936,-2203.56 4999.98,-2119.6 5122.87,-1873.5 5212,-1816.96 5287.53,-1769.04 5350.46,-1847.71 5410,-1780.96 5518.03,-1659.84 5434,-1578.87 5434,-1416.57 5434,-1416.57 5434,-1416.57 5434,-1232.26 5434,-1101.9 5423.06,-1062.24 5472,-941.41"/>
<path fill="none" stroke="black" d="M5472,-939.41C5476.88,-915.83 5487.89,-891.43 5498.43,-871.85"/>
<polygon fill="#f91010" stroke="black" points="5501.59,-873.37 5503.38,-862.93 5495.47,-869.98 5501.59,-873.37"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_index -->
<g id="edge289" 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="M4770,-2071.8C4567.42,-1777.58 4851.14,-1603.85 4726,-1269.26 4718.9,-1250.28 4707.27,-1251.29 4698,-1233.26 4670.86,-1180.47 4630.53,-1035.93 4622,-977.18 4617.3,-944.84 4612.24,-934.84 4622,-903.64 4639.7,-847.09 4648.57,-826.78 4698,-794.1 4763.88,-750.55 4801.8,-794.27 4872,-758.1 4876.94,-755.56 4881.75,-752.34 4886.28,-748.82"/>
<polygon fill="#f91010" stroke="black" points="4888.72,-751.34 4894.12,-742.23 4884.21,-745.99 4888.72,-751.34"/>
</g>
<!-- ahriman_web_views_service_add -->
<g id="node91" class="node">
<title>ahriman_web_views_service_add</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="5778" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5778" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5778" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5778" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5778" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="5778" 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="edge290" 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="M5264,-2173.57C5519.56,-1964.69 5776,-1965.71 5776,-1635.65 5776,-1635.65 5776,-1635.65 5776,-1232.26 5776,-1167.28 5765.11,-1151.63 5762,-1086.72 5756.56,-973.28 5766.11,-840.34 5772.65,-768.04"/>
<polygon fill="#f91010" stroke="black" points="5776.16,-768.1 5773.59,-757.83 5769.19,-767.46 5776.16,-768.1"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge291" 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="M4709.01,-2359.29C4948.41,-2348.53 5966.55,-2302.52 5982,-2297.54 6128.19,-2250.43 6152.44,-2206 6272,-2109.57 6308.09,-2080.47 6308.83,-2063.76 6346,-2036.03 6372.78,-2016.06 6390.07,-2025.24 6412,-2000.03 6463.24,-1941.16 6514.14,-1746.35 6536,-1671.42 6549.93,-1623.66 6553.46,-1611.31 6559,-1561.88 6568.07,-1481.01 6552.96,-1459.68 6562,-1378.8 6582.25,-1197.57 6613.67,-1156.65 6646,-977.18 6657.58,-912.9 6677.46,-896.5 6668,-831.87"/>
</g>
<!-- ahriman_web_views_service_remove -->
<g id="node93" class="node">
<title>ahriman_web_views_service_remove</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="5544" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5544" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5544" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5544" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5544" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="5544" 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="edge292" 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="M4922,-2071.8C4927.89,-2055.78 4926.46,-2050.19 4936,-2036.03 4949,-2016.74 4957.81,-2016.74 4974,-2000.03 4983.48,-1990.26 5125.24,-1823.83 5137,-1816.96 5201.8,-1779.07 5254.92,-1839.41 5302,-1780.96 5326.63,-1750.38 5279.1,-1598.25 5279,-1597.88 5222.59,-1390.73 5122.73,-1325.93 5192,-1122.72 5246.26,-963.56 5307.43,-942.59 5434,-831.87"/>
<path fill="none" stroke="black" d="M5434,-829.87C5455.9,-800.62 5484.48,-770.86 5507.02,-748.9"/>
<polygon fill="#f91010" stroke="black" points="5509.65,-751.23 5514.41,-741.76 5504.79,-746.19 5509.65,-751.23"/>
</g>
<!-- ahriman_web_views_service_request -->
<g id="node94" class="node">
<title>ahriman_web_views_service_request</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="5356" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="5356" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5356" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5356" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5356" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="5356" y="-689.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">request</text>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_service_request -->
<g id="edge293" class="edge">
<title>ahriman_models&#45;&gt;ahriman_web_views_service_request</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4884,-2267.55C4936.81,-2197.47 4895.79,-2157.55 4922,-2073.8"/>
<path fill="none" stroke="black" d="M4922,-2071.8C4939.49,-2024.23 4943.39,-2012.16 4960,-1964.27"/>
<path fill="none" stroke="black" d="M4960,-1962.27C4983.01,-1895.93 4966.51,-1859.98 5022,-1816.96 5105.86,-1751.95 5188.86,-1861.44 5258,-1780.96 5279.3,-1756.16 5263.43,-1739.65 5258,-1707.42 5249.44,-1656.6 5241.75,-1644.6 5220,-1597.88 5133.1,-1411.2 5061.43,-1389.02 4989,-1196.26 4971.44,-1149.52 4969.59,-1136.34 4964,-1086.72 4949.32,-956.4 4906.75,-884.25 5002,-794.1 5051.89,-746.89 5246.62,-786.86 5309,-758.1 5313.09,-756.22 5317.06,-753.84 5320.85,-751.18"/>
<polygon fill="#f91010" stroke="black" points="5323.09,-753.87 5328.82,-744.95 5318.78,-748.35 5323.09,-753.87"/>
</g>
<!-- ahriman_web_views_service_search -->
<g id="node95" class="node">
<title>ahriman_web_views_service_search</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="6004" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="6004" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6004" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="6004" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="6004" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">service.</text>
<text text-anchor="middle" x="6004" 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="edge294" 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="M4708.98,-2359.35C4944.79,-2349.04 5935.22,-2305.28 5949,-2297.54 5962.11,-2290.17 5954.81,-2276.77 5968,-2269.55"/>
<path fill="none" stroke="black" d="M5968,-2267.55C6003.85,-2247.91 5958.05,-2215.22 5968,-2175.57"/>
<path fill="none" stroke="black" d="M5968,-2173.57C5979.59,-2127.39 5923.43,-2121.08 5929,-2073.8"/>
<path fill="none" stroke="black" d="M5929,-2071.8C5941.75,-1963.47 6137.73,-1223.28 6180,-1122.72 6216.34,-1036.25 6269.47,-1033.36 6288,-941.41"/>
<path fill="none" stroke="black" d="M6288,-939.41C6294.82,-866.01 6266.85,-838.51 6208,-794.1 6150.86,-750.98 6114.29,-791.57 6051,-758.1 6047.08,-756.03 6043.24,-753.55 6039.55,-750.83"/>
<polygon fill="#f91010" stroke="black" points="6041.73,-748.09 6031.74,-744.58 6037.36,-753.56 6041.73,-748.09"/>
</g>
<!-- ahriman_web_views_status_ahriman -->
<g id="node97" class="node">
<title>ahriman_web_views_status_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#822b2b" stroke="black" cx="4731" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4731" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4731" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4731" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4731" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="4731" 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="edge295" 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="M4649.23,-2344.84C4626.18,-2305.03 4567.39,-2201.04 4528,-2109.57 4507.62,-2062.25 4506.59,-2048.82 4490,-2000.03 4456.96,-1902.87 4443.25,-1880.17 4417,-1780.96 4383.09,-1652.78 4394.7,-1616.02 4359,-1488.34 4326.51,-1372.13 4226.35,-1347.23 4266,-1233.26"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_status_package -->
<g id="edge296" 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="M4960,-1962.27C4977.7,-1921.4 5059.02,-1838.5 5098,-1816.96 5169.03,-1777.71 5225.59,-1843.74 5277,-1780.96 5329.15,-1717.27 5276.05,-1675.62 5249,-1597.88 5214.03,-1497.37 5054,-1266.91 5054,-1160.49 5054,-1160.49 5054,-1160.49 5054,-1048.95 5054,-927.28 5058.65,-869.68 5154,-794.1 5241.63,-724.65 5302.09,-806.28 5403,-758.1 5407.06,-756.17 5411.01,-753.75 5414.79,-751.06"/>
<polygon fill="#f91010" stroke="black" points="5417.05,-753.74 5422.75,-744.8 5412.72,-748.23 5417.05,-753.74"/>
</g>
<!-- ahriman_web_views_status_packages -->
<g id="node99" class="node">
<title>ahriman_web_views_status_packages</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#8a2e2e" stroke="black" cx="5642" cy="-713.56" rx="41.94" ry="44.6"/>
<text text-anchor="middle" x="5642" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5642" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5642" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5642" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="5642" 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="edge297" 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="M5074,-2071.8C5082.29,-2056.88 5079.97,-2051.1 5088,-2036.03 5115.88,-1983.75 5125.08,-1971.17 5164,-1926.5 5211.22,-1872.29 5219.26,-1850.2 5283,-1816.96 5348.78,-1782.65 5392.07,-1831.91 5446,-1780.96 5736.34,-1506.64 5552.57,-1293.17 5641,-903.64 5648.45,-870.84 5659.11,-864.99 5665,-831.87"/>
<path fill="none" stroke="black" d="M5665,-829.87C5665.19,-808.66 5661.43,-785.66 5656.9,-765.82"/>
<polygon fill="#f91010" stroke="black" points="5660.3,-764.97 5654.56,-756.06 5653.49,-766.61 5660.3,-764.97"/>
</g>
<!-- ahriman_web_views_status_status -->
<g id="node100" class="node">
<title>ahriman_web_views_status_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="4825" cy="-713.56" rx="38.37" ry="44.6"/>
<text text-anchor="middle" x="4825" y="-733.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4825" y="-722.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="4825" y="-711.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="4825" y="-700.06" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">status.</text>
<text text-anchor="middle" x="4825" 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="edge298" 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="M4770,-2071.8C4739.92,-2030.42 4710.38,-2041.2 4680,-2000.03 4564.75,-1843.9 4451.96,-1309.67 4437,-1196.26 4432.73,-1163.86 4429.89,-1154.62 4437,-1122.72 4456.35,-1035.85 4520.78,-1030.4 4522,-941.41"/>
<path fill="none" stroke="black" d="M4522,-939.41C4519.5,-891.68 4486.68,-864.08 4522,-831.87"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_user_login -->
<g id="edge299" 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="M5929,-2071.8C5934.62,-2010.55 6243.02,-1690.93 6270,-1635.65"/>
<path fill="none" stroke="black" d="M6270,-1633.65C6340.34,-1467.81 6318.96,-1412.85 6333,-1233.26 6334.99,-1207.79 6299.94,-1219.35 6289,-1196.26 6275,-1166.73 6283.37,-1154.92 6289,-1122.72 6291.93,-1105.97 6297.71,-1103.18 6302,-1086.72 6318.52,-1023.38 6318.88,-1006.48 6326,-941.41"/>
</g>
<!-- ahriman_models&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge300" 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="M4709.57,-2360.3C4835.9,-2356.61 5175.2,-2342.93 5454,-2297.54 5625.72,-2269.58 5717.09,-2332.4 5834,-2203.56 5873.16,-2160.39 5856.4,-2131.99 5853,-2073.8"/>
<path fill="none" stroke="black" d="M5853,-2071.8C5856.38,-1958.31 5844.3,-1927.32 5871,-1816.96 5912.45,-1645.64 5991.61,-1625.01 6027,-1452.34 6043.34,-1372.63 6038.05,-1349.88 6027,-1269.26 6023.58,-1244.31 5963.36,-1076 5966,-1050.95"/>
</g>
<!-- ahriman_models_action -->
<g id="node65" class="node">
<title>ahriman_models_action</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e72222" stroke="black" cx="2982" cy="-1159.49" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="2982" y="-1167.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="2982" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="2982" y="-1145.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">action</text>
</g>
<!-- ahriman_models_action&#45;&gt;ahriman_application_ahriman -->
<g id="edge301" class="edge">
<title>ahriman_models_action&#45;&gt;ahriman_application_ahriman</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3020.24,-1157.21C3184.14,-1151.56 3843.55,-1127.39 4384,-1086.72 4874.8,-1049.79 5016.92,-1126.23 5486,-977.18 5580,-947.32 5618.89,-945.84 5679,-867.64 5734.61,-795.29 5664.41,-731.41 5731,-669.01 5979.4,-436.23 6155.9,-617.79 6483,-523.47 6658.68,-472.82 7178.49,-394.01 7250,-225.74"/>
<path fill="none" stroke="black" d="M7250,-223.74C7277.87,-88.34 2583.23,-36.38 2010.92,-30.55"/>
<polygon fill="#e72222" stroke="black" points="2010.88,-27.05 2000.85,-30.45 2010.81,-34.05 2010.88,-27.05"/>
</g>
<!-- ahriman_models_action&#45;&gt;ahriman_application_handlers_patch -->
<g id="edge302" class="edge">
<title>ahriman_models_action&#45;&gt;ahriman_application_handlers_patch</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2951.63,-1141.6C2864.31,-1094.01 2603.81,-958.68 2369,-903.64 2134.38,-848.65 2056.63,-943.8 1828,-867.64 1823.51,-866.15 1819.03,-864.19 1814.67,-861.97"/>
<polygon fill="#e72222" stroke="black" points="1816.37,-858.91 1805.93,-857.09 1812.96,-865.03 1816.37,-858.91"/>
</g>
<!-- ahriman_models_action&#45;&gt;ahriman_application_handlers_status_update -->
<g id="edge303" class="edge">
<title>ahriman_models_action&#45;&gt;ahriman_application_handlers_status_update</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M2945.81,-1150.09C2890.94,-1137.22 2783.5,-1111.5 2693,-1086.72 2624.65,-1068.01 2151.53,-917.36 2082,-903.64 1922.07,-872.1 1872.54,-916.44 1717,-867.64 1711.76,-866 1706.47,-863.9 1701.3,-861.53"/>
<polygon fill="#e72222" stroke="black" points="1702.66,-858.3 1692.14,-857.04 1699.58,-864.59 1702.66,-858.3"/>
</g>
<!-- ahriman_models_action&#45;&gt;ahriman_application_handlers_user -->
<g id="edge304" class="edge">
<title>ahriman_models_action&#45;&gt;ahriman_application_handlers_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3020.41,-1158.02C3108.44,-1155.37 3329.21,-1139.66 3485,-1050.95"/>
<path fill="none" stroke="black" d="M3485,-1048.95C3556.91,-1008.01 3702.77,-991.63 3637,-941.41"/>
<path fill="none" stroke="black" d="M3637,-939.41C3517.94,-848.51 2426.74,-834.33 2163.13,-832.23"/>
<polygon fill="#e72222" stroke="black" points="2163.04,-828.72 2153.01,-832.15 2162.98,-835.72 2163.04,-828.72"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_auth -->
<g id="edge305" 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="M6474,-1962.27C6480.69,-1944.33 6483.86,-1939.4 6498,-1926.5 6522.68,-1903.98 6539.32,-1913.02 6564,-1890.5 6578.14,-1877.59 6579.12,-1871.69 6588,-1854.73"/>
<path fill="none" stroke="black" d="M6588,-1852.73C6597.98,-1833.66 6604.58,-1810.79 6608.85,-1791.05"/>
<polygon fill="#c82323" stroke="black" points="6612.32,-1791.55 6610.88,-1781.05 6605.46,-1790.16 6612.32,-1791.55"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge306" 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="M6427.89,-2045.9C6442.93,-2024.99 6462.82,-1994.23 6474,-1964.27"/>
<path fill="none" stroke="black" d="M6474,-1962.27C6494.45,-1907.43 6383.76,-1911.49 6398,-1854.73"/>
</g>
<!-- ahriman_models_auth_settings&#45;&gt;ahriman_core_auth_oauth -->
<g id="edge307" 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="M6362.96,-2057.12C6321.61,-2042.63 6264.88,-2019.84 6252,-2000.03 6216.78,-1945.89 6228.3,-1915.56 6250,-1854.73"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_ahriman -->
<g id="edge308" 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="M4280.4,-2359.77C4070.1,-2352.04 3243.99,-2320.48 3130,-2297.54 3008.52,-2273.09 2710.65,-2174.33 2605,-2109.57 2564.38,-2084.68 2570.17,-2056.19 2527,-2036.03 2403.32,-1978.3 2352.11,-2041.31 2222,-2000.03 1313.09,-1711.67 1100.86,-1546.63 336,-977.18 299.28,-949.85 198.99,-876.76 190,-831.87"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_handlers_status -->
<g id="edge309" 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="M4280.1,-2359.94C4081.35,-2353.28 3339.78,-2326.69 3239,-2297.54 3187.79,-2282.73 3182.45,-2261.78 3134,-2239.56 2983.17,-2170.37 2937.15,-2173.44 2784,-2109.57 2677.27,-2065.07 2408.53,-1954.17 2312,-1890.5 2251.17,-1850.37 2237.27,-1836.41 2190,-1780.96 1896.12,-1436.21 2005.62,-1165.65 1612,-941.41"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_application_lock -->
<g id="edge310" 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="M4280.3,-2360.38C4156.3,-2356.85 3818.9,-2343.45 3542,-2297.54 3205.54,-2241.76 3123.83,-2210.33 2798,-2109.57 2707.52,-2081.59 2689.86,-2059.1 2598,-2036.03 2486.56,-2008.05 2448.61,-2042.87 2342,-2000.03 2256.35,-1965.62 2081.94,-1807.67 2014,-1745.19"/>
<path fill="none" stroke="black" d="M2014,-1743.19C1999.84,-1730.31 2000.95,-1723.12 1990,-1707.42 1967.47,-1675.11 1937.82,-1675.04 1938,-1635.65"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_client -->
<g id="edge311" 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="M4280.48,-2358.04C4187.92,-2350.82 3980.01,-2332.01 3808,-2297.54 3562.7,-2248.38 3508.72,-2206.19 3266,-2145.57 3193.6,-2127.49 3167.82,-2144.74 3102,-2109.57 3002.56,-2056.44 2917.64,-1950.85 2876.5,-1893.68"/>
<polygon fill="#e50505" stroke="black" points="2879.17,-1891.38 2870.52,-1885.27 2873.47,-1895.44 2879.17,-1891.38"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_watcher -->
<g id="edge312" 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="M4376.9,-2356.43C4467.73,-2343.84 4656,-2302.43 4656,-2175.57 4656,-2175.57 4656,-2175.57 4656,-2071.8 4656,-2035.01 4547.98,-1451.34 4560,-1416.57"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_core_status_web_client -->
<g id="edge313" 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="M4377.01,-2356.24C4415.74,-2349.36 4468.62,-2333.59 4499,-2297.54 4564.26,-2220.11 4558.83,-2173.65 4542,-2073.8"/>
<path fill="none" stroke="black" d="M4542,-2071.8C4527.97,-2023.09 4510.06,-2014.59 4504,-1964.27"/>
</g>
<!-- ahriman_models_counters -->
<g id="node68" class="node">
<title>ahriman_models_counters</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#b42d2d" stroke="black" cx="4343" cy="-2268.55" rx="38.78" ry="28.98"/>
<text text-anchor="middle" x="4343" y="-2277.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4343" y="-2266.05" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="4343" 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="edge314" 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="M4333.28,-2333.43C4334.52,-2325.23 4335.91,-2316.13 4337.23,-2307.43"/>
<polygon fill="#e50505" stroke="black" points="4340.71,-2307.89 4338.75,-2297.47 4333.78,-2306.83 4340.71,-2307.89"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge315" 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="M4312.58,-2334.95C4306.27,-2323.75 4299.52,-2310.35 4295,-2297.54 4280.86,-2257.43 4282.38,-2245.74 4277,-2203.56 4255.21,-2032.76 4290.91,-1984.68 4252,-1816.96 4220.4,-1680.74 4132,-1665.94 4132,-1526.11 4132,-1526.11 4132,-1526.11 4132,-1414.57 4132,-1340.2 4164.98,-1324.31 4215,-1269.26 4233.66,-1248.73 4255.91,-1259.11 4266,-1233.26"/>
<path fill="none" stroke="black" d="M4266,-1232.26C4286.93,-1154.45 4266,-1131.53 4266,-1050.95 4266,-1050.95 4266,-1050.95 4266,-939.41 4266,-829.18 4368.19,-842.97 4467,-794.1 4505.29,-775.17 4618.48,-743.98 4683.54,-726.82"/>
<polygon fill="#e50505" stroke="black" points="4684.77,-730.12 4693.55,-724.19 4682.99,-723.35 4684.77,-730.12"/>
</g>
<!-- ahriman_models_build_status&#45;&gt;ahriman_web_views_status_package -->
<g id="edge316" 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="M4376.54,-2355.92C4448.66,-2346.62 4581.33,-2326.15 4619,-2297.54 4656.68,-2268.92 4646.99,-2245.44 4669,-2203.56 4770.58,-2010.32 4780.06,-1920.96 4972,-1816.96 5042.58,-1778.71 5098.21,-1843.12 5149,-1780.96 5220.09,-1693.96 5074.26,-1651.99 5002,-1452.34 4955.06,-1322.66 4915.13,-925.93 5016,-831.87"/>
<path fill="none" stroke="black" d="M5016,-829.87C5109.07,-732.2 5342.88,-785.64 5403,-758.1 5407.09,-756.23 5411.07,-753.86 5414.86,-751.2"/>
<polygon fill="#e50505" stroke="black" points="5417.1,-753.89 5422.83,-744.98 5412.79,-748.37 5417.1,-753.89"/>
</g>
<!-- ahriman_models_internal_status -->
<g id="node69" class="node">
<title>ahriman_models_internal_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="4343" cy="-2174.57" rx="56.64" ry="28.98"/>
<text text-anchor="middle" x="4343" y="-2183.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="4343" y="-2172.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="4343" 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="edge317" 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="M4343,-2239.45C4343,-2231.41 4343,-2222.51 4343,-2213.97"/>
<polygon fill="#b42d2d" stroke="black" points="4346.5,-2213.81 4343,-2203.81 4339.5,-2213.81 4346.5,-2213.81"/>
</g>
<!-- ahriman_models_counters&#45;&gt;ahriman_web_views_status_status -->
<g id="edge318" 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="M4371.39,-2248.59C4385.56,-2237.36 4401.29,-2221.78 4409,-2203.56 4419.05,-2179.83 4412.11,-2171.16 4409,-2145.57 4376.76,-1880.33 4297.24,-1827.12 4265,-1561.88 4261.06,-1529.43 4260.64,-1520.73 4265,-1488.34 4282.94,-1354.95 4315.78,-1327.64 4345,-1196.26 4359.23,-1132.29 4353.61,-1114.4 4370,-1050.95"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_core_status_client -->
<g id="edge319" 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="M4295.57,-2158.49C4277.98,-2153.52 4257.75,-2148.51 4239,-2145.57 3906.22,-2093.5 3811.04,-2181.57 3482,-2109.57 3420.76,-2096.17 3027.72,-1930.28 2894.27,-1873.58"/>
<polygon fill="#c82323" stroke="black" points="2895.32,-1870.22 2884.74,-1869.53 2892.58,-1876.66 2895.32,-1870.22"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_core_status_web_client -->
<g id="edge320" 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="M4363.83,-2147.49C4407.53,-2092.64 4504.72,-1969.91 4504,-1964.27"/>
<path fill="none" stroke="black" d="M4504,-1962.27C4498.29,-1914.81 4518.92,-1900.13 4504,-1854.73"/>
<path fill="none" stroke="black" d="M4504,-1852.73C4497.23,-1832.13 4489.96,-1809.24 4483.89,-1789.89"/>
<polygon fill="#c82323" stroke="black" points="4487.16,-1788.62 4480.83,-1780.12 4480.48,-1790.71 4487.16,-1788.62"/>
</g>
<!-- ahriman_models_internal_status&#45;&gt;ahriman_web_views_status_status -->
<g id="edge321" 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="M4340.15,-2145.59C4332.52,-2072.66 4310.78,-1878.15 4290,-1816.96 4284.12,-1799.63 4276.09,-1798.22 4270,-1780.96 4204.84,-1596.41 4228.68,-1538.5 4226,-1342.8 4225.55,-1310.12 4210.58,-1298.08 4226,-1269.26 4239.61,-1243.83 4260.97,-1254.93 4280,-1233.26 4339.63,-1165.37 4351.07,-1139.31 4370,-1050.95"/>
<path fill="none" stroke="black" d="M4370,-1048.95C4387.8,-932.53 4431.71,-907.51 4522,-831.87"/>
<path fill="none" stroke="black" d="M4522,-829.87C4543.55,-810.23 4549.89,-804.84 4577,-794.1 4661.38,-760.7 4696.77,-798.58 4778,-758.1 4781.86,-756.18 4785.64,-753.84 4789.26,-751.25"/>
<polygon fill="#c82323" stroke="black" points="4791.71,-753.77 4797.4,-744.84 4787.38,-748.27 4791.71,-753.77"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_application -->
<g id="edge322" 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="M3223.6,-2359.9C3106.2,-2354.56 2753.54,-2335.68 2646,-2297.54 2417.93,-2216.66 2389.55,-2136.92 2190,-2000.03 1731.64,-1685.61 1632.34,-1585.06 1202,-1233.26 1135.67,-1179.03 1058.23,-1115.73 1014.27,-1079.79"/>
<polygon fill="#950303" stroke="black" points="1016.42,-1077.03 1006.46,-1073.41 1011.99,-1082.45 1016.42,-1077.03"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_handlers_patch -->
<g id="edge323" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_application_handlers_patch</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3229,-2347.61C3204.18,-2336.24 3170.11,-2318.63 3144,-2297.54 3131.25,-2287.24 3134.01,-2278.05 3120,-2269.55"/>
<path fill="none" stroke="black" d="M3120,-2267.55C3106.93,-2259.62 3112.47,-2248.41 3100,-2239.56 3053.56,-2206.57 3030.04,-2224.32 2977,-2203.56 2889.64,-2169.36 2851.34,-2178.78 2788,-2109.57 2776.47,-2096.98 2785.08,-2086.79 2774,-2073.8"/>
<path fill="none" stroke="black" d="M2774,-2071.8C2699.61,-1992.37 2434.78,-1874.99 2380,-1780.96 2297.88,-1640.01 2336,-1579.7 2336,-1416.57 2336,-1416.57 2336,-1416.57 2336,-1158.49 2336,-1061.64 2422.99,-1010.38 2355,-941.41"/>
<path fill="none" stroke="black" d="M2355,-939.41C2308.83,-897.92 2281.12,-914.47 2220,-903.64 2047.73,-873.13 1993.28,-925.02 1828,-867.64 1823.53,-866.09 1819.06,-864.1 1814.71,-861.85"/>
<polygon fill="#950303" stroke="black" points="1816.41,-858.8 1805.98,-856.94 1812.98,-864.9 1816.41,-858.8"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_handlers_remove_unknown -->
<g id="edge324" 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="M2660,-2173.57C2617.62,-2110.99 2612.05,-2090.83 2560,-2036.03 2489.14,-1961.45 2450.03,-1965.86 2380,-1890.5 2259,-1760.27 2247.82,-1711.61 2152,-1561.88 2081.16,-1451.18 2002,-1438.46 2002,-1307.03 2002,-1307.03 2002,-1307.03 2002,-1232.26 2002,-1113.5 1940.79,-1088.55 1849,-1013.18 1802.92,-975.35 1655.44,-900.57 1572.7,-859.87"/>
<polygon fill="#950303" stroke="black" points="1574.19,-856.71 1563.68,-855.44 1571.11,-862.99 1574.19,-856.71"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_application_handlers_status -->
<g id="edge325" 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="M3224.86,-2355.33C3105.67,-2334.67 2736.19,-2264.41 2660,-2175.57"/>
<path fill="none" stroke="black" d="M2660,-2173.57C2646.84,-2163.8 2647.12,-2157.61 2636,-2145.57 2589.39,-2095.13 2588.76,-2066.07 2527,-2036.03 2404.25,-1976.33 2344.29,-2060.66 2222,-2000.03 2181.3,-1979.86 2186.56,-1954.77 2151,-1926.5 2126.66,-1907.14 2114.6,-1910.74 2091,-1890.5 2042.96,-1849.29 2038.49,-1831.2 2000,-1780.96 1855.08,-1591.79 1784.73,-1561.88 1691,-1342.8 1619.48,-1175.64 1767.01,-1036.43 1612,-941.41"/>
<path fill="none" stroke="black" d="M1612,-939.41C1592.61,-928.37 1469.74,-879.79 1398.31,-851.85"/>
<polygon fill="#950303" stroke="black" points="1399.18,-848.43 1388.59,-848.05 1396.63,-854.95 1399.18,-848.43"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge326" 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="M3223.4,-2361.99C3080.76,-2362.44 2571.96,-2352.87 2190,-2203.56 2149.91,-2187.89 2046.83,-2132.73 1985.96,-2099.58"/>
<polygon fill="#950303" stroke="black" points="1987.39,-2096.37 1976.94,-2094.66 1984.04,-2102.52 1987.39,-2096.37"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_email -->
<g id="edge327" 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="M3252,-2173.57C3256,-2157.67 3261.44,-2153.09 3276,-2145.57 3431.84,-2065.1 3522.96,-2206.71 3669,-2109.57 3683.99,-2099.6 3680.8,-2090.3 3688,-2073.8"/>
<path fill="none" stroke="black" d="M3688,-2071.8C3698.99,-2046.63 3635.91,-1990.26 3627,-1964.27"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_html -->
<g id="edge328" 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="M3296.85,-2349.91C3316.6,-2343.87 3341.91,-2337.03 3365,-2333.54 3816.14,-2265.26 3940.71,-2371.24 4391,-2297.54 4434.02,-2290.5 4447.78,-2292.23 4485,-2269.55"/>
<path fill="none" stroke="black" d="M4485,-2267.55C4520.65,-2245.83 4477.47,-2215.7 4466,-2175.57"/>
<path fill="none" stroke="black" d="M4466,-2173.57C4443.87,-2096.15 4435.77,-2077.55 4414,-2000.03 4391.26,-1919.05 4397.34,-1895.02 4366,-1816.96 4359.18,-1799.97 4351.76,-1798.33 4346,-1780.96 4322.69,-1710.59 4315.32,-1624.28 4313.01,-1572.32"/>
<polygon fill="#950303" stroke="black" points="4316.5,-1571.94 4312.6,-1562.09 4309.5,-1572.22 4316.5,-1571.94"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge329" 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="M3285.6,-2339.28C3335.42,-2293.82 3456.9,-2190.76 3580,-2145.57 3720.57,-2093.97 3790.97,-2193.48 3915,-2109.57 3929.91,-2099.49 3923.57,-2088.48 3934,-2073.8"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_report_report -->
<g id="edge330" 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="M3252,-2173.57C3292.74,-2011.64 3422.71,-2039.02 3499,-1890.5 3537.19,-1816.15 3509.05,-1784.23 3542,-1707.42 3547,-1695.76 3553.87,-1683.92 3560.82,-1673.3"/>
<polygon fill="#950303" stroke="black" points="3563.93,-1674.95 3566.64,-1664.71 3558.14,-1671.03 3563.93,-1674.95"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_executor -->
<g id="edge331" 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="M2774,-2071.8C2733.81,-2031.9 2753.9,-1870.95 2771,-1816.96 2787.33,-1765.4 2783.47,-1743.23 2824,-1707.42 2861.28,-1674.47 2897.81,-1709.36 2930,-1671.42 2972.35,-1621.5 2942.23,-1590.5 2954,-1526.11"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_repository -->
<g id="edge332" 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="M3254.7,-2334.02C3246.19,-2297.07 3235.28,-2229.79 3252,-2175.57"/>
<path fill="none" stroke="black" d="M3252,-2173.57C3275.91,-2105.14 3141.95,-2170.05 3102,-2109.57 3083.99,-2082.3 3098.88,-2068.57 3102,-2036.03 3127.23,-1773 3189.77,-1715.37 3215,-1452.34 3218.12,-1419.8 3227.1,-1409.16 3215,-1378.8 3208.95,-1363.63 3198.01,-1349.82 3186.64,-1338.46"/>
<polygon fill="#950303" stroke="black" points="3188.82,-1335.7 3179.15,-1331.35 3184,-1340.77 3188.82,-1335.7"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_repository_update_handler -->
<g id="edge333" 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="M2774,-2071.8C2733.98,-2031.22 2774.59,-1866.37 2803,-1816.96 2901.62,-1645.44 3089.67,-1717.45 3140,-1526.11"/>
<path fill="none" stroke="black" d="M3140,-1524.11C3144.15,-1504.33 3146.05,-1482.1 3146.85,-1463.01"/>
<polygon fill="#950303" stroke="black" points="3150.36,-1462.87 3147.19,-1452.76 3143.36,-1462.64 3150.36,-1462.87"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_client -->
<g id="edge334" 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="M3120,-2267.55C3106.69,-2260.03 3110.29,-2250.86 3100,-2239.56 3040.61,-2174.33 3000.92,-2181.61 2950,-2109.57 2903.48,-2043.76 2874.71,-1953.32 2860.59,-1899.75"/>
<polygon fill="#950303" stroke="black" points="2863.93,-1898.68 2858.04,-1889.87 2857.15,-1900.43 2863.93,-1898.68"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_watcher -->
<g id="edge335" 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="M4466,-2173.57C4458.27,-2129.91 4466,-2118.14 4466,-2073.8"/>
<path fill="none" stroke="black" d="M4466,-2071.8C4466,-2038.23 4388.6,-1814.22 4384,-1780.96 4379.52,-1748.58 4375.22,-1738.9 4384,-1707.42 4424.6,-1561.89 4512.5,-1560 4560,-1416.57"/>
<path fill="none" stroke="black" d="M4560,-1414.57C4569.71,-1334.58 4618.01,-1289.19 4560,-1233.26"/>
<path fill="none" stroke="black" d="M4560,-1232.26C4546.01,-1219.69 4530.89,-1205.53 4517.85,-1193.13"/>
<polygon fill="#950303" stroke="black" points="4520.08,-1190.43 4510.43,-1186.06 4515.25,-1195.49 4520.08,-1190.43"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_status_web_client -->
<g id="edge336" 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="M4466,-2071.8C4466,-2021.11 4505.96,-2014.92 4504,-1964.27"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_tree -->
<g id="edge337" 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="M3223.71,-2359.65C3107.75,-2353.7 2750.34,-2333.55 2456,-2297.54 2194.24,-2265.52 1883.29,-2207.28 1766.98,-2184.78"/>
<polygon fill="#950303" stroke="black" points="1767.47,-2181.31 1756.98,-2182.84 1766.13,-2188.18 1767.47,-2181.31"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_github -->
<g id="edge338" class="edge">
<title>ahriman_models_package&#45;&gt;ahriman_core_upload_github</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3296.83,-2349.82C3316.59,-2343.76 3341.9,-2336.92 3365,-2333.54 3521.05,-2310.69 4633.77,-2345.55 4784,-2297.54 4827.91,-2283.51 4829.19,-2261 4870,-2239.56 5000.97,-2170.75 5167.11,-2113.63 5246.17,-2088.12"/>
<polygon fill="#950303" stroke="black" points="5247.38,-2091.41 5255.83,-2085.03 5245.24,-2084.75 5247.38,-2091.41"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_rsync -->
<g id="edge339" 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="M4485,-2267.55C4496.85,-2260.26 4489.06,-2249.29 4499,-2239.56 4528.04,-2211.13 5122.91,-1943.1 5160,-1926.5 5202.36,-1907.53 5251.22,-1887.05 5285.66,-1872.84"/>
<polygon fill="#950303" stroke="black" points="5287.06,-1876.04 5294.97,-1869 5284.39,-1869.57 5287.06,-1876.04"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_s3 -->
<g id="edge340" 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="M3296.83,-2349.81C3316.58,-2343.74 3341.9,-2336.91 3365,-2333.54 3689.66,-2286.17 4513.51,-2317.44 4841,-2297.54 4894.82,-2294.27 5767.16,-2239.9 5807,-2203.56 5863,-2152.47 5808.36,-2105.37 5839,-2036.03 5854.82,-2000.24 5883.62,-2002.87 5890,-1964.27"/>
<path fill="none" stroke="black" d="M5890,-1962.27C5893.05,-1941.13 5898.7,-1918.16 5904.13,-1898.9"/>
<polygon fill="#950303" stroke="black" points="5907.52,-1899.77 5906.93,-1889.2 5900.79,-1897.83 5907.52,-1899.77"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_core_upload_upload -->
<g id="edge341" 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="M3296.84,-2349.88C3316.6,-2343.83 3341.91,-2336.99 3365,-2333.54 3614.35,-2296.23 4251.48,-2345.52 4499,-2297.54 4737.39,-2251.33 4787.4,-2201.87 5012,-2109.57 5013.72,-2108.87 5199.95,-2023.73 5286.58,-1984.12"/>
<polygon fill="#950303" stroke="black" points="5288.25,-1987.2 5295.89,-1979.86 5285.34,-1980.84 5288.25,-1987.2"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_models_counters -->
<g id="edge342" 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="M3296.85,-2349.96C3316.61,-2343.93 3341.92,-2337.1 3365,-2333.54 3754.94,-2273.43 3863.11,-2364.09 4252,-2297.54 4267.49,-2294.89 4284.02,-2290.35 4298.69,-2285.68"/>
<polygon fill="#950303" stroke="black" points="4300.1,-2288.9 4308.51,-2282.46 4297.92,-2282.25 4300.1,-2288.9"/>
</g>
<!-- ahriman_models_package&#45;&gt;ahriman_web_views_status_package -->
<g id="edge343" 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="M4485,-2267.55C4540.15,-2233.94 4524.28,-2196.51 4564,-2145.57 4688.21,-1986.27 4696.78,-1906.22 4878,-1816.96 4932.5,-1790.11 5108.97,-1826.66 5149,-1780.96 5170.54,-1756.37 5152.81,-1739.88 5149,-1707.42 5123.72,-1492.26 5066.63,-1447.72 5036,-1233.26 5023.37,-1144.85 4954.39,-896.53 5016,-831.87"/>
</g>
<!-- ahriman_models_package_description -->
<g id="node71" class="node">
<title>ahriman_models_package_description</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c04040" stroke="black" cx="3773" cy="-2456.51" rx="74.91" ry="28.98"/>
<text text-anchor="middle" x="3773" y="-2465.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3773" y="-2454.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3773" 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="edge344" 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="M3703.57,-2445.57C3604.67,-2431.24 3428.19,-2405.02 3365,-2391.52 3345.73,-2387.41 3324.71,-2381.88 3306.7,-2376.83"/>
<polygon fill="#c04040" stroke="black" points="3307.62,-2373.45 3297.04,-2374.08 3305.7,-2380.18 3307.62,-2373.45"/>
</g>
<!-- ahriman_models_package_source&#45;&gt;ahriman_application_ahriman -->
<g id="edge345" 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="M1116.86,-2339.08C1034.62,-2287.85 834.67,-2154.71 711,-2000.03 671.35,-1950.44 217.88,-1038.4 201,-977.18 183.78,-914.75 193.82,-896.53 190,-831.87"/>
<path fill="none" stroke="black" d="M190,-829.87C171.86,-728.09 190,-700.63 190,-597.24 190,-597.24 190,-597.24 190,-223.74 190,-47.8 1594.34,-31.58 1896.98,-30.13"/>
<polygon fill="#c82323" stroke="black" points="1897.29,-33.63 1907.27,-30.08 1897.26,-26.63 1897.29,-33.63"/>
</g>
<!-- ahriman_models_package_source&#45;&gt;ahriman_application_application -->
<g id="edge346" 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="M1140.35,-2334.01C1135.26,-2322.9 1129.81,-2309.82 1126,-2297.54 1100.79,-2216.3 1103.7,-2193.52 1090,-2109.57 1055.77,-1899.8 1061.32,-1845.24 1026,-1635.65"/>
</g>
<!-- ahriman_models_package_source&#45;&gt;ahriman_core_spawn -->
<g id="edge347" 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="M1215.17,-2356.85C1302.64,-2350.38 1468.52,-2338.87 1610,-2333.54 1752.64,-2328.17 4039.97,-2329.87 4179,-2297.54 4207.27,-2290.97 4223.39,-2294.63 4238,-2269.55"/>
<path fill="none" stroke="black" d="M4238,-2267.55C4249.77,-2247.34 4237.46,-2223.74 4222.63,-2205.51"/>
<polygon fill="#c82323" stroke="black" points="4224.91,-2202.8 4215.72,-2197.54 4219.62,-2207.38 4224.91,-2202.8"/>
</g>
<!-- ahriman_models_report_settings&#45;&gt;ahriman_core_report_report -->
<g id="edge348" 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="M3442.74,-2333.96C3462.43,-2287.25 3508.94,-2193.03 3580,-2145.57 3627.01,-2114.17 3668.15,-2154.85 3702,-2109.57 3731.35,-2070.31 3703.41,-2046.89 3689,-2000.03 3674.23,-1952.01 3670.64,-1939.81 3661,-1890.5 3645.25,-1809.9 3664.76,-1784.34 3636,-1707.42 3631.51,-1695.42 3624.74,-1683.38 3617.72,-1672.69"/>
<polygon fill="#b03a3a" stroke="black" points="3620.6,-1670.7 3612.07,-1664.42 3614.82,-1674.65 3620.6,-1670.7"/>
</g>
<!-- ahriman_models_repository_paths -->
<g id="node74" class="node">
<title>ahriman_models_repository_paths</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="1961" cy="-2456.51" rx="62.87" ry="28.98"/>
<text text-anchor="middle" x="1961" y="-2465.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="1961" y="-2454.01" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="1961" 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="edge349" 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="M1977.49,-2428.28C1986.64,-2410.46 1996,-2386.32 1995,-2363.53"/>
<path fill="none" stroke="black" d="M1995,-2361.53C1993.03,-2316.73 1739.58,-2109.16 1712,-2073.8"/>
<path fill="none" stroke="black" d="M1712,-2071.8C1657.43,-1988.99 1344.05,-1310.71 1406,-1233.26"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_application_handlers_setup -->
<g id="edge350" 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="M1712,-2071.8C1669.89,-2001.75 1747.34,-1787.83 1762,-1707.42 1779.92,-1609.17 1766.51,-1577.25 1812,-1488.34 1851.23,-1411.65 1885.08,-1409.17 1940,-1342.8 1992.6,-1279.23 2007.99,-1264.76 2054,-1196.26 2085.32,-1149.64 2101.77,-1140.78 2117,-1086.72 2139.07,-1008.39 2171.63,-966.55 2120,-903.64 2067.97,-840.24 2014.97,-898.56 1939,-867.64 1934.79,-865.93 1930.56,-863.88 1926.41,-861.65"/>
<polygon fill="#f91010" stroke="black" points="1927.92,-858.48 1917.51,-856.51 1924.42,-864.54 1927.92,-858.48"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_alpm_repo -->
<g id="edge351" 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="M1982.59,-2429.28C1991.34,-2418.02 2001.2,-2404.5 2009,-2391.52 2065.29,-2297.83 2115.86,-2179.42 2141.08,-2116.95"/>
<polygon fill="#f91010" stroke="black" points="2144.43,-2118 2144.91,-2107.42 2137.94,-2115.4 2144.43,-2118"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_build_tools_task -->
<g id="edge352" 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="M1995,-2361.53C1993.05,-2319.83 2004.6,-2310.22 2014,-2269.55"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_repository_properties -->
<g id="edge353" 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="M1995,-2361.53C1990.2,-2259.13 1967.37,-2233.1 1914,-2145.57 1903.01,-2127.55 1890.35,-2129.37 1883,-2109.57 1871.63,-2078.93 1870,-2066.02 1883,-2036.03 1890.52,-2018.69 2171.21,-1766.06 2204,-1745.19"/>
<path fill="none" stroke="black" d="M2204,-1743.19C2376.63,-1638.31 2728.46,-1693.1 2791,-1671.42 2795.31,-1669.92 2799.59,-1667.99 2803.76,-1665.8"/>
<polygon fill="#f91010" stroke="black" points="2805.74,-1668.69 2812.64,-1660.64 2802.23,-1662.64 2805.74,-1668.69"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_core_tree -->
<g id="edge354" class="edge">
<title>ahriman_models_repository_paths&#45;&gt;ahriman_core_tree</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M1946.8,-2428.05C1931.95,-2401.35 1906.56,-2360.93 1876,-2333.54 1851.12,-2311.24 1835.18,-2319.5 1810,-2297.54 1781.26,-2272.47 1756.22,-2236.7 1739.9,-2210.37"/>
<polygon fill="#f91010" stroke="black" points="1742.68,-2208.22 1734.5,-2201.49 1736.7,-2211.85 1742.68,-2208.22"/>
</g>
<!-- ahriman_models_repository_paths&#45;&gt;ahriman_models_package -->
<g id="edge355" 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="M2022.87,-2451.14C2246.99,-2435.29 3013.61,-2381.09 3213.84,-2366.94"/>
<polygon fill="#f91010" stroke="black" points="3214.31,-2370.41 3224.04,-2366.21 3213.82,-2363.43 3214.31,-2370.41"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_application_ahriman -->
<g id="edge356" 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="M2494.15,-2358.49C2376.06,-2351.07 2090.3,-2330.23 2000,-2297.54 1883.75,-2255.46 1874.07,-2207.39 1767,-2145.57 1739.87,-2129.91 1291.48,-1905.54 1264,-1890.5 1095.69,-1798.38 1041.3,-1791.94 892,-1671.42 851.18,-1638.47 280.49,-1021.23 252,-977.18 213.87,-918.22 190,-902.09 190,-831.87"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_core_report_jinja_template -->
<g id="edge357" 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="M2591.69,-2348.12C2724.54,-2309.7 3122.78,-2198.58 3461,-2145.57 3560.99,-2129.9 3830.39,-2165.11 3915,-2109.57 3930.05,-2099.7 3923.82,-2088.65 3934,-2073.8"/>
<path fill="none" stroke="black" d="M3934,-2071.8C3961.1,-2032.43 3967.34,-1998.51 3934,-1964.27"/>
<path fill="none" stroke="black" d="M3934,-1962.27C3906.03,-1933.54 3870.15,-1905.97 3841.85,-1885.94"/>
<polygon fill="#c82323" stroke="black" points="3843.53,-1882.84 3833.33,-1879.97 3839.51,-1888.57 3843.53,-1882.84"/>
</g>
<!-- ahriman_models_sign_settings&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge358" 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="M2543.11,-2333.47C2541.93,-2315.1 2541.69,-2290.67 2546,-2269.55"/>
</g>
<!-- ahriman_models_smtp_ssl_settings -->
<g id="node76" class="node">
<title>ahriman_models_smtp_ssl_settings</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="3592" cy="-2072.8" rx="67.76" ry="28.98"/>
<text text-anchor="middle" x="3592" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="3592" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="3592" 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="edge359" 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="M3610.72,-2044.77C3623.43,-2022.97 3636.36,-1991.57 3627,-1964.27"/>
<path fill="none" stroke="black" d="M3627,-1962.27C3608.82,-1909.22 3530.97,-1902.09 3561,-1854.73"/>
</g>
<!-- ahriman_models_upload_settings&#45;&gt;ahriman_core_upload_upload -->
<g id="edge360" 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="M5391.49,-2340.51C5415.53,-2324.54 5441.41,-2300.12 5440,-2269.55"/>
<path fill="none" stroke="black" d="M5440,-2267.55C5435.23,-2163.9 5458.3,-2127.86 5410,-2036.03 5400.62,-2018.2 5384.92,-2002.64 5369.89,-1990.61"/>
<polygon fill="#b03a3a" stroke="black" points="5371.73,-1987.61 5361.66,-1984.3 5367.47,-1993.16 5371.73,-1987.61"/>
</g>
<!-- ahriman_models_user -->
<g id="node78" class="node">
<title>ahriman_models_user</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#af1313" stroke="black" cx="6033" cy="-2072.8" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="6033" y="-2081.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6033" y="-2070.3" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="6033" 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="edge361" 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="M6038.47,-2043.93C6047.12,-1990.63 6056.91,-1874.45 5992,-1816.96 5914,-1747.88 5153.6,-1814.61 5055,-1780.96 4763.64,-1681.51 4748.63,-1547.34 4491,-1378.8 4226.18,-1205.55 4158.82,-1162.87 3880,-1013.18 3780.6,-959.82 3760.42,-931.15 3651,-903.64 3361.06,-830.75 2406.56,-830.37 2162.98,-831.5"/>
<polygon fill="#af1313" stroke="black" points="2162.91,-828 2152.93,-831.55 2162.95,-835 2162.91,-828"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_auth_auth -->
<g id="edge362" 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="M6360,-1962.27C6438.05,-1895.57 6529.93,-1817.85 6579.63,-1775.88"/>
<polygon fill="#af1313" stroke="black" points="6582.15,-1778.33 6587.53,-1769.21 6577.63,-1772.99 6582.15,-1778.33"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge363" 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="M6058.38,-2050.89C6066.45,-2045.22 6075.71,-2039.65 6085,-2036.03 6192.08,-1994.37 6246.9,-2065.96 6341,-2000.03 6355.74,-1989.71 6345.39,-1974.79 6360,-1964.27"/>
<path fill="none" stroke="black" d="M6360,-1962.27C6380.57,-1947.45 6391.83,-1879.31 6398,-1854.73"/>
<path fill="none" stroke="black" d="M6398,-1852.73C6412.24,-1795.96 6471.55,-1803.66 6474,-1745.19"/>
<path fill="none" stroke="black" d="M6474,-1743.19C6474.91,-1721.42 6469.57,-1697.93 6463.32,-1678.48"/>
<polygon fill="#af1313" stroke="black" points="6466.62,-1677.33 6460.09,-1668.99 6460,-1679.58 6466.62,-1677.33"/>
</g>
<!-- ahriman_models_user&#45;&gt;ahriman_core_status_web_client -->
<g id="edge364" 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="M6014.82,-2047.14C6005.91,-2033.84 5995.87,-2016.75 5990,-2000.03 5962.79,-1922.55 6025.83,-1872.13 5965,-1816.96 5926.16,-1781.74 5074.36,-1783.65 5022,-1780.96 4839.06,-1771.54 4622.27,-1756.3 4523.65,-1749.14"/>
<polygon fill="#af1313" stroke="black" points="4523.86,-1745.64 4513.63,-1748.41 4523.35,-1752.63 4523.86,-1745.64"/>
</g>
<!-- ahriman_models_user_access -->
<g id="node79" class="node">
<title>ahriman_models_user_access</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="5747" cy="-2174.57" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="5747" y="-2183.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5747" y="-2172.07" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="5747" 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="edge365" 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="M5795.82,-2166C5837.7,-2159.74 5899.69,-2151.02 5954,-2145.57 6075.65,-2133.37 6390.62,-2157.72 6503,-2109.57 6569.08,-2081.27 6570.25,-2049.93 6622,-2000.03 6965.19,-1669.18 7142.05,-1650.84 7372,-1233.26 7466.47,-1061.72 7445.19,-986.38 7408,-794.1 7401.21,-759 7286.96,-531.22 7288,-495.48"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_application_handlers_user -->
<g id="edge366" 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="M5696.71,-2169.92C5610.89,-2163.83 5430.61,-2151.68 5278,-2145.57 5229.06,-2143.61 3549.75,-2144.09 3515,-2109.57 3507.78,-2102.4 3511.83,-1936.5 3510,-1926.5 3503.91,-1893.27 3492.05,-1887.76 3485,-1854.73"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_core_auth_auth -->
<g id="edge367" 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="M5795.83,-2166.05C5837.71,-2159.83 5899.71,-2151.13 5954,-2145.57 6011.17,-2139.72 6421.8,-2140.88 6470,-2109.57 6485.1,-2099.77 6473.72,-2083.33 6489,-2073.8"/>
<path fill="none" stroke="black" d="M6489,-2071.8C6530.47,-2045.94 6496.55,-2010.64 6512,-1964.27"/>
<path fill="none" stroke="black" d="M6512,-1962.27C6518.05,-1944.1 6524.78,-1942.01 6536,-1926.5 6559.08,-1894.58 6569.73,-1889.62 6588,-1854.73"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_core_auth_mapping -->
<g id="edge368" 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="M5795.99,-2166.39C5875.49,-2154.36 6028.85,-2129.51 6080,-2109.57 6137.93,-2086.99 6141.22,-2058.99 6199,-2036.03 6272.79,-2006.71 6308.08,-2044.3 6374,-2000.03 6389.89,-1989.36 6387.62,-1980.35 6398,-1964.27"/>
<path fill="none" stroke="black" d="M6398,-1962.27C6423.23,-1921.67 6386.37,-1901.09 6398,-1854.73"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_models_user -->
<g id="edge369" 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="M5791.25,-2159.99C5831.15,-2147.54 5891.33,-2128.26 5943,-2109.57 5958.56,-2103.95 5975.47,-2097.36 5990.38,-2091.38"/>
<polygon fill="#f91010" stroke="black" points="5991.89,-2094.54 5999.85,-2087.56 5989.27,-2088.05 5991.89,-2094.54"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge370" 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="M6489,-2071.8C6533.8,-2045 6547.73,-2039.42 6582,-2000.03 6655.58,-1915.46 6653.69,-1879.57 6707,-1780.96 6807.93,-1594.23 6818.15,-1539.87 6897,-1342.8 6916.43,-1294.24 6911.02,-1276.8 6940,-1233.26"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_base -->
<g id="edge371" 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="M5738,-1633.65C5716.34,-1591.04 5738,-1573.9 5738,-1526.11"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_index -->
<g id="edge372" 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="M5662,-1962.27C5622.76,-1894.39 5610.45,-1878.59 5562,-1816.96 5535.11,-1782.76 5060.07,-1271.86 5040,-1233.26 4956.44,-1072.53 4929.91,-854.04 4922.06,-760.31"/>
<polygon fill="#f91010" stroke="black" points="4925.54,-760 4921.25,-750.31 4918.57,-760.56 4925.54,-760"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_service_add -->
<g id="edge373" 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="M6013,-1414.57C6011.64,-1366.79 6028.51,-1352.24 6013,-1307.03"/>
<path fill="none" stroke="black" d="M6013,-1305.03C5996.39,-1256.64 5945.2,-1279.36 5923,-1233.26 5906.7,-1199.42 5958.41,-1197.28 5966,-1160.49"/>
<path fill="none" stroke="black" d="M5966,-1158.49C5968.09,-1137.35 5860.59,-812.52 5850,-794.1 5840.68,-777.91 5827.61,-762.19 5815.16,-749.06"/>
<polygon fill="#f91010" stroke="black" points="5817.42,-746.37 5807.94,-741.65 5812.41,-751.25 5817.42,-746.37"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge374" 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="M6489,-2071.8C6569.57,-2021.57 6553.78,-1972.29 6602,-1890.5 6716.92,-1695.58 6788,-1642.84 6788,-1416.57 6788,-1416.57 6788,-1416.57 6788,-1305.03 6788,-1292.42 6848.26,-1099.21 6850,-1086.72 6854.51,-1054.35 6851.19,-1045.85 6850,-1013.18 6848.22,-964.4 6854.81,-950.75 6842,-903.64 6827.76,-851.27 6825.18,-833.65 6788,-794.1 6764.13,-768.71 6730.32,-749.12 6702.02,-735.73"/>
<polygon fill="#f91010" stroke="black" points="6703.2,-732.42 6692.65,-731.43 6700.28,-738.78 6703.2,-732.42"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge375" 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="M5776,-2071.8C5789.35,-1976.25 5784.27,-1950.85 5776,-1854.73"/>
<path fill="none" stroke="black" d="M5776,-1852.73C5761.94,-1733.93 5344.15,-910.84 5434,-831.87"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_service_request -->
<g id="edge376" class="edge">
<title>ahriman_models_user_access&#45;&gt;ahriman_web_views_service_request</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5758.13,-2146.18C5765.37,-2126.44 5773.84,-2098.96 5776,-2073.8"/>
<path fill="none" stroke="black" d="M5776,-2071.8C5785.62,-1959.87 5649.06,-1698.94 5600,-1597.88 5433.92,-1255.76 5256.96,-1233.74 5154,-867.64 5145.15,-836.18 5133.67,-819.7 5154,-794.1 5197.99,-738.73 5246.52,-791.25 5309,-758.1 5312.92,-756.03 5316.76,-753.54 5320.45,-750.82"/>
<polygon fill="#f91010" stroke="black" points="5322.64,-753.55 5328.26,-744.56 5318.26,-748.08 5322.64,-753.55"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_service_search -->
<g id="edge377" 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="M6013,-1305.03C5977.26,-1178.53 6003.53,-1131.41 6061,-1013.18 6070.49,-993.66 6082.88,-995.82 6094,-977.18 6120.4,-932.93 6123.44,-918.46 6132,-867.64 6137.43,-835.41 6149.81,-821.51 6132,-794.1 6110.53,-761.07 6083.89,-779.79 6051,-758.1 6047.3,-755.66 6043.6,-752.92 6040.01,-750.04"/>
<polygon fill="#f91010" stroke="black" points="6042.24,-747.34 6032.34,-743.56 6037.72,-752.69 6042.24,-747.34"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge378" 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="M5724.17,-2148.44C5651.71,-2068.84 5430.49,-1826.86 5410,-1816.96 5326.65,-1776.68 5072.09,-1832.2 4995,-1780.96 4781.03,-1638.72 4912.05,-1446.46 4726,-1269.26 4670.28,-1216.19 4624.54,-1249.53 4569,-1196.26 4542.45,-1170.8 4549.37,-1154.6 4531,-1122.72 4521.52,-1106.27 4513.32,-1104.95 4508,-1086.72 4471.53,-961.89 4433.06,-900.4 4508,-794.1 4528.6,-764.89 4624.15,-738.65 4683.3,-724.83"/>
<polygon fill="#f91010" stroke="black" points="4684.21,-728.21 4693.17,-722.56 4682.64,-721.39 4684.21,-728.21"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_status_package -->
<g id="edge379" 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="M5776,-1852.73C5774.61,-1802.05 5810.67,-1795.77 5814,-1745.19"/>
<path fill="none" stroke="black" d="M5814,-1743.19C5817.84,-1684.79 5764.52,-1687.82 5738,-1635.65"/>
<path fill="none" stroke="black" d="M5738,-1633.65C5648.78,-1458.11 5602.62,-1427.92 5486,-1269.26 5486,-1269.26 5344,-1086.72 5344,-1086.72 5325.81,-1033.72 5334.21,-868.8 5358,-831.87"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge380" 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="M5814,-1743.19C5814,-1613.09 5886.26,-1596.87 5958,-1488.34 5980.16,-1454.82 6014.14,-1456.74 6013,-1416.57"/>
<path fill="none" stroke="black" d="M6013,-1414.57C5997.46,-1313.76 5875.78,-1405.09 5795,-1342.8 5609.45,-1199.72 5629.11,-1063.42 5665,-831.87"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_status_status -->
<g id="edge381" 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="M5739.19,-2145.62C5726.81,-2103.99 5700.09,-2024.17 5662,-1964.27"/>
<path fill="none" stroke="black" d="M5662,-1962.27C5629.32,-1916.59 5600.95,-1926.68 5558,-1890.5 5523.02,-1861.03 5527.39,-1836.43 5486,-1816.96 5399.03,-1776.05 5132.76,-1837.44 5055,-1780.96 4955.21,-1708.47 4908,-1372.16 4840,-1269.26 4784.04,-1184.58 4522,-1042.91 4522,-941.41"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_user_login -->
<g id="edge382" 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="M5776,-2071.8C5780.5,-2041.92 5851.6,-1840.12 5871,-1816.96 5891.21,-1792.82 5907.72,-1801 5932,-1780.96 6182.52,-1574.15 6288.63,-1532.1 6416,-1233.26 6441.51,-1173.4 6457.68,-1004.04 6440,-941.41"/>
<path fill="none" stroke="black" d="M6440,-939.41C6419.7,-870.46 6423.93,-840.46 6369,-794.1 6304.84,-739.96 6205.28,-722.66 6146.37,-717.14"/>
<polygon fill="#f91010" stroke="black" points="6146.48,-713.63 6136.21,-716.26 6145.88,-720.61 6146.48,-713.63"/>
</g>
<!-- ahriman_models_user_access&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge383" 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="M5966,-1158.49C5975.37,-1111.62 5955.69,-1097.62 5966,-1050.95"/>
<path fill="none" stroke="black" d="M5966,-1048.95C5990.93,-936.07 6075.32,-894.49 6018,-794.1 6002.39,-766.77 5982.25,-776.91 5957,-758.1 5953.44,-755.45 5949.85,-752.57 5946.32,-749.59"/>
<polygon fill="#f91010" stroke="black" points="5948.58,-746.92 5938.74,-742.98 5943.98,-752.19 5948.58,-746.92"/>
</g>
<!-- ahriman_models_user_identity -->
<g id="node80" class="node">
<title>ahriman_models_user_identity</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#ce3b3b" stroke="black" cx="6709" cy="-1049.95" rx="50.82" ry="28.98"/>
<text text-anchor="middle" x="6709" y="-1058.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6709" y="-1047.45" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">models.</text>
<text text-anchor="middle" x="6709" 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="edge384" 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="M6720.71,-1021.44C6742.27,-972.61 6791.61,-868.91 6852,-794.1 6865.5,-777.39 6882.71,-761.24 6898.46,-747.91"/>
<polygon fill="#ce3b3b" stroke="black" points="6901.07,-750.29 6906.54,-741.21 6896.6,-744.9 6901.07,-750.29"/>
</g>
<!-- ahriman_models_user_identity&#45;&gt;ahriman_web_views_user_login -->
<g id="edge385" 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="M6686.7,-1023.68C6640.04,-972.4 6526.49,-855.77 6407,-794.1 6321.2,-749.82 6209,-728.97 6146.11,-720.16"/>
<polygon fill="#ce3b3b" stroke="black" points="6146.46,-716.68 6136.08,-718.8 6145.52,-723.61 6146.46,-716.68"/>
</g>
<!-- ahriman_version -->
<g id="node81" class="node">
<title>ahriman_version</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#e72222" stroke="black" cx="5102" cy="-1744.19" rx="38.37" ry="21.43"/>
<text text-anchor="middle" x="5102" y="-1747.19" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5102" 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="edge386" 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="M5135.84,-1734.27C5229.08,-1709.91 5497.73,-1641.23 5724,-1597.88 5737.37,-1595.32 6680.38,-1457.43 6693,-1452.34 6875.46,-1378.82 6946.07,-1360.72 7054,-1196.26 7278.07,-854.82 7091.2,-674.77 7250,-298.5"/>
<path fill="none" stroke="black" d="M7250,-297.5C7253.18,-265.77 7266.32,-253.14 7250,-225.74"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_application_lock -->
<g id="edge387" 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="M5064.43,-1740.31C4972.26,-1733.36 4727.53,-1715.65 4523,-1707.42 4096.6,-1690.26 3026.35,-1725.13 2603,-1671.42 2462.95,-1653.65 2431.87,-1628.21 2294,-1597.88 2187.77,-1574.51 2063,-1549.95 1993.26,-1536.48"/>
<polygon fill="#e72222" stroke="black" points="1993.86,-1533.03 1983.38,-1534.58 1992.53,-1539.91 1993.86,-1533.03"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_web_views_index -->
<g id="edge388" 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="M4826,-1158.49C4822.81,-1139.54 4703.3,-849.01 4712,-831.87"/>
</g>
<!-- ahriman_version&#45;&gt;ahriman_web_views_status_status -->
<g id="edge389" 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="M5089.92,-1723.9C5069.88,-1691.36 5029.27,-1623.12 5002,-1561.88 4981.04,-1514.81 4978.99,-1501.64 4964,-1452.34 4939.53,-1371.86 4967.84,-1335.51 4916,-1269.26 4895.41,-1242.95 4871.4,-1258.92 4850,-1233.26 4828.19,-1207.1 4834.27,-1193.53 4826,-1160.49"/>
<path fill="none" stroke="black" d="M4826,-1158.49C4818.59,-1140.84 4813.95,-1137.68 4802,-1122.72 4788.27,-1105.53 4779.57,-1105.44 4768,-1086.72 4697.71,-972.96 4625.39,-906.4 4698,-794.1 4719.17,-761.36 4745.5,-779.64 4778,-758.1 4781.7,-755.65 4785.39,-752.91 4788.98,-750.02"/>
<polygon fill="#e72222" stroke="black" points="4791.27,-752.67 4796.65,-743.53 4786.75,-747.32 4791.27,-752.67"/>
</g>
<!-- ahriman_web -->
<g id="node82" class="node">
<title>ahriman_web</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="1954" cy="-400.5" rx="41.59" ry="18"/>
<text text-anchor="middle" x="1954" 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="edge390" 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="M1959.68,-382.53C1963.32,-368.13 1965.47,-347.89 1954,-335.5"/>
</g>
<!-- ahriman_web_middlewares -->
<g id="node83" class="node">
<title>ahriman_web_middlewares</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c82323" stroke="black" cx="6424" cy="-494.48" rx="50.41" ry="28.98"/>
<text text-anchor="middle" x="6424" y="-502.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6424" y="-491.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="6424" 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="edge391" 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="M6386.86,-474.65C6378.24,-471.01 6368.96,-467.66 6360,-465.49 6175.73,-420.78 5581.01,-405.84 5406.54,-402.37"/>
<polygon fill="#c82323" stroke="black" points="5406.45,-398.86 5396.38,-402.17 5406.31,-405.86 5406.45,-398.86"/>
</g>
<!-- ahriman_web_middlewares_auth_handler&#45;&gt;ahriman_web_web -->
<g id="edge392" 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="M6972.95,-683.71C6993.02,-662.23 7016.42,-630.89 7022,-597.24"/>
<path fill="none" stroke="black" d="M7022,-595.24C7049.37,-430.14 5682.43,-405.3 5406.26,-401.97"/>
<polygon fill="#732626" stroke="black" points="5406.19,-398.47 5396.15,-401.85 5406.11,-405.47 5406.19,-398.47"/>
</g>
<!-- ahriman_web_middlewares_exception_handler -->
<g id="node85" class="node">
<title>ahriman_web_middlewares_exception_handler</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#913030" stroke="black" cx="6554" cy="-596.24" rx="67.35" ry="36.54"/>
<text text-anchor="middle" x="6554" y="-610.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="6554" y="-599.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="6554" y="-588.24" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">middlewares.</text>
<text text-anchor="middle" x="6554" 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="edge393" 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="M6544.99,-559.62C6535.21,-529 6516.32,-486.54 6483,-465.49 6391.05,-407.4 5609.91,-401.94 5406.35,-401.51"/>
<polygon fill="#913030" stroke="black" points="5406.26,-398.01 5396.26,-401.49 5406.25,-405.01 5406.26,-398.01"/>
</g>
<!-- ahriman_web_routes -->
<g id="node86" class="node">
<title>ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#732626" stroke="black" cx="5358" cy="-494.48" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="5358" y="-502.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5358" y="-491.98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5358" 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="edge394" 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="M5358,-465.38C5358,-457.34 5358,-448.44 5358,-439.9"/>
<polygon fill="#732626" stroke="black" points="5361.5,-439.74 5358,-429.74 5354.5,-439.74 5361.5,-439.74"/>
</g>
<!-- ahriman_web_views -->
<g id="node87" class="node">
<title>ahriman_web_views</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#f91010" stroke="black" cx="5358" cy="-596.24" rx="38.37" ry="28.98"/>
<text text-anchor="middle" x="5358" y="-604.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5358" y="-593.74" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5358" 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="edge395" 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="M5358,-567.19C5358,-556.88 5358,-545.02 5358,-533.96"/>
<polygon fill="#f91010" stroke="black" points="5361.5,-533.67 5358,-523.67 5354.5,-533.67 5361.5,-533.67"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_index -->
<g id="edge396" 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="M5484.67,-828.38C5398.49,-824.19 5183.54,-809.06 5012,-758.1 4994.73,-752.98 4976.61,-745.11 4961,-737.47"/>
<polygon fill="#950303" stroke="black" points="4962.14,-734.13 4951.63,-732.77 4959,-740.38 4962.14,-734.13"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_add -->
<g id="edge397" 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="M5558.17,-815.91C5592.78,-801.97 5646.98,-779.57 5693,-758.1 5706.67,-751.73 5721.37,-744.38 5734.63,-737.56"/>
<polygon fill="#950303" stroke="black" points="5736.28,-740.65 5743.55,-732.94 5733.06,-734.43 5736.28,-740.65"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge398" 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="M5561.11,-825.97C5727.63,-808.92 6391.94,-740.88 6591.82,-720.41"/>
<polygon fill="#950303" stroke="black" points="6592.22,-723.89 6601.82,-719.39 6591.51,-716.93 6592.22,-723.89"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge399" 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="M5529.47,-794.33C5531.01,-785.87 5532.69,-776.66 5534.34,-767.6"/>
<polygon fill="#950303" stroke="black" points="5537.83,-767.95 5536.18,-757.49 5530.95,-766.7 5537.83,-767.95"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_request -->
<g id="edge400" class="edge">
<title>ahriman_web_views_base&#45;&gt;ahriman_web_views_service_request</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5489.74,-812.44C5464.97,-798.88 5430.78,-778.92 5403,-758.1 5399.45,-755.44 5395.86,-752.55 5392.34,-749.57"/>
<polygon fill="#950303" stroke="black" points="5394.6,-746.9 5384.77,-742.95 5389.99,-752.17 5394.6,-746.9"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_service_search -->
<g id="edge401" 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="M5561.19,-830.75C5639.59,-831.05 5822.58,-823.97 5957,-758.1 5960.88,-756.21 5964.66,-753.88 5968.29,-751.3"/>
<polygon fill="#950303" stroke="black" points="5970.73,-753.84 5976.44,-744.91 5966.41,-748.33 5970.73,-753.84"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge402" 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="M5484.43,-829.39C5350.44,-827.2 4906.34,-815.67 4778,-758.1 4773.89,-756.26 4769.91,-753.91 4766.11,-751.27"/>
<polygon fill="#950303" stroke="black" points="4768.17,-748.44 4758.13,-745.07 4763.88,-753.97 4768.17,-748.44"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_package -->
<g id="edge403" 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="M5503.44,-798.97C5495.61,-786.6 5486.44,-772.12 5477.93,-758.68"/>
<polygon fill="#950303" stroke="black" points="5480.77,-756.61 5472.46,-750.04 5474.85,-760.36 5480.77,-756.61"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge404" 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="M5549.41,-804.28C5565.47,-788.72 5586.24,-768.59 5604.04,-751.35"/>
<polygon fill="#950303" stroke="black" points="5606.72,-753.62 5611.46,-744.15 5601.84,-748.6 5606.72,-753.62"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_status_status -->
<g id="edge405" 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="M5484.69,-828.78C5362.34,-824.81 4982.53,-808.6 4872,-758.1 4867.91,-756.23 4863.93,-753.87 4860.14,-751.21"/>
<polygon fill="#950303" stroke="black" points="4862.2,-748.38 4852.16,-744.99 4857.9,-753.9 4862.2,-748.38"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_user_login -->
<g id="edge406" 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="M5561.4,-827.66C5667.69,-821.05 5963.69,-799.34 6051,-758.1 6055.07,-756.18 6059.03,-753.78 6062.81,-751.1"/>
<polygon fill="#950303" stroke="black" points="6065.06,-753.78 6070.77,-744.85 6060.74,-748.27 6065.06,-753.78"/>
</g>
<!-- ahriman_web_views_base&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge407" 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="M5560.57,-823.94C5618.53,-814.12 5732.73,-792.14 5825,-758.1 5839.16,-752.88 5853.99,-745.87 5867.23,-739"/>
<polygon fill="#950303" stroke="black" points="5868.92,-742.07 5876.11,-734.29 5865.64,-735.88 5868.92,-742.07"/>
</g>
<!-- ahriman_web_views_index&#45;&gt;ahriman_web_routes -->
<g id="edge408" 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="M4947.57,-688.78C4975.78,-665.36 5020.2,-628.64 5059,-597.24"/>
<path fill="none" stroke="black" d="M5059,-595.24C5133.54,-534.91 5246.14,-510.43 5309.76,-500.99"/>
<polygon fill="#732626" stroke="black" points="5310.51,-504.42 5319.92,-499.55 5309.53,-497.48 5310.51,-504.42"/>
</g>
<!-- ahriman_web_views_service -->
<g id="node90" class="node">
<title>ahriman_web_views_service</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="5262" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5262" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5262" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5262" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5262" 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="edge409" 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="M5286.91,-684.93C5293.56,-678.91 5301.11,-673.12 5309,-669.01 5443.3,-599.13 5728.86,-721.24 5642,-597.24"/>
</g>
<!-- ahriman_web_views_service_add&#45;&gt;ahriman_web_routes -->
<g id="edge410" 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="M5744.64,-691.62C5714.15,-670.96 5669.71,-636.79 5642,-597.24"/>
</g>
<!-- ahriman_web_views_service_reload_auth&#45;&gt;ahriman_web_routes -->
<g id="edge411" 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="M6657.06,-669.62C6660.89,-634.68 6659.43,-586.82 6630,-559.47 6584.39,-517.08 5633.86,-499.74 5406.53,-496.19"/>
<polygon fill="#732626" stroke="black" points="5406.31,-492.69 5396.25,-496.03 5406.2,-499.69 5406.31,-492.69"/>
</g>
<!-- ahriman_web_views_service_remove&#45;&gt;ahriman_web_routes -->
<g id="edge412" 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="M5573.02,-684.25C5604.15,-653.12 5648.33,-606.28 5642,-597.24"/>
</g>
<!-- ahriman_web_views_service_request&#45;&gt;ahriman_web_routes -->
<g id="edge413" class="edge">
<title>ahriman_web_views_service_request&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5383.93,-682.89C5389.85,-677.74 5396.34,-672.82 5403,-669.01 5499.28,-613.95 5705.63,-688.08 5642,-597.24"/>
</g>
<!-- ahriman_web_views_service_search&#45;&gt;ahriman_web_routes -->
<g id="edge414" 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="M5976.27,-682.53C5970.33,-677.41 5963.79,-672.59 5957,-669.01 5830.02,-601.98 5724.38,-714.85 5642,-597.24"/>
</g>
<!-- ahriman_web_views_status -->
<g id="node96" class="node">
<title>ahriman_web_views_status</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="5059" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5059" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5059" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5059" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5059" 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="edge415" 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="M5046.78,-678.53C5039.59,-651.75 5035.89,-615.94 5059,-597.24"/>
</g>
<!-- ahriman_web_views_status_ahriman&#45;&gt;ahriman_web_routes -->
<g id="edge416" 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="M4753.85,-677.67C4771.23,-653.03 4796.89,-620.4 4825,-597.24"/>
<path fill="none" stroke="black" d="M4825,-595.24C4899.05,-534.22 5193.13,-507.12 5309.87,-498.62"/>
<polygon fill="#822b2b" stroke="black" points="5310.22,-502.1 5319.95,-497.9 5309.72,-495.12 5310.22,-502.1"/>
</g>
<!-- ahriman_web_views_status_package&#45;&gt;ahriman_web_routes -->
<g id="edge417" 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="M5478.48,-683.77C5484.35,-678.54 5490.68,-673.36 5497,-669.01 5556.21,-628.2 5683.25,-656.13 5642,-597.24"/>
</g>
<!-- ahriman_web_views_status_packages&#45;&gt;ahriman_web_routes -->
<g id="edge418" 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="M5653.07,-670.36C5656.7,-646.83 5656.64,-618.15 5642,-597.24"/>
</g>
<!-- ahriman_web_views_status_status&#45;&gt;ahriman_web_routes -->
<g id="edge419" 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="M4811.21,-671.99C4805.31,-646.25 4803.91,-614.62 4825,-597.24"/>
</g>
<!-- ahriman_web_views_user -->
<g id="node101" class="node">
<title>ahriman_web_views_user</title><style>.edge>path:hover{stroke-width:8}</style>
<ellipse fill="#c24747" stroke="black" cx="5168" cy="-713.56" rx="38.37" ry="36.54"/>
<text text-anchor="middle" x="5168" y="-727.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">ahriman.</text>
<text text-anchor="middle" x="5168" y="-716.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">web.</text>
<text text-anchor="middle" x="5168" y="-705.56" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">views.</text>
<text text-anchor="middle" x="5168" 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="edge420" 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="M5192.28,-685.13C5199.05,-678.95 5206.81,-673.03 5215,-669.01 5387.7,-584.11 5752.41,-754.86 5642,-597.24"/>
<path fill="none" stroke="black" d="M5642,-595.24C5588.71,-519.16 5472.51,-500.64 5406.45,-496.42"/>
<polygon fill="#c24747" stroke="black" points="5406.48,-492.91 5396.3,-495.86 5406.09,-499.9 5406.48,-492.91"/>
</g>
<!-- ahriman_web_views_user_login&#45;&gt;ahriman_web_routes -->
<g id="edge421" 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="M6070.41,-682.25C6064.46,-677.16 6057.88,-672.42 6051,-669.01 5885.67,-586.99 5747.88,-748.4 5642,-597.24"/>
</g>
<!-- ahriman_web_views_user_logout&#45;&gt;ahriman_web_routes -->
<g id="edge422" 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="M5880.62,-684.71C5873.57,-678.98 5865.81,-673.37 5858,-669.01 5769.66,-619.72 5700.04,-680.1 5642,-597.24"/>
</g>
<!-- ahriman_web_web&#45;&gt;ahriman_application_handlers_web -->
<g id="edge423" 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="M5319.61,-399.54C4948.74,-399.88 2014.19,-400.51 1954,-335.5"/>
</g>
<!-- aioauthclient -->
<g id="node105" class="node">
<title>aioauthclient</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b67b53" stroke="black" points="6331.5,-1981.27 6328.5,-1985.27 6307.5,-1985.27 6304.5,-1981.27 6260.5,-1981.27 6260.5,-1945.27 6331.5,-1945.27 6331.5,-1981.27"/>
<text text-anchor="middle" x="6296" 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="edge424" 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="M6279.99,-1945.02C6262.49,-1923.99 6238.4,-1887.24 6250,-1854.73"/>
</g>
<!-- aiohttp -->
<g id="node106" class="node">
<title>aiohttp</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#f9c806" stroke="black" points="5858,-1324.03 5855,-1328.03 5834,-1328.03 5831,-1324.03 5804,-1324.03 5804,-1288.03 5858,-1288.03 5858,-1324.03"/>
<text text-anchor="middle" x="5831" 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="edge425" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_middlewares</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5975,-1232.26C6060.06,-1199.86 6319.6,-1261.57 6383,-1196.26 6474.85,-1101.65 6440.72,-666.29 6427.96,-533.82"/>
<polygon fill="#f9c806" stroke="black" points="6431.43,-533.35 6426.97,-523.74 6424.46,-534.03 6431.43,-533.35"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge426" 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="M5858.17,-1298.19C5891.23,-1290.11 5948.87,-1276.81 5999,-1269.26 6176.82,-1242.49 6223.95,-1258.48 6402,-1233.26"/>
<path fill="none" stroke="black" d="M6402,-1232.26C6551.49,-1211.08 7035.59,-1091.12 7016,-941.41"/>
<path fill="none" stroke="black" d="M7016,-939.41C7011.03,-900.86 6980.49,-903.72 6966,-867.64 6952.21,-833.33 6946.31,-791.73 6943.8,-760.56"/>
<polygon fill="#f9c806" stroke="black" points="6947.28,-760.14 6943.08,-750.41 6940.3,-760.64 6947.28,-760.14"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_middlewares_exception_handler -->
<g id="edge427" 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="M5858.2,-1298.38C5891.29,-1290.49 5948.96,-1277.38 5999,-1269.26 6140.27,-1246.33 6180.96,-1271.07 6319,-1233.26"/>
<path fill="none" stroke="black" d="M6319,-1232.26C6363.35,-1220.11 6381.28,-1226.41 6416,-1196.26 6464.63,-1154.04 6554,-1005.82 6554,-941.41 6554,-941.41 6554,-941.41 6554,-829.87 6554,-765.1 6554,-690.19 6554,-643.26"/>
<polygon fill="#f9c806" stroke="black" points="6557.5,-643.11 6554,-633.11 6550.5,-643.11 6557.5,-643.11"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_routes -->
<g id="edge428" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_routes</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5852,-1158.49C5844.7,-1111.26 5835.11,-1095.67 5852,-1050.95"/>
<path fill="none" stroke="black" d="M5852,-1048.95C5881.91,-969.77 5879.34,-733.9 5825,-669.01 5768.91,-602.03 5692.12,-668.8 5642,-597.24"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_base -->
<g id="edge429" 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="M5803.92,-1288.83C5783.8,-1275.77 5756.72,-1255.89 5738,-1233.26"/>
<path fill="none" stroke="black" d="M5738,-1232.26C5642.53,-1116.81 5570.4,-952.35 5539.51,-875.1"/>
<polygon fill="#f9c806" stroke="black" points="5542.72,-873.69 5535.78,-865.68 5536.21,-876.27 5542.72,-873.69"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_add -->
<g id="edge430" 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="M5776,-1048.95C5776,-1009.56 5815.85,-1014.65 5828,-977.18 5853.09,-899.78 5850.53,-872.29 5828,-794.1 5824.07,-780.48 5817.05,-766.94 5809.49,-755"/>
<polygon fill="#f9c806" stroke="black" points="5812.36,-753 5803.92,-746.6 5806.53,-756.87 5812.36,-753"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge431" 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="M6319,-1232.26C6395.04,-1212.64 6426.51,-1239.61 6492,-1196.26 6541.41,-1163.56 6540.1,-1139 6568,-1086.72 6582.32,-1059.89 6670.58,-862.18 6668,-831.87"/>
<path fill="none" stroke="black" d="M6668,-829.87C6665.02,-809.53 6661.42,-787.22 6658.16,-767.69"/>
<polygon fill="#f9c806" stroke="black" points="6661.6,-767.04 6656.5,-757.76 6654.7,-768.2 6661.6,-767.04"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_remove -->
<g id="edge432" 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="M5700,-1048.95C5669.68,-931.61 5661.2,-900.41 5603,-794.1 5595.55,-780.5 5586.03,-766.61 5576.82,-754.32"/>
<polygon fill="#f9c806" stroke="black" points="5579.38,-751.91 5570.52,-746.1 5573.82,-756.16 5579.38,-751.91"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_request -->
<g id="edge433" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_views_service_request</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5803.84,-1290.72C5768.55,-1271.52 5705.82,-1235.3 5658,-1196.26 5579.76,-1132.38 5381.59,-961.39 5344,-867.64 5331.08,-835.41 5334.41,-796.34 5340.81,-765.74"/>
<polygon fill="#f9c806" stroke="black" points="5344.28,-766.23 5343.07,-755.7 5337.46,-764.69 5344.28,-766.23"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_service_search -->
<g id="edge434" 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="M6004,-829.87C6003.28,-809.78 6003.12,-787.7 6003.2,-768.29"/>
<polygon fill="#f9c806" stroke="black" points="6006.7,-768.13 6003.26,-758.1 5999.7,-768.08 6006.7,-768.13"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_ahriman -->
<g id="edge435" 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="M5803.95,-1301.95C5726.57,-1292.56 5498.43,-1260.96 5320,-1196.26 5026.08,-1089.67 4859.38,-1135.43 4698,-867.64 4678.2,-834.79 4690.25,-791.66 4705.05,-759.55"/>
<polygon fill="#f9c806" stroke="black" points="4708.28,-760.91 4709.49,-750.39 4701.98,-757.86 4708.28,-760.91"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_package -->
<g id="edge436" 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="M5738,-1232.26C5725.95,-1215.57 5707.9,-1069.96 5700,-1050.95"/>
<path fill="none" stroke="black" d="M5700,-1048.95C5688.1,-1012.73 5671.41,-1010.57 5653,-977.18 5627.16,-930.32 5625.07,-916.4 5603,-867.64 5588.23,-835.01 5594.87,-819.89 5570,-794.1 5544.89,-768.06 5526.8,-778.61 5497,-758.1 5493.34,-755.59 5489.69,-752.8 5486.12,-749.88"/>
<polygon fill="#f9c806" stroke="black" points="5488.35,-747.19 5478.48,-743.35 5483.8,-752.51 5488.35,-747.19"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_packages -->
<g id="edge437" 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="M5837.03,-1287.64C5845.67,-1260.45 5859.71,-1206.25 5852,-1160.49"/>
<path fill="none" stroke="black" d="M5852,-1158.49C5845.56,-1116.83 5811.77,-1122.82 5790,-1086.72 5781.18,-1072.1 5777.58,-1067.95 5776,-1050.95"/>
<path fill="none" stroke="black" d="M5776,-1048.95C5769.92,-983.78 5774.15,-965.24 5752,-903.64 5732.78,-850.21 5698.49,-794.7 5673.29,-757.75"/>
<polygon fill="#f9c806" stroke="black" points="5675.97,-755.48 5667.41,-749.24 5670.21,-759.46 5675.97,-755.48"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_status_status -->
<g id="edge438" 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="M5803.65,-1300.93C5750.41,-1292.4 5629.69,-1270.41 5534,-1233.26 5445.88,-1199.05 4895.99,-876.77 4888,-867.64 4862.78,-838.84 4846.75,-798.56 4837.17,-766.54"/>
<polygon fill="#f9c806" stroke="black" points="4840.52,-765.54 4834.4,-756.89 4833.8,-767.47 4840.52,-765.54"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_user_login -->
<g id="edge439" 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="M5858.25,-1289.74C5886.76,-1274.16 5933.1,-1249.97 5975,-1233.26"/>
<path fill="none" stroke="black" d="M5975,-1232.26C6069.09,-1194.73 6305.98,-1040.71 6326,-941.41"/>
<path fill="none" stroke="black" d="M6326,-939.41C6334.98,-873.8 6335.84,-844.61 6293,-794.1 6255.81,-750.26 6190.73,-730.26 6146.06,-721.36"/>
<polygon fill="#f9c806" stroke="black" points="6146.49,-717.88 6136.01,-719.48 6145.2,-724.76 6146.49,-717.88"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_views_user_logout -->
<g id="edge440" 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="M5852,-1048.95C5872.05,-1001.88 5911.02,-1017.9 5942,-977.18 5984.52,-921.31 6017.3,-900.82 6004,-831.87"/>
<path fill="none" stroke="black" d="M6004,-829.87C6003.32,-811 5972.74,-776.05 5946.64,-749.56"/>
<polygon fill="#f9c806" stroke="black" points="5948.97,-746.94 5939.43,-742.33 5944.02,-751.88 5948.97,-746.94"/>
</g>
<!-- aiohttp&#45;&gt;ahriman_web_web -->
<g id="edge441" class="edge">
<title>aiohttp&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5803.96,-1300.39C5755.77,-1291.52 5652.56,-1269.7 5572,-1233.26 5490.22,-1196.27 5478.42,-1171.37 5403,-1122.72 5225.5,-1008.23 5107.86,-1050.43 5002,-867.64 4981.25,-831.82 4945.73,-508.58 4985,-495.48"/>
</g>
<!-- aiohttpjinja2 -->
<g id="node108" class="node">
<title>aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#69b03a" stroke="black" points="4646,-1177.49 4643,-1181.49 4622,-1181.49 4619,-1177.49 4578,-1177.49 4578,-1141.49 4646,-1141.49 4646,-1177.49"/>
<text text-anchor="middle" x="4612" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttpjinja2</text>
</g>
<!-- aiohttp&#45;&gt;aiohttpjinja2 -->
<g id="edge442" class="edge">
<title>aiohttp&#45;&gt;aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5803.88,-1302.43C5712.33,-1293.59 5406.3,-1263.57 5154,-1233.26 4968.84,-1211.02 4748.72,-1180.07 4656.31,-1166.87"/>
<polygon fill="#f9c806" stroke="black" points="4656.6,-1163.37 4646.2,-1165.42 4655.6,-1170.3 4656.6,-1163.37"/>
</g>
<!-- aiohttpsession -->
<g id="node110" class="node">
<title>aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#3db86e" stroke="black" points="6988,-1177.49 6985,-1181.49 6964,-1181.49 6961,-1177.49 6908,-1177.49 6908,-1141.49 6988,-1141.49 6988,-1177.49"/>
<text text-anchor="middle" x="6948" y="-1156.99" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">aiohttpsession</text>
</g>
<!-- aiohttp&#45;&gt;aiohttpsession -->
<g id="edge443" class="edge">
<title>aiohttp&#45;&gt;aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6402,-1232.26C6584.43,-1206.42 6633.56,-1228.31 6815,-1196.26 6842.83,-1191.34 6873.32,-1183.34 6898.08,-1176.15"/>
<polygon fill="#f9c806" stroke="black" points="6899.36,-1179.42 6907.96,-1173.23 6897.38,-1172.71 6899.36,-1179.42"/>
</g>
<!-- aiohttpdebugtoolbar -->
<g id="node107" class="node">
<title>aiohttpdebugtoolbar</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#a2b653" stroke="black" points="4550.5,-731.56 4547.5,-735.56 4526.5,-735.56 4523.5,-731.56 4449.5,-731.56 4449.5,-695.56 4550.5,-695.56 4550.5,-731.56"/>
<text text-anchor="middle" x="4500" 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="edge444" class="edge">
<title>aiohttpdebugtoolbar&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4492.66,-695.39C4482.1,-667.82 4467.26,-614.99 4500,-597.24"/>
</g>
<!-- aiohttpjinja2&#45;&gt;ahriman_web_views_index -->
<g id="edge445" 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="M4522,-1048.95C4509.33,-1021.3 4598.16,-812.99 4622,-794.1 4709.99,-724.4 4770.68,-806.44 4872,-758.1 4877.27,-755.59 4882.36,-752.27 4887.12,-748.59"/>
<polygon fill="#69b03a" stroke="black" points="4889.4,-751.24 4894.79,-742.12 4884.89,-745.89 4889.4,-751.24"/>
</g>
<!-- aiohttpjinja2&#45;&gt;ahriman_web_web -->
<g id="edge446" class="edge">
<title>aiohttpjinja2&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4593.02,-1141.43C4572.3,-1121.71 4539.72,-1087.27 4522,-1050.95"/>
<path fill="none" stroke="black" d="M4522,-1048.95C4496.34,-996.35 4476.23,-991.53 4446,-941.41"/>
</g>
<!-- aiohttpsecurity -->
<g id="node109" class="node">
<title>aiohttpsecurity</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#3bce3b" stroke="black" points="6684,-1433.57 6681,-1437.57 6660,-1437.57 6657,-1433.57 6604,-1433.57 6604,-1397.57 6684,-1397.57 6684,-1433.57"/>
<text text-anchor="middle" x="6644" 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="edge447" 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="M6661.03,-1397.45C6679.09,-1377.67 6705.86,-1343.18 6712,-1307.03"/>
<path fill="none" stroke="black" d="M6712,-1305.03C6728.24,-1209.34 6375.79,-1239.7 6289,-1196.26 6231.38,-1167.42 6175.12,-1117.91 6141.01,-1084.81"/>
<polygon fill="#3bce3b" stroke="black" points="6143.24,-1082.1 6133.65,-1077.6 6138.34,-1087.1 6143.24,-1082.1"/>
</g>
<!-- aiohttpsecurity&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge448" 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="M6712,-1305.03C6723.31,-1246.24 6789.86,-1280.99 6826,-1233.26"/>
<path fill="none" stroke="black" d="M6826,-1232.26C6838.4,-1215.88 6843.25,-1213.12 6855,-1196.26 6876.78,-1165.01 6869.88,-1147.27 6899,-1122.72 6932.89,-1094.15 6957.39,-1114.4 6992,-1086.72 7006.95,-1074.76 7010.75,-1069.36 7016,-1050.95"/>
<path fill="none" stroke="black" d="M7016,-1048.95C7029.26,-1003.03 7019.89,-989.05 7016,-941.41"/>
</g>
<!-- aiohttpsecurity&#45;&gt;ahriman_web_views_service_reload_auth -->
<g id="edge449" 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="M6712,-1305.03C6726.84,-1224.04 6698.96,-1190.99 6745,-1122.72 6761.75,-1097.88 6785.27,-1111.58 6802,-1086.72 6838.62,-1032.29 6838.37,-1006.2 6828,-941.41"/>
<path fill="none" stroke="black" d="M6828,-939.41C6816.36,-856.81 6743.57,-786.19 6694.48,-747.14"/>
<polygon fill="#3bce3b" stroke="black" points="6696.54,-744.31 6686.51,-740.91 6692.23,-749.83 6696.54,-744.31"/>
</g>
<!-- aiohttpsession&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge450" 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="M6963.27,-1141.4C6980.03,-1121.38 7005.88,-1086.43 7016,-1050.95"/>
</g>
<!-- aur -->
<g id="node111" class="node">
<title>aur</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#33ccae" stroke="black" points="6944,-2670.26 6941,-2674.26 6920,-2674.26 6917,-2670.26 6890,-2670.26 6890,-2634.26 6944,-2634.26 6944,-2670.26"/>
<text text-anchor="middle" x="6917" 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="edge451" 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="M6924.15,-2634.14C6943.08,-2589.17 6996.55,-2464.21 7048,-2363.53"/>
</g>
<!-- aur&#45;&gt;ahriman_models_package -->
<g id="edge452" class="edge">
<title>aur&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6889.74,-2649.02C6732.41,-2636.09 5924.3,-2570.02 5264,-2521.5 5211.27,-2517.63 3417.14,-2400.3 3365,-2391.52 3345.57,-2388.25 3324.52,-2382.87 3306.54,-2377.69"/>
<polygon fill="#33ccae" stroke="black" points="3307.48,-2374.32 3296.89,-2374.85 3305.5,-2381.04 3307.48,-2374.32"/>
</g>
<!-- aur&#45;&gt;ahriman_web_views_service_search -->
<g id="edge453" 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="M6890.87,-2634.09C6797.62,-2571.95 6475.53,-2349.69 6265,-2109.57 6124.59,-1949.43 6194,-1848.63 6194,-1635.65 6194,-1635.65 6194,-1635.65 6194,-1232.26 6194,-1096.41 6296.31,-1077.01 6288,-941.41"/>
</g>
<!-- boto3 -->
<g id="node112" class="node">
<title>boto3</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#40a6c0" stroke="black" points="5940,-2286.55 5937,-2290.55 5916,-2290.55 5913,-2286.55 5886,-2286.55 5886,-2250.55 5940,-2250.55 5940,-2286.55"/>
<text text-anchor="middle" x="5913" 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="edge454" 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="M5908.39,-2250.25C5904.05,-2231.75 5898.69,-2201.57 5902,-2175.57"/>
</g>
<!-- cryptography -->
<g id="node113" class="node">
<title>cryptography</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#196be6" stroke="black" points="7106,-3129.99 7103,-3133.99 7082,-3133.99 7079,-3129.99 7032,-3129.99 7032,-3093.99 7106,-3093.99 7106,-3129.99"/>
<text text-anchor="middle" x="7069" y="-3109.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">cryptography</text>
</g>
<!-- cryptography&#45;&gt;ahriman_web_middlewares_auth_handler -->
<g id="edge455" 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="M7200,-2455.51C7188.6,-2321.41 7320.69,-2329.56 7368,-2203.56 7457.31,-1965.67 7434,-1889.75 7434,-1635.65 7434,-1635.65 7434,-1635.65 7434,-1524.11 7434,-1198.6 7611.04,-1018.24 7375,-794.1 7315.58,-737.68 7085.24,-785.47 7008,-758.1 7000.09,-755.3 6992.2,-751.36 6984.77,-746.98"/>
<polygon fill="#196be6" stroke="black" points="6986.62,-744 6976.28,-741.67 6982.91,-749.94 6986.62,-744"/>
</g>
<!-- cryptography&#45;&gt;aiohttpsession -->
<g id="edge456" class="edge">
<title>cryptography&#45;&gt;aiohttpsession</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M7102.06,-3093.79C7140.86,-3070.95 7200,-3026.68 7200,-2968.99 7200,-2968.99 7200,-2968.99 7200,-2651.26 7200,-2565.15 7216.44,-2542.04 7200,-2457.51"/>
<path fill="none" stroke="black" d="M7200,-2455.51C7079.22,-1912.07 6987.26,-1786.59 6926,-1233.26 6924.26,-1217.53 6928.97,-1200.57 6934.48,-1186.99"/>
<polygon fill="#196be6" stroke="black" points="6937.72,-1188.32 6938.55,-1177.76 6931.31,-1185.5 6937.72,-1188.32"/>
</g>
<!-- requests -->
<g id="node117" class="node">
<title>requests</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#e90cbd" stroke="black" points="6965,-3057.99 6962,-3061.99 6941,-3061.99 6938,-3057.99 6911,-3057.99 6911,-3021.99 6965,-3021.99 6965,-3057.99"/>
<text text-anchor="middle" x="6938" y="-3037.49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#ffffff">requests</text>
</g>
<!-- cryptography&#45;&gt;requests -->
<g id="edge457" class="edge">
<title>cryptography&#45;&gt;requests</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M7036.95,-3093.87C7017.99,-3083.74 6993.91,-3070.87 6974.26,-3060.37"/>
<polygon fill="#196be6" stroke="black" points="6975.76,-3057.2 6965.29,-3055.57 6972.46,-3063.37 6975.76,-3057.2"/>
</g>
<!-- jinja2 -->
<g id="node114" class="node">
<title>jinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#3b3bce" stroke="black" points="4170,-2286.55 4167,-2290.55 4146,-2290.55 4143,-2286.55 4116,-2286.55 4116,-2250.55 4170,-2250.55 4170,-2286.55"/>
<text text-anchor="middle" x="4143" 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="edge458" 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="M4137.06,-2250.4C4131.34,-2232.03 4123.87,-2201.95 4126,-2175.57"/>
<path fill="none" stroke="black" d="M4126,-2173.57C4131.42,-2106.36 4107.84,-2085.47 4062,-2036.03 4017.65,-1988.21 3981.91,-2008.52 3934,-1964.27"/>
</g>
<!-- jinja2&#45;&gt;ahriman_web_web -->
<g id="edge459" class="edge">
<title>jinja2&#45;&gt;ahriman_web_web</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4126,-2173.57C4126.02,-2118.36 4190.54,-2128.19 4200,-2073.8"/>
<path fill="none" stroke="black" d="M4200,-2071.8C4206.75,-2033 4164.84,-2035.64 4148,-2000.03 4112.04,-1923.99 4131.34,-1895.02 4100,-1816.96 4093.18,-1799.97 4087.47,-1797.67 4080,-1780.96 4058.96,-1733.92 4054.69,-1721.36 4042,-1671.42 4025.88,-1607.98 4018,-1591.57 4018,-1526.11 4018,-1526.11 4018,-1526.11 4018,-1158.49 4018,-1049.52 4065.73,-1027.92 4132,-941.41"/>
<path fill="none" stroke="black" d="M4132,-939.41C4198,-843.61 4178.28,-790.97 4266,-714.56"/>
</g>
<!-- jinja2&#45;&gt;aiohttpjinja2 -->
<g id="edge460" class="edge">
<title>jinja2&#45;&gt;aiohttpjinja2</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4200,-2071.8C4235.63,-1831.88 4208,-1768.67 4208,-1526.11 4208,-1526.11 4208,-1526.11 4208,-1414.57 4208,-1233.04 4444.28,-1360.25 4574,-1233.26 4587.12,-1220.42 4596.65,-1202.08 4602.89,-1187.03"/>
<polygon fill="#3b3bce" stroke="black" points="4606.16,-1188.29 4606.52,-1177.7 4599.63,-1185.75 4606.16,-1188.29"/>
</g>
<!-- passlib -->
<g id="node115" class="node">
<title>passlib</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#763bce" stroke="black" points="6071,-2380.53 6068,-2384.53 6047,-2384.53 6044,-2380.53 6017,-2380.53 6017,-2344.53 6071,-2344.53 6071,-2380.53"/>
<text text-anchor="middle" x="6044" 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="edge461" class="edge">
<title>passlib&#45;&gt;ahriman_models_user</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6043.34,-2344.39C6041.61,-2299.11 6036.88,-2175.39 6034.47,-2112.14"/>
<polygon fill="#763bce" stroke="black" points="6037.95,-2111.66 6034.07,-2101.8 6030.96,-2111.93 6037.95,-2111.66"/>
</g>
<!-- pyalpm -->
<g id="node116" class="node">
<title>pyalpm</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b13bce" stroke="black" points="5656,-2985.99 5653,-2989.99 5632,-2989.99 5629,-2985.99 5602,-2985.99 5602,-2949.99 5656,-2949.99 5656,-2985.99"/>
<text text-anchor="middle" x="5629" 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="edge462" 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="M5601.82,-2964.22C5485.46,-2951.92 5029.92,-2899.41 4913,-2820.01 4887.51,-2802.7 4901.78,-2777.26 4875,-2762.03 4869.92,-2759.14 3198.84,-2689.32 3193,-2689.03 2978.82,-2678.23 2723.37,-2662.74 2618.53,-2656.28"/>
<polygon fill="#b13bce" stroke="black" points="2618.47,-2652.76 2608.27,-2655.64 2618.04,-2659.75 2618.47,-2652.76"/>
</g>
<!-- pyalpm&#45;&gt;ahriman_models_package -->
<g id="edge463" class="edge">
<title>pyalpm&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M5656.04,-2965.75C5760.42,-2960.59 6136.45,-2938.64 6242,-2886"/>
<path fill="none" stroke="black" d="M6242,-2884C6488.1,-2761.27 5914.42,-2775.04 5644,-2725.03 5285.37,-2658.7 4309.08,-2763.06 4012,-2551.5"/>
</g>
<!-- pyalpm&#45;&gt;ahriman_models_package_description -->
<g id="edge464" 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="M6242,-2884C6410.65,-2802.9 6773.37,-2898.19 6645,-2762.03 6598.35,-2712.54 6101.51,-2734.27 6034,-2726.03 5910.82,-2710.99 5059.36,-2535.04 4936,-2521.5 4472.73,-2470.69 4349.71,-2548.95 3888,-2485.5 3872.97,-2483.44 3857.05,-2480.24 3841.99,-2476.73"/>
<polygon fill="#b13bce" stroke="black" points="3842.78,-2473.32 3832.24,-2474.38 3841.15,-2480.12 3842.78,-2473.32"/>
</g>
<!-- requests&#45;&gt;ahriman_core_sign_gpg -->
<g id="edge465" 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="M6910.71,-3039.11C6679.35,-3039.83 5051.53,-3039.39 4908,-2886"/>
<path fill="none" stroke="black" d="M4908,-2884C4752.65,-2857.49 2182.17,-2932.7 2072,-2820.01 1993.18,-2739.39 2107.75,-2660.63 2190,-2615.49 2316.63,-2545.99 2389.31,-2654.09 2513,-2579.49 2525.88,-2571.72 2523.69,-2564.02 2532,-2551.5"/>
<path fill="none" stroke="black" d="M2532,-2549.5C2571.58,-2487.85 2495.55,-2464.01 2485,-2391.52 2481.29,-2366.02 2475.42,-2357.46 2485,-2333.54 2499.6,-2297.06 2538.15,-2308.05 2546,-2269.55"/>
<path fill="none" stroke="black" d="M2546,-2267.55C2555.16,-2212.21 2527.93,-2151.46 2505.71,-2113"/>
<polygon fill="#e90cbd" stroke="black" points="2508.6,-2111.01 2500.48,-2104.2 2502.58,-2114.59 2508.6,-2111.01"/>
</g>
<!-- requests&#45;&gt;ahriman_core_status_web_client -->
<g id="edge466" 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="M6940.43,-3021.74C6943.93,-2993.12 6948.83,-2934.2 6938,-2886"/>
<path fill="none" stroke="black" d="M6938,-2884C6904.92,-2758.22 6796.2,-2800.62 6672,-2762.03 6537.58,-2720.26 6057.95,-2793.66 6048,-2653.26"/>
<path fill="none" stroke="black" d="M6048,-2651.26C6019.3,-2600.8 6055.3,-2575.1 6033,-2521.5 6012.47,-2472.17 5996.51,-2464.57 5958,-2427.52 5950.44,-2420.25 5661.52,-2210.87 5654,-2203.56 5527.58,-2080.52 5500.99,-2041.63 5410,-1890.5 5391.52,-1859.8 5406.3,-1837.57 5377,-1816.96 5334.52,-1787.08 4962.77,-1785.06 4911,-1780.96 4771.29,-1769.89 4606.73,-1756.43 4523.7,-1749.61"/>
<polygon fill="#e90cbd" stroke="black" points="4523.75,-1746.1 4513.5,-1748.77 4523.18,-1753.08 4523.75,-1746.1"/>
</g>
<!-- requests&#45;&gt;ahriman_core_upload_github -->
<g id="edge467" class="edge">
<title>requests&#45;&gt;ahriman_core_upload_github</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6048,-2651.26C6027.23,-2536.29 6005.91,-2494.24 5910,-2427.52 5843.02,-2380.94 5809.08,-2411.6 5730,-2391.52 5592.93,-2356.72 5537.24,-2384.86 5426,-2297.54 5365.77,-2250.26 5326.65,-2167.82 5307.02,-2117.3"/>
<polygon fill="#e90cbd" stroke="black" points="5310.29,-2116.05 5303.47,-2107.95 5303.75,-2118.54 5310.29,-2116.05"/>
</g>
<!-- requests&#45;&gt;ahriman_core_util -->
<g id="edge468" class="edge">
<title>requests&#45;&gt;ahriman_core_util</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M4908,-2884C4890.44,-2865.23 4907.67,-2839.46 4926.88,-2819.97"/>
<polygon fill="#e90cbd" stroke="black" points="4929.51,-2822.3 4934.27,-2812.83 4924.64,-2817.26 4929.51,-2822.3"/>
</g>
<!-- requests&#45;&gt;aur -->
<g id="edge469" class="edge">
<title>requests&#45;&gt;aur</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M6938,-2884C6923.87,-2811.38 6919.21,-2724.01 6917.7,-2680.57"/>
<polygon fill="#e90cbd" stroke="black" points="6921.19,-2680.39 6917.38,-2670.5 6914.2,-2680.61 6921.19,-2680.39"/>
</g>
<!-- srcinfo -->
<g id="node118" class="node">
<title>srcinfo</title><style>.edge>path:hover{stroke-width:8}</style>
<polygon fill="#b6537b" stroke="black" points="3642,-2670.26 3639,-2674.26 3618,-2674.26 3615,-2670.26 3588,-2670.26 3588,-2634.26 3642,-2634.26 3642,-2670.26"/>
<text text-anchor="middle" x="3615" 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="edge470" class="edge">
<title>srcinfo&#45;&gt;ahriman_models_package</title><style>.edge>path:hover{stroke-width:8}</style>
<path fill="none" stroke="black" d="M3597.78,-2633.94C3581.09,-2615.34 3557.99,-2584.03 3556,-2551.5"/>
</g>
</g>
</svg>