+
    i c            	       s\   ^ RI t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt	 ^ RIH
t
 ^ RIHt ]! R4      t]]! R4      ,          t]! R	4      t]],          t]]! R
4      ,
          t]]! R4      ,
          t]]! R4      ,          ]! R
4      ,
          t]],          t]]! R4      ,          t]],          t]]! R4      ,
          tRR0t]],          tR tR tR t] P:                  ! R] P<                  ] P>                  ,          4      t  ! R R]!4      t" ! R R]"4      t# ! R R]"4      t$ ! R R]"4      t% ! R R]"4      t& ! R R ]#4      t' ! R! R"]"4      t( ! R# R$]"4      t) ! R% R&]"4      t* ! R' R(]"4      t+ ! R) R*]+4      t, ! R+ R,]#4      t- ! R- R.]"4      t. ! R/ R0]"4      t/ ! R1 R2]"4      t0 ! R3 R4]"4      t1 ! R5 R6]"4      t2 ! R7 R8]"4      t3 ! R9 R:]"4      t4 ! R; R<]"4      t5 ! R= R>]"4      t6 ! R? R@]"4      t7 ! RA RB]"4      t8 ! RC RD]"4      t9 ! RE RF]"4      t: ! RG RH]"4      t; ! RI RJ]"4      t< ! RK RL]"4      t= ! RM RN]%4      t> ! RO RP]"4      t? ! RQ RR]"4      t@ ! RS RT]"4      tA ! RU RV]"4      tB ! RW RX]B4      tC ! RY RZ]"4      tD ! R[ R\]"4      tE ! R] R^]"4      tF ! R_ R`]"4      tG ! Ra Rb]"4      tH ! Rc Rd]H4      tI ! Re Rf]H4      tJ ! Rg Rh]"4      tK ! Ri Rj]"4      tL ! Rk Rl]"4      tM ! Rm Rn]M4      tN ! Ro Rp]N4      tO ! Rq Rr]"4      tP ! Rs Rt]"4      tQ ! Ru Rv]R4      tS ! Rw Rx]S4      tT ! Ry Rz]S4      tU ! R{ R|]T4      tV ! R} R~]
P                  4      tX]U! R
R4      tY]U! RR4      tZR]Zn[        R]Zn\        ]U! RR4      t]] P:                  ! RP                  RP                  ]4      4      4      P                  ta] P:                  ! RP                  ] P                  ! RP                  ]4      4      4      4      P                  td] P:                  ! R4      P                  tf] P:                  ! RP                  ] P                  ! RP                  ]4      4      4      4      P                  tg] P:                  ! RP                  ] P                  ! RP                  ]4      4      4      4      P                  th] P:                  ! RP                  ] P                  ! RP                  ]4      4      4      4      P                  tiR tjR tkR tlRR ltmR tnR toR tpR tqR trR tsR ttR tuR tvR twR txR tyR tzR t{R t|R t}R t~R tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR# )    N)	hexdigits)
itemgetter)_encoded_words)errors)utilsz 	(z()<>@,:;.\"[].z."(z/?=z*'%Z%
Zc                 sX    \        V 4      P                  R R4      P                  RR4      # )\\\"z\"strreplacevalue   &3/usr/lib64/python3.14/email/_header_value_parser.pymake_quoted_pairsr   c   s&    u:dF+33C??    c                 sx    \        V 4      P                  R R4      P                  RR4      P                  RR4      # )r	   r
   r   \()\)r   r   r   r   make_parenthesis_pairsr   h   s2    u:dF+	e	WWS%01r   c                 s$    \        V 4      pR V R 2# )r   )r   )r   Zescaped   & r   quote_stringr   n   s    &Gwiq>r   z
   =\?            # literal =?
   [^?]*          # charset
   \?             # literal ?
   [qQbB]         # literal 'q' or 'b', case insensitive
   \?             # literal ?
  .*?             # encoded word
  \?=             # literal ?=
c                   s   a a ] tR t^t oRtRtRtV 3R ltR tV 3R lt	]
R 4       t]
R 4       tR t]
R	 4       t]
R
 4       tR tRR ltRR ltRR ltRtVtV ;t# )	TokenListNTc                s6   < \         SV `  ! V/ VB  . V n        R # N)super__init__defects)selfZargsZkw	__class__s   &*,r   r   ZTokenList.__init__   s    $%"%r   c                2    R P                  R V  4       4      # ) c              3   8   "   T F  p\        V4      x  K  	  R # 5ir   r   .0xr   r   	<genexpr>Z$TokenList.__str__.<locals>.<genexpr>        ,t!s1vvt   joinr    r   r   __str__ZTokenList.__str__   s    ww,t,,,r   c                h   < R P                  V P                  P                  \        SV `  4       4      # z{}({})formatr!   __name__r   __repr__r    r!      &r   r5   ZTokenList.__repr__   s+    t~~66"W-/1 	1r   c                r"   )r#   c              3   s`   "   T F$  qP                   '       g   K  VP                   x  K&  	  R # 5ir   r   r&   r   r   r)   Z"TokenList.value.<locals>.<genexpr>   s     81wqwws   ..r,   r.   r   r   r   ZTokenList.value   s    ww8888r   c                s<    \        R  V  4       V P                  4      # )c              3   8   "   T F  qP                   x  K  	  R # 5ir   )all_defectsr&   r   r   r)   Z(TokenList.all_defects.<locals>.<genexpr>   s     04aMM4r+   )sumr   r.   r   r   r9   ZTokenList.all_defects   s    040$,,??r   c                s0    V ^ ,          P                  4       # r    )startswith_fwsr.   r   r   r<   ZTokenList.startswith_fws   s    Aw%%''r   c                sj    \         ;QJ d    R  V  4       F  '       d   K   R# 	  R# ! R  V  4       4      # )c              3   r8   r   )as_ew_allowed)r'   partr   r   r)   Z*TokenList.as_ew_allowed.<locals>.<genexpr>   s     7$$%%$r+   FT)Zallr.   r   r   r=   ZTokenList.as_ew_allowed   s-     s7$7ss7s7s7$777r   c                sR    . pV  F  pVP                  VP                  4       K   	  V# r   )extendcomments)r    r@   token   &  r   r@   ZTokenList.comments   s&    EOOENN+ r   c               s    \        WR 7      # )policy)_refold_parse_treer    rD   s   &$r   foldZTokenList.fold   s    !$66r   c                s<    \        V P                  VR 7      4       R# )indentN)printppstrr    rI      &&r   pprintZTokenList.pprint   s    djjj'(r   c                sD    R P                  V P                  VR7      4      # )r   rH   )r-   _pprL   rM   r   rK   ZTokenList.ppstr   s    yy011r   c              #  s  "   R P                  VV P                  P                  V P                  4      x  V  FQ  p\	        VR4      '       g   VRP                  V4      ,           x  K1  VP                  VR,           4       Rj  xL
  KS  	  V P                  '       d   RP                  V P                  4      pMRpRP                  W4      x  R#  LM5i)z{}{}/{}(rO   z*    !! invalid element in token list: {!r}z    Nz Defects: {}r#   z{}){})r3   r!   r4   
token_typehasattrrO   r   )r    rI   rA   Zextra   &&  r   rO   ZTokenList._pp   s     NN##OO 	 E5%(( !55;VE]C D !99VF]333  <<<"))$,,7EEnnV++ 4s   BCCC4C)r   r#   )r4   
__module____qualname____firstlineno__rP   syntactic_breakew_combine_allowedr   r/   r5   propertyr   r9   r<   r=   r@   rG   rN   rK   rO   __static_attributes____classdictcell____classcell__r!   __classdict__   @@r   r   r      s     JO-1 9 9 @ @( 8 8  7)2, ,r   r   c                   s@   a  ] tR t^t o ]R 4       t]R 4       tRtV tR# )WhiteSpaceTokenListc                    R #   r.   r   r   r   ZWhiteSpaceTokenList.value       r   c                h    V  Uu. uF!  qP                   R 8X  g   K  VP                  NK#  	  up# u upi )comment)rP   contentr    r(   r   r   r@   ZWhiteSpaceTokenList.comments   s)    #'C4a<<+B			4CCC   //rd   N)	r4   rT   rU   rV   rY   r   r@   rZ   r[   r^      @r   r`   r`      s-       D Dr   r`   c                   s    ] tR t^tRtRtR# )UnstructuredTokenListunstructuredrd   Nr4   rT   rU   rV   rP   rZ   rd   r   r   rm   rm      s    Jr   rm   c                   s    ] tR t^tRtRtR# )Phrasephraserd   Nro   rd   r   r   rp   rp          Jr   rp   c                   s    ] tR t^tRtRtR# )WordZwordrd   Nro   rd   r   r   rs   rs          Jr   rs   c                   s    ] tR t^tRtRtR# )CFWSListcfwsrd   Nro   rd   r   r   ru   ru      rt   r   ru   c                   s    ] tR t^tRtRtR# )Atomatomrd   Nro   rd   r   r   rw   rw      rt   r   rw   c                   s    ] tR t^tRtRtRtR# )TokenrA   Frd   N)r4   rT   rU   rV   rP   Zencode_as_ewrZ   rd   r   r   ry   ry      s    JLr   ry   c                   s&    ] tR t^tRtRtRtRtRtR# )EncodedWordencoded-wordNrd   )	r4   rT   rU   rV   rP   ctecharsetlangrZ   rd   r   r   rz   rz      s    J
CGDr   rz   c                   sT   a  ] tR t^t o Rt]R 4       t]R 4       t]R 4       tRt	V t
R# )QuotedStringquoted-stringc                V    V  F"  pVP                   R 8X  g   K  VP                  u # 	  R# bare-quoted-stringNrP   r   ri   r   r   rh   ZQuotedString.content   s"    A||33ww r   c                s    . pV  FK  pVP                   R 8X  d   VP                  \        V4      4       K0  VP                  VP                  4       KM  	  RP	                  V4      # )r   r#   )rP   appendr   r   r-   )r    resr(   rB   r   quoted_valueZQuotedString.quoted_value   sN    A||33

3q6"

177#	 
 wws|r   c                r   r   r   r    rA   r   r   stripped_valueZQuotedString.stripped_value  s%    E#77{{" r   rd   N)r4   rT   rU   rV   rP   rY   rh   r   r   rZ   r[   rk   rl   r   r   r      sD      J 
   # #r   r   c                   s:   a  ] tR tRt o RtR t]R 4       tRtV t	R# )BareQuotedStringi  r   c                sD    \        R P                  R V  4       4      4      # )r#   c              3   r$   r   r%   r&   r   r   r)   Z+BareQuotedString.__str__.<locals>.<genexpr>  s     #9DqCFFDr+   )r   r-   r.   r   r   r/   ZBareQuotedString.__str__  s    BGG#9D#99::r   c                r"   )r#   c              3   r$   r   r%   r&   r   r   r)   Z)BareQuotedString.value.<locals>.<genexpr>  r*   r+   r,   r.   r   r   r   ZBareQuotedString.value      ww,t,,,r   rd   N)
r4   rT   rU   rV   rP   r/   rY   r   rZ   r[   rk   rl   r   r   r     s#     %J; - -r   r   c                   sP   a  ] tR tRt o RtR tR t]R 4       t]R 4       t	Rt
V tR# )	Commenti  rg   c                s    R P                  \        R.V  Uu. uF  qP                  V4      NK  	  upR... 4      4      # u upi )r#   r   r   )r-   r:   quoteri   r   r   r/   ZComment.__str__  sI    wws E489DqZZ]D9 E  "	# $ 	$9s   ?c                s    VP                   R 8X  d   \        V4      # \        V4      P                  RR4      P                  RR4      P                  RR4      # )rg   r	   r
   r   r   r   r   )rP   r   r   )r    r   rM   r   r   ZComment.quote"  sR    y(u:5z!!$/77"%u..5g"%u/.	.r   c                r"   )r#   c              3   r$   r   r%   r&   r   r   r)   Z"Comment.content.<locals>.<genexpr>+  r*   r+   r,   r.   r   r   rh   ZComment.content)  r   r   c                s    V P                   .# r   )rh   r.   r   r   r@   ZComment.comments-  s    ~r   rd   N)r4   rT   rU   rV   rP   r/   r   rY   rh   r@   rZ   r[   rk   rl   r   r   r     s<     J$. - -  r   r   c                   T   a  ] tR tRt o Rt]R 4       t]R 4       t]R 4       tRt	V t
