+
    !¬Ÿbt:  ã                   ó,  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHtH	t	H
t
HtHt ]t ! R R]4      t ! R R4      t/ tR tR-R	 ltR-R
 ltR-R lt^RIHt ]P2                  ! 4       t]P                  tR tR tR t ^ RIH t  R t!R t#]PH                  t$]]$n%        ].]$n&        ]PN                  t'R]'n%        ].]'n&        ]PP                  t(]](n%        ].](n&        ]PR                  t)]])n%        ].])n&        ]PT                  t+]]+n%        ]].]+n&        ]]+n,        R t*]PZ                  t.]].n%        ]]
]	.].n&        ]].n,        R t-]P^                  t/]]/n%        ]].]/n&        ]]/n,        ]P^                  t0]]0n%        ]].]0n&        ]]0n,        R t/]Pb                  t2]]2n%        ]].]2n&        ]]2n,        R t1]Pf                  t3]]3n%        ]].]3n&        ]Ph                  t4]]4n%        ]].]4n&        ]Pj                  t5]]5n%        ]].]5n&        Rt6]7! ]R4      '       df   ]7! ]R4      '       dW   Rt6]Pp                  t9]]9n%        ]]]! ]	4      .]9n&        ]]9n,        ]Pt                  t;]];n%        ]]]! ]	4      .];n&        ]];n,        R t8R t:Rt<]7! ]R4      '       d   Rt<]Pz                  t=]]=n%        . ]=n&        R t>^ t?^t@^tA^tB^tC^tDRtE^tFR tG^ tH^@tI^€tJR!tKR"tLR#tMR$tNR%tOR&tPR'tQR(tRR)tSR*tTR+tU^ tV^tW^tX^tY^tZ^t[^t\R, t]]]! ]^! 4       4       R#   ]" d    R t! EL†i ; i).ai  
magic is a wrapper around the libmagic file identification library.

See README for more information.

Usage:

>>> import magic
>>> magic.from_file("testdata/test.pdf")
'PDF document, version 1.2'
>>> magic.from_file("testdata/test.pdf", mime=True)
'application/pdf'
>>> magic.from_buffer(open("testdata/test.pdf").read(1024))
'PDF document, version 1.2'
>>>

N)Úc_char_pÚc_intÚc_size_tÚc_void_pÚbyrefÚPOINTERc                   ó2   a a€ ] tR t^ t oV 3R ltRtVtV ;t# )ÚMagicExceptionc                ó:   <€ \         \        V `  V4       Wn        R # ©N)ÚsuperÚ	ExceptionÚ__init__Úmessage)Úselfr   Ú	__class__s   &&€Ú0/usr/lib/python3/dist-packages/magic/__init__.pyr   ÚMagicException.__init__!   s   ø€ ÜŒi˜Ñ'¨Ô0ØŽó    )r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   Ú__classdict__s   @@r   r	   r	       s   ù‡ € ÷õ r   r	   c                   óX   a € ] tR t^&t o RtRR ltR tR tR tR t	R t
R	 tR
 tRtV tR# )ÚMagicz3
Magic is a wrapper around the libmagic C library.
Nc                óD  € \         V n        V'       d   V ;P                  \        ,          un        V'       d   V ;P                  \        ,          un        V'       d   V ;P                  \        ,          un        V'       d   V ;P                  \
        ,          un        V'       d   V ;P                  \        ,          un        V'       d   V ;P                  \        ,          un        \        V P                  4      V n	        \        P                  ! 4       V n        \        V P                  V4       V'       d'   \        '       d   \        4       R8  d   \!        R4      h\"        '       d    V P%                  \&        ^@4       R# R#   \(         d   p Rp?R# Rp?ii ; i)aÃ  
Create a new libmagic wrapper.

