
    F/jd                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlmZ d dlmZmZmZ d dlmZmZmZ d dlmZ d dlmZ d dlmZ dd	lmZ dd
lm Z m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z' dZ(ee)df   Z*djV                  Z,djV                  Z-dZ. e       Z/ e0d      Z1 G d de	jd                        Z3 G d de       Z4 G d de       Z5y)    N)defaultdict)IterableIteratorMapping)
BaseCookieMorselSimpleCookieMappingProxyType)Union)URL   ) preserve_morsel_with_coded_value)AbstractCookieJarClearCookiePredicate)is_ip_address)LooseCookiesPathLikeStrOrURL)	CookieJarDummyCookieJarzMorsel[str]z{}/{}z{1}.{0}d   )max-ageexpiresc                   `     e Zd ZU dZ eh d      Zeeeef      ed<   dedede	f fdZ
 xZS )_RestrictedCookieUnpicklera@  A restricted unpickler that only allows cookie-related types.

    This prevents arbitrary code execution when loading pickled cookie data
    from untrusted sources. Only types that are expected in a serialized
    CookieJar are permitted.

    Subclasses :class:`pickle._Unpickler` (the pure-Python implementation)
    rather than :class:`pickle.Unpickler` because the accelerated unpickler
    on some implementations (notably PyPy) does not dispatch through
    :meth:`find_class` overrides.

    See: https://docs.python.org/3/library/pickle.html#restricting-globals
    >   builtinssetr   dictr   tupler   	frozensetcollectionsr   http.cookiesr   r)   r	   _ALLOWED_CLASSESmodulenamereturnc                 |    ||f| j                   vrt        j                  d| d| d      t        |   ||      S )NzForbidden class: .z. CookieJar.load() only allows cookie-related types for security. See https://docs.python.org/3/library/pickle.html#restricting-globals)r+   pickleUnpicklingErrorsuper
find_class)selfr,   r-   	__class__s      O/var/www/html/maxservice/venv/lib/python3.12/site-packages/aiohttp/cookiejar.pyr4   z%_RestrictedCookieUnpickler.find_classL   sU    D>!6!66((#F81TF 3X X 
 w!&$//    )__name__
__module____qualname____doc__r%   r+   r#   str__annotations__typer4   __classcell__r6   s   @r7   r   r   .   sM     4=	
4ic3h0 0 0C 0D 0 0r8   r   c                   l    e Zd ZdZ ej
                  d      Z ej
                  d      Z ej
                  d      Z ej
                  dej                        Z
 ej
                  d      Z eej                  j                  j                  ej                   j"                        j%                               dz
  Z	  ej*                   ej.                  e             edz
  Zddddddededeee   z  dz  dej>                  dz  ddf
 fdZ e!defd       Z"e!defd       Z#e!de$e%e&e&f   e'f   fd       Z(e!de)e%e&e&f      fd       Z*de+ddfdZ,de+ddfdZ-de.e&e.e&e.e&e&ez  e/z  f   f   f   ddfdZ0d7de1dz  ddfdZ2d e&ddfd!Z3d8d"Z4defd#Z5d9d$Z6d%ee%e&e&e&f      ddfd&Z7d'e/d e&d(e&d)e&ddf
d*Z8 e9       fd+e:d,e9ddfd-Z; e9       fd.e9dd/fd0Z<d1e=e&   de=e&   fd2Z>e?d e&d3e&defd4       Z@eAd5e&dedz  fd6       ZB xZCS # e$ r  ej*                  d	      ZY He$ r d
ZY Qw xY w):r   z/Implements cookie storage adhering to RFC 6265.z][\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]*(?P<token>[\x00-\x08\x0A-\x1F\d:a-zA-Z\x7F-\xFF]+)z(\d{1,2}):(\d{1,2}):(\d{1,2})z	(\d{1,2})zG(jan)|(feb)|(mar)|(apr)|(may)|(jun)|(jul)|(aug)|(sep)|(oct)|(nov)|(dec)z	(\d{2,4}))tzinfor   )	i           ;   rG   rH   rH   iFTN)unsafequote_cookietreat_as_secure_originlooprI   rJ   rK   rL   r.   c                   t         |   |       t        t              | _        t        t
              | _        t               | _        || _	        || _
        |g }nt        |t              r|j                         g}nqt        |t              rt        |      j                         g}nF|D cg c];  }t        |t              rt        |      j                         n|j                         = }}|| _        g | _        i | _        y c c}w NrL   )r3   __init__r   r	   _cookiesr!   _morsel_cacher   _host_only_cookies_unsafe_quote_cookie
isinstancer   originr=   _treat_as_secure_origin_expire_heap_expirations)r5   rI   rJ   rK   rL   urlr6   s         r7   rP   zCookieJar.__init__z   s     	d#DOE
  	 9<)!)%'".4&<&C&C&E%F".4&)*@&A&H&H&J%K" 2& &0S%9C!szz|K&" & (>$FH?A&s   -A Dc                     | j                   S N)rT   r5   s    r7   rI   zCookieJar.unsafe   s    ||r8   c                     | j                   S r]   )rU   r^   s    r7   rJ   zCookieJar.quote_cookie   s    !!!r8   c                 ,    t        | j                        S )z&Return the cookies stored in this jar.)r   rQ   r^   s    r7   cookieszCookieJar.cookies   s      ..r8   c                 ,    t        | j                        S )z0Return the host-only cookies stored in this jar.)r%   rS   r^   s    r7   host_only_cookieszCookieJar.host_only_cookies   s     0011r8   	file_pathc                 X   t        j                  |      }i }| j                  j                         D ]  \  \  }}}| d| }i ||<   |j                         D ]  \  }}|j                  |j
                  |j                  d}	|j                  D ]  }
|
t        v r||
   }|s||	|
<    ||f| j                  v rd|	d<   | j                  j                  |||f      x}||	d<   |	||   |<     t        |ddd	 
      5 }t        j                  ||d       ddd       y# 1 sw Y   yxY w)zSave cookies to a file using JSON format.

        :param file_path: Path to file where cookies will be serialized,
            :class:`str` or :class:`pathlib.Path` instance.
        |keyvaluecoded_valueT	host_onlyNexpires_timestampwutf-8c                 0    t        j                  | |d      S )Ni  )osopen)pathflagss     r7   <lambda>z CookieJar.save.<locals>.<lambda>   s    rwwtUE'B r8   )modeencodingopener   )indent)pathlibPathrQ   itemsrh   ri   rj   	_reserved_RELATIVE_EXPIRY_ATTRSrS   rZ   getrq   jsondump)r5   rd   datadomainrr   cookierh   r-   morselmorsel_dataattrattr_valexpfs                 r7   savezCookieJar.save   s^    LL+	DF&*mm&9&9&; 	."NVTFHAdV$CDI & .f!::#\\#)#5#5> #,, 5D55 %d|H,4D)5 D>T%<%<</3K,,,00&$1EFFCS7:K 34"-S	$%.	.4 B	
 	)
 IIdAa(	) 	) 	)s   >D  D)c                    t        j                  |      }	 |j                  dd      5 }t        j                  |      }ddd       | j                         y# 1 sw Y   xY w# t        j                  t        t        f$ rI |j                  d      5 }t        |      j	                         | _
        ddd       Y y# 1 sw Y   Y yxY ww xY w)a  Load cookies from a file.

        Tries to load JSON format first. Falls back to loading legacy
        pickle format (using a restricted unpickler) for backward
        compatibility with existing cookie files.

        Replaces the current jar contents; loaded cookies pass through the
        same acceptance rules as :meth:`update_cookies`.

        :param file_path: Path to file from where cookies will be
            imported, :class:`str` or :class:`pathlib.Path` instance.
        rrn   )ru   rv   Nrb)ru   )rz   r{   rq   r   load_load_json_dataJSONDecodeErrorUnicodeDecodeError
ValueErrorr   rQ   )r5   rd   r   r   s       r7   r   zCookieJar.load   s     LL+		ES7; $qyy|$  &$ $ $$&8*E 	ET* Ea :1 = B B DE E E	Es@   A& A A& A#A& &0CB?5C?C		C	Cr   c                 `   | j                          |j                         D ]  \  }}|j                  dd      \  }}|j                         D ]  \  }}t               }|j	                  |d   |d   |d   d       |j
                  D ]  }	|	|v s|	dvs||	   ||	<    |j                  d      rd|d	<   |rt        j                  d
