
    =Ogo                       	 d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ ej	        dv rd dl
mZ ndZd dlZd dlmZmZmZmZ h dZ ee d          r4e                    e j                   e                    e j                   dZeZ eed	          pej        j        ZeZd2dZe	 	 d3d            Zd Z 	 ej!        Z!n# e"$ r e Z!Y nw xY wd Z#	 ej$        Z$n# e"$ r  G d de%e&          Z$Y nw xY w G d dej'                  Z(ej(        )                    e(            G d de(          Z*ej*        )                    e*           d dl+m,Z, e*)                    e,            G d de(          Z-ej-        )                    e-            G d de-          Z. G d de-          Z/ G d  d!e.          Z0 G d" d#e.          Z1 G d$ d%e-          Z2 G d& d'e1e0          Z3 G d( d)e*          Z, G d* d+e(          Z4ej4        )                    e4            G d, d-ej5                  Z6 G d. d/e4          Z7 G d0 d1e7          Z8dS )4    N)allocate_lock>   win32cygwin)setmode)__all__SEEK_SETSEEK_CURSEEK_END>   r         	SEEK_HOLEi    gettotalrefcountr   c                     	 | Jt           j        j        rd} nd} t           j        j        r#dd l}|                    dt          |dz              | S )Nutf-8localer   z"'encoding' argument not specified.r   )sysflags	utf8_modewarn_default_encodingwarningswarnEncodingWarning)encoding
stacklevelr   s      /usr/lib64/python3.11/_pyio.pytext_encodingr   +   se     9 	 HHH9* 	;OOOMM>):>; ; ;O    rTc                 ,   	 t          | t                    st          j        |           } t          | t          t
          t          f          st          d| z            t          |t                    st          d|z            t          |t                    st          d|z            |'t          |t                    st          d|z            |'t          |t                    st          d|z            t          |          }|t          d          z
  s t          |          t          |          k    rt          d|z            d|v }	d|v }
d	|v }d
|v }d|v }d|v }d|v }|r|rt          d          |	|
z   |z   |z   dk    rt          d          |	s|
s|s|st          d          |r|t          d          |r|t          d          |r|t          d          |r&|dk    r dd l
}|                    dt          d           t          | |	rdpd|
rdpdz   |rd	pdz   |rd
pdz   |rdpdz   ||          }|}	 d}|dk    s|dk     r|                                rd}d}|dk     rSt          }	 t          j        |                                          j        }|dk    r|}n# t&          t(          f$ r Y nw xY w|dk     rt          d          |dk    r|r|S t          d          |rt+          ||          }n<|	s|s|rt-          ||          }n%|
rt/          ||          }nt          d|z            |}|r|S t1          |          }t3          |||||          }|}||_        |S #  |                                  xY w) Nzinvalid file: %rzinvalid mode: %rzinvalid buffering: %rinvalid encoding: %rinvalid errors: %rzaxrwb+txr   wa+tbz'can't have text and binary mode at oncer   z)can't have read/write/append mode at oncez/must have exactly one of read/write/append modez-binary mode doesn't take an encoding argumentz+binary mode doesn't take an errors argumentz+binary mode doesn't take a newline argumentr   zaline buffering (buffering=1) isn't supported in binary mode, the default buffer size will be usedr    )openerFr   Tzinvalid buffering sizezcan't have unbuffered text I/Ozunknown mode: %r)
isinstanceintosfspathstrbytes	TypeErrorsetlen
ValueErrorr   r   RuntimeWarningFileIOisattyDEFAULT_BUFFER_SIZEfstatfileno
st_blksizeOSErrorAttributeErrorBufferedRandomBufferedWriterBufferedReaderr   TextIOWrappermodeclose)filerB   	bufferingr   errorsnewlineclosefdr*   modescreatingreadingwriting	appendingupdatingtextbinaryr   rawresultline_bufferingbsbuffers                         r   openrV   L   s   rf dC   ydS%-.. 3*T1222dC   3*T1222i%% =/);<<<Jx$=$=.9:::*VS"9"9,v5666IIEs9~~ 4TSZZ!7!7+d2333e|HUlGUlGuIe|H%<DE\F D DBCCC'G#i/!33DEEE L L7 Li LJKKK J(&HIII H&$FGGG H'%FGGG ))q.. C$a	) 	) 	) "s(b/c'R)/c'R) #)r+ "s(b	*
 ) ) )C F&>>Y]]szz||]I!Nq==+I#Xcjjll++6 66 "I	 ^,   
 q==5666>> =>>> 	8#C33FF 	8 	8I 	8#C33FF 	8#C33FF/$6777 	M **VXvwOO	s=   3M< +J5 ,	M< 5K	M< K		!M< +A#M< ,M< <Nc                 d    	 dd l }|                    dt          d           t          | d          S )Nr   z(_pyio.open_code() may not be using hooksr   rb)r   r   r5   rV   )pathr   s     r   _open_code_with_warningrZ     s@    	 OOOMM< !% % %dr   c                     | dk    r/dd l }|                    dt          d           t          at          S t          dt          d|           )NOpenWrapperr   z+OpenWrapper is deprecated, use open insteadr   )r   zmodule z has no attribute )r   r   DeprecationWarningrV   r\   r=   __name__)namer   s     r   __getattr__r`   2  sg    } 	C(Q 	 	8 	8 	8 
I8IIII
J
JJr   c                       e Zd ZdS )UnsupportedOperationN)r^   
__module____qualname__ r   r   rb   rb   G  s        r   rb   c                       e Zd Z	 d ZddZd ZddZd ZdZd	 Z	d
 Z
d ZddZd ZddZd ZddZed             ZddZd Zd Zd Zd ZddZd Zd ZddZd ZdS ) IOBasec                 B    	 t          | j        j        d|d          )N.z() not supported)rb   	__class__r^   )selfr_   s     r   _unsupportedzIOBase._unsupportedm  s4    N"$(N$;$;$;TTT$C D D 	Dr   r   c                 2    	 |                      d           d S )Nseekrl   rk   poswhences      r   rn   zIOBase.seekt  s#    	 	&!!!!!r   c                 0    	 |                      dd          S Nr   r   )rn   rk   s    r   tellzIOBase.tell  s    CyyAr   Nc                 2    	 |                      d           d S Ntruncatero   rk   rq   s     r   ry   zIOBase.truncate  #    	
 	*%%%%%r   c                 0    	 |                                   d S N_checkClosedru   s    r   flushzIOBase.flush  s!    	 	r   Fc                 j    	 | j         s*	 |                                  d| _         d S # d| _         w xY wd S )NT)_IOBase__closedr   ru   s    r   rC   zIOBase.close  sM    	 } 	%%

 $$$$$		% 	%s   ' 	0c                     	 	 | j         }n# t          $ r Y d S w xY w|rd S t          r|                                  d S 	 |                                  d S #  Y d S xY wr}   )closedr=   _IOBASE_EMITS_UNRAISABLErC   )rk   r   s     r   __del__zIOBase.__del__  s    )	[FF 	 	 	 FF	
  	F# 	JJLLLLL

