h$lz"      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                             Safe-Inferred Safe-Inferred%None  %R  simplexmq1The list of migrations in ascending order by date  None0  44None   !"#$%&'(  !"#$%&'((c) simplex.chatAGPL-3chat@simplex.chat experimental non-portableNone  #%:)) simplexmqKey hash newtype., simplexmqIV bytes newtype./ simplexmqAES key newtype.2 simplexmq(Various cryptographic or related errors.3 simplexmqRSA OAEP encryption error4 simplexmqRSA OAEP decryption error5 simplexmqRSA PSS signature error6 simplexmqAES initialization error7 simplexmqIV generation error8 simplexmqAES decryption error9 simplexmq!message does not fit in SMP block: simplexmq,failure parsing RSA-encrypted message header; simplexmqRSA signature newtype.> simplexmq Tuple of RSA L and F.? simplexmq Tuple of RSA L and I.@ simplexmqType-class used for both private key types: SafePrivateKey and FullPrivateKey.C simplexmq A newtype of  (PublicKey may be inside).F simplexmq A newtype of  (with PublicKey inside).I simplexmq A newtype of , with PublicKey removed.It is not possible to recover PublicKey from SafePrivateKey. The constructor of this type is not exported.L simplexmq A newtype of .O simplexmq,Remove public key exponent from APrivateKey.Q simplexmqGenerate RSA key pair with either SafePrivateKey or FullPrivateKey.U simplexmq8Digest (hash) of binary X509 encoding of RSA public key.V simplexmqSHA256 digest.W simplexmqAES256 key parser.X simplexmqIV bytes parser.Y simplexmqE2E encrypt SMP agent messages. https://github.com/simplex-chat/simplexmq/blob/master/rfcs/2021-01-26-crypto.md#e2e-encryptionZ simplexmqE2E decrypt SMP agent messages. https://github.com/simplex-chat/simplexmq/blob/master/rfcs/2021-01-26-crypto.md#e2e-encryption[ simplexmqAEAD-GCM encryption.Used as part of hybrid E2E encryption scheme and for SMP transport blocks encryption.\ simplexmqAEAD-GCM decryption.Used as part of hybrid E2E encryption scheme and for SMP transport blocks decryption.] simplexmqRandom AES256 key.^ simplexmq&Random IV bytes for AES256 encryption._ simplexmq Convert AEAD AuthTag to ByteString.` simplexmqConvert ByteString to AEAD AuthTag.a simplexmqRSA OAEP encryption.Used as part of hybrid E2E encryption scheme and for SMP transport handshake.b simplexmqRSA OAEP decryption.Used as part of hybrid E2E encryption scheme and for SMP transport handshake.c simplexmqRSA PSS message signing.Used by SMP clients to sign SMP commands and by SMP agents to sign messages.d simplexmqRSA PSS signature verification.Used by SMP servers to authorize SMP commands and by SMP agents to verify messages.e simplexmq(Base-64 X509 encoding of RSA public key.?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk@ABIJKFGHCDELMN?>)*+QRSTjOYZab;<=cd/01,-.[\P_`]^WXfekUighV23456789:(c) simplex.chatAGPL-3chat@simplex.chat experimental non-portableNone #%'(+8:?& simplexmq*Error of SMP encrypted transport over TCP. simplexmqerror parsing transport block simplexmqblock encryption error simplexmqblock decryption error simplexmqtransport handshake error simplexmqThe handle for SMP encrypted transport connection over Transport . simplexmq8Upgrade client socket to connection (used in the server) simplexmq8Upgrade server socket to connection (used in the client) simplexmqClose connection simplexmq*Read fixed number of bytes from connection simplexmqWrite bytes to connection simplexmqReceive ByteString from connection, allowing LF or CRLF termination. simplexmq7Send ByteString to connection terminating it with CRLF. simplexmqRun transport server (plain TCP or WebSockets) on passed TCP port and signal when server started and stopped via passed TMVar.;All accepted connections are passed to the passed function. simplexmq>Connect to passed TCP host:port and pass handle to the client. simplexmq!Trim trailing CR from ByteString. simplexmq%SMP encrypted transport error parser. simplexmq(Serialize SMP encrypted transport error. simplexmq2Encrypt and send block to SMP encrypted transport. simplexmq7Receive and decrypt block from SMP encrypted transport. simplexmq)Server SMP encrypted transport handshake.See https://github.com/simplex-chat/simplexmq/blob/master/protocol/simplex-messaging.md#appendix-aThe numbers in function names refer to the steps in the document. simplexmq)Client SMP encrypted transport handshake.See https://github.com/simplex-chat/simplexmq/blob/master/protocol/simplex-messaging.md#appendix-aThe numbers in function names refer to the steps in the document.%%None0's(c) simplex.chatAGPL-3chat@simplex.chat experimental non-portableNone '(/284- simplexmqSMP command error type. simplexmq.server response sent from client or vice versa simplexmqbad RSA key size in NEW or KEY commands (only 1024, 2048 and 4096 bits keys are allowed) simplexmqerror parsing command simplexmqtransmission has no required credentials (signature or queue ID) simplexmqtransmission has credentials that are not allowed for this command simplexmq%transmission has no required queue ID simplexmqType for protocol errors. simplexmq2incorrect block format, encoding or signature size simplexmq,SMP command is unknown or has invalid syntax simplexmqcommand authorization error - bad signature or non-existing SMP queue simplexmq,SMP queue capacity is exceeded on the server simplexmq6ACK command is sent without message to be acknowledged simplexmqinternal server error simplexmq=used internally, never returned by the server (to be removed) simplexmqSMP message body. simplexmqSMP message server ID. simplexmqSender's public key used by SMP server to verify authorization of SMP commands. simplexmqSender's private key used by the recipient to authorize (sign) SMP commands.Only used by SMP agent, kept here so its definition is close to respective public key. simplexmqRecipient's public key used by SMP server to verify authorization of SMP commands. simplexmqRecipient's private key used by the recipient to authorize (sign) SMP commands.Only used by SMP agent, kept here so its definition is close to respective public key. simplexmqTransmission correlation ID.A newtype to avoid accidentally changing order of transmission parts. simplexmqBase-64 encoded string. simplexmqParameterized type for SMP protocol commands from all participants. simplexmqSMP queue ID on the server. simplexmqSMP queue ID for the sender. simplexmqSMP queue ID for the recipient. simplexmq)unparsed SMP transmission with signature. simplexmq)unparsed SMP transmission with signature. simplexmq/signed parsed transmission, with parsing error. simplexmq SMP transmission with signature. simplexmq#SMP transmission without signature. simplexmq0Type for command or response of any participant. simplexmq.Singleton types for SMP protocol participants. simplexmqSMP protocol participants. simplexmqSMP transmission parser. simplexmqSMP command parser. simplexmqSerialize SMP command. simplexmqSMP error parser. simplexmqSerialize SMP error. simplexmq.Send signed SMP transmission to TCP transport. simplexmqSerialize SMP transmission. simplexmq5Validate that it is an SMP client command, used with  by . simplexmq5Validate that it is an SMP server command, used with  by . simplexmq(Receive client and server transmissions.6The first argument is used to limit allowed senders.  or  should be used here. None%/59 None  %'(/6N simplexmqopaque container for file handle with a type-safe IOMode constructors are not exported, openWriteStoreLog and openReadStoreLog should be used instead   None%'(/0>6 None6 None-0>?7FNone#%/7(((c) simplex.chatAGPL-3chat@simplex.chat experimental non-portableNone #%'(/?:] simplexmq.Runs an SMP server using passed configuration.See a full server here: https://github.com/simplex-chat/simplexmq/blob/master/apps/smp-server/Main.hs simplexmq>Runs an SMP server using passed configuration with signalling.This function uses passed TMVar to signal when the server is ready to accept TCP requests (True) and when it is disconnected from the TCP socket once the server thread is killed (False).(c) simplex.chatAGPL-3chat@simplex.chat experimental non-portableNone %'(./28:>N simplexmqErrors of another SMP agent. simplexmq7possibly should include bytestring that failed to parse simplexmq8possibly should include the prohibited SMP/agent message simplexmq0cannot RSA/AES-decrypt or parse decrypted header simplexmqinvalid RSA signature simplexmqSMP server errors. simplexmq)invalid server response (failed to parse) simplexmqunexpected response simplexmq network error simplexmq"handshake or other transport error simplexmqcommand response timeout simplexmqConnection error. simplexmq'connection alias is not in the database simplexmqconnection alias already exists simplexmq;connection is simplex, but operation requires another queue simplexmq-SMP agent protocol command or response error. simplexmq%command is prohibited in this context simplexmqcommand syntax is invalid simplexmq'entity ID is required with this command simplexmq2message size is not correct (no terminating space) simplexmq!message does not fit in SMP block simplexmq0Error type used in errors sent to agent clients. simplexmqcommand or response error simplexmqconnection errors simplexmq.SMP protocol errors forwarded to agent clients simplexmqSMP server errors simplexmqerrors of other agents simplexmq)agent implementation or dependency errors simplexmq&Error of message integrity validation. simplexmq0Result of received message integrity validation. simplexmqSMP queue status. simplexmqqueue is created simplexmq queue is confirmed by the sender simplexmqqueue is secured with sender key (only used by the queue recipient) simplexmqqueue is active simplexmq4queue is disabled (only used by the queue recipient) simplexmqPublic key used by SMP server to authorize (verify) SMP commands. simplexmq%Private key used to sign SMP commands simplexmq-Private key used to E2E decrypt SMP messages. simplexmq,Public key used to E2E encrypt SMP messages. simplexmq'SMP queue information sent out-of-band. https://github.com/simplex-chat/simplexmq/blob/master/protocol/simplex-messaging.md#out-of-band-messages simplexmq/Message acknowledgement mode of the connection. simplexmqConnection modes. simplexmqSMP agent connection alias. simplexmq4SMP server location and transport key digest (hash). simplexmq;Messages sent between SMP agents once SMP queue is secured. https://github.com/simplex-chat/simplexmq/blob/master/protocol/agent-protocol.md#messages-between-smp-agents simplexmq8the first message in the queue to validate it is secured simplexmqreply queue information simplexmq%agent envelope for the client message simplexmqSMP message formats. simplexmqSMP confirmation (see  https://github.com/simplex-chat/simplexmq/blob/master/protocol/simplex-messaging.md#send-message SMP protocol) simplexmq?r  None#%/rNone  #%-/?s simplexmq>Agent monad with MonadReader Env and MonadError AgentErrorType--(c) simplex.chatAGPL-3chat@simplex.chat experimental non-portableNone #$%'(-/>?y  simplexmq simplexmq>Runs an SMP agent as a TCP service using passed configuration."See a full agent executable here: https://github.com/simplex-chat/simplexmq/blob/master/apps/smp-agent/Main.hs simplexmqRuns an SMP agent as a TCP service using passed configuration with signalling.This function uses passed TMVar to signal when the server is ready to accept TCP requests (True) and when it is disconnected from the TCP socket once the server thread is killed (False). simplexmq$Creates an SMP agent client instance simplexmq)Create SMP agent connection (NEW command) simplexmq(Join SMP agent connection (JOIN command) simplexmq"Approve confirmation (LET command) simplexmq6Subscribe to receive connection messages (SUB command) simplexmq-Send message to the connection (SEND command) simplexmq*Suspend SMP agent connection (OFF command) simplexmq)Delete SMP agent connection (DEL command) simplexmqCreates an SMP agent client instance that receives commands and sends responses via s. simplexmqRuns an SMP agent instance that receives commands and sends responses via s.## !"##$%&'()*++,-./0123456789:;<=>?@ABCDDEFFGHHIJKLMNOPQRSSTUVWXYYZ[[\]]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                            &simplexmq-0.4.1-3ajLTyZJIzSCIq5kBRn4h6%Simplex.Messaging.Agent.RetryInterval/Simplex.Messaging.Agent.Store.SQLite.MigrationsSimplex.Messaging.UtilSimplex.Messaging.ParsersSimplex.Messaging.CryptoSimplex.Messaging.Transport&Simplex.Messaging.Transport.WebSocketsSimplex.Messaging.Protocol#Simplex.Messaging.Server.QueueStore!Simplex.Messaging.Server.StoreLog'Simplex.Messaging.Server.QueueStore.STM!Simplex.Messaging.Server.MsgStore%Simplex.Messaging.Server.MsgStore.STM Simplex.Messaging.Server.Env.STMSimplex.Messaging.Server Simplex.Messaging.Agent.ProtocolSimplex.Messaging.ClientSimplex.Messaging.Agent.Store$Simplex.Messaging.Agent.Store.SQLite"Simplex.Messaging.Agent.Env.SQLiteSimplex.Messaging.Agent.ClientSimplex.Messaging.AgentPaths_simplexmqCrypto.PubKey.RSA PrivateKey PublicKeySimplex.MessagingServerClient RetryIntervalinitialInterval increaseAfter maxIntervalwithRetryInterval Migrationnameupappgetrun initialize$fShowMigrationInternalExceptionunInternalExceptionraceAny_<$$><$?>bshow liftIOEither liftErrorliftEitherErrortryError$fMonadUnliftIOExceptT$fExceptionInternalException$fEqInternalException$fShowInternalExceptionbase64P base64StringP tsISO8601PparseparseAll parseRead parseRead1 parseRead2wordEnd parseStringblobFieldParserKeyHash$sel:unKeyHash:KeyHashIV $sel:unIV:IVKey$sel:unKey:Key CryptoErrorRSAEncryptErrorRSADecryptError RSASignErrorAESCipherError CryptoIVErrorAESDecryptErrorCryptoLargeMsgErrorCryptoHeaderError Signature$sel:unSignature:Signature FullKeyPair SafeKeyPair rsaPrivateKey publicKey APrivateKey$sel:unPrivateKey:APrivateKeyFullPrivateKey $sel:unPrivateKey:FullPrivateKeySafePrivateKey $sel:unPrivateKey:SafePrivateKey$sel:rsaPublicKey:PublicKeyremovePublicKey authTagSizegenerateKeyPair publicKey' publicKeySize validKeySize publicKeyHash sha256HashaesKeyPivPencryptdecrypt encryptAES decryptAES randomAesKeyrandomIV authTagToBS bsToAuthTag encryptOAEP decryptOAEPsignverifyserializePubKeyserializePrivKeypubKeyP binaryPubKeyPprivKeyPsafePrivateKey encodePubKey$fFromFieldPublicKey$fToFieldPublicKey$fIsStringPublicKey$fFromFieldSafePrivateKey$fToFieldSafePrivateKey$fIsStringFullPrivateKey$fFromFieldAPrivateKey$fToFieldAPrivateKey$fPrivateKeyAPrivateKey$fPrivateKeyFullPrivateKey$fPrivateKeySafePrivateKey$fIsStringSignature$fFromFieldKeyHash$fToFieldKeyHash$fIsStringKeyHash $fEqKeyHash $fOrdKeyHash $fShowKeyHash$fEqCryptoError$fShowCryptoError$fExceptionCryptoError $fEqSignature$fShowSignature$fEqAPrivateKey$fShowAPrivateKey$fEqFullPrivateKey$fShowFullPrivateKey$fEqSafePrivateKey$fShowSafePrivateKey $fEqPublicKey$fShowPublicKeyTransportError TEBadBlock TEEncrypt TEDecrypt TEHandshakeTHandle$sel:connection:THandle$sel:sndKey:THandle$sel:rcvKey:THandle$sel:blockSize:THandleTCP$sel:tcpHandle:TCP ATransportTProxy Transport transport transportNamegetServerConnectiongetClientConnectioncloseConnectioncGetcPutgetLnputLnrunTransportServerrunTransportClienttrimCRtransportErrorPserializeTransportError tPutEncrypted tGetEncryptedserverHandshakeclientHandshake$fTransportTCP$fIsStringSMPVersion$fArbitraryHandshakeError$fArbitraryTransportError$fEqServerHeader$fShowServerHeader$fEqTransportError$fGenericTransportError$fReadTransportError$fShowTransportError$fExceptionTransportError$fEqHandshakeError$fGenericHandshakeError$fReadHandshakeError$fShowHandshakeError$fExceptionHandshakeError$fEqSMPVersion$fOrdSMPVersionWSwsStream wsConnection $fTransportWS CommandError PROHIBITEDKEY_SIZESYNTAXNO_AUTHHAS_AUTHNO_QUEUE ErrorTypeBLOCKCMDAUTHQUOTANO_MSGINTERNAL DUPLICATE_MsgBodyMsgIdSenderPublicKeySenderPrivateKeyRecipientPublicKeyRecipientPrivateKeyCorrIdbsEncodedCommandNEWSUBKEYACKOFFDELSENDPINGIDSMSGENDOKERRPONGQueueIdSenderId RecipientIdSignedRawTransmissionRawTransmissionSignedTransmissionOrErrorSignedTransmission TransmissionCmdSPartySBroker SRecipientSSenderPartyBroker RecipientSender transmissionPcommandPserializeCommand errorTypePserializeErrorTypetPutserializeTransmission fromClient fromServertGet$fIsStringCorrId$fArbitraryCommandError$fArbitraryErrorType $fEqErrorType$fGenericErrorType$fReadErrorType$fShowErrorType$fEqCommandError$fGenericCommandError$fReadCommandError$fShowCommandError $fEqCorrId $fOrdCorrId $fShowCorrId $fShowParty $fEqCommand $fShowCommand $fShowCmd $fShowSPartyMonadQueueStoreaddQueuegetQueue secureQueue suspendQueue deleteQueue QueueStatus QueueActiveQueueOffQueueRec recipientIdsenderId recipientKey senderKeystatus mkQueueRec$fEqQueueStatusStoreLogopenWriteStoreLogopenReadStoreLogstoreLogFilePath closeStoreLoglogCreateQueuelogSecureQueuelogDeleteQueuereadWriteStoreLog QueueStoreQueueStoreDataqueuessenders newQueueStore updateQueues getRcpQueue$fMonadQueueStoreTVarSTM MonadMsgQueueisFullwriteMsg tryPeekMsgpeekMsg tryDelPeekMsg MonadMsgStore getMsgQueue delMsgQueueMessagemsgIdtsmsgBody STMMsgStore MsgStoreDatamessagesMsgQueuemsgQueue newMsgStore$fMonadMsgQueueMsgQueueSTM$fMonadMsgStoreTVarMsgQueueSTMSub$sel:subThread:Sub$sel:delivered:SubSubscriptionThreadNoSub SubPending SubThread$sel:subscriptions:Client$sel:rcvQ:Client$sel:sndQ:Client$sel:subscribedQ:Server$sel:subscribers:ServerEnv$sel:config:Env$sel:server:Env$sel:queueStore:Env$sel:msgStore:Env$sel:idsDrg:Env$sel:serverKeyPair:Env$sel:storeLog:Env ServerConfig$sel:transports:ServerConfig$sel:tbqSize:ServerConfig$sel:msgQueueQuota:ServerConfig$sel:queueIdBytes:ServerConfig$sel:msgIdBytes:ServerConfig$sel:storeLog:ServerConfig$sel:blockSize:ServerConfig"$sel:serverPrivateKey:ServerConfig newServer newClientnewSubscriptionnewEnv runSMPServerrunSMPServerBlocking SMPAgentError A_MESSAGE A_PROHIBITED A_ENCRYPTION A_SIGNATUREBrokerErrorTypeRESPONSE UNEXPECTEDNETWORK TRANSPORTTIMEOUTConnectionErrorType NOT_FOUND DUPLICATESIMPLEXCommandErrorTypeNO_CONNSIZELARGEAgentErrorTypeCONNSMPBROKERAGENT MsgErrorType MsgSkippedMsgBadId MsgBadHash MsgDuplicate MsgIntegrityMsgOkMsgError AgentMsgIdNew ConfirmedSecuredActiveDisabledVerificationKey SignatureKey DecryptionKey EncryptionKey SMPQueueInfoAckModeOnOffOnOff InvitationIdIntroIdConfirmationIdConnId SMPServerhostportkeyHashAMessageHELLOREPLYA_MSG SMPMessageSMPConfirmationconnInfo senderMsgIdsenderTimestamppreviousMsgHash agentMessageMsgMeta integrity recipientbrokersenderMsgHashACommandINVJOINREQACPTINFOCONDOWNUPMIDSENTMERRConnInfoSAPartySAgentSClientAPartyAgentACorrIdATransmissionOrError ATransmissionARawTransmissionparseSMPMessageserializeSMPMessage smpQueueInfoP smpServerPserializeSmpQueueInfoserializeServer msgIntegrityPserializeMsgIntegrityagentErrorTypePserializeAgentErrortPutRawtGetRaw$fTestEqualityAPartySAParty$fIsStringSMPServer$fArbitraryCommandErrorType$fArbitraryConnectionErrorType$fArbitraryBrokerErrorType$fArbitrarySMPAgentError$fArbitraryAgentErrorType$fEqAgentErrorType$fGenericAgentErrorType$fReadAgentErrorType$fShowAgentErrorType$fExceptionAgentErrorType$fEqSMPAgentError$fGenericSMPAgentError$fReadSMPAgentError$fShowSMPAgentError$fExceptionSMPAgentError$fEqBrokerErrorType$fGenericBrokerErrorType$fReadBrokerErrorType$fShowBrokerErrorType$fExceptionBrokerErrorType$fEqConnectionErrorType$fGenericConnectionErrorType$fReadConnectionErrorType$fShowConnectionErrorType$fExceptionConnectionErrorType$fEqCommandErrorType$fGenericCommandErrorType$fReadCommandErrorType$fShowCommandErrorType$fExceptionCommandErrorType $fEqMsgMeta $fShowMsgMeta$fEqMsgIntegrity$fShowMsgIntegrity$fEqMsgErrorType$fShowMsgErrorType$fShowSMPMessage$fShowQueueStatus$fReadQueueStatus$fShowQueueDirection$fShowAMessage$fEqSMPQueueInfo$fShowSMPQueueInfo $fEqAckMode $fShowAckMode $fEqOnOff $fShowOnOff $fReadOnOff $fEqSMPServer$fOrdSMPServer$fShowSMPServer $fEqAParty $fShowAParty$fShowACommand $fEqACommand $fShowACmd $fEqSAParty $fShowSAPartySMPClientErrorSMPServerErrorSMPResponseErrorSMPUnexpectedResponseSMPResponseTimeoutSMPNetworkErrorSMPTransportErrorSMPSignatureErrorSMPClientConfig$sel:qSize:SMPClientConfig%$sel:defaultTransport:SMPClientConfig$sel:tcpTimeout:SMPClientConfig$sel:smpPing:SMPClientConfig!$sel:smpBlockSize:SMPClientConfig#$sel:smpCommandSize:SMPClientConfigSMPServerTransmission SMPClient$sel:blockSize:SMPClientsmpDefaultConfig getSMPClientcloseSMPClientcreateSMPQueuesubscribeSMPQueuesecureSMPQueuesendSMPMessage ackSMPMessagesuspendSMPQueuedeleteSMPQueuesendSMPCommand$fEqSMPClientError$fShowSMPClientError$fExceptionSMPClientError StoreError SEInternal SEUniqueIDSEConnNotFoundSEConnDuplicate SEBadConnTypeSEConfirmationNotFound SEMsgNotFoundSEBadQueueStatusSENotImplemented InternalTs InternalId$sel:unId:InternalIdMsgBase$sel:connAlias:MsgBase$sel:internalId:MsgBase$sel:internalTs:MsgBase$sel:msgBody:MsgBase$sel:internalHash:MsgBase DeliveredTsSentTs SndMsgStatus SndMsgCreated SndMsgSentSndMsgDelivered InternalSndId$sel:unSndId:InternalSndIdSndMsg$sel:msgBase:SndMsg$sel:internalSndId:SndMsg$sel:sndMsgStatus:SndMsg$sel:sentTs:SndMsg$sel:deliveredTs:SndMsg AckSenderTs AckBrokerTs RcvMsgStatusReceivedAcknowledgedToBrokerAcknowledgedToSenderBrokerTsBrokerId ExternalSndTs ExternalSndId InternalRcvId$sel:unRcvId:InternalRcvIdRcvMsg$sel:msgBase:RcvMsg$sel:internalRcvId:RcvMsg$sel:externalSndId:RcvMsg$sel:externalSndTs:RcvMsg$sel:brokerId:RcvMsg$sel:brokerTs:RcvMsg$sel:rcvMsgStatus:RcvMsg$sel:ackBrokerTs:RcvMsg$sel:ackSenderTs:RcvMsg$sel:externalPrevSndHash:RcvMsg$sel:msgIntegrity:RcvMsgMsgMRcvMSnd BroadcastId PendingMsg$sel:connId:PendingMsg$sel:msgId:PendingMsg SndMsgData$sel:internalId:SndMsgData$sel:internalSndId:SndMsgData$sel:internalTs:SndMsgData$sel:msgBody:SndMsgData$sel:internalHash:SndMsgData$sel:previousMsgHash:SndMsgData RcvMsgData$sel:msgMeta:RcvMsgData$sel:msgBody:RcvMsgData$sel:internalRcvId:RcvMsgData$sel:internalHash:RcvMsgData#$sel:externalPrevSndHash:RcvMsgDataPrevSndMsgHashPrevRcvMsgHashPrevExternalSndIdAcceptedConfirmation($sel:confirmationId:AcceptedConfirmation $sel:connId:AcceptedConfirmation#$sel:senderKey:AcceptedConfirmation($sel:senderConnInfo:AcceptedConfirmation%$sel:ownConnInfo:AcceptedConfirmationNewConfirmation$sel:connId:NewConfirmation$sel:senderKey:NewConfirmation#$sel:senderConnInfo:NewConfirmationConnData$sel:connId:ConnDataSomeConn SConnTypeSCRcvSCSndSCDuplex Connection RcvConnection SndConnectionDuplexConnectionConnTypeCRcvCSndCDuplexSndQueue$sel:server:SndQueue$sel:sndId:SndQueue$sel:sndPrivateKey:SndQueue$sel:encryptKey:SndQueue$sel:signKey:SndQueue$sel:status:SndQueueRcvQueue$sel:server:RcvQueue$sel:rcvId:RcvQueue$sel:rcvPrivateKey:RcvQueue$sel:sndId:RcvQueue$sel:decryptKey:RcvQueue$sel:verifyKey:RcvQueue$sel:status:RcvQueueMonadAgentStore createRcvConn createSndConngetConn getAllConnIds getRcvConn deleteConnupgradeRcvConnToDuplexupgradeSndConnToDuplexsetRcvQueueStatussetRcvQueueActivesetSndQueueStatus updateSignKeycreateConfirmationacceptConfirmationgetAcceptedConfirmationremoveConfirmations updateRcvIds createRcvMsg updateSndIds createSndMsgupdateSndMsgStatusgetPendingMsgDatagetPendingMsgsgetMsg checkRcvMsgupdateRcvMsgAckconnType$fTestEqualityConnTypeSConnType $fEqSomeConn$fEqStoreError$fShowStoreError$fExceptionStoreError$fEqMsg $fShowMsg $fEqRcvMsg $fShowRcvMsg $fEqSndMsg $fShowSndMsg $fEqMsgBase $fShowMsgBase$fShowPendingMsg$fEqInternalId$fShowInternalId$fEqSndMsgStatus$fShowSndMsgStatus$fEqInternalSndId$fShowInternalSndId$fEqRcvMsgStatus$fShowRcvMsgStatus$fEqInternalRcvId$fShowInternalRcvId $fEqConnData$fShowConnData $fEqConnType$fShowConnType $fEqSndQueue$fShowSndQueue $fEqRcvQueue$fShowRcvQueue$fShowSomeConn$fShowSConnType $fEqSConnType$fShowConnection$fEqConnection SQLiteStore$sel:dbFilePath:SQLiteStore$sel:dbConnPool:SQLiteStore$sel:dbNew:SQLiteStorecreateSQLiteStoreconnectSQLiteStorewithConnectionwithTransactionfromTextField_$fFromRow(,,,,,,,,,,)$fFromFieldSMPQueueInfo$fToFieldSMPQueueInfo$fFromFieldMsgIntegrity$fToFieldMsgIntegrity$fToFieldSndMsgStatus$fToFieldRcvMsgStatus$fFromFieldInternalId$fToFieldInternalId$fFromFieldInternalSndId$fToFieldInternalSndId$fFromFieldInternalRcvId$fToFieldInternalRcvId$fFromFieldQueueStatus$fToFieldQueueStatus$fMonadAgentStoreSQLiteStorem$sel:store:Env$sel:clientCounter:Env$sel:reservedMsgSize:Env$sel:randomServer:Env AgentConfig$sel:tcpPort:AgentConfig$sel:smpServers:AgentConfig$sel:rsaKeySize:AgentConfig$sel:connIdBytes:AgentConfig$sel:tbqSize:AgentConfig$sel:dbFile:AgentConfig$sel:dbPoolSize:AgentConfig$sel:smpCfg:AgentConfig$sel:retryInterval:AgentConfig"$sel:reconnectInterval:AgentConfigminutedefaultAgentConfignewSMPAgentEnv AgentMonad AgentClient$sel:rcvQ:AgentClient$sel:subQ:AgentClient$sel:msgQ:AgentClient$sel:smpClients:AgentClient$sel:subscrSrvrs:AgentClient$sel:subscrConns:AgentClient$sel:activations:AgentClient$sel:connMsgQueues:AgentClient"$sel:connMsgDeliveries:AgentClient$sel:srvMsgQueues:AgentClient!$sel:srvMsgDeliveries:AgentClient$sel:reconnections:AgentClient$sel:clientId:AgentClient$sel:agentEnv:AgentClient$sel:smpSubscriber:AgentClient$sel:lock:AgentClientnewAgentClientcloseAgentClient withAgentLock newRcvQueuesubscribeQueueaddSubscriptionremoveSubscription addActivation getActivationremoveActivation logServersendConfirmation sendHellosendAcksendAgentMessagedecryptAndVerify verifyMessage cryptoErrorAgentErrorMonad runSMPAgentrunSMPAgentBlockinggetSMPAgentClientdisconnectAgentClientcreateConnectionjoinConnectionacceptConnectionsubscribeConnection sendMessage ackMessagesuspendConnectiondeleteConnectiongetAgentClientrunAgentClientversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName stm-2.5.0.0Control.Concurrent.STM.TBQueueTBQueue