403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /lib/python3.11/site-packages/ansible/cli/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /lib/python3.11/site-packages/ansible/cli/__pycache__/doc.cpython-311.opt-1.pyc
�

���c����D�ddlmZmZmZeZddlmZddlZddl	Z	ddl
Z	ddlZddlZddl
Z
ddlmcmZddlmZddlmZddlmZddlmZddlmZdd	lmZmZm Z m!Z!dd
l"m#Z#m$Z$ddl%m&Z&ddl'm(Z(dd
l)m*Z*ddl+m,Z,ddl-m.Z.ddl/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6ddlm7Z7m8Z8ddl9m:Z:m;Z;ddl<m=Z=ddl>m?Z?ddl@mAZAmBZBmCZCe?��ZDejEdzZFgd�ZGiZHgd�ZId&d�ZJd�ZKGd�deL��ZMGd �d!eeM��ZNd"�ZOd#�ZPd&d$�ZQeRd%kreQ��dSdS)'�)�absolute_import�division�print_function)�CLIN)�Path)�	constants)�context)�option_helpers)�list_collection_dirs)�AnsibleError�AnsibleOptionsError�AnsibleParserError�AnsiblePluginNotFound)�	to_native�to_text)�is_sequence)�	json_dump)�	yaml_dump)�	importlib)�string_types)�read_docstub)�	from_yaml)�
AnsibleDumper)�list_plugins)�
action_loader�fragment_loader)�AnsibleCollectionConfig�AnsibleCollectionRef)�_get_collection_name_from_path)�Display)�get_plugin_docs�
get_docstring�get_versioned_doclink)�role�keyword)�Play�Role�Block�Task)�	inventory�lookup�modulec��t�dd���|�t||����dS)NzJadd_collection_plugins method, use ansible.plugins.list functions instead.�2.17��version)�display�
deprecated�updater)�plugin_list�plugin_type�coll_filters   �4/usr/lib/python3.11/site-packages/ansible/cli/doc.py�add_collection_pluginsr86sA�����c�ms��t�t�t����|�K��=�=�>�>�>�>�>�c��	t�t|����dS#t$rO}t�t	j����t
dt|��z���d}~wwxYw)NzXWe could not convert all the documentation into JSON as there was a conversion issue: %s)r1r�	TypeError�vvv�	traceback�
format_excrr)�text�es  r7�jdumprA;s���F����	�$���(�(�(�(�(���F�F�F����I�(�*�*�+�+�+��u�yB�CD�yE�yE�E�F�F�	F�����F���s�'+�
B�A
A?�?Bc��eZdZdZd�ejD��d�ejD��zZd
d�Zdd�Zd
d�Z	d�Z
d	�Zdd�Zdd�Z
dS)�	RoleMixinz�A mixin containing all methods relevant to role argument specification functionality.

    Note: The methods for actual display of role data are not present here.
    c��g|]}d|z��S)�argument_specs���.0r@s  r7�
<listcomp>zRoleMixin.<listcomp>Ks��S�S�S�1�*�Q�.�S�S�Sr9c��g|]}d|z��S)�mainrFrGs  r7rIzRoleMixin.<listcomp>Ks8��WG�WG�WG�fg�W]�`a�Wa�WG�WG�WGr9Nc	��|r#tj�|d|d��}n5|r!tj�|d��}ntd|z���d}|jD]E}tj�||��}tj�|��r|}n�F|�iS	t
|d��5}t|���|���}	|	�i}	|	�	di��cddd��S#1swxYwYdS#ttf$r)}
td|�d	t|
����|
�
���d}
~
wwxYw)aCLoad the role argument spec data from the source file.

        :param str role_name: The name of the role for which we want the argspec data.
        :param str collection_path: Path to the collection containing the role. This
            will be None for standard roles.
        :param str role_path: Path to the standard role. This will be None for
            collection roles.

        We support two files containing the role arg spec data: either meta/main.yml
        or meta/argument_spec.yml. The argument_spec.yml file will take precedence
        over the meta/main.yml file, if it exists. Data is NOT combined between the
        two files.

        :returns: A dict of all data underneath the ``argument_specs`` top-level YAML
            key in the argspec data file. Empty dict is returned if there is no data.
        �roles�metaz7A path is required to load argument specs for role '%s'N�r)�	file_namerEz1An error occurred while trying to read the file 'z': ��orig_exc)�os�path�joinr�ROLE_ARGSPEC_FILES�exists�openr�read�get�IOError�OSErrorrr)�self�	role_name�collection_path�	role_path�	meta_pathrT�specfile�	full_path�f�datar@s           r7�
_load_argspeczRoleMixin._load_argspecMs���$�	f�����_�g�y�&�Q�Q�I�I�
�	f�����Y��7�7�I�I��X�[d�d�e�e�e����/�	�	�H�����Y��9�9�I��w�~�~�i�(�(�
� ����
��<��I�	D��d�C���
6�A� ������T�:�:�:���<��D��x�x� 0�"�5�5�	
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6�
6�
6��
��!�	D�	D�	D�$�$�cg�cg�cg�ir�st�iu�iu�iu�%v�BC�D�D�D�
D�����	D���s<�/D�?=D	�<D�	D
�
D�D
�D�E�'$E�Ec��t��}t��}|D]�}tj�|��s�"tj|��D]�}tj�||��}|jD]z}tj�|d|��}	tj�|	��r8|�||vr0||vr|�||f��|�|��n�{����|S)a�Find all non-collection roles that have an argument spec file.

        Note that argument specs do not actually need to exist within the spec file.

        :param role_paths: A tuple of one or more role paths. When a role with the same name
            is found in multiple paths, only the first-found role is returned.
        :param name_filters: A tuple of one or more role names used to filter the results.

        :returns: A set of tuples consisting of: role name, full role path
        rN)	�setrSrT�isdir�listdirrUrVrW�add)
r]�
role_paths�name_filters�found�found_namesrT�entryr`rbrcs
          r7�_find_all_normal_rolesz RoleMixin._find_all_normal_roles{s
�������e�e���	�	�D��7�=�=��&�&�
����D�)�)�
�
���G�L�L��u�5�5�	�!%� 7���H� "����Y��� I� I�I��w�~�~�i�0�0��'�/�5�L�3H�3H�$�K�7�7� %�	�	�5�)�*<� =� =� =�'�O�O�E�2�2�2���
��

��r9c	�J�t��}t|���}|D�]�}t|d���}t|��}tj�|d��}tj�|���rt	j|��D�]}	|j	D]�}
tj�||	d|
��}tj�|��r�|�|�
|	||f��n�|D]�}t|�d����dkrS|�d��\}
}}d�|
|g��|kr|	|kr|�
|	||f���{||	kr|�
|	||f����n����	���|S)	a�Find all collection roles with an argument spec file.

        Note that argument specs do not actually need to exist within the spec file.

        :param name_filters: A tuple of one or more role names used to filter the results. These
            might be fully qualified with the collection name (e.g., community.general.roleA)
            or not (e.g., roleA).

        :param collection_filter: A string containing the FQCN of a collection which will be
            used to limit results. This filter will take precedence over the name_filters.

        :returns: A set of tuples consisting of: role name, collection name, collection path
        )r6�surrogate_or_strict��errorsrMrNN�.�)
