§
    tŠtj|]  ã                   ó´   — d dl Z d dlmZmZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
Z
 e j        e¦  «        Z G d„ de¦  «        Z G d„ d	e
j        ¦  «        ZdS )
é    N)Úgenerate_tokenÚ	urldecode)ÚWebApplicationClientÚInsecureTransportError)ÚLegacyApplicationClient)ÚTokenExpiredErrorÚis_secure_transportc                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚTokenUpdatedc                 ód   •— t          t          | ¦  «                             ¦   «          || _        d S ©N)Úsuperr   Ú__init__Útoken)Úselfr   Ú	__class__s     €ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/requests_oauthlib/oauth2_session.pyr   zTokenUpdated.__init__   s*   ø€ Ý�l˜DÑ!Ô!×*Ò*Ñ,Ô,Ð,ØˆŒ
ˆ
ˆ
ó    )Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__©r   s   @r   r   r      s8   ø€ € € € € ðð ð ð ð ð ð ð ð r   r   c                   óÔ  ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 dˆ fd„	Zed„ ¦   «         Zej        d„ ¦   «         Zd„ Zed„ ¦   «         Z	e	j        d„ ¦   «         Z	e	j
        d	„ ¦   «         Z	ed
„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zej
        d„ ¦   «         Zed„ ¦   «         Zdd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zd„ Z	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dˆ fd„	Zd„ Zˆ xZS )ÚOAuth2Sessiona*  Versatile OAuth 2 extension to :class:`requests.Session`.

    Supports any grant type adhering to :class:`oauthlib.oauth2.Client` spec
    including the four core OAuth 2 grants.

    Can be used to create authorization urls, fetch tokens and access protected
    resources using the :class:`requests.Session` interface you are used to.

    - :class:`oauthlib.oauth2.WebApplicationClient` (default): Authorization Code Grant
    - :class:`oauthlib.oauth2.MobileApplicationClient`: Implicit Grant
    - :class:`oauthlib.oauth2.LegacyApplicationClient`: Password Credentials Grant
    - :class:`oauthlib.oauth2.BackendApplicationClient`: Client Credentials Grant

    Note that the only time you will be using Implicit Grant from python is if
    you are driving a user agent able to obtain URL fragments.
    Nc                 ó  •—  t          t          | ¦  «        j        di |¤Ž |pt          ||¬¦  «        | _        |pi | _        || _        || _        |pt          | _	        || _
        || _        |pi | _        |	| _        |
