Ë
    òT•j›T  ã                   ó   — d Z ddlZddlZddlZg d¢Zdj
                  Zdj
                  Zdj
                  Z G d„ de	«      Z
ej                  ej                  z   d	z   Zed
z   Z e ed«      «       e eee«      «      z
  D � ci c]  } | d| z  “Œ
 c} Zej)                   ed«      d ed«      di«        ej*                  d ej,                  e«      z  «      j.                  Z ej*                  d«      Zd„ Zd„ Z ej*                  d«      j8                  Zd„ Zd„ Zg d¢Z g d¢Z!de e!fd„Z" G d„ de#«      Z$dZ%e%dz   Z& ej*                  de%z   d z   e&z   d!z   ejN                  ejP                  z  «      Z) G d"„ d#e#«      Z* G d$„ d%e*«      Z+yc c} w )&a%
  
Here's a sample session to show how to use this module.
At the moment, this is the only documentation.

The Basics
----------

Importing is easy...

   >>> from http import cookies

Most of the time you start by creating a cookie.

   >>> C = cookies.SimpleCookie()

Once you've created your Cookie, you can add values just as if it were
a dictionary.

   >>> C = cookies.SimpleCookie()
   >>> C["fig"] = "newton"
   >>> C["sugar"] = "wafer"
   >>> C.output()
   'Set-Cookie: fig=newton\r\nSet-Cookie: sugar=wafer'

Notice that the printable representation of a Cookie is the
appropriate format for a Set-Cookie: header.  This is the
default behavior.  You can change the header and printed
attributes by using the .output() function

   >>> C = cookies.SimpleCookie()
   >>> C["rocky"] = "road"
   >>> C["rocky"]["path"] = "/cookie"
   >>> print(C.output(header="Cookie:"))
   Cookie: rocky=road; Path=/cookie
   >>> print(C.output(attrs=[], header="Cookie:"))
   Cookie: rocky=road

The load() method of a Cookie extracts cookies from a string.  In a
CGI script, you would use this method to extract the cookies from the
HTTP_COOKIE environment variable.

   >>> C = cookies.SimpleCookie()
   >>> C.load("chips=ahoy; vienna=finger")
   >>> C.output()
   'Set-Cookie: chips=ahoy\r\nSet-Cookie: vienna=finger'

The load() method is darn-tootin smart about identifying cookies
within a string.  Escaped quotation marks, nested semicolons, and other
such trickeries do not confuse it.

   >>> C = cookies.SimpleCookie()
   >>> C.load('keebler="E=everybody; L=\\"Loves\\"; fudge=;";')
   >>> print(C)
   Set-Cookie: keebler="E=everybody; L=\"Loves\"; fudge=;"

Each element of the Cookie also supports all of the RFC 2109
Cookie attributes.  Here's an example which sets the Path
attribute.

   >>> C = cookies.SimpleCookie()
   >>> C["oreo"] = "doublestuff"
   >>> C["oreo"]["path"] = "/"
   >>> print(C)
   Set-Cookie: oreo=doublestuff; Path=/

Each dictionary element has a 'value' attribute, which gives you
back the value associated with the key.

   >>> C = cookies.SimpleCookie()
   >>> C["twix"] = "none for you"
   >>> C["twix"].value
   'none for you'

The SimpleCookie expects that all values should be standard strings.
Just to be sure, SimpleCookie invokes the str() builtin to convert
the value to a string, when the values are set dictionary-style.

   >>> C = cookies.SimpleCookie()
   >>> C["number"] = 7
   >>> C["string"] = "seven"
   >>> C["number"].value
   '7'
   >>> C["string"].value
   'seven'
   >>> C.output()
   'Set-Cookie: number=7\r\nSet-Cookie: string=seven'

