JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrU e5d@sddlmZddlZddlZddlZdddgZdZdZdZdZddZ d d Z d d Z d dZ ddZ ddZddZeefddZeefddZdS))selectNopenptyforkspawnc Cs>z tWSttfk r"YnXt\}}t|}||fSN)osrAttributeErrorOSError_open_terminal slave_open) master_fd slave_nameslave_fdr/usr/lib64/python3.8/pty.pyrs  c CsLzt\}}Wnttfk r(YnXt|}t|||fStSr)r rr r ttynamecloser )rrrrrr master_open"s  rc CsndD]\}dD]R}d||}zt|tj}Wntk rFYq YnX|d||fSqtddS)NZpqrstuvwxyzPQRSTZ0123456789abcdefz/dev/ptyz/dev/ttyzout of pty devices)r openO_RDWRr )xyZpty_namefdrrrr 2s  r cCsrt|tj}zddlm}m}Wntk r:|YSXz|||d|||dWntk rlYnX|S)Nr)ioctlI_PUSHZptemZldterm)r rrZfcntlrr ImportErrorr )Ztty_nameresultrrrrrr >s  r c Cszt\}}Wnttfk r(Yn4X|tkrTz tWntk rRYnX||fSt\}}t}|tkrtt|t |t t |t t |t |t krt|t tt tj}t|n t|||fSr)r forkptyr r CHILDsetsidrrrdup2 STDIN_FILENO STDOUT_FILENO STDERR_FILENOrrr)pidrrrZtmp_fdrrrrPs0         cCs"|rt||}||d}qdSr)r write)rdatanrrr_writenxs r*cCs t|dS)Ni)r read)rrrr_read~sr,cCsv|tg}t|gg\}}}||krF||}|s:||n tt|t|kr|t}|sf|tqt||qdSr)r#rremover r'r$r*)r master_read stdin_readZfdsZrfdsZwfdsZxfdsr(rrr_copys   r0cCst|tdkr|f}td|t\}}|tkrHtj|df|ztt }t t d}Wntj k r~d}YnXzt |||Wn(t k r|rtt tj|YnXt|t|ddS)Nz pty.spawnrr)typesysauditrr r execlpttyZ tcgetattrr#Zsetrawerrorr0r Z tcsetattrZ TCSAFLUSHrwaitpid)argvr.r/r&rmodeZrestorerrrrs&      )rr r3r6__all__r#r$r%r rrr r rr*r,r0rrrrr s"    (