
    Vhs                       d dl mZ d dlmZ d dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlmc mZ d dlmZ d dlmZ d dlmZmZ d d	lmZmZmZ d d
lmZmZm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z.  e,       Z/ e0ddh      Z1ddZ2d Z3d Z4d Z5d Z6d Z7 G d de      Z8ddZ9e:dk(  r e9        yy)     )annotations)CLIN)Mapping)context)	constants)option_helpers)ConfigManagerSetting)AnsibleErrorAnsibleOptionsErrorAnsibleRequiredOptionError)	to_nativeto_textto_bytes)	json_dump)string_types)	is_quoted)AnsibleDumper)stringc)Display)unfrackpath_terms_inputc                <    t        j                  | t        ||      S )N)Dumperdefault_flow_styledefault_style)yamldumpr   )datar   r   s      B/home/dcms/DCMS/lib/python3.12/site-packages/ansible/cli/config.py	yaml_dumpr"   )   s    99T-DVfstt    c                    t        | dd      S )NTz'')r   r   )r"   )r    s    r!   
yaml_shortr%   -   s    Td$GGr#   c                     t        t        d      sGt        t              D  ci c]%  } | j	                  d      r| t        t        |       ' c} t        _        t        j                  S c c} w )zE helper method to ensure we can template based on existing constants cvars__)hasattrget_constantsdirC
startswithgetattrr'   )ks    r!   r*   r*   1   sL    ='*9<QZAq||TXGYq'!Q-/Z [s
   A(A(c                `    t        | j                  d      | j                  d       | dvg      S )zc return true or false depending if variable name is possibly a 'configurable' ansible env variable ANSIBLE_)ANSIBLE_TEST_ANSIBLE_LINT_)ANSIBLE_CONFIGANSIBLE_DEV_HOME)allr-   )varnames    r!   _ansible_env_varsr8   8   s=    z*""#EFFAA	
 r#   c                    g }| D ]@  }d| |   v s| |   d   s| |   d   D ]"  }|j                  |j                  d             $ B |S )Nenvname)appendget)settingsr    settingr7   s       r!   _get_evar_listr@   C   sd    D 1HW%%(7*;E*B#G,U3 1GKK/011 Kr#   c                    i }| D ]Q  }d| |   v s| |   d   s| |   d   D ]3  }|d   |vrt               ||d   <   ||d      j                  |d          5 S |S )Ninisectionkey)setadd)r>   r    r?   kvs       r!   _get_ini_entriesrH   L   s    D 3HW%%(7*;E*Bw'. 3)},*-%DI'R	]#''5	233 Kr#   c                       e Zd ZdZdZd fd	Z fdZ fdZ fdZd Z	d Z
d	 Zdd
Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )	ConfigCLIz Config command line class zansible-configc                J    d | _         d | _        t        t        |   ||       y N)config_fileconfigsuperrJ   __init__)selfargscallback	__class__s      r!   rP   zConfigCLI.__init__\   s#    i'h7r#   c                   t         t        |   d       t        j                  d      }t        j
                  |       |j                  dddd	       |j                  d
ddddddgt        t        j                        z   d       |j                  ddd       | j                  j                  d      }d|_        |j                  dd|g      }|j                  | j                         |j                  ddddd d!gd!d"#       |j                  d$d%|g      }|j                  | j                          |j                  d&d'd(d)d*+       |j                  ddddg d,d-d.#       |j                  d/d0|g      }|j                  | j"                         |j                  d1d2|g      }|j                  | j$                         |j                  ddddg d3d4d5#       |j                  d6d7d)dd89       |j                  d:d;|g      }|j                  | j&                         |j                  ddddd4d<gd4d5#       y )=NzView ansible configuration.)descF)add_helpz-cz--configrM   zGpath to configuration file, defaults to first file found in precedence.)desthelpz-tz--typestorebasetyper6   z&Filter down to a specific plugin type.)actiondefaultrX   choicesrY   rR   z<Specific plugin to target, requires type of plugin to be set*)rY   nargsr]   )rX   TlistzPrint all config options)rY   parents)funcz--formatz-fformatjsonr   zOutput format for list)rX   r]   r_   r^   rY   r   zDump configurationz--only-changedz--changed-onlyonly_changed
store_truez;Only show configurations that have changed from the default)rX   r]   rY   )rf   r   displayri   zOutput format for dumpviewzView configuration fileinitCreate initial configuration)rB   r:   varsrB   zOutput format for initz
--disabled	commentedz=Prefixes all entries with a comment character to disable them)rX   r]   r^   rY   validatezValidate the configuration file and environment variables. By default it only checks the base settings without accounting for plugins (see -t).r:   )rO   rJ   init_parseropt_helpArgumentParseradd_verbosity_optionsadd_argumentrb   r,   CONFIGURABLE_PLUGINSparseradd_subparsersrequired
add_parserset_defaultsexecute_listexecute_dumpexecute_viewexecute_initexecute_validate)	rQ   common
subparserslist_parserdump_parserview_parserrp   validate_parserrT   s	           r!   rp   zConfigCLI.init_parserb   s   i*. 	+ 	
 ((%8&&v.D*=!j 	 	lD(7FQWbgioapswxy  yO  yO  tP  bP!I 	 	KF)gors[[//X/>
"
 ++F9S^d]e+f  d&7&7 8  T[aciZjtz&> 	! 	@ !++F9MX^W_+`  d&7&7 8  !13C.am&c 	! 	e  TZu  @I&> 	! 	@ !++F9R]c\d+e  d&7&7 8 ++F9Wbhai+j  d&7&7 8  TZpz&> 	! 	@  K^c&e 	! 	g %//
6L9? 0 B 	$$$*?*?$@$$ZHW_dfk^lw|*B 	% 	Dr#   c                X    t         t        |   |      }|j                  t        _        |S rL   )rO   rJ   post_process_args	verbosityri   )rQ   optionsrT   s     r!   r   zConfigCLI.post_process_args   s'    	4:7C#--r#   c                b   t         t        |           t        j                  xs g D cg c]  }|s|	 c}| _        t        j                  j                  | j
                         t        j                  d   rt        t        j                  d   d      | _        t        | j                        }t        j                  j                  |      r?t        j                   |t        j"                        rt%        | j                        | _        nQt'        dt)        | j                        z        t        j                  | _        | j                  j*                  | _        | j                  r	 t        j                  j                  | j                        st'        d| j                  z        t        j                  j-                  | j                        st'        d| j                  z        t)        | j                        t        j.                  d<   n!t        j                  d   dk(  rt7        d      t        j                  d           y c c}w # t0        $ rP t        j                  d   d	v r t        j                  d   d
