???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................ó
k°x]c           @  sÔ  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 d+ d „  ƒ  YZ d d „ Z d „  Z d a d „  Z d „  Z d „  Z d „  Z d „  Z i i e d 6d d 6d d 6d 6i e d 6d d 6d d 6d 6i e d 6d d 6d d 6d 6Z d „  Z i  Z d „  Z d „  Z d  d, d! „  ƒ  YZ d" „  Z d# „  Z i e d$ 6e d% 6e d& 6e d' 6Z  d( „  Z! d) „  Z" e# d* k rÐe" ƒ  n  d S(-   iÿÿÿÿ(   t   print_functionNc         C  s&   |  d r t  |  d d ƒ St j Sd  S(   Nt   int   rb(   t   opent   syst   stdin(   t   opts(    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   inf
   s    
c         C  s&   |  d r t  |  d d ƒ St j Sd  S(   Nt   outs   w+(   R   R   t   stdout(   R   (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   outf   s    
c         C  s   t  t j j |  d | ƒ ƒ S(   Nt   dir(   R   t   ost   patht   join(   R   t   name(    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   dinf   s    c         C  sË   d  } y* t j j t |  ƒ |  d |  d ƒ } Wn@ t j j k
 rr } t d | j d t j	 ƒt j
 d ƒ n X|  d r† d } n  t |  ƒ } t j | | d | ƒ| t j k rÇ | j d ƒ n  d  S(	   Nt   prettyt   noplsS   Unknown magic %#x.
Maybe you are feeding me an image with raw data(i.e. pages.img)?t   filei   i   t   indents   
(   t   Nonet   pycriut   imagest   loadR   t   MagicExceptiont   printt   magicR   t   stderrt   exitR
   t   jsont   dumpR	   t   write(   R   R   t   imgt   exct   f(    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   decode   s    *
	c         C  s2   t  j t |  ƒ ƒ } t j j | t |  ƒ ƒ d  S(   N(   R   R   R   R   R   R   R
   (   R   R!   (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   encode0   s    c         C  s<   t  j j t |  ƒ ƒ } t j | t j d d ƒt ƒ  d  S(   NR   i   (	   R   R   t   infoR   R   R   R   R	   R   (   R   t   infs(    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyR&   5   s    c         C  s$   | |  k r |  | S|  d | d S(   Nt   ns_i    (    (   t   pt   val(    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   get_task_id;   s    t   ps_itemc           B  s   e  Z d  „  Z RS(   c         C  s>   t  | d ƒ |  _ | d |  _ | |  _ | |  _ g  |  _ d  S(   Nt   pidt   ppid(   R+   R-   R.   R)   t   coret   kids(   t   selfR)   R/   (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   __init__E   s
    		(   t   __name__t
   __module__R2   (    (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyR,   D   s   i    c         C  sw   t  d |  j t |  j d ƒ t |  j d ƒ d d | |  j d d f ƒ x% |  j D] } t | | | d ƒ qU Wd  S(	   Ns   %7d%7d%7d   %s%st   pgidt   sidt    i   t   tct   commi   (   R   R-   R+   R)   R/   R0   t   show_ps(   R)   R   t   deptht   kid(    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyR:   M   s
    'c   	      C  sú   i  } t  j j t |  d ƒ ƒ } x^ | d D]R } t  j j t |  d t | d ƒ ƒ ƒ } t | | d d ƒ } | | | j <q, Wd  } xP | D]H } | | } | j d k rº | } q n  | | j } | j	 j
 | ƒ q Wt d d ƒ t | |  ƒ d  S(   Ns
   pstree.imgt   entriess   core-%d.imgR-   i    s   %7s%7s%7s   %st   PIDt   PGIDt   SIDt   COMM(   R>   R?   R@   RA   (   R   R   R   R   R+   R,   R-   R   R.   R0   t   appendR   R:   (	   R   t   psst   ps_imgR)   R/   t   pst   psrR-   t   pp(    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt
   explore_psU   s"    	
c         C  s   t  d  k rB y# t j j t |  d ƒ ƒ d a  WqB g  a  qB Xn  t t  ƒ d k rX d  Sx" t  D] } | d | k r_ | Sq_ Wd  S(   Ns	   files.imgR=   i    t   id(   t	   files_imgR   R   R   R   R   t   len(   R   t   ftt   fidR#   (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   ftype_find_in_filesp   s    #c         C  s‡   t  |  | | ƒ } | r$ | | d S| d d  k rZ t j j t |  | ƒ ƒ d | d <n  x& | d D] } | d | k re | Sqe Wd  S(   Nt   fieldR!   R=   RI   (   RN   R   R   R   R   R   (   R   RL   RM   R!   R#   (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   ftype_find_in_imageƒ   s    &c         C  s)   t  |  | | d ƒ } | r% | d p( d S(   Ns   reg-files.imgR   s   unknown path(   RP   (   R   RL   RM   t   rf(    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt	   ftype_reg   s    c         C  s-   t  |  | | d ƒ } | r) d | d p, d S(   Ns	   pipes.imgs   pipe[%d]t   pipe_ids   pipe[?](   RP   (   R   RL   RM   R)   (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt
   ftype_pipe•   s    c         C  sV   t  |  | | d ƒ } | s d S| d r7 d | d p: d } d | d | d | f S(	   Ns
   unixsk.imgs   unix[?]R   s    %st    s   unix[%d (%d)%s]t   inot   peer(   RP   (   R   RL   RM   t   uxt   n(    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt
   ftype_unixš   s
    t   getR!   t   regRO   t   REGt   pipet   PIPEt   uskt   UNIXSKc         C  s   d | d | f S(   Ns   %s.%dt   typ(    (   R   RL   RM   (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt	   ftype_gen¶   s    c         C  s   | d | d f } t  j | d  ƒ } | s{ t j | d i t d 6| d d 6ƒ } | d |  | | d ƒ } | t  | <n  | S(   Nt   typeRI   R[   Rb   (   t   files_cacheR[   R   t
   file_typesRc   (   R   t   fdt   keyR#   RL   (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   get_file_str½   s    (c      	   C  s\  t  j j t |  d ƒ ƒ } x:| d D].} t | d ƒ } t  j j t |  d | ƒ ƒ } | d d d } t  j j t |  d | ƒ ƒ } t d | ƒ x3 | d D]' } t d	 | d
 t |  | ƒ f ƒ q¤ Wt  j j t |  d | ƒ ƒ d d } t d d t |  i d d 6| d d 6ƒ f ƒ t d d t |  i d d 6| d d 6ƒ f ƒ q& Wd  S(   Ns
   pstree.imgR=   R-   s
   ids-%s.imgi    t   files_ids   fdinfo-%d.imgs   %ds   	%7d: %sRg   s	   fs-%d.imgs   	%7s: %st   cwdR]   Rd   t   cwd_idRI   t   roott   root_id(   R   R   R   R   R+   R   Ri   (   R   RD   R)   R-   t   idit   fdtt   fdiRg   (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   explore_fdsÈ   s$    %'t   vma_idc           B  s   e  Z d  „  Z d „  Z RS(   c         C  s   i  |  _  d |  _ d  S(   Ni   (   t   _vma_id__idst   _vma_id__last(   R1   (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyR2   â   s    	c         C  sG   |  j  j | d  ƒ } | sC |  j } |  j d 7_ | |  j  | <n  | S(   Ni   (   Rt   R[   R   Ru   (   R1   t   iidt   ret(    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyR[   æ   s    	(   R3   R4   R2   R[   (    (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyRs   á   s   	c      	   C  s¥  t  j j t |  d ƒ ƒ } t ƒ  } xz| d D]n} t | d ƒ } t  j j t |  d | ƒ ƒ d d } t d | ƒ t d d t |  i d	 d
 6| d d 6ƒ f ƒ xò| d D]æ} | d } | d1 @rë d d | j | d ƒ } n| d2 @rd d | j | d ƒ } nê | d3 @r;d d | j | d ƒ } nÂ | d4 d5 B@r§d t |  i d	 d
 6| d d 6ƒ } | d r| d | d 7} n  | d6 @rý| d 7} qýnV | d7 @rºd } nC | d8 @rÍd } n0 | d9 @ràd! } n | d" d# @r÷d$ } n d% } | d: @s| d& 7} n  | d' d @r(d( p+d) }	 |	 | d' d @rEd* pHd) 7}	 |	 | d' d+ @rcd, pfd) 7}	 d- | d. | d/ f }
 t d0 |
 |	 | f ƒ q³ Wq/ Wd  S(;   Ns
   pstree.imgR=   R-   s	   mm-%d.imgi    s   %ds   	%-36s    %st   exeR]   Rd   t   exe_file_idRI   t   vmast   statusi   i
   R7   s   ips[%lx]t   shmidi   s
   shmem[%lx]i   s   packet[%lx]i   i   t   pgoffs    + %#lxs    (s)s    [stack]i   s    [vsyscall]i   s    [vdso]t   flagsi   s	    [stack?]RU   s    *t   prott   rt   -t   wi   t   xs   %08lx-%08lxt   startt   ends
   	%-36s%s%si   i   i   i@   i€   i€   i   i   i   i   (	   R   R   R   R   Rs   R+   R   Ri   R[   (   R   RD   t   vidsR)   R-   t   mmit   vmat   stt   fnR   t   astr(    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   explore_memsð   sT    	'		






	
	
		
c      	   C  sý  t  j j t |  d ƒ ƒ } xÛ| d D]Ï} t | d ƒ } t  j j t |  d | ƒ ƒ d d d } t  j j t |  d | ƒ ƒ d } t d | ƒ d } d	 } xO| d
 D]C} d | d | d f }	 x& | | d | d k rô | d
 7} qÏ W| d | d d >}
 d } x¿ | | d |
 k  rÒ| | } | | k rK| d 7} nl | d | d | d | d d ?f 7} | d d d B@r±| d t |  i d d 6| d d 6ƒ 7} n  | } | d d 7} | d
 7} qW| d
 8} t d |	 | f ƒ q® Wq& Wd  S(    Ns
   pstree.imgR=   R-   s	   mm-%d.imgi    Rz   s   pagemap-%d.imgs   %diÿÿÿÿi   s   	%lx / %-8dt   vaddrt   nr_pagesR…   i   RU   R„   s    ~s    %08lx / %-8dR{   i   i   R7   R]   Rd   R|   RI   s   
	%23ss   %-24s%si@   i€   (   R   R   R   R   R+   R   Ri   (   R   RD   R)   R-   Rz   t   pmst   vmit   pvmit   pmt   pstrt   pmet   vstrRˆ   (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   explore_rss%  s<    #
"
RE   t   fdst   memst   rssc         C  s   t  |  d |  ƒ d  S(   Nt   what(   t	   explorers(   R   (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   exploreT  s    c    	      C  s.  d }  t  j d |  d t  j ƒ } | j d d ƒ } | j d d d ƒ} | j d d d	 d
 d ƒ| j d d d d ƒ| j d d d d ƒ| j d t d t ƒ | j d d d ƒ} | j d d d d ƒ| j d d d d ƒ| j d t	 ƒ | j d d d ƒ} | j d ƒ | j d t
 ƒ | j d d d ƒ} | j d ƒ | j d d d  d! d" d# g ƒ| j d t ƒ | j d$ d d% ƒ} | j d ƒ | j d& d d' d
 d ƒ| j d t d( t d) d  ƒ t | j ƒ  ƒ } | st j j | j ƒ  ƒ t j j d* ƒ t j d+ ƒ n  | d | ƒ d  S(,   Ns   CRiu Image Toolt   descriptiont   formatter_classt   helps-   Use crit CMD --help for command-specific helpR$   s+   convert criu image from binary type to jsons   --prettysI   Multiline with indents and some numerical fields in field-specific formatt   actiont
   store_trues   -is   --ins<   criu image in binary format to be decoded (stdin by default)s   -os   --outs:   where to put criu image in json format (stdout by default)t   funcR   R%   s+   convert criu image from json type to binarys:   criu image in json format to be encoded (stdin by default)s<   where to put criu image in binary format (stdout by default)R&   s   show info about imageR   Rƒ   s   explore image dirR   Rš   t   choicesRE   R—   R˜   R™   t   shows5   convert criu image from binary to human-readable jsons   --nopls%   do not show entry payload (if exists)R   R   s   crit: error: too few arguments
i   (   t   argparset   ArgumentParsert   RawTextHelpFormattert   add_subparserst
   add_parsert   add_argumentt   set_defaultsR$   t   FalseR%   R&   Rœ   t   TrueR   t   varst
   parse_argsR   R   R    t   format_usageR   (	   t   desct   parsert
   subparserst   decode_parsert   encode_parsert   info_parsert   x_parsert   show_parserR   (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   mainX  sf    			t   __main__(    (    ($   t
   __future__R    R¥   R   R   R   R   R   R
   R   R$   R%   R&   R+   R,   R:   RH   R   RJ   RN   RP   RR   RT   RZ   Rf   Rc   Re   Ri   Rr   Rs   RŒ   R–   R›   Rœ   R¹   R3   (    (    (    s.   /usr/lib/python2.7/site-packages/pycriu/cli.pyt   <module>   sd   																				5	'
		E