§
    7xÅjù-  ã                   óŽ  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ  ej        e¦  «        Z G d
„ de¦  «        Zd dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dlm)Z) d dl*m+Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 e,Z3e4Z4e"Z5d„ Z6d„ Z7d=d„Z8d>d„Z9d dl:m;c m<Z= e=j>        Z?d dl@Z@d„ ZAeBd„ ¦   «         ZCeBd„ ¦   «         ZDeCe_C        eDe_D        d„ ZEd„ ZF	  ejG        d¬¦  «         dZHn# eIeJf$ r dZHY nw xY wd „ ZKd?d!„ZLd"„ ZMd#„ ZN	 d dlOZPejQ         R                    d$d%¦  «        ZSeS T                    ¦   «         d&k     ZUn# eV$ r dZUY nw xY wd'„ ZWd@d(„ZXd)ZY e
jZ        d*eYz   d+z   ¦  «        Z[d,Z\d- ]                    e\eY¬.¦  «        Z^e\e^d/œZ_g d0¢Z`d1Zad2d3 b                    d4„ e`D ¦   «         ¦  «        z   d5z   Zcd6eaz   d7z   Zdd8ecz   d2z   edz   d9z   Ze e
jZ        d*eez   d+z   ¦  «        Zf egd:¦  «        Zh	 d dliZidZjn# eV$ r dZjY nw xY weUr eWd;¦  «        rd d<lkmlZl dS dZldS )Aé    N)ÚHTTPMessage)ÚOrderedDict)ÚMutableMapping)Úfloor)Úsix)ÚMD5UnavailableError)Útzlocal)Ú
exceptionsc                   ó   — e Zd ZdS )ÚHTTPHeadersN)Ú__name__Ú
__module__Ú__qualname__© ó    ú@C:\Projects\Historical\venv\Lib\site-packages\botocore/compat.pyr   r   %   s   € € € € € Ø€Dr   r   )
ÚquoteÚ	urlencodeÚunquoteÚunquote_plusÚurlparseÚurlsplitÚ
urlunsplitÚurljoinÚ	parse_qslÚparse_qs)ÚHTTPResponse)ÚIOBase)Úencodebytes)Ú
formatdate)Úzip_longestc                 óX   — | j         j        j        j                             |¦  «         dS )z|Set the timeout of the socket from an HTTPResponse.

    :param http_response: An instance of ``httplib.HTTPResponse``

    N)Ú_fpÚfpÚrawÚ_sockÚ
settimeout)Úhttp_responseÚtimeouts     r   Úset_socket_timeoutr*   @   s*   € ð ÔÔÔÔ"×-Ò-¨gÑ6Ô6Ð6Ð6Ð6r   c                 ó6   — t          j        | ¦  «        d         S )Né   )ÚinspectÚgetfullargspec)Úfuncs    r   Úaccepts_kwargsr0   H   s   € ÝÔ! $Ñ'Ô'¨Ô*Ð*r   c                 ó   — | S ©Nr   ©ÚsÚencodingÚerrorss      r   Úensure_unicoder7   K   s   € à€Hr   úutf-8Ústrictc                 óÆ   — t          | t          ¦  «        r|                      ||¦  «        S t          | t          ¦  «        r| S t	          dt          | ¦  «        › d�¦  «        ‚)Nz Expected str or bytes, received ú.)Ú
isinstanceÚstrÚencodeÚbytesÚ
ValueErrorÚtyper3   s      r   Úensure_bytesrB   O   s_   € Ý�!•SÑÔð *Ø�xŠx˜ &Ñ)Ô)Ð)Ý�!•UÑÔð ØˆÝ
ÐB½¸Q¹¼ÐBÐBÐBÑ
CÔ
CÐCr   c                  óJ   — t          j        ddt          j        d¬¦  «         d S )NÚignorez+A true SSLContext object is not available.*z.*urllib3\.util\.ssl_)ÚmessageÚcategoryÚmodule)ÚwarningsÚfilterwarningsr
   ÚInsecurePlatformWarningr   r   r   Úfilter_ssl_warningsrK   ]   s5   € åÔØØ=ÝÔ3Ø'ð	ñ ô ð ð ð r   c                 óX   —  | ¦   «         }|                      ¦   «         D ]
