ó
    ã¾yj
U  ã                   ó(  • S r SSKrSSKrSSKr/ SQrSR
                  rSR
                  rSR
                  r " S S\	5      r
\R                  \R                  -   S	-   r\S
-   r\" \" S5      5      \" \" \\5      5      -
   V s0 s H	  n U SU -  _M     sn r\R)                  \" S5      S\" S5      S05        \R*                  " S\R,                  " \5      -  5      R.                  r\R*                  " S5      rS rS r\R*                  " S5      R8                  rS rS r/ SQr / SQr!S\ \!4S jr" " S S\#5      r$Sr%\%S-   r&\R*                  " S\%-   S -   \&-   S!-   \RN                  \RP                  -  5      r) " S" S#\#5      r* " S$ S%\*5      r+gs  sn f )&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                   ó   • \ rS rSrSrg)r   é‘   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r
   ó    Ú#/usr/lib/python3.13/http/cookies.pyr   r   ‘   s   † Úr   r   z!#$%&'*+-.^_`|~:z ()/<=>?@[]{}é   z\%03oÚ"z\"Ú\z\\z[%s]+z[\x00-\x1F\x7F]c                  ó&   • [        S U  5       5      $ )z`Detects control characters within a value.
Supports any type, as header values can be any type.
c              3   ó^   #   • U  H#  n[         R                  [        U5      5      v •  M%     g 7f©N)Ú_control_character_reÚsearchÚstr)Ú.0Úvs     r   Ú	<genexpr>Ú)_has_control_character.<locals>.<genexpr>´   s#   é € ÐAºS¸Ô$×+Ñ+¬C°«F×3Ð3ºSùs   ‚+-)Úany)Úvals    r   Ú_has_control_characterr!   °   s   € ô ÑA¹SÓAÓAÐAr   c                 ób   • U b  [        U 5      (       a  U $ SU R                  [        5      -   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'   ·   s1   € ð �{”m C×(Ñ(Øˆ
à�S—]‘]¤;Ó/Ñ/°#Ñ5Ð5r   z\\(?:([0-3][0-7][0-7])|(.))c                 óP   • U S   (       a  [        [        U S   S5      5      $ U S   $ )Né   é   é   )ÚchrÚint)Úms    r   Ú_unquote_replacer/   Æ   s'   € Øˆ‡tÜ”3�q˜‘t˜Q“<Ó Ð à�‰tˆr   c                 ó|   • U b  [        U 5      S:  a  U $ U S   S:w  d	  U S   S:w  a  U $ U SS n [        [        U 5      $ )Nr+   r   r   éÿÿÿÿr)   )ÚlenÚ_unquote_subr/   r&   s    r   Ú_unquoter4   Ì   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           	      ó\   • SSK JnJ n  U" 5       nU" XP-   5      u	  pgp‰p«pÍnSX   X‚U   XiX«4-  $ )Nr   )ÚgmtimeÚtimez#%s, %02d %3s %4d %02d:%02d:%02d GMT)rJ   rI   )ÚfutureÚweekdaynameÚ	monthnamerI   rJ   ÚnowÚyearÚmonthÚdayÚhhÚmmÚssÚwdÚyÚzs                  r   Ú_getdaterX   í   sE   € ß!Ù
‹&€CÙ-3°C±LÓ-AÑ*€D�˜" "¨Ø0Ø‰O˜S¨EÑ"2°D¸bÐEñFð Fr   c            
       ó  • \ rS rSrSrSSSSSSS	S
