Ë
    ¿[;jýO  ã                   ó˜  — U d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlmZ ddlmZ ddlZdZdaded<   dadZd	„ Zd
„ Zd„ Zd„ Zdefd„Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&dZ'd„ Z( G d„ d«      Z)d„ Z*d„ Z+d„ Z,d „ Z-d!„ Z.d"„ Z/d#„ Z0d)d$„Z1d%„ Z2d*d&„Z3e4d'k(  r e3ejj                  d(d «       yy)+a8  
Basic tools for working with LMDB.

    copy: Consistent high speed backup an environment.
        %prog copy -e source.lmdb target.lmdb

    copyfd: Consistent high speed backup an environment to stdout.
        %prog copyfd -e source.lmdb > target.lmdb/data.mdb

    drop: Delete one or more sub-databases.
        %prog drop db1

    dump: Dump one or more databases to disk in 'cdbmake' format.
        Usage: dump [db1=file1.cdbmake db2=file2.cdbmake]

        If no databases are given, dumps the main database to 'main.cdbmake'.

    edit: Add/delete/replace values from a database.
        %prog edit --set key=value --set-file key=/path \
                   --add key=value --add-file key=/path/to/file \
                   --delete key

    get: Read one or more values from a database.
        %prog get [<key1> [<keyN> [..]]]

    readers: Display readers in the lock table
        %prog readers -e /path/to/db [-c]

        If -c is specified, clear stale readers.

    restore: Read one or more database from disk in 'cdbmake' format.
        %prog restore db1=file1.cdbmake db2=file2.cdbmake

        The special db name ":main:" may be used to indicate the main DB.

    rewrite: Re-create an environment using MDB_APPEND
        %prog rewrite -e src.lmdb -E dst.lmdb [<db1> [<dbN> ..]]

        If no databases are given, rewrites only the main database.

    shell: Open interactive console with ENV set to the open environment.

    stat: Print environment statistics.

    warm: Read environment into page cache sequentially.

    watch: Show live environment statistics
é    N)ÚBytesIO)ÚNoReturni    zlmdb.Environment | NoneÚENVzutf-8c                 ó>   — t        | «      j                  t        «      S )z%Given a str, return a bytes instance.)ÚstrÚencodeÚENCODING)Úss    úRG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\lmdb/tool.pyÚ	_to_bytesr   b   s   € äˆq‹6�=‰=œÓ"Ð"ó    c                 óF   — | t         j                  v xr t        | «      dkD  S )z�Return ``True`` if the character `c` can be printed visibly and without
    adversely affecting printing position (e.g. newline).é   )ÚstringÚ	printableÚord)Úcs    r   Úisprintr   g   s"   € ð ”× Ñ Ð Ò0¤S¨£V¨b¡[Ð0r   c           	      ó¬  — t        | «      } t        «       }t        d«      }d}t        | «      D ]î  \  }}t	        |«      }|dz  so|rE|j                  t        d«      «       |j                  |«       |j                  t        d«      «       |j                  t        d|z  «      «       t        d«      }|dz  s|j                  t        d«      «       |j                  t        d	t        |«      fz  «      «       |t        |«      rt        |«      n
t        d
«      z  }Œð |dk\  ru|dz  rpd|dz  z
  }|j                  t        d«      |z  «       |j                  t        d«      |dz  z  «       |j                  t        d«      «       |j                  |«       |j                  t        d«      «       |j                  «       j                  t        «      S )zQReturn a vaguely /usr/bin/xxd formatted representation of the bytestring
    `s`.Ú éÿÿÿÿr   z  Ú
z%07x:é   Ú z%02xÚ.r   é   )ÚbytesÚStringIOr   Ú	enumerateÚchrÚwriter   r   ÚgetvalueÚdecoder	   )r
   ÚsioÚprÚidxÚchÚneeds         r   Úxxdr)   m   si  € ô 	ˆa‹€AÜ