|      n	t               }
| j                  ||i|
       |j                  d      x}| j                  t        |      |||         | j                          y)z;Replace contents, routing cookies through update_cookies().rf   r   rh   ri   rj   rg   rk    r   https)schemehostrl   N)clearr|   splitr   __setstate__r}   r   r   buildupdate_cookies_expire_cookiefloat_do_expiration)r5   r   compound_keycookie_datar   rr   r-   r   r   r   response_urlr   s               r7   r   zCookieJar._load_json_data   sO    	

)- 	H%L+'--c15LFD%0%6%6%8 H!k&,h ##*51!,W!5'2='A #,, 9D{*t < 0
 (34'8t9 ??;/')F8$>DCIIW6:#%  ##T6NLA&??+>??CL''c
FD$G9H	H> 	r8   	predicatec                 d   || j                   j                          | j                  j                          | j                  j                          | j                  j                          | j
                  j                          y t        j                         }| j                  j                         D cg c]O  \  \  }}}|j                         D ]4  \  }}|||fx}| j
                  v r| j
                  |   |k  s ||      r|6 Q }	}}}}}|	r| j                  |	       y y c c}}}}}w r]   )	rY   r   rQ   rR   rS   rZ   timer|   _delete_cookies)
r5   r   nowr   rr   r   r-   r   rh   to_dels
             r7   r   zCookieJar.clear  s   ##%MM!$$&##))+##%iik +/--*=*=*?	
 	
