§
    7xÅjo´  ã                   óÆ  — 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Zd dlZd dlm	Z	 d dl
mZ d dlmZmZ d dlmZ d dlmZ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mZm Z m!Z! d dl"m#Z#m$Z$m%Z%  ej&        e'¦  «        Z(d	Z)d
Z*dZ+dZ,g d¢Z-dZ.dZ/d„ Z0d„ Z1 G d„ d¦  «        Z2 G d„ de2¦  «        Z3 G d„ de2¦  «        Z4 G d„ de2¦  «        Z5 G d„ de2¦  «        Z6 G d„ de6¦  «        Z7 G d„ de7¦  «        Z8 G d „ d!e8¦  «        Z9 G d"„ d#e8¦  «        Z: G d$„ d%e6¦  «        Z; G d&„ d'e;¦  «        Z< G d(„ d)e6¦  «        Z= G d*„ d+e2¦  «        Z> G d,„ d-e>¦  «        Z? G d.„ d/e>¦  «        Z@ G d0„ d1e3¦  «        ZAd2„ ZBd3„ ZCe4e5e5e>e?e@e=e8e:e9eAd4œZDerd d5lEmFZF eD G                    eF¦  «         neD G                    e6e;e7e<d6œ¦  «         d7d8d9d:d;œZHd<„ eH I                    ¦   «         D ¦   «         ZJdS )=é    N)ÚMapping©Ú
formatdate)Úsha1Úsha256)Ú
itemgetter)ÚHAS_CRTÚMD5_AVAILABLEÚHTTPHeadersÚencodebytesÚensure_unicodeÚget_current_datetimeÚparse_qsÚquoteÚunquoteÚurlsplitÚ
urlunsplit)ÚNoAuthTokenErrorÚNoCredentialsErrorÚUnknownSignatureVersionErrorÚ UnsupportedSignatureVersionError)Úis_valid_ipv6_endpoint_urlÚnormalize_url_pathÚpercent_encode_sequenceÚ@e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855i   z%Y-%m-%dT%H:%M:%SZz%Y%m%dT%H%M%SZ)Ú
connectionÚexpectz
keep-alivezproxy-authenticatezproxy-authorizationÚteÚtrailerztransfer-encodingÚupgradez
user-agentzx-amzn-trace-idzUNSIGNED-PAYLOADz"STREAMING-UNSIGNED-PAYLOAD-TRAILERc                 óÒ   — t          | ¦  «        }|j        }t          | ¦  «        rd|› d�}dddœ}|j        �/|j        |                     |j        ¦  «        k    r|› d|j        › �}|S )Nú[ú]éP   i»  )ÚhttpÚhttpsú:)r   Úhostnamer   ÚportÚgetÚscheme)ÚurlÚ	url_partsÚhostÚdefault_portss       ú>C:\Projects\Historical\venv\Lib\site-packages\botocore/auth.pyÚ_host_from_urlr1   Q   sˆ   € õ
 ˜‘”€IØÔ€DÝ! #Ñ&Ô&ð Ø�4ˆ{ˆ{ˆ{ˆàØðð €Mð „~Ð!ØŒ>˜]×.Ò.¨yÔ/?Ñ@Ô@Ò@Ð@ØÐ-Ð-˜Yœ^Ð-Ð-ˆDØ€Kó    c                 óà   — | j         }t          |t          ¦  «        r(t          j        |                     d¦  «        ¦  «        }n)t          |t          ¦  «        rt          j        |¦  «        }|S ©Núutf-8)ÚdataÚ