R# )AddressListi1  zaddress-listc                T    V  Uu. uF  qP                   R 8X  g   K  VNK  	  up# u upi )addressrP   ri   r   r   	addressesZAddressList.addresses5  %    ;4a<<#:4;;;   %%c                (    \        R  V  4       . 4      # )c              3   ^   "   T F#  qP                   R 8X  g   K  VP                  x  K%  	  R# 5ir   NrP   	mailboxesr&   r   r   r)   Z(AddressList.mailboxes.<locals>.<genexpr>;  s&      >!\\9%<  AKK!   --r:   r.   r   r   r   ZAddressList.mailboxes9  !     >!>?AC 	Cr   c                r   )c              3   r   r   rP   all_mailboxesr&   r   r   r)   Z,AddressList.all_mailboxes.<locals>.<genexpr>@  s&      >!\\9%< $AOO!r   r   r.   r   r   r   ZAddressList.all_mailboxes>  r   r   rd   N)r4   rT   rU   rV   rP   rY   r   r   r   rZ   r[   rk   rl   r   r   r   1  sH     J< < C C C Cr   r   c                   r   )AddressiD  r   c                \    V ^ ,          P                   R8X  d   V ^ ,          P                  # R# )r    groupNrP   display_namer.   r   r   r   ZAddress.display_nameH  s)    7(7''' )r   c                s    V ^ ,          P                   R8X  d   V ^ ,          .# V ^ ,          P                   R8X  d   . # V ^ ,          P                  # r    mailboxinvalid-mailboxr   r.   r   r   r   ZAddress.mailboxesM  sH    7*G9!W#44IAw   r   c                s    V ^ ,          P                   R8X  d   V ^ ,          .# V ^ ,          P                   R8X  d   V ^ ,          .# V ^ ,          P                  # r   r   r.   r   r   r   ZAddress.all_mailboxesU  sO    7*G9!W#44G9Aw$$$r   rd   N)r4   rT   rU   rV   rP   rY   r   r   r   rZ   r[   rk   rl   r   r   r   D  sD     J( ( ! ! % %r   r   c                   D   a  ] tR tRt o Rt]R 4       t]R 4       tRtV t	R# )MailboxListi]  mailbox-listc                r   )r   r   ri   r   r   r   ZMailboxList.mailboxesa  r   r   c                sV    V  Uu. uF  pVP                   R9   g   K  VNK  	  up# u upi )r   )r   r   r   ri   r   r   r   ZMailboxList.all_mailboxese  s4     ?4a||== 4 ? 	? ?s   &&rd   N
r4   rT   rU   rV   rP   rY   r   r   rZ   r[   rk   rl   r   r   r   ]  s0     J< < ? ?r   r   c                   r   )	GroupListik  
group-listc                l    V '       d   V ^ ,          P                   R8w  d   . # V ^ ,          P                  # r    r   r   r.   r   r   r   ZGroupList.mailboxeso  s+    tAw))^;IAw   r   c                r   r   r   r.   r   r   r   ZGroupList.all_mailboxesu  s+    tAw))^;IAw$$$r   rd   Nr   rk   rl   r   r   r   k  s0     J! !
 % %r   r   c                   r   )Groupi|  r   c                \    V ^,          P                   R8w  d   . # V ^,          P                  #    r   r   r.   r   r   r   ZGroup.mailboxes  s)    7-IAw   r   c                r   r   r   r.   r   r   r   ZGroup.all_mailboxes  s)    7-IAw$$$r   c                (    V ^ ,          P                   # r;   )r   r.   r   r   r   ZGroup.display_name  s    Aw###r   rd   N)r4   rT   rU   rV   rP   rY   r   r   r   rZ   r[   rk   rl   r   r   r   |  sD     J! !
 % %
 $ $r   r   c                   t   a  ] tR tRt o Rt]R 4       t]R 4       t]R 4       t]R 4       t	]R 4       t
