+
    S<Âj�B  ã                   óè   € ^ RI t ^ RIt^ RIHtHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt ]P                   ]P"                  ,           t ! R	 R
]4      t ! R R]4      t ! R R4      tR# )é    N)ÚdatetimeÚ	timedelta)Úsync_to_async)Úsettings)Úsigning)Útimezone)Úget_random_string)Úimport_stringc                   ó   € ] tR t^tRtRtR# )ÚCreateErrorz{
Used internally as a consistent exception type to catch from save (see the
docstring for SessionBase.save() for details).
© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Úe/var/www/html/data_capital/venv/lib/python3.14/site-packages/django/contrib/sessions/backends/base.pyr   r      s   † ñó
 	r   r   c                   ó   € ] tR t^tRtRtR# )ÚUpdateErrorz>
Occurs if Django tries to update a session that was deleted.
r   Nr   r   r   r   r   r      s   † ñó 	r   r   c                   óR  a € ] tR t^#t o RtRtRt]! 4       tRJR lt	R t
R tR tR	 tR
 tR t]R 4       tRJR ltRJR lt]3R lt]3R l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 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+ t0R, t1R- t2]! ]14      t3]! ]1]24      t4RKR. lt5RKR/ lt6]! ]54      t7R0 t8R1 t9R2 t:R3 t;R4 t<R5 t=R6 t>R7 t?R8 t@R9 tAR: tBR; tCR< tDR= tER> tFR? tGR@ tHRKRA ltIRKRB ltJRJRC ltKRJRD ltLRE tMRF tN]ORG 4       tP]ORH 4       tQRItRV tSR# )LÚSessionBasez%
Base class for all Session classes.
Ú
testcookieÚworkedNc                ój   € Wn         R V n        R V n        \        \        P
                  4      V n        R# )FN)Ú_session_keyÚaccessedÚmodifiedr
   r   ÚSESSION_SERIALIZERÚ
