+
    ‡)Ùj½$  ã                   óª   € R t ^ RIt^ RIHt ^ RIHtHt ^ RIHtH	t	H
t
HtHtHt ^ RIHt ^ RIHt  ! R R]4      t ! R	 R
]4      t ! R R]]4      tR# )ai  
Cache middleware. If enabled, each Django-powered page will be cached based on
URL. The canonical way to enable cache middleware is to set
``UpdateCacheMiddleware`` as your first piece of middleware, and
``FetchFromCacheMiddleware`` as the last::

    MIDDLEWARE = [
        'django.middleware.cache.UpdateCacheMiddleware',
        ...
        'django.middleware.cache.FetchFromCacheMiddleware'
    ]

This is counterintuitive, but correct: ``UpdateCacheMiddleware`` needs to run
last during the response phase, which processes middleware bottom-up;
``FetchFromCacheMiddleware`` needs to run last during the request phase, which
processes middleware top-down.

The single-class ``CacheMiddleware`` can be used for some simple sites.
However, if any other piece of middleware needs to affect the cache key, you'll
need to use the two-part ``UpdateCacheMiddleware`` and
``FetchFromCacheMiddleware``. This'll most often happen when you're using
Django's ``LocaleMiddleware``.

More details about how the caching works:

* Only GET or HEAD-requests with status code 200 are cached.

* The number of seconds each page is stored for is set by the "max-age" section
  of the response's "Cache-Control" header, falling back to the
  CACHE_MIDDLEWARE_SECONDS setting if the section was not found.

* This middleware expects that a HEAD request is answered with the same response
  headers exactly like the corresponding GET request.

* When a hit occurs, a shallow copy of the original response object is returned
  from process_request.

* Pages will be cached based on the contents of the request headers listed in
  the response's "Vary" header.

* This middleware also sets ETag, Last-Modified, Expires and Cache-Control
  headers on the response object.

* If the request had an Authorization header and the response was not marked
  "Cache-Control: public", the response will vary on Authorization.
N)Úsettings)ÚDEFAULT_CACHE_ALIASÚcaches)Úget_cache_keyÚget_max_ageÚhas_vary_headerÚlearn_cache_keyÚpatch_response_headersÚpatch_vary_headers)ÚMiddlewareMixin)Úparse_http_date_safec                   óR   a a€ ] tR t^@t oRtV 3R lt]R 4       tR tR t	Rt
VtV ;t# )ÚUpdateCacheMiddlewarea  
Response-phase cache middleware that updates the cache if the response is
cacheable.

