Ë Eþ.Á$Àãó¨—ddlmZddlZddlZddlZddlZddlZddlZddl m Z Gd„de «Z Gd„de «Zd„Zd „Zd „Zd „Zd „Zd „Zd„Ze d%d„«Ze d&d„«Zd„Zd„Zej4d«Zej4d«Zd„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#d„Z$ifd„Z%d&d„Z&Gd„d e jN«Z(Gd!„d"e «Z)d#„Z*d$„Z+y)'é)Úwith_statementN)Úcollections_abccó—eZdZd„Zd„Zy)Úmemoizecó —||_i|_y©N)ÚfuncÚcache)Úselfr s ú//usr/lib/python3.12/site-packages/gyp/common.pyÚ__init__zmemoize.__init__s€Ø€D„IØ€D…Jócó€— |j|S#t$r#|j|Ž}||j|<|cYSwxYwr)r ÚKeyErrorr )r ÚargsÚresults r Ú__call__zmemoize.__call__sH€ðØ �Z‰Z˜Ñ ÐøÜ ò؈t�y‰y˜$ЀfØ€d‡j�j�ÑØ ‚mðús ‚‘)=¼=N)Ú__name__Ú __module__Ú __qualname__r r©rr rrs „òórrcó—eZdZdZy)ÚGypErrorz€Error class representing an error, which is to be presented to the user. The main entry point will catch and display this. N)rrrÚ__doc__rrr rr s „ñðrrcó—|js |f|_yt|j«dk(r%t|jd«dz|zf|_yt|jd«dz|zf|jddz|_y)z2Append a message to the given exception's message.érÚ N)rÚlenÚstr)ÚeÚmsgs r ÚExceptionAppendr"'sq€à �ŠØˆV€A…FÜ ˆ1�6‰6ƒ{�aÒÜ�!—&‘&˜‘)‹n˜sÑ" SÑ(Ð *€A…Fä�!—&‘&˜‘)‹n˜sÑ" SÑ(Ð *¨Q¯V©V°A°B¨ZÑ 7€A…FrcóP—|D�cgc]}t|«d|k(sŒ|‘Œc}Scc}w)zc Given a list of qualified targets, return the qualified targets for the specified |target|. r©ÚParseQualifiedTarget)ÚtargetÚqualified_listÚts r ÚFindQualifiedTargetsr)1s.€ñ $Ó L‘^�Ô';¸AÓ'>¸qÑ'AÀVÓ'KŠ!�^Ñ LÐLùÒ Ls…#œ#có¬—|jdd«}t|«dk(r|\}}nd}|jdd«}t|«dk(r|\}}nd}|||gS)NÚ:réÚ#)Úrsplitr)r&Ú target_splitÚ build_fileÚtoolsets r r%r%9si€ð—‘˜s AÓ&€,܈Ә!ÒØ'Ñ€Z‘à€Jà—‘˜s AÓ&€,܈Ә!ÒØ$Ñ€V‰Wà€Gà �f˜gÐ &Ð&rcóJ—t|«\}}}|rŠ|r†tjjtjj tjj |«|««}tjj |«st|d«}n|}|r|}|||gS)NÚ.)r%ÚosÚpathÚnormpathÚjoinÚdirnameÚisabsÚ RelativePath)r0r&r1Úparsed_build_fileÚparsed_toolsets r Ú ResolveTargetr=LsŽ€ô1EÀVÓ0LÑ-Ð�f˜náÙô—7‘7×#Ñ#¤B§G¡G§L¡L´·±·±ÀÓ1LØ1Bó%DóE€jô�W‰W�]‰]˜:Ô &Ü! *¨cÓ2‰ à$€jáØ€Gà �f˜gÐ &Ð&rcó—t|«dS©Nrr$)Úfully_qualified_targets r Ú BuildFilerAns€ä Ð4Ó 5°aÑ 8Ð8rcób—|D])}|tjvsŒtj|cS|S)zpLook up a key in the environment, with fallback to secondary keys and finally falling back to a default value.)r4Úenviron)Úvar_listÚdefaultÚvars r ÚGetEnvironFallbackrGss/€ó€cØ Œb�j‰jÒÜ �Z‰Z˜‰_Òðð €.rcó*—|dz|z}|r|dz|z}|S)Nr+r-r)r0r&r1Úfully_qualifieds r ÚQualifiedTargetrJ|s+€ð Ñ$ vÑ-€/Ù Ø%¨Ñ+¨gÑ5€OØ Ðrcó\—|r tjj|«}ntjj|«}tjj|«}tj dk(rctjj |«dj«tjj |«dj«k7r|S|jtjj«}|jtjj«}ttjj||g««}tjjgt|«|z z||dz}t|«dk(rytjj|ŽS)NÚwin32rÚ)r4r5ÚrealpathÚabspathÚsysÚplatformÚ splitdriveÚlowerÚsplitÚseprÚ commonprefixÚpardirr7)r5Ú relative_toÚfollow_path_symlinkÚ path_splitÚrelative_to_splitÚ prefix_lenÚrelative_splits r r:r:†sC€ñÜ �7‰7× Ñ ˜DÓ !�Dä �7‰7�?‰?˜4Ó €DÜ—‘× Ñ  Ó-€+ô ‡\�\�WÒÜ �‰×ј4Ó  Ñ#×)Ñ)Ó+Ü �‰×ј;Ó'¨Ñ*×0Ñ0Ó2ò 3à €kð�z‰zœ"Ÿ'™'Ÿ+™+Ó&€*Ø!×'Ñ'¬¯©¯ © Ó4Ðô”2—7‘7×'Ñ'¨Ð5FÐ(GÓHÓI€*ô—G‘G—N‘NÐ#¤sÐ+<Ó'=À Ñ'JÑKؘj˜kÐ*ñ+€.ô ˆÓ˜AÒà ô �‰�‰�~Ð &Ð&rcój—|s|S|€dn|}t|tjj||««S)aGiven a path like foo/bar that is relative to toplevel_dir, return the inverse relative path back to the toplevel_dir. E.g. os.path.normpath(os.path.join(path, InvertRelativePath(path))) should always produce the empty string, unless the path contains symlinks. r3)r:r4r5r7)r5Ú toplevel_dirs r ÚInvertRelativePathr`²s4€ñ Ø €KØ$Ð,‘°,€,Ü �l¤B§G¡G§L¡L°¸tÓ$DÓ EÐErcó\—tjj|«r|St||«Sr)r4r5r9r:)r5rXs r ÚFixIfRelativePathrbÀs$€ä‡W�W‡]�]�4ÔØ €KÜ �d˜KÓ (Ð(rcóº—tjj|«}tjjtjj ||««Sr)r4r5r8r6r7)r5rXÚrel_dirs r ÚUnrelativePathreÇs:€ô �G‰G�O‰O˜KÓ (€'Ü �‰× Ñ œ"Ÿ'™'Ÿ,™, w°Ó5Ó 6Ð6rz[ #$%&'()*;<=>?[{|}~]|^$z(["\\`])có²—t|t«s t|«}tj|«rd}nd}|t j t d|«z|z}|S)a¬Encodes |argument| suitably for consumption by POSIX shells. argument may be quoted and escaped as necessary to ensure that POSIX shells treat the returned value as a literal representing the argument passed to this function. Parameter (variable) expansions beginning with $ are allowed to remain intact without escaping the $, to allow the argument to contain references to variables to be expanded by the shell. Ú"rMz\\\1)Ú isinstancerÚ_quoteÚsearchÚreÚsubÚ_escape)ÚargumentÚquoteÚencodeds r ÚEncodePOSIXShellArgumentrqsN€ô �HœcÔ "Ü�8‹}€Hä ‡]�]�8ÔØ �Eà €Eà ”B—F‘Fœ7 G¨XÓ6Ñ 6¸Ñ >€'à €.rcój—g}|D]}|jt|««Œdj|«S)zÄEncodes |list| suitably for consumption by POSIX shells. Returns EncodePOSIXShellArgument for each item in list, and joins them together using the space character as an argument separator. r)Úappendrqr7)ÚlistÚencoded_argumentsrns r ÚEncodePOSIXShellListrvs8€ðÐÛ€hØ×ÑÔ5°hÓ?Õ@ðà �‰Ð#Ó $Ð$rcób—t«}t|«}|r‚|j«}||vrŒ|j|«||}|jt|j dg«««|jt|j dg«««|rŒ‚t |t|«z «S)z2Returns the recursive list of target dependencies.Ú dependenciesÚdependencies_original)ÚsetÚpopÚaddÚupdateÚgetrt)Ú target_dictsÚrootsrxÚpendingÚrÚspecs r ÚDeepDependencyTargetsr„)s–€ä“€,Ü �‹J€'Ùà� ‰ ‹ €AàˆLÑØà×Ñ�QÔà ˜‰?€DØ ‡N�N”3�t—x‘x °Ó3Ó4Ô5Ø ‡N�N”3�t—x‘xÐ 7¸Ó<Ó=Ô>ò ô ˆlœS ›ZÑ'Ó (Ð(rcóJ—|D�cgc]}t|«|k(sŒ|‘Œc}Scc}w)zHFrom a target_list, returns the subset from the specified build_file. )rA)Ú target_listr0Úps r ÚBuildFileTargetsrˆ<s'€ñ!Ó ?‘[�¤I¨a£L°JÓ$>Š!�[Ñ ?Ð?ùÒ ?s… ™ có<—t||«}t||«}||zS)zNReturns all targets (direct and dependencies) for the specified build_file. )rˆr„)r†rr0Ú bftargetsÚ deptargetss r Ú AllTargetsrŒBs'€ô˜{¨JÓ7€)Ü$ \°9Ó=€*Ø �ZÑ Ðrcó4‡—Gˆfd„dt«}|«S)zúWrite to a file only if the new contents differ. Arguments: filename: name of the file to potentially write to. Returns: A file like object which will write to temporary file and only overwrite the target if it differs (on close). có,•—eZdZdZˆfd„Zd„Zˆfd„Zy)úWriteOnDiff..Writerz?Wrapper around file which only covers the target if it differs.có^•—tjdtjj ‰«ddztjj ‰«d¬«\}|_ tj |d«|_y#t$r!tj|j «‚wxYw)Nz.tmprz.gyp.r)ÚsuffixÚprefixÚdirÚw) ÚtempfileÚmkstempr4r5rTÚtmp_pathÚfdopenÚtmp_fileÚ ExceptionÚunlink)r Útmp_fdÚfilenames €r r z$WriteOnDiff..Writer.__init__Vs…ø€ä&×.Ñ.ØÜ—‘—‘˜xÓ(¨Ñ+¨gÑ5Ü�g‰g�m‰m˜HÓ% aÑ(ô*Ñ€fˆdŒmðÜŸ ™  &¨#Ó.ˆ� øÜ òä � ‰ �$—-‘-Ô Ø ðús Á&BÂ*B,có.—t|j|«Sr)Úgetattrr™)r Úattrnames r Ú __getattr__z'WriteOnDiff..Writer.__getattr__cs€ä �T—]‘] HÓ -Ð-rcóö•— |jj«d} tj|j‰d«}|r tj|j«ytjd«}tj|«tj|jd|z«tjdk(r4tjj‰«rtj ‰«tj"|j‰«y#t $r)}|j t jk7r‚Yd}~�Œd}~wwxYw#t$$r!tj|j«‚wxYw)NFé?i¶rL)r™ÚcloseÚfilecmpÚcmpr—ÚOSErrorÚerrnoÚENOENTr4r›ÚumaskÚchmodrPrQr5ÚexistsÚremoveÚrenamerš)r Úsamer rªr�s €r r¤z!WriteOnDiff..Writer.closegs ø€ð&à � ‰ ×ÑÔàˆð Ü—‘˜TŸ]™]¨H°eÓ<ˆ$ñ ô �)‰)�D—M‘MÕ "ô—(‘(˜4“.ˆ%Ü �(‰(�5Œ/Ü �(‰(�4—=‘= %¨5¨&¡.Ô 1Ü �\‰\˜WÒ $¬¯©¯©¸Ô)Aô �I‰I�hÔ Ü �)‰)�D—M‘M 8Õ ,øô7ò Ø �W‰WœŸ ™ Ò $Ø õ%ûð ûô8òä � ‰ �$—-‘-Ô Ø ðús;ƒE !DÁ!EÁ#B5EÄ E Ä"EÅEÅE Å EÅ*E8N)rrrrr r¡r¤)r�s€r ÚWriterr�Tsø„ÙIô ò.õ'rr°)Úobject)r�r°s` r Ú WriteOnDiffr²Jsø€ö:Œvô:ñx ‹€/rcóˆ— tjtjj|««y#t$rYywxYw)z*Make sure the directory for |path| exists.N)r4Úmakedirsr5r8r§)r5s r ÚEnsureDirExistsrµ“s2€ð ܇K�K”—‘—‘ Ó%Õ&øÜ ò Ùð ús‚25µ AÁAcó,—ddddœ}d|vr|dStj|vr|tjStjjd«rytjjd«rytjjd«rytjjd «ry tjjd «ry tjjd «ry tjjd «ry y )zFReturns |params.flavor| if it's set, the system's default flavor else.ÚwinÚmac)ÚcygwinrLÚdarwinÚflavorÚsunosÚsolarisÚfreebsdÚopenbsdÚnetbsdÚaixÚzosÚos390Úlinux)rPrQÚ startswith)ÚparamsÚflavorss r Ú GetFlavorrÈ›sÚ€ðØ Øñ €'ð �ÑØ �(Ñ Ð܇\�\�WÑØ ”3—<‘<Ñ Ð Ü‡\�\×јWÔ%Ø Ü‡\�\×јYÔ'Ø Ü‡\�\×јYÔ'Ø Ü‡\�\×јXÔ&Ø Ü‡\�\×јUÔ#Ø Ü‡\�\×јUÔ#Ø Ü‡\�\×јWÔ%Ø à rc óª—dddddœj|d«}|sytjjtjj tjj t ««d|z«}t|«5}|j«}ddd«d}|jdd«}|dk(r |r|d |zz }tjj|d |z«} t| d «5} | jd jd |g|ddz««ddd«tj| d«y#1swYŒ¦xYw#1swYŒ,xYw)zRFinds (flock|mac|win)_tool.gyp in the gyp directory and copies it to |out_path|.Úflockr¸r·)rÁr½r¸r·Nz %s_tool.pyz!# Generated by gyp. Do not edit. Úmac_toolchain_dirz,import os; os.environ['DEVELOPER_DIR']='%s' z gyp-%s-toolr”rMrrií) r~r4r5r7r8rOÚ__file__ÚopenÚ readlinesÚwriter«) r»Úout_pathÚgenerator_flagsr’Ú source_pathÚ source_fileÚsourceÚheaderrËÚ tool_pathÚ tool_files r ÚCopyToolrعs:€ð ØØ Ø ñ  ÷ ‰ˆF�DÓð  ñ Ø ô—‘— ‘ ܇g�g‡o�o”b—g‘g—o‘o¤hÓ/Ó0°,ÀÑ2GóI€+ä ˆKÔ˜KØ × "Ñ "Ó $€F÷ð 0€&Ø&×*Ñ*Ð+>ÀÓEÐØ ˆu‚_Ñ*Ø Ð>Ø ññ€Fô�g‰g�l‰l˜8 ]°VÑ%;Ó<€)Ü ˆI�sÔ˜yØ ‡O�OØ �‰�˜‘˜FÐ# f¨Q¨R jÑ0Ó1ô3÷ô ‡(�(ˆ9�eÕ÷#Ðú÷ÐúsÂD=Ã2,E Ä=EÅ Ecól—|€d„}i}g}|D]%}||«}||vrŒd||<|j|«Œ'|S)Ncó—|Srr)Úxs r Úzuniquer..æs€™!rr)rs)ÚseqÚidfunÚseenrÚitemÚmarkers r ÚuniquerrâäsN€Ø €}ÙˆØ €DØ €FÛˆÙ�t“ˆØ �T‰>˜8؈ˆV‰ Ø� ‰ �dÕð ð €MrcóR—eZdZd d„Zd„Zd„Zd„Zd„Zd„Zd„Z dd „Z d „Z d „Z d „Z y)Ú OrderedSetNcóD—gx|_}|d||gz }i|_|�||z}yyr)ÚendÚmap)r Úiterableræs r r zOrderedSet.__init__ós;€ØÐ€D„Hˆs؈D�#�sРрCØ€D„HØÐØ ˆhÑ�dðrcó,—t|j«Sr)rrç©r s r Ú__len__zOrderedSet.__len__ús€Ü ˆt�x‰x‹=Ðrcó—||jvSr)rç)r Úkeys r Ú __contains__zOrderedSet.__contains__ýs€Ø �$—(‘(ˆ?Ðrcó|—||jvr.|j}|d}|||gx|d<x|d<|j|<yy)Nrr,)rçræ)r ríræÚcurrs r r|zOrderedSet.addsK€Ø �$—(‘(ÑØ �H‰H€cØ �‰V€dØ*-¨t°SÐ)9Ð9€dˆ1�gÐ9��A‘˜Ÿ™ #šðrcót—||jvr*|jj|«\}}}||d<||d<yy)Nr,r)rçr{)r ríÚ prev_itemÚ next_items r ÚdiscardzOrderedSet.discards=€Ø ˆd�h‰h�Ø"&§(¡(§,¡,¨sÓ"3Ñ€cˆ9�iØ€i��lØ€i�‚lðrc#óZK—|j}|d}||ur|d–—|d}||urŒyy­w)Nr,r©ræ©r rærðs r Ú__iter__zOrderedSet.__iter__ ó:èø€Ø �(‰(€CØ ˆq‰6€DØ �c‰/Ø �‰G‚mØ �!‰W€dð �cŒ/ùó‚&+©+c#óZK—|j}|d}||ur|d–—|d}||urŒyy­w)Nrrrör÷s r Ú __reversed__zOrderedSet.__reversed__rùrúcóŽ—|s td«‚|r|jddn|jdd}|j|«|S)Nz set is emptyrrr,)rrærô)r Úlastrís r r{zOrderedSet.popsB€Ù Ü �^Ó $Ð$Ù ˆ$�(‰(�1‰+�aŠ. d§h¡h¨q¡k°!¡n€C؇L�L�ÔØ €Jrcó‚—|s|jj›d�S|jj›dt|«›d�S)Nz()Ú(Ú))Ú __class__rrtrês r Ú__repr__zOrderedSet.__repr__"s1€Ù Ø—~‘~×.Ó.Ð 0Ð0Ø—~‘~×.Ó.´°Tµ Ð ;Ð;rcó°—t|t«r0t|«t|«k(xrt|«t|«k(St |«t |«k(Sr)rhrärrtrz)r Úothers r Ú__eq__zOrderedSet.__eq__'sD€Ü�%œÔ$Ü �‹Yœ#˜e›*Ñ $Ò B¬¨d«´t¸E³{Ñ)BÐBÜ ˆt‹9œ˜E› Ñ "Ð"rcó>—|D]}||vsŒ|j|«Œyr)r|)r rèÚis r r}zOrderedSet.update-s€Û ˆØ �$ŠØ �‰�� ñrr©T)rrrr rërîr|rôrørür{rrr}rrr räräòs9„óòòò:ò ò òóò<ò #ó rräcó—eZdZdZd„Zd„Zy)Ú CycleErrorz9An exception raised when an unexpected cycle is detected.có—||_yr)Únodes)r r s r r zCycleError.__init__5s €Ø€D…Jrcó2—dt|j«zS)NzCycleError: cycle involving: )rr rês r Ú__str__zCycleError.__str__7s€Ø *¬S°·±«_Ñ <Ð ['a', 'c', b'] cóâ•—|‰vr t‰«‚|‰vry‰j|«‰j|«‰|«D] }‰|«Œ ‰j|«‰jd|«yr?)r r|r­Úinsert)ÚnodeÚneighborÚVisitÚ get_edgesÚ ordered_nodesÚvisitedÚvisitings €€€€€r rz"TopologicallySorted..VisitTsiø€Ø ˆxÑÜ �xÓ Ð Ø ˆw�Ø Ø ‡K�K�ÔØ ‡L�L�ÔÙ˜d–OˆÙ ˆH…oð$à ‡O�O�DÔØ×ј˜DÕ!r)rrzÚsorted)Úgraphrrrrrrs ` @@@@r ÚTopologicallySortedr;sIü€ô*�iÓ €)Ü ‹E€'Ü ‹U€(Ø€-÷ "ð "ô�UŽm€dÙ ˆ$…Kðà ÐrcóÌ—tjjd«xsÄtjjd«xs£tjjd«xs‚tjjd«xsatjjd«xs@tjjd«xstjjd«S)NÚGYP_CROSSCOMPILEÚAR_hostÚCC_hostÚCXX_hostÚ AR_targetÚ CC_targetÚ CXX_target)r4rCr~rrr ÚCrossCompileRequestedr%cs €ô �*‰*�.‰.Ð+Ó ,ò 'Ü �*‰*�.‰.˜Ó #ò 'ä �*‰*�.‰.˜Ó #ò 'ô �*‰*�.‰.˜Ó $ò 'ô �*‰*�.‰.˜Ó %ò  'ô �*‰*�.‰.˜Ó %ò  'ô �*‰*�.‰.˜Ó &ð (rr r),Ú __future__rr¨r¥Úos.pathr4rkr•rPÚ six.movesrr±rršrr"r)r%r=rArGrJr:r`rbreÚcompilerirmrqrvr„rˆrŒr²rµrÈrØrâÚ MutableSeträr rr%rrr Úr+sðõ &ã ÛÛÛ ÛÛ å%ô ˆfô ôˆyôò8òMò'ò&'òD9ò òð ò('ó ð('ðV ò Fó ð Fò)ò7ðD ˆ�‰Ð3Ó 4€ð4 ˆ"�*‰*�[Ó !€òò. %ò)ò&@ò  òFòR òð<02ó"óV ô>�×+Ñ+ô>ôB=�ô=ò&óP (r