§
    7xÅjÚW  ã                   óÎ  — d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	 ddl
mZmZmZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZmZ erddlmZ ndZ ej         e!¦  «        Z"dZ# G d„ d¦  «        Z$ G d„ de$¦  «        Z% G d„ de$¦  «        Z& G d„ de$¦  «        Z' G d„ de$¦  «        Z( G d„ de$¦  «        Z) G d„ de$¦  «        Z* G d„ de$¦  «        Z+ G d„ de$¦  «        Z, G d„ d e$¦  «        Z- G d!„ d"e$¦  «        Z. G d#„ d$¦  «        Z/ G d%„ d&e¦  «        Z0d'„ Z1	 d>d(„Z2d)„ Z3d*„ Z4d+„ Z5d,„ Z6d-„ Z7d.„ Z8	 d>d/„Z9d0„ Z:d1„ Z;d2„ Z<e%e,e-e.d3œZ=g d4¢Z>erme&e'd5œZ? ed6¦  «        re(e?d7<    ed8¦  «        re)e?d9<   e*e?d:<   e+e?d;<   e= @                    e?¦  «          eAd<„ e? B                    ¦   «         D ¦   «         ¦  «        sJ ‚ eCe= B                    ¦   «         ¦  «        ZDg d=¢ZEdS )?aB  The interfaces in this module are not intended for public use.