Finis.
é    N)ÚCookieErrorÚ
BaseCookieÚSimpleCookieÚ z; ú c                   ó   — e Zd Zy)r   N)Ú__name__Ú
__module__Ú__qualname__© ó    ú#/usr/lib/python3.12/http/cookies.pyr   r   ‘   s   „ Ør   r   z!#$%&'*+-.^_`|~:z ()/<=>?@[]{}é   z\%03oú"z\"ú\z\\z[%s]+z[\x00-\x1F\x7F]c                  ó&   — t        d„ | D «       «      S )zhDetects control characters within a value.
    Supports any type, as header values can be any type.
    c              3   óX   K  — | ]"  }t         j                  t        |«      «      –— Œ$ y ­w©N)Ú_control_character_reÚsearchÚstr)Ú.0Úvs     r   ú	<genexpr>z)_has_control_character.<locals>.<genexpr>´   s    è ø€ ÒA¸Ô$×+Ñ+¬C°«F×3ÑAùs   ‚(*)Úany)Úvals    r   Ú_has_control_characterr   °   s   € ô ÑA¸SÔAÓAÐAr   c                 óV   — | �t        | «      r| S d| j                  t        «      z   dz   S )zãQuote a string for use in a cookie header.

    If the string does not need to be double-quoted, then just return the
    string.  Otherwise, surround the string in doublequotes and quote
    (with a \) special characters.
    r   )Ú_is_legal_keyÚ	translateÚ_Translator©r   s    r   Ú_quoter#   ·   s.   € ð €{”m CÔ(Øˆ
à�S—]‘]¤;Ó/Ñ/°#Ñ5Ð5r   z\\(?:([0-3][0-7][0-7])|(.))c                 óF   — | d   rt        t        | d   d«      «      S | d   S )Né   é   é   )ÚchrÚint)Úms    r   Ú_unquote_replacer+   Æ   s'   € Øˆ‚tÜ”3�q˜‘t˜Q“<Ó Ð à�‰tˆr   c                 ót   — | �t        | «      dk  r| S | d   dk7  s| d   dk7  r| S | dd } t        t        | «      S )Nr'   r   r   éÿÿÿÿr%   )ÚlenÚ_unquote_subr+   r"   s    r   Ú_unquoter0   Ì   sO   € ð €{”c˜#“h ’lØˆ
Ø
ˆ1�v�‚}˜˜B™ 3šØˆ
ð ˆa�ˆ)€Cô Ô(¨#Ó.Ð.r   )ÚMonÚTueÚWedÚThuÚFriÚSatÚSun)NÚJanÚFebÚMarÚAprÚMayÚJunÚJulÚAugÚSepÚOctÚNovÚDecc           	      ón   — ddl m}m }  |«       } ||| z   «      \	  }}}}	}
}}}}d||   |||   ||	|
|fz  S )Nr   )ÚgmtimeÚtimez#%s, %02d %3s %4d %02d:%02d:%02d GMT)rF   rE   )ÚfutureÚweekdaynameÚ	monthnamerE   rF   ÚnowÚyearÚmonthÚdayÚhhÚmmÚssÚwdÚyÚzs                  r   Ú_getdaterT   í   sW   € ß!Ù
‹&€CÙ-3°C¸&±LÓ-AÑ*€Dˆ%��b˜"˜b " a¨Ø0Ø˜‰O˜S )¨EÑ"2°D¸"¸bÀ"ÐEñFð Fr   c            
       ó  — e Zd ZdZdddddddd	d
dœ	ZddhZd„ Zed„ «       Zed„ «       Z	ed„ «       Z
d„ Zd!d„Zd„ Zej                  Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd"d„ZeZd„ Zd!d„Zd!d „Z eej<                  «      Zy)#ÚMorselaC  A class to hold ONE (key, value) pair.

    In a cookie, each such pair may have several attributes, so this class is
    used to keep the attributes associated with the appropriate key,value pair.
    This class also includes a coded_value attribute, which is used to hold
    the network representation of the value.
    ÚexpiresÚPathÚCommentÚDomainzMax-AgeÚSecureÚHttpOnlyÚVersionÚSameSite)	rW   ÚpathÚcommentÚdomainúmax-ageÚsecureÚhttponlyÚversionÚsamesiterc   rd   c                 ó~   — d x| _         x| _        | _        | j                  D ]  }t        j                  | |d«       Œ y )Nr   )Ú_keyÚ_valueÚ_coded_valueÚ	_reservedÚdictÚ__setitem__)ÚselfÚkeys     r   Ú__init__zMorsel.__init__  s?   € à6:Ð:ˆŒ	Ð:�D”K $Ô"3ð —>‘>ò 	,ˆCÜ×Ñ˜T 3¨Õ+ñ	,r   c                 ó   — | j                   S r   )rh   ©rn   s    r   ro   z
