R
    ¢¤ÒjÉF  ã                   ó¼   €   Q s , QNs] PHsQsPsQs, QNs, QNsQ] Q] Q] Q] QQQQQ	QQ
QQQ QQQQ!QQ QQ"QQ!-sQ s	Q s
Q sQ sQ s  Q Q2      s  Q Q\2      sP! )#zcEmail address parsing code.

Lifted directly from rfc822.py.  This should eventually be rewritten.
Ú z, ÚUTÚUTCÚGMTÚZÚASTÚADTÚESTÚEDTÚCSTÚCDTÚMSTÚMDTÚPSTÚPDTc                ód   €   [        U 2      oU%       f   P! U]	*          e   ] U]	$   [        U2      ! )zIConvert a date string to a time tuple.

Accounts for military timezones.
)Ú_parsedate_tzÚtuple)ÚdataÚress   & Ú-/usr/local/lib/python3.15/email/_parseaddr.pyÚparsedate_tzr   -   s0   � ô
 ˜Ó
€CßÙØ
ˆ1…v‚~ØˆˆA‰Ü�‹:Ðó    c           
     óR  €   U %       f   P! U O                  2       o U %       f   P! U ] *          O                  Q2      %       f!   U ] *          O                  2       [        7   c   U ]  L5U ] *          O	                  Q2      oU] 6¼  c   U ] *          U]*           P U ] $   [        U 2      ]6X  c8   U ] *          O                  Q2      o[        U2      ]6X  c   V Q*          *           o [        U 2      ]6X  cX   U ]*          oUO                  Q2      oUP6X  c   UO                  Q2      oU] 6”  c   UPU V1P ,U Q$   LU O                  P2       [        U 2      ]6  c   P! U Q*          o U v  qEqgoU%       c   U%       c	   U%       f   P! UO                  2       oU[        7  c   XTO                  2       qTU[        7  c   P! [        O                  U2      ]*           oU]6”  c
   U]*          oUP*          Q6X  c   UPP oUO                  Q2      oU] 6”  c   XvqvUP*          Q6X  c   UPP oU%       f   P! U] *          O                  2       %       f   X†q†UP*          Q6X  c   UPP oUO                  Q2      o[        U2      ]6X  c   Uv  qšQoL}[        U2      ]6X  c   Uv  qšoLg[        U2      ]6X  cV   Q	U] *          7   cH   U] *          O                  Q	2      o[        U2      ]6X  c   Uv  qš] oL[        U2      ]6X  c   Uv  qšoLP! P!  [        U2      o[        U2      o[        U	2      o	[        U
2      o
[        U2      oU]d6  c   U]D6”  c   UQ
*          oL	UQ*          oPoUO                  2       oU[        7   c   [        U*          oL, [        U2      oU] 6X  c   UO                  Q2      %       c   PoU%       c;   U] 6  c   PoU' oL]oVÜ]d*          Q*          U]d*          ]<*          *           *          oVeVIV«] ]PU,
!  [         c     P! h 9 h [         c     KŠh 9 h)ao  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 disclaims knowledge of
the source timezone, as opposed to a +0000 timestamp that indicates the
source timezone really was UTC.

Ú,Ú-:é   NNÚ+:é   NN:Né   NÚ:Ú0Ú.il  iÐ  i  )ÚsplitÚendswithÚlowerÚ	_daynamesÚrfindÚlenÚfindÚappendÚ_monthnamesÚindexÚisdigitÚintÚ
ValueErrorÚupperÚ
_timezonesÚ
startswith)r   ÚiÚstuffÚsÚddÚmmÚyyÚtmÚtzÚthhÚtmmÚtssÚtzoffsetÚtzsigns   &             r   r   r   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‹:˜Œ?Ø �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Ø	”ÔØ—X‘X“ZˆBØ”[Ô ÙÜ	×	Ñ	˜2Ó	 Õ	"€BØ	ˆB„wØ
ˆb�ˆØ	ˆ"…v�„}Ø��ˆWˆØ
�‰�‹€AØˆ1„uØˆBØ	ˆ"…v�„}Ø��ˆWˆßÙØˆa�5�=‰=�?Š?ØˆBØ	ˆ"…v�„}Ø��ˆWˆØ	�‰�#‹€BÜ
ˆ2ƒw�!„|Ø‰
ˆØ‰Ü	ˆR‹�AŒØ‰ˆ‘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Ø¨�}¨dÕ2°hÀµnÀbÕ5HÕHÕIˆà�B˜S q¨!¨R°Ð:Ð:øôG ô Úðûô, ô 	Ùð	ús0   Ì7P ÎP Ð	PÐPÐPÐ	P&Ð"P&Ð%P&c                ó\   €   [        U 2      o[        U[        2      %       c
   UQ*          ! U! )z&Convert a time string to a time tuple.:Né	   N)r   Ú