s    
A Ac                     	 dS NFre   ru   s    r   seekablezIOBase.seekable  s    	
 ur   c                 V    	 |                                  st          |dn|          d S )NzFile or stream is not seekable.)r   rb   rk   msgs     r   _checkSeekablezIOBase._checkSeekable  J    	}} 	@&*-+ (I'H;>@ @ @	@ 	@r   c                     	 dS r   re   ru   s    r   readablezIOBase.readable      	 ur   c                 V    	 |                                  st          |dn|          d S )NzFile or stream is not readable.)r   rb   r   s     r   _checkReadablezIOBase._checkReadable  r   r   c                     	 dS r   re   ru   s    r   writablezIOBase.writable  r   r   c                 V    	 |                                  st          |dn|          d S )NzFile or stream is not writable.)r   rb   r   s     r   _checkWritablezIOBase._checkWritable  r   r   c                     	 | j         S r}   )r   ru   s    r   r   zIOBase.closed  s    	 }r   c                 <    	 | j         rt          |dn|          d S NI/O operation on closed file.r   r4   r   s     r   r   zIOBase._checkClosed  s=    	; 	6 # =<146 6 6	6 	6r   c                 0    	 |                                   | S r}   r~   ru   s    r   	__enter__zIOBase.__enter__  s    Qr   c                 0    	 |                                   d S r}   )rC   )rk   argss     r   __exit__zIOBase.__exit__  s    9

r   c                 2    	 |                      d           d S )Nr:   ro   ru   s    r   r:   zIOBase.fileno  s#    	 	(#####r   c                 0    	 |                                   dS r   r~   ru   s    r   r7   zIOBase.isatty  s     	 	ur   r   c                     	 t           d          r fd}nd }dn3	 j        } |            n # t          $ r t          d          w xY wt	                      }dk     st          |          k     rT                      |                      }|sn4||z  }|                    d          rndk     At          |          k     Tt          |          S )Npeekc                                           d          } | sdS |                     d          dz   pt          |           }dk    rt          |          }|S )Nr      
r   )r   findr3   min)	readaheadnrk   sizes     r   
nreadaheadz#IOBase.readline.<locals>.nreadahead(  s[     IIaLL	  1^^E**Q.A3y>>199AtAr   c                      dS Nr   re   re   r   r   r   z#IOBase.readline.<locals>.nreadahead1  s    qr   r    is not an integerr   r   )	hasattr	__index__r=   r1   	bytearrayr3   readendswithr0   )rk   r   r   
size_indexresr(   s   ``    r   readlinezIOBase.readline  s5   	 4   	        <DD$!^
 "z|| " ? ? ?4 = = =>>>? kkQhh#c((T//		**,,''A 1HC||E""  Qhh#c((T// Szzs	   6 Ac                 .    |                                   | S r}   r~   ru   s    r   __iter__zIOBase.__iter__F  s    r   c                 @    |                                  }|st          |S r}   )r   StopIterationrk   lines     r   __next__zIOBase.__next__J  s"    }} 	 r   c                     	 ||dk    rt          |           S d}g }| D ]1}|                    |           |t          |          z  }||k    r n2|S Nr   )listappendr3   )rk   hintr   linesr   s        r   	readlineszIOBase.readlinesP  st    	 <4199:: 	 	DLLTNADyy r   c                 d    	 |                                   |D ]}|                     |           d S r}   )r   write)rk   r   r   s      r   
writelineszIOBase.writelinesb  sI    	
 	 	 	DJJt	 	r   r   r}   r   )r^   rc   rd   rl   rn   rv   ry   r   r   rC   r   r   r   r   r   r   r   propertyr   r   r   r   r:   r7   r   r   r   r   r   re   r   r   rg   rg   K  s       @D D D" " " "   & & & &   H	% 	% 	%  6  @ @ @ @  @ @ @ @  @ @ @ @   X6 6 6 6  
  $ $ $  ( ( ( (T       $    r   rg   )	metaclassc                   *    e Zd Z	 ddZd Zd Zd ZdS )	RawIOBaser   c                     	 |d}|dk     r|                                  S t          |                                          }|                     |          }|d S ||d = t	          |          S )Nr   r   )readallr   r   readintor0   )rk   r   r(   r   s       r   r   zRawIOBase.read}  sr    	
 <D!88<<>>!dnn&&''MM!94abbEQxxr   c                     	 t                      }	 |                     t                    }|sn||z  }#|rt          |          S |S r}   )r   r   r8   r0   )rk   r   datas      r   r   zRawIOBase.readall  s[    9kk	99011D 4KC		
  	:: Kr   c                 2    	 |                      d           d S )Nr   ro   rk   r(   s     r   r   zRawIOBase.readinto  r{   r   c                 2    	 |                      d           d S Nr   ro   r   s     r   r   zRawIOBase.write  s#    	
 	'"""""r   Nr   )r^   rc   rd   r   r   r   r   re   r   r   r   r   o  sX        (   "  & & &# # # # #r   r   )r6   c                   >    e Zd Z	 d
dZd
dZd Zd Zd Zd Zd Z	d	S )BufferedIOBaser   c                 2    	 |                      d           d S Nr   ro   rk   r   s     r   r   zBufferedIOBase.read  s#    	" 	&!!!!!r   c                 2    	 |                      d           d S )Nread1ro   r   s     r   r   zBufferedIOBase.read1  s#    	 	'"""""r   c                 2    	 |                      |d          S )NFr   	_readintor   s     r   r   zBufferedIOBase.readinto  s    		 ~~au~---r   c                 2    	 |                      |d          S )NTr   r   r   s     r   	readinto1zBufferedIOBase.readinto1  s    	 ~~at~,,,r   c                 2   t          |t                    st          |          }|                    d          }|r#|                     t	          |                    }n"|                     t	          |                    }t	          |          }||d |<   |S NB)r+   
memoryviewcastr   r3   r   )rk   r(   r   r   r   s        r   r   zBufferedIOBase._readinto  s    !Z(( 	1AFF3KK 	%::c!ff%%DD99SVV$$DII"1"r   c                 2    	 |                      d           d S r   ro   r   s     r   r   zBufferedIOBase.write  s#    	 	'"""""r   c                 2    	 |                      d           d S Ndetachro   ru   s    r   r   zBufferedIOBase.detach  #    	 	(#####r   Nr   )
r^   rc   rd   r   r   r   r   r   r   r   re   r   r   r   r     s        " " " "(# # # #. . .	- 	- 	-  	# 	# 	#$ $ $ $ $r   r   c                       e Zd Z	 d ZddZd ZddZd Zd Zd	 Z	d
 Z
ed             Zed             Zed             Zed             Zd Zd Zd Zd ZdS )_BufferedIOMixinc                     || _         d S r}   _rawrk   rQ   s     r   __init__z_BufferedIOMixin.__init__$  s    			r   r   c                 f    | j                             ||          }|dk     rt          d          |S )Nr   z#seek() returned an invalid position)rQ   rn   r<   )rk   rq   rr   new_positions       r   rn   z_BufferedIOMixin.seek)  s7    x}}S&11!?@@@r   c                 b    | j                                         }|dk     rt          d          |S )Nr   z#tell() returned an invalid position)rQ   rv   r<   rz   s     r   rv   z_BufferedIOMixin.tell/  s.    hmmoo77?@@@
r   Nc                     |                                   |                                  |                                  ||                                 }| j                            |          S r}   )r   r   r   rv   rQ   ry   rz   s     r   ry   z_BufferedIOMixin.truncate5  s_    
 	

;))++C x  %%%r   c                 d    | j         rt          d          | j                                         d S )Nflush on closed file)r   r4   rQ   r   ru   s    r   r   z_BufferedIOMixin.flushF  s3    ; 	53444r   c                     | j         U| j        sP	 |                                  | j                                          d S # | j                                          w xY wd S d S r}   )rQ   r   r   rC   ru   s    r   rC   z_BufferedIOMixin.closeK  sa    8!

           	   ? Ac                 v    | j         t          d          |                                  | j        }d | _        |S )Nzraw stream already detached)rQ   r4   r   r   r   s     r   r   z_BufferedIOMixin.detachS  s9    8:;;;