‹*€CÜ	�2‹€BØ
€CÜ˜Q–<‰ˆˆRÜ�‹WˆØ�b’ÙØ—	‘	œ) D›/Ô*Ø—	‘	˜"”Ø—	‘	œ) D›/Ô*Ø�I‰I”i ¨#¡Ó.Ô/Ü˜2“ˆBØ�a’Ø�I‰I”i “nÔ%Ø�	‰	”)˜F¤c¨"£g ZÑ/Ó0Ô1Ø
œw rœ{Œi˜Œm´	¸#³Ñ>‰ð  ð ˆa‚x�C˜"’HØ�S˜2‘X‰ˆà�	‰	”)˜D“/ DÑ(Ô)Ø�	‰	”)˜C“. D¨A¡IÑ.Ô/Ø�	‰	”)˜D“/Ô"Ø�	‰	�"Œà‡I�IŒi˜‹oÔØ�<‰<‹>× Ñ ¤Ó*Ð*r   c                  ó  — t        j                  «       } d| _        dt        xs dj	                  «       z   | _        | j                  ddd¬«       | j                  dd	d
¬«       | j                  ddd¬«       | j                  ddddd¬«       | j                  dddd¬«       | j                  ddd¬«       | j                  dddd¬«       | j                  dd dd!d"¬«       | j                  d#dd$d%¬«       | j                  d&«      }|j                  d'dd(d)¬*«       | j                  d+«      }|j                  d,d-d.¬«       |j                  d/d-d0¬«       |j                  d1d-d2¬«       |j                  d3d-d0¬«       |j                  d4d-d5¬«       | j                  d6«      }|j                  d7d8dd9¬«       | j                  d:«      }|j                  d;dd<¬«       |j                  d=dd$d>¬«       |j                  d?dd@dA¬«       | S )BNzpython -mlmdbz%prog [options] <command>
r   z-ez--envzEnvironment file to open)Úhelpz-dz--dbz Database to open (default: main)z-rz--readzOpen environment read-onlyz-Sz
--map_sizeÚintÚ10z#Map size in megabytes (default: 10))ÚtypeÚdefaultr+   z-sz--use-single-fileÚ
store_truez@The database was created as a single file and not a subdirectory)Úactionr+   z-Ez--target_envz$Target environment file for "dumpfd"z-xz--xxdzPrint values in xxd formatz-Mz	--max-dbsé€   zMaximum open DBs (default: 128)z--out-fdé   z"copyfd" command target fdzOptions for "copy" commandz	--compactFz!Perform compaction while copying.)r1   r/   r+   zOptions for "edit" commandz--setÚappendzList of key=value pairs to set.z
--set-filez%List of key pairs to read from files.z--addzList of key=value pairs to add.z
--add-filez--deletez"List of key=value pairs to delete.zOptions for "readers" commandz-cz--cleanz"Clean stale readers? (default: no)zOptions for "watch" commandz--csvz(Generate CSV instead of terminal output.z
--intervalzInterval size (default: 1sec)z--windowé
   z!Average window size (default: 10))ÚoptparseÚOptionParserÚprogÚ__doc__ÚrstripÚusageÚ
add_optionÚadd_option_group)ÚparserÚgroups     r   Úmake_parserr@   Ž   s|  € Ü×"Ñ"Ó$€FØ!€F„KØ0´G²M¸r×3IÑ3IÓ3KÑK€F„LØ
×Ñ�d˜GÐ*DÐÔEØ
×Ñ�d˜FÐ)KÐÔLØ
×Ñ�d˜HÐ+GÐÔHØ
×Ñ�d˜L¨u¸dØ@ð ô Bà
×Ñ�dÐ/¸Ø]ð ô _ð
 ×Ñ�d˜NØAð ô Cà
×Ñ�d˜G¨LØ7ð ô 9à
×Ñ�d˜K¨e¸SØ<ð ô >à
×Ñ�j u°aØ7ð ô 9à×#Ñ#Ð$@ÓA€EØ	×Ñ�[¨¸uØ=ð ô ?à×#Ñ#Ð$@ÓA€EØ	×Ñ�W XØ;ð ô =à	×Ñ�\¨(ØAð ô Cà	×Ñ�W XØ;ð ô =à	×Ñ�\¨(ØAð ô Cà	×Ñ�Z¨Ø>ð ô @à×#Ñ#Ð$CÓD€EØ	×Ñ�T˜9¨\Ø>ð ô @à×#Ñ#Ð$AÓB€EØ	×Ñ�W \ØDð ô Fà	×Ñ�\¨°qØ9ð ô ;à	×Ñ�Z e°RØ=ð ô ?à€Mr   Úreturnc                 ól   — |r| |z  } t         j                  j                  d| ›d�«       t        d«      ‚)Nzlmdb.tool: r   r3   )ÚsysÚstderrr!   Ú
SystemExit)ÚfmtÚargss     r   ÚdierH   ¿   s-   € ÙØˆt‰ˆÜ‡J�J×Òª#Ð/Ô0Ü
�Q‹-Ðr   c           
      óZ  — | D ]Œ  \  }}|j                  t        dt        |«      t        |«      fz  «      «       |j                  |«       |j                  t        d«      «       |j                  |«       |j                  t        d«      «       ŒŽ |j                  t        d«      «       y )Nz+%d,%d:z->r   )r!   r   Úlen)ÚcursorÚfpÚkeyÚvalues       r   Údump_cursor_to_fprO   Æ   s{   € Û‰
ˆˆUØ
�‰”˜9¬¨C«´#°e³*Ð'=Ñ=Ó>Ô?Ø
�‰�ŒØ
�‰”˜4“Ô!Ø
�‰�ŒØ
�‰”˜4“Õ!ð ð ‡H�HŒY�t‹_Õr   c                 ó"  — t         €J ‚i }| D ]c  }|j                  d«      \  }}}|st        d|«       |dk(  rd }||v rt        d|«       t         j                  |rt	        |«      nd «      |f||<   Œe |st         j                  d «      df|d<   |S )NÚ=z DB specification missing "=": %rú:main:zDB specified twice: %rzmain.cdbmake)r   Ú	partitionrH   Úopen_dbr   )rG   Údb_mapÚargÚdbnameÚsepÚpaths         r   Údb_map_from_argsrZ   Ð   s    € Üˆ?Ðˆ?Ø€FãˆØŸM™M¨#Ó.Ñˆ��TÙÜÐ2°CÔ8à�XÒØˆFØ�VÑÜÐ(¨#Ô.ÜŸ+™+¹6¤i°Ô&7ÀtÓLÈdÐSˆˆvŠð ñ ÜŸK™K¨Ó-¨~Ð>ˆˆxÑØ€Mr   c                 óF  — t         €J ‚t        |«      dk7  rt        d«       |d   }t        j                  j                  |«      rt        d|«       t        j                  |t        dd«      «       t        d|›d�«       t         j                  || j                  ¬	«       y )
Nr3   z,Please specify output directory (see --help)r   z#Output directory %r already exists.Ú0755é   zRunning copy to z....)Úcompact)r   rJ   rH   ÚosrY   ÚexistsÚmakedirsr,   ÚprintÚcopyr^   )ÚoptsrG   Ú
output_dirs      r   Úcmd_copyrf   ä   sw   € Üˆ?Ðˆ?Ü
ˆ4ƒy�A‚~ÜÐ:Ô;à�a‘€JÜ	‡w�w‡~�~�jÔ!ÜÐ1°:Ô>ä‡K�K�
œC ¨›NÔ+Ý	¢jÐ
2Ô3Ü‡H�HˆZ §¡€HÕ.r   c                 ó&  — t         €J ‚|rt        d«       	 t        j                  | j                  «       t         j                  | j                  «       y # t
        $ r1 t        j                  «       d   }t        d| j                  |«       Y ŒYw xY w)Nz0"copyfd" command takes no arguments (see --help)r3   zBad --out-fd %d: %s)	r   rH   r_   ÚfstatÚout_fdÚOSErrorrC   Úexc_infoÚcopyfd)rd   rG   Úes      r   Ú
