Edit File: pickle.cpython-36.opt-1.pyc
3 � \��������������������@���s��d�Z�ddlmZ�ddlmZ�ddlmZmZmZ�ddlm Z �ddl mZ�ddlZddlm Z �dd lmZmZ�ddlZddlZddlZddlZd ddd dddddg ZeefZdZdddddddgZdZdZG�dd ��d e�ZG�dd��de�ZG�dd��de�Z G�dd ��d e�Z!ydd!l"m#Z#�W�n�e$k �r2���dZ#Y�nX�d"Z%d#Z&d$Z'd%Z(d&Z)d'Z*d(Z+d)Z,d*Z-d+Z.d,Z/d-Z0d.Z1d/Z2d0Z3d1Z4d2Z5d3Z6d4Z7d5Z8d6Z9d7Z:d8Z;d9Z<d:Z=d;Z>d<Z?d=Z@d>ZAd?ZBd@ZCdAZDdBZEdCZFdDZGdEZHdFZIdGZJdHZKdIZLdJZMdKZNdLZOdMZPdNZQdOZRdPZSdQZTdRZUdSZVdTZWdUZXdVZYdWZZdXZ[eKeUeVeWgZ\dYZ]dZZ^d[Z_d\Z`d]Zad^Zbd_Zcd`ZddaZedbZfdcZgddZhejidedf��ej��D����G�dgdh��dh�ZkG�didj��dj�Zldkdl��Zmdmdn��Zndodp��Zodqdr��ZpG�dsdt��dt�ZqG�dudv��dv�Zrd�dwdx�dydz�Zsd�dwdx�d{d|�Ztdwd}d~d�d�d��Zudwd}d~d�d�d��Zvy0dd�lwmZmZm Z mxZxmyZymzZzm{Z{m|Z|m}Z}�W�n4�e$k �rb���eqer�ZxZyeseteuevf\ZzZ{Z|Z}Y�nX�d�d���Z~ed�k�rddl�Z�e�j�d�d��Z�e�j�d�e�j�d��d�d�d���e�j�d�d�d�d�d���e�j�d�d�d�d���e�j���Z�e�j��r�e~���n>e�j��s�e�j����n,ddl�Z�x"e�j�D�]Z�e|e��Z�e�j�e����q�W�dS�)�a���Create portable serialized representations of Python objects. See module copyreg for a mechanism for registering custom picklers. See module pickletools source for extensive comments. Classes: Pickler Unpickler Functions: dump(object, file) dumps(object) -> string load(file) -> object loads(string) -> object Misc variables: __version__ format_version compatible_formats �����)�FunctionType)�dispatch_table)�_extension_registry�_inverted_registry�_extension_cache)�islice)�partialN)�maxsize)�pack�unpack�PickleError� PicklingError�UnpicklingError�Pickler� Unpickler�dump�dumps�load�loadsz4.0z1.0z1.1z1.2z1.3z2.0z3.0��������c���������������@���s���e�Zd�ZdZdS�)r���z6A common base class for the other pickling exceptions.N)�__name__� __module__�__qualname__�__doc__��r���r����/usr/lib64/python3.6/pickle.pyr���@���s���c���������������@���s���e�Zd�ZdZdS�)r ���z]This exception is raised when an unpicklable object is passed to the dump() method. N)r���r���r���r���r���r���r���r���r ���D���s���c���������������@���s���e�Zd�ZdZdS�)r���a��This exception is raised when there is a problem unpickling an object, such as a security violation. Note that other exceptions may also be raised during unpickling, including (but not necessarily limited to) AttributeError, EOFError, ImportError, and IndexError. N)r���r���r���r���r���r���r���r���r���K���s���c���������������@���s���e�Zd�Zdd��ZdS�)�_Stopc�������������C���s ���||�_�d�S�)N)�value)�selfr���r���r���r����__init__Y���s����z_Stop.__init__N)r���r���r���r ���r���r���r���r���r���X���s���r���)�PyStringMap����(����.����0����1����2����F����I����J����K����L����M����N����P����Q����R����S����T����U����V����X����a����b����c����d����}����e����g����h����i����j����l����]����o����p����q����r����s����t����)����u����Gs���I01 s���I00 ����������������������������������������������������������������B����C��������������������������������������������������c�������������C���s���g�|�]}t�jd�|�r|�qS�)z[A-Z][A-Z0-9_]+$)�re�match)�.0�xr���r���r���� <listcomp>����s����rg���c���������������@���s:���e�Zd�ZdZdd��Zdd��Zdd��Zdd d�Zdd ��ZdS�)�_Framer�@���i���c�������������C���s���||�_�d�|�_d�S�)N)� file_write� current_frame)r���rj���r���r���r���r �������s����z_Framer.__init__c�������������C���s���t�j��|�_d�S�)N)�io�BytesIOrk���)r���r���r���r���� start_framing����s����z_Framer.start_framingc�������������C���s*���|�j�r&|�j�j��dkr&|�jdd��d�|�_�d�S�)Nr���T)�force)rk����tell�commit_frame)r���r���r���r����end_framing����s����z_Framer.end_framingFc�������������C���st���|�j�rp|�j�}|j��|�jks|rp|j���2}t|�}|�j}|t��|td|���||��W�d�Q�R�X�|jd��|j ���d�S�)Nz<Qr���) rk���rp����_FRAME_SIZE_TARGET� getbuffer�lenrj����FRAMEr ����seek�truncate)r���ro����f�data�n�writer���r���r���rq�������s���� z_Framer.commit_framec�������������C���s ���|�j�r|�j�j|�S�|�j|�S�d�S�)N)rk���r|���rj���)r���rz���r���r���r���r|�������s����z _Framer.writeNi���)F) r���r���r���rs���r ���rn���rr���rq���r|���r���r���r���r���rh�������s��� rh���c���������������@���s.���e�Zd�Zd dd�Zdd��Zdd��Zdd ��ZdS�)� _UnframerNc�������������C���s���||�_�||�_d�|�_d�S�)N)� file_read� file_readlinerk���)r���r~���r���Z file_tellr���r���r���r �������s����z_Unframer.__init__c�������������C���sV���|�j�rH|�j�j|�}|�r0|dkr0d�|�_�|�j|�S�t|�|k�rDtd��|S�|�j|�S�d�S�)Nr���z$pickle exhausted before end of frame)rk����readr~���ru���r���)r���r{���rz���r���r���r���r��������s���� z_Unframer.readc�������������C���sF���|�j�r:|�j�j��}|s"d�|�_�|�j��S�|d�dkr6td��|S�|�j��S�d�S�)N�������� r���z$pickle exhausted before end of frame���� ���)rk����readliner���r���)r���rz���r���r���r���r��������s���� z_Unframer.readlinec�������������C���s2���|�j�r|�j�j��dkrtd��tj|�j|��|�_�d�S�)N�����z4beginning of a new frame before end of current frame)rk���r����r���rl���rm���r~���)r���� frame_sizer���r���r���� load_frame����s����z_Unframer.load_frame)N)r���r���r���r ���r����r����r����r���r���r���r���r}�������s��� r}���c�������������C���sl���xb|j�d�D�]T}|dkr(tdj||����y|�}t|�|�}�W�q�tk r^���tdj||����Y�qX�qW�|�|fS�)N�.z<locals>z&Can't get local attribute {!r} on {!r}z Can't get attribute {!r} on {!r})�split�AttributeError�format�getattr)�obj�nameZsubpath�parentr���r���r���� _getattribute��s���� r����c�������������C���sz���t�|�dd�}|dk r|S�x\ttjj���D�]J\}}|dks(|dkrBq(yt||�d�|�krZ|S�W�q(�tk rp���Y�q(X�q(W�dS�)z$Find the module an object belong to.r���N�__main__r���)r�����list�sys�modules�itemsr����r����)r����r�����module_name�moduler���r���r����whichmodule��s���� r����c�������������C���sh���|�dkrdS�|�j���d?�d�}|�j|ddd�}|�dk�rd|dkrd|d�dkrd|d �d @�dkrd|dd��}|S�)a���Encode a long to a two's complement little-endian binary string. Note that 0 is a special case, returning an empty string, to save a byte in the LONG1 pickling context. >>> encode_long(0) b'' >>> encode_long(255) b'\xff\x00' >>> encode_long(32767) b'\xff\x7f' >>> encode_long(-256) b'\x00\xff' >>> encode_long(-32768) b'\x00\x80' >>> encode_long(-128) b'\x80' >>> encode_long(127) b'\x7f' >>> r���r����r���r�����littleT)� byteorder�signed������������Nr�������r����)� bit_length�to_bytes)rf����nbytes�resultr���r���r����encode_long$��s����r����c�������������C���s���t�j|�ddd�S�)a\��Decode a long from a two's complement little-endian binary string. >>> decode_long(b'') 0 >>> decode_long(b"\xff\x00") 255 >>> decode_long(b"\xff\x7f") 32767 >>> decode_long(b"\x00\xff") -256 >>> decode_long(b"\x00\x80") -32768 >>> decode_long(b"\x80") -128 >>> decode_long(b"\x7f") 127 r����T)r����r����)�int� from_bytes)rz���r���r���r����decode_longB��s����r����c���������������@���sh��e�Zd�Zd7dd�dd�Zdd��Zdd ��Zd d��Zdd ��Zdd��Zd8dd�Z dd��Z dd��Zd9dd�Zi�Z dd��Zee ed�<�dd��Zee e<�dd��Zee e<�dd��Zee e<�d d!��Zee e<�d"d#��Zee e<�d$d%��Zee e<�d&d'��Zee e<�d(Zd)d*��Zd+d,��Z e e e!<�e"dk �re e e"<�d-d.��Z#d/d0��Z$e$e e%<�d1d2��Z&e&e e'<�d:d3d4�Z(d5d6��Z)e(e e*<�e)e e<�dS�);�_PicklerNT)�fix_importsc������������C���s����|dkrt�}|dk�rt}n$d|��ko,tkn��s>tdt���y|j|�_W�n�tk rf���td��Y�nX�t|�j�|�_|�jj|�_i�|�_ t |�|�_|dk|�_d|�_ |o�|dk�|�_dS�)a���This takes a binary file for writing a pickle data stream. The optional *protocol* argument tells the pickler to use the given protocol; supported protocols are 0, 1, 2, 3 and 4. The default protocol is 3; a backward-incompatible protocol designed for Python 3. Specifying a negative protocol version selects the highest protocol version supported. The higher the protocol used, the more recent the version of Python needed to read the pickle produced. The *file* argument must have a write() method that accepts a single bytes argument. It can thus be a file object opened for binary writing, an io.BytesIO instance, or any other custom object that meets this interface. If *fix_imports* is True and *protocol* is less than 3, pickle will try to map the new Python 3 names to the old module names used in Python 2, so that the pickle data stream is readable with Python 2. Nr���zpickle protocol must be <= %dz"file must have a 'write' attributer����r���)�DEFAULT_PROTOCOL�HIGHEST_PROTOCOL� ValueErrorr|����_file_writer����� TypeErrorrh����framer�memor�����proto�bin�fastr����)r����file�protocolr����r���r���r���r ���[��s"���� z_Pickler.__init__c�������������C���s���|�j�j���dS�)a��Clears the pickler's "memo". The memo is the data structure that remembers which objects the pickler has already seen, so that shared or recursive objects are pickled by reference and not by value. This method is useful when re-using picklers. N)r�����clear)r���r���r���r���� clear_memo���s����z_Pickler.clear_memoc�������������C���sr���t�|�d�std|�jjf���|�jdkr<|�jttd|�j����|�jdkrP|�jj ���|�j |��|�jt��|�jj���dS�)z7Write a pickled representation of obj to the open file.r����z2Pickler.__init__() was not called by %s.__init__()r����z<Br���N) �hasattrr ���� __class__r���r����r|����PROTOr ���r����rn����save�STOPrr���)r���r����r���r���r���r������s���� z _Pickler.dumpc�������������C���s:���|�j�r dS�t|�j�}|�j|�j|���||f|�jt|�<�dS�)zStore an object in the memo.N)r����ru���r����r|����put�id)r���r�����idxr���r���r����memoize���s ���� z_Pickler.memoizec�������������C���sT���|�j�dkrtS�|�jr:|dk�r*ttd|��S�ttd|��S�ntt|�jd��d�S�d�S�)Nr�������z<Bz<I�asciir����) r�����MEMOIZEr�����BINPUTr ����LONG_BINPUT�PUT�repr�encode)r���r����r���r���r���r�������s���� z_Pickler.putc�������������C���s@���|�j�r*|dk�rttd|��S�ttd|��S�tt|�jd��d�S�)Nr����z<Bz<Ir����r����)r�����BINGETr ����LONG_BINGET�GETr����r����)r����ir���r���r����get���s ����z_Pickler.getc�������������C���s���|�j�j���|�j|�}|d�k r.|r.|�j|��d�S�|�jjt|��}|d�k r^|�j|�j|d����d�S�t|�}|�j j|�}|d�k r�||�|��d�S�t |�dt�j|�}|d�k r�||�}n�yt|t�} W�n�t k r����d} Y�nX�| r�|�j|��d�S�t |dd��}|d�k �r||�j�}n0t |dd��}|d�k �r&|��}ntd|j|f���t|t��rT|�j||��d�S�t|t��sltd|���t|�} d| ��k�o�d kn���s�td |���|�j|d|i��d�S�)Nr���r���F� __reduce_ex__� __reduce__zCan't pickle %r object: %rz%s must return string or tupler��������z3Tuple returned by %s must have two to five elementsr����)r����rq���� persistent_id� save_persr����r����r����r|����type�dispatchr����r���� issubclassr�����save_globalr����r ���r���� isinstance�str�tupleru����save_reduce)r���r�����save_persistent_id�pidrf����try����reduce�rvZissc�lr���r���r���r�������sT���� z _Pickler.savec�������������C���s���d�S�)Nr���)r���r����r���r���r���r������s����z_Pickler.persistent_idc�������������C���sb���|�j�r |�j|dd��|�jt��n>y |�jtt|�jd��d���W�n�tk r\���td��Y�nX�d�S�)NF)r����r����r����z2persistent IDs in protocol 0 must be ASCII strings) r����r����r|���� BINPERSID�PERSIDr����r�����UnicodeEncodeErrorr ���)r���r����r���r���r���r������s���� z_Pickler.save_persc�������������C���s���t�|t�std��t|�s"td��|�j}|�j}t|dd�} |�jdkr�| dkr�|\} }}t| d�sntdj | ���|d�k r�| |j k r�td j | ���|�jd kr�|| ��||��||��|t��n,t| j | f|�|�}||��|f���|t��n�|�jdko�| dk�r\|d�} t| d��std ��|d�k �r6| |j k �r6td��|dd���}|| ��||��|t��n||��||��|t��|d�k �r�t|�|�jk�r�|t|�j|�jt|��d�����n |�j|��|d�k �r�|�j|��|d�k �r�|�j|��|d�k �r�||��|t��d�S�)Nz'args from save_reduce() must be a tuplez(func from save_reduce() must be callabler�����r����� __newobj_ex__�__new__z#args[0] from {} args has no __new__z(args[0] from {} args has the wrong classr���� __newobj__r���z+args[0] from __newobj__ args has no __new__z0args[0] from __newobj__ args has the wrong classr����)r����r����r ����callabler����r|���r����r����r����r����r����� NEWOBJ_EXr���r�����REDUCE�NEWOBJr����r�����POPr����r�����_batch_appends�_batch_setitems�BUILD)r����func�args�stateZ listitemsZ dictitemsr����r����r|���Z func_name�cls�kwargsr���r���r���r������sd���� " z_Pickler.save_reducec�������������C���s���|�j�t��d�S�)N)r|����NONE)r���r����r���r���r���� save_none���s����z_Pickler.save_nonec�������������C���s4���|�j�dkr|�j|rtnt��n|�j|r*tnt��d�S�)Nr����)r����r|����NEWTRUE�NEWFALSE�TRUE�FALSE)r���r����r���r���r���� save_bool���s���� z_Pickler.save_boolc�������������C���s����|�j�r~|dkrN|dkr.|�jttd|����d�S�|dkrN|�jttd|����d�S�d |��ko`dkn��r~|�jttd|����d�S�|�jd kr�t|�}t|�}|d k�r�|�jt td|��|���n|�jt td|��|���d�S�|�jtt|�j d��d���d�S�)Nr���r����z<Bi����z<Hl��������i���z<ir����r����r����s���L i����)r����r|����BININT1r ����BININT2�BININTr����r����ru����LONG1�LONG4�LONGr����r����)r���r�����encodedr{���r���r���r���� save_long���s&���� z_Pickler.save_longc�������������C���s<���|�j�r|�jttd|����n|�jtt|�jd��d���d�S�)Nz>dr����r����)r����r|����BINFLOATr ����FLOATr����r����)r���r����r���r���r���� save_float���s����z_Pickler.save_floatc�������������C���s����|�j�dk�r@|s |�jtf�|d��n|�jtjt|d�df|d��d�S�t|�}|dkrj|�jtt d|��|���nD|dkr�|�j�dkr�|�jt t d|��|���n|�jtt d |��|���|�j|��d�S�) Nr���)r�����latin1r����z<Bl������r���z<Qz<I) r����r�����bytes�codecsr����r����ru���r|����SHORT_BINBYTESr ���� BINBYTES8�BINBYTESr����)r���r����r{���r���r���r���� save_bytes���s���� z_Pickler.save_bytesc�������������C���s����|�j�r�|jdd�}t|�}|dkrF|�jdkrF|�jttd|��|���q�|dkrr|�jdkrr|�jttd|��|���q�|�jttd|��|���n0|j d d �}|j dd�}|�jt |jd ��d���|�j|��d�S�)Nzutf-8� surrogatepassr����r���z<Bl������z<Qz<I�\z\u005c� z\u000azraw-unicode-escaper����)r����r����ru���r����r|����SHORT_BINUNICODEr ����BINUNICODE8� BINUNICODE�replace�UNICODEr����)r���r����r��r{���r���r���r����save_str���s����z_Pickler.save_strc�������������C���sB��|s(|�j�r|�jt��n|�jtt���d�S�t|�}|�j}|�j}|dkr�|�jdkr�x|D�]}||��qTW�t |�|kr�|�j |t |��d��}|�jt|�|���n|�jt|���|�j |��d�S�|�j}|t��x|D�]}||��q�W�t |�|k�r,|�j |t |��d��}|�j��r|t|���n|t|d��|���d�S�|t��|�j |��d�S�)Nr���r����r���r����)r����r|����EMPTY_TUPLE�MARK�TUPLEru���r����r����r����r����r����r�����_tuplesize2coder�����POP_MARK)r���r����r{���r����r�����elementr����r|���r���r���r���� save_tuple���s:���� z_Pickler.save_tuplec�������������C���s8���|�j�r|�jt��n|�jtt���|�j|��|�j|��d�S�)N)r����r|���� EMPTY_LISTr���LISTr����r����)r���r����r���r���r���� save_list��s ���� z_Pickler.save_listi���c�������������C���s����|�j�}|�j}|�js4x|D�]}||��|t��qW�d�S�t|�}xrtt||�j��}t|�}|dkr�|t ��x|D�]}||��qlW�|t ��n|r�||d���|t��||�jk�r>d�S�q>W�d�S�)Nr����r���)r����r|���r�����APPEND�iterr����r���� _BATCHSIZEru���r���APPENDS)r���r����r����r|���rf����it�tmpr{���r���r���r���r������s*���� z_Pickler._batch_appendsc�������������C���s<���|�j�r|�jt��n|�jtt���|�j|��|�j|j����d�S�)N)r����r|���� EMPTY_DICTr���DICTr����r����r����)r���r����r���r���r���� save_dict.��s ���� z_Pickler.save_dictc������� ������C���s����|�j�}|�j}|�js@x(|D�] \}}||��||��|t��qW�d�S�t|�}x�tt||�j��}t|�}|dkr�|t ��x |D�]\}}||��||��qxW�|t ��n(|r�|d�\}}||��||��|t��||�jk�rJd�S�qJW�d�S�)Nr����r���)r����r|���r�����SETITEMr#��r����r���r$��ru���r���SETITEMS) r���r����r����r|����k�vr&��r'��r{���r���r���r���r����;��s2���� z_Pickler._batch_setitemsc�������������C���s����|�j�}|�j}|�jdk�r0|�jtt|�f|d��d�S�|t��|�j|��t|�}xXtt ||�j ��}t|�}|dkr�|t��x|D�]}||��qzW�|t ��||�j k�rLd�S�qLW�d�S�)Nr���)r����r���)r����r|���r����r�����setr����� EMPTY_SETr����r#��r���r$��ru���r���ADDITEMS)r���r����r����r|���r&��Zbatchr{����itemr���r���r����save_setZ��s$���� z_Pickler.save_setc�������������C���s����|�j�}|�j}|�jdk�r0|�jtt|�f|d��d�S�|t��x|D�]}||��q>W�t|�|�jkr�|t |�j |�jt|��d�����d�S�|t��|�j|��d�S�)Nr���)r����r���) r����r|���r����r����� frozensetr����r��r����r����r��r����� FROZENSETr����)r���r����r����r|���r2��r���r���r����save_frozensetr��s���� z_Pickler.save_frozensetc������� ������C���sT��|�j�}|�j}|d�kr t|dd��}|d�kr.|j}t||�}y(t|dd��tj|�}t||�\}}W�n,�t t tfk r����td|||f���Y�nX�||k r�td|||f���|�j dk�rtj||f�} | �r| dkr�|ttd| ����n0| d k�r|ttd | ����n|ttd| ����d�S�|jd�d�} ||k�r4| }|�j d k�r^|�j|��|�j|��|t��n�||k �rz|�jt|| f��n�|�j dk�r�|tt|d��d�t|d��d���n�|�j�r�tj}tj}||f|k�r�|||f�\}}n||k�r�||�}y(|tt|d��d�t|d��d���W�n*�tk �rD���td|||�j f���Y�nX�|�j|��d�S�)Nr���r���)�levelz(Can't pickle %r: it's not found as %s.%sz2Can't pickle %r: it's not the same object as %s.%sr����r����z<Bi����z<Hz<ir����r���r���zutf-8r����r����z?can't pickle global identifier '%s.%s' using pickle protocol %i) r|���r����r����r���r����� __import__r����r����r�����ImportError�KeyErrorr����r ���r����r���r�����EXT1r ����EXT2�EXT4� rpartitionr�����STACK_GLOBALr�����GLOBALr ��r�����_compat_pickleZREVERSE_NAME_MAPPINGZREVERSE_IMPORT_MAPPINGr����r����) r���r����r����r|���r����r����r����Zobj2r�����codeZlastnameZr_name_mappingZr_import_mappingr���r���r���r�������sn���� $ &z_Pickler.save_globalc�������������C���s`���|t�d��kr|�jt�d|d�S�|t�t�kr:|�jt�tf|d�S�|t�d�krV|�jt�d|d�S�|�j|�S�)N)r����.)N).)r����r�����NotImplementedr����)r���r����r���r���r���� save_type���s����z_Pickler.save_type)N)T)NNNN)N)+r���r���r���r ���r����r���r����r����r����r����r����r����r����r����r����r����r�����boolr��r����r���floatr��r ��r��r����r��r����r!��r����r$��r����r*���dictr!���r����r3��r/��r6��r4��r����rD��r���r���r���r���r���r����Y��sV���) B� c1 B r����c���������������@���sn��e�Zd�Zdddd�dd�Zdd��Zd d ��Zdd��Zi�Zd d��Zeee d�<�dd��Z e eed�<�dd��Zeee d�<�dd��Zeeed�<�dd��Zeeed�<�dd��Zeeed�<�dd��Zeeed�<�dd��Zeeed�<�dd��Zeeed�<�d d!��Zeeed�<�d"d#��Zeeed�<�d$d%��Zeeed�<�d&d'��Z e ee!d�<�d(d)��Z"e"ee#d�<�d*d+��Z$e$ee%d�<�d,d-��Z&e&ee'd�<�d.d/��Z(d0d1��Z)e)ee*d�<�d2d3��Z+e+ee,d�<�d4d5��Z-e-ee.d�<�d6d7��Z/e/ee0d�<�d8d9��Z1e1ee2d�<�d:d;��Z3e3ee4d�<�d<d=��Z5e5ee6d�<�d>d?��Z7e7ee8d�<�d@dA��Z9e9ee:d�<�dBdC��Z;e;ee<d�<�dDdE��Z=e=ee>d�<�dFdG��Z?e?ee@d�<�dHdI��ZAeAeeBd�<�dJdK��ZCeCeeDd�<�dLdM��ZEeEeeFd�<�dNdO��ZGeGeeHd�<�dPdQ��ZIeIeeJd�<�dRdS��ZKeKeeLd�<�dTdU��ZMeMeeNd�<�dVdW��ZOeOeePd�<�dXdY��ZQeQeeRd�<�dZd[��ZSd\d]��ZTeTeeUd�<�d^d_��ZVeVeeWd�<�d`da��ZXeXeeYd�<�dbdc��ZZeZee[d�<�ddde��Z\e\ee]d�<�dfdg��Z^e^ee_d�<�dhdi��Z`e`eead�<�djdk��Zbebeecd�<�dldm��Zdedeeed�<�dndo��Zfdpdq��Zgdrds��Zheheeid�<�dtdu��Zjejeekd�<�dvdw��Zleleemd�<�dxdy��Zneneeod�<�dzd{��Zpepeeqd�<�d|d}��Zrereesd�<�d~d��Zteteeud�<�d�d���Zveveewd�<�d�d���Zxexeeyd�<�d�d���Zzezee{d�<�d�d���Z|e|ee}d�<�d�d���Z~e~eed�<�d�d���Z�e�ee�d�<�d�d���Z�e�ee�d�<�d�d���Z�e�ee�d�<�d�d���Z�e�ee�d�<�d�d���Z�e�ee�d�<�d�d���Z�e�ee�d�<�d�d���Z�e�ee�d�<�d�S�)�� _UnpicklerT�ASCII�strict)r�����encoding�errorsc������������C���s2���|j�|�_|j|�_i�|�_||�_||�_d|�_||�_dS�)a���This takes a binary file for reading a pickle data stream. The protocol version of the pickle is detected automatically, so no proto argument is needed. The argument *file* must have two methods, a read() method that takes an integer argument, and a readline() method that requires no arguments. Both methods should return bytes. Thus *file* can be a binary file object opened for reading, an io.BytesIO object, or any other custom object that meets this interface. The file-like object must have two methods, a read() method that takes an integer argument, and a readline() method that requires no arguments. Both methods should return bytes. Thus file-like object can be a binary file object opened for reading, a BytesIO object, or any other custom object that meets this interface. Optional keyword arguments are *fix_imports*, *encoding* and *errors*, which are used to control compatibility support for pickle stream generated by Python 2. If *fix_imports* is True, pickle will try to map the old Python 2 names to the new names used in Python 3. The *encoding* and *errors* tell pickle how to decode 8-bit string instances pickled by Python 2; these default to 'ASCII' and 'strict', respectively. *encoding* can be 'bytes' to read theses 8-bit string instances as bytes objects. r���N) r�����_file_readliner����� _file_readr����rK��rL��r����r����)r���r����r����rK��rL��r���r���r���r ������s����z_Unpickler.__init__c�������������C���s����t�|�d�std|�jjf���t|�j|�j�|�_|�jj|�_|�jj |�_ g�|�_ g�|�_|�jj|�_d|�_ |�j}|�j}y*x$|d�}|s|t�||d��|���qlW�W�n"�tk r��}�z|jS�d}~X�nX�dS�)z�Read a pickled object representation from the open file. Return the reconstituted object hierarchy specified in the file. rN��z4Unpickler.__init__() was not called by %s.__init__()r���r����N)r����r���r����r���r}���rN��rM��� _unframerr����r����� metastack�stack�appendr����r�����EOFErrorr���r���)r���r����r�����keyZstopinstr���r���r���r�����s(���� z_Unpickler.loadc�������������C���s ���|�j�}|�jj��|�_�|�j�j|�_|S�)N)rQ��rP���poprR��)r���r����r���r���r����pop_mark��s���� z_Unpickler.pop_markc�������������C���s���t�d��d�S�)Nz%unsupported persistent id encountered)r���)r���r����r���r���r����persistent_load%��s����z_Unpickler.persistent_loadc�������������C���s<���|�j�d�d�}d|��ko tkn��s2td|���||�_d�S�)Nr����r���zunsupported pickle protocol: %d)r����r����r����r����)r���r����r���r���r���� load_proto*��s����z_Unpickler.load_protor���c�������������C���s8���t�d|�jd��\}|tjkr(td|���|�jj|��d�S�)Nz<Q����zframe size > sys.maxsize: %d)r���r����r����r ���r����rO��r����)r���r����r���r���r���r����1��s���� z_Unpickler.load_framec�������������C���sL���y|�j���d�d��jd�}W�n�tk r6���td��Y�nX�|�j|�j|���d�S�)Nr����r����z2persistent IDs in protocol 0 must be ASCII stringsr����)r�����decode�UnicodeDecodeErrorr���rR��rW��)r���r����r���r���r����load_persid8��s����z_Unpickler.load_persidc�������������C���s���|�j�j��}|�j|�j|���d�S�)N)rQ��rU��rR��rW��)r���r����r���r���r����load_binpersidA��s���� z_Unpickler.load_binpersidc�������������C���s���|�j�d���d�S�)N)rR��)r���r���r���r���� load_noneF��s����z_Unpickler.load_nonec�������������C���s���|�j�d��d�S�)NF)rR��)r���r���r���r���� load_falseJ��s����z_Unpickler.load_falsec�������������C���s���|�j�d��d�S�)NT)rR��)r���r���r���r���� load_trueN��s����z_Unpickler.load_truec�������������C���sL���|�j���}|tdd���krd}n |tdd���kr4d}n t|d�}|�j|��d�S�)Nr����FTr���)r����r����r����r����rR��)r���rz����valr���r���r����load_intR��s���� z_Unpickler.load_intc�������������C���s���|�j�td|�jd��d���d�S�)Nz<ir���r���)rR��r���r����)r���r���r���r����load_binint]��s����z_Unpickler.load_binintc�������������C���s���|�j�|�jd�d���d�S�)Nr����r���)rR��r����)r���r���r���r����load_binint1a��s����z_Unpickler.load_binint1c�������������C���s���|�j�td|�jd��d���d�S�)Nz<Hr����r���)rR��r���r����)r���r���r���r����load_binint2e��s����z_Unpickler.load_binint2c�������������C���s@���|�j���d�d��}|r,|d�dkr,|d�d��}|�jt|d���d�S�)Nr����r+���r���r����r�����L���r����)r����rR��r����)r���ra��r���r���r���� load_longi��s����z_Unpickler.load_longc�������������C���s*���|�j�d�d�}|�j�|�}|�jt|���d�S�)Nr����r���)r����rR��r����)r���r{���rz���r���r���r���� load_long1p��s���� z_Unpickler.load_long1c�������������C���s>���t�d|�jd��\}|dk�r"td��|�j|�}|�jt|���d�S�)Nz<ir���r���z#LONG pickle has negative byte count)r���r����r���rR��r����)r���r{���rz���r���r���r���� load_long4v��s ���� z_Unpickler.load_long4c�������������C���s���|�j�t|�j��d�d�����d�S�)Nr����r����)rR��rF��r����)r���r���r���r���� load_float��s����z_Unpickler.load_floatc�������������C���s���|�j�td|�jd��d���d�S�)Nz>drY��r���)rR��r���r����)r���r���r���r���� load_binfloat���s����z_Unpickler.load_binfloatc�������������C���s"���|�j�dkr|S�|j|�j�|�j�S�d�S�)Nr ��)rK��rZ��rL��)r���r���r���r���r����_decode_string���s���� z_Unpickler._decode_stringc�������������C���sl���|�j���d�d��}t|�dkrF|d�|d�krF|d�dkrF|dd��}ntd��|�j|�jtj|�d����d�S�) Nr����r����r���s���"'z)the STRING opcode argument must be quotedr����r����r����)r����ru���r���rR��rl��r ��� escape_decode)r���rz���r���r���r����load_string���s ����(z_Unpickler.load_stringc�������������C���s@���t�d|�jd��\}|dk�r"td��|�j|�}|�j|�j|���d�S�)Nz<ir���r���z(BINSTRING pickle has negative byte count)r���r����r���rR��rl��)r���ru���rz���r���r���r����load_binstring���s ���� z_Unpickler.load_binstringc�������������C���s:���t�d|�jd��\}|tkr&tdt���|�j|�j|���d�S�)Nz<Ir���z2BINBYTES exceeds system's maximum size of %d bytes)r���r����r ���r���rR��)r���ru���r���r���r���� load_binbytes���s ����z_Unpickler.load_binbytesc�������������C���s ���|�j�t|�j��d�d��d���d�S�)Nr����zraw-unicode-escaper����)rR��r����r����)r���r���r���r����load_unicode���s����z_Unpickler.load_unicodec�������������C���sB���t�d|�jd��\}|tkr&tdt���|�jt|�j|�dd���d�S�)Nz<Ir���z4BINUNICODE exceeds system's maximum size of %d byteszutf-8r��)r���r����r ���r���rR��r����)r���ru���r���r���r����load_binunicode���s ����z_Unpickler.load_binunicodec�������������C���sB���t�d|�jd��\}|tkr&tdt���|�jt|�j|�dd���d�S�)Nz<QrY��z5BINUNICODE8 exceeds system's maximum size of %d byteszutf-8r��)r���r����r ���r���rR��r����)r���ru���r���r���r����load_binunicode8���s ����z_Unpickler.load_binunicode8c�������������C���s:���t�d|�jd��\}|tkr&tdt���|�j|�j|���d�S�)Nz<QrY��z3BINBYTES8 exceeds system's maximum size of %d bytes)r���r����r ���r���rR��)r���ru���r���r���r����load_binbytes8���s ����z_Unpickler.load_binbytes8c�������������C���s,���|�j�d�d�}|�j�|�}|�j|�j|���d�S�)Nr����r���)r����rR��rl��)r���ru���rz���r���r���r����load_short_binstring���s���� z_Unpickler.load_short_binstringc�������������C���s"���|�j�d�d�}|�j|�j�|���d�S�)Nr����r���)r����rR��)r���ru���r���r���r����load_short_binbytes���s����z_Unpickler.load_short_binbytesc�������������C���s*���|�j�d�d�}|�jt|�j�|�dd���d�S�)Nr����r���zutf-8r��)r����rR��r����)r���ru���r���r���r����load_short_binunicode���s����z _Unpickler.load_short_binunicodec�������������C���s���|�j���}|�jt|���d�S�)N)rV��rR��r����)r���r����r���r���r���� load_tuple���s����z_Unpickler.load_tuplec�������������C���s���|�j�f���d�S�)N)rR��)r���r���r���r����load_empty_tuple���s����z_Unpickler.load_empty_tuplec�������������C���s���|�j�d�f|�j�d<�d�S�)Nr����r����r����)rQ��)r���r���r���r����load_tuple1���s����z_Unpickler.load_tuple1c�������������C���s$���|�j�d�|�j�d�fg|�j�dd��<�d�S�)Nr����r����r����r����r����)rQ��)r���r���r���r����load_tuple2���s����z_Unpickler.load_tuple2c�������������C���s,���|�j�d�|�j�d�|�j�d�fg|�j�dd��<�d�S�)Nr���r����r�������r����r����r|��)rQ��)r���r���r���r����load_tuple3���s����z_Unpickler.load_tuple3c�������������C���s���|�j�g���d�S�)N)rR��)r���r���r���r����load_empty_list���s����z_Unpickler.load_empty_listc�������������C���s���|�j�i���d�S�)N)rR��)r���r���r���r����load_empty_dictionary���s����z _Unpickler.load_empty_dictionaryc�������������C���s���|�j�t����d�S�)N)rR��r/��)r���r���r���r����load_empty_set���s����z_Unpickler.load_empty_setc�������������C���s���|�j���}|�jt|���d�S�)N)rV��rR��r4��)r���r����r���r���r����load_frozenset���s����z_Unpickler.load_frozensetc�������������C���s���|�j���}|�j|��d�S�)N)rV��rR��)r���r����r���r���r���� load_list���s����z_Unpickler.load_listc����������������s4���|�j�������fdd�tdt���d�D��}|�j|��d�S�)Nc����������������s���i�|�]}��|d�����|��qS�)r����r���)re���r����)r����r���r���� <dictcomp>��s���z(_Unpickler.load_dict.<locals>.<dictcomp>r���r����)rV���rangeru���rR��)r����dr���)r����r���� load_dict��s���� z_Unpickler.load_dictc�������������C���s����|st�|t��st|d�rly||��}W�qv�tk rh�}�z&td|jt|�f�tj��d���W�Y�d�d�}~X�qvX�n |j|�}|�j |��d�S�)NZ__getinitargs__zin constructor for %s: %sr����) r����r����r����r����r���r����r�����exc_infor����rR��)r����klassr����r����errr���r���r����_instantiate��s���� 0 z_Unpickler._instantiatec�������������C���sL���|�j���d�d��jd�}|�j���d�d��jd�}|�j||�}|�j||�j����d�S�)Nr����r����r����r����)r����rZ��� find_classr���rV��)r���r����r����r���r���r���r���� load_inst��s����z_Unpickler.load_instc�������������C���s"���|�j���}|jd�}|�j||��d�S�)Nr���)rV��rU��r���)r���r����r����r���r���r����load_obj!��s���� z_Unpickler.load_objc�������������C���s2���|�j�j��}|�j�j��}|j|f|���}|�j|��d�S�)N)rQ��rU��r����rR��)r���r����r����r����r���r���r����load_newobj(��s���� z_Unpickler.load_newobjc�������������C���s>���|�j�j��}|�j�j��}|�j�j��}|j|f|�|�}|�j|��d�S�)N)rQ��rU��r����rR��)r���r����r����r����r����r���r���r����load_newobj_ex/��s ���� z_Unpickler.load_newobj_exc�������������C���sF���|�j���d�d��jd�}|�j���d�d��jd�}|�j||�}|�j|��d�S�)Nr����zutf-8r����r����)r����rZ��r���rR��)r���r����r����r���r���r���r����load_global7��s����z_Unpickler.load_globalc�������������C���sJ���|�j�j��}|�j�j��}t|�tk s,t|�tk r4td��|�j|�j||���d�S�)NzSTACK_GLOBAL requires str)rQ��rU��r����r����r���rR��r���)r���r����r����r���r���r����load_stack_global>��s ���� z_Unpickler.load_stack_globalc�������������C���s���|�j�d�d�}|�j|��d�S�)Nr����r���)r����� get_extension)r���rB��r���r���r���� load_ext1F��s����z_Unpickler.load_ext1c�������������C���s ���t�d|�jd��\}|�j|��d�S�)Nz<Hr����)r���r����r���)r���rB��r���r���r���� load_ext2K��s����z_Unpickler.load_ext2c�������������C���s ���t�d|�jd��\}|�j|��d�S�)Nz<ir���)r���r����r���)r���rB��r���r���r���� load_ext4P��s����z_Unpickler.load_ext4c�������������C���sp���g�}t�j||�}||k r&|�j|��d�S�tj|�}|sP|dkrDtd��td|���|�j|��}|t�|<�|�j|��d�S�)Nr���zEXT specifies code <= 0zunregistered extension code %d)r���r����rR��r���r���r����r���)r���rB��Znilr����rT��r���r���r���r���U��s���� z_Unpickler.get_extensionc�������������C���s����|�j�dk�rF|�jrF||ftjkr2tj||f�\}}n|tjkrFtj|�}t|dd��|�j�dkrpttj|�|�d�S�t tj|�|�S�d�S�)Nr���r���)r7��r���) r����r����rA��ZNAME_MAPPINGZIMPORT_MAPPINGr8��r����r����r����r����)r���r����r����r���r���r���r���e��s���� z_Unpickler.find_classc�������������C���s&���|�j�}|j��}|d�}||��|d<�d�S�)Nr����r����r����)rQ��rU��)r���rQ��r����r����r���r���r����load_reducer��s����z_Unpickler.load_reducec�������������C���s���|�j�r|�j�d=�n|�j���d�S�)Nr����r����)rQ��rV��)r���r���r���r����load_popy��s���� z_Unpickler.load_popc�������������C���s���|�j����d�S�)N)rV��)r���r���r���r���� load_pop_mark���s����z_Unpickler.load_pop_markc�������������C���s���|�j�|�jd���d�S�)Nr����r����)rR��rQ��)r���r���r���r����load_dup���s����z_Unpickler.load_dupc�������������C���s(���t�|�j��d�d���}|�j|�j|���d�S�)Nr����r����)r����r����rR��r����)r���r����r���r���r����load_get���s����z_Unpickler.load_getc�������������C���s"���|�j�d�d�}|�j|�j|���d�S�)Nr����r���)r����rR��r����)r���r����r���r���r����load_binget���s����z_Unpickler.load_bingetc�������������C���s&���t�d|�jd��\}|�j|�j|���d�S�)Nz<Ir���)r���r����rR��r����)r���r����r���r���r����load_long_binget���s����z_Unpickler.load_long_bingetc�������������C���s8���t�|�j��d�d���}|dk�r$td��|�jd�|�j|<�d�S�)Nr����r���znegative PUT argumentr����r����)r����r����r����rQ��r����)r���r����r���r���r����load_put���s����z_Unpickler.load_putc�������������C���s2���|�j�d�d�}|dk�rtd��|�jd�|�j|<�d�S�)Nr����r���znegative BINPUT argumentr����)r����r����rQ��r����)r���r����r���r���r����load_binput���s����z_Unpickler.load_binputc�������������C���s6���t�d|�jd��\}|tkr"td��|�jd�|�j|<�d�S�)Nz<Ir���znegative LONG_BINPUT argumentr����r����)r���r����r ���r����rQ��r����)r���r����r���r���r����load_long_binput���s����z_Unpickler.load_long_binputc�������������C���s���|�j�}|�jd�|t|�<�d�S�)Nr����r����)r����rQ��ru���)r���r����r���r���r����load_memoize���s����z_Unpickler.load_memoizec�������������C���s$���|�j�}|j��}|d�}|j|��d�S�)Nr����r����)rQ��rU��rR��)r���rQ��r���r����r���r���r����load_append���s����z_Unpickler.load_appendc�������������C���sH���|�j���}|�jd�}t|t�r(|j|��n|j}x|D�]}||��q4W�d�S�)Nr����r����)rV��rQ��r����r�����extendrR��)r���r����Zlist_objrR��r2��r���r���r����load_appends���s���� z_Unpickler.load_appendsc�������������C���s*���|�j�}|j��}|j��}|d�}|||<�d�S�)Nr����r����)rQ��rU��)r���rQ��r���rT��rG��r���r���r����load_setitem���s ����z_Unpickler.load_setitemc�������������C���sD���|�j���}|�jd�}x,tdt|�d�D�]}||d��|||�<�q$W�d�S�)Nr����r���r����r����)rV��rQ��r���ru���)r���r����rG��r����r���r���r���� load_setitems���s���� z_Unpickler.load_setitemsc�������������C���sH���|�j���}|�jd�}t|t�r(|j|��n|j}x|D�]}||��q4W�d�S�)Nr����r����)rV��rQ��r����r/���update�add)r���r����Zset_objr���r2��r���r���r���� load_additems���s���� z_Unpickler.load_additemsc������� ������C���s����|�j�}|j��}|d�}t|dd��}|d�k r6||��d�S�d�}t|t�rXt|�dkrX|\}}|r�|j}tj}x6|j ��D�]*\}} t |�tkr�| |||�<�qr| ||<�qrW�|r�x |j ��D�]\}} t||| ��q�W�d�S�)Nr�����__setstate__r����r����) rQ��rU��r����r����r����ru����__dict__r�����internr����r����r�����setattr) r���rQ��r����Zinst�setstateZ slotstateZ inst_dictr���r-��r.��r���r���r���� load_build���s(����z_Unpickler.load_buildc�������������C���s"���|�j�j|�j��g�|�_|�jj|�_d�S�)N)rP��rR��rQ��)r���r���r���r���� load_mark���s����z_Unpickler.load_markc�������������C���s���|�j�j��}t|��d�S�)N)rQ��rU��r���)r���r���r���r���r���� load_stop���s���� z_Unpickler.load_stopN)�r���r���r���r ���r���rV��rW��r����rX��r����r����rv���r\��r����r]��r����r^��r����r_��r����r`��r����rb���INTrc��r����rd��r����re��r����rg��r��rh��r���ri��r��rj��r��rk��r��rl��rn���STRINGro��� BINSTRINGrp��r ��rq��r��rr��r��rs��r��rt��r��ru���SHORT_BINSTRINGrv��r��rw��r��rx��r��ry��r��rz���TUPLE1r{���TUPLE2r}���TUPLE3r~��r��r��r(��r���r0��r���r5��r���r ��r���r)��r���r����INSTr����OBJr���r����r���r����r���r@��r���r?��r���r;��r���r<��r���r=��r���r���r���r����r���r����r���r��r����DUPr���r����r���r����r���r����r���r����r���r����r���r����r���r����r���r"��r���r%��r���r+��r���r,��r���r1��r���r����r���r��r���r����r���r���r���r���rH�����s��$ rH��T)r����c������������C���s���t�|||d�j|���d�S�)N)r����)r����r���)r����r����r����r����r���r���r����_dump��s����r���c������������C���s(���t�j��}t|||d�j|���|j��}|S�)N)r����)rl���rm���r����r����getvalue)r����r����r����ry����resr���r���r����_dumps��s����r���rI��rJ��)r����rK��rL��c������������C���s���t�|�|||d�j��S�)N)r����rK��rL��)rH��r���)r����r����rK��rL��r���r���r����_load ��s����r���c������������C���s0���t�|�t�rtd��tj|��}t||||d�j��S�)Nz%Can't load pickle from unicode string)r����rK��rL��)r����r����r����rl���rm���rH��r���)�sr����rK��rL��r����r���r���r����_loads��s ���� r���) r���r ���r���r���r���r���r���r���r���c��������������C���s���dd�l�}�|�j��S�)Nr���)�doctestZtestmod)r���r���r���r����_test*��s����r���r����z$display contents of the pickle files)Zdescription�pickle_file�br�*zthe pickle file)r�����nargs�helpz-tz--test� store_truezrun self-test suite)�actionr���z-vz)run verbosely; only affects self-test run)N)N)�r����typesr����copyregr���r���r���r���� itertoolsr���� functoolsr���r����r ���Zstructr ���r���rc���rl���r ��rA���__all__r ��� bytearrayZbytes_typesZformat_versionZcompatible_formatsr����r����� Exceptionr���r ���r���r���Zorg.python.corer!���r9��r��r����r����r��r���r��r���r����r����r��r����r����r����r����r����r���r���r���r��r��r"��r����r@��r)��r(��r%��r����r����r���r����r ��r��r���r����r����r����r+��r��r��r,��r��r����r����r����r����r;��r<��r=��r���r���r���r����r����r���r��r��r ��r��r��r��r��r0��r1��r5��r����r?��r����rv���r����dirrh���r}���r����r����r����r����r����rH��r���r���r���r����_pickler���r���r���r���r���r���r���r����argparse�ArgumentParser�parser�add_argumentZFileType� parse_argsr����Ztestr���Z print_help�pprintry���r����r���r���r���r����<module>���s.�� $* ���������-0