isinstancer   )r   Úts   & r   Ú	parsedaterD   ·   s'   � ä�TÓ€AÜ�!”U×ÒØ��uˆàˆr   c                óª   €   U ]	*          e%   [         O                   U Q*          Q*           2      ! ] PH
oUO                  U 2      oV ]	*          *
          ! )zETurn a 10-tuple as returned by parsedate_tz() into a POSIX timestamp.:Né   N)éÿÿÿÿ)ÚtimeÚmktimeÚcalendarÚtimegm)r   rJ   rC   s   &  r   Ú	mktime_tzrL   À   sB   � àˆA…w‚ä�{Š{˜4 �8 eÕ+Ó,Ð,ó 	à�O‰O˜DÓ!ˆØ˜•7�{Ðr   c                óH   €   U O                  QQ2      O                  QQ2      ! )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   ÚquoterR   Í   s"   � ð �;‰;�t˜VÓ$×,Ñ,¨S°%Ó8Ð8r   c                   ó|   ` €   \ sQ s]×s n QsQ sQ sQ sQ sQ s	Q s
Q sQQ	 ksQ
 sQ sQ sQQ ksQ sQsU sP! )ÚAddrlistClasszï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                óF  €   QU m         ] U m        QU m        QU m        U O                  U O                  *           U m        U O                   U O                  *           U O                  *           U m        U O
                  O                  QP2      U m        Vm        , U m	        P! )zkInitialize a new instance.

