úÎ!4å1%6      !"#$%&'()*+,-./012345 experimentalPOSIXSafeà spacecookie6 a 7 spacecookie8 a 7 spacecookie Encode a 9 to a UTF-8 : spacecookieDecode a UTF-8 : to a 9 spacecookieStrip \r and \n from :s spacecookieNormalise a path and prevent  8https://en.wikipedia.org/wiki/Directory_traversal_attackdirectory traversal attacks.Safe spacecookie5rfc-defined gopher file types plus info line and HTML spacecookietext file, default type  spacecookie a gopher menu  spacecookieerror entry in menu spacecookie binary file spacecookiegif spacecookieimage of any format spacecookie"menu entry without associated file spacecookie.Special type for HTML, most commonly used for =https://en.wikipedia.org/wiki/Gopher_%28protocol%29#URL_linkslinks to other protocols spacecookie&gopher menu, wrapper around a list of s spacecookiereturn the given : as a file spacecookie5gopher menu containing a single error with the given 9 as text spacecookieentry in a gopher menu spacecookieifile type, menu text, filepath (does not need to be a real file), server name (optional), port (optional)  ;<= experimentalPOSIXSafe! spacecookie}A gophermap entry makes all values of a gopher menu item optional except for file type and description. When converting to a &, appropriate default values are used.  spacecookie6file type, description, path, server name, port number! spacecookie.Convert a gophermap to a gopher menu response." spacecookie Attoparsec > for the `https://raw.githubusercontent.com/sternenseemann/spacecookie/master/docs/gophermap-pygopherd.txtgophermap file format !"" ! experimentalPOSIXNoneM/ù ? spacecookie#TimedFastLogger and clean up action% spacecookie/necessary information to handle gopher requests' spacecookie4 name  of the server (either ip address or dns name)( spacecookieport to listen on) spacecookieuser to run the process as* spacecookieDefault % describing a server on  localhost:70.+ spacecookie<Auxiliary function that sets up the listening socket for - correctly and starts to listen., spacecookie3Run a gopher application that may cause effects in @m. The application function is given the gopher request (path) and required to produce a GopherResponse.- spacecookieSame as ,, but allows you to setup the A) manually and calls an action of type IO ()r as soon as the server is ready to accept requests. When the server terminates, it calls the action of type  Socket Inet6 Stream TCP -> IO () to clean up the socket.Spacecookie assumes the AG is properly set up to listen on the port and host specified in the % (i. e. B and C/ have been called). This can be achieved using +.sThis is intended for supporting systemd socket activation and storage. Only use, if you know what you are doing.. spacecookie7Run a gopher application that may not cause effects in @.%   !%&'()*+,-.%,.-%&'()*!+   D      !"#$$%&'())*+,-./0123456789:;9<=9>?9>@ABCDEFGHIJKLMNOPNQRNQST*spacecookie-0.2.1.1-HHFF0Es8xIJ1SNGaIR2YnmNetwork.Gopher.UtilNetwork.GopherNetwork.Gopher.Util.GophermapNetwork.Gopher.TypesasciiChrasciiOrduEncodeuDecode stripNewline santinizePathsantinizeIfNotUrlGopherFileTypeFile DirectoryPhoneBookServerErrorBinHexMacintoshFile DOSArchiveUnixUuencodedFileIndexSearchServer TelnetSession BinaryFileRedundantServer Tn3270SessionGifFile ImageFileInfoLineHtmlGopherResponse MenuResponse FileResponse ErrorResponseGopherMenuItemItem GophermapGophermapEntrygophermapToDirectoryResponseparseGophermap$fShowGophermapEntry$fEqGophermapEntry GopherConfig cServerName cServerPort cRunUserName defaultConfigsetupGopherSocket runGopherrunGopherManual runGopherPure$fToLogStrLogMessage$fFunctorGopherM$fApplicativeGopherM$fMonadGopherM$fMonadIOGopherM$fMonadReaderGopherM$fMonadErrorGopherMbaseGHC.CharchrGHC.WordWord8GHC.BaseordStringbytestring-0.10.8.2Data.ByteString.Internal ByteStringfileTypeToCharcharToFileTypeisFile*attoparsec-0.13.2.3-1B7gC0zLqr66G1FATj1fee#Data.Attoparsec.ByteString.InternalParserloggerghc-prim GHC.TypesIO%socket-0.8.2.0-Bq1H2WLCuQzADetflzY9fxSystem.Socket.Internal.SocketSocket System.Socketbindlisten