serializer©ÚselfÚsession_keys   &&r   Ú__init__ÚSessionBase.__init__-   s(   € Ø'ÔØˆŒØˆŒÜ'¬×(CÑ(CÓDˆŽr   c                ó   € WP                   9   # ©N©Ú_session©r$   Úkeys   &&r   Ú__contains__ÚSessionBase.__contains__3   ó   € Ø—m‘mÑ#Ð#r   c                ó(   € V P                   V,          # r)   r*   r,   s   &&r   Ú__getitem__ÚSessionBase.__getitem__6   s   € Ø�}‰}˜SÕ!Ð!r   c                ó0   € W P                   V&   R V n        R# ©TN©r+   r    ©r$   r-   Úvalues   &&&r   Ú__setitem__ÚSessionBase.__setitem__9   s   € Ø"�‰�cÑØˆŽr   c              ƒ  óT   "  € Y P                  4       G R j  x€L
 V&   RV n        R #  L5i©NT)Ú_aget_sessionr    r7   s   &&&r   ÚasetÚSessionBase.aset=   s%   é € Ø,1×!Ñ!Ó#×	# SÑ)ØˆŽñ 
$ùs   ‚(–&—(c                ó.   € V P                   V R V n        R# r5   r6   r,   s   &&r   Ú__delitem__ÚSessionBase.__delitem__A   s   € Ø�M‰M˜#ÐØˆŽr   c                ó,   € V P                  4       '       * # r)   )Úis_empty©r$   s   &r   Ú__bool__ÚSessionBase.__bool__E   s   € Ø—=‘=“?Ô"Ð"r   c                ó<   € R V P                   P                  ,           # )zdjango.contrib.sessions.)Ú	__class__r   rE   s   &r   Úkey_saltÚSessionBase.key_saltH   s   € à)¨D¯N©N×,GÑ,GÕGÐGr   c                ó8   € V P                   P                  W4      # r)   )r+   Úget©r$   r-   Údefaults   &&&r   rM   ÚSessionBase.getL   s   € Ø�}‰}× Ñ  Ó.Ð.r   c              ƒ  ó\   "  € V P                  4       G R j  x€L
 P                  W4      #  L5ir)   )r=   rM   rN   s   &&&r   ÚagetÚSessionBase.agetO   s%   é € Ø×(Ñ(Ó*×*×/Ñ/°Ó=Ð=Ñ*ùs   ‚,–*—,c                ó´   € V P                   ;'       g    WP                  9   V n         W P                  J d   RMV3pV P                  P                  ! V.VO5!  # ©Nr   )r    r+   Ú_SessionBase__not_givenÚpop©r$   r-   rO   Úargss   &&& r   rW   ÚSessionBase.popR   sJ   € ØŸ™×=Ð=¨·±Ñ)=ˆŒØ× 0Ñ 0Ó0‰r°w°jˆØ�}‰}× Ò  Ð, tÓ,Ð,r   c              ƒ  óô   "  € V P                   ;'       g    YP                  4       G R j  x€L
 9   V n         W P                  J d   RMV3pV P                  4       G R j  x€L
 P                  ! V.VO5!  #  LI L5irU   )r    r=   rV   rW   rX   s   &&& r   ÚapopÚSessionBase.apopW   sf   é € ØŸ™×LÐL¨×7IÑ7IÓ7K×1KÑ)LˆŒØ× 0Ñ 0Ó0‰r°w°jˆØ×(Ñ(Ó*×*×/Ò/°Ð;°dÓ;Ð;ñ 2Lá*ùs!   ‚(A8ªA4«2A8ÁA6ÁA8Á6A8c                óT   € WP                   9   d   V P                   V,          # W V&   V# r)   r*   r7   s   &&&r   Ú
setdefaultÚSessionBase.setdefault\   s'   € Ø—-‘-ÔØ—=‘= Õ%Ð%à�‰IØˆLr   c              ƒ  ó”   "  € V P                  4       G R j  x€L
 pW9   d	   W1,          # V P                  W4      G R j  x€L
  V#  L- L5ir)   )r=   r>   )r$   r-   r8   Úsessions   &&& r   ÚasetdefaultÚSessionBase.asetdefaultc   sD   é € Ø×*Ñ*Ó,×,ˆØŒ>Ø•<Ðà—)‘)˜CÓ'×'Ð'ØˆLñ -ñ (ùs   ‚A–A—&A½A¾AÁAc                ó6   € V P                   W P                  &   R # r)   )ÚTEST_COOKIE_VALUEÚTEST_COOKIE_NAMErE   s   &r   Úset_test_cookieÚSessionBase.set_test_cookiek   s   € Ø&*×&<Ñ&<ˆ×"Ñ"Ó#r   c              ƒ  ón   "  € V P                  V P                  V P                  4      G R j  x€L
  R #  L5ir)   )r>   rg   rf   rE   s   &r   Úaset_test_cookieÚSessionBase.aset_test_cookien   s%   é € Ø�i‰i˜×-Ñ-¨t×/EÑ/EÓF×FÔFùs   ‚*5¬3­5c                óR   € V P                  V P                  4      V P                  8H  # r)   )rM   rg   rf   rE   s   &r   Útest_cookie_workedÚSessionBase.test_cookie_workedq   s"   € Ø�x‰x˜×-Ñ-Ó.°$×2HÑ2HÑHÐHr   c              ƒ  ón   "  € V P                  V P                  4      G R j  x€L
 V P                  8H  #  L5ir)   )rR   rg   rf   rE   s   &r   Úatest_cookie_workedÚSessionBase.atest_cookie_workedt   s+   é € Ø—i‘i × 5Ñ 5Ó6×6¸4×;QÑ;QÑQÐQÑ6ùs   ‚5¡3¢5c                ó   € W P                    R # r)   )rg   rE   s   &r   Údelete_test_cookieÚSessionBase.delete_test_cookiew   s   € Ø×&Ñ&Ò'r   c              ƒ  óX   "  € V P                  4       G R j  x€L
 V P                   R #  L5ir)   )r=   rg   rE   s   &r   Úadelete_test_cookieÚSessionBase.adelete_test_cookiez   s"   é € Ø×%Ñ%Ó'×'¨×)>Ñ)>Ò?Ñ'ùs   ‚*–(—*c                ó^   € \         P                  ! VV P                  V P                  RR7      # )zI
Return the given session dictionary serialized and encoded as a string.
T)Úsaltr"   Úcompress)r   ÚdumpsrJ   r"   )r$   Úsession_dicts   &&r   ÚencodeÚSessionBase.encode}   s)   € ô �}Š}ØØ—‘Ø—‘Øô	
ð 	
r   c                óü   €  \         P                  ! WP                  V P                  R 7      #   \         P                   d,    \
        P                  ! R4      pTP                  R4        / # \         d     / # i ; i))rz   r"   z!django.security.SuspiciousSessionzSession data corrupted)	r   ÚloadsrJ   r"   ÚBadSignatureÚloggingÚ	getLoggerÚwarningÚ	Exception)r$   Úsession_dataÚloggers   && r   ÚdecodeÚSessionBase.decodeˆ   su   € ð
	Ü—=’=Ø§=¡=¸T¿_¹_ôð øô ×#Ñ#ô 	5Ü×&Ò&Ð'JÓKˆFØ�N‰NÐ3Õ4ð
 ˆ	ô	 ô 	ð Øˆ	ð		ús   ‚+. ®<A;Á-A;Á6A;Á:A;c                óJ   € V P                   P                  V4       R V n        R# r5   )r+   Úupdater    ©r$   Údict_s   &&r   rŒ   ÚSessionBase.update–   s   € Ø�‰×Ñ˜UÔ#ØˆŽr   c              ƒ  ón   "  € V P                  4       G R j  x€L
 P                  V4       RV n        R #  L5ir<   )r=   rŒ   r    r�   s   &&r   ÚaupdateÚSessionBase.aupdateš   s+   é € Ø×!Ñ!Ó#×	#×+Ñ+¨EÔ2ØˆŽñ 
