§
    ÷yIfÅÄ  ã            	      óš  — U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dlm
Z
 d dlmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d dlZd d
lmZ d dlmZmZm Z m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z<m=Z= d dl>m?Z?m@Z@mAZAmBZB d dlCmDZDmEZEmFZF d dlGmHZH d dlImJZJ d d
lKmZL d dlMmNZNmOZOmPZPmQZQmRZRmSZSmTZT d dlUmVZVmWZWmXZXmYZY ejZ        ZZ G d„ de¦  «        Z[dvd „Z\dwd#„Z]i d$d%d&d'd(e*j^        if“d)d*d+d,d(e*j^        if“d-d.d/d0d(e*j^        if“d1d2d3d4d(e*j^        if“d5d6d7d8e*j^        d9d:œf“d;d<d=d>e*j^        d9d:œf“d?d@dAdBe*j^        d9d:œf“dCdDdEdFe*j^        d9d:œf“dGdHdIdJe*j^        d9d:œf“dKdLdMdNe*j^        d9d:œf“dOdPdQdRdSge*j^        d9dTœf“dUd%dVdWd(e*j^        if“dXdYdZd[d(e*j^        if“d\d]d^d_e*j^        d`gdaœf“dbdcdddee*j^        d`gdaœf“dfdgdhdid(e*j^        if“djdkdldmd(e*j^        if“dndodpdqd(e*j^        ifi¥Z_dre`ds<    G dt„ due%e7e!ja        ej#        ¦  «        ZbdS )xé    )ÚannotationsN)Údefaultdict)ÚCallableÚIterableÚIteratorÚSequence)ÚTextIOWrapper)ÚPath)ÚPattern)Ú
ModuleType)ÚAnyÚProtocol)Únodes)ÚcheckersÚ
exceptionsÚ
interfacesÚ	reporters)ÚBaseChecker)Ú_ArgumentsManager)ÚMAIN_CHECKER_NAMEÚ	MSG_TYPESÚMSG_TYPES_STATUSÚWarningScope)ÚHIGH)Ú_make_linter_options)Úload_resultsÚsave_results)Ú_is_ignored_fileÚdiscover_package_pathÚexpand_modules)Ú_MessageStateHandler)Úcheck_parallel)Úreport_messages_by_module_statsÚreport_messages_statsÚreport_total_messages_stats)Ú_is_relative_toÚaugmented_sys_pathÚget_fatal_error_messageÚprepare_crash_report)ÚMessageÚMessageDefinitionÚMessageDefinitionStore)ÚBaseReporter)ÚTextReporter)ÚDirectoryNamespaceDictÚFileItemÚManagedMessageÚMessageDefinitionTupleÚMessageLocationTupleÚModuleDescriptionDictÚOptions)Ú	ASTWalkerÚ	FileStateÚLinterStatsÚutilsc                  ó   — e Zd Z	 d
dd	„ZdS )ÚGetAstProtocolNÚfilepathÚstrÚmodnameÚdataú
str | NoneÚreturnúnodes.Modulec                ó   — d S ©N© )Úselfr<   r>   r?   s       úH/var/www/piapp/venv/lib/python3.11/site-packages/pylint/lint/pylinter.pyÚ__call__zGetAstProtocol.__call__K   s   € à�só    rD   )r<   r=   r>   r=   r?   r@   rA   rB   )Ú__name__Ú
__module__Ú__qualname__rH   rE   rI   rG   r;   r;   J   s0   € € € € € à>Bðð ð ð ð ð ð rI   r;   rA   r=   c                 óî   — t          t          j        t          ¦  «        sJ ‚t          t          j                             ¦   «         d¬¦  «        t          _        t          j                             ¦   «         S )Núutf-8©Úencoding)Ú
isinstanceÚsysÚstdinr	   ÚdetachÚreadrE   rI   rG   Ú_read_stdinrV   P   sN   € å•c”i¥Ñ/Ô/Ð/Ð/Ð/Ý�cœi×.Ò.Ñ0Ô0¸7ÐCÑCÔC…C„IÝŒ9�>Š>ÑÔÐrI   Úreporter_classútype[BaseReporter]c                ó   — | }t           j                             |¦  «        }t           j                             |¦  «        }|                     d¦  «        d         }t          ||¦  «        }t          |t          ¦  «        sJ |› d�¦   «         ‚|S )Nú.éÿÿÿÿz is not a BaseReporter)ÚastroidÚmodutilsÚget_module_partÚload_module_from_nameÚsplitÚgetattrÚ
issubclassr-   )rW   ÚqnameÚmodule_partÚmoduleÚ
class_nameÚklasss         rG   Ú_load_reporter_by_classrh   W   s„   € Ø€EÝÔ"×2Ò2°5Ñ9Ô9€KÝÔ×3Ò3°KÑ@Ô@€FØ—’˜SÑ!Ô! "Ô%€JÝ�F˜JÑ'Ô'€EÝ�e�\Ñ*Ô*ÐLÐL¨uÐ,LÐ,LÐ,LÑLÔLÐLØ€LrI   ÚF0001z%sÚfatalzoUsed when an error occurred preventing the analysis of a               module (unable to find it for instance).ÚscopeÚF0002z%s: %súastroid-errorzšUsed when an unexpected error occurred while building the Astroid  representation. This is usually accompanied by a traceback. Please report such errors !ÚF0010zerror while code parsing: %súparse-errorzlUsed when an exception occurred while building the Astroid representation which could be handled by astroid.ÚF0011z)error while parsing the configuration: %szconfig-parse-errorzJUsed when an exception occurred while parsing a pylint configuration file.ÚI0001z0Unable to run raw checkers on built-in module %súraw-checker-failedzRUsed to inform that a built-in module has not been checked using the raw checkers.F)rk   Údefault_enabledÚI0010z#Unable to consider inline option %rzbad-inline-optionzUUsed when an inline option is either badly formatted or can't be used inside modules.ÚI0011zLocally disabling %s (%s)zlocally-disabledzEUsed when an inline option disables a message or a messages category.ÚI0013zIgnoring entire filezfile-ignoredz0Used to inform that the file will not be checkedÚI0020zSuppressed %s (from line %d)zsuppressed-messagezºA message was triggered on a line, but suppressed explicitly by a disable= comment in the file. This message is not generated for messages that are ignored due to configuration settings.ÚI0021zUseless suppression of %szuseless-suppressionzbReported when a message is explicitly disabled for a line or a block of code, but never triggered.ÚI0022z+Pragma "%s" is deprecated, use "%s" insteadzdeprecated-pragmaz—Some inline pylint options have been renamed or reworked, only the most recent form should be used. NOTE:skip-all is only available with pylint >= 0.26)ÚI0014zdeprecated-disable-all)Ú	old_namesrk   rs   ÚE0001úsyntax-errorz0Used when a syntax error is raised for a module.ÚE0011zUnrecognized file option %rzunrecognized-inline-optionz2Used when an unknown inline option is encountered.ÚW0012zKUnknown option value for '%s', expected a valid pylint message and got '%s'zunknown-option-valuez8Used when an unknown value is encountered for an option.)ÚE0012zbad-option-value)rk   r{   ÚR0022z!Useless option value for '%s', %szuseless-option-valuezOUsed when a value for an option that is now deleted from pylint is encountered.ÚE0013z;Plugin '%s' is impossible to load, is it installed ? ('%s')úbad-plugin-valuez0Used when a bad value is used in 'load-plugins'.ÚE0014zOOut-of-place setting encountered in top level configuration-section '%s' : '%s'zbad-configuration-sectionz_Used when we detect a setting in the top level of a toml configuration that shouldn't be there.ÚE0015zUnrecognized option found: %szunrecognized-optionz7Used when we detect an option that we do not recognize.z!dict[str, MessageDefinitionTuple]ÚMSGSc                  óæ  — e Zd ZU dZeZeZdZde	d<   dddœZ
	 	 	 	 d€d�d„Zd‚d„Zdƒd„d„Zd‚d„Zd…d„Zd†d!„Zd‡d#„Zdˆd&„Zd‰d(„ZdŠd+„Zd‚d,„Zd‹d-„Zd‚d.„Zd‚d/„Zd‰d0„ZdŒd2„Zd‰d3„Zedƒd�d7„¦   «         Zd‚d8„ZdŽd<„Zd�d=„Z d�dB„Z!d‘dE„Z"d’dI„Z#d“dL„Z$d”dO„Z%d•dQ„Z&d–dR„Z'd—dT„Z(d˜d™dU„Z)dšdZ„Z*e+j,        d›d\„¦   «         Z-	 d˜dœd^„Z.d�dg„Z/dždi„Z0d‚dj„Z1dƒdŸdm„Z2dƒdŸdn„Z3d dz„Z4	 	 	 	 	 	 	 d¡d¢d|„Z5d	e6j7        fd£d~„Z8d‚d„Z9d	S )¤ÚPyLintera«  Lint Python modules using external checkers.

    This is the main checker controlling the other ones and the reports
    generation. It is itself both a raw checker and an astroid checker in order
    to:
    * handle message activation / deactivation at the module level
    * handle some basic but necessary stats' data (number of classes, methods...)

    IDE plugin developers: you may have to call
    `astroid.MANAGER.clear_cache()` across runs if you want
    to ensure the latest code version is actually checked.

    This class needs to support pickling for parallel linting to work. The exception
    is reporter member; see check_parallel function for more details.
    z"pylint-crash-%Y-%m-%d-%H-%M-%S.txtr=   Úcrash_file_pathú%Options controlling analysis messagesú2Options related to output formatting and reporting)úMessages controlÚReportsrE   NÚoptionsr5   Úreporterú7reporters.BaseReporter | reporters.MultiReporter | NoneÚoption_groupsútuple[tuple[str, str], ...]Úpylintrcr@   rA   ÚNonec                ó¨  — t          j        | d¬¦  «         t          j        | | ¦  «         |  |r|                      |¦  «         n!|                      t	          ¦   «         ¦  «         i | _        	 t          j        t          ¦  «        | _	        	 i | _
        	 t          ¦   «         | _        |t          | ¦  «        z   | _        |D ]}|d         | j        |d         <   Œg |¢d‘d‘R | _        g | _        	 d| _        t&          j                             | ¦  «         t*          j                             | | ¦  «         dd	t.          fd
