Ñò KUc @ sG d d k Z d „ Z d „ Z d „ Z d „ Z d d d „ ƒ YZ d S( iÿÿÿÿNc C s' t ƒ } | i | d ƒ | i ƒ | S( Nt r( t SHVFilet opent parse( t filenamet shv( ( s /usr/share/authconfig/shvfile.pyt read s c C s' t ƒ } | i | d ƒ | i ƒ | S( Ns r+( R R R ( R R ( ( s /usr/share/authconfig/shvfile.pyt rcreate s c C sñ | p | St | ƒ } | d d j p | d d j o. | d | | d j o | d | d !} n d } x| t ot | i d | ƒ } | d j o Pn | d t | ƒ j o | d | !} Pn | d | !| | d } | d 7} qq W| S( Ni s "t 'i s \( t lent Truet find( t st slent i( ( s /usr/share/authconfig/shvfile.pyt unescape' s" ; c C s® | i d d ƒ } | i d d ƒ } | i d d ƒ } | i d d ƒ } | i d d ƒ } | i d d ƒ } | i d ƒ d j p | i d ƒ d j o d | d } n | S( Ns \s \\s "s \"R s \'t $s \\$t ~s \\~t `s \\`t i s ( t replaceR ( R ( ( s /usr/share/authconfig/shvfile.pyt escape: s ,R c B sY e Z d „ Z d „ Z d „ Z d „ Z d „ Z d „ Z d „ Z d „ Z d „ Z RS( c C s d | _ d | _ h | _ d S( Nt ( R t Nonet ft variables( t self( ( s /usr/share/authconfig/shvfile.pyt __init__F s c C s\ | | _ | d j o t | | ƒ | _ n- y t | | ƒ | _ Wn t j o n Xd S( NR ( R R R t IOError( R R t mode( ( s /usr/share/authconfig/shvfile.pyR K s c C st | i p d Sx^ | i D]S } | i ƒ i d d ƒ } t | ƒ d j o q n t | d ƒ | i | d