
    &e                     2    d dl Z d dlZ G d de      ZddZy)    Nc                       e Zd ZdZy)
PatchErrorz  Error during the patch process N)__name__
__module____qualname____doc__     @/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradePatcher.pyr   r      s    *r
   r   c                    t        d      \  }}t        | d      5 }|j                         }ddd       dx}}|}	t        |d      5 }|j                         }
ddd       
D ]'  }|	|k(  r|j                         }|j	                  d      ra|dd }|j                  dd      \  }}|rt        d	      |j                  d      \  }}}t        j                  |||   d
      \  }}|||<   |d   }|dd j                  d      \  }}}t        |      }|dz  }|dk(  r|dz   }nt        |      }|dk(  r||= |}	|dz  }|dk(  r|}	|dk(  r||= t        d|z        |	|k(  s|dk(  r|}	|dz  }j                  ||       * dj                        }|rRt        j                         }|j                  |j!                  d             |j#                         |k7  rt        d      t        | dd      5 }|j%                  |       ddd       y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w)z python implementation of enough "ed" to apply ed-style
        patches. Note that this patches in memory so its *not*
        suitable for big files
       zUTF-8)encodingNr   zs//   zflags for s// not supported yet)count, cadzunknown command: '%s'z.
z(the md5sum after patching is not correctwT)rangeopen	readlinesstrip
startswithrsplitr   	partitionresubnintinsertjoinhashlibmd5updateencode	hexdigestwrite)origedpatchresult_md5sumSTATE_EXPECT_COMMANDSTATE_EXPECT_DATAf
orig_linesstartendstatelineslinesubsflagsregexpsepreplnewr   command	start_strend_strresultr&   s                           r   patchrA      sp     ( 
dW	% #[[]
#OEC !E	g	( A 1/((::<Dt$ABx"kk#q1e$%FGG %)NN3$7!TWWVT:e3DAN
U$'
5!2hG(,Sb	(;(;C(@%YW	NEQJE"}ai'l#~uSy))
C)CuSy) !84!?@@''u}, 
!!%.c1/h WWZ Fkkm

6==)*==?m+GHH	dC'	* a	I# # xs#   HH)H6H&)H36H?)N)r%   r    	Exceptionr   rA   r	   r
   r   <module>rC      s   ,  		 	
Or
   