This module defines interfaces for applying checksums to HTTP requests within
the context of botocore. This involves both resolving the checksum to be used
based on client configuration and environment, as well as application of the
checksum to the request.
é    N)Úcrc32)Úsha1Úsha256Úsha512)ÚHAS_CRTÚhas_minimum_crt_versionÚurlparse)ÚAwsChunkedWrapperErrorÚFlexibleChecksumErrorÚMissingDependencyException)ÚStructureShape)ÚStreamingBody)Úregister_feature_id)Úconditionally_calculate_md5Údetermine_content_lengthÚget_checksum_algorithm_headersÚhas_checksum_header)Ú	checksumsÚCRC32c                   ó0   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚBaseChecksumé   c                 ó   — d S ©N© ©ÚselfÚchunks     úFC:\Projects\Historical\venv\Lib\site-packages\botocore/httpchecksum.pyÚupdatezBaseChecksum.update9   ó   € Øˆó    c                 ó   — d S r   r   ©r   s    r   ÚdigestzBaseChecksum.digest<   r!   r"   c                 óx   — |                       ¦   «         }t          j        |¦  «                             d¦  «        S )NÚascii)r%   Úbase64Ú	b64encodeÚdecode)r   Úbss     r   Ú	b64digestzBaseChecksum.b64digest?   s.   € Ø�[Š[‰]Œ]ˆÝÔ Ñ#Ô#×*Ò*¨7Ñ3Ô3Ð3r"   c                 ó´   ‡ ‡— ‰                      ¦   «         }t          ˆˆ fd„d¦  «        D ]}‰                      |¦  «         Œ‰                     |¦  «         d S )Nc                  ó8   •— ‰                       ‰j        ¦  «        S r   )ÚreadÚ_CHUNK_SIZE)Úfileobjr   s   €€r   ú<lambda>z.BaseChecksum._handle_fileobj.<locals>.<lambda>E   s   ø€  '§,¢,¨tÔ/?Ñ"@Ô"@€ r"   r"   )ÚtellÚiterr    Úseek)r   r1   Ústart_positionr   s   ``  r   Ú_handle_fileobjzBaseChecksum._handle_fileobjC   sd   øø€ Ø Ÿš™œˆÝÐ@Ð@Ð@Ð@Ð@À#ÑFÔFð 	ð 	ˆEØ�KŠK˜ÑÔÐÐØ�Š�^Ñ$Ô$Ð$Ð$Ð$r"   c                 ó¸   — t          |t          t          f¦  «        r|                      |¦  «         n|                      |¦  «         |                      ¦   «         S r   )Ú
isinstanceÚbytesÚ	bytearrayr    r7   r,   )r   Úbodys     r   ÚhandlezBaseChecksum.handleI   sR   € Ý�d�U¥IÐ.Ñ/Ô/ð 	'Ø�KŠK˜ÑÔÐÐà× Ò  Ñ&Ô&Ð&Ø�~Š~ÑÔÐr"   N)	Ú__name__Ú
__module__Ú__qualname__r0   r    r%   r,   r7   r=   r   r"   r   r   r   6   sd   € € € € € Ø€Kðð ð ðð ð ð4ð 4ð 4ð%ð %ð %ð ð  ð  ð  ð  r"   r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚCrc32Checksumc                 ó   — d| _         d S ©Nr   ©Ú
_int_crc32r$   s    r   Ú__init__zCrc32Checksum.__init__R   ó   € ØˆŒˆˆr"   c                 ó@   — t          || j        ¦  «        dz  | _        d S ©Nl   ÿÿ )r   rF   r   s     r   r    zCrc32Checksum.updateU   s   € Ý  t¤Ñ7Ô7¸*ÑDˆŒˆˆr"   c                 ó:   — | j                              dd¬¦  «        S ©Né   Úbig©Ú	byteorder©rF   Úto_bytesr$   s    r   r%   zCrc32Checksum.digestX   ó   € ØŒ×'Ò'¨°UÐ'Ñ;Ô;Ð;r"   N©r>   r?   r@   rG   r    r%   r   r"   r   rB   rB   Q   sD   € € € € € ðð ð ðEð Eð Eð<ð <ð <ð <ð <r"   rB   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚCrtCrc32Checksumc                 ó   — d| _         d S rD   rE   r$   s    r   rG   zCrtCrc32Checksum.__init__^   rH   r"   c                 óN   — t          j        || j        ¦  «        }|dz  | _        d S rJ   )Úcrt_checksumsr   rF   ©r   r   Únew_checksums      r   r    zCrtCrc32Checksum.updatea   s&   € Ý$Ô*¨5°$´/ÑBÔBˆØ&¨Ñ3ˆŒˆˆr"   c                 ó:   — | j                              dd¬¦  «        S rL   rQ   r$   s    r   r%   zCrtCrc32Checksum.digeste   rS   r"   NrT   r   r"   r   rV   rV   \   sA   € € € € € ðð ð ð4ð 4ð 4ð<ð <ð <ð <ð <r"   rV   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚCrtCrc32cChecksumc                 ó   — d| _         d S rD   )Ú_int_crc32cr$   s    r   rG   zCrtCrc32cChecksum.__init__k   s   € ØˆÔÐÐr"   c                 óN   — t          j        || j        ¦  «        }|dz  | _        d S rJ   )rY   Úcrc32cr`   rZ   s      r   r    zCrtCrc32cChecksum.updaten   s*   € Ý$Ô+¨E°4Ô3CÑDÔDˆØ'¨*Ñ4ˆÔÐÐr"   c                 ó:   — | j                              dd¬¦  «        S rL   )r`   rR   r$   s    r   r%   zCrtCrc32cChecksum.digestr   s   € ØÔ×(Ò(¨°eÐ(Ñ<Ô<Ð<r"   NrT   r   r"   r   r^   r^   i   sA   € € € € € ðð ð ð5ð 5ð 5ð=ð =ð =ð =ð =r"   r^   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚCrtCrc64NvmeChecksumc                 ó   — d| _         d S rD   )Ú_int_crc64nvmer$   s    r   rG   zCrtCrc64NvmeChecksum.__init__x   s   € ØˆÔÐÐr"   c                 óN   — t          j        || j        ¦  «        }|dz  | _        d S )Nl   ÿÿÿÿ )rY   Ú	crc64nvmerg   rZ   s      r   r    zCrtCrc64NvmeChecksum.update{   s+   € Ý$Ô.¨u°dÔ6IÑJÔJˆØ*Ð-?Ñ?ˆÔÐÐr"   c                 ó:   — | j                              dd¬¦  «        S )Né   rN   rO   )rg   rR   r$   s    r   r%   zCrtCrc64NvmeChecksum.digest   s   € ØÔ"×+Ò+¨A¸Ð+Ñ?Ô?Ð?r"   NrT   r   r"   r   re   re   v   sI   € € € € € ð ð  ð  ð@ð @ð @ð@ð @ð @ð @ð @r"   re   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚCrtXxhash64Checksumc                 óL   — t           j                             ¦   «         | _        d S r   )rY   ÚXXHashÚnew_xxhash64Ú_xxhashr$   s    r   rG   zCrtXxhash64Checksum.__init__…   s   € Ý$Ô+×8Ò8Ñ:Ô:ˆŒˆˆr"   c                 ó:   — | j                              |¦  «         d S r   ©rq   r    r   s     r   r    zCrtXxhash64Checksum.updateˆ   ó   € ØŒ×Ò˜EÑ"Ô"Ð"Ð"Ð"r"   c                 ó4   — | j                              ¦   «         S r   ©rq   Úfinalizer$   s    r   r%   zCrtXxhash64Checksum.digest‹   ó   € ØŒ|×$Ò$Ñ&Ô&Ð&r"   NrT   r   r"   r   rm   rm   ƒ   sA   € € € € € ð;ð ;ð ;ð#ð #ð #ð'ð 'ð 'ð 'ð 'r"   rm   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚCrtXxhash3Checksumc                 óL   — t           j                             ¦   «         | _        d S r   )rY   ro   Únew_xxhash3_64rq   r$   s    r   rG   zCrtXxhash3Checksum.__init__‘   s   € Ý$Ô+×:Ò:Ñ<Ô<ˆŒˆˆr"   c                 ó:   — | j                              |¦  «         d S r   rs   r   s     r   r    zCrtXxhash3Checksum.update”   rt   r"   c                 ó4   — | j                              ¦   «         S r   rv   r$   s    r   r%   zCrtXxhash3Checksum.digest—   rx   r"   NrT   r   r"   r   rz   rz   �   sA   € € € € € ð=ð =ð =ð#ð #ð #ð'ð 'ð 'ð 'ð 'r"   rz   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚCrtXxhash128Checksumc                 óL   — t           j                             ¦   «         | _        d S r   )rY   ro   Únew_xxhash3_128rq   r$   s    r   rG   zCrtXxhash128Checksum.__init__�   s   € Ý$Ô+×;Ò;Ñ=Ô=ˆŒˆˆr"   c                 ó:   — | j                              |¦  «         d S r   rs   r   s     r   r    zCrtXxhash128Checksum.update    rt   r"   c                 ó4   — | j                              ¦   «         S r   rv   r$   s    r   r%   zCrtXxhash128Checksum.digest£   rx   r"   NrT   r   r"   r   r€   r€   ›   sA   € € € € € ð>ð >ð >ð#ð #ð #ð'ð 'ð 'ð 'ð 'r"   r€   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚSha1Checksumc                 ó,   — t          ¦   «         | _        d S r   )r   Ú	_checksumr$   s    r   rG   zSha1Checksum.__init__¨   s   € Ý™œˆŒˆˆr"   c                 ó:   — | j                              |¦  «         d S r   ©rˆ   r    r   s     r   r    zSha1Checksum.update«   ó   € ØŒ×Ò˜eÑ$Ô$Ð$Ð$Ð$r"   c                 ó4   — | j                              ¦   «         S r   ©rˆ   r%   r$   s    r   r%   zSha1Checksum.digest®   ó   € ØŒ~×$Ò$Ñ&Ô&Ð&r"   NrT   r   r"   r   r†   r†   §   sA   € € € € € ð ð  ð  ð%ð %ð %ð'ð 'ð 'ð 'ð 'r"   r†   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚSha256Checksumc                 ó,   — t          ¦   «         | _        d S r   )r   rˆ   r$   s    r   rG   zSha256Checksum.__init__³   ó   € Ý™œˆŒˆˆr"   c                 ó:   — | j                              |¦  «         d S r   rŠ   r   s     r   r    zSha256Checksum.update¶   r‹   r"   c                 ó4   — | j                              ¦   «         S r   r�   r$   s    r   r%   zSha256Checksum.digest¹   rŽ   r"   NrT   r   r"   r   r�   r�   ²   óA   € € € € € ð"ð "ð "ð%ð %ð %ð'ð 'ð 'ð 'ð 'r"   r�   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚSha512Checksumc                 ó,   — t          ¦   «         | _        d S r   )r   rˆ   r$   s    r   rG   zSha512Checksum.__init__¾   r’   r"   c                 ó:   — | j                              |¦  «         d S r   rŠ   r   s     r   r    zSha512Checksum.updateÁ   r‹   r"   c                 ó4   — | j                              ¦   «         S r   r�   r$   s    r   r%   zSha512Checksum.digestÄ   rŽ   r"   NrT   r   r"   r   r—   r—   ½   r•   r"   r—   c                   óB   — e Zd ZdZ	 	 	 dd„Zd„ Zdd„Zdd„Zd	„ Zd
„ Z	dS )ÚAwsChunkedWrapperr   Núx-amz-checksumc                 óx   — || _         || _        || _        |                      ¦   «          |€| j        }|| _        d S r   )Ú_rawÚ_checksum_nameÚ_checksum_clsÚ_resetÚ_DEFAULT_CHUNK_SIZEÚ_chunk_size)r   ÚrawÚchecksum_clsÚchecksum_nameÚ
chunk_sizes        r   rG   zAwsChunkedWrapper.__init__Ë   sD   € ð ˆŒ	Ø+ˆÔØ)ˆÔØ�Š‰ŒˆàÐØÔ1ˆJØ%ˆÔÐÐr"   c                 ót   — d| _         d| _        d | _        | j        r|                      ¦   «         | _        d S d S )Nr"   F)Ú
_remainingÚ	_completerˆ   r¡   r$   s    r   r¢   zAwsChunkedWrapper._resetÛ   sC   € ØˆŒØˆŒØˆŒØÔð 	2Ø!×/Ò/Ñ1Ô1ˆDŒNˆNˆNð	2ð 	2r"   r   c                 óš   — |dk    s|dk    rt          d¬¦  «        ‚|                      ¦   «          | j                             d¦  «         d S )Nr   z Can only seek to start of stream©Ú	error_msg)r
   r¢   rŸ   r5   )r   ÚoffsetÚwhences      r   r5   zAwsChunkedWrapper.seekâ   sV   € Ø�QŠ;ˆ;˜& Aš+˜+Ý(Ø<ðñ ô ð ð 	�Š‰ŒˆØŒ	�Š�qÑÔÐÐÐr"   c                 ó„  — |�|dk    rd }| j         r	| j        sdS |d u p|t          | j        ¦  «        k    }| j         sI|rG| xj        |                      ¦   «         z  c_        |d u p|t          | j        ¦  «        k    }| j         s|°G|€t          | j        ¦  «        }| j        d |…         }| j        |d …         | _        |S )Nr   r"   )r«   rª   ÚlenÚ_make_chunk)r   ÚsizeÚwant_more_bytesÚ	to_returns       r   r/   zAwsChunkedWrapper.readê   sï   € àÐ ¨¢	 	ØˆDð Œ>ð 	 $¤/ð 	Ø�3ð  $˜,ÐE¨$µ°T´_Ñ1EÔ1EÒ*EˆØ”.ð 	J _ð 	JØˆOŒO˜t×/Ò/Ñ1Ô1Ñ1ˆOŒOØ" d˜lÐI¨dµS¸¼Ñ5IÔ5IÒ.IˆOð ”.ð 	J _ð 	Jð
 ˆ<Ý�t”Ñ'Ô'ˆDð ”O E T EÔ*ˆ	Øœ/¨$¨%¨%Ô0ˆŒØÐr"   c                 óÄ  — | j                              | j        ¦  «        }t          t	          |¦  «        ¦  «        dd …                              d¦  «        }| | _        | j        r| j                             |¦  «         | j        rT| j        rM| j	                             d¦  «        }| j         
                    ¦   «                              d¦  «        }d||fz  S d||fz  S )Né   r'   s   0