rhrrrrSrTrUrWrjrVrk�len�split)r]rm�collection_filterrn�
b_colldirs�b_pathrT�collname�	roles_dirrprbrc�fqcn�ns�colr$s                r7�_find_all_collection_rolesz$RoleMixin._find_all_collection_roles�s�������)�6G�H�H�H�
� �	"�	"�F��6�*?�@�@�@�D�5�f�=�=�H�����T�7�3�3�I��w�~�~�i�(�(�
"��Z�	�2�2�"�"�E�%)�$;�"�"��$&�G�L�L��E�6�8�$T�$T�	��7�>�>�)�4�4�"�+�3� %�	�	�5�(�D�*A� B� B� B� B�-9�!K�!K�D�'*�4�:�:�c�?�?�';�';�q�'@�'@�:>�*�*�S�/�/���S�$�+.�8�8�R��I�+>�+>�(�+J�+J�u�X\�}�}�,1�I�I�u�h��6M�,N�,N�,N��)-����(-�	�	�5�(�D�2I�(J�(J�(J��!�E�"����r9c���|rd�||g��}n|}i}||d<i|d<|���D]+}||pi}|�dd��|d|<�,||fS)a�Build a summary dict for a role.

        Returns a simplified role arg spec containing only the role entry points and their
        short descriptions, and the role collection name (if applicable).

        :param role: The simple role name.
        :param collection: The collection containing the role (None or empty string if N/A).
        :param argspec: The complete role argspec data dict.

        :returns: A tuple with the FQCN role name and a summary dict.
        rv�
collection�entry_points�short_description�)rU�keysrZ)r]r$r��argspecr�summary�ep�
entry_specs        r7�_build_summaryzRoleMixin._build_summary�s����	��8�8�Z��.�/�/�D�D��D��� *����"$�����,�,�.�.�	R�	R�B� ���*��J�*4�.�.�9L�b�*Q�*Q�G�N�#�B�'�'��g��r9c�&�|rd�||g��}n|}i}||d<||d<i|d<|���D]}|�||kr||pi}	|	|d|<� t|d�����dkrd}||fS)NrvrTr�r�r)rUr�rx)
r]r$rTr�r��entry_pointr�docr�r�s
          r7�
_build_doczRoleMixin._build_doc�s����	��8�8�Z��.�/�/�D�D��D�����F��&��L�� ��N���,�,�.�.�	5�	5�B��"�b�K�&7�&7�$�R�[�.�B�
�*4��N�#�B�'���s�>�"�'�'�)�)�*�*�a�/�/��C��c�{�r9Tc��|���}|���}|s|�|��}ng}|�|���}i}|D]m\}}	|�||���}	|�|d|	��\}
}|||
<�=#t$r$}|r�ddt|��zi||<Yd}~�fd}~wwxYw|D]s\}}
}	|�||���}	|�||
|	��\}
}|||
<�>#t$r)}|r�ddt|��zi||
�d|��<Yd}~�ld}~wwxYw|S)	a�Return a dict describing the listing of all roles with arg specs.

        :param role_paths: A tuple of one or more role paths.

        :returns: A dict indexed by role name, with 'collection' and 'entry_points' keys per role.

        Example return:

            results = {
               'roleA': {
                  'collection': '',
                  'entry_points': {
                     'main': 'Short description for main'
                  }
               },
               'a.b.c.roleB': {
                  'collection': 'a.b.c',
                  'entry_points': {
                     'main': 'Short description for main',
                     'alternate': 'Short description for alternate entry point'
                  }
               'x.y.z.roleB': {
                  'collection': 'x.y.z',
                  'entry_points': {
                     'main': 'Short description for main',
                  }
               },
            }
        )rz�r`r��errorz*Error while loading role argument spec: %sN�r_rv)�_get_roles_path�_get_collection_filterrqr�rfr��	Exceptionr)r]�fail_on_errors�
roles_pathrzrM�	collroles�resultr$r`r�rr�r@r�r_s               r7�_create_role_listzRoleMixin._create_role_list�s���<�)�)�+�+�
� �7�7�9�9�� �	��/�/�
�;�;�E�E��E��3�3�FW�3�X�X�	���$�
	�
	�O�D�)�	
��,�,�T�Y�,�G�G�� $� 3� 3�D�"�g� F� F�
��g�&��t�����
�
�
�!����I�I�VW�L�L�X� ��t�����������
����2;�
	�
	�-�D�*�o�	
��,�,�T�?�,�S�S�� $� 3� 3�D�*�g� N� N�
��g�&��t�����
�
�
�!����I�I�VW�L�L�X�8��*�*�*�d�d�3�4�4�4�4�4�4�����
�����
s0�#6B�
C�$C�C�6D�
D>�D9�9D>c�\�|���}|�||���}|�|���}i}|D]n\}}		|�||	���}
|�||	d|
|��\}}|r|||<�A#t
$r!}
ddt
|
��zi||<Yd}
~
�gd}
~
wwxYw|D]t\}}}	|�||���}
|�||||
|��\}}|r|||<�B#t
$r&}
ddt
|
��zi||�d|��<Yd}
~
�md}
~
wwxYw|S)	a�
        :param role_names: A tuple of one or more role names.
        :param role_paths: A tuple of one or more role paths.
        :param entry_point: A role entry point name for filtering.
        :param fail_on_errors: When set to False, include errors in the JSON output instead of raising errors

        :returns: A dict indexed by role name, with 'collection', 'entry_points', and 'path' keys per role.
        )rmr�r�r�zError while processing role: %sNr�rv)r�rqr�rfr�r�r)r]�
role_namesr�r�r�rMr�r�r$r`r�rr�r@r�r_s                r7�_create_role_doczRoleMixin._create_role_doc5s����)�)�+�+�
��+�+�J�Z�+�P�P���3�3��3�L�L�	���$�		�		�O�D�)�
��,�,�T�Y�,�G�G�� �O�O�D�)�R��+�V�V�	��c��'�#&�F�4�L����
�
�
��>��1���M� ��t�����������
����
2;�		�		�-�D�*�o�
��,�,�T�?�,�S�S�� �O�O�D�/�:�w�Xc�d�d�	��c��'�#&�F�4�L����
�
�
��>��1���M�8��*�*�*�d�d�3�4�4�4�4�4�4�����
����
�
s0�:B�
B2�B-�-B2�>:C9�9
D)�D$�$D))NN�N)T)NT)�__name__�
__module__�__qualname__�__doc__�C�YAML_FILENAME_EXTENSIONSrVrfrqr�r�r�r�r�rFr9r7rCrCCs���������T�S��8R�S�S�S�WG�WG�kl�lF�WG�WG�WG�G��,D�,D�,D�,D�\ � � � �D(�(�(�(�T���0���(@�@�@�@�D%�%�%�%�%�%r9rCc���eZdZdZdZdZejd��Zejd��Z	ejd��Z
ejd��Zejd��Zejd	��Z
ejd
��Zejd��Zejd��Zejd
��Zejd��Zejd��Z�fd�Zed2d���Zed���Z�fd�Z�fd�Zd�Zd�Zd�Zed���Zed���Zd�Z d�Z!d3d�Z"d �Z#ed!���Z$�fd"�Z%ed#���Z&ed$���Z'ed%���Z(ed&���Z)ed'���Z*ed(���Z+d)�Z,ed*���Z-ed4d+���Z.ed,���Z/ed2d-���Z0ed5d/���Z1d0�Z2ed6d1���Z3�xZ4S)7�DocCLIa displays information on modules installed in Ansible libraries.
        It displays a terse listing of plugins and their short descriptions,
        provides a printout of their DOCUMENTATION strings,
        and it can create a short "snippet" which can be pasted into a playbook.  zansible-doc)	r,�docuri�
version_added�version_added_collectionr��now_date�
plainexamples�
returndocsr�z\bI\(([^)]+)\)z\bB\(([^)]+)\)z\bM\(([^)]+)\)z\bL\(([^)]+), *([^)]+)\)z\bU\(([^)]+)\)z\bR\(([^)]+), *([^)]+)\)z\bC\(([^)]+)\)z\bHORIZONTALLINE\bz	.. note::z.. seealso::z:\w+?:`z	.. \w+?::c�~��tt|���|��t��|_dSr�)�superr��__init__rhr4)r]�args�	__class__s  �r7r�zDocCLI.__init__ys3���
�f�d���$�$�T�*�*�*��5�5����r9Nc��t�dd���t|||g�����S)Nz^find_plugins method as it is incomplete/incorrect. use ansible.plugins.list functions instead.r.r/)r1r2rr�)�clsrT�internalr5r6s     r7�find_pluginszDocCLI.find_plugins~sJ�����{�FL��	M�	M�	M��K��t�f�=�=�B�B�D�D�Dr9c��|j�d|��}|j�d|��}|j�d|��}|j�d|��}|j�d|��}|j�d|��}|j�d|��}|j�d�	d��|��}|j
�d|��}|j�d	|��}|j�d
|��}|j
�d|��}|S)Nz`\1'z*\1*z[\1]z\1z\1 <\2>z
{0}
z
-------------z	See also:zNote:�`r�)�_ITALIC�sub�_BOLD�_MODULE�_URL�_LINK�_REF�_CONST�_RULER�format�_RST_SEEALSO�	_RST_NOTE�
_RST_ROLES�_RST_DIRECTIVES)r�r?�ts   r7�tty_ifyzDocCLI.tty_ify�s ��
�K�O�O�G�T�*�*���I�M�M�'�1�%�%���K�O�O�-�q�1�1���H�L�L���"�"���I�M�M�*�a�(�(���H�L�L���"�"���J�N�N�7�A�&�&���J�N�N�9�+�+�H�5�5�q�9�9��
�� � ��q�1�1���M���h��*�*���N���t�Q�'�'����#�#�C��+�+���r9c���d}tt|���dd���tj|j��tj|j��|j�dddd�	��|j�d
ddd
dd�t��t���|j�dddddd���|j�dddtjtjd���tj
d���|j���}|�dd d!d"�#��|�d$d%ddd&d'd(�t ��z���|�d)d*ddd+d,|z���|�d-d.ddd/d0|z���|�d1ddd2d3���|j�d4ddd5d6���dS)7Nz[A supplied argument will be used for filtering, can be a namespace or full collection name.zplugin documentation toolzWSee man pages for Ansible CLI options or website for tutorials https://docs.ansible.com)�desc�epilogr��*�Plugin�plugin)�nargs�help�metavarz-tz--type�storer,�typezQChoose which plugin type (defaults to "module"). Available plugin types are : {0})�action�default�destr��choicesz-jz--json�
store_trueF�json_formatzChange output into json format.)r�r�r�r�z-rz--roles-pathr�T)�pathsepz0The path to the directory containing your roles.)r�r�r�r�r�z-ez
--entry-pointr�z#Select the entry point for role(s).)r�r�z-sz	--snippet�show_snippetz0Show playbook snippet for these plugin types: %s�, z-Fz--list_files�
list_fileszOShow plugin names and their source files without summaries (implies --list). %sz-lz--list�list_dirzList available plugins. %sz--metadata-dump�dumpzT**For internal use only** Dump json metadata for all entries, ignores other options.z--no-fail-on-errors�no_fail_on_errorsz}**For internal use only** Only used for --metadata-dump. Do not fail on errors. Report the error message in the JSON instead.)r�r��init_parser�opt_help�add_module_options�parser�add_basedir_options�add_argumentr��TARGET_OPTIONSr��DEFAULT_ROLES_PATH�unfrack_path�PrependListAction�add_mutually_exclusive_grouprU�SNIPPETS)r]r6�	exclusiver�s   �r7r�zDocCLI.init_parser�s����s��
�f�d���'�'�,�l�	(�	
�	
�	
�	�#�D�K�0�0�0��$�T�[�1�1�1�	
�� � ��s��8� �T�T�T��� � ��x���X^�'I�IO��P^�I_�I_�)7�	!�	9�	9�	9�	
�� � ��x��e�Zg�&G�	!�	I�	I�	I�
	
�� � ��~�L�RS�Rf�&.�&;�D�&I�&I�&I�(0�(B�&X�	!�	Z�	Z�	Z��K�<�<�>�>�	����t�_�=�$I�	�	K�	K�	K�	���t�[��u�[i�$V�Y]�Yb�Yb�ck�Yl�Yl�$l�	�	n�	n�	n�	���t�^�L�RW�^j�$u�yD�%D�	�	E�	E�	E����t�X�l�E�Xb�$@�;�$N�	�	P�	P�	P����0��u�[a�$z�	�	|�	|�	|�	
�� � �!6�|�UZ�at�'m�	!�	n�	n�	n�	n�	nr9c�z��tt|���|��}|jt_|Sr�)r�r��post_process_args�	verbosityr1)r]�optionsr�s  �r7r�zDocCLI.post_process_args�s0������%�%�7�7��@�@��#�-����r9c
��td�|���D����}tj|z
dz
}g}g}tjdr�t
|�����D]�}t||��}|�d��}|d�	d��ri|ddkr]|d	d
vrS|dd	d�|d<d�
|��}|�d|||t|��|fz����|�d|||t|��|fz���ېnt
|�����D]�}t�||��}	t|	��|kr
|	d|�dz}	|�d��}|d�	d��rS|dd	d�|d<d�
|��}|�d|||t|	��|	fz����|�d|||t|	��|	fz����t|��dkr*|�d
��|�|��t�d�
|����dS)Nc3�4K�|]}t|��V��dSr��rx�rH�xs  r7�	<genexpr>z-DocCLI.display_plugin_list.<locals>.<genexpr>�s(����6�6�!�s�1�v�v�6�6�6�6�6�6r9�r�rv����_r�ansible�)�builtin�legacyz%-*s %-*.*s�...z
DEPRECATED:�
)�maxr�r1�columnsr	�CLIARGS�sortedrry�
startswithrU�appendrxr�r��extend�pager)
r]�results�displace�	linelimitr?r2r��filename�pbreakr�s
          r7�display_plugin_listzDocCLI.display_plugin_list�s����6�6�w�|�|�~�~�6�6�6�6�6���O�h�.��2�	����
��?�<�(�	`� ������0�0�

h�

h��$�W�V�_�5�5�� ���c�*�*���"�:�(�(��-�-�h�&��)�y�2H�2H�V�TU�Y�Zo�Mo�Mo�!'���A�B�B��F�2�J� �X�X�f�-�-�F��%�%�m�x���TW�X`�Ta�Ta�ck�6l�&l�m�m�m�m��K�K�
��6�9�c�RZ�m�m�]e�0f� f�g�g�g�g�

h�!������0�0�
`�
`���~�~�g�f�o�6�6���t�9�9�y�(�(��
��
�+�e�3�D����c�*�*���"�:�(�(��-�-�`�!'���A�B�B��F�2�J� �X�X�f�-�-�F��%�%�m�x���TW�X\�T]�T]�_c�6d�&d�e�e�e�e��K�K�
��6�9�c�RV�i�i�Y]�0^� ^�_�_�_�_��z�?�?�Q����K�K��(�(�(��K�K�
�#�#�#�	���T�Y�Y�t�_�_�%�%�%�%�%r9c
���t|�����}t��}|D]:}||d���D]}|�|����;d}d}|rt	d�|D����}|rt	d�|D����}t
j|z
|z
dz
}g}	t|��D]e}||d���D]B\}}
t|
��|kr
|
d|�dz}
|	�
d|||||
fz���C�ft�d	�
|	����dS)
z�Display all roles we can find with a valid argument specification.

        Output is: fqcn role name, entry point, short description
        r�rc3�4K�|]}t|��V��dSr�r�r�s  r7r�z2DocCLI._display_available_roles.<locals>.<genexpr>s(����5�5�!�s�1�v�v�5�5�5�5�5�5r9c3�4K�|]}t|��V��dSr�r�r�s  r7r�z2DocCLI._display_available_roles.<locals>.<genexpr>s(����?�?��S��V�V�?�?�?�?�?�?r9r�Nrz%-*s %-*s %sr)�listr�rhrkrr1rr�itemsrxrr�r
rU)r]�	list_jsonrM�entry_point_namesr$r��max_role_len�
max_ep_lenr
r?r�s           r7�_display_available_roleszDocCLI._display_available_roless���
�Y�^�^�%�%�&�&���E�E���	3�	3�D�(���~�>�C�C�E�E�
3�
3��!�%�%�k�2�2�2�2�
3����
��	6��5�5�u�5�5�5�5�5�L��	@��?�?�->�?�?�?�?�?�J��O�l�2�Z�?�!�C�	����5�M�M�	5�	5�D�%.�t�_�^�%D�%J�%J�%L�%L�
5�
5�!��T��t�9�9�y�(�(��
��
�+�e�3�D����N�l�D�.8�+�.2�.4�4�5�5�5�5�
5�	���T�Y�Y�t�_�_�%�%�%�%�%r9c���t|�����}g}|D]!}||�|||��z
}�"t�d�|����dS)Nr)rr��get_role_man_textr�r
rU)r]�	role_jsonrMr?r$s     r7�_display_role_doczDocCLI._display_role_doc!ss���Y�^�^�%�%�&�&�����	B�	B�D��D�*�*�4��4��A�A�A�D�D�	���T�Y�Y�t�_�_�%�%�%�%�%r9c�F�ttjdd����S)Nr�zkeyword_desc.yml)r�pkgutil�get_datarFr9r7�_list_keywordszDocCLI._list_keywords*s����)�)�5G�H�H�I�I�Ir9c
��i}t���}|D�]!}|�d��rd}n|dkrd}n|}	d||i}g|d<tD�]'}|tvrDd|���z}t
j|��}t||d��t|<|t|j	vr�|d�
|��d|vr�t|j	�|��}	t|	d	��r	i}t�t|	d
d��|d<|�
d��s|d
vrd|d<nt|	d��rd|d<nd|d<dD]}
t|	|
��||
<���)t|�����D]
}||�||=�|||<���#t tf$rs}t"�d|�dt'|������t"jdkr+t"�t-j����Yd}~��d}~wwxYw|S)N�with_�loop�async�	async_val�description�
applies_tozansible.playbook.%sr��private�isa�string�when)�until�implicit�template�static�explicit)�alias�priorityzSkipping Invalid keyword 'z
' specified: rw)r�r"r�
PB_OBJECTS�	PB_LOADED�lowerr�
import_module�getattr�fattributesrrZ�KeyError�endswithrr��AttributeErrorr1�warningrr��verboser=r>)
r�re�descs�keyr%�kdata�pobj�	obj_class�loaded_class�fa�visible�kr@s
             r7�_get_keywords_docszDocCLI._get_keywords_docs.s������%�%�'�'���;	<�;	<�C��~�~�g�&�&�
� �������%�����0
<�&��c�
�3��')��l�#�&�F�F�D��9�,�,�$9�D�J�J�L�L�$H�	�'0�'>�y�'I�'I��*1�,��d�*K�*K�	�$���)�D�/�"=�=�=��l�+�2�2�4�8�8�8�"��.�.�!*�4��!<�!@�!@��!I�!I�B�&�r�9�5�5�/�(*��&.��,3�B��x�,H�,H�E�&�M�&�/�/��7�7�?�7�j�;P�;P�5?��j� 1� 1�!(��X�!6�!6�?�4<��j� 1� 1�4>��j� 1�,A�F�F��18��W�1E�1E��g�����e�j�j�l�l�+�+�%�%�A��Q�x�'�!�!�H��!��S�	�	��"�H�-�
<�
<�
<�����QT�QT�QT�V]�^_�V`�V`�V`� a�b�b�b��$��)�)��O�O�I�$8�$:�$:�;�;�;����������
<����
�s�E3F:�:H>�A(H9�9H>c�P�d}ttjd��dkr�tjdd}tj|��s"td�|�����ttjd��dkrtd���|S)Nr�r�rzGInvalid collection name (must be of the form namespace.collection): {0}z-Only a single collection filter is supported.)rxr	rr�is_valid_collection_namerr�r
)r]r6s  r7r�zDocCLI._get_collection_filterrs������w��v�&�'�'�1�,�,�!�/�&�1�!�4�K�'�@��M�M�
[�"�#l�#s�#s�t�$A�$A�B�B�B��W�_�V�,�-�-��1�1�)�*Y�Z�Z�Z��r9c����i}i�_t�|��}����}�j�t||����|dkr��|��}nb|dkr&�fd��j���D��}n6d��j���D��}t���_	|S)N�dir�filesc�8��i|]}|�j|d��S)r)�plugins)rHrHr]s  �r7�
<dictcomp>z(DocCLI._list_plugins.<locals>.<dictcomp>�s&���J�J�J��q�$�,�q�/�!�,�J�J�Jr9c��i|]}|i��SrFrF)rHrHs  r7rQz(DocCLI._list_plugins.<locals>.<dictcomp>�s��:�:�:��q�"�:�:�:r9)
rPr��_prep_loaderr�r3r�_get_plugin_list_descriptionsr�rhr4)r]r5�contentr�loaderr6s`     r7�
_list_pluginszDocCLI._list_plugins~s����������$�$�[�1�1���1�1�3�3������L��k�B�B�C�C�C��e����8�8��@�@�G�G�
��
�
�J�J�J�J�d�l�6G�6G�6I�6I�J�J�J�G�G�:�:�d�l�&7�&7�&9�&9�:�:�:�G�"�u�u�D���r9FTc	�V�t�|��}i}|D�]�}i}	t|||ttjddk��\}}	}
}n�#t$r1}t�t|����Yd}~�nd}~wt$r�}|sddt|��zi||<Yd}~��t�tj
����|�d|�dt|���d�}
|rt�|
��nt|
���Yd}~nd}~wwxYw|s|sddi||<��"t�||||	|
|��}|s@	t!|��n/#t$r"}dd	t|��zi||<Yd}~��{d}~wwxYw|||<���|S)
Nr�rr�z:Missing documentation or could not parse documentation: %s� z; missing documentation (or could not parse documentation): rzNo valid documentation foundz*Cannot serialize documentation as JSON: %s)r�rSr!rr	rrr1r>rr�r<r=r>r�_combine_plugin_docr)r]r5�names�fail_okr�rV�plugin_docsr�r�r�r��metadatar@�msg�docss               r7�_get_plugins_docszDocCLI._get_plugins_docs�sg���$�$�[�1�1�����!	'�!	'�F��C�
,�;J�6�S^�`f�hw�{B�{J�KV�{W�Z[�{[�<]�<]�8��]�J����(�
�
�
����	�!���-�-�-�����������	
,�	
,�	
,�%��+2�4p�s|�}~�s�s�4�+A�K��'��H�H�H�H����I�0�2�2�3�3�3�`k�`k�`k�ms�ms�ms�u~�@A�vB�vB�vB�vB�C���,��O�O�C�(�(�(�(�&�s�+�+�+�)�(�(�(�(�����	
,�����
�%�T�+2�4R�*S�K��'���-�-�f�k�3�
�Wa�ck�l�l�D�!�
���d�O�O�O�O�� ����+2�4`�cl�mn�co�co�4o�*p�K��'��H�H�H�H���������#'�K�����sB�1A�
D1�!'B
�

D1�D,�8A/D,�,D1�#E3�3
F�=F�Fc�$�tjd}tjd�ktj�tjdd��}tj�|��r|f|z}|tjdfz}|S)ao
         Add any 'roles' subdir in playbook dir to the roles search path.
         And as a last resort, add the playbook dir itself. Order being:
           - 'roles' subdir of playbook dir
           - DEFAULT_ROLES_PATH (default in cliargs)
           - playbook dir (basedir)
         NOTE: This matches logic in RoleDefinition._load_role_path() method.
        r��basedirNrM)r	rrSrTrUri)r]r��subdirs   r7r�zDocCLI._get_roles_path�su���_�\�2�
��?�9�%�1��W�\�\�'�/�)�"<�g�F�F�F��w�}�}�V�$�$�
4�$�Y��3�
�#�w��y�'A�&C�C�J��r9c�2�ttd|z��}tjd�'|�tjdd���tjdr,tjdD]}|r|�|���d|_|S)z' return a plugint type specific loader �	%s_loaderrcNT)�with_subdir�module_path)r9�
plugin_loaderr	r�
add_directory�_paths)r5rVrTs   r7rSzDocCLI._prep_loader�s������k�(A�B�B���?�9�%�1�� � ����!;�� �N�N�N��?�=�)�	/���
�6�
/�
/���/��(�(��.�.�.����
��
r9c
�Z��tt|�����tjd}tjd���}tjdptjd}tjdptjd}tjdrd}ntjdrd}nd}i}|r|t_|tvrtd	|z���tjd�r$t}i|d
<|D�]}ttjd��}	|dkrZ|�|	�
��}
|�|
�
��tjd|	�
��|d
|<��|dkrOt���}t�|�
����|d
|<��|�|d��}|�|||dv|	���|d
|<���n|rR|dkrt���}n�|dkr|���}n�|�||��}n�t%tjd��dkrtd���|dkr+t�tjd��}nc|dkr7|�tjdtjd��}n&|�|tjd��}|rt'|���nIg}
|t(jv�r�|r|r|�|���n�tjdr�|t.vr*t1dd�t.��z���|���D]�\}}	t�|||d��}|
�|���>#t:$rE}t<�d� |tC|������Yd}~��d}~wwxYw�n|���D]q\}}t�"|||d|d|d|d��}|r|
�|���Tt<�d|z���rn||dkrBtjdr|r|�#|��nL|r|�$|��n4|r2t�%t�&|����}
|
r-t�'d�|
����dS)Nrcr�r�r�r�r�rNrMz)Unknown or undocumentable plugin type: %s�allr�r$)r�r�r%)�test�filter)r\r�r�rzEMissing name(s), incorrect options passed for detailed documentation.r�z>Snippets are only available for the following plugin types: %sr�r�z,Unable to construct a snippet for '{0}': {1}�examples�returnr^z.No valid documentation was retrieved from '%s'r�)(r�r��runr	rr7r�playbook_pathsr�r
�boolr�r�r�r"rIrWrarxrAr��DOCUMENTABLE_PLUGINSrr�rrUr�format_snippetr�
ValueErrorr1r>r�r�format_plugin_docrrr��
_dump_yamlr
)r]rcr5�do_json�listingrUr`�ptypes�ptype�no_failrMr[�plugin_namesr?r��doc_data�textretr@r�s                  �r7rrz
DocCLI.run�s����
�f�d�����!�!�!��/�)�,���o�f�-�3�3�5�5���/�-�0�K�G�O�F�4K���/�,�/�N�7�?�:�3N���?�<�(�	��G�G�
�_�Z�
(�	��G�G��G����	=�5<�#�2��n�,�,�%�&Q�T_�&_�`�`�`��?�6�"�#	T�#�F��D��K��
T�
T���7�?�3F�#G�G�H�H���F�?�?� �2�2�'�2�J�J�E�)-�)>�)>�u�z�z�|�|�W�_�]j�Mk�}D�)>�*E�*E�D��K��&�&��i�'�'�"�1�1�3�3�E�)/�)B�)B�5�:�:�<�<�)P�)P�D��K��&�&�#'�#5�#5�e�T�#B�#B�L�)-�)?�)?��|�^c�gy�^y�LS�)?�*T�*T�D��K��&�&�
T��	T��i�'�'��,�,�.�.�����&�&��-�-�/�/����)�)�+�w�?�?����7�?�6�*�+�+�q�0�0�)�*q�r�r�r��i�'�'��0�0����1H�I�I�����&�&��,�,�W�_�V�-D�g�o�Vc�Fd�e�e����-�-�k�7�?�6�;R�S�S���*	,��$�K�K�K�K��D��a�4�4�4��g�t�g��,�,�T�2�2�2�2��_�^�4�g�"�(�2�2�*�,8�:>�)�)�H�:M�:M�,N�O�O�O�-1�J�J�L�L�1�1�(���1�&,�&;�&;�F�K�QY�Z_�Q`�&a�&a�G�
!�K�K��0�0�0�0��	 *�V�V�V�#�O�O�-:�:@�&���QR���:T�:T�V�V�V�V�V�V�V�V�����V����1�-1�J�J�L�L�g�g�(���"(�":�":�6�;�;C�E�?�H�U_�L`�;C�H�;M�x�Xb�Oc�#e�#e��#�g� �K�K��0�0�0�0�#�O�O�,\�_e�,e�f�f�f�f�g���&�&��?�:�.�1�4�1��1�1�$�7�7�7�7��1��*�*�4�0�0�0���
?��~�~�f�&7�&7��&=�&=�>�>���
,����R�W�W�T�]�]�+�+�+��qs�-"P%�%
Q4�/;Q/�/Q4c���ttd|z��}|���}i}|D]$}|�t	|�����%t|�����S)Nrf)r9ri�_get_paths_with_contextr3rrr�)r5rV�pathsrP�path_contexts     r7�get_all_plugins_of_typezDocCLI.get_all_plugins_of_typeMsn�����k�(A�B�B���.�.�0�0����!�	6�	6�L��N�N�<��4�4�5�5�5�5��g�l�l�n�n�%�%�%r9c	��ttd|z��}|�|ddd���}|js#t	d�||�����|j}|j}	t|ttjddk||���\}}}}nQ#t$rDt�tj����t	|�d	|�d
|�d����wxYw|�dSt#|t$�|||j��|�dd
��|�dd
�����S)Nrfz.pyT)�mod_type�ignore_deprecated�
check_aliasesz$unable to load {0} plugin named {1} r�r)r?�collection_namer5rYz at zB has a documentation formatting error or is missing documentation.r��UNKNOWNr�)�name�	namespacer(r�)r9ri�find_plugin_with_context�resolvedrr��plugin_resolved_path�plugin_resolved_collectionr"rr	rr�r1r<r=r>�dictr��namespace_from_plugin_filepath�package_pathrZ)r5�plugin_namerVr�rr�r��__s        r7�get_plugin_metadatazDocCLI.get_plugin_metadataVs������k�(A�B�B���0�0��u�`d�tx�0�y�y����	h��E�L�L�[�Ze�f�f�g�g�g��.�� �;��	W�+�H�o�PW�P_�`k�Pl�op�Pp�<K�Yd�f�f�f�O�C��R�����	W�	W�	W��K�K�	�,�.�.�/�/�/��r}�r}�r}�@K�@K�@K�MU�MU�MU� V�W�W�
W�	W�����;��4����;�;�H�k�SY�Sf�g�g���� 3�Y�?�?��'�'�/�9�=�=�	
�
�
�	
s
�+2B�AC,c�J�|�d��s|dz
}|�|d��}tj�|��d}|�|d��d�d��}|�dd��}|dkrd}|S)N�/r�rr�z/_rv)r<�replacerSrT�splitext�rsplit�strip)�filepathr�rc�rel_path�extension_free�namespace_only�clean_nss       r7r�z%DocCLI.namespace_from_plugin_filepathrs�������$�$�	��s�N�G��#�#�G�R�0�0����)�)�(�3�3�A�6��'�.�.�{�A�>�>�q�A�G�G��M�M��!�)�)�#�s�3�3���r�>�>��H��r9c�D�|dkr|tvrd|d<nd|d<||||d�S)Nr,T�
has_actionF)r�rprqr^)r)r�r5r�r�r�r^s      r7rZzDocCLI._combine_plugin_docsF���(�"�"���&�&�$(��L�!�!�$)��L�!��
��Ya�b�b�br9c�N�|dkrK|�di���d��r"td�|�����g}|dkrt|��}nd|vrt	|��}|�d��d�|��S)z9 return heavily commented plugin use to insert into play r*r�r�z�The {0} inventory plugin does not take YAML type config source that can be used with the "auto" plugin so a snippet cannot be created.r+r�r)rZrwr��_do_lookup_snippet�_do_yaml_snippetrrU)r�r5r�r?s    r7rvzDocCLI.format_snippet�s����+�%�%�#�'�'�)�R�*@�*@�*D�*D�X�*N�*N�%��)�)/�����9�9�
9����(�"�"�%�c�*�*�D�D�
�#�
�
�#�C�(�(�D����B�����y�y����r9c	�2�|d}||d<||d<||d<	t�|||��}na#t$rT}t�tj����td|�dt|����|����d}~wwxYw|S)Nr�r�r�r^z'Unable to retrieve documentation from 'z
' due to: rQ)	r��get_man_textr�r1r<r=r>rr)	r�r5r�r�r�r^r�r?r@s	         r7rxzDocCLI.format_plugin_doc�s����l�+�� -��O��&��L��"��J��	}��&�&�s�O�[�I�I�D�D���	}�	}�	}��K�K�	�,�.�.�/�/�/��,�Z`�Z`�Z`�bk�lm�bn�bn�bn�o�z{�|�|�|�|�����	}�����s�6�
B�AB�Bc��i}|j���D�]c}d}tt|j|d����}d}	t	|��}n#t
$r}|}Yd}~nd}~wwxYw|��|�d��d}|�||jz��}	tj
D]T}
|	�|
��}	|���rt	|��}�<#t
$r}|}Yd}~�Md}~wwxYw|r!t�|�d|������|rt|t ��sd}n(|�dd�����}|||<��e|S)Nrrvr�z' has a documentation formatting error: �UNDOCUMENTEDr�zINVALID SHORT DESCRIPTION)rPr�rrrr�ry�	with_name�suffixr��DOC_EXTENSIONS�with_suffixrWr1r>�
isinstancer�rZr�)
r]rVr@r�r�r�docerrorr@�base�basefile�	extension�docfiler�s
             r7rTz$DocCLI._get_plugin_list_descriptions�s������l�'�'�)�)� 	!� 	!�F��C��I�d�l�6�&:�1�&=�>�>�?�?�H��H�
�"�8�,�,�����
�
�
������������
�����{��|�|�C�(�(��,��#�-�-�d�X�_�.D�E�E��!"�!1�%�%�I�&�2�2�9�=�=�G�%�"�>�>�+�+�8�".�w�"7�"7�C���$�%�%�%�#$�����������%�����
����QW�QW�QW�Ya�Ya� b�c�c�c���
Y�j��d�3�3�
Y�%����w�w�2�4O�P�P�V�V�X�X�� �E�&�M�M��s0�A!�!
A7�+A2�2A7�#C<�<
D�D
�
Dc���g}|�d���D],}t|d���}||vr|�|���-tj�|��S)z; Returns a string suitable for printing of the search path F)�subdirsrsrt)�
_get_pathsrrrSr�rU)�finder�ret�is   r7�print_pathszDocCLI.print_paths�si��
���"�"�5�"�1�1�	�	�A���"7�8�8�8�A���|�|��
�
�1�
�
�
���z���s�#�#�#r9c�X�t||dt����d��S)Nz'')�default_flow_style�
default_style�Dumperr)rr�rstrip)�struct�
flow_styles  r7ryzDocCLI._dump_yaml�s)����J�d�[h�i�i�i�p�p�qu�v�v�vr9c���t�d��fd�|�d��D������S)Nrc���g|]}�|z��SrFrF)rH�line�indents  �r7rIz(DocCLI._indent_lines.<locals>.<listcomp>�s���(T�(T�(T�4��$��(T�(T�(Tr9)r�r�rUry)r?r�s `r7�
_indent_lineszDocCLI._indent_lines�sB����~�~�d�i�i�(T�(T�(T�(T�4�:�:�d�CS�CS�(T�(T�(T�U�U�V�V�Vr9c�>�|dkr
d}|dkrdS|r|�d|��}d|��S)Nzansible.builtinzansible-core�
historicalz of zversion rF)r�r�s  r7�_format_version_addedzDocCLI._format_version_added�sK��#�'8�8�8�'5�$���,�,�#�|�#�	S�*7�-�-�9Q�9Q�R�M��,�}�/�/r9r�c�
�t|��D�]�}t||��}|�dd��}t|t��std|z���|rd}	nd}	|�|�|	�d|����d|vrtd���t|d��r�t|dd	��D]�\}
}t|t��s%td
|�d|
�dt|�������|�tjt�|��|||�
������n�t|dt��s(td
|�dt|d�������|�tjt�|d��|||�
����|d=g}dD]0}
|
|vr*|�|
|�|
��f���1|s|s	d|vrd|d<i}dD]Q}||vrK||rCd�|�|��D��||<tjD]}||D]	}||vr||=�
��Rd|vr||drtg|d<|dD]c}d|vrB|d�|dd|d�dd��zd����H|d�|���d|d=|rH|�t�t�d|i��|����|�dd��}|�dd��}t|��D]�}|�d��r�t||��rT|�t�|�dt�||d�����|������|�t�t�|||i��|������|r4|�|�dt�||���d���|D]h\}
}|�d ��|�|�|
����d!���t�||||d"z||���i|s|�d �����dS)#N�requiredFz8Incorrect value for 'Required', a boolean is needed.: %s�=�-rYr(zCAll (sub-)options and return values must have a 'description' fieldr�z"Expected string in description of z
 at index z, got ��initial_indent�subsequent_indent)r��
suboptions�contains�specr�)�env�ini�yaml�varsr%c�,�g|]}t|����SrF)r�)rH�items  r7rIz%DocCLI.add_fields.<locals>.<listcomp>*s��#K�#K�#K�4�D��J�J�#K�#K�#Kr9�cli�optionr�z--%sr�)r�r��set_viar�r��: T)r�z
added in: rr�z:
z    )rr��popr�rtrrr�	enumeraterr��textwrap�fillr�r��IGNOREr�r�ryrr��upper�
add_fields)r?�fields�limit�
opt_indent�
return_values�base_indent�o�optr��
opt_leadin�	entry_idxrpr��subkey�conf�config�ignorer�r�r�r�rH�subdatas                       r7r�zDocCLI.add_fields�s�������T	 �T	 �A��v�a�y�/�/�C��w�w�z�5�1�1�H��h��-�-�
j�"�#]�`h�#h�i�i�i��
!� �
�
� �
��K�K�[�[�*�*�*�a�a�@�A�A�A��C�'�'�"�#h�i�i�i��3�}�-�.�.�
O�(1�#�m�2D�a�(H�(H�F�F�$�I�u�%�e�\�:�:�E�*�l�ij�ij�ij�lu�lu�lu�w{�}B�xC�xC�xC�,D�E�E�E��K�K��
�f�n�n�U�.C�.C�U�[e�zD�!E�!E�!E�F�F�F�F�F�
"�#�m�"4�l�C�C�w�&�,�YZ�YZ�YZ�\`�ad�er�as�\t�\t�\t�'u�v�v�v����H�M�&�.�.��]�9K�*L�*L�e�dn�CM�N�N�N�O�O�O��M�"��J�G�
A�
A���S�=�=��%�%�v�s�w�w�v���&?�@�@�@���
&�M�
&�i�s�6J�6J�!%��I���D�C�
1�
1���S�=�=�S��[�=�#K�#K�3�7�7�6�?�?�#K�#K�#K�D��L�"(�-�1�1��$(��L�1�1�D�%��~�~�$(��L��1��
��|�|��E�
�|� ��U���u�:�0�0�C��s�*�*��U��*�*�C��K�6�TW�X^�T_�Tg�Tg�hk�mp�Tq�Tq�Kq�+r�+r�s�s�s�s��U��*�*�3�/�/�/�/���J��
d����F�0�0��1B�1B�I�t�CT�1U�1U�Wa�b�b�c�c�c� �G�G�O�T�:�:�M�'*�w�w�/I�4�'P�'P�$��C�[�[�
b�
b���<�<��$�$����s�1�v�&�&�b��K�K�� 4� 4����F�DU�DU�VY�Z[�V\�im�DU�Dn�Dn�Dn�5o�q{� |� |�}�}�}�}��K�K�� 4� 4�V�5F�5F��3�q�6�{�5S�5S�U_� `� `�a�a�a�a��
F����*�*�*�f�>Z�>Z�[h�kC�?D�?D�?D�?D�E�F�F�F�#-�
h�
h�������B���������V�\�\�^�^�^�^�D�E�E�E��!�!�$���
�V�8K�]�\f�g�g�g�g��
 ����B�����iT	 �T	 r9c
�"�g}d}tjdz}ttjt|��z
d��}|�d|����d|�d���d���|dD�]�}|d|}|�d	��r0|�d
|�d|�d	���d���n|�d
|z��|�d��r�t|dt��rd�	|d��}	n|d}	|�dtjt�
|	��|||���z��|�d��rZ|�d��t�||�d��||��|�d��|�d��r�|�d��|�t�t�|�d����|����|�d��dD�]s}
|
|vr�t||
t$��rs|�|
����dtjt�
||
��|t'|
��dzz
|�������n�t||
tt(f��rF|�|
����dd�	||
������n`|�t�t�|
���||
i��d����|�d����u���|S)a�Generate text for the supplied role suitable for display.

        This is similar to get_man_text(), but roles are different enough that we have
        a separate method for formatting their display.

        :param role: The role name.
        :param role_json: The JSON for the given role as returned from _create_role_doc().

        :returns: A array of text suitable for displaying to screen.
        �        皙�����?�F�> �    (rT�)
r�r�z
ENTRY POINT: z - rzENTRY POINT: %s
r(rY�%s
r�r��OPTIONS (= is mandatory):
r��
attributes�ATTRIBUTES:
)�authorr���r�r�)r1rr�intrr�rZr�rrUr�r�r�r�r�r�r�ryrrx�tuple)r]r$rr?r��padr�r�r�r�rHs           r7rzDocCLI.get_role_man_textVs������
��o��$���G�O�c�#�h�h�.��3�3�������
�
�����i�m�m�F�6K�6K�6K�6K�L�M�M�M�$�^�4�'	 �'	 �K��N�+�K�8�C��w�w�*�+�+�
?��������S�W�W�M`�Ea�Ea�Ea�Ea�b�c�c�c�c����/�+�=�>�>�>��w�w�}�%�%�
R��c�-�0�$�7�7�.��8�8�C�
�$6�7�7�D�D��}�-�D����F�X�]�6�>�>�$�3G�3G�38��EO�&Q�&Q�&Q�Q�R�R�R��w�w�y�!�!�
 ����9�:�:�:��!�!�$����	�(:�(:�E�:�N�N�N����B�����w�w�|�$�$�
 ����O�,�,�,����F�0�0��1B�1B�3�7�7�<�CX�CX�1Y�1Y�[e�f�f�g�g�g����B����!�
 �
 ���C�<�<���c�!�f�l�3�3�b��K�K�A�G�G�I�I�I�I�x�}�V�^�^�TW�XY�TZ�E[�E[�,1�S��V�V�a�Z�,@�T^�8`�8`�8`�8`�!a�b�b�b�b���A���u�
�6�6�b��K�K�A�G�G�I�I�I�I�t�y�y��Q��7H�7H�7H� I�J�J�J�J��K�K�� 4� 4�V�5F�5F����	�	�SV�WX�SY�GZ�5[�5[�]_� `� `�a�a�a����B�����
 ��r9c���t|��}tjtjdfzt_d}g}t
jdz}tt
jt|��z
d��}|�	tjd|�	d����p|�	d��p|}|r|�d|��}|�
d|����d	|�d
���d���t|dt��r)d
�|�d����}n|�d��}|�
dt!jt�|��|||���z��d|vr\|�d��}	|�dd��}
|�
dt�|	|
��z��|�	dd��r�|�
d��t|dt��r�d|dvr,|�
d|�d��z��n�d|dvr!d|dvr|dd|dd<|�
d|�d��z��n+|�
d|�d��z��|�
d��|�dd��r|�
ddz��|�	d d��rZ|�
d!��t�||�d ��||��|�
d"��|�	d#d��r�|�
d$��|�
t�t�|�d#����|����|�
d"��|�	d%d��r�|�
d&��|d%D]S}|�
t!jt�|��|d'z
|dd(�d)z|������T|�
d"��|�
d"��|d%=|�	d*d���r�|�
d+��|d*D�]Q}d,|v�r&|�
t!jt�d-|d,z��|d'z
|dd(�d)z|�����|�	dd.|d,z��}
|�
t!jt�|
��|d'z
|d/z|d/z�����|�
t!jt�t/d0|d,z����|d'z
|d/z|�������.d|v�rd1|v�rd|vr�|�
t!jt�|d��|d'z
|dd(�d)z|�����|�
t!jt�|d��|d'z
|d/z|d/z�����|�
t!jt�|d1��|d'z
|d/z|d/z�������9d2|v�rd|v�r|�
t!jt�d3|d2z��|d'z
|dd(�d)z|�����|�
t!jt�|d��|d'z
|d/z|d/z�����|�
t!jt�t/d4|d2z����|d'z
|d/z|d/z�������S|�
d"��|�
d"��|d*=|�	d5d��rqd6�|�d5����}|�
d7t!jt�|��|d8z
d9|���z��t1|��D�]�}|tjvs||s�t||t2��rs|�
|����d:t!jt�||��|t5|��d;zz
|�<������n�t||tt6f��rF|�
|����d:d6�||������n`|�
t�t�|���||i��d"����||=|�
d"�����|�	d=d���r|�
d>��|�
d"��t|d=t2��r;|�
|�d=�������n]	|�
t;|�d=��d;d�?����n##t<$r}t?d@|�A���d}~wwxYw|�
d"��|�
d"��|�	dBd��rG|�
dC��t�||�dB��||dD�E��d�|��S)FNr�r�r�r�r�r5rvr�r�rr�r(rYr�r�r�r�z
ADDED IN: %s
r2Fz
DEPRECATED: 
�removed_at_datezg	Reason: %(why)s
	Will be removed in a release after %(removed_at_date)s
	Alternatives: %(alternative)sr0�
removed_inz[	Reason: %(why)s
	Will be removed in: Ansible %(removed_in)s
	Alternatives: %(alternative)sz%srr�z
  * note: %s
z.This module has a corresponding action plugin.r�r�r�r�r�noteszNOTES:����z* �seealsoz	SEE ALSO:r,z	Module %sz,The official documentation on the %s module.z   zmodules/%s_module.html�link�refzAnsible documentation [%s]z/#stq=%s&stp=1�requirementsr�zREQUIREMENTS:%s
�z  r�rrr�z	EXAMPLES:)r�r�z Unable to parse examples sectionrQr�zRETURN VALUES:T)r�) r�r�r�r	rr1rrrrZrr�r�r�rrUr�r�r�r�r�r�ryr#rrrxrr�rr�r)r�r�r5r�r?rr�r�r�r�r��noter�r(�reqrHr@s                 r7r�zDocCLI.get_man_text�s����3�i�i���
����)@�(B�B��
��
����o��$���G�O�c�#�h�h�.��3�3���g�g�g�o�f�5�s�w�w�v���G�G�p�3�7�7�S`�Ka�Ka�p�ep���	C�%4�_�_�k�k�B�K������(9�(9�(;�(;�(;�(;�S�W�W�Z�=P�=P�=P�=P�Q�R�R�R��c�-�(�$�/�/�	*��8�8�C�G�G�M�2�2�3�3�D�D��7�7�=�)�)�D����F�X�]�6�>�>�$�+?�+?��Wa�=G�I�I�I�I�	J�	J�	J��c�!�!��G�G�O�4�4�M�'*�w�w�/I�4�'P�'P�$��K�K�(�6�+G�+G�
�Wo�+p�+p�p�q�q�q��7�7�<��'�'�
	��K�K�(�)�)�)��#�l�+�T�2�2�

:�$��L�(9�9�9��K�K�G�JM�JQ�JQ�R^�J_�J_�_�����!�C��$5�5�5�,�c�R^�N_�:_�:_�:=�l�:K�I�:V��L�)�,�7��K�K�!C�FI�FM�FM�NZ�F[�F[�![�\�\�\�\����D�3�7�7�<�#8�#8�8�9�9�9��K�K������7�7�<��'�'�	]��K�K�(�+[�[�\�\�\��7�7�9�e�$�$�	��K�K�5�6�6�6����d�C�G�G�I�$6�$6��z�J�J�J��K�K��O�O�O��7�7�<��'�'�	��K�K��(�(�(��K�K��,�,�V�->�->�s�w�w�|�?T�?T�-U�-U�Wa�b�b�c�c�c��K�K��O�O�O��7�7�7�E�"�"�	��K�K��!�!�!��G��
p�
p�����H�M�&�.�.��*>�*>���	�9C�C�R�C��4�9O�cm�o�o�o�p�p�p�p��K�K��O�O�O��K�K��O�O�O��G���7�7�9�e�$�$�	��K�K��$�$�$��I��
u�
u���t�#�#��K�K��
�f�n�n�[�4�PX�>�=Y�.Z�.Z� %��	�*�S�b�S�/�D�:P�dn�!p�!p�!p�q�q�q�"&�(�(�=�:h�ko�px�ky�:y�"z�"z�K��K�K��
�f�n�n�[�.I�.I�5�ST�9�eo�rw�ew�LV�Y^�L^�!_�!_�!_�`�`�`��K�K��
�f�n�n�=R�Sk�nr�s{�n|�S|�=}�=}�.~�.~� %��	�*�u�:L�`j�!l�!l�!l�m�m�m�m��t�^�^��$���=�D�;P�;P��K�K��
�f�n�n�T�&�\�.J�.J� %��	�*�S�b�S�/�D�:P�dn�!p�!p�!p�q�q�q��K�K��
�f�n�n�T�-�=P�.Q�.Q� %��	�*�u�:L�`j�mr�`r�!t�!t�!t�u�u�u��K�K��
�f�n�n�T�&�\�.J�.J� %��	�*�u�:L�`j�mr�`r�!t�!t�!t�u�u�u�u��d�]�]�}��'<�'<��K�K��
�f�n�n�=Y�\`�af�\g�=g�.h�.h� %��	�*�S�b�S�/�D�:P�dn�!p�!p�!p�q�q�q��K�K��
�f�n�n�T�-�=P�.Q�.Q� %��	�*�u�:L�`j�mr�`r�!t�!t�!t�u�u�u��K�K��
�f�n�n�=R�Sc�fj�kp�fq�Sq�=r�=r�.s�.s� %��	�*�u�:L�`j�mr�`r�!t�!t�!t�u�u�u��
�K�K��O�O�O��K�K��O�O�O��I���7�7�>�5�)�)�	Q��)�)�C�G�G�N�3�3�4�4�C��K�K�+�h�m�F�N�N�3�<O�<O�QV�Y[�Q[�lp�EO�/P�/P�/P�P�
Q�
Q�
Q�����	�	�A��F�M�!�!��Q��!���#�a�&�,�/�/�
^�������	�	�	�	�8�=����PS�TU�PV�AW�AW�Y^�be�fg�bh�bh�kl�bl�Ym�BL�4M�4M�4M�4M�N�O�O�O�O��C��F�T�5�M�2�2�
^�������	�	�	�	�4�9�9�S��V�3D�3D�3D�E�F�F�F�F����F�0�0��1B�1B�A�G�G�I�I�s�ST�v�CV�1W�1W�Y[�\�\�]�]�]��A���K�K��O�O�O�O��7�7�?�E�*�*�	��K�K��$�$�$��K�K��O�O�O��#�o�.��=�=�
]����C�G�G�O�4�4�:�:�<�<�=�=�=�=�]��K�K�	�#�'�'�/�*B�*B�1�af� g� g� g�h�h�h�h�� �]�]�]�,�-O�Z[�\�\�\�\�����]�����K�K��O�O�O��K�K��O�O�O��7�7�<��'�'�	b��K�K�(�)�)�)����d�C�G�G�L�$9�$9�5�*�\`��a�a�a��y�y����s�:8n3�3
o�=o�or�)FT)F)Fr�)r�r�)5r�r�r�r�r�r��re�compiler�r�r�r�r�r�r�r�r�r�r�r�r��classmethodr�r�r�r�rrr�staticmethodr"rIr�rWrar�rSrrr�r�r�rZrvrxrTr�ryr�r�r�rr��
__classcell__)r�s@r7r�r�]s�������V�V�
�D�]�F��b�j�*�+�+�G��B�J�(�)�)�E��b�j�*�+�+�G��B�J�2�3�3�E��2�:�'�(�(�D��2�:�1�2�2�D�
�R�Z�)�
*�
*�F�
�R�Z�-�
.�
.�F���
�<�(�(�I��2�:�o�.�.�L����J�'�'�J� �b�j��.�.�O�!�!�!�!�!�
�E�E�E��[�E�����[��(2n�2n�2n�2n�2n�h�����+&�+&�+&�Z&�&�&�B&�&�&��J�J��\�J��A�A��\�A�F
�
�
����()�)�)�)�V���"����\��$j�j�j�j�j�X�&�&��\�&��
�
��\�
�6�
�
��\�
��
c�
c��\�
c�����\��&����\��,%�%�%�N�	$�	$��\�	$��w�w�w��\�w��W�W��\�W��0�0�0��\�0��V �V �V ��\�V �p;�;�;�z�B�B�B��\�B�B�B�B�Br9r�c
��g}t�|d��}|�d��}|r1|�d|z��|�d|z��n?|�d|�d|�d����z��d}d	�|d
z��}t
j|z
}t|d�����D�]L}|d|}t|dt��r!t�|d��}	n3t�d
�|d����}	|�dd��}
t|
t��std|
z���d|z}|r9|
rd|	z}	|�d|d�dtj|	||���������|
rd}n|�dd��}|�|�d
|d�dtj|	||d���������N|S)Nr�r,z
- name: %sz  %s:z# %s:r�r���# rr�r(rYr�F�7Incorrect value for 'Required', a boolean is needed: %sz%s:z
(required) %sz      �20z   # rz
(required)r��None�9z # rw)r��	max_lines)r�r�rZr�rjustr1rrr�r�rrUrtrwr�r�)r�r?�mdescr,r�subdentr�r�r�r�r�r�s            r7r�r�sD��
�D��N�N�3�2�3�4�4�E�
�W�W�X�
�
�F�
�B����L�E�*�+�+�+����G�v�&�'�'�'�'�	
���G�c�g�g�h�������@�@�@�A�A�A�
�C��j�j��q��!�!�G��O�c�!�E�
�C�	�N�'�'�)�)�
*�
*�{�{���)�n�Q����c�-�(�,�7�7�	@��>�>�#�m�"4�5�5�D�D��>�>�#�(�(�3�}�+=�">�">�?�?�D��7�7�:�u�-�-���(�D�)�)�	c��V�Ya�a�b�b�b��A�I���
	{��
.�&��-���K�K�K�����8�=��u�`g�3h�3h�3h�3h�i�j�j�j�j��
5�&����'�'�)�V�4�4���K�K�!�!�!�W�W�W�W�h�m�D�%�cj�vw�6x�6x�6x�6x�y�z�z�z�z��Kr9c��g}d|�d|�d����z}g}t|d�����D]�}|d|}|�d|�d|�dd���d	|�d
d������|dvr	|d
|zz
}�c|�dd��}t	|t
��st
d|z���|rd}n|�dd��}|�d��dvr
|d|�d|�d�z
}��|d|�d|��z
}��|dz
}|r*|�|��|�d��|�|��|S)Nz
lookup('%s', r�r�r�r�(r�r,z): r(r�)�_terms�_raw�_listz< %s >r�Frz
<REQUIRED>r�r)r,�strr�z='�'r��))rZrr�rr�rtrwr	)r�r?�snippet�commentr�r�r�r�s        r7r�r�Fs���
�D������#�'�'�&�/�/� B� B�B�G��G�
�C�	�N�'�'�)�)�
*�
*�0�0���)�n�Q����������C�G�G�F�H�,E�,E�,E�,E�s�w�w�}�^`�Ga�Ga�Ga�b�c�c�c��+�+�+��x�1�~�%�G���7�7�:�u�-�-���(�D�)�)�	c��V�Ya�a�b�b�b��	1�"�G�G��g�g�i��0�0�G��7�7�6�?�?�/�/�/��G�a�a�a����1�1�G�G��G�A�A�A�w�w�/�/�G�G��s�N�G������G�������B�����K�K������Kr9c�:�t�|��dSr�)r��cli_executor)r�s r7rKrKls��
��������r9�__main__r�)S�
__future__rrrr��
__metaclass__�ansible.clirr rS�os.pathrr�r=�ansible.plugins.loaderrPrVri�pathlibrr�rr�r	�ansible.cli.argumentsr
r��ansible.collections.listr�ansible.errorsrr
rr�ansible.module_utils._textrr�'ansible.module_utils.common.collectionsr� ansible.module_utils.common.jsonr� ansible.module_utils.common.yamlr�ansible.module_utils.compatr�ansible.module_utils.sixr�ansible.parsing.plugin_docsr�ansible.parsing.utils.yamlr�ansible.parsing.yaml.dumperr�ansible.plugins.listrrr�ansible.utils.collection_loaderrr�2ansible.utils.collection_loader._collection_finderr�ansible.utils.displayr �ansible.utils.plugin_docsr!r"r#r1rur�r5r6r�r8rA�objectrCr�r�r�rKr�rFr9r7�<module>rIsY��C�B�B�B�B�B�B�B�B�B��
�����������	�	�	�	�����	�	�	�	���������.�.�.�.�.�.�.�.�.�������"�"�"�"�"�"�������<�<�<�<�<�<�9�9�9�9�9�9�g�g�g�g�g�g�g�g�g�g�g�g�9�9�9�9�9�9�9�9�?�?�?�?�?�?�6�6�6�6�6�6�6�6�6�6�6�6�1�1�1�1�1�1�1�1�1�1�1�1�4�4�4�4�4�4�0�0�0�0�0�0�5�5�5�5�5�5�-�-�-�-�-�-�A�A�A�A�A�A�A�A�Y�Y�Y�Y�Y�Y�Y�Y�]�]�]�]�]�]�)�)�)�)�)�)�[�[�[�[�[�[�[�[�[�[�
�'�)�)���'�*>�>��
.�
.�
.�
��	�,�,�,��?�?�?�?�
F�F�F�W�W�W�W�W��W�W�W�ty�y�y�y�y�S�)�y�y�y�x*�*�*�Z#�#�#�L�����z����D�F�F�F�F�F��r9

Youez - 2016 - github.com/yon3zu
LinuXploit