Ë
    ì—0j�E  ã                   ó¦   — d Z g d¢ZddlZddlZdZdZdZg d¢Zg d¢Zddddd	d
dd	dddddddœZ	d„ Z
d„ Zd„ Zd„ Zd„ Z G d„ d«      Z G d„ de«      Zy)zcEmail address parsing code.

Lifted directly from rfc822.py.  This should eventually be rewritten.
)Ú	mktime_tzÚ	parsedateÚparsedate_tzÚquoteé    NÚ Ú z, )ÚjanÚfebÚmarÚaprÚmayÚjunÚjulÚaugÚsepÚoctÚnovÚdecÚjanuaryÚfebruaryÚmarchÚaprilr   ÚjuneÚjulyÚaugustÚ	septemberÚoctoberÚnovemberÚdecember)ÚmonÚtueÚwedÚthuÚfriÚsatÚsunipþÿÿiÔþÿÿiþÿÿi¨ýÿÿiDýÿÿiàüÿÿ)ÚUTÚUTCÚGMTÚZÚASTÚADTÚESTÚEDTÚCSTÚCDTÚMSTÚMDTÚPSTÚPDTc                 óH   — t        | «      }|sy|d   €d|d<   t        |«      S )zQConvert a date string to a time tuple.

    Accounts for military timezones.
    Né	   r   )Ú_parsedate_tzÚtuple)ÚdataÚress     ú-/usr/local/lib/python3.12/email/_parseaddr.pyr   r   -   s0   € ô
 ˜Ó
€CÙØØ
ˆ1�v€~ØˆˆA‰Ü�‹:Ðó    c           
      ó˜  — | sy| j                  «       } | sy| d   j                  d«      s| d   j                  «       t        v r| d= n'| d   j	                  d«      }|dk\  r| d   |dz   d | d<   t        | «      dk(  r*| d   j                  d«      }t        |«      dk(  r|| dd z   } t        | «      dk(  rP| d   }|j                  d«      }|d	k(  r|j                  d«      }|dkD  r|d| ||d g| dd n| j                  d
«       t        | «      dk  ry| dd } | \  }}}}}|r|r|sy|j                  «       }|t        vr||j                  «       }}|t        vryt        j                  |«      dz   }|dkD  r|dz  }|d	   dk(  r|dd	 }|j                  d«      }|dkD  r||}}|d	   dk(  r|dd	 }|sy|d   j                  «       s||}}|d	   dk(  r|dd	 }|j                  d«      }t        |«      dk(  r|\  }	}
d}nkt        |«      dk(  r|\  }	}
}nVt        |«      dk(  rGd|d   v r@|d   j                  d«      }t        |«      dk(  r|\  }	}
d}nt        |«      dk(  r|\  }	}
}nyy	 t        |«      }t        |«      }t        |	«      }	t        |
«      }
t        |«      }|dk  r|dkD  r|dz  }n|dz  }d}|j                  «       }|t        v r
t        |   }n$	 t        |«      }|dk(  r|j                  d«      rd}|r!|dk  rd	}| }nd}||dz  dz  |dz  dz  z   z  }||||	|
|ddd	|g
S # t        $ r Y yw xY w# t        $ r Y Œaw xY w)a†  Convert date to extended time tuple.

    The last (additional) element is the time zone offset in seconds, except if
    the timezone was specified as -0000.  In that case the last element is
    None.  This indicates a UTC timestamp that explicitly declaims knowledge of
    the source timezone, as opposed to a +0000 timestamp that indicates the
    source timezone really was UTC.

    Nr   Ú,é   é   Ú-é   Ú+éÿÿÿÿr   é   é   Ú:é   Ú0Ú.éd   éD   il  iÐ  i  é<   )ÚsplitÚendswithÚlowerÚ	_daynamesÚrfindÚlenÚfindÚappendÚ_monthnamesÚindexÚisdigitÚintÚ