RtV tR	# )
NameAddri  	name-addrc                sL    \        V 4      ^8X  d   R# V ^ ,          P                  # )   N)lenr   r.   r   r   r   ZNameAddr.display_name  s     t9>Aw###r   c                (    V R,          P                   # r   
local_partr.   r   r   r   ZNameAddr.local_part  s    Bx"""r   c                r   r   domainr.   r   r   r   ZNameAddr.domain  s    Bxr   c                r   r   )router.   r   r   r   ZNameAddr.route  s    Bx~~r   c                r   r   	addr_specr.   r   r   r   ZNameAddr.addr_spec  s    Bx!!!r   rd   Nr4   rT   rU   rV   rP   rY   r   r   r   r   r   rZ   r[   rk   rl   r   r   r     sl     J$ $
 # #     " "r   r   c                   sd   a  ] tR tRt o Rt]R 4       t]R 4       t]R 4       t]R 4       t	Rt
V tR# )		AngleAddri  z
angle-addrc                r   	addr-specN)rP   r   ri   r   r   r   ZAngleAddr.local_part  s"    A||{*||# r   c                r   r   rP   r   ri   r   r   r   ZAngleAddr.domain  s!    A||{*xx r   c                r   )	obs-routeN)rP   domainsri   r   r   r   ZAngleAddr.route  s"    A||{*yy  r   c                s    V  F\  pVP                   R 8X  g   K  VP                  '       d   VP                  u # \        VP                  4      VP                  ,           u # 	  R# )r   z<>)rP   r   r   r   ri   r   r   r   ZAngleAddr.addr_spec  sH    A||{*<<<;;&'5CC  r   rd   N)r4   rT   rU   rV   rP   rY   r   r   r   r   rZ   r[   rk   rl   r   r   r     sX     J$ $
    
 ! !
  r   r   c                   4   a  ] tR tRt o Rt]R 4       tRtV tR# )ObsRoutei  r   c                rf   r   r   ri   r   r   r   ZObsRoute.domains  s)    "&C$Q,,(*B$CCCrj   rd   N)	r4   rT   rU   rV   rP   rY   r   rZ   r[   rk   rl   r   r   r     s     JD Dr   r   c                   r   )
Mailboxi  r   c                r   r    r   Nr   r.   r   r   r   ZMailbox.display_name  s)    7,7''' -r   c                r   r;   r   r.   r   r   r   ZMailbox.local_part      Aw!!!r   c                r   r;   r   r.   r   r   r   ZMailbox.domain  s    Aw~~r   c                r   r   )rP   r   r.   r   r   r   ZMailbox.route  s'    7,7==  -r   c                r   r;   r   r.   r   r   r   ZMailbox.addr_spec  s    Aw   r   rd   Nr   rk   rl   r   r   r     sl     J( ( " "   ! ! ! !r   r   c                   sD   a  ] tR tRt o Rt]R 4       t];t;t;t	t
RtV tR# )InvalidMailboxi  r   c                ra   r   rd   r.   r   r   r   ZInvalidMailbox.display_name      r   rd   Nr   rk   rl   r   r   r     s2     "J  /;:J::%)r   r   c                   sD   a a ] tR tRt oRtRt]V 3R l4       tRtVt	V ;t
# )Domaini  r   Fc                R   < R P                  \        SV `  P                  4       4      # rS   r-   r   r   splitr6   r7   r   r   ZDomain.domain      wwuw}**,--r   rd   )r4   rT   rU   rV   rP   r=   rY   r   rZ   r[   r\   r]   r_   r   r   r     s&     JM. . .r   r   c                       ] tR tRtRtRtR# )DotAtomi  dot-atomrd   Nro   rd   r   r   r   r     s    Jr   r   c                       ] tR tRtRtRtRtR# )DotAtomTexti  zdot-atom-textTrd   Nr4   rT   rU   rV   rP   r=   rZ   rd   r   r   r   r     s     JMr   r   c                   r   )NoFoldLiterali  zno-fold-literalFrd   Nr   rd   r   r   r   r     s    "JMr   r   c                   sh   a  ] tR tRt o RtRt]R 4       t]R 4       t]R 4       t	]R 4       t
RtV tR	# )
AddrSpeci  r   Fc                r   r;   r   r.   r   r   r   ZAddrSpec.local_part  r   r   c                sL    \        V 4      ^8  d   R# V R,          P                  # )   Nr   )r   r   r.   r   r   r   ZAddrSpec.domain  s    t9q=Bxr   c                s   \        V 4      ^8  d   V ^ ,          P                  # V ^ ,          P                  P                  4       V ^,          P                  ,           V ^,          P                  P                  4       ,           # )r   )r   r   rstriplstripr.   r   r   r   ZAddrSpec.value$  sU    t9q=7== Aw}}##%d1gmm3DGMM4H4H4JJJr   c                s   \        V P                  4      p\        V4      \        V\        ,
          4      8  d   \	        V P                  4      pMV P                  pV P
                  e   VR,           V P
                  ,           # V# )N@)setr   r   DOT_ATOM_ENDSr   r   )r    ZnamesetZlprB   r   r   ZAddrSpec.addr_spec*  s_    doo&w<#gm344doo.BB;;"8dkk))	r   rd   N)r4   rT   rU   rV   rP   r=   rY   r   r   r   r   rZ   r[   rk   rl   r   r   r     s_     JM" "  
 K K
  r   r   c                   r   )ObsLocalParti6  zobs-local-partFrd   Nr   rd   r   r   r   r   6  s    !JMr   r   c                   sT   a a ] tR tRt oRtRt]R 4       t]V 3R l4       tRt	Vt
V ;t# )DisplayNamei<  zdisplay-nameFc                s|   \        V 4      p\        V4      ^ 8X  d   VP                  # V^ ,          P                  R8X  d   VP	                  ^ 4       MX\        V^ ,          \         4      '       d<   V^ ,          ^ ,          P                  R8X  d   \        V^ ,          R,          4      V^ &   VR,          P                  R8X  d   VP	                  4        VP                  # \        VR,          \         4      '       d8   VR,          R,          P                  R8X  d   \        VR,          RR 4      VR&   VP                  # )r    rv   r   NNNr   )r   r   r   rP   pop
isinstance)r    r   r   r   r   ZDisplayName.display_nameA  s    os8q=99q6&GGAJ3q69--F1I((F2"3q6":.Ar7'GGI
 yy 3r7I..GBK**f4#CGCRL1Byyr   c                sV  < R pV P                   '       d   RpMV  F  pVP                  R8X  g   K  RpK  	  \        V 4      ^ 8w  d   V'       d   R;r4V ^ ,          P                  R8X  g=   \        V ^ ,          \        4      '       d"   V ^ ,          ^ ,          P                  R8X  d   RpV R,          P                  R8X  g=   \        V R,          \        4      '       d"   V R,          R,          P                  R8X  d   RpV\        V P                  4      ,           V,           # \        SV `   # )FTr   r#   rv   rc   r   )	r   rP   r   r   r   r   r   r   r   )r    r   r(   ZpreZpostr!   s   &    r   r   ZDisplayName.valueT  s    <<<E<<?2 E  t9>eOCQ""f,47I..Q
%%/R##v-48Y//R''61|D$5$566t;;7= r   rd   )r4   rT   rU   rV   rP   rX   rY   r   r   rZ   r[   r\   r]   r_   r   r   r   <  s;     J $ ! ! !r   r   c                   sH   a  ] tR tRt o RtRt]R 4       t]R 4       tRt	V t
R# )	LocalPartil  z
local-partFc                s~    V ^ ,          P                   R8X  d   V ^ ,          P                  # V ^ ,          P                  # )r    r   )rP   r   r   r.   r   r   r   ZLocalPart.valueq  s2    707'''7== r   c                s4   \         .p\         pR pV ^ ,          \         .,            F  pVP                  R8X  d   K  V'       d;   VP                  R8X  d*   VR,          P                  R8X  d   \        VRR 4      VR&   \        V\        4      pV'       dL   VP                  R8X  d;   V^ ,          P                  R8X  d#   VP	                  \        VR,          4      4       MVP	                  V4       VR,          pTpK  	  \        V^R 4      pVP
                  # )Frv   dotNr   r   )DOTrP   r   r   r   r   )r    r   ZlastZ
last_is_tltokZis_tls   &     r   r   ZLocalPart.local_partx  s     e
7cU??C~~'s~~6H''61#D"I.BsI.E$//U2F%%/

9SW-.

3r7DJ # Ab	"yyr   rd   N)r4   rT   rU   rV   rP   r=   rY   r   r   rZ   r[   rk   rl   r   r   r   l  s5     JM! !  r   r   c                   sT   a a ] tR tRt oRtRt]V 3R l4       t]R 4       tRt	Vt
V ;t# )DomainLiterali  zdomain-literalFc                r   rS   r   r6   r7   r   r   ZDomainLiteral.domain  r   r   c                r   )ptextNr   ri   r   r   ipZDomainLiteral.ip  s!    A||w&ww r   rd   )r4   rT   rU   rV   rP   r=   rY   r   r   rZ   r[   r\   r]   r_   r   r   r     s:     !JM. .   r   r   c                   s"    ] tR tRtRtRtRtRtR# )MIMEVersioni  zmime-versionNrd   )r4   rT   rU   rV   rP   majorminorrZ   rd   r   r   r   r     s    JEEr   r   c                   sP   a  ] tR tRt o RtRtRtRt]R 4       t	]R 4       t
RtV tR# )		Parameteri  	parameterFus-asciic                sP    V P                   '       d   V ^,          P                  # ^ # )r   )	sectionednumberr.   r   r   section_numberZParameter.section_number  s     "&tAw~~6Q6r   c                s   V  F}  pVP                   R 8X  d   VP                  u # VP                   R8X  g   K5  V FB  pVP                   R8X  g   K  V F&  pVP                   R 8X  g   K  VP                  u u u # 	  KD  	  K  	  R# )r   r   r   r#   )rP   r   r   r   r   param_valueZParameter.param_value  sx     E7*+++?2"E''+??%*E$//7:',';'; ; &+ #	  r   rd   N)r4   rT   rU   rV   rP   r   extendedr}   rY   r   r   rZ   r[   rk   rl   r   r   r     s?     JIHG7 7
  r   r   c                   r   )InvalidParameteri  invalid-parameterrd   Nro   rd   r   r   r   r     s    $Jr   r   c                   r   )	Attributei  	attributec                sv    V  F2  pVP                   P                  R 4      '       g   K&  VP                  u # 	  R# )attrtextN)rP   endswithr   r   r   r   r   ZAttribute.stripped_value  s-    E((44{{" r   rd   N	r4   rT   rU   rV   rP   rY   r   rZ   r[   rk   rl   r   r   r     s     J# #r   r   c                   s    ] tR tRtRtRtRtR# )Sectioni  sectionNrd   )r4   rT   rU   rV   rP   r   rZ   rd   r   r   r  r    s    JFr   r  c                   r   )Valuei  r   c                s    V ^ ,          pVP                   R8X  d
   V ^,          pVP                   P                  R4      '       d   VP                  # V P                  # )r    rv   )r   r   zextended-attribute)rP   r  r   r   r   r   r   r   ZValue.stripped_value  sV    Qv%GE$$DF F'''zzr   rd   Nr  rk   rl   r   r  r    s     J r   r  c                   s>   a  ] tR tRt o RtRt]R 4       tR tRt	V t
R# )MimeParametersi  mime-parametersFc              #  s,  "   / pV  F  pVP                   P                  R 4      '       g   K&  V^ ,          P                   R8w  d   K@  V^ ,          P                  P                  4       pW19  d   . W&   W,          P	                  VP
                  V34       K  	  VP                  4        EF	  w  r4\        V\        ^ 4      R7      pV^ ,          ^,          pVP                  pVP                  '       gl   \        V4      ^8  d\   V^,          ^ ,          ^ 8X  dG   V^,          ^,          P                  P	                  \        P                  ! R4      4       VR,          p. p^ pV EF3  w  rW8w  ds   V
P                  '       g2   V
P                  P	                  \        P                  ! R4      4       KO  V
P                  P	                  \        P                  ! R4      4       V^,          pV
P                  pV
P                  '       d~    \         P"                  P%                  V4      p VP'                  VR4      p\,        P.                  ! V4      '       d/   V
P                  P	                  \        P0                  ! 4       4       VP	                  V4       EK6  	  RP5                  V4      pW;3x  EK  	  R#   \(        \*        3 d    TP'                  RR4      p Li ; i  \*         d%    \         P"                  P3                  TR	R
7      p Li ; i5i)r   r   )Zkeyz.duplicate parameter name; duplicate(s) ignored:Nr   Nz+duplicate parameter name; duplicate ignoredz(inconsistent RFC2231 parameter numberingsurrogateescaper   zlatin-1)encodingr#   N)rP   r  r   stripr   r   ZitemsZsortedr   r}   r   r   r   r   InvalidHeaderDefectr   urllibparseZunquote_to_bytesdecodeZLookupErrorUnicodeEncodeErrorr   _has_surrogatesUndecodableBytesDefectZunquoter-   )r    paramsrA   namepartsZfirst_paramr}   Zvalue_partsZir   paramr   s   &           r   r  ZMimeParameters.params  s     E##,,[99Qx""k18>>'')D!!L!5!5u =>  "<<>KD5jm4E(1+K!))G '''CJN8A;!#!HQK''..v/I/IH0J K!"IE KA).%!& !>>>,,V-G-GI.K L ,,V-G-GF.H IQ))>>>R & = =e DP$)LL:K$LE !0077!MM001N1N1PQ""5)C */D GGK(E+g *R !,-?@ P
 %*LL=N$OEP . P !' 4 4UY 4 O	PsV   E?LBL
K"*J9<LA!L9#KLKL",LLLLc           	     s   . pV P                    FJ  w  r#V'       d-   VP                  R P                  V\        V4      4      4       K9  VP                  V4       KL  	  RP	                  V4      pV'       d
   RV,           # R# ){}={}z; rc   r#   )r  r   r3   r   r-   )r    r  r  r      &   r   r/   ZMimeParameters.__str__2  sc    ;;KDgnnT<3FGHd#	 '
 6"%sV|-2-r   rd   N)r4   rT   rU   rV   rP   rW   rY   r  r/   rZ   r[   rk   rl   r   r  r    s.     "JOC CJ. .r   r  c                   r   )ParameterizedHeaderValuei=  Fc                sh    \        V 4       F"  pVP                  R 8X  g   K  VP                  u # 	  / # )r  )ZreversedrP   r  r   r   r   r  ZParameterizedHeaderValue.paramsC  s0    d^E#44||# $ 	r   rd   N)	r4   rT   rU   rV   rW   rY   r  rZ   r[   rk   rl   r   r  r  =  s      O r   r  c                   s&    ] tR tRtRtRtRtRtRtR# )ContentTypeiK  zcontent-typeFtextZplainrd   N)	r4   rT   rU   rV   rP   r=   maintypesubtyperZ   rd   r   r   r  r  K  s    JMHGr   r  c                   s"    ] tR tRtRtRtRtRtR# )ContentDispositioniR  zcontent-dispositionFNrd   )r4   rT   rU   rV   rP   r=   content_dispositionrZ   rd   r   r   r  r  R  s    &JMr   r  c                   s"    ] tR tRtRtRtRtRtR# )ContentTransferEncodingiX  zcontent-transfer-encodingFZ7bitrd   N)r4   rT   rU   rV   rP   r=   r|   rZ   rd   r   r   r  r  X  s    ,JM
Cr   r  c                   r   )HeaderLabeli^  zheader-labelFrd   Nr   rd   r   r   r   r   ^  s    JMr   r   c                   s.   a  ] tR tRt o RtRtR tRtV tR# )MsgIDic  msg-idFc                s:    \        V 4      VP                  ,           # r   )r   lineseprF   rM   r   rG   Z
MsgID.foldg  s    4y6>>))r   rd   N)	r4   rT   rU   rV   rP   r=   rG   rZ   r[   rk   rl   r   r!  r!  c  s     JM* *r   r!  c                   r   )	MessageIDil  z
message-idrd   Nro   rd   r   r   r$  r$  l  s    Jr   r$  c                   r   )InvalidMessageIDip  zinvalid-message-idrd   Nro   rd   r   r   r%  r%  p  s    %Jr   r%  c                   r   )MessageIDListis  zmessage-id-listc                r   )r"  r   ri   r   r   message_idsZMessageIDList.message_idsv  s%    :4a<<#94:::r   rd   N)	r4   rT   rU   rV   rP   rY   r'  rZ   r[   rk   rl   r   r&  r&  s  s     "J; ;r   r&  c                   r   )Headeriz  Zheaderrd   Nro   rd   r   r   r(  r(  z  rr   r   r(  c                   s   a a ] tR tRt oRtRtRtV 3R ltV 3R ltR t	]
R 4       tRV 3R lltR t]
R	 4       tR
 tRtVtV ;t# )Terminali  Tc                s@   < \         SV `  W4      pW#n        . Vn        V# r   )r   __new__rP   r   )Zclsr   rP   r    r!   s   &&& r   r*  ZTerminal.__new__  s"    ws*$r   c                r0   r1   r2   r6   r7   r   r5   ZTerminal.__repr__  s&    t~~668H8JKKr   c                st    \        V P                  P                  R ,           V P                  ,           4       R# )/N)rJ   r!   r4   rP   r.   r   r   rN   ZTerminal.pprint  s"    dnn%%+doo=>r   c                s,    \        V P                  4      # r   )listr   r.   r   r   r9   ZTerminal.all_defects  s    DLL!!r   c           	     s   < R P                  TV P                  P                  V P                  \        SV `  4       V P                  '       g   R4      .# RP                  V P                  4      4      .# )z{}{}/{}({}){}r#   z {})r3   r!   r4   rP   r   r5   r   )r    rI   r!   s   &&r   rO   ZTerminal._pp  si    &&NN##OOGlllB  	
 ).T\\(B  	r   c                ra   r   rd   r.   r   r   pop_trailing_wsZTerminal.pop_trailing_ws  r   r   c                s    . # r   rd   r.   r   r   r@   ZTerminal.comments  s    	r   c                s0    \        V 4      V P                  3# r   )r   rP   r.   r   r   __getnewargs__ZTerminal.__getnewargs__  s    4y$//**r   )r   rP   rS   )r4   rT   rU   rV   r=   rX   rW   r*  r5   rN   rY   r9   rO   r-  r@   r.  rZ   r[   r\   r]   r_   r   r)  r)    sa     MOL? " "  + +r   r)  c                   6   a  ] tR tRt o ]R 4       tR tRtV tR# )WhiteSpaceTerminali  c                ra   rb   rd   r.   r   r   r   ZWhiteSpaceTerminal.value  re   r   c                s6    T ;'       d    V ^ ,          \         9   # r;   )WSPr.   r   r   r<   Z!WhiteSpaceTerminal.startswith_fws  s    &&Q3&r   rd   N	r4   rT   rU   rV   rY   r   r<   rZ   r[   rk   rl   r   r0  r0    s!      ' 'r   r0  c                   r/  )ValueTerminali  c                s    V # r   rd   r.   r   r   r   ZValueTerminal.value  s    r   c                ra   )Frd   r.   r   r   r<   ZValueTerminal.startswith_fws  s    r   rd   Nr2  rk   rl   r   r3  r3    s!       r   r3  c                   r/  )EWWhiteSpaceTerminali  c                ra   rS   rd   r.   r   r   r   ZEWWhiteSpaceTerminal.value  s    r   c                ra   rS   rd   r.   r   r   r/   ZEWWhiteSpaceTerminal.__str__  s    r   rd   N)	r4   rT   rU   rV   rY   r   r/   rZ   r[   rk   rl   r   r4  r4    s!       r   r4  c                   s    ] tR tRtRtR# )_InvalidEwErrori  rd   N)r4   rT   rU   rV   rZ   rd   r   r   r5  r5    s    r   r5  r   ,zlist-separatorFr   zroute-component-markerz([{}]+)r#   z[^{}]+z[\x00-\x20\x7F]c                 s$   \        V 4      pV'       d0   V P                  P                  \        P                  ! V4      4       \
        P                  ! V 4      '       d2   V P                  P                  \        P                  ! R 4      4       R# R# )z*Non-ASCII characters found in header tokenN)_non_printable_finderr   r   r   ZNonPrintableDefectr   r  r  )xtextZnon_printablesr   r   _validate_xtextr9    sf     +51NV66~FGU##V::8: 	; $r   c                 s|   V '       g   R# \        V ^4      vr#. pRpRp\        \        V4      4       FR  pW',          R8X  d   V'       d   RpRpMRpK!  V'       d   RpMW',          V9   d    M$VP                  W',          4       KT  	  X^,           pR P	                  V4      R P	                  W'R .V,           4      V3# )r#   Fr	   TN)r#   r#   F)_wsp_splitterZranger   r   r-   )r   endcharsZfragment	remainderZvcharsescapehad_qpZposs   &&      r   _get_ptext_to_endcharsr?    s     (2HFFFS]#=D F]h&hm$ $ Ag776?BGGXd^$4y$@A6IIr   c                 sx    V P                  4       p\        V R \        V 4      \        V4      ,
           R4      pW!3# )Nfws)r   r0  r   )r   Znewvaluer@  rB   r   get_fwsrA  "  s8     ||~H
U#<CJs8}$<=u
EC=r   c                 s   \        4       pV P                  R 4      '       g&   \        P                  ! RP	                  V 4      4      hV R,          P                  R^4      vr4W0R,          8X  d&   \        P                  ! RP	                  V 4      4      hRP                  V4      p\        V4      ^8  d^   V^ ,          \        9   dL   V^,          \        9   d:   VP                  R4      ^8  d$   VP                  R^4      vrdVR,           V,           p\        VP                  4       4      ^8  d0   VP                  P                  \        P                  ! R4      4       Wn        RP                  V4      p  \        P                  ! R V,           R,           4      w  rxrYn        Yn        TP                  P+                  T
4       T'       dz   T^ ,          \,        9   d!   \/        T4      w  rTP                  T4       K:  \1        T^4      vr\3        Y4      p\5        T4       TP                  T4       RP                  T4      pK  T '       dB   T ^ ,          \,        9  d0   TP                  P                  \        P                  ! R4      4       Y 3#   \         \"        3 d&    \%        RP	                  TP                  4      4      hi ; i)	=?z"expected encoded word but found {}:r   NNz?=r#   Z?zwhitespace inside encoded wordz!encoded word format invalid: '{}'z.missing trailing whitespace after encoded-word)rz   
startswithr   HeaderParseErrorr3   r   r-   r   r   Zcountr   r   r  r|   _ewr  Z
ValueErrorZKeyErrorr5  r}   r~   r?   r1  rA  r:  r3  r9  )r   Zterminal_typeZewr   r<  Zremstrrestr  r}   r~   r   rA   Zcharsvtexts   &&            r   get_encoded_wordrH  .  s@    
BD!!%%077>@ 	@BioodA.OC
Bi%%077>@ 	@WWYFFaq	Yq	Y		#!<<a0Dj4
399;!


&44,. 	/FGGIE@'*zz$*t2C'D$t JGJJg
7c>!$-KEIIe)$2e3
		%wwy!q$


&44<> 	?9) ! @/66rvv>@ 	@@s   6'J 6Kc                 s   \        4       pV '       Ed   V ^ ,          \        9   d!   \        V 4      w  r VP                  V4       K;  RpV P	                  R4      '       d    \        V R4      w  r Rp\        V4      ^ 8  dJ   VR	,          P                  R8w  d2   VP                  P                  \        P                  ! R4      4       RpV'       d?   \        V4      ^8  d/   VR
,          P                  R8X  d   \        VR	,          R4      VR	&   VP                  V4       EK  \        V ^4      vrVV'       d.   \        P!                  V4      '       d   V P#                  R4      vrV\%        VR4      p\'        V4       VP                  V4       RP)                  V4      p EK  V#   \         d    Rp L\        P                   d     Li ; i)r    TrB  Zutextr@  z&missing whitespace before encoded wordFr{   r#   r   )rm   r1  rA  r   rC  rH  r   rP   r   r   r  r4  r5  rD  r:  rfc2047_matcherZsearchZ	partitionr3  r9  r-   )r   rn   rA   valid_ewZhave_wsr   r<  rG  s   &       r   get_unstructuredrL  _  s   . )*L
%8s?"5>LE&D!!/w? |$q(#B'22e;$,,33F4N4ND5F G"'s<014#B'22nD+?(,e,5R(##E*'q1 ..s33#ood3OCc7+E"	"A # ! **  s    F# #G	2G	G	G	c                 T    \        V R 4      w  rp\        VR4      p\        V4       W3# )z()r   )r?  r0  r9  r   r   Z_rB   r   get_qp_ctextrO    s0     -UD9OE!ug.EE<r   c                 rM  )r   r   )r?  r3  r9  rN  rB   r   get_qcontentrP    s0     -UC8OE!%)EE<r   c                     \        V 4      pV'       g&   \        P                  ! R P                  V 4      4      hVP	                  4       pV \        V4      R p \        VR4      p\        V4       W 3# )zexpected atext but found '{}'Natext)_non_atom_end_matcherr   rD  r3   r   r   r3  r9  )r   mrR  rB   r   	get_atextrU    si     	e$A%%+2259; 	;GGIE#e*+E%)EE<r   c                 s   V '       d   V ^ ,          R8w  d&   \         P                  ! RP                  V 4      4      h\        4       pV R,          p V '       d-   V ^ ,          R8X  d   \	        V 4      w  r VP                  V4       V '       d   V ^ ,          R8w  d   V ^ ,          \        9   d   \        V 4      w  r MV R,          R8X  d   Rp \        V 4      w  r VP                  P                  \         P                  ! R4      4       RpV'       dW   \        V4      ^8  dG   VR,          P                  R	8X  d/   VR,          P                  R
8X  d   \        VR,          R	4      VR&   M\	        V 4      w  r VP                  V4       EK  V '       g3   VP                  P                  \         P                  ! R4      4       W3# WR,          3#   \         P                   d    \	        T 4      w  r  Li ; i)r    r   zexpected '"' but found '{}'r   :Nr   NrB  Fz!encoded word inside quoted stringTr@  r{   z"end of header inside quoted stringr   rI  )r   rD  r3   r   rP  r   r1  rA  rH  r   r  r   rP   r4  )r   Zbare_quoted_stringrA   rK  r  r   get_bare_quoted_stringrV    s    E!HO%%*11%8: 	:)+"IEqS#E*!!%(
E!HO8s?"5>LE52Y$H3/6"**11&2L2L739 :
 C 23a7&r*55>*2.99^K-A*2..7&r* (.LE!!%(""))&*D*D0+2 	3!((Ry((! ** 3+E2u3s   
>G "G10G1c                 s
   V '       d4   V ^ ,          R8w  d&   \         P                  ! RP                  V 4      4      h\        4       pV R,          p V '       dk   V ^ ,          R8w  d]   V ^ ,          \        9   d   \        V 4      w  r M)V ^ ,          R8X  d   \        V 4      w  r M\        V 4      w  r VP                  V4       Kr  V '       g3   VP                  P                  \         P                  ! R4      4       W3# WR,          3# )r    r   zexpected '(' but found '{}'r   r   zend of header inside comment)r   rD  r3   r   r1  rA  get_commentrO  r   r   r  )r   rg   rA   rB   r   rW  rW    s     qS%%)0079 	9iG"IE
E!HO8s?"5>LE51X_&u-LE5'.LEuv99* , 	-~"Ir   c                 s    \        4       pV '       dS   V ^ ,          \        9   dA   V ^ ,          \        9   d   \        V 4      w  r M\	        V 4      w  r VP                  V4       KZ  W3# r;   )ru   CFWS_LEADERr1  rA  rW  r   )r   rv   rA   rB   r   get_cfwsrY    sQ     :D
E!H+8s?"5>LE5&u-LEE;r   c                 s8   \        4       pV '       d1   V ^ ,          \        9   d   \        V 4      w  r VP                  V4       \	        V 4      w  r VP                  V4       V '       d1   V ^ ,          \        9   d   \        V 4      w  r VP                  V4       W3# r;   )r   rX  rY  r   rV  )r   Zquoted_stringrA   rB   r   get_quoted_stringrZ  #  s|     !NMq[(U#)%0LEq[(U#r   c                 sR   \        4       pV '       d1   V ^ ,          \        9   d   \        V 4      w  r VP                  V4       V '       d8   V ^ ,          \        9   d&   \
        P                  ! RP                  V 4      4      hV P                  R4      '       d    \        V 4      w  r M\        V 4      w  r VP                  V4       V '       d1   V ^ ,          \        9   d   \        V 4      w  r VP                  V4       W3#   \
        P                   d    \        T 4      w  r  Lpi ; i)r    zexpected atom but found '{}'rB  )rw   rX  rY  r   	ATOM_ENDSr   rD  r3   rC  rH  rU  )r   rx   rA   rB   r   get_atomr\  5  s    
 6Dq[(EqY&%%*11%8: 	:	,+E2LE5 !'KKq[(E; && 	, %U+LE5	,s   D "D&%D&c                 s   \        4       pV '       d   V ^ ,          \        9   d&   \        P                  ! RP	                  V 4      4      hV '       dk   V ^ ,          \        9  dY   \        V 4      w  r VP                  V4       V '       g   KB  V ^ ,          R8X  g   KR  VP                  \        4       V R,          p Kr  VR,          \        J d-   \        P                  ! RP	                  RV ,           4      4      hW3# )r    z8expected atom at a start of dot-atom-text but found '{}'r   r   z4expected atom at end of dot-atom-text but found '{}'r   )r   r[  r   rD  r3   rU  r   r   )r   Zdot_atom_textrA   rB   r   get_dot_atom_textr]  P  s      MME!H	)%% '++16%=: 	:
E!HI- 'U#5U1X_  %"IERC%% '#VCI.0 	0r   c                 s   \        4       pV ^ ,          \        9   d   \        V 4      w  r VP                  V4       V P	                  R4      '       d    \        V 4      w  r M\        V 4      w  r VP                  V4       V '       d1   V ^ ,          \        9   d   \        V 4      w  r VP                  V4       W3#   \        P                   d    \        T 4      w  r  Lpi ; i)r    rB  )	r   rX  rY  r   rC  rH  r   rD  r]  )r   Zdot_atomrA   rB   r   get_dot_atomr^  c  s     yHQx;	4+E2LE5 )/OOEq[(? && 	4 -U3LE5	4s   B: :"CCc                 s\   V ^ ,          \         9   d   \        V 4      w  rMRpV '       g   \        P                  ! R4      hV ^ ,          R8X  d   \	        V 4      w  r MDV ^ ,          \
        9   d&   \        P                  ! RP                  V 4      4      h\        V 4      w  r Ve   V.VR&   W 3# )r    Nz5Expected 'atom' or 'quoted-string' but found nothing.r   z1Expected 'atom' or 'quoted-string' but found '{}'Nr    N)rX  rY  r   rD  rZ  SPECIALSr3   r\  )r   leaderrA   rB   r   get_wordrb  |  s      Qx; %%CE 	EQx}(/u	qX	%% '77=ve}F 	F  Hb	<r   c                 s   \        4       p \        V 4      w  r VP                  V4       V '       d   V ^ ,          \        9  d   V ^ ,          R8X  dP   VP                  \        4       VP
                  P                  \        P                  ! R4      4       V R,          p Kw   \        V 4      w  r TP                  T4       K  W3#   \        P                   d3    TP
                  P                  \        P                  ! R 4      4        Li ; i  \        P                   dS    T ^ ,          \        9   d?   \        T 4      w  r TP
                  P                  \        P                  ! R4      4        Lh i ; i)zphrase does not start with wordr   zperiod in 'phrase'r   zcomment found without atom)rp   rb  r   r   rD  r   r  PHRASE_ENDSr   ObsoleteHeaderDefectrX  rY  )r   rq   rA   rB   r   
get_phrasere    s,    XF0e E!HK/8S=MM#NN!!&"="=$#& '"IE' MM% =) "" 0f88-/ 	00 ** 8{*#+E?LENN))&*E*E4+6 7 s%   C "D ADDA#E64E6c                 s,   \        4       pR pV '       d    V ^ ,          \        9   d   \        V 4      w  r V '       g&   \        P                  ! RP                  V 4      4      h \        V 4      w  r0Te   T.TR&   TP                  T4       T '       d   T ^ ,          R8X  g   T ^ ,          \        9  d   \        \        T4      T ,           4      w  r@TP                  R8X  d1   TP                  P                  \        P                  ! R4      4       M/TP                  P                  \        P                   ! R4      4       YA^ &    TP"                  P%                  R4       Y3#   \        P                   d[     \        T 4      w  r0 EL  \        P                   d1    T ^ ,          R8w  d   T ^ ,          \        9   d   h \        4       p  EL]i ; ii ; i  \&         d5    TP                  P                  \        P(                  ! R4      4        Y3# i ; i)	Nz"expected local-part but found '{}'r	   r_  invalid-obs-local-partz<local-part is not dot-atom, quoted-string, or obs-local-partz,local-part is not a dot-atom (contains CFWS)Zasciiz)local-part contains non-ASCII characters))r   rX  rY  r   rD  r3   r^  rb  rc  r   r   get_obs_local_partr   rP   r   r  rd  r   encoder  ZNonASCIILocalPartDefect)r   r   ra  rA   obs_local_part   &    r   get_local_partrk    s    JFq[( %%077>@ 	@ #E* Hb	e%(D.E!HK$? 23z?U3J K$$(@@%%f&@&@N'P Q %%f&A&A>'@ A&1>( 1 ""  	 #E?LE5&& 	 Qx4E!H$;KE	  *  >!!&"@"@;#= 	>>s=   "E" G "G8FA GGGG:HHc                 s    \        4       pR pV '       Edh   V ^ ,          R8X  g   V ^ ,          \        9  EdG   V ^ ,          R8X  dZ   V'       d0   VP                  P                  \        P
                  ! R4      4       VP                  \        4       RpV R,          p K  V ^ ,          R8X  d_   VP                  \        V ^ ,          R4      4       V R,          p VP                  P                  \        P
                  ! R4      4       R pK  V'       dH   VR,          P                  R8w  d0   VP                  P                  \        P
                  ! R	4      4        \        V 4      w  r0R pVP                  V4       EKp  V'       g&   \        P                  ! R
P                  V 4      4      hV^ ,          P                  R8X  gA   V^ ,          P                  R8X  dX   \        V4      ^8  dH   V^,          P                  R8X  d0   VP                  P                  \        P
                  ! R4      4       VR,          P                  R8X  gA   VR,          P                  R8X  dX   \        V4      ^8  dH   VR,          P                  R8X  d0   VP                  P                  \        P
                  ! R4      4       VP                  '       d   RVn        W3#   \        P                   d%    T ^ ,          \        9  d   h \        T 4      w  r0 ELi ; i)Fr	   r   zinvalid repeated '.'Tr   misplaced-specialz/'\' character outside of quoted-string/ccontentr   zmissing '.' between wordsz&expected obs-local-part but found '{}'rv   z!Invalid leading '.' in local partz"Invalid trailing '.' in local partrf  r   rI  )r   rc  r   r   r   r  r   r3  rP   rb  rD  rX  rY  r3   r   )r   ri  Zlast_non_ws_was_dotrA   r  r   rg  rg    s    "^N
%U1Xt^uQx{'B8s?"&&--f.H.H*/, -!!#&"&"IE1Xt^!!-a0C#E F"IE""))&*D*DB+D E"'nR0;;uD""))&*D*D++- .	+#E?LE"'
 	e$%%4;;EBD 	Dq$$-1((&0!#1((%/%%f&@&@/'1 	2r%%.2))61!#2))50%%f&@&@0'2 	3$<!  - && 	+Qx{*#E?LE5	+s   K 5LLc                 s    \        V R 4      w  rp\        VR4      pV'       d0   VP                  P                  \        P
                  ! R4      4       \        V4       W3# )z[]r   z(quoted printable found in domain-literal)r?  r3  r   r   r   rd  r9  )r   r   r>  rB   r   	get_dtextrm    sV     2%>E&%)EV8868 	9E<r   c                 s    V '       d   R # VP                   P                  \        P                  ! R4      4       VP                  \	        RR4      4       R# )Fz"end of input inside domain-literal]domain-literal-endT)r   r   r   r  r3  )r   domain_literalrM   r   _check_for_early_dl_endrq  3  sE    !!&"<"<,#. /--ABCr   c                 s   \        4       pV ^ ,          \        9   d   \        V 4      w  r VP                  V4       V '       g   \        P
                  ! R4      hV ^ ,          R8w  d&   \        P
                  ! RP                  V 4      4      hV R,          p VP                  \        RR4      4       \        W4      '       d   W3# V ^ ,          \        9   d   \        V 4      w  r VP                  V4       \        V 4      w  r VP                  V4       \        W4      '       d   W3# V ^ ,          \        9   d   \        V 4      w  r VP                  V4       \        W4      '       d   W3# V ^ ,          R8w  d&   \        P
                  ! RP                  V 4      4      hVP                  \        RR4      4       V R,          p V '       d1   V ^ ,          \        9   d   \        V 4      w  r VP                  V4       W3# )	r    zexpected domain-literal[z6expected '[' at start of domain-literal but found '{}'r   zdomain-literal-startrn  z4expected ']' at end of domain-literal but found '{}'ro  )r   rX  rY  r   r   rD  r3   r3  rq  r1  rA  rm  )r   rp  rA   rB   r   get_domain_literalrs  ;  s    #_NQx;e$%%&?@@Qx3%% '!!'0 	0"IE--CDEu55$$Qx3u~e$U#LE% u55$$Qx3u~e$u55$$Qx3%% '!!'0 	0--ABC"IEq[(e$  r   c                 s   \        4       pR pV '       d    V ^ ,          \        9   d   \        V 4      w  r V '       g&   \        P                  ! RP                  V 4      4      hV ^ ,          R8X  d,   \        V 4      w  r0Ve   V.VR&   VP                  V4       W3#  \        V 4      w  r0V '       d%   V ^ ,          R8X  d   \        P                  ! R4      hVe   V.VR&   VP                  V4       V '       d   V ^ ,          R8X  d   VP                  P                  \        P                  ! R4      4       V^ ,          P                  R8X  d   V^ ,          VR	&   V '       dK   V ^ ,          R8X  d=   VP                  \        4       \        V R
,          4      w  r0VP                  V4       KR  W3#   \        P                   d    \        T 4      w  r0 EL*i ; i)Nzexpected domain but found '{}'rr  r_  r   zInvalid Domainr   z(domain is not a dot-atom (contains CFWS)r   NNNr   )r   rX  rY  r   rD  r3   rs  r   r^  r\  r   rd  rP   r   )r   r   ra  rA   r  r   
get_domainru  b  s   
 XFFq[( %%,33E:< 	<Qx3)%0E"Ie}'#E* qS%%&677Hb	
MM%qSf9968 	9!9:-q	F1IaCMM##E"I.LEMM% =! "" 'u's   F- -"GGc                 sh   \        4       p\        V 4      w  r VP                  V4       V '       d   V ^ ,          R8w  d3   VP                  P                  \        P
                  ! R4      4       W3# VP                  \        RR4      4       \        V R,          4      w  r VP                  V4       W3# )r    r   z#addr-spec local part with no domainaddress-at-symbolr   )r   rk  r   r   r   r  r3  ru  )r   r   rA   rB   r   get_addr_specrw    s     
I!%(LEUE!HO  !;!;1"3 	4]3(;<=eBi(LEUr   c                 s   \        4       pV '       d   V ^ ,          R8X  g   V ^ ,          \        9   dc   V ^ ,          \        9   d!   \        V 4      w  r VP                  V4       KZ  V ^ ,          R8X  g   Kj  VP                  \        4       V R,          p K  V '       d   V ^ ,          R8w  d&   \
        P                  ! RP                  V 4      4      hVP                  \        4       \        V R,          4      w  r VP                  V4       V '       d   V ^ ,          R8X  d   VP                  \        4       V R,          p V '       g   MV ^ ,          \        9   d   \        V 4      w  r VP                  V4       V '       g   MLV ^ ,          R8X  g   K  VP                  \        4       \        V R,          4      w  r VP                  V4       K  V '       g   \
        P                  ! R4      hV ^ ,          R8w  d&   \
        P                  ! RP                  V 4      4      hVP                  \        RR4      4       WR,          3# )	r    r6  r   r   z(expected obs-route domain but found '{}'z%end of header while parsing obs-route:z4expected ':' marking end of obs-route but found '{}'zend-of-obs-route-marker)r   rX  rY  r   ListSeparatorr   rD  r3   RouteComponentMarkerru  r3  )r   Z	obs_routerA   rB   r   get_obs_router{    s    
I
U1Xs]eAh+&=8{"#E?LEU#1X_]+"IEE!HO%%6==eDF 	F)*eBi(LEU
E!HcM'b	8{"#E?LEU#8s?12%eBi0LEU#%%&MNNQx3%% (''-ve}6 	6]3(ABCBir   c                 s   \        4       pV '       d1   V ^ ,          \        9   d   \        V 4      w  r VP                  V4       V '       d   V ^ ,          R8w  d&   \        P
                  ! RP                  V 4      4      hVP                  \        RR4      4       V R,          p V '       de   V ^ ,          R8X  dW   VP                  \        RR4      4       VP                  P                  \        P                  ! R4      4       V R,          p W3#  \        V 4      w  r TP                  T4       T '       d   T ^ ,          R8X  d   T R,          p M/TP                  P                  \        P                  ! R
4      4       TP                  \        RR4      4       T '       d1   T ^ ,          \        9   d   \        T 4      w  r TP                  T4       Y3#   \        P
                   d     \        T 4      w  r TP                  P                  \        P                  ! R4      4       M>  \        P
                   d'    \        P
                  ! R	P                  T 4      4      hi ; iTP                  T4       \        T 4      w  r  ELhi ; i)r    <z"expected angle-addr but found '{}'zangle-addr-startr   >zangle-addr-endznull addr-spec in angle-addrz*obsolete route specification in angle-addrz.expected addr-spec or obs-route but found '{}'z"missing trailing '>' on angle-addr)r   rX  rY  r   r   rD  r3   r3  r   r  rw  r{  rd  )r   Z
angle_addrrA   rB   r   get_angle_addrr~    s"   
 Jq[(% E!HO%%077>@ 	@mC);<="IE qS--=>?!!&"<"<*#, 	-b	  ,$U+ eqSb	!!&"<"<0#2 	3mC)9:;q[(% ) "" 	,	P(/LE%%f&A&A<'> ?&& 	P))@GGNP P	P 	% $U+u	,s*   G J(<H%$J%;I  !JJc                 s    \        4       p\        V 4      w  r VP                  VR ,          4       VP                  R ,          Vn        W3# )rt  )r   re  r?   r   )r   r   rA   rB   r   get_display_namer    sC     =Le$LEa! ==+Lr   c                 s   \        4       pR pV '       g&   \        P                  ! RP                  V 4      4      hV ^ ,          \        9   d;   \        V 4      w  r V '       g&   \        P                  ! RP                  V4      4      hV ^ ,          R8w  d   V ^ ,          \        9   d&   \        P                  ! RP                  V 4      4      h\        V 4      w  r0V '       g&   \        P                  ! RP                  V4      4      hVe4   \        V^ ,          \        4      '       d   V.V^ ,          R&   MV.VR&   R pVP                  V4       \        V 4      w  r0Ve   V.VR&   VP                  V4       W3# )Nz!expected name-addr but found '{}'r|  r_  )r   r   rD  r3   rX  rY  rc  r  r   r   r   r~  )r   Z	name_addrra  rA   r  r   get_name_addrr     sU    
IF%%/66u=? 	?Qx; ))3::6BD DQx38{"))3::5AC C'.))3::5AC C%(I.. &xa#Hb	F!%(LEHb	Ur   c                 s   \        4       p \        V 4      w  r \        ;QJ d&    R TP                   4       F  '       g   K   RM	  RM! R TP                   4       4      '       d   RTn        TP                  T4       Y3#   \        P                   dP     \	        T 4      w  r  L  \        P                   d'    \        P                  ! R P                  T 4      4      hi ; ii ; i)zexpected mailbox but found '{}'c              3   V   "   T F  p\        V\        P                  4      x  K!  	  R # 5ir   )r   r   r  r&   r   r   r)   Zget_mailbox.<locals>.<genexpr>3  s'      3 11 a3344 1   ')TFr   )
r   r  r   rD  rw  r3   anyr9   rP   r   )r   r   rA   rB   r   get_mailboxr  $  s     iGA$U+ s 3 % 1 13sss 3 % 1 13 3 3.NN5> "" A	A(/LE5&& 	A))188?A A	AAs   B C&B'';C""C&c                 s   \        4       pV '       dn   V ^ ,          V9  d`   V ^ ,          \        9   d.   VP                  \        V ^ ,          R4      4       V R,          p KU  \	        V 4      w  r0VP                  V4       Ku  W 3# )r    rl  r   )r   rc  r   r3  re  )r   r;  Zinvalid_mailboxrA   rR   r   get_invalid_mailboxr  9  sr     %&O
E!HH,8{"""=q1D$F G"IE%e,LE""5)!!r   c                 s   \        4       pV '       d   V ^ ,          R8w  d    \        V 4      w  r VP                  V4       V '       dm   V ^ ,          R9  d_   VR
,          pRVn        \        V R4      w  r VP                  V4       VP                  P                  \        P                  ! R4      4       V '       g   K  V ^ ,          R8X  g   K  VP                  \        4       V R	,          p K  W3#   \        P                   Edr    RpT ^ ,          \
        9   d   \        T 4      w  r0T '       d   T ^ ,          R9   dD   TP                  T4       TP                  P                  \        P                  ! R4      4        ELA\        T R4      w  r Te   T.TR&   TP                  T4       TP                  P                  \        P                  ! R4      4        ELT ^ ,          R8X  d3   TP                  P                  \        P                  ! R4      4        EL\        T R4      w  r Te   T.TR&   TP                  T4       TP                  P                  \        P                  ! R4      4        EL7i ; i)r    ;Nz,;zempty element in mailbox-listr_  zinvalid mailbox in mailbox-listr6  r   r   r   )r   r  r   r   rD  rX  rY  r   rd  r  r  rP   r?   ry  )r   Zmailbox_listrA   ra  r   rj  r   get_mailbox_listr  K  s    =L
