asda?‰PNG  IHDR ? f ??C1 sRGB ??é gAMA ±? üa pHYs ? ??o¨d GIDATx^íüL”÷e÷Y?a?("Bh?_ò???¢§?q5k?*:t0A-o??¥]VkJ¢M??f?±8\k2íll£1]q?ù???T 3 yb@@sdZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z m Z m Z mZmZddlmZddlmZddlmZmZy ejZWnek rejZYnXee dGd ZdHd d ZdIddZdZdeZdeZ ej!j"dpedZ#e#dkr8ej$j%drdZ#n(ej$dkr"dZ#ne&eej'de(edZ)ej$j%drej!j"ddZ*ej+de*Z,xde,D]\Z-e-j%drjed dZ.ej/d d!ge.d"Z0ee0j1d#j+dJZ2e2ed$kre-Z#d Z)PqjWyee#d d%Z3Wn0e4k r Z5ze(e e5WYddZ5[5XnXd&d'Z6d(d)Z7Gd*d+d+e(Z8dKd,d-Z9d.d/Z:d0d1Z;d2d3Ze e3j=_?e e e fe3j@_>e e3j@_?e e e fe3jA_>e e3jA_?e e e e e fe3jB_>e e3jB_?e e e e e fe3jC_>e e3jC_?e e e e e fe3jD_>e e3jD_?e e e e fe3jE_>e e3jE_?e e e e fe3jF_>e e3jF_?e e e e fe3jG_>e e3jG_?d d4d5d6Z=d d4d7d8ZEd d4d9d:ZBn:ej$dkrDe e e e fe3j=_>e e3j=_?e e e e fe3jA_>e e3jA_?e e e e ee fe3jB_>e e3jB_?e e e e ee fe3jD_>e e3jD_?e e e e ee fe3jE_>e e3jE_?e e e e ee fe3jG_>e e3jG_?dZHdZId d4d;d6Z=d d4drre e e e fe3jJ_>e e3jJ_?e e e e fe3jK_>e e3jK_?e e e e fe3jL_>e e3jL_?e e e e e fe3jM_>e e3jM_?e e e e e fe3jN_>e e3jN_?e e e e e fe3jO_>e e3jO_?e e e e e fe3jP_>e e3jP_?e e e e e fe3jQ_>e e3jQ_?e e e e e fe3jR_>e e3jR_?dZSZTdL\ZUZVd d4dAd6Z=d d4dBd8ZEd d4dCd:ZBn*d d4dDd6Z=d d4dEd8ZEd d4dFd:ZBdS)MzRA basic extended attributes (xattr) implementation for Linux, FreeBSD and MacOS X.N)CDLLcreate_string_buffer c_ssize_tc_size_tc_char_pc_intc_uint32 get_errno) find_library)parse)Bufferprepare_subprocess_env)limitcCsVtj|dd>}yt|jddWntk r8dSXt|jddkSQRXdS)z4Determine if xattr is enabled on the filesystem zborg-tmp)dirprefixz user.namesvalueFN)tempfileZNamedTemporaryFilesetxattrfilenoOSErrorgetxattr)pathfdr/usr/lib64/python3.6/xattr.py is_enableds rTcCsyhi}t||d}xR|D]J}yt|||d||<Wqtk r`}z|jtkrPWYdd}~XqXqW|Stk r}z|jtjtjfkriSWYdd}~XnXdS)a Return all extended attributes on *path* as a mapping. *path* can either be a path (str or bytes) or an open file descriptor (int). *follow_symlinks* indicates whether symlinks should be followed and only applies when *path* is not an open file descriptor. The returned mapping maps xattr names (str) to values (bytes or None). None indicates, as a xattr value, an empty value, i.e. a value of length zero. )follow_symlinksN) listxattrrrerrnoENOATTRZENOTSUPZEPERM)rrresultnamesnameerrrget_all%s    r&z) r r ZERANGEr9osstrerror ValueError isinstanceintrlenbuffer)rvrdetect_buffer_too_smallr%msgrrr_checks   rHc Csrt|trtj|}tt}xPtj|}yt|||||dd}Wntk r^|d9}YqX||j fSqWdS)NT)rFr) rAstrr>fsencoderCrDgetrHr9raw)funcrsizer3nrrr_listxattr_inners   rPc Cs~t|trtj|}tj|}tt}xRtj|}yt||||||dd}Wntk rj|d9}Yq(X||j fSq(WdS)NT)rFr) rArIr>rJrCrDrKrHr9rL)rMrr$rNr3rOrrr_getxattr_inners    rQcCsXt|trtj|}tj|}|o*tj|}|r8t|nd}t||||||dddS)NrF)rF)rArIr>rJrCrH)rMrr$valuerNrrr_setxattr_inners    rS)rcs4fdd}t||\}}ddt|d|DS)Ncs<t|trtj|||Sr*tj|||Stj|||SdS)N)rArBlibc flistxattrr llistxattr)rr3rN)rrrrMs  zlistxattr..funccSs&g|]}|r|jd rtj|qS)ssystem.posix_acl_) startswithr>fsdecode).0r$rrr szlistxattr..)rPr4)rrrMrOr3r)rrrs rcs,fdd}t|||\}}|d|p*dS)NcsBt|trtj||||Sr.tj||||Stj||||SdS)N)rArBrT fgetxattrr lgetxattr)rr$r3rN)rrrrMs  zgetxattr..func)rQ)rr$rrMrOr3r)rrrs rcsfdd}t||||dS)NcsLd}t|tr tj|||||Sr6tj|||||Stj|||||SdS)Nr)rArBrT fsetxattrr lsetxattr)rr$rRrNflags)rrrrMs  zsetxattr..func)rS)rr$rRrrMr)rrrs rcs4fdd}t||\}}ddt|d|DS)NcsBt|trtj|||tSr.tj|||tStj|||tSdS)N)rArBrTrU XATTR_NOFLAGSrXATTR_NOFOLLOW)rr3rN)rrrrM s  zlistxattr..funccSsg|]}|rtj|qSr)r>rX)rYr$rrrrZszlistxattr..)rPr4)rrrMrOr3r)rrr s cs,fdd}t|||\}}|d|p*dS)NcsNt|trtj||||dtSr6tj||||dtStj||||dtSdS)Nr)rArBrTr[r`rra)rr$r3rN)rrrrMs  zgetxattr..func)rQ)rr$rrMrOr3r)rrrs csfdd}t||||dS)NcsNt|trtj||||dtSr6tj||||dtStj||||dtSdS)Nr)rArBrTr]r`rra)rr$rRrN)rrrrM's  zsetxattr..func)rS)rr$rRrrMr)rrr&s Zfreebsduser.user.cs4fdd}t||\}}ddt|d|DS)NcsBt|trtj|t||Sr.tj|t||Stj|t||SdS)N)rArBrTextattr_list_fdnsextattr_list_fileextattr_list_link)rr3rN)rrrrMIs  zlistxattr..funccSsg|]}|rttj|qSr)rr>rX)rYr$rrrrZSszlistxattr..)rPr8)rrrMrOr3r)rrrHs csXfdd}t|trtnt}|j|r8|t|d}t|||\}}|d|pVdS)NcsHt|trtj|t|||Sr2tj|t|||Stj|t|||SdS)N)rArBrTextattr_get_fdreextattr_get_fileextattr_get_link)rr$r3rN)rrrrMVs  zgetxattr..func)rArIrprefix_brWrCrQ)rr$rrM_prefixrOr3r)rrrUs   csJfdd}t|trtnt}|j|r8|t|d}t||||dS)NcsHt|trtj|t|||Sr2tj|t|||Stj|t|||SdS)N)rArBrTextattr_set_fdreextattr_set_fileextattr_set_link)rr$rRrN)rrrrMhs  zsetxattr..func)rArIrrkrWrCrS)rr$rRrrMrlr)rrrgs   cCsgS)a Return list of xattr names on a file. *path* can either be a path (str or bytes) or an open file descriptor (int). *follow_symlinks* indicates whether symlinks should be followed and only applies when *path* is not an open file descriptor. r)rrrrrryscCsdS)al Read xattr and return its value (as bytes) or None if its empty. *path* can either be a path (str or bytes) or an open file descriptor (int). *name* is the name of the xattr to read (str). *follow_symlinks* indicates whether symlinks should be followed and only applies when *path* is not an open file descriptor. Nr)rr$rrrrrscCsdS)a Write xattr on *path*. *path* can either be a path (str or bytes) or an open file descriptor (int). *name* is the name of the xattr to read (str). *value* is the value to write. It is either bytes or None. The latter signals that the value shall be empty (size equals zero). *follow_symlinks* indicates whether symlinks should be followed and only applies when *path* is not an open file descriptor. Nr)rr$rRrrrrrsi)N)Tr1)NF)rbrc)Wr=r r>re subprocesssysrZctypesrrrrrrrr Z ctypes.utilr Zpackaging.versionr Z parse_versionZhelpersr rr!AttributeErrorZENODATArDrr&ZHINT_MSGZLIBC_NOT_FOUND_NO_FALLBACK_MSGZLIBC_NOT_FOUND_FNAME_MSGenvironrKZ libc_nameplatformrWprintstderr ExceptionZXATTR_FAKEROOTr+r2ZpreloadsZpreloadr.Z check_outputZfakeroot_outputdecodeZfakeroot_versionrTrr%r4r8r9rHrPrQrSrZargtypesZrestyperVrUrr^r]rr\r[r`rardrgrfrhrjrirmrornreZEXTATTR_NAMESPACE_USERrrkrrrrs(