̩x      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu v w Rate limit operations for IRC(c) Eric Mertens, 2016ISCemertens@gmail.comSafeThe O keeps track of rate limit settings as well as the current state of the limit.xTime that client can sendysecondszseconds`Construct a new rate limit with the RFC 2813 specified 2 second penalty and 10 second threshold@Construct a new rate limit with the given penalty and threshold.)Account for an event in the context of a . This command will block and delay as required to satisfy the current rate. Once it returns it is safe to proceed with the rate limited action.{xyz penalty  threshold {xyz*Parser for mIRC's text formatting encoding(c) Eric Mertens, 2016ISCemertens@gmail.comNoneEParse mIRC encoded format characters and hide the control characters.Parse mIRC encoded format characters and render the control characters explicitly. This view is useful when inputting control characters to make it clear where they are in the text. |}~|}~(Helpers for interpreting IRC reply codes(c) Eric Mertens, 2016ISCemertens@gmail.comSafebCategories for reply codes'0-99 Messages between client and server200-399 Responses to commands 200-399 Errors  Uncategorized?Categorize replies according to the ranges provided in RFC 2812  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0Parser for unstructure configuration file format(c) Eric Mertens, 2016ISCemertens@gmail.comNoneI1Parser for consuming key-value pairs of sections.9Class for types that have a well-known way to parse them. Parse a valueVConfiguration parser tracking current location and for propagating error information.JRun a top-level parser to either get the parsed value or an error message.8A parser that always fails with the given error message.VEmbed a parser into an extended location. This is used when parsing inside a section.Parse a  according to the method in the Lift a  into a 5 leaving the current section information unmodified.Run a  given particular .. This will only succeed when the value is a F and the section parser consumes all of the sections from that value. (sectionOpt = sectionOptWith parseConfig Parses the value stored at the given section with the given parser. Nothing is returned if the section is missing. Just is returned if the parse succeeds Error is raised if the section is present but the parse fails-Parse the value at the given section or fail.Matches < values, extends the error location with a zero-based indexMatches  valuesMatches  values ignoring the baseMatches  values.error message   Console-mode text box(c) Eric Mertens, 2016ISCemertens@gmail.comNoneDefault 'EditBox valueDSets the given string to the yank buffer unless the string is empty.Indicate that the contents of the text box were successfully used by the program. This clears the contents and cursor and updates the history.AUpdate the editbox to reflect the earlier element in the history.?Update the editbox to reflect the later element in the history.&Delete the character after the cursor.'Delete the character before the cursor..Jump the cursor to the beginning of the input.(Jump the cursor to the end of the input.LDelete all text from the cursor to the end and store it in the yank buffer.RDelete all text from the cursor to the beginning and store it in the yank buffer.%Insert the yank buffer at the cursor.KKill the content from the cursor back to the previous word boundary. When yank( is set the yank buffer will be updated.8Insert a character at the cursor and advance the cursor.5Insert a string at the cursor and advance the cursor.Move the cursor left.Move the cursor right.3Move the cursor left to the previous word boundary.0Move the cursor right to the next word boundary."yank Lens utility functions(c) Eric Mertens, 2016ISCemertens@gmail.comNoneModify the target of a d with a function. The result is strict in the results of applying the function. Strict version of 9Set a value strictly in the set value. Strict version of .Strict function applicationStrict function composition(Operations for interpreting mode changes(c) Eric Mertens, 2016ISCemertens@gmail.comNone 5Settings that describe how to interpret channel modes"modes for channel lists (e.g. ban)"modes that always have an argument$modes that have an argument when setmodes that never have arguments0modes requiring a nickname argument (mode,sigil)"The channel modes used by Freenode"The default UMODE used by Freenode\Split up a mode change command and arguments into individual changes given a configuration.SConstruct the arguments to a MODE command corresponding to the given mode changes.mode interpretation modes arguments (set, mode, parameter) (set,mode,parameter)  Safe      3Type and operations for nicknames and channel names(c) Eric Mertens, 2016ISCemertens@gmail.comSafe .Identifier representing channels and nicknames  Construct an   from a  Returns the original  of an   Returns the case-normalized  of an  . which is suitable for comparison or hashing.cCapitalize a string according to RFC 2812 Latin letters are capitalized and {|}~ are mapped to []^Hash on normalized identifier#Comparison on normalized identifier!Equality on normalized identifier                  User hostmasks(c) Eric Mertens, 2016ISCemertens@gmail.comNoned packages a nickname along with the username and hsotname if they are known in the current context.nicknameusernamehostname into  field.Render  as nick!username@hostnameSplit up a hostmask into a nickname, username, and hostname. The username and hostname might not be defined but are delimited by a ! and @ respectively. (Low-level representation of IRC messages(c) Eric Mertens, 2016ISCemertens@gmail.comNone breaks down the IRC protocol into its most basic parts. The "trailing" parameter indicated in the IRC protocol with a leading colon will appear as the last parameter in the parameter list.8Note that RFC 2812 specifies a maximum of 15 parameters. .:prefix COMMAND param0 param1 param2 .. paramN*Time from znc.in/server-time-iso extension Optional sender of message!command"command parameters)mAttempt to split an IRC protocol message without its trailing newline information into a structured message.RFC 2812 specifies that there can only be up to 14 "middle" parameters, after that the fifteenth is the final parameter and the trailing : is optional!Parse a whole IRC message assuming that the trailing newlines have already been removed. This parser will parse valid messages correctly but will also accept some invalid messages. Presumably the server isn't sending invalid messages!WParse the list of parameters in a raw message. The RFC allows for up to 15 parameters.EParse the server-time message prefix: @time=2015-03-04T22:29:04.064Z-Take the bytes up to the next space delimiter*ZTake the bytes up to the next space delimiter. If the first character of this token is a :* then take the whole remaining bytestringxSerialize a structured IRC protocol message back into its wire format. This command adds the required trailing newline.+Construct a new  without a time or prefix.Build concatenate a list of parameters into a single, space- delimited bytestring. Use a colon for the last parameter if it contains a colon or a space.^When the first parser succeeds require the second parser to succeed. Otherwise return Nothing,Try to decode a message as UTF-8. If that fails interpret it as Windows CP1252 This helps deal with clients like XChat that get clever and otherwise misconfigured clients. !"%&'()*+command  parameters , !"%&'()*+, !"+('%&)*, !"%&'()*+, )Settings for an individual IRC connection(c) Eric Mertens, 2016ISCemertens@gmail.comNone/connection nickname0connection username1connection realname / GECOS2 CTCP userinfo3server password4 SASL username5 SASL password6server hostname7 server port8use TLS to connect9disable certificate checking:path to client TLS certificate;path to client TLS key<7raw IRC messages to transmit upon successful connection=hostname of SOCKS proxy>port of SOCKS proxy?0additional CA certificates for validating server@"Channels with chanserv permissionsTJLoad the defaults for server settings based on the environment variables.USER,  IRCPASSSWORD, and  SASLPASSWORD are used.'-./0123456789:;<=>?@BCDEFGHIJKLMNOPQRST'-./0123456789:;<=>?@BCDEFGHIJKLMNOPQRST'-./0123456789:;<=>?@ERHSFJIDGNQOPCLMKBT-./0123456789:;<=>?@BCDEFGHIJKLMNOPQRST #Interface to the connection package(c) Eric Mertens, 2016ISCemertens@gmail.comNoneU Create a new 5 which will be closed when the continuation finishes.UUUUEvent-based network IO(c) Eric Mertens, 2016ISCemertens@gmail.comNone VThe sum of incoming events from a network connection. All events are annotated with a network ID matching that given when the connection was created as well as the time at which the message was recieved.W/Event for a new recieved line (newline removed)X6Final message indicating the network connection failedY8Final message indicating the network connection finishedZHandle for a network connection[:Identifier used to match connection events to connections.\Schedule a message to be transmitted on the network connection. These messages are sent unmodified. The message should contain a newline terminator.](Force the given connection to terminate.^9Initiate a new network connection according to the given -R. All events on this connection will be added to the given queue. The resulting Z^ value can be used for sending outgoing messages and for early termination of the connection.VWXYZ[\]^)Identifier to be used on incoming events _ VWXYZ[\]^ Z[VWXY^]\ VWXYZ[\]^_Tab-completion logic(c) Eric Mertens, 2016ISCemertens@gmail.comNone`&Perform word completion on a text box.The leading update operation is applied to the result of tab-completion when tab completing from the beginning of the text box. This is useful when auto-completing a nick and including a trailing colon.The reversedK parameter indicates that tab-completion should return the previous entry. `leading update operation  reversed possible completions abc`` `abcSmart constructors for (c) Eric Mertens, 2016ISCemertens@gmail.comNonedPRIVMSG commande MODE commandf WHOIS commandg WHO commandhWHOWAS commandi NICK commandj PART commandk JOIN commandlINVITE commandm TOPIC commandn KICK commandoREMOVE commandp QUIT commandq PASS commandr PONG commandtCAP REQ commanduCAP END commandvCAP LS commanddtarget message e target  parameters f parameters g parameters h parameters i nickname jchannel message kchannel key l nickname  channel mchannel topic n channel  nickname  message o channel  nickname  message p quit message q password r parameters s username  set +w  set +i  realname t capabilities uvdefghijklmnopqrstuvuvtlkneijqrdpomsgfhdefghijklmnopqrstuv)High-level representation of IRC messages(c) Eric Mertens, 2016ISCemertens@gmail.comNonew8Targets used to direct a message to a window for displayxMetadata update for a usery(Directed message to channel or from userzNetwork-level message{Completely hidden messagekicker channel kickee commentuser channel topicsource target txtsource target txtsource target txtsource target txtInterpret a low-level  as a high-level 4. Messages that can't be understood are wrapped in .XTarget information for the window that could be appropriate to display this message in.' of the user responsible for a message.XText representation of an IRC message to be used for matching with regular expressions.`Split a nick into text parts group by whether or not those parts are valid nickname characters.Maximum length computation for the message part for privmsg and notice. Note that the need for the limit is because the server will limit the length of the message sent out to each client, not just the length of the messages it will recieve.Note that the length is on the *encoded message* which is UTF-8 The calculation isn't using UTF-8 on the userinfo part because I'm assuming that the channel name and userinfo are all ASCII .:my!user@info PRIVMSG #channel :messagebodyrn $wxyz{|}~"wxyz{|}~"|}~wxyz{ wxyz{|}~Messages to be added to buffers(c) Eric Mertens, 2016ISCemertens@gmail.comNone7Compute a searchable text representation of the message 2Types and operations for managing message buffers.(c) Eric Mertens, 2016ISCemertens@gmail.comNone;Flag for the important of a message being added to a windowDon't update unread countIncrement unread count-Increment unread count and set important flagA J tracks all of the messages and metadata for a particular message buffer.!Messages to display, newest first'Messages added since buffer was visible&Indicates an important event is unread,A single message to be displayed in a windowOriginal Haskell valueSearchable text formNormal rendered imageDetailed rendered imageA window with no messages~Adds a given line to a window as the newest message. Window's unread count will be updated according to the given importance.?Update the window clearing the unread count and important flag. *Mapping from identifiers to console colors(c) Eric Mertens, 2016ISCemertens@gmail.comNoneCompute a color from the denotation of an identifier. This color will be consistent for different capitalizations and will be consistent across program executions.Renderer for message lines(c) Eric Mertens, 2016ISCemertens@gmail.comNone%Level of detail to use when renderingonly render nicknamesrender full user info'Parameters used when rendering messagesrestricted message sigils sender sigilsnicknames to highlightDefault MessageRenderParams& with no sigils or nicknames specifiedWConstruct a message given the time the message was received and its render parameters.mConstruct a message given the time the message was received and its render parameters using a detailed view.+Render the sigils for a restricted message. Render a ; given the sender's sigils and the nicknames to highlight. Render a  as time using quiet attributes 23:15  Render a , as full date and time user quiet attributes 2016-07-24 23:15:10 ,The attribute to be used for "quiet" contentRender a chat message given a rendering mode, the sigils of the user who sent the message, and a list of nicknames to highlight.*Render a nickname in its hash-based color.Render an a full user. In normal mode only the nickname will be rendered. If detailed mode the full user info including the username and hostname parts will be rendered. The nickname will be colored.GRender an identifier without using colors. This is useful for metadata.Parse message text to construct an image. If the text has formatting control characters in it then the text will be rendered according to the formatting codes. Otherwise the nicknames in the message are highlighted.Given a list of nicknames and a chat message, this will generate an image where all of the occurrences of those nicknames are colored.KReturns image and identifier to be used when collapsing metadata messages.:Image used when treating ignored chat messages as metadatatime of message sigils sigils nicknames to highlight sigils (e.g. @+) nicknames to highlight IRC channel session state(c) Eric Mertens, 2016ISCemertens@gmail.comNone  topic textauthor and timestamp for topicuser list and sigilschannel settings and parametersmode, mask, setter, set timecreation time of channeldelayed op messagesConstruct an empty # into a mask list for a given mode.Add a user to the user list Remove a user from the user listRename a user in the user listSet the channel topicmode IRC connection session state(c) Eric Mertens, 2016ISCemertens@gmail.comNone001  is the first message received when transitioning from the initial handshake to a connected state. At this point we know what nickname the server is using for our connection, and we can start scheduling PINGs.uThese replies are interpreted by the client and should only be shown in the detailed view. Any reply interpreted by  should be listed here. Return  for messages that should be hidden outside of full detail view. These messages are interpreted by the client so the user shouldn't need to see them directly to get the relevant information.>Predicate to test if the connection has op in a given channel.V         message received my nickname  time of message sender channel mode flags mode parameters  !  "key=value""#$%&'()*+!     !     =           !"#$%&'()*+*Client configuration format and operations(c) Eric Mertens, 2016ISCemertens@gmail.comNone!"\Top-level client configuration information. When connecting to a server configuration from $ is used where possible, otherwise  is used.Default connection settingsHost-specific settings*Load the configuration file defaulting to ~.glircconfig. This action can throw , and - exceptions.-./0path to configuration file 12345678-./012345678/Primary client state type and update operations(c) Eric Mertens, 2016ISCemertens@gmail.comNone (All state information for the IRC client"client message buffers#currently focused buffer$sec%state of active connections'network connection context(incoming network event queue)network name to connection ID* VTY handle+primary text box,current terminal width-current terminal height.client configuration/buffer scroll lines0use detailed rendering mode1ignored nicknames;Unfocused first, followed by focuses sorted by network. Within the same network the network focus comes first and then the channels are ordered by channel identifierTTPredicate for messages that should be ignored based on the configurable ignore list`Remove a network connection and unlink it from the network map. This operation assumes that the networkconnection exists and should only be applied once per connection.G !"#$%&'()*+,-./0123456789:;>?@ABCDEFGHIJKLMNOPQRS9TU:;<V=>WXYZ[?\]^_`a? !"#$%&'()*+,-./0123456789:>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a?: !"#$%&'()*+,-./01MJ@LDBKC?>HAIGFENQ_X[TORa`WSVU67892345P\]YZ^0 !"#$%&'()*+,-./0123456789:;>?@ABCDEFGHIJKLMNOPQRS9TU:;<V=>WXYZ[?\]^_`a$Processing of command-line arguments(c) Eric Mertens, 2016ISCemertens@gmail.comNonebCommand-line argumentsdconfiguration file patheinitial networksfshow help messagegshow version message@Default values for argumentsAOption descriptionsjwLoad command line arguments. This action will terminate early in the case of the version flag, help flag, or an error.bcdefghiBC@AjDEF bcdefghij bcdefghij bcdefghiBC@AjDEF Implementation of slash commands(c) Eric Mertens, 2016ISCemertens@gmail.comNone GPair of implementations for executing a command and tab completing one. The tab-completion logic is extended with a bool indicating that tab completion should be reversedk%Possible results of running a commandl*Continue running client with updated statemClient should closenParse and execute the given command. When the first argument is Nothing the command is executed, otherwise the first argument is the cursor position for tab-completionHWhen used on a channel that the user is currently joined to this command will clear the messages but preserve the window. When used on a window that the user is not joined to this command will delete the window.IImplementation of /meJImplementation of /msgKReconnect to the currently focused network. It's possible that we're not currently connected to a network, so this is implemented as a client command.L=Predicate for mode commands that can be performed without opsosComplete the nickname at the current cursor position using the userlist for the currently focused channel (if any)7GMNOPQRklmSTUnVWXYZ[\]H^IJ_`abcdefghijklmnopqrsKtuLvo reversed wxklmnoklmno2GMNOPQRklmSTUnVWXYZ[\]H^IJ_`abcdefghijklmnopqrsKtuLvowx)Line renderers for channel mask list view(c) Eric Mertens, 2016ISCemertens@gmail.comNonep,Render the lines used in a channel mask listp Mask mode Focused network Focused channel ppp)Line renderers for channel user list view(c) Eric Mertens, 2016ISCemertens@gmail.comNoneq3Render the lines used in a simple user list window.rGRender lines for detailed channel user list which shows full user info.qFocused network name Focused channel name rFocused network name Focused channel name qrqrqr UI renderer(c) Eric Mertens, 2016ISCemertens@gmail.comNones Generate a yu for the current client state. The resulting client state is updated for render specific information like scrolling.sz{|}~sssz{|}~Event loop for IRC client(c) Eric Mertens, 2016ISCemertens@gmail.comNone<Sum of the three possible event types the event loop handlesKey presses and resizingIncoming network events'Timed action and the applicable networkBlock waiting for the next V. This function will compute an appropriate timeout based on the current connections.t"Apply this function to an initial   to launch the client.1Respond to a network connection closing normally.3Respond to a network connection closing abnormally.Respond to an IRC protocol line. This will parse the message, updated the relevant connection state and update the UI buffers.Respond to a VTY event.,Map keyboard inputs to actions in the client0Scroll the current buffer to show older messages0Scroll the current buffer to show newer messages@Compute the number of lines in a page at the current window sizeJump the focus of the client to a buffer that has unread activity. Some events like errors or chat messages mentioning keywords are considered important and will be jumped to first.BJump the focus directly to a window based on its zero-based index.Respond to the TAB key being pressed. This can dispatch to a command specific completion mode when relevant. Otherwise this will complete input based on the users of the channel related to the current buffer.3Interpret whatever text is in the textbox. Leading /d indicates a command. Otherwise if a channel or user query is focused a chat message will be sent.;Treat the current text input as a chat message and send it.Respond to a timer event.tfinished network current time failed network current time termination reason Network ID of message current time !Raw IRC message without newlines zero-based window index  reversed Network related to event Action to perform ttt Entry-point of executable(c) Eric Mertens, 2016ISCemertens@gmail.comNoneu Initialize a , value and run a continuation. Shutdown the ! once the continuation finishes.vMain action for IRC clientwoCreate connections for all the networks on the command line. Set the client focus to the first network listed.uvwuvwuvwuvw!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'() * + , - . / 0 1 2 3 3 4 5 6 7 8 9 : ; < < = > ? @ A B C D E F G H I J K K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q rstuvwxyz{|}~      !"#$%&'()*+,-../01234567789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxxyz{|}~  !  *                   w       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijjihklmnopqrstuvwxyz{|}~smain Irc.RateLimitClient.MircFormatting Irc.CodesConfig.FromConfigClient.EditBox LensUtils Irc.Modes Paths_glircIrc.Identifier Irc.UserInfo Irc.RawIrcMsgClient.ServerSettingsClient.ConnectClient.NetworkConnectionClient.WordCompletion Irc.Commands Irc.MessageClient.Message Client.WindowClient.IdentifierColorsClient.Image.MessageClient.ChannelStateClient.ConnectionStateClient.Configuration Client.StateClient.CommandArgumentsClient.CommandsClient.Image.MaskListClient.Image.UserList Client.ImageClient.EventLoopMain RateLimitnewRateLimitDefault newRateLimit tickRateLimit parseIrcTextparseIrcTextExplicit ReplyTypeClientServerReply CommandReply ErrorReply CustomReplyERR_NUMERIC_ERRERR_TEXTTOOSHORTERR_NOLANGUAGEERR_TOOMANYLANGUAGESERR_BADCHARENCODINGERR_SERVERMODELOCKERR_UNKNOWNSERVERMODEERR_CANNOTSENDTONICKERR_CANNOTCHANGESERVERMODEERR_CANNOTCHANGECHANMODEERR_CANNOTCHANGEUMODEERR_CANNOTDOCOMMAND RPL_XINFOENDRPL_XINFOSTART RPL_XINFORPL_ENDOFQUIETLIST RPL_QUIETLISTRPL_NOTESTLINE RPL_TESTLINE RPL_TESTMARK ERR_NOPRIVSRPL_ENDOFOMOTD RPL_UMODEGMSGRPL_TARGNOTIFYRPL_TARGUMODEGERR_KNOCKDISABLEDERR_KNOCKONCHAN ERR_CHANOPENERR_TOOMANYKNOCK RPL_KNOCKDLVR RPL_KNOCK RPL_ETRACERPL_ETRACEFULL RPL_ENDOFHELP RPL_HELPTXT RPL_HELPSTARTRPL_ENDOFMODLISTRPL_WHOISLANGUAGERPL_WHOISSTAFF RPL_LANGUAGERPL_YOURLANGUAGEIS RPL_NETWORKSRPL_TIMEONSERVERISRPL_LUSERSTAFFRPL_CANNOTSETMODESRPL_UNKNOWNMODESRPL_WHOISSECURERPL_WHOWASDETAILSRPL_ENDOF_GENERICRPL_OTHERUMODEISRPL_SERVMODEIS RPL_CHANREDIRRPL_MODECHANGEWARNRPL_TRACEROUTE_STARTRPL_TRACEROUTE_HOP RPL_EODUMP RPL_DUMPRPL RPL_DUMPINGRPL_ENDOFSETTINGS RPL_SETTINGS RPL_ENDOFO RPL_RULES RPL_DCCINFORPL_WHOWASHOSTRPL_ENDOFDCCLIST RPL_DCCLIST RPL_DCCSTATUSRPL_ENDOFISOPER RPL_ISNOTOPER RPL_ISLOCOP RPL_ISOPERRPL_WATCHCLEARRPL_ENDOFWATCHLIST RPL_WATCHLIST RPL_NOWOFF RPL_NOWON RPL_WATCHSTAT RPL_WATCHOFF RPL_LOGOFF RPL_LOGONERR_STATSSLINEERR_USINGSLINEERR_HOSTUNAVAILERR_BADHOSTMASKERR_PFXUNROUTABLE ERR_REMOTEPFXERR_OPERSPVERIFYERR_QUARANTINEDERR_WHOLIMEXCEED ERR_WHOSYNTAXERR_LISTSYNTAX ERR_WHOTRUNCERR_MASKTOOWIDE ERR_OPERONLYERR_TOOMANYUSERS ERR_ADMONLY ERR_LONGMASK ERR_NOINVITE ERR_DISABLED ERR_DONTCHEAT ERR_BADEXPIREERR_TOOMANYDCCERR_INVALID_ERROR ERR_BADPINGERR_TOOMANYWATCHERR_SILELISTFULLERR_USERNOTONSERVERR_VWORLDWARNERR_GHOSTEDCLIENTERR_USERSDONTMATCHERR_UMODEUNKNOWNFLAGERR_CHANOWNPRIVNEEDEDERR_ISOPERLCHANERR_BADLOGVALUE ERR_BADLOGSYSERR_BADLOGTYPEERR_BADFEATURE ERR_NOFEATUREERR_NOSERVICEHOSTERR_NOOPERHOSTERR_SECUREONLYCHANERR_VOICENEEDEDERR_TSLESSCHANERR_MSGSERVICESERR_CHANTOORECENTERR_ACCOUNTONLYERR_HTMDISABLED ERR_NONONREGERR_ISREALSERVICEERR_CANTKICKADMIN ERR_KILLDENYERR_UNIQOPRIVSNEEDEDERR_ATTACKDENY ERR_DESYNCERR_ISCHANSERVICEERR_RESTRICTEDERR_CANTKILLSERVERERR_CHANOPRIVSNEEDEDERR_NOPRIVILEGESERR_CANNOTKNOCK ERR_NOULINE ERR_LINKFAILERR_BADCHANNAMEERR_BANLISTFULLERR_NEEDREGGEDNICKERR_NOCHANMODESERR_BADCHANMASKERR_BADCHANNELKEYERR_BANNEDFROMCHANERR_INVITEONLYCHANERR_UNKNOWNMODEERR_CHANNELISFULLERR_KICKEDFROMCHANERR_LINKCHANNEL ERR_LINKSETERR_ONLYSERVERSCANCHANGEERR_INVALIDUSERNAME ERR_KEYSETERR_YOUWILLBEBANNEDERR_YOUREBANNEDCREEPERR_PASSWDMISMATCHERR_NOPERMFORHOSTERR_ALREADYREGISTEREDERR_NEEDMOREPARAMSERR_NOTFORHALFOPS ERR_NOHIDING ERR_ACCEPTNOTERR_ACCEPTEXISTERR_ACCEPTFULLERR_HOSTILENAME ERR_NICKLOSTERR_IDCOLLISIONERR_NOTREGISTEREDERR_NOTIMPLEMENTEDERR_NONICKCHANGEERR_USERSDISABLEDERR_SUMMONDISABLED ERR_NOLOGINERR_USERONCHANNELERR_NOTONCHANNELERR_USERNOTINCHANNELERR_SERVICESDOWNERR_TARGETTOOFASTERR_DEADERR_NICKTOOFASTERR_BANNICKCHANGEERR_UNAVAILRESOURCEERR_NICKCOLLISION ERR_BANONCHANERR_SERVICECONFUSED ERR_NORULESERR_SERVICENAMEINUSEERR_NICKNAMEINUSEERR_ERRONEUSNICKNAMEERR_NONICKNAMEGIVENERR_EVENTNICKCHANGEERR_TOOMANYAWAYERR_NOOPERMOTD ERR_FILEERRORERR_NOADMININFO ERR_NOMOTDERR_UNKNOWNCOMMANDERR_LENGTHTRUNCATEDERR_QUERYTOOLONGERR_TOOMANYMATCHES ERR_BADMASKERR_WILDTOPLEVELERR_NOTOPLEVELERR_NOTEXTTOSENDERR_NORECIPIENT ERR_NOORIGINERR_NOCOLORSONCHANERR_NOSUCHSERVICEERR_TOOMANYTARGETSERR_WASNOSUCHNICKERR_TOOMANYCHANNELSERR_CANNOTSENDTOCHANERR_NOSUCHCHANNELERR_NOSUCHSERVERERR_NOSUCHNICKERR_UNKNOWNERRORRPL_HOSTHIDDEN RPL_NOUSERSRPL_ENDOFUSERS RPL_USERSRPL_USERSSTARTRPL_TIMERPL_ENDOFIRCOPSRPL_ENDOFQLIST RPL_IRCOPS RPL_QLISTRPL_NOTOPERANYMORE RPL_MYPORTISRPL_YOURESERVICE RPL_REHASHING RPL_YOUREOPERRPL_YOURHELPER RPL_BANLINKEDRPL_KICKLINKED RPL_WHOISHOSTRPL_BANEXPIREDRPL_SPAMRPL_KICKEXPIRED RPL_ENDOFMOTD RPL_MOTDSTART RPL_ENDOFINFO RPL_INFOSTARTRPL_MOTDRPL_INFORPL_ENDOFWHOWASRPL_ENDOFBANLIST RPL_BANLISTRPL_ENDOFNAMESRPL_ENDOFLINKS RPL_LINKS RPL_CLOSEEND RPL_CLOSING RPL_KILLDONE RPL_NAMREPLY_ RPL_WHOSPCRPL RPL_NAMREPLY RPL_WHOREPLY RPL_VERSIONRPL_ENDOFEXCEPTLISTRPL_EXCEPTLISTRPL_ENDOFINVITELISTRPL_INVITELIST RPL_INVITED RPL_SUMMONING RPL_INVITINGRPL_BADCHANPASSRPL_WHOISACTUALLYRPL_CHANPASSOKRPL_LISTSYNTAXRPL_COMMANDSYNTAX RPL_LISTUSAGERPL_TOPICWHOTIME RPL_TOPIC RPL_NOTOPICRPL_WHOISACCOUNTRPL_WHOWAS_TIMERPL_CREATIONTIMERPL_CHANNEL_URLRPL_CHPASSUNKNOWNRPL_NOCHANPASSRPL_CHANNELPASSIS RPL_UNIQOPISRPL_CHANNELMODEIS RPL_LISTENDRPL_LIST RPL_LISTSTARTRPL_WHOISSPECIALRPL_WHOIS_HIDDEN RPL_WHOISVIRTRPL_WHOISCHANNELSRPL_ENDOFWHOIS RPL_WHOISIDLERPL_WHOISCHANOP RPL_ENDOFWHORPL_WHOWASUSERRPL_WHOISOPERATORRPL_WHOISSERVER RPL_WHOISUSERRPL_WHOISSERVICERPL_WHOISHELPOPRPL_WHOISSVCMSGRPL_WHOISHELPERRPL_WHOISSADMIN RPL_NICKTRACERPL_WHOISADMINRPL_NOTIFYACTION RPL_SUSERHOSTRPL_WHOISREGNICK RPL_NOWAWAY RPL_UNAWAYRPL_TEXTRPL_ISON RPL_USERHOSTRPL_AWAYRPL_NONERPL_END_CHANINFORPL_CHANINFO_KICKS RPL_HELPIGNRPL_CHANINFO_KICK RPL_HELPFWDRPL_CHANINFO_INVITES RPL_HELPHLPRPL_CHANINFO_INVITE RPL_HELPTLRRPL_CHANINFO_BANSRPL_ENDOFCHECK RPL_HELPOPRPL_CHANINFO_BANNED RPL_DATASTR RPL_HELPHDRRPL_CHANINFO_OPERS RPL_PATCHCONRPL_CHANINFO_AWAY RPL_PATCHHEADRPL_CHANINFO_VOICES RPL_CHANUSERRPL_CHANINFO_CHOPS RPL_CHKHEADRPL_CHANINFO_USERS RPL_NEWHOSTISRPL_CHANINFO_HANDLERPL_GLIST_HASH RPL_FEATURERPL_ENDOFJUPELIST RPL_JUPELISTRPL_ENDOFACCEPTRPL_ACCEPTLISTRPL_ENDOFGLIST RPL_GLIST RPL_VCHANHELP RPL_VCHANLISTRPL_VCHANEXISTRPL_STATSDELTA RPL_ENDNOTIFY RPL_NOTIFYRPL_ENDOFSILELIST RPL_SILELIST RPL_PRIVSRPL_END_NETSTAT RPL_NETSTATRPL_START_NETSTATRPL_GLOBALUSERSRPL_LOCALUSERS RPL_TRYAGAIN RPL_TRACEEND RPL_TRACEPING RPL_TRACELOGRPL_ADMINEMAIL RPL_ADMINLOC2 RPL_ADMINLOC1 RPL_ADMINME RPL_LUSERMERPL_LUSERCHANNELSRPL_LUSERUNKNOWN RPL_LUSEROPRPL_LUSERCLIENT RPL_STATSCONNRPL_STATSDEBUGRPL_STATSDEFINE RPL_STATSPINGRPL_STATSSLINERPL_STATSHLINERPL_STATSOLINERPL_STATSUPTIMERPL_STATSLLINERPL_STATSIAUTHRPL_STATSVERBOSERPL_SERVLISTEND RPL_SERVLIST RPL_SERVICERPL_ENDOFSERVICESRPL_SERVICEINFORPL_STATSCOUNTRPL_STATSZLINERPL_STATSDLINERPL_SQLINE_NICK RPL_UMODEISRPL_ENDOFSTATSRPL_STATSYLINERPL_STATSKLINERPL_STATSILINERPL_STATSCLINERPL_STATSCOMMANDSRPL_STATSLINKINFO RPL_STATSRPL_TRACERECONNECTRPL_TRACECLASSRPL_TRACENEWTYPERPL_TRACESERVICERPL_TRACESERVER RPL_TRACEUSERRPL_TRACEOPERATORRPL_TRACEUNKNOWNRPL_TRACEHANDSHAKERPL_TRACECONNECTING RPL_TRACELINKRPL_ATTEMPTINGREROUTERPL_ATTEMPTINGJUNC RPL_SAVENICK RPL_YOURIDRPL_YOURCOOKIE RPL_STATMEM RPL_BOUNCERPL_STATMEMTOT RPL_SNOMASK RPL_ISUPPORT RPL_MYINFO RPL_CREATED RPL_YOURHOST RPL_WELCOME replyType SectionParser FromConfig parseConfig ConfigParserrunConfigParserfailure decodeConfigliftConfigParser parseSections sectionOptsectionOptWith sectionReq$fFromConfig[]$fFromConfigAtom$fFromConfigInteger$fFromConfigText$fFunctorConfigParser$fApplicativeConfigParser$fMonadConfigParser$fFunctorSectionParser$fApplicativeSectionParser$fMonadSectionParserEditBox $fReadEditBox $fShowEditBoxcontentpostabSeedemptysuccessearlierlaterdelete backspacehomeendkillEndkillHomepastekillWordinsert insertStringleftrightleftWord rightWordId' overStrict setStrict$fApplicativeId' $fFunctorId' ModeTypes _modesLists_modesAlwaysArg _modesSetArg_modesNeverArg_modesPrefixModes$fShowModeTypesmodesAlwaysArg modesLists modesNeverArgmodesPrefixModes modesSetArgdefaultModeTypesdefaultUmodeTypes splitModes unsplitModesversion getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName IdentifiermkIdidTextidDenote$fHashableIdentifier$fOrdIdentifier$fEqIdentifier$fReadIdentifier$fShowIdentifierUserInfouserNickuserNameuserHostuiNickrenderUserInfo parseUserInfo$fReadUserInfo$fShowUserInfo RawIrcMsg_msgServerTime _msgPrefix _msgCommand _msgParams$fReadRawIrcMsg$fShowRawIrcMsg msgCommand msgParams msgPrefix msgServerTimeparseRawIrcMsgrenderRawIrcMsg rawIrcMsgasUtf8ServerSettings_ssNick_ssUser_ssReal _ssUserInfo _ssPassword_ssSaslUsername_ssSaslPassword _ssHostName_ssPort_ssTls_ssTlsInsecure_ssTlsClientCert_ssTlsClientKey_ssConnectCmds _ssSocksHost _ssSocksPort_ssServerCerts_ssChanservChannels$fShowServerSettingsssChanservChannels ssConnectCmds ssHostNamessNick ssPasswordssPortssRealssSaslPasswordssSaslUsername ssServerCerts ssSocksHost ssSocksPortssTlsssTlsClientCertssTlsClientKey ssTlsInsecuressUser ssUserInfoloadDefaultServerSettingswithConnection NetworkEvent NetworkLine NetworkError NetworkCloseNetworkConnection NetworkIdsendabortConnectioncreateConnection$fShowNetworkConnection wordComplete $fPrefix[] $fPrefixText$fPrefixIdentifier ircPrivmsgircModeircWhoisircWho ircWhowasircNickircPartircJoin ircInviteircTopicircKick ircRemoveircQuitircPassircPongircUser ircCapReq ircCapEndircCapLs MessageTarget TargetUser TargetWindow TargetNetwork TargetHiddenCapCmdCapLsCapListCapReqCapAckCapNakIrcMsg UnknownMsgReplyNickJoinPartQuitKickTopicPrivmsgActionNoticeModeCapPingPongError cookIrcMsg msgTargetmsgActor ircMsgText nickSplitcomputeMaxMessageLength $fShowCapCmd $fEqCapCmd $fOrdCapCmd $fShowIrcMsg MessageBodyIrcBody ErrorBodyExitBody ClientMessage _msgNetwork_msgBody_msgTime_IrcBody _ErrorBody _ExitBodymsgBody msgNetworkmsgTimemsgTextWindowLineImportanceWLBoringWLNormal WLImportantWindow _winMessages _winUnread _winMention WindowLine_wlBody_wlText_wlImage _wlFullImage$fEqWindowLineImportance$fShowWindowLineImportance winMention winMessages winUnreadwlBody wlFullImagewlImagewlText emptyWindow addToWindow windowSeenidentifierColor RenderMode NormalRenderDetailedRenderMessageRendererParams rendStatusMsgrendUserSigils rendNicksdefaultRenderParamsmsgImagedetailedMsgImagecoloredIdentifiercoloredUserInfoquietIdentifier metadataImg ignoreImageTopicProvenance _topicAuthor _topicTime ChannelState$fShowTopicProvenance$fShowChannelState chanCreation chanLists chanModeschanQueuedModeration chanTopicchanTopicProvenance chanUsers topicAuthor topicTime newChannelchanList joinChannel partChannel nickChangesetTopic PingStatusPingSent PingLatency PingNeverConnectionState$fShowPingStatus$fShowTransaction$fShowConnectionStatecsChannelTypes csChannels csModeCount csModeTypescsModes csNetwork csNetworkIdcsNextPingTime csPingStatus csSettingscsSocket csStatusMsg csTransaction csUserInfocsUsers TimedActionTimedDisconnect TimedSendPingcsNicksendMsgnewConnectionState applyMessage squelchIrcMsgiHaveOpinitialMessagesisChannelIdentifiercsUsernextTimedAction$fEqTimedAction$fOrdTimedAction$fShowTimedAction Configuration_configDefaults_configServers$fShowConfigurationconfigDefaults configServersloadConfiguration$fExceptionConfigurationFailure$fShowConfigurationFailure ClientState_clientWindows _clientFocus_clientSubfocus_clientConnections_clientNextConnectionId_clientConnectionContext _clientEvents_clientNetworkMap _clientVty_clientTextBox _clientWidth _clientHeight _clientConfig _clientScroll_clientDetailView_clientIgnoresClientSubfocus FocusMessages FocusUsers FocusMasks ClientFocus Unfocused NetworkFocus ChannelFocus NetworkName$fOrdClientFocus$fEqClientFocus$fEqClientSubfocus clientConfigclientConnectionContextclientConnectionsclientDetailView clientEvents clientFocus clientHeight clientIgnoresclientNetworkMapclientNextConnectionId clientScrollclientSubfocus clientTextBox clientVty clientWidth clientWindowsclientConnection clientInput focusNetworkinitialClientState abortNetworkrecordChannelMessage ircIgnorablerecordIrcMessagerecordNetworkMessage clientTick consumeInput advanceFocus retreatFocuscurrentUserList changeFocuschangeSubfocus windowNames clientMatcher removeNetwork addConnectionCommandArguments_cmdArgConfigFile_cmdArgInitialNetworks_cmdArgShowHelp_cmdArgShowVersioncmdArgConfigFilecmdArgInitialNetworksgetCommandArguments CommandResultCommandContinue CommandQuitexecuteCommandnickTabCompletionmaskListImagesuserListImagesuserInfoImages clientPicture eventLoopwithVtyaddInitialNetworks rateStamp rateThreshold ratePenalty FormatState_fmtFore_fmtBack_fmtBold _fmtItalic _fmtUnderline _fmtReverseSegment TextSegmentControlSegmentfmtBackfmtBoldfmtFore fmtItalic fmtReverse fmtUnderline formatAttrdefaultFormatState parseIrcText'pSegmentpIrcLine pColorNumbersoptional applyColors mircColor rgbColor'applyControlEffect controlAttr controlName extendLoc+config-value-0.4.0.2-L7cuZthjPOgCNcihHowAo7 Config.ValueValueSectionsListAtomNumber#text-1.2.2.1-9Yh8rJoh8fO2JMLWffT3QsData.Text.InternalText toHashMapupdateYankBuffer_content_pos_history _historyPos _yankBuffer_tabSeedhistory historyPos yankBuffer removeImpl lens-4.14-Bb4ekaqwx8nBHtxVG4rt2mControl.Lens.TypeSetterControl.Lens.SetteroversetrunId'catchIObindirlibdirdatadir libexecdir sysconfdirbytestring-0.10.8.1Data.ByteString.Internal ByteString ircFoldCasecasemapLensmaxMiddleParamsrawIrcMsgParser paramsParser timeParsersimpleTokenParser buildParamsguarded parseIrcTime prefixParser renderPrefix decodeCP1252cp1252'connection-0.2.5-JUTiztY48jXCazVkIC5MSiNetwork.Connection.Types ConnectionbuildConnectionParamsircPortbuildCertificateStorebuildTlsSettingsloadClientCredentialsconnect connOutQueue connAsyncstartConnectionsendLoopircMaxMessageLength receiveLoopPrefixisPrefix replaceWithidPrefixidString currentWord tabSearch cookCapCmd isNickChar hashIdentitynickColorPalettestatusMsgImage bodyImage timeImage time-1.6.0.1Data.Time.LocalTime.LocalTime ZonedTime datetimeImage quietAttr ircLineImageparseIrcTextWithNickshighlightNicks _chanTopic_chanTopicProvenance _chanUsers _chanModes _chanLists _chanCreation_chanQueuedModeration doWelcome squelchReplydoRplghc-prim GHC.TypesTrue Transaction NoTransactionNamesTransactionBanTransactionWhoTransaction _csNetworkId _csChannels _csSocket _csModeTypes_csChannelTypes_csTransaction_csModes _csStatusMsg _csSettings _csUserInfo_csUsers _csModeCount _csNetwork_csNextPingTime _csPingStatus_NoTransaction_NamesTransaction_BanTransaction_WhoTransaction utf8ChunksOfnoReply overChannel overChannelsdoTopicparseTimeParamdoModedoChannelModes doMyModes supportedCapsdoCap loadNamesList createOnJoin updateMyNickisupport parseISupportupdateChanModesupdateChanPrefix parsePrefixes recordUser forgetUser renameUser forgetUser'massRegistrationdoPongbaseGHC.IO.ExceptionIOErrorConfigurationFailureConfigurationParseFailedConfigurationMalformed getConfigPathparseConfiguration parseServerssectionOptStringsectionOptStrings sectionOptNumsectionOptIdentifiersparseServerSettingsboolean msgImportancesplitStatusMsgModescomputeMsgLineModescomputeLineModes toWindowLine toWindowLine'channelUserListdefaultCommandArgumentsoptionscmdArgShowHelpcmdArgShowVersionassembleCommandArgumentshelpTxt versionTxtCommandcmdClearcmdMecmdMsg cmdReconnectisPublicChannelMode ClientCommandNetworkCommandChannelCommandcommandContinue splitWordnextWordcommands noClientTab noNetworkTab noChannelTabsimpleClientTabsimpleNetworkTabsimpleChannelTabcmdExitcmdQuote cmdConnectcmdFocuscmdWhoiscmdWho cmdWhowascmdModecmdNickcmdPart cmdInvitecommandContinueUpdateCScmdTopictabTopiccmdUserscmdMaskscmdKick cmdKickBancomputeBanUserInfo cmdRemovecmdJoincmdQuit cmdDisconnect cmdIgnore modeCommandcommandNameCompletionsendModeration useChanServ vty-5.7.1-2Lna2136Uqt29dticvl4qoGraphics.Vty.PicturePicture clientImagemessagePaneImageschatMessageImages messagePanewindowLinesToImageswindowLinesToImagesMdmetadataWindowLinelineWraphorizDividerImageparens scrollImage activityImage myNickImage focusImagechannelModesImage textboxImage latencyImage ClientEventVtyEvent TimerEventgetEventdoNetworkClosedoNetworkError doNetworkLine doVtyEventdoKeypageUppageDown scrollAmountjumpToActivity jumpFocus tabCompletionexecute executeChat doTimerEvent Graphics.VtyVty