
    F\h             	       |   S r SSKJr  SSKJr  SSKJrJrJr  SSKJ	r	  SSK
Jr  SSKrSSKJr  SS	KJrJr  SSKrSSKrSSKrSSKr/ S
Qr SSKJr  \R1                  S5        Sr\\4rSr/ SQrSr Sr! " S S\"5      r# " S S\#5      r$ " S S\#5      r% " S S\"5      r&Sr'Sr(Sr)Sr*Sr+S r,S!r-S"r.S#r/S$r0S%r1S&r2S'r3S(r4S)r5S*r6S+r7S,r8S-r9S.r:S/r;S0r<S1r=S2r>S3r?S4r@S5rAS6rBS7rCS8rDS9rES:rFS;rGS<rHS=rIS>rJS?rKS@rLSArMSBrNSCrOSDrPSErQSFrRSGrSSHrTSIrUSJrVSKrWSLrXSMrYSNrZSOr[SPr\SQr]\M\W\X\Y/r^SRr_SSr`STraSUrbSVrcSWrdSXreSYrfSZrgS[rhS\riS]rjS^rkS_rlS`rm\R                  \o" 5        V s/ s H  n \R                  SaU 5      (       d  M  U PM      sn 5         " Sb Sc5      rq " Sd Se5      rrSf rsSg rtSh ruSi rv\w" 5       rx " Sj Sk5      ry " Sl Sm5      rzSSSSn.So jjr{SSSSn.Sp jjr|SSqSrSSs.St jr}SSqSrSSs.Su jr~ SS
KJ#r#J$r$J%r%JrJrJrJrJrJr  Sv r\Sw:X  Ga  SSKr\GR                  " SxSy9r\GR                  SzS{S|S}9  \GR                  S~SSSS9  \GR                  SSSS9  \GR                  5       r\GR                  (       a  \" 5         g\GR                  (       d  \GR                  5         gSSKr\GR                   HU  r\S:X  a  \" \GR$                  GR&                  5      rO\" \S5       r\" \5      rSSS5        \GR                   " \5        MW     gg! \ a    Sr GNf = fs  sn f ! \ a    \y\zsrr\{\|\}\~4u  rrrr GN>f = f! , (       d  f       NX= f)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(bytes) -> 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loads)PickleBufferr   TF4.0)z1.0z1.1z1.2z1.3z2.0z3.0r   z5.0      c                       \ rS rSrSrSrg)r   I   z6A common base class for the other pickling exceptions. N__name__
__module____qualname____firstlineno____doc____static_attributes__r       /usr/lib/python3.13/pickle.pyr   r   I   s    @r$   r   c                       \ rS rSrSrSrg)r   M   zUThis exception is raised when an unpicklable object is passed to the
dump() method.

r   Nr   r   r$   r%   r   r   M   s     	r$   r   c                       \ rS rSrSrSrg)r   T   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.

r   Nr   r   r$   r%   r   r   T   s     	r$   r   c                       \ rS rSrS rSrg)_Stopa   c                     Xl         g Nvalueselfr0   s     r%   __init___Stop.__init__b   s    
r$   r/   N)r   r   r    r!   r3   r#   r   r$   r%   r+   r+   a   s    r$   r+      (   .   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                                       z[A-Z][A-Z0-9_]+$c                   D    \ rS rSrSrSrS rS rS rSS jr	S r
S	 rS
rg)_Framer   r   i   c                     Xl         S U l        g r.   )
file_writecurrent_frame)r2   r}   s     r%   r3   _Framer.__init__   s    $!r$   c                 8    [         R                  " 5       U l        g r.   )ioBytesIOr~   r2   s    r%   start_framing_Framer.start_framing   s    ZZ\r$   c                     U R                   (       a6  U R                   R                  5       S:  a  U R                  SS9  S U l         g g g )Nr   Tforce)r~   tellcommit_framer   s    r%   end_framing_Framer.end_framing   sC    $"4"4"9"9";a"?D)!%D #@r$   c           	      ~   U R                   (       a  U R                   nUR                  5       U R                  :  d  U(       az  UR                  5       nU R                  n[        U5      U R                  :  a"  U" [        [        S[        U5      5      -   5        U" U5        [        R                  " 5       U l         g g g )N<Q)r~   r   _FRAME_SIZE_TARGET	getbufferr}   len_FRAME_SIZE_MINFRAMEr   r   r   )r2   r   fdatawrites        r%   r   _Framer.commit_frame   s    ""Avvx4222e{{}t9 4 44
 %$tSY"778
 d &(ZZ\"' 7< r$   c                 |    U R                   (       a  U R                   R                  U5      $ U R                  U5      $ r.   )r~   r   r}   r2   r   s     r%   r   _Framer.write   s1    %%++D11??4((r$   c                 |    U R                   nU R                  (       a  U R                  SS9  U" U5        U" U5        g )NTr   )r}   r~   r   )r2   headerpayloadr   s       r%   write_large_bytes_Framer.write_large_bytes   s5    D) 	fgr$   )r~   r}   N)F)r   r   r    r!   r   r   r3   r   r   r   r   r   r#   r   r$   r%   rz   rz      s+    O""*&
20)r$   rz   c                   6    \ rS rSrS	S jrS rS rS rS rSr	g)
	_Unframeri  Nc                 *    Xl         X l        S U l        g r.   )	file_readfile_readliner~   )r2   r   r   	file_tells       r%   r3   _Unframer.__init__  s    "*!r$   c                 N   U R                   (       at  U R                   R                  U5      nUS:X  a7  [        U5      S:w  a(  S U l         [        U5      nU R                  U5      US S & U$ U[        U5      :  a  [	        S5      eU$ [        U5      nU R                  U5      US S & U$ Nr   $pickle exhausted before end of frame)r~   readintor   r   r   )r2   bufns      r%   r   _Unframer.readinto  s    ""++C0AAv#c(a-%)"H*A3s8|%:< <HCA^^A&CFHr$   c                     U R                   (       a\  U R                   R                  U5      nU(       d  US:w  a  S U l         U R                  U5      $ [        U5      U:  a  [	        S5      eU$ U R                  U5      $ r   )r~   readr   r   r   r2   r   r   s      r%   r   _Unframer.read  sp    %%**1-DAF%)"~~a((4y1}%:< <K>>!$$r$   c                     U R                   (       aN  U R                   R                  5       nU(       d  S U l         U R                  5       $ US   S:w  a  [        S5      eU$ U R                  5       $ )N
   r   )r~   readliner   r   r   s     r%   r   _Unframer.readline&  si    %%..0D%)"))++Bx8#%:< <K%%''r$   c                     U R                   (       a)  U R                   R                  5       S:w  a  [        S5      e[        R                  " U R                  U5      5      U l         g )Nr$   z4beginning of a new frame before end of current frame)r~   r   r   r   r   r   r2   
