+
    iHu  c            	       s   R t . R0Ot^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RI	t	^ RI
t
^ RIt^ RIHt ]P                  ! RR]R7      t]! 4       P%                  ]P&                  4       R1t ! R	 R4      tR
t]
P.                  ! R4      tR2R ltR t]
P.                  ! R]
P6                  4      tR tR tR t ! R R4      t  ! R R4      t! ! R R]!4      t"R t# ! R R]$4      t%^R^R^R^R/t&]'! 4       t( ! R R4      t)R  t*]+],]-]P                  ].3t/ ! R! R"]'4      t0R# t1]2]3! ]#] ]"R$7      ]4]3! ]1])]0R$7      /t5R%RR&]3R'R(/R) lt6R%RR&]3R'R(/R* lt7R%]2R+R,R-R(R'R(/R. lt8R%]2R-R(R+R,R'R(/R/ lt9R# )3a>  plistlib.py -- a tool to generate and parse MacOSX .plist files.

The property list (.plist) file format is a simple XML pickle supporting
basic object types, like dictionaries, lists, numbers and strings.
Usually the top level object is a dictionary.

To write out a plist file, use the dump(value, file)
function. 'value' is the top level object, 'file' is
a (writable) file object.

To parse a plist from a file, use the load(file) function,
with a (readable) file object as the only argument. It
returns the top level object (again, usually a dictionary).

To work with plist data in bytes objects, you can use loads()
and dumps().

Values can be strings, integers, floats, booleans, tuples, lists,
dictionaries (but only with string keys), Data, bytes, bytearray, or
datetime.datetime objects.

Generate Plist example:

    import datetime
    import plistlib

    pl = dict(
        aString = "Doodah",
        aList = ["A", "B", 12, 32.1, [1, 2, 3]],
        aFloat = 0.1,
        anInt = 728,
        aDict = dict(
            anotherString = "<hello & hi there!>",
            aThirdString = "M\xe4ssig, Ma\xdf",
            aTrueValue = True,
            aFalseValue = False,
        ),
        someData = b"<binary gunk>",
        someMoreData = b"<lots of binary gunk>" * 10,
        aDate = datetime.datetime.now()
    )
    print(plistlib.dumps(pl).decode())

Parse Plist example:

    import plistlib

    plist = b'''<plist version="1.0">
    <dict>
        <key>foo</key>
        <string>bar</string>
    </dict>
    </plist>'''
    pl = plistlib.loads(plist)
    print(pl["foo"])
InvalidFileExceptionUIDN)BytesIO)ParserCreatePlistFormatzFMT_XML FMT_BINARY)Zmodulec                   sD   a  ] tR t^Pt o R tR tR tR tR tR t	Rt
V tR# )	r   c                s    \        V\        4      '       g   \        R 4      hVR8  d   \        R4      hV^ 8  d   \        R4      hWn        R# )zdata must be an intzUIDs cannot be >= 2**64UIDs must be positiveN            )
isinstanceint	TypeError
ValueErrordataselfr      &&!/usr/lib64/python3.14/plistlib.py__init__ZUID.__init__Q   sF    $$$1227?677!8455	    c                s    V P                   # Nr   r      &r   	__index__ZUID.__index__Z   s    yyr   c                sd    V P                   P                  : R \        V P                  4      : R2# )Z(Z))	__class____name__reprr   r   r   r   __repr__ZUID.__repr__]   s    >>22DODDr   c                s4    V P                   V P                  33# r   )r   r   r   r   r   
__reduce__ZUID.__reduce__`   s    ~~		|++r   c                sl    \        V\        4      '       g   \        # V P                  VP                  8H  # r   )r   r   ZNotImplementedr   )r   Zotherr   r   __eq__Z
UID.__eq__c   s(    %%%!!yyEJJ&&r   c                s,    \        V P                  4      # r   )Zhashr   r   r   r   __hash__ZUID.__hash__h   s    DIIr   r   N)r   
__module____qualname____firstlineno__r   r   r   r   r   r   __static_attributes____classdictcell__Z__classdict__   @r   r   r   P   s)     E,'
 r   s   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
zv[\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]c                 s    V^,          ^,          p. p\        ^ \        V 4      V4       F2  pWWB,            pVP                  \        P                  ! V4      4       K4  	  RP                  V4      # )i   r   )rangelenappendbinasciiZ
b2a_base64join)smaxlinelengthZ
maxbinsizeZpiecesiZchunks   &&    r   _encode_base64r-   |   sa    "A%JF1c!fj)an%h))%01 * 88Fr   c                 s    \        V \        4      '       d&   \        P                  ! V P	                  R 4      4      # \        P                  ! V 4      # )utf-8)r   strr(   Z
a2b_base64encode)r*   r   r   _decode_base64r1      s<    !S""188G#455 ""1%%r   z{(?P<year>\d\d\d\d)(?:-(?P<month>\d\d)(?:-(?P<day>\d\d)(?:T(?P<hour>\d\d)(?::(?P<minute>\d\d)(?::(?P<second>\d\d))?)?)?)?)?Zc                 s2   Rp\         P                  V 4      P                  4       p. pV F+  pW5,          pVf    MVP                  \	        V4      4       K-  	  V'       d%   \
        P
                  ! VR\
        P                  / # \
        P
                  ! V!  # )yeartzinfo)r2   monthdayhourminutesecond)_dateParserZmatchZ	groupdictr'   r   datetimeUTC)r*   aware_datetimeZorderZgdZlstkeyZval   &&     r   _date_from_stringr?      s~    @E			1		'	'	)B
Cg;

3s8	 
   #;hll;;c""r   c                 s    V'       d    V P                  \        P                  4      p R V P                  V P                  V P
                  V P                  V P                  V P                  3,          # )z%04d-%02d-%02dT%02d:%02d:%02dZ)	
astimezoner:   r;   r2   r4   r5   r6   r7   r8   )dr<   r   r   _date_to_stringrB      sO    LL&+		!((/  r   c                 s   \         P                  V 4      pVe   \        R4      hV P                  RR4      p V P                  RR4      p V P                  RR4      p V P                  RR4      p V P                  R	R
4      p V # )Nz;strings can't contain control characters; use bytes insteadz
Z
ZZ&z&amp;<z&lt;>z&gt;)_controlCharPatZsearchr
   Zreplace)Ztextm   & r   _escaperH      s~    t$A} - . 	.<<%D<<d#D<<W%D<<V$D<<V$DKr   c                   s   a  ] tR t^t o RR ltR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tRtV tR# )_PlistParserc                sH    . V n         R V n        R V n        Wn        W n        R # r   )stackcurrent_keyroot
_dict_type_aware_datetimer   	dict_typer<      &&&r   r   Z_PlistParser.__init__   s#    
	#-r   c                sF   \        4       V n        V P                  V P                  n        V P                  V P                  n        V P                  V P                  n        V P                  V P                  n	        V P                  P                  V4       V P                  # r   )r   parserhandle_begin_elementZStartElementHandlerhandle_end_elementZEndElementHandlerhandle_dataZCharacterDataHandlerhandle_entity_declZEntityDeclHandlerZ	ParseFilerL   )r   Zfileobjr   r   parseZ_PlistParser.parse   so    "n*.*C*C'(,(?(?%+/+;+;((,(?(?%g&yyr   c                s    \        R 4      h)z8XML entity declarations are not supported in plist files)r    )r   Zentity_nameZis_parameter_entityvalueZbaseZ	system_idZ	public_idZnotation_name   &&&&&&&&r   rV   Z_PlistParser.handle_entity_decl   s     ##]^^r   c                sX    . V n         \        V R V,           R4      pVe   V! V4       R# R# )Zbegin_N)r   getattr)r   elementattrshandlers   &&& r   rS   Z!_PlistParser.handle_begin_element   s.    	$7 2D9EN r   c                sH    \        V R V,           R4      pVe
   V! 4        R# R# )Zend_N)rZ   )r   r[   r]      && r   rT   Z_PlistParser.handle_end_element   s%    $ 0$7I r   c                s<    V P                   P                  V4       R # r   )r   r'   r   r   r   rU   Z_PlistParser.handle_data   s    		r   c                s   V P                   ev   \        V P                  R,          \        4      '       g'   \	        RV P
                  P                  ,          4      hWP                  R,          V P                   &   R V n         R # V P                  '       g	   Wn        R # \        V P                  R,          \        4      '       g'   \	        RV P
                  P                  ,          4      hV P                  R,          P                  V4       R # )Nzunexpected element at line %d)
rK   r   rJ   dictr
   rR   CurrentLineNumberrL   listr'   r   rX   r   r   
add_objectZ_PlistParser.add_object   s    'djjnd33 !@!%!>!>"? @ @/4JJrN4++,#DIdjjnd33 !@!%!>!>"? @ @JJrN!!%(r   c                sJ    R P                  V P                  4      p. V n        V# )Z )r)   r   r   rG   r   get_dataZ_PlistParser.get_data   s     wwtyy!	r   c                s~    V P                  4       pV P                  V4       V P                  P                  V4       R # r   )rM   rd   rJ   r'   )r   r\   rA   r^   r   
begin_dictZ_PlistParser.begin_dict   s,    OO

!r   c                s    V P                   '       d3   \        R V P                   V P                  P                  3,          4      hV P                  P                  4        R# )z%missing value for key '%s' at line %dN)rK   r
   rR   ra   rJ   popr   r   r   end_dictZ_PlistParser.end_dict   sL    D"..t{{/L/LMN O O

r   c                s    V P                   '       g(   \        V P                  R,          \        4      '       g'   \	        RV P
                  P                  ,          4      hV P                  4       V n         R# )   zunexpected key at line %dNr_   )rK   r   rJ   r`   r
   rR   ra   re   r   r   r   end_keyZ_PlistParser.end_key   sR    :djjnd#C#C8![[::; < <==?r   c                sb    . pV P                  V4       V P                  P                  V4       R # r   )rd   rJ   r'   )r   r\   Zar^   r   begin_arrayZ_PlistParser.begin_array  s%    