SS.	rSS1rS r\S 5       r	\S 5       r
\S 5       rS rS#S jrS r\R                   rS rS rS rS rS rS rS rS$S jr\rS rS#S  jrS#S! jr\" \R>                  5      r S"r!g)%ÚMorseléõ   a/  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)	r\   ÚpathÚcommentÚdomainúmax-ageÚsecureÚhttponlyÚversionÚsamesiterh   ri   c                 ó€   • S =U l         =U l        U l        U R                   H  n[        R                  XS5        M     g )Nr   )Ú_keyÚ_valueÚ_coded_valueÚ	_reservedÚdictÚ__setitem__)ÚselfÚkeys     r   Ú__init__ÚMorsel.__init__  s8   € à6:Ð:ˆŒ	Ð:�D”K $Ô"3ð —>”>ˆCÜ×Ñ˜T¨Ö+ò "r   c                 ó   • U R                   $ r   )rm   ©rs   s    r   rt   Ú
Morsel.key   s   € à�y‰yÐr   c                 ó   • U R                   $ r   )rn   rx   s    r   ÚvalueÚMorsel.value$  s   € à�{‰{Ðr   c                 ó   • U R                   $ r   )ro   rx   s    r   Úcoded_valueÚMorsel.coded_value(  s   € à× Ñ Ð r   c                 óÒ   • UR                  5       nXR                  ;  a  [        SU< 35      e[        X5      (       a  [        SU< SU< 35      e[        R                  XU5        g ©NzInvalid attribute ú.Control characters are not allowed in cookies r   )Úlowerrp   r   r!   rq   rr   )rs   ÚKÚVs      r   rr   ÚMorsel.__setitem__,  s\   € Ø�G‰G‹IˆØ—N‘NÓ"ÝºÐ;Ó<Ð<Ü! !×'Ñ'ÜÐ NÈqÉeÐSTÐUVÑTYÐZÓ[Ð[Ü×Ñ˜ !Õ$r   Nc                 óÐ   • UR                  5       nXR                  ;  a  [        SU< 35      e[        X5      (       a  [        SU< SU< 35      e[        R                  XU5      $ r�   )rƒ   rp   r   r!   rq   Ú
setdefault)rs   rt   r    s      r   rˆ   ÚMorsel.setdefault4  sS   € Ø�i‰i‹kˆØ—n‘nÓ$ÝºÐ=Ó>Ð>Ü! #×+Ñ+ÝÓWZÒ\_ÐaÓbÐbÜ�‰˜t¨#Ó.Ð.r   c                 ó"  • [        U[        5      (       d  [        $ [        R	                  X5      =(       aY    U R
                  UR
                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r   )Ú
isinstancerZ   ÚNotImplementedrq   Ú__eq__rn   rm   ro   ©rs   Úmorsels     r   r�   ÚMorsel.__eq__<  sk   € Ü˜&¤&×)Ñ)Ü!Ð!Ü—‘˜DÓ)÷ 9Ø—‘˜vŸ}™}Ñ,÷9à—	‘	˜VŸ[™[Ñ(÷9ð ×!Ñ! V×%8Ñ%8Ñ8ð	:r   c                 óŽ   • [        5       n[        R                  X5        UR                  R                  U R                  5        U$ r   )rZ   rq   ÚupdateÚ__dict__rŽ   s     r   ÚcopyÚMorsel.copyF  s0   € Ü“ˆÜ�‰�FÔ!Ø�‰×Ñ˜tŸ}™}Ô-Øˆr   c                 ó   • 0 n[        U5      R                  5        HZ  u  p4UR                  5       nX0R                  ;  a  [	        SU< 35      e[        X45      (       a  [	        SU< SU< 35      eXBU'   M\     [         R                  X5        g r�   )rq   Úitemsrƒ   rp   r   r!   r’   )rs   ÚvaluesÚdatart   r    s        r   r’   ÚMorsel.updateL  s…   € ØˆÜ˜V›×*Ñ*Ö,‰HˆCØ—)‘)“+ˆCØŸ.™.Ó(Ý!ºCÐ"AÓBÐBÜ% c×/Ñ/Ü!ð #-Ø-0©G°1°S±Gð#=ó >ð >à�‹Iñ -ô 	�‰�DÕr   c                 ó(   • U R                  U5        U $ r   )r’   )rs   r˜   s     r   Ú__ior__ÚMorsel.__ior__X  s   € Ø�‰�FÔØˆr   c                 ó<   • UR                  5       U R                  ;   $ r   )rƒ   rp   )rs   r„   s     r   ÚisReservedKeyÚMorsel.isReservedKey\  s   € Ø�w‰w‹y˜DŸN™NÑ*Ð*r   c                 ó  • UR                  5       U R                  ;   a  [        SU< 35      e[        U5      (       d  [        SU< 35      e[	        XU5      (       a  [        SU< SU< SU< 35      eXl        X l        X0l        g )NzAttempt to set a reserved key zIllegal key r‚   r   )rƒ   rp   r   r#   r!   rm   rn   ro   )rs   rt   r    Ú	coded_vals       r   ÚsetÚ
Morsel.set_  su   € Ø�9‰9‹;˜$Ÿ.™.Ó(ÝÂCÐIÓJÐJÜ˜S×!Ñ!Ý²#Ð7Ó8Ð8Ü! #¨I×6Ñ6ÝÛLOÓQTÒV_Ðaócð cð Œ	ØŒØ%Õr   c                 óJ   • U R                   U R                  U R                  S.$ )N)rt   r{   r~   )rm   rn   ro   rx   s    r   Ú__getstate__ÚMorsel.__getstate__m  s#   € à—9‘9Ø—[‘[Ø×,Ñ,ñ
ð 	
r   c                 ó–   • US   nUS   nUS   n[        X#U5      (       a  [        SU< SU< SU< 35      eX l        X0l        X@l        g )Nrt   r{   r~   r‚   r   )r!   r   rm   rn   ro   )rs   Ústatert   r{   r~   s        r   Ú__setstate__ÚMorsel.__setstate__t  sd   € Ø�E‰lˆØ�g‘ˆØ˜MÑ*ˆÜ! #¨k×:Ñ:ÜÐNØ!$¡ q¨©	°°;±/ðCó Dð DàŒ	ØŒØ'Õr   c                 ó2   • U< SU R                  U5      < 3$ )Nr   )ÚOutputString)rs   ÚattrsÚheaders      r   ÚoutputÚMorsel.output  s   € Û  $×"3Ñ"3°EÕ":Ð;Ð;r   c                 ó\   • SU R                   R                  < SU R                  5       < S3$ )NÚ<ú: Ú>)Ú	__class__r   r­   rx   s    r   Ú__repr__ÚMorsel.__repr__„  s    � Ø!Ÿ^™^×4Ô4°d×6GÑ6GÖ6IÐJÐJr   c                 ó¦   • SS K nU R                  U5      n[        U5      (       a  [        S5      eUR                  R                  USSS9nSU< S3$ )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)rs   r®   ÚurllibÚoutput_stringÚoutput_encodeds        r   Ú	js_outputÚMorsel.js_output‡  sX   € Ûà×)Ñ)¨%Ó0ˆÜ! -×0Ñ0ÜÐMÓNÐNð  Ÿ™×+Ñ+¨MÀÈWÐ+ÐU‰ó ð ð 	 r   c                 ó$  • / nUR                   nU" U R                  < SU R                  < 35        Uc  U R                  n[	        U R                  5       5      nU GH&  u  pVUS:X  a  M  XQ;  a  M  US:X  a<  [        U[        5      (       a'  U" U R                  U   < S[        U5      < 35        MW  US:X  a1  [        U[        5      (       a  U" SU R                  U   U4-  5        MŽ  US:X  a<  [        U[        5      (       a'  U" U R                  U   < S[        U5      < 35        MÐ  XPR                  ;   a+  U(       a!  U" [        U R                  U   5      5        GM  GM
  U" U R                  U   < SU< 35        GM)     [        U5      $ )NÚ=r   r\   rg   z%s=%dre   )Úappendrt   r~   rp   Úsortedr—   r‹   r-   rX   r   r'   Ú_flagsÚ_semispacejoin)rs   r®   ÚresultrÇ   r—   rt   r{   s          r   r­   ÚMorsel.OutputString˜  sB  € ð ˆØ—‘ˆñ 	˜$Ÿ(œ( 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   )ro   rm   rn   r   )NúSet-Cookie:)"r   r   r   r   Ú__doc__rp   rÉ   ru   Úpropertyrt   r{   r~   rr   rˆ   r�   ÚobjectÚ__ne__r”   r’   rœ   rŸ   r£   r¦   rª   r°   Ú__str__r·   rÃ   r­   ÚclassmethodÚtypesÚGenericAliasÚ__class_getitem__r   r
   r   r   rZ   rZ   õ   så   † ñð* ØØØØØØØØñ
€Ið ˜
Ð#€Fò,ð ñó ðð ñó ðð ñ!ó ð!ò%ô/ò:ð �]‰]€Fòò
 òò+ò&ò
ò	(ô<ð €GòKô ô"&ñB $ E×$6Ñ$6Ó7Ór   rZ   z,\w\d!#%&'~_`><@,:/\$\*\+\-\.\^\|\)\(\?\}\{\=z\[\]zŒ
    \s*                            # Optional whitespace at start of cookie
    (?P<key>                       # Start of group 'key'
    [ax  ]+?   # 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 double-quoted string
    |                                  # or
    # Special case for "expires" attr
    (\w{3,6}day|\w{3}),\s              # Day of the week or abbreviated day
    [\w\d\s-]{9,11}\s[\d:]{8}\sGMT     # Date and time in specific format
    |                                  # 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                   ój   • \ rS rSrSrS rS rSS jrS rS r	SS	 jr
\
rS
 rSS jrS r\4S jrSrg)r   ià  z'A container class for a set of Morsels.c                 ó   • X4$ )zâ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
   ©rs   r    s     r   Úvalue_decodeÚBaseCookie.value_decodeã  s   € ð ˆxˆr   c                 ó   • [        U5      nX"4$ )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&   ©rs   r    Ústrvals      r   Úvalue_encodeÚBaseCookie.value_encodeì  s   € ô �S“ˆØˆ~Ðr   Nc                 ó6   • U(       a  U R                  U5        g g r   )Úload)rs   Úinputs     r   ru   ÚBaseCookie.__init__õ  s   € ÞØ�I‰I�eÕð r   c                 óˆ   • U R                  U[        5       5      nUR                  XU5        [        R	                  XU5        g)z+Private method for setting a cookie's valueN)ÚgetrZ   r£   rq   rr   )rs   rt   Ú
real_valuer~   ÚMs        r   Ú__setÚBaseCookie.__setù  s2   € à�H‰H�Sœ&›(Ó#ˆØ	�‰ˆc˜{Ô+Ü×Ñ˜ AÕ&r   c                 ó¦   • [        U[        5      (       a  [        R                  XU5        gU R	                  U5      u  p4U R                  XU5        g)zDictionary style assignment.N)r‹   rZ   rq   rr   rß   Ú_BaseCookie__set)rs   rt   r{   ÚrvalÚcvals        r   rr   ÚBaseCookie.__setitem__ÿ  s?   € ä�eœV×$Ñ$ä×Ñ˜T¨Õ.à×*Ñ*¨5Ó1‰JˆDØ�J‰J�s $Õ'r   c                 óê   • / n[        U R                  5       5      nU HB  u  pgUR                  X5      n[        U5      (       a  [	        S5      eUR                  U5        MD     UR                  U5      $ )z"Return a string suitable for HTTP.rº   )rÈ   r—   r°   r!   r   rÇ   Újoin)	rs   r®   r¯   ÚseprË   r—   rt   r{   Úvalue_outputs	            r   r°   ÚBaseCookie.output  se   € àˆÜ�t—z‘z“|Ó$ˆÛ‰JˆCØ Ÿ<™<¨Ó6ˆLÜ% l×3Ñ3Ü!Ð"QÓRÐRØ�M‰M˜,Ö'ñ	  ð
 �x‰x˜ÓÐr   c                 óô   • / n[        U R                  5       5      nU H0  u  p4UR                  U< S[        UR                  5      < 35        M2     SU R
                  R                  < S[        U5      < S3$ )NrÆ   r³   r´   rµ   )rÈ   r—   rÇ   Úreprr{   r¶   r   Ú
_spacejoin)rs   Úlr—   rt   r{   s        r   r·   ÚBaseCookie.__repr__  sV   € ØˆÜ�t—z‘z“|Ó$ˆÛ‰JˆCØ�H‰H£¤T¨%¯+©+Õ%6Ð7Ö8ò  à!Ÿ^™^×4Ô4´jÀ¶mÐDÐDr   c                 ó¤   • / n[        U R                  5       5      nU H%  u  pEUR                  UR                  U5      5        M'     [	        U5      $ )z(Return a string suitable for JavaScript.)rÈ   r—   rÇ   rÃ   Ú	_nulljoin)rs   r®   rË   r—   rt   r{   s         r   rÃ   ÚBaseCookie.js_output  sC   € àˆÜ�t—z‘z“|Ó$ˆÛ‰JˆCØ�M‰M˜%Ÿ/™/¨%Ó0Ö1ñ  ä˜Ó Ð r   c                 óŒ   • [        U[        5      (       a  U R                  U5        gUR                  5        H	  u  p#X0U'   M     g)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—   )rs   Úrawdatart   r{   s       r   râ   ÚBaseCookie.load$  sB   € ô �gœs×#Ñ#Ø×Ñ Ô(ð
 	ð &Ÿm™mžo‘
�Ø!�S“	ñ .àr   c                 ó2  • Sn[        U5      n/ nSnSnSnSUs=::  a  U:  Ga5  O  GO1UR                  X5      n	U	(       d  GOU	R                  S5      U	R                  S5      pºU	R                  S5      nU
S   S:X  a   U(       d  Mp  UR	                  XzSS  U45        OªU
R                  5       [        R                  ;   a_  U(       d  g Uc7  U
R                  5       [        R                  ;   a  UR	                  XzS45        OGg UR	                  Xz[        U5      45        O)Ub%  UR	                  XŠU R                  U5      45        SnOg SUs=::  a	  U:  a  GM/  O  S nU H7  u  pÚnX×:X  a  Uc   eX¼U
'   M  XØ:X  d   eUu  pïU R                  X®U5        X
   nM9     g )	Nr   Fr)   r+   rt   r    Ú$T)r2   ÚmatchÚgroupÚendrÇ   rƒ   rZ   rp   rÉ   r4   rÚ   rì   )rs   r   ÚpattÚiÚnÚparsed_itemsÚmorsel_seenÚTYPE_ATTRIBUTEÚTYPE_KEYVALUEr  rt   r{   rè   Útprí   rî   s                   r   Ú__parse_stringÚBaseCookie.__parse_string2  sŒ  € ØˆÜ�‹HˆØˆØˆàˆØˆð
 �1�j�q�jˆjà—J‘J˜sÓ&ˆEÞáàŸ™ UÓ+¨U¯[©[¸Ó-?�Ø—	‘	˜!“ˆAà�1‰v˜‹}Þ"ñ Ø×#Ñ# ^¸¸°W¸eÐ$DÕEØ—‘“¤× 0Ñ 0Ó0Þ"àØ‘=Ø—y‘y“{¤f§m¡mÓ3Ø$×+Ñ+¨^À$Ð,GÕHð à ×'Ñ'¨¼hÀu»oÐ(NÕOØÑ"Ø×#Ñ# ]¸×9JÑ9JÈ5Ó9QÐ$RÔSØ"‘ð ðE �1�j�q�jˆjðJ ˆÛ*‰NˆB�UØÓ#Ø‘}Ð$�}Ø�#“àÓ*Ð*Ð*Ø"‘
�Ø—
‘
˜3 dÔ+Ø‘I’ò +r   r
   r   )NrÍ   z
)r   r   r   r   rÎ   rÚ   rß   ru   rì   rr   r°   rÒ   r·   rÃ   râ   Ú_CookiePatternrþ   r   r
   r   r   r   r   à  sD   † Ù1òòôò'ò(ô	 ð €GòEô!òð (6÷ :r   r   c                   ó$   • \ rS rSrSrS rS rSrg)r   io  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                 ó   • [        U5      U4$ r   )r4   rÙ   s     r   rÚ   ÚSimpleCookie.value_decodev  s   € Ü˜‹}˜cÐ!Ð!r   c                 ó2   • [        U5      nU[        U5      4$ r   )r   r'   rÝ   s      r   rß   ÚSimpleCookie.value_encodey  s   € Ü�S“ˆØ”v˜f“~Ð%Ð%r   r
   N)r   r   r   r   rÎ   rÚ   rß   r   r
   r   r   r   r   o  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'   Úsubr3   r/   r4   Ú_weekdaynameÚ
_monthnamerX   rq   rZ   Ú_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ÚH�1ð �(˜Q‘,ŠÙHñJ€à × Ñ ÙˆƒHˆeÙˆƒIˆvðô ð
 —
’
˜7 R§Y¢Y¨{Ó%;Ñ;Ó<×FÑF€ØŸ
š
Ð#5Ó6Ð òBò
6ð �zŠzÐ8Ó9×=Ñ=€òò/ò6 A€ò8€
ð  <¸:ô FôD8ˆTô D8ð` B€Ø! GÑ+Ð Ø—’ð 	ð ñð	ñ	ð ñðñð& 
�‰�B—J‘JÑ	ó' €ô2L�ô Lô^&�:õ &ùòUJs   ÂF