f&\ddlZddlmZmZejeZdZddZdZ ddZ y) N) type_utilsutilc<t|tr|jjd}t|tri}|D]}t|t r|j D]\}}t|ttfs!tdtj|zt|tr"|j|gj|o|j|gj|t|tr ||vsg||<tdtj|z|}i}t|t r2|j D]\}}tj|||<|Stdtj|z)N,zBad group member type %szUnknown group name type %sz@Group config must be list, dict or string type only but found %s) isinstancestrstripsplitlistdictitems TypeErrorrobj_name setdefaultextendappendruniq_merge_sorted)grp_cfg c_grp_cfgikvgroupsgrp_name grp_memberss ;/usr/lib/python3/dist-packages/cloudinit/distros/ug_util.py_normalize_groupsrs'3--/'','4   A!T"GGI >DAq%a$5'6)22157 "!T*!,,Q3::1=!,,Q3::1= >As#I%#%IaL0J4G4G4JK# ( F'4 %,]]_ C !Hk#55kBF8  C M  N""7+ -  ct|trg}|jD]\}}t|ttt t fr1tj|s<|jt |Wt|tr||d<|j|~tdtj|d||}n%t|t rtj|}i}|D]}t|tt fr(tj|D]}|s||vs i||<At|trB|j!dd}|j#|xsi} tj$| |g||<tdtj|z|rci} |jD]L\} } i} | jD]-\}}|j'ddj)}|s)|| |</| | | <N| }d}|rd|vr|j!d}|r|j+}|j!d}|j!dg}|j!|i}|j#dg}tj||}d j-||d<tj$|||g||<|jD]\} } |r| |k(nd | d<|S) NnamezUnmappable user value type z for key defaultzDUser config must be dictionary/list or string types only and not %s-_rrF)rr r boolintfloatrris_truerrrrrr uniq_mergepopget mergemanydictreplacer copyjoin)u_cfg def_user_cfgad_ucfgrrusers user_configun prev_configc_usersunameuconfig c_uconfigdef_user def_config def_groups parsed_config parsed_groups users_groupss r_normalize_usersrAIs%KKM DAq!dC45<<?NN3q6*At$& q!!**1-q2  E3 &&u- E  kD#; /__[1 "%!E!H " T * 2A))A,,"K)); *DEE!H),6,?,? ,LN    #kkm 'NE7I  %1IIc3'--/#$IaL %'GEN  'H e#YYy) (,,.L#''/H%))(B7J"IIh3M)--h;M11-LL&)hh|&.safe_finds#q&0i  rrr!)r filterr r r))r2 default_namedefault_configrZ tmp_usersr rYs rextract_defaultr_sk n--! VIu{{}56I n--  ?1 D t_F JJy$ &>r)N)NN) logging cloudinitrr getLogger__name__rHrrArSr_rWrrrds8&g!%bNxI\r