& &	
 ft,,1B1BB%%c*c1  	
	
 	
   ( 	
s   :AD)r   c                 2      j                   fd       y )Nc                 .    j                  | d         S )Nr   )_is_domain_match)xr   r5   s    r7   rt   z(CookieJar.clear_domain.<locals>.<lambda>-  s    T2261X;G r8   )r   r5   r   s   ``r7   clear_domainzCookieJar.clear_domain,  s    

GHr8   c              #      K   | j                          | j                  j                         D ]  }|j                         E d {     y 7 wr]   )r   rQ   values)r5   vals     r7   __iter__zCookieJar.__iter__/  s@     =='') 	$Czz|##	$#s   AAAAc                 V    t        d | j                  j                         D              S )zReturn number of cookies.

        This function does not iterate self to avoid unnecessary expiration
        checks.
        c              3   N   K   | ]  }t        |j                                 y wr]   )lenr   ).0r   s     r7   	<genexpr>z$CookieJar.__len__.<locals>.<genexpr>:  s     MF3v}}'Ms   #%)sumrQ   r   r^   s    r7   __len__zCookieJar.__len__4  s"     Mdmm6J6J6LMMMr8   c                    t        | j                        x}sy|t        kD  r}|t        | j                        dz  kD  rb| j                  D cg c](  }| j                  j	                  |d         |d   k(  r|* c}| _        t        j                  | j                         t        j                         }g }| j                  rs| j                  d   \  }}||kD  rn[t        j                  | j                         | j                  j	                  |      |k(  r|j                  |       | j                  rs|r| j                  |       yyc c}w )zRemove expired cookies.Nrx   r   r   )r   rY    _MIN_SCHEDULED_COOKIE_EXPIRATIONrZ   r   heapqheapifyr   heappopappendr   )r5   expire_heap_lenentryr   r   when
