§
    ÇÁ³gê  ã                  óâ   — d Z ddlmZ ddlZddlZddlZddlmZ  G d„ de¦  «        Z	 G d„ dej
        ¦  «        Z G d	„ d
ej
        ¦  «        Z G d„ dej
        ¦  «        Z G d„ d¦  «        ZdS )a;  
ELF file parser.

This provides a class ``ELFFile`` that parses an ELF executable in a similar
interface to ``ZipFile``. Only the read interface is implemented.

Based on: https://gist.github.com/lyssdod/f51579ae8d93c8657a5564aefc2ffbca
ELF header: https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html
é    )ÚannotationsN)ÚIOc                  ó   — e Zd ZdS )Ú
ELFInvalidN)Ú__name__Ú
__module__Ú__qualname__© ó    úP/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/packaging/_elffile.pyr   r      s   € € € € € Ø€Dr   r   c                  ó   — e Zd ZdZdZdS )ÚEIClassé   é   N)r   r   r	   ÚC32ÚC64r
   r   r   r   r      ó   € € € € € Ø
€CØ
€C€C€Cr   r   c                  ó   — e Zd ZdZdZdS )ÚEIDatar   r   N)r   r   r	   ÚLsbÚMsbr
   r   r   r   r      r   r   r   c                  ó"   — e Zd ZdZdZdZdZdZdS )ÚEMachineé   é   é(   é>   é·   N)r   r   r	   ÚI386ÚS390ÚArmÚX8664ÚAArc64r
   r   r   r   r   !   s'   € € € € € Ø€DØ€DØ
€CØ€EØ€F€F€Fr   r   c                  ó:   — e Zd ZdZdd„Zdd
„Zedd„¦   «         ZdS )ÚELFFilez.
    Representation of an ELF executable.
    Úfú	IO[bytes]ÚreturnÚNonec           
     óœ  — || _         	 |                      d¦  «        }n'# t          j        $ r}t	          d¦  «        |‚d }~ww xY wt          |d d…         ¦  «        }|dk    rt	          d|›�¦  «        ‚|d         | _        |d         | _        	 ddd	d
dœ| j        | j        f         \  }| _        | _	        n3# t          $ r&}t	          d| j        › d| j        › d�¦  «        |‚d }~ww xY w	 |                      |¦  «        \
  }| _        }}| _        }| _        }| _        | _        d S # t          j        $ r}t	          d¦  «        |‚d }~ww xY w)NÚ16Bzunable to parse identificationé   s   ELFzinvalid magic: é   )z<HHIIIIIHHHz	<IIIIIIII©r   r   r,   )z>HHIIIIIHHHz	>IIIIIIIIr.   )z<HHIQQQIHHHz	<IIQQQQQQ©r   r   r-   )z>HHIQQQIHHHz	>IIQQQQQQr/   ))r   r   )r   r   )r   r   )r   r   zunrecognized capacity (z) or encoding (ú)z/unable to parse machine and section information)Ú_fÚ_readÚstructÚerrorr   ÚbytesÚcapacityÚencodingÚ_p_fmtÚ_p_idxÚKeyErrorÚmachineÚ_e_phoffÚflagsÚ_e_phentsizeÚ_e_phnum)Úselfr&   ÚidentÚeÚmagicÚe_fmtÚ_s          r   Ú__init__zELFFile.__init__.   sÄ  € ØˆŒð	FØ—J’J˜uÑ%Ô%ˆEˆEøÝŒ|ð 	Fð 	Fð 	FÝÐ=Ñ>Ô>ÀAÐEøøøøð	Føøøå�e˜B˜Q˜B”iÑ Ô ˆØ�JÒÐÝÐ8¨uÐ8Ð8Ñ9Ô9Ð9à˜aœˆŒØ˜aœˆŒð	ð
 @Ø?Ø?Ø?ð	/ð /ð
 Œ}˜dœmÐ,ô/.Ñ+ˆE�4”; ¤ øõ ð 	ð 	ð 	Ýð.¨$¬-ð .ð .Ø!œ]ð.ð .ð .ñô ð ðøøøøð	øøøð	Wð —
’
˜5Ñ!Ô!ñØØ”ØØØ”ØØ”
ØØÔ!Ø”��øåŒ|ð 	Wð 	Wð 	WÝÐNÑOÔOÐUVÐVøøøøð	WøøøsB   ‰ ŸA®>¾AÂ'B8 Â8
C(Ã!C#Ã#C(Ã,9D' Ä'EÄ6EÅEÚfmtÚstrútuple[int, ...]c                ó€   — t          j        || j                             t          j        |¦  «        ¦  «        ¦  «        S )N)r3   Úunpackr1   ÚreadÚcalcsize)r@   rG   s     r   r2   zELFFile._read\   s,   € ÝŒ}˜S $¤'§,¢,­v¬¸sÑ/CÔ/CÑ"DÔ"DÑEÔEÐEr   ú
str | Nonec                ó  — t          | j        ¦  «        D ]ñ}| j                             | j        | j        |z  z   ¦  «         	 |                      | j        ¦  «        }n# t          j	        $ r Y ŒYw xY w|| j
        d                  dk    rŒu| j                             || j
        d                  ¦  «         t          j        | j                             || j
        d                  ¦  «        ¦  «                             d¦  «        c S dS )zH
        The path recorded in the ``PT_INTERP`` section header.
        r   r   r   r   ú N)Úranger?   r1   Úseekr<   r>   r2   r8   r3   r4   r9   ÚosÚfsdecoderL   Ústrip)r@   ÚindexÚdatas      r   ÚinterpreterzELFFile.interpreter_   sø   € õ
 ˜4œ=Ñ)Ô)ð 		Oð 		OˆEØŒG�LŠL˜œ¨Ô):¸UÑ)BÑBÑCÔCÐCðØ—z’z $¤+Ñ.Ô.��øÝ”<ð ð ð Ø�ðøøøà�D”K ”NÔ# qÒ(Ð(ØØŒG�LŠL˜˜dœk¨!œnÔ-Ñ.Ô.Ð.Ý”;˜tœwŸ|š|¨D°´¸Q´Ô,@ÑAÔAÑBÔB×HÒHÈÑNÔNÐNÐNÐNØˆts   ÁAÁA/Á.A/N)r&   r'   r(   r)   )rG   rH   r(   rI   )r(   rN   )r   r   r	   Ú__doc__rF   r2   ÚpropertyrX   r
   r   r   r%   r%   )   so   € € € € € ðð ð,Wð ,Wð ,Wð ,Wð\Fð Fð Fð Fð ðð ð ñ „Xðð ð r   r%   )rY   Ú
__future__r   ÚenumrS   r3   Útypingr   Ú
ValueErrorr   ÚIntEnumr   r   r   r%   r
   r   r   ú<module>r`      s:  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð ð	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ðð ð ð ð ˆdŒlñ ô ð ð
ð ð ð ð ˆTŒ\ñ ô ð ð
ð ð ð ð ˆtŒ|ñ ô ð ðEð Eð Eð Eð Eñ Eô Eð Eð Eð Er   