isinstanceÚbytesÚjsonÚloadsÚdecodeÚstr)Úrequestr6   s     r0   Ú_get_body_as_dictr>   d   s`   € ð
 Œ<€DÝ�$�ÑÔð  ÝŒz˜$Ÿ+š+ gÑ.Ô.Ñ/Ô/ˆˆÝ	�D�#Ñ	Ô	ð  ÝŒz˜$ÑÔˆØ€Kr2   c                   ó   — e Zd ZdZdZd„ ZdS )Ú
BaseSignerFc                 ó    — t          d¦  «        ‚)NÚadd_auth)ÚNotImplementedError©Úselfr=   s     r0   rB   zBaseSigner.add_authu   s   € Ý! *Ñ-Ô-Ð-r2   N)Ú__name__Ú
__module__Ú__qualname__ÚREQUIRES_REGIONÚREQUIRES_TOKENrB   © r2   r0   r@   r@   q   s-   € € € € € Ø€OØ€Nð.ð .ð .ð .ð .r2   r@   c                   ó   — e Zd ZdZ	 d„ ZdS )ÚTokenSignerTc                 ó   — || _         d S ©N)Ú
auth_token)rE   rP   s     r0   Ú__init__zTokenSigner.__init__   s   € Ø$ˆŒˆˆr2   N)rF   rG   rH   rJ   rQ   rK   r2   r0   rM   rM   y   s-   € € € € € Ø€Nðð%ð %ð %ð %ð %r2   rM   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )Ú	SigV2Authz+
    Sign a request with Signature V2.
    c                 ó   — || _         d S rO   ©Úcredentials©rE   rV   s     r0   rQ   zSigV2Auth.__init__ˆ   ó   € Ø&ˆÔÐÐr2   c                 ó¬  — t                                d¦  «         t          |j        ¦  «        }|j        }t          |¦  «        dk    rd}|j        › d|j        › d|› d�}t          j	        | j
        j                             d¦  «        t          ¬¦  «        }g }t          |¦  «        D ]€}|dk    rŒ	t          ||         ¦  «        }	t!          |                     d¦  «        d¬	¦  «        }
t!          |	                     d¦  «        d
¬	¦  «        }|                     |
› d|› �¦  «         Œ�d                     |¦  «        }||z  }t                                d|¦  «         |                     |                     d¦  «        ¦  «         t)          j        |                     ¦   «         ¦  «                             ¦   «                              d¦  «        }||fS )Nz$Calculating signature using v2 auth.r   ú/ú
r5   ©Ú	digestmodÚ	SignatureÚ ©Úsafez-_~ú=ú&zString to sign: %s)ÚloggerÚdebugr   r,   ÚpathÚlenÚmethodÚnetlocÚhmacÚnewrV   Ú
secret_keyÚencoder   Úsortedr<   r   ÚappendÚjoinÚupdateÚbase64Ú	b64encodeÚdigestÚstripr;   )rE   r=   ÚparamsÚsplitrf   Ústring_to_signÚlhmacÚpairsÚkeyÚvalueÚ
quoted_keyÚquoted_valueÚqsÚb64s                 r0   Úcalc_signaturezSigV2Auth.calc_signature‹   s¶  € Ý�ŠÐ;Ñ<Ô<Ð<Ý˜œÑ%Ô%ˆØŒzˆÝˆt‰9Œ9˜Š>ˆ>ØˆDØ#œNÐFÐF¨e¬lÐFÐF¸dÐFÐFÐFˆÝ”ØÔÔ'×.Ò.¨wÑ7Ô7Å6ð
ñ 
ô 
ˆð ˆÝ˜&‘>”>ð 		9ð 		9ˆCð �kÒ!Ð!ØÝ˜˜sœÑ$Ô$ˆEÝ˜sŸzšz¨'Ñ2Ô2¸Ð<Ñ<Ô<ˆJÝ  §¢¨gÑ!6Ô!6¸UÐCÑCÔCˆLØ�LŠL˜JÐ7Ð7¨Ð7Ð7Ñ8Ô8Ð8Ð8Ø�XŠX�e‰_Œ_ˆØ˜"ÑˆÝ�ŠÐ)¨>Ñ:Ô:Ð:Ø�Š�^×*Ò*¨7Ñ3Ô3Ñ4Ô4Ð4ÝÔ˜uŸ|š|™~œ~Ñ.Ô.×4Ò4Ñ6Ô6×=Ò=¸gÑFÔFˆØ�CˆyÐr2   c                 ó\  — | j         €t          ¦   «         ‚|j        r|j        }n|j        }| j         j        |d<   d|d<   d|d<   t          j        t          t          j        ¦   «         ¦  «        |d<   | j         j	        r| j         j	        |d<   |  
                    ||¦  «        \  }}||d<   |S )	NÚAWSAccessKeyIdÚ2ÚSignatureVersionÚ
HmacSHA256ÚSignatureMethodÚ	TimestampÚSecurityTokenr^   )rV   r   r6   rv   Ú
access_keyÚtimeÚstrftimeÚISO8601ÚgmtimeÚtokenr�   )rE   r=   rv   r   Ú	signatures        r0   rB   zSigV2Auth.add_auth§   s¾   € ð ÔÐ#Ý$Ñ&Ô&Ð&ØŒ<ð 	$à”\ˆFˆFð ”^ˆFØ#'Ô#3Ô#>ˆÐÑ Ø%(ˆÐ!Ñ"Ø$0ˆÐ Ñ!Ý"œm­GµT´[±]´]ÑCÔCˆˆ{ÑØÔÔ!ð 	=Ø&*Ô&6Ô&<ˆF�?Ñ#Ø×+Ò+¨G°VÑ<Ô<‰ˆˆIØ'ˆˆ{ÑØˆr2   N)rF   rG   rH   Ú__doc__rQ   r�   rB   rK   r2   r0   rS   rS   ƒ   sK   € € € € € ðð ð'ð 'ð 'ðð ð ð8ð ð ð ð r2   rS   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú	SigV3Authc                 ó   — || _         d S rO   rU   rW   s     r0   rQ   zSigV3Auth.__init__Á   rX   r2   c                 ó   — | j         €t          ¦   «         ‚d|j        v r|j        d= t          d¬¦  «        |j        d<   | j         j        r%d|j        v r|j        d= | j         j        |j        d<   t          j        | j         j                             d¦  «        t          ¬¦  «        }| 
                    |j        d                              d¦  «        ¦  «         t          |                     ¦   «         ¦  «                             ¦   «         }d| j         j        › d|                     d¦  «        › �}d	|j        v r|j        d	= ||j        d	<   d S )
NÚDateT©ÚusegmtúX-Amz-Security-Tokenr5   r\   zAWS3-HTTPS AWSAccessKeyId=z ,Algorithm=HmacSHA256,Signature=zX-Amzn-Authorization)rV   r   Úheadersr   r�   rj   rk   rl   rm   r   rq   r   rt   ru   rŠ   r;   )rE   r=   Únew_hmacÚencoded_signaturer�   s        r0   rB   zSigV3Auth.add_authÄ   sd  € ØÔÐ#Ý$Ñ&Ô&Ð&Ø�W”_Ð$Ð$Ø” Ð'Ý",°DÐ"9Ñ"9Ô"9ˆŒ˜ÑØÔÔ!ð 	MØ%¨¬Ð8Ð8Ø”OÐ$:Ð;Ø6:Ô6FÔ6LˆGŒOÐ2Ñ3Ý”8ØÔÔ'×.Ò.¨wÑ7Ô7Å6ð
ñ 
ô 
ˆð 	�Š˜œ¨Ô/×6Ò6°wÑ?Ô?Ñ@Ô@Ð@Ý'¨¯ªÑ(9Ô(9Ñ:Ô:×@Ò@ÑBÔBÐðR¨Ô)9Ô)Dð Rð RØ.?×.FÒ.FÀwÑ.OÔ.OðRð Rð 	ð " W¤_Ð4Ð4Ø”Ð 6Ð7Ø2;ˆŒÐ.Ñ/Ð/Ð/r2   N)rF   rG   rH   rQ   rB   rK   r2   r0   r“   r“   À   s2   € € € € € ð'ð 'ð 'ð<ð <ð <ð <ð <r2   r“   c                   óœ   — e Zd ZdZdZd„ Zdd„Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú	SigV4Authz+
    Sign a request with Signature V4.
    Tc                 ó0   — || _         || _        || _        d S rO   )rV   Ú_region_nameÚ_service_name©rE   rV   Úservice_nameÚregion_names       r0   rQ   zSigV4Auth.__init__ã   s"   € Ø&ˆÔð (ˆÔØ)ˆÔÐÐr2   Fc                 ó  — |rAt          j        ||                     d¦  «        t          ¦  «                             ¦   «         }n@t          j        ||                     d¦  «        t          ¦  «                             ¦   «         }|S r4   )rj   rk   rm   r   Ú	hexdigestrt   )rE   r{   ÚmsgÚhexÚsigs        r0   Ú_signzSigV4Auth._signë   sh   € Øð 	FÝ”(˜3 §
¢
¨7Ñ 3Ô 3µVÑ<Ô<×FÒFÑHÔHˆCˆCå”(˜3 §
¢
¨7Ñ 3Ô 3µVÑ<Ô<×CÒCÑEÔEˆCØˆ
r2   c                 óÚ   — t          ¦   «         }|j                             ¦   «         D ]'\  }}|                     ¦   «         }|t          vr|||<   Œ(d|vrt          |j        ¦  «        |d<   |S )zk
        Select the headers from the request that need to be included
        in the StringToSign.
        r.   )r   rš   ÚitemsÚlowerÚSIGNED_HEADERS_BLACKLISTr1   r,   )rE   r=   Ú
header_mapÚnamer|   Úlnames         r0   Úheaders_to_signzSigV4Auth.headers_to_signò   sy   € õ
 !‘]”]ˆ
Ø"œ?×0Ò0Ñ2Ô2ð 	*ð 	*‰KˆD�%Ø—J’J‘L”LˆEØÕ4Ð4Ð4Ø$)�
˜5Ñ!øØ˜Ð#Ð#õ "0°´Ñ!<Ô!<ˆJ�vÑØÐr2   c                 ó’   — |j         r|                      |j         ¦  «        S |                      t          |j        ¦  «        ¦  «        S rO   )rv   Ú_canonical_query_string_paramsÚ_canonical_query_string_urlr   r,   rD   s     r0   Úcanonical_query_stringz SigV4Auth.canonical_query_string  sC   € ð
 Œ>ð 	KØ×6Ò6°w´~ÑFÔFÐFà×3Ò3µH¸W¼[Ñ4IÔ4IÑJÔJÐJr2   c           	      ó|  — g }t          |t          ¦  «        r|                     ¦   «         }|D ]G\  }}|                     t	          |d¬¦  «        t	          t          |¦  «        d¬¦  «        f¦  «         ŒHg }t          |¦  «        D ]\  }}|                     |› d|› �¦  «         Œ d                     |¦  «        }|S )Nz-_.~r`   rb   rc   )r7   r   r¬   ro   r   r<   rn   rp   )rE   rv   Úkey_val_pairsr{   r|   Úsorted_key_valsr¶   s          r0   r´   z(SigV4Auth._canonical_query_string_params  sß   € àˆÝ�f�gÑ&Ô&ð 	$Ø—\’\‘^”^ˆFØ ð 	ð 	‰JˆC�Ø× Ò Ý�s Ð(Ñ(Ô(­%µ°E±
´
ÀÐ*HÑ*HÔ*HÐIñô ð ð ð ˆõ ! Ñ/Ô/ð 	5ð 	5‰JˆC�Ø×"Ò" cÐ#3Ð#3¨EÐ#3Ð#3Ñ4Ô4Ð4Ð4Ø!$§¢¨/Ñ!:Ô!:ÐØ%Ð%r2   c                 óB  — d}|j         r•g }|j                              d¦  «        D ]2}|                     d¦  «        \  }}}|                     ||f¦  «         Œ3g }t	          |¦  «        D ]\  }}|                     |› d|› �¦  «         Œ d                     |¦  «        }|S )Nr_   rc   rb   )Úqueryrw   Ú	partitionro   rn   rp   )	rE   Úpartsr¶   r¸   Úpairr{   Ú_r|   r¹   s	            r0   rµ   z%SigV4Auth._canonical_query_string_url  sÇ   € Ø!#ÐØŒ;ð 	?àˆMØœ×)Ò)¨#Ñ.Ô.ð 3ð 3�Ø $§¢¨sÑ 3Ô 3‘��Q˜Ø×$Ò$ c¨5 \Ñ2Ô2Ð2Ð2Ø ˆOõ % ]Ñ3Ô3ð 9ð 9‘
��UØ×&Ò&¨#Ð'7Ð'7°Ð'7Ð'7Ñ8Ô8Ð8Ð8Ø%(§X¢X¨oÑ%>Ô%>Ð"Ø%Ð%r2   c                 ó*  ‡ — g }t          t          |¦  «        ¦  «        }|D ]]}d                     ˆ fd„|                     |¦  «        D ¦   «         ¦  «        }|                     |› dt          |¦  «        › �¦  «         Œ^d                     |¦  «        S )a  
        Return the headers that need to be included in the StringToSign
        in their canonical form by converting all header keys to lower
        case, sorting them in alphabetical order and then joining
        them into a string, separated by newlines.
        ú,c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rO   )Ú_header_value)Ú.0ÚvrE   s     €r0   ú	<genexpr>z.SigV4Auth.canonical_headers.<locals>.<genexpr>7  sB   øè è € ð ð Ø*+�×"Ò" 1Ñ%Ô%ðð ð ð ð ð r2   r'   r[   )rn   Úsetrp   Úget_allro   r   )rE   r²   rš   Úsorted_header_namesr{   r|   s   `     r0   Úcanonical_headerszSigV4Auth.canonical_headers-  sµ   ø€ ð ˆÝ$¥S¨Ñ%9Ô%9Ñ:Ô:ÐØ&ð 	=ð 	=ˆCØ—H’Hð ð ð ð Ø/>×/FÒ/FÀsÑ/KÔ/Kðñ ô ñ ô ˆEð �NŠN˜cÐ;Ð;¥N°5Ñ$9Ô$9Ð;Ð;Ñ<Ô<Ð<Ð<Ø�yŠy˜Ñ!Ô!Ð!r2   c                 óP   — d                      |                     ¦   «         ¦  «        S )Nú )rp   rw   )rE   r|   s     r0   rÃ   zSigV4Auth._header_value=  s   € ð �xŠx˜Ÿš™œÑ&Ô&Ð&r2   c                 óx   — t          d„ t          |¦  «        D ¦   «         ¦  «        }d                     |¦  «        S )Nc              3   ób   K  — | ]*}|                      ¦   «                              ¦   «         V — Œ+d S rO   )r­   ru   )rÄ   Úns     r0   rÆ   z+SigV4Auth.signed_headers.<locals>.<genexpr>F  s4   è è € ÐIÐI¨q˜Ÿš™œŸšÑ*Ô*ÐIÐIÐIÐIÐIÐIr2   ú;)rn   rÇ   rp   )rE   r²   rš   s      r0   Úsigned_headerszSigV4Auth.signed_headersE  s8   € ÝÐIÐIµC¸Ñ4HÔ4HÐIÑIÔIÑIÔIˆØ�xŠx˜Ñ Ô Ð r2   c                 ó¾   — |j                              di ¦  «        }|                     d¦  «        }t          |t          ¦  «        o|                     d¦  «        dk    S )NÚchecksumÚrequest_algorithmÚinr   )Úcontextr*   r7   Údict)rE   r=   Úchecksum_contextÚ	algorithms       r0   Ú_is_streaming_checksum_payloadz(SigV4Auth._is_streaming_checksum_payloadI  sT   € Ø"œ?×.Ò.¨z¸2Ñ>Ô>ÐØ$×(Ò(Ð)<Ñ=Ô=ˆ	Ý˜)¥TÑ*Ô*ÐO¨y¯}ª}¸TÑ/BÔ/BÀiÒ/OÐOr2   c                 ó   — |                       |¦  «        rt          S |                      |¦  «        st          S |j        }|r¤t          |d¦  «        r”|                     ¦   «         }t          j        |j	        t          ¦  «        }t          ¦   «         }t          |d¦  «        D ]}|                     |¦  «         Œ|                     ¦   «         }|                     |¦  «         |S |r!t          |¦  «                             ¦   «         S t           S )NÚseekr2   )rÚ   Ú"STREAMING_UNSIGNED_PAYLOAD_TRAILERÚ_should_sha256_sign_payloadÚUNSIGNED_PAYLOADÚbodyÚhasattrÚtellÚ	functoolsÚpartialÚreadÚPAYLOAD_BUFFERr   Úiterrq   r¦   rÜ   ÚEMPTY_SHA256_HASH)rE   r=   Úrequest_bodyÚpositionÚread_chunksizerÓ   ÚchunkÚhex_checksums           r0   ÚpayloadzSigV4Auth.payloadN  s  € Ø×.Ò.¨wÑ7Ô7ð 	$Ý5Ð5Ø×1Ò1°'Ñ:Ô:ð 	$õ $Ð#Ø”|ˆØð 	%�G L°&Ñ9Ô9ð 	%Ø#×(Ò(Ñ*Ô*ˆHÝ&Ô.ØÔ!¥>ñô ˆNõ ‘x”xˆHÝ˜n¨cÑ2Ô2ð 'ð '�Ø—’ Ñ&Ô&Ð&Ð&Ø#×-Ò-Ñ/Ô/ˆLØ×Ò˜hÑ'Ô'Ð'ØÐØð 	%õ ˜,Ñ'Ô'×1Ò1Ñ3Ô3Ð3å$Ð$r2   c                 óp   — |j                              d¦  «        sdS |j                             dd¦  «        S )Nr&   TÚpayload_signing_enabled)r,   Ú
startswithrÖ   r*   rD   s     r0   rÞ   z%SigV4Auth._should_sha256_sign_payloadh  s:   € àŒ{×%Ò% gÑ.Ô.ð 	Ø�4ð
 Œ×"Ò"Ð#<¸dÑCÔCÐCr2   c                 ó„  — |j                              ¦   «         g}|                      t          |j        ¦  «        j        ¦  «        }|                     |¦  «         |                     |                      |¦  «        ¦  «         |                      |¦  «        }|                     |  	                    |¦  «        dz   ¦  «         |                     |  
                    |¦  «        ¦  «         d|j        v r|j        d         }n|                      |¦  «        }|                     |¦  «         d                     |¦  «        S )Nr[   úX-Amz-Content-SHA256)rh   ÚupperÚ_normalize_url_pathr   r,   rf   ro   r¶   r²   rÊ   rÑ   rš   rî   rp   )rE   r=   Úcrrf   r²   Úbody_checksums         r0   Úcanonical_requestzSigV4Auth.canonical_requestr  s  € ØŒn×"Ò"Ñ$Ô$Ð%ˆØ×'Ò'­°´Ñ(=Ô(=Ô(BÑCÔCˆØ
�	Š	�$‰ŒˆØ
�	Š	�$×-Ò-¨gÑ6Ô6Ñ7Ô7Ð7Ø×.Ò.¨wÑ7Ô7ˆØ
�	Š	�$×(Ò(¨Ñ9Ô9¸DÑ@ÑAÔAÐAØ
�	Š	�$×%Ò% oÑ6Ô6Ñ7Ô7Ð7Ø! W¤_Ð4Ð4Ø#œOÐ,BÔCˆMˆMà ŸLšL¨Ñ1Ô1ˆMØ
�	Š	�-Ñ Ô Ð Ø�yŠy˜‰}Œ}Ðr2   c                 óB   — t          t          |¦  «        d¬¦  «        }|S )Nz/~r`   )r   r   )rE   rf   Únormalized_paths      r0   rõ   zSigV4Auth._normalize_url_path�  s#   € ÝÕ 2°4Ñ 8Ô 8¸tÐDÑDÔDˆØÐr2   c                 ó(  — | j         j        g}|                     |j        d         dd…         ¦  «         |                     | j        ¦  «         |                     | j        ¦  «         |                     d¦  «         d                     |¦  «        S ©NÚ	timestampr   é   Úaws4_requestrZ   )rV   rŠ   ro   rÖ   r    r¡   rp   ©rE   r=   Úscopes      r0   r  zSigV4Auth.scope…  s~   € ØÔ!Ô,Ð-ˆØ�Š�W”_ [Ô1°!°A°#Ô6Ñ7Ô7Ð7Ø�Š�TÔ&Ñ'Ô'Ð'Ø�Š�TÔ'Ñ(Ô(Ð(Ø�Š�^Ñ$Ô$Ð$Ø�xŠx˜‰ŒÐr2   c                 ó  — g }|                      |j        d         dd…         ¦  «         |                      | j        ¦  «         |                      | j        ¦  «         |                      d¦  «         d                     |¦  «        S rü   )ro   rÖ   r    r¡   rp   r   s      r0   Úcredential_scopezSigV4Auth.credential_scope�  su   € ØˆØ�Š�W”_ [Ô1°!°A°#Ô6Ñ7Ô7Ð7Ø�Š�TÔ&Ñ'Ô'Ð'Ø�Š�TÔ'Ñ(Ô(Ð(Ø�Š�^Ñ$Ô$Ð$Ø�xŠx˜‰ŒÐr2   c                 óP  — dg}|                      |j        d         ¦  «         |                      |                      |¦  «        ¦  «         |                      t          |                     d¦  «        ¦  «                             ¦   «         ¦  «         d                     |¦  «        S )z¬
        Return the canonical StringToSign as well as a dict
        containing the original version of all headers that
        were included in the StringToSign.
        úAWS4-HMAC-SHA256rý   r5   r[   )ro   rÖ   r  r   rm   r¦   rp   )rE   r=   rø   Ústss       r0   rx   zSigV4Auth.string_to_sign•  sŠ   € ð "Ð"ˆØ�
Š
�7”? ;Ô/Ñ0Ô0Ð0Ø�
Š
�4×(Ò(¨Ñ1Ô1Ñ2Ô2Ð2Ø�
Š
•6Ð+×2Ò2°7Ñ;Ô;Ñ<Ô<×FÒFÑHÔHÑIÔIÐIØ�yŠy˜‰~Œ~Ðr2   c                 ó^  — | j         j        }|                      d|› �                     ¦   «         |j        d         dd…         ¦  «        }|                      || j        ¦  «        }|                      || j        ¦  «        }|                      |d¦  «        }|                      ||d¬¦  «        S )NÚAWS4rý   r   rþ   rÿ   T)r¨   )rV   rl   rª   rm   rÖ   r    r¡   )rE   rx   r=   r{   Úk_dateÚk_regionÚ	k_serviceÚ	k_signings           r0   r�   zSigV4Auth.signature¡  s    € ØÔÔ)ˆØ—’Ø�Cˆ\ˆ\×!Ò!Ñ#Ô# W¤_°[Ô%AÀ!ÀAÀ#Ô%Fñ
ô 
ˆð —:’:˜f dÔ&7Ñ8Ô8ˆØ—J’J˜x¨Ô);Ñ<Ô<ˆ	Ø—J’J˜y¨.Ñ9Ô9ˆ	Ø�zŠz˜) ^¸ˆzÑ>Ô>Ð>r2   c                 ó>  — | j         €t          ¦   «         ‚t          ¦   «         }|                     t          ¦  «        |j        d<   |                      |¦  «         |                      |¦  «        }t           	                    d¦  «         t           	                    d|¦  «         |  
                    ||¦  «        }t           	                    d|¦  «         |                      ||¦  «        }t           	                    d|¦  «         |                      ||¦  «         d S )Nrý   z$Calculating signature using v4 auth.zCanonicalRequest:
%súStringToSign:
%szSignature:
%s)rV   r   r   rŒ   ÚSIGV4_TIMESTAMPrÖ   Ú_modify_request_before_signingrø   rd   re   rx   r�   Ú_inject_signature_to_request)rE   r=   Údatetime_nowrø   rx   r�   s         r0   rB   zSigV4Auth.add_auth«  sþ   € ØÔÐ#Ý$Ñ&Ô&Ð&Ý+Ñ-Ô-ˆØ'3×'<Ò'<½_Ñ'MÔ'MˆŒ˜Ñ$ð 	×+Ò+¨GÑ4Ô4Ð4Ø ×2Ò2°7Ñ;Ô;ÐÝ�ŠÐ;Ñ<Ô<Ð<Ý�ŠÐ,Ð.?Ñ@Ô@Ð@Ø×,Ò,¨WÐ6GÑHÔHˆÝ�ŠÐ(¨.Ñ9Ô9Ð9Ø—N’N >°7Ñ;Ô;ˆ	Ý�ŠÐ% yÑ1Ô1Ð1à×)Ò)¨'°9Ñ=Ô=Ð=Ð=Ð=r2   c                 ó"  — d|                       |¦  «        › �g}|                      |¦  «        }|                     d|                      |¦  «        › �¦  «         |                     d|› �¦  «         d                     |¦  «        |j        d<   |S )NzAWS4-HMAC-SHA256 Credential=zSignedHeaders=z
Signature=ú, ÚAuthorization)r  r²   ro   rÑ   rp   rš   )rE   r=   r�   Úauth_strr²   s        r0   r  z&SigV4Auth._inject_signature_to_request½  sš   € ØH°4·:²:¸gÑ3FÔ3FÐHÐHÐIˆØ×.Ò.¨wÑ7Ô7ˆØ�ŠØC˜T×0Ò0°ÑAÔAÐCÐCñ	
ô 	
ð 	
ð 	�ŠÐ0 YÐ0Ð0Ñ1Ô1Ð1Ø+/¯9ª9°XÑ+>Ô+>ˆŒ˜Ñ(Øˆr2   c                 ó.  — d|j         v r|j         d= |                      |¦  «         | j        j        r%d|j         v r|j         d= | j        j        |j         d<   |j                             dd¦  «        s"d|j         v r|j         d= t          |j         d<   d S d S )Nr  r™   rð   Tró   )rš   Ú_set_necessary_date_headersrV   r�   rÖ   r*   rß   rD   s     r0   r  z(SigV4Auth._modify_request_before_signingÇ  sº   € Ø˜gœoÐ-Ð-Ø” Ð0Ø×(Ò(¨Ñ1Ô1Ð1ØÔÔ!ð 	MØ%¨¬Ð8Ð8Ø”OÐ$:Ð;Ø6:Ô6FÔ6LˆGŒOÐ2Ñ3àŒ×"Ò"Ð#<¸dÑCÔCð 	GØ%¨¬Ð8Ð8Ø”OÐ$:Ð;Ý6FˆGŒOÐ2Ñ3Ð3Ð3ð	Gð 	Gr2   c                 óŽ  — d|j         v r•|j         d= t          j                             |j        d         t          ¦  «        }t          t          t          j        | 	                    ¦   «         ¦  «        ¦  «        ¦  «        |j         d<   d|j         v r
|j         d= d S d S d|j         v r|j         d= |j        d         |j         d<   d S )Nr–   rý   ú
X-Amz-Date)
rš   ÚdatetimeÚstrptimerÖ   r  r   ÚintÚcalendarÚtimegmÚ	timetuple)rE   r=   Údatetime_timestamps      r0   r  z%SigV4Auth._set_necessary_date_headersÕ  sÓ   € ð �W”_Ð$Ð$Ø” Ð'Ý!)Ô!2×!;Ò!;Ø” Ô,­oñ"ô "Ðõ '1Ý•H”OÐ$6×$@Ò$@Ñ$BÔ$BÑCÔCÑDÔDñ'ô 'ˆGŒO˜FÑ#ð ˜wœÐ.Ð.Ø”O LÐ1Ð1Ð1ð /Ð.ð ˜wœÐ.Ð.Ø”O LÐ1Ø,3¬O¸KÔ,HˆGŒO˜LÑ)Ð)Ð)r2   N)F)rF   rG   rH   r‘   rI   rQ   rª   r²   r¶   r´   rµ   rÊ   rÃ   rÑ   rÚ   rî   rÞ   rø   rõ   r  r  rx   r�   rB   r  r  r  rK   r2   r0   rž   rž   Ü   s…  € € € € € ðð ð €Oð*ð *ð *ðð ð ð ðð ð ð Kð Kð Kð&ð &ð &ð"&ð &ð &ð "ð "ð "ð 'ð 'ð 'ð!ð !ð !ðPð Pð Pð
%ð %ð %ð4Dð Dð Dðð ð ðð ð ðð ð ðð ð ð
ð 
ð 
ð?ð ?ð ?ð>ð >ð >ð$ð ð ðGð Gð GðIð Ið Ið Ið Ir2   rž   c                   ó.   ‡ — e Zd Zˆ fd„Zˆ fd„Zd„ Zˆ xZS )ÚS3SigV4Authc                 ó¦   •— t          ¦   «                              |¦  «         d|j        v r|j        d= |                      |¦  «        |j        d<   d S )Nró   )Úsuperr  rš   rî   ©rE   r=   Ú	__class__s     €r0   r  z*S3SigV4Auth._modify_request_before_signingê  sR   ø€ Ý‰Œ×.Ò.¨wÑ7Ô7Ð7Ø! W¤_Ð4Ð4Ø”Ð 6Ð7à26·,²,¸wÑ2GÔ2GˆŒÐ.Ñ/Ð/Ð/r2   c                 ó,  •— |j                              d¦  «        }t          |dd ¦  «        }|€i }|                     dd ¦  «        }|�|S d}|j                              di ¦  «        }|                     d¦  «        }t          |t          ¦  «        r!|                     d¦  «        dk    r|d	         }|j                             d
¦  «        r	||j        vrdS |j                              dd¦  «        rdS t          ¦   «          	                    |¦  «        S )NÚclient_configÚs3rð   zContent-MD5rÓ   rÔ   rÕ   Úheaderr°   r&   TÚhas_streaming_inputF)
rÖ   r*   Úgetattrr7   r×   r,   rñ   rš   r%  rÞ   )	rE   r=   r)  Ú	s3_configÚsign_payloadÚchecksum_headerrØ   rÙ   r'  s	           €r0   rÞ   z'S3SigV4Auth._should_sha256_sign_payloadñ  s%  ø€ ð  œ×+Ò+¨OÑ<Ô<ˆÝ˜M¨4°Ñ6Ô6ˆ	ð ÐØˆIð !—}’}Ð%>ÀÑEÔEˆØÐ#ØÐð (ˆØ"œ?×.Ò.¨z¸2Ñ>Ô>ÐØ$×(Ò(Ð)<Ñ=Ô=ˆ	Ý�i¥Ñ&Ô&ð 	0¨9¯=ª=¸Ñ+>Ô+>À(Ò+JÐ+JØ'¨Ô/ˆOà”×&Ò& wÑ/Ô/ð	à g¤oÐ5Ð5à�4ð Œ?×ÒÐ4°eÑ<Ô<ð 	Ø�5õ ‰wŒw×2Ò2°7Ñ;Ô;Ð;r2   c                 ó   — |S rO   rK   ©rE   rf   s     r0   rõ   zS3SigV4Auth._normalize_url_path  ó   € àˆr2   )rF   rG   rH   r  rÞ   rõ   Ú__classcell__©r'  s   @r0   r#  r#  é  sf   ø€ € € € € ðHð Hð Hð Hð Hð'<ð '<ð '<ð '<ð '<ðRð ð ð ð ð ð r2   r#  c                   ó6   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ fd„Zˆ xZS )ÚS3ExpressAuthTc                ó\   •— t          ¦   «                              |||¦  «         || _        d S rO   )r%  rQ   Ú_identity_cache)rE   rV   r£   r¤   Úidentity_cacher'  s        €r0   rQ   zS3ExpressAuth.__init__"  s/   ø€ õ 	‰Œ×Ò˜ l°KÑ@Ô@Ð@Ø-ˆÔÐÐr2   c                 óJ   •— t          ¦   «                              |¦  «         d S rO   )r%  rB   r&  s     €r0   rB   zS3ExpressAuth.add_auth(  s!   ø€ Ý‰Œ×Ò˜Ñ!Ô!Ð!Ð!Ð!r2   c                 óª   •— t          ¦   «                              |¦  «         d|j        vr| j        j        |j        d<   d|j        v r
|j        d= d S d S )Nzx-amz-s3session-tokenr™   )r%  r  rš   rV   r�   r&  s     €r0   r  z,S3ExpressAuth._modify_request_before_signing+  sa   ø€ Ý‰Œ×.Ò.¨wÑ7Ô7Ð7Ø"¨'¬/Ð9Ð9Ø7;Ô7GÔ7MˆGŒOÐ3Ñ4à! W¤_Ð4Ð4Ø”Ð 6Ð7Ð7Ð7ð 5Ð4r2   )rF   rG   rH   ÚREQUIRES_IDENTITY_CACHErQ   rB   r  r4  r5  s   @r0   r7  r7    sp   ø€ € € € € Ø"Ðð.ð .ð .ð .ð .ð"ð "ð "ð "ð "ð8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8r2   r7  c                   ó   — e Zd ZdZd„ ZdS )ÚS3ExpressPostAuthTc                 óô  — t          ¦   «         }|                     t          ¦  «        |j        d<   i }|j                             dd ¦  «        �|j        d         }i }g }|j                             dd ¦  «        �+|j        d         }|                     dd ¦  «        �|d         }||d<   d|d<   |                      |¦  «        |d<   |j        d         |d<   |                     ddi¦  «         |                     d|                      |¦  «        i¦  «         |                     d|j        d         i¦  «         | j        j        �0| j        j        |d	<   |                     d	| j        j        i¦  «         t          j
        t          j        |¦  «                             d
¦  «        ¦  «                             d
¦  «        |d<   |                      |d         |¦  «        |d<   ||j        d<   ||j        d<   d S )Nrý   ús3-presign-post-fieldsús3-presign-post-policyÚ
conditionsr  úx-amz-algorithmúx-amz-credentialú
x-amz-dateúX-Amz-S3session-Tokenr5   Úpolicyúx-amz-signature©r   rŒ   r  rÖ   r*   r  ro   rV   r�   rr   rs   r9   Údumpsrm   r;   r�   ©rE   r=   r  ÚfieldsrH  rC  s         r0   rB   zS3ExpressPostAuth.add_auth7  s  € Ý+Ñ-Ô-ˆØ'3×'<Ò'<½_Ñ'MÔ'MˆŒ˜Ñ$àˆØŒ?×ÒÐ7¸Ñ>Ô>ÐJØ”_Ð%=Ô>ˆFàˆØˆ
ØŒ?×ÒÐ7¸Ñ>Ô>ÐJØ”_Ð%=Ô>ˆFØ�zŠz˜,¨Ñ-Ô-Ð9Ø# LÔ1�
à)ˆˆ|Ñà$6ˆÐ Ñ!Ø%)§Z¢Z°Ñ%8Ô%8ˆÐ!Ñ"Ø&œ¨{Ô;ˆˆ|Ñà×ÒÐ,Ð.@ÐAÑBÔBÐBØ×ÒÐ-¨t¯zªz¸'Ñ/BÔ/BÐCÑDÔDÐDØ×Ò˜<¨¬¸Ô)EÐFÑGÔGÐGàÔÔ!Ð-Ø.2Ô.>Ô.DˆFÐ*Ñ+Ø×ÒØ(¨$Ô*:Ô*@ÐAñô ð õ
 "Ô+ÝŒJ�vÑÔ×%Ò% gÑ.Ô.ñ
ô 
ç
Š&�‰/Œ/ð 	ˆxÑð %)§N¢N°6¸(Ô3CÀWÑ$MÔ$MˆÐ Ñ!à4:ˆŒÐ0Ñ1Ø4:ˆŒÐ0Ñ1Ð1Ð1r2   N)rF   rG   rH   r=  rB   rK   r2   r0   r?  r?  4  s)   € € € € € Ø"Ðð';ð ';ð ';ð ';ð ';r2   r?  c                   óD   ‡ — e Zd ZdZdZedœˆ fd„
Zd„ Zd„ Zd„ Zd„ Z	ˆ xZ
S )	ÚS3ExpressQueryAuthi,  T)Úexpiresc                ó`   •— t          ¦   «                              ||||¬¦  «         || _        d S )N)r:  ©r%  rQ   Ú_expires)rE   rV   r£   r¤   r:  rP  r'  s         €r0   rQ   zS3ExpressQueryAuth.__init__e  s?   ø€ õ 	‰Œ×ÒØØØØ)ð	 	ñ 	
ô 	
ð 	
ð  ˆŒˆˆr2   c                 ó2  — |j                              d¦  «        }d}||k    r|j         d= |                      |                      |¦  «        ¦  «        }d|                      |¦  «        |j        d         | j        |dœ}| j        j        �| j        j        |d<   t          |j
        ¦  «        }t          |j        d¬¦  «        }d	„ |                     ¦   «         D ¦   «         }|j        r!|                     |j        ¦  «         i |_        d
}	|j        r)|                     t#          |¦  «        ¦  «         d
|_        |rt%          |¦  «        dz   }	|	› t%          |¦  «        › �}
|}|d         |d         |d         |
|d         f}t'          |¦  «        |_
        d S )Núcontent-typeú0application/x-www-form-urlencoded; charset=utf-8r  rý   ©zX-Amz-AlgorithmzX-Amz-Credentialr  zX-Amz-ExpireszX-Amz-SignedHeadersrG  T©Úkeep_blank_valuesc                 ó&   — i | ]\  }}||d          “ŒS ©r   rK   ©rÄ   ÚkrÅ   s      r0   ú