cmd_copyfdrn   ò   sq   € Üˆ?Ðˆ?ÙÜÐ>Ô?ð3Ü
�‰�—‘Ôô
 ‡J�Jˆt�{‰{Õøô	 ò 3Ü�L‰L‹N˜1ÑˆÜÐ! 4§;¡;°Ö2ð3ús   —A Á7BÂBc                 ó^  — t         €J ‚t        |«      }t         j                  d¬«      5 }|j                  «       D ]O  \  }\  }}t	        |dt
        «      5 }t        d|›d�«       |j                  |¬«      }t        ||«       d d d «       ŒQ 	 d d d «       y # 1 sw Y   ŒexY w# 1 sw Y   y xY w)NT)ÚbuffersÚwbzDumping to ú...©Údb)	r   rZ   ÚbeginÚitemsÚopenÚBUF_SIZErb   rK   rO   )	rd   rG   rU   ÚtxnrW   rt   rY   rL   rK   s	            r   Úcmd_dumprz      s’   € Üˆ?Ðˆ?Ü˜dÓ#€FÜ	�‰˜4ˆÔ	  CØ"(§,¡,¦.ÑˆF‘J�R˜Ü�d˜D¤(Ô+¨rÝªDÐ2Ô3ØŸ™ r˜Ó*�Ü! &¨"Ô-÷ ,Ð+ñ #1÷ 
!Ð	 ç+Ð+ú÷ 
!Ð	 ús#   ª+B#Á.BÂ
B#ÂB ÂB#Â#B,c                 ó  ‡— |j                   }t        j                  |d«      Šˆfd„}d}	 |dz  } |d«      }|dk(  r	 |S |dk7  rt        d|«       	 t	         |d«      d«      }t	         |d	«      d«      } |«      }	 |d«      dk7  rt        d|«        |«      }
t        |	«      t        |
«      z   ||z   k7  rt        d|«        |d«      dk7  rt        d|«       | j                  |	|
|¬«       ŒÇ# t
        $ r t        d
|«       Y Œ“w xY w)Nr3   c                 ó:   •— dj                  t        ‰| «      «      S )Nr   )ÚjoinÚiter)rX   Úread1s    €r   Ú<lambda>z(restore_cursor_from_fp.<locals>.<lambda>  s   ø€ ˜SŸX™X¤d¨5°#Ó&6Ô7r   r   ó   
ó   +z$bad or missing plus, line/record #%dó   ,r5   ó   :z&bad or missing length, line/record #%dr   s   ->z)bad or missing separator, line/record #%dz"short key or data, line/record #%dz bad line ending, line/record #%drs   )ÚreadÚ	functoolsÚpartialrH   r,   Ú
ValueErrorrJ   Úput)ry   rL   rt   r…   Ú
read_untilÚrec_nrÚplusÚklenÚdlenrM   Údatar   s              @r   Úrestore_cursor_from_fpr�     s%  ø€ Ø�7‰7€DÜ×Ñ˜d AÓ&€EÛ7€Jà€Fà
Ø�!‰ˆÙ�A‹wˆØ�5Š=Øð. €Mð- �TŠ\ÜÐ6¸Ô?ð	BÜ‘z $Ó'¨Ó,ˆDÜ‘z $Ó'¨Ó,ˆDñ �4‹jˆÙ�‹7�eÒÜÐ;¸VÔDá�D‹zˆÜ�‹H”s˜4“yÑ  d¨T¡kÒ2ÜÐ4°fÔ=á�‹7�eÒÜÐ2°FÔ;à�‰��T˜bˆÔ!ð3 øô ò 	BÜÐ8¸&ÖAð	Bús   Á$C3 Ã3DÄ
Dc                 ód  — t         €J ‚|st        d«       t        t         j                  t        t        |«      «      }t        |«      D ]Y  \  }}||   }|dk(  rt        d«       t        d|›d�«       t         j                  d¬«      5 }|j                  |«       d d d «       Œ[ y # 1 sw Y   ŒfxY w)Nz3Must specify at least one sub-database (see --help)rR   zCannot drop main DBzDropping DB rr   T©r!   )	r   rH   ÚmaprT   r   r   rb   ru   Údrop)rd   rG   Údbsr&   rt   Únamery   s          r   Úcmd_dropr—   0  s’   € Üˆ?Ðˆ?ÙÜÐAÔBä
Œc�k‰kœC¤	¨4Ó0Ó
2€CÜ˜S–>‰ˆˆRØ�C‰yˆØ�8ÒÜÐ%Ô&Ý¢TÐ+Ô,Ü�Y‰Y˜TˆYÔ" cØ�H‰H�RŒL÷ #Ð"ñ "÷
 #Ð"ús   Â	B&Â&B/	c                 ó¨   — t         €J ‚| j                  r!t        dt         j                  «       fz  «       t        t         j	                  «       «       y )NzCleaned %d stale entries.)r   Úcleanrb   Úreader_checkÚreaders©rd   rG   s     r   Úcmd_readersr�   ?  s;   € Üˆ?Ðˆ?Ø‡z‚zÜÐ)¬S×-=Ñ-=Ó-?Ð,AÑAÔBÜ	Œ#�+‰+‹-Õr   c                 ó^  — t         €J ‚t        |«      }t         j                  dd¬«      5 }|j                  «       D ]N  \  }\  }}t	        |dt
        «      5 }t        d|›d�«       t        |||«      }t        d||fz  «       d d d «       ŒP 	 d d d «       y # 1 sw Y   ŒdxY w# 1 sw Y   y xY w)NT)rp   r!   ÚrbzRestoring from rr   zLoaded %d keys from %r)r   rZ   ru   rv   rw   rx   rb   r�   )	rd   rG   rU   ry   rW   rt   rY   rL   Úcounts	            r   Úcmd_restorer¡   F  sš   € Üˆ?Ðˆ?Ü˜dÓ#€FÜ	�‰˜4 tˆÔ	,°Ø"(§,¡,¦.ÑˆF‘J�R˜Ü�d˜D¤(Ô+¨rÝ²Ð6Ô7Ü.¨s°B¸Ó;�ÜÐ.°%¸°Ñ>Ô?÷ ,Ð+ñ #1÷ 
