§
    òŽ’jŒX  ã                  ó  — U d dl m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mZ ddlmZmZmZ dd	lmZmZmZmZmZmZmZmZm Z  dd
lm!Z! es e" ej#        dd¦  «        ¦  «        rVd dl$Z$e$j%        dk    rd dlm&Z& nd dl'm&Z& ddl(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/m0Z0 ee)e,e1e2f         Z3de4d<   ee*e,e1e2f         Z5de4d<    G d„ d¦  «        Z6 e6¦   «         Z7ee7_8        e7j9        Z9e7j:        Z:e7j;        Z;dS )é    )ÚannotationsN)Útimegm)Ú	ContainerÚIterableÚSequence)ÚdatetimeÚ	timedeltaÚtimezone)ÚTYPE_CHECKINGÚAnyÚUnionÚcasté   )ÚPyJWSÚ_ALGORITHM_UNSETÚ_jws_global_obj)	ÚDecodeErrorÚExpiredSignatureErrorÚImmatureSignatureErrorÚInvalidAudienceErrorÚInvalidIssuedAtErrorÚInvalidIssuerErrorÚInvalidJTIErrorÚInvalidSubjectErrorÚMissingRequiredClaimError)ÚRemovedInPyjwt3WarningÚSPHINX_BUILDÚ )é   é
   )Ú	TypeAlias)ÚAllowedPrivateKeysÚAllowedPublicKeys)ÚPyJWK)ÚFullOptionsÚOptionsÚ
SigOptionsr!   ÚAllowedPrivateKeyTypesÚAllowedPublicKeyTypesc                  óþ   — e Zd ZdHdId„ZedJd„¦   «         ZdKd
„ZdHdLd„ZedddfdMd„Z		 	 dNdOd„Z
	 	 	 	 	 	 	 	 	 dPdQd1„ZdRd3„Z	 	 	 	 	 	 	 	 	 dPdSd5„Z	 	 	 	 dTdUd8„ZdVd;„Z	 dHdWd<„ZdXd=„ZdYd@„ZdYdA„ZdYdB„ZdCdDœdZdF„Zd[dG„ZdS )\ÚPyJWTNÚoptionsúOptions | NoneÚreturnÚNonec                óÂ   — |  |                       ¦   «         | _        |�|                      |¦  «        | _        t          |                      ¦   «         ¬¦  «        | _        d S )N)r,   )Ú_get_default_optionsr,   Ú_merge_optionsr   Ú_get_sig_optionsÚ_jws©Úselfr,   s     ú9C:\Projects\DSCons\.venv\Lib\site-packages\jwt\api_jwt.pyÚ__init__zPyJWT.__init__+   sX   € ØÐ!Ø×0Ò0Ñ2Ô2ˆŒØÐØ×.Ò.¨wÑ7Ô7ˆDŒLå $×"7Ò"7Ñ"9Ô"9Ð:Ñ:Ô:ˆŒ	ˆ	ˆ	ó    r%   c                 ó   — ddddddddg dddœS )NTF)Úverify_signatureÚ