\  }}|||<   Œ|S r2   )Úitems)ÚclsÚdÚnew_instanceÚkeyÚvalues        r   Ú	from_dictrS   g   s;   € à�3‘5”5€LØ—g’g‘i”ið "ð "‰
ˆˆUØ!ˆ�SÑÐØÐr   c                 ó4   —  | ¦   «         }|D ]
\  }}|||<   Œ|S r2   r   )rN   ÚpairsrP   rQ   rR   s        r   Ú
from_pairsrV   o   s3   € à�3‘5”5€LØð "ð "‰
ˆˆUØ!ˆ�SÑÐØÐr   c                 ó.   — t          j         | ¦  «        }|S )zI
    This used to be a compat shim for 2.6 but is now just an alias.
    )Úcopy)ÚkwargsÚcopy_kwargss     r   rZ   rZ   {   s   € õ ”)˜FÑ#Ô#€KØÐr   c                 ó*   — |                       ¦   «         S )zÕ
    Returns the total seconds in a ``datetime.timedelta``.

    This used to be a compat shim for 2.6 but is now just an alias.

    :param delta: The timedelta object
    :type delta: ``datetime.timedelta``
    )Útotal_seconds)Údeltas    r   r\   r\   ƒ   s   € ð ×ÒÑ Ô Ð r   F)ÚusedforsecurityTc                  óN   — t           rt          j        | i |¤ŽS t          ¦   «         ‚)a:  
    Attempts to get an md5 hashing object.

    :param args: Args to pass to the MD5 constructor
    :param kwargs: Key word arguments to pass to the MD5 constructor
    :return: An MD5 hashing object if available. If it is unavailable, None
        is returned if raise_error_if_unavailable is set to False.
    )ÚMD5_AVAILABLEÚhashlibÚmd5r   )ÚargsrY   s     r   Úget_md5rd   ˜   s-   € õ ð $ÝŒ{˜DÐ+ FÐ+Ð+Ð+å!Ñ#Ô#Ð#r   c                 óp   — |€t           j        }|dk    rt          | ¦  «        S t          j        | ¦  «        S )NÚwin32)ÚsysÚplatformÚ_windows_shell_splitÚshlexÚsplit)r4   rh   s     r   Úcompat_shell_splitrl   §   s6   € ØÐÝ”<ˆà�7ÒÐÝ# AÑ&Ô&Ð&åŒ{˜1‰~Œ~Ðr   c           
      ó  — | sg S g }g }d}d}| D �]}|dk    r|dz  }Œ|dk    rw|dk    rX|                      dt          t          |dz  ¦  «        ¦  «        z  ¦  «         |dz  }d}|dk    r|                      d¦  «         Œs| }|                      d¦  «         ŒŒ|dv rO|sM|dk    r|                      d|z  ¦  «         d}|r*|                      d                     |¦  «        ¦  «         g }Œß|dk    r|                      d|z  ¦  «         d}|                      |¦  «         �Œ|rt	          d	| › �¦  «        ‚|dk    r|                      d|z  ¦  «         |r(|                      d                     |¦  «        ¦  «         |S )
a  Splits up a windows command as the built-in command parser would.

    Windows has potentially bizarre rules depending on where you look. When
    spawning a process via the Windows C runtime (which is what python does
    when you call popen) the rules are as follows:

    https://docs.microsoft.com/en-us/cpp/cpp/parsing-cpp-command-line-arguments

    To summarize:

    * Only space and tab are valid delimiters
    * Double quotes are the only valid quotes
    * Backslash is interpreted literally unless it is part of a chain that
      leads up to a double quote. Then the backslashes escape the backslashes,
      and if there is an odd number the final backslash escapes the quote.

    :param s: The command string to split up into parts.
    :return: A list of command components.
    Fr   ú\é   ú"r,   Ú )ú ú	z No closing quotation in string: )ÚappendÚintr   Újoinr@   )r4   Ú