<dictcomp>zES3ExpressQueryAuth._modify_request_before_signing.<locals>.<dictcomp>•  ó"   € ÐEÐEÐE¡$ ! Q�a˜˜1œÐEÐEÐEr2   r_   rc   r   é   é   é   ©rš   r*   rÑ   r²   r  rÖ   rS  rV   r�   r   r,   r   r»   r¬   rv   rq   r6   r>   r   r   )rE   r=   Úcontent_typeÚblocklisted_content_typerÑ   Úauth_paramsr-   Úquery_string_partsÚ
query_dictÚoperation_paramsÚnew_query_stringÚpÚnew_url_partss                r0   r  z1S3ExpressQueryAuth._modify_request_before_signingv  sÇ  € ð ”×*Ò*¨>Ñ:Ô:ˆà>ð 	!ð Ð3Ò3Ð3Ø” Ð/ð
 ×,Ò,¨T×-AÒ-AÀ'Ñ-JÔ-JÑKÔKˆð  2Ø $§
¢
¨7Ñ 3Ô 3Ø!œ/¨+Ô6Ø!œ]Ø#1ð
ð 
ˆð ÔÔ!Ð-Ø37Ô3CÔ3IˆKÐ/Ñ0õ ˜Wœ[Ñ)Ô)ˆ	õ & i¤oÈÐNÑNÔNÐØEÐEÐ*<×*BÒ*BÑ*DÔ*DÐEÑEÔEˆ
àŒ>ð 	 Ø×Ò˜gœnÑ-Ô-Ð-ØˆGŒNð ÐØŒ<ð 	ð ×ÒÕ/°Ñ8Ô8Ñ9Ô9Ð9ØˆGŒLØð 	IÝ6°zÑBÔBÀSÑHÐàÐGÕ!8¸Ñ!EÔ!EÐGÐGð 	ð ˆØ˜1œ˜q œt Q q¤TÐ+;¸Q¸q¼TÐBˆÝ  Ñ/Ô/ˆŒˆˆr2   c                 ó,   — |xj         d|› �z  c_         d S ©Nz&X-Amz-Signature=©r,   ©rE   r=   r�   s      r0   r  z/S3ExpressQueryAuth._inject_signature_to_request·  ó!   € ð 	ˆŒÐ6¨9Ð6Ð6Ñ6ˆŒˆˆr2   c                 ó   — |S rO   rK   r2  s     r0   rõ   z&S3ExpressQueryAuth._normalize_url_path½  r3  r2   c                 ó   — t           S rO   ©rß   rD   s     r0   rî   zS3ExpressQueryAuth.payloadÁ  ó
   € õ
  Ðr2   )rF   rG   rH   ÚDEFAULT_EXPIRESr=  rQ   r  r  rõ   rî   r4  r5  s   @r0   rO  rO  a  s�   ø€ € € € € Ø€OØ"Ðð  ð ð  ð  ð  ð  ð  ð  ð"?0ð ?0ð ?0ðB7ð 7ð 7ðð ð ð ð  ð  ð  ð  ð  ð  r2   rO  c                   ó2   ‡ — e Zd ZdZefˆ fd„	Zd„ Zd„ Zˆ xZS )ÚSigV4QueryAuthé  c                 ó\   •— t          ¦   «                              |||¦  «         || _        d S rO   rR  )rE   rV   r£   r¤   rP  r'  s        €r0   rQ   zSigV4QueryAuth.__init__Ì  s,   ø€ õ 	‰Œ×Ò˜ l°KÑ@Ô@Ð@ØˆŒˆˆr2   c                 ó2  — |j                              d¦  «        }d}||k    r|j         d= |                      |                      |¦  «        ¦  «        }d|                      |¦  «        |j        d         | j        |dœ}| j        j        �| j        j        |d<   t          |j
        ¦  «        }t          |j        d¬¦  «        }d	„ |                     ¦   «         D ¦   «         }|j        r!|                     |j        ¦  «         i |_        d
}	|j        r)|                     t#          |¦  «        ¦  «         d
|_        |rt%          |¦  «        dz   }	|	› t%          |¦  «        › �}
|}|d         |d         |d         |
|d         f}t'          |¦  «        |_
        d S )NrU  rV  r  rý   rW  r™   TrX  c                 ó&   — i | ]\  }}||d          “ŒS r[  rK   r\  s      r0   r^  zASigV4QueryAuth._modify_request_before_signing.<locals>.<dictcomp>ñ  r_  r2   r_   rc   r   r`  ra  rb  rc  )rE   r=   rd  Úblacklisted_content_typerÑ   rf  r-   rg  rh  ri  rj  rk  rl  s                r0   r  z-SigV4QueryAuth._modify_request_before_signingÒ  sÇ  € ð ”×*Ò*¨>Ñ:Ô:ˆà>ð 	!ð Ð3Ò3Ð3Ø” Ð/ð
 ×,Ò,¨T×-AÒ-AÀ'Ñ-JÔ-JÑKÔKˆð  2Ø $§
¢
¨7Ñ 3Ô 3Ø!œ/¨+Ô6Ø!œ]Ø#1ð
ð 
ˆð ÔÔ!Ð-Ø26Ô2BÔ2HˆKÐ.Ñ/õ ˜Wœ[Ñ)Ô)ˆ	õ & i¤oÈÐNÑNÔNÐØEÐEÐ*<×*BÒ*BÑ*DÔ*DÐEÑEÔEˆ
àŒ>ð 	 Ø×Ò˜gœnÑ-Ô-Ð-ØˆGŒNð ÐØŒ<ð 	ð ×ÒÕ/°Ñ8Ô8Ñ9Ô9Ð9ØˆGŒLØð 	IÝ6°zÑBÔBÀSÑHÐàÐGÕ!8¸Ñ!EÔ!EÐGÐGð 	ð ˆØ˜1œ˜q œt Q q¤TÐ+;¸Q¸q¼TÐBˆÝ  Ñ/Ô/ˆŒˆˆr2   c                 ó,   — |xj         d|› �z  c_         d S rn  ro  rp  s      r0   r  z+SigV4QueryAuth._inject_signature_to_request  rq  r2   )rF   rG   rH   rv  rQ   r  r  r4  r5  s   @r0   rx  rx  É  sg   ø€ € € € € Ø€Oð ?Nð ð  ð  ð  ð  ð  ð?0ð ?0ð ?0ðB7ð 7ð 7ð 7ð 7ð 7ð 7r2   rx  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚS3SigV4QueryAutha  S3 SigV4 auth using query parameters.

    This signer will sign a request using query parameters and signature
    version 4, i.e a "presigned url" signer.

    Based off of:

    http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html

    c                 ó   — |S rO   rK   r2  s     r0   rõ   z$S3SigV4QueryAuth._normalize_url_path&  r3  r2   c                 ó   — t           S rO   rt  rD   s     r0   rî   zS3SigV4QueryAuth.payload*  ru  r2   N)rF   rG   rH   r‘   rõ   rî   rK   r2   r0   r€  r€    s<   € € € € € ð	ð 	ðð ð ð ð  ð  ð  ð  r2   r€  c                   ó   — e Zd ZdZd„ ZdS )ÚS3SigV4PostAuthz†
    Presigns a s3 post

    Implementation doc here:
    http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-UsingHTTPPOST.html
    c                 óô  — t          ¦   «         }|                     t          ¦  «        |j        d<   i }|j                             dd ¦  «        �|j        d         }i }g }|j                             dd ¦  «        �+|j        d         }|                     dd ¦  «        �|d         }||d<   d|d<   |                      |¦  «        |d<   |j        d         |d<   |                     ddi¦  «         |                     d|                      |¦  «        i¦  «         |                     d|j        d         i¦  «         | j        j        �0| j        j        |d	<   |                     d	| j        j        i¦  «         t          j
        t          j        |¦  «                             d
¦  «        ¦  «                             d
¦  «        |d<   |                      |d         |¦  «        |d<   ||j        d<   ||j        d<   d S )Nrý   rA  rB  rC  r  rD  rE  rF  úx-amz-security-tokenr5   rH  rI  rJ  rL  s         r0   rB   zS3SigV4PostAuth.add_auth:  sý  € Ý+Ñ-Ô-ˆØ'3×'<Ò'<½_Ñ'MÔ'MˆŒ˜Ñ$àˆØŒ?×ÒÐ7¸Ñ>Ô>ÐJØ”_Ð%=Ô>ˆFàˆØˆ
ØŒ?×ÒÐ7¸Ñ>Ô>ÐJØ”_Ð%=Ô>ˆFØ�zŠz˜,¨Ñ-Ô-Ð9Ø# LÔ1�
à)ˆˆ|Ñà$6ˆÐ Ñ!Ø%)§Z¢Z°Ñ%8Ô%8ˆÐ!Ñ"Ø&œ¨{Ô;ˆˆ|Ñà×ÒÐ,Ð.@ÐAÑBÔBÐBØ×ÒÐ-¨t¯zªz¸'Ñ/BÔ/BÐCÑDÔDÐDØ×Ò˜<¨¬¸Ô)EÐFÑGÔGÐGàÔÔ!Ð-Ø-1Ô-=Ô-CˆFÐ)Ñ*Ø×ÒÐ5°tÔ7GÔ7MÐNÑOÔOÐOõ "Ô+ÝŒJ�vÑÔ×%Ò% gÑ.Ô.ñ
ô 
ç
Š&�‰/Œ/ð 	ˆxÑð %)§N¢N°6¸(Ô3CÀWÑ$MÔ$MˆÐ Ñ!à4:ˆŒÐ0Ñ1Ø4:ˆŒÐ0Ñ1Ð1Ð1r2   N©rF   rG   rH   r‘   rB   rK   r2   r0   r„  r„  2  s-   € € € € € ðð ð%;ð %;ð %;ð %;ð %;r2   r„  c                   ód   — e Zd Zg d¢Zdd„Zd„ Zd„ Zd„ Zd„ Zdd„Z		 dd	„Z
	 dd
„Zd„ Zd„ Zd„ ZdS )Ú
HmacV1Auth)$Ú
accelerateÚaclÚcorsÚdefaultObjectAclÚlocationÚloggingÚ
partNumberrH  ÚrequestPaymentÚtorrentÚ
versioningÚ	versionIdÚversionsÚwebsiteÚuploadsÚuploadIdzresponse-content-typezresponse-content-languagezresponse-expireszresponse-cache-controlzresponse-content-dispositionzresponse-content-encodingÚdeleteÚ	lifecycleÚtaggingÚrestoreÚstorageClassÚnotificationÚreplicationr‘  Ú	analyticsÚmetricsÚ	inventoryÚselectzselect-typezobject-lockNc                 ó   — || _         d S rO   rU   r¢   s       r0   rQ   zHmacV1Auth.__init__‹  rX   r2   c                 óN  — t          j        | j        j                             d¦  «        t
          ¬¦  «        }|                     |                     d¦  «        ¦  «         t          |                     ¦   «         ¦  «         	                    ¦   «          
                    d¦  «        S )Nr5   r\   )rj   rk   rV   rl   rm   r   rq   r   rt   ru   r;   )rE   rx   r›   s      r0   Úsign_stringzHmacV1Auth.sign_stringŽ  s…   € Ý”8ØÔÔ'×.Ò.¨wÑ7Ô7Å4ð
ñ 
ô 
ˆð 	�Š˜×-Ò-¨gÑ6Ô6Ñ7Ô7Ð7Ý˜8Ÿ?š?Ñ,Ô,Ñ-Ô-×3Ò3Ñ5Ô5×<Ò<¸WÑEÔEÐEr2   c                 ó\  — g d¢}g }d|v r|d= |                       ¦   «         |d<   |D ]q}d}|D ]S}|                     ¦   «         }||         �5||k    r/|                     ||                              ¦   «         ¦  «         d}ŒT|s|                     d¦  «         Œrd                     |¦  «        S )N)úcontent-md5rU  Údater–   FTr_   r[   )Ú	_get_dater­   ro   ru   rp   )rE   rš   Úinteresting_headersÚhoiÚihÚfoundr{   Úlks           r0   Úcanonical_standard_headersz%HmacV1Auth.canonical_standard_headers•  sÊ   € ØEÐEÐEÐØˆØ�WÐÐØ˜�ØŸ.š.Ñ*Ô*ˆ�‰Ø%ð 	ð 	ˆBØˆEØð !ð !�Ø—Y’Y‘[”[�Ø˜3”<Ð+°°b²°Ø—J’J˜w sœ|×1Ò1Ñ3Ô3Ñ4Ô4Ð4Ø �EøØð Ø—
’
˜2‘”�øØ�yŠy˜‰~Œ~Ðr2   c                 ó–  — g }i }|D ]h}|                      ¦   «         }||         �J|                     d¦  «        r5d                     d„ |                     |¦  «        D ¦   «         ¦  «        ||<   Œit	          |                     ¦   «         ¦  «        }|D ]"}|                     |› d||         › �¦  «         Œ#d                     |¦  «        S )Núx-amz-rÁ   c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S rO   )ru   )rÄ   rÅ   s     r0   rÆ   z6HmacV1Auth.canonical_custom_headers.<locals>.<genexpr>­  s;   è è € ð 2ð 2Ø&'˜Ÿš™	œ	ð2ð 2ð 2ð 2ð 2ð 2r2   r'   r[   )r­   rñ   rp   rÈ   rn   Úkeysro   )rE   rš   r¬  Úcustom_headersr{   r¯  Úsorted_header_keyss          r0   Úcanonical_custom_headersz#HmacV1Auth.canonical_custom_headers¦  sê   € ØˆØˆØð 	ð 	ˆCØ—’‘”ˆBØ�sŒ|Ð'Ø—=’= Ñ*Ô*ð Ø),¯ªð 2ð 2Ø+2¯?ª?¸3Ñ+?Ô+?ð2ñ 2ô 2ñ *ô *�N 2Ñ&øõ $ N×$7Ò$7Ñ$9Ô$9Ñ:Ô:ÐØ%ð 	7ð 	7ˆCØ�JŠJ˜#Ð5Ð5 ¨sÔ 3Ð5Ð5Ñ6Ô6Ð6Ð6Ø�yŠy˜‰~Œ~Ðr2   c                 óf   — t          |¦  «        dk    r|S |d         t          |d         ¦  «        fS )z(
        TODO: Do we need this?
        r`  r   )rg   r   )rE   Únvs     r0   Ú	unquote_vzHmacV1Auth.unquote_vµ  s1   € õ ˆr‰7Œ7�aŠ<ˆ<ØˆIà�q”E�7 2 a¤5™>œ>Ð*Ð*r2   c                 óT  ‡ — |�|}n|j         }|j        r“|j                             d¦  «        }d„ |D ¦   «         }ˆ fd„|D ¦   «         }t          |¦  «        dk    rL|                     t          d¦  «        ¬¦  «         d„ |D ¦   «         }|dz  }|d                     |¦  «        z  }|S )Nrc   c                 ó:   — g | ]}|                      d d¦  «        ‘ŒS )rb   r`  ©rw   ©rÄ   Úas     r0   ú
<listcomp>z1HmacV1Auth.canonical_resource.<locals>.<listcomp>Í  s$   € Ð0Ð0Ð0 q�1—7’7˜3 ‘?”?Ð0Ð0Ð0r2   c                 óX   •— g | ]&}|d          ‰j         v ¯‰                     |¦  «        ‘Œ'S r[  )ÚQSAOfInterestrº  )rÄ   r¿  rE   s     €r0   rÀ  z1HmacV1Auth.canonical_resource.<locals>.<listcomp>Î  s=   ø€ ð ð ð Ø&'°!°A´$¸$Ô:LÐ2LÐ2L�—’˜qÑ!Ô!Ð2LÐ2LÐ2Lr2   r   )r{   c                 ó8   — g | ]}d                       |¦  «        ‘ŒS )rb   )rp   r¾  s     r0   rÀ  z1HmacV1Auth.canonical_resource.<locals>.<listcomp>Ó  s"   € Ð0Ð0Ð0 q�s—x’x ‘{”{Ð0Ð0Ð0r2   ú?)rf   r»   rw   rg   Úsortr   rp   )rE   rw   Ú	auth_pathÚbufÚqsas   `    r0   Úcanonical_resourcezHmacV1Auth.canonical_resource¾  sÓ   ø€ ð Ð ØˆCˆCà”*ˆCØŒ;ð 
	%Ø”+×#Ò# CÑ(Ô(ˆCØ0Ð0¨CÐ0Ñ0Ô0ˆCðð ð ð Ø+.ðñ ô ˆCõ �3‰xŒx˜!Š|ˆ|Ø—’�Z¨™]œ]�Ñ+Ô+Ð+Ø0Ð0¨CÐ0Ñ0Ô0�Ø�s‘