Must be used as part of the two-part update/fetch cache middleware.
UpdateCacheMiddleware must be the first piece of middleware in MIDDLEWARE
so that it'll get called last during the response phase.
c                ó²   <€ \         SV `  V4       \        P                  V n        R V n        \        P                  V n        \        P                  V n	        R # ©N)
ÚsuperÚ__init__r   ÚCACHE_MIDDLEWARE_SECONDSÚcache_timeoutÚpage_timeoutÚCACHE_MIDDLEWARE_KEY_PREFIXÚ
key_prefixÚCACHE_MIDDLEWARE_ALIASÚcache_alias©ÚselfÚget_responseÚ	__class__s   &&€ÚP/var/www/eggtrainer/venv/lib/python3.14/site-packages/django/middleware/cache.pyr   ÚUpdateCacheMiddleware.__init__J   sA   ø€ Ü‰Ñ˜Ô&Ü%×>Ñ>ˆÔØ ˆÔÜ"×>Ñ>ˆŒÜ#×:Ñ:ˆÖó    c                ó0   € \         V P                  ,          # r   ©r   r   ©r   s   &r   ÚcacheÚUpdateCacheMiddleware.cacheQ   ó   € ä�d×&Ñ&Õ'Ð'r    c                óB   € \        VR 4      ;'       d    VP                  # )Ú_cache_update_cache)Úhasattrr(   )r   ÚrequestÚresponses   &&&r   Ú_should_update_cacheÚ*UpdateCacheMiddleware._should_update_cacheU   s   € Ü�wÐ 5Ó6×VÐV¸7×;VÑ;VÐVr    c                óú  a aaa€ S P                  W4      '       g   V# VP                  '       g   VP                  R9  d   V# VP                  '       d   \	        VR4      '       d   V# VP                  RR4      P                  4       oS'       dC   \        ;QJ d    V3R lR 4       F  '       g   K   RM	  RM! V3R lR 4       4      '       d   V# \	        VR4      '       d   V# S P                  oSf&   \        V4      oSf   S P                  oM	S^ 8X  d   V# \        VS4       VP                  P                  R4      '       d   R	S9  d   \        VR4       S'       d˜   VP                  ^È8X  d‡   \        WSS P                  S P                   R
7      o\#        VR4      '       d5   \%        VP&                  4      '       d   VP)                  VV V3R l4       V# S P                   P+                  SVS4       V# )zSet the cache, if needed.ÚCookiezCache-ControlÚ c              3   ó.   <"  € T F
  pVS9   x € K  	  R # 5ir   © )Ú.0Ú	directiveÚcache_controls   & €r   Ú	<genexpr>Ú9UpdateCacheMiddleware.process_response.<locals>.<genexpr>i   s!   øé € ð !
ñ�	ð ˜Ö&óùs   ƒTFÚ*ÚAuthorizationÚpublic©r$   Úrenderc                 ó>   <€ SP                   P                  SV S4      # r   )r$   Úset)ÚrÚ	cache_keyr   Útimeouts   &€€€r   Ú<lambda>Ú8UpdateCacheMiddleware.process_response.<locals>.<lambda>�   s   ø€ ˜dŸj™jŸn™n¨Y¸¸7ÔCr    )éÈ   i0  )Úprivatezno-cachezno-store)r9   )r,   Ú	streamingÚstatus_codeÚcookiesr   ÚgetÚlowerÚanyr   r   r   r	   Úheadersr
   r   r   r$   r)   Úcallabler<   Úadd_post_render_callbackr>   )r   r*   r+   r5   r@   rA   s   f&&@@@r   Úprocess_responseÚ&UpdateCacheMiddleware.process_responseX   s©  û€ à×(Ñ(¨×;Ò;àˆOà××Ð ×!5Ñ!5¸ZÔ!GØˆOð ××Ð¤°¸(× CÒ CØˆOð !Ÿ™ _°bÓ9×?Ñ?ÓAˆßŸS›Sô !
ñó!
ŸSŸSšSô !
ñó!
÷ 
ò 
ð ˆOô ˜8 S×)Ò)ØˆOð ×#Ñ#ˆØŠ?ô " (Ó+ˆGØŠØ×,Ñ,‘Ø˜A”à�Ü˜x¨Ô1ð
 �?‰?×Ñ˜×/Ò/°HÀMÔ4QÜ˜xÐ);Ô<ß�x×+Ñ+¨sÔ2Ü'Ø 7¨D¯O©OÀ4Ç:Á:ôˆIô �x ×*Ò*¬x¸¿¹×/HÒ/HØ×1Ñ1ÞCôð
 ˆð —
‘
—‘˜y¨(°GÔ<Øˆr    ©r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úpropertyr$   r,   rO   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r   Ú__classdict__s   @@r   r   r   @   s3   ù‡ € ñõ;ð ñ(ó ð(òW÷<ò <r    r   c                   óL   a a€ ] tR t^—t oRtV 3R lt]R 4       tR tRt	Vt
V ;t# )ÚFetchFromCacheMiddlewarea  
Request-phase cache middleware that fetches a page from the cache.

Must be used as part of the two-part update/fetch cache middleware.
FetchFromCacheMiddleware must be the last piece of middleware in MIDDLEWARE
so that it'll get called last during the request phase.
c                óz   <€ \         SV `  V4       \        P                  V n        \        P
                  V n        R # r   )r   r   r   r   r   r   r   r   s   &&€r   r   Ú!FetchFromCacheMiddleware.__init__    s+   ø€ Ü‰Ñ˜Ô&Ü"×>Ñ>ˆŒÜ#×:Ñ:ˆÖr    c                ó0   € \         V P                  ,          # r   r"   r#   s   &r   r$   ÚFetchFromCacheMiddleware.cache¥   r&   r    c                ó\  € VP                   R	9  d
   RVn        R# \        WP                  RV P                  R7      pVf
   RVn        R# V P                  P                  V4      pVfO   VP                   R8X  d>   \        WP                  RV P                  R7      pV P                  P                  V4      pVf
   RVn        R# \        V4      ;peS   \        VR,          4      ;p e<   \        \        P                  ! 4       4      pWV,
          p\        ^ WG,
          4      VR&   RVn        V# )
