<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

],                @   s  d  d d d d d d d g 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 y d d	 l Z	 Wn e
 k
 r d d	 l Z	 Yn Xd d	 l Z d d
 l m Z d Z d	 a d d   Z e e j j  Z d Z d d   Z d Z d d   Z d d d d d d d g Z d d d d d d  d! d" d# d$ d% d& g Z g  Z x! e D] Z e j e j     qSWd	 d' d(  Z! d	 d) d*  Z" d+ d	 d, d	 d- d	 d. d	 i Z# e j$ d/ e j%  Z& d0 d1   Z' d2 d3   Z( e j$ d4 e j%  Z) e j$ d5 e j* e j% B Z+ e j$ d6 e j, e j% B Z- d7 d8   Z. e j$ d9 e j, e j% B Z/ d: d;   Z0 d< d=   Z1 e j$ d>  Z2 e j$ d?  Z3 e j$ d@  Z4 e j$ dA  Z5 dB dC   Z6 e j$ dD  Z7 dE dF   Z8 dG dH   Z9 dI dJ   Z: e j$ dK e j%  Z; dL dM   Z< dN dO   Z= dP dQ   Z> dR dS   Z? e j$ dT e j%  Z@ dU dV   ZA dW dX   ZB dY dZ   ZC d[ d\   ZD d] ZE e j$ d^  ZF d_ d`   ZG da db   ZH dc dd   ZI de df   ZJ Gdg d    d   ZK Gdh d   d  ZL Gdi d   d eL  ZM dj dk   ZN dl dm   ZO Gdn do   do  ZP Gdp d   d  ZQ Gdq d   d eR  ZS Gdr d   d eQ  ZT ds dt   ZU Gdu d   d eT  ZV Gdv d   d eT  ZW d	 S)wCookie	CookieJarCookiePolicyDefaultCookiePolicyFileCookieJarLWPCookieJar	LoadErrorMozillaCookieJar    N)timegmFc              G   s8   t  s
 d  St s+ d d  l } | j d  a t j  |    S)Nr	   zhttp.cookiejar)debugloggerlogging	getLogger)argsr    r   ./opt/alt/python35/lib64/python3.5/cookiejar.py_debug.   s    r   zQa filename was not supplied (nor was the CookieJar instance initialised with one)c              C   sg   d d  l  }  d d  l } d d  l } |  j   } | j d  |  | j   } | j d | d d d  S)Nr	   zhttp.cookiejar bug!
%s
stacklevel   )iowarnings	tracebackStringIO	print_excgetvaluewarn)r   r   r   fmsgr   r   r   _warn_unhandled_exception<   s
    $r   i  c             C   s   |  d  d  \ } } } } } } | t  k r d | k oE d k n r d | k oa d k n r d | k o} d k n r d | k o d k n r d | k o d k n r t |   Sd  Sd  S)	N            r	      ;   =   )
EPOCH_YEARr
   )ttyearmonthZmdayhourminsecr   r   r   _timegmK   s
    "DT
r-   ZMonZTueZWedZThuZFriZSatZSunZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecc             C   s\   |  d  k r t  j  j   } n t  j  j |   } d | j | j | j | j | j | j f S)Nz%04d-%02d-%02d %02d:%02d:%02dZ)	datetimeutcnowutcfromtimestampr(   r)   dayr*   minutesecond)tdtr   r   r   	time2isozY   s
    r6   c             C   sq   |  d  k r t  j  j   } n t  j  j |   } d t | j   | j t | j d | j | j	 | j
 | j f S)Nz#%s, %02d-%s-%04d %02d:%02d:%02d GMTr    )r.   r/   r0   DAYSZweekdayr1   MONTHSr)   r(   r*   r2   r3   )r4   r5   r   r   r   time2netscapel   s    !r9   ZGMTUTCZUTZz^([-+])?(\d\d?):?(\d\d)?$c             C   s   d  } |  t  k r d } nv t j |   } | r d t | j d   } | j d  ru | d t | j d   } | j d  d k r | } | S)Nr	   i  r      <   r    -)	UTC_ZONESTIMEZONE_REsearchintgroup)tzoffsetmr   r   r   offset_from_tz_string   s    	rG   c             C   s   t  |  } | t j k r d  Sy t j | j    d } Wnd t k
 r y t  |  } Wn t k
 rt d  SYn Xd | k o d k n r | } n d  SYn X| d  k r d } | d  k r d } | d  k r d } t  |   }  t  |  } t  |  } t  |  } | d k  rt j t j    d } | d }	 | }
 | | |	 } |	 |
 }	 t	 |	  d k r|	 d k r| d } n
 | d } t
 | | |  | | | | f  } | d  k	 r| d  k rd } | j   } t |  } | d  k rd  S| | } | S)Nr    r!   r	   i  d   2   r:   )rB   r.   ZMAXYEARMONTHS_LOWERindexlower
