ó
    ½Rj�b  ã                   ó°  • S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKJr  S SKJrJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJ r   S SK!J"r"  S SK#J$r$J%r%  S SK&J'r'  \'" S\RP                  5      r) " S S\ 5      r* " S S\+5      r, " S S5      r- " S S\-5      r. " S S\-5      r/ " S S\/5      r0 " S S\.5      r1 " S S \15      r2 " S! S"\15      r3 " S# S$\.5      r4 " S% S&\.5      r5 " S' S(\.5      r6 " S) S*\.5      r7 " S+ S,\.5      r8 " S- S.\.5      r9 " S/ S0\.5      r: " S1 S2\;5      r< " S3 S4\.5      r=g)5é    N)ÚHeader)Ú	responses)Úurlparse)Úasync_to_syncÚsync_to_async)Úsettings)ÚsignalsÚsigning)ÚDisallowedRedirect)ÚDjangoJSONEncoder)ÚSimpleCookie)Útimezone)ÚCaseInsensitiveMapping)Ú
iri_to_uri)Úcontent_disposition_headerÚ	http_date)Ú_lazy_re_compilez ;\s*charset=(?P<charset>[^\s;]+)c                   ó@   • \ rS rSrS rS
S jrS rS rSS jrS r	S	r
g)ÚResponseHeadersé    c                 ó^   • 0 U l         U(       a  U R                  U5       H	  u  p#X0U'   M     gg)zU
Populate the initial data using __setitem__ to ensure values are
correctly encoded.
N)Ú_storeÚ_unpack_items)ÚselfÚdataÚheaderÚvalues       Ú@D:\diplom_project\venv\Lib\site-packages\django/http/response.pyÚ__init__ÚResponseHeaders.__init__!   s1   € ð
 ˆŒÞØ!%×!3Ñ!3°DÖ!9‘�Ø$�V“ò ":ð ó    c                 óz  •  [        U[        5      (       a  UR                  U5        OC[        U[        5      (       a  UR	                  U5      nO[        U5      nUR                  U5        SU;   d  SU;   a  [        SU< S35      e U$ ! [         a¥  n[        U[        5      (       a  SU;   d'  SU;   d!  [        U[        5      (       a  SU;   d  SU;   a  [        SU< S35      UeU(       a-  [        US[        R                  S9R                  5       n S
nAU$ U=R                  S	U-  -  sl
        e S
nAff = f)zÉ
Convert headers key/value to ascii/latin-1 native strings.
`charset` must be 'ascii' or 'latin-1'. If `mime_encode` is True and
`value` can't be represented in the given charset, apply MIME-encoding.
Ú
Úz*Header values can't contain newlines (got Ú)ó   
ó   zutf-8)Ú
maxlinelenz,, HTTP response headers must be in %s formatN)Ú
isinstanceÚstrÚencodeÚbytesÚdecodeÚBadHeaderErrorÚUnicodeErrorr   ÚsysÚmaxsizeÚreason)r   r   ÚcharsetÚmime_encodeÚes        r   Ú_convert_to_charsetÚ#ResponseHeaders._convert_to_charset+   s$  € ð	Ü˜%¤×%Ñ%à—‘˜WÕ%Ü˜E¤5×)Ñ)àŸ™ WÓ-‘ä˜E›
�à—‘˜WÔ%Ø�u‹} ¨£Ü$Ø@ÀÁ	ÈÐKóð ð !.ð( ˆøô! ó 	ô
 ˜5¤%×(Ñ(¨e°u«nÀÈÃÜ˜5¤#×&Ñ&¨D°E«M¸TÀU»]ä$Ø@ÀÁ	ÈÐKóàðö Ü˜u g¼#¿+¹+ÑF×MÑMÓO”ð ˆð —’ÐJÈWÑTÑT•Øûð	ús   ‚BB Â
D:ÂBD5ÄD5Ä5D:c                 ó&   • U R                  U5        g ©N)Úpop)r   Úkeys     r   Ú__delitem__ÚResponseHeaders.__delitem__R   s   € Ø�‰��r!   c                 ó†   • U R                  US5      nU R                  USSS9nX4U R                  UR                  5       '   g )NÚasciiúlatin-1T)r4   )r6   r   Úlower©r   r;   r   s      r   Ú__setitem__ÚResponseHeaders.__setitem__U   sA   € Ø×&Ñ& s¨GÓ4ˆØ×(Ñ(¨°	ÀtÐ(ÐLˆØ$' <ˆ�‰�C—I‘I“KÒ r!   Nc                 óV   • U R                   R                  UR                  5       U5      $ r9   )r   r:   rA   )r   r;   Údefaults      r   r:   ÚResponseHeaders.popZ   s   € Ø�{‰{�‰˜sŸy™y›{¨GÓ4Ð4r!   c                 ó   • X;  a  X U'   g g r9   © rB   s      r   Ú
setdefaultÚResponseHeaders.setdefault]   s   € Ø‹?Ø�ŠIð r!   )r   )Fr9   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r6   r<   rC   r:   rJ   Ú__static_attributes__rI   r!   r   r   r       s!   † ò%ô%òNò0ô
5õr!   r   c                   ó   • \ rS rSrSrg)r.   éb   rI   N©rL   rM   rN   rO   rP   rI   r!   r   r.   r.   b   ó   † Úr!   r.   c                   ó@  • \ rS rSrSrSr S S jr\S 5       r\R                  S 5       r\S 5       r
\
R                  S	 5       r
S
 r\r\S 5       rS rS rS rS r\rS rS!S jr        S"S jrS rS#S jrS$S jrS rS rS rS rS rS rS rS r S r!Sr"g)%ÚHttpResponseBaseéf   zÆ