%s:%s

s   %s
%s
)rŸ   r/   r¤   Úhexr²   Úencoder«   rˆ   r    r    r,   )r   Ú	raw_chunkÚhex_lenÚnameÚchecksums        r   r³   zAwsChunkedWrapper._make_chunk  s×   € ð ”I—N’N 4Ô#3Ñ4Ô4ˆ	Ý•c˜)‘n”nÑ%Ô% a b bÔ)×0Ò0°Ñ9Ô9ˆØ&˜ˆŒàŒ>ð 	-ØŒN×!Ò! )Ñ,Ô,Ð,àŒ>ð 	<˜dœnð 	<ØÔ&×-Ò-¨gÑ6Ô6ˆDØ”~×/Ò/Ñ1Ô1×8Ò8¸ÑAÔAˆHØ(¨D°(Ð+;Ñ;Ð;à '¨9Ð!5Ñ5Ð5r"   c              #   óV   K  — | j         s|                      ¦   «         V — | j         ¯d S d S r   )r«   r³   r$   s    r   Ú__iter__zAwsChunkedWrapper.__iter__  sH   è è € Ø”.ð 	%Ø×"Ò"Ñ$Ô$Ð$Ð$Ð$ð ”.ð 	%ð 	%ð 	%ð 	%ð 	%r"   )Nr�   N)r   r   )
r>   r?   r@   r£   rG   r¢   r5   r/   r³   rÀ   r   r"   r   rœ   rœ   È   sŽ   € € € € € Ø%Ðð
 Ø&Øð&ð &ð &ð &ð 2ð 2ð 2ðð ð ð ðð ð ð ð26ð 6ð 6ð$%ð %ð %ð %ð %r"   rœ   c                   óP   ‡ — e Zd Zˆ fd„Zed„ ¦   «         Zdˆ fd„	Zˆ fd„Zd„ Zˆ xZ	S )ÚStreamingChecksumBodyc                 óh   •— t          ¦   «                              ||¦  «         || _        || _        d S r   )ÚsuperrG   rˆ   Ú	_expected)r   Ú