v r"t2        j5                  d| j                  z         Y uw xY w)NrM   F)followz@The provided configuration file is missing or not accessible: %sz&%s does not exist or is not accessiblez%s is not a valid filer4   r]   )rj   )editupdatez(File does not exist, used empty file: %srj   z&Invalid or no config file was suppliedrd   )rO   rJ   runr,   GALAXY_SERVER_LIST_galaxy_serversrN   load_galaxy_server_defsr   CLIARGSr   rM   r   ospathexistsaccessR_OKr	   r   r   _config_fileisfileenviron	Exceptionri   warningr   )rQ   sb_configrT   s      r!   r   zConfigCLI.run   s   i"$ ,-+?+?+E2KaK	(()=)=>??=)*7??=+IRWXD 0 01Hww~~h'BIIh,H+D,<,<=)*loxy}  zJ  zJ  pK  +K  L  L((DK#{{77Dcww~~d&6&67-.VZ^ZjZj.kll(8(89-.F$JZJZ.[\\/89I9I/J

+, __X&&0GHH 	!A  L,  c??8,8__X.2DDOO$NQUQaQa$ab	cs   II.B(I AJ.-J.c                    t        d      )zG
        Updates a single setting in the specified ansible.cfg
        Option not implemented yet)r   r   r   r   split
subprocesscallrM   )rQ   entryvaluerC   options        r!   execute_updatezConfigCLI.execute_update        788r#   c                    	 t        | j                  d      5 }| j                  t        |j	                         d             ddd       y# 1 sw Y   yxY w# t
        $ r}t        dt        |      z        d}~ww xY w)z2
        Displays the current config file
        rbsurrogate_or_stricterrorsNzFailed to open config file: %s)openrM   pagerr   readr   r   r   )rQ   fes      r!   r}   zConfigCLI.execute_view   ss    	Pd&&- L

