§
    K" ho$  ã                   ó¬   — d Z ddlmZ dZdZ G d„ d¦  «        Z G d„ de¦  «        Z G d	„ d
e¦  «        Zd„ Z G d„ de¦  «        Z	 G d„ d¦  «        Z
dS )zBuffers
é    ©ÚBytesIOi   i    c                   óT   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zdd	„Zdd
„Z	d„ Z
d„ Zd„ Zd„ ZdS )ÚFileBasedBufferr   Nc                 ó¤  — || _         |�Æ|                     ¦   «         }|                     ¦   «         }|                     d¦  «         	 |                     t
          ¦  «        }|sn|                     |¦  «         Œ3t          |                     ¦   «         |z
  ¦  «        | _        |                     |¦  «         |                     |¦  «         d S d S ©Nr   )	ÚfileÚgetfileÚtellÚseekÚreadÚ
COPY_BYTESÚwriteÚintÚremain)Úselfr	   Úfrom_bufferÚ	from_fileÚread_posÚdatas         úJc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\waitress/buffers.pyÚ__init__zFileBasedBuffer.__init__   sÉ   € ØˆŒ	ØÐ"Ø#×+Ò+Ñ-Ô-ˆIØ —~’~Ñ'Ô'ˆHØ�NŠN˜1ÑÔÐð!Ø —~’~¥jÑ1Ô1�Øð ØØ—
’
˜4Ñ Ô Ð ð	!õ
 ˜dŸiši™kœk¨HÑ4Ñ5Ô5ˆDŒKØ�NŠN˜8Ñ$Ô$Ð$Ø�IŠI�hÑÔÐÐÐð #Ð"ó    c                 ó   — | j         S ©N)r   ©r   s    r   Ú__len__zFileBasedBuffer.__len__+   s
   € ØŒ{Ðr   c                 ó   — dS )NT© r   s    r   Ú__bool__zFileBasedBuffer.__bool__.   s   € Øˆtr   c                 óô   — | j         }|                     ¦   «         }|                     dd¦  «         |                     |¦  «         |                     |¦  «         | j        t          |¦  «        z   | _        d S ©Nr   é   )r	   r   r   r   r   Úlen)r   Úsr	   r   s       r   ÚappendzFileBasedBuffer.append1   s`   € ØŒyˆØ—9’9‘;”;ˆØ�	Š	�!�Q‰ŒˆØ�
Š
�1‰ŒˆØ�	Š	�(ÑÔÐØ”k¥C¨¡F¤FÑ*ˆŒˆˆr   éÿÿÿÿFc                 ó
  — | j         }|s|                     ¦   «         }|dk     r|                     ¦   «         }n|                     |¦  «        }|r| xj        t	          |¦  «        z  c_        n|                     |¦  «         |S r   )r	   r   r   r   r$   r   ©r   ÚnumbytesÚskipr	   r   Úress         r   ÚgetzFileBasedBuffer.get9   s~   € ØŒyˆØð 	#Ø—y’y‘{”{ˆHØ�aŠ<ˆ<à—)’)‘+”+ˆCˆCà—)’)˜HÑ%Ô%ˆCØð 	 ØˆKŒK�3˜s™8œ8Ñ#ˆKŒKˆKà�IŠI�hÑÔÐØˆ
r   c                 ó¢   — | j         |k     rt          d|| j         fz  ¦  «        ‚| j                             |d¦  «         | j         |z
  | _         d S )Nz)Can't skip %d bytes in buffer of %d bytesé   )r   Ú
ValueErrorr	   r   )r   r*   Úallow_prunes      r   r+   zFileBasedBuffer.skipH   sZ   € ØŒ;˜Ò!Ð!ÝØ;¸xÈÌÐ>UÑUñô ð ð 	Œ	�Š�x Ñ#Ô#Ð#Ø”k HÑ,ˆŒˆˆr   c                 ó   — t          ¦   «         ‚r   ©ÚNotImplementedErrorr   s    r   ÚnewfilezFileBasedBuffer.newfileP   s   € Ý!Ñ#Ô#Ð#r   c                 ó~  — | j         }| j        dk    r[|                     ¦   «         }|                     dd¦  «         |                     ¦   «         }|                     |¦  «         |dk    rd S |                      ¦   «         }	 |                     t          ¦  «        }|sn|                     |¦  «         Œ3|| _         d S r"   )r	   r   r   r   r5   r   r   r   )r   r	   r   ÚszÚnfr   s         r   ÚprunezFileBasedBuffer.pruneS   s°   € ØŒyˆØŒ;˜!ÒÐØ—y’y‘{”{ˆHØ�IŠI�a˜‰OŒOˆOØ—’‘”ˆBØ�IŠI�hÑÔÐØ�QŠwˆwà�Ø�\Š\‰^Œ^ˆð	Ø—9’9�ZÑ(Ô(ˆDØð ØØ�HŠH�T‰NŒNˆNð		ð
 ˆŒ	ˆ	ˆ	r   c                 ó   — | j         S r   )r	   r   s    r   r
   zFileBasedBuffer.getfilee   s
   € ØŒyÐr   c                 óp   — t          | j        d¦  «        r| j                             ¦   «          d| _        d S )NÚcloser   )Úhasattrr	   r<   r   r   s    r   r<   zFileBasedBuffer.closeh   s3   € Ý�4”9˜gÑ&Ô&ð 	ØŒI�OŠOÑÔÐØˆŒˆˆr   r   ©r'   F)r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r    r&   r-   r+   r5   r9   r
   r<   r   r   r   r   r      s¾   € € € € € Ø€Fð ð  ð  ð  ðð ð ðð ð ð+ð +ð +ðð ð ð ð-ð -ð -ð -ð$ð $ð $ðð ð ð$ð ð ðð ð ð ð r   r   c                   ó   — e Zd Zdd„Zd„ ZdS )ÚTempfileBasedBufferNc                 ób   — t                                | |                      ¦   «         |¦  «         d S r   )r   r   r5   ©r   r   s     r   r   zTempfileBasedBuffer.__init__o   s(   € Ý× Ò   t§|¢|¡~¤~°{ÑCÔCÐCÐCÐCr   c                 ó$   — ddl m}  |d¦  «        S )Nr   )ÚTemporaryFilezw+b)ÚtempfilerG   )r   rG   s     r   r5   zTempfileBasedBuffer.newfiler   s$   € Ø*Ð*Ð*Ð*Ð*Ð*àˆ}˜UÑ#Ô#Ð#r   r   ©r?   r@   rA   r   r5   r   r   r   rC   rC   n   s;   € € € € € ðDð Dð Dð Dð$ð $ð $ð $ð $r   rC   c                   ó   — e Zd Zdd„Zd„ ZdS )ÚBytesIOBasedBufferNc                 ó„   — |�*t                                | t          ¦   «         |¦  «         d S t          ¦   «         | _        d S r   )r   r   r   r	   rE   s     r   r   zBytesIOBasedBuffer.__init__y   s;   € ØÐ"Ý×$Ò$ T­7©9¬9°kÑBÔBÐBÐBÐBõ  ™	œ	ˆDŒIˆIˆIr   c                 ó   — t          ¦   «         S r   r   r   s    r   r5   zBytesIOBasedBuffer.newfile€   s   € Ý‰yŒyÐr   r   rI   r   r   r   rK   rK   x   s7   € € € € € ð"ð "ð "ð "ðð ð ð ð r   rK   c                 óŠ   — t          | d¦  «        r|                      ¦   «         S t          | d¦  «        ot          | d¦  «        S )NÚseekabler   r   )r=   rO   )Úfps    r   Ú_is_seekablerQ   „   sA   € Ýˆr�:ÑÔð Ø�{Š{‰}Œ}ÐÝ�2�vÑÔÐ6¥7¨2¨vÑ#6Ô#6Ð6r   c                   ó<   — e Zd Zdd„Zdd„Zdd„Zd„ Zd	„ ZeZd
„ Z	dS )ÚReadOnlyFileBasedBufferé €  c                 óÞ   — || _         || _        t          | j         ¦  «        rJt          | j         d¦  «        r| j         j        | _        | j         j        | _        | j         j        | _        d S d S )NrO   )r	   Ú
block_sizerQ   r=   rO   r   r   )r   r	   rV   s      r   r   z ReadOnlyFileBasedBuffer.__init__�   sh   € ØˆŒ	Ø$ˆŒõ
 ˜œ	Ñ"Ô"ð 	'Ý�t”y *Ñ-Ô-ð 3Ø $¤	Ô 2�”àœ	œˆDŒIØœ	œˆDŒIˆIˆIð	'ð 	'r   Nc                 óN  — t          | j        ¦  «        r‹| j                             ¦   «         }| j                             dd¦  «         | j                             ¦   «         }| j                             |¦  «         ||z
  }|€|| _        nt          ||¦  «        | _        | j        S r"   )rQ   r	   r   r   r   Úmin)r   ÚsizeÚ	start_posÚend_posÚfsizes        r   ÚpreparezReadOnlyFileBasedBuffer.prepare›   s‘   € Ý˜œ	Ñ"Ô"ð 		/Øœ	ŸšÑ(Ô(ˆIØŒI�NŠN˜1˜aÑ Ô Ð Ø”i—n’nÑ&Ô&ˆGØŒI�NŠN˜9Ñ%Ô%Ð%Ø˜iÑ'ˆEØˆ|Ø#�”�å! %¨Ñ.Ô.�”ØŒ{Ðr   r'   Fc                 ó  — |dk    s|| j         k    r| j         }| j        }|s|                     ¦   «         }|                     |¦  «        }|r| xj         t	          |¦  «        z  c_         n|                     |¦  «         |S )Nr'   )r   r	   r   r   r$   r   r)   s         r   r-   zReadOnlyFileBasedBuffer.get¨   s‚   € à�rŠ>ˆ>˜X¨¬Ò3Ð3Ø”{ˆHØŒyˆØð 	#Ø—y’y‘{”{ˆHØ�iŠi˜Ñ!Ô!ˆØð 	 ØˆKŒK�3˜s™8œ8Ñ#ˆKŒKˆKà�IŠI�hÑÔÐØˆ
r   c                 ó   — | S r   r   r   s    r   Ú__iter__z ReadOnlyFileBasedBuffer.__iter__¶   s   € Øˆr   c                 óV   — | j                              | j        ¦  «        }|st          ‚|S r   )r	   r   rV   ÚStopIteration)r   Úvals     r   ÚnextzReadOnlyFileBasedBuffer.next¹   s*   € ØŒi�nŠn˜Tœ_Ñ-Ô-ˆØð 	 ÝÐØˆ
r   c                 ó   — t           ‚r   r3   )r   r%   s     r   r&   zReadOnlyFileBasedBuffer.appendÁ   s   € Ý!Ð!r   )rT   r   r>   )
r?   r@   rA   r   r]   r-   r`   rd   Ú__next__r&   r   r   r   rS   rS   Š   s„   € € € € € ð'ð 'ð 'ð 'ðð ð ð ðð ð ð ðð ð ðð ð ð €Hð"ð "ð "ð "ð "r   rS   c                   ój   — e Zd ZdZdZdZdZd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zdd„Zdd„Zd„ Zd„ Zd„ ZdS )ÚOverflowableBufferzÏ
    This buffer implementation has four stages:
    - No data
    - Bytes-based buffer
    - BytesIO-based buffer
    - Temporary file storage
    The first two stages are fastest for simple transfers.
    FNr   c                 ó   — || _         d S r   )Úoverflow)r   rj   s     r   r   zOverflowableBuffer.__init__Ó   s   € à ˆŒˆˆr   c                 ón   — | j         }|�|                     ¦   «         S | j                             ¦   «         S r   )Úbufr   Ústrbuf©r   rl   s     r   r   zOverflowableBuffer.__len__×   s2   € ØŒhˆØˆ?ð —;’;‘=”=Ð à”;×&Ò&Ñ(Ô(Ð(r   c                 ó2   — |                       ¦   «         dk    S r   )r   r   s    r   r    zOverflowableBuffer.__bool__à   s   € ð �|Š|‰~Œ~ Ò!Ð!r   c                 óê   — | j         }t          |¦  «        | j        k    r|                      ¦   «          n|                      ¦   «          | j        }|r!|                     | j         ¦  «         d| _         |S ©Nr   )rm   r$   rj   Ú_set_large_bufferÚ_set_small_bufferrl   r&   )r   rm   rl   s      r   Ú_create_bufferz!OverflowableBuffer._create_bufferå   sr   € Ø”ˆÝˆv‰;Œ;˜$œ-Ò'Ð'Ø×"Ò"Ñ$Ô$Ð$Ð$à×"Ò"Ñ$Ô$Ð$ØŒhˆØð 	Ø�JŠJ�t”{Ñ#Ô#Ð#ØˆDŒKØˆ
r   c                 ó’   — | j         }t          |¦  «        | _         t          |d¦  «        r|                     ¦   «          d| _        d S )Nr<   F)rl   rK   r=   r<   Ú
overflowed©r   Úoldbufs     r   rs   z$OverflowableBuffer._set_small_bufferñ   sD   € Ø”ˆÝ% fÑ-Ô-ˆŒõ �6˜7Ñ#Ô#ð 	Ø�LŠL‰NŒNˆNàˆŒˆˆr   c                 ó’   — | j         }t          |¦  «        | _         t          |d¦  «        r|                     ¦   «          d| _        d S )Nr<   T)rl   rC   r=   r<   rv   rw   s     r   rr   z$OverflowableBuffer._set_large_bufferû   sD   € Ø”ˆÝ& vÑ.Ô.ˆŒõ �6˜7Ñ#Ô#ð 	Ø�LŠL‰NŒNˆNàˆŒˆˆr   c                 ó\  — | j         }|€O| j        }t          |¦  «        t          |¦  «        z   t          k     r||z   | _        d S |                      ¦   «         }|                     |¦  «         |                     ¦   «         }| j        s!|| j        k    r|  	                    ¦   «          d S d S d S r   )
rl   rm   r$   ÚSTRBUF_LIMITrt   r&   r   rv   rj   rr   )r   r%   rl   rm   r7   s        r   r&   zOverflowableBuffer.append  s¯   € ØŒhˆØˆ;Ø”[ˆFÝ�6‰{Œ{�S ™VœVÑ#¥lÒ2Ð2Ø$ q™j�”Ø�Ø×%Ò%Ñ'Ô'ˆCØ�
Š
�1‰Œˆð �[Š[‰]Œ]ˆØŒð 	)Ø�T”]Ò"Ð"Ø×&Ò&Ñ(Ô(Ð(Ð(Ð(ð	)ð 	)Ø"Ð"r   r'   c                 ó~   — | j         }|€| j        }|s|S |                      ¦   «         }|                     ||¦  «        S r   )rl   rm   rt   r-   )r   r*   r+   rl   rm   s        r   r-   zOverflowableBuffer.get  sG   € ØŒhˆØˆ;Ø”[ˆFØð Ø�Ø×%Ò%Ñ'Ô'ˆCØ�wŠw�x Ñ&Ô&Ð&r   c                 ó²   — | j         }|€7|r!|t          | j        ¦  «        k    r	d| _        d S |                      ¦   «         }|                     ||¦  «         d S rq   )rl   r$   rm   rt   r+   )r   r*   r1   rl   s       r   r+   zOverflowableBuffer.skip  sc   € ØŒhˆØˆ;Øð ˜x­3¨t¬{Ñ+;Ô+;Ò;Ð;ð "�”Ø�Ø×%Ò%Ñ'Ô'ˆCØ�Š�˜;Ñ'Ô'Ð'Ð'Ð'r   c                 óÎ   — | j         }|€	d| _        dS |                     ¦   «          | j        r5|                     ¦   «         }|| j        k     r|                      ¦   «          dS dS dS )zt
        A potentially expensive operation that removes all data
        already retrieved from the buffer.
        Nr   )rl   rm   r9   rv   r   rj   rs   )r   rl   r7   s      r   r9   zOverflowableBuffer.prune*  sy   € ð
 ŒhˆØˆ;ØˆDŒKØˆFØ�	Š	‰ŒˆØŒ?ð 	)ð —’‘”ˆBØ�D”MÒ!Ð!à×&Ò&Ñ(Ô(Ð(Ð(Ð(ð	)ð 	)ð "Ð!r   c                 ód   — | j         }|€|                      ¦   «         }|                     ¦   «         S r   )rl   rt   r
   rn   s     r   r
   zOverflowableBuffer.getfile<  s-   € ØŒhˆØˆ;Ø×%Ò%Ñ'Ô'ˆCØ�{Š{‰}Œ}Ðr   c                 óD   — | j         }|�|                     ¦   «          d S d S r   )rl   r<   rn   s     r   r<   zOverflowableBuffer.closeB  s&   € ØŒhˆØˆ?Ø�IŠI‰KŒKˆKˆKˆKð ˆ?r   r>   )F)r?   r@   rA   Ú__doc__rv   rl   rm   r   r   r    rt   rs   rr   r&   r-   r+   r9   r
   r<   r   r   r   rh   rh   Å   sí   € € € € € ðð ð €JØ
€CØ€Fð!ð !ð !ð)ð )ð )ð"ð "ð "ð

ð 
ð 
ð ð  ð  ðð ð ð)ð )ð )ð 'ð 'ð 'ð 'ð
(ð 
(ð 
(ð 
(ð)ð )ð )ð$ð ð ðð ð ð ð r   rh   N)r�   Úior   r   r{   r   rC   rK   rQ   rS   rh   r   r   r   ú<module>rƒ      s*  ððð à Ð Ð Ð Ð Ð ð €
ð €ðRð Rð Rð Rð Rñ Rô Rð Rðj$ð $ð $ð $ð $˜/ñ $ô $ð $ð	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ð7ð 7ð 7ð8"ð 8"ð 8"ð 8"ð 8"˜oñ 8"ô 8"ð 8"ðv@ð @ð @ð @ð @ñ @ô @ð @ð @ð @r   