cookie_keys          r7   r   zCookieJar._do_expiration<  s/   #&t'8'8#999 >>#d&7&7"81"<< "..!$$((q2eAh> !D
 MM$++,iik-/#003D*czMM$++,
   $$Z0D8j)    ( -!s   -E	r   c                    |D ]  \  }}}| j                   j                  ||f       | j                  ||f   j                  |d        | j                  ||f   j                  |d        | j
                  j                  |||fd         y r]   )rS   discardrQ   poprR   rZ   )r5   r   r   rr   r-   s        r7   r   zCookieJar._delete_cookiesg  s    "( 	>FD$##++VTN;MM64.)--dD9~.224>!!64"6=		>r8   r   rr   r-   c                     |||f}| j                   j                  |      |k(  ry t        j                  | j                  ||f       || j                   |<   y r]   )rZ   r   r   heappushrY   )r5   r   r   rr   r-   r   s         r7   r   zCookieJar._expire_cookien  sS    dD)
  ,4t((4*<=(,*%r8   ra   r   c                 t   |j                   }| j                  st        |      ryt        |t              r|j                         }|D ]  \  }}t        |t              st               }|||<   ||   }|d   }|r|d   dk(  rd}|d= |s&|$| j                  j                  ||f       |x}|d<   |r|d   dk(  r
|dd }||d<   |r| j                  ||      s|d   }|r|d   d	k7  r<|j                  }|j                  d	      sd	}nd	|d|j                  d	       z   }||d<   |j                  d	      }|d
   x}	rL	 t        |	      }
t!        t#        j"                         |
z   | j$                        }| j'                  ||||       n4|d   x}r-| j+                  |      x}r| j'                  ||||       nd|d<   ||f}| j,                  |   j/                  |      |k7  s|| j,                  |   |<   | j0                  |   j3                  |d        | j5                          y# t(        $ r d|d
<   Y |w xY w)zUpdate cookies.Nr   rH   r0   r   r   r   rr   /r   r   )raw_hostrT   r   rV   r   r|   r   r	   rS   addr   rr   
startswithrfindrstripintminr   MAX_TIMEr   r   _parse_daterQ   r   rR   r   r   )r5   ra   r   hostnamer-   r   tmpr   rr   max_agedelta_secondsmax_age_expirationr   expire_timerh   s                  r7   r   zCookieJar.update_cookiesv  ss   ((||h 7gw'mmoG# ;	8LD&ff-"n"D	TH%F &*+8$h2 ''++Xt,<=,44)&)s*#)x  5 5fh G&>D47c>#((s+D a$**S/!::D!%v;;s#D ++w++$'LM),TYY[=-H$--)X&''(:FD$O #9---"&"2"27";;;;''VT4H(*F9%4.C}}S!%%d+v5 ,2c"4(""3'++D$7w;	8z 	! " +(*F9%+s   ;A
H&&H76H7request_urlBaseCookie[str]c                 "   t               }| j                  s|S | j                          | j                  s|S t        |      t        ur3t        j                  dt        |       t        d       t	        |      }|j                  xs d}|j                  dv}|rV| j                  rJt	               }t        j                  t              5  |j                         }ddd       || j                  v}d}| j                  |   j                         D ]  }|j                   | j"                  |   v r*| j"                  |   |j                      ||j                   <   H| j%                  |      }|| j"                  |   |j                   <   |||j                   <    t'        |      r| j(                  s|S |f}	n2t+        j,                  t/        |j1                  d            t2              }	t+        j,                  |j4                  j1                  d	      t6              }
t+        j8                  |	|
      }t;        |j4                        }|D ]  }|| j                  vr| j                  |   j=                         D ]  \  }}|d
   }||f| j>                  v r||k7  r!t;        |d         |kD  r3|r|d   r;|| j"                  |   v r| j"                  |   |   ||<   b| j%                  |      }|| j"                  |   |<   |||<     |S # 1 sw Y   +xY w)z8Returns this jar's cookies filtered by their attributes.zQfilter_cookies expects yarl.URL instances only,and will stop working in 4.x, got rx   )