716684IJKL L L 	P?)A,NOO	Ps4   A +AA AA A 	A=!A88A=c                    t        d      )z9
        Opens ansible.cfg in the default EDITOR
        r   )r   shlexr   r,   rN   get_config_valuer<   rM   r   r   r   r   )rQ   editorr   s      r!   execute_editzConfigCLI.execute_edit   r   r#   c                   i }t        t        d|z        }|rIg }|D ]A  }|j                  |d      }|t        j	                  d|z         1|j                  |       C n|j                  d      }|D ]  }|j                  x}}	|	j                  d      r@t        j                  j                  |j                        rL|	j                  ddd      dz   }| j                  j                  ||	      ||<    |S )	N	%s_loaderT
class_only0Skipping %s as we could not find matching plugin_     (DEPRECATED))r.   plugin_loaderr=   ri   r   r<   r6   
_load_namer-   r   r   islink_original_pathreplacerN   get_configuration_definitions)
rQ   ptypepluginsentriesloader	plugin_cspluginp	finalnamer;   s
             r!   _list_plugin_settingszConfigCLI._list_plugin_settings   s    e(;< I! (JJv$J79OO$VY_$_`$$Q'( 

d
3I   		XF%000Is#77>>&"7"78 $S"a 8? JI!%!J!J5RV!WGI		X r#   c                x   i }t         j                  d   dv rT| j                  j                  d      }i |d<   | j                  D ]$  }| j                  j                  d|      |d   |<   & t         j                  d   dk7  ri |d<   t         j                  d   d	k(  r<t
        j                  D ]'  }| j                  |      |d   |j                         <   ) |S t         j                  d   dk7  rK| j                  t         j                  d   t         j                  d
         |d   t         j                  d   <   |S )z>
        build a dict with the list requested configs
        r\   r[   r6   Tignore_privateGALAXY_SERVERSgalaxy_serverr[   PLUGINSr6   rR   )	r   r   rN   r   r   r,   ru   r   upper)rQ   config_entriesserverr   s       r!   _list_entries_from_argsz!ConfigCLI._list_entries_from_args  sS   
 ??6"o5![[FFVZF[N 02N+,.. ~;?;;;d;detv|;}/08~ ??6"f,(*N9%??6"e+// ];?;U;UV[;\y)%++-8] 	 __V$.AEA[A[\c\k\klr\su|  vE  vE  FL  vM  BNN9%goof&=>r#   c                    | j                         }t        j                  d   dk(  rt        |      }n!t        j                  d   dk(  rt	        |      }| j                  t        d             y)z3
        list and output available configs
        re   r   rf   r   r   N)r   r   r   r"   r   r   r   )rQ   r   outputs      r!   r{   zConfigCLI.execute_list(  s\    
 557??8$.~.F__X&&0~.F

76*?@Ar#   c                t   g }t         j                  d   rd}nd}|D ]  }||   j                  d      s| j                  j	                  ||   j                  dd      t                     }|dk(  r||   j                  dd      }|dk(  r|rd	}nad
}n^|rX|dk(  r"t        |t              s	 dj                  |      }t        |t              r%t        |      st        j                  |      }n|d}|||   v s||   |   s||   |   d   d   }	t        ||   d   t              r	||   d   }
ndj                  ||   d         }
||   j                  d|      }|j                  d|d||   j                  dd      d|
       |dk(  r,|	j                  d      r|j                  ||	d|       nE|dk(  r@|	j                  d      r|j                  ||	dt!        t#        |      d      z          |j                  d        |S # t        $ r}dt        |      z  }Y d }~ud }~ww xY w)Nrn   #r   descriptionr^   r:   r\   boolean10rb   , z%sr;   z
#z# (stringz): 	_ANSIBLE_=rm   	_ansible_z: r   r   )r   r   r=   rN   template_defaultr*   
isinstancer   joinr   r   r   r   quoter<   r-   r   r%   )rQ   r>   subkeyr    prefixr?   r^   styper   r   rV   r;   s               r!   _get_settings_varszConfigCLI._get_settings_vars5  s@   ??;'FF -	 GG$((7kk228G3D3H3HTV3WYfYhiG )--fb9I%"%"%)'<@D*.))G*< "'<87AS"'++g"6_ G'**x/@/H )&1"5f=hw/>M#G,];D ::hw&7&FGD(,,VW=dHW4E4I4I&RZ4[]abc U?''4 KKVUG DEv%''4 KKUGJwDW`u<v)w wxB[-	 ^ 9 $- D*.71C*CDs   ,H	H7H22H7c                   i }t        |j                               D ]  }||   }t        |t              s|j	                  d      s>| j                  ||      }|D ]&  }||v r||   j                  ||          ||   ||<   ( it        |d   t              rd|j	                  dd      d|d   }n,d|j	                  dd      z  }|dj                  |d         z  }d|v s|d   s|d   d	   }	|	d
   |vrg ||	d
   <   |	d
   |vrg ||	d
   <   |	d   ||	d
      vs||	d
      j                  |	d          | j                  j                  |j	                  dd      t                     }