dt0          fddt2          ff| _        t7          | j        j        ¦  «        | _        d| _        g | _         tC          d| j        d¬¦  «        | _"        d| _#        d | _$        d| _%        g | _&        |  '                    | ¦  «         d S )NÚpylint)Úprogé   r   )rŒ   rŠ   )r�   r‹   FÚRP0001zMessages by categoryÚRP0002z% errors / warnings by moduleÚRP0003ÚMessagesÚ T)Úis_base_filestate)(r   Ú__init__r!   Úset_reporterr.   Ú
_reportersÚcollectionsr   ÚlistÚ	_checkersÚ_dynamic_pluginsr8   Ústatsr   rŽ   Úoption_groups_descsÚ_option_groupsÚfail_on_symbolsÚ_error_moder   ÚReportsHandlerMixInr   r   r%   r#   r$   Úreportsr,   ÚconfigÚ
py_versionÚ
msgs_storeÚ
msg_statusÚ_by_id_managed_msgsr7   Ú
file_stateÚcurrent_nameÚcurrent_fileÚ_ignore_fileÚ_ignore_pathsÚregister_checker)rF   rŽ   r�   r‘   r“   Ú	opt_groups         rG   rŸ   zPyLinter.__init__  s  € õ 	Ô" 4¨hÐ7Ñ7Ô7Ð7ÝÔ% d¨DÑ1Ô1Ð1ð 	ÐGØð 	.Ø×Ò˜hÑ'Ô'Ð'Ð'à×Ò�l™nœnÑ-Ô-Ð-ØCEˆŒØCõ Ô#¥DÑ)Ô)ð 	Œð 	AØTVˆÔØ)õ !‘]”]ˆŒ
ð !(Õ*>¸tÑ*DÔ*DÑ DˆŒØ&ð 	Bð 	BˆIØ5>¸q´\ˆDÔ$ Y¨q¤\Ñ2Ð2ð<
Øð<
àIð<
ð Nð<
ð <
ˆÔð
 +-ˆÔØTØ ˆÔåÔ%×.Ò.¨tÑ4Ô4Ð4ÝÔ×%Ò% d¨DÑ1Ô1Ð1ð Ð-Õ/JÐKàØ/Ý/ðð
 �zÕ#8Ð9ð
ˆŒõ 1°´Ô1GÑHÔHˆŒØˆŒØ9;ˆÔ õ $ B¨¬È4ÐPÑPÔPˆŒØ!#ˆÔØ(,ˆÔØ!ˆÔØ13ˆÔà×Ò˜dÑ#Ô#Ð#Ð#Ð#rI   c                óV   — t          j        | ¦  «         t          j        | ¦  «         d S rD   )r   Ú
initializer   ©rF   s    rG   Úload_default_pluginszPyLinter.load_default_pluginsi  s*   € ÝÔ˜DÑ!Ô!Ð!ÝÔ˜TÑ"Ô"Ð"Ð"Ð"rI   FÚmodnamesúIterable[str]ÚforceÚboolc                óè   — |D ]n}|| j         v r|sŒ	 t          j                             |¦  «        }|                     | ¦  «         || j         |<   ŒN# t
          $ r}|| j         |<   Y d}~Œgd}~ww xY wdS )a‹  Check a list of pylint plugins modules, load and register them.

        If a module cannot be loaded, never try to load it again and instead
        store the error message for later use in ``load_plugin_configuration``
        below.

        If `force` is True (useful when multiprocessing), then the plugin is
        reloaded regardless if an entry exists in self._dynamic_plugins.
        N)r¥   r\   r]   r_   ÚregisterÚModuleNotFoundError)rF   r½   r¿   r>   re   Úmnf_es         rG   Úload_plugin_moduleszPyLinter.load_plugin_modulesm  s«   € ð  ð 	7ð 	7ˆGØ˜$Ô/Ð/Ð/¸Ð/Øð7Ý Ô)×?Ò?ÀÑHÔH�Ø—’ Ñ%Ô%Ð%Ø17�Ô% gÑ.Ð.øÝ&ð 7ð 7ð 7Ø16�Ô% gÑ.Ð.Ð.Ð.Ð.Ð.øøøøð7øøøð	7ð 	7s   ’>AÁ
A/Á
A*Á*A/c                ó>  — | j                              ¦   «         D ]Z\  }}t          |t          ¦  «        r|                      d||fd¬¦  «         Œ5t          |d¦  «        r|                     | ¦  «         Œ[d„ | j                              ¦   «         D ¦   «         | _         dS )aÎ  Call the configuration hook for plugins.

        This walks through the list of plugins, grabs the "load_configuration"
        hook, if exposed, and calls it to allow plugins to configure specific
        settings.

        The result of attempting to load the plugin of the given name
        is stored in the dynamic plugins dictionary in ``load_plugin_modules`` above.

        ..note::
            This function previously always tried to load modules again, which
            led to some confusion and silent failure conditions as described
            in GitHub issue #7264. Making it use the stored result is more efficient, and
            means that we avoid the ``init-hook`` problems from before.
        rƒ   r   )ÚargsÚlineÚload_configurationc                óB   — i | ]\  }}|t          |t          ¦  «         “ŒS rE   )rQ   rÃ   )Ú.0r>   Úvals      rG   ú
<dictcomp>z6PyLinter.load_plugin_configuration.<locals>.<dictcomp>œ  s<   € ð !
ð !
ð !
á�˜ð � CÕ)<Ñ=Ô=Ð=ð!
ð !
ð !
rI   N)r¥   ÚitemsrQ   rÃ   Úadd_messageÚhasattrrÉ   )rF   r>   Úmodule_or_errors      rG   Úload_plugin_configurationz"PyLinter.load_plugin_configuration�  sÈ   € ð  )-Ô(=×(CÒ(CÑ(EÔ(Eð 	9ð 	9Ñ$ˆG�_Ý˜/Õ+>Ñ?Ô?ð 9Ø× Ò Ø&¨g°Ð-GÈað !ñ ô ð ð õ ˜Ð*>Ñ?Ô?ð 9Ø×2Ò2°4Ñ8Ô8Ð8øð
!
ð !
à $Ô 5× ;Ò ;Ñ =Ô =ð!
ñ !
ô !
ˆÔÐÐrI   Úreporter_namesc           	     ó¢  — | j         sdS g }g }t          j        ¦   «         5 }|                     d¦  «        D ]�}|                     dd¦  «        ^}}|                      |¦  «        }|                     |¦  «         |rG|                     t          |d         dd¬¦  «        ¦  «        }||_        |                     |¦  «         ŒŽ| 	                    ¦   «         j
        }	ddd¦  «         n# 1 swxY w Y   t          |¦  «        dk    s|r*|                      t          j        ||	¦  «        ¦  «         dS |                      |d         ¦  «         dS )	z7Load the reporters if they are available on _reporters.Nú,ú:r˜   r   ÚwrN   rO   )r¡   Ú