Morsel.key   s   € à�y‰yÐr   c                 ó   — | j                   S r   )ri   rr   s    r   ÚvaluezMorsel.value$  s   € à�{‰{Ðr   c                 ó   — | j                   S r   )rj   rr   s    r   Úcoded_valuezMorsel.coded_value(  s   € à× Ñ Ð r   c                 óÄ   — |j                  «       }|| j                  vrt        d|›�«      ‚t        ||«      rt        d|›d|›�«      ‚t        j                  | ||«       y ©NzInvalid attribute ú.Control characters are not allowed in cookies r   )Úlowerrk   r   r   rl   rm   )rn   ÚKÚVs      r   rm   zMorsel.__setitem__,  s_   € Ø�G‰G‹IˆØ�D—N‘NÑ"Ý¹Ð;Ó<Ð<Ü! ! QÔ'ÜÐ NÈqÈeÐSTÐUVÐTYÐZÓ[Ð[Ü×Ñ˜˜q !Õ$r   Nc                 óÂ   — |j                  «       }|| j                  vrt        d|›�«      ‚t        ||«      rt        d|›d|›�«      ‚t        j                  | ||«      S rx   )rz   rk   r   r   rl   Ú
setdefault)rn   ro   r   s      r   r~   zMorsel.setdefault4  sV   € Ø�i‰i‹kˆØ�d—n‘nÑ$Ý¹Ð=Ó>Ð>Ü! # sÔ+ÝÒWZÑ\_ÐaÓbÐbÜ�‰˜t S¨#Ó.Ð.r   c                 óü   — t        |t        «      st        S t        j	                  | |«      xrO | j
                  |j
                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r   )Ú
