Updated README.md for clarity and added official references. Introduced detailed infrastructure and integration plans for FES, including phased implementation, deployment options, and risk mitigations. Added FES workflow diagrams in draw.io and PDF formats. Documented SoftHSM testing process and integration details in ticket.md. Improved alignment with clean architecture principles and production readiness.
173 lines
23 KiB
Plaintext
173 lines
23 KiB
Plaintext
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/29.3.0 Chrome/140.0.7339.249 Electron/38.7.2 Safari/537.36" version="29.3.0">
|
|
<diagram id="prtHgNgQTEPvFCAcTncT" name="Page-1">
|
|
<mxGraphModel dx="974" dy="2914" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0" />
|
|
<mxCell id="1" parent="0" />
|
|
<mxCell id="rDKX86SqD0Ev_vDPr-5c-2" parent="1" style="text;strokeColor=none;align=left;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;imageVerticalAlign=middle;" value="1. Der Ersteller lädt das Dokument hoch und legt die Empfänger fest (Diese sind identifiziert durch E-Mail Adresse und Mobilnummer - für die zwei Faktor Authentifizierung).<div><br></div><div>2. Ist ein Unternehmenszertifikat vorhanden, so wird dieses im HSM gespeichert. Zusätzlich zu diesem Zertifikat erzeugt das HSM ein Unternehmens-schlüsselpaar bestehend aus privatem und öffentlichem Schlüssel. Mit diesen drei Komponenten können beliebig viele Signaturen von beliebig vielen Signierern erzeugt werden. Für das Unternehmen wird eine User-Pin vergeben. Diese Unternehmenszertifikat soll verwendet werden.&nbsp;<br><br>3. Ist der Signierer unbekannt erstellt der SignFlow im HSM (Hardware Security Module) ein&nbsp; Schlüsselpaar aus privaten und öffentlichen Schlüssel. Der öffentliche Schlüssel mit den identifizierenden Daten des Signierers wird per CSR (Certificate Signing Request) zum CA (Certificate Authority) gesendet. Dieser erstellt für den Signierer ein Zertifikat das den öffentlichen Schlüssel und die identifizierenden Daten enthält und typischerweise eine Gültigkeit von ein oder drei Jahren hat.&nbsp;<br>Das Zertifikat wird an das HSM zurückgesendet.<br><br>4. Existiert kein gültiges Zertifikat für den Signierer wird beim CA ein neues Zertifikat beantragt.&nbsp;<br><br>5. Das Zertifikat wird an das HSM übergeben. Im HSM befinden sich nun pro User der öffentliche, der private Schlüssel und das Zertifikat. Für den Signierer wird eine User-PIN vergeben.<div><br></div><div>6. Dem Signierer wird eine E-Mail, mit dem Hinweis, dass ein neues Dokument zum signieren vorliegt inkl. link, versendet.</div><div><br></div><div>7 Der Signierer benutzt den link. Er erhält einen Code per SMS zur Zwei Faktor Authentifizierung. Diesen gibt er ein und unterzeichnet das Dokument. Achtung! Das Dokument mit Unterschriftfeld ist noch keine elektronische Signatur. Diese erfolgt in den nächsten Schritten.</div><div><br></div><div>8. Im Backend wird der Hashwert des Dokumentes zum jeweiligen Signiervortschritt erzeugt. Dieser wird mit der User-Pin an das HSM übergeben.</div><div><br></div><div>9. Im HSM wird aus diesem Hashwert und dem privaten Schlüssel die digitale Signatur erzeugt. Diese wird mit dem hinterlegtem Zertifiakt an das Backend zurückgegeben.</div><div><br></div><div>10. Das Backend fügt die digitale Signatur und das Zertifikat in die PDF-Datei ein. Werden die Unternehmenskomponenten verwendet, ist das Zertifikat für alle Signierer identisch. Für alle signierer wird auch das Firmenschlüsselpaar verwendet. Um die Signierer zu identifizieren wird für alle Signierer ein Audit-Trail erzeugt. Dieses beinhaltet folgende Werte:</div><div>-&nbsp;<strong style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">Identitätsdaten:</strong><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"> Vorname, Nachname und E-Mail-Adresse des Unterzeichners.</span></div><div><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">-&nbsp;</span><strong style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">2FA-Nachweis:</strong><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"> Die Mobilnummer sowie der Nachweis, dass der OTP (One-Time-Password)-Code erfolgreich eingegeben wurde (inkl. Zeitstempel des Versands und der Verifizierung).</span></div><div><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">-&nbsp;</span><strong style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">Technische Marker:</strong><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"> Die IP-Adresse des Unterzeichners und der verwendete Browser/Gerätetyp (User-Agent).</span></div><div><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">-&nbsp;</span><strong style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">Eindeutige IDs:</strong><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"> Eine eindeutige Vorgangs- oder Transaktions-ID Ihrer Software.</span></div><div><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">-&nbsp;</span><strong style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">Zeitstempel:</strong><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"> Exakte Datums- und Uhrzeitangaben (idealerweise über einen qualifizierten Zeitstempeldienst/TSA gekoppelt) für jeden Schritt (Dokument aufgerufen, SMS gesendet, SMS bestätigt, Siegel aufgebracht).</span></div><div>Diese Prozedur wird für alle Signierer durchgeführt.</div><div>Am Ende werden die Audit-Trails aller Signierer als separate Seite(n) am Ende des Dokumentes angehängt.</div><div><br></div><div>11. Das von allen Signieren unterzeichnete Dokument wird rechtssicher archiviert.&nbsp;</div><div><br></div><div>12. Jeder Signierer erhält eine Kopie des von allen Signierern unterzeichneten Dokumentes.</div></div>" vertex="1">
|
|
<mxGeometry height="290" width="290" x="510" y="-1800.56" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-47" connectable="0" parent="1" style="group" value="" vertex="1">
|
|
<mxGeometry height="870.31" width="468.2" x="20" y="-2294" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dNxyNK7c78bLwvsdeMH5-19" parent="dqMtG5hgYRCruww8E_SB-47" style="swimlane;html=1;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;horizontal=0;startSize=26;horizontalStack=0;rotation=90;" value="Pool" vertex="1">
|
|
<mxGeometry height="467.74241135835683" width="870.3075922217014" x="-201.05658698029853" y="201.28379432082156" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dNxyNK7c78bLwvsdeMH5-21" parent="dqMtG5hgYRCruww8E_SB-47" style="swimlane;html=1;startSize=20;horizontal=0;rotation=90;" value="Backend" vertex="1">
|
|
<mxGeometry height="107.11282598728452" width="816.6116674479056" x="-270.9070467749037" y="407.9145843012593" as="geometry">
|
|
<mxRectangle height="70" width="40" x="292.29" y="-1107.35" as="alternateBounds" />
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="rDKX86SqD0Ev_vDPr-5c-3" parent="dNxyNK7c78bLwvsdeMH5-21" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;rotation=0;" value="1" vertex="1">
|
|
<mxGeometry height="40.18227335248808" width="61.21096007158989" x="376.81584068408125" y="-304.33982011859604" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-27" parent="dNxyNK7c78bLwvsdeMH5-21" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;rotation=0;" value="6" vertex="1">
|
|
<mxGeometry height="38.519650324000494" width="61.21096007158989" x="375.765065837133" y="67.44755318498602" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dNxyNK7c78bLwvsdeMH5-22" parent="dqMtG5hgYRCruww8E_SB-47" style="swimlane;html=1;startSize=20;horizontal=0;rotation=90;" value="HSM" vertex="1">
|
|
<mxGeometry height="87.40076736153564" width="816.0131248135679" x="-173.10518032414308" y="417.6509047560827" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dNxyNK7c78bLwvsdeMH5-28" parent="dNxyNK7c78bLwvsdeMH5-22" style="rhombus;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;rotation=0;" value="3" vertex="1">
|
|
<mxGeometry height="53.203936911602895" width="53.20378971889603" x="381.48447323191436" y="-141.4311031299669" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dNxyNK7c78bLwvsdeMH5-34" parent="dNxyNK7c78bLwvsdeMH5-22" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;rotation=0;fontStyle=1" value="5" vertex="1">
|
|
<mxGeometry height="38.519650324000494" width="61.21096007158989" x="377.48088805556745" y="57.75356186575405" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-25" edge="1" parent="dNxyNK7c78bLwvsdeMH5-22" source="dqMtG5hgYRCruww8E_SB-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="dNxyNK7c78bLwvsdeMH5-34">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-8" parent="dNxyNK7c78bLwvsdeMH5-22" style="rhombus;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;rotation=0;" value="4" vertex="1">
|
|
<mxGeometry height="53.203936911602895" width="53.20378971889603" x="381.48447323191436" y="-43.05702378041315" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-14" edge="1" parent="dNxyNK7c78bLwvsdeMH5-22" source="dNxyNK7c78bLwvsdeMH5-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="dqMtG5hgYRCruww8E_SB-8">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="324.13078791494434" y="-174.68356369971883" as="sourcePoint" />
|
|
<mxPoint x="421.22770415192963" y="-116.15923309695566" as="targetPoint" />
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="dNxyNK7c78bLwvsdeMH5-20" parent="dqMtG5hgYRCruww8E_SB-47" style="swimlane;html=1;startSize=20;horizontal=0;rotation=90;" value="Ersteller" vertex="1">
|
|
<mxGeometry height="83.79620063577455" width="842.947543358759" x="-379.5757872757489" y="405.9327376513021" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dNxyNK7c78bLwvsdeMH5-23" parent="dNxyNK7c78bLwvsdeMH5-20" style="ellipse;whiteSpace=wrap;html=1;rotation=0;" value="Start" vertex="1">
|
|
<mxGeometry height="53.203936911602895" width="53.20378971889603" x="394.70561497705995" y="-309.58040790438935" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dNxyNK7c78bLwvsdeMH5-25" edge="1" parent="dqMtG5hgYRCruww8E_SB-47" source="dNxyNK7c78bLwvsdeMH5-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="rDKX86SqD0Ev_vDPr-5c-3" value="">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="194.85222937174186" y="120.12118856217135" as="targetPoint" />
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-1" parent="dqMtG5hgYRCruww8E_SB-47" style="swimlane;html=1;startSize=20;horizontal=0;rotation=90;" value="CA" vertex="1">
|
|
<mxGeometry height="93.6389289644211" width="816.9308901862189" x="-82.84495106603596" y="414.7911931470839" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-15" parent="dqMtG5hgYRCruww8E_SB-1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;rotation=0;" value="3" vertex="1">
|
|
<mxGeometry height="38.519650324000494" width="61.21096007158989" x="378.14593542705364" y="-131.4420639748135" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-21" parent="dqMtG5hgYRCruww8E_SB-1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;rotation=0;" value="4" vertex="1">
|
|
<mxGeometry height="38.519650324000494" width="61.21096007158989" x="378.14593542705364" y="-33.067984625259655" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-5" parent="dqMtG5hgYRCruww8E_SB-47" style="swimlane;html=1;startSize=20;horizontal=0;rotation=90;" value="Signierer" vertex="1">
|
|
<mxGeometry height="96.29912581000124" width="843.2800670445022" x="-1.589463217851991" y="400.02710065411424" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="rDKX86SqD0Ev_vDPr-5c-16" parent="dqMtG5hgYRCruww8E_SB-5" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3D;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.email_2;strokeWidth=1;" value="&nbsp; &nbsp; 7" vertex="1">
|
|
<mxGeometry height="26.601894859448016" width="42.35021661624124" x="400.8772545844519" y="123.17867709989002" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-16" edge="1" parent="dqMtG5hgYRCruww8E_SB-47" source="dNxyNK7c78bLwvsdeMH5-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="dqMtG5hgYRCruww8E_SB-15">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-17" edge="1" parent="dqMtG5hgYRCruww8E_SB-47" source="dqMtG5hgYRCruww8E_SB-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="dNxyNK7c78bLwvsdeMH5-34">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<Array as="points">
|
|
<mxPoint x="325.20151418303715" y="356.09221191465946" />
|
|
<mxPoint x="365.1043564722092" y="356.09221191465946" />
|
|
<mxPoint x="365.1043564722092" y="449.1991015099645" />
|
|
<mxPoint x="234.7550716609139" y="449.1991015099645" />
|
|
</Array>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-23" edge="1" parent="dqMtG5hgYRCruww8E_SB-47" source="dqMtG5hgYRCruww8E_SB-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="dNxyNK7c78bLwvsdeMH5-34">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<Array as="points">
|
|
<mxPoint x="325.20151418303715" y="449.1991015099645" />
|
|
<mxPoint x="234.7550716609139" y="449.1991015099645" />
|
|
</Array>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-22" edge="1" parent="dqMtG5hgYRCruww8E_SB-47" source="dqMtG5hgYRCruww8E_SB-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="dqMtG5hgYRCruww8E_SB-21">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-28" edge="1" parent="dqMtG5hgYRCruww8E_SB-47" source="dNxyNK7c78bLwvsdeMH5-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" target="dqMtG5hgYRCruww8E_SB-27" value="">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-29" edge="1" parent="dqMtG5hgYRCruww8E_SB-47" source="dqMtG5hgYRCruww8E_SB-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" target="rDKX86SqD0Ev_vDPr-5c-16">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<Array as="points">
|
|
<mxPoint x="136.32806068095624" y="539.6457942596894" />
|
|
</Array>
|
|
<mxPoint x="351.80340904248516" y="542.3059911052696" as="targetPoint" />
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-36" edge="1" parent="dqMtG5hgYRCruww8E_SB-47" source="dqMtG5hgYRCruww8E_SB-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="dqMtG5hgYRCruww8E_SB-33">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-31" parent="dqMtG5hgYRCruww8E_SB-47" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;rotation=0;" value="8" vertex="1">
|
|
<mxGeometry height="38.519650324000494" width="61.21096007158989" x="108.39607107853591" y="587.5293374801322" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-37" edge="1" parent="dqMtG5hgYRCruww8E_SB-47" source="dqMtG5hgYRCruww8E_SB-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="dqMtG5hgYRCruww8E_SB-34">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<Array as="points">
|
|
<mxPoint x="236.0851664038863" y="648.7138649284753" />
|
|
<mxPoint x="138.98825016690105" y="648.7138649284753" />
|
|
</Array>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-33" parent="dqMtG5hgYRCruww8E_SB-47" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;rotation=0;" value="9" vertex="1">
|
|
<mxGeometry height="38.519650324000494" width="61.21096007158989" x="205.49298731552113" y="587.5293374801322" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-38" edge="1" parent="dqMtG5hgYRCruww8E_SB-47" source="dqMtG5hgYRCruww8E_SB-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="dqMtG5hgYRCruww8E_SB-35">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-34" parent="dqMtG5hgYRCruww8E_SB-47" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;rotation=0;" value="10" vertex="1">
|
|
<mxGeometry height="38.572854260912095" width="61.21096007158989" x="108.39607107853583" y="663.3449475791662" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-41" edge="1" parent="dqMtG5hgYRCruww8E_SB-47" source="dqMtG5hgYRCruww8E_SB-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="dqMtG5hgYRCruww8E_SB-40">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-35" parent="dqMtG5hgYRCruww8E_SB-47" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;rotation=0;" value="11" vertex="1">
|
|
<mxGeometry height="38.519650324000494" width="61.21096007158989" x="108.39607107853591" y="735.1702624098302" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-39" edge="1" parent="dqMtG5hgYRCruww8E_SB-47" source="rDKX86SqD0Ev_vDPr-5c-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="dqMtG5hgYRCruww8E_SB-31">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<Array as="points">
|
|
<mxPoint x="419.6382409340776" y="568.907959561071" />
|
|
<mxPoint x="138.98825016690105" y="568.907959561071" />
|
|
</Array>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="dqMtG5hgYRCruww8E_SB-40" parent="dqMtG5hgYRCruww8E_SB-47" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;rotation=0;" value="12" vertex="1">
|
|
<mxGeometry height="38.519650324000494" width="61.21096007158989" x="389.0460618457125" y="735.1702624098302" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="W0onxNEhaNP9zqfnopNF-4" edge="1" parent="1" source="W0onxNEhaNP9zqfnopNF-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" target="dNxyNK7c78bLwvsdeMH5-28" value="">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="W0onxNEhaNP9zqfnopNF-6" edge="1" parent="1" source="W0onxNEhaNP9zqfnopNF-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="dNxyNK7c78bLwvsdeMH5-34">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<Array as="points">
|
|
<mxPoint x="220" y="-2080" />
|
|
<mxPoint x="220" y="-1845" />
|
|
<mxPoint x="255" y="-1845" />
|
|
</Array>
|
|
<mxPoint x="229.27999999999997" y="-2084.0580315441985" as="sourcePoint" />
|
|
<mxPoint x="254.98118776721935" y="-1822.5955333781633" as="targetPoint" />
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="W0onxNEhaNP9zqfnopNF-3" parent="1" style="rhombus;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;rotation=0;" value="2" vertex="1">
|
|
<mxGeometry height="53.203936911602895" width="53.20378971889603" x="229.28" y="-2106.66" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="W0onxNEhaNP9zqfnopNF-5" edge="1" parent="1" source="rDKX86SqD0Ev_vDPr-5c-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="W0onxNEhaNP9zqfnopNF-3">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
</mxfile>
|