
    -hh                     l   S SK rS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r
S SKJr  / SQrSrSrSrSrSrS	r\" 5       R+                  \R,                  R.                  5        \R,                  R.                  R1                  5        V s0 s H  o U R2                  _M     sn rS
rSr\R:                  " S5      R<                  r\R:                  " S5      R@                  r!\R:                  " S5      r"\R:                  " S5      r#1 Skr$S=S jr%S\&S\&4S jr' " S S\RP                  RR                  5      r*S r+\*4S jr,\*4S jr- " S S\R\                  5      r/S r0 " S S5      r1 S SK2r2 " S S \15      r3\Ri                  S 5         " S! S"\65      r7 " S# S$\75      r8 " S% S&\75      r9 " S' S(\75      r: " S) S*\75      r; " S+ S,\75      r< " S- S.\75      r= " S/ S0\75      r> " S1 S2\>5      r? " S3 S4\>5      r@ " S5 S6\>5      rA " S7 S8\75      rB " S9 S:\75      rC " S; S<\D\B5      rE\7rFgs  sn f ! \5 a     Nf = f)>    N)urlsplit)HTTPResponseHTTPConnectionHTTPExceptionNotConnectedUnknownProtocolUnknownTransferEncodingUnimplementedFileModeIncompleteRead
InvalidURLImproperConnectionStateCannotSendRequestCannotSendHeaderResponseNotReadyBadStatusLineLineTooLongRemoteDisconnectederror	responsesP   i  UNKNOWNIdlezRequest-startedzRequest-senti   d   s   [^:\s][^:\r\n]*s   \n(?![ \t])|\r(?![ \t\n])z[ - ]z[ -]>   PUTPOSTPATCHc                     U R                  S5      $ ! [         an  n[        UR                  UR                  UR                  UR
                  UR                  5       < SXR                  UR
                   <S SU< S35      S eS nAff = f)Nlatin-1z (z.20z) is not valid Latin-1. Use z9.encode('utf-8') if you want to send it encoded in UTF-8.)encodeUnicodeEncodeErrorencodingobjectstartendtitle)datanameerrs      4/opt/python-3.13.8/usr/lib/python3.13/http/client.py_encoder*      s{    
E{{9%% E LLJJIIGG ZZ\4		#''2D:; AE	EEs    
BA)BBenc_namereturnc                 F    U R                  S5      u  pnU(       a  U S-  n U $ )N   %   ])	partition)r+   percent_s      r)   _strip_ipv6_ifacer3      s)    #--d3HqDO    c                       \ rS rSrS rSrg)HTTPMessage   c                    UR                  5       S-   n[        U5      n/ nSnU R                  5        HQ  nUS U R                  5       U:X  a  SnOUS S R                  5       (       d  SnU(       d  M@  UR	                  U5        MS     U$ )N:r      )lowerlenkeysisspaceappend)selfr'   nlsthitlines         r)   getallmatchingheaders!HTTPMessage.getallmatchingheaders   s     zz|c!IIIKDBQx~~4'"1X%%''s