ValueErrortime	localtimeabsr-   upperrG   )r1   monyrhrr+   r,   rD   ZimonZcur_yrrF   tmpr4   rE   r   r   r   	_str2time   sV    			   

 
!
rV   zV^[SMTWF][a-z][a-z], (\d\d) ([JFMASOND][a-z][a-z]) (\d\d\d\d) (\d\d):(\d\d):(\d\d) GMT$z+^(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)[a-z]*,?\s*a  ^
    (\d\d?)            # day
       (?:\s+|[-\/])
    (\w+)              # month
        (?:\s+|[-\/])
    (\d+)              # year
    (?:
          (?:\s+|:)    # separator before clock
       (\d\d?):(\d\d)  # hour:min
       (?::(\d\d))?    # optional seconds
    )?                 # optional clock
       \s*
    ([-+]?\d{2,4}|(?![APap][Mm]\b)[A-Za-z]+)? # timezone
       \s*
    (?:\(\w+\))?       # ASCII representation of timezone in parens.
       \s*$c             C   s4  t  j |   } | r | j   } t j | d j    d } t | d  | t | d  t | d  t | d  t | d  f } t |  S|  j	   }  t
 j d |  d  }  d  g d \ } } } } } }	 }
 t j |   } | d  k	 r| j   \ } } } } } }	 }
 n d  St | | | | | |	 |
  S)	Nr    r   r	   r<             )STRICT_DATE_RErA   groupsrJ   rK   rL   rB   floatr-   lstrip
WEEKDAY_REsubLOOSE_HTTP_DATE_RErV   )textrF   grR   r'   r1   rS   rT   r+   r,   rD   r   r   r   	http2time   s    -
"$rd   a  ^
    (\d{4})              # year
       [-\/]?
    (\d\d?)              # numerical month
       [-\/]?
    (\d\d?)              # day
   (?:
         (?:\s+|[-:Tt])  # separator before clock
      (\d\d?):?(\d\d)    # hour:min
      (?::?(\d\d(?:\.\d*)?))?  # optional seconds (and fractional)
   )?                    # optional clock
      \s*
   ([-+]?\d\d?:?(:?\d\d)?
    |Z|z)?               # timezone  (Z is "zero meridian", i.e. GMT)
      \s*$c       
      C   s   |  j    }  d  g d \ } } } } } } } t j |   } | d  k	 rp | j   \ } } } } } } } }	 n d  St | | | | | | |  S)NrZ   )r^   ISO_DATE_RErA   r\   rV   )
rb   r1   rR   rS   rT   r+   r,   rD   rF   _r   r   r   iso2time'  s    "'rg   c             C   s7   |  j  d  \ } } |  j d  |  |  j | d   S)Nr	   )spanstring)matchstartendr   r   r   	unmatchedH  s    rm   z^\s*([^=\s;,]+)z&^\s*=\s*\"([^\"\\]*(?:\\.[^\"\\]*)*)\"z^\s*=\s*([^\s;,]*)z\\(.)c       
      C   s  g  } xr|  D]j} | } g  } xB| rct  j |  } | r t |  } | j d  } t j |  } | r t |  } | j d  } t j d |  } nE t j |  } | r t |  } | j d  } | j   } n d  } | j	 | | f  q" | j
   j d  r?| j
   d d   } | r6| j	 |  g  } q" t j d d |  \ } }	 | } q" W| r | j	 |  q W| S)Nr    z\1,z^[=\s;]*rY   )HEADER_TOKEN_RErA   rm   rC   HEADER_QUOTED_VALUE_REHEADER_ESCAPE_REr`   HEADER_VALUE_RErstripappendr^   
startswithresubn)
Zheader_valuesresultrb   Z	orig_textpairsrF   namevalueZnon_junkZnr_junk_charsr   r   r   split_header_wordsQ  s>    .	 	
 r|   z([\"\\])c             C   s   g  } x |  D] } g  } xk | D]c \ } } | d  k	 rv t  j d |  sf t j d |  } d | } d | | f } | j |  q  W| r | j d j |   q Wd j |  S)Nz^\w+$z\\\1z"%s"z%s=%sz; z, )rv   rA   HEADER_JOIN_ESCAPE_REr`   rt   join)Zlistsheadersry   attrkvr   r   r   join_header_words  s    
 r   c             C   sB   |  j  d  r |  d d   }  |  j d  r> |  d  d  }  |  S)N"r    )ru   endswith)rb   r   r   r   strip_quotes  s
    r   c             C   sn  d } g  } x[|  D]S} g  } d } xt  | j d	   D]\ } } | j   } | j d
  \ } }	 }
 | j   } | s | d k r; Pn q; |	 r |
 j   n d  }
 | d k r)| j   } | | k r | } | d k r |
 d  k	 r t |
  }
 d } n* | d k r)|
 d  k	 r)t t |
   }
 | j | |
 f  q; W| r | sY| j d  | j |  q W| S)Nexpiresdomainpathsecureversionportmax-ageF;=r	   T0)r   r   r   r   r   r   r   )r   r   )	enumeratesplitstrip	partitionrL   r   rd   rt   )Z