An HTTP response base class with dictionary-accessed headers.

This class doesn't handle content. It should not be used directly.
Use the HttpResponse and StreamingHttpResponse subclasses instead.
éÈ   Nc                 ó¸  • [        U5      U l        X@l        SU R                  ;  a!  Uc  SU R                   3nXR                  S'   OU(       a  [	        S5      e/ U l        S U l        [        5       U l        SU l	        Ub5   [        U5      U l        SU R                  s=::  a  S::  d  O  [	        S5      eX0l        g ! [        [        4 a    [        S5      ef = f)	NúContent-Typeztext/html; charset=zX'headers' must not contain 'Content-Type' when the 'content_type' parameter is provided.Fz$HTTP status code must be an integer.éd   iW  z4HTTP status code must be an integer from 100 to 599.)r   ÚheadersÚ_charsetr3   Ú
ValueErrorÚ_resource_closersÚ_handler_classr   ÚcookiesÚclosedÚintÚstatus_codeÚ	TypeErrorÚ_reason_phrase)r   Úcontent_typeÚstatusr2   r3   r\   s         r   r   ÚHttpResponseBase.__init__p   sß   € ô ' wÓ/ˆŒØŒØ §¡Ó-ØÑ#Ø!4°T·\±\°NÐC�Ø+7�L‰L˜Ò(ÞÜð8óð ð "$ˆÔð #ˆÔÜ#“~ˆŒØˆŒØÑðHÜ#& v£;�Ô ð ˜$×*Ñ*Õ1¨cÕ1Ü Ð!WÓXÐXØ$Õøô ¤	Ð*ó HÜÐ FÓGÐGðHús   ÂB= Â=Cc                 óv   • U R                   b  U R                   $ [        R                  " U R                  S5      $ )NzUnknown Status Code)rf   r   Úgetrd   ©r   s    r   Úreason_phraseÚHttpResponseBase.reason_phraseŽ   s4   € à×ÑÑ*Ø×&Ñ&Ð&ô �}Š}˜T×-Ñ-Ð/DÓEÐEr!   c                 ó   • Xl         g r9   )rf   ©r   r   s     r   rm   rn   –   s   € à#Õr!   c                 óú   • U R                   b  U R                   $ U R                  R                  S5      =n(       a1  [        R	                  U5      =n(       a  US   R                  SS5      $ [        R                  $ )NrZ   r3   Ú"Ú )r]   r\   rk   Ú_charset_from_content_type_reÚsearchÚreplacer   ÚDEFAULT_CHARSET)r   rg   Úmatcheds      r   r3   ÚHttpResponseBase.charsetš   sn   € à�=‰=Ñ$Ø—=‘=Ð ð  Ÿ<™<×+Ñ+¨NÓ;Ð;ˆ<Õ;Ü7×>Ñ>¸|ÓLÐLˆwÕLð
 ˜yÑ)×1Ñ1°#°rÓ:Ð:Ü×'Ñ'Ð'r!   c                 ó   • Xl         g r9   )r]   rp   s     r   r3   ry   ©   s   € à�r!   c           
      óÒ   • SR                  U R                  R                  5        VVs/ s H+  u  pUR                  S5      S-   UR                  S5      -   PM-     snn5      $ s  snnf )zHTTP headers as a bytestring.s   
r?   s   : r@   )Újoinr\   Úitemsr+   rB   s      r   Úserialize_headersÚ"HttpResponseBase.serialize_headers­   s`   € à�|‰|ð #'§,¡,×"4Ñ"4Ô"6ôâ"6‘J�Cð —
‘
˜7Ó# eÑ+¨e¯l©l¸9Ó.EÔEÙ"6òó
ð 	
ùós   ©2A#
c                 óJ   • SU R                   ;   a  SU R                   S   -  $ S$ )NrZ   z, "%s"rs   ©r\   rl   s    r   Ú_content_type_for_reprÚ'HttpResponseBase._content_type_for_repr¸   s2   € ð  §¡Ó-ð �t—|‘| NÑ3Ñ3ð	
ð ð	
r!   c                 ó    • X R                   U'   g r9   r�   )r   r   r   s      r   rC   ÚHttpResponseBase.__setitem__À   s   € Ø$�‰�VÒr!   c                 ó   • U R                   U	 g r9   r�   ©r   r   s     r   r<   ÚHttpResponseBase.__delitem__Ã   s   € Ø�L‰L˜Ñ r!   c                 ó    • U R                   U   $ r9   r�   r‡   s     r   Ú__getitem__ÚHttpResponseBase.__getitem__Æ   s   € Ø�|‰|˜FÑ#Ð#r!   c                 ó   • XR                   ;   $ )z$Case-insensitive check for a header.r�   r‡   s     r   Ú
has_headerÚHttpResponseBase.has_headerÉ   s   € àŸ™Ñ%Ð%r!   c                 ó6   • U R                   R                  5       $ r9   )r\   r}   rl   s    r   r}   ÚHttpResponseBase.itemsÏ   s   € Ø�|‰|×!Ñ!Ó#Ð#r!   c                 ó8   • U R                   R                  X5      $ r9   )r\   rk   )r   r   Ú	alternates      r   rk   ÚHttpResponseBase.getÒ   s   € Ø�|‰|×Ñ Ó2Ð2r!   c
                 ó|  • X R                   U'   UGb  [        U[        R                  5      (       aÐ  [        R                  " U5      (       a/  [        R
                  " U[        R                  R                  5      nU[        R                  R                  [        R                  R                  S9-
  n