�Ø�s—x’x ‘}”}Ñ$�Øˆ
r2   c                 óÜ   — |                      ¦   «         dz   }||                      |¦  «        dz   z  }|                      |¦  «        }|r||dz   z  }||                      ||¬¦  «        z  }|S )Nr[   ©rÆ  )rô   r°  r·  rÉ  )rE   rh   rw   rš   rP  rÆ  Úcsrµ  s           r0   Úcanonical_stringzHmacV1Auth.canonical_stringØ  s   € ð �\Š\‰^Œ^˜dÑ"ˆØ
ˆd×-Ò-¨gÑ6Ô6¸Ñ=Ñ=ˆØ×6Ò6°wÑ?Ô?ˆØð 	(Ø�. 4Ñ'Ñ'ˆBØ
ˆd×%Ò% e°yÐ%ÑAÔAÑAˆØˆ	r2   c                 óÐ   — | j         j        r|d= | j         j        |d<   |                      ||||¬¦  «        }t                               d|¦  «         |                      |¦  «        S )Nr†  rË  r  )rV   r�   rÍ  rd   re   r¦  )rE   rh   rw   rš   rP  rÆ  rx   s          r0   Úget_signaturezHmacV1Auth.get_signatureã  s{   € ð ÔÔ!ð 	EØÐ.Ð/Ø.2Ô.>Ô.DˆGÐ*Ñ+Ø×.Ò.Ø�E˜7¨ið /ñ 
ô 
ˆõ 	�ŠÐ(¨.Ñ9Ô9Ð9Ø×Ò Ñ/Ô/Ð/r2   c                 ó:  — | j         €t          ‚t                               d¦  «         t	          |j        ¦  «        }t                               d|j        ¦  «         |                      |j        ||j        |j	        ¬¦  «        }|  
                    ||¦  «         d S )Nz(Calculating signature using hmacv1 auth.zHTTP request method: %srË  )rV   r   rd   re   r   r,   rh   rÏ  rš   rÆ  Ú_inject_signature)rE   r=   rw   r�   s       r0   rB   zHmacV1Auth.add_authï  s’   € ØÔÐ#Ý$Ð$Ý�ŠÐ?Ñ@Ô@Ð@Ý˜œÑ%Ô%ˆÝ�ŠÐ.°´Ñ?Ô?Ð?Ø×&Ò&ØŒN˜E 7¤?¸gÔ>Oð 'ñ 
