
    j                          G d  de           Z G d de          Z G d de          Z G d d          Z G d	 d
          ZdS )c                   (     e Zd Z fdZ fdZ xZS )MakePropertiesc                    d }d }t                                          |||           g }d}t          |                                          D ]I}|D ]D}	|                    |	          r-|                    |dd                     t          | |           EJ|D ]<}
t          | |
dd          t           ||
           |||
                               =|| _	        d S )Nc                       fd}|S )Nc                 2    D ]}|k    o|| j         |<   d S N__dict__)selfvaluefieldnamenamess      a/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/androguard/decompiler/node.pyfunz7MakeProperties.__init__.<locals>._wrap_set.<locals>.fun   s8    " E EE,0EM+DuDM%((E E     )r   r   r   s   `` r   	_wrap_setz*MakeProperties.__init__.<locals>._wrap_set   s/    E E E E E E Jr   c                       fd}|S )Nc                     | j                  S r   r   r
   r   s    r   r   z7MakeProperties.__init__.<locals>._wrap_get.<locals>.fun    s    }T**r   r   )r   r   s   ` r   	_wrap_getz*MakeProperties.__init__.<locals>._wrap_get   s#    + + + + + Jr   )_get__set_      )
super__init__listkeys
startswithappenddelattrsetattrproperty_attrs)clsr   basesdctr   r   attrsprefixeskeyprefixattr	__class__s              r   r   zMakeProperties.__init__   s   	 	 		 	 	 	uc***%

## 	& 	&C" & &>>&)) &LLQRR)))C%%%&  	 	DQRR4))E4*@*@AA   
 


r   c                 b     t                      j        |i |}| j        D ]}d|j        |<   |S )NF)r   __call__r%   r	   )r&   argskwdsobjr-   r.   s        r   r0   zMakeProperties.__call__5   sC    egg---J 	' 	'D!&CL
r   )__name__
__module____qualname__r   r0   __classcell__)r.   s   @r   r   r      sR            B        r   r   c                   ,    e Zd ZdxZxZZdxZxZZd Z	dS )LoopTypeNc                     t                      }| j                                        D ]\  }}t          |||           |S r   )r9   r	   itemsr#   r
   resr+   r   s       r   copyzLoopType.copy@   F    jj---// 	% 	%JCCe$$$$
r   )
r4   r5   r6   _set_is_pretest_set_is_posttest_set_is_endless_get_is_pretest_get_is_posttest_get_is_endlessr>   r   r   r   r9   r9   <   sC        ;??O?&;??O?&    r   r9   )	metaclassc                   <    e Zd ZdxZxZZdxZxZZdxZ	Z
dxZZd ZdS )NodeTypeNc                     t                      }| j                                        D ]\  }}t          |||           |S r   )rH   r	   r;   r#   r<   s       r   r>   zNodeType.copyM   r?   r   )r4   r5   r6   _set_is_cond_set_is_switch_set_is_stmt_get_is_cond_get_is_switch_get_is_stmt_set_is_return_set_is_throw_get_is_return_get_is_throwr>   r   r   r   rH   rH   G   sU        377L7>L377L7>L%))N]%))N]    r   rH   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )Nodec                     || _         d| _        d d d d| _        t                      | _        t                      | _        d| _        d | _        d| _	        d | _
        g | _        d S )N    )ifloopswitchF)r   numfollowr9   looptyperH   typein_catchinterval	startlooplatch
loop_nodesr   s     r   r   zNode.__init__U   s^    	!44@@ 

JJ	
r   c                 J   |j         | _         |j                                        | _        |j        | _        |j        | _        |j                                        | _        |j                                        | _        |j        | _        |j        | _        |j	        | _	        d S r   )
r[   r]   r>   r`   ra   r^   r\   rb   rc   r_   r
   nodes     r   	copy_fromzNode.copy_froma   sy    8**,,INN$$	k&&((Z
/r   c                                         | j        | j                  | _        | j                                        D ]#\  }}                     ||          | j        |<   $t	          fd| j        D                       | _        d S )Nc                 <    h | ]}                     ||          S r   )get).0nn_maps     r   	<setcomp>z-Node.update_attribute_with.<locals>.<setcomp>p   s%    IIIA		!QIIIr   )rj   rb   r\   r;   r   rc   )r
   rm   follow_typer   s    `  r   update_attribute_withzNode.update_attribute_withl   s    YYtz4:66
"&+"3"3"5"5 	? 	?K',yy'>'>DK$$IIIIIIIJJr   c                     | S r   r   r
   s    r   get_headzNode.get_headr       r   c                     | S r   r   rr   s    r   get_endzNode.get_endu   rt   r   c                     d| z  S )Nz%sr   rr   s    r   __repr__zNode.__repr__x   s    d{r   N)	r4   r5   r6   r   rg   rp   rs   rv   rx   r   r   r   rU   rU   T   sq        
 
 
	& 	& 	&K K K        r   rU   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
Intervalc                 v    d|j         z  | _         |h| _        d | _        || _        |j        | _        | |_        d S )NzInterval-%s)r   contentendheadr_   r`   )r
   r~   s     r   r   zInterval.__init__}   s;    !DI-	v	r   c                 Z    | j         v rdS t          fd| j         D                       S )NTc              3   J   K   | ]}t          |t                    |v V  d S r   )
isinstancerz   )rk   rf   items     r   	<genexpr>z(Interval.__contains__.<locals>.<genexpr>   sJ       
 
!Zh5O5O
DL
 
 
 
 
 
r   )r|   any)r
   r   s    `r   __contains__zInterval.__contains__   sO    4<4 
 
 
 
%)\
 
 
 
 
 	
r   c                 ^    || j         v rdS | j                             |           | |_        dS )NFT)r|   addr`   re   s     r   add_nodezInterval.add_node   s6    4<5tr   c                     | j         D ]*}|                    |          D ]}|| j         vr|| _        +| j        p| j        | _        d S r   )r|   sucsr}   r~   )r
   graphrf   sucs       r   compute_endzInterval.compute_end   s^    L 	$ 	$Dzz$'' $ $dl**#DH$ 8(tyr   c                 4    | j                                         S r   )r}   rv   rr   s    r   rv   zInterval.get_end   s    x!!!r   c                 4    | j                                         S r   )r~   rs   rr   s    r   rs   zInterval.get_head   s    y!!###r   c                 *    t          | j                  S r   )lenr|   rr   s    r   __len__zInterval.__len__   s    4<   r   c                 B    d                     | j        | j                  S )Nz{}({}))formatr   r|   rr   s    r   rx   zInterval.__repr__   s    ty$,777r   N)r4   r5   r6   r   r   r   r   rv   rs   r   rx   r   r   r   rz   rz   |   s          
 
 
  ) ) )" " "$ $ $! ! !8 8 8 8 8r   rz   N)r^   r   r9   rH   rU   rz   r   r   r   <module>r      s   && & & & &T & & &R        
 
 
 
 
 
 
 
 
% % % % % % % %P*8 *8 *8 *8 *8 *8 *8 *8 *8 *8r   