contextlibÚ	ExitStackr`   Ú_load_reporter_by_nameÚappendÚenter_contextÚopenÚoutÚpop_allÚcloseÚlenr    r   ÚMultiReporter)
rF   rÓ   Úsub_reportersÚoutput_filesÚstackÚreporter_nameÚreporter_outputr�   Úoutput_fileÚclose_output_filess
             rG   Ú_load_reporterszPyLinter._load_reporters¡  s²  € àŒð 	ØˆFØˆØˆÝÔ!Ñ#Ô#ð 	7 uØ!/×!5Ò!5°cÑ!:Ô!:ð 
5ð 
5�Ø2?×2EÒ2EÀcÈ1Ñ2MÔ2MÐ/� à×6Ò6°}ÑEÔE�Ø×$Ò$ XÑ.Ô.Ð.Ø"ð 5Ø"'×"5Ò"5Ý˜_¨QÔ/°¸wÐGÑGÔGñ#ô #�Kð $/�H”LØ ×'Ò'¨Ñ4Ô4Ð4øð "'§¢¡¤Ô!6Ðð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7õ  ˆ}ÑÔ Ò!Ð! \Ð!Ø×ÒÝÔ'Ø!Ø&ñô ñô ð ð ð ð ×Ò˜m¨AÔ.Ñ/Ô/Ð/Ð/Ð/s   ¡B=C*Ã*C.Ã1C.ræ   úreporters.BaseReporterc                ó  — |                      ¦   «         }|| j        v r | j        |         ¦   «         S 	 t          |¦  «        }n4# t          t          t
          f$ r}t          j        |¦  «        |‚d }~ww xY w |¦   «         S rD   )Úlowerr¡   rh   ÚImportErrorÚAttributeErrorÚAssertionErrorr   ÚInvalidReporterError)rF   ræ   ÚnamerW   Úes        rG   rÚ   zPyLinter._load_reporter_by_nameÁ  s’   € Ø×"Ò"Ñ$Ô$ˆØ�4”?Ð"Ð"Ø(�4”? 4Ô(Ñ*Ô*Ð*ð	?Ý4°]ÑCÔCˆNˆNøÝ�^­^Ð<ð 	?ð 	?ð 	?ÝÔ1°$Ñ7Ô7¸QÐ>øøøøð	?øøøð ˆ~ÑÔÐs   ´A ÁA5ÁA0Á0A5ú0reporters.BaseReporter | reporters.MultiReporterc                ó"   — || _         | |_        dS )z6Set the reporter used to display messages and reports.N)r�   Úlinter)rF   r�   s     rG   r    zPyLinter.set_reporterÍ  s   € ð !ˆŒØˆŒˆˆrI   rW   útype[reporters.BaseReporter]c                ó$   — || j         |j        <   dS )z7Registers a reporter class on the _reporters attribute.N)r¡   rò   )rF   rW   s     rG   Úregister_reporterzPyLinter.register_reporterÔ  s   € à/=ˆŒ˜Ô+Ñ,Ð,Ð,rI   úlist[BaseChecker]c                óÒ   — t          | j        d„ ¬¦  «        }	 |                     |                     | ¦  «        ¦  «         |                     | ¦  «         n# t
          $ r Y nw xY w|S )Nc                ó$   — t          | dd¦  «        S )Nrò   r�   )ra   )Úxs    rG   ú<lambda>z'PyLinter.report_order.<locals>.<lambda>Ù  s   € µg¸aÀÈÑ6LÔ6L€ rI   )Úkey)ÚsortedÚ_reportsÚpopÚindexrÛ   Ú
ValueError)rF   r¬   s     rG   Úreport_orderzPyLinter.report_orderØ  s   € Ý˜œÐ,LÐ,LÐMÑMÔMˆð	!ð �KŠK˜Ÿš dÑ+Ô+Ñ,Ô,Ð,ð �NŠN˜4Ñ Ô Ð Ð øõ ð 	ð 	ð 	ØˆDð	øøøð ˆs   ™(A Á
A$Á#A$Úcheckerúcheckers.BaseCheckerc                ó   — | j         |j                                      |¦  «         |j        D ]\  }}}|                      ||||¦  «         Œt          |d¦  «        rE| j                             |¦  «         |j        D ]#}|j	        s|  
                    |j        ¦  «         Œ$t          |dd¦  «        s|  
                    |j        ¦  «         dS dS )z'This method auto registers the checker.ÚmsgsÚenabledTN)r¤   rò   rÛ   r¬   Úregister_reportrÐ   r¯   Úregister_messages_from_checkerÚmessagesrs   ÚdisableÚmsgidra   )rF   r  Úr_idÚr_titleÚr_cbÚmessages         rG   r·   zPyLinter.register_checkeræ  sæ   € àŒ�w”|Ô$×+Ò+¨GÑ4Ô4Ð4Ø#*¤?ð 	?ð 	?ÑˆD�'˜4Ø× Ò   w°°gÑ>Ô>Ð>Ð>Ý�7˜FÑ#Ô#ð 	0ØŒO×:Ò:¸7ÑCÔCÐCØ"Ô+ð 0ð 0�ØÔ.ð 0Ø—L’L ¤Ñ/Ô/Ð/øå�w 	¨4Ñ0Ô0ð 	'Ø�LŠL˜œÑ&Ô&Ð&Ð&Ð&ð	'ð 	'rI   c                ó  — | j         j        }|sdS t          ¦   «         }t          ¦   «         }|D ]6}|t          v r|                     |¦  «         Œ!|                     |¦  «         Œ7| j                             ¦   «         D ]‹}|D ]†}|j        D ]|}|j        |v s	|j	        |v r:|  
                    |j        ¦  «         | j                             |j	        ¦  «         ŒN|j        d         |v r| j                             |j	        ¦  «         Œ}Œ‡ŒŒdS )z¹Enable 'fail on' msgs.

        Convert values in config.fail_on (which might be msg category, msg id,
        or symbol) to specific msgs, then enable and flag them for later.
        Nr   )r­   Úfail_onÚsetr   Úaddr¤   Úvaluesr  r  ÚsymbolÚenabler©   rÛ   )rF   Úfail_on_valsÚfail_on_catsÚfail_on_msgsrÌ   Úall_checkersr  Úmsgs           rG   Úenable_fail_on_messagesz PyLinter.enable_fail_on_messagesô  sG  € ð ”{Ô*ˆØð 	ØˆFå‘u”uˆÝ‘u”uˆØð 	&ð 	&ˆCà•iÐÐØ× Ò  Ñ%Ô%Ð%Ð%à× Ò  Ñ%Ô%Ð%Ð%ð !œN×1Ò1Ñ3Ô3ð 		@ð 		@ˆLØ'ð @ð @�Ø"Ô+ð @ð @�CØ”y LÐ0Ð0°C´JÀ,Ð4NÐ4NàŸš C¤IÑ.Ô.Ð.ØÔ,×3Ò3°C´JÑ?Ô?Ð?Ð?Øœ 1œ¨Ð5Ð5àÔ,×3Ò3°C´JÑ?Ô?Ð?øð@ð@ð		@ð 		@rI   c                ór   ‡ — t          ˆ fd„‰ j        j                             ¦   «         D ¦   «         ¦  «        S )Nc              3  ó*   •K  — | ]}|‰j         v V — Œd S rD   )r©   )rË   rý   rF   s     €rG   ú	<genexpr>z.PyLinter.any_fail_on_issues.<locals>.<genexpr>  s+   øè è € ÐOÐO°�1˜Ô,Ð,ÐOÐOÐOÐOÐOÐOrI   )Úanyr¦   Úby_msgÚkeysr»   s   `rG   Úany_fail_on_issueszPyLinter.any_fail_on_issues  s7   ø€ ÝÐOÐOÐOÐO°d´jÔ6G×6LÒ6LÑ6NÔ6NÐOÑOÔOÑOÔOÐOrI   c                óz   — | j                              ¦   «         D ] }|D ]\  }}}|                      |¦  «         ŒŒ!dS )zDisable all reporters.N)r  r  Údisable_report)rF   r¡   Ú	report_idÚ_s       rG   Údisable_reporterszPyLinter.disable_reporters  sZ   € àœ-×.Ò.Ñ0Ô0ð 	/ð 	/ˆJØ#-ð /ð /‘�	˜1˜aØ×#Ò# IÑ.Ô.Ð.Ð.ð/ð	/ð 	/rI   c                óî   — | j         sdS |                      ¦   «          |                      d¦  «         |                      dd¦  «         |                      dd¦  «         |                      dd¦  «         dS )zwParse the current state of the error mode.

        Error mode: enable only errors; no reports, no persistent.
        NÚmiscellaneousr¬   FÚ
persistentÚscore)rª   Údisable_noerror_messagesr  Ú
set_optionr»   s    rG   Ú_parse_error_modezPyLinter._parse_error_mode  sz   € ð
 Ôð 	ØˆFà×%Ò%Ñ'Ô'Ð'Ø�Š�_Ñ%Ô%Ð%Ø�Š˜	 5Ñ)Ô)Ð)Ø�Š˜ eÑ,Ô,Ð,Ø�Š˜ Ñ'Ô'Ð'Ð'Ð'rI   c                ób   — t          d„ | j                             ¦   «         D ¦   «         ¦  «        S )z1Return all available checkers as an ordered list.c              3  ó$   K  — | ]}|D ]}|V — ŒŒd S rD   rE   )rË   r¤   Úcs      rG   r#  z(PyLinter.get_checkers.<locals>.<genexpr>.  s/   è è € ÐTÐT˜IÈ)ÐTÐTÀQ�aÐTÐTÐTÐTÐTÐTÐTrI   )r   r¤   r  r»   s    rG   Úget_checkerszPyLinter.get_checkers,  s-   € åÐTÐT¨¬×)>Ò)>Ñ)@Ô)@ÐTÑTÔTÑTÔTÐTrI   ú	list[str]c                óX   — t          d„ |                      ¦   «         D ¦   «         ¦  «        S )z7Get all the checker names that this linter knows about.c                ó<   — h | ]}|j         t          k    ¯|j         ’ŒS rE   )rò   r   )rË   r  s     rG   ú	<setcomp>z-PyLinter.get_checker_names.<locals>.<setcomp>3  s2   € ð ð ð àØ”<Õ#4Ò4Ð4ð ”à4Ð4Ð4rI   )r   r7  r»   s    rG   Úget_checker_nameszPyLinter.get_checker_names0  s<   € åðð à#×0Ò0Ñ2Ô2ðñ ô ñ
