403Webshell
Server IP : 178.105.222.151  /  Your IP : 216.73.216.38
Web Server : nginx/1.28.3
System : Linux MNK 7.0.0-15-generic #15-Ubuntu SMP PREEMPT_DYNAMIC Wed Apr 22 16:06:43 UTC 2026 x86_64
User : www-data ( 33)
PHP Version : 8.5.4
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/httplib2/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/httplib2/__pycache__/__init__.cpython-314.pyc
+
��Pj��
�&�Rt^RIt^RIHtHtHtHtRtRt.ROOt	Rt
Rt^RIt^RI
t
^RIt^RIt^RIt^RIHt^RIt^RIt^RIt^RIHt^RIt^R	IHt^R
IHt^RIt^RIt^RI t ^RI!t!^RI"t"^RI#t#^RI$t$^RI%t%^RI&t&^RI't'^RI(t)^RI*t*^RI+t+^RI-H.t.^R
I/5^RI0H0t0Rt1.RPOt2^t3^t4^t5.RQOt6RRt7]8!RS4t9^RI:H;t;];Px!4t=]>!]%RR4;'g]>!]%RR4;'g
]>!]%R4t?RTRlt@RtA]B!4tCRtD]#P�!R4tFRtGRtH]#P�!R4tI]#P�!R]#P�4tKRtL]#P�!R 4tMR!tNR"tOR#tP^tQR$tRR%tSR&tTR'tUR(tVR)tW!R*R+]B4tX!R,R-]X4tY!R.R/]X4tZ!R0R1]X4t[!R2R3]X4t\!R4R5]X4t]R6]YR7]\R8]ZR9][R:]]/t^.RUOt_!R;R<]B4t`!R=R>]B4ta!R?R@]a4tb!RARB]B4tc!RCR]B4tdRVRElteRWRFltf!RGRH]P�P�4ti!RIRJ]P�P�4tkRD]iRK]k/tl!RLR]B4tm!RMR]n4toRXRNltpR# ],d^RI-H+t+EL�i;i)Yz+Small, fast HTTP client library for Python.N)�ZlibDecoder�DecoderProtocol�LimitDecoder�DeflateDecoderz!Joe Gregorio (joe@bitworking.org)zCopyright 2006, Joe Gregorio�MITz0.22.0)�header)�gettext)�md5)�sha1)�socks)�auth)�*)�iri2uric�r�\\R4'dVRJ;'dV\PJ#VRJ#)�_GLOBAL_DEFAULT_TIMEOUTN)�hasattr�socketr)�timeouts&�3/usr/lib/python3/dist-packages/httplib2/__init__.py�has_timeoutr>s9���v�0�1�1��d�"�T�T�w�f�6T�6T�'T�T��$����Http�	ProxyInfo�Response)�certs�PROTOCOL_TLS_CLIENT�PROTOCOL_TLS�PROTOCOL_SSLv23c��\\R4'g\R4h\P!\4pV'd\VR4'd
V'*VnV'd\PM\PVnVeU\VR4'd8\V\4'd\\PV4pWGn
M\R4hVeU\VR4'd8\V\4'd\\PV4pWWnM\R4h\VR4'd
V'*VnVPV4V'dVP!W#V4V#)�
SSLContextz0httplib2 requires Python 3.2+ for ssl.SSLContext�check_hostname�maximum_versionzHsetting tls_maximum_version requires Python 3.7 and OpenSSL 1.1 or newer�minimum_versionzHsetting tls_minimum_version requires Python 3.7 and OpenSSL 1.1 or newer)r�ssl�RuntimeErrorr�DEFAULT_TLS_VERSIONr �	CERT_NONE�
CERT_REQUIRED�verify_mode�
isinstance�str�getattr�
TLSVersionr!r"�load_verify_locations�load_cert_chain)�"disable_ssl_certificate_validation�ca_certs�	cert_file�key_filer!r"�key_password�contexts&&&&&&& r�_build_ssl_contextr5�s)���3��%�%��M�N�N��n�n�0�1�G�*�g�g�?O�.P�.P�%G�!G���+M�#�-�-�SV�Sd�Sd�G���"��7�-�.�.��/�3�/�/�")�#�.�.�/�"J��&5�#��i�j�j��"��7�-�.�.��/�3�/�/�")�#�.�.�/�"J��&5�#��i�j�j��w�(�)�)�%G�!G����!�!�(�+�����	�\�B��Nrc�0�\\4pTPVPRR4P	R4Uu.uFq"P4NK	up4\VP
44Uu.uF
q3V9gKVNK	up#uupiuupi)�
connection��,)�list�
HOP_BY_HOP�extend�get�split�strip�keys)�response�hopbyhop�xrs&   r�_get_end2end_headersrD�su���J��H��O�O����\�2�(F�(L�(L�S�(Q�R�(Q�1�W�W�Y�(Q�R�S�!%�h�m�m�o�!6�Q�!6�v��:P�F�F�!6�Q�Q��S��Qs�B�8B�Bc���\VR\4pV\JdV#\VRR4pV'd\V^,4#\VRR4pV'd\V4#R#)�errno�argsN�
socket_err)r+�_missing�_errno_from_exception)�erFrGrHs&   rrJrJ�s`���A�w��)�E��H�����1�f�d�#�D��$�T�!�W�-�-���L�$�/�J��$�Z�0�0�rz9^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?c��\PV4P4pV^,V^,V^,V^,V^,3#)z{Parses a URI using the regex given in Appendix B of RFC 3986.

(scheme, authority, path, query, fragment) = parse_uri(uri)
)�URI�match�groups)�urirOs& r�	parse_urirQ�s?��
�Y�Y�s�^�
"�
"�
$�F��1�I�v�a�y�&��)�V�A�Y��q�	�B�Brc�Z�\V4wrr4pV'd	V'g\RV,4hVP4pVP4pV'gRpT;'dRPW4.4;'gTpVP4pVR,V,V,pWWg3#)z(Only absolute URIs are allowed. uri = %s�/�?z://)rQ�RelativeURIError�lower�join)rP�scheme�	authority�path�query�fragment�request_uri�
defrag_uris&       r�urlnormr_�s���1:�3��.�V��X����I�C�O�P�P����!�I�
�\�\�^�F�����3�3�C�H�H�d�]�3�;�;�t�K�
�\�\�^�F��%��)�+�k�9�J��k�5�5rz^\w+://z[^\w\-_.()=!]+c�8�\V\4'dTpVPR4pMVPR4p\	V4P4p\PRV4p\PRV4pVR,pRPW34#)z�Return a filename suitable for the cache.
Strips dangerous and common characters to create a filename we
can use to store the cache in.
�utf-8r8:N�ZNr9)
r)�bytes�decode�encode�_md5�	hexdigest�
re_url_scheme�sub�	re_unsaferW)�filename�filename_bytes�filemd5s&  r�safenamerns���
�(�E�"�"�!���?�?�7�+��!����1���>�"�,�,�.�G�� � ��X�.�H��}�}�R��*�H���}�H��8�8�X�'�(�(rz(?:\r\n)?[ \t]+c���\VP4UUu.uFKwr\V4P4\P\V4R4P
43NKM	upp4#uuppi)� )�dict�items�_convert_byte_strrV�NORMALIZE_SPACErir?)�headers�key�values&  r�_normalize_headersrxsj���!(�
�
��	
� /����s�
#�
)�
)�
+�_�-@�-@�AR�SX�AY�[^�-_�-e�-e�-g�i� /�	
����	
s�AA2
c�J�\V\4'g
\VR4#V#�ra)r)r*)�ss&rrsrs%s ���a�����1�g����Hrc��/pRV9d�VR,PR4pVUUu.uFapRVPR48wgK\VPR^4Uu.uF qDP4P	4NK"	up4NKc	pppVUu.uF;pRVPR48XgKVP4P	4^3NK=	pp\WW,4pV#uupiuuppiuupi)�
cache-controlr9�=���)r>�find�tupler?rVrq)ru�retval�parts�partrC�parts_with_args�name�
parts_wo_argss&       r�_parse_cache_controlr�+s���
�F��'�!���(�.�.�s�3��OT�
�OT�t�XZ�^b�^g�^g�hk�^l�Xl�B�E�d�j�j��a�.@�A�.@��7�7�9�?�?�$�.@�A�B�u�	�
�@E�]�u�t��d�i�i�X[�n�H\�2�$�*�*�,�,�,�.��2�u�
�]��o�5�6���M��	B��
��^s)�C0�C0�&C+�C0�C6�2$C6�+C0c��Rp\V4p\V4pRV9d<VR,P4PR4R
8wdRpRV9dRVR&V#RV9dRpV#RV9dRpV#RV9dRpV#RV9Ed"\P!\
PPVR,44p\P!4p\^We,
4pR	V9d\VR	,4pMaR
V9dY\
PPVR
,4p	RV	8Xd^pM*\^\P!V	4V,
4pM^pR	V9d\VR	,4pRV9d\VR,4p
Wz,
pW�8�dRpV# \d^pLUi;i \d^pLNi;i \d^p
LGi;i)a�Determine freshness from the Date, Expires and Cache-Control headers.

We don't handle the following:

1. Cache-Control: max-stale
2. Age: headers are not used in the calculations.

Not that this algorithm is simpler than you might think
because we are operating as a private (non-shared) cache.
This lets us ignore 's-maxage'. We can also ignore
'proxy-invalidate' since we aren't a proxy.
We will never return a stale document as
fresh as a design decision, and thus the non-implementation
of 'max-stale'. This also lets us safely ignore 'must-revalidate'
since we operate as if every server has sent 'must-revalidate'.
Since we are private we get to ignore both 'public' and
'private' parameters. We also ignore 'no-transform' since
we don't do any transformations.
The 'no-store' parameter is handled at a higher level.
So the only Cache-Control parameters we look at are:

no-cache
only-if-cached
max-age
min-fresh
�STALE�pragmazno-cache�TRANSPARENTr}�only-if-cached�FRESH�datezmax-age�expiresNz	min-freshr)r�rVr��calendar�timegm�email�utils�parsedate_tz�time�max�int�
ValueError)�response_headers�request_headersr��cc�cc_responser��now�current_age�freshness_lifetimer��	min_freshs&&         r�_entry_dispositionr�>s���8�F�	�o�	.�B�&�'7�8�K��?�"��x�'@�'F�'F�'H�'M�'M�j�'Y�]_�'_����/�1�/9�O�O�,�J�M�I
�r�	���F�M�E
�{�	"���B�M�A
�R�	���>�M�=
�#�	#����u�{�{�7�7�8H��8P�Q�R���i�i�k���!�S�Z�(����#�
'�%(��Y�)?�%@�"��*�
*��k�k�.�.�/?�	�/J�K�G��w��%&�"�%(��H�O�O�G�,D�t�,K�%L�"�!"����?�
'�%(��I��%7�"��"��
���;��0�	�
�$�K��+��F��M��/�
'�%&�"�
'���
'�%&�"�
'��
�
��	�
�s6�-F'�)F:�G
�'
F7�6F7�:
G
�	G
�

G�Gc��TpRpVPVR4p\P!\3/VBpVR9dMV!\	44PV^4p\\V44VR&VPV4VR&V# \\P3d$T!\44PT^4pLji;i \\P3d!Rp\\R4T,TT4hi;i)�content-encodingN�content-lengthz-content-encodingr8zDContent purported to be compressed with %s but failed to decompress.)�gzip�deflate�zlib)r=�	functools�partialrr�
consume_bytes�IOErrorr��errorrr*�len�pop�FailedToDecompressContent�_)rA�new_content�limit_kwargs�content�encoding_header�encoding�
limit_wraps&&&    r�_decompressContentr��s���G�(�O��|�|�O�T�2�H��"�"�<�@�<�@�J�
��2�2�
U�$�[�]�3�A�A�+�q�Q��*-�S��\�):�H�%�&�,4�L�L��,I�H�(�)��N���T�Z�Z�(�
U�$�^�%5�6�D�D�[�RS�T��
U��

�T�Z�Z� �
���'�
�T�U��
���	
�	
�
�s.�C	� B�+C	�;C�C	�C�C	�	;Dc�a�V3RlpV#)c��<�SP4F�wr\RV,RVPR7\V\P
4'd4\VP
VPR7VPR7Kw\P
!W PRVR7p\VP
4VPR7K�	\VPR7R#)z%s:rp)�end�file)�
maxlinelen)r�ra)r��charset�header_nameN)rr�print�_fpr)r�Headerre�
_maxheaderlen)�self�h�vru�msgs&   �r�_write_headers�+_bind_write_headers.<locals>._write_headers�s�����I�I�K�D�A��%�!�)��4�8�8�4��!�V�]�]�+�+��a�h�h�$�*<�*<�h�=�D�H�H�M�!�-�-��6H�6H�RY�gh�i���g�n�n�&�T�X�X�6� �	�4�8�8�r�)r�r�sf r�_bind_write_headersr��s�����rc��V'Edo\V4p\V4pRV9gRV9dVPV4R#\PP	4pVP4Fwr�VR9gKW�V&K	VP
RR4p
V
'dMV
P4PRR4PR4pVFpRV,pW,Wx&K	VPp
V
R8Xd^�p
RV
,pVP4p\ P"!R
RV4pRP%VP'R
4VP'R
4V.4pVP)VV4R#R# \dK�i;i \d*\TR	\T44TP4pL�i;i)zno-store�varyNrpr8r9�
-varied-%s�0zstatus: %d
r�z
(?!
)|(?<!
)
z
rra)�statusr��transfer-encoding)r��deleter��message�Messagerrr=rV�replacer>�KeyErrorr��	as_string�UnicodeEncodeError�setattrr��rerirWre�set)r�r�r��cache�cachekeyr�r��inforvrwr��vary_headersrr��
status_header�
header_str�texts&&&&&            r�_updateCacher��s����x�
!�/�
2��*�+;�<�����z�[�8��L�L��"��=�=�(�(�*�D�.�4�4�6�
���Q�Q� %��I�7�$�'�'���5�D��#�z�z�|�3�3�C��<�B�B�3�G��*�F�&��/�C��$3�$;��	�+�&�,�,�F���}���,�v�5�M�
.�!�^�^�-�
�
��� 4�f�j�I�J��8�8�]�1�1�'�:�J�<M�<M�g�<V�X_�`�a�D��I�I�h��%�M��($�����&�
.���.�0C�D�0I�J�!�^�^�-�
�
.�s$�
E:�
F�:F	�F	�1G�?Gc��\\P!4:R\^4Uu.uF!pR\P
!^^	4,NK#	up:2P
R44P4pVR,#uupi)�:�
0123456789ra:N�N)rfr��ctime�range�random�	randrangererg)�i�digs  r�_cnoncer��sn��
��J�J�L�QV�WY�QZ�"[�QZ�A�<��0@�0@��A�0F�#G�#G�QZ�"[�	\�d�d�el�m���i�k���s�8�O��#\s�'Bc���\P!\V:V:V:2PR44P	44P4P
R4#rz)�base64�	b64encode�_share�digestr?rd)�cnonce�iso_now�passwords&&&r�_wsse_username_tokenr��sJ������6�7�H�E�M�M�g�V�W�^�^�`�a�g�g�i�p�p�qx�y�rc�ha�]tRtRtoRtRtRtRtRtRt	Rt
R	tR
tRt
RtR
tRtVtR#)�Authenticationi�c�T�\V4wr�r�pW�nW nWnWpnR#�N)rQrZ�host�credentials�http)
r�r�r�r]rurAr�r�rXrYrZr[r\s
&&&&&&&&     r�__init__�Authentication.__init__�s(��5>�{�5K�2��D���	��	�&���	rc�n�\V4wr#rEpV\VP4RPR4#)NrS)rQr�rZ�count)r�r]rXrYrZr[r\s&&     r�depth�Authentication.depth�s4��5>�{�5K�2��D���3�t�y�y�>�+�,�2�2�3�7�7rc��\V4wr4rVpWP8H;'dVPVP4#r�)rQr��
startswithrZ)r�r�r]rXrYrZr[r\s&&&     r�inscope�Authentication.inscope�s5��5>�{�5K�2��D���	�	�!�A�A�t���t�y�y�'A�Arc��R#)zfModify the request headers to add the appropriate
Authorization header. Over-rise this in sub-classes.Nr��r��methodr]rur�s&&&&&r�request�Authentication.requests��	
rc��R#)z�Gives us a chance to update with new nonces
or such returned from the last authorized response.
Over-rise this in sub-classes if necessary.

Return TRUE is the request is to be retried, for
example Digest may return stale=true.
Fr�)r�rAr�s&&&rrA�Authentication.response	s��rc��R#�Fr��r�rs&&r�__eq__�Authentication.__eq__���rc��R#�Tr�rs&&r�__ne__�Authentication.__ne__���rc��R#rr�rs&&r�__lt__�Authentication.__lt__rrc��R#rr�rs&&r�__gt__�Authentication.__gt__rrc��R#rr�rs&&r�__le__�Authentication.__le__rrc��R#rr�rs&&r�__ge__�Authentication.__ge__"rrc��R#rr��r�s&r�__bool__�Authentication.__bool__%rr)r�r�r�rZN)�__name__�
__module__�__qualname__�__firstlineno__r�rrrrArrrrr"r%r)�__static_attributes__�__classdictcell__��
__classdict__s@rr�r��sG�����8�B�

�
��������rr�c�,a�]tRtRtoRtRtRtVtR#)�BasicAuthenticationi)c
�6�\PWW#WEWg4R#r��r�r��r�r�r�r]rurAr�r�s&&&&&&&&rr��BasicAuthentication.__init__*�������4�g�Y`�grc��R\P!RVP,PR44P	4PR4,VR&R#)�GModify the request headers to add the appropriate
Authorization header.zBasic z%s:%sra�
authorizationN)r�r�r�rer?rdr
s&&&&&rr�BasicAuthentication.request-sH��$,�f�.>�.>�
�t�'�'�
'�/�/��8�/
�
�%�'�&�&��/�$"��� rr�N�r+r,r-r.r�rr/r0r1s@rr4r4)s����h�"�"rr4c�:a�]tRtRtoRtRtRRltRtRtVt	R#)	�DigestAuthenticationi5zIOnly do qop='auth' and MD5, since that
is all Apache currently implementsc
�p�\PWW#WEWg4\P!VR4R,VnVPPRR4pRVP
4U	u.uFq�P4NK	up	9;'dR;'gRVPR&VPR,f\\RV,44hVPPRR4P4VPR&VPR,R8wd-\\RVPR,,44hR	PVP^,R
VPR,R
VP^,.4Vn
^VPR&R#uup	i)
�www-authenticater��qoprNzUnsupported value for qop: %s.�	algorithm�MD5�$Unsupported value for algorithm: %s.r8r��realm�nc)r�r�r�_parse_www_authenticate�	challenger=r>r?�"UnimplementedDigestAuthOptionErrorr��upperrWr��A1)
r�r�r�r]rurAr�r�rCrCs
&&&&&&&&  rr��DigestAuthentication.__init__9s[������4�g�Y`�g��5�5�h�@R�S�T\�]����n�n� � ���/��!'�s�y�y�{�+K�{�!�G�G�I�{�+K�!K� W� W�QW� _� _�[_����u���>�>�%� �(�4�Q�7W�Z]�7]�5^�_�_�&*�n�n�&8�&8��e�&L�&R�&R�&T����{�#��>�>�+�&�%�/�4��8�4�>�>�+�;V�V�W��
��'�'�4�+�+�A�.��T�^�^�G�5L�c�SW�Sc�Sc�de�Sf�h�i��� ����t���,Ls�+F3Nc�~a	�Ro	V	3RlpRPVRV.4pT;'g\4VPR&RV!S	!VP4VPR,:RRVPR	,,:RVPR,:RVPR
,:RS	!V4:2	4,pRVP^,VPR,VPR,VVPR
,VVPR
,VPR	,VPR,3	,VR&VPPR4'd.VR;;,RVPR,,,
uu&VPR	;;,^,
uu&R#)�Modify the request headersc�R�\VPR44P4#rz)rfrerg)rCs&r�<lambda>�.DigestAuthentication.request.<locals>.<lambda>Js��d�1�8�8�G�,�-�7�7�9rc�"<�S!V:RV:24#)r�r�)r{�d�Hs&&�rrRrSKs���!�q�!�,�-rr8r�r�z"%s"�noncez%08xrHrCzoDigest username="%s", realm="%s", nonce="%s", uri="%s", algorithm=%s, response=%s, qop=%s, nc=%08x, cnonce="%s"rGrDr<�opaquez
, opaque="%s"N)rWr�rJrMr�r=)
r�rr]rur�r��KD�A2�request_digestrVs
&&&&&&   @rr�DigestAuthentication.requestHsb���9��
-��
�W�W�f�c�;�/�
0��#)�#6�#6�W�Y����x� ��"�
�d�g�g�J����w�'�'������-�-�-����x�(�(����u�%�%��"��

�
#
�

��
#�
���Q���N�N�7�#��N�N�7�#���N�N�;�'���N�N�5�!��N�N�4� ��N�N�8�$�

�	$
��� ��>�>���h�'�'��O�$��$�.�.��:R�(R�R�$����t���!�rc�h�RV9dh\P!VR4PR/4pRVPR48Xd(VR,VPR&^VPR&R#R	#\P!VR4pRV9d&VR,VPR&^VPR&R	#)
zauthentication-inforBr��true�stalerWrHT�	nextnonceF)rrIr=rJ�_parse_authentication_info)r�rAr�rJ�updated_challenges&&&  rrA�DigestAuthentication.responsels��� ��0��4�4�X�?Q�R�V�V�W_�ac�d�I�����w�/�/�*3�G�*<����w�'�'(����t�$��0��!%� ?� ?��J_� `���/�/�*;�K�*H����w�'�'(����t�$�r)rMrJr�)
r+r,r-r.�__doc__r�rrAr/r0r1s@rr@r@5s����*�
!�""�H
�
rr@c�:a�]tRtRtoRtRtRtRtRtRt	Vt
R#)	�HmacDigestAuthenticationi|z@Adapted from Robert Sayre's code and DigestAuthentication above.�!Thomas Broyer (t.broyer@ltgt.net)c�"�\PWW#WEWg4\P!VR4pVR,VnVPPRR4VPR&VPR,R9dRVPR&VPPRR4VPR&VPPR4'g\
\R44hVPPRR	4VPR&VPR,R9d-\
\RVPR,,44hVPPRR
4VPR&VPR,R9d-\
\RVPR,,44hVPR,R
8Xd
\Vn	M\Vn	VPR,R8Xd
\VnM\VnRPVP^,RVPPRPVP^,VPR,.44P4P!4RVPR,.4VnVPPVP"4P4P!4VnR#)rB�
hmacdigest�reason�unauthorized�saltr8�snoncezCThe challenge doesn't contain a server nonce, or this one is empty.rD�
HMAC-SHA-1�HMAC-MD5rFzpw-algorithm�SHA-1rEz'Unsupported value for pw-algorithm: %s.r�rGN)rk�	integrity)rnro)rprE)r�r�rrIrJr=�&UnimplementedHmacDigestAuthOptionErrorr�rf�hashmodr��	pwhashmodrWr��newrgrVrv)	r�r�r�r]rurAr�r�rJs	&&&&&&&& rr��!HmacDigestAuthentication.__init__�sW������4�g�Y`�g��0�0��;M�N�	�"�<�0���#'�>�>�#5�#5�h��#O����x� ��>�>�(�#�+H�H�'5�D�N�N�8�$�!%���!3�!3�F�B�!?����v���~�~�!�!�(�+�+�8��W�X��
�'+�n�n�&8�&8��l�&S����{�#��>�>�+�&�.H�H�8��8�4�>�>�+�;V�V�W��
�*.���);�);�N�G�)T����~�&��>�>�.�)�1A�A�8��;�d�n�n�^�>\�\�]��
��>�>�+�&�*�4��D�L��D�L��>�>�.�)�U�2�!�D�N�!�D�N��7�7�� � ��#�����"�"�2�7�7�D�,<�,<�Q�,?����PV�AW�+X�#Y�Z�d�d�f�l�l�n�����w�'�
�
����>�>�%�%�d�h�h�/�9�9�;�A�A�C��rc���\V4pRPVUu.uFpRV,NK	up4pRPVUu.uFqcV,NK
	up4p\P!R\P!44p	\4p