ns_headersZknown_attrsrx   Z	ns_headerry   version_setiiZparamkeysepvallcr   r   r   parse_ns_headers  s@     "	r   z\.\d+$c             C   sK   t  j |   r d S|  d k r# d S|  d d k sC |  d d k rG d Sd S)NFrY   r	   .r    Tr   )IPV4_RErA   )rb   r   r   r   is_HDN  s     r   c             C   s   |  j    }  | j    } |  | k r( d St |   s8 d S|  j |  } | d k s_ | d k rc d S| j d  sv d St | d d    s d Sd S)NTFr    r	   r   r   )rL   r   rfindru   )ABir   r   r   domain_match  s    r   c             C   s   t  j |   r d Sd S)NFT)r   rA   )rb   r   r   r   liberal_is_HDNB  s    r   c             C   s   |  j    }  | j    } t |   o- t |  sD |  | k r@ d Sd S| j d  } | rl |  j |  rl d S| r |  | k r d Sd S)NTFr   )rL   r   ru   r   )r   r   initial_dotr   r   r   user_domain_matchL  s    r   z:\d+$c             C   s_   |  j    } t j j |  d } | d k r@ |  j d d  } t j d | d  } | j   S)Nr    rY   ZHost)get_full_urlurllibparseurlparseZ
get_headercut_port_rer`   rL   )requesturlhostr   r   r   request_hosta  s    r   c             C   sI   t  |   } } | j d  d k r? t j |  r? | d } | | f S)Nr   r    z.localr   )r   findr   rA   )r   erhnreq_hostr   r   r   eff_request_hostq  s    %
r   c             C   sJ   |  j    } t j j |  } t | j  } | j d  sF d | } | S)N/)r   r   r   Zurlsplitescape_pathr   ru   )r   r   partsr   r   r   r   request_path|  s    
r   c             C   sy   |  j  } | j d  } | d k ro | | d d   } y t |  Wqu t k
 rk t d |  d  SYqu Xn t } | S)N:r	   r    znonnumeric port: '%s')r   r   rB   rM   r   DEFAULT_HTTP_PORT)r   r   r   r   r   r   r   request_port  s    	r   z%/;:@&=+$,!~*'()z%([0-9a-fA-F][0-9a-fA-F])c             C   s   d |  j  d  j   S)Nz%%%sr    )rC   rQ   )rj   r   r   r   uppercase_escaped_char  s    r   c             C   s+   t  j j |  t  }  t j t |   }  |  S)N)r   r   quoteHTTP_PATH_SAFEESCAPED_CHAR_REr`   r   )r   r   r   r   r     s    
r   c             C   sn   |  j  d  } | d k rj |  | d d   } | j  d  } t |   rj | d k sb | d k rj d | S|  S)Nr   r	   r    local)r   r   )hr   br   r   r   reach  s    $r   c             C   s0   t  |   } t | t |  j   s( d Sd Sd  S)NTF)r   r   r   Zorigin_req_host)r   r   r   r   r   is_third_party  s    
r   c               @   sm   e  Z d  Z d d d  Z d d   Z d d d  Z d	 d
   Z d d d  Z d d   Z d d   Z	 d S)r   Fc             C   s  | d  k	 r t  |  } | d  k	 r6 t  t |   } | d  k rZ | d k rZ t d   | |  _ | |  _ | |  _ | |  _ | |  _ | j   |  _	 | |  _
 | |  _ |	 |  _ |
 |  _ | |  _ | |  _ | |  _ | |  _ | |  _ | |  _ t j |  |  _ d  S)NTz-if port is None, port_specified must be false)rB   r]   rM   r   rz   r{   r   port_specifiedrL   r   domain_specifieddomain_initial_dotr   path_specifiedr   r   discardcommentcomment_urlrfc2109copy_rest)selfr   rz   r{   r   r   r   r   r   r   r   r   r   r   r   r   restr   r   r   r   __init__  s.      															zCookie.__init__c             C   s   | |  j  k S)N)r   )r   rz   r   r   r   has_nonstandard_attr  s    zCookie.has_nonstandard_attrNc             C   s   |  j  j | |  S)N)r   get)r   rz   defaultr   r   r   get_nonstandard_attr  s    zCookie.get_nonstandard_attrc             C   s   | |  j  | <d  S)N)r   )r   rz   r{   r   r   r   set_nonstandard_attr  s    zCookie.set_nonstandard_attrc             C   s>   | d  k r t  j    } |  j d  k	 r: |  j | k r: d Sd S)NTF)rN   r   )r   nowr   r   r   
is_expired  s
     zCookie.is_expiredc             C   sx   |  j  d  k r d } n d |  j  } |  j | |  j } |  j d  k	 ra d |  j |  j f } n	 |  j } d | | f S)NrY   r   z%s=%sz<Cookie %s for %s>)r   r   r   r{   rz   )r   plimitZ	namevaluer   r   r   __str__%  s     		zCookie.__str__c             C   s   g  } x: d D]2 } t  |  |  } | j d | t |  f  q W| j d t |  j   | j d t |  j   d |  j j d j |  f S)Nr   rz   r{   r   r   r   r   r   r   r   r   r   r   r   r   z%s=%szrest=%sz
rfc2109=%sz%s(%s)z, )r   rz   r{   r   r   r   r   r   r   r   r   r   r   r   r   )getattrrt   reprr   r   	__class____name__r~   )r   r   rz   r   r   r   r   __repr__/  s       
!zCookie.__repr__)
r   
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r     s    
c               @   s@   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 S)
r   c             C   s   t     d  S)N)NotImplementedError)r   cookier   r   r   r   set_okG  s    zCookiePolicy.set_okc             C   s   t     d  S)N)r   )r   r   r   r   r   r   	return_okP  s    zCookiePolicy.return_okc             C   s   d S)NTr   )r   r   r   r   r   r   domain_return_okT  s    zCookiePolicy.domain_return_okc             C   s   d S)NTr   )r   r   r   r   r   r   path_return_okY  s    zCookiePolicy.path_return_okN)r   r   r   r   r   r   r   r   r   r   r   r   >  s   		c               @   sj  e  Z d  Z d Z d Z d Z d Z e e BZ d d d d d d d d d e d d d d	  Z d
 d   Z	 d d   Z
 d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d  d!   Z d" d#   Z d$ d%   Z d& d'   Z d( d)   Z d* d+   Z d, d-   Z d. d/   Z d0 d1   Z d2 d3   Z d4 d5   Z d S)6r   r    r   rW   r	   NTFc             C   s   | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ |	 |  _ |
 |  _ | |  _ | |  _	 | d  k	 rx t
 |  |  _ n	 f  |  _ | d  k	 r t
 |  } | |  _ d  S)N)netscaperfc2965rfc2109_as_netscapehide_cookie2strict_domainstrict_rfc2965_unverifiablestrict_ns_unverifiablestrict_ns_domainstrict_ns_set_initial_dollarstrict_ns_set_pathtuple_blocked_domains_allowed_domains)r   blocked_domainsallowed_domainsr   r   r   r   r   r   r   r   r   r   r   r   r   r   i  s     											zDefaultCookiePolicy.__init__c             C   s   |  j  S)N)r   )r   r   r   r   r     s    z#DefaultCookiePolicy.blocked_domainsc             C   s   t  |  |  _ d  S)N)r   r   )r   r   r   r   r   set_blocked_domains  s    z'DefaultCookiePolicy.set_blocked_domainsc             C   s+   x$ |  j  D] } t | |  r
 d Sq
 Wd S)NTF)r   r   )r   r   Zblocked_domainr   r   r   