| _        | j        dvr-t          d                     | j        | j        ¦  «        ¦  «        ‚d„ | _        t'          ¦   «         t'          ¦   «         t'          ¦   «         t'          ¦   «         t'          ¦   «         dœ| _        dS )a˜  Construct a new OAuth 2 client session.

        :param client_id: Client id obtained during registration
        :param client: :class:`oauthlib.oauth2.Client` to be used. Default is
                       WebApplicationClient which is useful for any
                       hosted application but not mobile or desktop.
        :param scope: List of scopes you wish to request access to
        :param redirect_uri: Redirect URI you registered as callback
        :param token: Token dictionary, must include access_token
                      and token_type.
        :param state: State string used to prevent CSRF. This will be given
                      when creating the authorization url and must be supplied
                      when parsing the authorization response.
                      Can be either a string or a no argument callable.
        :auto_refresh_url: Refresh token endpoint URL, must be HTTPS. Supply
                           this if you wish the client to automatically refresh
                           your access tokens.
        :auto_refresh_kwargs: Extra arguments to pass to the refresh token
                              endpoint.
        :token_updater: Method with one argument, token, to be used to update
                        your token database on automatic token refresh. If not
                        set a TokenUpdated warning will be raised when a token
                        has been refreshed. This warning will carry the token
                        in its token argument.
        :param pkce: Set "S256" or "plain" to enable PKCE. Default is disabled.
        :param kwargs: Arguments to pass to the Session constructor.
        )r   )ÚS256ÚplainNzWrong value for {}(.., pkce={})c                 ó   — | S r   © )Úrs    r   ú<lambda>z(OAuth2Session.__init__.<locals>.<lambda>^   s   € ˜a€ r   )Úaccess_token_responseÚrefresh_token_responseÚprotected_requestÚrefresh_token_requestÚaccess_token_requestNr    )r   r   r   r   Ú_clientr   Ú_scopeÚredirect_urir   ÚstateÚ_stateÚauto_refresh_urlÚauto_refresh_kwargsÚtoken_updaterÚ_pkceÚAttributeErrorÚformatr   ÚauthÚsetÚcompliance_hook)r   Ú	client_idÚclientr-   r.   Úscoper*   r   r+   r/   ÚpkceÚkwargsr   s               €r   r   zOAuth2Session.__init__$   s  ø€ ðR 	,��m˜TÑ"Ô"Ô+Ð5Ð5¨fÐ5Ð5Ð5ØÐMÕ!5°iÀuÐ!MÑ!MÔ!MˆŒØ�[˜bˆŒ
ØˆŒØ(ˆÔØÐ,�nˆŒ
ØˆŒØ 0ˆÔØ#6Ð#<¸"ˆÔ Ø*ˆÔØˆŒ
àŒ:Ð4Ð4Ð4Ý Ð!B×!IÒ!IÈ$Ì.ÐZ^ÔZdÑ!eÔ!eÑfÔfÐfð  �KˆŒ	õ
 &)¡U¤UÝ&)¡e¤eÝ!$¡¤Ý%(¡U¤UÝ$'¡E¤Eð 
ð  
ˆÔÐÐr   c                 óH   — | j         �| j         S | j        �| j        j        S dS )zBBy default the scope from the client is used, except if overriddenN)r)   r(   r8   ©r   s    r   r8   zOAuth2Session.scopej   s,   € ð Œ;Ð"Ø”;ÐØŒ\Ð%Ø”<Ô%Ð%à�4r   c                 ó   — || _         d S r   )r)   )r   r8   s     r   r8   zOAuth2Session.scopet   s   € àˆŒˆˆr   c                 óþ   — 	 |                       ¦   «         | _        t                               d| j        ¦  «         n<# t          $ r/ | j         | _        t                               d| j        ¦  «         Y nw xY w| j        S )z6Generates a state string to be used in authorizations.zGenerated new state %s.z&Re-using previously supplied state %s.)r+   r,   ÚlogÚdebugÚ	TypeErrorr<   s    r   Ú	new_statezOAuth2Session.new_statex   s€   € ð	MØŸ*š*™,œ,ˆDŒKÝ�IŠIÐ/°´Ñ=Ô=Ð=Ð=øÝð 	Mð 	Mð 	MØœ*ˆDŒKÝ�IŠIÐ>ÀÄÑLÔLÐLÐLÐLð	Møøøð Œ{Ðs   ‚9< ¼6A5Á4A5c                 ó.   — t          | j        dd ¦  «        S )Nr6   ©Úgetattrr(   r<   s    r   r6   zOAuth2Session.client_id‚   s   € å�t”| [°$Ñ7Ô7Ð7r   c                 ó   — || j         _        d S r   ©r(   r6   ©r   Úvalues     r   r6   zOAuth2Session.client_id†   s   € à!&ˆŒÔÐÐr   c                 ó   — | j         `d S r   rG   r<   s    r   r6   zOAuth2Session.client_idŠ   s   € àŒLÐ"Ð"Ð"r   c                 ó.   — t          | j        dd ¦  «        S )Nr   rD   r<   s    r   r   zOAuth2Session.tokenŽ   s   € å�t”| W¨dÑ3Ô3Ð3r   c                 óR   — || j         _        | j                              |¦  «         d S r   )r(   r   Úpopulate_token_attributesrH   s     r   r   zOAuth2Session.token’   s(   € à"ˆŒÔØŒ×.Ò.¨uÑ5Ô5Ð5Ð5Ð5r   c                 ó.   — t          | j        dd ¦  «        S )NÚaccess_tokenrD   r<   s    r   rO   zOAuth2Session.access_token—   s   € å�t”| ^°TÑ:Ô:Ð:r   c                 ó   — || j         _        d S r   ©r(   rO   rH   s     r   rO   zOAuth2Session.access_token›   s   € à$)ˆŒÔ!Ð!Ð!r   c                 ó   — | j         `d S r   rQ   r<   s    r   rO   zOAuth2Session.access_tokenŸ   s   € àŒLÐ%Ð%Ð%r   c                 ó*   — t          | j        ¦  «        S )a€  Boolean that indicates whether this session has an OAuth token
        or not. If `self.authorized` is True, you can reasonably expect
        OAuth-protected requests to the resource to succeed. If
        `self.authorized` is False, you need the user to go through the OAuth
        authentication dance before OAuth-protected requests to the resource
        will succeed.
        )ÚboolrO   r<   s    r   Ú
authorizedzOAuth2Session.authorized£   s   € õ �DÔ%Ñ&Ô&Ð&r   c                 ó&  — |p|                       ¦   «         }| j        rR| j                             d¦  «        | _        | j        |d<   | j                             | j        | j        ¬¦  «        |d<    | j        j        |f| j        | j        |dœ|¤Ž|fS )aF  Form an authorization URL.

        :param url: Authorization endpoint url, must be HTTPS.
        :param state: An optional state string for CSRF protection. If not
                      given it will be generated for you.
        :param kwargs: Extra parameters to include.
        :return: authorization_url, state
        é+   Úcode_challenge_method)Úcode_verifierrX   Úcode_challenge)r*   r8   r+   )	rB   r0   r(   Úcreate_code_verifierÚ_code_verifierÚcreate_code_challengeÚprepare_request_urir*   r8   )r   Úurlr+   r:   s       r   Úauthorization_urlzOAuth2Session.authorization_url®   s¿   € ð Ð)˜ŸšÑ)Ô)ˆØŒ:ð 	Ø"&¤,×"CÒ"CÀBÑ"GÔ"GˆDÔØ.2¬jˆFÐ*Ñ+Ø'+¤|×'IÒ'IØ"Ô1Ø&*¤jð (Jñ (ô (ˆFÐ#Ñ$ð
 -ˆDŒLÔ,Øðà!Ô.Ø”jØð	ð ð
 ðð ð ð	
ð 		
r   Ú ÚPOSTFc                 óª  — t          |¦  «        st          ¦   «         ‚|s0|r.| j                             || j        ¬¦  «         | j        j        }n9|s7t          | j        t          ¦  «        r| j        j        }|st          d¦  «        ‚| j	        r | j
        €t          d¦  «        ‚| j
        |d<   t          | j        t          ¦  «        r"|€t          d¦  «        ‚|€t          d¦  «        ‚|�||d<   |�||d	<   |�|€d
}nN|durJ| j        }|rAt                               d|¦  «         |�|nd}t          j                             ||¦  «        }|r|�||d<    | j        j        d%||| j        |dœ|¤Ž}|pdddœ}i | _        i }|                     ¦   «         dk    r$t-          t/          |¦  «        ¦  «        ||	rdnd<   nG|                     ¦   «         dk    r t-          t/          |¦  «        ¦  «        |d<   nt          d¦  «        ‚| j        d         D ].}t                               d|¦  «          ||||¦  «        \  }}}Œ/ | j        d%|||
|||||dœ|¤Ž}t                               d|j        ¦  «         t                               d|j        j        ¦  «         t                               d|j        j        ¦  «         t                               d|j        j        ¦  «         t                               d|j        |j        ¦  «         t                               d t?          | j        d!         ¦  «        ¦  «         | j        d!         D ](}t                               d"|¦  «          ||¦  «        }Œ)| j                              |j        | j!        ¬#¦  «         | j        j        | _        t                               d$| j        ¦  «         | j        S )&a  Generic method for fetching an access token from the token endpoint.

        If you are using the MobileApplicationClient you will want to use
        `token_from_fragment` instead of `fetch_token`.

        The current implementation enforces the RFC guidelines.

        :param token_url: Token endpoint URL, must use HTTPS.
        :param code: Authorization code (used by WebApplicationClients).
        :param authorization_response: Authorization response URL, the callback
                                       URL of the request back to you. Used by
                                       WebApplicationClients instead of code.
        :param body: Optional application/x-www-form-urlencoded body to add the
                     include in the token request. Prefer kwargs over body.
        :param auth: An auth tuple or method as accepted by `requests`.
        :param username: Username required by LegacyApplicationClients to appear
                         in the request body.
        :param password: Password required by LegacyApplicationClients to appear
                         in the request body.
        :param method: The HTTP method used to make the request. Defaults
                       to POST, but may also be GET. Other methods should
                       be added as needed.
        :param force_querystring: If True, force the request body to be sent
            in the querystring instead.
        :param timeout: Timeout of the request in seconds.
        :param headers: Dict to default request headers with.
        :param verify: Verify SSL certificate.
        :param proxies: The `proxies` argument is passed onto `requests`.
        :param include_client_id: Should the request body include the
                                  `client_id` parameter. Default is `None`,
                                  which will attempt to autodetect. This can be
                                  forced to always include (True) or never
                                  include (False).
        :param client_secret: The `client_secret` paired to the `client_id`.
                              This is generally required unless provided in the
                              `auth` tuple. If the value is `None`, it will be
                              omitted from the request, however if the value is
                              an empty string, an empty string will be sent.
        :param cert: Client certificate to send for OAuth 2.0 Mutual-TLS Client
                     Authentication (draft-ietf-oauth-mtls). Can either be the
                     path of a file containing the private key and certificate or
                     a tuple of two filenames for certificate and key.
        :param kwargs: Extra parameters to include in the token request.
        :return: A token dict
        ©r+   z?Please supply either code or authorization_response parameters.NzFCode verifier is not found, authorization URL must be generated beforerY   zQ`LegacyApplicationClient` requires both the `username` and `password` parameters.zGThe required parameter `username` was supplied, but `password` was not.ÚusernameÚpasswordFTzIEncoding `client_id` "%s" with `client_secret` as Basic auth credentials.ra   Úclient_secret)ÚcodeÚbodyr*   Úinclude_client_idúapplication/jsonú!application/x-www-form-urlencoded©ÚAcceptzContent-Typerb   ÚparamsÚdataÚGETz%The method kwarg must be POST or GET.r'   z&Invoking access_token_request hook %s.)Úmethodr_   ÚtimeoutÚheadersr3   ÚverifyÚproxiesÚcertz0Request to fetch token completed with status %s.zRequest url was %szRequest headers were %szRequest body was %sú(Response headers were %s and content %s.ú!Invoking %d token response hooks.r#   úInvoking hook %s.©r8   zObtained token %s.r    )"r	   r   r(   Úparse_request_uri_responser,   rh   Ú
