
    g                     $   S SK r S r\ R                  " S5      rS rS rS rS rS r\	S	:X  a#  S SK
r
 \
R                  S
   r\" \" \5      5        gg! \ a6    \" S\
R                  S    -  \
R                  S9  \
R                   " S
5         NKf = f)    Nc                     Un U R                  5       nUSS S:X  a  US:w  a  US:w  d   eX#-   nOUS:X  a  UnUS:X  a   X!4$ OUn X!4$ MG  )z+Read a line from an LDIF file, unfolding itN     
)readline)fbufferlinels       =/usr/lib/python3/dist-packages/samba/ms_display_specifiers.py__read_folded_liner      s~    D
JJLRa5C< 2:$$,/. 8D rz7 >  >5     z^([A-Za-z][A-Za-z0-9-]*):c              #   z  #    Sn / n [        X5      u  p1USS S:X  a  M  US:X  d  US:X  a  Op[        R                  U5      nU(       a   USS S:X  a  USS nUR                  U5        O2[	        SU-  S[
        R                  S	9  [
        R                  " S5        M  [        U5      (       a  Uv   US:X  a  gM  7f)
z(Read an LDIF entry, only unfolding linesr   Nr   #r   zInvalid line: %sr   )endfile)	r   attr_type_rematchappendprintsysstderrexitlen)r	   r
   entryr   ms        r   __read_raw_entriesr   >   s      F
,Q7KQ!u|DyAG""1%ARS6T>#2AQ(1,#CJJG% ( u::K77 s   B9B;c                 x    U R                  S5      S:w  a$  U R                  SS5      n U R                  SS5      $ U $ )z"Fix a string DN to use ${CONFIGDN}z%<Configuration NC Distinguished Name>r   z
 r   z${CONFIGDN})findreplace)dns    r   fix_dnr$   a   s=     
ww672=ZZr"zzA=QQ	r   c                     / nU  HJ  nUS   S:X  a   UR                  US   < SUS   < 35        M,  UR                  US   < SUS   < 35        ML     SR                  U5      $ )zWrite out entry as LDIF   r   : r   :: r   )r   join)r   outr   s      r   __write_ldif_oner+   k   s`    
CQ419JJ1Q41./ JJAaD!A$/0  99S>r   c                 $   / nU  GH  n/ nUR                  S5      S:w  a$  UR                  SS5      nUR                  S5        O#UR                  SS5      nUR                  S5        US   R                  5       nUS:X  a  M}  US:X  a  M  US	:X  a  M  US
:X  a  M  US:X  a  M  US:X  a  M  US:X  a7  US   R	                  5       R                  5       R                  5       nUS:X  a  M  [        US   5      US'   UR                  U5        GM     Un U $ )z?Perform required transformations to the Microsoft-provided LDIFz::r   r(   r   r'   r   
changetypedistinguishednameinstancetypenamecnobjectcategoryshowinadvancedviewonlyTRUE)r!   splitr   lowerupperlstriprstripr$   )r   
temp_entryr   tkeyvalues         r   __transform_entryr>   y   s    J66$<2q!AHHQKa AHHQKdjjl,%%. &=$;""**aDJJL'')002E ad|!!Q T ELr   c           	          / nSSK Jn  U" U SSS9 n[        U5       H&  nUR                  [	        [        U5      5      5        M(     SSS5        SR                  U5      S-   $ ! , (       d  f       N"= f)z0Read and transform Microsoft-provided LDIF file.r   )openrzlatin-1)encodingNz

)ior@   r   r   r+   r>   r)   )filenamer*   r@   r	   r   s        r   read_ms_ldifrE      se     C	hi	0A'*EJJ'(9%(@AB + 
1 ;;sf$$	 
1	0s   6A##
A1__main__r   z*Usage: %s display-specifiers-ldif-file.txt)r   )rer   compiler   r   r$   r+   r>   rE   __name__r   argvdisplay_specifiers_file
IndexErrorr   r   r    r   r   <module>rN      s   * 
F zz56 F1h
% z"%((1+
 
,.
/0 
  :chhqkJQTQ[Q[\s   A 9BB