;5f      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e Safe-Inferredsimple rate limiter(c) 2012 Eric MertensBSD3jeremy@seereason.comstableportable Safe-Inferred "Construct a new rate limit control Execute this before sendingf#Loop which manages the limit timers  max burst lengthdelay (in microseconds) f   fNone+username on client systemhostname of client system!irc server client is connected toclient's real name      Safe-Inferred+None*2346B !"#$%&'()*+,-.ghi !"#$%&'()*+,-.$%&'()*+ !"#,-.  !"#$%&'()*+,-.ghiNone+@1get the nickname of the user who sent the messageA'figure out who to reply to for a given jVIf message was sent to a #channel reply to the channel. Otherwise reply to the sender.B!returns the receiver of a message0if multiple receivers, it returns only the first/0123456789:;<=>?@ABCD/0123456789:;<=>?@AB:;89<34567=>12?/0DC@AB/0123456789:;<=>?@ABCDNoneEFEFEFEFNone3Hparse a positive integerIparser that checks for the # (from the )J6create a bot part by using Parsec to parse the commandThe argument to J is a parser function.,The argument to that parsec function is the target% that the response should be sent to.The parser will receive the 7 from the 3.see dicePart for an example usage.GHIJKLMGHIJKLMGHIJKLGHIJKLM NoneNONONONO None+PBot configurationR!optional channel logging functionS app loggingTirc server to connectU3irc port to connect to (usually, 'PortNumber 6667')Virc nickWcommand prefixX irc user infoYchannel to joinZ%(burst length, delay in microseconds)k5connect to irc server and send NICK and USER commands\RsimpleBot connects to the server and handles messages using the supplied BotPartTsthe 'Chan Message' for the optional logging function will include all received and sent messages. This means that the bots output will be included in the logs.]SsimpleBot' connects to the server and handles messages using the supplied BotPartTsthe 'Chan Message' for the optional logging function will include all received and sent messages. This means that the bots output will be included in the logs.lcall m if n. Do nothing for Nothing.PQRSTUVWXYZ[kopqrloggingstu\Bot configurationbot parts (must include pingPart, or equivalent)vF for all forked handler threads and a function that forces a reconnect] optional logging functionapplication logging;rate limiter settings (burst length, delay in microseconds)irc server to connect3irc port to connect to (usually, 'PortNumber 6667')irc nickcommand prefix irc user infobot parts (must include pingPart,  channelsPart, and 'nickUserPart)' vH for all forked handler threads and an IO action that forces a reconnectl PQRSTUVWXYZ[\]\]PQRSTUVWXYZ[  P QRSTUVWXYZ[kopqrstu\]l None^_`^_`^_`^_` Noneabababab NonecdcdcdcdNoneeeeeNoneK  !"#$%&'()*+,-./0123456789:;<=>?@ABGHIJKLPQRSTUVWXYZ[\]w !"#$%&'(()**+,-./0123456789:;;<=>>?@ABBCDEFGHIJKLMNOPQRSTUV W X Y Y Z [ \ ] ^ _ ` a b c d e f g h i j k lmnopqrst u vwxywz{ | } ~  w ircbot-0.6.4Network.IRC.Bot.ErrorCodesNetwork.IRC.Bot.LimiterNetwork.IRC.Bot.TypesNetwork.IRC.Bot.LogNetwork.IRC.Bot.BotMonadNetwork.IRC.Bot.CommandsNetwork.IRC.Bot.PosixLoggerNetwork.IRC.Bot.ParsecNetwork.IRC.Bot.Part.NickUserNetwork.IRC.Bot.CoreNetwork.IRC.Bot.Part.ChannelsNetwork.IRC.Bot.Part.DiceNetwork.IRC.Bot.Part.HelloNetwork.IRC.Bot.Part.PingNetwork.IRC.BotnoNicknameGivenerroneusNickname nicknameInUse nickCollisionLimiterlimitsIn limitsOut limitsDelaylimitsThreadId newLimiterlimitUserusernamehostname servernamerealnamenullUserLoggerLogLevel ImportantNormalDebug stdoutLogger nullLoggerBotPartT unBotPartTBotEnvmessageoutChanlogFnbotName cmdPrefixBotMonad askBotEnv askMessage askOutChan localMessage sendMessagelogMwhoami runBotPartT mapBotPartT maybeZeroPong ToMessage toMessagePrivMsgprefix receiversmsgPingHostNamecmdpingprivMsg toPrivMsg sendCommandaskSenderNickNamereplyTo askReceiver$fToMessagePrivMsg$fToMessagePong posixLoggerfdWrites mapParsecTnat botPrefix parsecPart reportErrorshowErrorMessages$fBotMonadParsecT nickUserPartchangeNickUserBotConf channelLoggerloggerhostportnick commandPrefixuserchannelslimits nullBotConf simpleBot simpleBot'initChannelsPart channelsPart joinChanneldicePart diceCommand helloPart helloCommandpingPartlimiter$fBotMonadBotPartT$fMonadRWSrwsBotPartT$fMonadReaderrBotPartT irc-0.6.1.0Network.IRC.BaseMessage ircConnectwriteMaybeChanbaseControl.Concurrent.Chan writeChan Data.MaybeJustpartLoopircLoopconnectionLoopircConnectLoop doConnect reconnect onConnectLoop GHC.Conc.SyncThreadId