|j	                  dd      dk(  r"t        |
t              sdj                  |
      }
n|
d}
t        j                  j	                  dd      rd|	d   z  |	d<   |d|	d   d|
z   }||	d
      j                  |        |S )Nr   z# (r\   r   z) z# (%s) z
# rB   r   rC   rD   r^   r   rb   r   rn   Fz;%s
r   )sortedkeysr   r   r=   _get_settings_iniextendr   r   r<   rN   r   r*   r   r   )rQ   r>   seensectionsooptnew_sectionsr   rV   r   r^   rD   s               r!   r   zConfigCLI._get_settings_inin  s#   ( /	;A1+Cc7+77=)#55c4@% 6AH} **<?;&21o	6
 #m,l;&)ggfh&?]AST 37768#<<C$677|E
E
2#4/-/Dy)*#8313HU9-. <tE),<'==y)*11%,?"kk::3779b;QS`SbcGwwvr*f4ZQ]=^"&))G"4 "$**;>',uU|';eeElG!DDCU9-.55c:_/	;b r#   c           	     |   i }g }| j                         }|j                  dd      }t        j                  d   dk(  r| j	                  ||      }|rG|D ]B  }| j	                  ||   |      }|D ]&  }||v r||   j                  ||          ||   ||<   ( D |r|j                         D ]S  }	|j                  d|	z         ||	   D ]$  }
|j                  |
       |j                  d       & |j                  d       U nt        j                  d   dv r|| j                  |t        j                  d         }|rW|D ]R  }||   j                         D ]:  }|j                  | j                  ||   |   t        j                  d                < T | j                  t        dj                  |      d	
             y)rl   r   Nre   rB   z[%s]r   )r:   rm   r   r   r   )r   popr   r   r   r   r   r<   r   r   r   r   )rQ   r   r    r   plugin_typesr   r   plugin_sectionsr   rC   rD   r   s               r!   r~   zConfigCLI.execute_init  s    557%)))T:??8$---ndCH) =E&*&<&<\%=PRV&WO, ==$QK..q/AB*9!*<HQK	== '}} $GKK 01'0 (C(B( KKO$ __X&/9**>7??8;TUD) uE".u"5":":"< uD$;$;L<OPV<WY`YhYhiqYr$stuu 	

7499T?3HIJr#   c                   g }t        |      D ]G  }||   j                  dvxr |t        v}t        j                  d   dk(  rt        ||   t              r||   j                  }||   j                  dk(  s|t        v r'd}| j                  j                  |t                     }n||   j                  dk(  rd}nd}|d	||   j                  d
|}nd}|d	dd
||   j                  d      }t        ||      }n.i }||   j                  D ]  }	|	dk(  r	t        ||   |	      ||	<    t        j                  d   r|s7|j                  |       J |S )N)r^   REQUIREDre   ri   r^   greenr  redyellowr   z) = r\   rg   )r   origin_IGNORE_CHANGEDr   r   r   r
   r   rN   r   r*   r=   r   _fieldsr.   r<   )
