Îõ³h$[­WMÅ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄ(c) 2007-2019 Peter SimonsBSD3simons@cryp.to provisionalportable Safe-Inferred? 1hsemail%Case-insensitive variant of Parsec's Å function.hsemail%Case-insensitive variant of Parsec's Æ function.hsemailMatch a parser at least n times.hsemailMatch a parser at least n times, but no more than m times.hsemail$Match any character of the alphabet.hsemailMatch either "1" or "0".hsemailÌMatch any 7-bit US-ASCII character except for NUL (ASCII value 0, that is).hsemail$Match the carriage return character \r.hsemail%Match returns the linefeed character \n. hsemailMatch the Internet newline \r\n. hsemailîMatch any US-ASCII control character. That is any character with a decimal value in the range of [0..31,127]. hsemail"Match the double quote character """. hsemailçMatch any character that is valid in a hexadecimal number; ['0'..'9'] and ['A'..'F','a'..'f'] that is. hsemailMatch the tab ("\t ") character.hsemail>Match "linear white-space". That is any number of consecutive , optionally followed by a   and (at least) one more .hsemailMatch any character.hsemailMatch the space.hsemailþMatch any printable ASCII character. (The "v" stands for "visible".) That is any character in the decimal range of [33..126].hsemail Match either  or  .hsemailËMatch a "quoted pair". Any characters (excluding CR and LF) may be quoted.hsemail%Match a quoted string. The specials "\" and ""Ì" must be escaped inside a quoted string; CR and LF are not allowed at all.  (c) 2007-2019 Peter SimonsBSD3simons@cryp.to provisionalportable Safe-Inferred?Um„hsemail£This data type represents any of the header fields defined in this RFC. Each of the various instances contains with the return value of the corresponding parser./hsemail•This data type represents a parsed Internet Message as defined in this RFC. It consists of an arbitrary number of header lines, represented in the 3 data type, and a message body, which may be empty.1hsemailÃA NameAddr is composed of an optional realname a mandatory e-mail [.5hsemailReturn Nothingæ if the given parser doesn't match. This combinator is included in the latest parsec distribution as  optionMaybe,, but ghc-6.6.1 apparently doesn't have it.6hsemailunfold = 'between (optional cfws) (optional cfws)7hsemailßConstruct a parser for a message header line from the header's name and a parser for the body.8hsemailLike 7,, but allows the obsolete white-space rules.9hsemail4Match any US-ASCII non-whitespace control character.:hsemail(Match any US-ASCII character except for r, n.;hsemail-Match any of the RFC's "special" characters:  ()<>[]:;@,.\".<hsemail1Match a "quoted pair". All characters matched by :/ may be quoted. Note that the parsers returns both3 characters, the backslash and the actual content.=hsemail7Match "folding whitespace". That is any combination of  and   followed by .>hsemail, <s, and =% between brackets. Comments may nest.@hsemailMatch any combination of = and |.AhsemailA message body is just an unstructured sequence of characters.khsemailôThis parser will parse an arbitrary number of header fields as defined in this RFC. For each field, an appropriate . value is created, all of them making up the  list that this parser returns.×If you look at the implementation of this parser, you will find that it uses Parsec's Ì modifier around allï of the fields. The idea behind this is that fields, which contain syntax errors, fall back to the catch-all Œ‹. Thus, this parser will hardly ever return a syntax error -- what conforms with the idea that any message that can possibly be accepted should be.lhsemail Parse a "Date:1" header line and return the date it contains a  CalendarTime.mhsemail Parse a "From:" header line and return the a address(es) contained in it.nhsemail Parse a "Sender:" header line and return the \ address contained in it.ohsemail Parse a " Reply-To:" header line and return the b address(es) contained in it.phsemail Parse a "To:" header line and return the b address(es) contained in it.qhsemail Parse a "Cc:" header line and return the b address(es) contained in it.rhsemail Parse a "Bcc:" header line and return the b address(es) contained in it.shsemail Parse a " Message-Id:" header line and return the v contained in it.thsemail Parse a " In-Reply-To:%" header line and return the list of vs contained in it.uhsemail Parse a " References:%" header line and return the list of vs contained in it.vhsemail Parse a " message ID:9" and return it. A message ID is almost identical to an ^7, but with stricter rules about folding and whitespace.whsemailParse a "left ID" part of a v#. This is almost identical to the dÍ of an e-mail address, but with stricter rules about folding and whitespace.xhsemailParse a "right ID" part of a v#. This is almost identical to the eÍ of an e-mail address, but with stricter rules about folding and whitespace.yhsemail!Parse one or more occurrences of E or <8 and return the concatenated string. This makes up the w of a v.zhsemail!Parse one or more occurrences of h or <8 and return the concatenated string. This makes up the x of a v.{hsemail Parse a "Subject:Œ" header line and return its contents verbatim. Please note that all whitespace and/or comments are preserved, i.e. the result of parsing "Subject: foo" is " foo", not "foo".|hsemail Parse a " Comments:Œ" header line and return its contents verbatim. Please note that all whitespace and/or comments are preserved, i.e. the result of parsing "Comments: foo" is " foo", not "foo".}hsemail Parse a " Keywords:%" header line and return the list of I9s found. Please not that each phrase is again a list of Bs, as returned by the I parser.~hsemail Parse a " Resent-Date:2" header line and return the date it contains as Ç.hsemail Parse a " Resent-From:" header line and return the a address(es) contained in it.€hsemail Parse a "Resent-Sender:" header line and return the a address(es) contained in it.hsemail Parse a " Resent-To:" header line and return the \ address contained in it.‚hsemail Parse a " Resent-Cc:" header line and return the b address(es) contained in it.ƒhsemail Parse a " Resent-Bcc:" header line and return the b8 address(es) contained in it. (This list may be empty.)„hsemail Parse a "Resent-Message-ID:" header line and return the v contained in it.ŒhsemailÃParse an arbitrary header field and return a tuple containing the  and K# text of the header. The name will not contain the terminating colon.hsemailÆParse and return an arbitrary header field name. That is one or more Ž characters.ŽhsemailÖMatch and return any ASCII character except for control characters, whitespace, and ":".hsemail8Match the obsolete "quoted pair" syntax, which - unlike < - allowed anyó ASCII character to be specified when quoted. The parser will return both, the backslash and the actual character.hsemail1Match the obsolete "text" syntax, which - unlike :¿ - allowed "carriage returns" and "linefeeds". This is really weird; you better consult the RFC for details. The parser will return the complete string, including those special characters.‘hsemail"Right ""Ÿhsemail'This parser parses the "route" part of ž and returns the list of Ë%s that make up this route. Relies on   for the actual parsing. hsemail…This parser parses a list of domain names, each of them prefaced with an "at". Multiple names are separated by a comma. The list of e"s is returned - and may be empty.¡hsemailParse the obsolete syntax of a dï, which allowed for more liberal insertion of folding whitespace and comments. The actual string is returned.¢hsemailParse the obsolete syntax of a eî, which allowed for more liberal insertion of folding whitespace and comments. The actual string is returned.£hsemail1This parser will match the obsolete syntax for a a. This one is quite weird: An £" contains an arbitrary number of \ões - including none -, which are separated by commas. But you may have multiple consecutive commas without giving a \. You may also have a valid £ that contains no \! at all. On the other hand, you must: have at least one comma. The following example is valid:parse obs_mbox_list "" ","Right []But this one is not:(parse obs_mbox_list "" "joe@example.org"Left (line 1, column 16):unexpected end of input1expecting obsolete syntax for a list of mailboxes¤hsemailThis parser is identical to £ but parses a list of [es rather than \$es. The main difference is that an [ may contain _ôs. Please note that as of now, the parser will return a simple list of addresses; the grouping information is lost.¦hsemailParse a O7 header line but allow for the obsolete folding syntax.§hsemailParse a m7 header line but allow for the obsolete folding syntax.¨hsemailParse a n7 header line but allow for the obsolete folding syntax.©hsemailParse a o7 header line but allow for the obsolete folding syntax.ªhsemailParse a p7 header line but allow for the obsolete folding syntax.«hsemailParse a q7 header line but allow for the obsolete folding syntax.¬hsemailParse a r7 header line but allow for the obsolete folding syntax.­hsemailParse a s8 header line but allow for the obsolete folding syntax.®hsemail Parse an tÐ header line but allow for the obsolete folding and the obsolete phrase syntax.¯hsemailParse a uÐ header line but allow for the obsolete folding and the obsolete phrase syntax.°hsemailáParses the "left part" of a message ID, but allows the obsolete syntax, which is identical to a d.±hsemailâParses the "right part" of a message ID, but allows the obsolete syntax, which is identical to a e.²hsemailParse a {7 header line but allow for the obsolete folding syntax.³hsemailParse a |7 header line but allow for the obsolete folding syntax.´hsemailParse a }Ó header line but allow for the obsolete folding syntax. Also, this parser accepts ”.µhsemailParse a 8 header line but allow for the obsolete folding syntax.¶hsemailParse a €8 header line but allow for the obsolete folding syntax.·hsemailParse a ~8 header line but allow for the obsolete folding syntax.¸hsemailParse a 7 header line but allow for the obsolete folding syntax.¹hsemailParse a ‚7 header line but allow for the obsolete folding syntax.ºhsemailParse a ƒ8 header line but allow for the obsolete folding syntax.»hsemailParse a „8 header line but allow for the obsolete folding syntax.¼hsemailParse a Resent-Reply-To8 header line but allow for the obsolete folding syntax.¿hsemailMatch ž.ÀhsemailThis parser is identical to Œà but allows the more liberal line-folding syntax between the "field_name" and the "field text".¬.-,+*)('&%$#"! /0124356789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿À¬56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ1243[\]^_`abcdefgh/0ij.-,+*)('&%$#"! klmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÍ      !"#$%&'()*+,-./01234456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÅÆÈÉÊËÉÌÍÎÏÐÉÑÒÓÔÕÅÖר$hsemail-2.2.1-D2yEYsmC0y1AHnRgIqdDvIText.Parsec.Rfc2234Text.Parsec.Rfc2822caseChar caseStringmanyNmanyNtoMalphabit charactercrlfcrlfctldquotehexdightablwspoctetspvcharwsp quoted_pair quoted_stringField OptionalFieldFromSender ReturnPathReplyToToCcBcc MessageID InReplyTo ReferencesSubjectCommentsKeywordsDate ResentDate ResentFrom ResentSenderResentToResentCc ResentBccResentMessageID ResentReplyToReceived ObsReceivedGenericMessageMessageNameAddr nameAddr_name nameAddr_addr maybeOptionunfoldheader obs_header no_ws_ctltextspecialsfwsctextcommentcfwsatextatomdot_atom dot_atom_textqtextqcontentwordphraseutext unstructured date_time day_of_weekday_namedateyearmonth month_name day_of_monthdaytime time_of_dayhourminutesecondzoneaddressmailbox name_addr angle_addrgroup display_name mailbox_list address_list addr_spec local_partdomaindomain_literaldcontentdtextmessagebodyfields orig_datefromsenderreply_totoccbcc message_id in_reply_to referencesmsg_idid_leftid_right no_fold_quoteno_fold_literalsubjectcommentskeywords resent_date resent_from resent_sender resent_to resent_cc resent_bcc resent_msg_id return_pathpathreceived name_val_list name_val_pair item_name item_valueoptional_field field_nameftextobs_qpobs_textobs_char obs_utext obs_phraseobs_phrase_listobs_fwsobs_day_of_weekobs_year obs_monthobs_dayobs_hour obs_minute obs_secondobs_zoneobs_angle_addr obs_routeobs_domain_listobs_local_part obs_domain obs_mbox_list obs_addr_list obs_fields obs_orig_dateobs_from obs_sender obs_reply_toobs_toobs_ccobs_bccobs_message_idobs_in_reply_toobs_references obs_id_left obs_id_right obs_subject obs_comments obs_keywordsobs_resent_fromobs_resent_sendobs_resent_date obs_resent_to obs_resent_ccobs_resent_bccobs_resent_midobs_resent_reply obs_return obs_receivedobs_path obs_optional$fShowGenericMessage $fShowField$fShowNameAddr $fEqNameAddrparsec-3.1.14.0Text.Parsec.Charcharstring time-1.9.3&Data.Time.LocalTime.Internal.ZonedTime ZonedTimeData.Time.Calendar.Week DayOfWeekghc-prim GHC.TypesInt&Data.Time.LocalTime.Internal.TimeOfDay TimeOfDaybaseGHC.BaseStringText.Parsec.Primtry