ô 
ˆ	ð 	×Ò˜w¨	Ñ2Ô2Ð2Ð2Ð2r2   c                 ó"   — t          d¬¦  «        S )NTr—   r   ©rE   s    r0   rª  zHmacV1Auth._get_dateú  s   € Ý Ð&Ñ&Ô&Ð&r2   c                 ó`   — d|j         v r|j         d= d| j        j        › d|› �}||j         d<   d S )Nr  zAWS r'   )rš   rV   rŠ   )rE   r=   r�   Úauth_headers       r0   rÑ  zHmacV1Auth._inject_signatureý  sH   € Ø˜gœoÐ-Ð-ð ” Ð0àF˜TÔ-Ô8ÐFÐF¸9ÐFÐFˆØ+6ˆŒ˜Ñ(Ð(Ð(r2   )NNrO   )rF   rG   rH   rÂ  rQ   r¦  r°  r·  rº  rÉ  rÍ  rÏ  rB   rª  rÑ  rK   r2   r0   r‰  r‰  b  sî   € € € € € ð%ð %ð %€MðN'ð 'ð 'ð 'ðFð Fð Fðð ð ð"ð ð ð+ð +ð +ðð ð ð ð6 ?Cð	ð 	ð 	ð 	ð ?Cð
0ð 
0ð 
0ð 
0ð	3ð 	3ð 	3ð'ð 'ð 'ð7ð 7ð 7ð 7ð 7r2   r‰  c                   ó,   — e Zd ZdZdZefd„Zd„ Zd„ ZdS )ÚHmacV1QueryAuthzÁ
    Generates a presigned request for s3.

    Spec from this document:

    http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
    #RESTAuthenticationQueryStringAuth

    ry  c                 ó"   — || _         || _        d S rO   )rV   rS  )rE   rV   rP  s      r0   rQ   zHmacV1QueryAuth.__init__  s   € Ø&ˆÔØˆŒˆˆr2   c                 ó†   — t          t          t          j        ¦   «         t          | j        ¦  «        z   ¦  «        ¦  «        S rO   )r<   r  r‹   rS  rÓ  s    r0   rª  zHmacV1QueryAuth._get_date  s-   € Ý•3•t”y‘{”{¥S¨¬Ñ%7Ô%7Ñ7Ñ8Ô8Ñ9Ô9Ð9r2   c                 óÄ  — i }| j         j        |d<   ||d<   |j        D ]V}|                     ¦   «         }|dk    r|j        d         |d<   Œ-|                     d¦  «        s|dv r|j        |         ||<   ŒWt          |¦  «        }t          |j        ¦  «        }|d         r|d         › d|› �}|d	         |d
         |d         ||d         f}t          |¦  «        |_        d S )Nrƒ   r^   r–   ÚExpiresr²  )r¨  rU  é   rc   r   r`  ra  rb  )	rV   rŠ   rš   r­   rñ   r   r   r,   r   )	rE   r=   r�   rh  Ú
header_keyr¯  rj  rk  rl  s	            r0   rÑ  z!HmacV1QueryAuth._inject_signature  s  € Øˆ
Ø'+Ô'7Ô'Bˆ
Ð#Ñ$Ø"+ˆ
�;Ñà!œ/ð 	5ð 	5ˆJØ×!Ò!Ñ#Ô#ˆBð ˜VÒ#Ð#Ø(/¬¸Ô(?�
˜9Ñ%Ð%ð —’˜xÑ(Ô(ð 5¨Bð 3ð -ð -ð ")¤°Ô!4�
˜2‘øõ 3°:Ñ>Ô>Ðõ �W”[Ñ!Ô!ˆØˆQŒ4ð 	<ð #$ A¤$Ð;Ð;Ð)9Ð;Ð;ÐØ˜1œ˜q œt Q q¤TÐ+;¸Q¸q¼TÐBˆÝ  Ñ/Ô/ˆŒˆˆr2   N)rF   rG   rH   r‘   rv  rQ   rª  rÑ  rK   r2   r0   r×  r×    sZ   € € € € € ðð ð €Oà,;ð  ð  ð  ð  ð:ð :ð :ð0ð 0ð 0ð 0ð 0r2   r×  c                   ó   — e Zd ZdZd„ ZdS )ÚHmacV1PostAuthz‘
    Generates a presigned post for s3.

    Spec from this document:

    http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingHTTPPOST.html
    c                 ó�  — i }|j                              dd ¦  «        �|j         d         }i }g }|j                              dd ¦  «        �+|j         d         }|                     dd ¦  «        �|d         }||d<   | j        j        |d<   | j        j        �0| j        j        |d<   |                     d| j        j        i¦  «         t          j        t          j	        |¦  «         
                    d¦  «        ¦  «                             d¦  «        |d<   |                      |d         ¦  «        |d<   ||j         d<   ||j         d<   d S )	NrA  rB  rC  rƒ   r†  r5   rH  r�   )rÖ   r*   rV   rŠ   r�   ro   rr   rs   r9   rK  rm   r;   r¦  )rE   r=   rM  rH  rC  s        r0   rB   zHmacV1PostAuth.add_authI  sT  € ØˆØŒ?×ÒÐ7¸Ñ>Ô>ÐJØ”_Ð%=Ô>ˆFàˆØˆ
ØŒ?×ÒÐ7¸Ñ>Ô>ÐJØ”_Ð%=Ô>ˆFØ�zŠz˜,¨Ñ-Ô-Ð9Ø# LÔ1�
à)ˆˆ|Ñà#'Ô#3Ô#>ˆÐÑ àÔÔ!Ð-Ø-1Ô-=Ô-CˆFÐ)Ñ*Ø×ÒÐ5°tÔ7GÔ7MÐNÑOÔOÐOõ "Ô+ÝŒJ�vÑÔ×%Ò% gÑ.Ô.ñ
ô 
ç
Š&�‰/Œ/ð 	ˆxÑð #×.Ò.¨v°hÔ/?Ñ@Ô@ˆˆ{Ñà4:ˆŒÐ0Ñ1Ø4:ˆŒÐ0Ñ1Ð1Ð1r2   Nr‡  rK   r2   r0   rß  rß  @  s-   € € € € € ðð ð;ð ;ð ;ð ;ð ;r2   rß  c                   ó   — e Zd ZdZd„ ZdS )Ú
BearerAuthzÑ
    Performs bearer token authorization by placing the bearer token in the
    Authorization header as specified by Section 2.1 of RFC 6750.

    https://datatracker.ietf.org/doc/html/rfc6750#section-2.1
    c                 ó„   — | j         €t          ¦   «         ‚d| j         j        › �}d|j        v r|j        d= ||j        d<   d S )NzBearer r  )rP   r   r�   rš   )rE   r=   rÕ  s      r0   rB   zBearerAuth.add_authp  sQ   € ØŒ?Ð"Ý"Ñ$Ô$Ð$à7 ¤Ô 5Ð7Ð7ˆØ˜gœoÐ-Ð-Ø” Ð0Ø+6ˆŒ˜Ñ(Ð(Ð(r2   Nr‡  rK   r2   r0   râ  râ  h  s-   € € € € € ðð ð7ð 7ð 7ð 7ð 7r2   râ  c                 ó¼   — | D ]J}|dk    rt           |         c S |t           v rt           |         }|t          v r|c S Œ;t          |¬¦  «        ‚t          | ¬¦  «        ‚)Núsmithy.api#noAuth©Úsignature_version)ÚAUTH_TYPE_TO_SIGNATURE_VERSIONÚAUTH_TYPE_MAPSr   r   )Ú
auth_traitÚ	auth_typerç  s      r0   Úresolve_auth_typerì  z  s‡   € Øð Lð Lˆ	ØÐ+Ò+Ð+Ý1°)Ô<Ð<Ð<Ð<ØÕ8Ð8Ð8Ý >¸yÔ IÐØ ¥NÐ2Ð2Ø(Ð(Ð(Ð(ð 3õ /ÀÐKÑKÔKÐKÝ
*¸ZÐ
HÑ
HÔ
HÐHr2   c                 ó¦  ‡— d„ |D ¦   «         Šd„ | D ¦   «         }|rt                                d|¦  «         | ‰z   }ˆfd„t                               |¦  «        D ¦   «         }|D ]>}|dk    rt          |         c S t                               |¦  «        }|t          v r|c S Œ?t          d                     t          ‰¦  «        ¦  «        ¬¦  «        ‚)Nc                 óD   — g | ]}|                      d ¦  «        d         ‘ŒS ©ú#éÿÿÿÿr½  ©rÄ   r+   s     r0   rÀ  z2resolve_auth_scheme_preference.<locals>.<listcomp>ˆ  s)   € ÐJÐJÐJ°6˜Ÿš cÑ*Ô*¨2Ô.ÐJÐJÐJr2   c                 ó$   — g | ]}|t           v¯|‘ŒS rK   )ÚAUTH_PREF_TO_SIGNATURE_VERSIONrò  s     r0   rÀ  z2resolve_auth_scheme_preference.<locals>.<listcomp>Š  s.   € ð ð ð àØÕ7Ð7Ð7ð 	à7Ð7Ð7r2   z/Unsupported auth schemes in preference list: %rc                 ó   •— g | ]}|‰v ¯|‘Œ	S rK   rK   )rÄ   r+   Úservice_supporteds     €r0   rÀ  z2resolve_auth_scheme_preference.<locals>.<listcomp>•  s/   ø€ ð ð ð àØÐ&Ð&Ð&ð 	à&Ð&Ð&r2   ÚnoAuthr  ræ  )
rd   re   r×   Úfromkeysrô  r*   ré  r   rp   rn   )Úpreference_listÚauth_optionsÚunsupportedÚcombinedÚprioritized_schemesr+   Úsig_versionrö  s          @r0   Úresolve_auth_scheme_preferencerÿ  ‡  s)  ø€ ØJÐJ¸\ÐJÑJÔJÐðð à%ðñ ô €Kð
 ð 
Ý�ŠØ=¸{ñ	
ô 	
ð 	
ð Ð!2Ñ2€Hðð ð ð å—m’m HÑ-Ô-ðñ ô Ðð &ð ð ˆØ�XÒÐÝ1°&Ô9Ð9Ð9Ð9Ý4×8Ò8¸Ñ@Ô@ˆØ�.Ð(Ð(ØÐÐÐð )õ +ØŸ)š)¥FÐ+<Ñ$=Ô$=Ñ>Ô>ðñ ô ð r2   )Úv2Úv3Úv3httpsr*  zs3-queryzs3-presign-postzs3v4-presign-postzv4-s3expresszv4-s3express-queryzv4-s3express-presign-postÚbearer)ÚCRT_AUTH_TYPE_MAPS)Úv4zv4-queryÚs3v4z
s3v4-queryr  Úv4ar  Únone)zaws.auth#sigv4zaws.auth#sigv4azsmithy.api#httpBearerAuthrå  c                 óL   — i | ]!\  }}|                      d ¦  «        d         |“Œ"S rï  r½  )rÄ   Úauth_schemerþ  s      r0   r^  r^  Ï  sA   € ð "ð "ð "á ˆ�[ð ×Ò�cÑÔ˜2Ô ð"ð "ð "r2   )Krr   r  r  rã   rj   r9   r�  r‹   Úcollections.abcr   Úemail.utilsr   Úhashlibr   r   Úoperatorr   Úbotocore.compatr	   r
   r   r   r   r   r   r   r   r   r   Úbotocore.exceptionsr   r   r   r   Úbotocore.utilsr   r   r   Ú	getLoggerrF   rd   rè   ræ   r�   r  r®   rß   rÝ   r1   r>   r@   rM   rS   r“   rž   r#  r7  r?  rO  rx  r€  r„  r‰  r×  rß  râ  rì  rÿ  ré  Úbotocore.crt.authr  rq   rè  r¬   rô  rK   r2   r0   ú<module>r     sÍ  ðð €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø "Ð "Ð "Ð "Ð "Ð "Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð 
ˆÔ	˜8Ñ	$Ô	$€ð Gð ð €Ø
€Ø"€ðð ð Ð ð &Ð Ø%IÐ "ðð ð ð&
ð 
ð 
ð.ð .ð .ð .ð .ñ .ô .ð .ð%ð %ð %ð %ð %�*ñ %ô %ð %ð:ð :ð :ð :ð :�
ñ :ô :ð :ðz<ð <ð <ð <ð <�
ñ <ô <ð <ð8JIð JIð JIð JIð JI�
ñ JIô JIð JIðZ3ð 3ð 3ð 3ð 3�)ñ 3ô 3ð 3ðl8ð 8ð 8ð 8ð 8�Kñ 8ô 8ð 8ð**;ð *;ð *;ð *;ð *;˜ñ *;ô *;ð *;ðZe ð e ð e ð e ð e ˜ñ e ô e ð e ðPN7ð N7ð N7ð N7ð N7�Yñ N7ô N7ð N7ðb ð  ð  ð  ð  �~ñ  ô  ð  ð0-;ð -;ð -;ð -;ð -;�iñ -;ô -;ð -;ð`f7ð f7ð f7ð f7ð f7�ñ f7ô f7ð f7ðR20ð 20ð 20ð 20ð 20�jñ 20ô 20ð 20ðj%;ð %;ð %;ð %;ð %;�Zñ %;ô %;ð %;ðP7ð 7ð 7ð 7ð 7�ñ 7ô 7ð 7ð$
Ið 
Ið 
Iðð ð ðB Ø
ØØ
ØØ%Ø(Ø!Ø,Ø!2Øðð €ð ð Ø4Ð4Ð4Ð4Ð4Ð4à×ÒÐ,Ñ-Ô-Ð-Ð-à×ÒàØ&ØØ*ð		
ð 	
ñô ð ð ØØ!)Øð	"ð "Ð ð"ð "à$B×$HÒ$HÑ$JÔ$Jð"ñ "ô "Ð Ð Ð r2   