i	
r   c                 4    | j                                         S r}   )rQ   r   ru   s    r   r   z_BufferedIOMixin.seekable]      x  """r   c                     | j         S r}   r   ru   s    r   rQ   z_BufferedIOMixin.raw`  s
    yr   c                     | j         j        S r}   )rQ   r   ru   s    r   r   z_BufferedIOMixin.closedd  s    xr   c                     | j         j        S r}   )rQ   r_   ru   s    r   r_   z_BufferedIOMixin.nameh      x}r   c                     | j         j        S r}   )rQ   rB   ru   s    r   rB   z_BufferedIOMixin.model  r  r   c                 <    t          d| j        j        d          Nzcannot pickle z objectr1   rj   r^   ru   s    r   __getstate__z_BufferedIOMixin.__getstate__p  !    K)@KKKLLLr   c                     | j         j        }| j         j        }	 | j        }d                    |||          S # t
          $ r d                    ||          cY S w xY w)Nz<{}.{} name={!r}>z<{}.{}>)rj   rc   rd   r_   formatr=   )rk   modnameclsnamer_   s       r   __repr__z_BufferedIOMixin.__repr__s  sv    .+.-	F9D '--gwEEE  	6 	6 	6##GW55555	6s   8  AAc                 4    | j                                         S r}   )rQ   r:   ru   s    r   r:   z_BufferedIOMixin.fileno      x   r   c                 4    | j                                         S r}   )rQ   r7   ru   s    r   r7   z_BufferedIOMixin.isatty  r  r   r   r}   )r^   rc   rd   r   rn   rv   ry   r   rC   r   r   r   rQ   r   r_   rB   r
  r  r:   r7   re   r   r   r   r     sI         
     & & & &"  
! ! !  # # #   X   X   X   XM M MF F F! ! !! ! ! ! !r   r   c                   |     e Zd Z	 dZddZd Zd Zd Z fdZddZ	dd	Z
d
 ZddZd ZddZd Zd Zd Z xZS )BytesIONc                 L    t                      }|||z  }|| _        d| _        d S r   )r   _buffer_pos)rk   initial_bytesbufs      r   r   zBytesIO.__init__  s-    kk$= C			r   c                 `    | j         rt          d          | j                                        S )Nz__getstate__ on closed file)r   r4   __dict__copyru   s    r   r
  zBytesIO.__getstate__  s/    ; 	<:;;;}!!###r   c                 X    	 | j         rt          d          t          | j                  S )Nzgetvalue on closed file)r   r4   r0   r  ru   s    r   getvaluezBytesIO.getvalue  s0    	; 	86777T\"""r   c                 X    	 | j         rt          d          t          | j                  S )Nzgetbuffer on closed file)r   r4   r   r  ru   s    r   	getbufferzBytesIO.getbuffer  s0    	; 	97888$,'''r   c                     | j         | j                                          t                                                       d S r}   )r  clearsuperrC   rk   rj   s    r   rC   zBytesIO.close  s4    <#L   r   r   c                    | j         rt          d          |d}n3	 |j        } |            }n # t          $ r t	          |d          w xY w|dk     rt          | j                  }t          | j                  | j        k    rdS t          t          | j                  | j        |z             }| j        | j        |         }|| _        t          |          S )Nread from closed filer   r   r   r   )
r   r4   r   r=   r1   r3   r  r  r   r0   )rk   r   r   newposr(   s        r   r   zBytesIO.read  s    ; 	64555<DD$!^
 "z|| " ? ? ?4 = = =>>>? !88t|$$Dt|	))3S&&	D(899LV+,	Qxx	   / Ac                 .    	 |                      |          S r}   )r   r   s     r   r   zBytesIO.read1  s    	yyr   c                    | j         rt          d          t          |t                    rt	          d          t          |          5 }|j        }d d d            n# 1 swxY w Y   |dk    rdS | j        }|t          | j	                  k    r*d|t          | j	                  z
  z  }| xj	        |z  c_	        || j	        |||z   <   | xj        |z  c_        |S )Nwrite to closed file can't write str to binary streamr       )
r   r4   r+   r/   r1   r   nbytesr  r3   r  )rk   r(   viewr   rq   paddings         r   r   zBytesIO.write  s   ; 	53444a 	@>???]] 	dA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	661iT\"""" s4<'8'8!89GLLG#LL$%Sq[!		Q		s   
AA"%A"r   c                    | j         rt          d          	 |j        } |            }n # t          $ r t	          |d          w xY w|dk    r |dk     rt          d|          || _        nd|dk    rt          d| j        |z             | _        n@|dk    r+t          dt          | j                  |z             | _        nt          d          | j        S )Nzseek on closed filer   r   negative seek position r   r   zunsupported whence value)	r   r4   r   r=   r1   r  maxr3   r  )rk   rq   rr   	pos_indexs       r   rn   zBytesIO.seek  s    ; 	42333	I )++CC  	: 	: 	:s888999	: Q;;Qww j!EFFFDIIq[[Aty3//DIIq[[As4<003677DII7888ys	   * Ac                 <    | j         rt          d          | j        S )Ntell on closed file)r   r4   r  ru   s    r   rv   zBytesIO.tell  s#    ; 	42333yr   c                     | j         rt          d          || j        }nK	 |j        } |            }n # t          $ r t          |d          w xY w|dk     rt          d|          | j        |d = |S )Nztruncate on closed filer   r   znegative truncate position )r   r4   r  r   r=   r1   r  )rk   rq   r5  s      r   ry   zBytesIO.truncate  s    ; 	86777;)CC"M	  ikk " > > >3 < < <===> Qww jCC!IJJJL
s	   4 Ac                 2    | j         rt          d          dS Nr   Tr   ru   s    r   r   zBytesIO.readable       ; 	><===tr   c                 2    | j         rt          d          dS r:  r   ru   s    r   r   zBytesIO.writable
  r;  r   c                 2    | j         rt          d          dS r:  r   ru   s    r   r   zBytesIO.seekable  r;  r   r}   r   r   )r^   rc   rd   r  r   r
  r  r!  rC   r   r   r   rn   rv   ry   r   r   r   __classcell__rj   s   @r   r  r    s       F G   $ $ $
# # #( ( (    
   *   
  &   *  
   "  
  
      r   r  c                   b    e Zd Z	 efdZd Zd ZddZddZddZ	dd	Z
ddZd Zd ZddZdS )r@   c                 
   	 |                                 st          d          t                              | |           |dk    rt	          d          || _        |                                  t                      | _        d S )Nz "raw" argument must be readable.r   invalid buffer size)	r   r<   r   r   r4   buffer_size_reset_read_bufLock
_read_lockrk   rQ   rC  s      r   r   zBufferedReader.__init__   s    	||~~ 	><===!!$,,,!2333&&&r   c                 4    | j                                         S r}   )rQ   r   ru   s    r   r   zBufferedReader.readable-  r  r   c                 "    d| _         d| _        d S )Nr   r   )	_read_buf	_read_posru   s    r   rD  zBufferedReader._reset_read_buf0  s    r   Nc                     	 ||dk     rt          d          | j        5  |                     |          cd d d            S # 1 swxY w Y   d S )Nr   zinvalid number of bytes to read)r4   rF  _read_unlockedr   s     r   r   zBufferedReader.read4  s    	 r		>???_ 	- 	-&&t,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   AA	Ac                    d}d}| j         }| j        }||dk    r|                                  t          | j        d          r4| j                                        }|||d          pd S ||d          |z   S ||d          g}d}	 | j                                        }||v r|}n(|t          |          z  }|                    |           Hd	                    |          p|S t          |          |z
  }	||	k    r| xj        |z  c_        ||||z            S ||d          g}t          | j        |          }
|	|k     rN| j                            |
          }||v r|}n-|	t          |          z  }	|                    |           |	|k     Nt          ||	          }d	                    |          }||d          | _         d| _        |r
|d |         n|S )Nr   )r   Nr   r   r   )rJ  rK  rD  r   rQ   r   r   r3   r   joinr4  rC  r   )rk   r   
nodata_valempty_valuesr  rq   chunkchunkscurrent_sizeavailwantedouts               r   rM  zBufferedReader._read_unlockedA  s   
"nn 9R  """tx++ -((**=stt9,,stt9u,,#$$i[FL%L((!&JE

*e$$$% 88F##1z1 C3::NNaNNs3q5y>! cdd)T%q))aiiHMM&))E$$"
SZZEMM%    aii 5MMhhvQRR-s2A2ww:-r   r   c                 p    	 | j         5  |                     |          cd d d            S # 1 swxY w Y   d S r}   )rF  _peek_unlockedr   s     r   r   zBufferedReader.peeku  s    	 _ 	- 	-&&t,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   +//c                 6   t          || j                  }t          | j                  | j        z
  }||k     s|dk    rI| j        |z
  }| j                            |          }|r#| j        | j        d          |z   | _        d| _        | j        | j        d          S r   )r   rC  r3   rJ  rK  rQ   r   )rk   r   wanthaveto_readcurrents         r   rY  zBufferedReader._peek_unlocked  s    1d&''4>""T^3$;;$!))&-GhmmG,,G #!%!@7!J!"~dnoo..r   r   c           	         	 |dk     r| j         }|dk    rdS | j        5  |                     d           |                     t	          |t          | j                  | j        z
                      cd d d            S # 1 swxY w Y   d S )Nr   r   r   )rC  rF  rY  rM  r   r3   rJ  rK  r   s     r   r   zBufferedReader.read1  s    J !88#D1993_ 	A 	A"""&&D#dn-->??A A	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   AA==BBc                    	 t          |t                    st          |          }|j        dk    rdS |                    d          }d}| j        5  |t          |          k     rt          t          | j                  | j        z
  t          |                    }|rM| j        | j        | j        |z            ||||z   <   | xj        |z  c_        ||z  }|t          |          k    rnxt          |          |z
  | j	        k    r+| j
                            ||d                    }|sn8||z  }n|r|s|                     d          sn|r|rn|t          |          k     d d d            n# 1 swxY w Y   |S )Nr   r   r   )r+   r   r/  r   rF  r3   r   rJ  rK  rC  rQ   r   rY  )rk   r  r   writtenrU  r   s         r   r   zBufferedReader._readinto  s   @
 #z** 	"S//C:??1hhsmm_ 	 	CHH$$ C//$.@#c((KK t~dnU6J'JK -.NNe+NNu$G#c((** s88g%(888))#ghh-88A qLGG   G ..q11   W 9 CHH$$	 	 	 	 	 	 	 	 	 	 	 	 	 	 	> s   DE//E36E3c                     t          t                              |           t          | j                  z
  | j        z   d          S r   )r4  r   rv   r3   rJ  rK  ru   s    r   rv   zBufferedReader.tell  s8    #((..T^1D1DDt~UWXYYYr   c                 "   |t           vrt          d          | j        5  |dk    r|t          | j                  | j        z
  z  }t                              | ||          }|                                  |cd d d            S # 1 swxY w Y   d S )Ninvalid whence valuer   )	valid_seek_flagsr4   rF  r3   rJ  rK  r   rn   rD  rp   s      r   rn   zBufferedReader.seek  s    )))3444_ 	 	{{s4>**T^;;"''c6::C  """	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ABBBr}   r   r   )r^   rc   rd   r8   r   r   rD  r   rM  r   rY  r   r   rv   rn   re   r   r   r@   r@     s         )< ! ! ! !# # #  - - - -2. 2. 2. 2.h- - - -	/ 	/ 	/ 	/A A A A$, , ,\Z Z Z     r   r@   c                   N    e Zd Z	 efdZd Zd ZddZd Zd Z	d Z