verify_expÚ
verify_nbfÚ
verify_iatÚ
verify_audÚ
verify_issÚ
verify_subÚ
verify_jtiÚrequireÚ
strict_audÚenforce_minimum_key_length© rF   r9   r7   r1   zPyJWT._get_default_options3   s4   € ð !%ØØØØØØØØØØ*/ð
ð 
ð 	
r9   r'   c                óT   — | j         d         | j                              dd¦  «        dœS )Nr;   rE   F©r;   rE   ©r,   Úget)r6   s    r7   r3   zPyJWT._get_sig_optionsC   s6   € à $¤Ð-?Ô @Ø*.¬,×*:Ò*:Ø,¨eñ+ô +ð
ð 
ð 	
r9   c                ó´  — |€| j         S |                     dd¦  «        s¯|                     dd¦  «        |d<   |                     dd¦  «        |d<   |                     dd¦  «        |d<   |                     dd¦  «        |d<   |                     dd¦  «        |d<   |                     d	d¦  «        |d	<   |                     d
d¦  «        |d
<   i | j         ¥|¥S )Nr;   Tr<   Fr=   r>   r?   r@   rA   rB   rI   r5   s     r7   r2   zPyJWT._merge_optionsK   sã   € Øˆ?Ø”<Ðð �{Š{Ð-¨tÑ4Ô4ð 	EØ$+§K¢K°¸eÑ$DÔ$DˆG�LÑ!Ø$+§K¢K°¸eÑ$DÔ$DˆG�LÑ!Ø$+§K¢K°¸eÑ$DÔ$DˆG�LÑ!Ø$+§K¢K°¸eÑ$DÔ$DˆG�LÑ!Ø$+§K¢K°¸eÑ$DÔ$DˆG�LÑ!Ø$+§K¢K°¸eÑ$DÔ$DˆG�LÑ!Ø$+§K¢K°¸eÑ$DÔ$DˆG�LÑ!Ø*�$”,Ð* 'Ð*Ð*r9   TÚpayloadúdict[str, Any]Úkeyr(   Ú	algorithmú
str | NoneÚheadersúdict[str, Any] | NoneÚjson_encoderútype[json.JSONEncoder] | NoneÚsort_headersÚboolÚstrc                óì  — t          |t          ¦  «        st          d¦  «        ‚|                     ¦   «         }dD ]T}t          |                     |¦  «        t
          ¦  «        r*t          ||                              ¦   «         ¦  «        ||<   ŒUd|v r*t          |d         t          ¦  «        st          d¦  «        ‚|  	                    |||¬¦  «        }| j
                             ||||||¬¦  «        S )a¦  Encode the ``payload`` as JSON Web Token.

        :param payload: JWT claims, e.g. ``dict(iss=..., aud=..., sub=...)``
        :type payload: dict[str, typing.Any]
        :param key: a key suitable for the chosen algorithm:

            * for **asymmetric algorithms**: PEM-formatted private key, a multiline string
            * for **symmetric algorithms**: plain string, sufficiently long for security

        :type key: str or bytes or PyJWK or :py:class:`jwt.algorithms.AllowedPrivateKeys`
        :param algorithm: algorithm to sign the token with, e.g. ``"ES256"``.
            If ``headers`` includes ``alg``, it will be preferred to this parameter.
            If ``key`` is a :class:`PyJWK` object, by default the key algorithm will be used.
        :type algorithm: str or None
        :param headers: additional JWT header fields, e.g. ``dict(kid="my-key-id")``.
        :type headers: dict[str, typing.Any] or None
        :param json_encoder: custom JSON encoder for ``payload`` and ``headers``
        :type json_encoder: json.JSONEncoder or None

        :rtype: str
        :returns: a JSON Web Token

        :raises TypeError: if ``payload`` is not a ``dict``
        zGExpecting a dict object, as JWT only supports JSON objects as payloads.)ÚexpÚiatÚnbfÚisszIssuer (iss) must be a string.)rQ   rS   )rU   )Ú
isinstanceÚdictÚ	TypeErrorÚcopyrJ   r   r   ÚutctimetuplerW   Ú_encode_payloadr4   Úencode)	r6   rL   rN   rO   rQ   rS   rU   Ú
time_claimÚjson_payloads	            r7   rc   zPyJWT.encodeZ   s  € õD ˜'¥4Ñ(Ô(ð 	Ýð,ñô ð ð —,’,‘.”.ˆØ/ð 	Qð 	QˆJå˜'Ÿ+š+ jÑ1Ô1µ8Ñ<Ô<ð QÝ&,¨W°ZÔ-@×-MÒ-MÑ-OÔ-OÑ&PÔ&P�˜
Ñ#øð �GÐÐ¥J¨w°u¬~½sÑ$CÔ$CÐÝÐ<Ñ=Ô=Ð=à×+Ò+ØØØ%ð ,ñ 
ô 
ˆð Œy×ÒØØØØØØ%ð  ñ 
ô 
ð 	
r9   Úbytesc                óV   — t          j        |d|¬¦  «                             d¦  «        S )zÚ
        Encode a given payload to the bytes to be signed.

        This method is intended to be overridden by subclasses that need to
        encode the payload in a different way, e.g. compress the payload.
        )ú,ú:)Ú