-Ð	,ç+Ð+ú÷ 
-Ð	,ús#   «+B#Á-BÂ
B#ÂB ÂB#Â#B,c                 ój   — t        dt        | «      «      D �cg c]  }| |   | |dz
     z
  ‘Œ c}S c c}w )Nr3   )ÚrangerJ   )ÚhstÚis     r   Údeltar¦   Q  s8   € Ü+0°´C¸³HÔ+=Ó>Ñ+= aˆS�‰V�c˜!˜a™%‘jÓ Ð+=Ñ>Ð>ùÒ>s   ˜0z
/sys/blockc                 óø  ‡— t         j                  j                  t        «      sy t        j                  | «      }|j
                  dz	  ›d|j
                  dz  ›�Šˆfd„}t        j                  t        «      D ]~  }t         j                  j                  t        |«      } ||«      }|r|c S t        j                  |«      D ]2  }t         j                  j                  ||«      } ||«      }|sŒ.|c c S  Œ€ y )Nr]   Ú:éÿ   c                 ó\  •— t         j                  j                  | d«      }t         j                  j                  |«      r`t	        |«      5 }|j                  «       j                  «       ‰k(  r)t         j                  j                  | d«      cd d d «       S 	 d d d «       y y # 1 sw Y   y xY w)NÚdevÚstat)r_   rY   r}   r`   rw   r…   Ústrip)ÚrootpathÚdpathrL   Údevss      €r   Úmaybez_find_diskstat.<locals>.maybe^  ss   ø€ Ü—‘—‘˜X uÓ-ˆÜ�7‰7�>‰>˜%Ô Ü�e” Ø—7‘7“9—?‘?Ó$¨Ò,ÜŸ7™7Ÿ<™<¨°&Ó9÷ ‘Ø,÷ �ð !ß�ús   ÁAB"Â"B+)r_   rY   r`   Ú	SYS_BLOCKr¬   Úst_devÚlistdirr}   )rY   Ústr±   r–   ÚbasepathÚstatpathÚ	base2pathr°   s          @r   Ú_find_diskstatr¹   X  s¶   ø€ Ü�7‰7�>‰>œ)Ô$ØÜ	�‰�‹€BØ—i‘i 1“n b§i¡i°$Ò&6Ð7€Dô:ô —
‘
œ9Ö%ˆÜ—7‘7—<‘<¤	¨4Ó0ˆÙ˜“?ˆÙØŠOÜ—J‘J˜xÖ(ˆDÜŸ™Ÿ™ X¨tÓ4ˆIÙ˜YÓ'ˆHÚØ”ñ	 )ñ &r   c                   ó2   — e Zd ZU dZeed<   eed<   d„ Zd„ Zy)ÚDiskStatter)ÚreadsÚreads_mergedÚsectors_readÚread_msÚwritesÚwrites_mergedÚsectors_writtenÚwrite_msÚio_countÚio_msÚtotal_msr¾   rÂ   c                 óD   — t        |«      | _        | j                  «        y ©N)rw   rL   Úrefresh)ÚselfrY   s     r   Ú__init__zDiskStatter.__init__ƒ  s   € Ü�t“*ˆŒØ�‰�r   c                 óà   ‡ — ‰ j                   j                  d«       t        ‰ «      j                  ˆ fd„t	        ‰ j                   j                  «       j                  «       «      D «       «       y )Nr   c              3   óX   •K  — | ]!  \  }}‰j                   |   t        |«      f–— Œ# y ­wrÈ   )ÚFIELDSr,   )Ú.0r¥   r
   rÊ   s      €r   Ú	<genexpr>z&DiskStatter.refresh.<locals>.<genexpr>‰  s/   øè ø€ ð IÙ&G™d˜a ð  Ÿ;™; q™>¬3¨q«6Ô2Ù&Gùs   ƒ'*)rL   ÚseekÚvarsÚupdater   r…   Úsplit)rÊ   s   `r   rÉ   zDiskStatter.refresh‡  sL   ø€ Ø�‰�‰�QŒÜˆT‹