ValueErrorÚupperÚ
_timezonesÚ
startswith)r9   ÚiÚstuffÚsÚddÚmmÚyyÚtmÚtzÚthhÚtmmÚtssÚtzoffsetÚtzsigns                 r;   r7   r7   9   sÆ  € ñ ØØ�:‰:‹<€DÙØð ˆA�w×Ñ˜Ô  Q¡§¡£´9Ñ <à�‰Gà�‰G�M‰M˜#ÓˆØ�Š6Ø˜1‘g˜a ™c˜d�mˆD�‰GÜ
ˆ4ƒy�A‚~Ø�Q‘—‘˜cÓ"ˆÜˆu‹:˜Š?Ø˜4  ˜8Ñ#ˆDÜ
ˆ4ƒy�A‚~Ø�‰GˆØ�F‰F�3‹KˆØ�Š7Ø—‘�s“ˆAØˆqŠ5Ø˜"˜1˜˜q  ˜u�~ˆD��‰Hà�K‰K˜ŒOÜ
ˆ4ƒy�1‚}ØØ��ˆ8€DØÑ€RˆˆR��RÙ‘2™"ØØ	�‰‹€BØ	”ÑØ�R—X‘X“ZˆBˆØ”[Ñ ØÜ	×	Ñ	˜2Ó	 Ñ	"€BØ	ˆB‚wØ
ˆb‰ˆØ	ˆ"�v�‚}Ø��ˆWˆØ
�‰�‹€AØˆ1‚uØ�RˆBˆØ	ˆ"�v�‚}Ø��ˆWˆÙØØˆa‰5�=‰=Œ?Ø�RˆBˆØ	ˆ"�v�‚}Ø��ˆWˆØ	�‰�#‹€BÜ
ˆ2ƒw�!‚|Ø‰
ˆˆcØ‰Ü	ˆR‹�AŠØ‰ˆˆc‘3Ü	ˆR‹�AŠ˜#  A¡™,à�‰U�[‰[˜ÓˆÜˆr‹7�aŠ<Ø‰JˆS�#Ø‰CÜ�‹W˜Š\Ø ‰OˆS�#‘sààðÜ�‹WˆÜ�‹WˆÜ�#‹hˆÜ�#‹hˆÜ�#‹hˆð 
ˆC‚xà�Š7Ø�$‰J‰Bð �$‰JˆBØ€HØ	�‰‹€BØ	ŒZÑÜ˜b‘>‰ð	Ü˜2“wˆHð �QŠ;˜2Ÿ=™=¨Ô-ØˆHáØ�aŠ<ØˆFØ �y‰HàˆFØ˜x¨™}¨dÑ2°hÀ±nÀbÑ5HÑHÑIˆà��B˜˜S # q¨!¨R°Ð:Ð:øôE ò Ùðûô* ò 	Ùð	ús$   É+7L. ËL= Ì.	L:Ì9L:Ì=	M	ÍM	c                 óF   — t        | «      }t        |t        «      r|dd S |S )z&Convert a time string to a time tuple.Nr6   )r   Ú
isinstancer8   ©r9   Úts     r;   r   r   ¶   s&   € ä�TÓ€AÜ�!”UÔØ��!ˆuˆàˆr<   c                 ó|   — | d   €t        j                  | dd dz   «      S t        j                  | «      }|| d   z
  S )zETurn a 10-tuple as returned by parsedate_tz() into a POSIX timestamp.r6   Né   )rD   )ÚtimeÚmktimeÚcalendarÚtimegmrm   s     r;   r   r   ¿   sA   € àˆA�w€ä�{‰{˜4  ˜8 eÑ+Ó,Ð,ä�O‰O˜DÓ!ˆØ�4˜‘7‰{Ðr<   c                 óF   — | j                  dd«      j                  dd«      S )zøPrepare string to be used in a quoted string.

    Turns backslash and double quote characters into quoted pairs.  These
    are the only characters that need to be quoted inside a quoted string.
    Does not add the surrounding double quotes.
    Ú\z\\Ú"z\")Úreplace)Ústrs    r;   r   r   É   s"   € ð �;‰;�t˜VÓ$×,Ñ,¨S°%Ó8Ð8r<   c                   ób   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
dd	„Zd
„ Zd„ Zd„ Zdd„Zd„ Zy)ÚAddrlistClassa  Address parser class by Ben Escoto.

    To understand what this class does, it helps to have a copy of RFC 2822 in
    front of you.

    Note: this class interface is deprecated and may be removed in the future.
    Use email.utils.AddressList instead.
    c                 ó,  — d| _         d| _        d| _        d| _        | j                  | j                  z   | _        | j                   | j                  z   | j                  z   | _        | j
                  j                  dd«      | _        || _        g | _	        y)zƒInitialize a new instance.

        `field' is an unparsed address header field, containing
        one or more addresses.
        z()<>@,:;."[]r   z 	z
rJ   r   N)
ÚspecialsÚposÚLWSÚCRÚFWSÚatomendsrx   Ú
phraseendsÚfieldÚcommentlist©Úselfr„   s     r;   Ú__init__zAddrlistClass.__init__Ý   sz   € ð (ˆŒØˆŒØˆŒØˆŒØ—8‘8˜dŸg™gÑ%ˆŒØŸ™¨¯©Ñ0°4·7±7Ñ:ˆŒð Ÿ-™-×/Ñ/°°RÓ8ˆŒØˆŒ
ØˆÕr<   c                 óJ  — g }| j                   t        | j                  «      k  rë| j                  | j                      | j                  dz   v rY| j                  | j                      dvr(|j	                  | j                  | j                      «       | xj                   dz  c_         nG| j                  | j                      dk(  r*| j
                  j	                  | j                  «       «       nn#| j                   t        | j                  «      k  rŒët        j                  |«      S )z&Skip white space and extract comments.z
r?   Ú()	r~   rS   r„   r   rU   r…   Ú
getcommentÚEMPTYSTRINGÚjoin)r‡   Úwslists     r;   ÚgotonextzAddrlistClass.gotonextð   sÐ   € àˆØ�h‰hœ˜TŸZ™Z›Ò(Ø�z‰z˜$Ÿ(™(Ñ# t§x¡x°&Ñ'8Ñ8Ø—:‘:˜dŸh™hÑ'¨vÑ5Ø—M‘M $§*¡*¨T¯X©XÑ"6Ô7Ø—’˜A‘–Ø—‘˜DŸH™HÑ%¨Ò,Ø× Ñ ×'Ñ'¨¯©Ó(9Õ:àð �h‰hœ˜TŸZ™Z›Ó(ô ×Ñ Ó'Ð'r<   c                 óæ   — g }| j                   t        | j                  «      k  rL| j                  «       }|r||z  }n|j	                  d«       | j                   t        | j                  «      k  rŒL|S )zVParse all addresses.

        Returns a list containing all of the addresses.
        )r   r   )r~   rS   r„   Ú
getaddressrU   )r‡   ÚresultÚads      r;   ÚgetaddrlistzAddrlistClass.getaddrlistþ   s^   € ð
 ˆØ�h‰hœ˜TŸZ™Z›Ò(Ø—‘Ó"ˆBÙØ˜"‘‘à—‘˜hÔ'ð �h‰hœ˜TŸZ™Z›Ó(ð ˆr<   c                 ó„  — g | _         | j                  «        | j                  }| j                   }| j                  «       }| j                  «        g }| j                  t	        | j
                  «      k\  r*|�rft        j                  | j                   «      |d   fg}�n?| j
                  | j                     dv rB|| _        || _         | j                  «       }t        j                  | j                   «      |fg}�nâ| j
                  | j                     dk(  rØg }t	        | j
                  «      }| xj                  dz  c_        | j                  t	        | j
                  «      k  �rw| j                  «        | j                  |k  r3| j
                  | j                     dk(  r| xj                  dz  c_        �n%|| j                  «       z   }| j                  t	        | j
                  «      k  rŒˆnî| j
                  | j                     dk(  rp| j                  «       }| j                   r;t        j                  |«      dz   dj                  | j                   «      z   d	z   |fg}n{t        j                  |«      |fg}nb|r&t        j                  | j                   «      |d   fg}n:| j
                  | j                     | j                  v r| xj                  dz  c_        | j                  «        | j                  t	        | j
                  «      k  r1| j
                  | j                     d
k(  r| xj                  dz  c_        |S )zParse the next address.r   z.@rG   r?   Ú;Ú<z (r   Ú)r>   )r…   r�   r~   ÚgetphraselistrS   r„   ÚSPACEr�   Úgetaddrspecr‘   Úgetrouteaddrr}   )r‡   ÚoldposÚoldclÚplistÚ
returnlistÚaddrspecÚfieldlenÚ	routeaddrs           r;   r‘   zAddrlistClass.getaddress  s‰  € àˆÔØ�‰Œà—‘ˆØ× Ñ ˆØ×"Ñ"Ó$ˆà�‰ŒØˆ
à�8‰8”s˜4Ÿ:™:“Ò&âÜ$Ÿz™z¨$×*:Ñ*:Ó;¸UÀ1¹XÐFÐG’
à�Z‰Z˜Ÿ™Ñ! TÑ)ð ˆDŒHØ$ˆDÔØ×'Ñ'Ó)ˆHÜ Ÿ:™: d×&6Ñ&6Ó7¸ÐBÐCŠJà�Z‰Z˜Ÿ™Ñ! SÒ(àˆJä˜4Ÿ:™:“ˆHØ�HŠH˜‰M�HØ—(‘(œS §¡›_Ó,Ø—‘”Ø—8‘8˜hÒ&¨4¯:©:°d·h±hÑ+?À3Ò+FØ—H’H ‘M•HÙØ'¨$¯/©/Ó*;Ñ;�
ð —(‘(œS §¡›_Ô,ð �Z‰Z˜Ÿ™Ñ! SÒ(à×)Ñ)Ó+ˆIà×ÒÜ$Ÿz™z¨%Ó0°4Ñ7Ø"Ÿx™x¨×(8Ñ(8Ó9ñ :Ø<?ñ @ØAJðLð M‘
ô  %Ÿz™z¨%Ó0°)Ð<Ð=‘
ñ Ü$Ÿz™z¨$×*:Ñ*:Ó;¸UÀ1¹XÐFÐG‘
Ø—‘˜DŸH™HÑ%¨¯©Ñ6Ø—’˜A‘•à�‰ŒØ�8‰8”c˜$Ÿ*™*“oÒ%¨$¯*©*°T·X±XÑ*>À#Ò*EØ�HŠH˜‰M�HØÐr<   c                 óî  — | j                   | j                     dk7  ryd}| xj                  dz  c_        | j                  «        d}| j                  t        | j                   «      k  �r|r| j	                  «        d}nÂ| j                   | j                     dk(  r| xj                  dz  c_        	 |S | j                   | j                     dk(  r| xj                  dz  c_        d}nZ| j                   | j                     d	k(  r| xj                  dz  c_        n(| j                  «       }| xj                  dz  c_        	 |S | j                  «        | j                  t        | j                   «      k  r�Œ|S )
z�Parse a route address (Return-path value).

        This method just skips all the route stuff and returns the addrspec.
        r—   NFr?   r   Ú>Ú@TrG   )r„   r~   r�   rS   Ú	getdomainr›   )r‡   ÚexpectrouteÚadlists      r;   rœ   zAddrlistClass.getrouteaddrG  s&  € ð
 �:‰:�d—h‘hÑ 3Ò&ØàˆØ�Š�A‰�Ø�‰ŒØˆØ�h‰hœ˜TŸZ™Z›Ó(ÙØ—‘Ô Ø#‘Ø—‘˜DŸH™HÑ%¨Ò,Ø—’˜A‘•Øð ˆð —‘˜DŸH™HÑ%¨Ò,Ø—’˜A‘•Ø"‘Ø—‘˜DŸH™HÑ%¨Ò,Ø—’˜A‘–à×)Ñ)Ó+�Ø—’˜A‘•Øð ˆð �M‰MŒOð! �h‰hœ˜TŸZ™Z›Ô(ð$ ˆr<   c                 ó¬  — g }| j                  «        | j                  t        | j                  «      k  �rgd}| j                  | j                     dk(  rN|r#|d   j	                  «       s|j                  «        |j                  d«       | xj                  dz  c_        d}n²| j                  | j                     dk(  r,|j                  dt        | j                  «       «      z  «       nj| j                  | j                     | j                  v r&|r#|d   j	                  «       s|j                  «        nh|j                  | j                  «       «       | j                  «       }|r|r|j                  |«       | j                  t        | j                  «      k  r�Œg| j                  t        | j                  «      k\  s| j                  | j                     dk7  rt        j                  |«      S |j                  d«       | xj                  dz  c_        | j                  «        | j                  «       }|st        S t        j                  |«      |z   S )	zParse an RFC 2822 addr-spec.TrJ   rD   r?   Frw   z"%s"r¦   )r�   r~   rS   r„   ÚstripÚpoprU   r   Úgetquoter‚   ÚgetatomrŒ   r�   r§   )r‡   ÚaslistÚpreserve_wsÚwsÚdomains        r;   r›   zAddrlistClass.getaddrspecg  s­  € àˆà�‰ŒØ�h‰hœ˜TŸZ™Z›Ó(ØˆKØ�z‰z˜$Ÿ(™(Ñ# sÒ*Ù &¨¡*×"2Ñ"2Ô"4Ø—J‘J”LØ—‘˜cÔ"Ø—’˜A‘•Ø#‘Ø—‘˜DŸH™HÑ%¨Ò,Ø—‘˜f¤u¨T¯]©]«_Ó'=Ñ=Õ>Ø—‘˜DŸH™HÑ%¨¯©Ñ6Ù &¨¡*×"2Ñ"2Ô"4Ø—J‘J”LØà—‘˜dŸl™l›nÔ-Ø—‘“ˆBÙ™rØ—‘˜bÔ!ð% �h‰hœ˜TŸZ™Z›Ô(ð( �8‰8”s˜4Ÿ:™:“Ò&¨$¯*©*°T·X±XÑ*>À#Ò*EÜ×#Ñ# FÓ+Ð+à�‰�cÔØ�Š�A‰�Ø�‰ŒØ—‘Ó!ˆÙô ÐÜ×Ñ Ó'¨&Ñ0Ð0r<   c                 óŽ  — g }| j                   t        | j                  «      k  �rŒ| j                  | j                      | j                  v r| xj                   dz  c_         �n,| j                  | j                      dk(  r*| j                  j                  | j                  «       «       næ| j                  | j                      dk(  r |j                  | j                  «       «       nª| j                  | j                      dk(  r'| xj                   dz  c_         |j                  d«       ng| j                  | j                      dk(  rt        S | j                  | j                      | j                  v rnC|j                  | j                  «       «       | j                   t        | j                  «      k  r�ŒŒt        j                  |«      S )z-Get the complete domain name from an address.r?   rŠ   Ú[rJ   r¦   )r~   rS   r„   r   r…   rU   r‹   ÚgetdomainliteralrŒ   r‚   r®   r�   )r‡   Úsdlists     r;   r§   zAddrlistClass.getdomain�  s=  € àˆØ�h‰hœ˜TŸZ™Z›Ó(Ø�z‰z˜$Ÿ(™(Ñ# t§x¡xÑ/Ø—’˜A‘—Ø—‘˜DŸH™HÑ%¨Ò,Ø× Ñ ×'Ñ'¨¯©Ó(9Õ:Ø—‘˜DŸH™HÑ%¨Ò,Ø—‘˜d×3Ñ3Ó5Õ6Ø—‘˜DŸH™HÑ%¨Ò,Ø—’˜A‘•Ø—‘˜cÕ"Ø—‘˜DŸH™HÑ%¨Ò,ô #Ð"Ø—‘˜DŸH™HÑ%¨¯©Ñ6Øà—‘˜dŸl™l›nÔ-ð# �h‰hœ˜TŸZ™Z›Ô(ô$ ×Ñ Ó'Ð'r<   c                 ó  — | j                   | j                     |k7  rydg}d}| xj                  dz  c_        | j                  t        | j                   «      k  �r|r+|j                  | j                   | j                     «       d}n¶| j                   | j                     |v r| xj                  dz  c_        n¾|r<| j                   | j                     dk(  r |j                  | j	                  «       «       Œ¿| j                   | j                     dk(  rd}n(|j                  | j                   | j                     «       | xj                  dz  c_        | j                  t        | j                   «      k  r�Œt
        j                  |«      S )aæ  Parse a header fragment delimited by special characters.

        `beginchar' is the start character for the fragment.
        If self is not looking at an instance of `beginchar' then
        getdelimited returns the empty string.

        `endchars' is a sequence of allowable end-delimiting characters.
        Parsing stops when one of these is encountered.

        If `allowcomments' is non-zero, embedded RFC 2822 comments are allowed
        within the parsed fragment.
        r   Fr?   rŠ   rv   T)r„   r~   rS   rU   r‹   rŒ   r�   )r‡   Ú	begincharÚendcharsÚallowcommentsÚslistr   s         r;   ÚgetdelimitedzAddrlistClass.getdelimited¤  s%  € ð �:‰:�d—h‘hÑ 9Ò,Øà�ˆØˆØ�Š�A‰�Ø�h‰hœ˜TŸZ™Z›Ó(ÙØ—‘˜TŸZ™Z¨¯©Ñ1Ô2Ø‘Ø—‘˜DŸH™HÑ%¨Ñ1Ø—’˜A‘•ØÙ 4§:¡:¨d¯h©hÑ#7¸3Ò#>Ø—‘˜TŸ_™_Ó.Ô/ØØ—‘˜DŸH™HÑ%¨Ò-Ø‘à—‘˜TŸZ™Z¨¯©Ñ1Ô2Ø�HŠH˜‰M�Hð �h‰hœ˜TŸZ™Z›Ô(ô  ×Ñ Ó&Ð&r<   c                 ó(   — | j                  ddd«      S )z1Get a quote-delimited fragment from self's field.rw   z"F©r¼   ©r‡   s    r;   r­   zAddrlistClass.getquoteÉ  s   € à× Ñ   e¨UÓ3Ð3r<   c                 ó(   — | j                  ddd«      S )z7Get a parenthesis-delimited fragment from self's field.rŠ   z)Tr¾   r¿   s    r;   r‹   zAddrlistClass.getcommentÍ  s   € à× Ñ   e¨TÓ2Ð2r<   c                 ó.   — d| j                  ddd«      z  S )z!Parse an RFC 2822 domain-literal.z[%s]r´   z]Fr¾   r¿   s    r;   rµ   zAddrlistClass.getdomainliteralÑ  s   € à˜×)Ñ)¨#¨u°eÓ<Ñ<Ð<r<   Nc                 óŠ  — dg}|€| j                   }| j                  t        | j                  «      k  r|| j                  | j                     |v rn`|j	                  | j                  | j                     «       | xj                  dz  c_        | j                  t        | j                  «      k  rŒ|t
        j                  |«      S )a  Parse an RFC 2822 atom.

        Optional atomends specifies a different set of end token delimiters
        (the default is to use self.atomends).  This is used e.g. in
        getphraselist() since phrase endings must not include the `.' (which
        is legal in phrases).r   r?   )r‚   r~   rS   r„   rU   rŒ   r�   )r‡   r‚   Úatomlists      r;   r®   zAddrlistClass.getatomÕ  s•   € ð �4ˆØÐØ—}‘}ˆHà�h‰hœ˜TŸZ™Z›Ò(Ø�z‰z˜$Ÿ(™(Ñ# xÑ/Øà—‘ §
¡
¨4¯8©8Ñ 4Ô5Ø�HŠH˜‰M�Hð �h‰hœ˜TŸZ™Z›Ó(ô ×Ñ Ó)Ð)r<   c                 ó¶  — g }| j                   t        | j                  «      k  �r3| j                  | j                      | j                  v r| xj                   dz  c_         nÔ| j                  | j                      dk(  r |j	                  | j                  «       «       n˜| j                  | j                      dk(  r*| j                  j	                  | j                  «       «       nR| j                  | j                      | j                  v r	 |S |j	                  | j                  | j                  «      «       | j                   t        | j                  «      k  r�Œ3|S )zýParse a sequence of RFC 2822 phrases.

        A phrase is a sequence of words, which are in turn either RFC 2822
        atoms or quoted-strings.  Phrases are canonicalized by squeezing all
        runs of continuous whitespace into one space.
        r?   rw   rŠ   )
r~   rS   r„   r�   rU   r­   r…   r‹   rƒ   r®   )r‡   rŸ   s     r;   r™   zAddrlistClass.getphraselisté  sõ   € ð ˆà�h‰hœ˜TŸZ™Z›Ó(Ø�z‰z˜$Ÿ(™(Ñ# t§x¡xÑ/Ø—’˜A‘–Ø—‘˜DŸH™HÑ%¨Ò,Ø—‘˜TŸ]™]›_Õ-Ø—‘˜DŸH™HÑ%¨Ò,Ø× Ñ ×'Ñ'¨¯©Ó(9Õ:Ø—‘˜DŸH™HÑ%¨¯©Ñ8Øð ˆð —‘˜TŸ\™\¨$¯/©/Ó:Ô;ð �h‰hœ˜TŸZ™Z›Ô(ð ˆr<   )T©N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rˆ   r�   r”   r‘   rœ   r›   r§   r¼   r­   r‹   rµ   r®   r™   © r<   r;   r{   r{   Ó   sL   „ ñòò&(òò9òvò@$1òL(ó.#'òJ4ò3ò=ó*ó(r<   r{   c                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚAddressListz@An AddressList encapsulates a list of parsed RFC 2822 addresses.c                 ón   — t         j                  | |«       |r| j                  «       | _        y g | _        y rÅ   )r{   rˆ   r”   Úaddresslistr†   s     r;   rˆ   zAddressList.__init__  s.   € Ü×Ñ˜t UÔ+ÙØ#×/Ñ/Ó1ˆDÕà!ˆDÕr<   c                 ó,   — t        | j                  «      S rÅ   )rS   rÎ   r¿   s    r;   Ú__len__zAddressList.__len__	  s   € Ü�4×#Ñ#Ó$Ð$r<   c                 óº   — t        d «      }| j                  d d  |_        |j                  D ],  }|| j                  vsŒ|j                  j                  |«       Œ. |S rÅ   ©rÌ   rÎ   rU   ©r‡   ÚotherÚnewaddrÚxs       r;   Ú__add__zAddressList.__add__  sX   € ä˜dÓ#ˆØ"×.Ñ.©qÐ1ˆÔØ×"Ô"ˆAØ˜×(Ñ(Ò(Ø×#Ñ#×*Ñ*¨1Õ-ð #ð ˆr<   c                 ó|   — |j                   D ],  }|| j                   vsŒ| j                   j                  |«       Œ. | S rÅ   )rÎ   rU   ©r‡   rÔ   rÖ   s      r;   Ú__iadd__zAddressList.__iadd__  s;   € à×"Ô"ˆAØ˜×(Ñ(Ò(Ø× Ñ ×'Ñ'¨Õ*ð #ð ˆr<   c                 ó’   — t        d «      }| j                  D ],  }||j                  vsŒ|j                  j                  |«       Œ. |S rÅ   rÒ   rÓ   s       r;   Ú__sub__zAddressList.__sub__  sE   € ä˜dÓ#ˆØ×!Ô!ˆAØ˜×)Ñ)Ò)Ø×#Ñ#×*Ñ*¨1Õ-ð "ð ˆr<   c                 ó|   — |j                   D ],  }|| j                   v sŒ| j                   j                  |«       Œ. | S rÅ   )rÎ   ÚremoverÙ   s      r;   Ú__isub__zAddressList.__isub__$  s;   € à×"Ô"ˆAØ�D×$Ñ$Ò$Ø× Ñ ×'Ñ'¨Õ*ð #ð ˆr<   c                 ó    — | j                   |   S rÅ   )rÎ   )r‡   rW   s     r;   Ú__getitem__zAddressList.__getitem__+  s   € à×Ñ Ñ&Ð&r<   N)rÆ   rÇ   rÈ   rÉ   rˆ   rÐ   r×   rÚ   rÜ   rß   rá   rÊ   r<   r;   rÌ   rÌ      s(   „ ÙJò"ò%òòòòó'r<   rÌ   )rÉ   Ú__all__rq   rs   rš   rŒ   Ú
COMMASPACErV   rQ   r\   r   r7   r   r   r   r{   rÌ   rÊ   r<   r;   Ú<module>rä      s“   ðñò
€÷ à€Ø€Ø€
òI€ò
 >€	ð ˜A Q¨AØ $Ø $Ø $Ø $Ø $ñ€
ò
òz;òzòò9÷kñ kôZ	-'�-õ -'r<   