$ùs   ‚5–3—5c                ó   € WP                   9   # r)   r*   r,   s   &&r   Úhas_keyÚSessionBase.has_keyž   r0   r   c              ƒ  óB   "  € YP                  4       G R j  x€L
 9   #  L5ir)   )r=   r,   s   &&r   Úahas_keyÚSessionBase.ahas_key¡   s   é € Ø×/Ñ/Ó1×1Ñ2Ð2Ñ1ùs   ‚–—c                ó6   € V P                   P                  4       # r)   )r+   ÚkeysrE   s   &r   rš   ÚSessionBase.keys¤   s   € Ø�}‰}×!Ñ!Ó#Ð#r   c              ƒ  óZ   "  € V P                  4       G R j  x€L
 P                  4       #  L5ir)   )r=   rš   rE   s   &r   ÚakeysÚSessionBase.akeys§   s#   é € Ø×(Ñ(Ó*×*×0Ñ0Ó2Ð2Ñ*ùó   ‚+–)—+c                ó6   € V P                   P                  4       # r)   )r+   ÚvaluesrE   s   &r   r¡   ÚSessionBase.valuesª   s   € Ø�}‰}×#Ñ#Ó%Ð%r   c              ƒ  óZ   "  € V P                  4       G R j  x€L
 P                  4       #  L5ir)   )r=   r¡   rE   s   &r   ÚavaluesÚSessionBase.avalues­   s#   é € Ø×(Ñ(Ó*×*×2Ñ2Ó4Ð4Ñ*ùrŸ   c                ó6   € V P                   P                  4       # r)   )r+   ÚitemsrE   s   &r   r§   ÚSessionBase.items°   s   € Ø�}‰}×"Ñ"Ó$Ð$r   c              ƒ  óZ   "  € V P                  4       G R j  x€L
 P                  4       #  L5ir)   )r=   r§   rE   s   &r   ÚaitemsÚSessionBase.aitems³   s#   é € Ø×(Ñ(Ó*×*×1Ñ1Ó3Ð3Ñ*ùrŸ   c                ó0   € / V n         R V n        R V n        R# r5   )Ú_session_cacher   r    rE   s   &r   ÚclearÚSessionBase.clear¶   s   € ð !ˆÔØˆŒØˆŽr   c                ó|   €  V P                   '       * ;'       d    V P                  '       * #   \         d     R# i ; i)zBReturn True when there is no session_key and the session is empty.T)r   r­   ÚAttributeErrorrE   s   &r   rD   ÚSessionBase.is_empty¾   s9   € ð	Ø×(Ñ(Ô(×DÐD°×1DÑ1DÔ-DÐDøÜô 	Úð	ús   ‚, š, ¬;º;c                óZ   €  \        ^ \        4      pV P                  V4      '       d   K*  V# )z)Return session key that isn't being used.)r	   ÚVALID_KEY_CHARSÚexistsr#   s   & r   Ú_get_new_session_keyÚ SessionBase._get_new_session_keyÅ   s&   € àÜ+¨B´Ó@ˆKØ—;‘;˜{×+Ô+Ø"Ð"r   c              ƒ  óv   "  €  \        ^ \        4      pV P                  V4      G Rj  x€L
 '       d   K2  V#  L5ir5   )r	   r´   Úaexistsr#   s   & r   Ú_aget_new_session_keyÚ!SessionBase._aget_new_session_keyÌ   s4   é € ØÜ+¨B´Ó@ˆKØŸ™ kÓ2×2×2Ð2Ø"Ð"ñ 3ùs   ‚&9¨7©9µ9c                ó`   € V P                   f   V P                  4       V n         V P                   # r)   )r   r¶   rE   s   &r   Ú_get_or_create_session_keyÚ&SessionBase._get_or_create_session_keyÒ   s+   € Ø×ÑÒ$Ø $× 9Ñ 9Ó ;ˆDÔØ× Ñ Ð r   c              ƒ  ó|   "  € V P                   f   V P                  4       G R j  x€L
 V n         V P                   #  L5ir)   )r   rº   rE   s   &r   Ú_aget_or_create_session_keyÚ'SessionBase._aget_or_create_session_key×   s7   é € Ø×ÑÒ$Ø&*×&@Ñ&@Ó&B× BˆDÔØ× Ñ Ð ñ !Cùs   ‚"<¤:¥<c                ó2   € T;'       d    \        V4      ^8¬  # )z|
