ó ÔnüQc@sGddlZd„Zd„Zd„Zd„Zddd„ƒYZdS( iÿÿÿÿNcCs'tƒ}|j|dƒ|jƒ|S(Ntr(tSHVFiletopentparse(tfilenametshv((s /usr/share/authconfig/shvfile.pytreads  cCs'tƒ}|j|dƒ|jƒ|S(Nsr+(RRR(RR((s /usr/share/authconfig/shvfile.pytrcreate s  cCså|s |St|ƒ}|ddks6|ddkrb|d||dkrb|d|d!}nd}xvtrà|jd|ƒ}|dkr“Pn|dt|ƒkrº|d|!}Pn|d|!||d}|d7}qkW|S(Nis"t'is\(tlentTruetfind(tstslenti((s /usr/share/authconfig/shvfile.pytunescape's  8   cCs«|jddƒ}|jddƒ}|jddƒ}|jddƒ}|jd d ƒ}|jd d ƒ}|jd ƒdks–|jdƒdkr§d|d}n|S(Ns\s\\s"s\"Rs\'t$s\\$t~s\\~t`s\\`t is (treplaceR (R ((s /usr/share/authconfig/shvfile.pytescape:s*RcBsYeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z RS( cCsd|_d|_i|_dS(Nt(RtNonetft variables(tself((s /usr/share/authconfig/shvfile.pyt__init__Fs  cCsX||_|dkr*t||ƒ|_n*yt||ƒ|_Wntk rSnXdS(NR(RRRtIOError(RRtmode((s /usr/share/authconfig/shvfile.pyRKs   cCsp|js dSx\|jD]Q}|jƒjddƒ}t|ƒdkrMqnt|dƒ|j|d|jr:y|jjƒWntk r-nXd|_ndS(N(RR)RR(R((s /usr/share/authconfig/shvfile.pyR)us   cCs(y|j|SWntk r#dSXdS(NR(RtKeyError(RR3((s /usr/share/authconfig/shvfile.pytgetValue~s cCs£y|j|jƒ}Wntk r0t‚nX|dksa|dksa|dksa|dkretS|dks•|dks•|dks•|dkr™tSt‚dS( NtyesttruetttytnotfalseRtn(RtlowerR5t ValueErrorR tFalse(RR3tval((s /usr/share/authconfig/shvfile.pyt getBoolValue„s  00cCs6|s%||jkr2|j|=q2n ||j|s