raw_streamÚcontent_lengthr¾   ÚexpectedÚ	__class__s        €r   rG   zStreamingChecksumBody.__init__  s/   ø€ Ý‰Œ×Ò˜ ^Ñ4Ô4Ð4Ø!ˆŒØ!ˆŒˆˆr"   c                 ó   — | j         S r   )rˆ   r$   s    r   r¾   zStreamingChecksumBody.checksum   s
   € àŒ~Ðr"   Nc                 ó¼   •— t          ¦   «                              |¬¦  «        }| j                             |¦  «         |�|s|dk    r|                      ¦   «          |S )N)Úamtr   )rÄ   r/   rˆ   r    Ú_validate_checksum)r   rÌ   r   rÉ   s      €r   r/   zStreamingChecksumBody.read$  sX   ø€ Ý‘”—’ �Ñ%Ô%ˆØŒ×Ò˜eÑ$Ô$Ð$Øˆ;˜uˆ;¨¨qª¨Ø×#Ò#Ñ%Ô%Ð%Øˆr"   c                 ó2  •— t          ¦   «                              |¦  «        }|t          |¦  «        k    r|}nt          |¦  «        d |…         }| j                             |¦  «         |dk    r't          |¦  «        dk    r|                      ¦   «          |S rD   )rÄ   Úreadintor²   Ú
memoryviewrˆ   r    rÍ   )r   ÚbÚamount_readÚviewrÉ   s       €r   rÏ   zStreamingChecksumBody.readinto+  s�   ø€ Ý‘g”g×&Ò& qÑ)Ô)ˆØ�#˜a™&œ&Ò Ð ØˆDˆDå˜a‘=”=  + Ô.ˆDØŒ×Ò˜dÑ#Ô#Ð#Ø˜!ÒÐ¥ A¡¤¨¢
 