4    
r4    N)__name__
__module____qualname____firstlineno__rE   __static_attributes__rG   r4   r)   r6   r6      s    r4   r6   c                     / n U R                  [        S-   5      n[        U5      [        :  a  [        S5      eUR	                  U5        [        U5      [
        :  a  [        S[
        -  5      eUS;   a   U$ Mw  )Nr:   zheader linezgot more than %d headers   
   
r4   )readline_MAXLINEr<   r   r?   _MAXHEADERSr   )fpheadersrD   s      r)   _read_headersrV      st     G
{{8a<(t9xm,,tw<+% :[ HII((N r4   c                     SR                  U 5      R                  S5      n[        R                  R	                  US9R                  U5      $ )Nr4   
iso-8859-1)_class)joindecodeemailparserParserparsestr)header_linesrY   hstrings      r)   _parse_header_linesrb      s@     hh|$++L9G<<f-66w??r4   c                 .    [        U 5      n[        X!5      $ N)rV   rb   )rT   rY   rU   s      r)   parse_headersre      s     BGw//r4   c                      ^  \ rS rSrS!S jrS rS rS rS rU 4S jr	U 4S jr
S	 rS
 rS"S jrS rS rS rS rS"S jrS rS rS rS#S jrS#S jrS#U 4S jjrS rS rS rS"S jrS rS rS rS r S r!S r"U =r#$ )$r      c                     UR                  S5      U l        X l        X0l        S =U l        U l        [        U l        [        U l        [        U l	        [        U l
        [        U l        [        U l        [        U l        g )Nrb)makefilerT   
debuglevel_methodrU   msg_UNKNOWNversionstatusreasonchunked
chunk_leftlength
will_close)r@   sockrk   methodurls        r)   __init__HTTPResponse.__init__  sa     --%$ #'&tx  ""r4   c                    [        U R                  R                  [        S-   5      S5      n[	        U5      [        :  a  [        S5      eU R                  S:  a  [        S[        U5      5        U(       d  [        S5      e UR                  S S5      u  p#nUR                  S	5      (       d  U R                  5         [        U5      e [        W5      nUS
:  d  US:  a  [        U5      e X#W4$ ! [         a-     UR                  S S5      u  p#Sn N|! [         a    Sn  Nf = ff = f! [         a    [        U5      ef = f)Nr:   rX   zstatus liner   zreply:z-Remote end closed connection without response    zHTTP/r   i  )strrT   rQ   rR   r<   r   rk   printreprr   split
ValueError
startswith_close_connr   int)r@   rD   ro   rp   rq   s        r)   _read_statusHTTPResponse._read_status#  sA   477##HqL1<@t9xm,,??Q(DJ' % &1 2 2	&*jjq&9#GV !!'**%%	&[F|v|#D))  , &&%  	"&**T1"5 		   	&%%	&s6   C1 
"D+ 1
D(<DD$ D(#D$$D(+Ec                    U R                   b  g  U R                  5       u  pnU[        :w  a  O4[        U R                  5      nU R
                  S:  a  [        SU5        AMR  U=U l        U l        UR                  5       U l
        US;   a  SU l        O)UR                  S5      (       a  SU l        O[        U5      e[        U R                  5      =U l         U l        U R
                  S:  a3  U R                   R!                  5        H  u  pV[        SUS	-   U5        M     U R                   R#                  S
5      nU(       a#  UR%                  5       S:X  a  SU l        S U l        OSU l        U R+                  5       U l        S U l        U R                   R#                  S5      nU(       a:  U R&                  (       d)   [1        U5      U l        U R.                  S:  a  S U l        OS U l        U[4        :X  d)  U[6        :X  d  SUs=::  a  S:  d  O  U R8                  S:X  a  SU l        U R,                  (       d(  U R&                  (       d  U R.                  c  SU l        g g g g ! [2         a
    S U l         Nf = f)NTr   zheaders:)zHTTP/1.0zHTTP/0.9
   zHTTP/1.   header:r9   transfer-encodingrr   Fcontent-lengthr      HEAD)rU   r   CONTINUErV   rT   rk   r   coderp   striprq   ro   r   r   re   rm   itemsgetr;   rr   rs   _check_closeru   rt   r   r   
NO_CONTENTNOT_MODIFIEDrl   )	r@   ro   rp   rq   skipped_headershdrvaltr_encrt   s	            r)   beginHTTPResponse.beginD  s   <<# &*&7&7&9#GV!+DGG4O"j/2  #)(	DKlln..DL	**DL!'**"/"88tx??Q LL..0isC0 1 !!"56flln	1DL"DO DL ++- !!"23$,,'!&k ;;?"&DKDK j Fl$:6CLLF"DK
 KK"DO     #  #"#s   <I I32I3c                 |   U R                   R                  S5      nU R                  S:X  a  U(       a  SUR                  5       ;   a  ggU R                   R                  S5      (       a  gU(       a  SUR                  5       ;   a  gU R                   R                  S5      nU(       a  SUR                  5       ;   a  gg)N
connectionr   closeTFz
keep-alivezproxy-connection)rU   r   ro   r;   )r@   connpconns      r)   r   HTTPResponse._check_close  s    ||-<<2 4::</ <<L)) LDJJL0   !34\U[[]2 r4   c                 J    U R                   nS U l         UR                  5         g rd   )rT   r   )r@   rT   s     r)   r   HTTPResponse._close_conn  s    WW