U
[        R                  " SS9-  n
SnUb  [        S5      e[        SU
R                  S-  U
R                  -   5      nO$X@R                   U   S'   OS	U R                   U   S'   Ub‚  [        U[        R                  5      (       a  UR                  5       n[        U5      U R                   U   S
'   U(       d1  [        [         R                   " 5       U-   5      U R                   U   S'   Ub  XPR                   U   S'   Ub  X`R                   U   S'   U(       a  SU R                   U   S'   U(       a  SU R                   U   S'   U	(       a1  U	R#                  5       S;  a  [        S5      eX�R                   U   S'   gg)aI  
Set a cookie.

``expires`` can be:
- a string in the correct format,
- a naive ``datetime.datetime`` object in UTC,
- an aware ``datetime.datetime`` object in any time zone.
If it is a ``datetime.datetime`` object then calculate ``max_age``.

``max_age`` can be:
- int/float specifying seconds,
- ``datetime.timedelta`` object.
N)Útzé   )Úsecondsz/'expires' and 'max_age' can't be used together.r   i€Q Úexpiresrs   zmax-ageÚpathÚdomainTÚsecureÚhttponly)ÚlaxÚnoneÚstrictz,samesite must be "lax", "none", or "strict".Úsamesite)ra   r)   Údatetimer   Úis_naiveÚ
make_awareÚutcÚnowÚ	timedeltar^   ÚmaxÚdaysr—   Útotal_secondsrc   r   ÚtimerA   )r   r;   r   Úmax_ager˜   r™   rš   r›   rœ   r    Údeltas              r   Ú
set_cookieÚHttpResponseBase.set_cookieÕ   så  € ð2 "�‰�SÑØÒÜ˜'¤8×#4Ñ#4×5Ñ5Ü×$Ò$ W×-Ñ-Ü&×1Ò1°'¼8×;LÑ;L×;PÑ;PÓQ�GØ¤(×"3Ñ"3×"7Ñ"7¼8×;LÑ;L×;PÑ;PÐ"7Ð"QÑQ�ð œ×+Ò+°AÑ6Ñ6�à�ØÑ&Ü$Ð%VÓWÐWÜ˜a §¡¨eÑ!3°e·m±mÑ!CÓD‘à/6—‘˜SÑ! )Ò,à+-ˆD�L‰L˜Ñ˜iÑ(ØÑÜ˜'¤8×#5Ñ#5×6Ñ6Ø!×/Ñ/Ó1�Ü+.¨w«<ˆD�L‰L˜Ñ˜iÑ(æÜ/8¼¿º»ÀwÑ9NÓ/O�—‘˜SÑ! )Ñ,ØÑØ(,�L‰L˜Ñ˜fÑ%ØÑØ*0�L‰L˜Ñ˜hÑ'ÞØ*.ˆD�L‰L˜Ñ˜hÑ'ÞØ,0ˆD�L‰L˜Ñ˜jÑ)ÞØ�~‰~ÓÐ'@Ó@Ü Ð!OÓPÐPØ,4�L‰L˜Ñ˜jÒ)ð r!   c                 ó:   • U R                   R                  X5        g)z,Set a header unless it has already been set.N)r\   rJ   rB   s      r   rJ   ÚHttpResponseBase.setdefault  s   € à�‰×Ñ Õ+r!   c                 ór   • [         R                  " X-   S9R                  U5      nU R                  " X40 UD6$ )N)Úsalt)r
   Úget_cookie_signerÚsignr­   )r   r;   r   r²   Úkwargss        r   Úset_signed_cookieÚ"HttpResponseBase.set_signed_cookie  s3   € Ü×)Ò)¨s©zÑ:×?Ñ?ÀÓFˆØ�Š˜sÑ4¨VÑ4Ð4r!   c           
      ó–   • UR                  S5      =(       d    U=(       a    UR                  5       S:H  nU R                  USUUUSUS9  g )N)z	__Secure-z__Host-rž   r   zThu, 01 Jan 1970 00:00:00 GMT)r«   r™   rš   r›   r˜   r    )Ú
startswithrA   r­   )r   r;   r™   rš   r    r›   s         r   Údelete_cookieÚHttpResponseBase.delete_cookie  sW   € ð
 —‘Ð 8Ó9÷ 
Ø×3˜Ÿ™Ó)¨VÑ3ð 	ð 	�‰ØØØØØØ3Øð 	ò 	
r!   c                 ó  • [        U[        [        45      (       a  [        U5      $ [        U[        5      (       a$  [        UR	                  U R
                  5      5      $ [        U5      R	                  U R
                  5      $ )z=Turn a value into a bytestring encoded in the output charset.)r)   r,   Ú
memoryviewr*   r+   r3   rp   s     r   Ú
make_bytesÚHttpResponseBase.make_bytes1  s^   € ô �eœe¤ZÐ0×1Ñ1Ü˜“<ÐÜ�eœS×!Ñ!Ü˜Ÿ™ d§l¡lÓ3Ó4Ð4ä�5‹z× Ñ  §¡Ó.Ð.r!   c                 óì   • U R                    H  n U" 5         M     U R                   R                  5         SU l        [        R
                  R                  U R                  S9  g ! [         a     Me  f = f)NT)Úsender)r_   Ú	ExceptionÚclearrb   r	   Úrequest_finishedÚsendr`   )r   Úclosers     r   ÚcloseÚHttpResponseBase.closeF  sh   € Ø×,Ô,ˆFðÙ–ñ -ð 	×Ñ×$Ñ$Ô&ØˆŒÜ× Ñ ×%Ñ%¨T×-@Ñ-@Ð%ÒAøô ó Úðús   ‘A%Á%
A3Á2A3c                 óF   • [        SU R                  R                  -  5      e©Nz This %s instance is not writable©ÚOSErrorÚ	__class__rL   ©r   Úcontents     r   ÚwriteÚHttpResponseBase.writeQ  ó   € ÜÐ8¸4¿>¹>×;RÑ;RÑRÓSÐSr!   c                 ó   • g r9   rI   rl   s    r   ÚflushÚHttpResponseBase.flushT  s   € Ør!   c                 óF   • [        SU R                  R                  -  5      e)Nz)This %s instance cannot tell its positionrË   rl   s    r   ÚtellÚHttpResponseBase.tellW  s!   € ÜØ7¸$¿.¹.×:QÑ:QÑQó
ð 	
r!   c                 ó   • g©NFrI   rl   s    r   ÚreadableÚHttpResponseBase.readable_  ó   € Ør!   c                 ó   • grÚ   rI   rl   s    r   ÚseekableÚHttpResponseBase.seekableb  rÝ   r!   c                 ó   • grÚ   rI   rl   s    r   ÚwritableÚHttpResponseBase.writablee  rÝ   r!   c                 óF   • [        SU R                  R                  -  5      erÊ   rË   )r   Úliness     r   Ú
writelinesÚHttpResponseBase.writelinesh  rÒ   r!   )r]   r`   rf   r_   rb   ra   r\   rd   )NNNNNr9   )rs   NNÚ/NFFN)rs   )rè   NN)#rL   rM   rN   rO   Ú__doc__rd   r   Úpropertyrm   Úsetterr3   r~   Ú	__bytes__r‚   rC   r<   rŠ   r�   Ú__contains__r}   rk   r­   rJ   r¶   rº   r¾   rÇ   rÐ   rÔ   r×   rÛ   rß   râ   ræ   rP   rI   r!   r   rV   rV   f   s  † ñð €Kð RVô%ð< ñFó ðFð ×Ññ$ó ð$ð ñ(ó ð(ð ‡^�^ñó ðò
ð "€Iàñ
ó ð
ò%ò!ò$ò&ð €Lò$ô3ð ØØØØØØØô>5ò@,ô5ô
ò(/ò*	BòTòò
òòòõTr!   rV   c                   óœ   ^ • \ rS rSrSrSrSU 4S jjrS rS r\r	\
S 5       r\R                  S 5       rS	 rS
 rS rS rS rS rSrU =r$ )ÚHttpResponseil  zg
An HTTP response class with a string as content.

This content can be read, appended to, or replaced.
Fc                 ó2   >• [         TU ]  " U0 UD6  Xl        g r9   )Úsuperr   rÏ   )r   rÏ   Úargsrµ   rÍ   s       €r   r   ÚHttpResponse.__init__u  s   ø€ Ü‰Ò˜$Ð) &Ò)à�r!   c                 ód   • SU R                   R                  U R                  U R                  S.-  $ ©Nz5<%(cls)s status_code=%(status_code)d%(content_type)s>)Úclsrd   rg   ©rÍ   rL   rd   r‚   rl   s    r   Ú__repr__ÚHttpResponse.__repr__z  s4   € ØFØ—>‘>×*Ñ*Ø×+Ñ+Ø ×7Ñ7ñJ
ñ 
ð 	
r!   c                 óB   • U R                  5       S-   U R                  -   $ )z6Full HTTP message, including headers, as a bytestring.s   

)r~   rÏ   rl   s    r   Ú	serializeÚHttpResponse.serialize�  s   € à×%Ñ%Ó'¨+Ñ5¸¿¹ÑDÐDr!   c                 ó8   • SR                  U R                  5      $ ©Nr!   )r|   Ú
_containerrl   s    r   rÏ   ÚHttpResponse.content‡  s   € à�x‰x˜Ÿ™Ó(Ð(r!   c                 ó8  ^ • [        US5      (       a_  [        U[        [        [        45      (       d?  SR                  U 4S jU 5       5      n[        US5      (       a   UR                  5         OOT R                  U5      nU/T l	        g ! [         a     Nf = f)NÚ__iter__r!   c              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7fr9   ©r¾   )Ú.0Úchunkr   s     €r   Ú	<genexpr>Ú'HttpResponse.content.<locals>.<genexpr>‘  s   øé € ÐIÂ5¸%˜tŸ™¨u×5Ð5Â5ùs   ƒ!rÇ   )
Úhasattrr)   r,   r½   r*   r|   rÇ   rÂ   r¾   rÿ   )r   r   rÏ   s   `  r   rÏ   r   ‹  s�   ø€ ô �5˜*×%Ñ%¬jØ”Eœ:¤sÐ+÷/
ñ /
ð —h‘hÔIÁ5ÓIÓIˆGÜ�u˜g×&Ñ&ðØ—K‘K•Mð 'ð —o‘o eÓ,ˆGà"˜)ˆ�øô !ó Ùðús   Á B Â
BÂBc                 ó,   • [        U R                  5      $ r9   )Úiterrÿ   rl   s    r   r  ÚHttpResponse.__iter__œ  s   € Ü�D—O‘OÓ$Ð$r!   c                 óX   • U R                   R                  U R                  U5      5        g r9   )rÿ   Úappendr¾   rÎ   s     r   rÐ   ÚHttpResponse.writeŸ  s   € Ø�‰×Ñ˜tŸ™¨wÓ7Õ8r!   c                 ó,   • [        U R                  5      $ r9   )ÚlenrÏ   rl   s    r   r×   ÚHttpResponse.tell¢  s   € Ü�4—<‘<Ó Ð r!   c                 ó   • U R                   $ r9   )rÏ   rl   s    r   ÚgetvalueÚHttpResponse.getvalue¥  s   € Ø�|‰|Ðr!   c                 ó   • g)NTrI   rl   s    r   râ   ÚHttpResponse.writable¨  s   € Ør!   c                 ó8   • U H  nU R                  U5        M     g r9   )rÐ   )r   rå   Úlines      r   ræ   ÚHttpResponse.writelines«  s   € ÛˆDØ�J‰J�tÖò r!   )rÿ   rÏ   )r!   )rL   rM   rN   rO   ré   Ú	streamingr   rø   rû   rì   rê   rÏ   rë   r  rÐ   r×   r  râ   ræ   rP   Ú__classcell__©rÍ   s   @r   rï   rï   l  ss   ø† ñð €I÷ò

òEð €Iàñ)ó ð)ð ‡^�^ñ$ó ð$ò %ò9ò!òò÷ð r!   rï   c                   ó–   ^ • \ rS rSrSrSrSU 4S jjrS r\S 5       r	\S 5       r
\
R                  S 5       r
S	 rS
 rS rS rSrU =r$ )ÚStreamingHttpResponsei°  a  
A streaming HTTP response class with an iterator as content.

This should only be iterated once, when the response is streamed to the
client. However, it can be appended to or replaced with a new iterator
that wraps the original content (or yields entirely new content).
Tc                 ó2   >• [         TU ]  " U0 UD6  Xl        g r9   )rñ   r   Ústreaming_content)r   r!  rò   rµ   rÍ   s       €r   r   ÚStreamingHttpResponse.__init__»  s   ø€ Ü‰Ò˜$Ð) &Ò)ð "3Õr!   c                 ód   • SU R                   R                  U R                  U R                  S.-  $ rõ   )rÍ   rN   rd   r‚   rl   s    r   rø   ÚStreamingHttpResponse.__repr__Á  s4   € ØFØ—>‘>×.Ñ.Ø×+Ñ+Ø ×7Ñ7ñJ
ñ 
ð 	
r!   c                 óF   • [        SU R                  R                  -  5      e)NzMThis %s instance has no `content` attribute. Use `streaming_content` instead.)ÚAttributeErrorrÍ   rL   rl   s    r   rÏ   ÚStreamingHttpResponse.contentÈ  s'   € äð+Ø-1¯^©^×-DÑ-DñEó
ð 	
r!   c                 óœ   ^ ^• T R                   (       a  T R                  mUU 4S jnU" 5       $ [        T R                  T R                  5      $ )Nc                 óV   >#   • T  S h  v•N n TR                  U 5      7v •  M   N
 g 7fr9   r  )ÚpartÚ	_iteratorr   s    €€r   ÚawrapperÚ9StreamingHttpResponse.streaming_content.<locals>.awrapperÖ  s&   øé € Ù"+÷ 0˜$ØŸ/™/¨$Ó/Õ/ñ0¡)ùs   ƒ)†'Š%‹'Ž)¥'§))Úis_asyncr+  Úmapr¾   )r   r,  r+  s   ` @r   r!  Ú'StreamingHttpResponse.streaming_contentÏ  s9   ù€ à�=�=ð Ÿ™ˆIö0ñ “:Ðä�t—‘¨¯©Ó7Ð7r!   c                 ó&   • U R                  U5        g r9   )Ú_set_streaming_contentrp   s     r   r!  r0  Þ  s   € à×#Ñ# EÕ*r!   c                 óú   •  [        U5      U l        SU l        [        US5      (       a&  U R                  R                  UR                  5        g g ! [         a    UR	                  5       U l        SU l         N`f = f)NFTrÇ   )	r  r+  r.  re   Ú	__aiter__r	  r_   r  rÇ   rp   s     r   r2  Ú,StreamingHttpResponse._set_streaming_contentâ  sk   € ð	!Ü! %›[ˆDŒNØ!ˆDŒMô �5˜'×"Ñ"Ø×"Ñ"×)Ñ)¨%¯+©+Õ6ð #øô ó 	!Ø"Ÿ_™_Ó.ˆDŒNØ ˆDŽMð	!ús   ‚A Á&A:Á9A:c           	      óú   •  [        U R                  5      $ ! [         aY    [        R                  " S[
        5        S n[        U R                  [        [        U5      " U R                  5      5      5      s $ f = f)NzƒStreamingHttpResponse must consume asynchronous iterators in order to serve them synchronously. Use a synchronous iterator instead.c              “   óT   #   • / nU   S h  v•N nUR                  U5        M   N
 U$ 7fr9   )r  )r+  Úas_listr  s      r   Úto_listÚ/StreamingHttpResponse.__iter__.<locals>.to_listø  s,   é € Ø�Ù#,÷ *˜%Ø—N‘N 5Ö)ñ* 9à�ùs   ‚(‡%‹#Œ%�(£%¥()
r  r!  re   ÚwarningsÚwarnÚWarningr/  r¾   r   r+  )r   r9  s     r   r  ÚStreamingHttpResponse.__iter__í  sj   € ð	VÜ˜×.Ñ.Ó/Ð/øÜó 	VÜ�MŠMðPäôòô �t—‘¬¬]¸7Ô-CÀDÇNÁNÓ-SÓ(TÓUÒUð	Vús   ‚ —A A:Á9A:c                ó
  #   •  U R                     S h  v•N nU7v •  M   N
 g ! [         aR    [        R                  " S[        5        [        [        5      " U R                   5      I S h  v•N   H  nU7v •  M
      g f = f7f)Nz…StreamingHttpResponse must consume synchronous iterators in order to serve them asynchronously. Use an asynchronous iterator instead.)r!  re   r;  r<  r=  r   Úlist)r   r*  s     r   r4  ÚStreamingHttpResponse.__aiter__   sr   é € ð	Ø"×4Ò4÷ �dØ•
ñÑ4øäó 		Ü�MŠMðSäôô ,¬DÔ1°$×2HÑ2HÓI×IÓI�Ø•
ó Jð		üsJ   ‚B„$ �"” •"˜$  "¢$ £B¤AB Á+A.Á,B Á=BÁ?B Â Bc                 ó8   • SR                  U R                  5      $ rþ   )r|   r!  rl   s    r   r  ÚStreamingHttpResponse.getvalue  s   € Ø�x‰x˜×.Ñ.Ó/Ð/r!   )r+  r.  r!  )rI   )rL   rM   rN   rO   ré   r  r   rø   rê   rÏ   r!  rë   r2  r  r4  r  rP   r  r  s   @r   r  r  °  su   ø† ñð €I÷3ò
ð ñ
ó ð
ð ñ8ó ð8ð ×Ññ+ó ð+ò	7òVò&÷0ð 0r!   r  c                   óL   ^ • \ rS rSrSrSrSSS.U 4S jjrU 4S jrS	 rS
r	U =r
$ )ÚFileResponsei  z6
A streaming HTTP response class optimized for files.
i   Frs   )Úas_attachmentÚfilenamec                ón   >• Xl         X l        SU;  =(       d    US   S L U l        [        TU ]  " U0 UD6  g )Nrg   )rF  rG  Ú_no_explicit_content_typerñ   r   )r   rF  rG  rò   rµ   rÍ   s        €r   r   ÚFileResponse.__init__  sA   ø€ Ø*ÔØ Œà &Ñ(×J¨F°>Ñ,BÀdÐ,Jð 	Ô&ô 	‰Ò˜$Ð) &Ó)r!   c                 ó8  >^ ^• [        US5      (       d  S T l        [        TT ]  U5      $ U=T l        m[        TS5      (       a%  T R                  R                  TR                  5        [        UU 4S jS5      nT R                  T5        [        TT ]  U5        g )NÚreadrÇ   c                  ó:   >• T R                  TR                  5      $ r9   )rL  Ú
block_size©Úfileliker   s   €€r   Ú<lambda>Ú5FileResponse._set_streaming_content.<locals>.<lambda>*  s   ø€ ˜XŸ]™]¨4¯?©?Ô;r!   r!   )	r	  Úfile_to_streamrñ   r2  r_   r  rÇ   r  Úset_headers)r   r   rP  rÍ   s   ` @€r   r2  Ú#FileResponse._set_streaming_content"  s‚   ú€ Ü�u˜f×%Ñ%Ø"&ˆDÔÜ‘7Ñ1°%Ó8Ð8à).Ð.ˆÔ˜hÜ�8˜W×%Ñ%Ø×"Ñ"×)Ñ)¨(¯.©.Ô9ÜÕ;¸SÓAˆØ×Ñ˜Ô"Ü‰Ñ& uÕ-r!   c                 ó|  ^ ^• [        TSS5      n[        U[        5      (       a  UOSn[        TS5      =(       a(    [        TS5      (       + =(       d    TR	                  5       n[        TS5      (       Ga  U(       ac  TR                  5       nTR                  S[        R                  5        TR                  5       U-
  T R                  S'   TR                  U5        GO[        TS5      (       a9  TR                  5       R                  TR                  5       -
  T R                  S'   OÇ[        R                  R                  U5      (       a=  [        R                  R                  U5      TR                  5       -
  T R                  S'   OeU(       a^  [!        [#        UU 4S	 jS5      5      T R                  S'   TR                  [%        T R                  S   5      * [        R                  5        [        R                  R'                  T R(                  =(       d    U5      nT R*                  (       a\  U(       aF  [,        R.                  " U5      u  pVS
SSS.R1                  Xe5      nU=(       d    ST R                  S'   OST R                  S'   [3        T R4                  U5      =n(       a  UT R                  S'   gg)z„
Set some common response headers (Content-Length, Content-Type, and
Content-Disposition) based on the `filelike` response content.
Únamers   Úseekrß   r×   r   zContent-LengthÚ	getbufferc                  óL   >• [        T R                  TR                  5      5      $ r9   )r  rL  rN  rO  s   €€r   rQ  Ú*FileResponse.set_headers.<locals>.<lambda>H  s   ø€ œS §¡¨t¯©Ó!?Ô@r!   zapplication/x-bzipzapplication/gzipzapplication/x-xz)Úbzip2ÚgzipÚxzzapplication/octet-streamrZ   zContent-DispositionN)Úgetattrr)   r*   r	  rß   r×   rX  ÚioÚSEEK_ENDr\   rY  ÚnbytesÚosr™   ÚexistsÚgetsizeÚsumr  rc   ÚbasenamerG  rI  Ú	mimetypesÚ
guess_typerk   r   rF  )r   rP  rG  rß   Úinitial_positionrg   ÚencodingÚcontent_dispositions   ``      r   rT  ÚFileResponse.set_headers.  s.  ù€ ô
 ˜8 V¨RÓ0ˆÜ)¨(´C×8Ñ8‘8¸bˆÜ˜8 VÓ,÷ 
Ü˜ *Ó-Ô-×D°×1BÑ1BÓ1Dð 	ô �8˜V×$Ò$ÞØ#+§=¡=£?Ð Ø—‘˜a¤§¡Ô-Ø19·±³ÐCSÑ1S�—‘Ð-Ñ.Ø—‘Ð.Ö/Ü˜ ;×/Ñ/à×&Ñ&Ó(×/Ñ/°(·-±-³/ÑAð —‘Ð-Ò.ô —‘—‘ ×)Ñ)ä—G‘G—O‘O HÓ-°·±³Ñ?ð —‘Ð-Ñ.øö Ü-0ÜÕ@À!ÓDó.ˆD�L‰LÐ)Ñ*ð �M‰Mœ3˜tŸ|™|Ð,<Ñ=Ó>Ð>ÄÇÁÔLä—7‘7×#Ñ# D§M¡M×$=°XÓ>ˆØ×)×)ÞÜ)2×)=Ò)=¸hÓ)GÑ&�ð 2Ø.Ø,ñ ÷ ‘#�hÓ-ð	 ð !×>Ð$>ð —‘˜^Ò,ð 0J�—‘˜^Ñ,ä"<Ø×Ñ ó#
ð 
Ðõ 
ð 3FˆD�L‰LÐ.Ò/ð
r!   )rI  rF  rS  rG  )rL   rM   rN   rO   ré   rN  r   r2  rT  rP   r  r  s   @r   rE  rE    s/   ø† ñð €Jà,1¸B÷ *ð *õ
.÷2Fð 2Fr!   rE  c                   óH   ^ • \ rS rSr/ SQrU 4S jr\" S 5      rS rSr	U =r
$ )ÚHttpResponseRedirectBaseic  )ÚhttpÚhttpsÚftpc                 óò   >• [         TU ]  " U0 UD6  [        U5      U S'   [        [	        U5      5      nUR
                  (       a3  UR
                  U R                  ;  a  [        SUR
                  -  5      eg g )NÚLocationz)Unsafe redirect to URL with protocol '%s')rñ   r   r   r   r*   ÚschemeÚallowed_schemesr   )r   Úredirect_torò   rµ   ÚparsedrÍ   s        €r   r   Ú!HttpResponseRedirectBase.__init__f  sl   ø€ Ü‰Ò˜$Ð) &Ò)Ü% kÓ2ˆˆZÑÜœ#˜kÓ*Ó+ˆØ�=�=˜VŸ]™]°$×2FÑ2FÓFÜ$Ø;¸f¿m¹mÑKóð ð Gˆ=r!   c                 ó   • U S   $ )Nrt  rI   rl   s    r   rQ  Ú!HttpResponseRedirectBase.<lambda>o  s	   €   ZÒ 0r!   c                 óz   • SU R                   R                  U R                  U R                  U R                  S.-  $ )NzD<%(cls)s status_code=%(status_code)d%(content_type)s, url="%(url)s">)rö   rd   rg   Úurl)rÍ   rL   rd   r‚   r}  rl   s    r   rø   Ú!HttpResponseRedirectBase.__repr__q  s:   € àRà—~‘~×.Ñ.Ø#×/Ñ/Ø $× ;Ñ ;Ø—x‘xñ	ñð	
r!   rI   )rL   rM   rN   rO   rv  r   rê   r}  rø   rP   r  r  s   @r   ro  ro  c  s$   ø† Ú.€Oõñ Ñ0Ó
1€C÷	
ð 	
r!   ro  c                   ó   • \ rS rSrSrSrg)ÚHttpResponseRedirecti}  i.  rI   N©rL   rM   rN   rO   rd   rP   rI   r!   r   r€  r€  }  ó   † ØƒKr!   r€  c                   ó   • \ rS rSrSrSrg)ÚHttpResponsePermanentRedirecti�  i-  rI   Nr�  rI   r!   r   r„  r„  �  r‚  r!   r„  c                   ód   ^ • \ rS rSrSrU 4S jr\R                  R                  S 5       rSr	U =r
$ )ÚHttpResponseNotModifiedi…  i0  c                 ó,   >• [         TU ]  " U0 UD6  U S	 g )Nzcontent-type)rñ   r   )r   rò   rµ   rÍ   s      €r   r   Ú HttpResponseNotModified.__init__ˆ  s   ø€ Ü‰Ò˜$Ð) &Ò)Ø�Ñ r!   c                 ó6   • U(       a  [        S5      e/ U l        g )Nz7You cannot set content to a 304 (Not Modified) response)r&  rÿ   rp   s     r   rÏ   ÚHttpResponseNotModified.contentŒ  s   € æÜ ØIóð ð ˆ�r!   )rÿ   )rL   rM   rN   rO   rd   r   rï   rÏ   rë   rP   r  r  s   @r   r†  r†  …  s-   ø† Ø€Kõ!ð ×Ñ× Ñ ñó !ör!   r†  c                   ó   • \ rS rSrSrSrg)ÚHttpResponseBadRequesti•  i�  rI   Nr�  rI   r!   r   rŒ  rŒ  •  r‚  r!   rŒ  c                   ó   • \ rS rSrSrSrg)ÚHttpResponseNotFoundi™  i”  rI   Nr�  rI   r!   r   rŽ  rŽ  ™  r‚  r!   rŽ  c                   ó   • \ rS rSrSrSrg)ÚHttpResponseForbiddeni�  i“  rI   Nr�  rI   r!   r   r�  r�  �  r‚  r!   r�  c                   ó2   ^ • \ rS rSrSrU 4S jrS rSrU =r$ )ÚHttpResponseNotAllowedi¡  i•  c                 óN   >• [         TU ]  " U0 UD6  SR                  U5      U S'   g )Nz, ÚAllow)rñ   r   r|   )r   Úpermitted_methodsrò   rµ   rÍ   s       €r   r   ÚHttpResponseNotAllowed.__init__¤  s(   ø€ Ü‰Ò˜$Ð) &Ò)ØŸ	™	Ð"3Ó4ˆˆWŠr!   c                 ól   • SU R                   R                  U R                  U R                  U S   S.-  $ )NzC<%(cls)s [%(methods)s] status_code=%(status_code)d%(content_type)s>r”  )rö   rd   rg   Úmethodsr÷   rl   s    r   rø   ÚHttpResponseNotAllowed.__repr__¨  s;   € ØTØ—>‘>×*Ñ*Ø×+Ñ+Ø ×7Ñ7Ø˜G‘}ñ	X
ñ 
ð 	
r!   rI   )	rL   rM   rN   rO   rd   r   rø   rP   r  r  s   @r   r’  r’  ¡  s   ø† Ø€Kõ5÷
ð 
r!   r’  c                   ó   • \ rS rSrSrSrg)ÚHttpResponseGonei±  iš  rI   Nr�  rI   r!   r   r›  r›  ±  r‚  r!   r›  c                   ó   • \ rS rSrSrSrg)ÚHttpResponseServerErroriµ  iô  rI   Nr�  rI   r!   r   r�  r�  µ  r‚  r!   r�  c                   ó   • \ rS rSrSrg)ÚHttp404i¹  rI   NrS   rI   r!   r   rŸ  rŸ  ¹  rT   r!   rŸ  c                   ó6   ^ • \ rS rSrSr\SS4U 4S jjrSrU =r$ )ÚJsonResponsei½  a   
An HTTP response class that consumes data to be serialized to JSON.

:param data: Data to be dumped into json. By default only ``dict`` objects
  are allowed to be passed due to a security flaw before ECMAScript 5. See
  the ``safe`` parameter for more information.
:param encoder: Should be a json encoder class. Defaults to
  ``django.core.serializers.json.DjangoJSONEncoder``.
:param safe: Controls if only ``dict`` objects may be serialized. Defaults
  to ``True``.
:param json_dumps_params: A dictionary of kwargs passed to json.dumps().
TNc                 óØ   >• U(       a   [        U[        5      (       d  [        S5      eUc  0 nUR                  SS5        [        R
                  " U4SU0UD6n[        TU ]  " SSU0UD6  g )NzTIn order to allow non-dict objects to be serialized set the safe parameter to False.rg   zapplication/jsonrö   rÏ   rI   )r)   Údictre   rJ   ÚjsonÚdumpsrñ   r   )r   r   ÚencoderÚsafeÚjson_dumps_paramsrµ   rÍ   s         €r   r   ÚJsonResponse.__init__Ë  ss   ø€ ö œ
 4¬×.Ñ.Üð+óð ð Ñ$Ø "ÐØ×Ñ˜.Ð*<Ô=Ü�zŠz˜$ÑA GÐAÐ/@ÑAˆÜ‰ÒÑ0 Ð0¨Ó0r!   rI   )	rL   rM   rN   rO   ré   r   r   rP   r  r  s   @r   r¡  r¡  ½  s   ø† ñð  "ØØ÷1õ 1r!   r¡  )>r¡   r`  r¤  rh  rc  Úrer0   rª   r;  Úemail.headerr   Úhttp.clientr   Úurllib.parser   Úasgiref.syncr   r   Údjango.confr   Údjango.corer	   r
   Údjango.core.exceptionsr   Údjango.core.serializers.jsonr   Údjango.http.cookier   Údjango.utilsr   Údjango.utils.datastructuresr   Údjango.utils.encodingr   Údjango.utils.httpr   r   Údjango.utils.regex_helperr   ÚIrt   r   r^   r.   rV   rï   r  rE  ro  r€  r„  r†  rŒ  rŽ  r�  r’  r›  r�  rÂ   rŸ  r¡  rI   r!   r   Ú<module>rº     sK  ðÛ Û 	Û Û Û 	Û 	Û 
Û Û Ý Ý !Ý !ç 5å  ß (Ý 5Ý :Ý +Ý !Ý >Ý ,ß CÝ 6á 0Ø'¨¯©ó!Ð ô
?Ð,ô ?ôD	�Zô 	÷CTñ CTôLAÐ#ô AôH`0Ð,ô `0ôFMFÐ(ô MFô`
˜|ô 
ô4Ð3ô ôÐ$<ô ô˜lô ô ˜\ô ô˜<ô ô˜Lô ô
˜\ô 
ô �|ô ô˜lô ô	ˆiô 	ô1�<õ 1r!   