'field' is an unparsed address header field, containing
one or more addresses.
z()<>@,:;."[]z 	z
r"   )
ÚspecialsÚposÚLWSÚCRÚFWSÚatomendsrP   Ú
phraseendsÚfieldÚcommentlist©Úselfr]   s   &&r   Ú__init__ÚAddrlistClass.__init__á   sx   � ð (ˆŒØˆŒØˆŒØˆŒØ—8‘8˜dŸg™gÕ%ˆŒØŸ™¨¯©Õ0°4·7±7Õ:ˆŒð Ÿ-™-×/Ñ/°°RÓ8ˆŒØŒ
ØˆÖr   c                óP  €   , oU O                   [        U O                  2      6  cì   U O                  U O                   *          U O                  Q*           7   cj   U O                  U O                   *          Q7  c-   UO	                  U O                  U O                   *          2       U 9O                   ]*          tm         JÀ  U O                  U O                   *          Q6X  c-   U O
                  O	                  U O                  2       2       CJ   [        O                  U2      ! )z&Skip white space and extract comments.z
Ú()	rW   r(   r]   rX   r*   r^   Ú
getcommentÚEMPTYSTRINGÚjoin)r`   Úwslists   & r   ÚgotonextÚ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×:àÜ×Ñ Ó'Ð'r   c                ó¾   €   , oU O                   [        U O                  2      6  c6   U O                  2       oU%       c   V*          oJF  UO	                  Q2       JY  U! )zFParse all addresses.

Returns a list containing all of the addresses.
)Ú rl   )rW   r(   r]   Ú
getaddressr*   )r`   ÚresultÚads   &  r   ÚgetaddrlistÚAddrlistClass.getaddrlist  sD   � ð
 ˆØ�h‰hœ˜TŸZ™Z›Ô(Ø—‘Ó"ˆBßØ•’à—‘˜hÖ'Øˆr   c                ó  €   , U m         U O                  2        U O                  oU O                   oU O                  2       oU O                  2        , oU O                  [	        U O
                  2      6¼  c4   U%       c*   [        O                  U O                   2      U] *          1,oCLkU O
                  U O                  *          Q7   cA   Vm        V m         U O                  2       o[        O                  U O                   2      U1,oCL	U O
                  U O                  *          Q6X  cÍ   , o[	        U O
                  2      oU 9O                  ]*          tm        U O                  [	        U O
                  2      6  cw   U O                  2        U O                  U6  c>   U O
                  U O                  *          Q6X  c   U 9O                  ]*          tm        CL5V@O                  2       *           oJš  CLU O
                  U O                  *          Q6X  cƒ   U O                  2       oU O                   %       cH   [        O                  U2      Q*           QO                  U O                   2      *           Q*           U1,oL�[        O                  U2      U1,oLwU%       c+   [        O                  U O                   2      U] *          1,oLEU O
                  U O                  *          U O                  7   c   U 9O                  ]*          tm        U O                  2        U O                  [	        U O
                  2      6  c<   U O
                  U O                  *          Q6X  c   U 9O                  ]*          tm        U! )	zParse the next address.z.@r    Ú;Ú<z (r   Ú)r   )r^   ri   rW   Úgetphraselistr(   r]   ÚSPACErg   Úgetaddrspecrm   ÚgetrouteaddrrV   )r`   ÚoldposÚoldclÚplistÚ
returnlistÚaddrspecÚfieldlenÚ	routeaddrs   &       r   rm   ÚAddrlistClass.getaddress  sv  � àˆÔØ�‰Œà—‘ˆØ× Ñ ˆØ×"Ñ"Ó$ˆà�‰ŒØˆ
à�8‰8”s˜4Ÿ:™:“Ô&çÜ$Ÿz™z¨$×*:Ñ*:Ó;¸UÀ1½XÐFÐG�
ùà�Z‰Z˜Ÿ™Õ! TÔ)ð ŒHØ$ÔØ×'Ñ'Ó)ˆ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ÙØ'¯/©/Ó*;Õ;’
ñ -ð �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                ó  €   U O                   U O                  *          Q6w  c   P! P
oU 9O                  ]*          tm        U O                  2        PoU O                  [        U O                   2      6  Cc   U%       c   U O	                  2        P
oLäU O                   U O                  *          Q6X  c   U 9O                  ]*          tm         U! U O                   U O                  *          Q6X  c   U 9O                  ]*          tm        P	oLhU O                   U O                  *          Q6X  c   U 9O                  ]*          tm        L,U O                  2       oU 9O                  ]*          tm         U! U O                  2        CJ7  U! )zqParse a route address (Return-path value).

This method just skips all the route stuff and returns the addrspec.
rt   Ú>Ú@r    )r]   rW   ri   r(   Ú	getdomainrx   )r`   ÚexpectrouteÚadlists   &  r   ry   ÚAddrlistClass.getrouteaddrM  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àˆr   c                ó6  €   , oU O                  2        U O                  [        U O                  2      6  Cc”   P	oU O                  U O                  *          Q6X  cc   U%       c.   UP*          O	                  2       %       f   UO                  2        UO                  Q2       U 9O                  ]*          tm        P
oLÓU O                  U O                  *          Q6X  c1   UO                  Q[        U O                  2       2      *          2       L�U O                  U O                  *          U O                  7   c7   U%       c.   UP*          O	                  2       %       f   UO                  2        LYUO                  U O                  2       2       U O                  2       oU%       f   CJ™  U%       f   CJ¤  UO                  U2       CJ¸  U O                  [        U O                  2      6¼  f#   U O                  U O                  *          Q6w  c   [        O                  U2      ! UO                  Q2       U 9O                  ]*          tm        U O                  2        U O                  2       oU%       f   [        ! [        O                  U2      U*           ! )zParse an RFC 2822 addr-spec.r"   rO   z"%s"r„   )ri   rW   r(   r]   ÚstripÚpopr*   rR   Úgetquoter[   Úgetatomrf   rg   r…   )r`   ÚaslistÚpreserve_wsÚwsÚdomains   &    r   rx   ÚAddrlistClass.getaddrspecm  sŸ  � àˆà�‰ŒØ�h‰hœ˜TŸZ™Z›Õ(ØˆKØ�z‰z˜$Ÿ(™(Õ# sÔ*ß &¨¥*×"2Ñ"2×"4Ò"4Ø—J‘J”LØ—‘˜cÔ"Ø—’˜A••Ø#‘Ø—‘˜DŸH™HÕ%¨Ô,Ø—‘˜f¤u¨T¯]©]«_Ó'=Õ=Õ>Ø—‘˜DŸH™HÕ%¨¯©Ô6ß &¨¥*×"2Ñ"2×"4Ò"4Ø—J‘J”LØà—‘˜dŸl™l›nÔ-Ø—‘“ˆBßŠ{ŸršrØ—‘˜b×!à�8‰8”s˜4Ÿ:™:“Ô&¨$¯*©*°T·X±XÕ*>À#Ô*EÜ×#Ñ# FÓ+Ð+à�‰�cÔØ�Š�A��Ø�‰ŒØ—‘Ó!ˆßô ÐÜ×Ñ Ó'¨&Õ0Ð0r   c                ó¶  €   , oU O                   [        U O                  2      6  Ccž   U O                  U O                   *          U O                  7   c   U 9O                   ]*          tm         Jl  U O                  U O                   *          Q6X  c,   U O                  O                  U O                  2       2       J¹  U O                  U O                   *          Q6X  c"   UO                  U O                  2       2       Jü  U O                  U O                   *          Q6X  c.   U 9O                   ]*          tm         UO                  Q2       CJK  U O                  U O                   *          Q6X  c   [        ! U O                  U O                   *          U O                  7   c   L"UO                  U O                  2       2       CJÂ  [        O                  U2      ! )z-Get the complete domain name from an address.rd   Ú[r"   r„   )rW   r(   r]   rX   r^   r*   re   Úgetdomainliteralrf   r[   r�   rg   )r`   Úsdlists   & r   r…   Ú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×-Ü×Ñ Ó'Ð'r   c                óR  €   U O                   U O                  *          U6w  c   P! P,oP
oU 9O                  ]*          tm        U O                  [        U O                   2      6  Cc,   U%       c0   UO                  U O                   U O                  *          2       P
oLØU O                   U O                  *          U7   c   U 9O                  ]*          tm        L¸U%       cD   U O                   U O                  *          Q6X  c"   UO                  U O	                  2       2       Jã  U O                   U O                  *          Q6X  c   P	oL,UO                  U O                   U O                  *          2       U 9O                  ]*          tm        CJP  [
        O                  U2      ! )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.