Key must be truthy and at least 8 characters long. 8 characters is an
arbitrary lower bound for some minimal key security.
)Úlenr,   s   &&r   Ú_validate_session_keyÚ!SessionBase._validate_session_keyÜ   s   € ð
 ×$Ð$”s˜3“x 1‘}Ð$r   c                ó   € V P                   # r)   )Ú_SessionBase__session_keyrE   s   &r   Ú_get_session_keyÚSessionBase._get_session_keyã   s   € Ø×!Ñ!Ð!r   c                óR   € V P                  V4      '       d	   Wn        R# RV n        R# )zF
Validate session key on assignment. Invalid values will set to None.
N)rÄ   rÇ   ©r$   r8   s   &&r   Ú_set_session_keyÚSessionBase._set_session_keyæ   s#   € ð ×%Ñ% e×,Ò,Ø!&Öà!%ˆDÖr   c                óà   € RV n          V P                  #   \         dN    T P                  e	   T'       d   / T n         T P                  # T P	                  4       T n         T P                  # i ; i)z†
Lazily load session from storage (unless "no_load" is True, when only
an empty dict is stored) and store it in the current instance.
T)r   r­   r±   r%   Úload©r$   Úno_loads   &&r   Ú_get_sessionÚSessionBase._get_sessionò   sk   € ð
 ˆŒð	2Ø×&Ñ&Ð&øÜô 	2Ø×ÑÒ'¯7Ø&(�Õ#ð ×"Ñ"Ð"ð '+§i¡i£k�Õ#Ø×"Ñ"Ð"ð	2ús   ‰ • A-¶A-Á
A-Á,A-c              ƒ  óú   "  € R V n          V P                  #   \         dW    T P                  e	   T'       d   / T n         T P                  # T P	                  4       G Rj  x€L 
 T n         T P                  # i ; i5ir5   )r   r­   r±   r%   ÚaloadrÐ   s   &&r   r=   ÚSessionBase._aget_session  sq   é € ØˆŒð	9Ø×&Ñ&Ð&øÜô 	9Ø×ÑÒ'¯7Ø&(�Õ#ð ×"Ñ"Ð"ð -1¯J©J«L×&8Ð&8�Õ#Ø×"Ñ"Ð"ð	9üsA   ‚A;‹ –A;— A8¸A8¿A;ÁA8ÁA"Á 