is_blocked  s    zDefaultCookiePolicy.is_blockedc             C   s   |  j  S)N)r   )r   r   r   r   r     s    z#DefaultCookiePolicy.allowed_domainsc             C   s%   | d  k	 r t  |  } | |  _ d  S)N)r   r   )r   r   r   r   r   set_allowed_domains  s    z'DefaultCookiePolicy.set_allowed_domainsc             C   s>   |  j  d  k r d Sx$ |  j  D] } t | |  r d Sq Wd S)NFT)r   r   )r   r   Zallowed_domainr   r   r   is_not_allowed  s    z"DefaultCookiePolicy.is_not_allowedc             C   sW   t  d | j | j  x: d D]2 } d | } t |  |  } | | |  s d	 Sq Wd
 S)Nz - checking cookie %s=%sr   verifiabilityrz   r   r   r   Zset_ok_FT)r   r   rz   r   r   r   )r   rz   r{   r   )r   r   r   nfn_namefnr   r   r   r     s    
zDefaultCookiePolicy.set_okc             C   s{   | j  d  k r) t d | j | j  d S| j  d k rP |  j rP t d  d S| j  d k rw |  j rw t d  d Sd S)Nz0   Set-Cookie2 without version attribute (%s=%s)Fr	   z$   RFC 2965 cookies are switched offz$   Netscape cookies are switched offT)r   r   rz   r{   r   r   )r   r   r   r   r   r   set_ok_version  s    

z"DefaultCookiePolicy.set_ok_versionc             C   se   | j  ra t |  ra | j d k r; |  j r; t d  d S| j d k ra |  j ra t d  d Sd S)Nr	   z>   third-party RFC 2965 cookie during unverifiable transactionFz>   third-party Netscape cookie during unverifiable transactionT)unverifiabler   r   r   r   r   )r   r   r   r   r   r   set_ok_verifiability  s    

z(DefaultCookiePolicy.set_ok_verifiabilityc             C   sB   | j  d k r> |  j r> | j j d  r> t d | j  d Sd S)Nr	   $z'   illegal name (starts with '$'): '%s'FT)r   r   rz   ru   r   )r   r   r   r   r   r   set_ok_name  s
    zDefaultCookiePolicy.set_ok_namec             C   sm   | j  ri t |  } | j d k s< | j d k ri |  j ri |  j | j |  ri t d | j |  d Sd S)Nr	   z7   path attribute %s is not a prefix of request path %sFT)r   r   r   r   r   r   r   )r   r   r   req_pathr   r   r   set_ok_path  s    	zDefaultCookiePolicy.set_ok_pathc             C   s  |  j  | j  r& t d | j  d S|  j | j  rL t d | j  d S| j rt |  \ } } | j } |  j r| j d  d k r| j d  } | j d d |  } | d k r| | d d   } | | d |  }	 |	 j	   d$ k rt
 |  d k rt d |  d S| j d  r=| d d   }
 n | }
 |
 j d  d k } | r|| d k r|t d |  d S| j d k r| j |  r| j d  rd | j |  rt d  | |  d S| j d k s|  j |  j @rt | |  st d! | |  d S| j d k s4|  j |  j @r| d  t
 |   } | j d  d k rt j |  rt d" | |  d Sd# S)%Nz"   domain %s is in user block-listFz&   domain %s is not in user allow-listr   r   r	   r    coaccomeduorgnetgovmilrB   aerobizcatcoopinfojobsmobimuseumrz   protraveleuz&   country-code second level domain %sz.localz/   non-local domain %s contains no embedded dotzO   effective request-host %s (even with added initial dot) does not end with %sz5   effective request-host %s does not domain-match %sz.   host prefix %s for domain %s contains a dotT)r  r  r	  r
  r  r  r  r  rB   r  r  r  r  r  r  r  r  rz   r  r  r  )r   r   r   r   r   r   r   countr   rL   lenru   r   r   r   r   DomainRFC2965Matchr   DomainStrictNoDotsr   rA   )r   r   r   r   r   r   r   jZtldZsldZundotted_domainZembedded_dotsZhost_prefixr   r   r   set_ok_domain  sf    			  


z!DefaultCookiePolicy.set_ok_domainc             C   s   | j  r t |  } | d  k r* d } n t |  } xr | j j d  D]G } y t |  Wn# t k
 r t d |  d SYn X| | k rI PqI Wt d | | j  d Sd S)N80rn   z   bad port %s (not numeric)Fz$   request port (%s) not found in %sT)r   r   strr   r   rB   rM   r   )r   r   r   req_portr   r   r   r   set_ok_port%  s"    			zDefaultCookiePolicy.set_ok_portc             C   sW   t  d | j | j  x: d D]2 } d | } t |  |  } | | |  s d	 Sq Wd
 S)Nz - checking cookie %s=%sr   r   r   r   r   r   Z