rd   rN   )r]   rW   r(   r*   re   rf   rg   )r`   Ú	begincharÚendcharsÚallowcommentsÚslistrR   s   &&&&  r   ÚgetdelimitedÚ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ä×Ñ Ó&Ð&r   c                ó*   €   U O                  QQP
2      ! )z1Get a quote-delimited fragment from self's field.rO   z"©r�   ©r`   s   &r   rŒ   ÚAddrlistClass.getquoteÏ  s   � à× Ñ   e¨UÓ3Ð3r   c                ó*   €   U O                  QQP	2      ! )z7Get a parenthesis-delimited fragment from self's field.rd   z)r    r¡   s   &r   re   ÚAddrlistClass.getcommentÓ  s   � à× Ñ   e¨TÓ2Ð2r   c                ó8   €   QU O                  QQP
2      *          ! )z!Parse an RFC 2822 domain-literal.z[%s]r”   z]r    r¡   s   &r   r•   ÚAddrlistClass.getdomainliteral×  s   � à˜×)Ñ)¨#¨u°eÓ<Õ<Ð<r   c                óp  €   P,oUe   U O                   oU O                  [        U O                  2      6  ck   U O                  U O                  *          U7   c   LGUO	                  U O                  U O                  *          2       U 9O                  ]*          tm        JŽ  [
        O                  U2      ! )zô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[   rW   r(   r]   r*   rf   rg   )r`   r[   Úatomlists   && r   r�   ÚAddrlistClass.getatomÛ  s}   � ð �4ˆØÒØ—}‘}ˆHà�h‰hœ˜TŸZ™Z›Ô(Ø�z‰z˜$Ÿ(™(Õ# xÔ/Øà—‘ §
¡
¨4¯8©8Õ 4Ô5Ø�HŠH˜�M�Hä×Ñ Ó)Ð)r   c                ó¼  €   , oU O                   [        U O                  2      6  Cc4   U O                  U O                   *          U O                  7   c   U 9O                   ]*          tm         Jl  U O                  U O                   *          Q6X  c"   UO	                  U O                  2       2       J¯  U O                  U O                   *          Q6X  c,   U O                  O	                  U O                  2       2       Jü  U O                  U O                   *          U O                  7   c    U! UO	                  U O                  U O                  2      2       CJX  U! )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.
rO   rd   )
rW   r(   r]   rZ   r*   rŒ   r^   re   r\   r�   )r`   r|   s   & r   rv   Ú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Ÿ\™\¨$¯/©/Ó:×;àˆr   )	rY   rZ   rX   r[   r^   r]   r\   rW   rV   )T©N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ra   ri   rp   rm   ry   rx   r…   r�   rŒ   re   r•   r�   rv   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   rT   rT   ×   sT   ø‡ � ñòò*(òò9òvò@$1òL(ô.#'òJ4ò3ò=ô*÷(ð r   rT   c                   óP   ` €   \ sQ sQs n QsQ sQ sQ sQ sQ s	Q s
Q	 sQ
sU sP! )ÚAddressListé  z@An AddressList encapsulates a list of parsed RFC 2822 addresses.c                ó~   €   [         O                  V2       U%       c   U O                  2       U m        P! , U m        P! r¬   )rT   ra   rp   Úaddresslistr_   s   &&r   ra   ÚAddressList.__init__  s,   � Ü×Ñ˜tÔ+ßØ#×/Ñ/Ó1ˆDÖà!ˆDÖr   c                ó.   €   [        U O                  2      ! r¬   )r(   rº   r¡   s   &r   Ú__len__ÚAddressList.__len__  s   � Ü�4×#Ñ#Ó$Ð$r   c                óÐ   €   [        P2      oU O                  Q*          Um        UO                  F   D0  oV0O                  7   c   J  UO                  O                  U2       J2  	  U! )N:NNN©r·   rº   r*   ©r`   ÚotherÚnewaddrÚxs   &&  r   Ú__add__ÚAddressList.__add__  sV   � ä˜dÓ#ˆØ"×.Ñ.¨qÕ1ˆÔØ×"Õ"ˆAØ×(Ñ(Ö(Ø×#Ñ#×*Ñ*¨1Ö-ñ #ð ˆr   c                óŠ   €   UO                   F   D0  oV O                   7   c   J  U O                   O                  U2       J2  	  U ! r¬   )rº   r*   ©r`   rÂ   rÄ   s   && r   Ú__iadd__ÚAddressList.__iadd__  s9   � à×"Õ"ˆAØ×(Ñ(Ö(Ø× Ñ ×'Ñ'¨Ö*ñ #ð ˆr   c                ó    €   [        P2      oU O                  F   D0  oV1O                  7   c   J  UO                  O                  U2       J2  	  U! r¬   rÀ   rÁ   s   &&  r   Ú__sub__ÚAddressList.__sub__"  sC   � ä˜dÓ#ˆØ×!Õ!ˆAØ×)Ñ)Ö)Ø×#Ñ#×*Ñ*¨1Ö-ñ "ð ˆr   c                óŠ   €   UO                   F   D0  oV O                   7   f   J  U O                   O                  U2       J2  	  U ! r¬   )rº   ÚremoverÈ   s   && r   Ú__isub__ÚAddressList.__isub__*  s9   � à×"Õ"ˆAØ×$Ñ$Ö$Ø× Ñ ×'Ñ'¨Ö*ñ #ð ˆr   c                ó*   €   U O                   U*          ! r¬   ©rº   )r`   r,   s   &&r   Ú__getitem__ÚAddressList.__getitem__1  s   � à×Ñ Õ&Ð&r   rÓ   )r­   r®   r¯   r°   r±   ra   r½   rÅ   rÉ   rÌ   rÐ   rÔ   r²   r³   r´   s   @r   r·   r·     s0   ø‡ � ÙJò"ò%òòòò÷'ð 'r   r·   )rL   rD   r   rR   )Ú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àüÿÿ)r±   Ú__all__rH   rw   rf   Ú
COMMASPACEr+   r&   r1   r   r   rD   rL   rR   rT   r·   © r   r   Ú<module>r÷      s¯   ññò
€ó à€Ø€Ø€
òI€ò
 >€	ð �1�e˜A˜u Q¨¨AØ�T˜5 $Ø�T˜5 $Ø�T˜5 $Ø�T˜5 $Ø�T˜5 $ð€
ò
ò{;ò|ò
ò9÷mñ mô^	-'�-ö -'r   