A8Á*A;Á7A8Á8A;c                ó"   € \         P                  # r)   )r   ÚSESSION_COOKIE_AGErE   s   &r   Úget_session_cookie_ageÚ"SessionBase.get_session_cookie_age  s   € Ü×*Ñ*Ð*r   c                óÖ  €  VR,          p VR,          pV'       g   V P	                  4       # \        V\        \        34      '       g   V# \        V\        4      '       d   \        P                  ! V4      pW2,
          pVP                  R,          VP                  ,           #   \          d    \        P                  ! 4       p Lºi ; i  \          d    T P                  R4      p LÒi ; i)z½Get the number of seconds until the session expires.

Optionally, this function accepts `modification` and `expiry` keyword
arguments specifying the modification and expiry of the session.
ÚmodificationÚexpiryÚ_session_expiryé€Q )ÚKeyErrorr   ÚnowrM   rÙ   Ú
isinstancer   ÚstrÚfromisoformatÚdaysÚseconds©r$   ÚkwargsrÜ   rÝ   Údeltas   &,   r   Úget_expiry_ageÚSessionBase.get_expiry_age  sÂ   € ð	*Ø! .Õ1ˆLð	1Ø˜HÕ%ˆF÷ Ø×.Ñ.Ó0Ð0Ü˜&¤8¬S /×2Ò2ØˆMÜ�fœc×"Ò"Ü×+Ò+¨FÓ3ˆFØÕ%ˆØ�z‰z˜EÕ! E§M¡MÕ1Ð1øô# ô 	*Ü#Ÿ<š<›>ŠLð	*ûô ô 	1Ø—X‘XÐ/Ó0ŠFð	1ús"   ‚	B# Œ	C	 Â# CÃCÃ	C(Ã'C(c              ‹  óð  "  €  VR ,          p VR,          pV'       g   V P	                  4       # \        V\        \        34      '       g   V# \        V\        4      '       d   \        P                  ! V4      pW2,
          pVP                  R,          VP                  ,           #   \          d    \        P                  ! 4       p Lºi ; i  \          d    T P                  R4      G Rj  x€L 
 p LÛi ; i5i)rÜ   rÝ   rÞ   Nrß   )rà   r   rá   rR   rÙ   râ   r   rã   rä   rå   ræ   rç   s   &,   r   Úaget_expiry_ageÚSessionBase.aget_expiry_age,  sÊ   é € ð	*Ø! .Õ1ˆLð	8Ø˜HÕ%ˆF÷ Ø×.Ñ.Ó0Ð0Ü˜&¤8¬S /×2Ò2ØˆMÜ�fœc×"Ò"Ü×+Ò+¨FÓ3ˆFØÕ%ˆØ�z‰z˜EÕ! E§M¡MÕ1Ð1øô ô 	*Ü#Ÿ<š<›>ŠLð	*ûô ô 	8ØŸ9™9Ð%6Ó7×7Ð7ŠFð	8üsV   ‚C6„	B% Ž	C —C6ŸBC6Â% CÃC6ÃCÃC6ÃC3Ã*C-Ã+C3Ã0C6Ã2C3Ã3C6c                óœ  €  VR,          p VR,          p\	        V\
        4      '       d   V# \	        V\        4      '       d   \
        P                  ! V4      # T;'       g    V P                  4       pV\        VR7      ,           #   \          d    \        P                  ! 4       p L�i ; i  \          d    T P                  R4      p Lµi ; i)z¼Get session the expiry date (as a datetime object).

Optionally, this function accepts `modification` and `expiry` keyword
arguments specifying the modification and expiry of the session.
rÜ   rÝ   rÞ   ©ræ   )
rà   r   rá   rM   râ   r   rã   rä   rÙ   r   ©r$   rè   rÜ   rÝ   s   &,  r   Úget_expiry_dateÚSessionBase.get_expiry_date?  s³   € ð	*Ø! .Õ1ˆLð	1Ø˜HÕ%ˆFô �fœh×'Ò'ØˆMÜ˜¤×$Ò$Ü×)Ò)¨&Ó1Ð1Ø×8Ð8˜4×6Ñ6Ó8ˆØœi°Ô7Õ7Ð7øô ô 	*Ü#Ÿ<š<›>ŠLð	*ûô
 ô 	1Ø—X‘XÐ/Ó0ŠFð	1ús"   ‚	B Œ	B, Â B)Â(B)Â,CÃ
