
    ,hhE                    |   / S Qr SSKJr  SSKJr  SSKJr  \" SS5      r	S r
 " S S	5      rS#S
 jrS r " S S5      rSSKr\R                   " S5      R"                  4S jrS$S jrS r  S%S jrS r  S%S jrS r  S&S jrS\4S jrSS\4S jrSrSrSrSr " S S\ 5      r!CS  r"S! r#\$S":X  a  \#" 5         gg)')get_close_matchesndiffrestoreSequenceMatcherDifferIS_CHARACTER_JUNKIS_LINE_JUNKcontext_diffunified_diff
diff_bytesHtmlDiffMatch    )nlargest)
namedtuple)GenericAliasr   za b sizec                 "    U(       a  SU -  U-  $ g)Ng       @      ? )matcheslengths     0/opt/python-3.13.8/usr/lib/python3.13/difflib.py_calculate_ratior   '   s    W}v%%    c                   x    \ rS rSrSS jrS rS rS rS rSS jr	S	 r
S
 rSS jrS rS rS r\" \5      rSrg)r   ,   Nc                 Z    Xl         S =U l        U l        X@l        U R	                  X#5        g N)isjunkabautojunkset_seqs)selfr   r   r    r!   s        r   __init__SequenceMatcher.__init__x   s)    v  ar   c                 H    U R                  U5        U R                  U5        g r   )set_seq1set_seq2)r#   r   r    s      r   r"   SequenceMatcher.set_seqs   s     	aar   c                 J    XR                   L a  g Xl         S =U l        U l        g r   )r   matching_blocksopcodes)r#   r   s     r   r'   SequenceMatcher.set_seq1   s$    * ;.22t|r   c                 x    XR                   L a  g Xl         S =U l        U l        S U l        U R	                  5         g r   )r    r+   r,   
fullbcount_SequenceMatcher__chain_b)r#   r    s     r   r(   SequenceMatcher.set_seq2   s5    * ;.22t|r   c                 n   U R                   n0 =U l        n[        U5       H(  u  p4UR                  U/ 5      nUR	                  U5        M*     [        5       =U l        nU R                  nU(       aB  UR                  5        H#  nU" U5      (       d  M  UR                  U5        M%     U H  nX$	 M     [        5       =U l
        n[        U5      n	U R                  (       aV  U	S:  aO  U	S-  S-   n
UR                  5        H'  u  pK[        U5      U
:  d  M  UR                  U5        M)     U H  nX$	 M     g g g )N   d      )r    b2j	enumerate
setdefaultappendsetbjunkr   keysaddbpopularlenr!   items)r#   r    r6   ieltindicesjunkr   popularnntestidxss               r   	__chain_bSequenceMatcher.__chain_b
  s    FF3lFAnnS"-GNN1 #
  E!