return_ok_FT)r   r   r   r   r   r   )r   rz   r{   r   )r   r   r   r   r   r   r   r   r   r   :  s    	
zDefaultCookiePolicy.return_okc             C   sR   | j  d k r' |  j r' t d  d S| j  d k rN |  j rN t d  d Sd S)Nr	   z$   RFC 2965 cookies are switched offFz$   Netscape cookies are switched offT)r   r   r   r   )r   r   r   r   r   r   return_ok_versionL  s    

z%DefaultCookiePolicy.return_ok_versionc             C   se   | j  ra t |  ra | j d k r; |  j r; t d  d S| j d k ra |  j ra t d  d Sd S)Nr	   z>   third-party RFC 2965 cookie during unverifiable transactionFz>   third-party Netscape cookie during unverifiable transactionT)r  r   r   r   r   r   )r   r   r   r   r   r   return_ok_verifiabilityU  s    

z+DefaultCookiePolicy.return_ok_verifiabilityc             C   s*   | j  r& | j d k r& t d  d Sd S)NZhttpsz(   secure cookie with non-secure requestFT)r   typer   )r   r   r   r   r   r   return_ok_securea  s    
z$DefaultCookiePolicy.return_ok_securec             C   s$   | j  |  j  r  t d  d Sd S)Nz   cookie expiredFT)r   _nowr   )r   r   r   r   r   r   return_ok_expiresg  s    
z%DefaultCookiePolicy.return_ok_expiresc             C   sl   | j  rh t |  } | d  k r' d } x> | j  j d  D] } | | k r: Pq: Wt d | | j   d Sd S)Nr   rn   z0   request port %s does not match cookie port %sFT)r   r   r   r   )r   r   r   r"  r   r   r   r   return_ok_portm  s    	z"DefaultCookiePolicy.return_ok_portc             C   s   t  |  \ } } | j } | r> | j d  r> d | } n | } | j d k r |  j |  j @r | j r | | k r t d  d S| j d k r t | |  r t d | |  d S| j d k r d | j	 |  r t d | |  d Sd S)Nr   r	   zQ   cookie with unspecified domain does not string-compare equal to request domainFzQ   effective request-host name %s does not domain-match RFC 2965 cookie domain %sz;   request-host %s does not match Netscape cookie domain %sT)
r   r   ru   r   r   DomainStrictNonDomainr   r   r   r   )r   r   r   r   r   r   	dotdomainr   r   r   return_ok_domain{  s&    	

#
z$DefaultCookiePolicy.return_ok_domainc             C   s   t  |  \ } } | j d  s+ d | } | j d  sD d | } | rg | j d  rg d | } n | } | j |  p | j |  s d S|  j |  r t d |  d S|  j |  r t d |  d Sd S)Nr   Fz"   domain %s is in user block-listz&   domain %s is not in user allow-listT)r   ru   r   r   r   r   )r   r   r   r   r   r,  r   r   r   r     s"    

z$DefaultCookiePolicy.domain_return_okc             C   s   t  d |  t |  } t |  } | | k r5 d S| j |  rq | j d  sm | | | d  d k rq d St  d | |  d S)Nz- checking cookie path=%sTr   r    z  %s does not path-match %sF)r   r   r  ru   r   )r   r   r   r  Zpathlenr   r   r   r     s    )z"DefaultCookiePolicy.path_return_ok)r   r   r   r  r+  r  ZDomainLiberalZDomainStrictr   r   r   r   r   r   r   r   r   r  r  r  r  r#  r   r$  r%  r'  r)  r*  r-  r   r   r   r   r   r   r   _  sJ   
	;	c             C   s"   t  |  j    } t |  j |  S)N)sortedkeysmapr   )Zadictr/  r   r   r   vals_sorted_by_key  s    r1  c             c   sg   t  |   } xT | D]L } d }  y | j Wn t k
 r> Yn Xd }  t |  Ed  H|  s | Vq Wd  S)NFT)r1  itemsAttributeError
deepvalues)mappingvaluesobjr   r   r   r4    s    r4  c               @   s   e  Z d  Z d S)AbsentN)r   r   r   r   r   r   r   r8    s    r8  c               @   sx  e  Z d  Z e j d  Z e j d  Z e j d  Z e j d  Z e j d  Z	 e j d e j
  Z d d d	  Z d
 d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d  d!   Z d" d#   Z d d d d$ d%  Z d& d'   Z d( d)   Z d* d+   Z d, d-   Z d. d/   Z d0 d1   Z  d S)2r   z\Wz([\"\\])z\.?[^.]*z[^.]*z^\.+z^\#LWP-Cookies-(\d+\.\d+)Nc             C   s:   | d  k r t    } | |  _ t j   |  _ i  |  _ d  S)N)r   _policy
_threadingRLock_cookies_lock_cookies)r   policyr   r   r   r     s
    		zCookieJar.__init__c             C   s   | |  _  d  S)N)r9  )r   r>  r   r   r   