separatorsÚclszutf-8)ÚjsonÚdumpsrc   )r6   rL   rQ   rS   s       r7   rb   zPyJWT._encode_payloadœ   s3   € õ ŒzØØ!Øð
ñ 
ô 
÷ Š&�‰/Œ/ð		r9   r   r   Újwtústr | bytesr)   Ú
algorithmsúSequence[str] | NoneÚverifyúbool | NoneÚdetached_payloadúbytes | NoneÚaudienceústr | Iterable[str] | NoneÚissuerústr | Container[str] | NoneÚsubjectÚleewayúfloat | timedeltaÚkwargsr   c                ó  — |r>t          j        dt          |                     ¦   «         ¦  «        › �t          d¬¦  «         |€d}n|                     dd¦  «        }|�"||k    rt          j        dt          d¬¦  «         |                      |¦  «        }||                     d	d
¦  «        dœ}| j         	                    |||||¬¦  «        }|  
                    |¦  «        }|                      |||||
|	¬¦  «         ||d<   |S )u$  Identical to ``jwt.decode`` except for return value which is a dictionary containing the token header (JOSE Header),
        the token payload (JWT Payload), and token signature (JWT Signature) on the keys "header", "payload",
        and "signature" respectively.

        :param jwt: the token to be decoded
        :type jwt: str or bytes
        :param key: the key suitable for the allowed algorithm
        :type key: str or bytes or PyJWK or :py:class:`jwt.algorithms.AllowedPublicKeys`

        :param algorithms: allowed algorithms, e.g. ``["ES256"]``

            .. warning::

               Do **not** compute the ``algorithms`` parameter based on
               the ``alg`` from the token itself, or on any other data
               that an attacker may be able to influence, as that might
               expose you to various vulnerabilities (see `RFC 8725 Â§2.1
               <https://www.rfc-editor.org/rfc/rfc8725.html#section-2.1>`_). Instead,
               either hard-code a fixed value for ``algorithms``, or
               configure it in the same place you configure the
               ``key``. Make sure not to mix symmetric and asymmetric
               algorithms that interpret the ``key`` in different ways
               (e.g. HS\* and RS\*).
        :type algorithms: typing.Sequence[str] or None

        :param jwt.types.Options options: extended decoding and validation options
            Refer to :py:class:`jwt.types.Options` for more information.

        :param audience: optional, the value for ``verify_aud`` check
        :type audience: str or typing.Iterable[str] or None
        :param issuer: optional, the value for ``verify_iss`` check
        :type issuer: str or typing.Container[str] or None
        :param leeway: a time margin in seconds for the expiration check
        :type leeway: float or datetime.timedelta
        :rtype: dict[str, typing.Any]
        :returns: Decoded JWT with the JOSE Header on the key ``header``, the JWS
         Payload on the key ``payload``, and the JWS Signature on the key ``signature``.
        zypassing additional kwargs to decode_complete() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs: é   ©Ú
stacklevelNTr;   zàThe `verify` argument to `decode` does nothing in PyJWT 2.0 and newer. The equivalent is setting `verify_signature` to False in the `options` dictionary. This invocation has a mismatch between the kwarg and the option entry.)Úcategoryr�   rE   FrH   )rN   rp   r,   rt   )rv   rx   r{   rz   rL   )ÚwarningsÚwarnÚtupleÚkeysr   rJ   ÚDeprecationWarningr2   r4   Údecode_completeÚ_decode_payloadÚ_validate_claims)r6   rn   rN   rp   r,   rr   rt   rv   rx   rz   r{   r}   r;   Úmerged_optionsÚsig_optionsÚdecodedrL   s                    r7   rˆ   zPyJWT.decode_complete®   so  € ðr ð 	ÝŒMð>å',¨V¯[ª[©]¬]Ñ';Ô';ð>ð >õ 'Øðñ ô ð ð ˆ?Ø#ÐÐà&Ÿ{š{Ð+=¸tÑDÔDÐð
 Ð &Ð,<Ò"<Ð"<ÝŒMðYõ ,Øðñ ô ð ð ×,Ò,¨WÑ5Ô5ˆð !1Ø*8×*<Ò*<Ø,¨eñ+ô +ð#
ð #
ˆð ”)×+Ò+ØØØ!ØØ-ð ,ñ 
ô 
ˆð ×&Ò& wÑ/Ô/ˆà×ÒØØØØØØð 	ñ 	
ô 	
ð 	
ð %ˆ�	ÑØˆr9   r�   c                óÐ   — 	 t          j        |d         ¦  «        }n%# t          $ r}t          d|› �¦  «        |‚d}~ww xY wt	          |t
          ¦  «        st          d¦  «        ‚|S )a  
        Decode the payload from a JWS dictionary (payload, signature, header).

        This method is intended to be overridden by subclasses that need to
        decode the payload in a different way, e.g. decompress compressed
        payloads.
        rL   zInvalid payload string: Nz-Invalid payload string: must be a json object)rl   ÚloadsÚ