Txxz#;;HHSM " H  #&%'F==Q#XHqLE YY[	t9u$KK$ ) H  &=r   c                    U R                   U R                  U R                  U R                  R                  4u  pVpxUc  [        U5      nUc  [        U5      nXSpn	0 n/ n[        X5       Hk  nUR                  n0 nUR                  X^   U5       H@  nUU:  a  M  UU:  a    O1U" US-
  S5      S-   =nUU'   UU:  d  M/  UU-
  S-   UU-
  S-   Upn	MB     UnMm     X:  ac  X:  a^  U" XjS-
     5      (       dL  XYS-
     XjS-
     :X  a<  U	S-
  U
S-
  US-   pn	X:  a)  X:  a$  U" XjS-
     5      (       d  XYS-
     XjS-
     :X  a  M<  X-   U:  ac  X-   U:  a[  U" XjU-      5      (       dI  XYU-      XjU-      :X  a9  US-  nX-   U:  a,  X-   U:  a$  U" XjU-      5      (       d  XYU-      XjU-      :X  a  M9  X:  ac  X:  a^  U" XjS-
     5      (       aL  XYS-
     XjS-
     :X  a<  U	S-
  U
S-
  US-   pn	X:  a)  X:  a$  U" XjS-
     5      (       a  XYS-
     XjS-
     :X  a  M<  X-   U:  ac  X-   U:  a[  U" XjU-      5      (       aI  XYU-      XjU-      :X  a9  US-   nX-   U:  a,  X-   U:  a$  U" XjU-      5      (       a  XYU-      XjU-      :X  a  M9  [        XU5      $ Nr   r5   )	r   r    r6   r;   __contains__r?   rangegetr   )r#   aloahiblobhir   r    r6   isbjunkbestibestjbestsizej2lennothingrA   j2lengetnewj2lenjks                      r   find_longest_match"SequenceMatcher.find_longest_match1  s   t "VVTVVTXXtzz7N7NNc;a&C;a&C!$1h sA yyHHWWQT7+s78"*1Q3"2Q"66HQKx<-.qSUAaCE1(E( , E !( kek!!G*%%ajAAgJ&%*1WeAgxz(E kek!!G*%%ajAAgJ&ns"u~';!(N+,,h18^#44MH ns"u~';!(N+,,h18^#44 kekaaj!!ajAAgJ&%*1WeAgxz(E kekaaj!!ajAAgJ&ns"u~';ah'((h18^#44!|H ns"u~';ah'((h18^#44 U8,,r   c                 <   U R                   b  U R                   $ [        U R                  5      [        U R                  5      p!SUSU4/n/ nU(       a  UR	                  5       u  pVpxU R                  XVXx5      =u  ppU(       aW  UR                  U5        XY:  a  Xz:  a  UR                  XYXz45        X-   U:  a!  X-   U:  a  UR                  X-   XjU-   U45        U(       a  M  UR                  5         S=n=p/ nU H=  u  nnnX-   U:X  a  X-   U:X  a  UU-  nM  U(       a  UR                  XU45        UUUpnM?     U(       a  UR                  XU45        UR                  XS45        [        [        [        R                  U5      5      U l         U R                   $ Nr   )r+   r?   r   r    popr^   r9   sortlistmapr   _make)r#   lalbqueuer+   rP   rQ   rR   rS   rA   r\   r]   xi1j1k1non_adjacenti2j2k2s                       r   get_matching_blocks#SequenceMatcher.get_matching_blocks  s   & +'''TVVc$&&kB RB !&Cc11#CEEGA! &&q)7swLL##!1239sLL!#saC!56 e 	
 R)JBBw"}B b
  ''5R * -ba[*#C\$BC###r   c                 >   U R                   b  U R                   $ S=p/ =U l         nU R                  5        Hc  u  pEnSnX:  a  X%:  a  SnOX:  a  SnOX%:  a  SnU(       a  UR                  XqXBU45        XF-   XV-   p!U(       d  MO  UR                  SXAXR45        Me     U$ )Nr    replacedeleteinsertequal)r,   rr   r9   )r#   rA   r\   answeraibjsizetags           r   get_opcodesSequenceMatcher.get_opcodes  s    : <<#<<	 ""v 446LBD Cv!&r247BGq t68' 7( r   c              #   p  #    U R                  5       nU(       d  S/nUS   S   S:X  a+  US   u  p4pVnU[        XEU-
  5      U[        XgU-
  5      U4US'   US   S   S:X  a*  US   u  p4pVnX4[        XTU-   5      U[        XvU-   5      4US'   X-   n/ n	U Hw  u  p4pVnUS:X  aV  XT-
  U:  aN  U	R                  X4[        XTU-   5      U[        XvU-   5      45        U	v   / n	[        XEU-
  5      [        XgU-
  5      pdU	R                  X4XVU45        My     U	(       a!  [	        U	5      S:X  a  U	S   S   S:X  d  U	v   g g g 7f)N)ry   r   r5   r   r5   r   ry   r5   )r   maxminr9   r?   )
r#   rF   codesr~   rk   ro   rl   rp   nngroups
             r   get_grouped_opcodes#SequenceMatcher.get_grouped_opcodes#  sX    2   "*+E8A;'!"'(CRRCqDM2s2!t}b@E!H9Q<7""')CRRRACqDMAE"IU#(CRR g~"%"*cs2!t}b#bQ$-HIRAB1BLL#22./ $) #e*a-E!HQK7,BK -C5s   D4D6c                     [        S U R                  5        5       5      n[        U[        U R                  5      [        U R
                  5      -   5      $ )Nc              3   *   #    U  H	  oS    v   M     g7f)r   Nr   ).0triples     r   	<genexpr>(SequenceMatcher.ratio.<locals>.<genexpr>k  s     J/IVRj/Is   )sumrr   r   r?   r   r    )r#   r   s     r   ratioSequenceMatcher.ratioU  s?    , Jt/G/G/IJJTVVs466{)BCCr   c                    U R                   c3  0 =U l         nU R                   H  nUR                  US5      S-   X'   M     U R                   n0 nUR                  SpTU R                   H;  nU" U5      (       a  X2   nOUR                  US5      nUS-
  X2'   US:  d  M6  US-   nM=     [        U[        U R                  5      [        U R                  5      -   5      $ rL   )r/   r    rO   rM   r   r   r?   )r#   r/   rB   availavailhasr   numbs          r   quick_ratioSequenceMatcher.quick_ration  s     ??"+--DOjvv",..a"81"<
 __
 !..'66C}}z!~~c1-EJax!A+   TVVs466{)BCCr   c                     [        U R                  5      [        U R                  5      p![        [	        X5      X-   5      $ r   )r?   r   r    r   r   )r#   rg   rh   s      r   real_quick_ratio SequenceMatcher.real_quick_ratio  s0     TVVc$&&kB  BRW55r   )
r   r!   r    r6   r;   r>   r/   r   r+   r,   )Nru   ru   T)r   Nr   N)   )__name__
__module____qualname____firstlineno__r$   r"   r'   r(   r0   r^   rr   r   r   r   r   r   classmethodr   __class_getitem____static_attributes__r   r   r   r   r   ,   sW    X>@
34X%Nr-hE$N5n0dD2D:
6 $L1r   r   c                    US:  d  [        SU< 35      eSUs=::  a  S::  d  O  [        SU< 35      e/ n[        5       nUR                  U 5        U Hw  nUR                  U5        UR	                  5       U:  d  M*  UR                  5       U:  d  M@  UR                  5       U:  d  MV  UR                  UR                  5       U45        My     [        X$5      nU VVs/ s H  u  pvUPM	     snn$ s  snnf )Nr   zn must be > 0: g        r   zcutoff must be in [0.0, 1.0]: )	
ValueErrorr   r(   r'   r   r   r   r9   	_nlargest)wordpossibilitiesrF   cutoffresultsrj   scores           r   r   r     s    : 6344&CvGHHFAJJt	

16)==?f$779MM1779a.)  q!F$%f(%Af%%%s   C0c                 D    SR                  S [        X5       5       5      $ )Nru   c              3   d   #    U  H&  u  pUS :X  a  UR                  5       (       a  UOUv   M(     g7f) N)isspace)r   ctag_cs      r   r   $_keep_original_ws.<locals>.<genexpr>  s.      %HA c\aiikku4%s   .0)joinzip)r   tag_ss     r   _keep_original_wsr     s$    77 A  r   c                   B    \ rS rSrSS jrS rS rS rS rS r	S	 r
S
rg)r   i  Nc                     Xl         X l        g r   linejunkcharjunk)r#   r   r   s      r   r$   Differ.__init__*  s    ( ! r   c           	   #   t  #    [        U R                  X5      nUR                  5        H  u  pEpgnUS:X  a  U R                  XXbXx5      n	O]US:X  a  U R	                  SXU5      n	OCUS:X  a  U R	                  SX'U5      n	O)US:X  a  U R	                  SXU5      n	O[        SU< 35      eU	 S h  vN   M     g  N	7f)	Nrv   rw   -rx   +ry   r   unknown tag )r   r   r   _fancy_replace_dumpr   )
r#   r   r    cruncherr~   rP   rQ   rR   rS   gs
             r   compareDiffer.compareA  s     4 #4==!7'/';';'=#Cci''AJJsAC0JJsAC0JJsAC0 S!:;;LL (> s   B*B8,B6-
B8c              #   J   #    [        X45       H  nU< SX%   < 3v   M     g 7f)Nr   )rN   )r#   r~   rj   lohirA   s         r   r   Differ._dumpj  s      rA !$'' s   !#c              #      #    Xe-
  X2-
  :  a'  U R                  SXEU5      nU R                  SXU5      nO&U R                  SXU5      nU R                  SXEU5      nXx4 H  n	U	 S h  vN   M     g  N	7f)Nr   r   )r   )
r#   r   rP   rQ   r    rR   rS   firstsecondr   s
             r   _plain_replaceDiffer._plain_replaceo  sq      9sy ZZQS1EZZQS1FZZQS1EZZQS1FALL s   A#A1%A/&
A1c              #   "  #    Su  px[        U R                  5      n	Su  p[        XV5       H  nXL   nU	R                  U5        [        X#5       Hy  nX   nX:X  a  U
c  XpM  U	R	                  U5        U	R                  5       U:  d  M:  U	R                  5       U:  d  MP  U	R                  5       U:  d  Mf  U	R                  5       XnnnM{     M     Xx:  a%  U
c  U R                  XX4XV5       S h  vN   g XSnnnOS n
U R                  XWXEW5       S h  vN   UU   UU   nnU
c  S=nnU	R                  UU5        U	R                  5        Hp  u  nnnnnUU-
  UU-
  nnUS:X  a  USU-  -  nUSU-  -  nM+  US:X  a
  USU-  -  nM;  US	:X  a
  US
U-  -  nMK  US:X  a  USU-  -  nUSU-  -  nMc  [        SU< 35      e   U R                  UUUU5       S h  vN   OSU-   v   U R                  UUS-   X4US-   U5       S h  vN   g  GN N N5 N7f)N)gGz?g      ?NNr   ru   rv   ^rw   r   rx   r   ry   r   r     r5   )r   r   rN   r(   r'   r   r   r   r   _fancy_helperr"   r   r   _qformat)r#   r   rP   rQ   r    rR   rS   
best_ratior   r   eqieqjr\   r|   rA   r{   best_ibest_jaeltbeltatagsbtagsr~   ai1ai2bj1bj2rg   rh   s                                r   r   Differ._fancy_replace}  sb    * (
"4==1
 sABb!3_T8{#$S!!"% ,,.;**,z9nn&3191A1J! % !( {..qssHHH),3JFFJ C %%afafEEE vY&	d;EEdD)+3+?+?+A'S#sCsC#IB)#S2X%ES2X%EH_S2X%EH_S2X%EG^S2X%ES2X%E$%>?? ,B }}T4>>> + %%a36!8SIIIQ I 	F, ? 	Js[   BHHH49H-H.$HH	CHH*H HH	HHHc              #      #    / nX#:  a-  XV:  a  U R                  XX4XV5      nO,U R                  SXU5      nOXV:  a  U R                  SXEU5      nU S h  vN   g  N7f)Nr   r   )r   r   )r#   r   rP   rQ   r    rR   rS   r   s           r   r   Differ._fancy_helper  sX     9y''AJJsAC0Y

3,As   AAAAc              #      #    [        X5      R                  5       n[        X$5      R                  5       nSU-   v   U(       a  SU S3v   SU-   v   U(       a	  SU S3v   g g 7f)N- z? 
+ )r   rstrip)r#   alinebliner   r   s        r   r   Differ._qformat  sh       "%/668!%/668UlugR. UlugR.  s   A!A#)r   r   r   )r   r   r   r   r$   r   r   r   r   r   r   r   r   r   r   r   r     s*    l!.'R(
\J|
!r   r   Nz\s*(?:#\s*)?$c                     U" U 5      S L$ r   r   )linepats     r   r   r     s     t9D  r   c                 
    X;   $ r   r   )chwss     r   r   r   %  s      8Or   c                 |    U S-   nX-
  nUS:X  a  SR                  U5      $ U(       d  US-  nSR                  X#5      $ Nr5   z{}z{},{}formatstartstop	beginningr   s       r   _format_range_unifiedr   <  sE     	I\F{{{9%%Q	>>),,r   c           	   #   |  #    [        XX#XEU5        Sn[        S X5      R                  U5       GH  n	U(       d^  SnU(       a  SR                  U5      OSn
U(       a  SR                  U5      OSnSR                  X*U5      v   SR                  X;U5      v   U	S   U	S   p[	        US	   US
   5      n[	        US   US   5      nSR                  XU5      v   U	 HX  u  nnnnnUS:X  a  U UU  H
  nSU-   v   M     M$  US;   a  U UU  H
  nSU-   v   M     US;   d  ME  UUU  H
  nSU-   v   M     MZ     GM     g 7f)NFT	{}ru   
--- {}{}{}z
+++ {}{}{}r   r   r5      r      z@@ -{} +{} @@{}ry   r   >   rw   rv   r   >   rx   rv   r   )_check_typesr   r   r   r   )r   r    fromfiletofilefromfiledate
tofiledaterF   linetermstartedr   fromdatetodater   lastfile1_rangefile2_ranger~   rk   ro   rl   rp   r   s                         r   r
   r
   G  sS    R x8LG a*>>qAG6Bv}}\2H2<V]]:."F%%h(CC%%fh??Ahb	t+E!Hd1g>+E!Hd1g>&&{JJ#(CRRg~bHD*$ %++bHD*$ %++bHD*$ % $) Bs   DD<D<c                     U S-   nX-
  nU(       d  US-  nUS::  a  SR                  U5      $ SR                  X"U-   S-
  5      $ r   r   r   s       r   _format_range_contextr    sO     	I\FQ	{{{9%%>>)%7!%;<<r   c           	   #   "  #    [        XX#XEU5        [        SSSSS9nSn	[        S X5      R                  U5       GHO  n
U	(       d^  Sn	U(       a  SR	                  U5      OS	nU(       a  SR	                  U5      OS	nS
R	                  X+U5      v   SR	                  X<U5      v   U
S   U
S   pSU-   v   [        US   US   5      nSR	                  X5      v   [        S U
 5       5      (       a-  U
 H'  u  nnn  nUS:w  d  M  U UU  H  nUU   U-   v   M     M)     [        US   US   5      nSR	                  UU5      v   [        S U
 5       5      (       d  GM"  U
 H'  u  n  nnnUS:w  d  M  UUU  H  nUU   U-   v   M     M)     GMR     g 7f)Nr   r   z! r   )rx   rw   rv   ry   FTr   ru   z
*** {}{}{}r   r   r   z***************r5   r  z*** {} ****{}c              3   6   #    U  H  u  n      o!S ;   v   M     g7f)>   rw   rv   Nr   r   r~   _s      r   r   context_diff.<locals>.<genexpr>       I5Q1a++5   rx   r   r  z--- {} ----{}c              3   6   #    U  H  u  n      o!S ;   v   M     g7f)>   rx   rv   Nr   r  s      r   r   r    r  r  rw   )r  dictr   r   r   r  any)r   r    r  r  r  r  rF   r  prefixr	  r   r
  r  r   r  r  r~   rk   ro   r  r   r  rl   rp   s                           r   r	   r	     s    X x8LdDEFG a*>>qAG6Bv}}\2H2<V]]:."F%%h(CC%%fh??Ahb	t(**+E!Hd1g>$$[;;I5III%*!RQ(? !"R$SkD00 !) &+
 ,E!Hd1g>$$[(;;I5III%*!Q2r(? !"R$SkD00 !) &+1 Bs   C<FAFF/ Fc                    U (       aE  [        U S   [        5      (       d-  [        S[        U S   5      R                  < SU S   < S35      eU(       aE  [        US   [        5      (       d-  [        S[        US   5      R                  < SUS   < S35      eU H'  n[        U[        5      (       a  M  [        SU< 35      e   g )Nr   z"lines to compare must be str, not  ()z all arguments must be str, not: )
isinstancestr	TypeErrortyper   )r   r    argsargs       r   r  r    s     	AaD#&&ad,,ad4 5 	5AaD#&&ad,,ad4 5 	5#s##CIJJ r   c	           
   #     #    S n	[        [        X5      5      n[        [        X5      5      nU	" U5      nU	" U5      nU	" U5      nU	" U5      nU	" U5      nU " XX4XVXx5      n
U
 H  nUR                  SS5      v   M     g 7f)Nc                      U R                  SS5      $ ! [         a/  nS[        U 5      R                  < SU < S3n[	        U5      UeS nAff = f)Nasciisurrogateescapez!all arguments must be bytes, not r  r  )decodeAttributeErrorr"  r   r!  )r   errmsgs      r   r)  diff_bytes.<locals>.decode  sK    	*88G%677 	*G$$a)CC.c)	*s    
A*AAr'  r(  )rd   re   encode)dfuncr   r    r  r  r  r  rF   r  r)  linesr   s               r   r   r     s     * 	S^AS^AhHF^F,'L
#JhH!,APEkk'#455 s   A=A?c                 6    [        X#5      R                  X5      $ r   )r   r   )r   r    r   r   s       r   r   r     s    F (%--a33r   c              #   N  ^^^^#    SS K nUR                  " S5      m[        XX45      mSS/4U4S jjmUU4S jmU4S jnU" 5       nUc  U S h  vN   g US-  nSn SS /U-  pSnUSL a%   [        U5      u  pnX-  nXU4X'   U	S-  n	USL a  M%  X:  a  Sv   UnOU	nSn	U(       a  X-  nU	S-  n	X   v   US-  nU(       a  M  US-
  n U(       a/  [        U5      u  pnU(       a  US-
  nOUS-  nXU4v   U(       a  M/  M   N! [         a     g f = f! [         a     g f = f7f)	Nr   z(\++|\-+|\^+)c                   > X2==   S-  ss'   Uc  X2   U R                  S5      SS  4$ US:X  ao  U R                  S5      U R                  S5      pT/ nU4S jnTR                  Xu5        [        U5       H   u  nu  pUSU	 S-   U-   XIU
 -   S-   XJS  -   nM"     USS  nO(U R                  S5      SS  nU(       d  SnSU-   U-   S-   nX2   U4$ )	Nr5   r   r  ?c                     UR                  U R                  S5      S   U R                  5       /5        U R                  S5      $ )Nr5   r   )r9   r   span)match_objectsub_infos     r   record_sub_info3_mdiff.<locals>._make_line.<locals>.record_sub_info  s=    !3!3A!6q!9,:K:K:M NO#))!,,r    r   )rb   subreversed)r0  
format_keyside	num_linestextmarkersr8  r9  keybeginend	change_res              r   
_make_line_mdiff.<locals>._make_linef  s    . 	1 OEIIaL$455!IIaL%))A,'H6> - MM/2 $,H#5KUAe}T)#-do=dB4:M $68D 99Q<#D *$t+d2D %%r   c               3   @  >#    / n Su  p [        U 5      S:  a,  U R                  [        TS5      5        [        U 5      S:  a  M,  SR                  U  Vs/ s H  o3S   PM	     sn5      nUR	                  S5      (       a  UnGOUR	                  S5      (       a  T" U SS5      T" U SS	5      S4v   M  UR	                  S
5      (       a  US	-  nT" U SS5      S S4v   M  UR	                  S5      (       a  T" U SS5      S peUS	-
  SpGOBUR	                  S5      (       a  T" U S S5      T" U SS	5      S4v   GM.  UR	                  S5      (       a  T" U SS5      T" U S S	5      S4v   GM^  UR	                  S5      (       a  US	-  nT" U SS5      S S4v   GM  UR	                  S5      (       a  US	-  nS T" U SS	5      S4v   GM  UR	                  S5      (       a  S T" U SS	5      peUS	-   SpO`UR	                  S5      (       a  US	-  nS T" U SS	5      S4v   GM  UR	                  S5      (       a  T" U S S  S S5      T" U S S	5      S4v   GM@  US:  a  US	-  nSv   US:  a  M  US:  a  US	-  nSv   US:  a  M  UR	                  S5      (       a  g WWS4v   GM  s  snf 7f)N)r   r   Tr  Xru   r   z-?+?r4  r5   z--++r   )z--?+z--+r   z-+?z-?+z+--r   )r   z+-r   F)Nru   r   T)rL  NT)r?   r9   nextr   
startswith)	r0  num_blanks_pendingnum_blanks_to_yieldr   r   	from_lineto_linerH  diff_lines_iterators	          r   _line_iterator_mdiff.<locals>._line_iterator  s     26/ e*q.T"5s;< e*q.U3UTaU34A||C   '9#f%% s1-z%A/FLLf%% #a'" s1-tT99344 %/uS$;T'9KA9Ma$6e$$ tA.
5Q0GMMe$$ s1-z%Q/GMMc"""a'" s1-tT99e$$ #a'"JuS3T99l++%):eC+B79KA9Ma$6c"""a'"JuS3T99c"" q$q1*U42J5PP &)#q(#)) &) &)#q(#)) &) ||C  ,,M  4s%   AJJJ#G<J!J8&Jc               3     >#    T" 5       n / / p! [        U5      S:X  d  [        U5      S:X  a[   [        U 5      u  p4nUb  UR                  X545        Ub  UR                  XE45        [        U5      S:X  a  MJ  [        U5      S:X  a  M[  UR	                  S5      u  p6UR	                  S5      u  pGX4U=(       d    U4v   M  ! [         a     g f = f7fra   )r?   rM  StopIterationr9   rb   )	line_iterator	fromlinestolinesrQ  rR  
found_difffromDiffto_diffrT  s	           r   _line_pair_iterator#_mdiff.<locals>._line_pair_iterator  s      '(R'y>1$Ga59-5H2I
 ($$i%;<&NNG#78 y>1$Ga #,--"2I&{{1~GX%899 
 % s3   *CB? 9C7C7C?
C	CCCr5   F)NNN)recompiler   rM  rW  )rY  rZ  contextr   r   r`  r^  line_pair_iteratorlines_to_writeindexcontextLinesr[  rQ  rR  rA   rT  rH  rG  rS  s                  @@@@r   _mdiffrg  <  s    D  

+,I  	(D78e 6&pV-p:B -.%%% 	1 #$dVW%5<J%59:L5M2I
 O#,z"B
 % &&!(!& O
"o%!#	 !. %QYN$59:L5M2I
!)0&!+#j88 %n=  	& % : ! sf   A
D%DD%-D ;D%2D%D%4D D%
DD%DD%
D"D%!D""D%an  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>
    <meta http-equiv="Content-Type"
          content="text/html; charset=%(charset)s" />
    <title></title>
    <style type="text/css">%(styles)s
    </style>
</head>

<body>
    %(table)s%(legend)s
</body>

</html>a  
        table.diff {font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace; border:medium}
        .diff_header {background-color:#e0e0e0}
        td.diff_header {text-align:right}
        .diff_next {background-color:#c0c0c0}
        .diff_add {background-color:#aaffaa}
        .diff_chg {background-color:#ffff77}
        .diff_sub {background-color:#ffaaaa}aZ  
    <table class="diff" id="difflib_chg_%(prefix)s_top"
           cellspacing="0" cellpadding="0" rules="groups" >
        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
        %(header_row)s
        <tbody>
%(data_rows)s        </tbody>
    </table>a  
    <table class="diff" summary="Legends">
        <tr> <th colspan="2"> Legends </th> </tr>
        <tr> <td> <table border="" summary="Colors">
                      <tr><th> Colors </th> </tr>
                      <tr><td class="diff_add">&nbsp;Added&nbsp;</td></tr>
                      <tr><td class="diff_chg">Changed</td> </tr>
                      <tr><td class="diff_sub">Deleted</td> </tr>
                  </table></td>
             <td> <table border="" summary="Links">
                      <tr><th colspan="2"> Links </th> </tr>
                      <tr><td>(f)irst change</td> </tr>
                      <tr><td>(n)ext change</td> </tr>
                      <tr><td>(t)op</td> </tr>
                  </table></td> </tr>
    </table>c                       \ rS rSr\r\r\r\rSrSSS\	4S jr
  SSS.S jjrS	 rS
 rS rS rS rS rS r  SS jrSrg)r   i  r      Nc                 4    Xl         X l        X0l        X@l        g r   )_tabsize_wrapcolumn	_linejunk	_charjunk)r#   tabsize
wrapcolumnr   r   s        r   r$   HtmlDiff.__init__  s      %!!r   zutf-8)charsetc                    U R                   [        U R                  U R                  U R	                  XX4XVS9US9-  R                  US5      R                  U5      $ )N)rb  numlines)styleslegendtablerr  xmlcharrefreplace)_file_templater  _styles_legend
make_tabler.  r)  )r#   rY  rZ  fromdesctodescrb  rt  rr  s           r   	make_fileHtmlDiff.make_file  s`    & ##d<<<<//)h*1 " F'
 
 6'./w	@r   c                    ^  U 4S jnU Vs/ s H
  oC" U5      PM     nnU Vs/ s H
  oC" U5      PM     nnX4$ s  snf s  snf )Nc                    > U R                  SS5      n U R                  TR                  5      n U R                  SS5      n U R                  SS5      R                  S5      $ )Nr   r;  	r   )rv   
expandtabsrk  r   )r   r#   s    r   expand_tabs2HtmlDiff._tab_newline_replace.<locals>.expand_tabs  sS    <<D)D??4==1D <<D)D<<S)0066r   r   )r#   rY  rZ  r  r   s   `    r   _tab_newline_replaceHtmlDiff._tab_newline_replace  sM    	7 4==94[&9	=189;t$9   >9s   9>c                    U(       d  UR                  X#45        g [        U5      nU R                  nXE::  d  XCR                  S5      S-  -
  U::  a  UR                  X#45        g SnSnSnXu:  aB  Xd:  a=  X6   S:X  a  US-  nX6   nUS-  nOX6   S:X  a  US-  nSnO
US-  nUS-  nXu:  a  Xd:  a  M=  US U n	X6S  n
U(       a  U	S-   n	SU-   U
-   n
UR                  X)45        U R	                  USU
5        g )Nr;  r   r   ru   r5   r<  >)r9   r?   rl  count_split_line)r#   	data_listline_numrB  r}   r   rA   rF   markline1line2s              r   r  HtmlDiff._split_line  s)    h_- 4yKdZZ%5a%78S@h_- g!(w$QwQDQQQ g!( RaR
 DLE4K%'E 	()* 	3u-r   c              #   T  #    U H  u  p#nUc  X#U4v   M  X#su  pVu  px/ / pU R                  XU5        U R                  XU5        U	(       d	  U
(       d  MP  U	(       a  U	R                  S5      nOSnU
(       a  U
R                  S5      nOSnX#U4v   U	(       a  ME  U
(       a  MN  M     g 7f)Nr   )ru   r   )r  rb   )r#   diffsfromdatatodataflagfromlinefromtexttolinetotextfromlisttolists              r   _line_wrapperHtmlDiff._line_wrapper  s      %* HD|d**2:/X !VXx8V62 ff'||AH'H#ZZ]F%Fd** (ff %*s   AB(AB(B(#B(c                 @   / / / pCnU H^  u  pVn UR                  U R                  " SU/UQ76 5        UR                  U R                  " SU/UQ76 5        UR                  U5        M`     X#U4$ ! [         a%    UR                  S 5        UR                  S 5         NGf = frL   )r9   _format_liner!  )r#   r  r  r  flaglistr  r  r  s           r   _collect_linesHtmlDiff._collect_lines.  s     $&b$) HD$ 1 1!D C( CDd//$??@
 OOD! %* x''  $%d#$s   AA..,BBc                 "    SU-  nSU R                   U   < U< S3nUR                  SS5      R                  SS5      R                  S	S
5      nUR                  SS5      R                  5       nSU< SU< SU< S3$ ! [         a    Sn Nof = f)Nz%dz id=""ru   &z&amp;r  z&gt;<z&lt;r   &nbsp;z<td class="diff_header"z</td><td nowrap="nowrap">z</td>)_prefixr!  rv   r   )r#   r@  r  linenumrB  ids         r   r  HtmlDiff._format_lineC  s    	WnG!%d!3G<B
 \\#g&..s6:BB3vN ||C)002 WT# 	#  	B	s   A? ?BBc                     S[         R                  -  nS[         R                  -  n[         =R                  S-  sl        X/U l        g )Nzfrom%d_zto%d_r5   )r   _default_prefixr  )r#   
