JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbrў fYc@s}dZddlZddlZddlZddlZddlZddlZddlZddddddgZGd dde Z iZ gZ dd d dZdd dZddTd dZddZddZd ddZejdddkrddZn ddZddZGdddeZGdddeZGdddeZGdd d eZGd!d"d"eZeZGd#d$d$eZGd%d&d&eZ e Z!Gd'd(d(eZ"Gd)d*d*eZ#Gd+d,d,eZ$Gd-d.d.eZ%d/d0Z&ej'jd1rTe&nej'jd2r"ed3red3ded3ned4red4ded4ned5red5de#d5ned6red6ded6ned7r"ed7ded7q"nejdddkrGd8d9d9eZ(gZ iZ ed:e(ej)j*ej'jd;d<d=Z+xKd>d?d@dAdBdCe+fD]+Z,ee,ree,dee,qqWnejdDkreGdEdFdFeZ-GdGdHdHeZ.edIde.dIdUed>de.d>dVedFde.dJdWnejdddKkredBrgZ iZ edLdedMdBdNgdXndOej'krWej'dOj/ej0Z1e1j2xXe1D]PZ3e3dPkree3dYZ4e4d dkrDee3dee3dZqDqqWdZ3[3[1ndQdRZ5e6dSkrye5ndS([u?Interfaces for launching and remotely controlling Web browsers.iNuErroruopenuopen_newu open_new_tabugeturegistercBs|EeZdZdS(uErrorN(u__name__u __module__u __qualname__(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuErrorsicCsU||gt|j<|dkr2tj|n|dkrQtjd|ndS(u9Register a browser connector and, optionally, connection.iN(u _browsersuloweru _tryorderuappenduinsert(unameuklassuinstanceuupdate_tryorder((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuregisters   c Cs|dk r|g}nt}x|D]}d|krwtj|}|ddkrjt|ddSt|Sq%yt|j}Wntk rt |}YnX|ddk r|dS|ddk r%|dSq%Wt ddS( uCReturn a browser launcher instance appropriate for the environment.u%siu&Niu!could not locate runnable browserii( uNoneu _tryorderushlexusplituBackgroundBrowseruGenericBrowseru _browsersuloweruKeyErroru _synthesizeuError(uusingu alternativesubrowserucommand((u//opt/alt/python33/lib64/python3.3/webbrowser.pyugets$      cCs:x3tD]+}t|}|j|||rdSqWdS(NTF(u _tryorderugetuopenuTrueuFalse(uurlunewu autoraiseunameubrowser((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuopen;s   cCs t|dS(Ni(uopen(uurl((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuopen_newBscCs t|dS(Ni(uopen(uurl((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu open_new_tabEscCs|jd}t|s&ddgStjj|}yt|j}Wntk rjddgSYnX|d}|r|j|jkrddl }|j |}||_ tjj||_t |d||d|gSddgS(uAttempt to synthesize a controller base on existing controllers. This is useful to create a controller when a user specifies a path to an entry in the BROWSER environment variable -- we can copy a general controller to operate using a specific installation of the desired browser in this way. If we can't create a controller in this way, or if there is no executable for the requested browser, return [None, None]. iiN( usplitu _iscommanduNoneuosupathubasenameu _browsersuloweruKeyErrorucopyunameuregister(ubrowseruupdate_tryorderucmdunameucommandu controllerucopy((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu _synthesizeIs"        u _synthesizeiuwincCs`|j}tjj|r1|jdr1dSx(dD] }tjj||r8dSq8WdS(Nu.exeu.bat(u.exeu.batT(u.exeu.batF(uloweruosupathuisfileuendswithuTrueuFalse(ucmduext((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu _isexecutablejs ! u _isexecutablecCsZtjj|rVtj|tj}|tj@sO|tj@sO|tj@rVdSndS(NTF( uosupathuisfileustatuST_MODEuS_IXUSRuS_IXGRPuS_IXOTHuTrueuFalse(ucmdumode((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu _isexecutabless 'cCsrt|rdStjjd}|s,dSx?|jtjD]+}tjj ||}t|r?dSq?WdS(uSReturn True if cmd is executable or can be found on the executable search path.uPATHTF( u _isexecutableuTrueuosuenvironugetuFalseusplitupathsepupathujoin(ucmdupathuduexe((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu _iscommandzs  u _iscommandcBs\|EeZdZdZdgZdddZddddZd d Zd d Z d S(u BaseBrowseru3Parent class for all browsers. Do not use directly.u%sucCs||_||_dS(N(unameubasename(uselfuname((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu__init__s uBaseBrowser.__init__icCs tdS(N(uNotImplementedError(uselfuurlunewu autoraise((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuopensuBaseBrowser.opencCs|j|dS(Ni(uopen(uselfuurl((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuopen_newsuBaseBrowser.open_newcCs|j|dS(Ni(uopen(uselfuurl((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu open_new_tabsuBaseBrowser.open_new_tabNT( u__name__u __module__u __qualname__u__doc__uargsu__init__uTrueuopenuopen_newu open_new_tab(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu BaseBrowsers   u BaseBrowsercBs8|EeZdZdZddZddddZdS( uGenericBrowseruVClass for all browsers started with a command and without remote functionality.cCsct|tr'||_dg|_n |d|_|dd|_tjj|j|_dS(Nu%sii(u isinstanceustrunameuargsuosupathubasename(uselfuname((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu__init__s   uGenericBrowser.__init__ic s|jgfdd|jD}yOtjdddkrTtj|}ntj|dd}|j SWntk rdSYnXdS(Ncs"g|]}|jdqS(u%s(ureplace(u.0uarg(uurl(u//opt/alt/python33/lib64/python3.3/webbrowser.pyu s u'GenericBrowser.open..iuwinu close_fdsTF( unameuargsusysuplatformu subprocessuPopenuTrueuwaituOSErroruFalse(uselfuurlunewu autoraiseucmdlineup((uurlu//opt/alt/python33/lib64/python3.3/webbrowser.pyuopens uGenericBrowser.openNT(u__name__u __module__u __qualname__u__doc__u__init__uTrueuopen(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuGenericBrowsers uGenericBrowsercBs,|EeZdZdZddddZdS(uBackgroundBrowseruHClass for all browsers which are to be started in the background.ic s|jgfdd|jD}ytjdddkrTtj|}nHttdd}|sttdd}ntj|dd d|}|j dkSWnt k rd SYnXdS( Ncs"g|]}|jdqS(u%s(ureplace(u.0uarg(uurl(u//opt/alt/python33/lib64/python3.3/webbrowser.pyu s u*BackgroundBrowser.open..iuwinusetsidusetpgrpu close_fdsu preexec_fnTF( unameuargsusysuplatformu subprocessuPopenugetattruosuNoneuTrueupolluOSErroruFalse(uselfuurlunewu autoraiseucmdlineupusetsid((uurlu//opt/alt/python33/lib64/python3.3/webbrowser.pyuopens uBackgroundBrowser.openNT(u__name__u __module__u __qualname__u__doc__uTrueuopen(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuBackgroundBrowsersuBackgroundBrowsercBsh|EeZdZdZd Zd Zd Z ddgZ d Z d Z d Z ddZdd ddZd S( u UnixBrowseru=Parent class for all Unix browsers with remote functionality.u%actionu%sc Cs&g}|rC|jrCt|}|j|}|rC|g}qCn|jg||}|sf|jrrtj}nd}tj|ddd|d|j r|pdd|dd}|ry|j d} | SWq"tj k rdSYq"Xn1|jr|j dkrdSdSn |j SdS( Nu close_fdsustdinustdoutustderrustart_new_sessioniTF(u raise_optsuintunameu backgroundu subprocessuDEVNULLuNoneuPopenuTrueuredirect_stdoutuwaituTimeoutExpiredupolluFalse( uselfuargsuremoteu autoraiseu raise_optuoptucmdlineuinoutupurc((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu_invokes0      uUnixBrowser._invokeics|dkr|jn_|dkr0|jnG|dkrc|jdkrW|jqw|jntdd|fdd|jD}dd|D}|j|d |}|sfd d|jD}|j|d d Sd SdS( NiiiuBad 'new' parameter to open(); uexpected 0, 1, or 2, got %scs.g|]$}|jdjdqS(u%su%action(ureplace(u.0uarg(uactionuurl(u//opt/alt/python33/lib64/python3.3/webbrowser.pyu s u$UnixBrowser.open..cSsg|]}|r|qS(((u.0uarg((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu s cs"g|]}|jdqS(u%s(ureplace(u.0uarg(uurl(u//opt/alt/python33/lib64/python3.3/webbrowser.pyu s TF( u remote_actionuremote_action_newwinuremote_action_newtabuNoneuErroru remote_argsu_invokeuTrueuargsuFalse(uselfuurlunewu autoraiseuargsusuccess((uactionuurlu//opt/alt/python33/lib64/python3.3/webbrowser.pyuopens$        uUnixBrowser.openNFT(u__name__u __module__u __qualname__u__doc__uNoneu raise_optsuFalseu backgrounduTrueuredirect_stdoutu remote_argsu remote_actionuremote_action_newwinuremote_action_newtabu_invokeuopen(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu UnixBrowsers  #u UnixBrowsercBsJ|EeZdZdZddgZddgZdZdZdZd Z d S( uMozillau-Launcher class for Mozilla/Netscape browsers.u-noraiseu-raiseu-remoteuopenURL(%s%action)uu ,new-windowu,new-tabNT( u__name__u __module__u __qualname__u__doc__u raise_optsu remote_argsu remote_actionuremote_action_newwinuremote_action_newtabuTrueu background(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuMozillas  uMozillacBsD|EeZdZdZddgZddgZdZdZd Z dS( uGaleonu,Launcher class for Galeon/Epiphany browsers.u-noraiseuu%actionu%su-nu-wNT( u__name__u __module__u __qualname__u__doc__u raise_optsu remote_argsu remote_actionuremote_action_newwinuTrueu background(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuGaleon(s   uGaleoncBs>|EeZdZdZddgZdZdZdZdZ dS(uChromeu)Launcher class for Google Chrome browser.u%actionu%suu --new-windowNT( u__name__u __module__u __qualname__u__doc__u remote_argsu remote_actionuremote_action_newwinuremote_action_newtabuTrueu background(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuChrome2s  uChromecBsJ|EeZdZdZddgZddgZdZdZdZd Z dS( uOperau!Launcher class for Opera browser.u-noraiseuu-remoteuopenURL(%s%action)u ,new-windowu ,new-pageNT( u__name__u __module__u __qualname__u__doc__u raise_optsu remote_argsu remote_actionuremote_action_newwinuremote_action_newtabuTrueu background(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuOpera>s  uOperacBsD|EeZdZdZddgZdZdZdZdZ dZ dS( uElinksu#Launcher class for Elinks browsers.u-remoteuopenURL(%s%action)uu ,new-windowu,new-tabNF( u__name__u __module__u __qualname__u__doc__u remote_argsu remote_actionuremote_action_newwinuremote_action_newtabuFalseu backgrounduredirect_stdout(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuElinksIs uElinkscBs,|EeZdZdZddddZdS(u KonqueroruController for the KDE File Manager (kfm, or Konqueror). See the output of ``kfmclient --commands`` for more information on the Konqueror remote-control interface. ic"Cst|dkrd}nd}tj}ttdd}|sQttdd}ny4tjd||gddd|d |d |}Wntk rYnX|jdSy:tjd d |gddd|d |d |d |}Wntk rYnX|j dkr dSy:tjdd|gddd|d |d |d |}Wntk r_dSYnX|j dkSdS(NiunewTabuopenURLusetsidusetpgrpu kfmclientu close_fdsustdinustdoutustderru konqueroru--silentu preexec_fnukfmu-dTF( u subprocessuDEVNULLugetattruosuNoneuPopenuTrueuOSErroruwaitupolluFalse(uselfuurlunewu autoraiseuactionudevnullusetsidup((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuopen^s@               uKonqueror.openNT(u__name__u __module__u __qualname__u__doc__uTrueuopen(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu KonquerorWsu KonquerorcBs>|EeZdZddZddZdd ddZdS( uGrailc Csddl}ddl}ddl}ddl}tjj|jd}|jtj d}tjj||d}|j|}|sdS|j|j |j } xa|D]Y} y| j | Wn;|jk r ytj| Wntk rYnXYqX| SqWdS(Niu .grail-unixu-*(uglobupwdusocketutempfileuosupathujoinu gettempdirugetpwuidugetuiduNoneuAF_UNIXu SOCK_STREAMuconnectuerroruunlinkuIOError( uselfuglobupwdusocketutempfileutempdiruuserufilenameumaybesusufn((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu_find_grail_rcs*        uGrail._find_grail_rccCs1|j}|sdS|j||jdS(Nii(u_find_grail_rcusenduclose(uselfuactionus((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu_remotes    u Grail._remoteicCs3|r|jd|}n|jd|}|S(NuLOADNEW uLOAD (u_remote(uselfuurlunewu autoraiseuok((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuopensu Grail.openNT(u__name__u __module__u __qualname__u_find_grail_rcu_remoteuTrueuopen(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuGrails  uGrailc Csdtdr%tddtdndtjkrYtdrYtddtdndtjkrtdrtddtdndtjkrtdrtdttdntdrtddtdnx3dD]+}t|rt|dt|qqWtdrAtdttdn%tdrftdttdnx3dD]+}t|rmt|dt|qmqmWtdrtddtdnx3dD]+}t|rt|dt |qqWtdrtddt dntdrAtddtdntdr`tdt dndS( Nuxdg-openuGNOME_DESKTOP_SESSION_IDu gvfs-openu gnome-openuKDE_FULL_SESSIONu kfmclientu x-www-browserumozilla-firefoxufirefoxumozilla-firebirdufirebirdu iceweaseluiceapeu seamonkeyumozillaunetscapeukfmu konquerorugaleonuepiphanyu skipstoneu google-chromeuchromeuchromiumuchromium-browseruoperaumosaicugrail( umozilla-firefoxufirefoxumozilla-firebirdufirebirdu iceweaseluiceapeu seamonkeyumozillaunetscape(ugaleonuepiphany(u google-chromeuchromeuchromiumuchromium-browser( u _iscommanduregisteruNoneuBackgroundBrowseruosuenvironu KonqueroruMozillauGaleonuChromeuOperauGrail(ubrowser((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuregister_X_browserssD              uregister_X_browsersuDISPLAYuTERMu www-browserulinksuelinksulynxuw3mcBs&|EeZdZddddZdS(uWindowsDefaultic Cs2ytj|Wntk r)dSYnXdSdS(NFT(uosu startfileu WindowsErroruFalseuTrue(uselfuurlunewu autoraise((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuopens   uWindowsDefault.openNT(u__name__u __module__u __qualname__uTrueuopen(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuWindowsDefaultsuWindowsDefaultuwindows-defaultu PROGRAMFILESuC:\Program FilesuInternet Explorer\IEXPLORE.EXEufirefoxufirebirdu seamonkeyumozillaunetscapeuoperaudarwincBs8|EeZdZdZddZddddZdS( uMacOSXu{Launcher class for Aqua browsers on Mac OS X Optionally specify a browser name on instantiation. Note that this will not work for Aqua browsers if the user has moved the application package after installation. If no browser is specified, the default browser, as specified in the Internet System Preferences panel, will be used. cCs ||_dS(N(uname(uselfuname((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu__init__DsuMacOSX.__init__ic Csd|kstd|kr+d|}ntt|}|jdkred|jdd}nR|jdkr}d }nd |d }d |jdd}d |j||f}tjdd}|dkrdS|j ||j }| S(Nu'u:ufile:udefaultuopen location "%s"u"u%22uOmniWebuu toWindow %diu OpenURL "%s"utell application "%s" activate %s %s end tellu osascriptuwF( uAssertionErroruintuboolunameureplaceuosupopenuNoneuFalseuwriteuclose( uselfuurlunewu autoraiseuscriptutoWindowucmduosapipeurc((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuopenGs"      u MacOSX.openNT(u__name__u __module__u __qualname__u__doc__u__init__uTrueuopen(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuMacOSX:s  uMacOSXcBs2|EeZdZddZddddZdS(uMacOSXOSAScriptcCs ||_dS(N(u_name(uselfuname((u//opt/alt/python33/lib64/python3.3/webbrowser.pyu__init__isuMacOSXOSAScript.__init__icCs|jdkr(d|jdd}nd|j|jddf}tjdd}|dkridS|j||j}| S( Nudefaultuopen location "%s"u"u%22u tell application "%s" activate open location "%s" end u osascriptuwF(u_nameureplaceuosupopenuNoneuFalseuwriteuclose(uselfuurlunewu autoraiseuscriptuosapipeurc((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuopenls   uMacOSXOSAScript.openNT(u__name__u __module__u __qualname__u__init__uTrueuopen(u __locals__((u//opt/alt/python33/lib64/python3.3/webbrowser.pyuMacOSXOSAScripths uMacOSXOSAScriptusafariudefaultuos2u os2netscapeustartu%suBROWSERuc CsEddl}dtjd}y)|jtjddd\}}Wn[|jk r}z8t|dtjt|dtjtjdWYdd}~XnXd}x>|D]6\}}|dkrd}q|dkrd}qqWt|dkr t|dtjtjdn|d}t||td dS( NiuDUsage: %s [-n | -t] url -n: open new window -t: open new tabiuntdufileu-nu-tiu( ugetoptusysuargvuerroruprintustderruexitulenuopen( ugetoptuusageuoptsuargsumsgunew_winuouauurl((u//opt/alt/python33/lib64/python3.3/webbrowser.pyumains( )     umainu__main__Tiiiiii(7u__doc__uiouosushlexusysustatu subprocessutimeu__all__u ExceptionuErroru _browsersu _tryorderuNoneuregisterugetuTrueuopenuopen_newu open_new_tabu _synthesizeuplatformu _isexecutableu _iscommanduobjectu BaseBrowseruGenericBrowseruBackgroundBrowseru UnixBrowseruMozillauNetscapeuGaleonuChromeuChromiumuOperauElinksu KonqueroruGrailuregister_X_browsersuenvironuWindowsDefaultupathujoinuiexploreubrowseruMacOSXuMacOSXOSAScriptusplitupathsepu _userchoicesureverseucmdlineucmdumainu__name__(((u//opt/alt/python33/lib64/python3.3/webbrowser.pyus            N    95 >           .%    #