ô 
ð 	
rI   c                ó   ‡ — ‰ j         j        s‰                      ¦   «          ‰ g}‰                      ¦   «         dd…         D ]L}ˆ fd„|j        D ¦   «         }|s t          ˆ fd„|j        D ¦   «         ¦  «        r|                     |¦  «         ŒM|S )z:Return checkers needed for activated messages and reports.r˜   Nc                ó>   •— h | ]}‰                      |¦  «        ¯|’ŒS rE   )Úis_message_enabled)rË   r  rF   s     €rG   r;  z,PyLinter.prepare_checkers.<locals>.<setcomp>A  s,   ø€ ÐTÐTÐT °t×7NÒ7NÈsÑ7SÔ7SÐT˜ÐTÐTÐTrI   c              3  óN   •K  — | ]}‰                      |d          ¦  «        V — Œ dS )r   N)Úreport_is_enabled)rË   ÚrrF   s     €rG   r#  z,PyLinter.prepare_checkers.<locals>.<genexpr>B  s5   øè è € ÐUÐUÀ˜t×5Ò5°a¸´dÑ;Ô;ÐUÐUÐUÐUÐUÐUrI   )r­   r¬   r,  r7  r	  r$  rÛ   )rF   Úneeded_checkersr  r  s   `   rG   Úprepare_checkerszPyLinter.prepare_checkers:  s±   ø€ àŒ{Ô"ð 	%Ø×"Ò"Ñ$Ô$Ð$à.2¨VˆØ×(Ò(Ñ*Ô*¨1¨2¨2Ô.ð 	0ð 	0ˆGØTÐTÐTÐT w¤|ÐTÑTÔTˆHØð 0�3ÐUÐUÐUÐUÀWÄ_ÐUÑUÔUÑUÔUð 0Ø×&Ò& wÑ/Ô/Ð/øØÐrI   r>   ÚpathÚis_argumentc                ó4   — |rdS |                      d¦  «        S )a÷  Returns whether a module should be checked.

        This implementation returns True for all python source files (.py and .pyi),
        indicating that all files should be linted.

        Subclasses may override this method to indicate that modules satisfying
        certain conditions should not be linted.

        :param str modname: The name of the module to be checked.
        :param str path: The full path to the source code of the module.
        :param bool is_argument: Whether the file is an argument to pylint or not.
                                 Files which respect this property are always
                                 checked, since the user requested it explicitly.
        :returns: True if the module should be checked.
        T©z.pyz.pyi)Úendswith)r>   rE  rF  s      rG   Úshould_analyze_filezPyLinter.should_analyze_fileG  s#   € ð" ð 	Ø�4Ø�}Š}˜_Ñ-Ô-Ð-rI   c                ó¢   — | j         j        | _        | j        j        D ]0}|                     | j         j        ¦  «        sd| j        |j        <   Œ1dS )zbInitialize linter for linting.

        This method is called before any linting is done.
        FN)	r­   Úignore_pathsr¶   r¯   r  Úmay_be_emittedr®   Ú_msgs_stater  )rF   r  s     rG   rº   zPyLinter.initialize^  s\   € ð
 "œ[Ô5ˆÔð ”?Ô+ð 	4ð 	4ˆCØ×%Ò% d¤kÔ&<Ñ=Ô=ð 4Ø.3�Ô  ¤Ñ+øð	4ð 	4rI   Úfiles_or_modulesúSequence[str]úIterator[str]c              #  ó@  ‡K  — |D �]}t           j                             |¦  «        rðt           j                             t           j                             |d¦  «        ¦  «        s³g }t          j        |¦  «        D ]š\  Š}}t          ˆfd„|D ¦   «         ¦  «        rŒ"t          ‰| j        j	        | j        j
        | j        j        ¦  «        r|                     ‰¦  «         Œhd|v r|                     ‰¦  «         ‰V — Œ†ˆfd„|D ¦   «         E d{V —† Œ›�Œ|V — �ŒdS )z†Discover python modules and packages in sub-directory.

        Returns iterator of paths to discovered modules and packages.
        z__init__.pyc              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rD   )Ú
startswith)rË   ÚsÚroots     €rG   r#  z+PyLinter._discover_files.<locals>.<genexpr>u  s/   øè è € ÐEÐE°!˜4Ÿ?š?¨1Ñ-Ô-ÐEÐEÐEÐEÐEÐErI   c              3  ó‚   •K  — | ]9}|                      d ¦  «        ¯t          j                             ‰|¦  «        V — Œ:dS )rH  N)rI  ÚosrE  Újoin)rË   ÚfilerV  s     €rG   r#  z+PyLinter._discover_files.<locals>.<genexpr>†  sY   øè è € ð $ð $à $Ø#Ÿ}š}¨_Ñ=Ô=ð$ÝœGŸLšL¨¨tÑ4Ô4ð$ð $ð $ð $ð $ð $rI   N)rX  rE  ÚisdirÚisfilerY  Úwalkr$  r   r­   ÚignoreÚignore_patternsrL  rÛ   )rF   rO  Ú	somethingÚskip_subtreesr+  ÚfilesrV  s         @rG   Ú_discover_fileszPyLinter._discover_filesj  s€  øè è € ð
 *ð 	 ñ 	 ˆIÝŒw�}Š}˜YÑ'Ô'ð  µ´·²Ý”—’˜Y¨Ñ6Ô6ñ1ô 1ð  ð ,.�Ý&(¤g¨iÑ&8Ô&8ð ð ‘N�D˜!˜UÝÐEÐEÐEÐE°}ÐEÑEÔEÑEÔEð !à å'ØØœÔ*ØœÔ3ØœÔ0ñ	ô ð !ð &×,Ò,¨TÑ2Ô2Ð2Ø à$¨Ð-Ð-Ø%×,Ò,¨TÑ2Ô2Ð2Ø"˜
˜
˜
˜
ð$ð $ð $ð $à(-ð$ñ $ô $ð ð ð ð ð ð ð ð ñ%ð0  ���‘ð;	 ð 	 rI   c                óê  ‡ — ‰                       ¦   «          ‰ j        j        r"t          ‰                      |¦  «        ¦  «        }‰ j        j        r't          |¦  «        dk    rt          j        d¦  «        ‚t          ˆ fd„|D ¦   «         ¦  «        }‰ j        j        sa‰ j        j
        dk    rQt          j        dd…         }t          ‰ ‰ j        j
        ‰                      |¦  «        |¦  «         |t          _        dS t          |¦  «        5  ‰ j        j        r*‰                      |d         ¦  «        }t#          ¦   «         }n‰                      |¦  «        }d}ddd¦  «         n# 1 swxY w Y   t          |¦  «        5  ‰                      ¦   «         5 }‰                      ||¦  «        }‰                      ||¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )z¬Main checking entry: check a list of files or modules from their name.

        files_or_modules is either a string or list of strings presenting modules to check.
        r˜   z*Missing filename required for --from-stdinc                óD   •— h | ]}t          |‰j        j        ¦  «        ’ŒS rE   )r   r­   Úsource_roots)rË   Úfile_or_modulerF   s     €rG   r;  z!PyLinter.check.<locals>.<setcomp>�  s8   ø€ ð ð ð à"õ & n°d´kÔ6NÑOÔOðð ð rI   Nr   )rº   r­   Ú	recursiveÚtuplerc  Ú
from_stdinrá   r   ÚInvalidArgsErrorr£   ÚjobsrR   rE  r"   Ú_iterate_file_descrsr'   Ú_get_file_descr_from_stdinrV   Ú_astroid_module_checkerÚ	_get_astsÚ_lint_files)rF   rO  Úextra_packages_pathsÚoriginal_sys_pathÚ	fileitemsr?   Úcheck_astroid_moduleÚast_per_fileitems   `       rG   ÚcheckzPyLinter.checkŽ  sû  ø€ ð
 	�ŠÑÔÐØŒ;Ô ð 	MÝ$ T×%9Ò%9Ð:JÑ%KÔ%KÑLÔLÐØŒ;Ô!ð 	ÝÐ#Ñ$Ô$¨Ò)Ð)Ý Ô1Ø@ñô ð õ  $ðð ð ð à&6ðñ ô ñ 
ô  
Ðð Œ{Ô%ð 		¨$¬+Ô*:¸QÒ*>Ð*>Ý #¤¨¨¨¤ÐÝØØ”Ô Ø×)Ò)Ð*:Ñ;Ô;Ø$ñ	ô ð ð )�CŒHØˆFõ  Ð 4Ñ5Ô5ð 	ð 	ØŒ{Ô%ð Ø ×;Ò;Ð<LÈQÔ<OÑPÔP�	Ý#.¡=¤=��à ×5Ò5Ð6FÑGÔG�	Ø�ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ  Ð 4Ñ5Ô5ð 	Ið 	IØ×-Ò-Ñ/Ô/ð IÐ3Gà#'§>¢>°)¸TÑ#BÔ#BÐ ð × Ò Ð!1Ð3GÑHÔHÐHðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Ið	Ið 	Ið 	Iñ 	Iô 	Ið 	Ið 	Ið 	Ið 	Ið 	Ið 	Ið 	Iøøøð 	Ið 	Ið 	Ið 	Ið 	Ið 	IsI   ÄAE(Å(E,Å/E,ÆG(Æ-GÇG(ÇG	ÇG(ÇG	ÇG(Ç(G,Ç/G,rt  úIterator[FileItem]r?   ú#dict[FileItem, nodes.Module | None]c                ó~  — i }|D ]·}|                       |j        |j        ¦  «         	 |                      |j        |j        |¦  «        ||<   ŒH# t          j        $ r^}t          ||j        | j        ¦  «        }t          |j        |¦  «        }|  	                    d|j        |ft          ¬¦  «         Y d}~Œ°d}~ww xY w|S )z$Get the AST for all given FileItems.rm   ©rÇ   Ú
confidenceN)Úset_current_modulerò   r<   Úget_astr\   ÚAstroidBuildingErrorr)   r‰   r(   rÏ   r   )rF   rt  r?   rv  ÚfileitemÚexÚtemplate_pathr  s           rG   rp  zPyLinter._get_astsÁ  s  € ð ACÐà!ð 	ð 	ˆHØ×#Ò# H¤M°8Ô3DÑEÔEÐEðØ-1¯\ª\ØÔ% x¤}°dñ.ô .Ð  Ñ*Ð*øõ Ô/ð 	ð 	ð 	Ý 4Ø˜Ô)¨4Ô+?ñ!ô !�õ .¨hÔ.?ÀÑOÔO�Ø× Ò Ø#Ø"Ô+¨SÐ1Ý#ð !ñ ô ð ð ð ð ð ð øøøøð	øøøð  Ðs   ¨$AÁB:ÁAB5Â5B:rZ  r0   c                ó˜   — |                       ¦   «         5 }|                      | j        ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zªCheck single file item.

        The arguments are the same that are documented in _check_files

        initialize() should be called before calling this method
        N)ro  Ú_check_filer~  )rF   rZ  ru  s      rG   Úcheck_single_file_itemzPyLinter.check_single_file_itemÛ  s¦   € ð ×)Ò)Ñ+Ô+ð 	GÐ/CØ×Ò˜Tœ\Ð+?ÀÑFÔFÐFð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gs   •?¿AÁAÚast_mappingru  ú%Callable[[nodes.Module], bool | None]c                ó¶  — |                      ¦   «         D ]Ã\  }}|€Œ	 |                      |||¦  «         Œ!# t          $ r–}t          ||j        | j        ¦  «        }t          |j        |¦  «        }t          |t          j	        ¦  «        r%|  
                    d|j        |ft          ¬¦  «         n|  
                    d|t          ¬¦  «         Y d}~Œ¼d}~ww xY wdS )z%Lint all AST modules from a mapping..Nrm   r{  rj   )rÎ   Ú