Cc              ‹  ó¶  "  €  VR ,          p VR,          p\	        V\
        4      '       d   V# \	        V\        4      '       d   \
        P                  ! V4      # T;'       g    V P                  4       pV\        VR7      ,           #   \          d    \        P                  ! 4       p L�i ; i  \          d    T P                  R4      G Rj  x€L 
 p L¾i ; i5i)rÜ   rÝ   rÞ   Nrð   )
rà   r   rá   rR   râ   r   rã   rä   rÙ   r   rñ   s   &,  r   Úaget_expiry_dateÚSessionBase.aget_expiry_dateV  s»   é € ð	*Ø! .Õ1ˆLð	8Ø˜HÕ%ˆFô �fœh×'Ò'ØˆMÜ˜¤×$Ò$Ü×)Ò)¨&Ó1Ð1Ø×8Ð8˜4×6Ñ6Ó8ˆØœi°Ô7Õ7Ð7øô ô 	*Ü#Ÿ<š<›>ŠLð	*ûô ô 	8ØŸ9™9Ð%6Ó7×7Ð7ŠFð	8üsW   ‚C„	B Ž	B. —ACÁ$$CÂ B+Â(CÂ*B+Â+CÂ.CÃCÃCÃCÃCÃCc                óö   € Vf    V R R# \        V\        4      '       d   \        P                  ! 4       V,           p\        V\
        4      '       d   VP                  4       pWR&   R#   \          d     R# i ; i)aÚ  
Set a custom expiration for the session. ``value`` can be an integer,
a Python ``datetime`` or ``timedelta`` object or ``None``.

If ``value`` is an integer, the session will expire after that many
seconds of inactivity. If set to ``0`` then the session will expire on
browser close.

If ``value`` is a ``datetime`` or ``timedelta`` object, the session
will expire at that specific future time.

If ``value`` is ``None``, the session uses the global session expiry
policy.
NrÞ   )rà   râ   r   r   rá   r   Ú	isoformatrË   s   &&r   Ú
set_expiryÚSessionBase.set_expiryg  sr   € ð Š=ðØÐ*Ð+ñ Ü�eœY×'Ò'Ü—L’L“N UÕ*ˆEÜ�eœX×&Ò&Ø—O‘OÓ%ˆEØ"'ÐÓøô ô ØÙðús   †A) Á)A8Á7A8c              ƒ  ó^  "  € Vf    V P                  R4      G R j  x€L
  R # \        V\        4      '       d   \        P
                  ! 4       V,           p\        V\        4      '       d   VP                  4       pV P                  RV4      G R j  x€L
  R #  Lz  \         d     R # i ; i L5i)NrÞ   )	r\   rà   râ   r   r   rá   r   rø   r>   rË   s   &&r   Úaset_expiryÚSessionBase.aset_expiryƒ  s‘   é € ØŠ=ðØ—i‘iÐ 1Ó2×2Ð2ñ Ü�eœY×'Ò'Ü—L’L“N UÕ*ˆEÜ�eœX×&Ò&Ø—O‘OÓ%ˆEØ�i‰iÐ)¨5Ó1×1Ò1ñ 3øÜô ØÙðúñ 	2ùsD   ‚B-ˆB œB�B ¡A/B-ÂB+ÂB-ÂB ÂB(Â$B-Â'B(Â(B-c                óV   € V P                  R4      ;pf   \        P                  # V^ 8H  # )zÚ