dd
Zd ZdS )r?   c                    |                                 st          d          t                              | |           |dk    rt	          d          || _        t                      | _        t                      | _	        d S )Nz "raw" argument must be writable.r   rB  )
r   r<   r   r   r4   rC  r   
_write_bufrE  _write_lockrG  s      r   r   zBufferedWriter.__init__  sv    ||~~ 	><===!!$,,,!2333&#++66r   c                 4    | j                                         S r}   )rQ   r   ru   s    r   r   zBufferedWriter.writable  r  r   c                     t          |t                    rt          d          | j        5  | j        rt          d          t          | j                  | j        k    r| 	                                 t          | j                  }| j        
                    |           t          | j                  |z
  }t          | j                  | j        k    r	 | 	                                 n# t          $ r|}t          | j                  | j        k    rUt          | j                  | j        z
  }||z  }| j        d | j                 | _        t          |j        |j        |          Y d }~nd }~ww xY w|cd d d            S # 1 swxY w Y   d S )Nr-  r,  )r+   r/   r1   ri  r   r4   r3   rh  rC  _flush_unlockedextendBlockingIOErrorerrnostrerror)rk   r(   beforera  eoverages         r   r   zBufferedWriter.write  s   a 	@>??? 	 	{ 9 !7888 4?##d&666 $$&&&))FO""1%%%$/**V3G4?##d&666	L((****& L L L4?++d.>>> #&do"6"69I"I7**./:K4;K:K*L-agqz7KKK ?>>>>L /	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s=   B*FC,+F,
E26A2E-(F-E22FF
FNc                     | j         5  |                                  || j                                        }| j                            |          cd d d            S # 1 swxY w Y   d S r}   )ri  rl  rQ   rv   ry   rz   s     r   ry   zBufferedWriter.truncate  s     	* 	*  """{hmmoo8$$S))		* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   A	AA"%A"c                 n    | j         5  |                                  d d d            d S # 1 swxY w Y   d S r}   )ri  rl  ru   s    r   r   zBufferedWriter.flush  s     	# 	#  """	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   *..c                 v   | j         rt          d          | j        r	 | j                            | j                  }n# t
          $ r t          d          w xY w|t          t          j        dd          |t          | j                  k    s|dk     rt          d          | j        d |= | j        d S d S )Nr   zHself.raw should implement RawIOBase: it should not raise BlockingIOErrorz)write could not complete without blockingr   z*write() returned incorrect number of bytes)r   r4   rh  rQ   r   rn  RuntimeErrorro  EAGAINr3   r<   rk   r   s     r   rl  zBufferedWriter._flush_unlocked  s    ; 	53444o 	$GHNN4?33" G G G" $F G G GG y%L?D D D 3t''''1q55JKKK# o 	$ 	$ 	$ 	$ 	$s	   ? Ac                 `    t                               |           t          | j                  z   S r}   )r   rv   r3   rh  ru   s    r   rv   zBufferedWriter.tell'  s%    $$T**S-A-AAAr   r   c                     |t           vrt          d          | j        5  |                                  t                              | ||          cd d d            S # 1 swxY w Y   d S )Nrd  )re  r4   ri  rl  r   rn   rp   s      r   rn   zBufferedWriter.seek*  s    )))3444 	< 	<  """#((sF;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   0AA!$A!c                    | j         5  | j        | j        r	 d d d            d S 	 d d d            n# 1 swxY w Y   	 |                                  | j         5  | j                                         d d d            d S # 1 swxY w Y   d S # | j         5  | j                                         d d d            w # 1 swxY w Y   w xY wr}   )ri  rQ   r   r   rC   ru   s    r   rC   zBufferedWriter.close1  s    	 	x4;	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 		!JJLLL! ! !   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !! ! !   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !sM   266B B  BBCB;/C;B??CB?Cr}   r   )r^   rc   rd   r8   r   r   r   ry   r   rl  rv   rn   rC   re   r   r   r?   r?     s         )< 	" 	" 	" 	"# # #  8* * * *# # #$ $ $"B B B< < < <! ! ! ! !r   r?   c                   x    e Zd Z	 efdZddZd Zd ZddZddZ	d	 Z
d
 Zd Zd Zd Zd Zed             ZdS )BufferedRWPairc                     	 |                                 st          d          |                                st          d          t          ||          | _        t          ||          | _        d S )Nz#"reader" argument must be readable.z#"writer" argument must be writable.)r   r<   r   r@   readerr?   writer)rk   r  r  rC  s       r   r   zBufferedRWPair.__init__Q  ss    	    	A?@@@   	A?@@@$V[99$V[99r   r   c                 >    |d}| j                             |          S Nr   )r  r   r   s     r   r   zBufferedRWPair.read_  s"    <D{%%%r   c                 6    | j                             |          S r}   )r  r   r   s     r   r   zBufferedRWPair.readintod  s    {##A&&&r   c                 6    | j                             |          S r}   )r  r   r   s     r   r   zBufferedRWPair.writeg  s    {  ###r   r   c                 6    | j                             |          S r}   )r  r   r   s     r   r   zBufferedRWPair.peekj  s    {%%%r   c                 6    | j                             |          S r}   )r  r   r   s     r   r   zBufferedRWPair.read1m  s    {  &&&r   c                 6    | j                             |          S r}   )r  r   r   s     r   r   zBufferedRWPair.readinto1p  s    {$$Q'''r   c                 4    | j                                         S r}   )r  r   ru   s    r   r   zBufferedRWPair.readables      {##%%%r   c                 4    | j                                         S r}   )r  r   ru   s    r   r   zBufferedRWPair.writablev  r  r   c                 4    | j                                         S r}   )r  r   ru   s    r   r   zBufferedRWPair.flushy  s    {  """r   c                     	 | j                                          | j                                         d S # | j                                         w xY wr}   )r  rC   r  ru   s    r   rC   zBufferedRWPair.close|  sO    	 KKDKs	   6 Ac                 f    | j                                         p| j                                        S r}   )r  r7   r  ru   s    r   r7   zBufferedRWPair.isatty  s)    {!!##;t{'9'9';';;r   c                     | j         j        S r}   )r  r   ru   s    r   r   zBufferedRWPair.closed      {!!r   Nr   r   )r^   rc   rd   r8   r   r   r   r   r   r   r   r   r   r   rC   r7   r   r   re   r   r   r~  r~  A  s       	 4G : : : :& & & &
' ' '$ $ $& & & &' ' ' '( ( (& & && & &# # #     < < < " " X" " "r   r~  c                   Z    e Zd Z	 efdZddZd ZddZddZd Z	dd	Z
ddZd Zd ZdS )r>   c                     |                                  t                              | ||           t                              | ||           d S r}   )r   r@   r   r?   rG  s      r   r   zBufferedRandom.__init__  sJ    c;777c;77777r   r   c                    |t           vrt          d          |                                  | j        rT| j        5  | j                            | j        t          | j                  z
  d           d d d            n# 1 swxY w Y   | j                            ||          }| j        5  | 	                                 d d d            n# 1 swxY w Y   |dk     rt          d          |S )Nrd  r   r   z seek() returned invalid position)re  r4   r   rJ  rF  rQ   rn   rK  r3   rD  r<   rp   s      r   rn   zBufferedRandom.seek  sm   )))3444

> 	G G Gdns4>/B/BBAFFFG G G G G G G G G G G G G G G hmmC((_ 	# 	#  """	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#77<===
s#   6A==BB*CCCc                 x    | j         rt                              |           S t                              |           S r}   )rh  r?   rv   r@   ru   s    r   rv   zBufferedRandom.tell  s4    ? 	-!&&t,,,!&&t,,,r   Nc                 d    ||                                  }t                              | |          S r}   )rv   r?   ry   rz   s     r   ry   zBufferedRandom.truncate  s*    ;))++C&&tS111r   c                 h    |d}|                                   t                              | |          S r  )r   r@   r   r   s     r   r   zBufferedRandom.read  s/    <D

""4...r   c                 `    |                                   t                              | |          S r}   )r   r@   r   r   s     r   r   zBufferedRandom.readinto  s%    

&&tQ///r   c                 `    |                                   t                              | |          S r}   )r   r@   r   r   s     r   r   zBufferedRandom.peek  s%    