!r   c                s:    V P                   P                  4        R # r   )rJ   rg   r   r   r   	end_arrayZ_PlistParser.end_array  s    

r   c                (    V P                  R 4       R# )TNrd   r   r   r   end_trueZ_PlistParser.end_true	  s    r   c                rm   )FNrn   r   r   r   	end_falseZ_PlistParser.end_false  s    r   c                s    V P                  4       pVP                  R 4      '       g   VP                  R4      '       d   V P                  \        V^4      4       R# V P                  \        V4      4       R# )Z0xZ0XN)re   
startswithrd   r   )r   ZrawrG   r   end_integerZ_PlistParser.end_integer  sL    mmo>>$3>>$#7#7OOCRL)OOCH%r   c                V    V P                  \        V P                  4       4      4       R # r   )rd   floatre   r   r   r   end_realZ_PlistParser.end_real  s    dmmo./r   c                sD    V P                  V P                  4       4       R # r   )rd   re   r   r   r   
end_stringZ_PlistParser.end_string  s    (r   c                rs   r   )rd   r1   re   r   r   r   end_dataZ_PlistParser.end_data  s    t}}78r   c                sn    V P                  \        V P                  4       V P                  R 7      4       R# ))r<   N)rd   r?   re   rN   r   r   r   end_dateZ_PlistParser.end_date  s)    )$--/9=9M9MO 	Pr   )rN   rM   rK   r   rR   rL   rJ   NF)r   r   r   r    r   rW   rV   rS   rT   rU   rd   re   rf   rh   rj   rk   rl   ro   rp   rr   ru   rv   rw   rx   r!   r"   r#   r$   r   rI   rI      sq     ._
) 
+
&0)9P Pr   rI   c                   sF   a  ] tR tRt o R	R ltR tR tR
R ltR tRt	V t
R# )_DumbXMLWriteri$  c                s8    Wn         . V n        W n        W0n        R # r   )filerJ   _indent_levelindent)r   r{   indent_levelr}   s   &&&&r   r   Z_DumbXMLWriter.__init__%  s    	
)r   c                s    V P                   P                  V4       V P                  R V,          4       V ;P                  ^,          un        R# )z<%s>N)rJ   r'   writelnr|   r   r[   r   r   begin_elementZ_DumbXMLWriter.begin_element+  s6    