zV
Check whether the page is already cached and return the cached
version if available.
ÚGETÚHEADFNr;   TÚExpiresÚAge)rd   re   )Úmethodr(   r   r   r$   rI   r   r   ÚintÚtimeÚmax)r   r*   r@   r+   Úmax_age_secondsÚexpires_timestampÚnow_timestampÚremaining_secondss   &&      r   Úprocess_requestÚ(FetchFromCacheMiddleware.process_request©   s  € ð
 �>‰> Ô0Ø*/ˆGÔ'Ùô " '¯?©?¸EÈÏÉÔTˆ	ØÒØ*.ˆGÔ'ÙØ—:‘:—>‘> )Ó,ˆàÒ §¡°&Ô 8Ü%ØŸ™¨&¸¿
¹
ôˆIð —z‘z—~‘~ iÓ0ˆHàÒØ*.ˆGÔ'Ùô  +¨8Ó4Ð4ˆOÒAÜ!5°h¸yÕ6IÓ!JÐJÐØòGô  ¤§	¢	£Ó,ˆMØ 1Õ AÐä! ! _Õ%HÓIˆH�U‰Oð ',ˆÔ#Øˆr    )r   r   )rR   rS   rT   rU   rV   r   rW   r$   rp   rX   rY   rZ   r[   s   @@r   r^   r^   —   s-   ù‡ € ñõ;ð
 ñ(ó ð(÷%ò %r    r^   c                   ó:   a a€ ] tR t^Ñt oRtRV 3R lltRtVtV ;t# )ÚCacheMiddlewarez¼
Cache middleware that provides basic behavior for many simple sites.

Also used as the hook point for the cache decorator, which is generated
using the decorator-from-middleware utility.
c                óê   <€ \         SV `  V4        VR ,          pVf   RpWPn         VR,          pVf   \        pW`n        Ve   W n        W0n        R#   \         d     L9i ; i  \         d     L0i ; i)r   Nr0   r   )r   r   r   ÚKeyErrorr   r   r   r   )r   r   r   r   Úkwargsr   r   r   s   &&&&,  €r   r   ÚCacheMiddleware.__init__Ù   sŠ   ø€ Ü‰Ñ˜Ô&ð	Ø Õ-ˆJØÒ!Ø�
Ø(ŒOð	Ø  Õ/ˆKØÒ"Ü1�Ø*Ôð Ò$Ø!.ÔØ(Öøô ô 	Ùð	ûô ô 	Ùð	ús"   ’A ¨A$ ÁA!Á A!Á$A2Á1A2rQ   )NN)	rR   rS   rT   rU   rV   r   rX   rY   rZ   r[   s   @@r   rs   rs   Ñ   s   ù‡ € ñ÷)÷ )r    rs   )rV   rj   Údjango.confr   Údjango.core.cacher   r   Údjango.utils.cacher   r   r   r   r	   r
   Údjango.utils.deprecationr   Údjango.utils.httpr   r   r^   rs   r2   r    r   Ú<module>r}      sT   ðñ-ó^ å  ß 9÷÷ õ 5Ý 2ôT˜Oô Tôn7˜ô 7ôt )Ð+Ð-Eö  )r    