�
�Udac @` s d d l m Z m Z m Z e Z d d l Z d d l m Z d d l
m Z 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 e � Z e e e e e e d
� Z e e e e e e d � Z e e e e d � Z d S(
i ( t absolute_importt divisiont print_functionN( t constants( t AnsibleParserErrort AnsibleUndefinedVariablet AnsibleFileNotFoundt AnsibleAssertionError( t to_native( t string_types( t ModuleArgsParser( t AnsibleCollectionLoader( t Displayc C` se d d l m } t | t t d � f � sJ t d | t | � f � � n g } | rat t t | � � � }
x� |
D]� } | | } g }
xl | d k r� | j
| � r� |
j | � | d 7} t |
d � y | | } Wq� t
k
r� d } q� Xq� Wx] |
| f D]O } | r| j | j | d | d | d | d | d | d
| d | �� qqWqu Wn | S(
s�
Given a list of mixed task/block data (parsed from YAML),
return a list of Block() objects, where implicit blocks
are created for each bare Task.
i ( t Blocks% %s should be a list or None but is %si t playt parent_blockt rolet task_includet use_handlerst variable_managert loaderN( t ansible.playbook.blockR
t
isinstancet listt typet NoneR t itert ranget lent is_blockt appendt nextt
IndexErrort load( t dsR R R R R R R R
t
block_listt countt it block_dst implicit_blockst b( ( s<