""4...r   r   c                 `    |                                   t                              | |          S r}   )r   r@   r   r   s     r   r   zBufferedRandom.read1  s%    

##D$///r   c                 `    |                                   t                              | |          S r}   )r   r@   r   r   s     r   r   zBufferedRandom.readinto1  s%    

''a000r   c                    | j         rh| j        5  | j                            | j        t          | j                   z
  d           |                                  d d d            n# 1 swxY w Y   t                              | |          S r   )	rJ  rF  rQ   rn   rK  r3   rD  r?   r   r   s     r   r   zBufferedRandom.write  s    > 	' ' 'dns4>/B/BBAFFF$$&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ##D!,,,s   A
A%%A),A)r   r}   r   )r^   rc   rd   r8   r   rn   rv   ry   r   r   r   r   r   r   re   r   r   r>   r>     s         )< 8 8 8 8
   "- - -2 2 2 2/ / / /0 0 0/ / / /0 0 0 01 1 1- - - - -r   r>   c                        e Zd ZdZdZdZdZdZdZdZ	ddZ
d Zd Zd	 Zd
 ZddZddZd Zd Zd ZefdZd ZddZ fdZd Zd Zd Zd Zd Zed             Zed             Z  xZ!S )r6   r   FNTr   c                 n   	 | j         dk    r5	 | j        rt          j        | j                    d| _         n# d| _         w xY wt	          |t
                    rt          d          t	          |t                    r|}|dk     rt          d          nd}t	          |t                    st          d|          t          |          t          d          k    st          d|          t          d |D                       dk    s|                    d	          dk    rt          d
          d|v r(d| _        d| _        t          j        t          j        z  }n^d|v r
d| _        d}nPd|v r!d| _        t          j        t          j        z  }n+d|v r'd| _        d| _        t          j        t          j        z  }d	|v rd| _        d| _        | j        r| j        r|t          j        z  }n&| j        r|t          j        z  }n|t          j        z  }|t1          t          dd          z  }t1          t          dd          pt1          t          dd          }||z  }d }	 |dk     r|st          d          |t          j        ||d          }nE |||          }t	          |t                    st          d          |dk     rt5          d          |}|st          j        |d           || _        t          j        |          }		 t;          j        |	j                  r7tA          tB          j"        t          j#        tB          j"                  |          n# tH          $ r Y nw xY wt1          |	dd          | _%        | j%        dk    rtL          | _%        tN          rtO          |t          j(                   || _)        | j        rJ	 t          j*        |dtV                     n-# t4          $ r }
|
j!        tB          j,        k    r Y d }
~
nd }
~
ww xY wn#  |t          j        |            xY w|| _         d S )Nr   r   z$integer argument expected, got floatznegative file descriptorzinvalid mode: zxrwab+c              3      K   | ]}|d v V  	dS )rwaxNre   ).0cs     r   	<genexpr>z"FileIO.__init__.<locals>.<genexpr>  s&      ))qqF{))))))r   r   r&   zKMust have exactly one of create/read/write/append mode and at most one plusr#   Tr   r$   r%   O_BINARYO_NOINHERIT	O_CLOEXECz'Cannot use closefd=False with file namei  zexpected integer from openerzNegative file descriptorFr;   )-_fd_closefdr-   rC   r+   floatr1   r,   r4   r/   r2   sumcount_created	_writableO_EXCLO_CREAT	_readableO_TRUNC
_appendingO_APPENDO_RDWRO_RDONLYO_WRONLYgetattrrV   r<   set_inheritabler9   statS_ISDIRst_modeIsADirectoryErrorro  EISDIRrp  r=   _blksizer8   _setmoder  r_   lseekr
   ESPIPE)rk   rD   rB   rH   r*   fdr   noinherit_flagowned_fdfdfstatrr  s              r   r   zFileIO.__init__  s   	 8q=== 'HTX&&&2dE"" 	DBCCCdC   	BAvv !;<<<  B$$$ 	:)$$89994yyCMM))*449:::))D)))))Q..$**S//A2E2E 9 : : : $;; DM!DNI
*EED[[!DNEED[[!DNJ+EED[[!DN"DOK"*,E$;;!DN!DN> 	!dn 	!RYEE^ 	!R[ EER[ EZ+++!"mQ77 6!"k155 	/	Avv P$%NOOO>ue44BBe,,B%b#.. H'(FGGGAvv%&@AAA% 2&r5111#DMhrllG<00 M+EL,.K,E,EtM M MM "     $G\1==DM}!! 3 *R[)))DI HRH----   w%,.. /....	#"""se    6 	? B)P 
AM P 
M(%P 'M((AP O$ #P $
P.P	P 	PP P+c                     | j         dk    rI| j        rD| j        s?dd l}|                    d| t
          d|            |                                  d S d S d S d S )Nr   zunclosed file r   )r   source)r  r  r   r   r   ResourceWarningrC   )rk   r   s     r   r   zFileIO.__del__V  sm    8q==T]=4;=OOOMMM6%&t  5 5 5JJLLLLL	 =====r   c                 <    t          d| j        j        d          r  r	  ru   s    r   r
  zFileIO.__getstate__]  r  r   c           	          | j         j        d| j         j        }| j        rd|z  S 	 | j        }d|d|d| j        d| j        d	S # t          $ r d|| j        | j        | j        fz  cY S w xY w)	Nri   z<%s [closed]><z name=z mode=z	 closefd=>z<%s fd=%d mode=%r closefd=%r>)	rj   rc   rd   r   r_   rB   r  r=   r  )rk   
