§
    º³Ùg 	  ã                   óJ   — d Z ddlmZ ddlmZ ddlmZ  G d„ de¦  «        ZdS )ú(Cancel back-to-back ``cx`` gates in dag.é    )ÚTransformationPass)Úcontrol_flow)Údeprecate_funcc                   óh   ‡ — e Zd ZdZ edd¬¦  «        ˆ fd„¦   «         Zej        d„ ¦   «         Zˆ xZ	S )ÚCXCancellationr   zJInstead, use :class:`~.InverseCancellation`, which is a more generic pass.z1.1.0)Úadditional_msgÚsincec                 ó:   •—  t          ¦   «         j        |i |¤Ž d S )N)ÚsuperÚ__init__)ÚselfÚargsÚkwargsÚ	__class__s      €úk/granary/edev/quantum/lib/python3.11/site-packages/qiskit/transpiler/passes/optimization/cx_cancellation.pyr   zCXCancellation.__init__   s'   ø€ ð 	�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ð)Ð)ó    c                 ó>  — |                      dg¦  «        }|D �]}g }g }t          t          |¦  «        dz
  ¦  «        D ]S}|                     ||         ¦  «         ||         j        ||dz            j        k    r|                     |¦  «         g }ŒT|                     |d         ¦  «         |                     |¦  «         |D ]U}t          |¦  «        dz  dk    r|                     |d         ¦  «         |dd…         D ]}|                     |¦  «         ŒŒV�Œ|S )z¼Run the CXCancellation pass on `dag`.

        Args:
            dag (DAGCircuit): the directed acyclic graph to run on.

        Returns:
            DAGCircuit: Transformed DAG.
        Úcxé   éÿÿÿÿé   r   N)Úcollect_runsÚrangeÚlenÚappendÚqargsÚremove_op_node)r   ÚdagÚcx_runsÚcx_runÚ
partitionsÚchunkÚiÚnodes           r   ÚrunzCXCancellation.run    sH  € ð ×"Ò" D 6Ñ*Ô*ˆØð 	-ñ 	-ˆFð
 ˆJØˆEÝ�3˜v™;œ;¨™?Ñ+Ô+ð ð �Ø—’˜V AœYÑ'Ô'Ð'Ø˜!”9”? f¨Q°©U¤mÔ&9Ò9Ð9Ø×%Ò% eÑ,Ô,Ð,Ø�EøØ�LŠL˜ œÑ$Ô$Ð$Ø×Ò˜eÑ$Ô$Ð$ð $ð -ð -�Ý�u‘:”: ‘> QÒ&Ð&Ø×&Ò& u¨Q¤xÑ0Ô0Ð0Ø! ! " "œIð -ð -�DØ×&Ò& tÑ,Ô,Ð,Ð,ð-ñ-ð ˆ
r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Útrivial_recurser&   Ú__classcell__)r   s   @r   r   r      s�   ø€ € € € € Ø2Ð2à€^àXàð	ñ ô ð*ð *ð *ð *ñô ð*ð Ô!ð ð  ñ "Ô!ð ð  ð  ð  ð  r   r   N)r*   Úqiskit.transpiler.basepassesr   Úqiskit.transpiler.passes.utilsr   Úqiskit.utils.deprecationr   r   © r   r   ú<module>r1      sx   ðð /Ð .à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ð-ð -ð -ð -ð -Ð'ñ -ô -ð -ð -ð -r   