'"Vg%&ar   c                sh    V ;P                   ^,          un         V P                  RV,          4       R# )ri   z</%s>N)r|   r   r   r   r   end_elementZ_DumbXMLWriter.end_element0  s&     	aWw&'r   Nc           	     s    Ve,   \        V4      pV P                  RV: RV: RV: R24       R # V P                  RV,          4       R # )NrC   rD   z</z<%s/>)rH   r   )r   r[   rX   rQ   r   simple_elementZ_DumbXMLWriter.simple_element6  s7    ENELL'5'BC LL7*+r   c                s<   V'       dy   \        V\        4      '       d   VP                  R 4      pV P                  P	                  V P
                  V P                  ,          4       V P                  P	                  V4       V P                  P	                  R4       R# )r.      
N)r   r/   r0   r{   writer|   r}   )r   liner   r   r   Z_DumbXMLWriter.writeln>  sa     $$${{7+IIOOD..<=IIOOD!		r   )r|   r{   r}   rJ   )    Z	r   )r   r   r   r    r   r   r   r   r   r!   r"   r#   r$   r   rz   rz   $  s#      
(,	 	r   rz   c                   H   a  ] tR tRt o R
R ltR tR tR tR tR t	Rt
V tR	# )_PlistWriteriJ  c                s    V'       d   VP                  \        4       \        P                  WW#4       WPn        W`n        Wpn        R # r   )r   PLISTHEADERrz   r   
_sort_keys	_skipkeysrN   )r   r{   r~   r}   ZwriteHeader	sort_keysskipkeysr<   rY   r   r   Z_PlistWriter.__init__K  s3     JJ{#LA#!-r   c                sl    V P                  R 4       V P                  V4       V P                  R4       R# )z<plist version="1.0">z</plist>N)r   write_valuerc   r   r   r   Z_PlistWriter.writeV  s)    ./Z r   c                s   \        V\        4      '       d   V P                  R V4       R
# VRJ d   V P                  R4       R
# VRJ d   V P                  R4       R
# \        V\        4      '       d9   RTu;8:  d   R8  d   M MV P                  RRV,          4       R
# \	        V4      h\        V\
        4      '       d   V P                  R\        V4      4       R
# \        V\        4      '       d   V P                  V4       R
# \        V\        \        34      '       d   V P                  V4       R
# \        V\        P                  4      '       d(   V P                  R\        WP                  4      4       R
# \        V\        \         34      '       d   V P#                  V4       R
# \%        R	\'        V4      ,          4      h)ZstringTZtrueFZfalseZintegerz%dZrealZdatezunsupported type: %sNl         r   )r   r/   r   r   OverflowErrorrt   r   r`   
write_dictbytes	bytearraywrite_bytesr:   rB   rN   tuplerb   write_arrayr	   typerc   r   r   r   Z_PlistWriter.write_value[  sF   eS!!%0d]'e^(s##5*7*##Ite|<#E**u%%U4t$$OOE"y122U#x0011 /7K7K LN t}--U# 2T%[@AAr   c                s   V P                  R 4       V ;P                  ^,          un        \        ^^L\        V P                  V P                  ,          P                  4       4      ,
          4      p\        W4      P                  R4       F  pV'       g   K  V P                  V4       K   	  V ;P                  ^,          un        V P                  R 4       R# )r   r   N)
r   r|   Zmaxr&   r}   Z
expandtabsr-   Zsplitr   r   )r   r   r+   r   s   &&  r   r   Z_PlistWriter.write_bytes~  s    6"adkkD$6$66BBDEEG #47==eDDtT" E 	a r   c                s   V'       d   V P                  R 4       V P                  '       d   \        VP                  4       4      pMVP                  4       pV F]  w  r4\	        V\
        4      '       g    V P                  '       d   K/  \        R4      hV P                  RV4       V P                  V4       K_  	  V P                  R 4       R# V P                  R 4       R# )r`   keys must be stringsr=   N)r   r   sorteditemsr   r/   r   r	   r   r   r   )r   rA   r   r=   rX      &&   r   r   Z_PlistWriter.write_dict  s    v&qwwy)	#