ValueErrorr   r]   r^   )r6   r�   rL   Úes       r7   r‰   zPyJWT._decode_payload  s�   € ð	EÝ&*¤j°¸Ô1CÑ&DÔ&DˆGˆGøÝð 	Eð 	Eð 	EÝÐ<¸Ð<Ð<Ñ=Ô=À1ÐDøøøøð	Eøøøå˜'¥4Ñ(Ô(ð 	OÝÐMÑNÔNÐNØˆs   ‚ �
?§:º?ú'AllowedPublicKeys | PyJWK | str | bytesc                ó  — |r>t          j        dt          |                     ¦   «         ¦  «        › �t          d¬¦  «         |                      |||||||||	|
¬¦
  «
        }t          t          t          t          f         |d         ¦  «        S )u¢  Verify the ``jwt`` token signature and return the token claims.

        :param jwt: the token to be decoded
        :type jwt: str or bytes
        :param key: the key suitable for the allowed algorithm
        :type key: str or bytes or PyJWK or :py:class:`jwt.algorithms.AllowedPublicKeys`

        :param algorithms: allowed algorithms, e.g. ``["ES256"]``
            If ``key`` is a :class:`PyJWK` object, allowed algorithms will default to the key algorithm.

            .. warning::

               Do **not** compute the ``algorithms`` parameter based on
               the ``alg`` from the token itself, or on any other data
               that an attacker may be able to influence, as that might
               expose you to various vulnerabilities (see `RFC 8725 Â§2.1
               <https://www.rfc-editor.org/rfc/rfc8725.html#section-2.1>`_). Instead,
               either hard-code a fixed value for ``algorithms``, or
               configure it in the same place you configure the
               ``key``. Make sure not to mix symmetric and asymmetric
               algorithms that interpret the ``key`` in different ways
               (e.g. HS\* and RS\*).
        :type algorithms: typing.Sequence[str] or None

        :param jwt.types.Options options: extended decoding and validation options
            Refer to :py:class:`jwt.types.Options` for more information.

        :param audience: optional, the value for ``verify_aud`` check
        :type audience: str or typing.Iterable[str] or None
        :param subject: optional, the value for ``verify_sub`` check
        :type subject: str or None
        :param issuer: optional, the value for ``verify_iss`` check
        :type issuer: str or typing.Container[str] or None
        :param leeway: a time margin in seconds for the expiration check
        :type leeway: float or datetime.timedelta
        :rtype: dict[str, typing.Any]
        :returns: the JWT claims
        zppassing additional kwargs to decode() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs: r   r€   )rr   rt   rv   rz   rx   r{   rL   )