isinstancerV   ÚNotImplementedrl   Ú__eq__ri   rh   rj   ©rn   Úmorsels     r   r‚   zMorsel.__eq__<  sj   € Ü˜&¤&Ô)Ü!Ð!Ü—‘˜D &Ó)ò 9Ø—‘˜vŸ}™}Ñ,ò9à—	‘	˜VŸ[™[Ñ(ò9ð ×!Ñ! V×%8Ñ%8Ñ8ð	:r   c                 ó�   — t        «       }t        j                  || «       |j                  j                  | j                  «       |S r   )rV   rl   ÚupdateÚ__dict__rƒ   s     r   ÚcopyzMorsel.copyF  s2   € Ü“ˆÜ�‰�F˜DÔ!Ø�‰×Ñ˜tŸ}™}Ô-Øˆr   c                 ó  — i }t        |«      j                  «       D ]S  \  }}|j                  «       }|| j                  vrt	        d|›�«      ‚t        ||«      rt	        d|›d|›�«      ‚|||<   ŒU t         j                  | |«       y rx   )rl   Úitemsrz   rk   r   r   r†   )rn   ÚvaluesÚdataro   r   s        r   r†   zMorsel.updateL  s‘   € ØˆÜ˜V›×*Ñ*Ó,ò 	‰HˆC�Ø—)‘)“+ˆCØ˜$Ÿ.™.Ñ(Ý!¹CÐ"AÓBÐBÜ% c¨3Ô/Ü!ð #-Ø-0¨G°1°S°Gð#=ó >ð >àˆD�ŠIð	ô 	�‰�D˜$Õr   c                 ó(   — | j                  |«       | S r   )r†   )rn   r‹   s     r   Ú__ior__zMorsel.__ior__X  s   € Ø�‰�FÔØˆr   c                 ó:   — |j                  «       | j                  v S r   )rz   rk   )rn   r{   s     r   ÚisReservedKeyzMorsel.isReservedKey\  s   € Ø�w‰w‹y˜DŸN™NÐ*Ð*r   c                 óö   — |j                  «       | j                  v rt        d|›�«      ‚t        |«      st        d|›�«      ‚t	        |||«      rt        d|›d|›d|›�«      ‚|| _        || _        || _        y )NzAttempt to set a reserved key zIllegal key ry   r   )rz   rk   r   r   r   rh   ri   rj   )rn   ro   r   Ú	coded_vals       r   Úsetz
Morsel.set_  sw   € Ø�9‰9‹;˜$Ÿ.™.Ñ(ÝÁCÐIÓJÐJÜ˜SÔ!Ý±#Ð7Ó8Ð8Ü! # s¨IÔ6ÝÚLOÒQTÑV_Ðaócð cð ˆŒ	ØˆŒØ%ˆÕr   c                 óJ   — | j                   | j                  | j                  dœS )N)ro   rt   rv   )rh   ri   rj   rr   s    r   Ú__getstate__zMorsel.__getstate__m  s#   € à—9‘9Ø—[‘[Ø×,Ñ,ñ
ð 	
r   c                 óŽ   — |d   }|d   }|d   }t        |||«      rt        d|›d|›d|›�«      ‚|| _        || _        || _        y )Nro   rt   rv   ry   r   )r   r   rh   ri   rj   )rn   Ústatero   rt   rv   s        r   Ú__setstate__zMorsel.__setstate__t  si   € Ø�E‰lˆØ�g‘ˆØ˜MÑ*ˆÜ! # u¨kÔ:ÜÐNØ!$  q¨¨	°°;°/ðCó Dð DàˆŒ	ØˆŒØ'ˆÕr   c                 ó.   — |›d| j                  |«      ›�S )Nr   )ÚOutputString)rn   ÚattrsÚheaders      r   ÚoutputzMorsel.output  s   € Ú  $×"3Ñ"3°EÔ":Ð;Ð;r   c                 óX   — d| j                   j                  ›d| j                  «       ›d�S )Nú<ú: ú>)Ú	__class__r	   rš   rr   s    r   Ú__repr__zMorsel.__repr__„  s    � Ø!Ÿ^™^×4Ó4°d×6GÑ6GÕ6IÐJÐJr   c                 ó    — dd l }| j                  |«      }t        |«      rt        d«      ‚|j                  j                  |dd¬«      }d|›d�S )Nr   ú-Control characters are not allowed in cookiesr   zutf-8)ÚsafeÚencodingzq
        <script type="text/javascript">
        <!-- begin hiding
        document.cookie = decodeURIComponent("z8");
        // end hiding -->
        </script>
        )Úurllib.parserš   r   r   ÚparseÚquote)rn   r›   ÚurllibÚoutput_stringÚoutput_encodeds        r   Ú	js_outputzMorsel.js_output‡  sU   € Ûà×)Ñ)¨%Ó0ˆÜ! -Ô0ÜÐMÓNÐNð  Ÿ™×+Ñ+¨MÀÈWÐ+ÓU‰ò ð ð 	 r   c                 óÆ  — g }|j                   } || j                  ›d| j                  ›�«       |€| j                  }t	        | j                  «       «      }|D ]ü  \  }}|dk(  rŒ||vrŒ|dk(  r4t        |t        «      r$ || j                  |   ›dt        |«      ›�«       ŒJ|dk(  r+t        |t        «      r |d| j                  |   |fz  «       Œz|dk(  r4t        |t        «      r$ || j                  |   ›dt        |«      ›�«       Œ³|| j                  v r"|sŒÄ |t        | j                  |   «      «       Œã || j                  |   ›d|›�«       Œþ t        |«      S )Nú=r   rW   rb   z%s=%dr`   )Úappendro   rv   rk   ÚsortedrŠ   r€   r)   rT   r   r#   Ú_flagsÚ_semispacejoin)rn   r›   Úresultr±   rŠ   ro   rt   s          r   rš   zMorsel.OutputString˜  s=  € ð ˆØ—‘ˆñ 	˜$Ÿ(›( D×$4Ò$4Ð5Ô6ð ˆ=Ø—N‘NˆEÜ�t—z‘z“|Ó$ˆØò 	?‰JˆC�Ø˜Š{ØØ˜%ÑØØ�iÒ¤J¨u´cÔ$:Ù $§.¡.°Ó"5´xÀ´ÐGÕHØ˜	Ò!¤j°¼Ô&<Ù�w $§.¡.°Ñ"5°uÐ!=Ñ=Õ>Ø˜	Ò!¤j°¼Ô&<Ù $§.¡.°Ó"5´v¸e´}ÐEÕFØ˜Ÿ™Ñ#ÚÙœ3˜tŸ~™~¨cÑ2Ó3Õ4á $§.¡.°Ó"5±uÐ=Õ>ð	?ô$ ˜fÓ%Ð%r   r   )NúSet-Cookie:) r	   r
   r   Ú__doc__rk   r³   rp   Úpropertyro   rt   rv   rm   r~   r‚   ÚobjectÚ__ne__rˆ   r†   rŽ   r�   r“   r•   r˜   r�   Ú__str__r£   r®   rš   ÚclassmethodÚtypesÚGenericAliasÚ__class_getitem__r   r   r   rV   rV   õ   så   „ ñð* ØØØØØØØØñ
€Ið ˜
Ð#€Fò,ð ñó ðð ñó ðð ñ!ó ð!ò%ó/ò:ð �]‰]€Fòò
 òò+ò&ò
ò	(ó<ð €GòKó ó"&ñB $ E×$6Ñ$6Ó7Ñr   rV   z,\w\d!#%&'~_`><@,:/\$\*\+\-\.\^\|\)\(\?\}\{\=z\[\]zŒ
    \s*                            # Optional whitespace at start of cookie
    (?P<key>                       # Start of group 'key'
    [a	  ]+?   # Any word of at least one letter
    )                              # End of group 'key'
    (                              # Optional group: there may not be a value.
    \s*=\s*                          # Equal Sign
    (?P<val>                         # Start of group 'val'
    "(?:[^\\"]|\\.)*"                  # Any doublequoted string
    |                                  # or
    \w{3},\s[\w\d\s-]{9,11}\s[\d:]{8}\sGMT  # Special case for "expires" attr
    |                                  # or
    [a-  ]*      # Any word or empty string
    )                                # End of group 'val'
    )?                             # End of optional value group
    \s*                            # Any number of spaces.
    (\s+|;|$)                      # Ending either at space, semicolon, or EOS.
    c                   óZ   — e Zd ZdZd„ Zd„ Zdd„Zd„ Zd„ Zdd„Z	e	Z
d	„ Zdd
„Zd„ Zefd„Zy)r   z'A container class for a set of Morsels.c                 ó
   — ||fS )a
  real_value, coded_value = value_decode(STRING)
        Called prior to setting a cookie's value from the network
        representation.  The VALUE is the value read from HTTP
        header.
        Override this function to modify the behavior of cookies.
        r   ©rn   r   s     r   Úvalue_decodezBaseCookie.value_decodeá  s   € ð �Cˆxˆr   c                 ó    — t        |«      }||fS )zýreal_value, coded_value = value_encode(VALUE)
        Called prior to setting a cookie's value from the dictionary
        representation.  The VALUE is the value being assigned.
        Override this function to modify the behavior of cookies.
        r"   ©rn   r   Ústrvals      r   Úvalue_encodezBaseCookie.value_encodeê  s   € ô �S“ˆØ�vˆ~Ðr   Nc                 ó,   — |r| j                  |«       y y r   )Úload)rn   Úinputs     r   rp   zBaseCookie.__init__ó  s   € ÙØ�I‰I�eÕð r   c                 óŒ   — | j                  |t        «       «      }|j                  |||«       t        j	                  | ||«       y)z+Private method for setting a cookie's valueN)ÚgetrV   r“   rl   rm   )rn   ro   Ú