_lint_fileÚ	Exceptionr)   r<   r‰   r(   rQ   r\   ÚAstroidErrorrÏ   r   )rF   r†  ru  r€  re   r�  r‚  r  s           rG   rq  zPyLinter._lint_fileså  s  € ð !,× 1Ò 1Ñ 3Ô 3ð 	Ið 	IÑˆH�fØˆ~ØðIØ—’ ¨&Ð2FÑGÔGÐGÐGøÝð 
Ið 
Ið 
IÝ 4Ø˜Ô)¨4Ô+?ñ!ô !�õ .¨hÔ.?ÀÑOÔO�Ý˜b¥'Ô"6Ñ7Ô7ð IØ×$Ò$Ø'¨xÔ/@À#Ð.FÕSWð %ñ ô ð ð ð ×$Ò$ W°3Å4Ð$ÑHÔHÐHøøøøøøøøøð
Iøøøð	Ið 	Is   ž6¶
CÁ BCÃCre   rB   c                ó„  — |                       |j        |j        ¦  «         d| _        t	          |j        | j        |¦  «        | _        |j        | _	        	  ||¦  «         n# t          $ r}t          j        |‚d}~ww xY w| j                             | j        ¦  «        }|D ]\  }}}|                      ||d|¦  «         ŒdS )a–  Lint a file using the passed utility function check_astroid_module).

        :param FileItem file: data about the file
        :param nodes.Module module: the ast module to lint
        :param Callable check_astroid_module: callable checking an AST taking the following
               arguments
        - ast: AST of the module
        :raises AstroidError: for any failures stemming from astroid
        FN©r}  rò   r<   rµ   r7   Úmodpathr¯   r²   rZ  r´   rŠ  r\   r‹  Ú"iter_spurious_suppression_messagesrÏ   )	rF   rZ  re   ru  ró   Úspurious_messagesr  rÈ   rÇ   s	            rG   r‰  zPyLinter._lint_fileü  sê   € ð 	×Ò ¤	¨4¬=Ñ9Ô9Ð9Ø!ˆÔÝ# D¤L°$´/À6ÑJÔJˆŒð #œKˆÔð	.Ø Ð  Ñ(Ô(Ð(Ð(øÝð 	.ð 	.ð 	.ÝÔ&¨AÐ-øøøøð	.øøøð !œO×NÒNØŒOñ
ô 
Ðð "3ð 	6ð 	6ÑˆE�4˜Ø×Ò˜U D¨$°Ñ5Ô5Ð5Ð5ð	6ð 	6s   ÁA! Á!
A=Á+A8Á8A=r~  r;   c                ó¸  — |                       |j        |j        ¦  «          ||j        |j        ¦  «        }|€dS d| _        t	          |j        | j        |¦  «        | _        |j        | _	        	  ||¦  «         n# t          $ r}t          j        |‚d}~ww xY w| j                             | j        ¦  «        }|D ]\  }}}	|                      ||d|	¦  «         ŒdS )aM  Check a file using the passed utility functions (get_ast and
        check_astroid_module).

        :param callable get_ast: callable returning AST from defined file taking the
                                 following arguments
        - filepath: path to the file to check
        - name: Python module name
        :param callable check_astroid_module: callable checking an AST taking the following
               arguments
        - ast: AST of the module
        :param FileItem file: data about the file
        :raises AstroidError: for any failures stemming from astroid
        NFr�  )
rF   r~  ru  rZ  Úast_noderó   r�  r  rÈ   rÇ   s
             rG   r„  zPyLinter._check_file  s
  € ð& 	×Ò ¤	¨4¬=Ñ9Ô9Ð9à�7˜4œ=¨$¬)Ñ4Ô4ˆØÐØˆFà!ˆÔå# D¤L°$´/À8ÑLÔLˆŒð %œMˆÔð	.Ø Ð  Ñ*Ô*Ð*Ð*øÝð 	.ð 	.ð 	.ÝÔ&¨AÐ-øøøøð	.øøøð !œO×NÒNØŒOñ
ô 
Ðð "3ð 	6ð 	6ÑˆE�4˜Ø×Ò˜U D¨$°Ñ5Ô5Ð5Ð5ð	6ð 	6s   Á/A; Á;
BÂBÂBr<   c              #  ó   K  — t          || j        j        | j        j        | j        j        ¦  «        rdS 	 d                     t          j                             |¦  «        ¦  «        }nR# t          $ rE t          j                             t          j                             |¦  «        ¦  «        d         }Y nw xY wt          |||¦  «        V — dS )zëReturn file description (tuple of module name, file path, base name) from
        given file path.

        This method is used for creating suitable file description for _check_files when the
        source is standard input.
        NrZ   r   )r   r­   r^  r_  rL  rY  r\   r]   Úmodpath_from_filerî   rX  rE  ÚsplitextÚbasenamer0   )rF   r<   r>   s      rG   rn  z#PyLinter._get_file_descr_from_stdinH  sÕ   è è € õ ØØŒKÔØŒKÔ'ØŒKÔ$ñ	
ô 
ð 	ð ˆFð	Fð —h’h�wÔ/×AÒAÀ(ÑKÔKÑLÔLˆGˆGøÝð 	Fð 	Fð 	FÝ”g×&Ò&¥r¤w×'7Ò'7¸Ñ'AÔ'AÑBÔBÀ1ÔEˆGˆGˆGð	Føøøõ �w ¨(Ñ3Ô3Ð3Ð3Ð3Ð3Ð3s   ¶2A) Á)AB8Â7B8c              #  óð   K  — |                       |¦  «                             ¦   «         D ]K}|d         |d         |d         }}}|                      |||¬¦  «        rt          |||d         ¦  «        V — ŒLdS )zÈReturn generator yielding file descriptions (tuples of module name, file
        path, base name).

        The returned generator yield one item for each Python module that should be linted.
        rò   rE  Úisarg)rF  r–  N)Ú_expand_filesr  rJ  r0   )rF   rO  Údescrrò   r<   Úis_args         rG   rm  zPyLinter._iterate_file_descrsa  s•   è è € ð ×'Ò'Ð(8Ñ9Ô9×@Ò@ÑBÔBð 	Bð 	BˆEØ%*¨6¤]°E¸&´MÀ5ÈÄ>˜F�(ˆDØ×'Ò'¨¨hÀFÐ'ÑKÔKð BÝ˜t X¨u°ZÔ/@ÑAÔAÐAÐAÐAøð	Bð 	BrI   ú dict[str, ModuleDescriptionDict]c                ó˜  — t          || j        j        | j        j        | j        j        | j        ¦  «        \  }}|D ]�}|d         x}}|d         }|                      |¦  «         |dk    rGt          |d         ¦  «                             t          j
        ¦   «         t          j        z   d¦  «        }|                      ||¬¦  «         ŒŽ|S )z@Get modules and errors from a list of modules and handle errors.Úmodrÿ   rj   r�  r�   ©rÇ   )r    r­   rf  r^  r_  r¶   r}  r=   ÚreplacerX  ÚgetcwdÚseprÏ   )rF   rO  ÚresultÚerrorsÚerrorr  r>   rÿ   s           rG   r™  zPyLinter._expand_filesn  sÌ   € õ (ØØŒKÔ$ØŒKÔØŒKÔ'ØÔñ
ô 
‰ˆ�ð ð 	0ð 	0ˆEØ % e¤Ð,ˆG�gØ˜”,ˆCØ×#Ò# GÑ,Ô,Ð,Ø�gŠ~ˆ~Ý˜e DœkÑ*Ô*×2Ò2µ2´9±;´;ÅÄÑ3GÈÑLÔL�Ø×Ò˜S wÐÑ/Ô/Ð/Ð/ØˆrI   c                ó   — |s|€dS | j                              |pd|¦  «         || _        |p|| _        | j                             |pd¦  «         |r:|                      t          |¦  «        | j        ¦  «        }|r|p| j	        | _
        dS dS dS )zZSet the name of the currently analyzed module and
        init statistics for it.
        Nr�   )r�   Úon_set_current_moduler³   r´   r¦   Úinit_single_moduleÚ_get_namespace_for_filer
   Ú_directory_namespacesÚ_base_configr­   )rF   r>   r<   Ú	namespaces       rG   r}  zPyLinter.set_current_module‚  s¿   € ð ð 	˜8Ð+ØˆFØŒ×+Ò+¨G¨M°r¸8ÑDÔDÐDØ#ˆÔØ$Ð/¨ˆÔØŒ
