<mxfile host="65bd71144e">
    <diagram name="Page-1" id="ykhTdbPCDOXpVAqZYsCj">
        <mxGraphModel dx="1589" dy="716" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1654" pageHeight="1169" math="0" shadow="0">
            <root>
                <mxCell id="0"/>
                <mxCell id="1" parent="0"/>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-1" value="Legend" style="shape=table;startSize=30;container=1;collapsible=0;childLayout=tableLayout;fontSize=16;align=left;verticalAlign=top;fillColor=#0050ef;strokeColor=#001DBC;fontColor=#ffffff;fontStyle=1;spacingLeft=6;spacing=0;resizable=0;" parent="1" vertex="1">
                    <mxGeometry x="275" y="1058" width="723" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-2" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;" parent="6F2B19X3ZkVbRV3rCgbW-1" vertex="1">
                    <mxGeometry y="30" width="723" height="30" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-3" value="Cryptographic Operations" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=#432D57;overflow=hidden;fillColor=#76608a;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=12;align=left;fontColor=#ffffff;spacingLeft=10;spacingRight=4;" parent="6F2B19X3ZkVbRV3rCgbW-2" vertex="1">
                    <mxGeometry width="163" height="30" as="geometry">
                        <mxRectangle width="163" height="30" as="alternateBounds"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-203" value="Storage Elements" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=#006EAF;overflow=hidden;fillColor=#1ba1e2;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=12;align=left;fontColor=#ffffff;spacingLeft=10;spacingRight=4;" parent="6F2B19X3ZkVbRV3rCgbW-2" vertex="1">
                    <mxGeometry x="163" width="120" height="30" as="geometry">
                        <mxRectangle width="120" height="30" as="alternateBounds"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-208" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;Keys and Sensitive Data&lt;/span&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=#B09500;overflow=hidden;fillColor=#e3c800;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=12;align=left;fontColor=#000000;spacingLeft=10;spacingRight=4;" parent="6F2B19X3ZkVbRV3rCgbW-2" vertex="1">
                    <mxGeometry x="283" width="170" height="30" as="geometry">
                        <mxRectangle width="170" height="30" as="alternateBounds"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-213" value="Authentication Steps" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=#2D7600;overflow=hidden;fillColor=#60a917;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=12;align=left;fontColor=#ffffff;spacingLeft=10;spacingRight=4;" parent="6F2B19X3ZkVbRV3rCgbW-2" vertex="1">
                    <mxGeometry x="453" width="150" height="30" as="geometry">
                        <mxRectangle width="150" height="30" as="alternateBounds"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-218" value="Process step" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=#6D1F00;overflow=hidden;fillColor=#a0522d;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=12;align=left;fontColor=#ffffff;spacingLeft=10;spacingRight=4;" parent="6F2B19X3ZkVbRV3rCgbW-2" vertex="1">
                    <mxGeometry x="603" width="120" height="30" as="geometry">
                        <mxRectangle width="120" height="30" as="alternateBounds"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-15" value="AliasVault Client (Web / Browser / Mobile)" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
                    <mxGeometry x="40" y="30" width="1390" height="492" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-63" value="Vault operations" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
                    <mxGeometry x="490.00000000000006" y="82" width="160" height="320" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-32" value="AliasVault Server (REST API)" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
                    <mxGeometry x="40" y="652" width="1340" height="390" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-43" value="" style="group;fillColor=#76608a;fontColor=#ffffff;strokeColor=#432D57;" parent="1" vertex="1" connectable="0">
                    <mxGeometry x="70" y="682.65" width="410" height="320" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-33" value="Authentication flow" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" parent="6F2B19X3ZkVbRV3rCgbW-43" vertex="1">
                    <mxGeometry width="410" height="320" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-34" value="SRP server verification" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#76608a;strokeColor=#432D57;fontColor=#ffffff;" parent="6F2B19X3ZkVbRV3rCgbW-43" vertex="1">
                    <mxGeometry x="150" y="40" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-35" value="2FA (Optional)" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;rounded=0;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" parent="6F2B19X3ZkVbRV3rCgbW-43" vertex="1">
                    <mxGeometry x="16" y="120" width="378" height="90" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-81" 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;" parent="6F2B19X3ZkVbRV3rCgbW-43" source="6F2B19X3ZkVbRV3rCgbW-36" target="6F2B19X3ZkVbRV3rCgbW-37" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-36" value="Google Authenticator or compatible" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" parent="6F2B19X3ZkVbRV3rCgbW-43" vertex="1">
                    <mxGeometry x="34" y="155" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-82" 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;" parent="6F2B19X3ZkVbRV3rCgbW-43" source="6F2B19X3ZkVbRV3rCgbW-37" target="6F2B19X3ZkVbRV3rCgbW-38" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-37" value="Time-based OTP" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" parent="6F2B19X3ZkVbRV3rCgbW-43" vertex="1">
                    <mxGeometry x="154" y="155" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-38" value="Verify OTP code" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" parent="6F2B19X3ZkVbRV3rCgbW-43" vertex="1">
                    <mxGeometry x="274" y="155" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-39" value="Issue JWT token" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" parent="6F2B19X3ZkVbRV3rCgbW-43" vertex="1">
                    <mxGeometry x="150" y="239.35" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-40" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="6F2B19X3ZkVbRV3rCgbW-43" source="6F2B19X3ZkVbRV3rCgbW-34" target="6F2B19X3ZkVbRV3rCgbW-35" edge="1">
                    <mxGeometry width="50" height="50" relative="1" as="geometry">
                        <mxPoint x="-256" y="440" as="sourcePoint"/>
                        <mxPoint x="-206" y="390" as="targetPoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-41" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="6F2B19X3ZkVbRV3rCgbW-43" source="6F2B19X3ZkVbRV3rCgbW-35" target="6F2B19X3ZkVbRV3rCgbW-39" edge="1">
                    <mxGeometry width="50" height="50" relative="1" as="geometry">
                        <mxPoint x="215" y="100" as="sourcePoint"/>
                        <mxPoint x="215" y="130" as="targetPoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-44" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-26" target="6F2B19X3ZkVbRV3rCgbW-66" edge="1">
                    <mxGeometry width="50" height="50" relative="1" as="geometry">
                        <mxPoint x="369" y="640" as="sourcePoint"/>
                        <mxPoint x="419" y="590" as="targetPoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-45" value="SRP handshake" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-44" vertex="1" connectable="0">
                    <mxGeometry x="-0.1654" y="1" relative="1" as="geometry">
                        <mxPoint x="8" y="15" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-27" value="AES256-GCM" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#76608a;fontColor=#ffffff;strokeColor=#432D57;" parent="1" vertex="1">
                    <mxGeometry x="517.16" y="222" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-26" value="SRP client" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#76608a;fontColor=#ffffff;strokeColor=#432D57;" parent="1" vertex="1">
                    <mxGeometry x="137" y="453" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-60" value="Key derivation and server authentication" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
                    <mxGeometry x="70" y="82" width="250" height="320" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-16" value="Master Password &lt;br&gt;(not persisted)" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
                    <mxGeometry x="120" y="172" width="150" height="50" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-20" value="Argon2Id" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#76608a;fontColor=#ffffff;strokeColor=#432D57;" parent="1" vertex="1">
                    <mxGeometry x="140" y="247" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-22" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-16" target="6F2B19X3ZkVbRV3rCgbW-20" edge="1">
                    <mxGeometry width="50" height="50" relative="1" as="geometry">
                        <mxPoint x="380" y="282" as="sourcePoint"/>
                        <mxPoint x="430" y="232" as="targetPoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-23" value="Derived Key &lt;br&gt;(stored in app memory)" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
                    <mxGeometry x="119" y="320" width="150" height="50" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-24" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-20" target="6F2B19X3ZkVbRV3rCgbW-23" edge="1">
                    <mxGeometry width="50" height="50" relative="1" as="geometry">
                        <mxPoint x="380" y="282" as="sourcePoint"/>
                        <mxPoint x="430" y="232" as="targetPoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-28" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;curved=1;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-23" target="6F2B19X3ZkVbRV3rCgbW-26" edge="1">
                    <mxGeometry width="50" height="50" relative="1" as="geometry">
                        <mxPoint x="420" y="552" as="sourcePoint"/>
                        <mxPoint x="470" y="502" as="targetPoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-30" value="Used for authentication&lt;br&gt;with server" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-28" vertex="1" connectable="0">
                    <mxGeometry x="-0.1756" y="2" relative="1" as="geometry">
                        <mxPoint x="-2" y="24" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-67" style="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;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-66" target="6F2B19X3ZkVbRV3rCgbW-34" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-66" value="SRP salt/verifier" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
                    <mxGeometry x="117" y="568" width="150" height="48" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-72" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-68" target="6F2B19X3ZkVbRV3rCgbW-27" edge="1">
                    <mxGeometry relative="1" as="geometry">
                        <Array as="points">
                            <mxPoint x="572.16" y="330"/>
                            <mxPoint x="572.16" y="330"/>
                        </Array>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-180" value="Decrypt with&lt;br&gt;derived key" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-72" vertex="1" connectable="0">
                    <mxGeometry x="0.6371" y="-1" relative="1" as="geometry">
                        <mxPoint x="-1" y="18" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-68" value="Retrieve encrypted vault" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#a0522d;fontColor=#ffffff;strokeColor=#6D1F00;" parent="1" vertex="1">
                    <mxGeometry x="512.16" y="330" width="120" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-47" value="Server storage" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;container=0;" parent="1" vertex="1">
                    <mxGeometry x="540" y="682.65" width="140" height="320" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-70" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.541;entryY=1.003;entryDx=0;entryDy=0;entryPerimeter=0;edgeStyle=orthogonalEdgeStyle;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-56" target="6F2B19X3ZkVbRV3rCgbW-68" edge="1">
                    <mxGeometry relative="1" as="geometry">
                        <Array as="points">
                            <mxPoint x="611" y="490"/>
                            <mxPoint x="577" y="490"/>
                        </Array>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-181" value="Retrieve vault &lt;br&gt;from server" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-70" vertex="1" connectable="0">
                    <mxGeometry x="0.2454" y="1" relative="1" as="geometry">
                        <mxPoint x="-19" y="-31" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-56" value="Encrypted vault(s)" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;container=0;" parent="1" vertex="1">
                    <mxGeometry x="556" y="712.65" width="110" height="80" as="geometry"/>
                </mxCell>
                <mxCell id="16" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=3;startArrow=none;startFill=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=oval;endFill=1;" edge="1" parent="1" source="passkey-operations-box" target="6F2B19X3ZkVbRV3rCgbW-166">
                    <mxGeometry relative="1" as="geometry">
                        <mxPoint x="560" y="82" as="targetPoint"/>
                        <Array as="points">
                            <mxPoint x="1285" y="60"/>
                            <mxPoint x="406" y="60"/>
                        </Array>
                    </mxGeometry>
                </mxCell>
                <mxCell id="21" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=3;startArrow=none;startFill=0;endArrow=oval;endFill=1;" edge="1" parent="1" source="passkey-operations-box">
                    <mxGeometry relative="1" as="geometry">
                        <mxPoint x="1280" y="60" as="targetPoint"/>
                        <Array as="points">
                            <mxPoint x="1285" y="60"/>
                        </Array>
                    </mxGeometry>
                </mxCell>
                <mxCell id="passkey-operations-box" value="Passkey operations" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
                    <mxGeometry x="1170" y="82" width="230" height="320" as="geometry"/>
                </mxCell>
                <mxCell id="passkey-create-style" 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;" parent="1" source="passkey-keygen" target="passkey-private-key" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="passkey-public-style" 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;" parent="1" source="passkey-keygen" target="passkey-public-key" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="passkey-keygen" value="WebAuthn key generation (RSA-2048/ES256)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#76608a;fontColor=#ffffff;strokeColor=#432D57;" parent="1" vertex="1">
                    <mxGeometry x="1210" y="112" width="150" height="50" as="geometry"/>
                </mxCell>
                <mxCell id="11" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="passkey-public-key" target="10">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="12" value="On create" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="11">
                    <mxGeometry x="0.1385" y="2" relative="1" as="geometry">
                        <mxPoint x="-10" y="2" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="passkey-public-key" value="Passkey &lt;br&gt;Public Key" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
                    <mxGeometry x="1285" y="202" width="105" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="passkey-private-key" value="Passkey &lt;br&gt;Private Key" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
                    <mxGeometry x="1175" y="202" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="13" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="passkey-sign" target="10">
                    <mxGeometry relative="1" as="geometry">
                        <Array as="points">
                            <mxPoint x="1450" y="292"/>
                            <mxPoint x="1450" y="240"/>
                        </Array>
                    </mxGeometry>
                </mxCell>
                <mxCell id="14" value="On login" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="13">
                    <mxGeometry x="0.2035" y="2" relative="1" as="geometry">
                        <mxPoint x="-38" y="18" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="passkey-sign" value="WebAuthn sign challenge" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#76608a;fontColor=#ffffff;strokeColor=#432D57;" parent="1" vertex="1">
                    <mxGeometry x="1210" y="272" width="150" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="passkey-retrieve" value="Retrieve passkey from vault" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#a0522d;fontColor=#ffffff;strokeColor=#6D1F00;" parent="1" vertex="1">
                    <mxGeometry x="1210" y="332" width="150" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="passkey-auth-edge" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;dashed=1;" parent="1" source="passkey-retrieve" target="passkey-sign" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="passkey-priv-to-sign" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;dashed=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="passkey-private-key" target="passkey-sign" edge="1">
                    <mxGeometry relative="1" as="geometry">
                        <mxPoint x="1235" y="260" as="targetPoint"/>
                        <Array as="points">
                            <mxPoint x="1230" y="260"/>
                            <mxPoint x="1285" y="260"/>
                        </Array>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-76" value="Claiming new email address" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
                    <mxGeometry x="670" y="82" width="250" height="320" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-83" 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;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-77" target="6F2B19X3ZkVbRV3rCgbW-79" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-100" 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;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-77" target="6F2B19X3ZkVbRV3rCgbW-78" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-77" value="RSA/OAEP key generation" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#76608a;fontColor=#ffffff;strokeColor=#432D57;" parent="1" vertex="1">
                    <mxGeometry x="740" y="122" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-78" value="Public key" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
                    <mxGeometry x="680" y="207" width="100" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="22" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;strokeWidth=3;startArrow=none;startFill=0;endArrow=oval;endFill=1;" edge="1" parent="1" source="6F2B19X3ZkVbRV3rCgbW-79">
                    <mxGeometry relative="1" as="geometry">
                        <mxPoint x="882.2592592592591" y="60" as="targetPoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-79" value="Private key" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
                    <mxGeometry x="800" y="207" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-86" value="" style="group;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;" parent="1" vertex="1" connectable="0">
                    <mxGeometry x="870" y="687" width="490" height="320" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-87" value="Email system" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" parent="6F2B19X3ZkVbRV3rCgbW-86" vertex="1">
                    <mxGeometry width="490" height="320" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-113" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="6F2B19X3ZkVbRV3rCgbW-86" source="6F2B19X3ZkVbRV3rCgbW-109" target="6F2B19X3ZkVbRV3rCgbW-112" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-114" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-113" vertex="1" connectable="0">
                    <mxGeometry x="-0.1453" y="2" relative="1" as="geometry">
                        <mxPoint x="2" y="-12" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-116" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="6F2B19X3ZkVbRV3rCgbW-86" source="6F2B19X3ZkVbRV3rCgbW-109" target="6F2B19X3ZkVbRV3rCgbW-115" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-117" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-116" vertex="1" connectable="0">
                    <mxGeometry x="0.3626" y="3" relative="1" as="geometry">
                        <mxPoint x="18" y="-2" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-109" value="Valid Email Claim?" style="rhombus;whiteSpace=wrap;html=1;" parent="6F2B19X3ZkVbRV3rCgbW-86" vertex="1">
                    <mxGeometry x="298.780487804878" y="225" width="95.60975609756098" height="80" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-112" value="Reject email" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#a0522d;fontColor=#ffffff;strokeColor=#6D1F00;" parent="6F2B19X3ZkVbRV3rCgbW-86" vertex="1">
                    <mxGeometry x="380" y="155.65" width="103.41" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-120" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="6F2B19X3ZkVbRV3rCgbW-86" source="6F2B19X3ZkVbRV3rCgbW-115" target="6F2B19X3ZkVbRV3rCgbW-121" edge="1">
                    <mxGeometry relative="1" as="geometry">
                        <mxPoint x="89.6341463414634" y="201.30000000000007" as="targetPoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-125" value="Encrypt email contents &lt;br&gt;with symmetric key &lt;div&gt;&lt;br/&gt;&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-120" vertex="1" connectable="0">
                    <mxGeometry x="-0.4172" y="1" relative="1" as="geometry">
                        <mxPoint x="1" y="-1" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-133" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="6F2B19X3ZkVbRV3rCgbW-86" source="6F2B19X3ZkVbRV3rCgbW-115" target="6F2B19X3ZkVbRV3rCgbW-124" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-115" value="Random generated&lt;br&gt;symmetric key" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="6F2B19X3ZkVbRV3rCgbW-86" vertex="1">
                    <mxGeometry x="239.9982926829268" y="145.65" width="131.46341463414635" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-121" value="AES256-GCM" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#76608a;fontColor=#ffffff;strokeColor=#432D57;" parent="6F2B19X3ZkVbRV3rCgbW-86" vertex="1">
                    <mxGeometry x="95.60975609756098" y="35.650000000000006" width="119.51219512195121" height="35.65" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-137" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" parent="6F2B19X3ZkVbRV3rCgbW-86" source="6F2B19X3ZkVbRV3rCgbW-124" target="6F2B19X3ZkVbRV3rCgbW-121" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-124" value="Encrypt symmetric key with public key" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#a0522d;fontColor=#ffffff;strokeColor=#6D1F00;" parent="6F2B19X3ZkVbRV3rCgbW-86" vertex="1">
                    <mxGeometry x="70.00121951219514" y="105.65" width="131.46341463414635" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-101" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-78" target="6F2B19X3ZkVbRV3rCgbW-99" edge="1">
                    <mxGeometry relative="1" as="geometry">
                        <Array as="points">
                            <mxPoint x="730" y="883"/>
                        </Array>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-102" value="Save in server &lt;br&gt;public key store" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-101" vertex="1" connectable="0">
                    <mxGeometry x="0.4464" y="-2" relative="1" as="geometry">
                        <mxPoint x="2" y="-312" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-103" value="Register new email&lt;br&gt;claim" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#a0522d;fontColor=#ffffff;strokeColor=#6D1F00;" parent="1" vertex="1">
                    <mxGeometry x="750" y="320" width="120" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-140" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-99" target="6F2B19X3ZkVbRV3rCgbW-124" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-141" value="Retrieve public key&lt;div&gt;associated with email claim&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-140" vertex="1" connectable="0">
                    <mxGeometry x="0.4692" relative="1" as="geometry">
                        <mxPoint x="17" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-99" value="Public key store" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#1ba1e2;strokeColor=#006EAF;fontColor=#ffffff;" parent="1" vertex="1">
                    <mxGeometry x="556" y="872.65" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-138" 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;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-105" target="6F2B19X3ZkVbRV3rCgbW-109" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-153" value="Retrieve registered email &lt;br&gt;address claims" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-138" vertex="1" connectable="0">
                    <mxGeometry x="0.2388" y="-5" relative="1" as="geometry">
                        <mxPoint x="-10" y="-2" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-105" value="Email claim store" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#1ba1e2;strokeColor=#006EAF;fontColor=#ffffff;" parent="1" vertex="1">
                    <mxGeometry x="555" y="932.65" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-158" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-107" target="6F2B19X3ZkVbRV3rCgbW-109" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-107" value="External email received from internet" style="shape=message;html=1;html=1;outlineConnect=0;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" parent="1" vertex="1">
                    <mxGeometry x="1186.3899999999999" y="1058" width="60" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" edge="1" source="6F2B19X3ZkVbRV3rCgbW-103">
                    <mxGeometry relative="1" as="geometry">
                        <mxPoint x="1110" y="370" as="sourcePoint"/>
                        <mxPoint x="665" y="942" as="targetPoint"/>
                        <Array as="points">
                            <mxPoint x="810" y="942"/>
                        </Array>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-152" value="Register email claim&lt;br&gt;on server" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-106" vertex="1" connectable="0">
                    <mxGeometry x="-0.3735" relative="1" as="geometry">
                        <mxPoint x="175" y="-129" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-123" value="Encrypted email(s)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#1ba1e2;strokeColor=#006EAF;fontColor=#ffffff;" parent="1" vertex="1">
                    <mxGeometry x="556" y="812.65" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-134" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-121" target="6F2B19X3ZkVbRV3rCgbW-123" edge="1">
                    <mxGeometry relative="1" as="geometry">
                        <Array as="points">
                            <mxPoint x="850" y="741"/>
                            <mxPoint x="850" y="843"/>
                        </Array>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-135" value="Store encrypted email" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-134" vertex="1" connectable="0">
                    <mxGeometry x="0.6857" relative="1" as="geometry">
                        <mxPoint x="11" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-136" value="Email retrieval and decryption" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
                    <mxGeometry x="940" y="82" width="209" height="320" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-145" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-143" target="6F2B19X3ZkVbRV3rCgbW-144" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-146" value="Decrypt email using private key&lt;br&gt;&amp;nbsp;stored in vault" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-145" vertex="1" connectable="0">
                    <mxGeometry x="0.1105" y="2" relative="1" as="geometry">
                        <mxPoint as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-143" value="Retrieve encrypted email" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#a0522d;fontColor=#ffffff;strokeColor=#6D1F00;" parent="1" vertex="1">
                    <mxGeometry x="984" y="330" width="120" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-148" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-144" target="6F2B19X3ZkVbRV3rCgbW-162" edge="1">
                    <mxGeometry relative="1" as="geometry">
                        <mxPoint x="1044" y="322" as="targetPoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-144" value="AES256-GCM" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#76608a;fontColor=#ffffff;strokeColor=#432D57;" parent="1" vertex="1">
                    <mxGeometry x="989" y="207" width="110" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-150" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-123" edge="1" target="6F2B19X3ZkVbRV3rCgbW-143">
                    <mxGeometry relative="1" as="geometry">
                        <mxPoint x="1381" y="370" as="targetPoint"/>
                        <Array as="points">
                            <mxPoint x="672" y="823"/>
                            <mxPoint x="920" y="822"/>
                            <mxPoint x="920" y="482"/>
                            <mxPoint x="1070" y="482"/>
                        </Array>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-151" value="Retrieve encrypted email" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-150" vertex="1" connectable="0">
                    <mxGeometry x="-0.6389" y="-1" relative="1" as="geometry">
                        <mxPoint x="-80" y="-1" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-159" value="" style="shape=image;aspect=fixed;image=data:image/svg+xml, ;" parent="1" vertex="1">
                    <mxGeometry x="40" y="1060" width="58" height="58" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-160" value="AliasVault" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=24;fontStyle=1" parent="1" vertex="1">
                    <mxGeometry x="100" y="1064" width="130" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-161" value="Security architecture 0.24.0" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
                    <mxGeometry x="93" y="1088" width="170" height="30" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-162" value="Decrypted email" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
                    <mxGeometry x="979" y="122" width="130" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-58" value="JWT token for &lt;br&gt;authenticating&lt;br&gt;with REST API" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
                    <mxGeometry x="328.5" y="561" width="155" height="48" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-165" value="Client local storage" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;container=0;" parent="1" vertex="1">
                    <mxGeometry x="335" y="200" width="140" height="202" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-166" value="Decrypted vault&lt;br&gt;(app memory)" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;container=0;" parent="1" vertex="1">
                    <mxGeometry x="351" y="94" width="110" height="68" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-167" value="JWT Token&lt;br&gt;(app local storage)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#1ba1e2;strokeColor=#006EAF;fontColor=#ffffff;" parent="1" vertex="1">
                    <mxGeometry x="348" y="312" width="116" height="50" as="geometry"/>
                </mxCell>
                <mxCell id="4" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-169" target="6F2B19X3ZkVbRV3rCgbW-27" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-169" value="Derived Key&lt;br&gt;(app&lt;span style=&quot;background-color: initial;&quot;&gt;&amp;nbsp;memory)&lt;/span&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#1ba1e2;strokeColor=#006EAF;fontColor=#ffffff;" parent="1" vertex="1">
                    <mxGeometry x="348" y="242" width="116" height="50" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-170" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="6F2B19X3ZkVbRV3rCgbW-169" edge="1">
                    <mxGeometry relative="1" as="geometry">
                        <mxPoint x="255" y="342" as="sourcePoint"/>
                        <Array as="points">
                            <mxPoint x="295" y="342"/>
                            <mxPoint x="295" y="267"/>
                        </Array>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-173" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-58" target="6F2B19X3ZkVbRV3rCgbW-167" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-174" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-39" edge="1">
                    <mxGeometry relative="1" as="geometry">
                        <Array as="points">
                            <mxPoint x="500" y="942"/>
                            <mxPoint x="500" y="632"/>
                            <mxPoint x="406" y="632"/>
                        </Array>
                        <mxPoint x="406" y="609" as="targetPoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-176" 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;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-175" target="6F2B19X3ZkVbRV3rCgbW-16" edge="1">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-175" value="User login" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#a0522d;fontColor=#ffffff;strokeColor=#6D1F00;" parent="1" vertex="1">
                    <mxGeometry x="137" y="112" width="120" height="40" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-178" value="&lt;span style=&quot;&quot;&gt;JWT token protected API endpoints&lt;/span&gt;" style="shape=corner;whiteSpace=wrap;html=1;fontColor=default;fillColor=#e3c800;strokeColor=#B09500;" parent="1" vertex="1">
                    <mxGeometry x="567" y="552" width="803" height="80" as="geometry"/>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-179" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-27" edge="1">
                    <mxGeometry relative="1" as="geometry">
                        <Array as="points">
                            <mxPoint x="572" y="128"/>
                        </Array>
                        <mxPoint x="460" y="128" as="targetPoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6F2B19X3ZkVbRV3rCgbW-182" value="Open vault &lt;br&gt;in local app memory" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="6F2B19X3ZkVbRV3rCgbW-179" vertex="1" connectable="0">
                    <mxGeometry x="-0.4412" y="1" relative="1" as="geometry">
                        <mxPoint x="1" y="-2" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="3" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;dashed=1;" parent="1" source="6F2B19X3ZkVbRV3rCgbW-79" edge="1">
                    <mxGeometry relative="1" as="geometry">
                        <Array as="points">
                            <mxPoint x="990" y="227"/>
                        </Array>
                        <mxPoint x="990" y="227" as="targetPoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="10" value="Passkey create /&lt;br&gt;login request&lt;br&gt;from remote website" style="shape=mxgraph.signs.tech.computer;html=1;pointerEvents=1;fillColor=none;strokeColor=default;verticalLabelPosition=bottom;verticalAlign=top;align=center;sketch=0;" vertex="1" parent="1">
                    <mxGeometry x="1490" y="193" width="60" height="58" as="geometry"/>
                </mxCell>
            </root>
        </mxGraphModel>
    </diagram>
</mxfile>