rQ   rN   r   r?   changedr   colormsgr   rD   s
             r!   _render_settingszConfigCLI._render_settings  s]   f~ 	&Gg--5LLoQX`oQoGx(I5fWow7"7O11Eg--:g>X ' $ < <UMO T//:= % (+2F7O4J4JERC#E+2Ivg?R?RS\?]^CU+!'?22 ?Cf} !(#!>E#J?
 ??>2gu%;	&> r#   c                   | j                   j                  d      }|j                         D ]J  }t        j                   j	                  || j
                  t                     \  }}t        |||d       ||<   L | j                  |      S )NTr   )cfile	variables)	rN   r   r   r,   get_config_value_and_originrM   r*   r
   r  )rQ   rN   r?   vr   s        r!   _get_global_configszConfigCLI._get_global_configs  s     ::$:O{{} 	;G8877tGWGWcpcr7sDAq%gq!T:F7O	; $$V,,r#   c                   t        t        d|z        }g }i }|rZg }|D ]R  }|j                  |d      }|t        j	                  d|z         1|j                  |j                  |d             T n|j                  d      }|D ]x  }|j                  x}	}
|
j                  d      r@t        j                  j                  |j                        rM|
j                  ddd      dz   }	| j                  j                  ||
      ||	<   	 |j                  |
d      }||	   j%                         D ]V  }	 t&        j                  j)                  || j*                  ||
t-                     \  }}||d}t1        |||d       ||	   |<   X | j3                  ||	         }|st4        j6                  d   dk(  r6|j                  d|	ddt9        |	      z         |j;                  |       f|j                  |	|i       { |S # t         $ r2}t        j	                  d	|
d
|dt#        |             Y d }~d }~ww xY w# t.        $ r d }d}Y w xY w)Nr   Tr   r   r   r   r   r   z
Skipping "z" z; plugin, as we cannot load plugin to check config due to : )r  plugin_typeplugin_namer  r  re   ri   r   :
)r.   r   r=   ri   r   r<   r6   r   r-   r   r   r   r   r   rN   r   r   r   r   r,   r  rM   r*   r   r
   r  r   r   lenr   )rQ   r   r   r   r   r   r   r   r   r   r;   r   r   r?   r  r   resultss                    r!   _get_plugin_configszConfigCLI._get_plugin_configs  sz    e(;<  I! JJJv$J79OO$VY_$_`$$VZZ4Z%HIJ 

d
3I *	8F%000Is#77>>&"7"78 LLb!4F	 )-(Q(QRWY](^N9%zz$4z8 *)499; R#88??tO_O_mr  AE  Q^  Q`?  aDAq
 9"A5<WaD5Qy)'2R ++N9,EFG??8,	9MMC#i.<P"QRMM'*MM9g"67U*	8X 9  swy~  AJ  KL  AM  !N  O 2 #A"A#s*   H59I	I'H<<IIIc                   g }| j                   D ]  }i }| j                  j                  d|      }|j                         D ]J  }	 t        j                  j                  |d|| j                        \  }}||d}t        |||d       ||<   L t        j                  d   dk(  r\t        j                  d   r|sd	t        |      z  }	|j                  d
| d
|	        |j                  | j                  |             |j                  ||i        |S # t        $ r&}||   j                  dd      rd }d}n|Y d }~d }~ww xY w)Nr   )r  r  r  rx   Fr  re   ri   rg   r   r   )r   rN   r   r   r,   r  rM   r   r=   r
   r   r   r  r<   r   r  )
rQ   r   r   server_configs_configr?   r  r   r   equalss
             r!   _get_galaxy_server_configsz$ConfigCLI._get_galaxy_server_configs;  sd   ** 	7FM{{@@RXYH#==? F 88??Udrx  AE  AQ  AQ?  RDAq 9"A)0!Q)Eg&F x(I5~6- 3v;.FMMBvhb"9:MM$"7"7"FGv}56-	70 % $  (,,Z? &  s   0D	E!EEc           
        g }t         j                  d   dv r| j                         }| j                         }t         j                  d   dk(  r#|j	                  d       |j                  |       nNi }|D ]4  }t        |j                               d   }|j                  |      }|||<   6 |j	                  d|i       t         j                  d   dk(  rt        j                  D ]  }| j                  |t         j                  d	         }t         j                  d   dk(  rYt         j                  d
   r|sR|j	                  d|j                         ddt        |      z         |j                  |       |dv r|j                         }	nd|j                         z  }	|j	                  |	|i        nJt         j                  d   dk7  r4| j                  t         j                  d   t         j                  d	         }t         j                  d   dk(  rdj                  |      }
t         j                  d   dk(  rt        |      }
n!t         j                  d   dk(  rt!        |      }
| j#                  t%        
d             y)zM
        Shows the current settings, merges ansible.cfg if specified
        r\   r   re   ri   z