frame_sizes     r%   
load_frame_Unframer.load_frame3  sM    $"4"4"9"9";s"B!FH HZZz(BCr$   )r~   r   r   r.   )
r   r   r    r!   r3   r   r   r   r   r#   r   r$   r%   r   r     s    "
"%(Dr$   r   c                     U nUR                  S5       H1  nUS:X  a  [        SR                  X5      5      e U n[        X5      n M3     U W4$ ! [         a    [        SR                  X5      5      S ef = f)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nametopsubpathparents        r%   _getattributer   <  s    
C::c?j  !I"(&"35 5	?F#'C # ;  	? !C"(&"35:>?	?s   A&A3c                    [        U SS5      nUb  U$ [        R                  R                  5       R	                  5        H,  u  p#US:X  d	  US:X  d  Uc  M   [        X15      S   U L a  Us  $ M.     g! [         a     M>  f = f)z$Find the module an object belong to.r   N__main____mp_main__r   )r   sysmodulescopyitemsr   r   )r   r   module_namemodules       r%   whichmoduler   J  s    #|T2K  #{{//1779:%m+~	V*1-4"" 5  :   		s   A00
A>=A>c                     U S:X  a  gU R                  5       S-	  S-   nU R                  USSS9nU S:  a   US:  a  US   S	:X  a  US
   S-  S:w  a  USS nU$ )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$         littleT	byteordersignedr         N)