!#s++~~~ #$:;;##E3/  ' $ V$ 'r   c                s    V'       d?   V P                  R 4       V F  pV P                  V4       K  	  V P                  R 4       R# V P                  R 4       R# )arrayN)r   r   r   r   )r   r   rX   r^   r   r   Z_PlistWriter.write_array  sI    w'  ' W% (r   )rN   r   r   N)r      	ri   TFF)r   r   r   r    r   r   r   r   r   r   r!   r"   r#   r$   r   r   r   J  s*     	.!
!BF!(() )r   r   c                 s   RpV F  pV P                  V4      '       g   K   R# 	  \        P                  R3\        P                  R3\        P                  R33 Fd  w  r4V P                  V4      '       g   K  V F@  pW5P                  R4      P                  V4      ,           pV R\        V4       V8X  g   K>    R# 	  Kf  	  R# )	   <?xmlTr.   z	utf-16-bez	utf-16-leasciiNF)r   s   <plist)rq   codecsZBOM_UTF8ZBOM_UTF16_BEZBOM_UTF16_LEdecoder0   r&   )headerZprefixesZpfxZbomZencodingZstartZprefixs   &      r   _is_fmt_xmlr     s    $HS!!  '*$$k2$$k2   %%E<<077AAFls6{#v-   r   c                   s*   a  ] tR tRt o RR ltRtV tR# )r    i  c                s0    \         P                  W4       R # r   )r
   r   )r   Zmessager   r   r   ZInvalidFileException.__init__  s    D*r    N)zInvalid file)r   r   r   r    r   r!   r"   r#   r$   r   r    r      s     + +r   ZBZHZLZQc                   sR   a  ] tR tRt o RtRR ltR tR tR tR t	R t