V:RV:RV
:RVPR,:RV:2	p\P!VPW�P4P4P4pRVP^,:RVPR,:R	VPR,:R
V
:RV:RV	:R
V:RV:R2VR&R#uupiuupi)rPr8z%s �%Y-%m-%dT%H:%M:%SZr�rmzHMACDigest username="z
", realm="rGz", snonce="z", cnonce="z", uri="z", created="z
", response="z", headers="�"r<N)rDrWr��strftime�gmtimer�rJ�hmacrurvrsrgrVr�)r�rr]rur�r@�k�keylist�headers_val�createdr�r[s&&&&&       rr� HmacDigestAuthentication.request�s
��#�G�,���'�'�d�3�d��5�1�9�9�d�3�4���g�g�4�8�4�a�q�z�z�4�8�9���-�-� 4�d�k�k�m�D�����-3�[�&�$�.�.�Ya�Jb�Jb�do�q�����$�(�(�N�L�L�I�S�S�U�[�[�]��
���Q����N�N�7�#�#��N�N�8�$�$������
$
��� ��
4��8s�E�Ec��\P!VR4PR/4pVPR4R9dR#R#)rBrirjTF)rqr_)rrIr=)r�rAr�rJs&&& rrA�!HmacDigestAuthentication.response�s<���0�0��;M�N�R�R�S_�ac�d�	��=�=��"�&<�<��r)rJrsrvrtN)r+r,r-r.rd�
__author__r�rrAr/r0r1s@rrfrf|s#����J�4�J�(D�T
�0�rrfc�0a�]tRtRtoRtRtRtRtVtR#)�WsseAuthenticationi�a�This is thinly tested and should not be relied upon.
At this time there isn't any third party server to test against.
Blogger and TypePad implemented this algorithm at one point
but Blogger has since switched to Basic over HTTPS and
TypePad has implemented it wrong, by never issuing a 401
challenge but instead requiring your client to telepathically know that
their endpoint is expecting WSSE profile="UsernameToken".c
�6�\PWW#WEWg4R#r�r6r7s&&&&&&&&rr��WsseAuthentication.__init__�r9rc	��RVR&\P!R\P!44p\4p\	WeVP
^,4pRVP
^,:RV:RV:RV:R2	VR	&R
#)r;zWSSE profile="UsernameToken"r<rxzUsernameToken Username="z", PasswordDigest="z
", Nonce="z", Created="ryzX-WSSEN)r�rzr{r�r�r�)r�rr]rur�r�r��password_digests&&&&&   rr�WsseAuthentication.request�sk��$B��� ��-�-� 4�d�k�k�m�D�����.�v��@P�@P�QR�@S�T�����Q������	
���rr�N)	r+r,r-r.rdr�rr/r0r1s@rr�r��s����A�h�
�
rr�c�,a�]tRtRtoRtRtRtVtR#)�GoogleLoginAuthenticationi�c�f�^RIHp\PWW#WEWg4X	P!VR4p
V
R,PRR4pVR8XdVP
R4^8�dRp\V^,V^,W�R,R	7p	VPPR
RV!V	4RR
/R7wr�VPR4p
\V
Uu.uF'q�'gK\VPR^44NK)	up4pVPR8Xd
RVn
R#VR,Vn
R#uupi)�)�	urlencoderB�googlelogin�service�xapir��cl�
user-agent)�Email�Passwdr��sourcez+https://www.google.com/accounts/ClientLogin�POSTzContent-Typez!application/x-www-form-urlencoded)r�bodyru�
r~i�r8�AuthN)�urllib.parser�r�r�rIr=r�rqr�rr>r�r�r�)r�r�r�r]rurAr�r�r�rrJr��resp�lines�linerUs&&&&&&&&        rr��"GoogleLoginAuthentication.__init__�s��*�����4�g�Y`�g��0�0��;M�N�	��M�*�.�.�y�&�A���f���!1�!1�*�!=��!A��G�
�+�a�.��Q���am�Yn�p���	�	�)�)�9���4��#�%H�I�	*�
�
���
�
�d�#����F����+�%��
�
�3��*�+��F�G���;�;�#���D�I��&�	�D�I��	Gs�	D.�D.c�2�RVP,VR&R#)r;zGoogleLogin Auth=r<N�r�r
s&&&&&rr�!GoogleLoginAuthentication.requests��$7����#B��� rr�Nr>r1s@rr�r��s����"�8C�Crr��basic�wsser�rir�c�Ba�]tRtRtoRt]3RltRtRtRt	Rt
VtR#)	�	FileCacheiz�Uses a local directory as a store for cached files.
Not really safe to use if multiple threads or processes are going to
be running on the same cache.
c��WnW n\PP	V4'g#\P
!VP4R#R#r�)r��safe�osrZ�exists�makedirs)r�r�r�s&&&rr��FileCache.__init__s4���
��	��w�w�~�~�e�$�$��K�K��
�
�#�%rc��Rp\PPVPVP	V44p\VR4pVP
4pVP4V# \dT#i;i)N�rb)	r�rZrWr�r��open�read�closer�)r�rvr��
cacheFullPath�fs&&   rr=�
FileCache.getsl���������T�Z�Z����3��@�
�	��]�D�)�A��V�V�X�F�
�G�G�I��
���	���
�	�s�,A+�+A:�9A:c���\PPVPVP	V44p\VR4pVP
V4VP4R#)�wbN)r�rZrWr�r�r��writer�)r�rvrwr�r�s&&&  rr��
FileCache.set*sB�������T�Z�Z����3��@�
����%��	�����	���	rc���\PPVPVP	V44p\PPV4'd\P!V4R#R#r�)r�rZrWr�r�r��remove)r�rvr�s&& rr��FileCache.delete0sF�������T�Z�Z����3��@�
�
�7�7�>�>�-�(�(��I�I�m�$�)r)r�r�N)r+r,r-r.rdrnr�r=r�r�r/r0r1s@rr�r�s(�����
$,�$�	��%�%rr�c�<a�]tRtRtoRtRRltRtRtRtVt	R#)	�Credentialsi6c��.VnR#r��r�r(s&rr��Credentials.__init__7�
����rc�\�VPPVP4W34R#r��r��appendrV�r�r�r��domains&&&&r�add�Credentials.add:s!������������ @�Arc��.VnR#r�r�r(s&r�clear�Credentials.clear=r�rc#�b"�VPFwr#pVR8Xg	W8XgKW43x�K	R#5i�r8Nr�)r�r��cdomainr�r�s&&   r�iter�Credentials.iter@s/���)-�)9�)9�%�W�H��"�}�� 1��&�&�*:�s�/�/r�N�r8)
r+r,r-r.r�r�r�r�r/r0r1s@rr�r�6s�����B��'�'rr�c�0a�]tRtRtoRtRtRtRtVtR#)�KeyCertsiFzJIdentical to Credentials except that
name/password are mapped to key/cert.c�^�VPPVP4WV34R#r�r��r�rv�certr�r�s&&&&&rr��KeyCerts.addJs#������������H� E�Frc#�d"�VPFwr#rEVR8Xg	W8XgKW4V3x�K	R#5ir�r�)r�r�r�rvr�r�s&&    rr��
KeyCerts.iterMs1���.2�.>�.>�*�W�4��"�}�� 1��(�+�+�/?�s�0�0r�N)	r+r,r-r.rdr�r�r/r0r1s@rr�r�Fs����-�G�,�,rr�c��]tRtRtRtR#)�AllHostsiSr�N)r+r,r-r.r/r�rrr�r�Ss��rr�c�Pa�]tRtRtoRtRtRRltRtRtRt	Rt
R	tR
tVt
R#)
riWz,Collect information required to use a proxy.Nc��\V\4'dVP4p\V\4'dVP4pVVVVVVV3wVnVnVnVnVnVnVn	R#)aArgs:

proxy_type: The type of proxy server.  This must be set to one of
socks.PROXY_TYPE_XXX constants.  For example:  p =
ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, proxy_host='localhost',
proxy_port=8000)
proxy_host: The hostname or IP address of the proxy server.
proxy_port: The port that the proxy server is running on.
proxy_rdns: If True (default), DNS queries will not be performed
locally, and instead, handed to the proxy to resolve.  This is useful
if the network does not allow resolution of non-local names. In
httplib2 0.9 and earlier, this defaulted to False.
proxy_user: The username used to authenticate with the proxy server.
proxy_pass: The password used to authenticate with the proxy server.
proxy_headers: Additional or modified headers for the proxy connect
request.
N)
r)rcrd�
proxy_type�
proxy_host�
proxy_port�
proxy_rdns�
proxy_user�
proxy_pass�
proxy_headers)r�r�r�r�r�r�r�r�s&&&&&&&&rr��ProxyInfo.__init__\s��(�j�%�(�(�#�*�*�,�J��j�%�(�(�#�*�*�,�J�
�������
�	
��O��O��O��O��O��O��rc��VPVPVPVPVPVP
VP3#r�)r�r�r�r�r�r�r�r(s&r�astuple�ProxyInfo.astuple�s?���O�O��O�O��O�O��O�O��O�O��O�O����
�	
rc�j�\;'d'VPR8g;'dVPR8g#r�)rr�r�r(s&r�isgood�ProxyInfo.isgood�s*���P�P�$�/�/�T�1�P�P����4�8O�Prc�.�VPV4'*#r�)�bypass_host)r��hostnames&&r�
applies_to�ProxyInfo.applies_to�s���#�#�H�-�-�-rc��VP\JdR#RVPR4,pVPFEpVPR4'dVP	V4'dR#VRV,8XgKDR#	R#)z1Has this host been excluded from the proxy configT�.F)�bypass_hostsr��lstripr�endswith)r�r��	skip_names&& rr��ProxyInfo.bypass_host�sn������(�������-�-���*�*�I��#�#�C�(�(�X�->�->�y�-I�-I���3��?�*��
+�rc�&�RPVR7#)zZ<ProxyInfo type={p.proxy_type} host:port={p.proxy_host}:{p.proxy_port} rdns={p.proxy_rdns})�pz�<ProxyInfo type={p.proxy_type} host:port={p.proxy_host}:{p.proxy_port} rdns={p.proxy_rdns} user={p.proxy_user} headers={p.proxy_headers}>)�formatr(s&r�__repr__�ProxyInfo.__repr__�s��
@��&�4�&�.�		r)r�r�r�r�r�r�r�r�)TNNN)r+r,r-r.rdr�r�r�r�r�r�r�r/r0r1s@rrrWs2����6��L�(
�T	
�Q�.�
��rr�c���VR9dR#VR,p\PPV\PPVP444pV'gR#\	W RR7#)z4Read proxy info from the environment variables.
    N�_proxy)�noproxy)r��https)r��environr=rL�proxy_info_from_url)r�env_var�urls&  r�proxy_info_from_environmentr�sT���&�&���x��G�
�*�*�.�.��"�*�*�.�.�����"A�
B�C����s�D�9�9rc	�J�\PPV4p^p\TVPVP
;'g\
R^PR7V,VP;'gRVP;'gRRR7p.pVf?\PPR\PPRR44pVR8Xd\pM@VP4'd+VPR	4p\\!\"V44pWTnV#)
zBConstruct a ProxyInfo from a URL (such as http_proxy env var)
    i�)rr�N)r�r�r�r�r�r��no_proxy�NO_PROXYr8r
r9)�urllib�parse�urlparserr��portrq�usernamer�r�rr=r�r?r>r��filter�boolr�)rrrr��pir�s&&&   rrr�s����,�,�
�
��
$�C��J�	���<�<��8�8�?�?�t�#�B�7��?��<�<�'�'�4��<�<�'�'�4��

�B��L����*�*�.�.��R�Z�Z�^�^�J��-K�L���#�~���	������}�}�S�)���V�D�,�7�8��"�O�
�Irc�4a�]tRtRtoRtRRltRtRtVtR#)�HTTPConnectionWithTimeouti�aOHTTPConnection subclass that supports timeouts

HTTPConnection subclass that supports timeouts

All timeouts are in seconds. If None is passed for timeout then
Python's default timeout for sockets will be used. See for example
the docs of socket.setdefaulttimeout():
http://docs.python.org/library/socket.html#socket.setdefaulttimeout
Nc���\PPPWW#R7W@nV'd(\V\4'gV!R4VnR#R#R#))rrr�N)r��client�HTTPConnectionr��
proxy_infor)r)r�r�rrrs&&&&&rr��"HTTPConnectionWithTimeout.__init__�sG�����"�"�+�+�D�T�+�S�$���j��Y�?�?�(��0�D�O�@�:rc���VP'd\f\R4hVP'duVPP4'dUVPP	VP
4'd*RpVPP
4wpppppppTp	Tp
MRpVP
p	VPp
RpRp\P!W�^\P4EF�pVwr�pppV'd>\P!W�V4VnVPPVXXXXX4MU\P!W�V4VnVPP\P\P ^4\#VP$4'd&VPP'VP$4VP(^8�da\+RP-VP
VP44V'd*\+RP-\/XXXXXX3444VPP1VP
VP3VR,,4M	VP'gVhR# \P2d�pTpTP(^8�da\+RP-TP
TP44T'd*\+R	P-\/XXXXXX3444TP'dTPP54RTnRp?EKrRp?ii;i)
z3Connect to the host and port specified in __init__.Nz2Proxy support missing but proxy use was requested!TFz connect: ({0}, {1}) ************zproxy: {0} ************:�NN�connect fail: ({0}, {1})�
proxy: {0})rr�ProxiesUnavailableErrorr�r�r�r�rr�getaddrinfo�SOCK_STREAM�
socksocket�sock�setproxy�
setsockopt�IPPROTO_TCP�TCP_NODELAYrr�
settimeout�
debuglevelr�r�r*�connectr�r�)r��	use_proxyr�r�r�r�r�r�r�r�rrH�res�af�socktype�proto�	canonname�sarKs&                  rr)�!HTTPConnectionWithTimeout.connect�s����?�?�?�u�}�)�*^�_�_��?�?�?�t���5�5�7�7�D�O�O�<V�<V�W[�W`�W`�<a�<a��I����'�'�)�
���������D��D��I��9�9�D��9�9�D��J��
��%�%�d�!�V�5G�5G�H�C�14�.�B�%��B�"
�� %� 0� 0��u� E�D�I��I�I�&�&�"�J�
�J�
�T^��!'�
�
�b�E� B�D�I��I�I�(�(��);�);�V�=O�=O�QR�S��t�|�|�,�,��I�I�(�(����6��?�?�Q�&��<�C�C�D�I�I�t�y�y�Y�Z� ��5�<�<� #�Z��Z��U_�an�$p� q����	�	�!�!�4�9�9�d�i�i�"8�2�b�6�"A�B�
�KI�L�y�y�y������<�<�

��
��?�?�Q�&��4�;�;�D�I�I�t�y�y�Q�R� ��(�/�/� #�Z��Z��U_�an�$p� q���
�9�9�9��I�I�O�O�%� ��	���

�s �<F
J � M'�5BM"�:!M"�"M')rr")NNN)	r+r,r-r.rdr�r)r/r0r1s@rrr�s�����1�B�Brrc�@aa�]tRtRtoRtRV3RlltRtRtVtV;t	#)�HTTPSConnectionWithTimeouti0aThis class allows communication via SSL.

All timeouts are in seconds. If None is passed for timeout then
Python's default timeout for sockets will be used. See for example
the docs of socket.setdefaulttimeout():
http://docs.python.org/library/socket.html#socket.setdefaulttimeout
c
�:<�W�nV'dTM\VnW`nV'd$\	V\
4'gV!R4Vn\
VPVPVVV	V
VR7p\\V`'WW\R7W0n
W@nW�nR#)r)r!r"r3)rrr4N)
r/�CA_CERTSr0rr)rr5�superr3r�r2r1r3)r�r�rr2r1rrr0r/�tls_maximum_version�tls_minimum_versionr3r4�	__class__s&&&&&&&&&&&& �rr��#HTTPSConnectionWithTimeout.__init__9s����3U�/�$,��(��
�$���j��Y�?�?�(��1�D�O�$��3�3��M�M���/�/�%�
��	�(�$�8��W�	9�	
�!�
�"��(�rc�	�VP'duVPP4'dUVPPVP4'd*RpVPP	4wpppppppTp	Tp
MRpVPp	VP
p
RpRpRp\P!W�^\P4pVEF�wr�pppV'd/\P!W�V4pVPVXXXXX4MF\P!W�V4pVP\P\P^4\VP 4'dVP#VP 4VP%VPVP
34VP&P)VVPR7Vn\-VP&R4'gMVP.'g;\0P2!VP*P54VP4VP>^8�da\ARPCVPVP
44V'd*\ARPC\EXXXXXV3444M	VP*'gVhR# \6dFTP*P9\P:4TP*P=4hi;i \0PF\0PH3dRpX'dTP=4TP*'dTP*P=4RTnhRp?i\P \PJ3dh\PLd�pTpTP>^8�da\ARPCTPTP
44T'd*\ARPC\EXXXXXT3444TP*'dTP*P=4RTnRp?EK�Rp?ii;i)	z(Connect to a host on a given (SSL) port.TFN)�server_hostnamer zconnect: ({0}, {1})rr)'rr�r�r�r�rrrr rr!r#r$r%r&rrr'r)�_context�wrap_socketr"rr/r#�match_hostname�getpeercert�	Exception�shutdown�	SHUT_RDWRr�r(r�r�r*�SSLError�CertificateError�gaierrorr�)r�r*r�r�r�r�r�r�r�r�rrH�address_info�familyr-r.r/�sockaddrr"rKs&                   rr)�"HTTPSConnectionWithTimeout.connect_so���?�?�?�t���5�5�7�7�D�O�O�<V�<V�W[�W`�W`�<a�<a��I����'�'�)�
���������D��D��I��9�9�D��9�9�D��J� �M��
��)�)�$�a��9K�9K�L��<H�8�F�e�Y��7
�� �+�+�F�e�D�D��M�M�"�J�
�J�
�T^��"�=�=��5�A�D��O�O�F�$6�$6��8J�8J�A�N��t�|�|�,�,��O�O�D�L�L�1����d�i�i����3�4� �M�M�5�5�d�D�I�I�5�V��	��t�}�}�.>�?�?��Ho�Ho�Ho���*�*�4�9�9�+@�+@�+B�D�I�I�N��?�?�Q�&��/�6�6�t�y�y�$�)�)�L�M� ��(�/�/� #�Z��Z��U_�an�$p� q���8
�s=I�t�y�y�y�����K%���	�	�*�*�6�+;�+;�<��	�	���)�����L�L�#�"6�"6�7�
���J�J�L��9�9�9��I�I�O�O�%� ��	����N�N�F�O�O�4�
���<�<�

��
��?�?�Q�&��4�;�;�D�I�I�t�y�y�Q�R� ��(�/�/� #�Z��Z��U_�an�$p� q���
�9�9�9��I�I�O�O�%� ��	���

�sX�D2L$�
9K�A1L$�AL!�!L$�$%R�	)N�3"N�&R�<R�R�BQ?�!Q?�?R)r0r1r/r2r3rr")
NNNNNNFNNN)
r+r,r-r.rdr�r)r/r0�
__classcell__)r9r2s@@rr3r30s�����$)�LV�Vrr3rc�a�]tRtRtoRtRR]RRRRRRRR3RltRtRtRt	R	t
RR
ltRRltRt
R
tRtRtRRR]R3RltRtVtR#)ri�zxAn HTTP client that handles:

- all methods
- caching
- ETags
- compression,
- HTTPS
- Basic
- Digest
- WSSE

and more.
NFc
��W0nW@nWPnW`nWpn/VnV'd(\
V\4'd\V4Vn	MWn	\4Vn\4Vn
.VnRVn\ VnRR.Vn\'\(4VnRVnRVnRVnW nRVn\7\9\:VR4\9\:V	R4\9\<V
R4\9\:VR4R	7pVP?4U
Uu/uF
wr�VfKW�bK	upp
Vn R
#uupp
i)aIf 'cache' is a string then it is used as a directory name for
a disk cache. Otherwise it must be an object that supports the
same interface as FileCache.

All timeouts are in seconds. If None is passed for timeout
then Python's default timeout for sockets will be used. See
for example the docs of socket.setdefaulttimeout():
http://docs.python.org/library/socket.html#socket.setdefaulttimeout

`proxy_info` may be:
  - a callable that takes the http scheme ('http' or 'https') and
    returns a ProxyInfo instance per request. By default, uses
    proxy_info_from_environment.
  - a ProxyInfo instance (static proxy config).
  - None (proxy disabled).

ca_certs is the path of a file containing root CA certificates for SSL
server certificate validation.  By default, a CA cert file bundled with
httplib2 is used.

If disable_ssl_certificate_validation is true, SSL cert validation will
not be performed.

tls_maximum_version / tls_minimum_version require Python 3.7+ /
OpenSSL 1.1.0g+. A value of "TLSv1_3" requires OpenSSL 1.1.1+.

`decode_limit_{hard,safe,ratio,chunk}` options configure `httplib2.decode.LimitDecoder` in attempt order:
  - Http() argument - top priority
  - environment httplib2_decode_limit_{hard,safe,ratio,chunk}
  - LimitDecoder defaults - least priority
T�PUT�PATCHF�httplib2_decode_limit_hard�httplib2_decode_limit_safe�httplib2_decode_limit_ratio�httplib2_decode_limit_chunk)�
hard_limit�
safe_limit�ratio�
chunk_sizeN)!rr0r/r7r8�connectionsr)r*r�r�r�r�r��certificates�authorizations�follow_redirects�REDIRECT_CODES�redirect_codes�optimistic_concurrency_methodsr:�SAFE_METHODS�safe_methods�follow_all_redirects�ignore_etag�force_exception_to_status_coder�forward_authorization_headersrq�try_value_or_envr��floatrrr�)r�r�rrr0r/r7r8�decode_limit_hard�decode_limit_safe�decode_limit_ratio�decode_limit_chunkr�r}r�s&&&&&&&&&&&&   rr��
Http.__init__�sG��Z%�� �
�2T�/�#6� �#6� �����Z��s�+�+�"�5�)�D�J��J�'�=���%�J���!���!%���,���05�g�.>��+� ��.���%*��!� ���.3��+���.3��*��'��&�(D��(��&�(D��#��)�+H��(��'�)F��

��/;�.@�.@�.B�T�.B�d�a�a�T�Q�T�.B�T����Ts�/E
�<E
c���VP/uqnVP4Fwr#VP4K	VPP	4VP4R#)z�Close persistent connections, clear sensitive data.
Not thread-safe, requires external synchronization against concurrent requests.
N)rXrrr�rYr��clear_credentials)r��existingr��cs&   rr��
Http.close9sQ��&*�%5�%5�r�"��"��N�N�$�D�A�
�G�G�I�%������!���� rc�n�\P!VP4pRV9dVRRV9dVRV#)rrX)�copy�__dict__)r��
state_dicts& r�__getstate__�Http.__getstate__Cs<���Y�Y�t�}�}�-�
��
�"��9�%��J�&��=�)��rc�J�VPPV4/VnR#r�)rs�updaterX)r��states&&r�__setstate__�Http.__setstate__Ms���
�
���U�#���rc#��"�\P!VR4pVPPV4F0p\F#pW�9gK\
V,!WqW#WEV4x�K%	K2	R#5i)zPA generator that creates Authorization objects
that can be applied to requests.
rBN)rrIr�r��AUTH_SCHEME_ORDER�AUTH_SCHEME_CLASSES)	r�r�r]rurAr��
challenges�credrXs	&&&&&&   r�_auth_from_challenge�Http._auth_from_challengeQs]����1�1�(�<N�O�
��$�$�)�)�$�/�D�+���'�-�f�5�d�+�X`�ko�p�p�,�0�s�AA+�	"A+c�>�VPPWV4R#)zUAdd a name and password that will be used
any time a request requires authentication.N)r�r�r�s&&&&r�add_credentials�Http.add_credentials[s��	
�����T�V�4rc�>�VPPWW44R#)zPAdd a key and cert that will be used
any time a request requires authentication.N)rYr�r�s&&&&&r�add_certificate�Http.add_certificate`s��	
�����c��:rc�H�VPP4.VnR#)zCRemove all the names and passwords
that are used for authenticationN)r�r�rZr(s&rrm�Http.clear_credentialses��	
����� � ��rc�T�^pRpV\8d�V^,
pVPfVP4VPW2WE4TP%4p
RpTR8XdTP
4MT
P'4p\)T
4p
TR8wd\+Y�TP,4pY�3#X
X3# \P
dTP
4h\Pd.TP
4\RTP,4h\PdIp\T4p	T	\P\P39dT\8dRp?EKlhRp?i\P P"d�TPfHT\^,
8d%TP
4TP4EK�TP
4hT\^,
8d%TP
4TP4EKEL�i;i \P P.\P P03dJT'g0T^8Xd)^pRpTP
4TP4EK�TP
4h\P
dh\P\P P"3d>TP
4T^8Xd%TP
4TP4EK hi;i)r�FNzUnable to find the server at %sr�HEADT)�RETRIESr"r)rrrr�rF�ServerNotFoundErrorr�r�rJrF�ENETUNREACH�
EADDRNOTAVAILr�r�
HTTPException�getresponser�rr�r��
BadStatusLine�ResponseNotReady)r��connr]rr�rur��seen_bad_status_linerK�errno_rAr�s&&&&&&      r�
_conn_request�Http._conn_requestks\��
��$���'�k�
��F�A�
��9�9�$��L�L�N����V�$�@�8!
W��+�+�-��2���V�#��J�J�L�&�m�m�o�G�#�H�-���V�#�0��D�DU�DU�V�G���"�"��'�"�"���>�>�
��
�
����?�?�
Y��
�
��)�*K�d�i�i�*W�X�X��<�<�
�.�q�1���e�/�/��1D�1D�E�E�!�g�+�����;�;�,�,�
��9�9�$��7�Q�;���
�
������ ��
�
����w��{�?��J�J�L��L�L�N���
��$�K�K�-�-�t�{�{�/K�/K�L�
�,��Q���A�+/�(��J�J�L��L�L�N���J�J�L���>�>�
���L�L�$�+�+�";�";�<�
��
�
����6��J�J�L��L�L�N���
�sh�0B5�H&�58H#�.?H#�.H#�/;E2�1E2�2 H#�AH#�AH#�"H#�&AL'�'+L'�#L'�:.L'�)8L'�%L'c
�~�VPU
u.uF0q�P!W$4'gKV
P!V4V
3NK2	pp
T;'d"\V4^,^,;'gRp
V
'dV
P!WTWv4VPWWVV4wr�V
'dHV
P!W�4'd0V
P!WTWv4VPWWVV4wr�^VnVPR8Xd�VPW$W|V
4FipVP	WTWv4VPWWVV4wr�VPR8wgK=VPPV4VP
W�4M	VP'g#WPP9gVPR9EdVP'Ed�VPVP9Ed�V'EdyRV9d'VPR8wd\\!R4W�4hRV9dDVR,p\#V4wpppppVR8Xd#\$P&P)W?4VR&VPR8Xg"VPR8Xd?WPP9d/VR,VR&R	V9dW<R	&\+W|W�P,V	4R
V9dVR
RV9dVRRV9dVP.'gVRRV9dhVR,p\0P2!V4pR	V9dVVR	&TpVPR9dR
pRpVP	VVWgV^,
R7wr�VVnW�3#\7RW�4hVPR9d3WPP9d#R	V9dW<R	&\+W|W�P,V	4W�3#uup
i)zeDo the actual request using the connection object
and also follow one level of redirects if necessaryNi��4�location�,z:Redirected but the response is missing a Location: header.�-�-x-permanent-redirect-urlzcontent-location�
if-none-match�if-modified-sincer<�GET)rr�ru�redirections�4Redirected more times than redirection_limit allows.)�/r�)�.r�)����)rZrr�sortedrr�rA�
_stale_digestr�r�r�rar`r[r]�RedirectMissingLocationr�rQrr�urljoinr�r�rdrr�deepcopy�previous�
RedirectLimit)r�r�r��absolute_urir]rr�rur�r�r�authsrAr�r<r�rXrYrZr[r\�old_response�redirect_methods&&&&&&&&&&             r�_request�
Http._request�s���>B�=P�=P�t�=P�T�T`�T`�ae�Ts�0�$�*�*�[�)�4�0�=P��t��,�,����q�)�!�,�4�4�����L�L��g�<�"�0�0��F�RY�Z�����}�}�X�,�,����V�'�@�&*�&8�&8��F�Za�&b�#��)*��&��?�?�c�!�!%�!:�!:�4�g�ah�!i�
��%�%�f�7�I�&*�&8�&8��F�Za�&b�#���?�?�c�)��'�'�.�.�}�=�!�*�*�8�:��
"j��$�$�$��2C�2C�(C�x���Zd�Gd��$�$�$����D�<O�<O�)O� �<�!��1�h�o�o��6L�5��Z�[�]e���"�X�-�#+�J�#7��EN�x�EX�B���D�%��$��,�39�<�<�3G�3G��3_�H�Z�0����#�-�(�/�/�S�2H�f�Xi�Xi�Ni�@H��@T��!<�=�-�X�=�;G�%7�8�$�W����X�V�&�'�1�#�O�4�*�g�5�#�$7�8�&�'�1�$�:\�:\�:\�#�O�4�!�X�-�#+�J�#7��'+�}�}�X�'>��-�\�A�?K�L�);�<�*0��#�?�?�j�8�.3�O�#'�D�.2�l�l�$�_�4�gs�vw�gw�/;�/�+��-9��)��"�"�(�N�PX������J�.�6�=N�=N�3N�%�X�5�3?�/�0��W����X�N��"�"��Ous
�N:�N:c��\V4#r�)rx)r�rus&&rrx�Http._normalize_headerss
��!�'�*�*rr�c
�~�RpVf/pMVPV4pRV9dR\,VR&\V4pVPRR4PRR4PR	R
4p\	V4wr�r�VR,V	,pVP
P
V4pVEfzV'g\V,p\VPPV	44p
\V\4'd�V
'd�V!V	V
^,^,V
^,^,VPVPVPVP VP"VP$V
^,^,R7
;q�P
V&M�V!V	VPVPVPVP VP"VP$R
7;q�P
V&M,V!W�PVPR7;q�P
V&VP'\(4RV9d
RV9dRVR&\*P,P/4pRpRpVP0'd�TpVP0P
V4pV'd�VP3R^4wpp\*P4!V4pVP74FuwppVP9R4'gKVP;R4'gK8VP=V\?\*P@PCV4^,!4Kw	W PJ9d?VP0'd-RV9d&VPL'gRV9d
VR,VR&VP0'd4V'd,W PN9dVP0PIV4W PN9dvRV9doVR,pVPQ4PRR4P3R4pVF0pRV,pVV,pVP
VR4V8wgK.RpM	VP0'EdV'Ed�W PN9gVR,R8XEd�RV9Ed�TpVR,R69dRpRV9d]V^8:d\SR/R4hVPUVR,VVV^,
R7wpp\WV4Vn,R VPXn-M�\]W�4pVR!8Xd\WV4pR Vn-VX3#VR"8XdHRV9d&VPL'gR#V9g
VR,VR#&R$V9dR$V9g
VR$,VR%&MVR&8XdVP_W�WW#WEV4	wppVP`R'8Xd~VR8Xdw\cV4FpVV,VV&K	\WV4p\eVR(4'dVPfVn3\iVVXVP0V4Tp^�Vn0R Vn-MvVP`^�8XdTpMbVP0PIV4TpVV3#\kV4pR)V9dR*VR&\WV4pR+pVV3#VP_W�WW#WEV4	wppVV3# \D\F3d$TP0PIT4RpRpEL�i;i \lEdDp\oT\pP4p T 'd5TP
PsTR4pT'dTPu4TPv'd�\oT\x4'd1TPzpTP|pR,Tn0\?T4Tn?M�\oT\pP4'd%R-p\WR.R/RR0R1\�T4/4pR2Tn?MD\?T4P�R34p\WR.R/RR4R1\�T4/4pR5Tn?Rp?TT3#hRp?TT3#Rp?ii;i)7a�Performs a single HTTP request.
The 'uri' is the URI of the HTTP resource and can begin
with either 'http' or 'https'. The value of 'uri' must be an absolute URI.