×Ñó IÜ&/°·±·±³×0DÑ0DÓ0FÔ&GóIõ 	Ir   N)Ú__name__Ú
__module__Ú__qualname__rÎ   r,   Ú__annotations__rË   rÉ   © r   r   r»   r»   q  s"   … ð€Fð ÓØÓòóIr   r»   c                 ón  ‡ ‡‡‡— t         €J ‚i Ši Šˆ fd„}ˆˆfd„}ddˆfd„fddˆfd„fddˆfd	„fd
d |ˆfd„«      fddˆfd„fd
d |ˆfd„«      fddˆfd„fd
d |ˆfd„«      fddˆfd„fdd|fdd ||«      fddˆfd„fdd |ˆfd„«      fg}d Št        t         j                  «       «      }|r*t        |«      Š|d
d |ˆfd „«      fd
d! |ˆfd"„«      fgz  }d#}|D ��cg c]  \  }}}t	        |«      ‘Œ }	}}‰ j
                  rXt        j                  t        j                  t
        j                  ¬$«      }
|
j                  |D ��cg c]  \  }}}|‘Œ
 c}}«       d#}	 	 t         j                  «       Št         j                  «       Š‰r‰j                  «        g }t        |«      D ]?  \  }\  }}}| |«       z  }|j                  |«       t!        |	|   t	        |«      «      |	|<   ŒA ‰ j
                  r
j                  |«       në|t"        k7  s|t$        d%z
  z  spt        |«      D ]=  \  }\  }}}t        j                  j'                  |j)                  |	|   d&z   «      «       Œ? t        j                  j'                  d'«       t"        }t        |«      D ]9  \  }}t        j                  j'                  |j)                  |	|   d&z   «      «       Œ; t        j                  j'                  d'«       t+        j,                  ‰ j.                  «       |d&z  }�Œ¸c c}}w c c}}w # t0        $ r Y y w xY w)(Nc                 óB   •‡ ‡— t        j                  «       Šˆ ˆˆfd„}|S )Nc                  ó  •— ‰j                   ‰«       «       t        ‰«      ‰j                  kD  r‰j                  «        t        ‰«      dk  ryt	        t        ‰«      «      t        t        ‰«      dz
  «      z  } | ‰j                  z  S )Nr3   r   )r4   rJ   ÚwindowÚpopleftÚsumr¦   ÚfloatÚinterval)ÚnÚfuncÚhistoryrd   s    €€€r   Ú
windowfuncz-cmd_watch.<locals>.window.<locals>.windowfunc•  sj   ø€ Ø�N‰N™4›6Ô"Ü�7‹|˜dŸk™kÒ)Ø—‘Ô!Ü�7‹|˜qÒ ØÜ”E˜'“NÓ#¤e¬C°«L¸1Ñ,<Ó&=Ñ=ˆAØ�t—}‘}Ñ$Ð$r   )ÚcollectionsÚdeque)rã   rå   rä   rd   s   ` @€r   rÝ   zcmd_watch.<locals>.window’  s   ú€ Ü×#Ñ#Ó%ˆö	%ð Ðr   c                  ó    •— ‰ d   ‰d   z  dz  S )NÚ	last_pgnoÚpsizeç      0ArÙ   )Úinfor¬   s   €€r   r€   zcmd_watch.<locals>.<lambda>Ÿ  s   ø€ �T˜+Ñ&¨¨g©Ñ6¸(ÒBr   z%dÚDepthc                  ó   •— ‰ d   S )NÚdepthrÙ   ©r¬   s   €r   r€   zcmd_watch.<locals>.<lambda>¢  s	   ø€  4¨¢=r   ÚBranchc                  ó   •— ‰ d   S )NÚbranch_pagesrÙ   rð   s   €r   r€   zcmd_watch.<locals>.<lambda>£  s
   ø€  D¨Ò$8r   ÚLeafc                  ó   •— ‰ d   S ©NÚ
leaf_pagesrÙ   rð   s   €r   r€   zcmd_watch.<locals>.<lambda>¤  s
   ø€  $ |Ò"4r   z%+dzLeaf/sc                  ó   •— ‰ d   S rö   rÙ   rð   s   €r   r€   zcmd_watch.<locals>.<lambda>¥  s
   ø€ ¨4°Ò+=r   ÚOflowc                  ó   •— ‰ d   S ©NÚoverflow_pagesrÙ   rð   s   €r   r€   zcmd_watch.<locals>.<lambda>¦  s   ø€  4Ð(8Ò#9r   zOflow/sc                  ó   •— ‰ d   S rû   rÙ   rð   s   €r   r€   zcmd_watch.<locals>.<lambda>§  s   ø€ ¨DÐ1AÒ,Br   ÚRecsc                  ó   •— ‰ d   S ©NÚentriesrÙ   rð   s   €r   r€   zcmd_watch.<locals>.<lambda>¨  s	   ø€  $ y¢/r   zRecs/sc                  ó   •— ‰ d   S r   rÙ   rð   s   €r   r€   zcmd_watch.<locals>.<lambda>©  s	   ø€ ¨4°	ª?r   ÚRdrsc                  ó   •— ‰ d   S )NÚnum_readersrÙ   ©rì   s   €r   r€   zcmd_watch.<locals>.<lambda>ª  s
   ø€  $ }Ò"5r   z%.2fÚEnvMbz%+.2fzEnvMb/sÚTxsc                  ó   •— ‰ d   S ©NÚ