R	 tR
tV tR# )_BinaryPlistParseri  z
Read or write a binary plist file, following the description of the binary
format.  Raise InvalidFileException in case of error, otherwise return the
root object.

see also: http://opensource.apple.com/source/CF/CF-744.18/CFBinaryPList.c
c                s    Wn         W n        R # r   )rM   _aware_datimerO   rQ   r   r   Z_BinaryPlistParser.__init__  s    #+r   c                s(    Wn         V P                   P                  R\        P                  4       V P                   P	                  ^ 4      p\        V4      ^ 8w  d   \        4       h\        P                  ! RV4      w  q0n	        rEpV P                   P                  V4       V P                  WC4      V n        \        .V,          V n        V P                  V4      #   \        \         \        P"                  \$        \&        3 d    \        4       hi ; i)i    z>6xBBQQQi)_fpseekosZSEEK_ENDreadr&   r    structunpack	_ref_size
_read_ints_object_offsets
_undefined_objects_read_objectZOSErrorZ
IndexErrorerrorr   r
   )r   fptraileroffset_sizenum_objects
top_objectoffset_table_offsetr>   r   rW   Z_BinaryPlistParser.parse  s    	) HHHMM#r{{+hhmmB'G7|r!*,, j'2^[#HHMM-.#'??;#LD 'L;6DM$$Z00V\\= 	)&((	)s   CC 5Dc                s   V^8X  d}   V P                   P                  ^4      ^ ,          ^,          p^V,          pR\        V,          ,           p\        P                  ! W@P                   P                  V4      4      ^ ,          # V# )z#return the size of the next object.rD   )r   r   _BINARY_FORMATr   r   )r   tokenLrF   r*   fr   r   	_get_sizeZ_BinaryPlistParser._get_size  sc    S=a #c)AQAnQ''A==HHMM!$45a88r   c                s   \        V\        4      pV P                  P                  V4      p \	        V4      V8w  d   \
        hW!8X  d   V# \        W!V,
          4      pW0P                  P                  V4      ,          pW$,          pK\  )T)Zmin_MIN_READ_BUF_SIZEr   r   r&   r    )r   sizeZcursizer   Zdeltar   r   _readZ_BinaryPlistParser._read  sk    d./xx}}W%4yG#**0EHHMM%((DGr   c                sn  aa V P                  SV,          4      oS\        9   d(   \        P                  ! R V \        S,           2S4      # S'       g   \	        4       h\
        ;QJ d*    . VV3R l\        ^ SV,          S4       4       F  NK  	  5# ! VV3R l\        ^ SV,          S4       4       4      # )rD   c              3   sb   <"   T F$  p\         P                  SWS,            R 4      x  K&  	  R# 5i)bigN)r   