bit_lengthto_bytes)xnbytesresults      r%   encode_longr   ]  sp    * 	Avlln!Q&FZZ(4Z@F1u!":6":#4":CR[FMr$   c                 ,    [         R                  U SSS9$ )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   Tr   )int
from_bytes)r   s    r%   decode_longr   {  s    $ >>$(4>@@r$   c                      \ rS rSrS&SSS.S jjrS rS rS rS	 rS
 r	S'S jr
S rS r  S(SS.S jjr0 rS r\\\" S5      '   S r\\\'   S r\\\'   S r\\\'   S rS r\\\'   S rS r\\\'   \(       a  S r\\\'   S r \ \\!'   S r"\"\\#'   S r$\$\\%'   Sr&S r'S r(\(\\)'   S r*S  r+\+\\,'   S! r-\-\\.'   S&S" jr/S# r0S$ r1\/\\2'   \1\\'   S%r3g))_Pickleri  NTfix_importsbuffer_callbackc                   Uc  [         nUS:  a  [        nO%SUs=::  a
  [        ::  d  O  [        S[        -  5      eUb  US:  a  [        S5      eX@l         UR                  U l        [        U R
                  5      U l	        U R                  R                  U l        U R                  R                  U l        0 U l        [        U5      U l        US:  U l        SU l        U=(       a    US:  U l        g! [         a    [        S5      ef = f)	aY  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, 4 and 5.
The default protocol is 4. It was introduced in Python 3.4, and
is incompatible with previous versions.

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.

If *buffer_callback* is None (the default), buffer views are
serialized into *file* as part of the pickle stream.

If *buffer_callback* is not None, then it can be called any number
of times with a buffer view.  If the callback returns a false value
(such as None), the given buffer is out-of-band; otherwise the
buffer is serialized in-band, i.e. inside the pickle stream.

It is an error if *buffer_callback* is not None and *protocol*
is None or smaller than 5.
Nr   zpickle protocol must be <= %dr   z#buffer_callback needs protocol >= 5z"file must have a 'write' attributer   r   )DEFAULT_PROTOCOLHIGHEST_PROTOCOL
ValueError_buffer_callbackr   _file_writer   	TypeErrorrz   framerr   _write_large_bytesmemor   protobinfastr   )r2   fileprotocolr   r   s        r%   r3   _Pickler.__init__  s    F 'Ha<'Hh2"22<?OOPP&8a<BCC /	B#zzD d../[[&&
"&++"?"?	]
q=	&78a<  	B@AA	Bs   C4 4D
c                 8    U R                   R                  5         g)zClears 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   clearr   s    r%   
clear_memo_Pickler.clear_memo  s     			r$   c                    [        U S5      (       d$  [        SU R                  R                  < S35      eU R                  S:  a,  U R                  [        [        SU R                  5      -   5        U R                  S:  a  U R                  R                  5         U R                  U5        U R                  [        5        U R                  R                  5         g)z7Write a pickled representation of obj to the open file.r   z%Pickler.__init__() was not called by .__init__()   <Br   N)hasattrr   	__class__r   r   r   PROTOr   r   r   saveSTOPr   r2   r   s     r%   r   _Pickler.dump  s     t]++37>>3J3J!M N N::?JJutD$**556::?KK%%'		#

4!r$   c                     U R                   (       a  g[        U5      U R                  ;  d   e[        U R                  5      nU R	                  U R                  U5      5        X!4U R                  [        U5      '   g)zStore an object in the memo.N)r   idr   r   r   put)r2   r   idxs      r%   memoize_Pickler.memoize  sY     99#wdii'''$))n

488C=! X		"S'r$   c                     U R                   S:  a  [        $ U R                  (       a,  US:  a  [        [	        SU5      -   $ [
        [	        SU5      -   $ [        [        U5      R                  S5      -   S-   $ )Nr      r  <Iascii   
)	r   MEMOIZEr   BINPUTr   LONG_BINPUTPUTreprencode)r2   r  s     r%   r  _Pickler.put  sa    ::?NXXSyT3//"T$_44c))'22U::r$   c                     U R                   (       a,  US:  a  [        [        SU5      -   $ [        [        SU5      -   $ [        [        U5      R                  S5      -   S-   $ )Nr  r  r  r  r  )r   BINGETr   LONG_BINGETGETr  r  r2   is     r%   get_Pickler.get  sO    883wT1--"T$]22T!W^^G,,u44r$   c                    U R                   R                  5         U(       a&  U R                  U5      nUb  U R                  U5        g U R                  R                  [        U5      5      nUb$  U R                  U R                  US   5      5        g [        n[        U S[        5      nU[        La  U" U5      nU[        L a  [        U5      nU R                  R                  U5      nUb	  U" X5        g [        U S[        5      R                  U[        5      nU[        La	  U" U5      nO[        U[        5      (       a  U R                  U5        g [        US[        5      nU[        La  U" U R                   5      nO?[        US[        5      nU[        La  U" 5       nO[#        SUR$                  < SU< 35      e['        U[(        5      (       a  U R                  X5        g ['        U[*        5      (       d  [#        SU-  5      e[-        U5      n	S	U	s=::  a  S
::  d  O  [#        SU-  5      eU R.                  " USU06  g )Nr   reducer_overrider   __reduce_ex__
__reduce__Can't pickle z	 object: z%s must return string or tupler     z2Tuple returned by %s must have two to six elementsr   )r   r   persistent_id	save_persr   r"  r  r   NotImplementedr   _NoValuetypedispatchr   
issubclasssave_globalr   r   r   
isinstancestrtupler   save_reduce)
r2   r   save_persistent_idpidr   rvreducetr   ls
             r%   r  _Pickler.save  s      " $$S)Cs# IIMM"S'"=JJtxx!~&18<!BS	A!!!$A}$ T#3^DHHHUFX%C[ a&&$$S) !ox@)

+B$S,AFX-#X+-.ZZ-> ? ? b#S% "e$$ @6 IJJ GQ! !68>!? @ @ 	2&S&r$   c                     g r.   r   r  s     r%   r*  _Pickler.persistent_id[  s    r$   c                    U R                   (       a&  U R                  USS9  U R                  [        5        g  U R                  [        [        U5      R                  S5      -   S-   5        g ! [         a    [        S5      ef = f)NF)r6  r  r  2persistent IDs in protocol 0 must be ASCII strings)	r   r  r   	BINPERSIDPERSIDr3  r  UnicodeEncodeErrorr   r2   r7  s     r%   r+  _Pickler.save_pers_  sq    88IIceI4JJy!J

6CHOOG$<<uDE% J#HJ JJs   3A- -Br   c          	      j   [        U[        5      (       d  [        S5      e[        U5      (       d  [        S5      eU R                  nU R
                  n	[        USS5      n
U R                  S:  a  U
S:X  a  Uu  pn[        US5      (       d  [        SR                  U
5      5      eUb(  XR                  La  [        S	R                  U
5      5      eU R                  S
:  a%  U" U5        U" U5        U" U5        U	" [        5        O[        UR                  U/UQ70 UD6nU" U5        U" S5        U	" [        5        OU R                  S:  ae  U
S:X  a_  US   n[        US5      (       d  [        S5      eUb  XR                  La  [        S5      eUSS  nU" U5        U" U5        U	" [        5        OU" U5        U" U5        U	" [        5        Ubb  [!        U5      U R"                  ;   a8  U	" [$        U R'                  U R"                  [!        U5         S   5      -   5        OU R)                  U5        Ub  U R+                  U5        Ub  U R-                  U5        UbU  Uc  U" U5        U	" [.        5        g U" U5        U" U5        U" U5        U	" [0        5        U	" [        5        U	" [$        5        g g )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   r   
__newobj__r   z+args[0] from __newobj__ args has no __new__z0args[0] from __newobj__ args has the wrong classr   )r2  r4  r   callabler  r   r   r   r  r   r  	NEWOBJ_EXr	   rJ  REDUCENEWOBJr  r   POPr"  r  _batch_appends_batch_setitemsBUILDTUPLE2)r2   funcargsstate	listitems	dictitemsstate_setterr   r  r   	func_nameclskwargss                r%   r5  _Pickler.save_reducek  sh    $&& IJJ~~ JKKyy

D*b1	::?yO; $Cv3	**#$I%+VI%68 83mm#;#$N%+VI%68 8zzQS	T
Vi s{{CA$A&AT
RfZZ1_l!:6 q'C3	**#AC C3mm#;#FH H8DIJ&MJJ&M? #w$))#cDHHTYYr#w%7%:;;<S!  	*   +#Ue \"S	Uff
 c
' r$   c                 .    U R                  [        5        g r.   )r   NONEr  s     r%   	save_none_Pickler.save_none  s    

4r$   c                     U R                   S:  a#  U R                  U(       a  [        O[        5        g U R                  U(       a  [        O[
        5        g )Nr  )r   r   NEWTRUENEWFALSETRUEFALSEr  s     r%   	save_bool_Pickler.save_bool  s-    ::?JJ#w84JJst.r$   c                    U R                   (       a  US:  aR  US::  a#  U R                  [        [        SU5      -   5        g US::  a#  U R                  [        [        SU5      -   5        g SUs=::  a  S::  a&  O  O#U R                  [
        [        SU5      -   5        g U R                  S	:  ah  [        U5      n[        U5      nUS
:  a&  U R                  [        [        SU5      -   U-   5        g U R                  [        [        SU5      -   U-   5        g SUs=::  a  S::  a7  O  O4U R                  [        [        U5      R                  S5      -   S-   5        g U R                  [        [        U5      R                  S5      -   S-   5        g )Nr   r   r    <Hi   i<ir  r  r  r  s   L
)r   r   BININT1r   BININT2BININTr   r   r   LONG1LONG4INTr  r  LONG)r2   r   encodedr   s       r%   	save_long_Pickler.save_long  s9   88
 ax$;JJwdC89&=JJwdC89c/Z/

6DsO34::?!#&GGA3w

54a=07:;  

54a=07:;#++JJsT#Y--g66>?JJtd3i..w77&@Ar$   c                     U R                   (       a#  U R                  [        [        SU5      -   5        g U R                  [        [        U5      R                  S5      -   S-   5        g )N>dr  r  )r   r   BINFLOATr   FLOATr  r  r  s     r%   
save_float_Pickler.save_float  sE    88JJx$tS/12JJutCy//885@Ar$   c                    U R                   S:  d   e[        U5      nUS::  a&  U R                  [        [	        SU5      -   U-   5        g US:  a4  U R                   S:  a$  U R                  [        [	        SU5      -   U5        g X R                  R                  :  a$  U R                  [        [	        SU5      -   U5        g U R                  [        [	        SU5      -   U-   5        g )Nr   r   r      r   r   r  )
r   r   r   SHORT_BINBYTESr   r   	BINBYTES8r   r   BINBYTESr2   r   r   s      r%   _save_bytes_no_memo_Pickler._save_bytes_no_memo  s     zzQH9JJ~T15;<^

a##IT1$=sC++000##HtD!}$<cBJJx$tQ-/#56r$   c                     U R                   S:  aI  U(       d  U R                  [        SUS9  g U R                  [        R                  [        US5      S4US9  g U R                  U5        U R                  U5        g )Nr   r   rF  latin1)r   r5  bytescodecsr  r3  r  r  r  s     r%   
save_bytes_Pickler.save_bytes!  st    ::>   4    "%c8"4h!?S ! J  %Sr$   c                    U R                   S:  d   e[        U5      nX R                  R                  :  a$  U R	                  [
        [        SU5      -   U5        g U R                  [
        [        SU5      -   U-   5        g )Nr   r   )r   r   r   r   r   
BYTEARRAY8r   r   r  s      r%   _save_bytearray_no_memo _Pickler._save_bytearray_no_memo-  sd     zzQH...##JdA$>DJJzDqM1C78r$   c                     U R                   S:  a=  U(       d  U R                  [        SUS9  g U R                  [        [        U5      4US9  g U R	                  U5        U R                  U5        g )Nr   r   rF  )r   r5  	bytearrayr  r  r  r  s     r%   save_bytearray_Pickler.save_bytearray7  sd    ::>  BC 8    U3ZMs C$$S)Sr$   c                    U R                   S:  a  [        S5      eUR                  5        nUR                  (       d  [        S5      eSnU R                  b  [        U R	                  U5      5      nU(       a  UR                  5       n[        U5      U R                  ;   nUR                  (       a+  U(       a  U R                  U5        OxU R                  U5        OfU(       a  U R                  U5        OMU R                  U5        O;U R                  [        5        UR                  (       a  U R                  [         5        S S S 5        g ! , (       d  f       g = f)Nr   z3PickleBuffer can only be pickled with protocol >= 5zHPickleBuffer can not be pickled when pointing to a non-contiguous bufferT)r   r   raw
contiguousr   booltobytesr  r   readonlyr  r  r  r  r   NEXT_BUFFERREADONLY_BUFFER)r2   r   min_bandr   in_memos         r%   save_picklebuffer_Pickler.save_picklebufferC  s    zzA~# %4 5 5a||' )N O O((4"4#8#8#=>G ))+C g2Gzz" 44S9 OOC0" 88= //4 JJ{+zz

?35 s   DE
Ec                 >   U R                   (       a  UR                  SS5      n[        U5      nUS::  a7  U R                  S:  a'  U R	                  [
        [        SU5      -   U-   5        GO!US:  a4  U R                  S:  a$  U R                  [        [        SU5      -   U5        OX0R                  R                  :  a$  U R                  [        [        SU5      -   U5        OU R	                  [        [        SU5      -   U-   5        OUR                  S	S
5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nU R	                  [        UR                  S5      -   S-   5        U R                  U5        g )Nutf-8surrogatepassr   r   r  r  r   r  \z\u005c z\u0000
z\u000az\u000dz\u001araw-unicode-escaper  )r   r  r   r   r   SHORT_BINUNICODEr   r   BINUNICODE8r   r   
BINUNICODEreplaceUNICODEr  )r2   r   ru  r   tmps        r%   save_str_Pickler.save_stre  sA   88jj/:GGADyTZZ1_

+d4m;gEFZDJJ!O''d4m(CWMkk444''
T$](BGL

:T15?@ ++dI.C++dI.C++dI.C++dI.C++fi0CJJw,@!AAEIJSr$   c                 p   U(       dD  U R                   (       a  U R                  [        5        g U R                  [        [        -   5        g [        U5      nU R                  nU R                  nUS::  a  U R                  S:  a  U H  nU" U5        M     [        U5      U;   a<  U R                  U[        U5         S   5      nU R                  [        U-  U-   5        g U R                  [        U   5        U R                  U5        g U R                  nU" [        5        U H  nU" U5        M     [        U5      U;   aW  U R                  U[        U5         S   5      nU R                   (       a  U" [        U-   5        g U" [        US-   -  U-   5        g U" [        5        U R                  U5        g )Nr   r  r   r   )r   r   EMPTY_TUPLEMARKTUPLEr   r  r   r   r  r"  rP  _tuplesize2coder  POP_MARK)r2   r   r   r  r   elementr"  r   s           r%   
save_tuple_Pickler.save_tuple|  sf   xx

;'  

4%<(Hyyyy6djjAoW  #w$hhtBsG}Q/0

37S=)  

?1-.S! 

dGM  c7d? ((43=+,Cxxhn%  cQqSkC'( 	eSr$   c                     U R                   (       a  U R                  [        5        OU R                  [        [        -   5        U R                  U5        U R                  U5        g r.   )r   r   
EMPTY_LISTr  LISTr  rQ  r  s     r%   	save_list_Pickler.save_list  s?    88JJz"JJtd{#SC r$   i  c                    U R                   nU R                  nU R                  (       d  U H  nU" U5        U" [        5        M     g [	        U5      n [        [        XPR                  5      5      n[        U5      nUS:  a*  U" [        5        U H  nU" U5        M     U" [        5        OU(       a  U" US   5        U" [        5        XpR                  :  a  g M  Nr   r   )r  r   r   APPENDiterlistr   
_BATCHSIZEr   r  APPENDS)r2   r   r  r   r   itr  r   s           r%   rQ  _Pickler._batch_appends  s    yy

xxQf  %[vb//23CCA1udAG gSVf??" r$   c                     U R                   (       a  U R                  [        5        OU R                  [        [        -   5        U R                  U5        U R                  UR                  5       5        g r.   )r   r   
EMPTY_DICTr  DICTr  rR  r   r  s     r%   	save_dict_Pickler.save_dict  sE    88JJz"JJtd{#SSYY[)r$   c                    U R                   nU R                  nU R                  (       d(  U H!  u  pEU" U5        U" U5        U" [        5        M#     g [	        U5      n [        [        X`R                  5      5      n[        U5      nUS:  a4  U" [        5        U H  u  pEU" U5        U" U5        M     U" [        5        O*U(       a#  US   u  pEU" U5        U" U5        U" [        5        XR                  :  a  g M  r  )r  r   r   SETITEMr  r  r   r  r   r  SETITEMS)	r2   r   r  r   kvr  r  r   s	            r%   rR  _Pickler._batch_setitems  s    yy

xxQQg  %[vb//23CCA1udDAGG   h1vQQg??"! r$   c                    U R                   nU R                  nU R                  S:  a   U R                  [        [        U5      4US9  g U" [        5        U R                  U5        [        U5      n [        [        X@R                  5      5      n[        U5      nUS:  a)  U" [        5        U H  nU" U5        M     U" [        5        X`R                  :  a  g Mj  Nr   rF  r   )r  r   r   r5  setr  	EMPTY_SETr  r  r   r  r   r  ADDITEMS)r2   r   r  r   r  batchr   items           r%   save_set_Pickler.save_set  s    yy

::>S49,C8iS#YOO45EE
A1ud!DJ "h??" r$   c           	         U R                   nU R                  nU R                  S:  a   U R                  [        [        U5      4US9  g U" [        5        U H  nU" U5        M     [        U5      U R                  ;   a8  U" [        U R                  U R                  [        U5         S   5      -   5        g U" [        5        U R                  U5        g r  )r  r   r   r5  	frozensetr  r  r  r   r  r"  	FROZENSETr  )r2   r   r  r   r  s        r%   save_frozenset_Pickler.save_frozenset  s    yy

::>Yc#>dDJ  c7dii (TXXdii3&8&;<<=iSr$   c           	      0   U R                   nU R                  nUc  [        USS 5      nUc  UR                  n[	        X5      n [        USS9  [        R                  U   n[        Xb5      u  pxXqLa  [        SU< SU< SU< 35      e U R                  S:  a  [        R                  " XR4[         5      n	U	[         Lam  U	S	::  a-  [#        S
U	5      n
U
S:X  a  [%        S5      eU" [&        U
-   5        g U	S::  a  U" [(        [#        SU	5      -   5        g U" [*        [#        SU	5      -   5        g UR-                  S5      S   nXL a  UnU R                  S:  a/  U R/                  U5        U R/                  U5        U" [0        5        OSU;   a  UR3                  S5      nUR5                  S5      nU R.                  nU H-  nU" [        5        U R                  S:  d  M!  U" [6        5        M/     U R9                  XR5        U H@  nU" U5        U R                  S:  a  U" [:        5        OU" [<        5        U" [>        5        MB     OU R9                  XR5        U RA                  U5        g ! [        [        [        4 a    [        SU< SU< SU< 35      S ef = f)Nr    r   levelr(  z: it's not the same object as r   z: it's not found as r  r   r      z extension code 0 is out of rangerk  rl  rm  r   )!r   r   r   r   r   
__import__r   r   r   r   ImportErrorKeyErrorr   r   r   r"  r-  r   RuntimeErrorEXT1EXT2EXT4
rpartitionr  STACK_GLOBALr   popr  _save_toplevel_by_namer  rT  rN  r  )r2   r   r   r   r   r   r   obj2r   coder   lastnamedotted_pathr  attrnames                  r%   r1  _Pickler.save_global0  sU   

yy<35D<<<D!#,	.{!,[[-F(6LD #+t-. . 
 ::?&**K+>ID8#4<d+Du} ++MNN$+&
 	 V^$dD!112  $dD!112??3'*D::?IIk"IIdO,D[ **S/K??1%D99D'W::>$K ( '':'X::>%L&Mf ( '':Sq X~6 	4k4)*/34	4s   *I' '.Jc                    U R                   S:  a6  U R                  [        [        US5      -   S-   [        US5      -   S-   5        g U R                  (       a9  [
        R                  n[
        R                  nX4U;   a	  X1U4   u  pO	X;   a  XA   n U R                  [        [        US5      -   S-   [        US5      -   S-   5        g ! [         a    [        SXU R                   4-  5      S ef = f)Nr   r  r  r  z?can't pickle global identifier '%s.%s' using pickle protocol %i)
r   r   GLOBALr  r   _compat_pickleREVERSE_NAME_MAPPINGREVERSE_IMPORT_MAPPINGrC  r   )r2   r   r   r_name_mappingr_import_mappings        r%   r  _Pickler._save_toplevel_by_namex  s   ::?JJvk7 ;;eCT7+,.34 5 !/!D!D#1#H#H &.8(6T7J(K%K 4"2"?KV

6E+w$??%G w/0278 9% V#),7tzz+JKLQUVVs   5C &C.c                    U[        S 5      L a  U R                  [         SUS9$ U[        [        5      L a  U R                  [         [        4US9$ U[        S5      L a  U R                  [         SUS9$ U R                  U5      $ )Nr.   rF  .).)r.  r5  r,  r1  r  s     r%   	save_type_Pickler.save_type  s    $t*##D's#;;D((##D>*;#EEDI##D&c#::$$r$   )
r   r   r   r   r   r   r   r   r   r   r.   )T)NNNN)4r   r   r    r!   r3   r   r   r  r  r"  r  r*  r+  r5  r/  ra  r.  rh  r  rv  r   r|  floatr  r  r  r  r  r  _HAVE_PICKLE_BUFFERr  r   r  r3  r  r4  r  r  r  rQ  r  dictrR  r  r  r  r  r1  r  r   r   r#   r   r$   r%   r   r     sz   784!%78r"&.	;5E'N
J =A15q>Bqj H$HT$Z/
 HTNB: HSMB
 !HUO7	 !HUO9 )HY	4@ "3* HSM/b !HUO! HTNJ6* HTN>, HSM* )HYFPV*% )H\HTNr$   r   c                   .   \ rS rSrSSSSS.S jrS rS	 rS
 r0 rS r	\	\\
S   '   S r\\\S   '   S r\\\S   '   S r\\\S   '   S r\\\S   '   S r\\\S   '   S r\\\S   '   S r\\\S   '   S r\\\S   '   S r\\\S   '   S r\\\S   '   S r\\\ S   '   S r!\!\\"S   '   S r#\#\\$S   '   S r%\%\\&S   '   S r'\'\\(S   '   S r)S r*\*\\+S   '   S r,\,\\-S   '   S r.\.\\/S   '   S  r0\0\\1S   '   S! r2\2\\3S   '   S" r4\4\\5S   '   S# r6\6\\7S   '   S$ r8\8\\9S   '   S% r:\:\\;S   '   S& r<\<\\=S   '   S' r>\>\\?S   '   S( r@\@\\AS   '   S) rB\B\\CS   '   S* rD\D\\ES   '   S+ rF\F\\GS   '   S, rH\H\\IS   '   S- rJ\J\\KS   '   S. rL\L\\MS   '   S/ rN\N\\OS   '   S0 rP\P\\QS   '   S1 rR\R\\SS   '   S2 rT\T\\US   '   S3 rV\V\\WS   '   S4 rX\X\\YS   '   S5 rZS6 r[\[\\\S   '   S7 r]\]\\^S   '   S8 r_\_\\`S   '   S9 ra\a\\bS   '   S: rc\c\\dS   '   S; re\e\\fS   '   S< rg\g\\hS   '   S= ri\i\\jS   '   S> rk\k\\lS   '   S? rmS@ rnSA ro\o\\pS   '   SB rq\q\\rS   '   SC rs\s\\tS   '   SD ru\u\\vS   '   SE rw\w\\xS   '   SF ry\y\\zS   '   SG r{\{\\|S   '   SH r}\}\\~S   '   SI r\\\S   '   SJ r\\\S   '   SK r\\\S   '   SL r\\\S   '   SM r\\\S   '   SN r\\\S   '   SO r\\\S   '   SP r\\\S   '   SQ r\\\S   '   SR r\\\S   '   SS r\\\S   '   STrg)U
_Unpickleri  TASCIIstrictNr   encodingerrorsbuffersc                    Ub  [        U5      OSU l        UR                  U l        UR                  U l        0 U l        X0l        X@l        SU l	        X l
        g)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.

If *buffers* is not None, it should be an iterable of buffer-enabled
objects that is consumed each time the pickle stream references
an out-of-band buffer view.  Such buffers have been given in order
to the *buffer_callback* of a Pickler object.

If *buffers* is None (the default), then the buffers are taken
from the pickle stream, assuming they are serialized there.
It is an error for *buffers* to be None if the pickle stream
was produced with a non-None *buffer_callback*.

Other optional 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 these 8-bit string instances as bytes objects.
Nr   )r  _buffersr   _file_readliner   
_file_readr   r
  r  r   r   )r2   r   r   r
  r  r  s         r%   r3   _Unpickler.__init__  sL    N *1)<W$"mm))	 
&r$   c                    [        U S5      (       d$  [        SU R                  R                  < S35      e[	        U R
                  U R                  5      U l        U R                  R                  U l        U R                  R                  U l	        U R                  R                  U l
        / U l        / U l        U R                  R                  U l        SU l        U R                  nU R                  n  U" S5      nU(       d  [         e[#        U[$        5      (       d   eX#S      " U 5        M;  ! [&         a  nUR(                  s SnA$ SnAff = f)z{Read a pickled object representation from the open file.

Return the reconstituted object hierarchy specified in the file.
r  z'Unpickler.__init__() was not called by r   r   r   N)r  r   r  r   r   r  r  	_unframerr   r   r   	metastackstackappendr   r/  EOFErrorr2  bytes_typesr+   r0   )r2   r   r/  keystopinsts        r%   r   _Unpickler.load  s    t\**!59^^5L5L#O P P"4??D4G4GHNN''	////
jj''
yy==	"1g"N!#{3333Q &   	">>!	"s   5<D1 1
E;EEEc                     U R                   nU R                  R                  5       U l         U R                   R                  U l        U$ r.   )r  r  r  r  r2   r   s     r%   pop_mark_Unpickler.pop_mark  s5    

^^'')
jj''r$   c                     [        S5      e)Nz%unsupported persistent id encountered)r   rD  s     r%   persistent_load_Unpickler.persistent_load  s    EFFr$   c                 z    U R                  S5      S   nSUs=::  a
  [        ::  d  O  [        SU-  5      eXl        g )Nr   r   zunsupported pickle protocol: %d)r   r   r   r   )r2   r   s     r%   
load_proto_Unpickler.load_proto  s7    		!QE--->FGG
r$   r   c                     [        SU R                  S5      5      u  nU[        R                  :  a  [	        SU-  5      eU R
                  R                  U5        g )Nr      zframe size > sys.maxsize: %d)r   r   r   r
   r   r  r   r   s     r%   r   _Unpickler.load_frame  sG    T499Q<0
#;jHII!!*-r$   c                      U R                  5       S S R                  S5      nU R	                  U R                  U5      5        g ! [         a    [        S5      ef = f)Nr   r  r@  )r   decodeUnicodeDecodeErrorr   r  r!  rD  s     r%   load_persid_Unpickler.load_persid  sc    	F--/#2&--g6C 	D((-. " 	F!DF F	Fs   "A Ac                 x    U R                   R                  5       nU R                  U R                  U5      5        g r.   )r  r  r  r!  rD  s     r%   load_binpersid_Unpickler.load_binpersid  s)    jjnnD((-.r$   c                 &    U R                  S 5        g r.   r  r   s    r%   	load_none_Unpickler.load_none      Dr$   c                 &    U R                  S5        g )NFr2  r   s    r%   
load_false_Unpickler.load_false  s    Er$   c                 &    U R                  S5        g )NTr2  r   s    r%   	load_true_Unpickler.load_true  r5  r$   c                     U R                  5       nU[        SS  :X  a  SnOU[        SS  :X  a  SnO[        US5      nU R	                  U5        g )Nr   FTr   )r   rg  rf  r   r  )r2   r   vals      r%   load_int_Unpickler.load_int   sJ    }}59CT!"XCdA,CCr$   c                 ^    U R                  [        SU R                  S5      5      S   5        g )Nrm  r   r   r  r   r   r   s    r%   load_binint_Unpickler.load_binint+  "    F41.q12r$   c                 J    U R                  U R                  S5      S   5        g r  )r  r   r   s    r%   load_binint1_Unpickler.load_binint1/  s    DIIaLO$r$   c                 ^    U R                  [        SU R                  S5      5      S   5        g )Nrl  r  r   rA  r   s    r%   load_binint2_Unpickler.load_binint23  rD  r$   c                     U R                  5       S S nU(       a  US   S:X  a  US S nU R                  [        US5      5        g )Nr   L   r   )r   r  r   )r2   r=  s     r%   	load_long_Unpickler.load_long7  s?    mmocr"3r7g%cr(CCQK r$   c                     U R                  S5      S   nU R                  U5      nU R                  [        U5      5        g r  )r   r  r   r   s      r%   
load_long1_Unpickler.load_long1>  s1    IIaLOyy|K%&r$   c                     [        SU R                  S5      5      u  nUS:  a  [        S5      eU R                  U5      nU R                  [	        U5      5        g )Nrm  r   r   z#LONG pickle has negative byte count)r   r   r   r  r   r   s      r%   
load_long4_Unpickler.load_long4D  sI    D$))A,'q5!"GHHyy|K%&r$   c                 Z    U R                  [        U R                  5       S S 5      5        g Nr   )r  r  r   r   s    r%   
load_float_Unpickler.load_floatM  s     E$--/#2./0r$   c                 ^    U R                  [        SU R                  S5      5      S   5        g )Nry  r'  r   rA  r   s    r%   load_binfloat_Unpickler.load_binfloatQ  rD  r$   c                 r    U R                   S:X  a  U$ UR                  U R                   U R                  5      $ )Nr  )r
  r*  r  r1   s     r%   _decode_string_Unpickler._decode_stringU  s.     ==G#L<<t{{;;r$   c                    U R                  5       S S n[        U5      S:  a  US   US   :X  a  US   S;   a  USS nO[        S5      eU R                  U R	                  [
        R                  " U5      S   5      5        g )Nr   r  r   s   "'r   z)the STRING opcode argument must be quoted)r   r   r   r  r]  r  escape_decoder   s     r%   load_string_Unpickler.load_string^  sw    }}s#t9>d1gb1d1g6G":D!"MNND''(<(<T(B1(EFGr$   c                     [        SU R                  S5      5      u  nUS:  a  [        S5      eU R                  U5      nU R                  U R	                  U5      5        g )Nrm  r   r   z(BINSTRING pickle has negative byte count)r   r   r   r  r]  r2   r   r   s      r%   load_binstring_Unpickler.load_binstringh  sO    dDIIaL)7!"LMMyy~D''-.r$   c                     [        SU R                  S5      5      u  nU[        :  a  [        S[        -  5      eU R	                  U R                  U5      5        g )Nr  r   z2BINBYTES exceeds system's maximum size of %d bytesr   r   r
   r   r  r2   r   s     r%   load_binbytes_Unpickler.load_binbytesq  M    dDIIaL)=! #029#: ; ;DIIcN#r$   c                 \    U R                  [        U R                  5       S S S5      5        g )Nr   r  )r  r3  r   r   s    r%   load_unicode_Unpickler.load_unicodey  s#    C,.BCDr$   c                     [        SU R                  S5      5      u  nU[        :  a  [        S[        -  5      eU R	                  [        U R                  U5      SS5      5        g )Nr  r   z4BINUNICODE exceeds system's maximum size of %d bytesr  r  r   r   r
   r   r  r3  ri  s     r%   load_binunicode_Unpickler.load_binunicode}  V    dDIIaL)=! #029#: ; ;C		#ABr$   c                     [        SU R                  S5      5      u  nU[        :  a  [        S[        -  5      eU R	                  [        U R                  U5      SS5      5        g )Nr   r'  z5BINUNICODE8 exceeds system's maximum size of %d bytesr  r  rq  ri  s     r%   load_binunicode8_Unpickler.load_binunicode8  rt  r$   c                     [        SU R                  S5      5      u  nU[        :  a  [        S[        -  5      eU R	                  U R                  U5      5        g )Nr   r'  z3BINBYTES8 exceeds system's maximum size of %d bytesrh  ri  s     r%   load_binbytes8_Unpickler.load_binbytes8  rl  r$   c                     [        SU R                  S5      5      u  nU[        :  a  [        S[        -  5      e[	        U5      nU R                  U5        U R                  U5        g )Nr   r'  z4BYTEARRAY8 exceeds system's maximum size of %d bytes)r   r   r
   r   r  r   r  )r2   r   bs      r%   load_bytearray8_Unpickler.load_bytearray8  sY    dDIIaL)=! #029#: ; ;cNaAr$   c                     U R                   c  [        S5      e [        U R                   5      nU R	                  U5        g ! [         a    [        S5      ef = f)NzLpickle stream refers to out-of-band data but no *buffers* argument was givenznot enough out-of-band buffers)r  r   nextStopIterationr  )r2   r   s     r%   load_next_buffer_Unpickler.load_next_buffer  sb    == ! #H I I	Dt}}%C 	C  	D!"BCC	Ds   A Ac                     U R                   S   n[        U5       nUR                  (       d  UR                  5       U R                   S'   S S S 5        g ! , (       d  f       g = frV  )r  
memoryviewr  
toreadonly)r2   r   r  s      r%   load_readonly_buffer_Unpickler.load_readonly_buffer  s<    jjn_::!"

2 __s   /A
A!c                     U R                  S5      S   nU R                  U5      nU R                  U R                  U5      5        g r  )r   r  r]  rd  s      r%   load_short_binstring_Unpickler.load_short_binstring  s7    iil1oyy~D''-.r$   c                 l    U R                  S5      S   nU R                  U R                  U5      5        g r  )r   r  ri  s     r%   load_short_binbytes_Unpickler.load_short_binbytes  s'    iil1oDIIcN#r$   c                     U R                  S5      S   nU R                  [        U R                  U5      SS5      5        g )Nr   r   r  r  )r   r  r3  ri  s     r%   load_short_binunicode _Unpickler.load_short_binunicode  s0    iil1oC		#ABr$   c                 X    U R                  5       nU R                  [        U5      5        g r.   )r  r  r4  r  s     r%   
load_tuple_Unpickler.load_tuple  s    E%L!r$   c                 &    U R                  S5        g )Nr   r2  r   s    r%   load_empty_tuple_Unpickler.load_empty_tuple      Br$   c                 >    U R                   S   4U R                   S'   g rV  r  r   s    r%   load_tuple1_Unpickler.load_tuple1  s    **R.*

2r$   c                 \    U R                   S   U R                   S   4/U R                   SS & g )Nr   r   r  r   s    r%   load_tuple2_Unpickler.load_tuple2  s)     JJrNDJJrN;<

23r$   c                 x    U R                   S   U R                   S   U R                   S   4/U R                   SS & g )Nr   r   r  r   s    r%   load_tuple3_Unpickler.load_tuple3  s3     JJrNDJJrNDJJrNKL

23r$   c                 &    U R                  / 5        g r.   r2  r   s    r%   load_empty_list_Unpickler.load_empty_list  r  r$   c                 &    U R                  0 5        g r.   r2  r   s    r%   load_empty_dictionary _Unpickler.load_empty_dictionary  r  r$   c                 6    U R                  [        5       5        g r.   )r  r  r   s    r%   load_empty_set_Unpickler.load_empty_set  s    CEr$   c                 X    U R                  5       nU R                  [        U5      5        g r.   )r  r  r  r  s     r%   load_frozenset_Unpickler.load_frozenset  s    Ie$%r$   c                 F    U R                  5       nU R                  U5        g r.   )r  r  r  s     r%   	load_list_Unpickler.load_list  s    Er$   c                     U R                  5       n[        S[        U5      S5       Vs0 s H  nX   XS-      _M     nnU R                  U5        g s  snf )Nr   r  r   )r  ranger   r  )r2   r   r!  ds       r%   	load_dict_Unpickler.load_dict  sW    As5z1-/- XuqSz!- 	
 /A/s   Ac           	      6   U(       d&  [        U[        5      (       a  [        US5      (       a   U" U6 nOUR                  U5      nU R                  U5        g ! [         a6  n[        SUR                  < S[        U5      < 3UR                  5      eS nAff = f)N__getinitargs__zin constructor for z: )	r2  r.  r  r   r   r3  __traceback__rJ  r  )r2   klassrV  r0   errs        r%   _instantiate_Unpickler._instantiate  s    
5$//E,--Ot
 MM%(EE  O!&S!;<?<M<MO OOs   A 
B"1BBc                     U R                  5       S S R                  S5      nU R                  5       S S R                  S5      nU R                  X5      nU R                  X0R	                  5       5        g )Nr   r  )r   r*  
find_classr  r  r2   r   r   r  s       r%   	load_inst_Unpickler.load_inst  s^    "%,,W5}}s#**73-%1r$   c                 h    U R                  5       nUR                  S5      nU R                  X!5        g Nr   )r  r  r  )r2   rV  r\  s      r%   load_obj_Unpickler.load_obj  s(    }}hhqk#$r$   c                     U R                   R                  5       nU R                   R                  5       nUR                  " U/UQ76 nU R                  U5        g r.   r  r  rJ  r  )r2   rV  r\  r   s       r%   load_newobj_Unpickler.load_newobj  sA    zz~~jjnnkk#%%Cr$   c                     U R                   R                  5       nU R                   R                  5       nU R                   R                  5       nUR                  " U/UQ70 UD6nU R                  U5        g r.   r  )r2   r]  rV  r\  r   s        r%   load_newobj_ex_Unpickler.load_newobj_ex  sV    !zz~~jjnnkk#///Cr$   c                     U R                  5       S S R                  S5      nU R                  5       S S R                  S5      nU R                  X5      nU R                  U5        g )Nr   r  )r   r*  r  r  r  s       r%   load_global_Unpickler.load_global!  sV    "%,,W5}}s#**73-Er$   c                 
   U R                   R                  5       nU R                   R                  5       n[        U5      [        Ld  [        U5      [        La  [	        S5      eU R                  U R                  X!5      5        g )NzSTACK_GLOBAL requires str)r  r  r.  r3  r   r  r  )r2   r   r   s      r%   load_stack_global_Unpickler.load_stack_global(  sZ    zz~~!:S DL$;!"=>>DOOF12r$   c                 N    U R                  S5      S   nU R                  U5        g r  )r   get_extensionr2   r  s     r%   	load_ext1_Unpickler.load_ext10  s!    yy|A4 r$   c                 `    [        SU R                  S5      5      u  nU R                  U5        g )Nrl  r  r   r   r  r  s     r%   	load_ext2_Unpickler.load_ext25  &    tTYYq\*4 r$   c                 `    [        SU R                  S5      5      u  nU R                  U5        g )Nrm  r   r  r  s     r%   	load_ext4_Unpickler.load_ext4:  r  r$   c                 :   [         R                  " U[        5      nU[        La  U R                  U5        g [        R                  " U5      nU(       d  US::  a  [        S5      e[        SU-  5      eU R                  " U6 nU[         U'   U R                  U5        g )Nr   zEXT specifies code <= 0zunregistered extension code %d)r   r"  r-  r  r   r   r   r  )r2   r  r   r  s       r%   r  _Unpickler.get_extension?  s    ""42hKK $$T*qy%&?@@=DEEoos#!$Cr$   c                    [         R                  " SX5        U R                  S:  ad  U R                  (       aS  X4[        R
                  ;   a  [        R
                  X4   u  pO'U[        R                  ;   a  [        R                  U   n[        USS9  U R                  S:  a   [        [         R                  U   U5      S   $ [        [         R                  U   U5      $ )Nzpickle.find_classr   r   r  r   )r   auditr   r   r  NAME_MAPPINGIMPORT_MAPPINGr  r   r   r   )r2   r   r   s      r%   r  _Unpickler.find_classN  s    		%v4::>d..~!<!<<-::F>J>888'66v>6#::? V!4d;A>>3;;v.55r$   c                 V    U R                   nUR                  5       nUS   nU" U6 US'   g rV  r  r  )r2   r  rV  rU  s       r%   load_reduce_Unpickler.load_reduce\  s,    

yy{Ry$Kb	r$   c                 b    U R                   (       a  U R                   S	 g U R                  5         g rV  )r  r  r   s    r%   load_pop_Unpickler.load_popc  s    ::

2MMOr$   c                 $    U R                  5         g r.   )r  r   s    r%   load_pop_mark_Unpickler.load_pop_markj  s    r$   c                 @    U R                  U R                  S   5        g rV  )r  r  r   s    r%   load_dup_Unpickler.load_dupn  s    DJJrN#r$   c                     [        U R                  5       S S 5      n U R                  U R                  U   5        g ! [         a    SU 3n[        U5      S ef = f)Nr   Memo value not found at index )r   r   r  r   r  r   )r2   r!  msgs      r%   load_get_Unpickler.load_getr  sZ    $%	1KK		!% 	121#6C!#&D0	1s	   = Ac                     U R                  S5      S   n U R                  U R                  U   5        g ! [         a  nSU 3n[	        U5      S eS nAff = f)Nr   r   r  )r   r  r   r  r   r2   r!  excr  s       r%   load_binget_Unpickler.load_binget{  sU    IIaLO	1KK		!% 	121#6C!#&D0	1s   5 
AAAc                     [        SU R                  S5      5      u  n U R                  U R                  U   5        g ! [         a  nSU 3n[        U5      S eS nAff = f)Nr  r   r  )r   r   r  r   r  r   r  s       r%   load_long_binget_Unpickler.load_long_binget  sZ    D$))A,'	1KK		!% 	121#6C!#&D0	1s   > 
AAAc                     [        U R                  5       S S 5      nUS:  a  [        S5      eU R                  S   U R                  U'   g )Nr   r   znegative PUT argument)r   r   r   r  r   r   s     r%   load_put_Unpickler.load_put  sA    $%q5455zz"~		!r$   c                     U R                  S5      S   nUS:  a  [        S5      eU R                  S   U R                  U'   g )Nr   r   znegative BINPUT argumentr   )r   r   r  r   r   s     r%   load_binput_Unpickler.load_binput  s;    IIaLOq5788zz"~		!r$   c                     [        SU R                  S5      5      u  nU[        :  a  [        S5      eU R                  S   U R
                  U'   g )Nr  r   znegative LONG_BINPUT argumentr   )r   r   r
   r   r  r   r   s     r%   load_long_binput_Unpickler.load_long_binput  s@    D$))A,'w;<==zz"~		!r$   c                 R    U R                   nU R                  S   U[        U5      '   g rV  )r   r  r   )r2   r   s     r%   load_memoize_Unpickler.load_memoize  s     yy**R.SYr$   c                 h    U R                   nUR                  5       nUS   nUR                  U5        g rV  )r  r  r  )r2   r  r0   r  s       r%   load_append_Unpickler.load_append  s+    

		RyEr$   c                     U R                  5       nU R                  S   n UR                  nU" U5        g ! [         a     Of = fUR                  nU H  nU" U5        M     g rV  )r  r  extendr   r  )r2   r   list_objr  r  r  s         r%   load_appends_Unpickler.load_appends  sd    ::b>	__F 5M	  		 D4L s   6 
AAc                 n    U R                   nUR                  5       nUR                  5       nUS   nX$U'   g rV  r  )r2   r  r0   r  r  s        r%   load_setitem_Unpickler.load_setitem  s1    

		iikRyS	r$   c                     U R                  5       nU R                  S   n[        S[        U5      S5       H  nXS-      X!U   '   M     g )Nr   r   r  r   )r  r  r  r   )r2   r   r  r!  s       r%   load_setitems_Unpickler.load_setitems  sB    zz"~q#e*a(A"q5\DqN )r$   c                     U R                  5       nU R                  S   n[        U[        5      (       a  UR	                  U5        g UR
                  nU H  nU" U5        M     g rV  )r  r  r2  r  updateadd)r2   r   set_objr  r  s        r%   load_additems_Unpickler.load_additems  sM    **R.gs##NN5!++CD	 r$   c                    U R                   nUR                  5       nUS   n[        US[        5      nU[        La	  U" U5        g S n[	        U[
        5      (       a  [        U5      S:X  a  Uu  p%U(       aW  UR                  n[        R                  nUR                  5        H'  u  p[        U5      [        L a  XU" U5      '   M#  XU'   M)     U(       a&  UR                  5        H  u  p[        X8U	5        M     g g )Nr   __setstate__r  )r  r  r   r-  r2  r4  r   __dict__r   internr   r.  r3  setattr)
r2   r  rW  instsetstate	slotstate	inst_dictr&  r  r  s
             r%   
load_build_Unpickler.load_build  s    

		Ry4:8#UO	eU##E
a$EIZZF7c>+,fQi(#$aL	 &
 !)# * r$   c                     U R                   R                  U R                  5        / U l        U R                  R                  U l        g r.   )r  r  r  r   s    r%   	load_mark_Unpickler.load_mark  s0    djj)
jj''r$   c                 L    U R                   R                  5       n[        U5      er.   )r  r  r+   r1   s     r%   	load_stop_Unpickler.load_stop  s    

 Elr$   )r  r  r  r  r  r
  r  r   r   r  r   r   r   r   r  )r   r   r    r!   r3   r   r  r!  r/  r$  r  r   r   r,  rB  r/  rA  r3  r`  r7  re  r:  rd  r>  rs  rB  rp  rF  rn  rI  ro  rM  rt  rP  rq  rS  rr  rW  r{  rZ  rz  r]  ra  STRINGre  	BINSTRINGrj  r  rn  r  rr  r  rv  r  ry  r  r}  r  r  r  r  r  r  SHORT_BINSTRINGr  r  r  r  r  r  r  r  r  TUPLE1r  rT  r  TUPLE3r  r  r  r  r  r  r  r  r  r  r  r  r  r  INSTr  OBJr  rO  r  rM  r  r  r  r  r  r  r  r  r  r  r  r  r  rN  r  rP  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!  r  r,  rS  r/  r  r2  r  r#   r   r$   r%   r  r    s   ,0!(D.'`">G H
 $HU1X.
 $HU1X/ &HVAY/ ,HYq\!HT!W&HXa[$HWQZ  HSV3%HVAY%'HWQZ3'HWQZ!
 "HT!W' $HU1X' $HU1X1#HU1X3)HXa[<H &HVAY/ ,HYq\$ *HXa[E'HWQZC .HZ]C  0H[^$ ,HYq\ .HZ]  0H[^0
 $8H_Q / $8H_Q $ #6H^AC %:Ha !" $HU1X/H[^+%HVAY=%HVAYM%HVAY-HZ]3HZ]+HYq\& ,HYq\ "HT!W
 "HT!W
2
 "HT!W%
  HSV
 &HVAY ,HYq\
 &HVAY3 !2H\!_! "HT!W! "HT!W! "HT!W6 
 &HVAY
  HSV)HXa[$HSV1  HSV1 &HVAY1  0H[^&
  HSV&
 &HVAY&
  0H[^) (HWQZ
 &HVAY  (HWQZ (HWQZ*
 *HXa[ *HXa[$, $HU1X( "HT!W "HT!Wr$   r  r   c                8    [        XUUS9R                  U 5        g Nr   )r   r   )r   r   r   r   r   s        r%   _dumpr>     s    T,..2d3ir$   c                    [         R                  " 5       n[        XAUUS9R                  U 5        UR	                  5       n[        U[        5      (       d   eU$ r=  )r   r   r   r   getvaluer2  r  )r   r   r   r   r   ress         r%   _dumpsrB    sH    


AQk,..2d3i
**,Cc;''''Jr$   r  r  r	  c                4    [        XUX#S9R                  5       $ )Nr   r  r
  r  )r  r   )r   r   r
  r  r  s        r%   _loadrE    s    dW&77;tv>r$   c                   [        U [        5      (       a  [        S5      e[        R                  " U 5      n[        XQUX#S9R                  5       $ )Nz%Can't load pickle from unicode stringrD  )r2  r3  r   r   r   r  r   )sr   r
  r  r  r   s         r%   _loadsrH    sC    !S?@@::a=DdW'88<?r$   c                  *    SS K n U R                  5       $ r  )doctesttestmod)rJ  s    r%   _testrL  +  s    ??r$   r   z$display contents of the pickle files)descriptionpickle_file*zthe pickle file)nargshelpz-tz--test
store_truezrun self-test suite)actionrQ  z-vz)run verbosely; only affects self-test run-rbr.   )r"   typesr   copyregr   r   r   r   	itertoolsr   	functoolsr	   r   r
   structr   r   rer   r  r  __all___pickler   r  r  r  r  r  r  format_versioncompatible_formatsr   r   	Exceptionr   r   r   r+   r  r  rP  r  r;  r{  rs  rp  rn  rt  ro  r`  rB  rA  rN  r4  r5  r6  r  r  r  rS  r  r  r  r  r  r  r9  r  r  r  r:  r  r  r  r  r  r  r  rz  rf  rg  r  rO  r  r  r  r7  rT  r8  rd  re  rq  rr  r  r  r  r  r  r  r  r  r  rM  r  r  r   r  r  r  r  dirmatchrz   r   r   r   r   r   objectr-  r   r  r>  rB  rE  rH  r   r   r   r   r   r   rL  r   argparseArgumentParserparseradd_argument
parse_argsrV  testrN  
print_helppprintfnstdinbufferr   openr   )r   s   0r%   <module>rp     sZ  2  " M M   
   	 	  : $NN>" i     
  	) 		K 			k 		I  		


 7   				 
 35D5aBHH-?$C5D E< <~6D 6Dv&<A* 8C CP_	" _	"H84 8dD   $gh>
 !%wx?<
 
 
  z$$:<F
)  + h|"  $ \8  : Dyyy&&9syy//0Cb$1"1g (c" '+ C8    b EN3  <!:GY$feV;D%u<D (s<   K< L$LL 	L-<LLL*)L*-
L;	