class_namer_   s      r   r  zFileIO.__repr__`  s     $ 9 9 9 $ ; ;=
; 	0"Z//	B9DD  ZZtyyy$---A B	  	F 	F 	F349dmDE F F F	Fs   A	 	"A.-A.c                 2    | j         st          d          d S )NzFile not open for reading)r  rb   ru   s    r   r   zFileIO._checkReadablen  (    ~ 	D&'BCCC	D 	Dr   c                 2    | j         st          d          d S )NzFile not open for writing)r  rb   r   s     r   r   zFileIO._checkWritabler  r  r   c                     	 |                                   |                                  ||dk     r|                                 S 	 t          j        | j        |          S # t          $ r Y d S w xY wr   )r   r   r   r-   r   r  rn  r   s     r   r   zFileIO.readv  s    	 	<4!88<<>>!	748T*** 	 	 	44	s   A! !
A/.A/c                 f   	 |                                   |                                  t          }	 t          j        | j        dt                    }t          j        | j                  j        }||k    r||z
  dz   }n# t          $ r Y nw xY wt                      }	 t          |          |k    r't          |          }|t          |t                    z  }|t          |          z
  }	 t          j        | j        |          }n# t          $ r |rY nY d S w xY w|sn||z  }t          |          S rt   )r   r   r8   r-   r  r  r	   r9   st_sizer<   r   r3   r4  r   rn  r0   )rk   bufsizerq   endrR   r   rR  s          r   r   zFileIO.readall  sZ   	
 	%	(48Q11C(48$$,Cczz)a- 	 	 	D	 	6{{g%%f++3w(;<<<#f++%A!,,"    Ett  eOF	 V}}s$   AA? ?
BB+D DDc                     	 t          |                              d          }|                     t          |                    }t          |          }||d |<   |S r   )r   r   r   r3   )rk   r(   mr   r   s        r   r   zFileIO.readinto  sR    +qMMs##yyQ  II"1"r   c                     	 |                                   |                                  	 t          j        | j        |          S # t
          $ r Y d S w xY wr}   )r   r   r-   r   r  rn  r   s     r   r   zFileIO.write  sh    	 		8DHa((( 	 	 	44	s   A 
AAc                     	 t          |t                    rt          d          |                                  t	          j        | j        ||          S )Nzan integer is required)r+   r  r1   r   r-   r  r  rp   s      r   rn   zFileIO.seek  sR    		 c5!! 	64555x#v...r   c                 l    	 |                                   t          j        | j        dt                    S r   )r   r-   r  r  r	   ru   s    r   rv   zFileIO.tell  s1    	5 	x!X...r   c                     	 |                                   |                                  ||                                 }t          j        | j        |           |S r}   )r   r   rv   r-   	ftruncater  r   s     r   ry   zFileIO.truncate  sX    	
 	<99;;D
TXt$$$r   c                     	 | j         sh	 | j        rt          j        | j                   t                                                       d S # t                                                       w xY wd S r}   )r   r  r-   rC   r  r$  r%  s    r   rC   zFileIO.close  sj    	
 { 	  = 'HTX&&&	  	 s    A "A/c                     	 |                                   | j        4	 |                                  d| _        n# t          $ r
 d| _        Y nw xY w| j        S )NTF)r   	_seekablerv   r<   ru   s    r   r   zFileIO.seekable  sn    2>!&		 "&  ' ' '!&' ~s   : AAc                 :    	 |                                   | j        S r}   )r   r  ru   s    r   r   zFileIO.readable  s    5~r   c                 :    	 |                                   | j        S r}   )r   r  ru   s    r   r   zFileIO.writable  s    6~r   c                 :    	 |                                   | j        S r}   )r   r  ru   s    r   r:   zFileIO.fileno  s    Axr   c                 ^    	 |                                   t          j        | j                  S r}   )r   r-   r7   r  ru   s    r   r7   zFileIO.isatty  s)    <y"""r   c                     	 | j         S r}   )r  ru   s    r   rH   zFileIO.closefd  s    D}r   c                 t    	 | j         r| j        rdS dS | j        r| j        rdS dS | j        r| j        rdS dS dS )Nzxb+xbzab+abzrb+rX   wb)r  r  r  r  ru   s    r   rB   zFileIO.mode  sd    )= 	~ ut_ 	~ ut^ 	~ ut4r   )r   TNr}   )"r^   rc   rd   r  r  r  r  r  r  r  r   r   r
  r  r   r   r   r   r   r   r   rn   rv   ry   rC   r   r   r   r:   r7   r   rH   rB   r>  r?  s   @r   r6   r6     s       
CHIIJIHw w w wr  M M MB B BD D DD D D D    ! ! !F      ( / / / / / / /            
 
 
  
  
  
# # #
   X   X    r   r6   c                   t    e Zd Z	 ddZd ZddZd Zd Zed             Z	ed	             Z
ed
             ZdS )
TextIOBaser   c                 2    	 |                      d           d S r   ro   r   s     r   r   zTextIOBase.read3  s#    	 	&!!!!!r   c                 2    	 |                      d           d S r   ro   )rk   ss     r   r   zTextIOBase.write=  s    <'"""""r   Nc                 2    	 |                      d           d S rx   ro   rz   s     r   ry   zTextIOBase.truncateA  s    8*%%%%%r   c                 2    	 |                      d           d S )Nr   ro   ru   s    r   r   zTextIOBase.readlineE  s#    	 	*%%%%%r   c                 2    	 |                      d           d S r   ro   ru   s    r   r   zTextIOBase.detachL  r   r   c                     	 d S r}   re   ru   s    r   r   zTextIOBase.encodingU  s
    )tr   c                     	 d S r}   re   ru   s    r   newlineszTextIOBase.newlinesZ  s    	 tr   c                     	 d S r}   re   ru   s    r   rF   zTextIOBase.errorsd  s    	' tr   r   r}   )r^   rc   rd   r   r   ry   r   r   r   r   r  rF   re   r   r   r  r  +  s        " " " "# # #& & & && & &$ $ $   X   X   X  r   r  c                   T    e Zd Z	 ddZddZd Zd Zd ZdZd	Z	d
Z
ed             ZdS )IncrementalNewlineDecoderstrictc                     t           j                            | |           || _        || _        d| _        d| _        d S )N)rF   r   F)codecsIncrementalDecoderr   	translatedecoderseennl	pendingcr)rk   r  r  rF   s       r   r   z"IncrementalNewlineDecoder.__init__u  s>    !**4*???"r   Fc                    | j         |}n| j                             ||          }| j        r|s|rd|z   }d| _        |                    d          r|s|d d         }d| _        |                    d          }|                    d          |z
  }|                    d          |z
  }| xj        |o| j        |o| j        z  |o| j        z  z  c_        | j	        r0|r|
                    dd          }|r|
                    dd          }|S )NfinalFr   T

)r  decoder  r   r  r  _LF_CR_CRLFr  replace)rk   inputr   outputcrlfcrlfs          r   r  z IncrementalNewlineDecoder.decode|  s<   <FF\((e(<<F> 	#v 	# 	#F]F"DN ??4   	" 	"CRC[F!DN ||F##\\$$&\\$$&txBO48<*
, 	, > 	4 655 4d33r   c                 |    | j         d}d}n| j                                         \  }}|dz  }| j        r|dz  }||fS )Nr   r   r   )r  getstater  )rk   r  flags      r   r  z"IncrementalNewlineDecoder.getstate  sS    <CDD--//IC
> 	AIDDyr   c                     |\  }}t          |dz            | _        | j        !| j                            ||dz	  f           d S d S r   )boolr  r  setstate)rk   stater  r  s       r   r  z"IncrementalNewlineDecoder.setstate  sQ    	TdQh<#L!!3	"233333 $#r   c                 f    d| _         d| _        | j        | j                                         d S d S )Nr   F)r  r  r  resetru   s    r   r  zIncrementalNewlineDecoder.reset  s:    <#L      $#r   r   r      c                     d| j                  S )N)Nr  r  )r  r  r  )r  r  )r  r  )r  r  r  )r  ru   s    r   r  z"IncrementalNewlineDecoder.newlines  s      	r   N)r  )F)r^   rc   rd   r   r  r  r  r  r  r  r  r   r  re   r   r   r  r  n  s              >	 	 	4 4 4! ! ! C
CE	 	 X	 	 	r   r  c                      e Zd Z	 dZdZ	 	 d+dZd Z	 	 d+dZd Ze	d             Z
e	d	             Ze	d
             Ze	d             Ze	d             ZddeddddZd Zd Zd Zd Zd Ze	d             Ze	d             Zd Zd Zd Zd Zd Zd Zd,dZd Zd Z d Z!	 	 d-d!Z"d" Z#d# Z$d,d$Z%d% Z&d.d&Z'd,d'Z(d( Z)d,d)Z*e	d*             Z+dS )/rA   i   NFc                    |                      |           t          |          }|dk    r|                                 }t          |t                    st          d|z            t          j        |          j        sd}t          ||z            |d}nBt          |t                    st          d|z            t          rt          j        |           || _        d| _        d| _        d | _        | j                                        x| _        | _        t)          | j        d          | _        |                     |||||           d S )	Nr   r!   zG%r is not a text encoding; use codecs.open() to handle arbitrary codecsr  r"   r)   r   r   )_check_newliner   _get_locale_encodingr+   r/   r4   r  lookup_is_text_encodingLookupError_CHECK_ERRORSlookup_errorr  _decoded_chars_decoded_chars_used	_snapshotrU   r   r  _tellingr   
_has_read1
_configure)rk   rU   r   rF   rG   rS   write_throughr   s           r   r   zTextIOWrapper.__init__  sY   G$$$ **x0022H(C(( 	@3h>???}X&&8 	.BCcHn--->FFfc** @ !5!>??? ,#F+++ #$ )-)=)=)?)??!$+w77&'&	7 	7 	7 	7 	7r   c                     |4t          |t                    st          dt          |                    |dvrt	          d|          d S )Nzillegal newline type: )Nr)   r  r  r  zillegal newline value: )r+   r/   r1   typer4   )rk   rG   s     r   r  zTextIOWrapper._check_newline  s[    z'3'?'?)$w---IJJJ888*GGEFFF 98r   c                    || _         || _        d | _        d | _        d| _        | | _        |d u | _        || _        |dk    | _        |pt          j
        | _        || _        || _        | j        rn|                                 r\| j                                        }|dk    r?	 |                                                     d           d S # t(          $ r Y d S w xY wd S d S d S )N        r)   r   )	_encoding_errors_encoder_decoder	_b2cratio_readuniversal_readtranslate_readnl_writetranslater-   linesep_writenl_line_buffering_write_throughr  r   rU   rv   _get_encoderr  r  )rk   r   rF   rG   rS   r(  positions          r   r'  zTextIOWrapper._configure  s	   !")k%o&"}-2:-+ > 	dmmoo 	{''))H1}}%%''0033333"   DD	 	 	 	}s   #'C 
CCc                 T   d                     | j        j        | j        j                  }	 | j        }|d                     |          z  }n# t
          $ r Y nw xY w	 | j        }|d                     |          z  }n# t
          $ r Y nw xY w|d                     | j                  z   S )Nz<{}.{}z name={0!r}z mode={0!r}z encoding={0!r}>)r  rj   rc   rd   r_   r=   rB   r   )rk   rR   r_   rB   s       r   r  zTextIOWrapper.__repr__/  s    !:!%!<> >	19D m**4000FF  	 	 	D		19D m**4000FF  	 	 	D	 *11$-@@@@s#   A 
AAA= =
B
	B
c                     | j         S r}   )r-  ru   s    r   r   zTextIOWrapper.encoding@  s
    ~r   c                     | j         S r}   )r.  ru   s    r   rF   zTextIOWrapper.errorsD  
    |r   c                     | j         S r}   )r8  ru   s    r   rS   zTextIOWrapper.line_bufferingH  s    ##r   c                     | j         S r}   )r9  ru   s    r   r(  zTextIOWrapper.write_throughL  s    ""r   c                     | j         S r}   )r  ru   s    r   rU   zTextIOWrapper.bufferP  r?  r   )r   rF   rG   rS   r(  c                   	 | j         ||	|t          urt          d          ||| j        }n*d}n't	          |t
                    st          d|z            || j        }nAt	          |t
                    st          d|z            |dk    r|                                 }|t          u r| j	        }| 
                    |           || j        }|| j        }|                                  |                     |||||           d S )NzPIt is not possible to set the encoding or newline of stream after the first readr  r"   r!   r   )r0  Ellipsisrb   r.  r+   r/   r1   r-  r  r4  r  rS   r(  r   r'  )rk   r   rF   rG   rS   r(  s         r   reconfigurezTextIOWrapper.reconfigureT  sM   	 M%)V-?x//&'( ( ( >!FC(( 	;069:::~HHh,, C 6 ABBB8##4466hlGG$$$!!0N  .M

&'&	7 	7 	7 	7 	7r   c                 <    | j         rt          d          | j        S r   )r   r4   r  ru   s    r   r   zTextIOWrapper.seekable  s#    ; 	><===~r   c                 4    | j                                         S r}   )rU   r   ru   s    r   r   zTextIOWrapper.readable  r  r   c                 4    | j                                         S r}   )rU   r   ru   s    r   r   zTextIOWrapper.writable  r  r   c                 P    | j                                          | j        | _        d S r}   )rU   r   r  r%  ru   s    r   r   zTextIOWrapper.flush  s#    r   c                     | j         U| j        sP	 |                                  | j                                          d S # | j                                          w xY wd S d S r}   )rU   r   r   rC   ru   s    r   rC   zTextIOWrapper.close  se    ;"4;"$

!!#####!!####	 #"""r   c                     | j         j        S r}   )rU   r   ru   s    r   r   zTextIOWrapper.closed  r  r   c                     | j         j        S r}   )rU   r_   ru   s    r   r_   zTextIOWrapper.name  s    {r   c                 4    | j                                         S r}   )rU   r:   ru   s    r   r:   zTextIOWrapper.fileno      {!!###r   c                 4    | j                                         S r}   )rU   r7   ru   s    r   r7   zTextIOWrapper.isatty  rN  r   c                    	 | j         rt          d          t          |t                    st	          d|j        j        z            t          |          }| j        s| j	        od|v }|r-| j        r&| j
        dk    r|                    d| j
                  }| j        p|                                 }|                    |          }| j                            |           | j	        r|sd|v r|                                  | j        |                     d           d | _        | j        r| j                                         |S )Nr,  zcan't write %s to text streamr  r  r)   )r   r4   r+   r/   r1   rj   r^   r3   r5  r8  r7  r  r/  r:  encoderU   r   r   r$  _set_decoded_charsr0  r  )rk   r  lengthhaslfencoderr(   s         r   r   zTextIOWrapper.write  sU   &; 	53444!S!! 	2;K01 2 2 2Q%=)=L419 	/T) 	/dmt.C.C		$..A-64#4#4#6#6NN1! 	U 	daiiJJLLL>%##B'''!DN= 	"M!!!r   c                 l    t          j        | j                  } || j                  | _        | j        S r}   )r  getincrementalencoderr-  r.  r/  )rk   make_encoders     r   r:  zTextIOWrapper._get_encoder  s/    3DNCC$T\22}r   c                     t          j        | j                  } || j                  }| j        rt          || j                  }|| _        |S r}   )r  getincrementaldecoderr-  r.  r2  r  r3  r0  )rk   make_decoderr  s      r   _get_decoderzTextIOWrapper._get_decoder  sO    3DNCC,t|,, 	N/9LMMGr   c                 $    	 || _         d| _        d S r   )r"  r#  )rk   charss     r   rR  z TextIOWrapper._set_decoded_chars  s    ,##$   r   c                     	 | j         }|| j        |d          }n| j        |||z            }| xj         t          |          z  c_         |S r}   )r#  r"  r3   )rk   r   offsetr^  s       r   _get_decoded_charsz TextIOWrapper._get_decoded_chars  sZ    5)9'0EE'vz(9:E  CJJ.  r   c                 V    	 dd l }|                                S # t          $ r Y dS w xY w)Nr   r   )r   getencodingImportError)rk   r   s     r   r  z"TextIOWrapper._get_locale_encoding  sH    	(MMM
 %%'''	  	 	 	77	s    
((c                 \    	 | j         |k     rt          d          | xj         |z  c_         d S )Nz"rewind decoded_chars out of bounds)r#  AssertionErrorry  s     r   _rewind_decoded_charsz#TextIOWrapper._rewind_decoded_chars  s<    /#a'' !EFFF  A%    r   c                    	 | j         t          d          | j        r| j                                         \  }}| j        r | j                            | j                  }n| j                            | j                  }| }| j         	                    ||          }| 
                    |           |r*t          |          t          | j                  z  | _        nd| _        | j        r|||z   f| _        | S )Nz
no decoderr,  )r0  r4   r%  r  r&  rU   r   _CHUNK_SIZEr   r  rR  r3   r"  r1  r$  )rk   
dec_buffer	dec_flagsinput_chunkeofdecoded_charss         r   _read_chunkzTextIOWrapper._read_chunk  s   	 = \***= 	= %)M$:$:$<$<!J	
 ? 	=+++D,<==KK+**4+;<<Ko,,[#>>... 	! --D4G0H0HHDNN DN= 	C (k)ABDNwr   r   c                 P    ||dz  z  |dz  z  |dz  z  t          |          dz  z  S )N@            )r  )rk   r;  rk  bytes_to_feedneed_eofchars_to_skips         r   _pack_cookiezTextIOWrapper._pack_cookie	  s?     IrM*mS.@As"$&*8nnc&9: 	;r   c                     t          |d          \  }}t          |d          \  }}t          |d          \  }}t          |d          \  }}|||t          |          |fS )Nl            )divmodr  )rk   bigintrestr;  rk  ru  rv  rw  s           r   _unpack_cookiezTextIOWrapper._unpack_cookie	  sg    ..h u--i$T511m"(u"5"5-M4>>=PPr   c           
         | j         st          d          | j        st          d          |                                  | j                                        }| j        }|| j        | j	        rt          d          |S | j        \  }}|t          |          z  }| j        }|dk    r|                     ||          S |                                }	 t          | j        |z            }d}|dk    r|                    d|f           t          |                    |d |                             }	|	|k    r6|                                \  }
}|
s|}||	z  }n>|t          |
          z  }d}n
||z  }|dz  }|dk    d}|                    d|f           ||z   }|}|dk    r+|                     ||          |                    |           S d}d}d}t'          |t          |                    D ]n}|dz  }|t          |                    |||dz                                z  }|                                \  }}|s||k    r||z  }||z  }|dd}}}||k    r n?o|t          |                    dd	
                    z  }d	}||k     rt          d          |                     |||||          |                    |           S # |                    |           w xY w)N!underlying stream is not seekablez(telling position disabled by next() callzpending decoded textr   r   r   r   FTr  z'can't reconstruct logical file position)r  rb   r%  r<   r   rU   rv   r0  r$  r"  rf  r3   r#  rx  r  r,   r1  r  r  range)rk   r;  r  rk  
next_inputrw  saved_state
skip_bytes	skip_backr   r(   d	start_posstart_flags	bytes_fedrv  chars_decodedirj  s                      r   rv   zTextIOWrapper.tell$	  s   ~ 	L&'JKKK} 	FDEEE

;##%%-?dn4" =$%;<<<O !%	:C
OO# 0A$$Xy999 &&((F	* T^m;<<JIq..  #y!1222z+:+'>??@@%%"++--DAq $%	%*#a&&(J !II )+J )AI# q..& 
  #y!1222 !:-I#K!!((K@@@ [))))5 IHM:s:77 M MQ	W^^Jq1u4E%F%F!G!GG(/(8(8(:(:%
I! Lm}&D&D*I!]2M<Eq!MK M11E 2 W^^Ct^%D%D!E!EE =00!"KLLL $$;	8]L L [))))G[))))s   C'K C(K K(c                     |                                   ||                                 }| j                            |          S r}   )r   rv   rU   ry   rz   s     r   ry   zTextIOWrapper.truncate	  s7    

;))++C{##C(((r   c                 v    | j         t          d          |                                  | j        }d | _        |S )Nzbuffer is already detached)rU   r4   r   r  )rk   rU   s     r   r   zTextIOWrapper.detach	  s9    ;9:::

r   c                 :     fd} j         rt          d           j        st          d          |t          k    r,|dk    rt          d          d}                                 }n|t          k    r|dk    rt          d                                             j        	                    d|          } 
                    d           d  _         j        r j                                          ||           |S |dk    rt          d|d	          |dk     rt          d
|                                                                 |          \  }}}}}	 j        	                    |            
                    d           d  _        |dk    r! j        r j                                         nP j        s|s|	rE j        p                                  _         j                            d|f           |df _        |	r j                            |          }
 
                     j                            |
|                     ||
f _        t'           j                  |	k     rt+          d          |	 _         ||           |S )Nc                     	 	 j         p                                }| dk    r|                    d           d S |                                 d S # t          $ r Y d S w xY wr   )r/  r:  r  r  r  )r;  rU  rk   s     r   _reset_encoderz*TextIOWrapper.seek.<locals>._reset_encoder	  s}    K	$->4+<+<+>+>
 q==$$Q'''''MMOOOOO    s   A 
A A r7  r  r   z#can't do nonzero cur-relative seeksz#can't do nonzero end-relative seeksr)   zunsupported whence ()r3  r   z#can't restore logical file position)r   r4   r  rb   r	   rv   r
   r   rU   rn   rR  r$  r0  r  r}  r\  r  r   r  r3   r"  r<   r#  )rk   cookierr   r  r;  r  rk  ru  rv  rw  rl  s   `          r   rn   zTextIOWrapper.seek	  s   	$ 	$ 	$ 	$ 	$ ; 	42333~ 	L&'JKKKX{{*+PQQQ FYY[[FFx{{*+PQQQJJLLL{''622H##B'''!DN} &##%%%N8$$$OQ;;*&&&BCCCA::*FFDEEE


 '' 	E	9mX} 	###### Q;;4=;M!!!!] 	.i 	.= 	. M@T->->-@-@DMM""C#3444'-DN 
	5+**=99K##$$[(;;= = ='5DN 4&''-77CDDD'4D$vr   c                    |                                   |d}n3	 |j        } |            }n # t          $ r t          |d          w xY w| j        p|                                 }|dk     rh|                                 |                    | j        	                                d          z   }| j
        |                     d           d | _
        |S d}|                     |          }t          |          |k     rT|sR|                                  }||                     |t          |          z
            z  }t          |          |k     r|R|S )Nr   r   r   Tr  r)   F)r   r   r=   r1   r0  r\  ra  r  rU   r   r$  rR  r3   ro  )rk   r   r   r  rR   rm  s         r   r   zTextIOWrapper.read	  sx   <DD$!^
 "z|| " ? ? ?4 = = =>>>? -64#4#4#6#6!88--//nnT[%5%5%7%7tnDDEF~)''+++!%M C,,T22Ff++$$S$**,,,$11$V2DEEE f++$$S$ Ms	   - A
