+
    @žÀj¯%  ã                  óâ   € ^ RI Ht ^ RIHt ^ RIt^ RIt^ RIt^RI	H
t
 ^RI	Ht ^RI	Ht ^RI	Ht ^RIHt  ! R R	4      t ! R
 R]4      tRR R llt ! R R]4      tR R lt ! R R4      tR# )é    )ÚannotationsN)Ú_base64_alphabet)Úbase64_decode)Úbase64_encode)Ú
want_bytes)ÚBadSignaturec                  ó2   € ] tR t^tRtR R ltR R ltRtR# )ÚSigningAlgorithmz_Subclasses must implement :meth:`get_signature` to provide
signature generation functionality.
c               ó$   € V ^8„  d   QhRRRRRR/# ©é   ÚkeyÚbytesÚvalueÚreturn© )Úformats   "Úg/var/www/html/mycamper/aliexpress-site/backend/venv/lib/python3.14/site-packages/itsdangerous/signer.pyÚ__annotate__ÚSigningAlgorithm.__annotate__   s!   € ÷ $ñ $ ð $¨uð $¸ñ $ó    c                ó   € \        4       h)z2Returns the signature for the given key and value.)ÚNotImplementedError©Úselfr   r   s   &&&r   Úget_signatureÚSigningAlgorithm.get_signature   s   € ä!Ó#Ð#r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r   r   r   Úsigr   Úboolr   )r   s   "r   r   r      s.   € ÷ Hñ H Eð H°%ð H¸eð HÈñ Hr   c                óL   € \         P                  ! W0P                  W4      4      # )z=Verifies the given signature matches the expected
signature.
)ÚhmacÚcompare_digestr   )r   r   r   r   s   &&&&r   Úverify_signatureÚ!SigningAlgorithm.verify_signature   s    € ô ×"Ò" 3×(:Ñ(:¸3Ó(FÓGÐGr   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r$   Ú__static_attributes__r   r   r   r
   r
      s   † ñõ$÷Hñ Hr   r
   c                  ó&   € ] tR t^tRtR R ltRtR# )ÚNoneAlgorithmzXProvides an algorithm that does not perform any signing and
returns an empty signature.
c               ó$   € V ^8„  d   QhRRRRRR/# r   r   )r   s   "r   r   ÚNoneAlgorithm.__annotate__$   s!   € ÷ ñ  ð ¨uð ¸ñ r   c                	ó   € R # ©r   r   r   s   &&&r   r   ÚNoneAlgorithm.get_signature$   s   € Ùr   r   N)r&   r'   r(   r)   r*   r   r+   r   r   r   r-   r-      s   † ñ÷ñ r   r-   c               ó    € V ^8„  d   QhRRRR/# )r   Ústringr   r   út.Anyr   )r   s   "r   r   r   (   s   € ÷  ñ  �uð   uñ  r   c                ó.   € \         P                  ! V 4      # )z¼Don't access ``hashlib.sha1`` until runtime. FIPS builds may not include
SHA-1, in which case the import and use as a default would fail before the
developer can configure something else.
)ÚhashlibÚsha1)r4   s   &r   Ú
_lazy_sha1r9   (   s   € ô
 �<Š<˜ÓÐr   c                  óR   € ] tR t^0t$ Rt]! ]4      tR]R&   R