real_valuerv   ÚMs        r   Ú__setzBaseCookie.__set÷  s6   € à�H‰H�Sœ&›(Ó#ˆØ	�‰ˆc�:˜{Ô+Ü×Ñ˜˜s AÕ&r   c                 ó¢   — t        |t        «      rt        j                  | ||«       y| j	                  |«      \  }}| j                  |||«       y)zDictionary style assignment.N)r€   rV   rl   rm   rÇ   Ú_BaseCookie__set)rn   ro   rt   ÚrvalÚcvals        r   rm   zBaseCookie.__setitem__ý  sB   € ä�eœVÔ$ä×Ñ˜T 3¨Õ.à×*Ñ*¨5Ó1‰JˆD�$Ø�J‰J�s˜D $Õ'r   c                 óà   — g }t        | j                  «       «      }|D ]>  \  }}|j                  ||«      }t        |«      rt	        d«      ‚|j                  |«       Œ@ |j                  |«      S )z"Return a string suitable for HTTP.r¥   )r²   rŠ   r�   r   r   r±   Újoin)	rn   r›   rœ   Úseprµ   rŠ   ro   rt   Úvalue_outputs	            r   r�   zBaseCookie.output  sk   € àˆÜ�t—z‘z“|Ó$ˆØò 	(‰JˆC�Ø Ÿ<™<¨¨vÓ6ˆLÜ% lÔ3Ü!Ð"QÓRÐRØ�M‰M˜,Õ'ð		(ð
 �x‰x˜ÓÐr   c                 óê   — g }t        | j                  «       «      }|D ].  \  }}|j                  |›dt        |j                  «      ›�«       Œ0 d| j
                  j                  ›dt        |«      ›d�S )Nr°   rŸ   r    r¡   )r²   rŠ   r±   Úreprrt   r¢   r	   Ú
