J @h      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij klmnopqrstuvwxyz{|}~hijhij_"What caused a membership message.  %Identifier for a membership message. Initial part of a 4 name that is chosen by the client when connecting. A  identifies a connection. A 2 is a collection of clients identified by a name. (Messages used to join or leave a group. LMessage regarding changes in group membership.  !"#=Union Type of messages that can be received from the server. $%&'Message received. ()*+,-.ATrue if the message has been sent with a different endian order. /Message to be sent. 012If True you won'3t get a copy of this message back from the server. 3Message body. 4Recipients of the message 5?To be used by the application to identify the kind of message. 6=Represents the orderings as specified by the Spread toolkit. 789:;<=BD  !"#$%&'()*+,-./0123456789:;<=>?@ABC?    !"" " !"#&%$$%&'()*+,-.()*+,-./0123450123456<;:987789:;<=Bnon-portable (concurrency) experimentalsanzhiyan@gmail.comDD for WriteOnly EE for ReadOnly FF= is an abstract type representing an unbounded FIFO channel. GBuild and returns a pair of F8, data written on the W end can be read from the R end. HWrite a value to a F. = Returns True if successful, False if the channel is closed. I Close the F%, data can be no more written to it.  Returns True if the F was already closed. JNon-blocking check. KRead the next value from the F.  |Nothing if the F is closed. LForks a F : data that will be written (W) [ or is yet to be read (R) on the argument, will also be available on the returned channel. MJPut a data item back onto a channel, where it will be the next item read. NReturns  if the supplied F is empty, i.e. readChan won' t block. O=Return a lazy list representing the contents of the supplied  F , much like System.IO.hGetContents. P#Write an entire list of items to a F. C Returning the remainder if the channel has been closed meanwhile. DEFGHIJKLMNOP FEDGHIJKLMNOP DEFGHIJKLMNOP"Q>The action should return True if the authentication succeded. R"Name of an authentication method. SConfiguration passed to ` TU#Server address, using localhost if . V-Server port, uses the default spread port if . WIt will become part of the  of the [ XIs this a priority connection? Y'Should it receive Membership messages? Z/Authentication methods to use when connecting. [>Abstract type representing a connection with a spread server. \:private name of this connection, useful for p2p messages. ]9defaulConf = Conf Nothing Nothing (mkPrivateName (B.pack "user")) False True [] ^The 0 will be truncated to the maximum allowed size. _`-Connects to the specified server, will use a "NULL" authentication method if the Z list is empty. b A spread server will refuse the connection if another with the same PrivateName is still active. aNSends a disconnection message to the server, which will close the connection. b@Messages received from now on will be available on the returned F cJStart fetching messages from the network, returns True if it was stopped. dOStop fetching messages from the network (at most one more message can be read) # , returns True if it was started. e&Joins a group, the server will send a . f'Leaves a group, the server will send a . gSend a regular message. QRSTUVWXYZ[\]^_`abcdefgQRSTUVWXYZTUVWXYZ[\\]^_`abcdefgU  !"#$%&'()*+,-./0123456789:;<=>@QRSTUVWXYZ[\]^_`abcdefga/012345'()*+,-.#&%$ 6<;:987  ?!"" "AC=@B>[\\STUVWXYZ]R^_Q`acdbefg      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~L hspread-0.3 Spread.Client!Control.Concurrent.Chan.CloseableSpread.ConstantsSpread.Client.MessageSpread.Client.Connection RejectedMsgWasOutWasGroupCauseNetworksetslocalSet Disconnect disconnectingLeaveleavingJoinjoiningGroupId PrivateName privateName PrivateGroupGroup groupNameKillMsgKillGroupMsgLeavingJoininggrp MembershipMsg SelfLeaveRegindex numMembersmembersgroupIdcause Transient changingGroupMessageRejected MembershipRegularInMsgIncoming inOrderinginSenderinDatainGroups inMsgTypeinEndianMismatchOutMsgOutgoing outOrdering outDiscardoutData outGroups outMsgType OrderingTypeSafeAgreedCausalFifoReliable UnreliablemkGroup makeGroupmkPrivateGroup mkPrivateNamereceive_internal putPaddedmulticast_internalWRChannewChan writeChan closeChan isClosedChanreadChanforkChan unGetChan isEmptyChangetChanContentswriteList2Chan AuthMethodAuthNameConfaddressport desiredNameprioritygroupMembership authMethods Connection privateGroup defaultConf mkAuthNameauthnameconnect disconnect getDupedChan startReceive stopReceivejoinleavesend mAX_AUTH_NAMEmAX_AUTH_METHODSdEFAULT_SPREAD_PORTuNRELIABLE_MESS rELIABLE_MESS fIFO_MESS cAUSAL_MESS aGREED_MESS sAFE_MESS rEGULAR_MESS sELF_DISCARD rEG_MEMB_MESStRANSITION_MESScAUSED_BY_JOINcAUSED_BY_LEAVEcAUSED_BY_DISCONNECTcAUSED_BY_NETWORKmEMBERSHIP_MESS rEJECT_MESS aRCH_ENDIAN eNDIAN_TYPE jOIN_MESS lEAVE_MESS kILL_MESS gROUPS_MESSmAX_MESSAGE_LENGTHmAX_GROUP_NAMEmAX_PRIVATE_NAMEsP_MAJOR_VERSIONsP_MINOR_VERSIONsP_PATCH_VERSIONaCCEPT_SESSIONSendable getGroupsgetDatagetServiceTypegetTypeRaw serviceTypeisenderigroupsitypedaemonEndianMismatchiendianMismatchbodyGIdGAskResultflip32parseRaw asRejected asRegular readGroupsgetGroupgetIntputIntisSetputGroupfromPrivateGroupsendableChItemClosedStreamghc-primGHC.BoolTrueANbase Data.MaybeNothingCchan getHandlethreadsyncnullAuthMethodbytestring-0.9.1.7Data.ByteString.Internal ByteStringreceiverhGetByte putAuthNames mkConnectMsg