mime - if True, mimetypes are returned instead of textual descriptions
mime_encoding - if True, codec is returned
magic_file - use a mime database other than the system default
keep_going - don't stop at the first match, keep going
uncompress - Try to look inside compressed files.
raw - Do not try to decode "non-printable" chars.
extension - Print a slash-separated list of valid extensions for the file type found.
i  z<MAGIC_EXTENSION is not supported in this version of libmagicN)Ú
MAGIC_NONEÚflagsÚMAGIC_MIME_TYPEÚMAGIC_MIME_ENCODINGÚMAGIC_CONTINUEÚMAGIC_COMPRESSÚ	MAGIC_RAWÚMAGIC_EXTENSIONÚ
magic_openÚcookieÚ	threadingÚLockÚlockÚ
magic_loadÚ_has_versionÚversionÚNotImplementedErrorÚ
_has_paramÚsetparamÚMAGIC_PARAM_NAME_MAXr	   )	r   ÚmimeÚ
magic_fileÚmime_encodingÚ
keep_goingÚ
uncompressÚrawÚ	extensionÚes	   &&&&&&&& r   r   ÚMagic.__init__+   sò   € ô  ˆŒ
ßØ�JŠJœ/Õ)�JßØ�JŠJÔ-Õ-�JßØ�JŠJœ.Õ(�JßØ�JŠJœ.Õ(�JßØ�JŠJœ)Õ#�JßØ�JŠJœ/Õ)�Jä  §¡Ó,ˆŒÜ—N’NÓ$ˆŒ	ä�4—;‘; 
Ô+÷ Ÿl›l¬g«i¸#¬oÜ%Ð&dÓeÐe÷ ‹:ðØ—‘Ô2°BÖ7ñ øô "ô õ ûðús   Å/F	 Æ	FÆFc                óz  € V P                   ;_uu_ 4         \        V4      \        8X  d#   \        \        8w  d   VP	                  RRR7      p\        \        V P                  V4      4      uuRRR4       #   \         d&   pT P                  T4      u Rp?uuRRR4       # Rp?ii ; i  + '       g   i     R# ; i)z 
Identify the contents of `buf`
úutf-8Úreplace)ÚerrorsN)
r,   ÚtypeÚstrÚbytesÚencodeÚmaybe_decodeÚmagic_bufferr)   r	   Ú_handle509Bug)r   Úbufr;   s   && r   Úfrom_bufferÚMagic.from_buffer^   s†   € ð �Y�Y‹Yð	-ô
 ˜“9¤Ô#¬¬u¬ØŸ*™* W°Y˜*Ó?�CÜ#¤L°·±¸cÓ$BÓC÷ ŠYøô "ô -Ø×)Ñ)¨!Ó,Ô,÷ ŠYûð-ú÷ �YˆYús5   •B)—AA6Á6B&ÂB!ÂB&ÂB)Â!B&Â&B)Â)B:	c                ón  € \        V4      ;_uu_ 4         R R R 4       V P                  ;_uu_ 4         \        \        V P                  V4      4      uuR R R 4       #   + '       g   i     LO; i  \
         d&   pT P                  T4      u R p?uuR R R 4       # R p?ii ; i  + '       g   i     R # ; ir   )Ú