×%Ò% g m°Ñ4Ô4Ð4ð ð 	=Ø×4Ò4Ý�X‘” Ô :ñô ˆIð ð =Ø'Ð<¨4Ô+<�”��ð	=ð 	=ð=ð =rI   r
   Ú
namespacesr/   úargparse.Namespace | Nonec                ó˜   — |D ]F}t          ||¦  «        r4|                      |||         d         ¦  «        }|€||         d         c S ŒGd S )Nr˜   r   )r&   r©  )rF   r<   r­  Ú	directoryr¬  s        rG   r©  z PyLinter._get_namespace_for_file•  sm   € ð $ð 	4ð 	4ˆIÝ˜x¨Ñ3Ô3ð 4Ø ×8Ò8Ø˜j¨Ô3°AÔ6ñô �	ð Ð$Ø% iÔ0°Ô3Ð3Ð3Ð3øØˆtrI   ú/Iterator[Callable[[nodes.Module], bool | None]]c              #  óˆ  K  — t          | ¦  «        }|                      ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }|D ]+}|                     ¦   «          |                     |¦  «         Œ,t	          j        | j        |||¬¦  «        V — |j        | j        _	        t          |¦  «        D ]}|                     ¦   «          ŒdS )z}Context manager for checking ASTs.

        The value in the context is callable accepting AST as its only argument.
        c                óF   — g | ]}t          |t          j        ¦  «        ¯|‘ŒS rE   )rQ   r   ÚBaseTokenChecker©rË   r6  s     rG   ú
<listcomp>z4PyLinter._astroid_module_checker.<locals>.<listcomp>«  s:   € ð 
ð 
ð 
Ø¥J¨qµ(Ô2KÑ$LÔ$Lð
Øð
ð 
ð 
rI   c                óF   — g | ]}t          |t          j        ¦  «        ¯|‘ŒS rE   )rQ   r   ÚBaseRawFileCheckerrµ  s     rG   r¶  z4PyLinter._astroid_module_checker.<locals>.<listcomp>®  s:   € ð 
ð 
ð 
Ø¥J¨qµ(Ô2MÑ$NÔ$Nð
Øð
ð 
ð 
rI   )ÚwalkerÚtokencheckersÚrawcheckersN)r6   rD  rÝ   Úadd_checkerÚ	functoolsÚpartialru  Únbstatementsr¦   Ú	statementÚreversedrà   )rF   r¹  r¤   rº  r»  r  s         rG   ro  z PyLinter._astroid_module_checker¡  s  è è € õ ˜4‘”ˆØ×)Ò)Ñ+Ô+ˆ	ð
ð 
Ø ð
ñ 
ô 
ˆð
ð 
Ø ð
ñ 
ô 
ˆð !ð 	(ð 	(ˆGØ�LŠL‰NŒNˆNØ×Ò˜wÑ'Ô'Ð'Ð'åÔØÔ%ØØ'Ø#ð	
ñ 
ô 
ð 	
ð 	
ð 	
ð  &Ô2ˆŒ
ÔÝ 	Ñ*Ô*ð 	ð 	ˆGØ�MŠM‰OŒOˆOˆOð	ð 	rI   únodes.Module | Nonec           
     óf  — 	 |€t                                ||d¬¦  «        S t          j                             t           ¦  «                             |||¦  «        S # t          j        $ r`}t          |j        dd¦  «        }|€d}|  	                    d|t          |j        dd¦  «        d|j        › d	�t          ¬
¦  «         Y d}~nmd}~wt          j        $ r!}|  	                    d|¬¦  «         Y d}~n?d}~wt          $ r/}t          j        ¦   «          t          j        d|¬¦  «        |‚d}~ww xY wdS )a‰  Return an ast(roid) representation of a module or a string.

        :param filepath: path to checked file.
        :param str modname: The name of the module to be checked.
        :param str data: optional contents of the checked file.
        :returns: the AST
        :rtype: astroid.nodes.Module
        :raises AstroidBuildingError: Whenever we encounter an unexpected exception
        NT)ÚsourceÚlinenor   r}   ÚoffsetzParsing failed: 'ú'©rÈ   Ú
col_offsetrÇ   r|  ro   rŸ  zMBuilding error when trying to create ast representation of module '{modname}')r>   )ÚMANAGERÚast_from_filer\   ÚbuilderÚAstroidBuilderÚstring_buildÚAstroidSyntaxErrorra   r¥  rÏ   r   r  rŠ  Ú	tracebackÚ	print_exc)rF   r<   r>   r?   r�  rÈ   s         rG   r~  zPyLinter.get_astÁ  s�  € ð	Øˆ|Ý×,Ò,¨X°wÀtÐ,ÑLÔLÐLÝ”?×1Ò1µ'Ñ:Ô:×GÒGØ�g˜xñô ð øõ Ô)ð 
	ð 
	ð 
	Ý˜2œ8 X¨tÑ4Ô4ˆDØˆ|Ø�Ø×ÒØØÝ" 2¤8¨X°tÑ<Ô<Ø4¨¬Ð4Ð4Ð4Ýð ñ ô ð ð ð ð ð ð øøøøõ Ô+ð 	5ð 	5ð 	5Ø×Ò˜]°ÐÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4øøøøÝð 	ð 	ð 	ÝÔÑ!Ô!Ð!õ Ô.Ø_Øðñ ô ð ðøøøøð	øøøð ˆts5   ‚A ¡8A ÁD.Á)ACÃD.ÃC2Ã2D.Ã?*D)Ä)D.r’  r¹  r6   r»  ú!list[checkers.BaseRawFileChecker]rº  úlist[checkers.BaseTokenChecker]úbool | Nonec                óˆ   — |j         }|                      ||||¦  «        }|j         |z
  | j        j        | j                 d<   |S )zlCheck a module from its astroid representation.

        For return value see _check_astroid_module
        rÀ  )r¿  Ú_check_astroid_moduler¦   Ú	by_moduler³   )rF   r’  r¹  r»  rº  Úbefore_check_statementsÚretvals          rG   ru  zPyLinter.check_astroid_moduleë  sW   € ð #)Ô"5Ðà×+Ò+Ø�f˜k¨=ñ
ô 
ˆð ÔÐ"9Ñ9ð 	Œ
Ô˜TÔ.Ô/°Ñ<ð ˆrI   Únodec                ó  — 	 t          j        |¦  «        }ni# t          j        $ rW}|                      d|j        d         d         |j        d         d         |j        d         t          ¬¦  «         Y d}~dS d}~ww xY w|j        s|                      d|j        ¬¦  «         nR|  	                    |¦  «         | j
        rdS |D ]}|                     |¦  «         Œ|D ]}| 	                    |¦  «         Œ|                     |¦  «         d	S )
aË  Check given AST node with given walker and checkers.

        :param astroid.nodes.Module node: AST node of the module to check
        :param pylint.utils.ast_walker.ASTWalker walker: AST walker
        :param list rawcheckers: List of token checkers to use
        :param list tokencheckers: List of raw checkers to use

        :returns: True if the module was checked, False if ignored,
            None if the module contents could not be parsed
        r}   r˜   r   rÈ  Nrr   rŸ  FT)r9   Útokenize_moduleÚtokenizeÚ
TokenErrorrÏ   rÇ   r   Úpure_pythonrò   Úprocess_tokensrµ   Úprocess_moduler]  )	rF   rÚ  r¹  r»  rº  Útokensr�  Úraw_checkerÚtoken_checkers	            rG   rÖ  zPyLinter._check_astroid_module  sE  € ð"
	ÝÔ*¨4Ñ0Ô0ˆFˆFøÝÔ"ð 	ð 	ð 	Ø×ÒØØ”W˜Q”Z ”]Øœ7 1œ: aœ=Ø”W˜Q”ZÝð ñ ô ð ð �4�4�4�4�4øøøøð	øøøð Ôð 	5Ø×ÒÐ1¸¼	ÐÑBÔBÐBÐBð ×Ò Ñ'Ô'Ð'ØÔ ð Ø�uà*ð 1ð 1�Ø×*Ò*¨4Ñ0Ô0Ð0Ð0Ø!.ð 5ð 5�Ø×,Ò,¨VÑ4Ô4Ð4Ð4à�Š�DÑÔÐØˆts   ‚ —A=¦AA8Á8A=c                óL  — | j         j        t          _        | j         j        t          _        t          j                             | j         j        ¦  «         | j         j	        r)t          j                             | j         j	        ¦  «         | j
                             ¦   «          dS )zInitialize counters.N)r­   Úunsafe_load_any_extensionrÊ  Úalways_load_extensionsÚlimit_inference_resultsÚmax_inferable_valuesÚextension_package_whitelistÚupdateÚextension_pkg_allow_listÚextension_pkg_whitelistr¦   Úreset_message_countr»   s    rG   rÝ   zPyLinter.open/  s„   € à)-¬Ô)N�Ô&Ø'+¤{Ô'J�Ô$ÝÔ+×2Ò2°4´;Ô3WÑXÔXÐXØŒ;Ô.ð 	ÝÔ/×6Ò6Ø”Ô3ñô ð ð 	Œ
