fn gdZddlZddlZddlZddlZddlmZddlZddlZddl Z ddl Z ddl m Z ej ddeZeejGdd Zd Ze jd Zd1d ZdZe jde jZdZdZdZGddZGddZGddeZ dZ!Gdde"Z#ddddd Z$e%Z&Gd!d"Z'd#Z(e)e*e+eje,fZ-Gd$d%e%Z.d&Z/e0e1e!ee 'e2e1e/e'e.'iZ3de1d(d)Z4de1d(d*Z5e0d+d,d-d.Z6e0d,d+d/d0Z7dS)2)InvalidFileExceptionFMT_XML FMT_BINARYloaddumploadsdumpsUIDN)BytesIO) ParserCreate PlistFormatzFMT_XML FMT_BINARY)modulec2eZdZdZdZdZdZdZdZdS)r ct|tstd|dkrtd|dkrtd||_dS)Nzdata must be an intzUIDs cannot be >= 2**64r UIDs must be positive) isinstanceint TypeError ValueErrordataselfrs //opt/alt/python311/lib64/python3.11/plistlib.py__init__z UID.__init__Ns^$$$ 3122 2 7??677 7 !88455 5 c|jSN)rrs r __index__z UID.__index__Ws yrcJ|jjdt|jdS)N()) __class____name__reprrrs r__repr__z UID.__repr__Zs$>222DOOOODDrc |j|jffSr)r$rrs r __reduce__zUID.__reduce__]s~ |++rcZt|tstS|j|jkSr)rr NotImplementedr)rothers r__eq__z UID.__eq__`s)%%% "! !yEJ&&rc*t|jSr)hashrrs r__hash__z UID.__hash__esDIrN) r% __module__ __qualname__rr r'r)r-r0rrr r MsqEEE,,,''' rr s 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]Lc|dzdz}g}tdt||D]6}||||z}|tj|7d|S)Nr r)rangelenappendbinascii b2a_base64join)s maxlinelength maxbinsizepiecesichunks r_encode_base64rDys|"A%J F 1c!ffj ) )22!a*n$% h)%001111 88F  rct|tr'tj|dStj|S)Nutf-8)rstrr; a2b_base64encode)r>s r_decode_base64rJsD!S&"188G#4#4555"1%%%rz{(?P\d\d\d\d)(?:-(?P\d\d)(?:-(?P\d\d)(?:T(?P\d\d)(?::(?P\d\d)(?::(?P\d\d))?)?)?)?)?Zcd}t|}g}|D]0}||}|n#|t |1t j|S)Nyearmonthdayhourminutesecond) _dateParsermatch groupdictr:rdatetime)r>ordergdlstkeyvals r_date_from_stringr\sv @E   1   ' ' ) )B Cg ; E 3s88  c ""rcTd|j|j|j|j|j|jfzS)Nz%04d-%02d-%02dT%02d:%02d:%02dZrL)ds r_date_to_stringr_s. +  !(/ rc8t|}|td|dd}|dd}|dd}|dd}|d d }|S) Nz;strings can't contain control characters; use bytes insteadz   &z&z>)_controlCharPatsearchrreplace)textms r_escaperkst$$A}-.. . << % %D <<d # #D <<W % %D <<V $ $D <<V $ $D KrceZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdS) _PlistParserc>g|_d|_d|_||_dSr)stack current_keyroot _dict_typer dict_types rrz_PlistParser.__init__s#  #rct|_|j|j_|j|j_|j|j_|j|j_ |j ||j Sr) r parserhandle_begin_elementStartElementHandlerhandle_end_elementEndElementHandler handle_dataCharacterDataHandlerhandle_entity_declEntityDeclHandler ParseFilerq)rfileobjs rparsez_PlistParser.parses_"nn *.*C '(,(? %+/+; ((,(? % g&&&yrc td)Nz8XML entity declarations are not supported in plist files)r)r entity_nameis_parameter_entityvaluebase system_id public_id notation_names rr}z_PlistParser.handle_entity_decls##]^^^rcZg|_t|d|zd}| ||dSdS)Nbegin_)rgetattr)relementattrshandlers rrwz!_PlistParser.handle_begin_elements> $7 2D99   GENNNNN  rcJt|d|zd}| |dSdS)Nend_)r)rrrs rryz_PlistParser.handle_end_elements5$ 0$77   GIIIII  rc:|j|dSr)rr:rs rr{z_PlistParser.handle_datas rc|jbt|jdtist d|jjz||jd|j<d|_dS|js ||_dSt|jdtgst d|jjz|jd|dS)Nzunexpected element at line %d) rprrotyperrvCurrentLineNumberrqr:rrs r add_objectz_PlistParser.add_objects   'djnd2hh77 @ !@!%!>"?@@@/4DJrN4+ ,#D    )DIIIdjnd2hh77 @ !@!%!>"?@@@ JrN ! !% ( ( ( ( (rcHd|j}g|_|S)N)r=rrs rget_dataz_PlistParser.get_datas!wwty!!  rc|}|||j|dSr)rrrror:)rrr^s r begin_dictz_PlistParser.begin_dicts? OO    !rc|jr#td|j|jjfz|jdS)Nz%missing value for key '%s' at line %d)rprrvrropoprs rend_dictz_PlistParser.end_dictsT   OD".t{/LMNOO O rc|js(t|jdtist d|jjz||_dS)Nrzunexpected key at line %d)rprrorrrvrrrs rend_keyz_PlistParser.end_keysb   <:djnd2hh#G#G <8![:;<< <==??rchg}|||j|dSr)rror:)rras r begin_arrayz_PlistParser.begin_arrays5   !rc8|jdSr)rorrs r end_arrayz_PlistParser.end_arrays rc0|ddS)NTrrs rend_truez_PlistParser.end_trues rc0|ddS)NFrrs r end_falsez_PlistParser.end_falses rc|}|ds|dr%|t|ddS|t|dS)N0x0X)r startswithrr)rraws r end_integerz_PlistParser.end_integerstmmoo >>$   &3>>$#7#7 & OOCRLL ) ) ) ) ) OOCHH % % % % %rcn|t|dSr)rfloatrrs rend_realz_PlistParser.end_reals* dmmoo../////rcT||dSr)rrrs r end_stringz_PlistParser.end_strings"  (((((rcn|t|dSr)rrJrrs rend_dataz_PlistParser.end_datas* t}}7788888rcn|t|dSr)rr\rrs rend_datez_PlistParser.end_dates+ )$--//::;;;;;rN)r%r1r2rrr}rwryr{rrrrrrrrrrrrrrr3rrrmrmsC$$$ ___   )))   +++  &&&000)))999<<<<||_g|_||_||_dSr)filero _indent_levelindent)rr indent_levelrs rrz_DumbXMLWriter.__init__s#  ) rc|j||d|z|xjdz c_dS)Nz<%s>)ror:writelnrrrs r begin_elementz_DumbXMLWriter.begin_element"sI '""" Vg%&&& arcV|xjdzc_|d|zdS)Nrz)rrrs r end_elementz_DumbXMLWriter.end_element's5 a Ww&'''''rNc |0t|}|d|d|d|ddS|d|zdS)Nrdrez)rkr)rrrs rsimple_elementz_DumbXMLWriter.simple_element-s_  ENNE LLL'''555'''B C C C C C LL7* + + + + +rc|rkt|tr|d}|j|j|jz|j||jddS)NrF )rrGrIrwriterr)rlines rrz_DumbXMLWriter.writeln5s{  "$$$ ,{{7++ IOOD.< = = = IOOD ! ! ! r)r rr)r%r1r2rrrrrr3rrrrsi    ((( ,,,,     rrc8eZdZ d dZdZdZd Zd Zd Zd S) _PlistWriterr  rTFc|r|tt||||||_||_dSr)r PLISTHEADERrr _sort_keys _skipkeys)rrrr writeHeader sort_keysskipkeyss rrz_PlistWriter.__init__BsJ  $ JJ{ # # #dL&AAA#!rc|d|||ddS)Nzz)r write_valuers rrz_PlistWriter.writeLsA .///  Z     rct|tr|d|dS|dur|ddS|dur|ddSt|tr:d|cxkrdkrnn|dd |zdSt |t|t r%|d t |dSt|tr||dSt|ttfr| |dSt|tj r%|d t|dSt|ttfr||dSt#d t%|z) NstringTtrueFfalselrintegerz%drealdatezunsupported type: %s)rrGrr OverflowErrorrr&dict write_dictbytes bytearray write_bytesrVr_tuplelist write_arrayrrrs rrz_PlistWriter.write_valueQs eS ! ! B   % 0 0 0 0 0 d]]    ' ' ' ' ' e^^    ( ( ( ( ( s # # B5****7*****##Ite|<<<<<#E*** u % % B   U 4 4 4 4 4 t $ $ B OOE " " " " " y1 2 2 B   U # # # # # x0 1 1 B   (>(> ? ? ? ? ? t} - - B   U # # # # #2T%[[@AA Arc |d|xjdzc_tddt|jdd|jzz }t ||dD]}|r|||xjdz c_| ddS)Nrrrr4rs r) rrmaxr9rrhrDsplitrr)rrr?rs rrz_PlistWriter.write_bytesss 6""" a  T[((99D6xBBQQQ)_fpseekosSEEK_ENDreadr9rstructunpack _ref_size _read_ints_object_offsets _undefined_objects _read_objectOSError IndexErrorerrorrr)rfptrailer offset_size num_objects top_objectoffset_table_offsets rrz_BinaryPlistParser.parses ) DH HMM#r{ + + +hmmB''G7||r!!*,,, j'22 T^[*# HMM- . . .#'??; #L#LD 'L;6DM$$Z00 0V\= ) ) )&(( ( )s C C##7Dc |dkrk|jdddz}d|z}dt|z}tj||j|dS|S)Nrr r7re)rr_BINARY_FORMATrr)rtokenLrjr>fs r _get_sizez_BinaryPlistParser._get_sizesm2 S== a  #c)AQAnQ''A=DHMM!$4$455a8 8 rcD|j|ztvr%tjd|tSrt |zkrt tfdtd|zDS)Nrec3dK|]*}t||zdV+dS)bigN)r from_bytes).0rBrsizes r z0_BinaryPlistParser._read_ints..sR<<QD[(95AA<<<<< ! !=!>Q!>t(!>EE E -3t99q00*,,,<<<<<"'4!8T":":<<<<< t jd|zd |d k }n|dkr5tj djdd}nP|dkr5tj djdd}n|dkratj djdd}tj dddtj |z}n|dkrR |}j|}t||krtnV|dkrg |}j|} t| |krt| d}n|dkrj |dz}j|} t| |krt| d}ny|dkrEt!t jd|zd }n.|dkrX |}|} g}|j|<|fd| Dn|dkr |}|} |} }|j|< t)| | D]0\} } | || <1n*#t,$rtwxYwt|j|<|S) Nrr r,rF Trrr3r7signed"z>fr6#z>d3)seconds@Pr`rutf-16bec3BK|]}|VdSr)r!)r5xrs rr7z2_BinaryPlistParser._read_object..Os1AA1$++A..AAAAAAr)r rrrrrrr4rrrV timedeltar0r9rrr r:extendrrzipr!r)rrefresultoffsettokentokenHr.r/r>robj_refskey_refskos` rr!z_BinaryPlistParser._read_objectsK s#  # #M%c*  f a  #ut| D==FF d]]FF d]]FF d]]FF t^^^^DHMM!v+$>$>$)&A+$??FFd]]]4q)9)9::1=FF d]]]4q)9)9::1=FF d]] dDHMM!$4$455a8A'a33(3334FFt^^v&&AX]]1%%F6{{a*,,, t^^v&&A8==##D4yyA~~*,,,[[))FF t^^v&&*A8==##D4yyA~~*,,,[[,,FF t^^ a&j(A(A5IIJJFF t^^v&&Aq))HF!'DM#  MMAAAAAAA A A A At^^v&&Aq))Hq))H__&&F!'DM#  -(33HHDAq373D3DQ3G3GF4,,Q//00H - - -*,,, -'(( (# c s 7AP99QN) r%r1r2rrr0rr:r!r3rrrrsx$$$)))2<<<222cccccrrc6|dkrdS|dkrdS|dkrdSdS)Nrrr6rr3)counts r_count_to_sizer_hs3 v~~q q qqrc2eZdZdZdZdZdZdZdZdS)_BinaryPlistWriterc0||_||_||_dSr)rrr)rr%rrs rrz_BinaryPlistWriter.__init__xs#!rcg|_i|_i|_||t |j}dg|z|_t ||_t|j|_ |j d|jD]}| || |}|j }t |}dt||zz}|j tj|g|jRd}|||j|||f} |j tjdg| RdS)Nr bplist00rez >5xBBBQQQ)_objlist _objtable _objidtable_flattenr9rr_rr- _ref_formatrr _write_object _getrefnumtellrpack) rrr(objr)r*r' offset_format sort_versionr&s rrz_BinaryPlistWriter.write}sh  e$-(( !s;' 44)$.9 {###= $ $C   s # # # #__U++ "hmmoo$%899 n[9KGG  v{=H43GHHHIII +t~{ +  v{;9999:::::rct|trt||f|jvrdSnt ||jvrdSt |j}|j|t|tr||jt||f<n||jt |<t|trg}g}| }|j rt|}|D][\}}t|ts|jr"td||||\t!j||D]}||dSt|t&t(fr|D]}||dSdS)Nr)r_scalarsrrfidrgr9rer:rrrrrGrr itertoolschainrhrr) rrrefnumkeysvaluesrrXvrYs rrhz_BinaryPlistWriter._flattens eX & & U U#t~556YY$* * * FT]## U### eX & & 139DNDKK/ 0 0*0D RYY ' eT " " !DFKKMME &u  ! !1!!S))<~! #$:;;; A a    _T622 ! ! a     ! !e} - - ! ! ! a     ! ! ! !rct|tr|jt||fS|jt |Sr)rrrrfrrgrsrs rrkz_BinaryPlistWriter._getrefnums@ eX & & />4;;"67 7#BuII. .rc6|dkr2|jtjd||zdS|dkr4|jtjd|dzd|dS|dkr4|jtjd|dzd|dS|d kr4|jtjd |dzd |dS|jtjd |dzd |dS)Nr,z>Br[z>BBBrr\z>BBHr]z>BBLz>BBQ)rrrrm)rrTr6s r _write_sizez_BinaryPlistWriter._write_sizes  "99 HNN6;tUT\:: ; ; ; ; ; F]] HNN6;vus{D$GG H H H H H G^^ HNN6;vus{D$GG H H H H H G^^ HNN6;vus{D$GG H H H H H HNN6;vus{D$GG H H H H Hrc>|}jj|<|jddS|durjddS|durjddSt |t r||dkrT jtjdd|dS#tj $rt|dwxYw|d kr0jtjd d |dS|d kr0jtjd d|dS|dkr0jtjdd|dS|dkr0jtjdd|dS|dkr5jd| d ddzdSt|t |tr0jtjdd|dSt |tj r[|tj dddz }jtjdd|dSt |tt fr?dt%|j|dSt |t&r |d}dt%|nK#t*$r>|d }d!t%|d"zYnwxYwj|dSt |t,r|jdkrt1d#|jd kr0jtjd d$|dS|jd kr0jtjd d%|dS|jdkr0jtjdd&|dS|jdkr0jtjdd'|dSt|t |t2t4frjfd(|D}t%|}d)|jtjd*j|zzg|RdSt |t8rVgg}}jr"t=|} n|} | D]\} } t | t&sj r"tCd+|"| |"| t%|}d,|jtjd*j|zzg|Rjtjd*j|zzg|RdStC|)-NFTrr z>Bqr~r[z>BBrr\z>BHr|r]z>BLr}lz>BQrr3r>z>BdrArCrrBrErrFrHrGrrrIc:g|]}|Sr3)rk)r5rYrs r z4_BinaryPlistWriter._write_object..-s%6661DOOA&&666rrJrerrM)#rkrrlrrrrrrmr$rto_bytesrrV total_secondsrrrr9rGrIUnicodeEncodeErrorr rrrrrirrrrrrr:) rrrQr/trefsr>keyRefsvalRefs rootItemsrXrys ` rrjz _BinaryPlistWriter._write_objectsooe$$$(HMMOOS! = HNN7 # # # # # e^^ HNN7 # # # # # d]] HNN7 # # # # # s # #R #qyy9HNN6;udE#B#BCCCCC|999'..D89v{5$>>?????v{5$>>?????v{5$>>?????v{5$>>?????wE$)O)OOPPPPP#E*** u % %? # HNN6;udE:: ; ; ; ; ; x0 1 1< #*4A666EEGGA HNN6;udA66 7 7 7 7 7 y1 2 28 #   T3u:: . . . HNN5 ! ! ! ! ! s # #4 # 4LL))  s5zz2222% 4 4 4LL,,  s1vv{33333 4 HNN1      s # #* #zA~~ !8999f$$v{5$>>?????g%%v{5$>>?????g%%v{5$>>?????g%%v{5$>>?????#E*** e} - - #6666666DD A   T1 % % % HNN6;sT-=-A'AIDIII J J J J J t $ $ #!2WG *"5;;==11 !KKMM ! 3 31!!S))<~! #$:;;;tq11222tq112222G A   T1 % % % HNN6;sT-=-A'ALGLLL M M M HNN6;sT-=-A'ALGLLL M M M M ME"" "s3.C## D8N AOON) r%r1r2rrrhrkrrjr3rrrarawsx""" +;+;+;Z(!(!(!T/// III ^#^#^#^#^#rrac|dddkS)Nrrdr3)rs r_is_fmt_binaryrKs "1": $$r)detectrvwriterfmtrtcP |p|d}|dtD]}|d|r |d}nt nt|d}||}||S)Nrr rrv)rt)rr_FORMATSrxrr)r%rrtrinfoPps rrras {  OO%% ) )DtH~f%% N  '(( ( SM( # IA 772;;rcF t|}t|||S)Nr)r r)rrrtr%s rrrws) B y 1 1 11rTF)rrrc |tvrtd|t|d|||}||dS)NzUnsupported format: r)rr)rrr)rr%rrrrs rrrs^ (j338999 c]8 $R9x P P PF LLrrrrcp t}t||||||S)Nr)r rgetvalue)rrrrr%s rrrs7 Bh)DDDD ;;==r)r4)8__all__r;rrVenumior rtrrerxml.parsers.expatr Enumr%r globalsupdate __members__r rcompilerfrDrJASCIIrSr\r_rkrmrrrrrr-objectrrr_rGrrrrrrarrrrrrrrrr3rrrs7p      ******di ';HMMM  ()))B "*IJJ&&&bjXZ\Zbcc  # # #   k<k<k<k<k<k<k<k<\########L[)[)[)[)[)>[)[)[)|B+++++J+++SSS11 VXX ^^^^^^^^@    eX. 6Q#Q#Q#Q#Q#&Q#Q#Q#h%%% TT !! D,22222#dU %4r