JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr3 iV@sddlZddlZddlZddlZddlZddddddgZGdddeZiZgZ dNd dZ dOd dZ dPd dZ ddZ ddZdQddZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGd d!d!eZeZGd"d#d#eZGd$d%d%eZGd&d'd'eZGd(d)d)eZd*d+Zejj d,rheejj d-rej d.re d.ded.ej d/re d/ded/ej d0re d0ded0ej d1re d1ded1ej d2re d2ded2ej!dd3d4krGd5d6d6eZ"gZ iZe d7e"ej#j$ejj d8d9d:Z%x8d;dd?d@e%fD]"Z&ej e&rde e&dee&qdWej!dAkrGdBdCdCeZ'GdDdEdEeZ(e dFde(dFdRe d;de(d;dSe dGde(dGdTe dCde(dHdUdIejkrpejdIj)ej*Z+e+j,xBe+D]:Z-e-dJkr*ee-dVZ.e.d dkr*e e-dee-dWq*WdZ-[-[+dKdLZ/e0dMkre/dS)XNErroropenopen_new open_new_tabgetregisterc@s eZdZdS)rN)__name__ __module__ __qualname__r r "/usr/lib64/python3.6/webbrowser.pyr scCs<||gt|j<|dkr$tj|n|dkr8tjd|dS)Nr) _browserslower _tryorderappendinsert)nameklassinstanceupdate_tryorderr r r rs  c Cs|dk r|g}nt}x|D]}d|krVtj|}|ddkrLt|ddSt|Sqyt|j}Wntk rt|}YnX|ddk r|dS|ddk r|dSqWt ddS)Nz%sr &rz!could not locate runnable browserr) rshlexsplitBackgroundBrowserGenericBrowserrrKeyError _synthesizer)ZusingZ alternativesbrowsercommandr r r rs$      TcCs,x&tD]}t|}|j|||rdSqWdS)NTF)rrr)urlnew autoraiserrr r r r9s  cCs t|dS)Nr )r)r!r r r r@scCs t|dS)N)r)r!r r r rCsc Cs|jd}tj|sddgStjj|}yt|j}Wntk rRddgSX|d}|r|j|jkrddl }|j |}||_ tjj||_t |d||d|gSddgS)Nrr ) rshutilwhichospathbasenamerrrcopyrr)rrcmdrr Z controllerr*r r r rGs"     rc@sBeZdZdgZdddZdddZd d Zd d Zed dZ dS) BaseBrowserz%scCs||_||_dS)N)rr))selfrr r r __init__nszBaseBrowser.__init__rTcCstdS)N)NotImplementedError)r.r!r"r#r r r rrszBaseBrowser.opencCs |j|dS)Nr )r)r.r!r r r ruszBaseBrowser.open_newcCs |j|dS)Nr$)r)r.r!r r r rxszBaseBrowser.open_new_tabcCs$|r |jjdr td|dS)N-z Invalid URL: )lstrip startswith ValueError)r!r r r _check_url{szBaseBrowser._check_urlN)r-)rT) rr r argsr/rrr staticmethodr5r r r r r,is   r,c@seZdZddZdddZdS) rcCsFt|tr||_dg|_n|d|_|dd|_tjj|j|_dS)Nz%srr ) isinstancestrrr6r'r(r))r.rr r r r/s    zGenericBrowser.__init__rTc sv|j|jgfdd|jD}y6tjdddkrFtj|}ntj|dd}|j Stk rpdSXdS)Ncsg|]}|jdqS)z%s)replace).0arg)r!r r sz'GenericBrowser.open..winT) close_fdsF) r5rr6sysplatform subprocessPopenwaitOSError)r.r!r"r#cmdlinepr )r!r rs    zGenericBrowser.openN)rT)rr r r/rr r r r rs rc@seZdZdddZdS)rrTc sz|j|jgfdd|jD}y:tjdddkrFtj|}ntj|ddd}|jdkStk rtdSXdS)Ncsg|]}|jdqS)z%s)r:)r;r<)r!r r r=sz*BackgroundBrowser.open..r>r?T)r@start_new_sessionF) r5rr6rArBrCrDpollrF)r.r!r"r#rGrHr )r!r rs    zBackgroundBrowser.openN)rT)rr r rr r r r rsrc@s>eZdZdZdZdZddgZdZdZdZ ddZ d d d Z dS) UnixBrowserNFTz%actionz%sc Csg}|r*|jr*t|}|j|}|r*|g}|jg||}|sD|jrLtj}nd}tj|d||jrd|pfd|dd}|ry|jd} | Stj k rdSXn&|jr|j dkrdSdSn |j SdS)NT)r@stdinstdoutstderrrIF) raise_optsintr backgroundrCDEVNULLrDredirect_stdoutrEZTimeoutExpiredrJ) r.r6Zremoter#Z raise_optoptrGZinoutrHrcr r r _invokes0        zUnixBrowser._invokercs|j|dkr|jnB|dkr*|jn2|dkrL|jdkrD|jq\|jntdd|fdd|jD}dd|D}|j|d |}|sfd d|jD}|j|d d Sd SdS) Nrr r$zBad 'new' parameter to open(); zexpected 0, 1, or 2, got %scs g|]}|jdjdqS)z%sz%action)r:)r;r<)actionr!r r r=sz$UnixBrowser.open..cSsg|] }|r|qSr r )r;r<r r r r=sTcsg|]}|jdqS)z%s)r:)r;r<)r!r r r=sF)r5 remote_actionremote_action_newwinremote_action_newtabr remote_argsrWr6)r.r!r"r#r6Zsuccessr )rXr!r rs&     zUnixBrowser.open)rT) rr r rPrRrTr\rYrZr[rWrr r r r rKs#rKc@s$eZdZddgZdZdZdZdZdS)Mozillaz%actionz%sr-z -new-windowz-new-tabTN)rr r r\rYrZr[rRr r r r r]s r]c@s,eZdZddgZddgZdZdZdZdZd S) Netscapez-noraisez-raisez-remotezopenURL(%s%action)r-z ,new-windowz,new-tabTN) rr r rPr\rYrZr[rRr r r r r^ s r^c@s(eZdZddgZddgZdZdZdZdS) Galeonz-noraiser-z%actionz%sz-nz-wTN)rr r rPr\rYrZrRr r r r r_s r_c@s$eZdZddgZdZdZdZdZdS)Chromez%actionz%sr-z --new-windowTN)rr r r\rYrZr[rRr r r r r`s r`c@s$eZdZddgZdZdZdZdZdS)Operaz%actionz%sr-z --new-windowTN)rr r r\rYrZr[rRr r r r ra+s rac@s(eZdZddgZdZdZdZdZdZdS)Elinksz-remotezopenURL(%s%action)r-z ,new-windowz,new-tabFN) rr r r\rYrZr[rRrTr r r r rb5s rbc@seZdZdddZdS) KonquerorrTcCs|j||dkrd}nd}tj}ytjd||gd|||d}Wntk rTYnX|jdSy tjdd|gd|||dd }Wntk rYnX|jdkrdSy tjd d |gd|||dd }Wntk rd SX|jdkSdS) Nr$ZnewTabZopenURL kfmclientT)r@rLrMrN konquerorz--silent)r@rLrMrNrIkfmz-dF)r5rCrSrDrFrErJ)r.r!r"r#rXdevnullrHr r r rJs<       zKonqueror.openN)rT)rr r rr r r r rcCsrcc@s&eZdZddZddZd ddZd S) Grailc Csddl}ddl}ddl}ddl}tjj|jd}|jtj d}tjj||d}|j|}|shdS|j|j |j } xX|D]P} y| j | Wn8t k rytj| Wnt k rYnXYq~X| Sq~WdS)Nrz .grail-unixz-*)globpwdsockettempfiler'r(joinZ gettempdirgetpwuidgetuidZAF_UNIXZ SOCK_STREAMZconnectrFunlink) r.rirjrkrlZtempdiruserfilenameZmaybessfnr r r _find_grail_rc|s*    zGrail._find_grail_rccCs&|j}|sdS|j||jdS)Nrr )rusendclose)r.rXrsr r r _remotes  z Grail._remoterTcCs0|j||r|jd|}n|jd|}|S)NzLOADNEW zLOAD )r5rx)r.r!r"r#okr r r rs  z Grail.openN)rT)rr r rurxrr r r r rhxsrhcCstjdrtddtddtjkr>tjdr>tddtddtjkrbtjdrbtddtddtjkrtjdrtdttdtjdrtddtdx&dD]}tj|rt|dt|qWx&dD]}tj|rt|dt|qWtjdrtdttdntjdr*tdttdx*dD]"}tj|r0t|dt |q0Wtjdrrtddtdx*d D]"}tj|rxt|dt |qxWtjdrtddt dtjdrtddtdtjdrtdt ddS)!Nzxdg-openZGNOME_DESKTOP_SESSION_IDz gvfs-openz gnome-openZKDE_FULL_SESSIONrdz x-www-browserfirefox iceweaseliceape seamonkeymozilla-firefoxmozilla-firebirdfirebirdmozillanetscaperfregaleonepiphanyZ skipstone google-chromechromechromiumchromium-browseroperaZmosaicZgrail)rzr{r|r})r~rrrr)rr)rrrr) r%r&rrr'environrcr]r^r_r`rarh)rr r r register_X_browserssH               rZDISPLAYZTERMz www-browserZlinksZelinksZlynxZw3mr>r?c@seZdZdddZdS)WindowsDefaultrTc Cs6|j|ytj|Wntk r,dSXdSdS)NFT)r5r'Z startfilerF)r.r!r"r#r r r r s  zWindowsDefault.openN)rT)rr r rr r r r rsrzwindows-defaultZ PROGRAMFILESzC:\Program FileszInternet Explorer\IEXPLORE.EXErzrr}rrrdarwinc@seZdZddZdddZdS) MacOSXcCs ||_dS)N)r)r.rr r r r/2szMacOSX.__init__rTc Cs|j|d|krd|}tt|}|jdkrBd|jdd}n<|jdkrRd}n d |d }d |jdd}d |j||f}tjd d}|dkrdS|j||j}| S)N:zfile:defaultzopen location "%s""z%22ZOmniWebr-z toWindow %dr z OpenURL "%s"ztell application "%s" activate %s %s end tell osascriptwF) r5rQboolrr:r'popenwriterw) r.r!r"r#scriptZtoWindowr+osapiperVr r r r5s"       z MacOSX.openN)rT)rr r r/rr r r r r(s rc@seZdZddZdddZdS) MacOSXOSAScriptcCs ||_dS)N)_name)r.rr r r r/XszMacOSXOSAScript.__init__rTcCsl|j||jdkr&d|jdd}nd|j|jddf}tjdd}|dkrTdS|j||j}| S) Nrzopen location "%s"rz%22z tell application "%s" activate open location "%s" end rrF)r5rr:r'rrrw)r.r!r"r#rrrVr r r r[s    zMacOSXOSAScript.openN)rT)rr r r/rr r r r rWsrZsafarirrZBROWSERr-c Csddl}dtjd}y|jtjddd\}}WnJ|jk r~}z,t|tjdt|tjdtjdWYdd}~XnXd}x*|D]"\}}|dkrd}q|dkrd}qWt|dkrt|tjdtjd|d}t||td dS) NrzDUsage: %s [-n | -t] url -n: open new window -t: open new tabr Zntd)filez-nz-tr$) getoptrAargverrorprintrNexitlenr) rZusageZoptsr6msgZnew_winoar!r r r mains(   r__main__)Nr )N)rT)r rrrrrr)1r'rr%rArC__all__ Exceptionrrrrrrrrrobjectr,rrrKr]r^r_r`ZChromiumrarbrcrhrrr&rBrr(rmZiexplorerrrrpathsepZ _userchoicesreverserGr+rrr r r r s    "O     56B          /