×&Ò&Ñ(Ô(Ð(Ð(Ð(rI   Úverboseú
int | Nonec                ó†  — | j                              t          j        ¦   «         ¦  «         | j        j        sÛt          | j        j        ¦  «        }| j                              | j	        |¦  «         | j
        j        r|                      | j	        |¦  «        }nt          j        ¦   «         }| j
        j        r| j                              |¦  «         |                      |¦  «        }| j
        j        rt!          | j	        | j        j        ¦  «         n.| j                              | j	        t#          ¦   «         ¦  «         d}|S )z…Close the whole package /module, it's time to make reports !

        if persistent run, pickle results for later comparison
        N)r�   Údisplay_messagesÚreport_nodesÚSectionr²   Ú_is_base_filestater   Ú	base_nameÚon_closer¦   r­   r¬   Úmake_reportsÚdisplay_reportsÚ_report_evaluationr/  r   r8   )rF   rï  Úprevious_statsÚsectÚscore_values        rG   Úgenerate_reportszPyLinter.generate_reports:  s  € ð 	Œ×&Ò&¥|Ô';Ñ'=Ô'=Ñ>Ô>Ð>ØŒÔ1ð 	å)¨$¬/Ô*CÑDÔDˆNØŒM×"Ò" 4¤:¨~Ñ>Ô>Ð>ØŒ{Ô"ð .Ø×(Ò(¨¬°^ÑDÔD��å#Ô+Ñ-Ô-�àŒ{Ô"ð 4Ø”×-Ò-¨dÑ3Ô3Ð3Ø×1Ò1°'Ñ:Ô:ˆKàŒ{Ô%ð DÝ˜TœZ¨¬Ô)BÑCÔCÐCøàŒM×"Ò" 4¤:­{©}¬}Ñ=Ô=Ð=ØˆKØÐrI   c                ó¬  — d}t          | j        j        ¦  «        }| j        j        dk    r|S | j        j        }	 | j        j        | j        j        | j        j	        | j        j
        | j        j        | j        j        | j        j        dœ}t          |i |¦  «        }|| j        _        d|d›d�}|r|j        }|�|d|d›d||z
  d	›d
�z  }|r0| j        j        d         }| j        j        d         }	|d|› d|	› d�z  }n# t"          $ r}
d|
› �}Y d}
~
nd}
~
ww xY w| j        j        r.t'          j        |¦  «        }| j                             |¦  «         |S )z"Make the global evaluation report.Nr   )rj   r¥  ÚwarningÚrefactorÚ
conventionrÀ  ÚinfozYour code has been rated at z.2fz/10z (previous run: z/10, z+.2fú)re   z	
Checked z files, skipped z filesz$An exception occurred while rating: )r   r²   rö  r¦   rÀ  r­   Ú
evaluationrj   r¥  r   r  r  r  ÚevalÚglobal_noteÚ
node_countÚundocumentedrŠ  r0  ró  ÚEvaluationSectionr�   rù  )rF   rï  Únoterû  r  Ú
stats_dictr  ÚpnoteÚchecked_files_countÚunchecked_files_countr�  rü  s               rG   rú  zPyLinter._report_evaluationU  s²  € ð ˆÝ% d¤oÔ&?Ñ@Ô@ˆØŒ:Ô 1Ò$Ð$ØˆKð ”[Ô+ˆ
ð	gàœÔ)ØœÔ)Øœ:Ô-Ø œJÔ/Ø"œjÔ3Ø!œZÔ1Øœ
œðð ˆJõ ˜
 B¨
Ñ3Ô3ˆDð &*ˆDŒJÔ"Ø>°Ð>Ð>Ð>Ð>ˆCØð SØ&Ô2�ØÐ$ØÐR¨eÐRÐRÐR¸dÀU¹lÐRÐRÐRÐRÑR�Càð gØ&*¤jÔ&;¸HÔ&EÐ#Ø(,¬
Ô(?ÀÔ(IÐ%ØÐfÐ$7ÐfÐfÐI^ÐfÐfÐfÑf�øøõ ð 	>ð 	>ð 	>Ø=¸Ð=Ð=ˆCˆCˆCˆCˆCˆCøøøøð	>øøøð Œ;Ôð 	0ÝÔ1°#Ñ6Ô6ˆDØŒM×)Ò)¨$Ñ/Ô/Ð/Øˆs   »A!C> Ã>
DÄDÄDÚmessage_definitionr+   rÈ   únodes.NodeNG | NonerÇ   ú
Any | Noner|  úinterfaces.Confidence | NonerÉ  Ú
end_linenoÚend_col_offsetc	                ó¾  — |                      ||¦  «         |rd|j        r9|s|j        j        }|s|j        j        }|s|j        j        }|s|j        j        }n$|s|j        }|s|j        }|s|j        }|s|j        }|                      |j        ||¦  «        s=| j	         
                    |                      |j        ||¦  «        |j        |¦  «         dS t          |j        d                  }	| xj        t          |j        d                  z  c_        | j                             |	d¦  «         | j                             | j        |	d¦  «         	 | j        j        |j        xx         dz  cc<   n$# t*          $ r d| j        j        |j        <   Y nw xY w|j        }
|�|
|z  }
|€| j        d}}| j        }n0t1          j        |¦  «        \  }}|                     ¦   «         j        }|�"|                     | j        j        dd¦  «        }nd}| j                             tA          |j        |j        tC          |pd||pd||pd|pd||¦  «        |
|¦  «        ¦  «         dS )zpAfter various checks have passed a single Message is
        passed to the reporter and added to stats.
        Nr   r˜   r�   Úconfiguration)"Úcheck_message_definitionÚpositionrÅ  rÉ  r  r  Ú
fromlinenor?  r  r²   Úhandle_ignored_messageÚ_get_message_state_scoper   r°   r   r¦   Úincrease_single_message_countÚ$increase_single_module_message_countr³   r%  r  ÚKeyErrorr  r´   r9   Úget_module_and_frameidrV  rZ  r   r�   Úpath_strip_prefixÚhandle_messager*   r3   )rF   r  rÈ   rÚ  rÇ   r|  rÉ  r  r  Úmsg_catr  re   ÚobjÚabspathrE  s                  rG   Ú_add_one_messagezPyLinter._add_one_message  sâ  € ð 	×3Ò3°D¸$Ñ?Ô?Ð?ð ð 	9ØŒ}ð 9Øð 0Øœ=Ô/�DØ!ð :Ø!%¤Ô!9�JØ!ð :Ø!%¤Ô!9�JØ%ð BØ%)¤]Ô%A�Nøàð +Øœ?�DØ!ð 1Ø!%¤�JØ!ð 1Ø!%¤�JØ%ð 9Ø%)Ô%8�Nð ×&Ò&Ð'9Ô'?ÀÀzÑRÔRð 	ØŒO×2Ò2Ø×-Ò-Ø&Ô,¨d°Jñô ð #Ô(Øñô ð ð ˆFõ Ð.Ô4°QÔ7Ô8ˆØˆŒÕ+Ð,>Ô,DÀQÔ,GÔHÑHˆŒØŒ
×0Ò0°¸!Ñ<Ô<Ð<ØŒ
×7Ò7¸Ô8IÈ7ÐTUÑVÔVÐVð	=ØŒJÔÐ0Ô7Ð8Ð8Ô8¸AÑ=Ð8Ð8Ñ8Ð8øÝð 	=ð 	=ð 	=Ø;<ˆDŒJÔÐ0Ô7Ñ8Ð8Ð8ð	=øøøð !Ô$ˆØÐØ�4‰KˆCàˆ<ØÔ+¨R�CˆFØÔ'ˆGˆGåÔ6°tÑ<Ô<‰KˆF�CØ—i’i‘k”kÔ&ˆGØÐØ—?’? 4¤=Ô#BÀBÈÑJÔJˆDˆDà"ˆDàŒ×$Ò$ÝØ"Ô(Ø"Ô)Ý$Ø�M˜rØØ�L˜bØØ�I˜AØ�O !ØØ"ñ	ô 	ð Øñô ñ	
ô 	
ð 	
ð 	
ð 	
s   ÅE1 Å1FÆFr  c	                ó˜   — |€t           j        }| j                             |¦  «        }	|	D ]}
|                      |
|||||||¦  «         ŒdS )a,  Adds a message given by ID or name.

        If provided, the message string is expanded using args.

        AST checkers must provide the node argument (but may optionally
        provide line if the line number is different), raw and token checkers
        must provide the line argument.
        N)r   Ú	UNDEFINEDr¯   Úget_message_definitionsr&  )rF   r  rÈ   rÚ  rÇ   r|  rÉ  r  r  Úmessage_definitionsr  s              rG   rÏ   zPyLinter.add_messageÛ  sw   € ð& ÐÝ#Ô-ˆJØ"œo×EÒEÀeÑLÔLÐØ"5ð 
	ð 
	ÐØ×!Ò!Ø"ØØØØØØØñ	ô 	ð 	ð 	ð
	ð 
	rI   Úintc                óæ   — | j                              |¦  «        }|D ]S}|                     ||¦  «         | j                             |                      |j        ||¦  «        |j        |¦  «         ŒTdS )ah  Prepares a message to be added to the ignored message storage.

        Some checks return early in special cases and never reach add_message(),
        even though they would normally issue a message.
        This creates false positives for useless-suppression.
        This function avoids this by adding those message to the ignored msgs attribute
        N)r¯   r)  r  r²   r  r  r  )rF   r  rÈ   rÚ  r|  r*  r  s          rG   Úadd_ignored_messagezPyLinter.add_ignored_messageý  s‘   € ð #œo×EÒEÀeÑLÔLÐØ"5ð 	ð 	ÐØ×7Ò7¸¸dÑCÔCÐCØŒO×2Ò2Ø×-Ò-Ø&Ô,¨d°Jñô ð #Ô(Øñô ð ð ð	ð 	rI   c                ó  — | j                              ¦   «         D ]G\  }}|\  }}| j                             |¦  «         |D ] }|                      ||dt
          ¬¦  «         Œ!ŒHt          j        t          ¦  «        | _         d S )Nr   )rÇ   rÈ   r|  )	Ú_stashed_messagesrÎ   rö   r}  rÏ   r   r¢   r   r£   )rF   r&  r  r>   r  rÇ   s         rG   Ú_emit_stashed_messageszPyLinter._emit_stashed_messages  s    € Ø Ô2×8Ò8Ñ:Ô:ð 		ð 		‰LˆD�&Ø"‰OˆG�VØŒK×*Ò*¨7Ñ3Ô3Ð3Øð ð �Ø× Ò ØØØÝ#ð	 !ñ ô ð ð ðõ "-Ô!8½Ñ!>Ô!>ˆÔÐÐrI   )rE   NrE   N)
