
    q&f	                         d dl Z d dlmZmZ ddl ddlmZ ej                  Zej                  Zde	de	d	eee
e
e
e
f      fd
Zde	de	d	e	fdZy)    N)ListTuple   )*   )_bdiffsasbreturnc                    t         j                  d      }t         j                  d      }t         j                  dt        |             }t         j                  dt        |            }t         j                  d      }	 t        j	                  |t        |       |      }t        j	                  |t        |      |      }|d   r|d   st        t        j                  |d   ||d   ||      }	|	dk  rt        dg|	z  }
|j                  }d}|rE|j                  |j                  |j                  |j                  f|
|<   |j                  }|dz  }|rEt        j                  |d          t        j                  |d          t        j                  |j                         |
S # t        j                  |d          t        j                  |d          t        j                  |j                         w xY w)N   struct bdiff_line**   char[]   struct bdiff_hunk*r   )r   r   r   r   r   )ffinewstrlibbdiff_splitlineslenMemoryError
bdiff_diffnexta1a2b1b2freebdiff_freehunks)r	   r
   abacbclanbncountrlhis                6/usr/lib/python3/dist-packages/mercurial/cffi/bdiff.pyblocksr+      s   &'A&'A	CG	$B	CG	$B%&A$!!"c"gq1!!"c"gq1t1Q4qtR1r1519^e#FFTT144qtt,BqEAFA 
 	11AFF#I 	11AFF#s   ?CF% %AG6c           	         t         j                  d      }t         j                  d      }t         j                  dt        |             }t         j                  dt        |            }t         j                  d      }	 t        j	                  |t        |       |      }t        j	                  |t        |      |      }|d   r|d   st        t        j                  |d   ||d   ||      }	|	dk  rt        g }
|j                  }dx}}|r$|j                  |k7  s|j                  |k7  r|d   |j                  z   j                  |d   |z   j                  z
  }|
j                  t        j                  d|d   |z   j                  |d   j                  z
  |d   |j                  z   j                  |d   j                  z
  |             |
j                  t        t         j                  |d   |z   j                  |                   |j                   }|j"                  }|j                  }|r$t        j%                  |d          t        j%                  |d          t        j'                  |j                         dj)                  |
      S # t        j%                  |d          t        j%                  |d          t        j'                  |j                         w xY w)Nr   r   r   r   s   >lll    )r   r   r   r   r   r   r   r   r   r   r   r#   appendstructpackbufferr   r   r   r   join)r	   r
   r   r    r!   r"   r#   r$   r%   r&   r'   r(   lalblgts                  r*   bdiffr6   3   s7   &'A&'A	CG	$B	CG	$B%&A$!!"c"gq1!!"c"gq1t1Q4qtR1r1519FFRttrzQTTRZtadd{oo15		KK1!.1!A$&&0	 		#cjj!A$)<=>BBA " 	11AFF#88B< 	11AFF#s   ?F1J AK#)r/   typingr   r   
pure.bdiff r   r   r   bytesintr+   r6    r-   r*   <module>r=      sp    
  jjjju % DsCc/A)B$C 8%e % %5 %r-   