_real_openr,   rE   r5   r)   r	   rG   )r   Úfilenamer;   s   && r   Ú	from_fileÚMagic.from_filen   s{   € ä˜×!Õ!Ø÷ "ð �Y�Y‹Yð-Ü#¤J¨t¯{©{¸HÓ$EÓF÷ ŠY÷ "×!ûô "ô -Ø×)Ñ)¨!Ó,Ô,÷	 ŠYûð-ú÷ �YˆYús?   ”A²B#´A0ÁA-	Á0B Á;BÂB ÂB#ÂB Â B#Â#B4	c                ó  € V P                   ;_uu_ 4         \        \        V P                  V4      4      uuR R R 4       #   \         d&   pT P                  T4      u R p?uuR R R 4       # R p?ii ; i  + '       g   i     R # ; ir   )r,   rE   Úmagic_descriptorr)   r	   rG   )r   Úfdr;   s   && r   Úfrom_descriptorÚMagic.from_descriptory   s_   € Ø�Y�Y‹Yð-Ü#Ô$4°T·[±[À"Ó$EÓF÷ ŠYøô "ô -Ø×)Ñ)¨!Ó,Ô,÷	 ŠYûð-ú÷ �YˆYús4   •A3—A Á A0ÁA+ÁA0ÁA3Á+A0Á0A3Á3B	c                ó`   € VP                   f    V P                  \        ,          '       d   R# Vh)Nzapplication/octet-stream)r   r!   r"   )r   r;   s   &&r   rG   ÚMagic._handle509Bug€   s$   € ð �9‰9Ò $§*¡*¬×">Ô">Ù-àˆGr   c                ó.   € \        V P                  W4      # r   )Úmagic_setparamr)   )r   ÚparamÚvals   &&&r   r2   ÚMagic.setparam‰   s   € Ü˜dŸk™k¨5Ó6Ð6r   c                ó.   € \        V P                  V4      # r   )Úmagic_getparamr)   )r   rY   s   &&r   ÚgetparamÚMagic.getparamŒ   s   € Ü˜dŸk™k¨5Ó1Ð1r   c                óª   € \        V R 4      '       dA   V P                  '       d-   \        '       d   \        V P                  4       RV n        R# R# R# R# )r)   N)Úhasattrr)   Úmagic_close)r   s   &r   Ú__del__ÚMagic.__del__�   s;   € ô �4˜×"Ò" t§{§{ {·{³{Ü˜Ÿ™Ô$ØˆDŽKñ 8C¡{Ñ"r   )r)   r!   r,   )FNFFFFF)r   r   r   r   Ú__doc__r   rI   rN   rS   rG   r2   r^   rc   r   r   )r   s   @r   r   r   &   s8   ø‡ € ñô1òf-ò 	-ò-òò7ò2÷ð r   r   c                 ób   € \         P                  V 4      pVf   \        V R7      ;p\         V &   V# )N)r4   )Ú
_instancesÚgetr   )r4   Úis   & r   Ú_get_magic_typerj   ¢   s.   € Ü�‰�tÓ€AØ‚yÜ$¨$Ô/Ð/ˆŒJ�tÑØ€Hr   Fc                ó:   € \        V4      pVP                  V 4      # )zÌ"
Accepts a filename and returns the detected filetype.  Return
value is the mimetype if mime=True, otherwise a human readable
name.

>>> magic.from_file("testdata/test.pdf", mime=True)
'application/pdf'
)rj   rN   )rM   r4   Úms   && r   rN   rN   ©   s   € ô 	˜Ó€AØ�;‰;�xÓ Ð r   c                ó:   € \        V4      pVP                  V 4      # )zâ
Accepts a binary string and returns the detected filetype.  Return
value is the mimetype if mime=True, otherwise a human readable
name.

>>> magic.from_buffer(open("testdata/test.pdf").read(1024))
'PDF document, version 1.2'
)rj   rI   )Úbufferr4   rl   s   && r   rI   rI   ¶   s   € ô 	˜Ó€AØ�=‰=˜Ó Ð r   c                ó:   € \        V4      pVP                  V 4      # )zð
Accepts a file descriptor and returns the detected filetype.  Return
value is the mimetype if mime=True, otherwise a human readable
name.

>>> f = open("testdata/test.pdf")
>>> magic.from_descriptor(f.fileno())
'PDF document, version 1.2'
)rj   rS   )rR   r4   rl   s   && r   rS   rS   Ã   s   € ô 	˜Ó€AØ×Ñ˜RÓ Ð r   )Úloaderc                 óH   € V f   \        V^ ,          4      p\        V4      hV # r   ©Úmagic_errorr	   ©ÚresultÚfuncÚargsÚerrs   &&& r   Úerrorcheck_nullry   Ö   s%   € Ø‚~Ü˜$˜q�'Ó"ˆÜ˜SÓ!Ð!àˆr   c                 óN   € V R8X  d   \        V^ ,          4      p\        V4      hV # )é   éÿÿÿÿrr   rt   s   &&& r   Úerrorcheck_negative_oner}   Þ   s'   € Ø�„|Ü˜$˜q�'Ó"ˆÜ˜SÓ!Ð!àˆr   c                 óH   € \         \        8X  d   V # V P                  R R4      # )r>   Úbackslashreplace)rB   rC   Údecode)Úss   &r   rE   rE   è   s"   € ä
Œe„|Øˆð �x‰x˜Ð!3Ó4Ð4r   )ÚPathLikec                 óR   € \        V \        4      '       d   V P                  4       # V # r   )Ú
isinstancer‚   Ú
__fspath__©rM   s   &r   Úunpathr‡   ô   s#   € Ü�h¤×)Ò)Ø×&Ñ&Ó(Ð(àˆOr   c                 ó   € V # r   © r†   s   &r   r‡   r‡   ú   s   € Øˆr   c                 ó4  € V f   R # \        V 4      p \        P                  ^ ,          ^8*  ;'       d    \        V \        4      ;'       g3    \        P                  ^ ,          ^8¬  ;'       d    \        V \
        4      pV'       d   V P                  RR4      # V # )Nr>   Úsurrogateescape)r‡   ÚsysÚversion_infor„   ÚunicoderB   rD   )rM   Ú