isinstancer   Ú
ValueErrorr0   r\   r   r6   r?   r@   Úrequestsr3   ÚHTTPBasicAuthÚprepare_request_bodyr*   r   ÚupperÚdictr   r5   ÚrequestÚstatus_coder_   rt   ri   ÚtextÚlenÚparse_request_body_responser8   )r   Ú	token_urlrh   Úauthorization_responseri   r3   re   rf   rr   Úforce_querystringrs   rt   ru   rv   rj   rg   rw   r:   r6   Úrequest_kwargsÚhookr!   s                         r   Úfetch_tokenzOAuth2Session.fetch_tokenÊ   s�  € õB # 9Ñ-Ô-ð 	+Ý(Ñ*Ô*Ð*àð 
	Ð.ð 
	ØŒL×3Ò3Ø&¨d¬kð 4ñ ô ð ð ”<Ô$ˆDˆDØð 	�* T¤\Õ3GÑHÔHð 	Ø”<Ô$ˆDØð Ý ØXñô ð ð Œ:ð 	:ØÔ"Ð*Ý Ø\ñô ð ð '+Ô&9ˆF�?Ñ#õ �d”lÕ$;Ñ<Ô<ð 
	ØÐÝ ð<ñô ð ð ÐÝ ð.ñô ð ð ÐØ!)ˆF�:ÑØÐØ!)ˆF�:Ñð Ðð !Ð(Ø$)Ð!øð !¨Ð,Ð,Ø œN�	Øð QÝ—I’Ið5à!ñô ð ð
 6CÐ5N M MÐTV�MÝ#œ=×6Ò6°yÀ-ÑPÔP�Dàð 	8ð Ð(Ø*7��Ñ'à0ˆtŒ|Ô0ð 