from_bytes)Z.0r,   r   r   s   & r   Z	<genexpr>Z0_BinaryPlistParser._read_ints.<locals>.<genexpr>  s/      <":Q QD(95AA":s   ,/)r   r   r   r   r    r   r%   )r   nr   r   s   &&f@r   r   Z_BinaryPlistParser._read_ints  s    zz$(#>!==1QCt(<'=!>EE*,,5 <"'4!8T":<5 <5 <"'4!8T":< < <r   c                s8    V P                  WP                  4      # r   )r   r   )r   r   r   r   
_read_refsZ_BinaryPlistParser._read_refs  s    q..11r   c                sr   V P                   V,          pV\        Jd   V# V P                  V,          pV P                  P	                  V4       V P                  P                  ^4      ^ ,          pV^,          V^,          reV^ 8X  d   RpEMV^8X  d   RpEMyV^	8X  d   RpEMnV^8X  d   RpEMcV^8X  d>   \        P                  V P                  P                  ^V,          4      RV^8  R7      pEMV^"8X  d:   \        P                  ! RV P                  P                  ^4      4      ^ ,          pEMV^#8X  d:   \        P                  ! RV P                  P                  ^4      4      ^ ,          pEMV^38X  d   \        P                  ! RV P                  P                  ^4      4      ^ ,          pV P                  '       d*   \        P                  ! R	^^\        P                  R
7      pM\        P                  ! R	^^4      pV\        P                  ! VR7      ,           pEMV^@8X  d%   V P                  V4      p	V P                  V	4      pEMV^P8X  d6   V P                  V4      p	V P                  V	4      p
V
P!                  R4      pEMV^`8X  d=   V P                  V4      ^,          p	V P                  V	4      p
V
P!                  R4      pEMDV^8X  dA   \#        \        P                  V P                  P                  ^V,           4      R4      4      pMV^8X  d]   V P                  V4      p	V P%                  V	4      p. pW P                   V&   V F#  pVP'                  V P)                  V4      4       K%  	  MV^8X  d   V P                  V4      p	V P%                  V	4      pV P%                  V	4      pV P+                  4       pW P                   V&    \-        W4       F'  w  rV P)                  V4      W P)                  V4      &   K)  	  M
\1        4       hW P                   V&   V#   \.         d    \1        4       hi ; i)z`
read the object by reference.

May recursively read sub-objects (content of an array/dict/set)
NFTr   r   Zsignedz>fz>d  r3   )Zsecondsr   utf-16be)r   r   r   r   r   r   r   r   r   r   r   r:   r;   Z	timedeltar   r   r   r   r   r'   r   rM   Zzipr	   r    )r   refZresultoffsettokenZtokenHr   r   Zepochr*   r   Zobj_refsZxZkey_refskos   &&              r   r   Z_BinaryPlistParser._read_object  sY    s##M%%c*fa #ut|D=Fd]Fd]F
 d]Ft^^^DHHMM!v+$>$)&A+ $ ?F d]]]4q)9:1=Fd]]]4q)9:1=Fd]dDHHMM!$45a8A !!! ))$1X\\J ))$15X//::Ft^v&AZZ]Ft^v&A::a=D[[)Ft^v&*A::a=D[[,Ft^a&j(A5IJFt^v&Aq)HF!'MM#d//23  t^v&Aq)Hq)H__&F!'MM#-3DA373D3DQ3GF,,Q/0 4
 '((#c  -*,,-s   6P   P6)r   rM   r   r   r   r   Nry   )r   r   r   r    __doc__r   rW   r   r   r   r   r   r!   r"   r#   r$   r   r   r     s4     ,)2
<2a ar   r   c                 s<    V R8  d   ^# V R8  d   ^# V R8  d   ^# ^# )ri                 r   )Zcountr   r   _count_to_sizer   ~  s%    v~		 r   c                   r   )_BinaryPlistWriteri  c                s6    Wn         W n        W0n        W@n        R # r   )r   r   r   rN   )r   r   r   r   r<   s   &&&&&r   r   Z_BinaryPlistWriter.__init__  s    #!-r   c                s   . V n         / V n        / V n        V P                  V4       \	        V P                   4      p^ .V,          V n        \        V4      V n        \        V P                  ,          V n	        V P                  P                  R4       V P                    F  pV P                  V4       K  	  V P                  V4      pV P                  P                  4       p\        V4      pR\        V,          V,          ,           pV P                  P                  \        P                   ! V.V P
                  O5!  4       ^ pWV P                  VWE3p	V P                  P                  \        P                   ! R.V	O5!  4       R# )r      bplist00rD   z	>5xBBBQQQN)_objlist	_objtable_objidtable_flattenr&   r   r   r   r   _ref_formatr   r   _write_object
