Ë
    ¦2ÚiÈ  ã                   óÖ   — d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZ  G d„ dej                  «      Z G d	„ d
ej                   «      Z G d„ d«      Z G d„ de«      Zy)é    N)Úsettings)ÚBaseStorageÚMessage)Úsigning)ÚSimpleCookie)ÚSafeDataÚ	mark_safec                   ó&   ‡ — e Zd ZdZdZˆ fd„Zˆ xZS )ÚMessageEncoderzI
    Compactly serialize instances of the ``Message`` class as JSON.
    Ú__json_messagec                 ó  •— t        |t        «      rkt        |j                  t        «      rdnd}| j                  ||j
                  |j                  g}|j                  �|j                  |j                  «       |S t        ‰| �%  |«      S )Né   r   )
Ú
isinstancer   Úmessager   Úmessage_keyÚlevelÚ
extra_tagsÚappendÚsuperÚdefault)ÚselfÚobjÚis_safedatar   Ú	__class__s       €ú]/var/www/html/acx/venv/lib/python3.12/site-packages/django/contrib/messages/storage/cookie.pyr   zMessageEncoder.default   sk   ø€ Ü�cœ7Ô#ä)¨#¯+©+´xÔ@™!ÀaˆKØ×'Ñ'¨°c·i±iÀÇÁÐMˆGØ�~‰~Ð)Ø—‘˜sŸ~™~Ô.ØˆNÜ‰w‰˜sÓ#Ð#ó    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__classcell__©r   s   @r   r   r      s   ø„ ñð #€K÷$ð $r   r   c                   ó(   ‡ — e Zd ZdZd„ Zˆ fd„Zˆ xZS )ÚMessageDecoderzE
    Decode JSON that includes serialized ``Message`` instances.
    c                 ór  — t        |t        «      rX|rV|d   t        j                  k(  r!|d   rt	        |d   «      |d<   t        |dd  Ž S |D �cg c]  }| j                  |«      ‘Œ c}S t        |t        «      r3|j                  «       D ��ci c]  \  }}|| j                  |«      “Œ c}}S |S c c}w c c}}w )Nr   r   é   é   )	r   Úlistr   r   r	   r   Úprocess_messagesÚdictÚitems)r   r   ÚitemÚkeyÚvalues        r   r)   zMessageDecoder.process_messages"   s©   € Ü�cœ4Ô ¡SØ�1‰vœ×3Ñ3Ò3Ø�q’6Ü& s¨1¡vÓ.�C˜‘FÜ  A B Ð(Ð(Ø<?Ö@°D�D×)Ñ)¨$Õ/Ò@Ð@Ü�cœ4Ô ØHKÏ	É	Ë×T¹*¸#¸u�C˜×.Ñ.¨uÓ5Ñ5ÓTÐTØˆ
ùò AùãTs   ÁB.ÂB3c                 óF   •— t        ‰| �  |fi |¤Ž}| j                  |«      S )N)r   Údecoder)   )r   ÚsÚkwargsÚdecodedr   s       €r   r0   zMessageDecoder.decode-   s'   ø€ Ü‘'‘. Ñ- fÑ-ˆØ×$Ñ$ WÓ-Ð-r   )r   r   r   r    r)   r0   r!   r"   s   @r   r$   r$      s   ø„ ñò	÷.ð .r   r$   c                   ó   — e Zd Zd„ Zd„ Zy)ÚMessageSerializerc                 óX   — t        j                  |dt        ¬«      j                  d«      S )N)ú,ú:)Ú
separatorsÚclsúlatin-1)ÚjsonÚdumpsr   Úencode)r   r   s     r   r=   zMessageSerializer.dumps3   s(   € Ü�z‰zØØ!Üô
÷ ‰&�Ó
ð		r   c                 óV   — t        j                  |j                  d«      t        ¬«      S )Nr;   )r:   )r<   Úloadsr0   r$   ©r   Údatas     r   r@   zMessageSerializer.loads:   s   € Ü�z‰z˜$Ÿ+™+ iÓ0´nÔEÐEr   N)r   r   r   r=   r@   © r   r   r5   r5   2   s   „ òóFr   r5   c                   óT   ‡ — e Zd ZdZdZdZdZdZˆ fd„Zd„ Z	d„ Z
dd	„Zdd
„Zd„ Zˆ xZS )ÚCookieStoragez%
    Store messages in a cookie.
    Úmessagesi   Ú__messagesnotfinished__zdjango.contrib.messagesc                 ón   •— t        ‰| �  |i |¤Ž t        j                  | j                  ¬«      | _        y )N)Úsalt)r   Ú__init__r   Úget_cookie_signerÚkey_saltÚsigner)r   Úargsr2   r   s      €r   rJ   zCookieStorage.__init__K   s+   ø€ Ü‰Ñ˜$Ð) &Ò)Ü×/Ñ/°T·]±]ÔCˆ�r   c                 óà   — | j                   j                  j                  | j                  «      }| j	                  |«      }|xr |d   | j
                  k(   }|r|s|j                  «        ||fS )a
  
        Retrieve a list of messages from the messages cookie. If the
        not_finished sentinel value is found at the end of the message list,
        remove it and return a result indicating that not all messages were
        retrieved by this storage.
        éÿÿÿÿ)ÚrequestÚCOOKIESÚgetÚcookie_nameÚ_decodeÚnot_finishedÚpop)r   rN   r2   rB   rF   Úall_retrieveds         r   Ú_getzCookieStorage._getO   sg   € ð �|‰|×#Ñ#×'Ñ'¨×(8Ñ(8Ó9ˆØ—<‘< Ó%ˆØ%ÒK¨(°2©,¸$×:KÑ:KÑ*KÐLˆÙ™Mà�L‰LŒNØ˜Ð&Ð&r   c                 ó@  — |rb|j                  | j                  |t        j                  t        j                  xs dt        j
                  xs dt        j                  ¬«       y|j                  | j                  t        j                  t        j                  ¬«       y)zz
        Either set the cookie with the encoded data if there is any data to
        store, or delete the cookie.
        N)ÚdomainÚsecureÚhttponlyÚsamesite)r[   r^   )Ú
