<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.2.2 Chrome/134.0.6998.178 Electron/35.1.2 Safari/537.36" version="26.2.2">
  <diagram name="Page-1" id="AROqC8fMQaNWye3_sZ_R">
    <mxGraphModel dx="2393" dy="937" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="LnSmRKnKzvJv8pziYg2E-1" value="Darknet Lantern&lt;div&gt;Project Architecture&lt;/div&gt;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;" parent="1" vertex="1">
          <mxGeometry x="-789" y="430" width="120" height="44" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-2" value="nginx web server&lt;br&gt;(listening&amp;nbsp;for lantern.nowherejez...onion &lt;br&gt;requests on 127.0.0.1:4443)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="-661" y="356" width="255" height="45" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-3" value="www" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="-565" y="439" width="63" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-4" value="Tor hidden service&lt;br&gt;lantern.nowherejez...onion:80&lt;br&gt;127.0.0.1:4443" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" parent="1" vertex="1">
          <mxGeometry x="-625" y="306" width="183" height="44" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-5" value="Tor" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" parent="1" vertex="1">
          <mxGeometry x="-562.5" y="275" width="58" height="24" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.502;entryY=-0.025;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-2" target="LnSmRKnKzvJv8pziYg2E-3" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-8" value="index.php" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="-442" y="439" width="63" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-9" value="?query=yoursearchquery" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="-372" y="439" width="157" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-10" value="&amp;amp;sensitive=1" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="-213" y="439" width="83" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-11" value="static.php" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="-442" y="471" width="63" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-12" value="participants/" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="-451" y="505" width="89" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-13" value="lantern.nowherejez...onion" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="-321" y="505" width="160" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-14" value="lantern.nowhevi57f...onion" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="-321" y="536" width="162" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-15" value="verified.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#d80073;fontColor=#ffffff;strokeColor=#A50040;" parent="1" vertex="1">
          <mxGeometry x="-125" y="505" width="87" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-16" value="unverified.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#d80073;fontColor=#ffffff;strokeColor=#A50040;" parent="1" vertex="1">
          <mxGeometry x="-125" y="536" width="87" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.004;entryY=0.502;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-13" target="LnSmRKnKzvJv8pziYg2E-15" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.006;entryY=0.472;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-13" target="LnSmRKnKzvJv8pziYg2E-16" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-145" y="518" />
              <mxPoint x="-145" y="548" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-19" value="sensitive.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#d80073;fontColor=#ffffff;strokeColor=#A50040;" parent="1" vertex="1">
          <mxGeometry x="-125" y="598" width="87" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-20" value="blacklist.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#d80073;fontColor=#ffffff;strokeColor=#A50040;" parent="1" vertex="1">
          <mxGeometry x="-125" y="629" width="87" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-21" value="webring-participants.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#d80073;fontColor=#ffffff;strokeColor=#A50040;" parent="1" vertex="1">
          <mxGeometry x="-125" y="567" width="149" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.007;entryY=0.469;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-13" target="LnSmRKnKzvJv8pziYg2E-21" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-145" y="518" />
              <mxPoint x="-145" y="579" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.009;entryY=0.535;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-13" target="LnSmRKnKzvJv8pziYg2E-19" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-145" y="518" />
              <mxPoint x="-145" y="612" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.006;entryY=0.444;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-13" target="LnSmRKnKzvJv8pziYg2E-20" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-145" y="518" />
              <mxPoint x="-145" y="641" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.035;entryY=0.508;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-3" target="LnSmRKnKzvJv8pziYg2E-8" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.457;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-3" target="LnSmRKnKzvJv8pziYg2E-11" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.015;entryY=0.425;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-3" target="LnSmRKnKzvJv8pziYg2E-12" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-472" y="452" />
              <mxPoint x="-472" y="516" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.001;entryY=0.509;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-12" target="LnSmRKnKzvJv8pziYg2E-13" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.003;entryY=0.528;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-12" target="LnSmRKnKzvJv8pziYg2E-14" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-31" value="&lt;div&gt;&lt;b&gt;&lt;u&gt;lantern.py&lt;/u&gt;&lt;br&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;1) Add a new Website entry (into unverified.csv)&lt;/div&gt;&lt;div&gt;&amp;nbsp;2) Trust a Website entry (move an entry from unverified to verified.csv)&lt;/div&gt;&lt;div&gt;&amp;nbsp;3) Untrust a Website entry (move an entry from unverified to verified.csv)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;4) Synchronize new links from existing webring participants, into your unverified.csv file&lt;/div&gt;&lt;div&gt;&amp;nbsp;5) Add a new webring participant (and download their files into their directory (without trusting them yet!))&lt;/div&gt;&lt;div&gt;&amp;nbsp;6) Trust/UnTrust/Blacklist a webring participant (Potentially dangerous)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;7) Add/Remove Words/URLs in the sensitive list (ex: drug)&lt;/div&gt;&lt;div&gt;&amp;nbsp;8) Add/Remove Words/URLs or links in the blacklist (ex: porn)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;9) Remove the duplicate URLs for your own instance&lt;/div&gt;&lt;div&gt;&amp;nbsp;10) Perform sanity checks on all csv files for all instances &lt;br&gt;(to mark them as sensitive / or remove the ones that are blacklisted)&lt;/div&gt;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=left;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="-462" y="811" width="618" height="217" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-33" value="&lt;b&gt;&lt;u&gt;uptimechecker.py&lt;/u&gt;&lt;/b&gt;&lt;br&gt;(used to check the listed websites&#39;&lt;br&gt;uptime, by going through Tor)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=left;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="-462" y="694" width="197" height="48" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-36" value="scripts" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="-565" y="690" width="63" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.001;entryY=0.038;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-36" target="LnSmRKnKzvJv8pziYg2E-31" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-41" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.002;entryY=0.188;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-36" target="LnSmRKnKzvJv8pziYg2E-33" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-42" value="&lt;pre&gt;Instance,Category,Name,URL,Sensitive,Description,Status,Score&lt;br/&gt;&lt;/pre&gt;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="-31" y="505" width="462" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.022;entryY=0.515;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-1" target="LnSmRKnKzvJv8pziYg2E-3" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.445;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-1" target="LnSmRKnKzvJv8pziYg2E-36" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-46" value="templates" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;" parent="1" vertex="1">
          <mxGeometry x="-565" y="647" width="63" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.009;entryY=0.533;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-1" target="LnSmRKnKzvJv8pziYg2E-46" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-48" value="&lt;pre&gt;Instance,Category,Name,URL,Sensitive,Description,Status,Score&lt;br/&gt;&lt;/pre&gt;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="-31" y="536" width="462" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-49" value="&lt;pre&gt;Name,URL,Description,Trusted,Status,Score&lt;br/&gt;&lt;/pre&gt;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="39" y="567" width="310" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-50" value="&lt;pre&gt;sensitive-words&lt;br&gt;&lt;/pre&gt;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="-31" y="598" width="118" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-51" value="&lt;pre&gt;blacklisted-words&lt;br&gt;&lt;/pre&gt;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="-31" y="629" width="135" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-52" value="banner.png" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#f0a30a;fontColor=#000000;strokeColor=#BD7000;" parent="1" vertex="1">
          <mxGeometry x="-125" y="662" width="87" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-53" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.007;entryY=0.492;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-13" target="LnSmRKnKzvJv8pziYg2E-52" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-145" y="518" />
              <mxPoint x="-145" y="675" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-54" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.016;entryY=0.477;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-46" target="LnSmRKnKzvJv8pziYg2E-52" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-145" y="660" />
              <mxPoint x="-145" y="674" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-55" value="&lt;pre&gt;png, 240x60&lt;br&gt;&lt;/pre&gt;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#f0a30a;fontColor=#000000;strokeColor=#BD7000;" parent="1" vertex="1">
          <mxGeometry x="-31" y="662" width="105" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-56" value="&lt;b&gt;~/.darknet_participant_url&lt;/b&gt;&lt;br&gt;(contains your instance&#39;s url)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;fontStyle=0;" parent="1" vertex="1">
          <mxGeometry x="-249" y="1048" width="192" height="41" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-58" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.498;entryY=-0.022;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-31" target="LnSmRKnKzvJv8pziYg2E-56" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-59" value="via the local Tor daemon&lt;br&gt;(127.0.0.1:9050)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" parent="1" vertex="1">
          <mxGeometry x="-80" y="698" width="156" height="40" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-61" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.002;entryY=0.511;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-33" target="LnSmRKnKzvJv8pziYg2E-59" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-62" value="destination .onion websites&lt;br&gt;and clearnet websites" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" parent="1" vertex="1">
          <mxGeometry x="108.5" y="698" width="169" height="40" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-63" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.001;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-59" target="LnSmRKnKzvJv8pziYg2E-62" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-64" value="Default main webpage that lists:&lt;br&gt;-verified links categories&lt;br&gt;-both verified and unverified links (with searchbar)&lt;br&gt;-optional sensitive search&amp;nbsp; to list the drug-related websites&lt;br&gt;-webring participants&lt;br&gt;(while filtering any potential malicious php inputs)" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="-372" y="341" width="326" height="98" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-65" value="(your instance and every&lt;br&gt;other webring participant&lt;br&gt;has their own folder in here)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="-331" y="558" width="167" height="55" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-66" value="(every webring participant that this participant knows of)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="369" y="567" width="314" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-67" value="(keywords that automatically flags a link as sensitive (ex: drugs))" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="108.5" y="598" width="360" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-68" value="(keywords that automatically removes links (ex: porn))" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="126" y="629" width="305" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-69" value="(every link that got verified by the webring participant)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="80.5" y="474" width="302" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-70" value="(every link that the participant didnt verify yet)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="451" y="536" width="259" height="26" as="geometry" />
        </mxCell>
        <mxCell id="LnSmRKnKzvJv8pziYg2E-71" value="same as above without the search feature (all links displayed at once)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="-356" y="470" width="388" height="26" as="geometry" />
        </mxCell>
        <mxCell id="rfcP9EMQE_NkH9Ln3oW4-1" value="SimpleX CLI Daemon" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="-230.5" y="755" width="137" height="40" as="geometry" />
        </mxCell>
        <mxCell id="rfcP9EMQE_NkH9Ln3oW4-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.006;entryY=0.525;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="LnSmRKnKzvJv8pziYg2E-33" target="rfcP9EMQE_NkH9Ln3oW4-1" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-256" y="718" />
              <mxPoint x="-256" y="776" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="rfcP9EMQE_NkH9Ln3oW4-3" value="destination simplex chatrooms&lt;br&gt;and destination simplex SMP / XFTP servers" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="104" y="755" width="280" height="40" as="geometry" />
        </mxCell>
        <mxCell id="rfcP9EMQE_NkH9Ln3oW4-6" value="via the local Tor daemon&lt;br&gt;(127.0.0.1:9050)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" parent="1" vertex="1">
          <mxGeometry x="-75" y="755" width="151" height="40" as="geometry" />
        </mxCell>
        <mxCell id="rfcP9EMQE_NkH9Ln3oW4-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.012;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="rfcP9EMQE_NkH9Ln3oW4-1" target="rfcP9EMQE_NkH9Ln3oW4-6" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="rfcP9EMQE_NkH9Ln3oW4-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.002;entryY=0.483;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="rfcP9EMQE_NkH9Ln3oW4-6" target="rfcP9EMQE_NkH9Ln3oW4-3" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-1" value="&lt;pre&gt;Instance,Category,Name,&lt;b&gt;&lt;u&gt;URL&lt;/u&gt;&lt;/b&gt;,Sensitive,Description,Status,Score&lt;br&gt;&lt;/pre&gt;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1211.5" y="496" width="462" height="26" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-2" value="destination .onion &lt;br&gt;and clearnet websites" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" parent="1" vertex="1">
          <mxGeometry x="1208.5" y="581" width="131" height="35" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.49;entryY=-0.026;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-3" target="oifU2B7W5BzXfIYeAPqE-11" edge="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="1402" y="613.6129032258063" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-3" value="simplex &lt;br&gt;chatroom links" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="1352.5" y="581" width="99" height="34" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-4" value="simplex smp/xftp&lt;br&gt;&amp;nbsp;server links" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="1458.5" y="581" width="106" height="32" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.484;entryY=0.04;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-1" target="oifU2B7W5BzXfIYeAPqE-3" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1400.5" y="564" />
              <mxPoint x="1400.5" y="564" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.475;entryY=0.02;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-1" target="oifU2B7W5BzXfIYeAPqE-4" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1400.5" y="564" />
              <mxPoint x="1508.5" y="564" />
              <mxPoint x="1508.5" y="572" />
              <mxPoint x="1508.5" y="572" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.499;entryY=-0.02;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-1" target="oifU2B7W5BzXfIYeAPqE-2" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1400.5" y="564" />
              <mxPoint x="1273.5" y="564" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-9" value="Lantern.py needs to discern that there are simplex links (from their syntax alone)&lt;br&gt;and put them in their correct category" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="oifU2B7W5BzXfIYeAPqE-7" vertex="1" connectable="0">
          <mxGeometry x="-0.8252" relative="1" as="geometry">
            <mxPoint x="2" y="3" as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-8" target="oifU2B7W5BzXfIYeAPqE-28" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-8" value="User-Defined category" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" parent="1" vertex="1">
          <mxGeometry x="1158" y="679" width="142" height="23" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.501;entryY=-0.028;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-2" target="oifU2B7W5BzXfIYeAPqE-8" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-11" target="oifU2B7W5BzXfIYeAPqE-29" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-11" value="SimpleX &lt;br&gt;Chatrooms" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="1363" y="672" width="78" height="37" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-13" value="SimpleX Servers" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="1534" y="679" width="109" height="29" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.498;entryY=-0.063;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-4" target="oifU2B7W5BzXfIYeAPqE-13" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-15" value="Category name" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="1654" y="677.5" width="100" height="26" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-16" value="option 1) When adding a&amp;nbsp;&lt;br&gt;website, it needs to first ask&lt;br&gt;for the URL, and depending&lt;br&gt;on the link, it will either&lt;br&gt;assign the simplex category, or&amp;nbsp;&lt;br&gt;prompt the user to &lt;br&gt;mention the category" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="1145" y="366" width="186" height="113" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-18" target="oifU2B7W5BzXfIYeAPqE-16" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-18" value="lantern.py" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="1037" y="408.5" width="72" height="28" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-19" value="verified.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1381.5" y="429.5" width="72" height="28" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-20" value="unverified.csv (if no description)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="1365" y="392.5" width="207" height="28" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.004;entryY=0.47;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-16" target="oifU2B7W5BzXfIYeAPqE-19" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.446;entryY=0.011;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-19" target="oifU2B7W5BzXfIYeAPqE-1" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-24" value="URL" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="1687" y="587" width="42" height="26" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-25" value="uptime.py" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="979.5" y="724" width="72" height="53" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-26" value="Depending on the link type,&lt;br&gt;the uptime check IS DIFFERENT" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="919" y="683" width="194" height="41" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-28" value="run a py request via&lt;br&gt;Tor to check if it&amp;nbsp;&lt;div&gt;responds something&lt;/div&gt;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#6a00ff;fontColor=#ffffff;strokeColor=#3700CC;" parent="1" vertex="1">
          <mxGeometry x="1164" y="850" width="130" height="45" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-29" value="ASSUME UPTIME&lt;br&gt;IF SYNTAX IS CORRECT&lt;br&gt;(because no possibility to test&lt;br&gt;chatrooms without&amp;nbsp;&lt;div&gt;joining them)&lt;/div&gt;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1311" y="828" width="182" height="80" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-34" value="/!\ ASSUME UPTIME IF THE&lt;br&gt;SIMPLEX BOT ISNT REACHABLE /!\&lt;br&gt;SimpleX Bot Daemon -x (routes everything via Tor)&lt;br&gt;(locally controllable via port 3030)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="1641.5" y="777" width="335" height="63" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-45" value="simplex-chatrooms.csv&lt;br&gt;(invite link,&amp;nbsp;" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;" parent="1" vertex="1">
          <mxGeometry x="1755" y="867" width="185" height="28" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-51" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-47" edge="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="1588.5" y="919.2777777777778" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-47" value="Make the Simplex Bot&lt;br&gt;test that smp/xftp&lt;br&gt;server reachable" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="1519" y="844" width="139" height="51" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.497;entryY=-0.007;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-13" target="oifU2B7W5BzXfIYeAPqE-47" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1589" y="776" />
              <mxPoint x="1588" y="776" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-49" value="if the Simplex Bot &lt;br&gt;is complaining&lt;br&gt;that the server &lt;br&gt;isnt joinable,&lt;br&gt;&amp;nbsp;then it is&amp;nbsp;&lt;u&gt;downtime, &lt;/u&gt;&lt;br&gt;else assume uptime" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="1523" y="952" width="131" height="101" as="geometry" />
        </mxCell>
        <mxCell id="oifU2B7W5BzXfIYeAPqE-52" value="/smp test &amp;lt;srvlink&amp;gt;&lt;br&gt;/xftp test &amp;lt;srvlink&amp;gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="1529.5" y="909" width="118" height="41" as="geometry" />
        </mxCell>
        <mxCell id="xdq3A_qXWXg5RgE1Ps6c-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=-0.014;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-34" target="oifU2B7W5BzXfIYeAPqE-47" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1632.5" y="808" />
              <mxPoint x="1621.5" y="809" />
              <mxPoint x="1588.5" y="809" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oifU2B7W5BzXfIYeAPqE-25" edge="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="1230" y="849" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.497;entryY=0.001;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-25" target="oifU2B7W5BzXfIYeAPqE-29" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1064" y="768" />
              <mxPoint x="1402" y="768" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.501;entryY=0.028;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-25" target="oifU2B7W5BzXfIYeAPqE-47" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1013" y="786" />
              <mxPoint x="1589" y="786" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.537;entryY=-0.034;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="oifU2B7W5BzXfIYeAPqE-24" target="oifU2B7W5BzXfIYeAPqE-15" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-9" value="Simplex cli daemon .appimage &lt;br&gt;(exposing local port 3030)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="-149" y="1315" width="196" height="33" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-10" value="Feature: categorizing simplex links &lt;br&gt;AND checking their uptime" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;" parent="1" vertex="1">
          <mxGeometry x="969" y="319" width="237" height="33" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-11" value="Feature: Simplex Chatroom Crawling" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;" parent="1" vertex="1">
          <mxGeometry x="-583" y="1489" width="237" height="33" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-12" value="crawler.py" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="-302" y="1255" width="72" height="53" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-13" value="simplex_chatrooms.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="-310" y="1320" width="146" height="23" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-14" value="verified.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="-266" y="1215" width="136" height="23" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-15" value="Directory: crawler/SimpleX&lt;br&gt;(in .gitignore)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;" parent="1" vertex="1">
          <mxGeometry x="-495" y="1316" width="173" height="31" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-16" value="Directory: www/participants/participant&lt;br&gt;(in .gitignore)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;" parent="1" vertex="1">
          <mxGeometry x="-531" y="1211" width="249" height="31" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-17" value="Directory: scripts/" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;" parent="1" vertex="1">
          <mxGeometry x="-495" y="1266" width="173" height="31" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-20" value="unverified.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="-111" y="1215" width="136" height="23" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-23" value="Simplex cli daemon .appimage &lt;br&gt;(exposing local port 3030)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="-369" y="1696.5" width="202" height="33" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="W1qvKDymAgoVQLZv2bCV-24" edge="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="-413.7777777777778" y="1633.4444444444443" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-24" value="crawler.py" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="-572.5" y="1575.5" width="72" height="53" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-25" value="simplex_chatrooms.csv (sxc link, joined (YES/NO))" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="-473.5" y="1636.5" width="390" height="23" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="W1qvKDymAgoVQLZv2bCV-26" edge="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="-413.7777777777778" y="1633.7222222222222" as="targetPoint" />
            <Array as="points">
              <mxPoint x="-413.5" y="1597.5" />
              <mxPoint x="-413.5" y="1597.5" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-26" value="verified.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="-473.5" y="1538.5" width="136" height="23" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="W1qvKDymAgoVQLZv2bCV-27" edge="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="-413.7777777777778" y="1633.4444444444443" as="targetPoint" />
            <Array as="points">
              <mxPoint x="-250.5" y="1584.5" />
              <mxPoint x="-413.5" y="1584.5" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-27" value="unverified.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="-318.5" y="1538.5" width="136" height="23" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-31" value="1) stores all the new simplex chatroom links in simplex_chatrooms.csv" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;" parent="1" vertex="1">
          <mxGeometry x="-386.5" y="1602.5" width="404" height="26" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-35" value="Simplex bot joins the chatrooms" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="-500" y="1749.5" width="210" height="33" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.49;entryY=0.066;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-25" target="W1qvKDymAgoVQLZv2bCV-35" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-396.5" y="1719.5" />
              <mxPoint x="-396.5" y="1719.5" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.488;entryY=0.049;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-23" target="W1qvKDymAgoVQLZv2bCV-35" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-397.5" y="1714.5" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-38" value="2) makes the simplex&lt;br&gt;bot join those chatrooms&lt;br&gt;ONCE ONLY" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;" parent="1" vertex="1">
          <mxGeometry x="-558.5" y="1685.5" width="158" height="55" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-39" value="list of new messages&lt;br&gt;(is there a way to see only the&lt;br&gt;unread messages ?)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#e51400;fontColor=#ffffff;strokeColor=#B20000;" parent="1" vertex="1">
          <mxGeometry x="-368" y="1799.5" width="193" height="50" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-40" value="3) the bot is regularly queried&lt;br&gt;&amp;nbsp;to check for the latest messages&amp;nbsp;&lt;br&gt;it recieved in those chatrooms" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;" parent="1" vertex="1">
          <mxGeometry x="-614.5" y="1788.5" width="219" height="55" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.006;entryY=0.493;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-35" target="W1qvKDymAgoVQLZv2bCV-39" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-395" y="1824" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-43" value="new message" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="-245.5" y="1862.5" width="86" height="32" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.004;entryY=0.479;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-39" target="W1qvKDymAgoVQLZv2bCV-43" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-45" value="4) iterate over every&lt;br&gt;&amp;nbsp;new message" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;" parent="1" vertex="1">
          <mxGeometry x="-413.5" y="1849.5" width="141" height="41" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-46" value="new link" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#f0a30a;fontColor=#000000;strokeColor=#BD7000;" parent="1" vertex="1">
          <mxGeometry x="-172.5" y="1902.5" width="86" height="32" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.477;entryY=0.063;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-43" target="W1qvKDymAgoVQLZv2bCV-46" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-131.5" y="1878.5" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-48" value="5) iterate over every new VALID &lt;br&gt;(.onion / simplex chatroom / server link)&amp;nbsp;&lt;br&gt;in EACH message" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;" parent="1" vertex="1">
          <mxGeometry x="-155.5" y="1839.5" width="247" height="55" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-50" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1.004;entryY=0.539;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-46" target="W1qvKDymAgoVQLZv2bCV-27" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="111.5" y="1918.5" />
              <mxPoint x="111.5" y="1550.5" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-51" value="6) check if the link is already listed in either&lt;br&gt;verified.csv or unverified.csv.&lt;br&gt;If not listed in either, then &lt;br&gt;add it into unverified.csv" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;" parent="1" vertex="1">
          <mxGeometry x="-83.5" y="1929" width="266" height="70" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-54" value="crawler.py" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="342" y="1628.75" width="72" height="53" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-57" value="verified.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="462.5" y="1612.5" width="136" height="23" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-59" value="unverified.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="617.5" y="1612.5" width="136" height="23" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-75" value="3) check if the monero node&lt;br&gt;link is already listed in either&lt;br&gt;verified.csv or unverified.csv.&lt;br&gt;If not listed in either, then &lt;br&gt;add it into unverified.csv" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;" parent="1" vertex="1">
          <mxGeometry x="1347" y="1849.5" width="183" height="84" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-76" value="Feature: Onion Website Crawling" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;" parent="1" vertex="1">
          <mxGeometry x="278.5" y="1551.5" width="237" height="33" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-77" value="Feature: Monero Onion Node Crawling" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;" parent="1" vertex="1">
          <mxGeometry x="1035.5" y="1568.75" width="237" height="33" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-78" value="" style="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image=data:image/png,[encoded data, 28928 characters];" parent="1" vertex="1">
          <mxGeometry x="-693" y="1458.5" width="92" height="92" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-79" value="" style="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image=data:image/png,[encoded data, 12716 characters];" parent="1" vertex="1">
          <mxGeometry x="198" y="1519" width="62.72" height="98" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-80" value="" style="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;image=data:image/png,[encoded data, 35352 characters];" parent="1" vertex="1">
          <mxGeometry x="931" y="1538.5" width="93.5" height="93.5" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-81" value="2) Downloads the webpage&lt;br&gt;(HTML / PHP / TXT)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#e51400;fontColor=#ffffff;strokeColor=#B20000;" parent="1" vertex="1">
          <mxGeometry x="444" y="1715.5" width="173" height="31" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-82" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.501;entryY=-0.023;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-57" target="W1qvKDymAgoVQLZv2bCV-81" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-83" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.497;entryY=-0.018;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-54" target="W1qvKDymAgoVQLZv2bCV-81" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-84" value="1) crawler crawls ONLY the .onion websites&lt;br&gt;that are in verified.csv only if&amp;nbsp;&lt;br&gt;in onion_websites.csv the crawled value&lt;br&gt;is less than the crawling limit (default 10)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;" parent="1" vertex="1">
          <mxGeometry x="538" y="1641" width="260" height="70" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-85" value="3) gets the webpage body&lt;br&gt;(HTML/PHP/TXT)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="396" y="1802.5" width="171" height="31" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-88" value="5) looks for a hrefs&lt;br&gt;&amp;nbsp;to get to&amp;nbsp;the other &lt;br&gt;webpages (html / txt / php)&lt;br&gt;&amp;nbsp;(with a defined limit of&lt;br&gt;&amp;nbsp;10 pages to crawl)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;" parent="1" vertex="1">
          <mxGeometry x="638" y="1740.5" width="172" height="84" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.473;entryY=-0.009;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-81" target="W1qvKDymAgoVQLZv2bCV-85" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="477" y="1774.5" />
              <mxPoint x="477" y="1774.5" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-91" value="4) finds each new &lt;br&gt;.onion /&lt;br&gt;simplex chatroom /&lt;br&gt;simplex server link" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#f0a30a;fontColor=#000000;strokeColor=#BD7000;" parent="1" vertex="1">
          <mxGeometry x="420" y="1871.5" width="124" height="63" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.501;entryY=-0.03;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-85" target="W1qvKDymAgoVQLZv2bCV-91" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-93" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1.007;entryY=0.486;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-91" target="W1qvKDymAgoVQLZv2bCV-59" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="814" y="1902.75" />
              <mxPoint x="814" y="1623.75" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-94" value="crawler.py" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="1120.5" y="1665.75" width="72" height="53" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-95" value="verified.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1219.5" y="1628.75" width="136" height="23" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-96" value="unverified.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="1374.5" y="1628.75" width="136" height="23" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-97" value="1) Downloads the list of&amp;nbsp;&lt;br&gt;other monero nodes it is&lt;br&gt;connected to" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#e51400;fontColor=#ffffff;strokeColor=#B20000;" parent="1" vertex="1">
          <mxGeometry x="1212" y="1715.75" width="151" height="47" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-98" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.501;entryY=-0.023;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-95" target="W1qvKDymAgoVQLZv2bCV-97" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-99" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.497;entryY=-0.018;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-94" target="W1qvKDymAgoVQLZv2bCV-97" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-100" value="1) crawler crawls ONLY the .onion monero&lt;br&gt;nodes" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;" parent="1" vertex="1">
          <mxGeometry x="1304" y="1677.75" width="254" height="41" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-101" value="2) get the body of the&lt;br&gt;response, and list every&lt;br&gt;monero node" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="1163" y="1809.5" width="151" height="49.5" as="geometry" />
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-104" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.473;entryY=-0.009;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-97" target="W1qvKDymAgoVQLZv2bCV-101" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1234" y="1790.75" />
              <mxPoint x="1234" y="1790.75" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="W1qvKDymAgoVQLZv2bCV-107" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1.007;entryY=0.486;entryDx=0;entryDy=0;entryPerimeter=0;exitX=1.005;exitY=0.605;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-101" target="W1qvKDymAgoVQLZv2bCV-96" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1326" y="1839.5" />
              <mxPoint x="1571" y="1838.5" />
              <mxPoint x="1571" y="1639.5" />
            </Array>
            <mxPoint x="1327" y="1904.5" as="sourcePoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="WCQMX46ekTz_Suyh-VA5-1" value="6) check if the link is already listed in either&lt;br&gt;verified.csv or unverified.csv.&lt;br&gt;If not listed in either, then &lt;br&gt;add it into unverified.csv" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;" parent="1" vertex="1">
          <mxGeometry x="560" y="1902.5" width="266" height="70" as="geometry" />
        </mxCell>
        <mxCell id="WCQMX46ekTz_Suyh-VA5-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.998;entryY=0.524;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-91" target="W1qvKDymAgoVQLZv2bCV-81" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="634" y="1903" />
              <mxPoint x="634" y="1732" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="WCQMX46ekTz_Suyh-VA5-3" value="Directory: crawler/Onion&lt;br&gt;(in .gitignore)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;" parent="1" vertex="1">
          <mxGeometry x="-495" y="1360" width="173" height="31" as="geometry" />
        </mxCell>
        <mxCell id="WCQMX46ekTz_Suyh-VA5-4" value="onion_websites.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="-310" y="1364" width="136" height="23" as="geometry" />
        </mxCell>
        <mxCell id="WCQMX46ekTz_Suyh-VA5-5" value="onion_websites.csv (onion link, crawled (0-10),&lt;br&gt;date_last_crawled)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="164" y="1757" width="291" height="35.25" as="geometry" />
        </mxCell>
        <mxCell id="WCQMX46ekTz_Suyh-VA5-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.998;entryY=0.516;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-81" target="WCQMX46ekTz_Suyh-VA5-5" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="477" y="1775" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="WCQMX46ekTz_Suyh-VA5-7" value="2.5) increment the&amp;nbsp;&lt;div&gt;&quot;crawled&quot; value&lt;br&gt;with every page crawled&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="254" y="1702" width="166" height="55" as="geometry" />
        </mxCell>
        <mxCell id="WCQMX46ekTz_Suyh-VA5-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.499;entryY=0.01;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="WCQMX46ekTz_Suyh-VA5-5" target="W1qvKDymAgoVQLZv2bCV-81" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="231" y="1696" />
              <mxPoint x="530" y="1696" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="WCQMX46ekTz_Suyh-VA5-9" value="Crawler Features" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;" parent="1" vertex="1">
          <mxGeometry x="-611" y="1143" width="237" height="33" as="geometry" />
        </mxCell>
        <mxCell id="WCQMX46ekTz_Suyh-VA5-10" value="Directory: crawler/Onion&lt;br&gt;(in .gitignore)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;" parent="1" vertex="1">
          <mxGeometry x="-493.5" y="1401" width="173" height="31" as="geometry" />
        </mxCell>
        <mxCell id="WCQMX46ekTz_Suyh-VA5-11" value="onion_websites.csv" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="-308.5" y="1405" width="136" height="23" as="geometry" />
        </mxCell>
        <mxCell id="WCQMX46ekTz_Suyh-VA5-12" value="onion_monero_nodes.csv &lt;br&gt;(onion monero node link, date_last_crawled)" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.rect;fillColor2=none;strokeWidth=1;size=20;indent=5;labelPosition=center;align=center;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="890.5" y="1762.62" width="277.5" height="35.25" as="geometry" />
        </mxCell>
        <mxCell id="WCQMX46ekTz_Suyh-VA5-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.997;entryY=0.512;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W1qvKDymAgoVQLZv2bCV-97" target="WCQMX46ekTz_Suyh-VA5-12" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="WCQMX46ekTz_Suyh-VA5-15" value="2.5) mark the date when the&amp;nbsp;&lt;br&gt;onion monero node is crawled" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="942" y="1721.75" width="178" height="41" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