last_txnidrÙ   r  s   €r   r€   zcmd_watch.<locals>.<lambda>­  s
   ø€   lÒ!3r   zTxs/sc                  ó   •— ‰ d   S r
  rÙ   r  s   €r   r€   zcmd_watch.<locals>.<lambda>®  s
   ø€ ¨$¨|Ò*<r   zSctRd/sc                  ó   •— ‰ j                   S rÈ   )r¾   ©Ústatters   €r   r€   zcmd_watch.<locals>.<lambda>¶  s   ø€ ¨g×.BÒ.Br   zSctWr/sc                  ó   •— ‰ j                   S rÈ   )rÂ   r  s   €r   r€   zcmd_watch.<locals>.<lambda>·  s   ø€ ¨g×.EÒ.Er   r   )Úquotingr   r3   r   )r   r¹   rY   r»   rJ   ÚcsvÚwriterrC   ÚstdoutÚ	QUOTE_ALLÚwriterowr¬   rì   rÉ   r   r4   ÚmaxÚ_TERM_WIDTHÚ_TERM_HEIGHTr!   ÚrjustÚtimeÚsleeprá   ÚKeyboardInterrupt)rd   rG   rÝ   ÚenvmbÚcolsr·   Ú
term_widthÚ_ÚheadÚwidthsr  ÚcntÚvalsr¥   rF   rã   Úvalrì   r¬   r  s   `                @@@r   Ú	cmd_watchr'  �  s	  û€ Üˆ?Ðˆ?Ø€DØ€Dôô C€Eð 
�'Ó0Ð1Ø	�(Ó8Ð9Ø	�&Ó4Ð5Ø	�(™FÓ#=Ó>Ð?Ø	�'Ó9Ð:Ø	�)™VÓ$BÓCÐDØ	�&Ó1Ð2Ø	�(™FÓ#:Ó;Ð<Ø	�&Ó5Ð6Ø	�'˜5Ð!Ø	�)™V E›]Ð+Ø	�%Ó3Ð4Ø	�'™6Ó"<Ó=Ð>ð€Dð  €GÜœcŸh™h›jÓ)€HÙÜ˜hÓ'ˆØØ�I™vÓ&BÓCÐDØ�I™vÓ&EÓFÐGð
ñ 	
ˆð
 €JÙ*.Ô/©$™J˜A˜t QŒc�$�i¨$€FÑ/à‡x‚xÜ—‘œCŸJ™J´·±Ô>ˆØ�‰±Ô5±¡* ! T¨1š°Ò5Ô6à
€CðØÜ—8‘8“:ˆDÜ—8‘8“:ˆDÙØ—‘Ô!àˆDÜ(1°$®Ñ$�Ñ$�C˜˜tØ™D›F‘l�Ø—‘˜CÔ Ü  q¡	¬3¨s«8Ó4��q’	ð )8ð
 �xŠxØ—‘ Õ%à¤Ò,°S¼LÈ1Ñ<LÒ5MÜ09¸$¶Ñ,˜Ñ,˜C  tÜŸ
™
×(Ñ(¨¯©°F¸1±IÀ±MÓ)BÕCð 1@ä—J‘J×$Ñ$ TÔ*Ü!,�JÜ'¨žo‘F�A�sÜ—J‘J×$Ñ$ S§Y¡Y¨v°a©y¸1©}Ó%=Õ>ð .ä—
‘
× Ñ  Ô&ä�J‰J�t—}‘}Ô%Ø�1‰HˆCñ3 ùó 0ùó 6øô< ò Ùðús   Ã#LÅL"
Å#F9L( Ì(	L4Ì3L4c                 ó,  — t         €J ‚t         j                  «       }t         j                  «       }d}|d   |d   z  }t        j                  dt	        d|z  «      «      }t        j
                  «       }| j                  rt        | j                  d|«      }nt        | j                  dz   d|«      }|j                  «       |k  r%|j                  |«       |j                  «       |k  rŒ%t        d|d	z  d
t        j
                  «       |z
  z  fz  «       y )Ni €  rê   ré   ÚBÚ rŸ   z	/data.mdbzWarmed %.2fmb in %dmsrë   iè  )r   r¬   rì   Úarrayr   r  Úuse_single_filerw   ÚenvÚtellÚreadintorb   )	rd   rG   r¬   rì   ÚbufsizeÚlast_offsetÚbufÚt0rL   s	            r   Úcmd_warmr4  á  sè   € Üˆ?Ðˆ?Ü�8‰8‹:€DÜ�8‰8‹:€Dà€GØ�w‘- $ {Ñ"3Ñ3€KÜ
�+‰+�cœ9 V¨gÑ%5Ó6Ó
7€CÜ	�‰‹€Bà×ÒÜ�$—(‘(˜D 'Ó*‰ä�$—(‘(˜[Ñ(¨$°Ó8ˆØ
�'‰'‹)�kÒ
!Ø
�‰�CÔð �'‰'‹)�kÓ
!ä	Ð
!Ø˜Ñ! 4¬4¯9©9«;¸Ñ+;Ñ#<Ð
=ñ>õ ?r   c           
      ó´  — t         €J ‚| j                  st        d«       t         j                  «       }t	        j
                  | j                  |d   dz  | j                  dddd¬«      }g }|D ]W  }|dk(  rd n|}t         j                  t        |«      «      }|j                  t        |«      «      }|j                  |||f«       ŒY |s6|j                  dt         j                  d «      |j                  d «      f«       |D ]�  \  }}}t        d|›d	�«       |j                  |d¬
«      5 }	t         j                  |d¬«      5 }
|
j                  «       D ]+  \  }}|	j                  t        |«      t        |«      d¬«       Œ- 	 d d d «       d d d «       Œ’ t        d«       |j                  d«       |j!                  «        y # 1 sw Y   Œ@xY w# 1 sw Y   ŒÕxY w)Nz,Must specify target environment path with -EÚmap_sizer   FT)r6  Úmax_dbsÚsyncÚwritemapÚ	map_asyncÚmetasyncrR   zWriting rr   )rt   r!   )rt   rp   )r4   z	Syncing..)r   Ú
target_envrH   rì   Úlmdbrw   r7  rT   r   r4   rb   ru   rK   r‰   r   r8  Úclose)rd   rG   Úsrc_infor<  r•   rV   r–   Úsrc_dbÚdst_dbÚwtxnÚrtxnrM   rN   s                r   Úcmd_rewriterD  õ  sŽ  € Üˆ?Ðˆ?Ø�?Š?ÜÐ:Ô;ä�x‰x‹z€HÜ—‘˜4Ÿ?™?Ø$,¨ZÑ$8¸1Ñ$<Ø#'§<¡<°eØ$(°DØ$)ô	+€Jð €CÛˆØ˜h’‰t¨CˆÜ—‘œY t›_Ó-ˆØ×#Ñ#¤I¨d£OÓ4ˆØ�
‰
�C˜ Ð(Õ)ð	 ñ Ø�
‰
�HœcŸk™k¨$Ó/°×1CÑ1CÀDÓ1IÐJÔKã #Ñˆˆf�fÝ¢Ð'Ô(Ø×Ñ ¨tÐÔ4¸Ü—‘˜f¨d�Ô3°tØ"&§+¡+¦-‘J�C˜Ø—H‘HœU 3›Z¬¨u«¸d�HÕCñ #0÷ 4÷ 5Ð4ð !$ô 
ˆ+ÔØ‡O�O�DÔØ×ÑÕ÷ 4Ð3ú÷ 5Ð4ús$   Ä+GÅ?GÆGÇGÇGÇG	c                 ó€  — t         €J ‚t        |«      dkD  }t         j                  dt        ¬«      5 }|D ]r  }|j	                  t        |«      «      }|€t        |›d�«       Œ.|rt        |›d�«       | j                  rt        t        |«      «       Œ_t        t        |«      «       Œt 	 d d d «       y # 1 sw Y   y xY w)Nr3   T)rp   rt   z	: missingr¨   )	r   rJ   ru   ÚDBÚgetr   rb   r)   r   )rd   rG   Úprint_headerry   rV   rN   s         r   Úcmd_getrI    s’   € Üˆ?Ðˆ?Ü�t“9˜q‘=€Lä	�‰˜4¤BˆÔ	'¨3ÛˆCØ—G‘GœI c›NÓ+ˆEØˆ}Ü¢sÐ,Ô-ØÙÜšs�nÔ%Ø�xŠxÜ”c˜%“jÕ!ä”e˜E“lÕ#ñ ÷ 
(×	'Ñ	'ús   ²A8B4Â4B=c                 óP  — t         €J ‚|rt        d«       t         j                  d¬«      5 }|j                  t        ¬«      }| j
                  xs g D ]=  }t        |«      j                  t        d«      «      \  }}}|j                  ||d¬«       Œ? | j                  xs g D ];  }t        |«      j                  t        d«      «      \  }}}|j                  ||«       Œ= | j                  xs g D ]"  }|j                  t        |«      t        ¬«       Œ$ | j                  xs g D ]`  }t        |«      j                  t        d«      «      \  }}}t        |d«      5 }	|j                  ||	j                  «       d¬«       d d d «       Œb | j                  xs g D ]^  }t        |«      j                  t        d«      «      \  }}}t        |d«      5 }	|j                  ||	j                  «       «       d d d «       Œ` 	 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)	Nz;Edit command only takes options, not arguments (see --help)Tr’   rs   rQ   F)Ú	overwriterŸ   )r   rH   ru   rK   rF  Úaddr   rS   r‰   ÚsetÚdeleteÚadd_filerw   r…   Úset_file)
rd   rG   ry   rK   ÚelemrM   r!  rN   rY   rL   s
             r   Úcmd_editrR  )  sÍ  € Üˆ?Ðˆ?ÙÜÐIÔJä	�‰˜ˆÔ	 #Ø—‘œr�Ó"ˆØ—H‘H’N ’NˆDÜ% d›O×5Ñ5´iÀ³nÓE‰MˆC��EØ�J‰J�s˜E¨UˆJÕ3ð #ð —H‘H’N ’NˆDÜ% d›O×5Ñ5´iÀ³nÓE‰MˆC��EØ�J‰J�s˜EÕ"ð #ð —;‘;Ò$ "Ò$ˆCØ�J‰J”y “~¬"ˆJÕ-ð %ð —M‘MÒ' RÒ'ˆDÜ$ T›?×4Ñ4´Y¸s³^ÓD‰LˆC��DÜ�d˜DÔ! RØ—
‘
˜3 §¡£	°U�
Ô;÷ "Ð!ð (ð
 —M‘MÒ' RÒ'ˆDÜ$ T›?×4Ñ4´Y¸s³^ÓD‰LˆC��DÜ�d˜DÔ! RØ—
‘
˜3 §¡£	Ô*÷ "Ð!ñ (÷% 
Ð	÷ "Ð!ú÷
 "Ð!ú÷) 
Ð	ús=   ¬D0HÅ#HÅ?AHÇ!HÇ0
HÈHÈ	HÈHÈHÈH%c                 ób   — dd l }dd l}|j                  t        «       «      j	                  «        y )Nr   )ÚcodeÚreadlineÚInteractiveConsoleÚglobalsÚinteract)rd   rG   rT  rU  s       r   Ú	cmd_shellrY  F  s!   € ÛÛØ×ÑœG›IÓ&×/Ñ/Õ1r   c                 ó°   — t         €J ‚t        j                  t         j                  «       «       t        j                  t         j                  «       «       y rÈ   )r   Úpprintr¬   rì   rœ   s     r   Úcmd_statr\  L  s0   € Üˆ?Ðˆ?Ü
‡M�M”#—(‘(“*ÔÜ
‡M�M”#—(‘(“*Õr   c                 óâ   — 	 dd l }dd l}|j                  t        j                  j                  «       |j                  d«      }t        j                  d|«      \  }}||fS # t        $ r | cY S w xY w)Nr   s   1234Úhh)
ÚfcntlÚtermiosÚioctlrC   r  ÚfilenoÚ
TIOCGWINSZÚstructÚunpackÚ	Exception)r/   r_  r`  r
   ÚheightÚwidths         r   Ú_get_term_widthri  R  sd   € ðÛÛØ�K‰KœŸ