rŽ   r5   r�   r�   r‘   r’   r“   r@   rA   r”   )rA   r”   )F)r½   r¾   r¿   rÀ   rA   r”   )rÓ   r=   rA   r”   )ræ   r=   rA   rë   )r�   rô   rA   r”   )rW   r÷   rA   r”   )rA   rú   )r  r  rA   r”   )rA   rÀ   )rA   r8  )r>   r=   rE  r=   rF  rÀ   rA   rÀ   )rO  rP  rA   rQ  )rO  rP  rA   r”   )rt  rx  r?   r@   rA   ry  )rZ  r0   rA   r”   )r†  ry  ru  r‡  rA   r”   )rZ  r0   re   rB   ru  r‡  rA   r”   )r~  r;   ru  r‡  rZ  r0   rA   r”   )r<   r=   rA   rx  )rO  rP  rA   rx  )rO  rP  rA   rœ  rD   )r>   r=   r<   r@   rA   r”   )r<   r
   r­  r/   rA   r®  )rA   r±  )r<   r=   r>   r=   r?   r@   rA   rÂ  )
r’  rB   r¹  r6   r»  rÒ  rº  rÓ  rA   rÔ  )
rÚ  rB   r¹  r6   r»  rÒ  rº  rÓ  rA   rÔ  )rï  rÀ   rA   rð  )r  r+   rÈ   rð  rÚ  r  rÇ   r  r|  r  rÉ  rð  r  rð  r  rð  rA   r”   )NNNNNNN)r  r=   rÈ   rð  rÚ  r  rÇ   r  r|  r  rÉ  rð  r  rð  r  rð  rA   r”   )
r  r=   rÈ   r+  rÚ  r  r|  r  rA   r”   ):rJ   rK   rL   Ú__doc__r   rò   r†   r	  r‰   Ú__annotations__r§   rŸ   r¼   rÅ   rÒ   rê   rÚ   r    rù   r  r·   r   r'  r,  r3  r7  r<  rD  ÚstaticmethodrJ  rº   rc  rw  rp  r…  rq  r‰  r„  rn  rm  r™  r}  r©  rØ   Úcontextmanagerro  r~  ru  rÖ  rÝ   rþ  rú  r&  rÏ   r   r(  r-  r0  rE   rI   rG   rˆ   rˆ   ÿ   sL  € € € € € € ðð ð  €DØ€Dà?€OÐ?Ð?Ð?Ñ?ð DØGðð Ðð ØLPØ57à#ðH$ð H$ð H$ð H$ð H$ðT#ð #ð #ð #ð7ð 7ð 7ð 7ð 7ð(
ð 
ð 
ð 
ð@0ð 0ð 0ð 0ð@
 ð 
 ð 
 ð 
 ðð ð ð ð>ð >ð >ð >ð
ð 
ð 
ð 
ð'ð 'ð 'ð 'ð@ð @ð @ð @ð>Pð Pð Pð Pð/ð /ð /ð /ð(ð (ð (ð (ð Uð Uð Uð Uð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð ð.ð .ð .ð .ñ „\ð.ð,
4ð 
4ð 
4ð 
4ð" ð " ð " ð " ðH1Ið 1Ið 1Ið 1Iðf ð  ð  ð  ð4Gð Gð Gð GðIð Ið Ið Ið. 6ð  6ð  6ð  6ðD(6ð (6ð (6ð (6ðT4ð 4ð 4ð 4ð2Bð Bð Bð Bðð ð ð ð(=ð =ð =ð =ð =ð&
ð 
ð 
ð 
ð Ôðð ð ñ Ôðð@ ?Cð(ð (ð (ð (ð (ðTð ð ð ð,,ð ,ð ,ð ,ð\	)ð 	)ð 	)ð 	)ðð ð ð ð ð6(ð (ð (ð (ð (ðTZ
ð Z
ð Z
ð Z
ð~  Ø$(ØØ37Ø!%Ø!%Ø%)ð ð  ð  ð  ð  ðL %)Ø3=Ô3Gðð ð ð ð ð2?ð ?ð ?ð ?ð ?ð ?rI   rˆ   )rA   r=   )rW   r=   rA   rX   )cÚ
__future__r   Úargparser¢   rØ   r½  rX  rR   rÝ  rÐ  r   Úcollections.abcr   r   r   r   Úior	   Úpathlibr
   Úrer   Útypesr   Útypingr   r   r\   r   r–   r   r   r   r   Úpylint.checkers.base_checkerr   Úpylint.config.arguments_managerr   Úpylint.constantsr   r   r   r   Úpylint.interfacesr   Úpylint.lint.base_optionsr   Úpylint.lint.cachingr   r   Úpylint.lint.expand_modulesr   r   r    Ú!pylint.lint.message_state_handlerr!   Úpylint.lint.parallelr"   Úpylint.lint.report_functionsr#   r$   r%   Úpylint.lint.utilsr&   r'   r(   r)   Úpylint.messager*   r+   r,   Úpylint.reporters.base_reporterr-   Úpylint.reporters.textr.   Úpylint.reporters.ureportsró  Úpylint.typingr/   r0   r1   r2   r3   r4   r5   Úpylint.utilsr6   r7   r8   r9   rÊ  r;   rV   rh   ÚLINEr†   r2  r«   rˆ   rE   rI   rG   ú<module>rO     sf  ðð
 #Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à €€€Ø Ð Ð Ð Ð Ð à >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø =Ð =Ð =Ð =Ð =Ð =ðð ð ð ð ð ð ð ð ð ð ð ð #Ð "Ð "Ð "Ð "Ð "Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :ðð ð ð ð ð ð ð ð ð ð
 CÐ BÐ BÐ BÐ BÐ BØ /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð NÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø .Ð .Ð .Ð .Ð .Ð .Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð BÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà
Œ/€ðð ð ð ð �Xñ ô ð ðð ð ð ðð ð ð ðW+ØØØð	8à	�,Ô#Ð$ððW+ð ØØð	1ð 
�,Ô#Ð$ððW+ð  Ø&Øð	<à	�,Ô#Ð$ðð!W+ð. Ø3ØØTØ	�,Ô#Ð$ð	ð/W+ð: Ø:Øð	"ð "Ô&Ø$ð	
ð 	
ð	ð;W+ðN Ø-Øð	"ð "Ô&Ø$ð	
ð 	
ð	ðOW+ðb Ø#ØØOà!Ô&Ø$ð	
ð 	
ð	ðcW+ðt ØØØ:à!Ô&Ø$ð	
ð 	
ð	ðuW+ðF Ø&Øð	ð
 "Ô&Ø$ð	
ð 	
ððGW+ð^ Ø#Øð	0ð "Ô&Ø$ð	
ð 	
ð	ð_W+ðr Ø5Øð	>ð >Ð>Ø!Ô&Ø$ð	
ð 	
ððsW+ðJ ØØØ:Ø	�,Ô#Ð$ð	ðKW+ðV Ø%Ø$Ø<Ø	�,Ô#Ð$ð	ðWW+ðb ØUØØBà!Ô&Ø7Ð8ð	
ð 	
ð	ðcW+ðt Ø+Øð	ð "Ô&Ø7Ð8ð	
ð 	
ð	ðuW+ðH ØEØØ:Ø	�,Ô#Ð$ð	ðIW+ðT ØYØ#ð	à	�,Ô#Ð$ððUW+ðb Ø'ØØAØ	�,Ô#Ð$ð	ðcW+ð W+€ð Wð Wð Wñ Wðvb?ð b?ð b?ð b?ð b?ØØØÔ!ØÔñ	b?ô b?ð b?ð b?ð b?rI   