set_policy  s    zCookieJar.set_policyc             C   s   g  } |  j  j | |  s g  St d |  |  j | } x | j   D]x } |  j  j | |  sd qF | | } xM | j   D]? } |  j  j | |  s t d  q{ t d  | j |  q{ WqF W| S)Nz!Checking %s for cookies to returnz   not returning cookiez   it's a match)	r9  r   r   r=  r/  r   r6  r   rt   )r   r   r   cookiesZcookies_by_pathr   Zcookies_by_namer   r   r   r   _cookies_for_domain  s     


zCookieJar._cookies_for_domainc             C   s=   g  } x0 |  j  j   D] } | j |  j | |   q W| S)N)r=  r/  extendrA  )r   r   r@  r   r   r   r   _cookies_for_request  s    zCookieJar._cookies_for_requestc       	      C   s  | j  d d d   d d  d } g  } x| D]} | j } | sg d } | d k rg | j d |  | j d  k	 r |  j j | j  r | d k r |  j j d	 | j  } n	 | j } | j d  k r | j | j  n | j d
 | j | f  | d k r/ | j	 r | j d | j
  | j j d  ru| j } | j rd| j d  rd| d d   } | j d |  | j d  k	 r/ d } | j r| d | j } | j |  q/ W| S)Nr   c             S   s   t  |  j  S)N)r  r   )ar   r   r   <lambda>  s    z)CookieJar._cookie_attrs.<locals>.<lambda>reverseTFr	   z$Version=%sz\\\1z%s=%sz
$Path="%s"r   r    z$Domain="%s"z$Portz="%s")sortr   rt   r{   non_word_rerA   quote_rer`   rz   r   r   r   ru   r   r   r   )	r   r@  r   attrsr   r   r{   r   r   r   r   r   _cookie_attrs  s>    
	!			
	zCookieJar._cookie_attrsc          
   C   s   t  d  |  j j   z t t j    |  j _ |  _ |  j |  } |  j |  } | r | j	 d  s | j
 d d j |   |  j j r |  j j r | j	 d  r x. | D]& } | j d k r | j
 d d  Pq WWd  |  j j   X|  j   d  S)Nadd_cookie_headerr   z; ZCookie2r    z$Version="1")r   r<  acquirerB   rN   r9  r(  rC  rK  Z
has_headerZadd_unredirected_headerr~   r   r   r   releaseclear_expired_cookies)r   r   r@  rJ  r   r   r   r   rL  C  s$    
	zCookieJar.add_cookie_headerc             C   s  g  } d } d } x| D]} | d \ } } d } d }	 i  }
 i  } x| d d   D]}\ } } | j    } | | k s | | k r | } | | k r | d  k r d } | |
 k r qX | d k r | d  k r t d  d }	 P| j    } | d k r| rqX | d  k rt d  qX | d k ryd } y t |  } Wn# t k
 ret d  d }	 PYn Xd } |  j | } | | k s| | k r| d  k r| d k rt d |  d }	 P| |
 | <qX | | | <qX W|	 rq | j | | |
 | f  q W| S)Nr   r   r   r   max-ager   r   r   r   
commenturlr	   Fr    Tz%   missing value for domain attributezM   missing or invalid value for expires attribute: treating as session cookiez?   missing or invalid (non-numeric) value for max-age attributez!   missing value for %s attribute)r   r   )r   r   rP  r   r   r   r   rQ  )r   r   rQ  )rL   r   rB   rM   r(  rt   )r   	attrs_setcookie_tuplesboolean_attrsvalue_attrsZcookie_attrsrz   r{   Zmax_age_setZ
bad_cookiestandardr   r   r   r   r   r   r   _normalized_cookie_tuplesd  sl       



z#CookieJar._normalized_cookie_tuplesc          !   C   s  | \ } } } } | j  d t  } | j  d t  } | j  d t  }	 | j  d t  }
 | j  d d   } | d  k	 r y t |  } Wn t k
 r d  SYn X| j  d d  } | j  d d  } | j  d	 d   } | j  d
 d   } | t k	 r| d k rd } t |  } nx d } t |  } | j d  } | d k rv| d k rb| d  |  } n | d  | d  } t |  d k rd } | t k	 } d } | rt | j	 d   } | t k rt
 |  \ } } | } n | j	 d  sd | } d } |	 t k	 rF|	 d  k r(t |  }	 qLd } t j d d |	  }	 n d  }	 |
 t k rgd  }
 d } nR |
 |  j k ry |  j | | |  Wn t k
 rYn Xt d | | |  d  St | | | |	 | | | | | | | |
 | | | |  S)Nr   r   r   r   r   r   Fr   r   rQ  rY   Tr   r    r	   r   z\s+z2Expiring cookie, domain='%s', path='%s', name='%s'r   )r   r8  rB   rM   r   r   r   r  boolru   r   r   rv   r`   r(  clearKeyErrorr   r   )r   tupr   rz   r{   rV  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _cookie_from_cookie_tuple  s    	 	
		z#CookieJar._cookie_from_cookie_tuplec             C   sO   |  j  |  } g  } x3 | D]+ } |  j | |  } | r | j |  q W| S)N)rW  r\  rt   )r   rR  r   rS  r@  r[  r   r   r   r   _cookies_from_attrs_set!  s     z!CookieJar._cookies_from_attrs_setc             C   sj   t  |  j d d   } | d  k r. |  j j } x5 | D]- } | j d k r5 d | _ | r5 d | _ q5 Wd  S)Nr   r    Tr	   )r   r9  r   r   r   )r   r@  Zrfc2109_as_nsr   r   r   r   _process_rfc2109_cookies*  s    	z"CookieJar._process_rfc2109_cookiesc             C   s  | j    } | j d g   } | j d g   } |  j j } |  j j } | rV | s | rd | s | rr | s | r | r g  Sy |  j t |  |  } Wn t k
 r t   g  } Yn X| r| ry |  j t	 |  |  }	 Wn t k
 rt   g  }	 Yn X|  j
 |	  | rpi  }
 x* | D]" } d  |
 | j | j | j f <q,W|
 d d  } t | |	  }	 |	 r| j |	  | S)NzSet-Cookie2z