_spacejoin)rn   ÚlrŠ   ro   rt   s        r   r£   zBaseCookie.__repr__  s]   € ØˆÜ�t—z‘z“|Ó$ˆØò 	9‰JˆC�Ø�H‰H¢¤T¨%¯+©+Ô%6Ð7Õ8ñ	9à!Ÿ^™^×4Ó4´jÀµmÐDÐDr   c                 ó¢   — g }t        | j                  «       «      }|D ]%  \  }}|j                  |j                  |«      «       Œ' t	        |«      S )z(Return a string suitable for JavaScript.)r²   rŠ   r±   r®   Ú	_nulljoin)rn   r›   rµ   rŠ   ro   rt   s         r   r®   zBaseCookie.js_output  sJ   € àˆÜ�t—z‘z“|Ó$ˆØò 	2‰JˆC�Ø�M‰M˜%Ÿ/™/¨%Ó0Õ1ð	2ä˜Ó Ð r   c                 ó‚   — t        |t        «      r| j                  |«       y|j                  «       D ]
  \  }}|| |<   Œ y)zÝLoad cookies from a string (presumably HTTP_COOKIE) or
        from a dictionary.  Loading cookies from a dictionary 'd'
        is equivalent to calling:
            map(Cookie.__setitem__, d.keys(), d.values())
        N)r€   r   Ú_BaseCookie__parse_stringrŠ   )rn   Úrawdataro   rt   s       r   rÉ   zBaseCookie.load"  sH   € ô �gœsÔ#Ø×Ñ Ô(ð
 	ð &Ÿm™m›oò "‘