rƒ   r„   r…   r†   r   rˆ   r   r^   rW   r   )r6   rn   rN   rp   r,   rr   rt   rv   rz   rx   r{   r}   r�   s                r7   ÚdecodezPyJWT.decode/  s©   € ðr ð 	ÝŒMð>å',¨V¯[ª[©]¬]Ñ';Ô';ð>ð >õ 'Øðñ ô ð ð ×&Ò&ØØØØØØ-ØØØØð 'ñ 
ô 
ˆõ •D��c˜”N G¨IÔ$6Ñ7Ô7Ð7r9   úIterable[str] | str | NoneúContainer[str] | str | Nonec                ó<  — t          |t          ¦  «        r|                     ¦   «         }|�+t          |t          t          f¦  «        st          d¦  «        ‚|                      ||d         ¦  «         t          j        t          j
        ¬¦  «                             ¦   «         }d|v r|d         r|                      |||¦  «         d|v r|d         r|                      |||¦  «         d|v r|d	         r|                      |||¦  «         |d
         r|                      ||¦  «         |d         r,|                      |||                     dd¦  «        ¬¦  «         |d         r|                      ||¦  «         |d         r|                      |¦  «         d S d S )Nz+audience must be a string, iterable or NonerC   )ÚtzrZ   r>   r[   r=   rY   r<   r@   r?   rD   F©ÚstrictrA   rB   )r]   r	   Útotal_secondsrW   r   r_   Ú_validate_required_claimsr   Únowr
   ÚutcÚ	timestampÚ_validate_iatÚ_validate_nbfÚ_validate_expÚ_validate_issÚ_validate_audrJ   Ú_validate_subÚ_validate_jti)r6   rL   r,   rv   rx   rz   r{   r�   s           r7   rŠ   zPyJWT._validate_claims~  sÉ  € õ �f�iÑ(Ô(ð 	,Ø×)Ò)Ñ+Ô+ˆFàÐ­
°8½cÅ8¸_Ñ(MÔ(MÐÝÐIÑJÔJÐJà×&Ò& w°¸	Ô0BÑCÔCÐCåŒl�hœlÐ+Ñ+Ô+×5Ò5Ñ7Ô7ˆà�GÐÐ ¨Ô 5ÐØ×Ò˜w¨¨VÑ4Ô4Ð4à�GÐÐ ¨Ô 5ÐØ×Ò˜w¨¨VÑ4Ô4Ð4à�GÐÐ ¨Ô 5ÐØ×Ò˜w¨¨VÑ4Ô4Ð4à�<Ô ð 	0Ø×Ò˜w¨Ñ/Ô/Ð/à�<Ô ð 	Ø×ÒØ˜¨'¯+ª+°lÀEÑ*JÔ*Jð ñ ô ð ð �<Ô ð 	1Ø×Ò˜w¨Ñ0Ô0Ð0à�<Ô ð 	(Ø×Ò˜wÑ'Ô'Ð'Ð'Ð'ð	(ð 	(r9   ÚclaimsúIterable[str]c                óX   — |D ]&}|                      |¦  «        €t          |¦  «        ‚Œ'd S ©N)rJ   r   )r6   rL   r§   Úclaims       r7   rœ   zPyJWT._validate_required_claims¨  sB   € ð
 ð 	7ð 	7ˆEØ�{Š{˜5Ñ!Ô!Ð)Ý/°Ñ6Ô6Ð6ð *ð	7ð 	7r9   c                ó¾   — d|vrdS t          |d         t          ¦  «        st          d¦  «        ‚|�(|                     d¦  «        |k    rt          d¦  «        ‚dS dS )zè
        Checks whether "sub" if in the payload is valid or not.
        This is an Optional claim

        :param payload(dict): The payload which needs to be validated
        :param subject(str): The subject of the token
        ÚsubNzSubject must be a stringzInvalid subject)r]   rW   r   rJ   )r6   rL   rz   s      r7   r¥   zPyJWT._validate_sub±  st   € ð ˜ÐÐØˆFå˜' %œ.­#Ñ.Ô.ð 	BÝ%Ð&@ÑAÔAÐAàÐØ�{Š{˜5Ñ!Ô! WÒ,Ð,Ý)Ð*;Ñ<Ô<Ð<ð ÐØ,Ð,r9   c                ó€   — d|vrdS t          |                     d¦  «        t          ¦  «        st          d¦  «        ‚dS )z±
        Checks whether "jti" if in the payload is valid or not
        This is an Optional claim

        :param payload(dict): The payload which needs to be validated
        ÚjtiNzJWT ID must be a string)r]   rJ   rW   r   )r6   rL   s     r7   r¦   zPyJWT._validate_jtiÆ  sK   € ð ˜ÐÐØˆFå˜'Ÿ+š+ eÑ,Ô,­cÑ2Ô2ð 	=Ý!Ð";Ñ<Ô<Ð<ð	=ð 	=r9   r�   Úfloatc                ó    — 	 t          |d         ¦  «        }n# t          $ r t          d¦  «        d ‚w xY w|||z   k    rt          d¦  «        ‚d S )NrZ   z)Issued At claim (iat) must be an integer.z The token is not yet valid (iat))Úintr�   r   r   )r6   rL   r�   r{   rZ   s        r7   r    zPyJWT._validate_iatÔ  su   € ð	Ý�g˜e”nÑ%Ô%ˆCˆCøÝð 	ð 	ð 	Ý&Ø;ñô àðð	øøøð �#˜‘,ÒÐÝ(Ð)KÑLÔLÐLð  Ðó   ‚ ˜3c                ó    — 	 t          |d         ¦  «        }n# t          $ r t          d¦  «        d ‚w xY w|||z   k    rt          d¦  «        ‚d S )Nr[   z*Not Before claim (nbf) must be an integer.z The token is not yet valid (nbf))r²   r�   r   r   )r6   rL   r�   r{   r[   s        r7   r¡   zPyJWT._validate_nbfã  st   € ð	VÝ�g˜e”nÑ%Ô%ˆCˆCøÝð 	Vð 	Vð 	VÝÐJÑKÔKÐQUÐUð	Vøøøð �#˜‘,ÒÐÝ(Ð)KÑLÔLÐLð  Ðr³   c                ó    — 	 t          |d         ¦  «        }n# t          $ r t          d¦  «        d ‚w xY w|||z
  k    rt          d¦  «        ‚d S )NrY   z/Expiration Time claim (exp) must be an integer.zSignature has expired)r²   r�   r   r   )r6   rL   r�   r{   rY   s        r7   r¢   zPyJWT._validate_expñ  su   € ð	Ý�g˜e”nÑ%Ô%ˆCˆCøÝð 	ð 	ð 	ÝØAñô àðð	øøøð
 �3˜‘<Ò Ð Ý'Ð(?Ñ@Ô@Ð@ð !Ð r³   Fr™   rš   c               óš  ‡— |€d|vs|d         sd S t          d¦  «        ‚d|vs|d         st          d¦  «        ‚|d         Š|r_t          |t          ¦  «        st          d¦  «        ‚t          ‰t          ¦  «        st          d¦  «        ‚|‰k    rt          d¦  «        ‚d S t          ‰t          ¦  «        r‰gŠt          ‰t          ¦  «        st          d¦  «        ‚t          d„ ‰D ¦   «         ¦  «        rt          d¦  «        ‚t          |t          ¦  «        r|g}t          ˆfd„|D ¦   «         ¦  «        rt          d	¦  «        ‚d S )
NÚaudzInvalid audiencezInvalid audience (strict)z&Invalid claim format in token (strict)zAudience doesn't match (strict)zInvalid claim format in tokenc              3  óB   K  — | ]}t          |t          ¦  «         V — Œd S rª   )r]   rW   )Ú.0Úcs     r7   ú	<genexpr>z&PyJWT._validate_aud.<locals>.<genexpr>*  s/   è è € Ð?Ð?¨!•:˜a¥Ñ%Ô%Ð%Ð?Ð?Ð?Ð?Ð?Ð?r9   c              3  ó    •K  — | ]}|‰vV — Œ	d S rª   rF   )r¹   r·   Úaudience_claimss     €r7   r»   z&PyJWT._validate_aud.<locals>.<genexpr>0  s(   øè è € Ð>Ð>¨cˆs˜/Ð)Ð>Ð>Ð>Ð>Ð>Ð>r9   zAudience doesn't match)r   r   r]   rW   ÚlistÚanyÚall)r6   rL   rv   rš   r½   s       @r7   r¤   zPyJWT._validate_aud  s–  ø€ ð ÐØ˜GÐ#Ð#¨7°5¬>Ð#Ø�õ 'Ð'9Ñ:Ô:Ð:à˜ÐÐ w¨u¤~Ðõ ,¨EÑ2Ô2Ð2à! %œ.ˆð ð 	å˜h­Ñ,Ô,ð HÝ*Ð+FÑGÔGÐGõ ˜o­sÑ3Ô3ð UÝ*Ð+SÑTÔTÐTà˜?Ò*Ð*Ý*Ð+LÑMÔMÐMàˆFå�o¥sÑ+Ô+ð 	0Ø.Ð/ˆOÝ˜/­4Ñ0Ô0ð 	HÝ&Ð'FÑGÔGÐGÝÐ?Ð?¨Ð?Ñ?Ô?Ñ?Ô?ð 	HÝ&Ð'FÑGÔGÐGå�h¥Ñ$Ô$ð 	"Ø �zˆHåÐ>Ð>Ð>Ð>°XÐ>Ñ>Ô>Ñ>Ô>ð 	AÝ&Ð'?Ñ@Ô@Ð@ð	Að 	Ar9   c                óH  — |€d S d|vrt          d¦  «        ‚|d         }t          |t          ¦  «        st          d¦  «        ‚t          |t          ¦  «        r||k    rt          d¦  «        ‚d S 	 ||vrt          d¦  «        ‚d S # t          $ r t          d¦  «        d ‚w xY w)Nr\   z%Payload Issuer (iss) must be a stringzInvalid issuerz.Issuer param must be "str" or "Container[str]")r   r]   rW   r   r_   )r6   rL   rx   r\   s       r7   r£   zPyJWT._validate_iss3  sÝ   € ð ˆ>ØˆFà˜ÐÐÝ+¨EÑ2Ô2Ð2à�eŒnˆÝ˜#�sÑ#Ô#ð 	NÝ$Ð%LÑMÔMÐMå�f�cÑ"Ô"ð 
	Ø�fŠ}ˆ}Ý(Ð)9Ñ:Ô:Ð:ð ˆ}ðØ˜fÐ$Ð$Ý,Ð-=Ñ>Ô>Ð>ð %Ð$øåð ð ð Ý(ØDñô àððøøøs   Á1B ÂB!rª   )r,   r-   r.   r/   )r.   r%   )r.   r'   )r,   r-   r.   r%   )rL   rM   rN   r(   rO   rP   rQ   rR   rS   rT   rU   rV   r.   rW   )NN)rL   rM   rQ   rR   rS   rT   r.   rf   )	r   NNNNNNNr   )rn   ro   rN   r)   rp   rq   r,   r-   rr   rs   rt   ru   rv   rw   rx   ry   rz   rP   r{   r|   r}   r   r.   rM   )r�   rM   r.   rM   )rn   ro   rN   r’   rp   rq   r,   r-   rr   rs   rt   ru   rv   rw   rz   rP   rx   ry   r{   r|   r}   r   r.   rM   )NNNr   )rL   rM   r,   r%   rv   r•   rx   r–   rz   rP   r{   r|   r.   r/   )rL   rM   r§   r¨   r.   r/   )rL   rM   rz   rP   r.   r/   )rL   rM   r.   r/   )rL   rM   r�   r°   r{   r°   r.   r/   )rL   rM   rv   rw   rš   rV   r.   r/   )rL   rM   rx   r–   r.   r/   )Ú__name__Ú