Return ``True`` if the session is set to expire when the browser
closes, and ``False`` if there's an expiry date. Use
``get_expiry_date()`` or ``get_expiry_age()`` to find the actual expiry
date/age, if there is one.
rÞ   )rM   r   ÚSESSION_EXPIRE_AT_BROWSER_CLOSE©r$   rÝ   s   & r   Úget_expire_at_browser_closeÚ'SessionBase.get_expire_at_browser_close‘  s/   € ð —h‘hÐ0Ó1Ð1ˆFÒ:Ü×;Ñ;Ð;Ø˜‰{Ðr   c              ƒ  ór   "  € V P                  R 4      G Rj  x€L
 ;pf   \        P                  # V^ 8H  #  L5i)rÞ   N)rR   r   rÿ   r   s   & r   Úaget_expire_at_browser_closeÚ(SessionBase.aget_expire_at_browser_closeœ  s8   é € Ø ŸI™IÐ&7Ó8×8Ð8ˆFÒAÜ×;Ñ;Ð;Ø˜‰{Ðñ 9ùs   ‚7—5˜7c                óT   € V P                  4        V P                  4        RV n        R# )zK
Remove the current session data from the database and regenerate the
key.
N)r®   Údeleter   rE   s   &r   ÚflushÚSessionBase.flush¡  s   € ð
 	�
‰
ŒØ�‰ŒØ ˆÖr   c              ƒ  óp   "  € V P                  4        V P                  4       G R j  x€L
  R V n        R #  L5ir)   )r®   Úadeleter   rE   s   &r   ÚaflushÚSessionBase.aflushª  s*   é € Ø�
‰
ŒØ�l‰l‹n×ÐØ ˆÖñ 	ùs   ‚$6¦4§6c                ó˜   € V P                   pV P                  pV P                  4        Wn        V'       d   V P	                  V4       R# R# ©zE
Create a new session key, while retaining the current session data.
N)r+   r%   Úcreater­   r  ©r$   Údatar-   s   &  r   Ú	cycle_keyÚSessionBase.cycle_key¯  s;   € ð �}‰}ˆØ×ÑˆØ�‰ŒØ"ÔßØ�K‰K˜Öñ r   c              ƒ  óä   "  € V P                  4       G Rj  x€L
 pV P                  pV P                  4       G Rj  x€L
  Wn        V'       d   V P	                  V4      G Rj  x€L
  R# R#  LS L1 L5ir  )r=   r%   Úacreater­   r  r  s   &  r   Ú
acycle_keyÚSessionBase.acycle_keyº  s_   é € ð ×'Ñ'Ó)×)ˆØ×ÑˆØ�l‰l‹n×ÐØ"ÔßØ—,‘,˜sÓ#×#Ò#ñ ñ	 *áñ $ùs1   ‚A0–A*—#A0ºA,»&A0Á!A.Á"	A0Á,A0Á.A0c                ó   € \        R4      h)z6
Return True if the given session_key already exists.
z9subclasses of SessionBase must provide an exists() method©ÚNotImplementedErrorr#   s   &&r   rµ   ÚSessionBase.existsÇ  s   € ô "ØGó
ð 	
r   c              ƒ  óT   "  € \        V P                  4      ! V4      G R j  x€L
 #  L5ir)   )r   rµ   r#   s   &&r   r¹   ÚSessionBase.aexistsÏ  ó   é € Ü" 4§;¡;Ô/°Ó<×<Ð<Ñ<ùó   ‚(¡&¢(c                ó   € \        R4      h)z¥
Create a new session instance. Guaranteed to create a new object with
a unique key and will have saved the result once (with empty data)
before the method returns.
z8subclasses of SessionBase must provide a create() methodr  rE   s   &r   r  ÚSessionBase.createÒ  s   € ô "ØFó
ð 	
r   c              ƒ  óR   "  € \        V P                  4      ! 4       G R j  x€L
 #  L5ir)   )r   r  rE   s   &r   r  ÚSessionBase.acreateÜ  s   é € Ü" 4§;¡;Ô/Ó1×1Ð1Ñ1ùó   ‚' %¡'c                ó   € \        R4      h)zÄ
