Jabit/Bitmessage.uml

1309 lines
68 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<Diagram>
<ID>JAVA</ID>
<OriginalElement />
<nodes>
<node x="1818.2000000000003" y="313.0">ch.dissem.bitmessage.entity.valueobject.Label.Type</node>
<node x="5324.841228070176" y="1368.0">ch.dissem.bitmessage.networking.Connection.WriterRunnable</node>
<node x="6921.341228070176" y="1368.0">ch.dissem.bitmessage.entity.valueobject.NetworkAddress</node>
<node x="6705.341228070176" y="1368.0">ch.dissem.bitmessage.factory.V3MessageFactory</node>
<node x="3281.2958333333336" y="695.0">ch.dissem.bitmessage.ProofOfWorkService</node>
<node x="4125.573772883003" y="1368.0">ch.dissem.bitmessage.cryptography.bc.BouncyCryptography</node>
<node x="5470.131996533652" y="1127.0">ch.dissem.bitmessage.entity.ObjectMessage</node>
<node x="3970.5737728830027" y="1368.0">ch.dissem.bitmessage.repository.JdbcHelper</node>
<node x="4642.726882897288" y="936.0">ch.dissem.bitmessage.exception.InsufficientProofOfWorkException</node>
<node x="1314.3071062163358" y="313.0">ch.dissem.bitmessage.utils.AccessCounter</node>
<node x="3075.4000000000005" y="695.0">ch.dissem.bitmessage.MessageCallback</node>
<node x="6475.841228070176" y="1368.0">ch.dissem.bitmessage.networking.Connection.ReaderRunnable</node>
<node x="700.8568660309461" y="313.0">ch.dissem.bitmessage.entity.payload.V2Pubkey</node>
<node x="793.4083333333338" y="1127.0">ch.dissem.bitmessage.extensions.CryptoCustomMessage.SignatureCheckingInputStream</node>
<node x="1647.183132897289" y="695.0">ch.dissem.bitmessage.entity.Plaintext</node>
<node x="3045.735216230623" y="936.0">ch.dissem.bitmessage.InternalContext</node>
<node x="10.5" y="695.0">ch.dissem.bitmessage.extensions.pow.ProofOfWorkRequest</node>
<node x="2730.8810495639564" y="936.0">ch.dissem.bitmessage.ports.NetworkHandler.MessageListener</node>
<node x="1183.8250000000003" y="936.0">ch.dissem.bitmessage.entity.payload.Msg</node>
<node x="5873.841228070176" y="1368.0">ch.dissem.bitmessage.networking.Connection.Mode</node>
<node x="3620.073772883002" y="695.0">ch.dissem.bitmessage.utils.Singleton</node>
<node x="3582.948772883002" y="444.0">ch.dissem.bitmessage.ports.Cryptography</node>
<node x="4962.31390446195" y="444.0">ch.dissem.bitmessage.ports.ProofOfWorkRepository</node>
<node x="3599.601882897289" y="1539.0">ch.dissem.bitmessage.repository.JdbcMessageRepository</node>
<node x="4301.179822446958" y="1539.0">ch.dissem.bitmessage.repository.JdbcInventory</node>
<node x="5719.653728070176" y="1127.0">ch.dissem.bitmessage.exception.NodeException</node>
<node x="2292.7333333333336" y="695.0">ch.dissem.bitmessage.entity.payload.GetPubkey</node>
<node x="6192.841228070176" y="1127.0">ch.dissem.bitmessage.entity.GetData</node>
<node x="7132.716228070176" y="1539.0">ch.dissem.bitmessage.entity.Addr</node>
<node x="3867.573772883002" y="444.0">ch.dissem.bitmessage.InternalContext.ContextHolder</node>
<node x="1294.4083333333338" y="1127.0">ch.dissem.bitmessage.entity.CustomMessage</node>
<node x="1592.8250000000003" y="1127.0">ch.dissem.bitmessage.DefaultMessageListener</node>
<node x="2645.7333333333336" y="695.0">ch.dissem.bitmessage.ports.MultiThreadedPOWEngine.Worker</node>
<node x="2444.7333333333336" y="695.0">ch.dissem.bitmessage.ports.MultiThreadedPOWEngine.CallbackWrapper</node>
<node x="2771.7333333333336" y="695.0">ch.dissem.bitmessage.ports.CustomCommandHandler</node>
<node x="4469.976882897288" y="1127.0">ch.dissem.bitmessage.utils.Property</node>
<node x="318.09979956395637" y="1539.0">ch.dissem.bitmessage.repository.JdbcAddressRepository</node>
<node x="1564.5750000000003" y="1368.0">ch.dissem.bitmessage.BitmessageContext</node>
<node x="6582.341228070176" y="1127.0">ch.dissem.bitmessage.entity.VerAck</node>
<node x="3970.0737728830027" y="1127.0">ch.dissem.bitmessage.repository.JdbcConfig</node>
<node x="6639.341228070176" y="1539.0">ch.dissem.bitmessage.ports.MemoryNodeRegistry</node>
<node x="5551.954714912281" y="444.0">ch.dissem.bitmessage.entity.valueobject.InventoryVector</node>
<node x="327.2000000000003" y="936.0">ch.dissem.bitmessage.entity.payload.V4Pubkey</node>
<node x="57.5" y="1368.0">ch.dissem.bitmessage.entity.payload.V5Broadcast</node>
<node x="6475.841228070176" y="1127.0">ch.dissem.bitmessage.entity.Inv</node>
<node x="2074.7333333333336" y="695.0">ch.dissem.bitmessage.ports.AddressRepository</node>
<node x="904.8568660309461" y="222.0">ch.dissem.bitmessage.entity.payload.Pubkey</node>
<node x="56.375" y="444.0">ch.dissem.bitmessage.extensions.pow.ProofOfWorkRequest.Request</node>
<node x="3168.5839493642798" y="444.0">ch.dissem.bitmessage.ports.MessageRepository</node>
<node x="1643.0750000000003" y="1539.0">ch.dissem.bitmessage.wif.WifExporter</node>
<node x="1063.731866030946" y="313.0">ch.dissem.bitmessage.entity.valueobject.PrivateKey</node>
<node x="2357.5893828972894" y="936.0">ch.dissem.bitmessage.ports.MultiThreadedPOWEngine</node>
<node x="671.4083333333338" y="1127.0">ch.dissem.bitmessage.extensions.CryptoCustomMessage.Reader</node>
<node x="249.5" y="444.0">ch.dissem.bitmessage.entity.payload.V3Pubkey</node>
<node x="846.8568660309461" y="313.0">ch.dissem.bitmessage.entity.payload.Pubkey.Feature</node>
<node x="3762.073772883002" y="695.0">ch.dissem.bitmessage.ports.NetworkHandler</node>
<node x="4604.976882897288" y="1127.0">ch.dissem.bitmessage.ports.AbstractCryptography</node>
<node x="4360.573772883003" y="1368.0">ch.dissem.bitmessage.cryptography.sc.SpongyCryptography</node>
<node x="4257.198772883003" y="444.0">ch.dissem.bitmessage.ports.SimplePOWEngine</node>
<node x="5279.360964912281" y="695.0">ch.dissem.bitmessage.ports.NodeRegistry</node>
<node x="1447.9083333333335" y="1539.0">ch.dissem.bitmessage.wif.WifImporter</node>
<node x="6323.841228070176" y="1127.0">ch.dissem.bitmessage.entity.MessagePayload.Command</node>
<node x="5988.841228070176" y="1127.0">ch.dissem.bitmessage.entity.NetworkMessage</node>
<node x="1722.7833333333335" y="936.0">ch.dissem.bitmessage.entity.Plaintext.Encoding</node>
<node x="1680.9187500000003" y="444.0">ch.dissem.bitmessage.entity.Plaintext.Type</node>
<node x="551.3250000000003" y="695.0">ch.dissem.bitmessage.entity.payload.CryptoBox</node>
<node x="50.59979956395637" y="1539.0">ch.dissem.bitmessage.factory.Factory</node>
<node x="5513.841228070176" y="1368.0">ch.dissem.bitmessage.networking.DefaultNetworkHandler</node>
<node x="4568.448772883003" y="1539.0">ch.dissem.bitmessage.repository.JdbcProofOfWorkRepository</node>
<node x="1007.5333333333338" y="444.0">ch.dissem.bitmessage.entity.BitmessageAddress</node>
<node x="5766.841228070176" y="1368.0">ch.dissem.bitmessage.networking.Connection.State</node>
<node x="10.5" y="1127.0">ch.dissem.bitmessage.entity.payload.V4Broadcast</node>
<node x="405.3250000000003" y="695.0">ch.dissem.bitmessage.entity.Encrypted</node>
<node x="5808.4446460551835" y="1539.0">ch.dissem.bitmessage.networking.Connection</node>
<node x="2882.840439549669" y="313.0">ch.dissem.bitmessage.ports.ProofOfWorkEngine</node>
<node x="6308.341228070176" y="936.0">ch.dissem.bitmessage.entity.MessagePayload</node>
<node x="2082.307106216336" y="0.0">ch.dissem.bitmessage.entity.Streamable</node>
<node x="1595.7833333333335" y="936.0">ch.dissem.bitmessage.BitmessageContext.Listener</node>
<node x="4182.420873082679" y="695.0">ch.dissem.bitmessage.ports.Inventory</node>
<node x="2507.2333333333336" y="444.0">ch.dissem.bitmessage.ports.ProofOfWorkEngine.Callback</node>
<node x="6757.674561403509" y="222.0">ch.dissem.bitmessage.entity.payload.GenericPayload</node>
<node x="7006.716228070176" y="1539.0">ch.dissem.bitmessage.entity.Version</node>
<node x="2140.6125397493456" y="121.0">ch.dissem.bitmessage.entity.payload.ObjectPayload</node>
<node x="480.5571062163358" y="936.0">ch.dissem.bitmessage.entity.payload.Broadcast</node>
<node x="693.4361111111111" y="1368.0">ch.dissem.bitmessage.extensions.CryptoCustomMessage</node>
<node x="531.8071062163353" y="444.0">ch.dissem.bitmessage.exception.DecryptionFailedException</node>
<node x="1551.1583333333335" y="444.0">ch.dissem.bitmessage.entity.Plaintext.Status</node>
<node x="1106.4083333333338" y="695.0">ch.dissem.bitmessage.entity.PlaintextHolder</node>
<node x="1817.4500000000003" y="444.0">ch.dissem.bitmessage.entity.valueobject.Label</node>
<node x="4736.948772883003" y="1368.0">ch.dissem.bitmessage.ports.ProofOfWorkRepository.Item</node>
</nodes>
<notes />
<edges>
<edge source="ch.dissem.bitmessage.repository.JdbcProofOfWorkRepository" target="ch.dissem.bitmessage.ports.ProofOfWorkRepository">
<point x="0.0" y="-20.5" />
<point x="4706.448772883003" y="1519.0" />
<point x="4726.448772883003" y="1519.0" />
<point x="4726.448772883003" y="1298.0" />
<point x="5247.735964912281" y="1298.0" />
<point x="5247.735964912281" y="625.0" />
<point x="5112.31390446195" y="625.0" />
<point x="30.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.InternalContext" target="ch.dissem.bitmessage.ports.NetworkHandler">
<point x="55.666666666666515" y="-20.5" />
<point x="3184.9018828972894" y="896.0" />
<point x="3850.073772883002" y="896.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.extensions.CryptoCustomMessage" target="ch.dissem.bitmessage.entity.BitmessageAddress">
<point x="77.66666666666652" y="-20.5" />
<point x="887.6027777777776" y="1338.0" />
<point x="1283.9083333333338" y="1338.0" />
<point x="1283.9083333333338" y="675.0" />
<point x="1121.1583333333338" y="675.0" />
<point x="12.625" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcMessageRepository" target="ch.dissem.bitmessage.repository.JdbcHelper">
<point x="99.58333333333348" y="-20.5" />
<point x="3818.6852162306222" y="1519.0" />
<point x="4021.1987728830027" y="1519.0" />
<point x="-16.875" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.InternalContext" target="ch.dissem.bitmessage.ports.MessageRepository">
<point x="-33.40000000000009" y="-20.5" />
<point x="3095.835216230623" y="826.0" />
<point x="3064.9000000000005" y="826.0" />
<point x="3064.9000000000005" y="625.0" />
<point x="3202.417282697613" y="625.0" />
<point x="-67.66666666666652" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.cryptography.sc.SpongyCryptography" target="ch.dissem.bitmessage.ports.AbstractCryptography">
<point x="0.0" y="-20.5" />
<point x="4470.073772883003" y="1258.0" />
<point x="4772.226882897288" y="1258.0" />
<point x="55.75" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.factory.V3MessageFactory" target="ch.dissem.bitmessage.exception.NodeException">
<point x="-81.66666666666697" y="-20.5" />
<point x="6721.674561403509" y="1328.0" />
<point x="5865.778728070176" y="1328.0" />
<point x="62.625" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.V4Pubkey" target="ch.dissem.bitmessage.entity.payload.V3Pubkey">
<point x="-50.40000000000009" y="-20.5" />
<point x="339.8000000000002" y="916.0" />
<point x="312.5" y="916.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.V4Pubkey" target="ch.dissem.bitmessage.entity.Encrypted">
<point x="0.0" y="-20.5" />
<point x="390.2000000000003" y="816.0" />
<point x="426.3250000000003" y="816.0" />
<point x="-42.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection" target="ch.dissem.bitmessage.entity.valueobject.NetworkAddress">
<point x="64.89473684210498" y="-20.5" />
<point x="5941.8393828972885" y="1509.0" />
<point x="6943.716228070176" y="1509.0" />
<point x="-67.125" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcInventory" target="ch.dissem.bitmessage.ports.Inventory">
<point x="-19.75" y="-20.5" />
<point x="4360.429822446958" y="1499.0" />
<point x="4590.073772883003" y="1499.0" />
<point x="4590.073772883003" y="1268.0" />
<point x="5154.673464912281" y="1268.0" />
<point x="5154.673464912281" y="906.0" />
<point x="4273.920873082679" y="906.0" />
<point x="30.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.MessagePayload" target="ch.dissem.bitmessage.entity.Streamable">
<point x="0.0" y="-20.5" />
<point x="6398.341228070176" y="71.0" />
<point x="2195.6404395496693" y="71.0" />
<point x="45.333333333333485" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.InternalContext" target="ch.dissem.bitmessage.ports.AddressRepository">
<point x="-77.9333333333334" y="-20.5" />
<point x="3051.3018828972895" y="866.0" />
<point x="2223.2333333333336" y="866.0" />
<point x="49.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection.Mode" target="ch.dissem.bitmessage.networking.Connection">
<point x="23.5" y="20.5" />
<point x="5944.341228070176" y="1439.0" />
<point x="5891.365698686763" y="1439.0" />
<point x="14.421052631579187" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.factory.V3MessageFactory" target="ch.dissem.bitmessage.utils.AccessCounter">
<point x="49.0" y="-20.5" />
<point x="6852.341228070176" y="1348.0" />
<point x="6830.674561403509" y="1348.0" />
<point x="6830.674561403509" y="384.0" />
<point x="1456.9321062163358" y="384.0" />
<point x="61.125" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.factory.Factory" target="ch.dissem.bitmessage.entity.payload.V4Broadcast">
<point x="-26.25" y="-20.5" />
<point x="76.84979956395637" y="1509.0" />
<point x="47.0" y="1509.0" />
<point x="-36.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcMessageRepository" target="ch.dissem.bitmessage.InternalContext">
<point x="-59.75" y="-20.5" />
<point x="3659.351882897289" y="1489.0" />
<point x="3129.235216230623" y="1489.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.InternalContext" target="ch.dissem.bitmessage.ports.CustomCommandHandler">
<point x="-55.666666666666515" y="-20.5" />
<point x="3073.5685495639564" y="846.0" />
<point x="2899.2333333333336" y="846.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.MultiThreadedPOWEngine" target="ch.dissem.bitmessage.ports.MultiThreadedPOWEngine.CallbackWrapper">
<point x="-102.0" y="-20.5" />
<point x="2383.0893828972894" y="876.0" />
<point x="2489.9833333333336" y="876.0" />
<point x="-45.25" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.Msg" target="ch.dissem.bitmessage.entity.PlaintextHolder">
<point x="6.8333333333332575" y="-20.5" />
<point x="41.75" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection.WriterRunnable" target="ch.dissem.bitmessage.networking.Connection">
<point x="56.33333333333303" y="20.5" />
<point x="5465.674561403509" y="1479.0" />
<point x="5840.892014476236" y="1479.0" />
<point x="-36.05263157894751" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.BitmessageContext" target="ch.dissem.bitmessage.InternalContext">
<point x="54.0" y="-20.5" />
<point x="1717.5750000000003" y="1218.0" />
<point x="1859.3250000000003" y="1218.0" />
<point x="1859.3250000000003" y="1057.0" />
<point x="3081.520930516337" y="1057.0" />
<point x="-47.71428571428578" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Plaintext" target="ch.dissem.bitmessage.entity.BitmessageAddress">
<point x="-49.4375" y="-20.5" />
<point x="1654.245632897289" y="645.0" />
<point x="1196.9083333333338" y="645.0" />
<point x="88.375" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.V5Broadcast" target="ch.dissem.bitmessage.entity.payload.V4Broadcast">
<point x="0.0" y="-20.5" />
<point x="130.5" y="1348.0" />
<point x="120.0" y="1348.0" />
<point x="36.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.CustomMessage" target="ch.dissem.bitmessage.entity.MessagePayload">
<point x="44.75" y="-20.5" />
<point x="1428.6583333333338" y="1077.0" />
<point x="6317.341228070176" y="1077.0" />
<point x="-81.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.InternalContext" target="ch.dissem.bitmessage.ports.Cryptography">
<point x="-11.133333333333212" y="-20.5" />
<point x="3118.1018828972897" y="826.0" />
<point x="3270.7958333333336" y="826.0" />
<point x="3270.7958333333336" y="575.0" />
<point x="3602.573772883002" y="575.0" />
<point x="-58.875" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.DefaultMessageListener" target="ch.dissem.bitmessage.ports.NetworkHandler.MessageListener">
<point x="29.25" y="-20.5" />
<point x="1739.0750000000003" y="1027.0" />
<point x="2760.3810495639564" y="1027.0" />
<point x="-59.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.valueobject.NetworkAddress" target="ch.dissem.bitmessage.entity.Streamable">
<point x="0.0" y="-20.5" />
<point x="7010.841228070176" y="61.0" />
<point x="2210.75155066078" y="61.0" />
<point x="60.44444444444434" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.Broadcast" target="ch.dissem.bitmessage.entity.PlaintextHolder">
<point x="31.25" y="-20.5" />
<point x="574.3071062163358" y="866.0" />
<point x="1148.1583333333338" y="866.0" />
<point x="-41.75" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.extensions.CryptoCustomMessage" target="ch.dissem.bitmessage.entity.payload.CryptoBox">
<point x="-77.66666666666652" y="-20.5" />
<point x="732.2694444444446" y="1338.0" />
<point x="660.9083333333338" y="1338.0" />
<point x="660.9083333333338" y="846.0" />
<point x="640.7000000000003" y="846.0" />
<point x="24.375" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcAddressRepository" target="ch.dissem.bitmessage.entity.payload.V4Pubkey">
<point x="-29.25" y="-20.5" />
<point x="405.84979956395637" y="1489.0" />
<point x="421.7000000000003" y="1489.0" />
<point x="31.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcProofOfWorkRepository" target="ch.dissem.bitmessage.repository.JdbcHelper">
<point x="-92.0" y="-20.5" />
<point x="4614.448772883003" y="1489.0" />
<point x="4088.6987728830027" y="1489.0" />
<point x="50.625" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.InternalContext" target="ch.dissem.bitmessage.ports.NodeRegistry">
<point x="77.9333333333334" y="-20.5" />
<point x="3207.1685495639563" y="916.0" />
<point x="5318.110964912281" y="916.0" />
<point x="-38.75" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection.ReaderRunnable" target="ch.dissem.bitmessage.entity.VerAck">
<point x="44.0" y="-20.5" />
<point x="-25.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.ObjectMessage" target="ch.dissem.bitmessage.entity.MessagePayload">
<point x="56.33333333333303" y="-20.5" />
<point x="5610.9653298669855" y="1087.0" />
<point x="6335.341228070176" y="1087.0" />
<point x="-63.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.MultiThreadedPOWEngine.Worker" target="ch.dissem.bitmessage.ports.ProofOfWorkEngine.Callback">
<point x="0.0" y="-20.5" />
<point x="2698.2333333333336" y="615.0" />
<point x="2577.2333333333336" y="615.0" />
<point x="14.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.BitmessageContext" target="ch.dissem.bitmessage.DefaultMessageListener">
<point x="0.0" y="-20.5" />
<point x="1663.5750000000003" y="1188.0" />
<point x="1709.8250000000003" y="1188.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection" target="ch.dissem.bitmessage.networking.Connection.Mode">
<point x="7.210526315789139" y="-20.5" />
<point x="5884.155172370973" y="1429.0" />
<point x="5897.341228070176" y="1429.0" />
<point x="-23.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.InternalContext" target="ch.dissem.bitmessage.ports.Inventory">
<point x="66.80000000000018" y="-20.5" />
<point x="3196.035216230623" y="906.0" />
<point x="4212.920873082679" y="906.0" />
<point x="-30.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ProofOfWorkService" target="ch.dissem.bitmessage.ports.MessageRepository">
<point x="-41.80000000000018" y="-20.5" />
<point x="3343.9958333333334" y="555.0" />
<point x="3270.0839493642798" y="555.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection" target="ch.dissem.bitmessage.networking.Connection.WriterRunnable">
<point x="-43.26315789473665" y="-20.5" />
<point x="5833.681488160447" y="1489.0" />
<point x="5409.341228070176" y="1489.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.Broadcast" target="ch.dissem.bitmessage.entity.payload.ObjectPayload">
<point x="-52.083333333333485" y="-20.5" />
<point x="490.9737728830023" y="796.0" />
<point x="239.0" y="796.0" />
<point x="239.0" y="182.0" />
<point x="2154.1125397493456" y="182.0" />
<point x="-67.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Version" target="ch.dissem.bitmessage.entity.valueobject.NetworkAddress">
<point x="-26.5" y="-20.5" />
<point x="22.375" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.valueobject.InventoryVector" target="ch.dissem.bitmessage.entity.Streamable">
<point x="0.0" y="-20.5" />
<point x="5638.454714912281" y="91.0" />
<point x="2165.418217327447" y="91.0" />
<point x="15.111111111111313" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcAddressRepository" target="ch.dissem.bitmessage.repository.JdbcHelper">
<point x="87.75" y="-20.5" />
<point x="522.8497995639564" y="1509.0" />
<point x="3987.4487728830027" y="1509.0" />
<point x="-50.625" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.NetworkMessage" target="ch.dissem.bitmessage.entity.MessagePayload">
<point x="46.0" y="-20.5" />
<point x="6126.841228070176" y="1097.0" />
<point x="6353.341228070176" y="1097.0" />
<point x="-45.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Plaintext" target="ch.dissem.bitmessage.entity.Plaintext.Type">
<point x="-7.0625" y="-20.5" />
<point x="1696.620632897289" y="675.0" />
<point x="1702.1687500000003" y="675.0" />
<point x="-21.25" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.factory.V3MessageFactory" target="ch.dissem.bitmessage.entity.valueobject.InventoryVector">
<point x="16.33333333333303" y="-20.5" />
<point x="6819.674561403509" y="505.0" />
<point x="5717.091078548645" y="505.0" />
<point x="78.63636363636397" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ProofOfWorkService" target="ch.dissem.bitmessage.ports.Cryptography">
<point x="0.0" y="-20.5" />
<point x="3385.7958333333336" y="585.0" />
<point x="3641.823772883002" y="585.0" />
<point x="-19.625" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.extensions.pow.ProofOfWorkRequest" target="ch.dissem.bitmessage.entity.BitmessageAddress">
<point x="81.75" y="-20.5" />
<point x="201.25" y="655.0" />
<point x="1020.1583333333338" y="655.0" />
<point x="-88.375" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.DefaultMessageListener" target="ch.dissem.bitmessage.BitmessageContext.Listener">
<point x="-29.25" y="-20.5" />
<point x="1680.5750000000003" y="1067.0" />
<point x="1649.2833333333335" y="1067.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.BitmessageContext" target="ch.dissem.bitmessage.utils.Property">
<point x="90.0" y="-20.5" />
<point x="1753.5750000000003" y="1238.0" />
<point x="4498.726882897288" y="1238.0" />
<point x="-28.75" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.utils.Singleton" target="ch.dissem.bitmessage.ports.Cryptography">
<point x="0.0" y="-20.5" />
<point x="19.625" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.ProofOfWorkRepository.Item" target="ch.dissem.bitmessage.ports.ProofOfWorkRepository">
<point x="-20.75" y="-20.5" />
<point x="4757.698772883003" y="1308.0" />
<point x="5268.860964912281" y="1308.0" />
<point x="5268.860964912281" y="615.0" />
<point x="5172.31390446195" y="615.0" />
<point x="90.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.MemoryNodeRegistry" target="ch.dissem.bitmessage.ports.NodeRegistry">
<point x="-55.5" y="-20.5" />
<point x="6694.841228070176" y="886.0" />
<point x="5395.610964912281" y="886.0" />
<point x="38.75" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ProofOfWorkService" target="ch.dissem.bitmessage.ports.ProofOfWorkEngine.Callback">
<point x="-83.59999999999991" y="-20.5" />
<point x="3302.1958333333337" y="565.0" />
<point x="2605.2333333333336" y="565.0" />
<point x="42.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Plaintext" target="ch.dissem.bitmessage.entity.valueobject.InventoryVector">
<point x="49.4375" y="-20.5" />
<point x="1753.120632897289" y="635.0" />
<point x="5559.818351275917" y="635.0" />
<point x="-78.63636363636397" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.wif.WifImporter" target="ch.dissem.bitmessage.BitmessageContext">
<point x="36.0" y="-20.5" />
<point x="1555.9083333333335" y="1489.0" />
<point x="1614.0750000000003" y="1489.0" />
<point x="-49.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Addr" target="ch.dissem.bitmessage.entity.valueobject.NetworkAddress">
<point x="-21.75" y="-20.5" />
<point x="7154.466228070176" y="1509.0" />
<point x="7077.966228070176" y="1509.0" />
<point x="67.125" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcMessageRepository" target="ch.dissem.bitmessage.ports.MessageRepository">
<point x="-19.916666666666515" y="-20.5" />
<point x="3699.1852162306222" y="1479.0" />
<point x="3609.573772883002" y="1479.0" />
<point x="3609.573772883002" y="545.0" />
<point x="3337.750616030946" y="545.0" />
<point x="67.66666666666652" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.Broadcast" target="ch.dissem.bitmessage.entity.Encrypted">
<point x="-31.25" y="-20.5" />
<point x="511.8071062163358" y="786.0" />
<point x="468.3250000000003" y="786.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.Msg" target="ch.dissem.bitmessage.entity.payload.ObjectPayload">
<point x="34.166666666666515" y="-20.5" />
<point x="1258.9916666666668" y="896.0" />
<point x="1915.9500000000003" y="896.0" />
<point x="1915.9500000000003" y="202.0" />
<point x="2208.1125397493456" y="202.0" />
<point x="-13.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection.ReaderRunnable" target="ch.dissem.bitmessage.networking.Connection">
<point x="58.66666666666697" y="20.5" />
<point x="6622.507894736843" y="1499.0" />
<point x="5934.628856581499" y="1499.0" />
<point x="57.68421052631584" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Plaintext" target="ch.dissem.bitmessage.entity.Plaintext.Status">
<point x="-35.3125" y="-20.5" />
<point x="1668.370632897289" y="635.0" />
<point x="1575.1583333333335" y="635.0" />
<point x="-24.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.DefaultNetworkHandler" target="ch.dissem.bitmessage.entity.NetworkMessage">
<point x="101.9375" y="-20.5" />
<point x="5732.278728070176" y="1348.0" />
<point x="6019.507894736843" y="1348.0" />
<point x="-61.33333333333303" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.valueobject.PrivateKey" target="ch.dissem.bitmessage.entity.payload.Pubkey">
<point x="-32.0" y="-20.5" />
<point x="1095.731866030946" y="283.0" />
<point x="999.3568660309461" y="283.0" />
<point x="42.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.cryptography.bc.BouncyCryptography" target="ch.dissem.bitmessage.ports.AbstractCryptography">
<point x="0.0" y="-20.5" />
<point x="4233.073772883003" y="1248.0" />
<point x="4660.726882897288" y="1248.0" />
<point x="-55.75" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection" target="ch.dissem.bitmessage.networking.DefaultNetworkHandler">
<point x="-28.842105263158373" y="-20.5" />
<point x="5848.102540792025" y="1469.0" />
<point x="5552.674561403509" y="1469.0" />
<point x="-77.66666666666697" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Plaintext.Encoding" target="ch.dissem.bitmessage.entity.Plaintext">
<point x="0.0" y="-20.5" />
<point x="1783.2833333333335" y="886.0" />
<point x="1741.3497995639557" y="886.0" />
<point x="37.66666666666674" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.DefaultMessageListener" target="ch.dissem.bitmessage.InternalContext">
<point x="87.75" y="-20.5" />
<point x="1797.5750000000003" y="1047.0" />
<point x="3057.6637876591944" y="1047.0" />
<point x="-71.57142857142844" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.AbstractCryptography" target="ch.dissem.bitmessage.exception.InsufficientProofOfWorkException">
<point x="27.875" y="-20.5" />
<point x="4744.351882897288" y="1057.0" />
<point x="4800.726882897288" y="1057.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.Broadcast" target="ch.dissem.bitmessage.entity.payload.CryptoBox">
<point x="-10.416666666666629" y="-20.5" />
<point x="532.6404395496693" y="846.0" />
<point x="591.9500000000003" y="846.0" />
<point x="-24.375" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcAddressRepository" target="ch.dissem.bitmessage.entity.BitmessageAddress">
<point x="-87.75" y="-20.5" />
<point x="347.34979956395637" y="1489.0" />
<point x="272.0" y="1489.0" />
<point x="272.0" y="675.0" />
<point x="1070.6583333333338" y="675.0" />
<point x="-37.875" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.BitmessageAddress" target="ch.dissem.bitmessage.entity.payload.Pubkey">
<point x="-67.33333333333303" y="-20.5" />
<point x="1041.2000000000007" y="384.0" />
<point x="1053.231866030946" y="384.0" />
<point x="1053.231866030946" y="293.0" />
<point x="978.3568660309461" y="293.0" />
<point x="21.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.ObjectMessage" target="ch.dissem.bitmessage.entity.valueobject.InventoryVector">
<point x="0.0" y="-20.5" />
<point x="5554.631996533652" y="1067.0" />
<point x="5549.424411881978" y="1067.0" />
<point x="5549.424411881978" y="675.0" />
<point x="5622.727442185008" y="675.0" />
<point x="-15.727272727272975" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Inv" target="ch.dissem.bitmessage.entity.MessagePayload">
<point x="-17.75" y="-20.5" />
<point x="6493.591228070176" y="1097.0" />
<point x="6425.341228070176" y="1097.0" />
<point x="27.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.Pubkey.Feature" target="ch.dissem.bitmessage.entity.payload.Pubkey">
<point x="0.0" y="-20.5" />
<point x="899.3568660309461" y="293.0" />
<point x="936.3568660309461" y="293.0" />
<point x="-21.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.extensions.pow.ProofOfWorkRequest" target="ch.dissem.bitmessage.extensions.pow.ProofOfWorkRequest.Request">
<point x="-27.25" y="-20.5" />
<point x="92.25" y="675.0" />
<point x="84.125" y="675.0" />
<point x="-27.75" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Plaintext.Status" target="ch.dissem.bitmessage.entity.Plaintext">
<point x="24.0" y="20.5" />
<point x="1623.1583333333335" y="625.0" />
<point x="1682.495632897289" y="625.0" />
<point x="-21.1875" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.BitmessageContext" target="ch.dissem.bitmessage.ports.NetworkHandler.MessageListener">
<point x="36.0" y="-20.5" />
<point x="1699.5750000000003" y="1208.0" />
<point x="1848.3250000000003" y="1208.0" />
<point x="1848.3250000000003" y="1037.0" />
<point x="2819.3810495639564" y="1037.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcMessageRepository" target="ch.dissem.bitmessage.InternalContext.ContextHolder">
<point x="19.916666666666515" y="-20.5" />
<point x="3739.0185495639553" y="1489.0" />
<point x="3948.573772883002" y="1489.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Version" target="ch.dissem.bitmessage.entity.MessagePayload">
<point x="26.5" y="-20.5" />
<point x="7086.216228070176" y="1519.0" />
<point x="7110.841228070176" y="1519.0" />
<point x="7110.841228070176" y="1077.0" />
<point x="6461.341228070176" y="1077.0" />
<point x="63.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.CustomMessage" target="ch.dissem.bitmessage.utils.AccessCounter">
<point x="-44.75" y="-20.5" />
<point x="1339.1583333333338" y="424.0" />
<point x="1416.1821062163358" y="424.0" />
<point x="20.375" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.valueobject.Label" target="ch.dissem.bitmessage.entity.valueobject.Label.Type">
<point x="-22.0" y="-20.5" />
<point x="-21.25" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcMessageRepository" target="ch.dissem.bitmessage.entity.valueobject.InventoryVector">
<point x="59.75" y="-20.5" />
<point x="3778.851882897289" y="1499.0" />
<point x="3959.573772883002" y="1499.0" />
<point x="3959.573772883002" y="645.0" />
<point x="5575.54562400319" y="645.0" />
<point x="-62.90909090909099" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.MultiThreadedPOWEngine.CallbackWrapper" target="ch.dissem.bitmessage.ports.MultiThreadedPOWEngine">
<point x="45.25" y="20.5" />
<point x="2580.4833333333336" y="886.0" />
<point x="2434.0893828972894" y="886.0" />
<point x="-51.0" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.Msg" target="ch.dissem.bitmessage.entity.Plaintext">
<point x="20.5" y="-20.5" />
<point x="1245.3250000000003" y="886.0" />
<point x="1703.683132897289" y="886.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.BitmessageContext" target="ch.dissem.bitmessage.entity.payload.GetPubkey">
<point x="-36.0" y="-20.5" />
<point x="1627.5750000000003" y="1318.0" />
<point x="1562.6583333333335" y="1318.0" />
<point x="1562.6583333333335" y="916.0" />
<point x="2325.7333333333336" y="916.0" />
<point x="-33.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.MemoryNodeRegistry" target="ch.dissem.bitmessage.entity.valueobject.NetworkAddress">
<point x="55.5" y="-20.5" />
<point x="6805.841228070176" y="1519.0" />
<point x="6988.466228070176" y="1519.0" />
<point x="-22.375" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.BitmessageContext.Listener" target="ch.dissem.bitmessage.BitmessageContext">
<point x="-35.66666666666674" y="20.5" />
<point x="1613.6166666666668" y="1067.0" />
<point x="1582.3250000000003" y="1067.0" />
<point x="1582.3250000000003" y="1308.0" />
<point x="1645.5750000000003" y="1308.0" />
<point x="-18.0" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.VerAck" target="ch.dissem.bitmessage.entity.MessagePayload">
<point x="0.0" y="-20.5" />
<point x="6633.341228070176" y="1087.0" />
<point x="6443.341228070176" y="1087.0" />
<point x="45.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection" target="ch.dissem.bitmessage.entity.NetworkMessage">
<point x="28.842105263157464" y="-20.5" />
<point x="5905.786751318341" y="1459.0" />
<point x="6080.841228070176" y="1459.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.MultiThreadedPOWEngine.Worker" target="ch.dissem.bitmessage.ports.MultiThreadedPOWEngine">
<point x="26.25" y="20.5" />
<point x="2724.4833333333336" y="906.0" />
<point x="2536.0893828972894" y="906.0" />
<point x="51.0" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcAddressRepository" target="ch.dissem.bitmessage.ports.AddressRepository">
<point x="29.25" y="-20.5" />
<point x="464.34979956395637" y="1489.0" />
<point x="440.59979956395637" y="1489.0" />
<point x="440.59979956395637" y="1067.0" />
<point x="1551.6583333333335" y="1067.0" />
<point x="1551.6583333333335" y="906.0" />
<point x="2124.2333333333336" y="906.0" />
<point x="-49.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Plaintext.Type" target="ch.dissem.bitmessage.entity.Plaintext">
<point x="21.25" y="20.5" />
<point x="1744.6687500000003" y="605.0" />
<point x="1710.745632897289" y="605.0" />
<point x="7.0625" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.AbstractCryptography" target="ch.dissem.bitmessage.InternalContext.ContextHolder">
<point x="83.625" y="-20.5" />
<point x="4800.101882897288" y="1067.0" />
<point x="4969.226882897288" y="1067.0" />
<point x="4969.226882897288" y="575.0" />
<point x="3980.9737728830023" y="575.0" />
<point x="32.40000000000009" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.Msg" target="ch.dissem.bitmessage.entity.Encrypted">
<point x="-34.16666666666674" y="-20.5" />
<point x="1190.6583333333338" y="776.0" />
<point x="510.3250000000003" y="776.0" />
<point x="42.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.factory.Factory" target="ch.dissem.bitmessage.entity.valueobject.PrivateKey">
<point x="-43.75" y="-20.5" />
<point x="59.34979956395637" y="1519.0" />
<point x="0.0" y="1519.0" />
<point x="0.0" y="394.0" />
<point x="1085.0651993642796" y="394.0" />
<point x="-42.666666666666515" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.AbstractCryptography" target="ch.dissem.bitmessage.InternalContext">
<point x="-83.625" y="-20.5" />
<point x="4632.851882897288" y="1027.0" />
<point x="3153.0923590877655" y="1027.0" />
<point x="23.857142857142662" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.factory.Factory" target="ch.dissem.bitmessage.entity.BitmessageAddress">
<point x="8.75" y="-20.5" />
<point x="111.84979956395637" y="1479.0" />
<point x="250.0" y="1479.0" />
<point x="250.0" y="665.0" />
<point x="1045.4083333333338" y="665.0" />
<point x="-63.125" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.SimplePOWEngine" target="ch.dissem.bitmessage.ports.ProofOfWorkEngine">
<point x="0.0" y="-20.5" />
<point x="4354.698772883003" y="424.0" />
<point x="3063.965439549669" y="424.0" />
<point x="77.625" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Inv" target="ch.dissem.bitmessage.entity.valueobject.InventoryVector">
<point x="17.75" y="-20.5" />
<point x="6529.091228070176" y="515.0" />
<point x="5701.363805821372" y="515.0" />
<point x="62.90909090909099" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.GetData" target="ch.dissem.bitmessage.entity.valueobject.InventoryVector">
<point x="-27.75" y="-20.5" />
<point x="6220.591228070176" y="525.0" />
<point x="5685.636533094099" y="525.0" />
<point x="47.18181818181802" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.DefaultNetworkHandler" target="ch.dissem.bitmessage.InternalContext">
<point x="-72.8125" y="-20.5" />
<point x="5557.528728070176" y="1208.0" />
<point x="5423.9758960551835" y="1208.0" />
<point x="5423.9758960551835" y="997.0" />
<point x="3200.8066448020513" y="997.0" />
<point x="71.57142857142844" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.MessagePayload.Command" target="ch.dissem.bitmessage.entity.MessagePayload">
<point x="0.0" y="-20.5" />
<point x="-9.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ProofOfWorkService" target="ch.dissem.bitmessage.InternalContext.ContextHolder">
<point x="41.80000000000018" y="-20.5" />
<point x="3427.5958333333338" y="595.0" />
<point x="3883.773772883002" y="595.0" />
<point x="-64.80000000000018" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcHelper" target="ch.dissem.bitmessage.repository.JdbcConfig">
<point x="0.0" y="-20.5" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.MultiThreadedPOWEngine.CallbackWrapper" target="ch.dissem.bitmessage.ports.ProofOfWorkEngine.Callback">
<point x="45.25" y="-20.5" />
<point x="2580.4833333333336" y="625.0" />
<point x="2549.2333333333336" y="625.0" />
<point x="-14.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.ProofOfWorkEngine.Callback" target="ch.dissem.bitmessage.ports.ProofOfWorkEngine">
<point x="0.0" y="-20.5" />
<point x="2563.2333333333336" y="414.0" />
<point x="2908.715439549669" y="414.0" />
<point x="-77.625" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.CryptoBox" target="ch.dissem.bitmessage.exception.DecryptionFailedException">
<point x="0.0" y="-20.5" />
<point x="616.3250000000003" y="635.0" />
<point x="659.8071062163353" y="635.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Plaintext" target="ch.dissem.bitmessage.entity.Streamable">
<point x="21.1875" y="-20.5" />
<point x="1724.870632897289" y="615.0" />
<point x="1776.4187500000003" y="615.0" />
<point x="1776.4187500000003" y="101.0" />
<point x="2135.1959951052245" y="101.0" />
<point x="-15.111111111111313" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection" target="ch.dissem.bitmessage.networking.Connection.State">
<point x="-7.210526315789139" y="-20.5" />
<point x="5869.734119739394" y="1439.0" />
<point x="5788.591228070176" y="1439.0" />
<point x="-21.75" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcInventory" target="ch.dissem.bitmessage.repository.JdbcHelper">
<point x="-59.25" y="-20.5" />
<point x="4320.929822446958" y="1519.0" />
<point x="4054.9487728830027" y="1519.0" />
<point x="16.875" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.MultiThreadedPOWEngine" target="ch.dissem.bitmessage.ports.ProofOfWorkEngine">
<point x="102.0" y="-20.5" />
<point x="2587.0893828972894" y="916.0" />
<point x="2761.2333333333336" y="916.0" />
<point x="2761.2333333333336" y="424.0" />
<point x="2960.465439549669" y="424.0" />
<point x="-25.875" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Addr" target="ch.dissem.bitmessage.entity.MessagePayload">
<point x="21.75" y="-20.5" />
<point x="7197.966228070176" y="1067.0" />
<point x="6479.341228070176" y="1067.0" />
<point x="81.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.DefaultNetworkHandler" target="ch.dissem.bitmessage.exception.NodeException">
<point x="72.8125" y="-20.5" />
<point x="5703.153728070176" y="1338.0" />
<point x="5782.278728070176" y="1338.0" />
<point x="-20.875" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.BitmessageAddress" target="ch.dissem.bitmessage.entity.valueobject.PrivateKey">
<point x="0.0" y="-20.5" />
<point x="1108.5333333333338" y="394.0" />
<point x="1127.731866030946" y="394.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.GetData" target="ch.dissem.bitmessage.entity.MessagePayload">
<point x="27.75" y="-20.5" />
<point x="6276.091228070176" y="1107.0" />
<point x="6371.341228070176" y="1107.0" />
<point x="-27.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcInventory" target="ch.dissem.bitmessage.entity.valueobject.InventoryVector">
<point x="19.75" y="-20.5" />
<point x="4399.929822446958" y="1509.0" />
<point x="4601.073772883003" y="1509.0" />
<point x="4601.073772883003" y="1278.0" />
<point x="5165.673464912281" y="1278.0" />
<point x="5165.673464912281" y="655.0" />
<point x="5591.272896730463" y="655.0" />
<point x="-47.18181818181802" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.InternalContext" target="ch.dissem.bitmessage.ports.ProofOfWorkRepository">
<point x="44.5333333333333" y="-20.5" />
<point x="3173.768549563956" y="876.0" />
<point x="3579.340439549669" y="876.0" />
<point x="3579.340439549669" y="625.0" />
<point x="5052.31390446195" y="625.0" />
<point x="-30.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.valueobject.PrivateKey" target="ch.dissem.bitmessage.entity.Streamable">
<point x="32.0" y="-20.5" />
<point x="1159.731866030946" y="91.0" />
<point x="2120.0848839941136" y="91.0" />
<point x="-30.22222222222217" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.DefaultNetworkHandler" target="ch.dissem.bitmessage.networking.Connection">
<point x="0.0" y="20.5" />
<point x="5630.341228070176" y="1459.0" />
<point x="5855.313067107815" y="1459.0" />
<point x="-21.631578947368325" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.ObjectMessage" target="ch.dissem.bitmessage.entity.payload.ObjectPayload">
<point x="-56.33333333333303" y="-20.5" />
<point x="5498.298663200319" y="1067.0" />
<point x="5503.288048245615" y="1067.0" />
<point x="5503.288048245615" y="192.0" />
<point x="2262.1125397493456" y="192.0" />
<point x="40.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.InternalContext" target="ch.dissem.bitmessage.entity.payload.GetPubkey">
<point x="-66.80000000000018" y="-20.5" />
<point x="3062.4352162306227" y="856.0" />
<point x="2391.7333333333336" y="856.0" />
<point x="33.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.NetworkHandler.MessageListener" target="ch.dissem.bitmessage.ports.NetworkHandler">
<point x="0.0" y="-20.5" />
<point x="2819.3810495639564" y="886.0" />
<point x="3791.4071062163357" y="886.0" />
<point x="-58.666666666666515" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection" target="ch.dissem.bitmessage.entity.MessagePayload">
<point x="36.05263157894751" y="-20.5" />
<point x="5912.997277634131" y="1469.0" />
<point x="6465.341228070176" y="1469.0" />
<point x="6465.341228070176" y="1107.0" />
<point x="6407.341228070176" y="1107.0" />
<point x="9.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.factory.V3MessageFactory" target="ch.dissem.bitmessage.entity.payload.GenericPayload">
<point x="81.66666666666697" y="-20.5" />
<point x="6885.007894736843" y="1338.0" />
<point x="6841.674561403509" y="1338.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ProofOfWorkService" target="ch.dissem.bitmessage.InternalContext">
<point x="69.66666666666652" y="20.5" />
<point x="3455.4625" y="856.0" />
<point x="3151.5018828972898" y="856.0" />
<point x="22.26666666666688" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.BitmessageAddress" target="ch.dissem.bitmessage.utils.AccessCounter">
<point x="67.33333333333326" y="-20.5" />
<point x="1175.8666666666668" y="414.0" />
<point x="1375.4321062163358" y="414.0" />
<point x="-20.375" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.V2Pubkey" target="ch.dissem.bitmessage.entity.payload.Pubkey">
<point x="0.0" y="-20.5" />
<point x="763.8568660309461" y="283.0" />
<point x="915.3568660309461" y="283.0" />
<point x="-42.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.NetworkMessage" target="ch.dissem.bitmessage.entity.Streamable">
<point x="-46.0" y="-20.5" />
<point x="6034.841228070176" y="81.0" />
<point x="2180.529328438558" y="81.0" />
<point x="30.22222222222217" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcProofOfWorkRepository" target="ch.dissem.bitmessage.ports.ProofOfWorkRepository.Item">
<point x="92.0" y="-20.5" />
<point x="4798.448772883003" y="1519.0" />
<point x="4778.448772883003" y="1519.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.ProofOfWorkRepository.Item" target="ch.dissem.bitmessage.entity.ObjectMessage">
<point x="20.75" y="-20.5" />
<point x="4799.198772883003" y="1318.0" />
<point x="5554.631996533652" y="1318.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.Msg" target="ch.dissem.bitmessage.entity.payload.CryptoBox">
<point x="-20.5" y="-20.5" />
<point x="1204.3250000000003" y="766.0" />
<point x="656.9500000000003" y="766.0" />
<point x="40.625" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.DefaultMessageListener" target="ch.dissem.bitmessage.entity.payload.Msg">
<point x="-87.75" y="-20.5" />
<point x="1622.0750000000003" y="1047.0" />
<point x="1245.3250000000003" y="1047.0" />
<point x="20.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection" target="ch.dissem.bitmessage.InternalContext">
<point x="-57.68421052631584" y="-20.5" />
<point x="5819.260435528868" y="1509.0" />
<point x="5314.341228070176" y="1509.0" />
<point x="5314.341228070176" y="1007.0" />
<point x="3176.9495019449087" y="1007.0" />
<point x="47.71428571428578" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.extensions.pow.ProofOfWorkRequest.Request" target="ch.dissem.bitmessage.extensions.pow.ProofOfWorkRequest">
<point x="27.75" y="20.5" />
<point x="139.625" y="675.0" />
<point x="146.75" y="675.0" />
<point x="27.25" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.repository.JdbcMessageRepository" target="ch.dissem.bitmessage.entity.valueobject.Label">
<point x="-99.58333333333348" y="-20.5" />
<point x="3619.5185495639553" y="1499.0" />
<point x="1883.4500000000003" y="1499.0" />
<point x="22.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.InternalContext" target="ch.dissem.bitmessage.MessageCallback">
<point x="-22.26666666666688" y="-20.5" />
<point x="3106.968549563956" y="816.0" />
<point x="3166.4000000000005" y="816.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.V4Broadcast" target="ch.dissem.bitmessage.entity.payload.Broadcast">
<point x="0.0" y="-20.5" />
<point x="83.5" y="1057.0" />
<point x="543.0571062163358" y="1057.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.extensions.CryptoCustomMessage" target="ch.dissem.bitmessage.entity.CustomMessage">
<point x="103.55555555555566" y="-20.5" />
<point x="913.4916666666668" y="1348.0" />
<point x="1383.9083333333338" y="1348.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.extensions.CryptoCustomMessage.SignatureCheckingInputStream" target="ch.dissem.bitmessage.extensions.CryptoCustomMessage">
<point x="73.0" y="20.5" />
<point x="1012.4083333333338" y="1318.0" />
<point x="835.8249999999998" y="1318.0" />
<point x="25.888888888888687" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.factory.Factory" target="ch.dissem.bitmessage.exception.NodeException">
<point x="43.75" y="-20.5" />
<point x="146.84979956395637" y="1499.0" />
<point x="1808.339382897289" y="1499.0" />
<point x="1808.339382897289" y="1328.0" />
<point x="5740.528728070176" y="1328.0" />
<point x="-62.625" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.CryptoBox" target="ch.dissem.bitmessage.utils.AccessCounter">
<point x="43.333333333333485" y="-20.5" />
<point x="659.6583333333338" y="645.0" />
<point x="839.936072446958" y="645.0" />
<point x="839.936072446958" y="404.0" />
<point x="1334.6821062163358" y="404.0" />
<point x="-61.125" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.CryptoBox" target="ch.dissem.bitmessage.entity.Streamable">
<point x="-43.333333333333485" y="-20.5" />
<point x="572.9916666666668" y="645.0" />
<point x="489.40833333333376" y="645.0" />
<point x="489.40833333333376" y="81.0" />
<point x="2104.9737728830023" y="81.0" />
<point x="-45.333333333333485" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.ObjectPayload" target="ch.dissem.bitmessage.entity.Streamable">
<point x="0.0" y="-20.5" />
<point x="2221.6125397493456" y="101.0" />
<point x="2150.307106216336" y="101.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.BitmessageContext" target="ch.dissem.bitmessage.BitmessageContext.Listener">
<point x="18.0" y="-20.5" />
<point x="1681.5750000000003" y="1198.0" />
<point x="1837.3250000000003" y="1198.0" />
<point x="1837.3250000000003" y="1017.0" />
<point x="1684.9500000000003" y="1017.0" />
<point x="35.66666666666674" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection" target="ch.dissem.bitmessage.entity.valueobject.InventoryVector">
<point x="21.631578947368325" y="-20.5" />
<point x="5898.576225002552" y="1449.0" />
<point x="5978.341228070176" y="1449.0" />
<point x="5978.341228070176" y="535.0" />
<point x="5669.909260366826" y="535.0" />
<point x="31.45454545454504" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.GetPubkey" target="ch.dissem.bitmessage.entity.payload.ObjectPayload">
<point x="0.0" y="-20.5" />
<point x="2358.7333333333336" y="202.0" />
<point x="2235.1125397493456" y="202.0" />
<point x="13.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.extensions.CryptoCustomMessage.Reader" target="ch.dissem.bitmessage.extensions.CryptoCustomMessage">
<point x="25.5" y="20.5" />
<point x="747.9083333333338" y="1318.0" />
<point x="784.0472222222224" y="1318.0" />
<point x="-25.888888888888687" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.InternalContext.ContextHolder" target="ch.dissem.bitmessage.InternalContext">
<point x="-32.40000000000009" y="20.5" />
<point x="3916.173772883002" y="605.0" />
<point x="3500.7958333333336" y="605.0" />
<point x="3500.7958333333336" y="866.0" />
<point x="3162.635216230623" y="866.0" />
<point x="33.40000000000009" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.factory.Factory" target="ch.dissem.bitmessage.entity.payload.V4Pubkey">
<point x="26.25" y="-20.5" />
<point x="129.34979956395637" y="1489.0" />
<point x="261.0" y="1489.0" />
<point x="261.0" y="1047.0" />
<point x="358.7000000000003" y="1047.0" />
<point x="-31.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.DefaultNetworkHandler" target="ch.dissem.bitmessage.ports.NetworkHandler">
<point x="-43.6875" y="-20.5" />
<point x="5586.653728070176" y="1288.0" />
<point x="5649.631996533652" y="1288.0" />
<point x="5649.631996533652" y="896.0" />
<point x="3908.7404395496687" y="896.0" />
<point x="58.666666666666515" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.Broadcast" target="ch.dissem.bitmessage.entity.Plaintext">
<point x="52.08333333333337" y="-20.5" />
<point x="595.1404395496693" y="876.0" />
<point x="1666.0164662306222" y="876.0" />
<point x="-37.66666666666674" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.BitmessageContext" target="ch.dissem.bitmessage.entity.valueobject.PrivateKey">
<point x="-54.0" y="-20.5" />
<point x="1609.5750000000003" y="1328.0" />
<point x="1540.6583333333335" y="1328.0" />
<point x="1540.6583333333335" y="394.0" />
<point x="1170.3985326976126" y="394.0" />
<point x="42.666666666666515" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.BitmessageContext" target="ch.dissem.bitmessage.entity.BitmessageAddress">
<point x="-72.0" y="-20.5" />
<point x="1591.5750000000003" y="1338.0" />
<point x="1529.6583333333335" y="1338.0" />
<point x="1529.6583333333335" y="655.0" />
<point x="1171.6583333333338" y="655.0" />
<point x="63.125" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.extensions.CryptoCustomMessage" target="ch.dissem.bitmessage.extensions.CryptoCustomMessage.SignatureCheckingInputStream">
<point x="0.0" y="-20.5" />
<point x="809.9361111111111" y="1308.0" />
<point x="866.4083333333338" y="1308.0" />
<point x="-73.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.factory.V3MessageFactory" target="ch.dissem.bitmessage.entity.NetworkMessage">
<point x="-49.0" y="-20.5" />
<point x="6754.341228070176" y="1318.0" />
<point x="6142.174561403509" y="1318.0" />
<point x="61.33333333333303" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.GenericPayload" target="ch.dissem.bitmessage.entity.payload.ObjectPayload">
<point x="0.0" y="-20.5" />
<point x="6841.674561403509" y="182.0" />
<point x="2289.1125397493456" y="182.0" />
<point x="67.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.AbstractCryptography" target="ch.dissem.bitmessage.ports.Cryptography">
<point x="-27.875" y="-20.5" />
<point x="4688.601882897288" y="1017.0" />
<point x="4632.226882897288" y="1017.0" />
<point x="4632.226882897288" y="585.0" />
<point x="3720.323772883002" y="585.0" />
<point x="58.875" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.valueobject.Label.Type" target="ch.dissem.bitmessage.entity.valueobject.Label">
<point x="21.25" y="20.5" />
<point x="1881.9500000000003" y="424.0" />
<point x="1883.4500000000003" y="424.0" />
<point x="22.0" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection.State" target="ch.dissem.bitmessage.networking.Connection">
<point x="21.75" y="20.5" />
<point x="5832.091228070176" y="1429.0" />
<point x="5876.9446460551835" y="1429.0" />
<point x="0.0" y="-20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.V3Pubkey" target="ch.dissem.bitmessage.entity.payload.V2Pubkey">
<point x="0.0" y="-20.5" />
<point x="312.5" y="374.0" />
<point x="763.8568660309461" y="374.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.factory.Factory" target="ch.dissem.bitmessage.entity.payload.V5Broadcast">
<point x="-8.75" y="-20.5" />
<point x="94.34979956395637" y="1469.0" />
<point x="130.5" y="1469.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.InternalContext" target="ch.dissem.bitmessage.ports.ProofOfWorkEngine">
<point x="-44.5333333333333" y="-20.5" />
<point x="3084.7018828972896" y="836.0" />
<point x="3037.2333333333336" y="836.0" />
<point x="3037.2333333333336" y="424.0" />
<point x="3012.215439549669" y="424.0" />
<point x="25.875" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.Plaintext" target="ch.dissem.bitmessage.entity.valueobject.Label">
<point x="35.3125" y="-20.5" />
<point x="1738.995632897289" y="625.0" />
<point x="1839.4500000000003" y="625.0" />
<point x="-22.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection.ReaderRunnable" target="ch.dissem.bitmessage.exception.NodeException">
<point x="-44.0" y="-20.5" />
<point x="6519.841228070176" y="1338.0" />
<point x="5824.028728070176" y="1338.0" />
<point x="20.875" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.wif.WifImporter" target="ch.dissem.bitmessage.entity.BitmessageAddress">
<point x="-36.0" y="-20.5" />
<point x="1483.9083333333335" y="665.0" />
<point x="1146.4083333333338" y="665.0" />
<point x="37.875" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.DefaultNetworkHandler" target="ch.dissem.bitmessage.InternalContext.ContextHolder">
<point x="-14.5625" y="-20.5" />
<point x="5615.778728070176" y="1298.0" />
<point x="5669.6946460551835" y="1298.0" />
<point x="5669.6946460551835" y="565.0" />
<point x="4013.3737728830024" y="565.0" />
<point x="64.80000000000018" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.Pubkey" target="ch.dissem.bitmessage.entity.payload.ObjectPayload">
<point x="0.0" y="-20.5" />
<point x="957.3568660309461" y="192.0" />
<point x="2181.1125397493456" y="192.0" />
<point x="-40.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.extensions.pow.ProofOfWorkRequest" target="ch.dissem.bitmessage.entity.Streamable">
<point x="-81.75" y="-20.5" />
<point x="37.75" y="675.0" />
<point x="24.375" y="675.0" />
<point x="24.375" y="71.0" />
<point x="2089.8626617718915" y="71.0" />
<point x="-60.44444444444434" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.wif.WifExporter" target="ch.dissem.bitmessage.BitmessageContext">
<point x="0.0" y="-20.5" />
<point x="49.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.DefaultNetworkHandler" target="ch.dissem.bitmessage.utils.Property">
<point x="-101.9375" y="-20.5" />
<point x="5528.403728070176" y="1218.0" />
<point x="4556.226882897288" y="1218.0" />
<point x="28.75" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ports.MultiThreadedPOWEngine" target="ch.dissem.bitmessage.ports.MultiThreadedPOWEngine.Worker">
<point x="0.0" y="-20.5" />
<point x="2485.0893828972894" y="896.0" />
<point x="2671.9833333333336" y="896.0" />
<point x="-26.25" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection" target="ch.dissem.bitmessage.ports.NetworkHandler.MessageListener">
<point x="-64.89473684210498" y="-20.5" />
<point x="5812.0499092130785" y="1519.0" />
<point x="4859.25140446195" y="1519.0" />
<point x="4859.25140446195" y="1228.0" />
<point x="4459.476882897288" y="1228.0" />
<point x="4459.476882897288" y="1037.0" />
<point x="2878.3810495639564" y="1037.0" />
<point x="59.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.factory.V3MessageFactory" target="ch.dissem.bitmessage.entity.VerAck">
<point x="-16.33333333333303" y="-20.5" />
<point x="6787.007894736843" y="1308.0" />
<point x="6658.841228070176" y="1308.0" />
<point x="25.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.V4Pubkey" target="ch.dissem.bitmessage.entity.payload.Pubkey">
<point x="-25.200000000000273" y="-20.5" />
<point x="365.0" y="806.0" />
<point x="386.0" y="806.0" />
<point x="386.0" y="384.0" />
<point x="962.3568660309461" y="384.0" />
<point x="962.3568660309461" y="293.0" />
<point x="957.3568660309461" y="293.0" />
<point x="0.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.extensions.CryptoCustomMessage" target="ch.dissem.bitmessage.extensions.CryptoCustomMessage.Reader">
<point x="-51.777777777777715" y="-20.5" />
<point x="758.1583333333333" y="1328.0" />
<point x="696.9083333333338" y="1328.0" />
<point x="-25.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.InternalContext" target="ch.dissem.bitmessage.ProofOfWorkService">
<point x="0.0" y="-20.5" />
<point x="3129.235216230623" y="836.0" />
<point x="3316.129166666667" y="836.0" />
<point x="-69.66666666666652" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.entity.payload.V4Pubkey" target="ch.dissem.bitmessage.entity.payload.CryptoBox">
<point x="25.19999999999999" y="-20.5" />
<point x="415.4000000000001" y="826.0" />
<point x="559.4500000000003" y="826.0" />
<point x="-56.875" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.BitmessageContext" target="ch.dissem.bitmessage.entity.payload.Msg">
<point x="-90.0" y="-20.5" />
<point x="1573.5750000000003" y="1348.0" />
<point x="1518.6583333333335" y="1348.0" />
<point x="1518.6583333333335" y="1057.0" />
<point x="1204.3250000000003" y="1057.0" />
<point x="-20.5" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.DefaultNetworkHandler" target="ch.dissem.bitmessage.entity.valueobject.InventoryVector">
<point x="43.6875" y="-20.5" />
<point x="5674.028728070176" y="1318.0" />
<point x="5709.153728070176" y="1318.0" />
<point x="5709.153728070176" y="545.0" />
<point x="5654.181987639554" y="545.0" />
<point x="15.727272727272975" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.ProofOfWorkService" target="ch.dissem.bitmessage.ports.ProofOfWorkRepository">
<point x="83.59999999999991" y="-20.5" />
<point x="3469.3958333333335" y="615.0" />
<point x="4992.31390446195" y="615.0" />
<point x="-90.0" y="20.5" />
</edge>
<edge source="ch.dissem.bitmessage.networking.Connection" target="ch.dissem.bitmessage.networking.Connection.ReaderRunnable">
<point x="50.4736842105267" y="-20.5" />
<point x="5927.41833026571" y="1489.0" />
<point x="6563.841228070176" y="1489.0" />
<point x="0.0" y="20.5" />
</edge>
</edges>
<settings layout="Hierarchic Group" zoom="0.25607734806629834" x="3610.0" y="790.0" />
<SelectedNodes />
<Categories>
<Category>Inner Classes</Category>
</Categories>
<SCOPE>Production</SCOPE>
<VISIBILITY>protected</VISIBILITY>
</Diagram>