Set-Cookiec             S   s"   |  j  |  j |  j f } | | k S)N)r   r   rz   )Z	ns_cookielookupr   r   r   r   no_matching_rfc2965b  s    z3CookieJar.make_cookies.<locals>.no_matching_rfc2965)r  Zget_allr9  r   r   r]  r|   	Exceptionr   r   r^  r   r   rz   filterrB  )r   responser   r   Zrfc2965_hdrsZns_hdrsr   r   r@  Z
ns_cookiesr_  r   r`  r   r   r   make_cookies6  sB     zCookieJar.make_cookiesc          
   C   sg   |  j  j   zE t t j    |  j _ |  _ |  j j | |  rQ |  j |  Wd  |  j  j   Xd  S)N)	r<  rM  rB   rN   r9  r(  r   
set_cookierN  )r   r   r   r   r   r   set_cookie_if_okl  s    zCookieJar.set_cookie_if_okc          
   C   s   |  j  } |  j j   zc | j | k r5 i  | | j <| | j } | j | k r^ i  | | j <| | j } | | | j <Wd  |  j j   Xd  S)N)r=  r<  rM  r   r   rz   rN  )r   r   cc2Zc3r   r   r   re  y  s    	  zCookieJar.set_cookiec          
   C   s   t  d | j    |  j j   zo t t j    |  j _ |  _ xI |  j | |  D]5 } |  j j	 | |  rU t  d |  |  j
 |  qU WWd  |  j j   Xd  S)Nzextract_cookies: %sz setting cookie: %s)r   r  r<  rM  rB   rN   r9  r(  rd  r   re  rN  )r   rc  r   r   r   r   r   extract_cookies  s    zCookieJar.extract_cookiesc             C   s   | d  k	 rE | d  k s$ | d  k r0 t  d   |  j | | | =nW | d  k	 rz | d  k ri t  d   |  j | | =n" | d  k	 r |  j | =n	 i  |  _ d  S)Nz8domain and path must be given to remove a cookie by namez.domain must be given to remove cookies by path)rM   r=  )r   r   r   rz   r   r   r   rY    s    		zCookieJar.clearc             C   s\   |  j  j   z: x3 |  D]+ } | j r |  j | j | j | j  q WWd  |  j  j   Xd  S)N)r<  rM  r   rY  r   r   rz   rN  )r   r   r   r   r   clear_session_cookies  s    	$zCookieJar.clear_session_cookiesc             C   sn   |  j  j   zL t j   } x9 |  D]1 } | j |  r# |  j | j | j | j  q# WWd  |  j  j   Xd  S)N)	r<  rM  rN   r   rY  r   r   rz   rN  )r   r   r   r   r   r   rO    s    
$zCookieJar.clear_expired_cookiesc             C   s   t  |  j  S)N)r4  r=  )r   r   r   r   __iter__  s    zCookieJar.__iter__c             C   s%   d } x |  D] } | d } q W| S)Nr	   r    r   )r   r   r   r   r   r   __len__  s     zCookieJar.__len__c             C   sG   g  } x! |  D] } | j  t |   q Wd |  j j d j |  f S)Nz<%s[%s]>z, )rt   r   r   r   r~   )r   rr   r   r   r   r     s     zCookieJar.__repr__c             C   sG   g  } x! |  D] } | j  t |   q Wd |  j j d j |  f S)Nz<%s[%s]>z, )rt   r!  r   r   r~   )r   rm  r   r   r   r   r     s     zCookieJar.__str__)!r   r   r   rv   compilerH  rI  Zstrict_domain_reZ	domain_reZdots_reASCIImagic_rer   r?  rA  rC  rK  rL  rW  r\  r]  r^  rd  rf  re  ri  rY  rj  rO  rk  rl  r   r   r   r   r   r   r     s6   ;!a\	6c               @   s   e  Z d  Z d S)r   N)r   r   r   r   r   r   r   r     s    c               @   sd   e  Z d  Z d d d d d  Z d d d d d  Z d d d d d  Z d d d d	 d
  Z d S)r   NFc          	   C   s[   t  j |  |  | d  k	 r? y | d Wn t d   Yn X| |  _ t |  |  _ d  S)NrY   zfilename must be string-like)r   r   rM   filenamerX  	delayload)r   rq  rr  r>  r   r   r   r     s    	zFileCookieJar.__init__c             C   s   t     d  S)N)r   )r   rq  ignore_discardignore_expiresr   r   r   save  s    zFileCookieJar.savec             C   sc   | d  k r3 |  j  d  k	 r' |  j  } n t t   t |   } |  j | | | |  Wd  QRXd  S)N)rq  rM   MISSING_FILENAME_TEXTopen_really_load)r   rq  rs  rt  r   r   r   r   load  s     zFileCookieJar.loadc             C   s   | d  k r3 |  j  d  k	 r' |  j  } n t t   |  j j   zW t j |  j  } i  |  _ y |  j | | |  Wn t	 k
 r | |  _   Yn XWd  |  j j
   Xd  S)N)rq  rM   rv  r<  rM  r   deepcopyr=  ry  OSErrorrN  )r   rq  rs  rt  Z	old_stater   r   r   revert  s     		zFileCookieJar.revert)r   r   r   r   ru  ry  r|  r   r   r   r   r     s
   	c             C   s  |  j  |  j f d |  j f d |  j f g } |  j d  k	 rR | j d |  j f  |  j rh | j d  |  j r~ | j d  |  j r | j d  |  j	 r | j d  |  j
 r | j d t t |  j
   f  |  j r | j d  |  j r
| j d
 |  j f  |  j r)| j d |  j f  t |  j j    } x. | D]& } | j | t |  j |  f  qEW| j d t |  j  f  t | g  S)Nr   r   r   	path_spec	port_spec
domain_dotr   r   r   r   rQ  r   )r}  N)r~  N)r  N)r   N)r   N)rz   r{   r   r   r   rt   r   r   r   r   r   r6   r]   r   r   r   r.  r   r/  r!  r   r   )r   r   r/  r   r   r   r   lwp_cookie_str"  s6     	 	 	 	 	 		 	 	 $r  c               @   sC   e  Z d  Z d d d d  Z d d d d d  Z d d	   Z d S)
r   Tc             C   sz   t  j    } g  } xQ |  D]I } | r2 | j r2 q | rK | j |  rK q | j d t |   q Wd j | d g  S)NzSet-Cookie3: %s
rY   )rN   r   r   rt   r  r~   )r   rs  rt  r   rm  r   r   r   r   
as_lwp_strK  s    zLWPCookieJar.as_lwp_strNFc             C   sv   | d  k r3 |  j  d  k	 r' |  j  } n t t   t | d  - } | j d  | j |  j | |   Wd  QRXd  S)Nwz#LWP-Cookies-2.0
)rq  rM   rv  rw  writer  )r   rq  rs  rt  r   r   r   r   ru  [  s     zLWPCookieJar.savec             C   s  | j    } |  j j |  s4 d | } t |   t j   } d } d }	 d }
 y_xX| j    } | d k rq P| j |  s qX | t |  d   j   } x
t | g  D]} | d \ } } i  } i  } x |	 D] } d | | <q Wx | d d   D] \ } } | d  k	 r$| j	   } n d  } | |
 k sB| |	 k rH| } | |	 k rs| d  k rfd } | | | <q | |
 k r| | | <q | | | <q W| j
 } | d  } | d  } | d  k	 rt |  } | d  k rd } | d  } | j d  } t | d  | | | d	  | d  | | | d  | d
  | d  | d  | | | d  | d  |  } | r| j rq | r| j |  rq |  j |  q WqX WWnC t k
 r  Yn/ t k
 rt   t d | | f   Yn Xd  S)Nz5%r does not look like a Set-Cookie3 (LWP) format filezSet-Cookie3:r~  r}  r  r   r   r   r   r   r   r   r   rQ  rY   r	   Fr    Tr   z&invalid Set-Cookie3 format file %r: %r)r~  r}  r  r   r   )r   r   r   r   r   r   rQ  )readlinerp  rA   r   rN   ru   r  r   r|   rL   r   rg   r   r   r   re  r{  ra  r   )r   r   rq  rs  rt  magicr   r   headerrT  rU  linedatarz   r{   rV  r   r   r   r   r   r   r   r   r   rg  r   r   r   rx  g  s          					zLWPCookieJar._really_load)r   r   r   r  ru  rx  r   r   r   r   r   >  s   c               @   sF   e  Z d  Z e j d  Z d Z d d   Z d d d d d  Z d S)	r   z#( Netscape)? HTTP Cookie Filezr# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This is a generated file!  Do not edit.

c             C   s  t  j    } | j   } |  j j |  s: t d |   y`xY| j   } | d k rY P| j d  rx | d  d  } | j   j d  s@ | j   d k r q@ | j d  \ } }	 }
 } } } } | d k } |	 d k }	 | d k r | } d  } | j d	  } d
 } | d k r#d  } d } t	 d | | d  d
 | |	 | |
 d
 | | | d  d  i   } | ro| j
 roq@ | r| j |  rq@ |  j |  q@ WWnC t k
 r  Yn/ t k
 rt   t d | | f   Yn Xd  S)Nz4%r does not look like a Netscape format cookies filerY   r  r    #r  	TRUEr   FTr	   z+invalid Netscape format cookies file %r: %rr   )r  r  )rN   r  rp  rA   r   r   r   ru   r   r   r   r   re  r{  ra  r   )r   r   rq  rs  rt  r   r  r  r   r   r   r   r   rz   r{   r   r   rg  r   r   r   rx    s`    
  $		zMozillaCookieJar._really_loadNFc             C   sq  | d  k r3 |  j  d  k	 r' |  j  } n t t   t | d  (} | j |  j  t j   } x|  D] } | r | j r qh | r | j |  r qh | j	 r d } n d } | j
 j d  r d } n d } | j d  k	 r t | j  }	 n d }	 | j d  k rd }
 | j } n | j }
 | j } | j d j | j
 | | j | |	 |
 | g  d  qh WWd  QRXd  S)Nr  r  FALSEr   rY   r  r  )rq  rM   rv  rw  r  r  rN   r   r   r   r   ru   r   r!  r{   rz   r~   r   )r   rq  rs  rt  r   r   r   r   r   r   rz   r{   r   r   r   ru    s<     	 	 			zMozillaCookieJar.save)	r   r   r   rv   rn  rp  r  rx  ru  r   r   r   r   r     s   A)X__all__r   r.   rv   rN   Zurllib.parser   Zurllib.request	threadingr:  ImportErrordummy_threadingZhttp.clientZhttpZcalendarr
   r   r   r   r!  clientZ	HTTP_PORTr   rv  r   r&   r-   r7   r8   rJ   r)   rt   rL   r6   r9   r?   rn  ro  r@   rG   rV   r[   Ir_   Xra   rd   re   rg   rm   ro   rp   rr   rq   r|   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r1  r4  r8  r   r{  r   r   r  r   r   r   r   r   r   <module>   s   
 88!UD'

#b! _  :x