_getrefnumtellr   pack)
r   rX   r   Zobjr   r   r   Zoffset_formatZsort_versionr   s
   &&        r   r   Z_BinaryPlistWriter.write  s4      	e $--( !s;'4)$..9 	{# ==Cs# ! __U+
"hhmmo$%89n[9KGGv{{=H43G3GHI t~~{
 	v{{;99:r   c                s   \        V\        4      '       d    \        V4      V3V P                  9   d   R # M\	        V4      V P
                  9   d   R # \        V P                  4      pV P                  P                  V4       \        V\        4      '       d   W P                  \        V4      V3&   MW P
                  \	        V4      &   \        V\        4      '       d   . p. pVP                  4       pV P                  '       d   \        V4      pV F\  w  rg\        V\        4      '       g    V P                  '       d   K/  \        R4      hVP                  V4       VP                  V4       K^  	  \         P"                  ! W44       F  pV P%                  V4       K  	  R # \        V\&        \(        34      '       d   V F  pV P%                  V4       K  	  R # R # )Nr   )r   _scalarsr   r   idr   r&   r   r'   r`   r   r   r   r/   r   r	   	itertoolsZchainr   rb   r   )	r   rX   ZrefnumZkeysvaluesr   r   vr   s	   &&       r   r   Z_BinaryPlistWriter._flatten  sh    eX&&UU#t~~5 6 Y$*** T]]#U#eX&&39NNDK/0*0RY' eT""DFKKMEu!!S))~~~ #$:;;Aa   __T2a  3 e}--a   .r   c                s    \        V\        4      '       d   V P                  \        V4      V3,          # V P                  \        V4      ,          # r   )r   r   r   r   r   r   rc   r   r   r   Z_BinaryPlistWriter._getrefnum  s<    eX&&>>4;"677##BuI..r   c                s   V^8  d9   V P                   P                  \        P                  ! RW,          4      4       R# VR8  d<   V P                   P                  \        P                  ! RV^,          ^V4      4       R# VR8  d<   V P                   P                  \        P                  ! RV^,          ^V4      4       R# VR	8  d<   V P                   P                  \        P                  ! RV^,          ^V4      4       R# V P                   P                  \        P                  ! RV^,          ^V4      4       R# )
i   z>Bz>BBBz>BBHz>BBLz>BBQNr   r   r   )r   r   r   r   )r   r   r   rQ   r   _write_sizeZ_BinaryPlistWriter._write_size  s    "9HHNN6;;tU\:;F]HHNN6;;vus{D$GHG^HHNN6;;vus{D$GHG^HHNN6;;vus{D$GH HHNN6;;vus{D$GHr   c           	     s   V P                  V4      pV P                  P                  4       V P                  V&   Vf   V P                  P	                  R4       R # VRJ d   V P                  P	                  R4       R # VRJ d   V P                  P	                  R4       R # \        V\        4      '       Edl   V^ 8  d5    V P                  P	                  \        P                  ! R^V4      4       R # VR8  d4   V P                  P	                  \        P                  ! R^V4      4       R # VR8  d4   V P                  P	                  \        P                  ! R^V4      4       R # VR8  d4   V P                  P	                  \        P                  ! R	^V4      4       R # VR8  d4   V P                  P	                  \        P                  ! R
^V4      4       R # VR8  d7   V P                  P	                  RVP                  ^RRR7      ,           4       R # \        V4      h\        V\        4      '       d4   V P                  P	                  \        P                  ! R^#V4      4       R # \        V\        P                  4      '       d   V P                  '       d`   VP                  \        P                   4      pV\        P                  ! R^^\        P                   R7      ,
          pVP#                  4       pM-V\        P                  ! R^^4      ,
          P#                  4       pV P                  P	                  \        P                  ! R^3V4      4       R # \        V\$        \&        34      '       d9   V P)                  ^@\+        V4      4       V P                  P	                  V4       R # \        V\,        4      '       dK    VP/                  R4      pV P)                  ^P\+        V4      4       V P                  P	                  V4       R # \        V\2        4      '       Ed8   VP4                  ^ 8  d   \7        R4      hVP4                  R8  d4   V P                  P	                  \        P                  ! R^V4      4       R # VP4                  R8  d4   V P                  P	                  \        P                  ! R^V4      4       R # VP4                  R8  d4   V P                  P	                  \        P                  ! R	^V4      4       R # VP4                  R8  d4   V P                  P	                  \        P                  ! R
^V4      4       R # \        V4      h\        V\8        \:        34      '       d   V Uu. uF  qpP                  V4      NK  	  pp\+        V4      p	V P)                  ^V	4       V P                  P	                  \        P                  ! RV P<                  V	,          ,           .VO5!  4       R # \        V\>        4      '       Edq   . . rV P@                  '       d   \C        VPE                  4       4      pMVPE                  4       pV Fz  w  r\        V\,        4      '       g    V PF                  '       d   K/  \I        R4      hV
PK                  V P                  V4      4       VPK                  V P                  V4      4       K|  	  \+        V
4      p	V P)                  ^V	4       V P                  P	                  \        P                  ! RV P<                  V	,          ,           .V
O5!  4       V P                  P	                  \        P                  ! RV P<                  V	,          ,           .VO5!  4       R # \I        V4      h  \        P                   d    \        T4      R hi ; i  \0         d8    TP/                  R4      pT P)                  ^`\+        T4      ^,          4        ELi ; iu upi )Ns    Fs   Tr   z>Bqz>BBz>BHz>BLz>BQs   r   r   z>Bdr   r   r   r   r   rD   r   r   r   r   l            r   )&r   r   r   r   r   r   r   r   r   r   r   Zto_bytesrt   r:   rN   r@   r;   Ztotal_secondsr   r   r   r&   r/   r0   ZUnicodeEncodeErrorr   r   r
   rb   r   r   r`   r   r   r   r   r	   r'   )r   rX   r   Zdtr   r   Ztr   Zrefsr*   ZkeyRefsZvalRefsZ	rootItemsr   r   s   &&             r   r   Z _BinaryPlistWriter._write_object  sk   ooe$$(HHMMOS!=HHNN7#e^HHNN7#d]HHNN7#s##qy9HHNN6;;udE#BC v{{5$>?v{{5$>?v{{5$>?v{{5$>?wE$)OOP#E**u%%HHNN6;;udE:;x0011###%%hll3h//a8<<PP((*X..tQ::IIKHHNN6;;udA67y122T3u:.HHNN5!s##4LL)  s5z2
 HHNN1s##zzA~ !899f$v{{5$>?g%v{{5$>?g%v{{5$>?g%v{{5$>?#E**e}--0561OOA&D6D	AT1%HHNN6;;sT-=-=-A'AIDIJt$$!2W"5;;=1	!KKM	!!!S))~~~ #$:;;tq12tq12 " GAT1%HHNN6;;sT-=-=-A'ALGLMHHNN6;;sT-=-=-A'ALGLM E""g || 9'.D89F & 4LL,  s1v{34* 7s$   ?1^ ,^8 >_="^58>_:9_:)
rN   r   r   r   r   r   r   r   r   r   Nry   )r   r   r   r    r   r   r   r   r   r   r!   r"   r#   r$   r   r   r     s-     .+;Z(!T/I c# c#r   r   c                 s    V R ,          R8H  # ):Ni   Nr   r   )r   r   r   _is_fmt_binaryr   g  s    ":$$r   )detectrR   writerfmtrP   r<   Fc               s4   Vfh   V P                  ^ 4      pV P                  ^ 4       \        P                  4        F#  pVR,          ! V4      '       g   K  VR,          p M 	  \	        4       h\        V,          R,          pV! W#R7      pVP                  V 4      # )zRead a .plist file. 'fp' should be a readable and binary file object.
Return the unpacked root object (which usually is a dictionary).
r   rR   )rP   r<   )r   r   _FORMATSr   r    rW   )r   r   rP   r<   r   ZinfoZPZps   &$$$    r   loadr   }  s     {

OO%DH~f%%N & '(( SM(#	I=A772;r   c               s    \        V \        4      '       d'   V\        8X  d   \        R4      hV P	                  4       p \        V 4      p\        WAW#R7      # )ziRead a .plist file from a bytes object.
Return the unpacked root object (which usually is a dictionary).
z6value must be bytes-like object when fmt is FMT_BINARY)r   rP   r<   )r   r/   
FMT_BINARYr	   r0   r   r   )rX   r   rP   r<   r   s   &$$$ r   loadsr     sL     %* ) * *	ByPPr   r   Tr   c               s    V\         9  d   \        RV: 24      h\         V,          R,          ! WVVR7      pVP                  V 4       R# )zOWrite 'value' to a .plist file. 'fp' should be a writable,
binary file object.
zUnsupported format: r   )r   r   r<   N)r   r
   r   )rX   r   r   r   r   r<   r   s   &&$$$$ r   dumpr     sA    
 (3899c]8$Rx4BDF
LLr   c          	     sT    \        4       p\        WWVVR7       VP                  4       # )z?Return a bytes object with the contents for a .plist file.
    )r   r   r   r<   )r   r   Zgetvalue)rX   r   r   r   r<   r   s   &$$$$ r   dumpsr     s(     
B)&(;;=r   )r    FMT_XMLr   r   r   r   r   r   i   )iL   ):r   Z__all__r(   r   r:   ZenumZior   r   r   Zrer   Zxml.parsers.expatr   ZEnumr   r   ZglobalsZupdateZ__members__r   r   r   ZcompilerE   r-   r1   ZASCIIr9   r?   rB   rH   rI   rz   r   r   r
   r    r   Zobjectr   r   r   r/   r   rt   r   r   r   r   r   r`   r   r   r   r   r   r   r   r   r   <module>r      s  7p       	 	  * ii';HM 	  (( )   B **IJ& jj  X  Z\  Zb  Zb  c#
mP mP`# #L])> ])@B+J + S!S!S!S1X
i iV eX..6W#& W#t% T
 !!
D D  ,
Q 
Q 
QU 
Q
7 
d 
U 

 % 4 r   