is_unicodes   & r   Úcoerce_filenamer�   ý   s�   € ØÒÙä�hÓ€Hô ×"Ñ" 1Õ%¨Ñ*÷ /ð /Ü˜H¤gÓ.÷-ð -ä×"Ñ" 1Õ%¨Ñ*÷ ,ð ,Ü˜X¤sÓ+ð ÷ Ø�‰˜wÐ(9Ó:Ð:àˆr   c                 ó,   € \        V \        V4      4      # r   )Ú_magic_filer�   ©r)   rM   s   &&r   r5   r5   (  ó   € Ü�vœ¨xÓ8Ó9Ð9r   c                 ó,   € \        W\        V4      4      # r   )Ú_magic_bufferÚlen)r)   rH   s   &&r   rF   rF   2  s   € Ü˜¤c¨#£hÓ/Ð/r   c                 ó   € \        W4      # r   )Ú_magic_descriptor)r)   rR   s   &&r   rQ   rQ   A  s   € Ü˜VÓ(Ð(r   c                 ó,   € \        V \        V4      4      # r   )Ú_magic_loadr�   r“   s   &&r   r-   r-   K  r”   r   rX   r]   Tc                 óp   € \         '       g   \        R 4      h\        V4      p\        W\	        V4      4      # )zmagic_setparam not implemented)r1   r0   r   Ú_magic_setparamr   )r)   rY   rZ   Úvs   &&& r   rX   rX   i  s-   € ß‹:Ü!Ð"BÓCÐCÜ�‹€AÜ˜6¬%°«(Ó3Ð3r   c                 ó†   € \         '       g   \        R 4      h\        4       p\        W\	        V4      4       VP
                  # )zmagic_getparam not implemented)r1   r0   r   Ú_magic_getparamr   Úvalue)r)   rY   rZ   s   && r   r]   r]   p  s2   € ß‹:Ü!Ð"BÓCÐCÜ
‹*€CÜ�F¤5¨£:Ô.Ø�9‰9Ðr   Úmagic_versionc                  óD   € \         '       g   \        R 4      h\        4       # )zmagic_version not implemented)r.   r0   r¢   r‰   r   r   r/   r/   €  s   € ß‹<Ü!Ð"AÓBÐBÜ‹?Ðr   i   i   é   i   i   i    i @  i €  i   i   i   i   i   c                 ó˜  a
€ ^ RI o
^ RIp^ RIHp V
3R lp. ROpV F  pV! VP                  V,          4      W&   K   	  VP                  R4      p\        R.4      pVP                  P                  4        FQ  w  r‰VP                  V4      '       g   K  W€9   d*   W‡9   d   K,  W,          V	8w  d   \        RV,           4      hKM  W�V&   KS  	  R# )é    N)Úcompatc                 ó   <a € V V3R  lpV# )c                  ó@   <€ SP                  R \        4       S! V / VB # )z…Using compatibility mode with libmagic's python binding. See https://github.com/ahupp/python-magic/blob/master/COMPAT.md for details.)ÚwarnÚPendingDeprecationWarning)rw   ÚkwargsÚfnÚwarningss   *,€€r   Ú_Ú3_add_compat.<locals>.deprecation_wrapper.<locals>._´  s*   ø€ Ø�M‰Mð_ä)ô+ñ
 �tÐ&˜vÑ&Ð&r   r‰   )r­   r¯   r®   s   f €r   Údeprecation_wrapperÚ(_add_compat.<locals>.deprecation_wrapper³  s   ù€ ö	'ð ˆr   z	^[A-Z_]+$Ú
MAGIC_MIMEzinconsistent value for )Údetect_from_filenameÚdetect_from_contentÚdetect_from_fobjÚopen)
r®   ÚreÚmagicr§   Ú__dict__ÚcompileÚsetÚitemsÚmatchr   )Ú	to_moduler¸   r§   r±   r­   ÚfnameÚis_const_reÚallowed_inconsistentÚnamer¡   r®   s   &         @r   Ú_add_compatrÄ   ¯  s²   ø€ ßÝõ	ò
€Bó ˆÙ.¨v¯©¸uÕ/EÓFˆ	Óñ ð —*‘*˜[Ó)€KÜ ˜~Ó.ÐØ—‘×,Ñ,Ö.‰ˆØ×Ñ˜T×"Ô"ØÔ ØÔ/ÙØ•? eÔ+Ü#Ð$=ÀÕ$DÓEÐEáà"'˜$“ó /r   )F)_re   rŒ   ÚglobÚctypesÚctypes.utilr*   Úloggingr   r   r   r   r   r   r·   rL   r   r	   r   rg   rj   rN   rI   rS   Ú rp   Úload_libÚlibmagicÚmagic_try   r}   rE   Úosr‚   r‡   ÚImportErrorr�   r(   ÚrestypeÚargtypesrb   rs   Úmagic_errnor5   r’   ÚerrcheckrF   r–   rQ   r™   r-   r›   Úmagic_setflagsÚmagic_checkÚmagic_compiler1   ra   rX   r�   r]   r    r.   r¢   r/   r    ÚMAGIC_DEBUGÚMAGIC_SYMLINKr%   ÚMAGIC_DEVICESr"   r#   r³   r'   r$   ÚMAGIC_CHECKÚMAGIC_PRESERVE_ATIMEr&   ÚMAGIC_ERRORÚMAGIC_NO_CHECK_COMPRESSÚMAGIC_NO_CHECK_TARÚMAGIC_NO_CHECK_SOFTÚMAGIC_NO_CHECK_APPTYPEÚMAGIC_NO_CHECK_ELFÚMAGIC_NO_CHECK_ASCIIÚMAGIC_NO_CHECK_TROFFÚMAGIC_NO_CHECK_FORTRANÚMAGIC_NO_CHECK_TOKENSÚMAGIC_PARAM_INDIR_MAXr3   ÚMAGIC_PARAM_ELF_PHNUM_MAXÚMAGIC_PARAM_ELF_SHNUM_MAXÚMAGIC_PARAM_ELF_NOTES_MAXÚMAGIC_PARAM_REGEX_MAXÚMAGIC_PARAM_BYTES_MAXrÄ   Úglobalsr‰   r   r   Ú<module>rì      sù  ðñó$ Û Û Û Û Û ç F× Fð €
ô�Yô ÷vñ vðr €
òô
!ô
!ô!õ Ø�?Š?Ó€à
�/‰/€òòò5ð	Ýòòð* × Ñ €
Ø€
Ô Ø�g€
Ô à×"Ñ"€Ø€Ô Ø�y€Ô à×"Ñ"€Ø€Ô Ø�y€Ô à×"Ñ"€Ø€Ô Ø�y€Ô à×!Ñ!€Ø€Ô Ø Ð*€Ô Ø&€Ô ò:ð ×%Ñ%€Ø €Ô Ø! 8¨XÐ6€Ô Ø(€Ô ò0ð ×,Ñ,Ð Ø#Ð Ô Ø$ eÐ,Ð Ô Ø+Ð Ô à×-Ñ-Ð Ø$Ð Ô Ø% uÐ-Ð Ô Ø,Ð Ô ò)ð ×!Ñ!€Ø€Ô Ø Ð*€Ô Ø.€Ô ò:ð ×(Ñ(€Ø€Ô Ø" EÐ*€Ô à×"Ñ"€Ø€Ô Ø Ð*€Ô à×&Ñ&€Ø€Ô Ø! 8Ð,€Ô à€
Ù
ˆ8Ð%×&Ò&©7°8Ð=M×+NÒ+NØ€JØ×-Ñ-€OØ#€OÔØ '¨±¸Ó0AÐB€OÔØ6€OÔà×-Ñ-€OØ#€OÔØ '¨±¸Ó0AÐB€OÔØ6€OÔò4òð €Ù
ˆ8�_×%Ò%Ø€LØ×*Ñ*€MØ!€MÔØ€MÔòð €
Ø€Ø€Ø€Ø€Ø€ØÐ ð €
Ø€à€Ø€ØÐ Ø€	Ø€à"Ð ØÐ ØÐ Ø!Ð ØÐ ØÐ ØÐ Ø!Ð Ø Ð àÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ ò#(ñL ‰G‹IÖ øðy ô õðús   Â	L Ì
LÌL