__module__Ú__qualname__r8   Ústaticmethodr1   r3   r2   r   rc   rb   rˆ   r‰   r”   rŠ   rœ   r¥   r¦   r    r¡   r¢   r¤   r£   rF   r9   r7   r+   r+   *   sM  € € € € € ð;ð ;ð ;ð ;ð ;ð ð
ð 
ð 
ñ „\ð
ð
ð 
ð 
ð 
ð+ð +ð +ð +ð +ð& !1Ø)-Ø6:Ø!ð@
ð @
ð @
ð @
ð @
ðJ *.Ø6:ð	ð ð ð ð ð* &(Ø+/Ø"&à"à)-ð 04Ø.2Ø"Ø$%ðoð oð oð oð oðbð ð ð ð& 8:Ø+/Ø"&à"à)-ð 04Ø"Ø.2Ø$%ðM8ð M8ð M8ð M8ð M8ðf 04Ø.2Ø"Ø$%ð((ð ((ð ((ð ((ð ((ðT7ð 7ð 7ð 7ð >Bð=ð =ð =ð =ð =ð*=ð =ð =ð =ðMð Mð Mð MðMð Mð Mð MðAð Að Að Að* ð0Að 0Að 0Að 0Að 0Að 0Aðdð ð ð ð ð r9   r+   )<Ú
__future__r   rl   Úosrƒ   Úcalendarr   Úcollections.abcr   r   r   r   r	   r
   Útypingr   r   r   r   Úapi_jwsr   r   r   Ú
exceptionsr   r   r   r   r   r   r   r   r   r   rV   ÚgetenvÚsysÚversion_infor!   Útyping_extensionsrp   r"   r#   Úapi_jwkr$   Útypesr%   r&   r'   rW   rf   r(   Ú__annotations__r)   r+   Ú_jwt_global_objr4   rc   rˆ   r”   rF   r9   r7   ú<module>rÕ      sœ  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð -Ð ,Ð ,Ð ,Ð ,Ð ,àð S�D�D˜˜œ >°2Ñ6Ô6Ñ7Ô7ð SØ€J€J€Jà
Ô˜7Ò"Ð"Ø$Ð$Ð$Ð$Ð$Ð$Ð$ð 	0Ð/Ð/Ð/Ð/Ð/àAÐAÐAÐAÐAÐAÐAÐAØÐÐÐÐÐØ7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7à(-Ð.@À%ÈÈeÐ.SÔ(TÐÐTÐTÐTÑTØ',Ð->ÀÀsÈEÐ-QÔ'RÐÐRÐRÐRÑRð`ð `ð `ð `ð `ñ `ô `ð `ðF �%‘'”'€Ø&€Ô Ø	Ô	€Ø!Ô1€Ø	Ô	€€€r9   