!~kV      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        !!!""""""""""######################$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$% %!%"%#%$%%%&%'%(%)%*%+%,%-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f'g'h'i'j'k'l'm(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((())))))))))))))))**************+++++++++++++++++++++++++++++++++++++++++++++++++++++1,Safe%-Safe%M.Safe% Trustworthy12X%    Trustworthy& Trustworthy27M_'1  !"#$  #$!" Trustworthy27'2354678923546789Safe=?@A)Atoxcore<trivial instance: the trivial monad, with no caching of keysABCDEDEABC Trustworthy*1OPQRSTOPQRST/Safe*Safe$27* UVYXWZ[\]^_`a UVYXWZ[\]^_`aSafe27+ijlkijlk  TrustworthyF-xtoxcore7rebaseDistance a b (xorDistance a c) == xorDistance b ctuvwxtuvwx Safe27-} Safe27-  Trustworthy27M.]  Trustworthy_. TrustworthyX1Itoxcore+produces uniformly random element of a listtoxcore8cryptographically secure random bytes from system source0Safe1 Trustworthy27_2Y Trustworthy27M2 Trustworthy27_3u Trustworthy273Safe274USafe2741Safe5Safe27_5_#"! $%&#"! $%&Safe276m01320132SafeX_6;<=>?@A;?@A<=>Safe"#7i BCKJIHFEDGLMN BCKJIHFEDGLMNSafe9ETtoxcoreFConsumes the entire stream and parses some Binary out of it in a loop.TUVTUVSafe9WXWXSafe9^^Safe"#7:/ijnmlkopqxwvutsryz{|yz{pqxwvutsr|ijnmlkoSafe"#7_;%Safe_<Safe@ASXIS\toxcorealthough it is not referred to as a Node List in the spec, we make DhtState an instance of NodeList so we can use the traversal and folding functions..-.10/23876549:<;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ.9:<;=2387654>?@ABC-.10/DEFGHIJKLMNOPQRSTUVWXYZ'Safe=?@AK!fgfg( Trustworthy=?MLptoxcoreTODO: sockets etcztoxcoreactual network IO{toxcorejust log network events mnopqrstu qrpomnstu) Trustworthy=?@AMP_OtoxcoreJcaches computations of combined keys. Makes no attempt to delete old keys.* Trustworthy@AMO+Safe $=>?@ASXUItoxcore5wrap StdGen so the Arbitrary instance isn't an orphantoxcoreTODOtoxcoreTODOtoxcoreadapted from michaelt's lens-simple: zoom_ is like zoom but for convenience returns an mtl style abstracted MonadState state, rather than a concrete StateT, recapturing a bit more of the abstractness of Control.Lens.zoom..234566789:;<=>?@ABCDEFGHIJKLLMNO;PQRSTUVWXYZ[\]^_`aabcdefghijklmnoopqrstuvwxyz{|}~POR;             O ;d      c  !"#$%&'() *+,-./0123456789:;<=>?@ABCDEFGGHIJKLMNOPQ;RSOTUVVWcXYZ[\]^_`abcdefghiijklmnopqrstuvwxyzzc{|}Y~~_\cb       f !!!""""""""""######################$$$$$$$$$$$$$$$$$$$ $ $ $ $ $$$$$$$%%%%%%%%%%%%%%&&&&&& & &!&"&#&$&%&&&&&'&(&)&*&+&,&-&.&&/&0&1&2&3&4&5&6&7&8&9&:&&&&&&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K'L'M'N'O'P'Q'R(S(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f)g)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u*v*v*w*x*y*z*{*|*}*~****+++++++++++++++++++++++++++++++++++++++++++++++++++++%toxcore-0.2.11-AzzkmiDUfjL8GGvWK827C9Network.Tox.Crypto.KeyNetwork.Tox.Crypto.CombinedKeyNetwork.Tox.Crypto.BoxNetwork.Tox.Crypto.KeyPairNetwork.Tox.Crypto.KeyedNetwork.Tox.Crypto.NonceNetwork.Tox.DHT.DhtPacket Network.Tox.DHT.DhtRequestPacketNetwork.Tox.DHT.DistanceNetwork.Tox.DHT.NodesRequestNetwork.Tox.DHT.PingPacketNetwork.Tox.DHT.RpcPacketNetwork.Tox.Encoding$Network.Tox.Network.MonadRandomBytes Network.Tox.NodeInfo.HostAddressNetwork.Tox.NodeInfo.PortNumber&Network.Tox.NodeInfo.TransportProtocol"Network.Tox.NodeInfo.SocketAddressNetwork.Tox.NodeInfo.NodeInfoNetwork.Tox.DHT.NodesResponseNetwork.Tox.Protocol.PacketKindNetwork.Tox.Protocol.PacketNetwork.Tox.BinaryNetwork.Tox.SaveData.FriendNetwork.Tox.SaveData.UtilNetwork.Tox.SaveData.NodesNetwork.Tox.SaveData.DHT Network.Tox.SaveData.ConferencesNetwork.Tox.SaveDataNetwork.Tox.TestingNetwork.Tox.TimeNetwork.Tox.DHT.StampedNetwork.Tox.DHT.PendingRepliesNetwork.Tox.DHT.ClientNodeNetwork.Tox.DHT.ClientListNetwork.Tox.DHT.KBucketsNetwork.Tox.DHT.NodeListNetwork.Tox.DHT.DhtStateNetwork.Tox.TimedNetwork.Tox.Network.NetworkedNetwork.Tox.Crypto.KeyedTNetwork.Tox.TimedTNetwork.Tox.DHT.Operation Network.Tox"Network.Tox.Application.GroupChatsNetwork.Tox.CryptoNetwork.Tox.DHTNetwork.Tox.NodeInfoNetwork.Tox.ProtocolNonce CombinedKey SecretKey PublicKeyKeyunKey CryptoNumberencodedByteSize keyToIntegerdecode$fCryptoNumberNonce$fCryptoNumberCombinedKey$fCryptoNumberSecretKey$fCryptoNumberPublicKey$fArbitraryKey$fMessagePackKey $fReadKey $fShowKey $fBinaryKey$fIsEncodingKey$fEqKey$fOrdKey precompute precomputeR CipherText unCipherText PlainText unPlainText cipherTextencodeencryptencryptRdecryptdecryptR$fArbitraryPlainText$fReadPlainText$fShowPlainText$fMessagePackPlainText$fArbitraryCipherText$fReadCipherText$fShowCipherText$fMessagePackCipherText$fBinaryCipherText $fEqPlainText$fBinaryPlainText$fGenericPlainText$fEqCipherTextKeyPair secretKey publicKey newKeyPair newKeyPairR fromSecretKeyfromSecretKeyR$fArbitraryKeyPair$fMessagePackKeyPair$fBinaryKeyPair $fEqKeyPair $fShowKeyPair $fReadKeyPair$fGenericKeyPair NullKeyed runNullKeyedKeyedgetCombinedKey $fKeyedRandT $fKeyedRWST $fKeyedStateT$fKeyedWriterT$fKeyedReaderT$fKeyedNullKeyed$fMonadNullKeyed$fApplicativeNullKeyed$fFunctorNullKeyednewNonce newNonceR reverseNoncenudge increment incrementR DhtPacketsenderPublicKeyencryptionNonceencryptedPayload encryptKeyed encodeKeyed decryptKeyed decodeKeyed$fArbitraryDhtPacket$fBinaryDhtPacket$fMessagePackDhtPacket $fEqDhtPacket$fReadDhtPacket$fShowDhtPacket$fGenericDhtPacketDhtRequestPacketaddresseePublicKey dhtPacket$fArbitraryDhtRequestPacket$fBinaryDhtRequestPacket$fMessagePackDhtRequestPacket$fEqDhtRequestPacket$fReadDhtRequestPacket$fShowDhtRequestPacket$fGenericDhtRequestPacketDistancelog2 xorDistancerebaseDistance$fArbitraryDistance$fReadDistance$fShowDistance$fMonoidDistance$fSemigroupDistance $fEqDistance $fOrdDistance NodesRequest requestedKey$fArbitraryNodesRequest$fMessagePackNodesRequest$fBinaryNodesRequest$fEqNodesRequest$fReadNodesRequest$fShowNodesRequest$fGenericNodesRequest PingPacket PingRequest PingResponse$fArbitraryPingPacket$fMessagePackPingPacket$fBinaryPingPacket$fEqPingPacket$fReadPingPacket$fShowPingPacket$fGenericPingPacket RpcPacket rpcPayload requestId RequestId$fMessagePackRequestId$fArbitraryRpcPacket$fMessagePackRpcPacket$fBinaryRpcPacket $fEqRequestId$fReadRequestId$fShowRequestId$fBinaryRequestId$fArbitraryRequestId$fGenericRequestId $fEqRpcPacket$fReadRpcPacket$fShowRpcPacket$fGenericRpcPacket BitEncodingbitGetbitPutMonadRandomBytes randomBytes randomBinary randomKey randomNonce randomWord64 randomWord32 randomWord16 randomWord8 randomInt randomIntRuniform uniformSafe$fMonadRandomBytesRWST$fMonadRandomBytesStateT$fMonadRandomBytesWriterT$fMonadRandomBytesReaderT$fMonadRandomBytesIO$fMonadRandomBytesRandT HostAddressIPv4IPv6getHostAddressGetterputAddressFamilyputHostAddressValueputHostAddress$fArbitraryHostAddress$fReadHostAddress$fShowHostAddress$fMessagePackHostAddress$fBinaryHostAddress$fEqHostAddress$fOrdHostAddress$fGenericHostAddress PortNumber$fArbitraryPortNumber$fMessagePackPortNumber$fGenericPortNumber$fEqPortNumber$fOrdPortNumber$fShowPortNumber$fReadPortNumber$fBinaryPortNumber$fNumPortNumber$fIntegralPortNumber$fRealPortNumber$fBoundedPortNumber$fEnumPortNumberTransportProtocolUDPTCP$fArbitraryTransportProtocol$fBitEncodingTransportProtocol$fMessagePackTransportProtocol$fBinaryTransportProtocol$fEqTransportProtocol$fOrdTransportProtocol$fShowTransportProtocol$fReadTransportProtocol$fGenericTransportProtocol SocketAddressputSocketAddressgetSocketAddress$fArbitrarySocketAddress$fMessagePackSocketAddress$fBinarySocketAddress$fEqSocketAddress$fOrdSocketAddress$fShowSocketAddress$fReadSocketAddress$fGenericSocketAddressNodeInfoprotocoladdress$fArbitraryNodeInfo$fBinaryNodeInfo$fMessagePackNodeInfo $fEqNodeInfo $fOrdNodeInfo$fShowNodeInfo$fReadNodeInfo$fGenericNodeInfo NodesResponse foundNodes$fArbitraryNodesResponse$fBinaryNodesResponse$fMessagePackNodesResponse$fEqNodesResponse$fReadNodesResponse$fShowNodesResponse$fGenericNodesResponse PacketKind CookieRequestCookieResponseCryptoHandshake CryptoDataCrypto LanDiscovery OnionRequest0 OnionRequest1 OnionRequest2AnnounceRequestAnnounceResponseOnionDataRequestOnionDataResponseOnionResponse3OnionResponse2OnionResponse1 BootstrapInfokindDescription kindToByte byteToKind$fArbitraryPacketKind$fBinaryPacketKind$fMessagePackPacketKind$fEqPacketKind$fReadPacketKind$fShowPacketKind$fBoundedPacketKind$fEnumPacketKind$fGenericPacketKindPacket packetKind packetPayload$fArbitraryPacket$fMessagePackPacket$fBinaryPacket $fEqPacket $fReadPacket $fShowPacket$fGenericPackettypeNamedecodeCdecodeSencodeCencodeSFriendstatus friendRequestname statusMessage userStatusnospam lastSeenTimemaxFriendRequestLen maxNameLenmaxStatusMessageLen$fArbitraryFriend$fBinaryFriend $fEqFriend $fShowFriend $fReadFriendgetListgetSectionHeaderputSectionHeaderNodes$fArbitraryNodes $fBinaryNodes $fEqNodes $fShowNodes $fReadNodesDHT$fArbitraryDhtSection$fBinaryDhtSection $fBinaryDHT$fArbitraryDHT$fEqDhtSection$fShowDhtSection$fReadDhtSection$fEqDHT $fShowDHT $fReadDHTPeer dhtPublicKey peerNumberlastActiveTime ConferenceconferenceType conferenceId messageNumberlossyMessageNumberselfPeerNumbertitlepeers Conferences maxTitleLen$fArbitraryPeer $fBinaryPeer$fArbitraryConference$fBinaryConference$fArbitraryConferences$fBinaryConferences$fEqPeer $fShowPeer $fReadPeer$fEqConference$fShowConference$fReadConference$fEqConferences$fShowConferences$fReadConferences$fGenericConferencesBytesFriends NospamKeysSectionSectionNospamKeys SectionDHTSectionFriends SectionNameSectionStatusMessage SectionStatusSectionTcpRelaysSectionPathNodesSectionConferences SectionEOFSaveData$fArbitraryNospamKeys$fBinaryNospamKeys$fArbitraryFriends$fBinaryFriends$fArbitraryBytes $fBinaryBytes$fArbitrarySection$fArbitrarySaveData$fBinarySaveData$fEqNospamKeys$fShowNospamKeys$fReadNospamKeys$fGenericNospamKeys $fEqFriends $fShowFriends $fReadFriends$fGenericFriends $fEqBytes $fShowBytes $fReadBytes$fGenericBytes $fEqSection $fShowSection $fReadSection$fGenericSection $fEqSaveData$fShowSaveData$fReadSaveData$fGenericSaveData defaultPortserveTimeDiff Timestampseconds millisecondsgetTime-+$fArbitraryTimestamp$fArbitraryTimeDiff $fNumTimeDiff $fEqTimestamp$fOrdTimestamp$fShowTimestamp$fReadTimestamp $fEqTimeDiff $fOrdTimeDiff$fShowTimeDiff$fReadTimeDiffStampedemptyadddelete findStamps dropOlderpopFirstPendingReplies expectReplycheckExpectedReply ClientNodenodeInfo lastCheck checkCountnewNode$fArbitraryClientNode$fEqClientNode$fReadClientNode$fShowClientNode ClientNodes ClientListbaseKeymaxSizenodes nodeInfosisEmptyupdateClientNodeslookupfulladdNode removeNodeviable foldNodes closeNodes genClientList$fArbitraryClientList$fEqClientList$fReadClientList$fShowClientList KBucketIndexKBuckets bucketSizebucketsdefaultBucketSize bucketIndexupdateBucketForKeyupdateBucketForIndextraverseClientLists getAllNodes genKBuckets$fArbitraryKBuckets$fEqKBucketIndex$fOrdKBucketIndex$fReadKBucketIndex$fShowKBucketIndex$fNumKBucketIndex$fBinaryKBucketIndex$fEnumKBucketIndex $fEqKBuckets$fReadKBuckets$fShowKBucketsNodeListfoldMapClientListsfoldlClientLists nodeListListlookupPublicKey$fNodeListKBuckets$fNodeListClientListDhtSearchEntry searchNode searchStampsearchClientListDhtState dhtKeyPair dhtCloseList dhtSearchListdhtCloseListStampdhtPendingReplies ListStamplistTimelistBootstrappedTimes newListStamp _dhtKeyPair_dhtCloseListStamp _dhtCloseList_dhtSearchList_dhtPendingReplies _searchNode _searchStamp_searchClientListsearchEntryClientListSizeemptySearchEntry addSearchKeyremoveSearchKeycontainsSearchKeytraverseNodeListsfoldMapNodeLists mapNodeListssizetakeClosestNodesTo mapBucketsmapSearchEntrymapSearchClientListsupdateSearchNode containsNode$fArbitraryDhtState$fNodeListDhtState $fEqListStamp$fReadListStamp$fShowListStamp$fEqDhtSearchEntry$fReadDhtSearchEntry$fShowDhtSearchEntry $fEqDhtState$fReadDhtState$fShowDhtStateTimedaskTime $fTimedRandT $fTimedRWST $fTimedStateT$fTimedWriterT$fTimedReaderT NetworkLogged NetworkEvent NetworkState Networked sendPacketrunNetworkLoggedevalNetworkLoggedexecNetworkLogged$fNetworkedStateT$fNetworkedRandT$fNetworkedWriterT$fNetworkedReaderT$fNetworkedStateT0$fNetworkedNetworkLogged$fMonadNetworkLogged$fApplicativeNetworkLogged$fFunctorNetworkLogged$fMonadStateNetworkLogged$fMonadRandomBytesNetworkLogged$fTimedNetworkLoggedKeyedTKeyRing runKeyedT evalKeyedT $fKeyedKeyedT$fMonadStatesKeyedT $fMonadKeyedT$fApplicativeKeyedT$fFunctorKeyedT$fMonadWriterKeyedT$fMonadRandomBytesKeyedT$fMonadTransKeyedT$fMonadIOKeyedT$fNetworkedKeyedT $fTimedKeyedTTimedT runTimedT $fTimedTimedT $fMonadTimedT$fApplicativeTimedT$fFunctorTimedT$fMonadStateTimedT$fMonadWriterTimedT$fMonadRandomBytesTimedT$fMonadTransTimedT$fMonadIOTimedT$fNetworkedTimedT $fKeyedTimedT ArbStdGenunwrapArbStdGenTestDhtNodeMonad DhtPKPacket NatPingPacket RequestInfo requestTo requestSearch DhtNodeMonad sendDhtPacketsendRpcRequestsendNodesRequestsendNodesResponsesendPingRequestsendPingResponsemodifyMzoom_initRandomSearchesinitDht bootstrapNoderandomRequestPeriodmaxBootstrapTimesrandomRequests checkPeriod maxChecks checkNodesdoDHTrequireNodesResponseWithinhandleNodesResponseresponseMaxNodeshandleNodesRequesthandlePingRequestrequirePingResponseWithinmaxPendingTime checkPendinghandlePingResponsesendPingRequestIfAppropriatehandleDhtRequestPackethandleNatPingPackethandleDhtPKPacketrunTestDhtNodeevalTestDhtNodeexecTestDhtNodeinitTestDhtState$fDhtNodeMonadKeyedT$fArbitraryArbStdGen$fEqRequestInfo$fReadRequestInfo$fShowRequestInfo$fReadArbStdGen$fShowArbStdGen