r4   c                    >  [         TU ]  5         U R                  (       a  U R                  5         g g ! U R                  (       a  U R                  5         f f = frd   )superr   rT   r   r@   	__class__s    r)   r   HTTPResponse.close  sB    	#GMOww  " tww  " s	   4 $Ac                 z   > [         TU ]  5         U R                  (       a  U R                  R                  5         g g rd   )r   flushrT   r   s    r)   r   HTTPResponse.flush  s%    77GGMMO r4   c                     g)NTrG   r@   s    r)   readableHTTPResponse.readable  s    r4   c                     U R                   S L $ rd   )rT   r   s    r)   isclosedHTTPResponse.isclosed  s     ww$r4   c                    U R                   c  gU R                  S:X  a  U R                  5         gU R                  (       a  U R	                  U5      $ Ub  US:  a  U R
                  b  XR
                  :  a  U R
                  nU R                   R                  U5      nU(       d  U(       a  U R                  5         U$ U R
                  b?  U =R
                  [        U5      -  sl        U R
                  (       d  U R                  5         U$ U R
                  c  U R                   R                  5       nO# U R                  U R
                  5      nSU l        U R                  5         U$ ! [         a    U R                  5         e f = f)Nr4   r   r   )
rT   rl   r   rr   _read_chunkedrt   readr<   
_safe_readr   )r@   amtss      r)   r   HTTPResponse.read  s6   77?<<6!<<%%c**?sax{{&3+<kkS!A   "
 H	 (s1v%{{$$&H {{"GGLLN4A  H & $$&s   5E) )Fc                     U R                   c  gU R                  S:X  a  U R                  5         gU R                  (       a  U R	                  U5      $ U R
                  b1  [        U5      U R
                  :  a  [        U5      SU R
                   nU R                   R                  U5      nU(       d  U(       a  U R                  5         U$ U R
                  b6  U =R
                  U-  sl        U R
                  (       d  U R                  5         U$ )Nr   r   )	rT   rl   r   rr   _readinto_chunkedrt   r<   
memoryviewreadinto)r@   brA   s      r)   r   HTTPResponse.readinto  s    
 77?<<6!<<))!,,;;"1v#qM!DKK0
 GGQQ 
 	 [[$KK1K;;  "r4   c                    U R                   R                  [        S-   5      n[        U5      [        :  a  [	        S5      eUR                  S5      nUS:  a  US U n [        US5      $ ! [         a    U R                  5         e f = f)Nr:   z
chunk size   ;r      )	rT   rQ   rR   r<   r   findr   r   r   )r@   rD   is      r)   _read_next_chunk_size"HTTPResponse._read_next_chunk_size  s    ww1-t9xl++IIdO68D	tR=  	 		s   A* *Bc                      U R                   R                  [        S-   5      n[        U5      [        :  a  [	        S5      eU(       d  g US;   a  g MQ  )Nr:   ztrailer linerN   )rT   rQ   rR   r<   r   r@   rD   s     r)   _read_and_discard_trailer&HTTPResponse._read_and_discard_trailer)  sO     77##HqL1D4y8#!.11 ,, r4   c                    U R                   nU(       dS  Ub  U R                  S5         U R                  5       nUS:X  a"  U R                  5         U R                  5         S nXl         U$ ! [         a    [	        S5      ef = f)Nr|   r4   r   )rs   r   r   r   r   r   r   )r@   rs   s     r)   _get_chunk_leftHTTPResponse._get_chunk_left7  s     __
%"*!779
 Q..0  "!
(O  *$S))*s   A) )A?c                    Ub  US:  a  S n/ n U R                  5       =nbu  Ub/  X::  a*  UR                  U R                  U5      5        X1-
  U l        OCUR                  U R                  U5      5        Ub  X-  nSU l        U R                  5       =nb  Mu  SR	                  U5      $ ! [
         a   n[        SR	                  U5      5      UeS nAff = fNr   r4   )r   r?   r   rs   rZ   r   )r@   r   valuers   excs        r)   r   HTTPResponse._read_chunkedO  s    ?sQwC	;!%!5!5!77:D?s'8LL!56&0&6DOT__Z89?%C"# "&!5!5!77:D 88E?" 	; %1s:	;s   BB( B( (