Ø×#Ò#Ñ%Ô%Ð%ØÐr"   c                 óè   — | j         €d S | j                             ¦   «         t          j        | j         ¦  «        k    r4d| j         › d| j                             ¦   «         › �}t          |¬¦  «        ‚d S )NúExpected checksum ú$ did not match calculated checksum: r­   )rÅ   rˆ   r%   r(   Ú	b64decoder,   r   )r   r®   s     r   rÍ   z(StreamingChecksumBody._validate_checksum6  s„   € ØŒ>Ð!ØˆFØŒ>× Ò Ñ"Ô"¥fÔ&6°t´~Ñ&FÔ&FÒFÐFð: T¤^ð :ð :Ø!œ^×5Ò5Ñ7Ô7ð:ð :ð õ (°)Ð<Ñ<Ô<Ð<ð GÐFr"   r   )
r>   r?   r@   rG   Úpropertyr¾   r/   rÏ   rÍ   Ú__classcell__)rÉ   s   @r   rÂ   rÂ     s™   ø€ € € € € ð"ð "ð "ð "ð "ð
 ðð ñ „Xððð ð ð ð ð ð	ð 	ð 	ð 	ð 	ð=ð =ð =ð =ð =ð =ð =r"   rÂ   c                 óh   — t          | ||¦  «         t          | ||¦  «         t          | ¦  «         d S r   )Ú"resolve_request_checksum_algorithmÚ$resolve_response_checksum_algorithmsÚ_register_checksum_feature_ids)ÚrequestÚoperation_modelÚparamss      r   Úresolve_checksum_contextrá   A  s:   € Ý& w°ÀÑHÔHÐHÝ(¨°/À6ÑJÔJÐJÝ" 7Ñ+Ô+Ð+Ð+Ð+r"   c                 ó\  — t          | ¦  «        rd S | d                              di ¦  «        }| d         d         j        }|j        }|j        p|                     d¦  «        }|                     d¦  «        }|ru||v rq|€t
          }||                              ¦   «         }	|	|vrIt          s/|	t          v r&t          d|	 
                    ¦   «         › d�¬¦  «        ‚t          d	|	› �¬
¦  «        ‚nc|s|r]|dk    rW| d                              d¦  «        rd S t                               ¦   «         }	t          || |¦  «        }
|
�|
t          dœ|d<   nd S d}|j        r7t          | d         ¦  «        j        dk    r| d         d         j        dk    rd}|	|d|	› �dœ}||d<   || d         d<   d S )NÚcontextr¾   Úclient_configÚrequestChecksumRequiredÚrequestAlgorithmMemberzUsing za requires an additional dependency. You will need to pip install botocore[crt] before proceeding.)Úmsgz Unsupported checksum algorithm: r­   Úwhen_supportedÚis_presign_request)r½   ÚvalueÚrequest_algorithm_headerÚheaderÚurlÚhttpsÚs3Útrailerúx-amz-checksum-)Ú	algorithmÚinr½   Úrequest_algorithm)r   ÚgetÚrequest_checksum_calculationÚhttp_checksumÚhttp_checksum_requiredÚ_SUPPORTED_CHECKSUM_ALGORITHMSÚlowerr   Ú_CRT_CHECKSUM_ALGORITHMSr   Úupperr   ÚDEFAULT_CHECKSUM_ALGORITHMÚ$_get_request_algorithm_member_headerÚhas_streaming_inputr	   ÚschemeÚsignature_version)rÞ   rß   rà   Úsupported_algorithmsÚchecksum_contextrö   r÷   Úrequest_checksum_requiredÚalgorithm_memberÚalgorithm_nameÚalgorithm_member_headerÚlocation_typerò   s                r   rÛ   rÛ   G  sf  € õ ˜7Ñ#Ô#ð Øˆà˜yÔ)×-Ò-¨j¸"Ñ=Ô=ÐØ#*¨9Ô#5Øô$ä"ð !ð $Ô1€MàÔ.ð 	8Ø×ÒÐ6Ñ7Ô7ð ð %×(Ò(Ð)AÑBÔBÐØð #Ð,°Ð6Ð6ð  Ð'Ý#AÐ àÐ 0Ô1×7Ò7Ñ9Ô9ˆØÐ!5Ð5Ð5Ýð ˜~Õ1IÐIÐIÝ0ð; ×!5Ò!5Ñ!7Ô!7ð ;ð ;ð ;ðñ ô ð õ (ØM¸^ÐMÐMðñ ô ð ð 6ð 
#ð ØðØ9Ð=MÒMÐMð �9Ô×!Ò!Ð"6Ñ7Ô7ð 	ØˆFÝ3×9Ò9Ñ;Ô;ˆÝ"FØ˜WÐ&6ñ#
ô #
Ðð #Ð.à/Ý3ð<ð <ÐÐ7Ñ8øð
 	ˆà€MàÔ+ð&å�W˜U”^Ñ$Ô$Ô+¨wÒ6Ð6à�9Ô˜oÔ.Ô@ÀDÒHÐHð &ˆMð $ØØ2 .Ð2Ð2ðð €Ið -6ÐÐ(Ñ)Ø%5€GˆIÔ�zÑ"Ð"Ð"r"   c                 ó®   — | j         }t          |t          ¦  «        sdS |j                             |¦  «        }|r|j                             d¦  «        S dS )zDGet the name of the header targeted by the "requestAlgorithmMember".Nr½   )Úinput_shaper9   r   Úmembersrõ   Úserialization)rß   rÞ   r  Úoperation_input_shapeÚalgorithm_member_shapes        r   rþ   rþ   •  so   € ð ,Ô7ÐÝÐ+­^Ñ<Ô<ð Øˆà2Ô:×>Ò>Øñô Ðð ð @Ø%Ô3×7Ò7¸Ñ?Ô?Ð?ð@ð @r"   c                 óÄ  — |                       di ¦  «                              di ¦  «        }|                      d¦  «        }|sd S |dk    rt          | ¦  «         na|d         dk    rt          | ¦  «         nE|d         dk    rt          | ¦  «         n)t	          d                     |d         ¦  «        ¬	¦  «        ‚d