E!HO	8&u-LE&4 U1XT) #2&G!2G.ud;LENN5!  ''(B(B1)3 45U1X_."IEK && 	8FQx;& (aD 0 ''/ ((//0K0K719 : $7ud#CLE)%+Hb	 ''. ((//0J0J91; <qS$$++F,G,G3-5 6  35$?%!'E"I##E*$$++F,F,F5-7 8/	8s&   C1 1BI8AI8=I8AI87I8c                 s   \        4       pV '       g3   VP                  P                  \        P                  ! R 4      4       W3# RpV '       d   V ^ ,          \
        9   d{   \        V 4      w  r V '       gD   VP                  P                  \        P                  ! R4      4       VP                  V4       W3# V ^ ,          R8X  d   VP                  V4       W3# \        V 4      w  r0\        VP                  4      ^ 8X  dY   Ve   VP                  V4       VP                  V4       VP                  P                  \        P                  ! R4      4       W3# Ve   V.VR&   VP                  V4       W3# )zend of header before group-listNzend of header in group-listr  zgroup-list with empty entriesr_  )r   r   r   r   r  rX  rY  r  r   r   r?   rd  )r   Z
group_listra  rA   r  r   get_group_listr    sQ   
 J!!&"<"<-#/ 	0  Fq[(  %%f&@&@-'/ 0f%$$8s?f%$$#E*LE
5"f%% !!&"="=+#- 	.  Hb	er   c                 sV   \        4       p\        V 4      w  r V '       d   V ^ ,          R8w  d&   \        P                  ! RP	                  V 4      4      hVP                  V4       VP                  \        RR4      4       V R,          p V '       d4   V ^ ,          R8X  d&   VP                  \        RR4      4       WR,          3# \        V 4      w  r VP                  V4       V '       g1   VP                  P                  \        P                  ! R4      4       M3V ^ ,          R8w  d&   \        P                  ! RP	                  V 4      4      hVP                  \        RR4      4       V R,          p V '       d1   V ^ ,          \        9   d   \        V 4      w  r VP                  V4       W3# )	r    rx  z8expected ':' at end of group display name but found '{}'zgroup-display-name-terminatorr   r  zgroup-terminatorzend of header in groupz)expected ';' at end of group but found {})r   r  r   rD  r3   r   r3  r  r   r  rX  rY  )r   r   rA   rB   r   	get_groupr    sQ    GE#E*LEE!HO%% '**0&-9 	9	LL	LLs$CDE"IEqS]3(:;<Bi!%(LE	LLV77$& 	'	qS%%7>>uEG 	G	LLs$678"IEq[(U<r   c                 s(   \        4       p \        V 4      w  r TP                  T4       Y3#   \        P                   dP     \	        T 4      w  r  L9  \        P                   d'    \        P                  ! R P                  T 4      4      hi ; ii ; i)zexpected address but found '{}')r   r  r   rD  r  r3   r   )r   r   rA   rB   r   get_addressr    s    " iGA ' NN5> "" A	A&u-LE5&& 	A))188?A A	AAs   - BA;BBc                 s   \        4       pV '       d    \        V 4      w  r VP                  V4       V '       dt   V ^ ,          R8w  df   VR,          ^ ,          pRVn        \        V R4      w  r VP                  V4       VP                  P                  \        P                  ! R4      4       V '       g   K  VP                  \        4       V R,          p K  W3#   \        P                   Ed    R pT ^ ,          \
        9   d   \        T 4      w  r0T '       d   T ^ ,          R8X  dD   TP                  T4       TP                  P                  \        P                  ! R4      4        EL8\        T R4      w  r Te   T.TR&   TP                  \        T.4      4       TP                  P                  \        P                  ! R4      4        ELT ^ ,          R8X  d3   TP                  P                  \        P                  ! R4      4        EL\        T R4      w  r Te   T.TR&   TP                  \        T.4      4       TP                  P                  \        P                  ! R4      4        ELBi ; i)	Nr6  z"address-list entry with no contentr_  zinvalid address in address-listzempty element in address-listr   r   r   )r   r  r   r   rD  rX  rY  r   rd  r  r   r  rP   r?   ry  )r   Zaddress_listrA   ra  r   rj  r   get_address_listr    s    =L
	8&u-LE&4 U1X_ #2&q)G!2G.uc:LENN5!  ''(B(B1)3 45."IEK && 	8FQx;& (aC ''/ ((//0K0K<1> ? $7uc#BLE)%+Hb	 ''(89 ((//0J0J91; <qS$$++F,G,G3-5 6  35#>%!'E"I##GUG$45$$++F,F,F5-7 8/	8s&   C BI5*A"I5=I5A"I54I5c                 s   \        4       pV '       g&   \        P                  ! R P                  V 4      4      hV ^ ,          R8w  d&   \        P                  ! RP                  V 4      4      hVP	                  \        RR4      4       V R,          p \        V 4      w  r VP	                  V4       V '       d   V ^ ,          R8w  d&   \        P                  ! RP                  V 4      4      hVP	                  \        RR4      4       WR,          3# )z'expected no-fold-literal but found '{}'rr  z;expected '[' at the start of no-fold-literal but found '{}'zno-fold-literal-startr   rn  z9expected ']' at the end of no-fold-literal but found '{}'zno-fold-literal-end)r   r   rD  r3   r   r3  rm  )r   Zno_fold_literalrA   rB   r   get_no_fold_literalr    s     $oO%%5<<UCE 	EQx3%%#VE], 	, =.EFG"IEU#LE5!E!HO%%#VE], 	, =.CDE"I%%r   c                 s   \        4       pV '       d1   V ^ ,          \        9   d   \        V 4      w  r VP                  V4       V '       d   V ^ ,          R8w  d&   \        P
                  ! RP                  V 4      4      hVP                  \        RR4      4       V R,          p  \        V 4      w  r TP                  T4       T '       d   T ^ ,          R8w  dm   TP                  P                  \        P                  ! R4      4       T '       d3   T ^ ,          R	8X  d%   TP                  \        R	R