C2CCc                 <   Sn[        U5      n  U R                  5       nUc  U$ [        U5      U::  a  U R                  U5      nXE-
  U l        X%-   $ US U nU R                  U5      nX5S  nX%-  nSU l        Mi  ! [
         a    [        [        USU 5      5      ef = f)Nr   )r   r   r<   _safe_readintors   r   bytes)r@   r   total_bytesmvbrs   rA   temp_mvbs          r)   r   HTTPResponse._readinto_chunkedc  s    m	:!113
%&&s8z)++C0A&0nDO&?*{
+''1"g "#    	: q;'7!899	:s   A9 ,A9 'A9 9"Bc                     U R                   R                  U5      n[        U5      U:  a  [        X![        U5      -
  5      eU$ rd   )rT   r   r<   r   )r@   r   r&   s      r)   r   HTTPResponse._safe_read{  s9     ww||C t9s? 3t9}55r4   c                     [        U5      nU R                  R                  U5      nX2:  a  [        [	        US U 5      X#-
  5      eU$ rd   )r<   rT   r   r   r   )r@   r   r   rA   s       r)   r   HTTPResponse._safe_readinto  sB    !fGGQ7 q!usu55r4   c                    U R                   b  U R                  S:X  a  gU R                  (       a  U R                  U5      $ U R                  b!  US:  d  XR                  :  a  U R                  nU R                   R                  U5      nU(       d  U(       a  U R                  5         U$ U R                  b?  U =R                  [        U5      -  sl        U R                  (       d  U R                  5         U$ Nr   r4   r   )rT   rl   rr   _read1_chunkedrt   read1r   r<   )r@   rA   results      r)   r   HTTPResponse.read1  s     77?dllf4<<&&q));;"A[[Aq!!
 	 [[$KK3v;&K;;  "r4   c                     U R                   b  U R                  S:X  a  gU R                  (       a  U R                  U5      $ U R                   R	                  U5      $ )Nr   r4   )rT   rl   rr   _peek_chunkedpeek)r@   rA   s     r)   r   HTTPResponse.peek  sE     77?dllf4<<%%a((ww||Ar4   c                   > U R                   b  U R                  S:X  a  gU R                  (       a  [        TU ]  U5      $ U R
                  b!  US:  d  XR
                  :  a  U R
                  nU R                   R	                  U5      nU(       d  U(       a  U R                  5         U$ U R
                  b?  U =R
                  [        U5      -  sl        U R
                  (       d  U R                  5         U$ r   )rT   rl   rr   r   rQ   rt   r   r<   )r@   limitr   r   s      r)   rQ   HTTPResponse.readline  s    77?dllf4<<7#E**;;"	U[[5HKKE!!%(%
 	 [[$KK3v;&K;;  "r4   c                     U R                  5       nUb  US:X  a  gSUs=::  a  U::  d  O  UnU R                  R                  U5      nU =R                  [	        U5      -  sl        U(       d  [        S5      eU$ r   )r   rT   r   rs   r<   r   )r@   rA   rs   r   s       r)   r   HTTPResponse._read1_chunked  sj     ))+
aQ$*$Aww}}Q3t9$ %%r4   c                      U R                  5       nUc  gU R                  R                  U5      S U $ ! [         a     gf = f)Nr4   )r   r   rT   r   )r@   rA   rs   s      r)   r   HTTPResponse._peek_chunked  sP    	--/J  ww||J'44  		s   4 
A Ac                 6    U R                   R                  5       $ rd   )rT   filenor   s    r)   r   HTTPResponse.fileno  s    ww~~r4   c                     U R                   c
  [        5       eU R                   R                  U5      =(       d    Un[        U[        5      (       d  [        US5      (       d  U$ SR                  U5      $ )N__iter__z, )rU   r   get_all
isinstancer~   hasattrrZ   )r@   r'   defaultrU   s       r)   	getheaderHTTPResponse.getheader  s]     <<"$$,,&&t,7gs##77J+G+GN99W%%r4   c                 v    U R                   c
  [        5       e[        U R                   R                  5       5      $ rd   )rU   r   listr   r   s    r)   
getheadersHTTPResponse.getheaders  s-    <<"$$DLL&&())r4   c                     U $ rd   rG   r   s    r)   r   HTTPResponse.__iter__  s    r4   c                     U R                   $ rd   )rU   r   s    r)   infoHTTPResponse.info  s    * ||r4   c                     U R                   $ rd   )rx   r   s    r)   geturlHTTPResponse.geturl  s     xxr4   c                     U R                   $ rd   )rp   r   s    r)   getcodeHTTPResponse.getcode  s    
 {{r4   )rl   rs   rr   r   rk   rT   rU   rt   rm   rq   rp   ro   ru   )r   NNrd   ))$rH   rI   rJ   rK   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rQ   r   r   r   r   r   r   r  r  r	  rL   __classcell__r   s   @r)   r   r      s    #<'BF#P:
#
&P D 0;(:0
&"5 &(*
.
 r4   r   c                     [         R                  " 5       nU S:X  a  UR                  S/5        UR                  b  SUl        U$ )Nr   zhttp/1.1T)ssl_create_default_https_contextset_alpn_protocolspost_handshake_auth)http_versioncontexts     r)   _create_https_contextr  &  sC     //1Gr""J<0"".&*#Nr4   c                   "   \ rS rSrSrSr\r\r	Sr
Sr\S 5       r\S 5       rS\R                   SS	4S
 jrS$S jrS rS rS rS rS rS rS rS rS rS rS%S jr  S&S jrS rS r S r!S r"S r#S'SS.S jjr$S0 4SS.S  jjr%S! r&S" r'S#r(g)(r   i3  r   zHTTP/1.1r:   r   c                 6    [        U [        R                  5      $ rd   )r   io
TextIOBase)streams    r)   
_is_textIOHTTPConnection._is_textIO=  s     &"--00r4   c                     U c  UR                  5       [        ;   a  gg [        U S5      (       a  g  [        U 5      nUR                  $ ! [
         a     Of = f[        U [        5      (       a  [        U 5      $ g )Nr   r   )	upper_METHODS_EXPECTING_BODYr   r   nbytes	TypeErrorr   r~   r<   )bodyrw   mvs      r)   _get_content_length"HTTPConnection._get_content_lengthC  sw     < ||~!884  	D!B99 		 dC  t9s   A 
AAN    c                 J   X0l         X@l        XPl        S U l        / U l        S U l        [        U l        S U l        S U l	        S U l
        0 U l        S U l        U R                  X5      u  U l        U l        U R!                  U R                  5        ["        R$                  U l        g rd   )timeoutsource_address	blocksizerv   _buffer_HTTPConnection__response_CS_IDLE_HTTPConnection__staterl   _tunnel_host_tunnel_port_tunnel_headers_raw_proxy_headers_get_hostporthostport_validate_hostsocketcreate_connection_create_connection)r@   r4  r5  r(  r)  r*  s         r)   ry   HTTPConnection.__init__c  s    ,"	  !"&!%!3!3D!?DIDII& #)":":r4   c                    U R                   (       a  [        S5      eU R                  X5      u  U l        U l        U(       a  UR                  5       U l        OU R                  R                  5         [        S U R                   5       5      (       dH  U R                  R                  S5      R                  S5      nSX@R                  4-  U R                  S'   g g )Nz.Can't set up tunnel for established connectionc              3   F   #    U  H  oR                  5       S :H  v   M     g7f)r4  Nr;   ).0headers     r)   	<genexpr>,HTTPConnection.set_tunnel.<locals>.<genexpr>  s     O:N<<>V+:Ns   !idnaasciiz%s:%dHost)rv   RuntimeErrorr3  r/  r0  copyr1  clearanyr   r[   )r@   r4  r5  rU   encoded_hosts        r)   
set_tunnelHTTPConnection.set_tunnelz  s    , 99OPP/3/A/A$/M,4,#*<<>D   &&(O$:N:NOOO,,33F;BB7KL+2//61 ,1D  ( Pr4   c                 R   UcJ  UR                  S5      nUR                  S5      nX4:  a   [        XS-   S  5      nUS U nOU R                  nU(       a  US   S:X  a  US   S:X  a  USS nX4$ ! [         a-    XS-   S  S:X  a  U R                  n NV[	        SXS-   S  -  5      ef = f)	Nr9   ]r:   r}   znonnumeric port: '%s'r   [r  )rfindr   r   default_portr   )r@   r4  r5  r   js        r)   r3  HTTPConnection._get_hostport  s    <

3A

3AuOtaCDz?D BQx((DGsNtBx3":D| " OaCDzR'#00()@4!:)MNN	Os   A/ /!B&B&c                     Xl         g rd   )rk   )r@   levels     r)   set_debuglevelHTTPConnection.set_debuglevel  s    r4   c                 4    SU;   a  US   S:w  a  SU-   S-   $ U$ )N   :r   [      [r/   rG   )r@   ips     r)   
_wrap_ipv6HTTPConnection._wrap_ipv6  s(    2:"Q%7*"9t##	r4   c                    SU R                  U R                  R                  S5      5      U R                  U R                  R                  S5      4-  nU/nU R
                  R                  5        H+  u  p4UR                  U SU S3R                  S5      5        M-     UR                  S5        U R                  SR                  U5      5        AU R                  U R                  U R                  S	9n UR                  5       u  pgn[        UR                  5      U l        U R"                  S
:  a-  U R                    H  n[%        SUR'                  5       5        M     U[(        R*                  R,                  :w  a/  U R/                  5         [1        SU SUR3                  5        35      e UR/                  5         g ! UR/                  5         f = f)Ns   CONNECT %s:%d %s
rB  rC  z: 
r   rO   r4   rw   r   r   zTunnel connection failed:  )r\  r/  r   r0  _http_vsn_strr1  r   r?   sendrZ   response_classrv   rl   r   rV   rT   r2  rk   r   r[   http
HTTPStatusOKr   OSErrorr   )	r@   connectrU   r?  r   responsero   r   messages	            r)   _tunnelHTTPConnection._tunnel  s   )OOD--44V<=%%g.-0 0 )!11779MFNNfXRwd3::9EF :w 			#((7#$&&tyy&F	'/'<'<'>$WG&3HKK&@D#""55F)V]]_5 6 t)))

 :4&'--/ARSTT *
 NNHNNs   7B7G   Gc                 J    U R                   b  [        U R                   5      $ S $ rd   )r2  rb   r   s    r)   get_proxy_response_headers)HTTPConnection.get_proxy_response_headers  s/     &&2   7 78	
 	
r4   c                    [         R                  " SX R                  U R                  5        U R	                  U R                  U R                  4U R
                  U R                  5      U l         U R                  R                  [        R                  [        R                  S5        U R                  (       a  U R!                  5         g g ! [         a)  nUR                  [        R                  :w  a  e  S nANQS nAff = f)Nzhttp.client.connectr:   )sysauditr4  r5  r9  r(  r)  rv   
setsockoptr7  IPPROTO_TCPTCP_NODELAYrh  errnoENOPROTOOPTr/  rl  r@   es     r)   ri  HTTPConnection.connect  s    		'yy$))D++YYtyy!4<<1D1DF		II  !3!3V5G5GK
 LLN 	  	ww%+++ ,	s   09C 
C?C::C?c                 &   [         U l         U R                  nU(       a  S U l        UR                  5         U R                  nU(       a  S U l        UR                  5         g g ! U R                  nU(       a  S U l        UR                  5         f f = frd   )r-  r.  rv   r   r,  )r@   rv   rj  s      r)   r   HTTPConnection.close  sr    		!99D 	

H"&   H"&  s   *A# #-Bc                    U R                   c,  U R                  (       a  U R                  5         O
[        5       eU R                  S:  a  [        S[        U5      5        [        US5      (       a  U R                  S:  a  [        S5        U R                  U5      nU(       a  U R                  S:  a  [        S5        UR                  U R                  5      =n(       an  U(       a  UR                  S5      n[        R                  " SX5        U R                   R                  U5        UR                  U R                  5      =n(       a  Mn  g [        R                  " SX5         U R                   R                  U5        g ! [         ag    [!        U["        R$                  R&                  5      (       a&  U H  nU R                   R                  U5        M       g [        S[)        U5      -  5      ef = f)	Nr   zsend:r   zsending a readableencoding file using iso-8859-1rX   zhttp.client.sendz9data should be a bytes-like object or an iterable, got %r)rv   	auto_openri  r   rk   r   r   r   r  r   r*  r   rr  rs  sendallr!  r   collectionsabcIterabletype)r@   r&   r   	datablockds        r)   rc  HTTPConnection.send  s    99~~"n$??Q'4:&4  "*+__T*F$//A-67#yy88)8 ) 0 0 >I		,d>		!!),	  $yy88)8
 		$d1	GIId# 	G$ 8 899AII%%a(    !9;?:!F G G	Gs   'F AG4G4c                 :    U R                   R                  U5        g rd   )r+  r?   )r@   r   s     r)   _outputHTTPConnection._output*  s    
 	Ar4   c              #   n  #    U R                   S:  a  [        S5        U R                  U5      nU(       a  U R                   S:  a  [        S5        UR                  U R                  5      =n(       aA  U(       a  UR                  S5      nUv   UR                  U R                  5      =n(       a  M@  g g 7f)Nr   zreading a readabler  rX   )rk   r   r  r   r*  r   )r@   r   r   r  s       r)   _read_readableHTTPConnection._read_readable1  s     ??Q&'*doo)23#==88i8%,,\:	O $==88i88s   B/B53B5Fc                    U R                   R                  S5        SR                  U R                   5      nU R                   S S 2	 U R                  U5        Ub  [	        US5      (       a  U R                  U5      nO [        U5        U4nU Hs  nU(       d  U R                  S:  a  [        S5        M'  U(       a4  U R                  S:X  a$  [        U5      S S	3R                  S
5      U-   S-   nU R                  U5        Mu     U(       a#  U R                  S:X  a  U R                  S5        g g g g ! [         a4     [        U5      n N! [         a    [        S[        U5      -  5      ef = ff = f)N)r4   r4   rO   r   zAmessage_body should be a bytes-like object or an iterable, got %rr   zZero length chunk ignoredr   Xr_  rC  s   0

)r+  extendrZ   rc  r   r  r   r!  iterr  rk   r   	_http_vsnr<   r   )r@   message_bodyencode_chunkedrm   chunkschunks         r)   _send_outputHTTPConnection._send_output<  s^    	J'll4<<(LLO		## |V,, ,,\:-
 |, +_F*9:!dnn&:"5z!nD188AEI!"E		%    $..B"6		,' #7~O $ ! >>!%l!3$ >' )H*.|*<)= > >>>s   >D1 1
E/<E		"E++E/c                    U R                   (       a&  U R                   R                  5       (       a  S U l         U R                  [        :X  a  [        U l        O[        U R                  5      eU R                  U5        Xl        U=(       d    SnU R                  U5        U< SU< SU R                  < 3nU R                  U R                  U5      5        U R                  S:X  GaB  U(       Gd  SnUR                  S5      (       a  [        U5      u  pv    nU(       a.   UR                  S5      nU R#                  S[%        U5      5        OU R&                  (       a  U R&                  n	U R(                  n
OU R*                  n	U R,                  n
 U	R                  S5      nU R/                  U5      nS	U	;   a  [%        U5      nXR0                  :X  a  U R#                  SU5        O*UR3                  S5      nU R#                  SU< S	U
< 35        U(       d  U R#                  S
S5        g g g ! [          a    UR                  S5      n GNf = f! [          a    U	R                  S5      n Nf = f)N/ra  r   r}   re  rC  rB  rD  r9   zAccept-Encodingidentity)r,  r   r.  r-  _CS_REQ_STARTEDr   _validate_methodrl   _validate_pathrb  r  _encode_requestr  r   r   r   r    	putheaderr3   r/  r0  r4  r5  r\  rP  r[   )r@   rw   rx   	skip_hostskip_accept_encodingrequestnetlocnil
netloc_encr4  r5  host_encs               r)   
putrequestHTTPConnection.putrequestr  s    ??t7799"DO* <<8#*DL#DLL11f% jSC  &T-?-?@T))'23>>R  >>&))19#.Cc3;%+]]7%;
 NN6+<Z+HI((#00#00#yy#yy7#';;w#7  $x8Hd{#4X#>000vx8#+??7#;v(D/IJ (0*= ( c . ;%+]]6%:
; . 7#';;v#67s$    H+ I +I
	I
I+*I+c                 $    UR                  S5      $ )NrC  )r   )r@   r  s     r)   r  HTTPConnection._encode_request  s    ~~g&&r4   c                     [         R                  U5      nU(       a"  [        SU< SUR                  5       < S35      eg )Nz)method can't contain control characters.  (found at least ))$_contains_disallowed_method_pchar_researchr   group)r@   rw   matchs      r)   r  HTTPConnection._validate_method  sI     5;;FC?z J'',{{}&7q:; ; r4   c                     [         R                  U5      nU(       a"  [        SU< SUR                  5       < S35      eg Nz&URL can't contain control characters. r  r  !_contains_disallowed_url_pchar_rer  r   r  )r@   rx   r  s      r)   r  HTTPConnection._validate_path  sL     288=EcW M005/@C D D r4   c                     [         R                  U5      nU(       a"  [        SU< SUR                  5       < S35      eg r  r  )r@   r4  r  s      r)   r6  HTTPConnection._validate_host  sL     288>EdX N005/@C D D r4   c                 F   U R                   [        :w  a
  [        5       e[        US5      (       a  UR	                  S5      n[        U5      (       d  [        SU< 35      e[        U5      n[        U5       H~  u  p4[        US5      (       a  UR	                  S5      X#'   O1[        U[        5      (       a  [        U5      R	                  S5      X#'   [        X#   5      (       d  Mo  [        SX#   < 35      e   SR                  U5      nUS-   U-   nU R                  U5        g )Nr   rC  zInvalid header name r   zInvalid header value s   
	s   : )r.  r  r   r   r   _is_legal_header_namer   r   	enumerater   r   r~   _is_illegal_header_valuerZ   r  )r@   r?  valuesr   	one_valuer   s         r)   r  HTTPConnection.putheader  s    
 <<?*"$$68$$]]7+F$V,,ABBf%f-LAy(++%,,Y7	Is++	N11':	'	22 fi!IJJ . v&%%'Vr4   r  c                v    U R                   [        :X  a  [        U l         O
[        5       eU R	                  XS9  g )Nr  )r.  r  _CS_REQ_SENTr   r  )r@   r  r  s      r)   
endheadersHTTPConnection.endheaders*  s1     <<?*'DL"$$,Fr4   c                *    U R                  XX4U5        g rd   )_send_request)r@   rw   rx   r"  rU   r  s         r)   r  HTTPConnection.request7  s     	6~Fr4   c                    [        S U 5       5      n0 nSU;   a  SUS'   SU;   a  SUS'   U R                  " X40 UD6  SU;  an  SU;  ag  S	nU R                  X15      nUc6  Ub2  U R                  S
:  a  [	        SU-  5        SnU R                  SS5        OU R                  S[        U5      5        OS	nUR                  5        H  u  pU R                  X5        M     [        U[        5      (       a  [        US5      nU R                  X5S9  g )Nc              3   @   #    U  H  oR                  5       v   M     g 7frd   r=  )r>  ks     r)   r@  /HTTPConnection._send_request.<locals>.<genexpr>>  s      <GqGs   r4  r:   r  zaccept-encodingr  r   r   Fr   zUnable to determine size of %rTzTransfer-Encodingrr   zContent-Lengthr"  r  )	frozensetr  r$  rk   r   r  r~   r   r   r*   r  )r@   rw   rx   r"  rU   r  header_namesskipscontent_lengthr   r   s              r)   r  HTTPConnection._send_request<  s     <G <<\!!"E+,,-E()-u- </ #,6 "'!%!9!9$!G!)'??Q.!"BT"IJ)-':IFNN#3S5HI"N!--/JCNN3& *dC   4(D<r4   c                    U R                   (       a&  U R                   R                  5       (       a  S U l         U R                  [        :w  d  U R                   (       a  [	        U R                  5      eU R
                  S:  a0  U R                  U R                  U R
                  U R                  S9nO$U R                  U R                  U R                  S9n  UR                  5         [        U l        UR                  (       a  U R                  5         U$ Xl         U$ ! [         a    U R                  5         e f = f!   UR                  5         e = f)Nr   r`  )r,  r   r.  r  r   rk   rd  rv   rl   r   ConnectionErrorr   r-  ru   )r@   rj  s     r)   getresponseHTTPConnection.getresponsej  s    ??t7799"DO" <<<'4??"4<<00??Q**499doo26,, + @H **499T\\*JH	 
 $DL""


 O #+O # 

	NNs$   D (-D= D= D::D= =E)
__response__stater+  r9  rl   r2  r1  r/  r0  r*  rk   r4  r5  rv   r)  r(  )NN)NF)FFrd   ))rH   rI   rJ   rK   r  rb  r   rd  	HTTP_PORTrP  r  rk   staticmethodr  r$  r7  _GLOBAL_DEFAULT_TIMEOUTry   rJ  r3  rU  r\  rl  ro  ri  r   rc  r  r  r  r  r  r  r  r6  r  r  r  r  r  rL   rG   r4   r)   r   r   3  s    IM!NLIJ1 1
  > #'0N0N $;."1H( 
@
!#GJ	4(l 16(-}~';DD8Ge G )-b G$G
,=\=r4   r   c                   ^   ^  \ rS rSr\rS\R                  SSSS.U 4S jjjrU 4S jr	Sr
U =r$ )	HTTPSConnectioni  Nr&  )r(  r)  r  r*  c                j   > [         [        U ]  XUUUS9  Uc  [        U R                  5      nXPl        g )N)r*  )r   r  ry   r  r  _context)r@   r4  r5  r(  r)  r  r*  r   s          r)   ry   HTTPSConnection.__init__  s>     /41$g2@<E 2 G /?#Mr4   c                    > [         TU ]  5         U R                  (       a  U R                  nOU R                  nU R                  R                  U R                  US9U l        g )N)server_hostname)r   ri  r/  r4  r  wrap_socketrv   )r@   r  r   s     r)   ri  HTTPSConnection.connect  sQ     GO  "&"3"3"&))11$))BQ 2 SDIr4   )r  rv   rd   )rH   rI   rJ   rK   
HTTPS_PORTrP  r7  r  ry   ri  rL   r  r  s   @r)   r  r    s5     "	$ & > >$($$	$ 	$	S 	Sr4   r  c                       \ rS rSrSrg)r   i  rG   NrH   rI   rJ   rK   rL   rG   r4   r)   r   r     s     	r4   r   c                       \ rS rSrSrg)r   i  rG   Nr  rG   r4   r)   r   r         r4   r   c                       \ rS rSrSrg)r   i  rG   Nr  rG   r4   r)   r   r     r  r4   r   c                       \ rS rSrS rSrg)r   i  c                      U4U l         Xl        g rd   argsro   )r@   ro   s     r)   ry   UnknownProtocol.__init__  s    H	r4   r  NrH   rI   rJ   rK   ry   rL   rG   r4   r)   r   r     s    r4   r   c                       \ rS rSrSrg)r	   i  rG   Nr  rG   r4   r)   r	   r	     r  r4   r	   c                       \ rS rSrSrg)r
   i  rG   Nr  rG   r4   r)   r
   r
     r  r4   r
   c                   <    \ rS rSrSS jrS r\R                  rSrg)r   i  Nc                 ,    U4U l         Xl        X l        g rd   )r  partialexpected)r@   r  r  s      r)   ry   IncompleteRead.__init__  s    H	 r4   c                     U R                   b  SU R                   -  nOSnSU R                  R                  [        U R                  5      U4-  $ )Nz, %i more expectedr}   z%s(%i bytes read%s))r  r   rH   r<   r  ry  s     r)   __repr__IncompleteRead.__repr__  sK    ==$$t}}4AA$(?(?(+DLL(91(> > 	>r4   )r  r  r  rd   )	rH   rI   rJ   rK   ry   r  r"   __str__rL   rG   r4   r)   r   r     s    !> nnGr4   r   c                       \ rS rSrSrg)r   i  rG   Nr  rG   r4   r)   r   r     r  r4   r   c                       \ rS rSrSrg)r   i  rG   Nr  rG   r4   r)   r   r     r  r4   r   c                       \ rS rSrSrg)r   i  rG   Nr  rG   r4   r)   r   r     r  r4   r   c                       \ rS rSrSrg)r   i  rG   Nr  rG   r4   r)   r   r     r  r4   r   c                       \ rS rSrS rSrg)r   i  c                 D    U(       d  [        U5      nU4U l        Xl        g rd   )r   r  rD   r   s     r)   ry   BadStatusLine.__init__  s    :DE		r4   )r  rD   Nr  rG   r4   r)   r   r     s    r4   r   c                       \ rS rSrS rSrg)r   i  c                 B    [         R                  U S[        U4-  5        g )Nz&got more than %d bytes when reading %s)r   ry   rR   )r@   	line_types     r)   ry   LineTooLong.__init__  s"    t%M(0)'<&= 	>r4   rG   Nr  rG   r4   r)   r   r     s    >r4   r   c                       \ rS rSrS rSrg)r   i  c                 d    [         R                  U S5        [        R                  " U /UQ70 UD6  g )Nr}   )r   ry   ConnectionResetError)r@   poskws      r)   ry   RemoteDisconnected.__init__	  s*    tR(%%d7S7B7r4   rG   Nr  rG   r4   r)   r   r     s    8r4   r   )r&   )Gemail.parserr\   email.messagerw  re  r  rer7  rr  collections.abcr  urllib.parser   __all__r  r  rn   r-  r  r  globalsupdaterf  __members__r  phraser   rR   rS   compile	fullmatchr  r  r  r  r  r  r*   r   r3   rk  Messager6   rV   rb   re   BufferedIOBaser   r  r   r  r  r?   ImportError	Exceptionr   r   r   r   r	   r
   r   r   r   r   r   r   r   r
  r   r   )vs   0r)   <module>r     sg  N     	 	  
  ! 	
 # 	  ,, - #'//"="="D"D"FG"FQ["FG	 6 

#67AA ::&CDKK  %'JJ/@$A ! (*zz-'@ $ 3 E % %--'' <$ .9 @ ) 0g2$$ gT
t	 t	l!&S. S8 NN$%	I 	
	= 		 	m 
	m 		M 	] 	m 		/ 		. 		. 	M >- >
8-} 8 	E- H~)  		s   H%'H* *H32H3