|v r!|d
         }|d         | d         |d         <   d S d S )Nrã   r¾   rô   zconditional-md5ró   rì   rð   zUnknown checksum variant: {}r­   rë   rê   Úheadersr½   )rõ   r   Ú_apply_request_header_checksumÚ_apply_request_trailer_checksumr   Úformat)rÞ   r  rò   rë   s       r   Úapply_request_checksumr  ¥  s  € Ø—{’{ 9¨bÑ1Ô1×5Ò5°jÀ"ÑEÔEÐØ ×$Ò$Ð%8Ñ9Ô9€Iàð ØˆàÐ%Ò%Ð%å# GÑ,Ô,Ð,Ð,Ø	�4Œ˜HÒ	$Ð	$Ý& wÑ/Ô/Ð/Ð/Ø	�4Œ˜IÒ	%Ð	%Ý'¨Ñ0Ô0Ð0Ð0å#Ø4×;Ò;¸IÀd¼OÑLÔLð
ñ 
ô 
ð 	
ð "Ð%5Ð5Ð5Ø#3Ð4NÔ#OÐ à$ WÔ-ð 	�	ÔÐ3°FÔ;Ñ<Ð<Ð<ð 6Ð5r"   c                 óH  — |                       di ¦  «                              di ¦  «        }|                      d¦  «        }|d         }|| d         v rd S t                                |d         ¦  «        } |¦   «                              | d         ¦  «        }|| d         |<   d S )Nrã   r¾   rô   r½   r  rò   r<   )rõ   Ú_CHECKSUM_CLSr=   )rÞ   r  rò   Úlocation_namer¦   r%   s         r   r  r  ¾  s£   € Ø—{’{ 9¨bÑ1Ô1×5Ò5°jÀ"ÑEÔEÐØ ×$Ò$Ð%8Ñ9Ô9€IØ˜fÔ%€MØ˜ 	Ô*Ð*Ð*àˆÝ ×$Ò$ Y¨{Ô%;Ñ<Ô<€LØˆ\‰^Œ^×"Ò" 7¨6¤?Ñ3Ô3€FØ(.€GˆIÔ�}Ñ%Ð%Ð%r"   c                 ó�  — |                       di ¦  «                              di ¦  «        }|                      d¦  «        }|d         }t                                |d         ¦  «        }| d         }| d         }||v rd S d|d	<   d
|v r|d
xx         dz  cc<   nd|d
<   ||d<   t          |¦  «        }|€d|v rt          |d         ¦  «        }|�t	          |¦  «        |d<   d|v r|d= t
                               d¦  «         t          |t          t          f¦  «        rt          j        |¦  «        }t          |||¬¦  «        | d<   d S )Nrã   r¾   rô   r½   rò   r  r<   ÚchunkedzTransfer-EncodingzContent-Encodingz,aws-chunkedzaws-chunkedzX-Amz-TrailerzContent-LengthzX-Amz-Decoded-Content-LengthzVRemoving the Content-Length header since 'chunked' is specified for Transfer-Encoding.)r¦   r§   )rõ   r  r   ÚintÚstrÚloggerÚdebugr9   r:   r;   ÚioÚBytesIOrœ   )rÞ   r  rò   r  r¦   r  r<   rÇ   s           r   r  r  Ê  s”  € Ø—{’{ 9¨bÑ1Ô1×5Ò5°jÀ"ÑEÔEÐØ ×$Ò$Ð%8Ñ9Ô9€IØ˜fÔ%€MÝ ×$Ò$ Y¨{Ô%;Ñ<Ô<€Là�iÔ €GØ�6Œ?€Dà˜ÐÐàˆà#,€GÐÑ Ø˜WÐ$Ð$ð 	Ð"Ð#Ð#Ô# ~Ñ5Ð#Ð#Ñ#Ð#à&3ˆÐ"Ñ#Ø,€GˆOÑå-¨dÑ3Ô3€NØÐÐ"2°gÐ"=Ð"=õ
 ˜WÐ%5Ô6Ñ7Ô7ˆØÐ!õ 36°nÑ2EÔ2EˆÐ.Ñ/à˜7Ð"Ð"ØÐ$Ð%Ý�ŠØdñ	
ô 	
ð 	
õ �$�¥	Ð*Ñ+Ô+ð  ÝŒz˜$ÑÔˆå'ØØ!Ø#ðñ ô €GˆF�O€O€Or"   c                 óŒ  — t          | ¦  «        x}rC|D ]>}|                     ¦   «         }|dvr$|                     d¦  «        }t          |¦  «         Œ?dS |                      di ¦  «                             di ¦  «        }|                     d¦  «        }|r,t          |t          ¦  «        rt          |d         ¦  «         dS dS dS )zARegister feature IDs for checksum algorithms used in the request.)zX-AMZ-CHECKSUM-ALGORITHMzX-AMZ-CHECKSUM-MODEzX-AMZ-CHECKSUM-TYPEzX-AMZ-CHECKSUM-Nrã   r¾   rô   rò   )r   rü   ÚremoveprefixÚ'_register_checksum_algorithm_feature_idrõ   r9   Údict)rÞ   Úalgorithm_headersrì   r  r  rò   s         r   rÝ   rÝ   ü  sø   € å:¸7ÑCÔCÐCÐð 
Ø'ð 	Hð 	HˆFØ—\’\‘^”^ˆFØð ð ð ð
 "(×!4Ò!4Ð5FÑ!GÔ!G�Ý7¸ÑGÔGÐGøØˆð —{’{ 9¨bÑ1Ô1×5Ò5°jÀ"ÑEÔEÐØ ×$Ò$Ð%8Ñ9Ô9€IØð H•Z 	­4Ñ0Ô0ð HÝ/°	¸+Ô0FÑGÔGÐGÐGÐGðHð Hð Hð Hr"   c                 óf   — |                       ¦   «         }|dk    rd}d|› �}t          |¦  «         d S )NÚ	CRC64NVMEÚCRC64ÚFLEXIBLE_CHECKSUMS_REQ_)rü   r   )rò   Úchecksum_algorithm_nameÚ"checksum_algorithm_name_feature_ids      r   r"  r"    sK   € Ø'ŸošoÑ/Ô/ÐØ +Ò-Ð-Ø")Ðà;Ð"9Ð;Ð;ð 'õ Ð:Ñ;Ô;Ð;Ð;Ð;r"   c                 óP  — |j         }|                     d¦  «        }|r…||v rƒ|€t          }d„ |                     dg ¦  «        D ¦   «         }g }t          D ] }||vrŒ||v r|                     |¦  «         Œ!| d                              di ¦  «        }	||	d<   |	| d         d<   d S d S d S )NÚrequestValidationModeMemberc                 ó6   — h | ]}|                      ¦   «         ’ŒS r   )rú   )Ú.0Úas     r   ú	<setcomp>z7resolve_response_checksum_algorithms.<locals>.<setcomp>#  s-   € ð 
ð 
ð 
ØˆA�GŠG‰IŒIð
ð 
ð 
r"   ÚresponseAlgorithmsrã   r¾   Úresponse_algorithms)r÷   rõ   rù   Ú_ALGORITHMS_PRIORITY_LISTÚappend)
rÞ   rß   rà   r  r÷   Úmode_memberr2  Úusable_algorithmsrò   r  s
             r   rÜ   rÜ     s  € ð $Ô1€MØ×#Ò#Ð$AÑBÔB€KØð :�{ fÐ,Ð,ØÐ'Ý#AÐ ð
ð 
Ø,×0Ò0Ð1EÀrÑJÔJð
ñ 
ô 
Ðð ÐÝ2ð 	4ð 	4ˆIØÐ 3Ð3Ð3ØØÐ0Ð0Ð0Ø!×(Ò(¨Ñ3Ô3Ð3øà" 9Ô-×1Ò1°*¸bÑAÔAÐØ2CÐÐ.Ñ/Ø)9ˆ�	Ô˜:Ñ&Ð&Ð&ð!:ð :Ð,Ð,r"   c                 óš  — |d         }|                      di ¦  «        }|                      d¦  «        }|sd S |D ]u}d|› �}||vrŒd||         v rŒ|j        rt          | ||¦  «        |d<   nt          | ||¦  «        |d<   |d                               di ¦  «        }||d<   ||d         d<    d S t                               d	|¦  «         d S )
Nr  r¾   r2  rñ   ú-r<   rã   Úresponse_algorithmz[Skipping checksum validation. Response did not contain one of the following algorithms: %s.)rõ   Úhas_streaming_outputÚ_handle_streaming_responseÚ_handle_bytes_responser  r  )	Úhttp_responseÚresponserã   rß   r  r  Ú
algorithmsrò   Úheader_names	            r   Úhandle_checksum_bodyrA  3  s+  € Ø�yÔ!€GØ—{’{ :¨rÑ2Ô2ÐØ!×%Ò%Ð&;Ñ<Ô<€Jàð Øˆàð ð ˆ	Ø3¨	Ð3Ð3ˆà˜gÐ%Ð%Øð
 �'˜+Ô&Ð&Ð&ØàÔ/ð 	Ý9Ø˜x¨ñ ô  ˆH�VÑÐõ  6Ø˜x¨ñ ô  ˆH�VÑð
 $ IÔ.×2Ò2°:¸rÑBÔBÐØ1:ÐÐ-Ñ.Ø*:ˆ�Ô˜JÑ'Øˆˆå
‡L‚LØeØñô ð ð ð r"   c                 óÈ   — t                                |¦  «        }d|› �}t          | j        |d                              d¦  «         |¦   «         |d         |         ¦  «        S )Nrñ   r  zcontent-length)r  rõ   rÂ   r¥   )r=  r>  rò   r¦   r@  s        r   r;  r;  \  sg   € Ý ×$Ò$ YÑ/Ô/€LØ/ IÐ/Ð/€KÝ ØÔØ�Ô×ÒÐ 0Ñ1Ô1Øˆ‰ŒØ�Ô˜KÔ(ñ	ô ð r"   c                 óT  — | j         }d|› �}t                               |¦  «        } |¦   «         }|                     |¦  «         |d         |         }|                     ¦   «         t          j        |¦  «        k    r*d|› d|                     ¦   «         › �}t          |¬¦  «        ‚|S )Nrñ   r  rÕ   rÖ   r­   )	Úcontentr  rõ   r    r%   r(   r×   r,   r   )	r=  r>  rò   r<   r@  r¦   r¾   rÈ   r®   s	            r   r<  r<  g  s½   € ØÔ €DØ/ IÐ/Ð/€KÝ ×$Ò$ YÑ/Ô/€LØˆ|‰~Œ~€HØ‡O‚O�DÑÔÐØ˜	Ô" ;Ô/€HØ‡‚ÑÔ�FÔ,¨XÑ6Ô6Ò6Ð6ð0 ð 0ð 0Ø!×+Ò+Ñ-Ô-ð0ð 0ð 	õ $¨iÐ8Ñ8Ô8Ð8Ø€Kr"   )r   r   r   r   )r   rb   ri   Úxxhash64Úxxhash3Ú	xxhash128)r   rb   )r   é   rM   ri   )r   é   r¸   rE  rF  rG  c              #   ó(   K  — | ]}|t           v V — Œd S r   )rû   )r.  r½   s     r   ú	<genexpr>rK  —  s9   è è € ð ð Ø-1ˆÕ(Ð(ðð ð ð ð ð r"   )	rG  rF  ri   rE  rb   r   r   r   r   r   )FÚ__doc__r(   r  ÚloggingÚbinasciir   Úhashlibr   r   r   Úbotocore.compatr   r   r	   Úbotocore.exceptionsr
   r   r   Úbotocore.modelr   Úbotocore.responser   Úbotocore.useragentr   Úbotocore.utilsr   r   r   r   Úawscrtr   rY   Ú	getLoggerr>   r  rý   r   rB   rV   r^   re   rm   rz   r€   r†   r�   r—   rœ   rÂ   rá   rÛ   rþ   r  r  r  rÝ   r"  rÜ   rA  r;  r<  r  rû   Ú_CRT_CHECKSUM_CLSr    ÚallÚkeysÚlistrù   r3  r   r"   r   ú<module>r\     s’  ððð ð €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (à FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fðð ð ð ð ð ð ð ð ð ð
 *Ð )Ð )Ð )Ð )Ð )Ø +Ð +Ð +Ð +Ð +Ð +Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð ð ð ð ð ð ð ð ð ð ð Ø1Ð1Ð1Ð1Ð1Ð1Ð1à€Mà	ˆÔ	˜8Ñ	$Ô	$€à$Ð ð ð  ð  ð  ð  ñ  ô  ð  ð6<ð <ð <ð <ð <�Lñ <ô <ð <ð