™
×)Ñ)Ó+¨W×-?Ñ-?ÀÓIˆÜŸ™ d¨AÓ.‰ˆ�Ø�fˆ}ÐøÜò ØŠðús   ‚AA  Á A.Á-A.c                  ó   — t        «       \  aay rÈ   )ri  r  r  )rG   s    r   Ú_on_sigwinchrk  ]  s   € ä /Ó 1Ñ€K‘r   c           	      ó˜  — t        «       }|j                  | «      \  }}|st        d«       |j                  st        d«       t	        j
                  |j                  |j                  dz  |j                   |j                  d|j                  dk(  ¬«      a
|j                  r(t        j                  t        |j                  «      «      at        t         d«      r(t!        j                   t         j"                  t$        «       t%        «        t'        «       j)                  d|d	   z   «      }|st        d
|d	   ›�«        |||dd  «       y )Nz%Please specify a command (see --help)z"Please specify environment (--env)i   FÚREAD)r6  Úsubdirr7  ÚcreateÚreadonlyÚSIGWINCHÚcmd_r   zNo such command: r3   )r@   Ú
parse_argsrH   r-  r=  rw   r6  r,  r7  r…   r   rt   rT   r   rF  ÚhasattrÚsignalrq  rk  rW  rG  )Úargvr>   rd   rG   rã   s        r   Úmainrw  b  sö   € Ü‹]€FØ×"Ñ" 4Ó(�J€Dˆ$áÜÐ3Ô4Ø�8Š8ÜÐ0Ô1ô �)‰)�D—H‘H t§}¡}°wÑ'>È4×K_ÑK_ÐG_Ø ŸL™L°ÀÇÁÈfÑATôV€Cð ‡w‚wä�[‰[œ 4§7¡7Ó+Ó,ˆäŒv�zÔ"Ü�‰”f—o‘o¤|Ô4Ü„Nä‹9�=‰=˜ $ q¡'Ñ)Ó*€DÙÝ T¨!¢WÐ.Ô/áˆˆt�A�BˆxÕr   Ú__main__r3   ))éP   é   rÈ   )6r9   r+  ræ   r  r†   r6   r_   r[  ru  r   rd  rC   r  Úior   r   Útypingr   r=  rx   r   rØ   rF  r	   r   r   r)   r@   rH   rO   rZ   rf   rn   rz   r�   r—   r�   r¡   r¦   r²   r¹   r»   r'  r4  rD  rI  rR  rY  r\  ri  rk  rw  rÕ   rv  rÙ   r   r   Ú<module>r}     s  ðò./ób Û Û 
Û Û Û 	Û Û Û Û Û 
Û Ý "Ý ã ð €Ø!%€ÐÓ %Ø	€ð €ò#ò
1ò+òB.ðb�xó òòò(/òò.ò"òJòò@ò?ð €	ò ÷2Iñ Iò8Qòh?ò(òD$ò$+ò:2òóò2ó
ð8 ˆzÒÙˆ�‰�!�"ˆÕð r   