R R llt	R R lt
R	tR# )ÚHMACAlgorithmz*Provides signature generation using HMACs.r5   Údefault_digest_methodNc               ó   € V ^8„  d   QhRR/# )r   Údigest_methodr5   r   )r   s   "r   r   ÚHMACAlgorithm.__annotate__8   s   € ÷ 2ñ 2 eñ 2r   c                	ó2   € Vf   V P                   pWn        R # ©N)r<   r>   )r   r>   s   &&r   Ú__init__ÚHMACAlgorithm.__init__8   s   € ØÒ Ø ×6Ñ6ˆMà$1Ör   c               ó$   € V ^8„  d   QhRRRRRR/# r   r   )r   s   "r   r   r?   >   s!   € ÷ ñ  ð ¨uð ¸ñ r   c                	óf   € \         P                  ! WV P                  R 7      pVP                  4       # ))ÚmsgÚ	digestmod)r"   Únewr>   Údigest)r   r   r   Úmacs   &&& r   r   ÚHMACAlgorithm.get_signature>   s$   € Ü�hŠh�s°×1CÑ1CÔDˆØ�z‰z‹|Ðr   )r>   rA   )r&   r'   r(   r)   r*   Ústaticmethodr9   r<   Ú__annotations__rB   r   r+   r   r   r   r;   r;   0   s&   ‡ Ù4ñ
 $0°
Ó#;Ð˜5Ó;÷2÷ñ r   r;   c               ó    € V ^8„  d   QhRRRR/# )r   Ú
secret_keyú7str | bytes | cabc.Iterable[str] | cabc.Iterable[bytes]r   zlist[bytes]r   )r   s   "r   r   r   C   s   € ÷ /ñ /ØGð/àñ/r   c                ó’   € \        V \        \        34      '       d   \        V 4      .# V  Uu. uF  p\        V4      NK  	  up# u upi rA   )Ú
isinstanceÚstrr   r   )rO   Úss   & r   Ú_make_keys_listrU   C   s?   € ô �*œs¤E˜l×+Ò+Ü˜:Ó&Ð'Ð'á#-Ó.¡:˜aŒJ�qŽM¡:Ñ.Ð.ùÒ.s   ­Ac                  ó¶   € ] tR t^Lt$ Rt]! ]4      tR]R&   Rt	R]R&   RR R	 llt
]R
 R l4       tRR R lltR R ltR R ltR R ltR R ltR R ltRtR# )ÚSignera^  A signer securely signs bytes, then unsigns them to verify that
the value hasn't been changed.

The secret key should be a random string of ``bytes`` and should not
be saved to code or version control. Different salts should be used
to distinguish signing in different contexts. See :doc:`/concepts`
for information about the security of the secret key and salt.

:param secret_key: The secret key to sign and verify with. Can be a
    list of keys, oldest to newest, to support key rotation.
:param salt: Extra key to combine with ``secret_key`` to distinguish
    signatures in different contexts.
:param sep: Separator between the signature and value.
:param key_derivation: How to derive the signing key from the secret
    key and salt. Possible values are ``concat``, ``django-concat``,
    or ``hmac``. Defaults to :attr:`default_key_derivation`, which
    defaults to ``django-concat``.
:param digest_method: Hash function to use when generating the HMAC
    signature. Defaults to :attr:`default_digest_method`, which
    defaults to :func:`hashlib.sha1`. Note that the security of the
    hash alone doesn't apply when used intermediately in HMAC.
:param algorithm: A :class:`SigningAlgorithm` instance to use
    instead of building a default :class:`HMACAlgorithm` with the
    ``digest_method``.

.. versionchanged:: 2.0
    Added support for key rotation by passing a list to
    ``secret_key``.

.. versionchanged:: 0.18
    ``algorithm`` was added as an argument to the class constructor.

.. versionchanged:: 0.14
    ``key_derivation`` and ``digest_method`` were added as arguments
    to the class constructor.
