a
    ãzef  ã                   @   sÐ   d dl Z d dlZd dlZd dlZd dlZg d¢ZG dd„ deƒZddd„Zddd	„Z	dd
d„Z
ddd„Zdd„ Zzd dlZejejf W n> eefyÆ   zd dlZW n ey¼   e
ZY n0 e	ZY n0 eZdS )é    N)ÚgetpassÚgetuserÚGetPassWarningc                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   ú/usr/lib/python3.9/getpass.pyr      ó    r   ú
Password: c           
      C   sÐ  d }t  ¡ ¬}zJt dtjtjB ¡}t |d¡}| |¡ t 	|¡}| |¡ |sX|}W n^ t
y¸   | ¡  ztj ¡ }W n$ ttfy¢   d }t| |ƒ}Y n0 tj}|s´tj}Y n0 |d uržzšt |¡}|d d … }|d  tj M  < tj}	ttdƒr|	tjO }	z6t ||	|¡ t| ||d}W t ||	|¡ | ¡  nt ||	|¡ | ¡  0 W n> tjyœ   |d ur|‚ ||urŽ| ¡  t| |ƒ}Y n0 | d¡ |W  d   ƒ S 1 sÂ0    Y  d S )Nz/dev/ttyzw+é   ÚTCSASOFT)ÚinputÚ
)Ú
contextlibÚ	ExitStackÚosÚopenÚO_RDWRÚO_NOCTTYÚioÚFileIOÚenter_contextÚTextIOWrapperÚOSErrorÚcloseÚsysÚstdinÚfilenoÚAttributeErrorÚ
ValueErrorÚfallback_getpassÚstderrÚtermiosÚ	tcgetattrZECHOZ	TCSAFLUSHÚhasattrr   Ú	tcsetattrÚ
_raw_inputÚflushÚerrorÚwrite)
ÚpromptÚstreamÚpasswdÚstackÚfdZttyr   ÚoldÚnewZtcsetattr_flagsr   r   r	   Úunix_getpass   sV    






ÿ


r2   c                 C   sŒ   t jt jurt| |ƒS | D ]}t |¡ qd}t ¡ }|dkst|dkrHqt|dkrTt‚|dkrj|d d… }q.|| }q.t d¡ t d¡ |S )NÚ úr   úúéÿÿÿÿ)r   r   Ú	__stdin__r!   ÚmsvcrtZputwchZgetwchÚKeyboardInterrupt)r+   r,   ÚcZpwr   r   r	   Úwin_getpassa   s     



r<   c                 C   s0   t jdtdd |stj}td|d t| |ƒS )Nz%Can not control echo on the terminal.é   )Ú
stacklevelz&Warning: Password input may be echoed.)Úfile)ÚwarningsÚwarnr   r   r"   Úprintr'   )r+   r,   r   r   r	   r!   x   s    ÿr!   r3   c                 C   sš   |s
t j}|st j}t| ƒ} | rnz| | ¡ W n6 tyd   |  |jd¡} |  |j¡} | | ¡ Y n0 | 	¡  | 
¡ }|s~t‚|d dkr–|d d… }|S )NÚreplacer7   r   )r   r"   r   Ústrr*   ÚUnicodeEncodeErrorÚencodeÚencodingÚdecoder(   ÚreadlineÚEOFError)r+   r,   r   Úliner   r   r	   r'      s&    r'   c                  C   s<   dD ]} t j | ¡}|r|  S qdd l}| t  ¡ ¡d S )N)ZLOGNAMEZUSERZLNAMEÚUSERNAMEr   )r   ÚenvironÚgetÚpwdÚgetpwuidÚgetuid)ÚnameÚuserrO   r   r   r	   r   š   s    
r   )r   N)r   N)r   N)r3   NN)r   r   r   r   r@   Ú__all__ÚUserWarningr   r2   r<   r!   r'   r   r#   r$   r&   ÚImportErrorr   r9   r   r   r   r   r	   Ú<module>   s*   
D

	