componentsÚbuffÚ	is_quotedÚnum_backslashesÚ	characterÚ	remainders          r   ri   ri   ±   sõ  € ð( ð Øˆ	à€JØ€DØ€IØ€OØð 1#ñ 1#ˆ	Ø˜ÒÐð
 ˜qÑ ˆOˆOØ˜#ÒÐØ Ò"Ð"ð —’˜D¥3¥u¨_¸qÑ-@Ñ'AÔ'AÑ#BÔ#BÑBÑCÔCÐCØ+¨aÑ/�	Ø"#�Ø ’>�>ð —K’K Ñ$Ô$Ð$Øð &˜ˆIð �KŠK˜‰OŒOˆOˆOØ˜+Ð%Ð%¨iÐ%ð  Ò"Ð"Ø—’˜D ?Ñ2Ñ3Ô3Ð3Ø"#�ð ð Ø×!Ò! "§'¢'¨$¡-¤-Ñ0Ô0Ð0Ø�øð  Ò"Ð"Ø—’˜D ?Ñ2Ñ3Ô3Ð3Ø"#�Ø�KŠK˜	Ñ"Ô"Ð"Ñ"ð ð AÝÐ?¸AÐ?Ð?Ñ@Ô@Ð@ð ˜ÒÐØ�Š�D˜?Ñ*Ñ+Ô+Ð+ð ð )Ø×Ò˜"Ÿ'š' $™-œ-Ñ(Ô(Ð(àÐr   c                  óP   — t           j        dk    rddlm}  t          | fS t          fS )Nrf   r   ©Ú
tzwinlocal)rg   rh   Údateutil.tzr   r	   r~   s    r   Úget_tzinfo_optionsr�     s6   € õ „|�wÒÐØ*Ð*Ð*Ð*Ð*Ð*å˜Ð$Ð$åˆzÐr   ÚBOTO_DISABLE_CRTÚfalseÚtruec                 óÚ   — t           sdS t          j        }	 t          t          |                     d¦  «        ¦  «        }t          |¦  «        }n# t          t          f$ r Y dS w xY w|| k    S )z&Not intended for use outside botocore.Fr;   )	ÚHAS_CRTÚawscrtÚ__version__Úmapru   rk   ÚtupleÚ	TypeErrorr@   )Úminimum_versionÚcrt_version_strÚcrt_version_intsÚcrt_version_tuples       r   Úhas_minimum_crt_versionr�   &  s€   € åð ØˆuåÔ(€OðÝ�s O×$9Ò$9¸#Ñ$>Ô$>Ñ?Ô?ÐÝ!Ð"2Ñ3Ô3ÐÐøÝ•zÐ"ð ð ð Øˆuˆuðøøøð  Ò/Ð/s   —7A ÁA$Á#A$c                 ó’   — t           j                              t           j        j        ¦  «        }| r|                     d¬¦  «        }|S )zKRetrieve the current timezone in UTC, with or without an explicit timezone.N)Útzinfo)ÚdatetimeÚnowÚtimezoneÚutcÚreplace)Úremove_tzinfoÚdatetime_nows     r   Úget_current_datetimerš   5  sB   € åÔ$×(Ò(­Ô):Ô)>Ñ?Ô?€LØð 9Ø#×+Ò+°4Ð+Ñ8Ô8ˆØÐr   z(?:[0-9]{1,3}\.){3}[0-9]{1,3}ú^ú$z[0-9A-Fa-f]{1,4}z(?:{hex}:{hex}|{ipv4}))ÚhexÚipv4)r�   Úls32)	z(?:%(hex)s:){6}%(ls32)sz::(?:%(hex)s:){5}%(ls32)sz%(?:%(hex)s)?::(?:%(hex)s:){4}%(ls32)sz2(?:(?:%(hex)s:)?%(hex)s)?::(?:%(hex)s:){3}%(ls32)sz6(?:(?:%(hex)s:){0,2}%(hex)s)?::(?:%(hex)s:){2}%(ls32)sz/(?:(?:%(hex)s:){0,3}%(hex)s)?::%(hex)s:%(ls32)sz'(?:(?:%(hex)s:){0,4}%(hex)s)?::%(ls32)sz&(?:(?:%(hex)s:){0,5}%(hex)s)?::%(hex)sz(?:(?:%(hex)s:){0,6}%(hex)s)?::zDABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._!\-~z(?:ú|c                 ó"   — g | ]}|t           z  ‘ŒS r   )Ú_subs)Ú.0Úxs     r   ú
<listcomp>r¥   `  s   € Ð<Ð<Ð<¨1˜Q¥™YÐ<Ð<Ð<r   ú)z(?:%25|%)(?:[z]|%[a-fA-F0-9]{2})+z\[z)?\]z	
)r   é   é   )ÚEC)NN)r8   r9   r2   )T)mrX   r“   rg   r-   rH   ra   Úhttp.clientr   Úloggingrj   ÚreÚosÚcollectionsr   Úcollections.abcr   Úmathr   Úbotocore.vendoredr   Úbotocore.exceptionsr   r€   r	   Úurllib3r
   Ú	getLoggerr   Úloggerr   Úurllib.parser   r   r   r   r   r   r   r   r   r   r   Úior   Ú_IOBaseÚbase64r   Úemail.utilsr    Ú	itertoolsr!   Ú	file_typeÚzipÚunquote_strr*   r0   r7   rB   Úxml.etree.ElementTreeÚetreeÚElementTreeÚETreeÚ
ParseErrorÚXMLParseErrorÚjsonrK   ÚclassmethodrS   rV   rZ   r\   rb   r`   ÚAttributeErrorr@   rd   rl   ri   r�   Úawscrt.authr‡   ÚenvironÚgetÚdisabledÚlowerr†   ÚImportErrorr�   rš   ÚIPV4_PATÚcompileÚIPV4_REÚHEX_PATÚformatÚLS32_PATr¢   Ú_variationsÚUNRESERVED_PATrv   ÚIPV6_PATÚZONE_ID_PATÚIPV6_ADDRZ_PATÚIPV6_ADDRZ_REÚ	frozensetÚUNSAFE_URL_CHARSÚgzipÚHAS_GZIPÚawscrt.cryptor©   r   r   r   ú<module>rß      sw  ðð €€€Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø #Ð #Ð #Ð #Ð #Ð #Ø *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€ð	ð 	ð 	ð 	ð 	�+ñ 	ô 	ð 	ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð %Ð $Ð $Ð $Ð $Ð $Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø !Ð !Ð !Ð !Ð !Ð !Ø€	Ø	€ð €ð7ð 7ð 7ð+ð +ð +ðð ð ð ðDð Dð Dð Dð &Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ð %ØÔ €à €€€ðð ð ð ðð ñ „ðð ðð ñ „ðð "€Ô Ø#€Ô ðð ð ð	!ð 	!ð 	!ðØ€G„K Ð&Ñ&Ô&Ð&Ø€M€MøØ˜
Ð#ð ð ð Ø€M€M€Mðøøøð$ð $ð $ðð ð ð ð[ð [ð [ð|	ð 	ð 	ðØÐÐÐð Œz�~Š~Ð0°'Ñ:Ô:€HØ—.’.Ñ"Ô" fÒ,Ð,€G€GøØð ð ð Ø€G€G€Gðøøøð0ð 0ð 0ðð ð ð ð ,€Ø
ˆ"Œ*�S˜8‘^ cÑ)Ñ
*Ô
*€Ø
€Ø#×*Ò*¨w¸XÐ*ÑFÔF€Ø Ð*Ð*€ðð ð €ð, Lð ð �3—8’8Ð<Ð<°Ð<Ñ<Ô<Ñ=Ô=Ñ=ÀÑC€Ø Ñ.Ð1FÑF€Ø˜Ñ! FÑ*¨[Ñ8¸7ÑB€Ø�”
˜3 Ñ/°#Ñ5Ñ6Ô6€ð �9˜XÑ&Ô&Ð ðØ€K€K€KØ€H€HøØð ð ð Ø€H€H€Hðøøøð ð Ð&Ð& zÑ2Ô2ð Ø Ð Ð Ð Ð Ð Ð Ð à	€B€B€Bs6   ÄD Ä	D#Ä"D#Ä48E- Å-E7Å6E7ÈH! È!H+È*H+