4      4       T R,          p Y3# TP                  \        RR4      4       T R,          p  \        T 4      w  r TP                  T4       T '       d   T ^ ,          R	8X  d   T R,          p M/TP                  P                  \        P                  ! R4      4       TP                  \        R	R
4      4       T '       d1   T ^ ,          \        9   d   \        T 4      w  r TP                  T4       Y3#   \        P
                   d     \        T 4      w  r TP                  P                  \        P                  ! R4      4        EL  \        P
                   d'    \        P
                  ! RP                  T 4      4      hi ; ii ; i  \        P
                   d     \        T 4      w  r  ELs  \        P
                   d     \        T 4      w  r TP                  P                  \        P                  ! R4      4         EL  \        P
                   d'    \        P
                  ! RP                  T 4      4      hi ; ii ; ii ; i)r    r|  zexpected msg-id but found '{}'zmsg-id-startr   zobsolete id-left in msg-idz4expected dot-atom-text or obs-id-left but found '{}'r   zmsg-id with no id-rightr}  z
msg-id-endrv  zobsolete id-right in msg-idzFexpected dot-atom-text, no-fold-literal or obs-id-right but found '{}'zmissing trailing '>' on msg-id)r!  rX  rY  r   r   rD  r3   r3  r]  rg  r   rd  r  r  ru  )r   Zmsg_idrA   rB   r   
get_msg_idr  1  s    WFq[(eE!HO%%,33E:< 	<
MM-^45"IE1(/ MM%E!HOf88%' 	(
 U1X_MM-\:;"IE}
MM-%89:"IE5(/ MM%qSb	f88,. 	/
MM-\23q[(e=a "" 	1	1-e4LENN!!&"="=,#. /&& 	1))""(&-1 1	1	14 "" 5
	5.u5LE5&& 	55)%0%%f&A&A1'3 4 4** 5--&&,fUm5 55	55sT   #H+ (K +J?<J  ;J;;J?NK((M=><L>:N>;M99M==Nc                 s   \        4       p \        V 4      w  r VP                  V4       V '       d?   VP                  P                  \        P
                  ! R P                  V 4      4      4       V#   \        P                   d`   p\        T 4      p\        T4      pTP                  P                  \        P
                  ! RP                  T4      4      4        Rp?T# Rp?ii ; i)zUnexpected {!r}Invalid msg-id: {!r}N)
r$  r  r   r   r   r  r3   rD  rL  r%  )r   Z
message_idrA   exr  r   parse_message_idr  v  s     J2!%(%  %%f&@&@!((/'1 2  "" K '%e,
!!&&'='D'DR'HI	K 	K Ks   A2 2C&AC!!C&c                 s>   \        4       pV '       d   V ^ ,          R8X  dV   VP                  P                  \        P                  ! R4      4       VP                  \        RR4      4       V R,          p Kk   \        V 4      w  r VP                  V4       K  V#   \        P                   do   p\        T 4      pTP                  \        T4      4       TP                  P                  \        P                  ! RP                  T4      4      4        Rp?T# Rp?ii ; i)r    r6  zcomma in msg-id listrc   zinvalid-comma-replacementr   r  N)r&  r   r   r   r  r0  r  rD  rL  r%  r3   )r   Zmessage_id_listrA   r  r  r   parse_message_idsr    s     $oO
8s? ##****+ABD"""3(CDF"IE	%e,LE""5)  && 	$U+E""#3E#:;##****+A+H+H+LMO	s   7B D.A#DDc                 st   \        4       pV '       g2   VP                  P                  \        P                  ! R 4      4       V# V ^ ,          \
        9   dV   \        V 4      w  r VP                  V4       V '       g0   VP                  P                  \        P                  ! R4      4       RpV '       d;   V ^ ,          R8w  d-   V ^ ,          \
        9  d   W0^ ,          ,          pV R,          p KB  VP                  4       '       g[   VP                  P                  \        P                  ! RP                  V4      4      4       VP                  \        VR4      4       M+\        V4      Vn        VP                  \        VR4      4       V '       d1   V ^ ,          \
        9   d   \        V 4      w  r VP                  V4       V '       d   V ^ ,          R8w  dc   VP                  e0   VP                  P                  \        P                  ! R4      4       V '       d   VP                  \        V R4      4       V# VP                  \        RR	4      4       V R,          p V '       d1   V ^ ,          \
        9   d   \        V 4      w  r VP                  V4       V '       g@   VP                  e0   VP                  P                  \        P                  ! R4      4       V# RpV '       d-   V ^ ,          \
        9  d   W0^ ,          ,          pV R,          p K4  VP                  4       '       g[   VP                  P                  \        P                  ! R
P                  V4      4      4       VP                  \        VR4      4       M+\        V4      Vn        VP                  \        VR4      4       V '       d1   V ^ ,          \
        9   d   \        V 4      w  r VP                  V4       V '       dK   VP                  P                  \        P                  ! R4      4       VP                  \        V R4      4       V# )z%Missing MIME version number (eg: 1.0)z0Expected MIME version number but found only CFWSr#   r   r   z1Expected MIME major version number but found {!r}r8  digitsz0Incomplete MIME version; found only major numberzversion-separatorz1Expected MIME minor version number but found {!r}z'Excess non-CFWS text after MIME version)r   r   r   r   HeaderMissingRequiredValuerX  rY  isdigitr  r3   r3  intr   r   )r   Zmime_versionrA   r  r  r   parse_mime_versionr    s6    =L##F$E$E3%5 	6Qx;E"  ''(I(IB)D EF
E!HOa(C(b	>>##F$>$>?FFvN%P 	QM&':; [M&(;<q[(E"E!HO)  ''(B(BB)D EeW =>c+>?@"IEq[(E")  ''(B(BB)D EF
E!HK/(b	>>##F$>$>?FFvN%P 	QM&':; [M&(;<q[(E"##F$>$>5%7 	8M%9:r   c                 s   \        4       pV '       dn   V ^ ,          R8w  d`   V ^ ,          \        9   d.   VP                  \        V ^ ,          R4      4       V R,          p KU  \	        V 4      w  r VP                  V4       Ku  W3# )r    r  rl  r   )r   rc  r   r3  re  )r   Zinvalid_parameterrA   rB   r   get_invalid_parameterr    sr     )*
E!HO8{"$$]583F&H I"IE%e,LE$$U+##r   c                 rQ  )zexpected ttext but found '{}'Nttext)_non_token_end_matcherr   rD  r3   r   r   r3  r9  )r   rT  r  rB   r   	get_ttextr  	  si     	u%A%%+2259; 	;GGIE#e*+E%)EE<r   c                    \        4       pV '       d1   V ^ ,          \        9   d   \        V 4      w  r VP                  V4       V '       d8   V ^ ,          \        9   d&   \
        P                  ! RP                  V 4      4      h\        V 4      w  r VP                  V4       V '       d1   V ^ ,          \        9   d   \        V 4      w  r VP                  V4       W3# r    zexpected token but found '{}')	ry   rX  rY  r   
TOKEN_ENDSr   rD  r3   r  )r   ZmtokenrA   rB   r   	get_tokenr  	  s     WFq[(eqZ'%%+2259; 	;U#LE
MM%q[(e=r   c                 rQ  )z expected attrtext but found {!r}Nr   )_non_attribute_end_matcherr   rD  r3   r   r   r3  r9  r   rT  r   rB   r   get_attrtextr  ,	  si     	#5)A%%.55e<> 	>wwyH#h-.!EXz2HH?r   c                 r  r  )	r   rX  rY  r   ATTRIBUTE_ENDSr   rD  r3   r  r   r   rA   rB   r   get_attributer  ?	  s     Iq[(q^+%%+2259; 	;&LEUq[(r   c                 rQ  )z)expected extended attrtext but found {!r}Nextended-attrtext)#_non_extended_attribute_end_matcherr   rD  r3   r   r   r3  r9  r  rB   r   get_extended_attrtextr  V	  sl     	,E2A%%7>>uEG 	GwwyH#h-.!EX':;HH?r   c                 r  r  )	r   rX  rY  r   EXTENDED_ATTRIBUTE_ENDSr   rD  r3   r  r  rB   r   get_extended_attributer  h	  s     Iq[(q44%%+2259; 	;(/LEUq[(r   c                 s   \        4       pV '       d   V ^ ,          R8w  d&   \        P                  ! RP                  V 4      4      hVP	                  \        RR4      4       V R,          p V '       d   V ^ ,          P                  4       '       g&   \        P                  ! RP                  V 4      4      hRpV '       d8   V ^ ,          P                  4       '       d   W ^ ,          ,          pV R,          p K?  V^ ,          R8X  d7   VR8w  d0   VP                  P	                  \        P                  ! R4      4       \        V4      Vn
        VP	                  \        VR	4      4       W3# )
r    *zExpected section but found {}zsection-markerr   z$Expected section number but found {}r#   Z0z'section number has an invalid leading 0r  )r  r   rD  r3   r   r3  r  r   r  r  r   )r   r  r  rB   r   get_sectionr  ~	  s    iGE!HO%%&E&L&L(-'/ 0 	0NN=&678"IEa((**%% '117@ 	@F
E!H$$&&(b	ayCFcMv999 ; 	<[GNNN=23>r   c                 s|   \        4       pV '       g   \        P                  ! R 4      hRpV ^ ,          \        9   d   \	        V 4      w  r V '       g&   \        P                  ! RP                  V4      4      hV ^ ,          R8X  d   \        V 4      w  r0M\        V 4      w  r0Ve   V.VR&   VP                  V4       W3# )z&Expected value but found end of stringNz Expected value but found only {}r   r_  )	r  r   rD  rX  rY  r3   rZ  r  r   )r   vra  rA   r  r   	get_valuer  	  s     	A%%&NOOFQx; %% '006v@ 	@Qx3(/u-e4Hb	HHUO8Or   c                 s   \        4       p\        V 4      w  r VP                  V4       V '       d   V ^ ,          R8X  dB   VP                  P                  \        P
                  ! RP                  V4      4      4       W3# V ^ ,          R8X  d~    \        V 4      w  r RVn        VP                  V4       V '       g   \        P                  ! R4      hV ^ ,          R8X  d,   VP                  \        RR4      4       V R,          p RVn        V ^ ,          R8w  d   \        P                  ! R	4      hVP                  \        RR
4      4       V R,          p V '       d1   V ^ ,          \        9   d   \        V 4      w  r VP                  V4       RpTpVP                  '       Ed;   V '       Ed2   V ^ ,          R8X  Ed#   \        V 4      w  rSVP                  pRpVP                   ^ 8X  d@   V'       d   V^ ,          R8X  d   RpM>\#        V4      w  r(V'       d   V^ ,          R8X  d   RpM \%        V4      w  r(V'       g   RpV'       dg   VP                  P                  \        P
                  ! R4      4       VP                  V4       V F  p	V	P&                  R8X  g   K  . V	R&   T	p M	  Tp M1RpVP                  P                  \        P
                  ! R4      4       V '       d   V ^ ,          R8X  d   RpM\)        V 4      w  r VP                  '       d   VP                   ^ 8  d`   V '       d   V ^ ,          R8w  d   VP                  V4       Ve   Tp W3# VP                  P                  \        P
                  ! R4      4       V '       gJ   VP                  P                  \        P
                  ! R4      4       VP                  V4       Vf   W3# EMLVeN   V F  p	V	P&                  R8X  g   K   M	  X	P&                  R8H   VP                  V	4       V	P*                  Vn        V ^ ,          R8w  d&   \        P                  ! RP                  V 4      4      hVP                  \        RR4      4       V R,          p V '       dy   V ^ ,          R8w  dk   \#        V 4      w  r VP                  V4       VP*                  Vn        V '       d   V ^ ,          R8w  d&   \        P                  ! RP                  V 4      4      hVP                  \        RR4      4       V R,          p Vez   \1        4       p
V '       de   V ^ ,          \2        9   d   \5        V 4      w  r M1V ^ ,          R8X  d   \        RR4      pV R,          p M\7        V 4      w  r V
P                  V4       Kl  T
pM\)        V 4      w  r VP                  V4       Ve   Tp W3#   \        P                   d     EL)i ; i    EL; i)r    r  z)Parameter contains name ({}) but no valuer  TzIncomplete parameterzextended-parameter-markerr   Z=zParameter not followed by '='parameter-separatorNr   FZ'z5Quoted string value for extended parameter is invalidr   rt  zZParameter marked as extended but appears to have a quoted string value that is non-encodedzcApparent initial-extended-value but attribute was not marked as extended or was not initial sectionz(Missing required charset/lang delimitersr  r   z=Expected RFC2231 char/lang encoding delimiter, but found {!r}zRFC2231-delimiterz;Expected RFC2231 char/lang encoding delimiter, but found {}ZDQUOTE)r   r  r   r   r   r  r3   r  r   rD  r3  r   rX  rY  rZ  r   r   r  r  rP   r  r   r}   r~   r  r1  rA  rP  )r   r  rA   r<  ZappendtoZqstringZinner_valueZ
semi_validrF  Ztr  s   &          r   get_parameterr  	  s    KE 'LE	LLE!HOV77 9%%+VE]4 	5|Qx3	&u-LE"EOLL ))*@AA8s?LLs,GHI"IE!ENQx3%%&EFF	LLs$9:;"IEq[(UIH~~~%%E!HO /u5,,
1${1~4!
*;7DGsN!%J&3K@ !%JMM  !;!;G"I JLL!<<#77AaD H	 
  EIMM  !;!;:"; < qS '>>>U11A5aCOOE"$!<V77DE 	F V7768 	9<  <<#66  LLJ&OOAGGEM8s?)) +FFLfUmU Uc+>?@b	U1X_'.LEOOE"EJE!HO-- /<<BF5MK Kc+>?@b	GQx3&u~uqS%c84b	+E2HHUO 'OOE<i && 		Ds   %W &W! WW!W&c                 s    \        4       pV '       d    \        V 4      w  r VP                  V4       V '       d{   V ^ ,          R8w  dm   VR	,          pRVn        \        V 4      w  r VP                  V4       VP                  P                  \        P                  ! RP                  V4      4      4       V '       g   K  VP                  \        RR4      4       V R,          p K  V#   \        P                   Ed    R pT ^ ,          \
        9   d   \        T 4      w  r0T '       g   TP                  T4       Tu # T ^ ,          R8X  dH   Te   TP                  T4       TP                  P                  \        P                  ! R4      4        EL]\        T 4      w  r T'       d   T.TR&   TP                  T4       TP                  P                  \        P                  ! RP                  T4      4      4        ELi ; i)
Nr  zparameter entry with no contentr_  zinvalid parameter {!r}r   z)parameter with invalid trailing text {!r}r  r   r   )r  r  r   r   rD  rX  rY  r   r  r  r3   rP   r?   r3  )r   Zmime_parametersrA   ra  r  rj  r   parse_mime_parametersr  ?
  s    %&O
	=(/LE""5)( U1X_ $B'E2E07LELL##**6+E+E;BB5I,K L5""=6K#LM"IEA && 	=FQx;& (&&v.&&Qx3%#**62''..v/I/I507 8  5U;!'E"I&&u-''..v/I/I,33E:0< =#	=s%   C& &>G=%G=:AG=A*G=<G=c                 s|   V'       dn   V^ ,          R8w  d`   V^ ,          \         9   d.   V P                  \        V^ ,          R4      4       VR,          pKU  \        V4      w  r!V P                  V4       Ku  V'       g   R# V P                  \        RR4      4       V P                  \	        VR,          4      4       R# )r    r  rl  r   Nr  )rc  r   r3  re  r  )Z	tokenlistr   rA   s   && r   _find_mime_parametersr  s
  s     E!HO8{"]585HIJ"IE%e,LEU#]3(=>?*5956r   c                 s   \        4       pV '       g2   VP                  P                  \        P                  ! R 4      4       V#  \        V 4      w  r TP                  T4       T '       d   T ^ ,          R8w  dE   TP                  P                  \        P                  ! R4      4       T '       d   \        Y4       T# TP                  P                  4       P                  4       Tn        TP                  \        RR4      4       T R,          p  \        T 4      w  r TP                  T4       TP                  P                  4       P                  4       Tn        T '       g   T# T ^ ,          R8w  dP   TP                  P                  \        P                  ! RP                  T 4      4      4       T=T=\        Y4       T# TP                  \        RR	4      4       TP                  \!        T R,          4      4       T#   \        P                   dO    TP                  P                  \        P                  ! RP                  T 4      4      4       \        Y4       Tu # i ; i  \        P                   dO    TP                  P                  \        P                  ! RP                  T 4      4      4       \        Y4       Tu # i ; i)
z"Missing content type specificationz(Expected content maintype but found {!r}r+  zInvalid content typezcontent-type-separatorr   z'Expected content subtype but found {!r}r  z<Only parameters are valid after content type, but found {!r}r  )r  r   r   r   r  r  rD  r  r3   r  r   r
  lowerr  r3  r  r  )r   ZctyperA   rB   r   parse_content_type_headerr  
  s8    MEV>>02 	3 ' 
LL E!HOV77"$ 	%!%/[[&&(..0EN	LLs$<=>"IE ' 
LLKK%%'--/EMQx3V77( 	) NEMe+	LLs$9:;	LL&uRy12LQ "" V776==eDF 	Ge+	& "" V775<<UCE 	Fe+	s&   G? I% ?A I"!I"%A KKc                 s.   \        4       pV '       g2   VP                  P                  \        P                  ! R 4      4       V#  \        V 4      w  r TP                  T4       TP                  P                  4       P                  4       Tn        T '       g   T# T ^ ,          R8w  dL   TP                  P                  \        P                  ! RP                  T 4      4      4       \        Y4       T# TP                  \        RR4      4       TP                  \        T R,          4      4       T#   \        P                   dO    TP                  P                  \        P                  ! RP                  T 4      4      4       \        Y4       Tu # i ; i)zMissing content dispositionz+Expected content disposition but found {!r}r  zCOnly parameters are valid after content disposition, but found {!r}r  r   )r  r   r   r   r  r  rD  r  r3   r  r   r
  r  r  r3  r  )r   Zdisp_headerrA   rB   r    parse_content_disposition_headerr  
  sU    %&K""6#D#D)$+ 	, ' u&+kk&7&7&9&?&?&AK#Qx3""6#=#=$( 	) 	k1}S*?@A,U2Y78# "" ""6#=#=9@@G$I 	Jk1	s   D1 1A FFc                 s   \        4       pV '       g2   VP                  P                  \        P                  ! R 4      4       V#  \        V 4      w  r VP                  V4       VP                  P                  4       P                  4       Vn	        V '       g   V# V '       d   VP                  P                  \        P                  ! R4      4       V ^ ,          \        9   d.   VP                  \        V ^ ,          R4      4       V R,          p Kv  \        V 4      w  r VP                  V4       K  V#   \        P                   dB    TP                  P                  \        P                  ! RP                  T 4      4      4        Li ; i)z!Missing content transfer encodingz1Expected content transfer encoding but found {!r}z*Extra text after content transfer encodingrl  r   )r  r   r   r   r  r  r   r
  r  r|   rD  r  r3   rc  r3  re  )r   Z
cte_headerrA   rB   r   &parse_content_transfer_encoding_headerr  
  s@   
 )*J!!&"C"C/#1 	25 '
 	% **,224

!!&"<"<8#: 	;8{"mE!H6IJK"IE%e,LEe$# "" P!!&"<"<?FFuM#O 	PPs   D2 2AFFc                 s    R pV '       dg   V R,          '       dX   V R,          R,          \         9   d?   V R,          R,          pV R,          RR V R&   V R,          '       g   V P                  4        V# )r#   Nr   )r1  r   )linesZwspr   r   _steal_trailing_WSP_if_existsr    sX    
CruRy}3Bim"IcrNb	RyyIIKJr   c          	      s:   VP                   ;'       g    \        P                  pVP                  '       d   R MRpR.pRpRpRp^ pRp	\	        RR4      p
\        V 4      pV'       Ed   VP                  ^ 4      pWJ d   V^,          pK*  \        V4      pV	'       gG   VP                  R9   d   \        P                  V4      '       * p	M\        P                  V4      '       * p	 VP                  V4       TpVP                  R
8X  d   \!        WW#4       K  V	'       EdH   V'       Eg?   VP"                  '       g   Rp	RpVP$                  '       d   VP'                  VR7      R\)        VP*                  4      )  pVP*                  V9  d\   \)        V4      V\)        VR,          4      ,
          8  d   \-        V4      pVP/                  V4       VR;;,          V,          uu&   EK  \1        VR4      '       g   \        V4      V,           pRp	EK  VP"                  '       dC   Ve   W8w  d   VR	8X  g   VR 8X  d
   VR8w  d   Rp\3        WW&VP4                  W4      pRpTpRp	EK  RpRp	\)        V4      V\)        VR,          4      ,
          8:  d   VR;;,          V,          uu&   EKE  RpVP$                  '       d   \)        V4      ^,           V8:  d   \-        V4      pV'       g   VP7                  4       '       d_   VP/                  VV,           4       . pVR,           F!  pV\8        9  d    MVP/                  V4       K#  	  RP;                  V4      pRpEK  \1        VR4      '       Eg   \        V4      pVP                  R8X  dJ   \=        RR4      .V Uu. uF  p\=        \?        V4      R4      NK  	  up,           \=        RR4      .,           pVP                  R8X  d]   \=        RR4      .V Uu. uF+  pVP                  R8X  d   \=        \A        V4      R4      MTNK-  	  up,           \=        RR4      .,           pVP"                  '       g   V^,          pVP/                  V
4       VV,           pEK  VP"                  '       d    V'       g   VPC                  ^ V4       Rp	EKE  \-        V4      pV'       g   VP7                  4       '       d   VP/                  VV,           4       EK  VR;;,          V,          uu&   EK  VP*                  P;                  V4      VP*                  ,           #   \         dZ    \        ;QJ d&    R TP                   4       F  '       g   K   RM	  RM! R TP                   4       4      '       d   R	pMR pRp	 ELi ; iu upi u upi )utf-8r   r#   NFwrap_as_ew_blockedr   c              3   r  r   )r   r   r  r&   r   r   r)   Z%_refold_parse_tree.<locals>.<genexpr>5  s'      .,q a!>!>??,r  Tunknown-8bitr  rC   rh  r   r   rg   r   r   )r   rG  r   )"Zmax_line_lengthsysZmaxsizeZutf8r)  r,  r   r   rP   
SPECIALSNLZ
isdisjointNLSETrh  r  r  r9   _fold_mime_parametersr=   rW   rG   r   r#  r  r   rQ   _fold_as_ewrX   r<   r1  r-   r3  r   r   Zinsert)Z
parse_treerD   maxlenr	  r  leading_whitespacelast_ewZlast_charsetr  Zwant_encodingZend_ew_not_allowedr  r>   tstrr}   Zencoded_partZnewlineZwhitespace_accumulatorZcharZnewpartsZps   &$                   r   rE   rE     s   
 ##22s{{F +++w:HDE GLM!"&:;E
%yy|%!#4y"44$.$9$9$$? ? %*$4$4T$: :	!KK!G ??//!$v@=!3!3%%% %'''#'99F9#;<Qc&..>Q=Q#RL~~\9|,vE"I/FF&CE&JG!LL1b	\1	 
 4**T
U* %### '+!^3!W,J1F"G%d6&*&=&=w\ &("& %  % t9U2Y//"II
     D	A'3E:G$--//
 Wt^,)+&!"IID3*11$7 & &(WW-C%D"tX&&DzH"66
 #301&(& ##4Q#7A&(( #3012 
 )+"301 '(& / ##9!#<gF567&(( #301	2  %%%"a'" 23u$E&8 LLD! M/6d))++LL4( "II>>u%66} " 	!s . ,,.sss . ,,. . .( " M	!B((s0   #T, V/1V,VV $VVVc                 sh   Ve>   V'       d6   \        \        VR,          VR  V ,           4      4      p VR,          R V VR&   MjV ^ ,          \        9   dY   V ^ ,          pV R,          p \        VR,          4      V8X  d   VP	                  \        V4      4       VR;;,          V,          uu&   RpV R,          \        9   d   V R,          pV R R p Vf   \        VR,          4      MTp	VR8X  d   RMTp
\        V
4      ^,           pV^,           V8  d   \        P                  ! R4      hV '       Edd   V\        VR,          4      ,
          pW,
          \        V4      ,
          pV^ 8:  d   VP	                  R4       KT  \        V4      ^8  dN   \        VR,          4      ^8X  d7   V'       d/   \        P                  ! WjR7      pVR;;,          V,          uu&   RpV R V p\        P                  ! WR7      p\        V4      V,
          pV^ 8  d1   VR R p\        P                  ! WR7      p\        V4      V,
          pK7  VR;;,          V,          uu&   V \        V4      R  p RpV '       g   EKF  VP	                  R4       \        VR,          4      p	EKl  VR;;,          V,          uu&   V'       d   V	# R # )	Nr   r#   r   r  z3max_line_length is too small to fit an encoded wordrc   )r}   r   )
r   rL  r1  r   r   r  r   rD  rE  rh  )Z	to_encoder  r  r  rX   r}   r  Zleading_wspZtrailing_wspZnew_last_ewZ	encode_as
chrome_lenZremaining_spaceZ
text_spaceZencoded_wordZto_encode_wordZexcesss   &&&&&&&          r   r  r    sK    1U2Ywx09<=?	"Ihw'b		1	  lbM	b	Nf$LL6u=>b	[ 	L} }crN	$+O#eBi.K"j0gI Y!#JQ6!%%AC 	C ) 3uRy>1$1C8J4KK
?LL u:>c%)n16H::&8LL"I%I!#";J/zz.D\"_4qj ,CR0N::nHL&8Fb	\!	c.123	9LLeBi.K	"II,;6$6r   c           	      s   V P                    EF6  w  rEVR,          P                  4       P                  R4      '       g   VR;;,          R,          uu&   TpRp VP                  V4       RpV'       d6   \        P                  P                  VRVR	7      p	R
P                  WFV	4      p
MRP                  V\        V4      4      p
\        VR,          4      \        V
4      ,           ^,           V8  d   VR,          R,           V
,           VR&   EK  \        V
4      ^,           V8:  d   VP                  RV
,           4       EK4  ^ pVR,           pV'       g   EKJ  \        V4      \        \        V4      4      ,           ^,           \        V4      ,           pW-^,           8:  d   ^NpW-,
          ^,
          ;r VRV p\        P                  P                  VRVR	7      p	\        V	4      V8:  d   MV^,          pKD  VP                  RP                  WKW4      4       RpV^,          pW^R pV'       g   K  VR;;,          R,          uu&   K  	  R#   \         d,    Rp\
        P                  ! T4      '       d   RpRp ELRp ELi ; i)r   r  ZstrictFTr  r  r  r#   )Zsafer   z
{}*={}''{}r  rc   z''Nz {}*{}*={}{}r   )r  r   r  rh  r  r   r  r  r  r   r3   r   r   r   r   )r>   r  r  r	  r  r   r}   Zerror_handlerZencoding_requiredZencoded_valuer  r  Zextra_chromer  Z
splitpointZmaxcharsZpartials   &&&&             r   r  r     s.    {{ Ry!**3//"II 		"LL" % "LL..B} / 6M&&tmDD>>$U(;<DuRy>CI%)F2b	C$.E"IY]f$LLt$ ~eTSW%66:S=NNJa'
 $*$7!$;;J, & 2 2"] !3 !<}%1a
LL..|< =LqLG+&Eub	S 	u # " 	" $$$U++( 1!	"s   I

(J 3J :J ?J )rG  )Zrer  r  Zstringr   Zoperatorr   Zemailr   rE  r   r   r   r1  rX  r`  r[  r   rc  Z	TSPECIALSr  Z	ASPECIALSr  r  r  r  r   r   r   ZcompileZVERBOSEZ	MULTILINErJ  r,  r   r`   rm   rp   rs   ru   rw   ry   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r   r!  r$  r%  r&  r(  r   r)  r0  r3  r4  rD  r5  r   ry  r=   rW   rz  r3   r-   r   r:  r=  ZmatchrS  Zfindallr7  r  r  r  r9  r?  rA  rH  rL  rO  rP  rU  rV  rW  rY  rZ  r\  r]  r^  rb  re  rk  rg  rm  rq  rs  ru  rw  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rE   r  r  rd   r   r   <module>r     s1  L 
 
    '   
%jCHn sN	CH$U#E
"c#h.	_
E
"	S(3s83 	t
@
1 **  ZZ",, @, @,FD) D I  Y 9 " 9 I 
) #9 #6	-| 	-! 4C) C&%i %2?) ?%	 %"$I $*"y "6	 DDy D!i !6;Y ;.Y .i ) 
I 
y B9 -!& -!`!	 !HI  ) 	 8%y %
#	 #i I S.Y S.ly * 1 i ) 
*I * &y &;I ;Y (+s (+V' 'H - <f-- < Cc#34#  % $S*BC . 

:,,RWWS\:;AA

9#3#3IIbggi !$# $$)E 

#56>> I$4$4IIbggj!"%$ %%*U ZZ	(8(8IIbggn%&)( )). &(jj1A1AIIbgg-./21 '227% $;J@
/bAF" ))V2 $6 &2 D$L%N2!h(%!N$L ) V,\"H*"$6r#J<:4n&,BJ(DBH$$&.&.$,<,KZ2h7 6p<^`7DJ7XI!r   