fromprefixtoprefixs      r   _make_prefixHtmlDiff._make_prefixZ  s?    
 !9!99
X555  A% ",r   c                    U R                   S   nS/[        U5      -  nS/[        U5      -  nSu  pSn[        U5       HA  u  pU(       a3  U
(       d*  Sn
Un[        SX-
  /5      nSXi4-  X|'   U	S-  n	SXi4-  X'   M=  M?  Sn
MC     U(       d  S/nS/nS/nSnU(       a  S	/nUnOS
/=pUS   (       d  SU-  US'   SU-  X'   XX8U4$ )Nr5   ru   )r   Fr   Tz id="difflib_chg_%s_%d"z"<a href="#difflib_chg_%s_%d">n</a>Fz2<td></td><td>&nbsp;No Differences Found&nbsp;</td>z(<td></td><td>&nbsp;Empty File&nbsp;</td>z!<a href="#difflib_chg_%s_0">f</a>z#<a href="#difflib_chg_%s_top">t</a>)r  r?   r7   r   )r#   r  r  r  rb  rt  r  next_id	next_hrefnum_chg	in_changer  rA   r  s                 r   _convert_flagsHtmlDiff._convert_flagse  s    <<? $s8}$DX&	%)FA  $ID QqzN+A!:h=O!OGJ qLG&J!N+ '+IO ! "	! *$ wHdGIDPQ!%O$PP{>IIaL?8L	x'99r   c           
      `   U R                  5         U R                  X5      u  pU(       a  UnOS n[        XXpR                  U R                  S9nU R
                  (       a  U R                  U5      nU R                  U5      u  pnU R                  XXU5      u  ppn/ nSn[        [        U5      5       HK  nUU   c  US:  a  UR                  S5        M"  M$  UR                  XU   UU   U	U   UU   U
U   4-  5        MM     U(       d  U(       a  SS< SU-  < S< SU-  < S3nOS	nU R                  [        S	R                  U5      UU R                  S
   S9-  nUR!                  SS5      R!                  SS5      R!                  SS5      R!                  SS5      R!                  SS5      $ )Nr   zV            <tr><td class="diff_next"%s>%s</td>%s<td class="diff_next">%s</td>%s</tr>
r   z)        </tbody>        
        <tbody>
z<thead><tr>z!<th class="diff_next"><br /></th>z+<th colspan="2" class="diff_header">%s</th>z</tr></thead>ru   r5   )	data_rows
header_rowr  z +z<span class="diff_add">z -z<span class="diff_sub">z ^z<span class="diff_chg">r<  z</span>r  r  )r  r  rg  rm  rn  rl  r  r  r  rN   r?   r9   _table_templater  r   r  rv   )r#   rY  rZ  r}  r~  rb  rt  context_linesr  r  r  r  r  r  r   fmtrA   r  rw  s                      r   r|  HtmlDiff.make_table  s   ( 	 !55iH	 $M My#~~/ &&u-E $(#6#6u#=  6:5H5HHX6727 7s8}%A{" q5HHJK  #IaL!+4Q<q	!C C D & v3=H3=F	HJ J$$tggaj!<<?($ $
 }}U#<=WU#<=WU#<=WT),WT(+		,r   )rn  rm  r  rk  rl  )ru   ru   F   )r   r   r   r   ry  rz  r  r{  r  r   r$   r  r  r  r  r  r  r  r  r|  r   r   r   r   r   r     sz      $NG%OGO4+"" AC*+@8?@6!.5.n+8(*#.	--:^ INK,r   r   c              #      #     SSS.[        U5         nSU4nU  H  nUS S U;   d  M  USS  v   M     g ! [         a    [        SU-  5      S ef = f7f)Nr   r   )r5   r  z)unknown delta choice (must be 1 or 2): %rr   r  )intKeyErrorr   )deltawhichr~   prefixesr   s        r   r   r     sv     ,.4 U, c{H8xqr(N 	  .D"# $)-	..s   A5 AAAAc                  4    SS K n SS KnU R                  U5      $ ra   )doctestdifflibtestmod)r  r  s     r   _testr    s    ??7##r   __main__)r   g333333?)z 	)ru   ru   ru   ru   r   r   )r   r   r   r   r      
)%__all__heapqr   r   collectionsr   _namedtupletypesr   r   r   r   r   r   r   r`  ra  matchr   r   r   r
   r  r	   r  r   r   rg  ry  rz  r  r{  objectr   r   r  r   r   r   r   <module>r     s  :> ( 1 GZ(
k	2 k	2\.&bl! l!~	 
::&67== ! .	- =?.2B%R	= ,.?CJ1XK" 25?D6< (9 #4J (,d%K\(0"],v ],~
 @$ z	G r   