r5   r<   údjango-concatrS   Údefault_key_derivationNc               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r   rO   rP   Úsaltústr | bytes | NoneÚsepústr | bytesÚkey_derivationz
str | Noner>   zt.Any | NoneÚ	algorithmzSigningAlgorithm | Noner   )r   s   "r   r   ÚSigner.__annotate__�   sF   € ÷ ,5ñ ,5àKð,5ð !ð,5ð ð	,5ð
 #ð,5ð $ð,5ð +ñ,5r   c                	óL  € \        V4      V n        \        V4      V n        V P                  \        9   d   \        R 4      hVe   \        V4      pMRpW n        Vf   V P                  pW@n        Vf   V P                  pWPn
        Vf   \        V P                  4      pW`n        R# )zŠThe given separator cannot be used because it may be contained in the signature itself. ASCII letters, digits, and '-_=' must not be used.Nó   itsdangerous.Signer)rU   Úsecret_keysr   r]   r   Ú
ValueErrorr[   rY   r_   r<   r>   r;   r`   )r   rO   r[   r]   r_   r>   r`   s   &&&&&&&r   rB   ÚSigner.__init__�   s    € ô )8¸
Ó(CˆÔÜ$ S›/ˆŒà�8‰8Ô'Ô'Üð7óð ð ÒÜ˜dÓ#‰Dà)ˆDàŒ	àÒ!Ø!×8Ñ8ˆNà#1ÔàÒ Ø ×6Ñ6ˆMà$1ÔàÒÜ% d×&8Ñ&8Ó9ˆIà+4Žr   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   ra   °   s   € ÷ $ñ $˜Eñ $r   c                ó(   € V P                   R,          # )zThe newest (last) entry in the :attr:`secret_keys` list. This
is for compatibility from before key rotation support was added.
éÿÿÿÿ)rd   )r   s   &r   rO   ÚSigner.secret_key¯   s   € ð
 ×Ñ Õ#Ð#r   c               ó    € V ^8„  d   QhRRRR/# )r   rO   r\   r   r   r   )r   s   "r   r   ra   ¶   s   € ÷ =ñ =Ð%7ð =À5ñ =r   c                ó´  € Vf   V P                   R,          pM\        V4      pV P                  R8X  dJ   \        P                  ! \
        V P                  V P                  V,           4      P                  4       4      # V P                  R8X  dQ   \        P                  ! \
        V P                  V P                  R,           V,           4      P                  4       4      # V P                  R8X  dM   \        P                  ! WP                  R7      pVP                  V P                  4       VP                  4       # V P                  R8X  d   V# \        R4      h)	a´  This method is called to derive the key. The default key
derivation choices can be overridden here. Key derivation is not
intended to be used as a security method to make a complex key
out of a short password. Instead you should use large random
secret keys.

:param secret_key: A specific secret key to derive from.
    Defaults to the last item in :attr:`secret_keys`.

.. versionchanged:: 2.0
    Added the ``secret_key`` parameter.
ÚconcatrX   s   signerr"   )rG   ÚnonezUnknown key derivation methodri   )rd   r   r_   ÚtÚcastr   r>   r[   rI   r"   rH   ÚupdateÚ	TypeError)r   rO   rJ   s   && r   Ú
derive_keyÚSigner.derive_key¶   s  € ð ÒØ×)Ñ)¨"Õ-‰Jä# JÓ/ˆJà×Ñ (Ô*Ü—6’6œ% ×!3Ñ!3°D·I±IÀ
Õ4JÓ!K×!RÑ!RÓ!TÓUÐUØ× Ñ  OÔ3Ü—6’6Ü�t×)Ñ)¨$¯)©)°iÕ*?À*Õ*LÓM×TÑTÓVóð ð × Ñ  FÔ*Ü—(’(˜:×1CÑ1CÔDˆCØ�J‰J�t—y‘yÔ!Ø—:‘:“<ÐØ× Ñ  FÔ*ØÐäÐ;Ó<Ð<r   c               ó    € V ^8„  d   QhRRRR/# ©r   r   r^   r   r   r   )r   s   "r   r   ra   ×   s   € ÷ "ñ " ;ð "°5ñ "r   c                ó„   € \        V4      pV P                  4       pV P                  P                  W!4      p\	        V4      # )z*Returns the signature for the given value.)r   rs   r`   r   r   )r   r   r   r   s   &&  r   r   ÚSigner.get_signature×   s7   € ä˜5Ó!ˆØ�o‰oÓˆØ�n‰n×*Ñ*¨3Ó6ˆÜ˜SÓ!Ð!r   c               ó    € V ^8„  d   QhRRRR/# rv   r   )r   s   "r   r   ra   Þ   s   € ÷ <ñ <˜+ð <¨%ñ <r   c                óh   € \        V4      pWP                  ,           V P                  V4      ,           # )zSigns the given string.)r   r]   r   )r   r   s   &&r   ÚsignÚSigner.signÞ   s)   € ä˜5Ó!ˆØ—x‘xÕ $×"4Ñ"4°UÓ";Õ;Ð;r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r^   r   r   r    r   )r   s   "r   r   ra   ã   s!   € ÷ ñ  kð ¸ð Èñ r   c                óü   €  \        V4      p\        T4      p\        T P                  4       F9  pT P                  T4      pT P                  P                  YAT4      '       g   K8   R# 	  R#   \         d     R# i ; i)z+Verifies the signature for the given value.FT)r   Ú	Exceptionr   Úreversedrd   rs   r`   r$   )r   r   r   rO   r   s   &&&  r   r$   ÚSigner.verify_signatureã   ss   € ð	Ü Ó$ˆCô ˜5Ó!ˆä" 4×#3Ñ#3Ö4ˆJØ—/‘/ *Ó-ˆCà�~‰~×.Ñ.¨s¸3×?Ô?Úñ	 5ñ øô ô 	Úð	ús   ‚A, Á,A;Á:A;c               ó    € V ^8„  d   QhRRRR/# )r   Úsigned_valuer^   r   r   r   )r   s   "r   r   ra   ô   s   € ÷ Oñ O ;ð O°5ñ Or   c                ó   € \        V4      pV P                  V9  d   \        RV P                  : R24      hVP                  V P                  ^4      w  r#V P	                  W#4      '       d   V# \        RV: R2VR7      h)zUnsigns the given string.zNo z found in valuez
Signature z does not match)Úpayload)r   r]   r   Úrsplitr$   )r   rƒ   r   r   s   &&  r   ÚunsignÚSigner.unsignô   st   € ä! ,Ó/ˆà�8‰8˜<Ô'Ü  T§X¡X¡L°Ð@ÓAÐAà!×(Ñ(¨¯©°1Ó5‰
ˆà× Ñ  ×,Ò,ØˆLä˜Z¨¡w¨oÐ>ÈÔNÐNr   c               ó    € V ^8„  d   QhRRRR/# )r   rƒ   r^   r   r    r   )r   s   "r   r   ra     s   € ÷ ñ  [ð °Tñ r   c                óN   €  V P                  V4       R#   \         d     R# i ; i)z^Only validates the given signed value. Returns ``True`` if
the signature exists and is valid.
TF)r‡   r   )r   rƒ   s   &&r   ÚvalidateÚSigner.validate  s(   € ð	Ø�K‰K˜Ô%ÙøÜô 	Úð	ús   ‚ •$£$)r`   r>   r_   r[   rd   r]   )rc   ó   .NNNrA   )r&   r'   r(   r)   r*   rL   r9   r<   rM   rY   rB   ÚpropertyrO   rs   r   r{   r$   r‡   r‹   r+   r   r   r   rW   rW   L   sf   ‡ ñ#ñV $0°
Ó#;Ð˜5Ó;ð #2Ð˜CÓ1÷,5ð\ ô$ó ð$÷=õB"õ<õ
õ"O÷ñ r   rW   r1   )Ú
__future__r   Úcollections.abcÚabcÚcabcr7   r"   Útypingro   Úencodingr   r   r   r   Úexcr   r
   r-   r9   r;   rU   rW   r   r   r   Ú<module>r–      s_   ðÝ "å Û Û Û å &Ý #Ý #Ý  Ý ÷Hñ Hô Ð$ô ÷ ôÐ$ô õ&/÷~ó ~r   