ØØØÔ*Ø/ð	
ð 
ð
 ð
ð 
ˆð ð 
Ø(Ø?ð
ð 
ˆð ˆŒ
ØˆØ�<Š<‰>Œ>˜VÒ#Ð#ÝHLÝ˜$‘”ñIô IˆNÐ'8ÐD˜8˜8¸fÑEÐEð �\Š\‰^Œ^˜uÒ$Ð$Ý'+­I°d©O¬OÑ'<Ô'<ˆN˜8Ñ$Ð$åÐDÑEÔEÐEàÔ(Ð)?Ô@ð 	ð 	ˆDÝ�IŠIÐ>ÀÑEÔEÐEØ15°Ø˜7 Nñ2ô 2Ñ.ˆI�w  ð ˆDŒLð 

ØØØØØØØØð

ð 

ð ð

ð 

ˆõ 	�	Š	ÐDÀaÄmÑTÔTÐTÝ�	Š	Ð&¨¬	¬Ñ6Ô6Ð6Ý�	Š	Ð+¨Q¬YÔ->Ñ?Ô?Ð?Ý�	Š	Ð'¨¬¬Ñ8Ô8Ð8Ý�	Š	Ð<¸a¼iÈÌÑPÔPÐPÝ�	Š	Ø/Ý�Ô$Ð%<Ô=Ñ>Ô>ñ	
ô 	
ð 	
ð Ô(Ð)@ÔAð 	ð 	ˆDÝ�IŠIÐ)¨4Ñ0Ô0Ð0Ø��Q‘”ˆAˆAàŒ×0Ò0°´¸t¼zÐ0ÑJÔJÐJØ”\Ô'ˆŒ
Ý�	Š	Ð&¨¬
Ñ3Ô3Ð3ØŒzÐr   c                 ót   — | j                              || j        ¬¦  «         | j         j        | _        | j        S )z¼Parse token from the URI fragment, used by MobileApplicationClients.

        :param authorization_response: The full URL of the redirect back to you
        :return: A token dict
        rd   )r(   r|   r,   r   )r   rŠ   s     r   Útoken_from_fragmentz!OAuth2Session.token_from_fragment›  s@   € ð 	Œ×/Ò/Ø"¨$¬+ð 	0ñ 	
