+
    S<Âjƒ  ã                   ó€   € ^ RI t ^ RIHt ^ RIHtHt ^ RIHt Rt ! R R]4      t	 ! R R	]4      t
RR
 ltR tRR ltR# )é    N)ÚStrEnum)ÚSimpleLazyObjectÚempty)Úformat_htmlÚ	csp_noncec                   óF   € ] tR t^tRtRtRtRtRtRt	Rt
RtR	tR
tRtRtRtR# )ÚCSPa¿  
Content Security Policy constants for directive values and special tokens.

These constants represent:
1. Standard quoted string values from the CSP spec (e.g., 'self',
   'unsafe-inline')
2. Special placeholder tokens (NONCE) that get replaced by the middleware

Using this enum instead of raw strings provides better type checking,
autocompletion, and protection against common mistakes like:

- Typos (e.g., 'noone' instead of 'none')
- Missing quotes (e.g., ["self"] instead of ["'self'"])
- Inconsistent quote styles (e.g., ["'self'", ""unsafe-inline""])

Example usage in Django settings:

    SECURE_CSP = {
        "default-src": [CSP.NONE],
        "script-src": [CSP.SELF, CSP.NONCE],
    }

zContent-Security-Policyz#Content-Security-Policy-Report-Onlyz'none'z'report-sample'z'self'z'strict-dynamic'z'unsafe-eval'z'unsafe-hashes'z'unsafe-inline'z'wasm-unsafe-eval'z<CSP_NONCE_SENTINEL>© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚHEADER_ENFORCEÚHEADER_REPORT_ONLYÚNONEÚREPORT_SAMPLEÚSELFÚSTRICT_DYNAMICÚUNSAFE_EVALÚUNSAFE_HASHESÚUNSAFE_INLINEÚWASM_UNSAFE_EVALÚNONCEÚ__static_attributes__r
   ó    ÚP/var/www/html/data_capital/venv/lib/python3.14/site-packages/django/utils/csp.pyr	   r	      sF   † ñð2 /€NØ>Ðð €DØ%€MØ€DØ'€NØ!€KØ%€MØ%€MØ+Ðð
 #„Er   r	   c                   ó<   a a€ ] tR t^8t oRtV 3R ltR tRtVtV ;t	# )Ú	LazyNonceaw  
Lazily generates a cryptographically secure nonce string, for use in CSP
headers.

The nonce is only generated when first accessed (e.g., via string
interpolation or inside a template).

The nonce will evaluate as `True` if it has been generated, and `False` if
it has not. This is useful for third-party Django libraries that want to
support CSP without requiring it.

Example Django template usage with context processors enabled:

    <script {% csp_nonce_attr %}></script>

``{% csp_nonce_attr %}`` will only render the nonce attribute if the nonce
has been evaluated (i.e. accessed) elsewhere in the request/response cycle.

c                ó.   <€ \         SV `  \        4       R # ©N)ÚsuperÚ__init__Úgenerate_nonce)ÚselfÚ	__class__s   &€r   r#   ÚLazyNonce.__init__M   s   ø€ Ü‰ÑœÖ(r   c                ó&   € V P                   \        J# r!   )Ú_wrappedr   )r%   s   &r   Ú__bool__ÚLazyNonce.__bool__P   s   € Ø�}‰}¤EÐ)Ð)r   r
   )
r   r   r   r   r   r#   r*   r   Ú__classdictcell__Ú__classcell__)r&   Ú__classdict__s   @@r   r   r   8   s   ù‡ € ñõ()÷*ò *r   r   c                 óž   € V P                  \        4      pV'       d    TP                  Ve
   RV/R7      # R R7      # Vf   R# \        RV4      # )NÚnonce)ÚattrsÚ z
nonce="{}")ÚgetÚCONTEXT_KEYÚrenderr   )ÚcontextÚmediar0   s   && r   Ú
nonce_attrr8   T   sM   € Ø�K‰KœÓ$€EßØ�|‰|°eÒ6G 7¨EÐ"2ˆ|ÓRÐRÈTˆ|ÓRÐRØ‚}ÙÜ�| UÓ+Ð+r   c                  ó.   € \         P                  ! ^4      # )é   )ÚsecretsÚtoken_urlsafer
   r   r   r$   r$   ]   s   € Ü× Ò  Ó$Ð$r   c                 óœ  € . pV P                  4        EF  w  r4VR9   d   K  VRJ d   RpMß\        V\        4      '       d   \        V4      pM$\        V\        \
        ,          4      '       g   V.p\        P                  V9   ;p'       d5   V'       d-   V Uu. uF  qw\        P                  8X  d   RV R2MTNK!  	  ppM/V'       d(   V Uu. uF  qw\        P                  8w  g   K  VNK  	  ppV'       g   Kæ  RP                  V4      pVP                  V RV 2P                  4       4       EK  	  RP                  V4      # u upi u upi )NTr2   z'nonce-Ú'Ú z; )NF)ÚitemsÚ
isinstanceÚsetÚsortedÚlistÚtupler	   r   ÚjoinÚappendÚrstrip)Úconfigr0   ÚpolicyÚ	directiveÚvaluesÚrendered_valueÚhas_sentinelÚvs   &&      r   Úbuild_policyrP   a   s  € Ø€Fà#Ÿ\™\Ÿ^Ñˆ	Ø�]Ô"Ùà�T‹>Ø‰Nä˜&¤#×&Ò&ô   ›‘Ü ¬¬u­×5Ò5Ø ˜�ô !$§	¡	¨VÑ 3Ð3�Ö3¿ÙOUÓVÉvÈ!´S·Y±Y´˜G E 7¨!Ñ,ÀAÒEÉv�ÐV�ßÙ%+Ó>¡V ´C·I±I©~Ÿ!˜!¡V�Ð>çÙà ŸX™X fÓ-ˆNà�‰˜˜ 1 ^Ð$4Ð5×<Ñ<Ó>×?ñ5 ,ð8 �9‰9�VÓÐùò Wùâ>s   Â%EÃE	Ã'E	r!   )r;   Úenumr   Údjango.utils.functionalr   r   Údjango.utils.htmlr   r4   r	   r   r8   r$   rP   r
   r   r   Ú<module>rT      sA   ðÛ Ý ç ;Ý )ð €ô*#ˆ'ô *#ôZ*Ð ô *ô8,ò%ör   