ó
    öÞ j;V  ã                  ó.  • % S SK Jr  S SKrS SKrS SKrS SKJr  S SKJrJ	r	J
r
  S SKJrJrJr  S SKJrJrJrJr  SSKJrJrJr  SS	KJrJrJrJrJrJrJrJrJ r   SS
KJ!r!  \(       d  \"" \RF                  " SS5      5      (       aU  S SK$r$\$RJ                  S:¼  a  S SKJ&r&  OS SK'J&r&  SSK(J)r)J*r*  SSK+J,r,  SSK-J.r.J/r/J0r0  \\)\,\1\24   r3S\4S'   \\*\,\1\24   r5S\4S'    " S S5      r6\6" 5       r7\\7l8        \7Rr                  r9\7Rt                  r:\7Rv                  r;g)é    )Ú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                  ó2  • \ rS rSrSSS jjr\SS j5       rSS jrSSS jjr\	SSS4             SS jjr
  S       S S	 jjr         S!                       S"S
 jjrS#S jr         S!                       S$S jjr    S%             S&S jjr      S'S jr S     S(S jjrS)S jr        S*S jr        S*S jr        S*S jrSS.       S+S jjr      S,S jrSrg)-ÚPyJWTé*   Nc                óœ   • U   U R                  5       U l        Ub  U R                  U5      U l        [        U R	                  5       S9U l        g )N)Úoptions)Ú_get_default_optionsr.   Ú_merge_optionsr   Ú_get_sig_optionsÚ_jws©Úselfr.   s     ÚE/var/www/html/gaurav/venv/lib/python3.13/site-packages/jwt/api_jwt.pyÚ__init__ÚPyJWT.__init__+   sB   € ÙØ×0Ñ0Ó2ˆŒØÑØ×.Ñ.¨wÓ7ˆDŒLä $×"7Ñ"7Ó"9Ñ:ˆ�	ó    c                 ó   • SSSSSSSS/ SS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© rE   r8   r5   r/   ÚPyJWT._get_default_options3   s/   € ð !%ØØØØØØØØØØ*/ñ
ð 	
r8   c                óZ   • U R                   S   U R                   R                  SS5      S.$ )Nr:   rD   F©r:   rD   ©r.   Úget)r4   s    r5   r1   ÚPyJWT._get_sig_optionsC   s0   € à $§¡Ð-?Ñ @Ø*.¯,©,×*:Ñ*:Ø,¨eó+ñ
ð 	
r8   c                ó”  • Uc  U R                   $ UR                  SS5      (       d“  UR                  SS5      US'   UR                  SS5      US'   UR                  SS5      US'   UR                  SS5      US'   UR                  SS5      US'   UR                  S	S5      US	'   UR                  S
S5      US
'   0 U R                   EUE$ )Nr:   Tr;   Fr<   r=   r>   r?   r@   rA   rI   r3   s     r5   r0   ÚPyJWT._merge_optionsK   sÌ   € Ø‰?Ø—<‘<Ðð �{‰{Ð-¨t×4Ñ4Ø$+§K¡K°¸eÓ$DˆG�LÑ!Ø$+§K¡K°¸eÓ$DˆG�LÑ!Ø$+§K¡K°¸eÓ$DˆG�LÑ!Ø$+§K¡K°¸eÓ$DˆG�LÑ!Ø$+§K¡K°¸eÓ$DˆG�LÑ!Ø$+§K¡K°¸eÓ$DˆG�LÑ!Ø$+§K¡K°¸eÓ$DˆG�LÑ!Ø*�$—,‘,Ð* 'Ð*Ð*r8   Tc           	     óª  • [        U[        5      (       d  [        S5      eUR                  5       nS HF  n[        UR	                  U5      [
        5      (       d  M)  [        X   R                  5       5      X'   MH     SU;   a#  [        US   [        5      (       d  [        S5      eU R                  UUUS9nU R                  R                  UUUUUUS9$ )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.)ÚheadersÚjson_encoder)Úsort_headers)Ú
isinstanceÚdictÚ	TypeErrorÚcopyrJ   r   r   ÚutctimetupleÚstrÚ_encode_payloadr2   Úencode)	r4   ÚpayloadÚkeyÚ	algorithmrS   rT   rU   Ú
time_claimÚjson_payloads	            r5   r]   ÚPyJWT.encodeZ   sÞ   € ôD ˜'¤4×(Ñ(Üð,óð ð —,‘,“.ˆÛ/ˆJä˜'Ÿ+™+ jÓ1´8×<Ó<Ü&,¨WÑ-@×-MÑ-MÓ-OÓ&P�Ó#ñ 0ð �GÓ¤J¨w°u©~¼s×$CÑ$CÜÐ<Ó=Ð=à×+Ñ+ØØØ%ð ,ð 
ˆð �y‰y×ÑØØØØØØ%ð  ð 
ð 	
r8   c                óL   • [         R                  " USUS9R                  S5      $ )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Údumpsr]   )r4   r^   rS   rT   s       r5   r\   ÚPyJWT._encode_payloadœ   s)   € ô �zŠzØØ!Øñ
÷ ‰&�‹/ð		r8   c           	     óÊ  • U(       a4  [         R                  " S[        UR                  5       5       3[        SS9  Uc  SnOUR                  SS5      nUb  X\:w  a  [         R                  " S[        SS9  U R                  U5      nUUR                  SS	5      S
.nU R                  R                  UUUUUS9nU R                  U5      nU R                  UUUUU
U	S9  UUS'   U$ )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: é   ©Ú
stacklevelTr:   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.)Úcategoryro   rD   FrH   )r_   Ú
algorithmsr.   Údetached_payload)ÚaudienceÚissuerÚleewayÚsubjectr^   )ÚwarningsÚwarnÚtupleÚkeysr   rJ   ÚDeprecationWarningr0   r2   Údecode_completeÚ_decode_payloadÚ_validate_claims)r4   Újwtr_   rq   r.   Úverifyrr   rs   rt   rv   ru   Úkwargsr:   Úmerged_optionsÚsig_optionsÚdecodedr^   s                    r5   r|   ÚPyJWT.decode_complete®   s   € ör Ü�MŠMð'ä',¨V¯[©[«]Ó';Ð&<ð>ô 'Øòð ‰?Ø#Ñà&Ÿ{™{Ð+=¸tÓDÐð
 Ñ &Ó"<Ü�MŠMðYô ,Øòð ×,Ñ,¨WÓ5ˆð !1Ø*8×*<Ñ*<Ø,¨eó+ñ#
ˆð —)‘)×+Ñ+ØØØ!ØØ-ð ,ð 
ˆð ×&Ñ& wÓ/ˆà×ÑØØØØØØð 	ñ 	
ð %ˆ�	ÑØˆr8   c                ó¼   •  [         R                  " US   5      n[	        U[
        5      (       d  [        S5      eU$ ! [         a  n[        SU 35      UeSnAff = f)zÙ
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.
r^   zInvalid payload string: Nz-Invalid payload string: must be a json object)ri   ÚloadsÚ
ValueErrorr   rV   rW   )r4   r„   r^   Úes       r5   r}   ÚPyJWT._decode_payload  sd   € ð	EÜ&*§j¢j°¸Ñ1CÓ&DˆGô ˜'¤4×(Ñ(ÜÐMÓNÐNØˆøô	 ó 	EÜÐ 8¸¸Ð<Ó=À1ÐDûð	Eús   ‚= ½
AÁAÁAc                óè   • U(       a4  [         R                  " S[        UR                  5       5       3[        SS9  U R                  UUUUUUUUU	U
S9
n[        [        [        [        4   US   5      $ )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: rm   rn   )r€   rr   rs   rv   rt   ru   r^   )
rw   rx   ry   rz   r   r|   r   rW   r[   r   )r4   r   r_   rq   r.   r€   rr   rs   rv   rt   ru   r�   r„   s                r5   ÚdecodeÚPyJWT.decode/  sˆ   € ör Ü�MŠMð'ä',¨V¯[©[«]Ó';Ð&<ð>ô 'Øòð ×&Ñ&ØØØØØØ-ØØØØð 'ð 
ˆô ”Dœœc˜‘N G¨IÑ$6Ó7Ð7r8   c                óì  • [        U[        5      (       a  UR                  5       nUb&  [        U[        [        45      (       d  [        S5      eU R                  XS   5        [        R                  " [        R                  S9R                  5       nSU;   a  US   (       a  U R                  XU5        SU;   a  US   (       a  U R                  XU5        SU;   a  US	   (       a  U R                  XU5        US
   (       a  U R                  X5        US   (       a   U R!                  XUR#                  SS5      S9  US   (       a  U R%                  X5        US   (       a  U R'                  U5        g g )Nz+audience must be a string, iterable or NonerB   )ÚtzrP   r=   rQ   r<   rO   r;   r?   r>   rC   F©Ústrictr@   rA   )rV   r	   Útotal_secondsr[   r   rX   Ú_validate_required_claimsr   Únowr
   ÚutcÚ	timestampÚ_validate_iatÚ_validate_nbfÚ_validate_expÚ_validate_issÚ_validate_audrJ   Ú_validate_subÚ_validate_jti)r4   r^   r.   rs   rt   rv   ru   r”   s           r5   r~   ÚPyJWT._validate_claims~  s@  € ô �fœi×(Ñ(Ø×)Ñ)Ó+ˆFàÑ¬
°8¼cÄ8¸_×(MÑ(MÜÐIÓJÐJà×&Ñ& w¸	Ñ0BÔCä�lŠlœhŸl™lÑ+×5Ñ5Ó7ˆà�GÓ ¨× 5Ø×Ñ˜w¨VÔ4à�GÓ ¨× 5Ø×Ñ˜w¨VÔ4à�GÓ ¨× 5Ø×Ñ˜w¨VÔ4à�<× Ø×Ñ˜wÔ/à�<× Ø×ÑØ¨'¯+©+°lÀEÓ*Jð ñ ð �<× Ø×Ñ˜wÔ0à�<× Ø×Ñ˜wÕ'ð !r8   c                óP   • U H   nUR                  U5      b  M  [        U5      e   g ©N)rJ   r   )r4   r^   ÚclaimsÚclaims       r5   r“   ÚPyJWT._validate_required_claims¨  s(   € ó
 ˆEØ�{‰{˜5Ó!Ó)Ü/°Ó6Ð6ò r8   c                ó    • SU;  a  g[        US   [        5      (       d  [        S5      eUb!  UR                  S5      U:w  a  [        S5      egg)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)rV   r[   r   rJ   )r4   r^   rv   s      r5   rœ   ÚPyJWT._validate_sub±  sY   € ð ˜ÓØä˜' %™.¬#×.Ñ.Ü%Ð&@ÓAÐAàÑØ�{‰{˜5Ó! WÓ,Ü)Ð*;Ó<Ð<ð -ð r8   c                óp   • SU;  a  g[        UR                  S5      [        5      (       d  [        S5      eg)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)rV   rJ   r[   r   )r4   r^   s     r5   r�   ÚPyJWT._validate_jtiÆ  s6   € ð ˜ÓØä˜'Ÿ+™+ eÓ,¬c×2Ñ2Ü!Ð";Ó<Ð<ð 3r8   c                ó|   •  [        US   5      nXBU-   :”  a  [        S5      eg ! [         a    [        S5      S ef = f)NrP   z)Issued At claim (iat) must be an integer.z The token is not yet valid (iat))Úintrˆ   r   r   )r4   r^   r”   ru   rP   s        r5   r—   ÚPyJWT._validate_iatÔ  sV   € ð	Ü�g˜e‘nÓ%ˆCð
 ˜‘,ÓÜ(Ð)KÓLÐLð  øô	 ó 	Ü&Ø;óàðð	úó   ‚$ ¤;c                ó|   •  [        US   5      nXBU-   :”  a  [        S5      eg ! [         a    [        S5      S ef = f)NrQ   z*Not Before claim (nbf) must be an integer.z The token is not yet valid (nbf))r«   rˆ   r   r   )r4   r^   r”   ru   rQ   s        r5   r˜   ÚPyJWT._validate_nbfã  sU   € ð	VÜ�g˜e‘nÓ%ˆCð ˜‘,ÓÜ(Ð)KÓLÐLð  øô ó 	VÜÐJÓKÐQUÐUð	Vúr­   c                ó|   •  [        US   5      nXBU-
  ::  a  [        S5      eg ! [         a    [        S5      S ef = f)NrO   z/Expiration Time claim (exp) must be an integer.zSignature has expired)r«   rˆ   r   r   )r4   r^   r”   ru   rO   s        r5   r™   ÚPyJWT._validate_expñ  sV   € ð	Ü�g˜e‘nÓ%ˆCð ˜‘<Ó Ü'Ð(?Ó@Ð@ð !øô ó 	ÜØAóàðð	úr­   Fr�   c               ód  ^• Uc  SU;  d
  US   (       d  g [        S5      eSU;  d
  US   (       d  [        S5      eUS   mU(       aR  [        U[        5      (       d  [        S5      e[        T[        5      (       d  [        S5      eUT:w  a  [        S5      eg [        T[        5      (       a  T/m[        T[        5      (       d  [        S5      e[        S T 5       5      (       a  [        S5      e[        U[        5      (       a  U/n[        U4S jU 5       5      (       a  [        S	5      eg )
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  óJ   #   • U H  n[        U[        5      (       + v •  M     g 7fr    )rV   r[   )Ú.0Úcs     r5   Ú	<genexpr>Ú&PyJWT._validate_aud.<locals>.<genexpr>*  s   é € Ð?©¨!”:˜a¤Ó%×%Ñ%ªùs   ‚!#c              3  ó*   >#   • U H	  oT;  v •  M     g 7fr    rE   )rµ   r³   Úaudience_claimss     €r5   r·   r¸   0  s   øé € Ð>±X¨c˜/Ö)²Xùs   ƒzAudience doesn't match)r   r   rV   r[   ÚlistÚanyÚall)r4   r^   rs   r‘   rº   s       @r5   r›   ÚPyJWT._validate_aud  s  ø€ ð ÑØ˜GÓ#¨7°5¯>Øô 'Ð'9Ó:Ð:à˜Ó w¨u§~ô ,¨EÓ2Ð2à! %™.ˆö ä˜h¬×,Ñ,Ü*Ð+FÓGÐGô ˜o¬s×3Ñ3Ü*Ð+SÓTÐTà˜?Ó*Ü*Ð+LÓMÐMàä�o¤s×+Ñ+Ø.Ð/ˆOÜ˜/¬4×0Ñ0Ü&Ð'FÓGÐGÜÑ?©Ó?×?Ñ?Ü&Ð'FÓGÐGä�h¤×$Ñ$Ø �zˆHäÔ>±XÓ>×>Ñ>Ü&Ð'?Ó@Ð@ð ?r8   c                ó  • Uc  g SU;  a  [        S5      eUS   n[        U[        5      (       d  [        S5      e[        U[        5      (       a  X2:w  a  [        S5      eg  X2;  a  [        S5      eg ! [         a    [        S5      S ef = f)NrR   z%Payload Issuer (iss) must be a stringzInvalid issuerz.Issuer param must be "str" or "Container[str]")r   rV   r[   r   rX   )r4   r^   rt   rR   s       r5   rš   ÚPyJWT._validate_iss3  s¢   € ð ‰>Øà˜ÓÜ+¨EÓ2Ð2à�e‰nˆÜ˜#œs×#Ñ#Ü$Ð%LÓMÐMä�fœc×"Ñ"Ø‹}Ü(Ð)9Ó:Ð:ð ðØÓ$Ü,Ð-=Ó>Ð>ð %øäó Ü(ØDóàððús   Á"A3 Á3B
)r2   r.   r    )r.   úOptions | NoneÚreturnÚNone)rÂ   r%   )rÂ   r'   )r.   rÁ   rÂ   r%   )r^   údict[str, Any]r_   r(   r`   ú
str | NonerS   údict[str, Any] | NonerT   útype[json.JSONEncoder] | NonerU   ÚboolrÂ   r[   )NN)r^   rÄ   rS   rÆ   rT   rÇ   rÂ   Úbytes)	r   NNNNNNNr   )r   ústr | bytesr_   r)   rq   úSequence[str] | Noner.   rÁ   r€   úbool | Nonerr   úbytes | Noners   ústr | Iterable[str] | Nonert   ústr | Container[str] | Nonerv   rÅ   ru   úfloat | timedeltar�   r   rÂ   rÄ   )r„   rÄ   rÂ   rÄ   )r   rÊ   r_   z'AllowedPublicKeys | PyJWK | str | bytesrq   rË   r.   rÁ   r€   rÌ   rr   rÍ   rs   rÎ   rv   rÅ   rt   rÏ   ru   rÐ   r�   r   rÂ   rÄ   )NNNr   )r^   rÄ   r.   r%   rs   zIterable[str] | str | Nonert   úContainer[str] | str | Nonerv   rÅ   ru   rÐ   rÂ   rÃ   )r^   rÄ   r¡   zIterable[str]rÂ   rÃ   )r^   rÄ   rv   rÅ   rÂ   rÃ   )r^   rÄ   rÂ   rÃ   )r^   rÄ   r”   Úfloatru   rÒ   rÂ   rÃ   )r^   rÄ   rs   rÎ   r‘   rÈ   rÂ   rÃ   )r^   rÄ   rt   rÑ   rÂ   rÃ   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r6   Ústaticmethodr/   r1   r0   r   r]   r\   r|   r}   rŒ   r~   r“   rœ   r�   r—   r˜   r™   r›   rš   Ú__static_attributes__rE   r8   r5   r+   r+   *   s‘  † ö;ð ó
ó ð
ô
ö+ð& !1Ø)-Ø6:Ø!ð@
àð@
ð $ð@
ð ð	@
ð
 'ð@
ð 4ð@
ð ð@
ð 
õ@
ðJ *.Ø6:ð	àðð 'ðð 4ð	ð
 
õð* &(Ø+/Ø"&à"à)-ð 04Ø.2Ø"Ø$%ðoàðoð #ðoð )ð	oð
  ðoð ðoð 'ðoð -ðoð ,ðoð ðoð "ðoð" ð#oð$ 
õ%oôbð& 8:Ø+/Ø"&à"à)-ð 04Ø"Ø.2Ø$%ðM8àðM8ð 5ðM8ð )ð	M8ð
  ðM8ð ðM8ð 'ðM8ð -ðM8ð ðM8ð ,ðM8ð "ðM8ð" ð#M8ð$ 
õ%M8ðf 04Ø.2Ø"Ø$%ð((àð((ð ð((ð -ð	((ð
 ,ð((ð ð((ð "ð((ð 
õ((ðT7àð7ð ð7ð 
ô	7ð >Bð=Ø%ð=Ø0:ð=à	õ=ô*=ðMàðMð ðMð ð	Mð
 
ôMðMàðMð ðMð ð	Mð
 
ôMðAàðAð ðAð ð	Að
 
ôAð* ñ0Aàð0Að -ð0Að
 ð0Að 
õ0AðdØ%ðØ/Jðà	÷r8   r+   )<Ú
__future__r   ri   Úosrw   Ú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   rÈ   ÚgetenvÚsysÚversion_infor!   Útyping_extensionsrq   r"   r#   Úapi_jwkr$   Útypesr%   r&   r'   r[   rÉ   r(   Ú__annotations__r)   r+   Ú_jwt_global_objr2   r]   r|   rŒ   rE   r8   r5   Ú<module>rè      sð   ðÞ "ã Û 	Û Ý ß 9Ñ 9ß 2Ñ 2ß 2Ó 2ç =Ñ =÷
÷ 
õ 
õ -æ‘D˜Ÿš >°2Ó6×7Ñ7Ûà
×Ñ˜7Ó"Þ$õ 	0çAÝß7Ñ7à(-Ð.@À%ÈÈeÐ.SÑ(TÐ˜IÓTØ',Ð->ÀÀsÈEÐ-QÑ'RÐ˜9ÓR÷`ñ `ñF “'€Ø&€Ô Ø	×	Ñ	€Ø!×1Ñ1€Ø	×	Ñ	�r8   