Save the session data. If 'must_create' is True, create a new session
object (or raise CreateError). Otherwise, only update an existing
object and don't create one (raise UpdateError if needed).
z6subclasses of SessionBase must provide a save() methodr  ©r$   Úmust_creates   &&r   ÚsaveÚSessionBase.saveß  s   € ô "ØDó
ð 	
r   c              ƒ  óT   "  € \        V P                  4      ! V4      G R j  x€L
 #  L5ir)   )r   r)  r'  s   &&r   ÚasaveÚSessionBase.asaveé  s   é € Ü" 4§9¡9Ô-¨kÓ:×:Ð:Ñ:ùr   c                ó   € \        R4      h)z`
Delete the session data under this key. If the key is None, use the
current session key value.
z8subclasses of SessionBase must provide a delete() methodr  r#   s   &&r   r  ÚSessionBase.deleteì  s   € ô
 "ØFó
ð 	
r   c              ƒ  óT   "  € \        V P                  4      ! V4      G R j  x€L
 #  L5ir)   )r   r  r#   s   &&r   r  ÚSessionBase.adeleteõ  r  r   c                ó   € \        R4      h)z0
Load the session data and return a dictionary.
z6subclasses of SessionBase must provide a load() methodr  rE   s   &r   rÏ   ÚSessionBase.loadø  s   € ô "ØDó
ð 	
r   c              ƒ  óR   "  € \        V P                  4      ! 4       G R j  x€L
 #  L5ir)   )r   rÏ   rE   s   &r   rÕ   ÚSessionBase.aload   s   é € Ü" 4§9¡9Ô-Ó/×/Ð/Ñ/ùr%  c                ó   € \        R4      h)zò
Remove expired sessions from the session store.

If this operation isn't possible on a given backend, it should raise
NotImplementedError. If it isn't necessary, because the backend has
a built-in expiration mechanism, it should be a no-op.
z.This backend does not support clear_expired().r  ©Úclss   &r   Úclear_expiredÚSessionBase.clear_expired  s   € ô "Ð"RÓSÐSr   c              ƒ  óR   "  € \        V P                  4      ! 4       G R j  x€L
 #  L5ir)   )r   r9  r7  s   &r   Úaclear_expiredÚSessionBase.aclear_expired  s   é € ä" 3×#4Ñ#4Ô5Ó7×7Ð7Ñ7ùr%  )Ú__session_keyr­   r   r   r    r"   r)   )F)Tr   r   r   r   r   rg   rf   ÚobjectrV   r&   r.   r2   r9   r>   rA   rF   ÚpropertyrJ   rM   rR   rW   r\   r_   rc   rh   rk   rn   rq   rt   rw   r~   r‰   rŒ   r‘   r”   r—   rš   r�   r¡   r¤   r§   rª   r®   rD   r¶   rº   r½   rÀ   rÄ   rÈ   rÌ   r%   r   rÒ   r=   r+   rÙ   rê   rí   rò   rõ   rù   rü   r  r  r  r  r  r  rµ   r¹   r  r  r)  r,  r  r  rÏ   rÕ   Úclassmethodr9  r<  r   Ú__classdictcell__)Ú__classdict__s   @r   r   r   #   sÚ  ø‡ € ñð $ÐØ Ðá“(€KôEò$ò"òòòò#ð ñHó ðHô/ô>ð  +ô -ð
 '2ô <ò
òò=òGòIòRò(ò@ò	
òòòò$ò3ò$ò3ò&ò5ò%ò4òòò#ò#ò!ò
!ò
%ò"ò&ñ Ð+Ó,€KÙÐ,Ð.>Ó?€Lô#ô	#ñ ˜Ó%€Hò+ò2ò62ò&8ò.8ò"(ò82ò	òò
!ò!ò
	ò	$ò
ò=ò
ò2ô
ô;ô
ô=ò
ò0ð ñTó ðTð ñ8ó ö8r   r   )rƒ   Ústringr   r   Úasgiref.syncr   Údjango.confr   Údjango.corer   Údjango.utilsr   Údjango.utils.cryptor	   Údjango.utils.module_loadingr
   Úascii_lowercaseÚdigitsr´   r†   r   r   r   r   r   r   Ú<module>rM     sZ   ðÛ Û ß (å &å  Ý Ý !Ý 1Ý 5ð ×(Ñ(¨6¯=©=Õ8€ô	�)ô 	ô	�)ô 	÷m8ó m8r   