c                 t    d| _         |                                 }|sd | _        | j        | _         t          |S r   )r%  r   r$  r  r   r   s     r   r   zTextIOWrapper.__next__	  s9    }} 	 !DN NDMr   c                    | j         rt          d          |d}n3	 |j        } |            }n # t          $ r t	          |d          w xY w|                                 }d}| j        s|                                  d x}}	 | j        r3|	                    d|          }|dk    r|dz   }nUt          |          }n| j        r{|	                    d|          }|	                    d|          }|dk    r|dk    rt          |          }nk|dz   }n|dk    r|dz   }n||k     r|dz   }n||dz   k    r|d	z   }n|dz   }n|	                    | j                  }|dk    r|t          | j                  z   }n|dk    rt          |          |k    r|}no|                                 r| j        rn|                                 | j        r||                                 z  }n|                     d
           d | _        |S |dk    r||k    r|}|                     t          |          |z
             |d |         S )Nr'  r   r   r   Tr  r   r  r   r)   )r   r4   r   r=   r1   ra  r0  r\  r3  r   r3   r2  r4  ro  r"  rR  r$  rg  )	rk   r   r   r   startrq   endposnlposcrposs	            r   r   zTextIOWrapper.readline
  s   ; 	64555<DD$!^
 "z|| " ? ? ?4 = = =>>>? &&((} 	 f>	" -iie,,!88 1WFIIEE$ $
 		$..		$..B;;{{ #D		 "'b[["QYFU]]"QYFeai''"QYF #QYF ii--!88 3t|#4#44FqyySYY$.. ""$$ &  ""$$  " //111 ''+++!%}>	@ 199$F 	""3t99v#5666GVG}r)  c                 ,    | j         r| j         j        nd S r}   )r0  r  ru   s    r   r  zTextIOWrapper.newlinesc
  s    )-@t}%%D@r   )NNNFFr}   )r   r   Fr   r   ),r^   rc   rd   ri  r  r   r  r'  r  r   r   rF   rS   r(  rU   rD  rE  r   r   r   r   rC   r   r_   r:   r7   r   r:  r\  rR  ra  r  rg  ro  rx  r}  rv   ry   r   rn   r   r   r   r  re   r   r   rA   rA     s-       , K G
 DH5:7 7 7 7BG G G >B7<   HA A A"   X   X $ $ X$ # # X#   X "$#'t)7 )7 )7 )7 )7V  