The 'method' is the HTTP method to perform, such as GET, POST, DELETE, etc.
There is no restriction on the methods allowed.

The 'body' is the entity body to be sent with the request. It is a string
object.

Any extra headers that are to be sent with the request should be provided in the
'headers' dictionary.

The maximum number of redirect to follow before raising an
exception is 'redirections. The default is 5.

The return value is a tuple of (response, content), the first
being and instance of the 'Response' class, the second being
a string that contains the response entity body.
        r8Nr�zPython-httplib2/%s (gzip)rpz%20�
z%0Dr�z%0Ar�)	r2r1rrr0r/r7r8r3)rrr0r/r7r8)rrr�zaccept-encodingz
gzip, deflates

z=?z?=�etagzif-matchr�r9r�r��308r�r�r�)rrur�Tr�r�r�z
last-modifiedr�r�r�r�r��504ri�sRequest Timeoutzcontent-typez
text/plain�408r�zRequest Timeoutra�400zBad Request)�307r�)Brx�__version__rr�r_rXr=�SCHEME_TO_CONNECTIONr:rYr��
issubclassr3rrr0r/r7r8�set_debuglevelr(r�r�r�r�r>�message_from_bytesrrrr��replace_headerr*r�
decode_header�
IndexErrorr�r�r^rbr`rVr�rrr��	fromcacher�r�r�rDrr�r�r�rAr)rr�r�rc�HttpLib2ErrorWithResponserAr�rjr�re)!r�rPrr�rur��connection_type�conn_keyrXrYr]r^r�rr�r��cached_valuer�r}r�r�r�rrvrwr�rAr��entry_disposition�merged_responser�rK�
is_timeouts!&&&&&&&                          rr�Http.requestsq��.��M	������1�1�'�:���7�*�(C�k�(Q���%��#�,�C��+�+�c�5�)�1�1�$��>�F�F�t�U�S�C�;B�3�<�8�V����|�i�/�H��#�#�'�'��1�D��|�&�&:�6�&B�O��T�.�.�3�3�I�>�?���o�/I�J�J��<K�%�%*�1�X�a�[�&+�A�h�q�k�$(�L�L�'+���%)�]�]�?C�?f�?f�04�0H�0H�04�0H�0H�).�q��!��=���/�/��9�=L�%�$(�L�L�'+���%)�]�]�?C�?f�?f�04�0H�0H�04�0H�0H�=���/�/��9�9H�!�<�<�D�O�O�9��D�+�+�H�5��#�#�J�/��g�%�*;�7�*J�-<��)�*��=�=�(�(�*�D��H��L��z�z�z�%��#�z�z�~�~�h�7���	,�(4�(:�(:�;��(J�
��g�$�7�7��=��$(�J�J�L�D�A�q� �|�|�D�1�1�a�j�j��6F�6F� $� 3� 3�A�s�E�L�L�<V�<V�WX�<Y�Z[�<\�7]� ^�%1��=�=�=��J�J�J��d�N��(�(�(��g�-�'+�6�l��
�#�
�z�z�z�h�6�9J�9J�+J��
�
�!�!�(�+��*�*�*�v��~��F�|��#�z�z�|�3�3�C��<�B�B�3�G��*�F�&��/�C� ��I�E��{�{�6�4�0�E�9�'+���+��
�
�
� �L��0�0�0�D��N�e�4K��7�*�"(����>��7�&+�O�.�$�6�#�q�(�+�R�TV�XZ���/3�l�l��8�9�.� '�%1�A�%5�	/;�/�+�X�{�)1���H�%�26�H�%�%�/�);�4�(I�%�(�G�3�#+�D�>��-1��*� (�'�2�2�(�G�3�!�T�>�$�2B�2B�2B�?�^e�Ke�7;�F�|�G�O�4�*�d�2�?�g�;U�;?��;P�G�$7�8��*�m�;��.2�m�m���6��`h�/�+�X�{��?�?�c�)�f��o� 4�H�=��$,�S�M��S�	� >�&.�t�n�O��x��9�9�8@�8N�8N��5� ��/�7�D�J�J�PX�Y�.�H�&)�H�O�)-�H�&��_�_��+�)�G��J�J�%�%�h�/�)�G�F�'�"�"�C*�'�2��#�r�)�%*�D��N�'��~�H�!�G�:�'�"�"�7+/�-�-���6��`h�+�'�X�w�6�'�"�"��W'�
�3�,��
�
�)�)�(�3�#'��'+��,��f�	�#�A�v�~�~�6�J���'�'�+�+�H�d�;����J�J�L��2�2�2��a�!:�;�;� �z�z�H��i�i�G�&)�H�O�&)�!�f�H�O���6�>�>�2�2�0�G�'���x�QV�Xh�jm�nu�jv�(x�y�H�&7�H�O�!�!�f�m�m�G�4�G�'���x�QV�Xh�jm�nu�jv�(x�y�H�&3�H�O�O��'�"�"����'�"�"��1	�s��B1[-�6A[-�E([-�.$[-�AZ6�.Z6�AZ6�![-�*[-�$[-�([-�0B%[-�[-�3[-�<C[-�[-� D
[-�2$[-�[-�60[*�&[-�)[*�*[-�-`<�9A`7�?!`7�!C`7�.`7�7`<)rZr0r�rYrXr�r/rar[rcrdrbr�r^rr]r`rr7r8r�r�)r+r,r-r.rdrr�r�rurzr�r�r�rmr�r�rx�DEFAULT_MAX_REDIRECTSrr/r0r1s@rrr�s������ ��.��+0� � �����jU�X!���q�5�
;�
!�H#�TM#�^+� �d�D�G\�nr�h#�h#rc�La�]tRtRtoRtRt^t^�tRtRt	Rt
RtRtVt
R#)	ri�z<An object more like email.message than httplib.HTTPResponse.F�OkNc�4�\V\PP4'd�VP	4F@wr#VP4pVP
V4pVeRPWC34pW0V&KB	VPVn\VP4VR&VPVn
VPVnR#\V\PP4'dN\VP!44Fwr#W0VP4&K	\#VR,4VnR#VP!4Fwr#W0VP4&K	\#VP
RVP44VnR#)Nz, r�)r)r�r�HTTPResponse�
getheadersrVr=rWr�r*rj�versionr�r�r�r:rrr�)r�r�rvrw�prevs&&   rr��Response.__init__s���d�D�K�K�4�4�5�5�"�o�o�/�
���i�i�k���x�x��}���#� �I�I�t�m�4�E�!�S�	�0��+�+�D�K� ����-�D��N��+�+�D�K��<�<�D�L�
��e�m�m�3�3�
4�
4�"�4�:�:�<�0�
��$)�S�Y�Y�[�!�1��d�8�n�-�D�K�"�j�j�l�
��$)�S�Y�Y�[�!�+��d�h�h�x����=�>�D�Krc�*�VR8XdV#\V4h)rq)�AttributeError)r�r�s&&r�__getattr__�Response.__getattr__s���6�>��K� ��&�&r)rjr�r�)r+r,r-r.rdr�r�r�rjr�r�r�r/r0r1s@rrr�s@����F�/��I���G�&�
�F�+�
�F��H�?�.'�'rc���V\PPV4\PPVP443pVFpVfK	V!V4u#	V# \dK&i;ir�)r�rr=rLr�)�torw�env_key�default�
candidatesrCs&&&&  rrere&si���������0�"�*�*�.�.�����2Q�R�J�
���9��	��a�5�L�	��N���	��	�s�A(�(A7�6A7)
rgzJames AntillzXavier Verges FarrerozJonathan FeinbergzBlair ZajaczSam RubyzLouis NyffeneggerzMark PilgrimzAlex YuzLai Han)r(r�r�
HttpLib2Errorrr�r�rr�rKrr)r7z
keep-alivezproxy-authenticatezproxy-authorization�te�trailersr��upgrade)r�r��OPTIONS�TRACE)r�r�r�r�i3r�)NNNNN)rir�r�r�r�)r�)r�Nr�)qrdr��httplib2.decoderrrrr��
__copyright__�__contributors__�__license__r�r�r�rrr��email.feedparserr�
email.message�email.utilsrFrr�r��hashlibr	rfr
r�r|�http.clientr��ior�r�r�rr#�sysr�r�rr�r�ImportErrorr8rr�rr�__all__r(r�r�r;r_�	frozensetr\�httplib2r�wherer5r+r%r5rD�objectrIrJ�compilerMrQr_rh�ASCIIrjrnrtrxrsr��USE_WWW_AUTH_STRICT_PARSINGr�r�r�r�r�r�r�r4r@rfr�r�r~r}r�r�r�r�rrrrrr�HTTPSConnectionr3r�rrqrrer�rr�<module>r�s��1��V�V�
0�
�.�
�������
��������� ��� ���	�	�
�	�
�
�
������
�������
���*��	�
�3���9�:����;�;�=���c�#8�$�?�I�I�7�3�P^�`d�Ce�I�I�ip�qt�wH�jI��.�bR��8���(	�j�j�M�N��C�
6�"�
�
�:�&�
��J�J�(�"�(�(�3�	�)�0�*�*�/�0���
�	�  ��H�V�2�"'&�T��3�V�3�l	"�.�	"�D�>�D�NK�~�K�\
��
�6 C�� C�H�
 �
���"��*��,���M�� %�� %�F
'�&�
'� 
,�{�
,�	�v�	�T��T�n
:��<T���� :� :�T�nE����!<�!<�E�R�%��
'���u#�6�u#�p-'�t�-'�`
��c7�����s�I?�?
J�J

Youez - 2016 - github.com/yon3zu
LinuXploit