set_cookierT   r   ÚSESSION_COOKIE_DOMAINÚSESSION_COOKIE_SECUREÚSESSION_COOKIE_HTTPONLYÚSESSION_COOKIE_SAMESITEÚdelete_cookie)r   Úencoded_dataÚresponses      r   Ú_update_cookiezCookieStorage._update_cookie^   s„   € ñ
 Ø×ÑØ× Ñ ØÜ×5Ñ5Ü×5Ñ5Ò=¸Ü!×9Ñ9ÒA¸TÜ!×9Ñ9ð  õ ð ×"Ñ"Ø× Ñ Ü×5Ñ5Ü!×9Ñ9ð #õ r   c                 ó®  ‡	— g }| j                  |«      }| j                  r¢t        «       Š	ˆ	fd„}|r‘ ||«      | j                  kD  r||r!|j                  |j	                  d«      «       n |j                  d|j	                  «       «       | j                  || j                  gz   |¬«      }|r ||«      | j                  kD  rŒ|| j                  ||«       |S )aT  
        Store the messages to a cookie and return a list of any messages which
        could not be stored.

        If the encoded data is larger than ``max_cookie_size``, remove
        messages until the data fits (these are the messages which are
        returned), and add the not_finished sentinel value to indicate as much.
        c                 ó>   •— t        ‰j                  | «      d   «      S )Nr   )ÚlenÚvalue_encode)ÚvalÚcookies    €r   Ústored_lengthz+CookieStorage._store.<locals>.stored_lengthƒ   s   ø€ Ü˜6×.Ñ.¨sÓ3°AÑ6Ó7Ð7r   r   )Úencode_empty)Ú_encodeÚmax_cookie_sizer   r   rW   ÚinsertrV   rg   )
r   rF   rf   Úremove_oldestrN   r2   Úunstored_messagesre   rn   rm   s
            @r   Ú_storezCookieStorage._stores   sÌ   ø€ ð ÐØ—|‘| HÓ-ˆØ×Òô "“^ˆFô8ñ ¡=°Ó#>À×AUÑAUÒ#UÙ Ø%×,Ñ,¨X¯\©\¸!«_Õ=à%×,Ñ,¨Q°·±³Ô?Ø#Ÿ|™|Ø × 1Ñ 1Ð2Ñ2ÐARð  ,ó  �ñ ¡=°Ó#>À×AUÑAUÓ#Uð 	×Ñ˜L¨(Ô3Ø Ð r   c                 óP   — |s|r"| j                   j                  |t        d¬«      S y)a  
        Return an encoded version of the messages list which can be stored as
        plain text.

        Since the data will be retrieved from the client-side, the encoded data
        also contains a hash to ensure that the data was not tampered with.
        T)Ú
serializerÚcompressN)rM   Úsign_objectr5   )r   rF   ro   s      r   rp   zCookieStorage._encode‘   s2   € ñ ‘|Ø—;‘;×*Ñ*ØÔ%6Àð +ó ð ð $r   c                 óÊ   — |sy	 | j                   j                  |t        ¬«      S # t        j                  t
        j                  t        j                  f$ r
 Y d| _	        yw xY w)zÄ
        Safely decode an encoded text stream back into a list of messages.

        If the encoded text stream contained an invalid hash or was in an
        invalid format, return None.
        N)rw   T)
rM   Úunsign_objectr5   r   ÚBadSignatureÚbinasciiÚErrorr<   ÚJSONDecodeErrorÚusedrA   s     r   rU   zCookieStorage._decodež   s_   € ñ Øð	Ø—;‘;×,Ñ,¨TÔ>OÐ,ÓPÐPøÜ×$Ñ$¤h§n¡n´d×6JÑ6JÐKò 	Øð ˆŒ	Øð	ús   … & ¦2A"Á!A")T)F)r   r   r   r    rT   rq   rV   rL   rJ   rY   rg   ru   rp   rU   r!   r"   s   @r   rE   rE   >   s?   ø„ ñð €Kð €OØ,€LØ(€HôDò'òó*!ó<ör   rE   )r}   r<   Údjango.confr   Ú$django.contrib.messages.storage.baser   r   Údjango.corer   Údjango.httpr   Údjango.utils.safestringr   r	   ÚJSONEncoderr   ÚJSONDecoderr$   r5   rE   rC   r   r   ú<module>rˆ      sX   ðÛ Û å  ß EÝ Ý $ß 7ô$�T×%Ñ%ô $ô$.�T×%Ñ%ô .÷*	Fñ 	Fôp�Kõ pr   