mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-08 11:59:48 -04:00
232 lines
75 KiB
XML
232 lines
75 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="3428px" preserveAspectRatio="none" style="width:1620px;height:3428px;background:#FFFFFF;" version="1.1" viewBox="0 0 1620 3428" width="1620px" zoomAndPan="magnify"><defs/><g><rect fill="#90EE90" height="3338.3091" style="stroke:#181818;stroke-width:1.0;" width="10" x="37.5" y="46.0986"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="126.5" y="855.3115"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="126.5" y="912.687"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="235.5" y="1695.7817"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="235.5" y="2164.5303"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="2073.9063"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="2214.2568"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="2580.6807"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="2698.3047"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="2767.2534"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="2912.7065"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="3219.0059"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="3261.7324"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="3304.459"/><rect fill="#90EE90" height="70.0474" style="stroke:#181818;stroke-width:1.0;" width="10" x="553.5" y="2338.6074"/><rect fill="#90EE90" height="71.6753" style="stroke:#181818;stroke-width:1.0;" width="10" x="678.5" y="730.9609"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="678.5" y="1175.7129"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="678.5" y="1396.9097"/><rect fill="#90EE90" height="28.9487" style="stroke:#181818;stroke-width:1.0;" width="10" x="819.5" y="673.2856"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="819.5" y="759.6875"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="819.5" y="986.3623"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="819.5" y="1354.1831"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="819.5" y="2461.3301"/><rect fill="#90EE90" height="2879.9434" style="stroke:#181818;stroke-width:1.0;" width="10" x="947.5" y="495.4644"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="952.5" y="1105.9863"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="952.5" y="1860.1836"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="952.5" y="1929.1323"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="952.5" y="2977.6553"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="952.5" y="3089.3306"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="952.5" y="3158.2793"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="1123.5" y="1489.5337"/><rect fill="#90EE90" height="205.5215" style="stroke:#181818;stroke-width:1.0;" width="10" x="1123.5" y="1532.2603"/><rect fill="#90EE90" height="28.9487" style="stroke:#181818;stroke-width:1.0;" width="10" x="1123.5" y="2280.9321"/><rect fill="#90EE90" height="727.4707" style="stroke:#181818;stroke-width:1.0;" width="10" x="1288.5" y="1053.0376"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="1288.5" y="1809.2349"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="1400" y="2647.356"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="1400" y="3038.3818"/><rect fill="#90EE90" height="299.248" style="stroke:#181818;stroke-width:1.0;" width="10" x="1507" y="2528.0054"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="1507" y="2869.98"/><rect fill="none" height="569.1025" style="stroke:#000000;stroke-width:1.5;" width="1281.5" x="87.5" y="635.6104"/><rect fill="none" height="117.0508" style="stroke:#000000;stroke-width:1.5;" width="897.5" x="97.5" y="817.6362"/><rect fill="none" height="249.0259" style="stroke:#000000;stroke-width:1.5;" width="734" x="625" y="948.687"/><rect fill="none" height="130.624" style="stroke:#000000;stroke-width:1.5;" width="439" x="910" y="1015.3623"/><rect fill="none" height="163.5215" style="stroke:#000000;stroke-width:1.5;" width="1122" x="145.5" y="1561.2603"/><rect fill="none" height="58.8975" style="stroke:#000000;stroke-width:1.5;" width="196" x="1061.5" y="1585.209"/><rect fill="none" height="59.6753" style="stroke:#000000;stroke-width:1.5;" width="1040" x="155.5" y="1658.1064"/><rect fill="none" height="838.8003" style="stroke:#000000;stroke-width:1.5;" width="1457.5" x="145.5" y="2102.9063"/><rect fill="none" height="59.6753" style="stroke:#000000;stroke-width:1.5;" width="839.5" x="155.5" y="2126.855"/><rect fill="none" height="691.4497" style="stroke:#000000;stroke-width:1.5;" width="1317.5" x="275.5" y="2243.2568"/><rect fill="none" height="418.5986" style="stroke:#000000;stroke-width:1.5;" width="1297.5" x="285.5" y="2423.6548"/><rect fill="none" height="344.9233" style="stroke:#000000;stroke-width:1.5;" width="1277.5" x="295.5" y="2490.3301"/><rect fill="none" height="271.248" style="stroke:#000000;stroke-width:1.5;" width="1257.5" x="305.5" y="2543.0054"/><rect fill="none" height="197.5728" style="stroke:#000000;stroke-width:1.5;" width="1155.5" x="315.5" y="2609.6807"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="42" x2="42" y1="36.0986" y2="3393.4077"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="131.5" x2="131.5" y1="119.5967" y2="3393.4077"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="240.5" x2="240.5" y1="174.6953" y2="3393.4077"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="385.5" x2="385.5" y1="229.7939" y2="3393.4077"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="558" x2="558" y1="284.8926" y2="3393.4077"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="683" x2="683" y1="339.9912" y2="3393.4077"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="824" x2="824" y1="395.0898" y2="3393.4077"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="952" x2="952" y1="450.1885" y2="3393.4077"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="1128.5" x2="1128.5" y1="534.0137" y2="3393.4077"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="1293" x2="1293" y1="575.1123" y2="3393.4077"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="1405" x2="1405" y1="2042.6304" y2="3393.4077"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="1512" x2="1512" y1="2377.1567" y2="3393.4077"/><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="75" x="5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="61" x="12" y="25.1318">mkdwarfs</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="75" x="5" y="3392.4077"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="61" x="12" y="3412.5396">mkdwarfs</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="48" x="107.5" y="3392.4077"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="34" x="114.5" y="3412.5396">script</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="150" x="165.5" y="3392.4077"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="136" x="172.5" y="3412.5396">categorizer_manager</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="120" x="325.5" y="3392.4077"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="106" x="332.5" y="3412.5396">filesystem_writer</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="133" x="492" y="3392.4077"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="119" x="499" y="3412.5396">segmenter_factory</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="97" x="635" y="3392.4077"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="83" x="642" y="3412.5396">entry_factory</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="81" x="784" y="3392.4077"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="67" x="791" y="3412.5396">os_access</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="65" x="920" y="3392.4077"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="51" x="927" y="3412.5396">scanner</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="114" x="1071.5" y="3392.4077"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="100" x="1078.5" y="3412.5396">inode_manager</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="91" x="1248" y="3392.4077"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="77" x="1255" y="3412.5396">file_scanner</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="112" x="1349" y="3392.4077"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="98" x="1356" y="3412.5396">block_manager</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="82" x="1471" y="3392.4077"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="68" x="1478" y="3412.5396">segmenter</text><rect fill="#90EE90" height="3338.3091" style="stroke:#181818;stroke-width:1.0;" width="10" x="37.5" y="46.0986"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="126.5" y="855.3115"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="126.5" y="912.687"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="235.5" y="1695.7817"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="235.5" y="2164.5303"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="2073.9063"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="2214.2568"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="2580.6807"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="2698.3047"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="2767.2534"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="2912.7065"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="3219.0059"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="3261.7324"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="380.5" y="3304.459"/><rect fill="#90EE90" height="70.0474" style="stroke:#181818;stroke-width:1.0;" width="10" x="553.5" y="2338.6074"/><rect fill="#90EE90" height="71.6753" style="stroke:#181818;stroke-width:1.0;" width="10" x="678.5" y="730.9609"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="678.5" y="1175.7129"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="678.5" y="1396.9097"/><rect fill="#90EE90" height="28.9487" style="stroke:#181818;stroke-width:1.0;" width="10" x="819.5" y="673.2856"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="819.5" y="759.6875"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="819.5" y="986.3623"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="819.5" y="1354.1831"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="819.5" y="2461.3301"/><rect fill="#90EE90" height="2879.9434" style="stroke:#181818;stroke-width:1.0;" width="10" x="947.5" y="495.4644"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="952.5" y="1105.9863"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="952.5" y="1860.1836"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="952.5" y="1929.1323"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="952.5" y="2977.6553"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="952.5" y="3089.3306"/><rect fill="#90EE90" height="25" style="stroke:#181818;stroke-width:1.0;" width="10" x="952.5" y="3158.2793"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="1123.5" y="1489.5337"/><rect fill="#90EE90" height="205.5215" style="stroke:#181818;stroke-width:1.0;" width="10" x="1123.5" y="1532.2603"/><rect fill="#90EE90" height="28.9487" style="stroke:#181818;stroke-width:1.0;" width="10" x="1123.5" y="2280.9321"/><rect fill="#90EE90" height="727.4707" style="stroke:#181818;stroke-width:1.0;" width="10" x="1288.5" y="1053.0376"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="1288.5" y="1809.2349"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="1400" y="2647.356"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="1400" y="3038.3818"/><rect fill="#90EE90" height="299.248" style="stroke:#181818;stroke-width:1.0;" width="10" x="1507" y="2528.0054"/><rect fill="#90EE90" height="14" style="stroke:#181818;stroke-width:1.0;" width="10" x="1507" y="2869.98"/><rect fill="#EEEEEE" height="3" style="stroke:#EEEEEE;stroke-width:1.0;" width="1613" x="0" y="66.573"/><line style="stroke:#000000;stroke-width:1.0;" x1="0" x2="1613" y1="66.573" y2="66.573"/><line style="stroke:#000000;stroke-width:1.0;" x1="0" x2="1613" y1="69.573" y2="69.573"/><rect fill="#EEEEEE" height="22.9487" style="stroke:#000000;stroke-width:2.0;" width="105" x="754" y="56.0986"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="87" x="760" y="72.2925">Startup Phase</text><polygon fill="#181818" points="95.5,105.9961,105.5,109.9961,95.5,113.9961,99.5,109.9961" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="47.5" x2="101.5" y1="109.9961" y2="109.9961"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="36" x="54.5" y="105.2412">create</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="48" x="107.5" y="89.0474"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="34" x="114.5" y="109.1792">script</text><polygon fill="#181818" points="58.5,132.146,48.5,136.146,58.5,140.146,54.5,136.146" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="52.5" x2="130.5" y1="136.146" y2="136.146"/><polygon fill="#181818" points="153.5,161.0947,163.5,165.0947,153.5,169.0947,157.5,165.0947" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="47.5" x2="159.5" y1="165.0947" y2="165.0947"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="36" x="54.5" y="160.3398">create</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="150" x="165.5" y="144.146"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="136" x="172.5" y="164.2778">categorizer_manager</text><polygon fill="#181818" points="58.5,187.2446,48.5,191.2446,58.5,195.2446,54.5,191.2446" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="52.5" x2="239.5" y1="191.2446" y2="191.2446"/><polygon fill="#181818" points="313.5,216.1934,323.5,220.1934,313.5,224.1934,317.5,220.1934" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="47.5" x2="319.5" y1="220.1934" y2="220.1934"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="36" x="54.5" y="215.4385">create</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="120" x="325.5" y="199.2446"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="106" x="332.5" y="219.3765">filesystem_writer</text><polygon fill="#181818" points="58.5,242.3433,48.5,246.3433,58.5,250.3433,54.5,246.3433" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="52.5" x2="384.5" y1="246.3433" y2="246.3433"/><polygon fill="#181818" points="480,271.292,490,275.292,480,279.292,484,275.292" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="47.5" x2="486" y1="275.292" y2="275.292"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="36" x="54.5" y="270.5371">create</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="133" x="492" y="254.3433"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="119" x="499" y="274.4751">segmenter_factory</text><polygon fill="#181818" points="58.5,297.4419,48.5,301.4419,58.5,305.4419,54.5,301.4419" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="52.5" x2="557.5" y1="301.4419" y2="301.4419"/><polygon fill="#181818" points="623,326.3906,633,330.3906,623,334.3906,627,330.3906" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="47.5" x2="629" y1="330.3906" y2="330.3906"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="36" x="54.5" y="325.6357">create</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="97" x="635" y="309.4419"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="83" x="642" y="329.5737">entry_factory</text><polygon fill="#181818" points="58.5,352.5405,48.5,356.5405,58.5,360.5405,54.5,356.5405" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="52.5" x2="682.5" y1="356.5405" y2="356.5405"/><polygon fill="#181818" points="772,381.4893,782,385.4893,772,389.4893,776,385.4893" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="47.5" x2="778" y1="385.4893" y2="385.4893"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="36" x="54.5" y="380.7344">create</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="81" x="784" y="364.5405"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="67" x="791" y="384.6724">os_access</text><polygon fill="#181818" points="58.5,407.6392,48.5,411.6392,58.5,415.6392,54.5,411.6392" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="52.5" x2="823.5" y1="411.6392" y2="411.6392"/><polygon fill="#181818" points="908,436.5879,918,440.5879,908,444.5879,912,440.5879" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="47.5" x2="914" y1="440.5879" y2="440.5879"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="36" x="54.5" y="435.833">create</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="65" x="920" y="419.6392"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="51" x="927" y="439.771">scanner</text><polygon fill="#181818" points="58.5,462.7378,48.5,466.7378,58.5,470.7378,54.5,466.7378" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="52.5" x2="951.5" y1="466.7378" y2="466.7378"/><polygon fill="#181818" points="935.5,491.4644,945.5,495.4644,935.5,499.4644,939.5,495.4644" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="47.5" x2="941.5" y1="495.4644" y2="495.4644"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="48" x="54.5" y="489.5605">scan()</text><polygon fill="#181818" points="1059.5,520.4131,1069.5,524.4131,1059.5,528.4131,1063.5,524.4131" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1065.5" y1="524.4131" y2="524.4131"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="36" x="964.5" y="519.6582">create</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="114" x="1071.5" y="503.4644"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="100" x="1078.5" y="523.5962">inode_manager</text><polygon fill="#181818" points="1236,561.5117,1246,565.5117,1236,569.5117,1240,565.5117" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1242" y1="565.5117" y2="565.5117"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="36" x="964.5" y="560.7568">create</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="91" x="1248" y="544.563"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="77" x="1255" y="564.6948">file_scanner</text><rect fill="#EEEEEE" height="3" style="stroke:#EEEEEE;stroke-width:1.0;" width="1613" x="0" y="606.136"/><line style="stroke:#000000;stroke-width:1.0;" x1="0" x2="1613" y1="606.136" y2="606.136"/><line style="stroke:#000000;stroke-width:1.0;" x1="0" x2="1613" y1="609.136" y2="609.136"/><rect fill="#EEEEEE" height="22.9487" style="stroke:#000000;stroke-width:2.0;" width="119" x="747" y="595.6616"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="101" x="753" y="611.8555">Scanning Phase</text><path d="M87.5,635.6104 L160.5,635.6104 L160.5,642.5591 L150.5,652.5591 L87.5,652.5591 L87.5,635.6104 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="569.1025" style="stroke:#000000;stroke-width:1.5;" width="1281.5" x="87.5" y="635.6104"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="28" x="102.5" y="648.8042">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="107" x="175.5" y="647.9282">[until all files found]</text><polygon fill="#181818" points="840.5,669.2856,830.5,673.2856,840.5,677.2856,836.5,673.2856" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="834.5" x2="946.5" y1="673.2856" y2="673.2856"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="72" x="846.5" y="667.3818">opendir()</text><polygon fill="#181818" points="935.5,698.2344,945.5,702.2344,935.5,706.2344,939.5,702.2344" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="824.5" x2="941.5" y1="702.2344" y2="702.2344"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="94" x="831.5" y="697.4795">return dir_reader</text><polygon fill="#181818" points="699.5,726.9609,689.5,730.9609,699.5,734.9609,695.5,730.9609" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="693.5" x2="946.5" y1="730.9609" y2="730.9609"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="64" x="705.5" y="725.0571">create()</text><polygon fill="#181818" points="807.5,755.6875,817.5,759.6875,807.5,763.6875,811.5,759.6875" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="688.5" x2="813.5" y1="759.6875" y2="759.6875"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="112" x="695.5" y="753.7837">symlink_info()</text><polygon fill="#181818" points="699.5,769.6875,689.5,773.6875,699.5,777.6875,695.5,773.6875" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="693.5" x2="823.5" y1="773.6875" y2="773.6875"/><polygon fill="#181818" points="935.5,798.6362,945.5,802.6362,935.5,806.6362,939.5,802.6362" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="683.5" x2="941.5" y1="802.6362" y2="802.6362"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="93" x="690.5" y="797.8813">return new entry</text><path d="M97.5,817.6362 L157.5,817.6362 L157.5,824.585 L147.5,834.585 L97.5,834.585 L97.5,817.6362 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="117.0508" style="stroke:#000000;stroke-width:1.5;" width="897.5" x="97.5" y="817.6362"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="15" x="112.5" y="830.8301">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="11" x="172.5" y="829.9541">[if</text><text fill="#000000" font-family="monospace" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="84" x="186.5" y="828.9819">has_filter()</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="4" x="270.5" y="829.9541">]</text><polygon fill="#181818" points="147.5,851.3115,137.5,855.3115,147.5,859.3115,143.5,855.3115" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="141.5" x2="946.5" y1="855.3115" y2="855.3115"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="64" x="153.5" y="849.4077">filter()</text><polygon fill="#181818" points="935.5,865.3115,945.5,869.3115,935.5,873.3115,939.5,869.3115" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="131.5" x2="941.5" y1="869.3115" y2="869.3115"/><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="97.5" x2="995" y1="878.3115" y2="878.3115"/><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="11" x="102.5" y="888.6294">[if</text><text fill="#000000" font-family="monospace" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="105" x="116.5" y="887.6572">has_transform()</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="4" x="221.5" y="888.6294">]</text><polygon fill="#181818" points="147.5,908.687,137.5,912.687,147.5,916.687,143.5,912.687" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="141.5" x2="946.5" y1="912.687" y2="912.687"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="88" x="153.5" y="906.7832">transform()</text><polygon fill="#181818" points="935.5,922.687,945.5,926.687,935.5,930.687,939.5,926.687" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="131.5" x2="941.5" y1="926.687" y2="926.687"/><path d="M625,948.687 L685,948.687 L685,955.6357 L675,965.6357 L625,965.6357 L625,948.687 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="249.0259" style="stroke:#000000;stroke-width:1.5;" width="734" x="625" y="948.687"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="15" x="640" y="961.8809">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="74" x="700" y="961.0049">[if regular file]</text><polygon fill="#181818" points="840.5,982.3623,830.5,986.3623,840.5,990.3623,836.5,986.3623" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="834.5" x2="946.5" y1="986.3623" y2="986.3623"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="96" x="846.5" y="980.4585">access(R_OK)</text><polygon fill="#181818" points="935.5,996.3623,945.5,1000.3623,935.5,1004.3623,939.5,1000.3623" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="824.5" x2="941.5" y1="1000.3623" y2="1000.3623"/><path d="M910,1015.3623 L970,1015.3623 L970,1022.311 L960,1032.311 L910,1032.311 L910,1015.3623 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="130.624" style="stroke:#000000;stroke-width:1.5;" width="439" x="910" y="1015.3623"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="15" x="925" y="1028.5562">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="92" x="985" y="1027.6802">[if file accessible]</text><polygon fill="#181818" points="1276.5,1049.0376,1286.5,1053.0376,1276.5,1057.0376,1280.5,1053.0376" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1282.5" y1="1053.0376" y2="1053.0376"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="48" x="964.5" y="1047.1338">scan()</text><polygon fill="#181818" points="968.5,1063.0376,958.5,1067.0376,968.5,1071.0376,964.5,1067.0376" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="962.5" x2="1287.5" y1="1067.0376" y2="1067.0376"/><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="910" x2="1349" y1="1076.0376" y2="1076.0376"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1004.5" y1="1092.9863" y2="1092.9863"/><line style="stroke:#181818;stroke-width:1.0;" x1="1004.5" x2="1004.5" y1="1092.9863" y2="1105.9863"/><line style="stroke:#181818;stroke-width:1.0;" x1="963.5" x2="1004.5" y1="1105.9863" y2="1105.9863"/><polygon fill="#181818" points="973.5,1101.9863,963.5,1105.9863,973.5,1109.9863,969.5,1105.9863" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="135" x="969.5" y="1088.2314">Replace with empty file</text><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="962.5" x2="1004.5" y1="1129.9863" y2="1129.9863"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="1004.5" x2="1004.5" y1="1129.9863" y2="1142.9863"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="957.5" x2="1004.5" y1="1142.9863" y2="1142.9863"/><polygon fill="#181818" points="967.5,1138.9863,957.5,1142.9863,967.5,1146.9863,963.5,1142.9863" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="625" x2="1359" y1="1153.9863" y2="1153.9863"/><polygon fill="#181818" points="699.5,1171.7129,689.5,1175.7129,699.5,1179.7129,695.5,1175.7129" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="693.5" x2="946.5" y1="1175.7129" y2="1175.7129"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="48" x="705.5" y="1169.8091">scan()</text><polygon fill="#181818" points="935.5,1185.7129,945.5,1189.7129,935.5,1193.7129,939.5,1189.7129" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="683.5" x2="941.5" y1="1189.7129" y2="1189.7129"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="999.5" y1="1232.6616" y2="1232.6616"/><line style="stroke:#181818;stroke-width:1.0;" x1="999.5" x2="999.5" y1="1232.6616" y2="1245.6616"/><line style="stroke:#181818;stroke-width:1.0;" x1="958.5" x2="999.5" y1="1245.6616" y2="1245.6616"/><polygon fill="#181818" points="968.5,1241.6616,958.5,1245.6616,968.5,1249.6616,964.5,1245.6616" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="152" x="964.5" y="1227.9067">Remove empty directories</text><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="999.5" y1="1293.5334" y2="1293.5334"/><line style="stroke:#181818;stroke-width:1.0;" x1="999.5" x2="999.5" y1="1293.5334" y2="1306.5334"/><line style="stroke:#181818;stroke-width:1.0;" x1="958.5" x2="999.5" y1="1306.5334" y2="1306.5334"/><polygon fill="#181818" points="968.5,1302.5334,958.5,1306.5334,968.5,1310.5334,964.5,1306.5334" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="124" x="964.5" y="1288.7786">Assign dir/link inodes</text><path d="M765,1258.6616 L765,1327.6616 L942,1327.6616 L942,1268.6616 L932,1258.6616 L765,1258.6616 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M932,1258.6616 L932,1268.6616 L942,1268.6616 L932,1258.6616 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="143" x="771" y="1275.8555">Directories and symbolic</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="144" x="771" y="1290.8042">links have been scanned</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="141" x="771" y="1305.7529">and are assigned inodes</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="156" x="771" y="1320.7017">while file are still scanning.</text><polygon fill="#181818" points="840.5,1350.1831,830.5,1354.1831,840.5,1358.1831,836.5,1354.1831" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="834.5" x2="1287.5" y1="1354.1831" y2="1354.1831"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="80" x="846.5" y="1348.2793">map_file()</text><polygon fill="#181818" points="1276.5,1364.1831,1286.5,1368.1831,1276.5,1372.1831,1280.5,1368.1831" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="824.5" x2="1282.5" y1="1368.1831" y2="1368.1831"/><polygon fill="#181818" points="699.5,1392.9097,689.5,1396.9097,699.5,1400.9097,695.5,1396.9097" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="693.5" x2="1287.5" y1="1396.9097" y2="1396.9097"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="48" x="705.5" y="1391.0059">scan()</text><polygon fill="#181818" points="1276.5,1406.9097,1286.5,1410.9097,1276.5,1414.9097,1280.5,1410.9097" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="683.5" x2="1282.5" y1="1410.9097" y2="1410.9097"/><line style="stroke:#181818;stroke-width:1.0;" x1="1298.5" x2="1340.5" y1="1443.8328" y2="1443.8328"/><line style="stroke:#181818;stroke-width:1.0;" x1="1340.5" x2="1340.5" y1="1443.8328" y2="1456.8328"/><line style="stroke:#181818;stroke-width:1.0;" x1="1299.5" x2="1340.5" y1="1456.8328" y2="1456.8328"/><polygon fill="#181818" points="1309.5,1452.8328,1299.5,1456.8328,1309.5,1460.8328,1305.5,1456.8328" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="68" x="1305.5" y="1439.0779">Deduplicate</text><path d="M1385,1423.9097 L1385,1462.9097 L1571,1462.9097 L1571,1433.9097 L1561,1423.9097 L1385,1423.9097 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M1561,1423.9097 L1561,1433.9097 L1571,1433.9097 L1561,1423.9097 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="165" x="1391" y="1441.1035">Both hard links and "regular"</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="163" x="1391" y="1456.0522">duplicates are handled here.</text><polygon fill="#181818" points="1144.5,1485.5337,1134.5,1489.5337,1144.5,1493.5337,1140.5,1489.5337" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="1138.5" x2="1287.5" y1="1489.5337" y2="1489.5337"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="112" x="1150.5" y="1483.6299">create_inode()</text><polygon fill="#181818" points="1276.5,1499.5337,1286.5,1503.5337,1276.5,1507.5337,1280.5,1503.5337" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="1128.5" x2="1282.5" y1="1503.5337" y2="1503.5337"/><polygon fill="#181818" points="1144.5,1528.2603,1134.5,1532.2603,1144.5,1536.2603,1140.5,1532.2603" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="1138.5" x2="1287.5" y1="1532.2603" y2="1532.2603"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="136" x="1150.5" y="1526.3564">scan_background()</text><polygon fill="#181818" points="1276.5,1542.2603,1286.5,1546.2603,1276.5,1550.2603,1280.5,1546.2603" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="1133.5" x2="1282.5" y1="1546.2603" y2="1546.2603"/><path d="M145.5,1561.2603 L210.5,1561.2603 L210.5,1568.209 L200.5,1578.209 L145.5,1578.209 L145.5,1561.2603 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="163.5215" style="stroke:#000000;stroke-width:1.5;" width="1122" x="145.5" y="1561.2603"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="20" x="160.5" y="1574.4541">par</text><path d="M1061.5,1585.209 L1126.5,1585.209 L1126.5,1592.1577 L1116.5,1602.1577 L1061.5,1602.1577 L1061.5,1585.209 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="58.8975" style="stroke:#000000;stroke-width:1.5;" width="196" x="1061.5" y="1585.209"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="20" x="1076.5" y="1598.4028">opt</text><line style="stroke:#181818;stroke-width:1.0;" x1="1133.5" x2="1175.5" y1="1623.1064" y2="1623.1064"/><line style="stroke:#181818;stroke-width:1.0;" x1="1175.5" x2="1175.5" y1="1623.1064" y2="1636.1064"/><line style="stroke:#181818;stroke-width:1.0;" x1="1134.5" x2="1175.5" y1="1636.1064" y2="1636.1064"/><polygon fill="#181818" points="1144.5,1632.1064,1134.5,1636.1064,1144.5,1640.1064,1140.5,1636.1064" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="105" x="1140.5" y="1618.3516">Similarity Hashing</text><path d="M155.5,1658.1064 L220.5,1658.1064 L220.5,1665.0552 L210.5,1675.0552 L155.5,1675.0552 L155.5,1658.1064 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="59.6753" style="stroke:#000000;stroke-width:1.5;" width="1040" x="155.5" y="1658.1064"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="20" x="170.5" y="1671.3003">opt</text><polygon fill="#181818" points="256.5,1691.7817,246.5,1695.7817,256.5,1699.7817,252.5,1695.7817" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="250.5" x2="1122.5" y1="1695.7817" y2="1695.7817"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="40" x="262.5" y="1689.8779">job()</text><polygon fill="#181818" points="1111.5,1705.7817,1121.5,1709.7817,1111.5,1713.7817,1115.5,1709.7817" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="240.5" x2="1117.5" y1="1709.7817" y2="1709.7817"/><polygon fill="#181818" points="1276.5,1733.7817,1286.5,1737.7817,1276.5,1741.7817,1280.5,1737.7817" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="1128.5" x2="1282.5" y1="1737.7817" y2="1737.7817"/><polygon fill="#181818" points="1276.5,1762.5083,1286.5,1766.5083,1276.5,1770.5083,1280.5,1766.5083" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1282.5" y1="1766.5083" y2="1766.5083"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="48" x="964.5" y="1760.6045">wait()</text><polygon fill="#181818" points="968.5,1776.5083,958.5,1780.5083,968.5,1784.5083,964.5,1780.5083" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="962.5" x2="1292.5" y1="1780.5083" y2="1780.5083"/><polygon fill="#181818" points="1276.5,1805.2349,1286.5,1809.2349,1276.5,1813.2349,1280.5,1809.2349" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1282.5" y1="1809.2349" y2="1809.2349"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="80" x="964.5" y="1803.3311">finalize()</text><polygon fill="#181818" points="968.5,1819.2349,958.5,1823.2349,968.5,1827.2349,964.5,1823.2349" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="962.5" x2="1292.5" y1="1823.2349" y2="1823.2349"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1004.5" y1="1847.1836" y2="1847.1836"/><line style="stroke:#181818;stroke-width:1.0;" x1="1004.5" x2="1004.5" y1="1847.1836" y2="1860.1836"/><line style="stroke:#181818;stroke-width:1.0;" x1="963.5" x2="1004.5" y1="1860.1836" y2="1860.1836"/><polygon fill="#181818" points="973.5,1856.1836,963.5,1860.1836,973.5,1864.1836,969.5,1860.1836" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="103" x="969.5" y="1842.4287">Build inode tables</text><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="962.5" x2="1004.5" y1="1884.1836" y2="1884.1836"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="1004.5" x2="1004.5" y1="1884.1836" y2="1897.1836"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="957.5" x2="1004.5" y1="1897.1836" y2="1897.1836"/><polygon fill="#181818" points="967.5,1893.1836,957.5,1897.1836,967.5,1901.1836,963.5,1897.1836" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1004.5" y1="1916.1323" y2="1916.1323"/><line style="stroke:#181818;stroke-width:1.0;" x1="1004.5" x2="1004.5" y1="1916.1323" y2="1929.1323"/><line style="stroke:#181818;stroke-width:1.0;" x1="963.5" x2="1004.5" y1="1929.1323" y2="1929.1323"/><polygon fill="#181818" points="973.5,1925.1323,963.5,1929.1323,973.5,1933.1323,969.5,1929.1323" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="117" x="969.5" y="1911.3774">Build symlink tables</text><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="962.5" x2="1004.5" y1="1953.1323" y2="1953.1323"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="1004.5" x2="1004.5" y1="1953.1323" y2="1966.1323"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="957.5" x2="1004.5" y1="1966.1323" y2="1966.1323"/><polygon fill="#181818" points="967.5,1962.1323,957.5,1966.1323,967.5,1970.1323,963.5,1966.1323" style="stroke:#181818;stroke-width:1.0;"/><rect fill="#EEEEEE" height="3" style="stroke:#EEEEEE;stroke-width:1.0;" width="1613" x="0" y="1989.6067"/><line style="stroke:#000000;stroke-width:1.0;" x1="0" x2="1613" y1="1989.6067" y2="1989.6067"/><line style="stroke:#000000;stroke-width:1.0;" x1="0" x2="1613" y1="1992.6067" y2="1992.6067"/><rect fill="#EEEEEE" height="22.9487" style="stroke:#000000;stroke-width:2.0;" width="220" x="696.5" y="1979.1323"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="202" x="702.5" y="1995.3262">Segmentation/Blockifying Phase</text><polygon fill="#181818" points="1337,2029.0298,1347,2033.0298,1337,2037.0298,1341,2033.0298" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1343" y1="2033.0298" y2="2033.0298"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="36" x="964.5" y="2028.2749">create</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="112" x="1349" y="2012.0811"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="98" x="1356" y="2032.2129">block_manager</text><polygon fill="#181818" points="401.5,2069.9063,391.5,2073.9063,401.5,2077.9063,397.5,2073.9063" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="395.5" x2="946.5" y1="2073.9063" y2="2073.9063"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="88" x="407.5" y="2068.0024">configure()</text><polygon fill="#181818" points="935.5,2083.9063,945.5,2087.9063,935.5,2091.9063,939.5,2087.9063" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="385.5" x2="941.5" y1="2087.9063" y2="2087.9063"/><path d="M145.5,2102.9063 L218.5,2102.9063 L218.5,2109.855 L208.5,2119.855 L145.5,2119.855 L145.5,2102.9063 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="838.8003" style="stroke:#000000;stroke-width:1.5;" width="1457.5" x="145.5" y="2102.9063"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="28" x="160.5" y="2116.1001">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="104" x="233.5" y="2115.2241">[over all categories]</text><path d="M155.5,2126.855 L220.5,2126.855 L220.5,2133.8037 L210.5,2143.8037 L155.5,2143.8037 L155.5,2126.855 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="59.6753" style="stroke:#000000;stroke-width:1.5;" width="839.5" x="155.5" y="2126.855"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="20" x="170.5" y="2140.0488">opt</text><polygon fill="#181818" points="256.5,2160.5303,246.5,2164.5303,256.5,2168.5303,252.5,2164.5303" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="250.5" x2="946.5" y1="2164.5303" y2="2164.5303"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="152" x="262.5" y="2158.6265">category_metadata()</text><polygon fill="#181818" points="935.5,2174.5303,945.5,2178.5303,935.5,2182.5303,939.5,2178.5303" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="240.5" x2="941.5" y1="2178.5303" y2="2178.5303"/><polygon fill="#181818" points="401.5,2210.2568,391.5,2214.2568,401.5,2218.2568,397.5,2214.2568" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="395.5" x2="946.5" y1="2214.2568" y2="2214.2568"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="232" x="407.5" y="2208.353">get_compression_constraints()</text><polygon fill="#181818" points="935.5,2224.2568,945.5,2228.2568,935.5,2232.2568,939.5,2228.2568" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="385.5" x2="941.5" y1="2228.2568" y2="2228.2568"/><path d="M275.5,2243.2568 L340.5,2243.2568 L340.5,2250.2056 L330.5,2260.2056 L275.5,2260.2056 L275.5,2243.2568 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="691.4497" style="stroke:#000000;stroke-width:1.5;" width="1317.5" x="275.5" y="2243.2568"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="20" x="290.5" y="2256.4507">par</text><polygon fill="#181818" points="1111.5,2276.9321,1121.5,2280.9321,1111.5,2284.9321,1115.5,2280.9321" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1117.5" y1="2280.9321" y2="2280.9321"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="112" x="964.5" y="2275.0283">ordered_span()</text><polygon fill="#181818" points="968.5,2305.8809,958.5,2309.8809,968.5,2313.8809,964.5,2309.8809" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="962.5" x2="1127.5" y1="2309.8809" y2="2309.8809"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="121" x="974.5" y="2305.126">list of ordered inodes</text><polygon fill="#181818" points="574.5,2334.6074,564.5,2338.6074,574.5,2342.6074,570.5,2338.6074" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="568.5" x2="946.5" y1="2338.6074" y2="2338.6074"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="64" x="580.5" y="2332.7036">create()</text><polygon fill="#181818" points="1459,2363.5562,1469,2367.5562,1459,2371.5562,1463,2367.5562" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="563.5" x2="1465" y1="2367.5562" y2="2367.5562"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="36" x="570.5" y="2362.8013">create</text><rect fill="#E2E2F0" height="30.0986" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="82" x="1471" y="2346.6074"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="68" x="1478" y="2366.7393">segmenter</text><polygon fill="#181818" points="935.5,2404.6548,945.5,2408.6548,935.5,2412.6548,939.5,2408.6548" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="558.5" x2="941.5" y1="2408.6548" y2="2408.6548"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="159" x="565.5" y="2403.8999">segmenter for this category</text><path d="M285.5,2423.6548 L358.5,2423.6548 L358.5,2430.6035 L348.5,2440.6035 L285.5,2440.6035 L285.5,2423.6548 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="418.5986" style="stroke:#000000;stroke-width:1.5;" width="1297.5" x="285.5" y="2423.6548"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="28" x="300.5" y="2436.8486">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="85" x="373.5" y="2435.9727">[over all inodes]</text><polygon fill="#181818" points="840.5,2457.3301,830.5,2461.3301,840.5,2465.3301,836.5,2461.3301" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="834.5" x2="946.5" y1="2461.3301" y2="2461.3301"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="80" x="846.5" y="2455.4263">map_file()</text><polygon fill="#181818" points="935.5,2471.3301,945.5,2475.3301,935.5,2479.3301,939.5,2475.3301" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="824.5" x2="941.5" y1="2475.3301" y2="2475.3301"/><path d="M295.5,2490.3301 L368.5,2490.3301 L368.5,2497.2788 L358.5,2507.2788 L295.5,2507.2788 L295.5,2490.3301 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="344.9233" style="stroke:#000000;stroke-width:1.5;" width="1277.5" x="295.5" y="2490.3301"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="28" x="310.5" y="2503.5239">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="136" x="383.5" y="2502.6479">[over all inode fragments]</text><polygon fill="#181818" points="1495,2524.0054,1505,2528.0054,1495,2532.0054,1499,2528.0054" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1501" y1="2528.0054" y2="2528.0054"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="120" x="964.5" y="2522.1016">add_chunkable()</text><path d="M305.5,2543.0054 L378.5,2543.0054 L378.5,2549.9541 L368.5,2559.9541 L305.5,2559.9541 L305.5,2543.0054 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="271.248" style="stroke:#000000;stroke-width:1.5;" width="1257.5" x="305.5" y="2543.0054"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="28" x="320.5" y="2556.1992">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="157" x="393.5" y="2555.3232">[until fragment is segmented]</text><polygon fill="#181818" points="401.5,2576.6807,391.5,2580.6807,401.5,2584.6807,397.5,2580.6807" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="395.5" x2="1506" y1="2580.6807" y2="2580.6807"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="104" x="407.5" y="2574.7769">write_block()</text><polygon fill="#181818" points="1495,2590.6807,1505,2594.6807,1495,2598.6807,1499,2594.6807" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="385.5" x2="1501" y1="2594.6807" y2="2594.6807"/><path d="M315.5,2609.6807 L380.5,2609.6807 L380.5,2616.6294 L370.5,2626.6294 L315.5,2626.6294 L315.5,2609.6807 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="197.5728" style="stroke:#000000;stroke-width:1.5;" width="1155.5" x="315.5" y="2609.6807"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="20" x="330.5" y="2622.8745">par</text><polygon fill="#181818" points="1388,2643.356,1398,2647.356,1388,2651.356,1392,2647.356" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="385.5" x2="1394" y1="2647.356" y2="2647.356"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="152" x="392.5" y="2641.4521">set_written_block()</text><polygon fill="#181818" points="396.5,2657.356,386.5,2661.356,396.5,2665.356,392.5,2661.356" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="390.5" x2="1404" y1="2661.356" y2="2661.356"/><line style="stroke:#181818;stroke-width:1.0;" x1="385.5" x2="432.5" y1="2685.3047" y2="2685.3047"/><line style="stroke:#181818;stroke-width:1.0;" x1="432.5" x2="432.5" y1="2685.3047" y2="2698.3047"/><line style="stroke:#181818;stroke-width:1.0;" x1="391.5" x2="432.5" y1="2698.3047" y2="2698.3047"/><polygon fill="#181818" points="401.5,2694.3047,391.5,2698.3047,401.5,2702.3047,397.5,2698.3047" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="94" x="397.5" y="2680.5498">Compress block</text><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="390.5" x2="432.5" y1="2722.3047" y2="2722.3047"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="432.5" x2="432.5" y1="2722.3047" y2="2735.3047"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="385.5" x2="432.5" y1="2735.3047" y2="2735.3047"/><polygon fill="#181818" points="395.5,2731.3047,385.5,2735.3047,395.5,2739.3047,391.5,2735.3047" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="385.5" x2="432.5" y1="2754.2534" y2="2754.2534"/><line style="stroke:#181818;stroke-width:1.0;" x1="432.5" x2="432.5" y1="2754.2534" y2="2767.2534"/><line style="stroke:#181818;stroke-width:1.0;" x1="391.5" x2="432.5" y1="2767.2534" y2="2767.2534"/><polygon fill="#181818" points="401.5,2763.2534,391.5,2767.2534,401.5,2771.2534,397.5,2767.2534" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="159" x="397.5" y="2749.4985">Write block to output image</text><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="390.5" x2="432.5" y1="2791.2534" y2="2791.2534"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="432.5" x2="432.5" y1="2791.2534" y2="2804.2534"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="385.5" x2="432.5" y1="2804.2534" y2="2804.2534"/><polygon fill="#181818" points="395.5,2800.2534,385.5,2804.2534,395.5,2808.2534,391.5,2804.2534" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="968.5,2823.2534,958.5,2827.2534,968.5,2831.2534,964.5,2827.2534" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="962.5" x2="1511" y1="2827.2534" y2="2827.2534"/><polygon fill="#181818" points="1495,2865.98,1505,2869.98,1495,2873.98,1499,2869.98" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1501" y1="2869.98" y2="2869.98"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="64" x="964.5" y="2864.0762">finish()</text><polygon fill="#181818" points="968.5,2879.98,958.5,2883.98,968.5,2887.98,964.5,2883.98" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="962.5" x2="1511" y1="2883.98" y2="2883.98"/><polygon fill="#181818" points="401.5,2908.7065,391.5,2912.7065,401.5,2916.7065,397.5,2912.7065" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="395.5" x2="946.5" y1="2912.7065" y2="2912.7065"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="136" x="407.5" y="2906.8027">finish_category()</text><polygon fill="#181818" points="935.5,2922.7065,945.5,2926.7065,935.5,2930.7065,939.5,2926.7065" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="385.5" x2="941.5" y1="2926.7065" y2="2926.7065"/><line style="stroke:#A80036;stroke-width:2.0;" x1="1503" x2="1521" y1="2917.7065" y2="2935.7065"/><line style="stroke:#A80036;stroke-width:2.0;" x1="1503" x2="1521" y1="2935.7065" y2="2917.7065"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1004.5" y1="2964.6553" y2="2964.6553"/><line style="stroke:#181818;stroke-width:1.0;" x1="1004.5" x2="1004.5" y1="2964.6553" y2="2977.6553"/><line style="stroke:#181818;stroke-width:1.0;" x1="963.5" x2="1004.5" y1="2977.6553" y2="2977.6553"/><polygon fill="#181818" points="973.5,2973.6553,963.5,2977.6553,973.5,2981.6553,969.5,2977.6553" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="100" x="969.5" y="2959.9004">Build chunk table</text><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="962.5" x2="1004.5" y1="3001.6553" y2="3001.6553"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="1004.5" x2="1004.5" y1="3001.6553" y2="3014.6553"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="957.5" x2="1004.5" y1="3014.6553" y2="3014.6553"/><polygon fill="#181818" points="967.5,3010.6553,957.5,3014.6553,967.5,3018.6553,963.5,3014.6553" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="1388,3034.3818,1398,3038.3818,1388,3042.3818,1392,3038.3818" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1394" y1="3038.3818" y2="3038.3818"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="160" x="964.5" y="3032.478">map_logical_blocks()</text><polygon fill="#181818" points="968.5,3048.3818,958.5,3052.3818,968.5,3056.3818,964.5,3052.3818" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="962.5" x2="1404" y1="3052.3818" y2="3052.3818"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1004.5" y1="3076.3306" y2="3076.3306"/><line style="stroke:#181818;stroke-width:1.0;" x1="1004.5" x2="1004.5" y1="3076.3306" y2="3089.3306"/><line style="stroke:#181818;stroke-width:1.0;" x1="963.5" x2="1004.5" y1="3089.3306" y2="3089.3306"/><polygon fill="#181818" points="973.5,3085.3306,963.5,3089.3306,973.5,3093.3306,969.5,3089.3306" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="115" x="969.5" y="3071.5757">Build directory table</text><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="962.5" x2="1004.5" y1="3113.3306" y2="3113.3306"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="1004.5" x2="1004.5" y1="3113.3306" y2="3126.3306"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="957.5" x2="1004.5" y1="3126.3306" y2="3126.3306"/><polygon fill="#181818" points="967.5,3122.3306,957.5,3126.3306,967.5,3130.3306,963.5,3126.3306" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="957.5" x2="1004.5" y1="3145.2793" y2="3145.2793"/><line style="stroke:#181818;stroke-width:1.0;" x1="1004.5" x2="1004.5" y1="3145.2793" y2="3158.2793"/><line style="stroke:#181818;stroke-width:1.0;" x1="963.5" x2="1004.5" y1="3158.2793" y2="3158.2793"/><polygon fill="#181818" points="973.5,3154.2793,963.5,3158.2793,973.5,3162.2793,969.5,3158.2793" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="132" x="969.5" y="3140.5244">Build shared files table</text><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="962.5" x2="1004.5" y1="3182.2793" y2="3182.2793"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="1004.5" x2="1004.5" y1="3182.2793" y2="3195.2793"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="957.5" x2="1004.5" y1="3195.2793" y2="3195.2793"/><polygon fill="#181818" points="967.5,3191.2793,957.5,3195.2793,967.5,3199.2793,963.5,3195.2793" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="401.5,3215.0059,391.5,3219.0059,401.5,3223.0059,397.5,3219.0059" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="395.5" x2="946.5" y1="3219.0059" y2="3219.0059"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="208" x="407.5" y="3213.1021">write_metadata_v2_schema()</text><polygon fill="#181818" points="935.5,3229.0059,945.5,3233.0059,935.5,3237.0059,939.5,3233.0059" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="385.5" x2="941.5" y1="3233.0059" y2="3233.0059"/><polygon fill="#181818" points="401.5,3257.7324,391.5,3261.7324,401.5,3265.7324,397.5,3261.7324" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="395.5" x2="946.5" y1="3261.7324" y2="3261.7324"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="152" x="407.5" y="3255.8286">write_metadata_v2()</text><polygon fill="#181818" points="935.5,3271.7324,945.5,3275.7324,935.5,3279.7324,939.5,3275.7324" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="385.5" x2="941.5" y1="3275.7324" y2="3275.7324"/><polygon fill="#181818" points="401.5,3300.459,391.5,3304.459,401.5,3308.459,397.5,3304.459" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="395.5" x2="946.5" y1="3304.459" y2="3304.459"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacing" textLength="56" x="407.5" y="3298.5552">flush()</text><polygon fill="#181818" points="935.5,3314.459,945.5,3318.459,935.5,3322.459,939.5,3318.459" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="385.5" x2="941.5" y1="3318.459" y2="3318.459"/><rect fill="#EEEEEE" height="3" style="stroke:#EEEEEE;stroke-width:1.0;" width="1613" x="0" y="3346.9333"/><line style="stroke:#000000;stroke-width:1.0;" x1="0" x2="1613" y1="3346.9333" y2="3346.9333"/><line style="stroke:#000000;stroke-width:1.0;" x1="0" x2="1613" y1="3349.9333" y2="3349.9333"/><rect fill="#EEEEEE" height="22.9487" style="stroke:#000000;stroke-width:2.0;" width="123" x="745" y="3336.459"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="105" x="751" y="3352.6528">Shutdown Phase</text><line style="stroke:#A80036;stroke-width:2.0;" x1="1284.5" x2="1302.5" y1="3309.459" y2="3327.459"/><line style="stroke:#A80036;stroke-width:2.0;" x1="1284.5" x2="1302.5" y1="3327.459" y2="3309.459"/><line style="stroke:#A80036;stroke-width:2.0;" x1="1119.5" x2="1137.5" y1="3309.459" y2="3327.459"/><line style="stroke:#A80036;stroke-width:2.0;" x1="1119.5" x2="1137.5" y1="3327.459" y2="3309.459"/><line style="stroke:#A80036;stroke-width:2.0;" x1="1396" x2="1414" y1="3309.459" y2="3327.459"/><line style="stroke:#A80036;stroke-width:2.0;" x1="1396" x2="1414" y1="3327.459" y2="3309.459"/><polygon fill="#181818" points="58.5,3371.4077,48.5,3375.4077,58.5,3379.4077,54.5,3375.4077" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="52.5" x2="951.5" y1="3375.4077" y2="3375.4077"/><line style="stroke:#A80036;stroke-width:2.0;" x1="943.5" x2="961.5" y1="3366.4077" y2="3384.4077"/><line style="stroke:#A80036;stroke-width:2.0;" x1="943.5" x2="961.5" y1="3384.4077" y2="3366.4077"/><line style="stroke:#A80036;stroke-width:2.0;" x1="815.5" x2="833.5" y1="3366.4077" y2="3384.4077"/><line style="stroke:#A80036;stroke-width:2.0;" x1="815.5" x2="833.5" y1="3384.4077" y2="3366.4077"/><line style="stroke:#A80036;stroke-width:2.0;" x1="674.5" x2="692.5" y1="3366.4077" y2="3384.4077"/><line style="stroke:#A80036;stroke-width:2.0;" x1="674.5" x2="692.5" y1="3384.4077" y2="3366.4077"/><line style="stroke:#A80036;stroke-width:2.0;" x1="549.5" x2="567.5" y1="3366.4077" y2="3384.4077"/><line style="stroke:#A80036;stroke-width:2.0;" x1="549.5" x2="567.5" y1="3384.4077" y2="3366.4077"/><line style="stroke:#A80036;stroke-width:2.0;" x1="376.5" x2="394.5" y1="3366.4077" y2="3384.4077"/><line style="stroke:#A80036;stroke-width:2.0;" x1="376.5" x2="394.5" y1="3384.4077" y2="3366.4077"/><line style="stroke:#A80036;stroke-width:2.0;" x1="231.5" x2="249.5" y1="3366.4077" y2="3384.4077"/><line style="stroke:#A80036;stroke-width:2.0;" x1="231.5" x2="249.5" y1="3384.4077" y2="3366.4077"/><line style="stroke:#A80036;stroke-width:2.0;" x1="122.5" x2="140.5" y1="3366.4077" y2="3384.4077"/><line style="stroke:#A80036;stroke-width:2.0;" x1="122.5" x2="140.5" y1="3384.4077" y2="3366.4077"/><!--MD5=[f50ded75004075901efbb277051e735d]
|
|
@startuml
|
|
|
|
activate mkdwarfs #lightgreen
|
|
|
|
== Startup Phase ==
|
|
|
|
mkdwarfs -> script ** : create
|
|
return
|
|
mkdwarfs -> categorizer_manager ** : create
|
|
return
|
|
mkdwarfs -> filesystem_writer ** : create
|
|
return
|
|
mkdwarfs -> segmenter_factory ** : create
|
|
return
|
|
mkdwarfs -> entry_factory ** : create
|
|
return
|
|
mkdwarfs -> os_access ** : create
|
|
return
|
|
mkdwarfs -> scanner ** : create
|
|
return
|
|
mkdwarfs -> scanner ++ #lightgreen : ""scan()""
|
|
|
|
scanner -> inode_manager ** : create
|
|
scanner -> file_scanner ** : create
|
|
|
|
== Scanning Phase ==
|
|
|
|
loop until all files found
|
|
|
|
scanner -> os_access ++ #lightgreen : ""opendir()""
|
|
return return dir_reader
|
|
|
|
scanner -> entry_factory ++ #lightgreen : ""create()""
|
|
entry_factory -> os_access ++ #lightgreen : ""symlink_info()""
|
|
return
|
|
return return new entry
|
|
|
|
alt if ""has_filter()""
|
|
scanner -> script ++ #lightgreen : ""filter()""
|
|
return
|
|
else if ""has_transform()""
|
|
scanner -> script ++ #lightgreen : ""transform()""
|
|
return
|
|
end
|
|
|
|
alt if regular file
|
|
scanner -> os_access ++ #lightgreen : ""access(R_OK)""
|
|
return
|
|
alt if file accessible
|
|
scanner -> file_scanner ++ #lightgreen : ""scan()""
|
|
file_scanner - -> scanner
|
|
else
|
|
scanner -> scanner ++ #lightgreen : Replace with empty file
|
|
return
|
|
end
|
|
else
|
|
scanner -> entry_factory ++ #lightgreen : ""scan()""
|
|
return
|
|
end
|
|
|
|
end
|
|
|
|
scanner -> scanner : Remove empty directories
|
|
scanner -> scanner : Assign dir/link inodes
|
|
note left
|
|
Directories and symbolic
|
|
links have been scanned
|
|
and are assigned inodes
|
|
while file are still scanning.
|
|
end note
|
|
|
|
file_scanner -> os_access ++ #lightgreen : ""map_file()""
|
|
return
|
|
|
|
file_scanner -> entry_factory ++ #lightgreen : ""scan()""
|
|
return
|
|
|
|
file_scanner -> file_scanner : Deduplicate
|
|
note right
|
|
Both hard links and "regular"
|
|
duplicates are handled here.
|
|
end note
|
|
|
|
file_scanner -> inode_manager ++ #lightgreen : ""create_inode()""
|
|
return
|
|
|
|
file_scanner -> inode_manager ++ #lightgreen : ""scan_background()""
|
|
inode_manager - -> file_scanner
|
|
|
|
par
|
|
opt
|
|
inode_manager -> inode_manager : Similarity Hashing
|
|
end
|
|
|
|
opt
|
|
inode_manager -> categorizer_manager ++ #lightgreen : ""job()""
|
|
return
|
|
end
|
|
end
|
|
|
|
return
|
|
|
|
scanner -> file_scanner : ""wait()""
|
|
return
|
|
|
|
scanner -> file_scanner ++ #lightgreen : ""finalize()""
|
|
return
|
|
|
|
scanner -> scanner ++ #lightgreen : Build inode tables
|
|
return
|
|
|
|
scanner -> scanner ++ #lightgreen : Build symlink tables
|
|
return
|
|
|
|
== Segmentation/Blockifying Phase ==
|
|
|
|
scanner -> block_manager ** : create
|
|
|
|
scanner -> filesystem_writer ++ #lightgreen : ""configure()""
|
|
return
|
|
|
|
loop over all categories
|
|
|
|
opt
|
|
scanner -> categorizer_manager ++ #lightgreen : ""category_metadata()""
|
|
return
|
|
end
|
|
|
|
scanner -> filesystem_writer ++ #lightgreen : ""get_compression_constraints()""
|
|
return
|
|
|
|
par
|
|
|
|
scanner -> inode_manager ++ #lightgreen : ""ordered_span()""
|
|
return list of ordered inodes
|
|
|
|
scanner -> segmenter_factory ++ #lightgreen : ""create()""
|
|
|
|
segmenter_factory -> segmenter ** : create
|
|
|
|
return segmenter for this category
|
|
|
|
loop over all inodes
|
|
|
|
scanner -> os_access ++ #lightgreen : ""map_file()""
|
|
return
|
|
|
|
loop over all inode fragments
|
|
|
|
scanner -> segmenter ++ #lightgreen : ""add_chunkable()""
|
|
|
|
loop until fragment is segmented
|
|
|
|
segmenter -> filesystem_writer ++ #lightgreen : ""write_block()""
|
|
return
|
|
par
|
|
filesystem_writer -> block_manager ++ #lightgreen : ""set_written_block()""
|
|
return
|
|
filesystem_writer -> filesystem_writer ++ #lightgreen : Compress block
|
|
return
|
|
filesystem_writer -> filesystem_writer ++ #lightgreen : Write block to output image
|
|
return
|
|
end
|
|
|
|
end
|
|
|
|
return
|
|
|
|
end
|
|
|
|
end
|
|
|
|
scanner -> segmenter ++ #lightgreen : ""finish()""
|
|
return
|
|
|
|
scanner -> filesystem_writer ++ #lightgreen : ""finish_category()""
|
|
return
|
|
|
|
destroy segmenter
|
|
|
|
end
|
|
|
|
end
|
|
|
|
scanner -> scanner ++ #lightgreen : Build chunk table
|
|
return
|
|
|
|
scanner -> block_manager ++ #lightgreen : ""map_logical_blocks()""
|
|
return
|
|
|
|
scanner -> scanner ++ #lightgreen : Build directory table
|
|
return
|
|
|
|
scanner -> scanner ++ #lightgreen : Build shared files table
|
|
return
|
|
|
|
scanner -> filesystem_writer ++ #lightgreen : ""write_metadata_v2_schema()""
|
|
return
|
|
|
|
scanner -> filesystem_writer ++ #lightgreen : ""write_metadata_v2()""
|
|
return
|
|
|
|
scanner -> filesystem_writer ++ #lightgreen : ""flush()""
|
|
return
|
|
|
|
== Shutdown Phase ==
|
|
|
|
destroy file_scanner
|
|
destroy inode_manager
|
|
destroy block_manager
|
|
|
|
return
|
|
|
|
destroy scanner
|
|
destroy os_access
|
|
destroy entry_factory
|
|
destroy segmenter_factory
|
|
destroy filesystem_writer
|
|
destroy categorizer_manager
|
|
destroy script
|
|
|
|
@enduml
|
|
|
|
PlantUML version 1.2022.7(Mon Aug 22 19:01:30 CEST 2022)
|
|
(GPL source distribution)
|
|
Java Runtime: OpenJDK Runtime Environment
|
|
JVM: OpenJDK 64-Bit Server VM
|
|
Default Encoding: UTF-8
|
|
Language: en
|
|
Country: null
|
|
--></g></svg> |