stacklevelr   )r   wssN)r   r   r0   r   r   rr   secure) r   rQ   r   r?   r   warningswarnDeprecationWarningr   r   rX   
contextlibsuppressr   rW   r   rh   rR   _build_morselr   rT   	itertools
accumulatereversedr   _FORMAT_DOMAIN_REVERSEDrr   _FORMAT_PATHproductr   r|   rS   )r5   r   filteredr   is_not_securerequest_originrh   cmrsl_valdomainspathspairspath_lenpr-   r   r   s                    r7   filter_cookieszCookieJar.filter_cookies  s   
 %/L}}O}}OC'MM559+5F4GI"	 k*K''-2#**2BBT99 UN$$Z0 6!,!3!3!56*$2N2NNM s#**, 		'Auu**3//"&"4"4S"9!%%"@ ))!,H-5Ds#AEE*&HQUUO		' "<<&.[G  **,-/FG
 $$[%5%5%;%;C%@,O!!'51{''( 	*A% $a 0 6 6 8 *f)D>T%<%<<8AS vf~&1 VH%5 4--a00%)%7%7%:4%@HTN  --f5.6""1%d+!)+*	*4 y6 6s   
LLr   c                 <   | j                   r)|j                  r|j                  d   dk(  rt        |      S t               }| j                   r#t        j                  |j                        \  }}n|j                  x}}|j                  |j                  ||d       |S )z<Build a morsel for sending, respecting quote_cookie setting.r   "rg   )	rU   rj   r   r   _SIMPLE_COOKIEvalue_encoderi   r   rh   )r5   r   r   ri   rj   s        r7   r   zCookieJar._build_morsel  s    &"4"49K9KA9NRU9U3F;;$h!/!<!<V\\!JE;"(,,.K%
 	FJJ{[\r8   r   c                     || k(  ry|j                  |       sy|dt        |         }|j                  d      syt        |       S )z0Implements domain matching adhering to RFC 6265.TFNr0   )endswithr   r   )r   r   non_matchings      r7   r   zCookieJar._is_domain_match(  sQ     v  (3v;,/$$S) ***r8   date_strc                 X   |syd}d}d}d}dx}x}}d}	d}
d}| j                   j                  |      D ]  }|j                  d      }|s;| j                  j	                  |      }|rd}d |j                         D        \  }}}R|s9| j                  j	                  |      }|rd}t        |j                               }	|s:| j                  j	                  |      }|rd}|j                  J |j                  }
|r| j                  j	                  |      }|sd}t        |j                               } d|cxk  rdk  r	n n|d	z  }nd|cxk  rd
k  rn n|dz  }d||||fv ryd|	cxk  rdk  sy y|dk  s|dkD  s
|dkD  s|dkD  ryt        j                  ||
|	|||dddf	      S )z4Implements date string parsing adhering to RFC 6265.NFr   tokenTc              3   2   K   | ]  }t        |        y wr]   )r   )r   ss     r7   r   z(CookieJar._parse_date.<locals>.<genexpr>P  s     +PqCF+Ps   F   c   il  E   i  r   rE   iA  rF   rG   rH   )DATE_TOKENS_REfinditergroupDATE_HMS_TIME_REmatchgroupsDATE_DAY_OF_MONTH_REr   DATE_MONTH_RE	lastindexDATE_YEAR_REcalendartimegm)clsr   
found_time	found_dayfound_month
found_yearhourminuteseconddaymonthyeartoken_matchr  
time_match	day_matchmonth_match
year_matchs                     r7   r   zCookieJar._parse_date8  s    
	