ô 	
ð 	
ð ”\Ô'ˆŒ
ØŒzÐr   c	           
      ó†  — |st          d¦  «        ‚t          |¦  «        st          ¦   «         ‚|p| j                             d¦  «        }t
                               d| j        ¦  «         |	                     | j        ¦  «          | j	        j
        d||| j        dœ|	¤Ž}t
                               d|¦  «         |€ddd	œ}| j        d
         D ].}
t
                               d|
¦  «          |
|||¦  «        \  }}}Œ/|                      |t          t          |¦  «        ¦  «        ||||d|¬¦  «        }t
                               d|j        ¦  «         t
                               d|j        |j        ¦  «         t
                               dt'          | j        d         ¦  «        ¦  «         | j        d         D ](}
t
                               d|
¦  «          |
|¦  «        }Œ)| j	                             |j        | j        ¬¦  «        | _        d| j        vr$t
                               d¦  «         || j        d<   | j        S )aô  Fetch a new access token using a refresh token.

        :param token_url: The token endpoint, must be HTTPS.
        :param refresh_token: The refresh_token to use.
        :param body: Optional application/x-www-form-urlencoded body to add the
                     include in the token request. Prefer kwargs over body.
        :param auth: An auth tuple or method as accepted by `requests`.
        :param timeout: Timeout of the request in seconds.
        :param headers: A dict of headers to be used by `requests`.
        :param verify: Verify SSL certificate.
        :param proxies: The `proxies` argument will be passed to `requests`.
        :param kwargs: Extra parameters to include in the token request.
        :return: A token dict
        z'No token endpoint set for auto_refresh.Úrefresh_tokenz*Adding auto refresh key word arguments %s.)ri   r’   r8   z&Prepared refresh token request body %sNrk   rl   rm   r&   z'Invoking refresh_token_request hook %s.T)rp   r3   rs   rt   ru   Úwithhold_tokenrv   z2Request to refresh token completed with status %s.rx   ry   r$   rz   r{   z)No new refresh token given. Re-using old.r    )r~   r	   r   r   Úgetr?   r@   r.   Úupdater(   Úprepare_refresh_bodyr8   r5   Úpostrƒ   r   r…   rt   r†   r‡   rˆ   )r   r‰   r’   ri   r3   rs   rt   ru   rv   r:   r�   r!   s               r   r’   zOAuth2Session.refresh_token§  sb  € ð4 ð 	HÝÐFÑGÔGÐGå" 9Ñ-Ô-ð 	+Ý(Ñ*Ô*Ð*à%ÐH¨¬¯ª¸Ñ)HÔ)Hˆå�	Š	Ø8¸$Ô:Rñ	