��UØ!��S’	ð"àr   c                 ó  — d}t        |«      }g }d}d}d}d|cxk  r|k  �r!n �n|j                  ||«      }	|	s�n|	j                  d«      |	j                  d«      }}
|	j                  d«      }|
d   dk(  r|sŒd|j	                  ||
dd  |f«       n¢|
j                  «       t        j                  v rY|sy |€6|
j                  «       t        j                  v r|j	                  ||
df«       nHy |j	                  ||
t        |«      f«       n)|�&|j	                  ||
| j                  |«      f«       d}ny d|cxk  r|k  r�Œn d }|D ]9  \  }}
}||k(  r
|€J ‚|||
<   Œ||k(  sJ ‚|\  }}| j                  |
||«       | |
   }Œ; y )	Nr   Fr%   r'   ro   r   ú$T)r.   ÚmatchÚgroupÚendr±   rz   rV   rk   r³   r0   rÃ   rÑ   )rn   r   ÚpattÚiÚnÚparsed_itemsÚmorsel_seenÚTYPE_ATTRIBUTEÚTYPE_KEYVALUErã   ro   rt   rÎ   ÚtprÒ   rÓ   s                   r   Ú__parse_stringzBaseCookie.__parse_string0  s§  € ØˆÜ�‹HˆØˆØˆàˆØˆð
 �1Œj�q�jà—J‘J˜s AÓ&ˆEÙáàŸ™ UÓ+¨U¯[©[¸Ó-?�ˆCØ—	‘	˜!“ˆAà�1‰v˜Š}Ù"ð Ø×#Ñ# ^°S¸¸°W¸eÐ$DÕEØ—‘“¤× 0Ñ 0Ñ0Ù"àØ�=Ø—y‘y“{¤f§m¡mÑ3Ø$×+Ñ+¨^¸SÀ$Ð,GÕHð à ×'Ñ'¨¸¼hÀu»oÐ(NÕOØÐ"Ø×#Ñ# ]°C¸×9JÑ9JÈ5Ó9QÐ$RÔSØ"‘ð ðE �1Œj�qŽjðJ ˆØ*ò 	‰NˆB��UØ�^Ò#Ø�}Ð$�}Ø��#’à˜]Ò*Ð*Ð*Ø"‘
��dØ—
‘
˜3  dÔ+Ø˜‘I‘ñ	r   r   )Nr¶   z
)r	   r
   r   r·   rÃ   rÇ   rp   rÑ   rm   r�   r»   r£   r®   rÉ   Ú_CookiePatternrß   r   r   r   r   r   Þ  sD   „ Ù1òòóò'ò(ó	 ð €GòEó!òð (6ô :r   r   c                   ó   — e Zd ZdZd„ Zd„ Zy)r   zþ
    SimpleCookie supports strings as cookie values.  When setting
    the value using the dictionary assignment notation, SimpleCookie
    calls the builtin str() to convert the value to a string.  Values
    received from HTTP are kept as strings.
    c                 ó   — t        |«      |fS r   )r0   rÂ   s     r   rÃ   zSimpleCookie.value_decodet  s   € Ü˜‹}˜cÐ!Ð!r   c                 ó2   — t        |«      }|t        |«      fS r   )r   r#   rÅ   s      r   rÇ   zSimpleCookie.value_encodew  s   € Ü�S“ˆØ”v˜f“~Ð%Ð%r   N)r	   r
   r   r·   rÃ   rÇ   r   r   r   r   r   m  s   „ ñò"ó&r   r   ),r·   ÚreÚstringr½   Ú__all__rÕ   rÝ   r´   rÚ   Ú	Exceptionr   Úascii_lettersÚdigitsÚ_LegalCharsÚ_UnescapedCharsr“   ÚrangeÚmapÚordr!   r†   ÚcompileÚescapeÚ	fullmatchr   r   r   r#   Úsubr/   r+   r0   Ú_weekdaynameÚ
_monthnamerT   rl   rV   Ú_LegalKeyCharsÚ_LegalValueCharsÚASCIIÚVERBOSErï   r   r   )rè   s   0r   ú<module>r     så  ðñNXóz 
Û Û â
7€à�G‰G€	Ø—‘€Ø�X‰X€
ô
	�)ô 	ð" ×"Ñ" V§]¡]Ñ2Ð5GÑG€Ø Ñ/€ñ ™E #›J›©#©c°#°Ó.GÓ*HÑHöJØð �(˜Q‘,‰ò J€à × Ñ ÙˆƒHˆeÙˆƒIˆvðô ð
 �—
‘
˜7 Y R§Y¡Y¨{Ó%;Ñ;Ó<×FÑF€Ø"˜Ÿ
™
Ð#5Ó6Ð òBò
6ð ˆr�z‰zÐ8Ó9×=Ñ=€òò/ò6 A€ò8€
ð  <¸:ó FôD8ˆTô D8ð` B€Ø! GÑ+Ð Ø�—‘ð 	ð ñð		ñ	ð ñðñð" 
�‰�B—J‘JÑ	ó# €ô.L�ô Lô^&�:õ &ùòQJs   ÂF