úÎDV?TF      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE F*ByteString should be exactly 4 bytes long G Apply mask FGFG#HIn order to have an even more high-level API, we define a typeclass for I values the user can receive from and send to the socket. A few warnings  apply: * Natively, everything is represented as a H, so this is the  fastest instance  You should only use the I or the J instance when you are > sure that the data is UTF-8 encoded (which is the case for   messages). M Messages can be very large. If this is the case, it might be inefficient to  use the strict K and J instances. .For an end-user of this library, dealing with s would be a bit K low-level. This is why define another type on top of it, which represents ! data for the application layer. Different control messages  >The kind of message a server application typically deals with Type of a frame A frame Response to a  Simple request type  !"Request headers #  !"#    ! !"##Error in case of failed handshake. $%FProvides the logic for the initial handshake defined in the WebSocket 1 protocol. This function will provide you with a  which accepts and  upgrades the received  . Once this  is sent, you can start 0 sending and receiving actual application data. &In the case of a malformed request, a $# is returned. LAn upgrade response M Bad request #$%LM#$$%LM &The inverse of a parser ' Encode an HTTP upgrade response (Encode a frame )Encode a message *Encode a control message NEncode a close message OEncode a ping message PEncode a pong message +Encode an application message ,- &'()*NOP+,- &'()*NOP+,-Q)Internal state used by the demultiplexer RSTUQTUQTU.For asynchronous sending /@The monad in which you can write WebSocket-capable applications VWXEnvironment in which the / monad actually runs Y0"Options for the WebSocket program 1234Default options 5Run a / application on an 'Enumerator'/'Iteratee' pair. 6 Version of 5, which allows you to specify custom options ZFSpawn a thread which sends a ping every few seconds, according to the  options set [AReceive some data from the socket, using a user-supplied parser. 7$Low-level sending with an arbitrary & 8HIn case the user of the library wants to do asynchronous sending to the  socket, he can extract a .* and pass this value around, for example,  to other threads. \Get the current configuration ./VW0123456[78\./VWVW0123123456[78\9GProvides a simple server. This function blocks forever. Note that this J is merely provided for quick-and-dirty standalone applications, for real - applications, you should use a real server. Address to bind to Port to listen on Application to serve Never returns :This function wraps 5& in order to provide a simple API for  stand-alone servers. ]^9:9: _Parse an initial request `Parse a frame _`_` ;Read a 3 from the socket. Blocks until one is received and  returns a if the socket has been closed. <Send a  to the socket immediately. =Read a 7 from the socket. Blocks until a frame is received and  returns a if the socket has been closed. ANote that a typical library user will want to use something like  receiveByteStringData instead. >?A low-level function to send an arbitrary frame over the wire. ?Receive a message @Send a message AKReceive an application message. Automatically respond to control messages. B#Send an application-level message. C5Receive a message, treating it as data transparently DSend a text message ESend some binary data F  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF01234/569:" !   #$;<%=>?@ABCDE&.78'()*+,- ;<=>?@ABCDEb       !"#$$%&'(()*+,-./01234456789:;<=>?@ABCDEFGHIJKLMNONPKQMRSTUVWWXYZ3[\\]^_`a b ,cdefwebsockets-0.3.1.1Network.WebSocketsNetwork.WebSockets.MaskNetwork.WebSockets.TypesNetwork.WebSockets.HandshakeNetwork.WebSockets.EncodeNetwork.WebSockets.DemultiplexNetwork.WebSockets.MonadNetwork.WebSockets.SocketNetwork.WebSockets.DecodeWebSocketsDatafromLazyByteStringtoLazyByteString DataMessageBinaryTextControlMessagePongPingCloseMessage FrameType PongFrame PingFrame CloseFrame BinaryFrame TextFrameContinuationFrameFrameframeFin frameType framePayloadResponse responseCoderesponseMessageresponseHeadersRequest requestPathrequestHeadersHeadersHandshakeError handshakeEncoderresponseframemessagecontrolMessage dataMessagetextData binaryDataSender WebSocketsWebSocketsOptionsonPong pingIntervaldefaultWebSocketsOptions runWebSocketsrunWebSocketsWithsend getSender runServer runWithSocketreceiveRequest sendResponse receiveFrame sendFramereceiveMessage sendMessagereceiveDataMessagesendDataMessage receiveData sendTextDatasendBinaryDataMask maskPayloadbytestring-0.9.2.0Data.ByteString.Lazy.Internal ByteString text-0.11.1.5Data.Text.Lazy.InternalData.Text.InternalData.ByteString.Internal response101 response400closepingpongDemultiplexStateunDemultiplexStateemptyDemultiplexState demultiplex unWebSockets WebSocketsEnvspawnPingThreadreceive getOptions receiveEnumsendIterrequestbase Data.MaybeNothing