ô 	
ð 	
ð 	�Š�dÔ.Ñ/Ô/Ð/Ø0ˆtŒ|Ô0ð 
Ø ]¸$¼*ð
ð 
ØHNð
ð 
ˆõ 	�	Š	Ð:¸DÑAÔAÐAàˆ?à,Ø!Dðð ˆGð
 Ô(Ð)@ÔAð 	Fð 	FˆDÝ�IŠIÐ?ÀÑFÔFÐFØ'+ t¨I°wÀÑ'EÔ'EÑ$ˆI�w  à�IŠIØÝ•i ‘o”oÑ&Ô&ØØØØØØð ñ 	
ô 	
ˆõ 	�	Š	ÐFÈÌÑVÔVÐVÝ�	Š	Ð<¸a¼iÈÌÑPÔPÐPÝ�	Š	Ø/Ý�Ô$Ð%=Ô>Ñ?Ô?ñ	
ô 	
ð 	
ð Ô(Ð)AÔBð 	ð 	ˆDÝ�IŠIÐ)¨4Ñ0Ô0Ð0Ø��Q‘”ˆAˆAà”\×=Ò=¸a¼fÈDÌJÐ=ÑWÔWˆŒ
Ø $¤*Ð,Ð,Ý�IŠIÐAÑBÔBÐBØ*7ˆDŒJ�Ñ'ØŒzÐr   c	                 óÖ  •— t          |¦  «        st          ¦   «         ‚| j        �rË|�sÈt                               dt          | j        d         ¦  «        ¦  «         | j        d         D ].}
t                               d|
¦  «          |
|||¦  «        \  }}}Œ/t                               d| j        ¦  «         	 | j                             ||||¬¦  «        \  }}}�n# t          $ �r | j
        rût                               d| j
        ¦  «         |	                     dd¦  «        }|r?|r=|€;t                               d	|¦  «         t          j                             ||¦  «        } | j        | j
        fd|i|	¤Ž}| j        rYt                               d