GALAXY_SERVERS:
r   r   r6   rR   rg   r   r  r   )modulesdoc_fragmentsz
%s_PLUGINSr[   r   rf   r   r   N)r   r   r  r  r<   r   rb   r   r   r,   ru   r  r   r  r   r"   r   r   r   )rQ   r   server_config_listconfigsr  r   server_reduced_configr   plugin_listpnametexts              r!   r|   zConfigCLI.execute_dumpY  s     ??6"o5--/F "&!@!@!Bx(I53401%7 <M!-"4"4"67:F,9,=,=f,E)&;GFO< /9:??6"e+// 8"66ugoof>UV??8,	9"??>:kU[[]C#e*DT&UVk2 << % ,u{{} <MM5+"678 __V$.--goof.EwW]G^_F??8$	199V$D??8$.V$D__X&&0V$D

74(=>?r#   c                ~   d}| j                         }|j                  dd       }|j                  dd       }t        j                  d   dk(  r}t        j
                  .t        |      }|r[|D ]V  }||   j                         D ]>  }t        ||   |         }|D ]&  }	|	|v r||	   j                  ||	          ||	   ||	<   ( @ X |r@|D ];  }
t        ||
         }|D ]&  }	|	|v r||	   j                  ||	          ||	   ||	<   ( = |rt        j                  j                  t        j
                     }|j                         D ]  }	|	|vr-t        j                  d|	 dt        j
                   d       d	}4|j                  |	      D ]9  }|||	   vst        j                  d
| d|	 dt        j
                   d       d	};  nt        j                  d   dk(  rt        j                   j                         D cg c]  }t#        |      s| }}|rst%        |      }|r?|D ]:  }||   j                         D ]"  }|j'                  t%        ||   |                $ < |D ]"  }||vst        j                  d| d       d	}$ |rt)        j*                  d       t        j                  d       y c c}w )NFr   r   re   rB   zFound unknown section 'z' in '.TzFound unknown key 'z' in section 'r:   z$Found unknown environment variable 'z'.r   zAll configurations seem valid!)r   r   r   r   r,   CONFIG_FILErH   r   r   rN   _parsersr   ri   errorr   r   r   r8   r@   r   sysexit)rQ   foundr   r   galaxy_serversr   r   r   r   r   r   server_sectionsr   r/   r7   evarsr    evars                     r!   r   zConfigCLI.execute_validate  s   557%)))T:'++,<dC??8$-}}( ,N;!- E&25&9&>&>&@ EF.>|E?RSY?Z.[O%4 E#$=$,QK$6$6q7I$J2A!2DHQK	EEE ""0 A*:>&;Q*R!0 AA H} ( 2 2?13E F.=a.@	AA ))!--8AZZ\ -H,#MM,CA3fQ]]O[\*]^$(E$ "#1 -A 3 '0CA3nUVTWW]^_^k^k]llm.n o(,-- __X&%/,.JJOO,=\ARSZA[W\E\%n5!- U&25&9&>&>&@ UF KK|E7J67R(STUU " %D4'(LTFRT&UV $% HHQK 	89% ]s   J:J:rL   )__name__
__module____qualname____doc__r;   rP   rp   r   r   r   r}   r   r   r   r{   r   r   r~   r  r  r  r  r|   r   __classcell__)rT   s   @r!   rJ   rJ   W   sz    %D8-D^%"N0PK<8B7r4l#KJ"H	-AF<0@dA:r#   rJ   c                .    t         j                  |        y rL   )rJ   cli_executor)rR   s    r!   mainr;    s    4 r#   __main__)FNrL   );
__future__r   ansible.clir   r   r   r   r-  r   collections.abcr   ansibler   ansible.plugins.loaderr   r   r   r   r,   ansible.cli.argumentsr   rq   ansible.config.managerr	   r
   ansible.errorsr   r   r   +ansible.module_utils.common.text.convertersr   r   r    ansible.module_utils.common.jsonr   ansible.module_utils.sixr   ansible.parsing.quotingr   ansible.parsing.yaml.dumperr   ansible.utils.colorr   ansible.utils.displayr   ansible.utils.pathr   ri   	frozensetr  r"   r%   r*   r8   r@   rH   rJ   r;  r4   r#   r!   <module>rO     s    #  	   
  #  . . " < 9 X X T T 6 1 - 5 ' ) *
) Xx01uHu	: u	:p! zF r#   