!"""v--66x@ 	3K%%g.E 1177>
!%J+PJ<M<M<O+P(D&&44::5A	 $Iioo/0C!//55e<"&K&00<<<'11E --33E:
!%Jz//12D=	3@ DLD$_"_DLDYZDDC~2~ $;$)v{frkeS$BPRSTTr8   r]   r.   zIterator[Morsel[str]])r.   N)Dr9   r:   r;   r<   recompiler  r
  r  Ir  r  r   datetimemaxreplacetimezoneutc	timestampr   r  r  r   gmtimeOSErrorOverflowErrorSUB_MAX_TIMEboolr   listasyncioAbstractEventLooprP   propertyrI   rJ   r   r#   r=   r	   ra   r%   rc   r   r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   staticmethodr   classmethodr   r@   rA   s   @r7   r   r   V   s   9RZZ	>N
 "rzz"BC%2::l3BJJQ
M
 2::l+L
 	H!!))1B1B1F1F)GQQSTWXX H-. a<L
 !CG15B B 	B
 !)4> 9D @B ''$.B 
BB    "d " " /)%S/<*GH / / 29U38_#= 2 2()h ()4 ()TEh E4 E0$d3S#*u2D-D(E#EFFG$	$L)3d: )d ).I3 I4 I$
N N))V>d5c3+?&@ >T >-5 -# -S - -PT - IL Hl H# HRV HT 14 V# V:K VpF3K F3K   + + + + + =U3 =U3: =U =US  K #8??#IJ s   ?"H H3)H32H3r   c                   6    e Zd ZdZdddej
                  dz  ddf fdZddZdefdZ	e
defd	       Ze
defd
       Ze
deeeef   ef   fd       Ze
deeeef      fd       Zddedz  ddfdZdeddfdZ e       fdededdfdZdeddfdZ xZS )r   zxImplements a dummy cookie storage.

    It can be used with the ClientSession when no cookie processing is needed.

    NrO   rL   r.   c                &    t         |   |       y rN   )r3   rP   )r5   rL   r6   s     r7   rP   zDummyCookieJar.__init__  s    d#r8   c              #      K   y wr]    r^   s    r7   r   zDummyCookieJar.__iter__  s	     s   c                      y)Nr   r;  r^   s    r7   r   zDummyCookieJar.__len__  s    r8   c                      y)NFr;  r^   s    r7   rI   zDummyCookieJar.unsafe  s    r8   c                      y)NTr;  r^   s    r7   rJ   zDummyCookieJar.quote_cookie  s    r8   c                     t        i       S )zReturn an empty mapping.r
   r^   s    r7   ra   zDummyCookieJar.cookies  s      ##r8   c                     t               S )zReturn an empty frozenset.)r%   r^   s    r7   rc   z DummyCookieJar.host_only_cookies  s     {r8   r   c                      y r]   r;  )r5   r   s     r7   r   zDummyCookieJar.clear      r8   r   c                      y r]   r;  r   s     r7   r   zDummyCookieJar.clear_domain  rB  r8   ra   r   c                      y r]   r;  )r5   ra   r   s      r7   r   zDummyCookieJar.update_cookies  rB  r8   r   r   c                     t               S r]   )r	   )r5   r   s     r7   r   zDummyCookieJar.filter_cookies  s
    ~r8   r#  r]   )r9   r:   r;   r<   r3  r4  rP   r   r   r   r5  r1  rI   rJ   r   r#   r=   r	   ra   r%   rc   r   r   r   r   r   r   r   r@   rA   s   @r7   r   r   y  s.    DH $ 9 9D @ $D $     d   $)%S/<*GH $ $ 9U38_#=  3d: d 3 4  IL l # RV # 2C r8   r   )6r3  r  r   r'  r   r   r   rp   rz   r1   r$  r   r   r'   r   collections.abcr   r   r   http.cookiesr   r   r	   typesr   typingr   yarlr   _cookie_helpersr   abcr   r   helpersr   typedefsr   r   r   __all__r=   
CookieItemformatr   r   r   r   r%   r~   
_Unpicklerr   r   r   r;  r8   r7   <module>rS     s           	   	   # 7 7 9 9 "   = 8 " 6 6
) 3%&
 ~~#** 
 $'   ##9: %0!2!2 %0P`U! `UF-& -r8   