|| j        ¦  «         |                      |¦  «         | j                             ||||¬¦  «        \  }}}nt#          |¦  «        ‚‚ Y nw xY wt                               d||¦  «         t                               d||¦  «         t                               d|	¦  «          t%          t&          | ¦  «        j        ||f|||dœ|	¤ŽS )z<Intercept all requests and add the OAuth 2 token if present.z-Invoking %d protected resource request hooks.r%   rz   zAdding token %s to request.)Úhttp_methodri   rt   z1Auto refresh is set, attempting to refresh at %s.r3   NzEEncoding client_id "%s" with client_secret as Basic auth credentials.zUpdating token to %s using %s.z"Requesting url %s using method %s.z Supplying headers %s and data %sz&Passing through key word arguments %s.)rt   rp   Úfiles)r	   r   r   r?   r@   r‡   r5   r(   Ú	add_tokenr   r-   Úpopr   r3   r€   r’   r/   r   r   r   r„   )r   rr   r_   rp   rt   r“   r6   rg   rš   r:   r�   r3   r   r   s                €r   r„   zOAuth2Session.requestö  sÙ  ø€ õ # 3Ñ'Ô'ð 	+Ý(Ñ*Ô*Ð*ØŒ:ñ ,	˜nñ ,	Ý�IŠIØ?Ý�DÔ(Ð)<Ô=Ñ>Ô>ñô ð ð Ô,Ð-@ÔAð >ð >�Ý—	’	Ð-¨tÑ4Ô4Ð4Ø%) T¨#¨w¸Ñ%=Ô%=Ñ"��W˜d˜då�IŠIÐ3°T´ZÑ@Ô@Ð@ð"Ø%)¤\×%;Ò%;Ø V°$Àð &<ñ &ô &Ñ"��W˜d™døõ %ð ñ ð ØÔ(ð Ý—I’IØKØÔ-ñô ð ð "Ÿ:š: f¨dÑ3Ô3�DØ ð U ]ð U¸¸ÝŸ	š	ØcØ%ñô ð õ  (œ}×:Ò:¸9ÀmÑTÔT˜Ø.˜DÔ.ØÔ-ðð Ø48ðØ<Bðð �Eð Ô)ð 	2ÝŸ	š	Ø<¸eÀTÔEWñô ð ð ×*Ò*¨5Ñ1Ô1Ð1Ø-1¬\×-CÒ-CØ¨V¸$Èð .Dñ .ô .Ñ*˜˜W d dõ +¨5Ñ1Ô1Ð1àð '+ dð/øøøõ> 	�	Š	Ð6¸¸VÑDÔDÐDÝ�	Š	Ð4°g¸tÑDÔDÐDÝ�	Š	Ð:¸FÑCÔCÐCØ1�u•] DÑ)Ô)Ô1Ø�Cð
Ø!(¨t¸5ð
ð 
ØDJð
ð 
ð 	
s   Â:"C ÃDG/Ç.G/c                 ó„   — || j         vrt          d|| j         ¦  «        ‚| j         |                              |¦  «         dS )a  Register a hook for request/response tweaking.

        Available hooks are:
            access_token_response invoked before token parsing.
            refresh_token_response invoked before refresh token parsing.
            protected_request invoked before making a request.
            access_token_request invoked before making a token fetch request.
            refresh_token_request invoked before making a refresh request.

        If you find a new hook is needed please send a GitHub PR request
        or open an issue.
        zHook type %s is not in %s.N)r5   r~   Úadd)r   Ú	hook_typer�   s      r   Úregister_compliance_hookz&OAuth2Session.register_compliance_hook:  sR   € ð ˜DÔ0Ð0Ð0ÝØ,¨i¸Ô9Mñô ð ð 	Ô˜YÔ'×+Ò+¨DÑ1Ô1Ð1Ð1Ð1r   )
NNNNNNNNNNr   )NNra   NNNrb   FNNNNNNN)Nra   NNNNN)NNFNNN)r   r   r   Ú__doc__r   Úpropertyr8   ÚsetterrB   r6   Údeleterr   rO   rU   r`   rŽ   r�   r’   r„   r    r   r   s   @r   r   r      s�  ø€ € € € € ðð ð& ØØØ ØØØØØØðD
ð D
ð D
ð D
ð D
ð D
ðL ðð ñ „Xðð „\ðð ñ „\ððð ð ð ð8ð 8ñ „Xð8ð Ôð'ð 'ñ Ôð'ð Ôð#ð #ñ Ôð#ð ð4ð 4ñ „Xð4ð „\ð6ð 6ñ „\ð6ð ð;ð ;ñ „Xð;ð Ôð*ð *ñ Ôð*ð Ôð&ð &ñ Ôð&ð ð'ð 'ñ „Xð'ð
ð 
ð 
ð 
ð> Ø#ØØØØØØØØØØØØØð#Oð Oð Oð Oðb
ð 
ð 
ð ØØØØØØðMð Mð Mð Mðf ØØØØØðB
ð B
ð B
ð B
ð B
ð B
ðH2ð 2ð 2ð 2ð 2ð 2ð 2r   r   )ÚloggingÚoauthlib.commonr   r   Úoauthlib.oauth2r   r   r   r   r	   r   Ú	getLoggerr   r?   ÚWarningr   ÚSessionr   r    r   r   ú<module>r«      sî   ðØ €€€à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ €€€à€gÔ˜Ñ!Ô!€ðð ð ð ð �7ñ ô ð ðy2ð y2ð y2ð y2ð y2�HÔ$ñ y2ô y2ð y2ð y2ð y2r   