<ð 
<ð 
<ð 
<ð 
<�|ñ 
<ô 
<ð 
<ð
=ð 
=ð 
=ð 
=ð 
=˜ñ 
=ô 
=ð 
=ð
@ð 
@ð 
@ð 
@ð 
@˜<ñ 
@ô 
@ð 
@ð	'ð 	'ð 	'ð 	'ð 	'˜,ñ 	'ô 	'ð 	'ð	'ð 	'ð 	'ð 	'ð 	'˜ñ 	'ô 	'ð 	'ð	'ð 	'ð 	'ð 	'ð 	'˜<ñ 	'ô 	'ð 	'ð'ð 'ð 'ð 'ð '�<ñ 'ô 'ð 'ð'ð 'ð 'ð 'ð '�\ñ 'ô 'ð 'ð'ð 'ð 'ð 'ð '�\ñ 'ô 'ð 'ðO%ð O%ð O%ð O%ð O%ñ O%ô O%ð O%ðd$=ð $=ð $=ð $=ð $=˜Mñ $=ô $=ð $=ðN,ð ,ð ,ð ð	K6ð K6ð K6ð K6ð\@ð @ð @ð 
ð 
ð 
ð2	/ð 	/ð 	/ð/ð /ð /ðdHð Hð Hð*<ð <ð <ð <@ð:ð :ð :ð :ð0&ð &ð &ðRð ð ðð ð ð" ØØØð	ð €ðð ð Ð ð ð ð "Ø#ðð Ðð
 Ð˜zÑ*Ô*ð >à)=Ð˜+Ñ&àÐ˜zÑ*Ô*ð >Ø(;Ð˜*Ñ%Ø'9Ð˜)Ñ$Ø)=Ð˜+Ñ&à×ÒÐ*Ñ+Ô+Ð+àˆ3ð ð Ø5F×5KÒ5KÑ5MÔ5Mðñ ô ñ ô ð ð ð ð "&  m×&8Ò&8Ñ&:Ô&:Ñ!;Ô!;Ð ð
ð 
ð 
Ð Ð Ð r"   