& & && & &' ' '$ $ $ " " X"     X $ $ $$ $ $  0  
  % % %
   ( ( (& & &( ( (T 01JK; ; ; ;Q Q Qa* a* a*F) ) ) )  I I I IV   :  [ [ [ [z A A XA A Ar   rA   c                   `     e Zd Z	 d	 fd	Zd Zd Zed             Zed             Zd Z	 xZ
S )
StringIOr)   r  c                 x   t          t          |                               t                      dd|           |d| _        |ut          |t                    s4t          d                    t          |          j
                            |                     |           |                     d           d S d S )Nr   surrogatepass)r   rF   rG   Fz*initial_value must be str or None, not {0}r   )r$  r  r   r  r5  r+   r/   r1   r  r*  r^   r   rn   )rk   initial_valuerG   rj   s      r   r   zStringIO.__init__o
  s    h&&wyy07.=/6 	' 	8 	8 	8 ?#(D $mS11 G L!'](;(;(D!E!EG G GJJ}%%%IIaLLLLL %$r   c                 l   |                                   | j        p|                                 }|                                }|                                 	 |                    | j                                        d          |                    |           S # |                    |           w xY w)NTr  )	r   r0  r\  r  r  r  rU   r  r  )rk   r  	old_states      r   r  zStringIO.getvalue
  s    

-64#4#4#6#6$$&&		(>>$+"6"6"8"8>EEY''''GY''''s   -B B3c                 6    t                               |           S r}   )objectr  ru   s    r   r  zStringIO.__repr__
  s     t$$$r   c                     d S r}   re   ru   s    r   rF   zStringIO.errors
      tr   c                     d S r}   re   ru   s    r   r   zStringIO.encoding
  r  r   c                 0    |                      d           d S r   ro   ru   s    r   r   zStringIO.detach
  s    (#####r   )r)   r  )r^   rc   rd   r   r  r  r   rF   r   r   r>  r?  s   @r   r  r  h
  s              ( ( (% % %
   X   X$ $ $ $ $ $ $r   r  )r   )r   r   NNNTN)9r-   abcr  ro  r  r   _threadr   rE  platformmsvcrtr   r  ior   r   r	   r
   re  r   addr   	SEEK_DATAr8   rn  r   dev_moder   r   r   staticmethodrV   rZ   	open_coder=   r`   rb   r<   r4   ABCMetarg   registerr   _ior6   r   r   r  r@   r?   r~  r>   r  r  r  rA   r  re   r   r   <module>r     st   
			 



    



 ) ) ) ) ) )<&&&*******H 				 6 6 6 6 6 6 6 6 6 6 6 699 
72{ '&&&&&&   " $GC);<<R	@R (   B =A,0K K K K^   (II ( ( ('III(K K K$2       w
     
_ _ _ _ _s{ _ _ _ _B	 	  6   ;# ;# ;# ;# ;# ;# ;# ;#z   i             	  6   e$ e$ e$ e$ e$V e$ e$ e$N    > * * *h! h! h! h! h!~ h! h! h!VL L L L Ln L L L^A A A A A% A A AFf! f! f! f! f!% f! f! f!RF" F" F" F" F"^ F" F" F"RG- G- G- G- G-^^ G- G- G-TT T T T TY T T Tn
> > > > > > > >@   z " " "R R R R R 9 R R Rjb
A b
A b
A b
A b
AJ b
A b
A b
AJ0$ 0$ 0$ 0$ 0$} 0$ 0$ 0$ 0$ 0$s$   :C CCC C21C2