£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
U
    e5d                     @   s   d dl m Z  d dlZd dlZd dlZdddgZd ZdZdZd Zdd Z	d	d
 Z
dd Zdd Zdd Zdd Zdd ZeefddZeefddZdS )    )selectNopenptyforkspawn      c               	   C   s>   z
t  W S  ttfk
r"   Y nX t \} }t|}| |fS N)osr   AttributeErrorOSError_open_terminal
slave_open)	master_fd
slave_nameslave_fd r   /usr/lib64/python3.8/pty.pyr      s    

c               	   C   sL   zt  \} }W n ttfk
r(   Y nX t |}t | | |fS t S r   )r	   r   r
   r   ttynamecloser   )r   r   r   r   r   r   master_open"   s    

r   c               
   C   sn   dD ]\} dD ]R}d|  | }zt |t j}W n tk
rF   Y qY nX |d|  | f    S qtdd S )NZpqrstuvwxyzPQRSTZ0123456789abcdefz/dev/ptyz/dev/ttyzout of pty devices)r	   openO_RDWRr   )xyZpty_namefdr   r   r   r   2   s    
r   c                 C   sr   t | t j}zddlm}m} W n tk
r:   | Y S X z|||d |||d W n tk
rl   Y nX |S )Nr   )ioctlI_PUSHZptemZldterm)r	   r   r   Zfcntlr   r   ImportErrorr   )Ztty_nameresultr   r   r   r   r   r   >   s    
r   c               	   C   s   zt  \} }W n ttfk
r(   Y n4X | tkrTzt   W n tk
rR   Y nX | |fS t \}}t  } | tkrt   t | t 	|t
 t 	|t t 	|t |tkrt | t t tt j}t | n
t | | |fS r   )r	   forkptyr
   r   CHILDsetsidr   r   r   dup2STDIN_FILENOSTDOUT_FILENOSTDERR_FILENOr   r   r   )pidr   r   r   Ztmp_fdr   r   r   r   P   s0    



c                 C   s"   |rt | |}||d  }q d S r   )r	   write)r   datanr   r   r   _writenx   s    r*   c                 C   s   t | dS )Ni   )r	   read)r   r   r   r   _read~   s    r,   c                 C   sv   | t g}t|g g \}}}| |krF|| }|s:||  ntt| t |kr|t }|sf|t  qt| | qd S r   )r#   r   remover	   r'   r$   r*   )r   master_read
stdin_readZfdsZrfdsZwfdsZxfdsr(   r   r   r   _copy   s    r0   c                 C   s   t | t dkr| f} td|  t \}}|tkrHtj| d f|   ztt	}t
t	 d}W n tjk
r~   d}Y nX zt||| W n( tk
r   |rtt	tj| Y nX t| t|dd S )N z	pty.spawnr   r   )typesysauditr   r    r	   execlpttyZ	tcgetattrr#   Zsetrawerrorr0   r   Z	tcsetattrZ	TCSAFLUSHr   waitpid)argvr.   r/   r&   r   modeZrestorer   r   r   r      s&    




)r   r	   r3   r6   __all__r#   r$   r%   r    r   r   r   r   r   r*   r,   r0   r   r   r   r   r   <module>	   s"   
(