Ë
    pPêjÇ  ã                  ó”  — d 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mZmZmZmZmZmZmZmZ ddlmZmZmZmZ ddlmZmZmZmZ dd	lmZm Z  dd
l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; ddl<m=Z=m>Z>m?Z? ddl@mAZAmBZBmCZCmDZD ddlEmFZFmGZG ddlHmIZImJZJmKZKmLZL ddlMmNZNmOZO ddlPmQZQ ddlRmSZS ddlTmUZUmVZVmWZW ddlXmYZYmZZZm[Z[m\Z\ ddl]m^Z^ ddl_m`Z`maZa dAd„ZbdBd„ZcdCd„ZddDd„Ze	 	 dE	 	 	 	 	 	 	 	 	 	 	 	 	 dFd„Zf	 	 	 	 	 	 	 	 	 	 dGd„ZgdHd „Zh	 dI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dJd!„ZidKd"„ZjdLd#„ZkdMd$„Zl	 	 	 	 	 	 	 	 	 	 dNd%„ZmdOd&„ZndPd'„ZodQd(„Zpdd)œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dRd*„Zq G d+„ d,e«      ZrdSd-„Zs	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dTd.„Zt	 	 	 	 	 	 	 	 	 	 dUd/„Zu	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dVd0„Zv	 	 	 	 	 	 	 	 	 	 	 	 	 	 dWd1„ZwdXd2„ZxdYd3„ZydZd4„Zz	 	 	 	 	 	 	 	 d[d5„Z{	 	 	 	 	 	 	 	 	 	 	 	 d\d6„Z|	 	 	 	 	 	 	 	 	 	 	 	 d]d7„Z}	 	 	 	 	 	 	 	 	 	 d^d8„Z~d_d9„Zd`d:„Z€dad;„Z�dbd<„Z‚dcd=„Zƒddd>„Z„	 	 	 	 	 	 	 	 	 	 ded?„Z…	 	 	 	 	 	 	 	 	 	 ded@„Z†y)faØ  Transform mypy AST functions to IR (and related things).

Normal functions are translated into a list of basic blocks
containing various IR ops (defined in mypyc.ir.ops).

This also deals with generators, async functions and nested
functions. All of these are transformed into callable classes. These
have a custom __call__ method that implements the call, and state, such
as an environment containing non-local variables, is stored in the
instance of the callable class.
é    )Úannotations)Údefaultdict)ÚSequence)Ú
NamedTuple)
ÚArgKindÚClassDefÚ	DecoratorÚFuncBaseÚFuncDefÚFuncItemÚ
LambdaExprÚOverloadedFuncDefÚTypeInfoÚVar)ÚCallableTypeÚTypeÚUnboundTypeÚget_proper_type)ÚFAST_PREFIXÚLAMBDA_NAMEÚPROPSET_PREFIXÚ	SELF_NAME)ÚClassIRÚNonExtClassInfo)ÚFUNC_CLASSMETHODÚFUNC_NORMALÚFUNC_STATICMETHODÚFuncDeclÚFuncIRÚFuncSignatureÚ
RuntimeArg)Ú
BasicBlockÚComparisonOpÚGetAttrÚIntegerÚLoadLiteralÚRegisterÚReturnÚSetAttrÚUnboxÚUnreachableÚValue)Ú	RInstanceÚbool_rprimitiveÚc_int_rprimitiveÚdict_rprimitiveÚint_rprimitiveÚobject_rprimitive)Ú	IRBuilderÚcalculate_arg_defaultsÚgen_arg_defaults)Úadd_call_to_callable_classÚadd_get_to_callable_classÚinstantiate_callable_classÚsetup_callable_class)ÚFuncInfoÚGeneratorClass)Úadd_vars_to_envÚfinalize_env_classÚload_env_registersÚsetup_env_class)Úgen_generator_funcÚgen_generator_func_body)ÚAssignmentTarget)Úget_func_target_symbol)Údict_get_method_with_noneÚdict_new_opÚexact_dict_set_item_op)Úgeneric_getattrÚgeneric_setattrÚpy_get_item_opÚpy_setattr_op)Úregister_function)Úis_same_method_signatureÚis_same_typec                ó<  — | j                   j                  || j                  j                  «      }t	        | ||j
                  |«      \  }}|r'| j                  t        | |«      ||j                  «       t        | |«       | j                  ||j                  «       y ©N)ÚmapperÚfdef_to_sigÚoptionsÚstrict_dunders_typingÚgen_func_itemÚnameÚassignÚget_func_targetÚlineÚmaybe_insert_into_registry_dictÚadd_function)ÚbuilderÚfdefÚsigÚfunc_irÚfunc_regs        ú[/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypyc/irbuild/function.pyÚtransform_func_defra   b   sy   € Ø
�.‰.×
$Ñ
$ T¨7¯?©?×+PÑ+PÓ
Q€CÜ% g¨t°T·Y±YÀÓDÑ€GˆXñ Ø�‰” w°Ó5°xÀÇÁÔKÜ# G¨TÔ2Ø×Ñ˜ $§)¡)Õ,ó    c                óV   — |j                   sJ ‚| j                  |j                   «       y rO   )ÚimplÚaccept)r[   Úos     r`   Útransform_overloaded_func_defrg   n   s   € à�6Š6€Mˆ6Ø‡N�N�1—6‘6Õrb   c                óz  — | j                   j                  |j                  | j                  j                  «      }t        | |j                  |j                  j                  |«      \  }}d }|rSt        | |j                  |«      }| j                  t        | |j                  «      ||j                  j                  «       ns|j                  | j                  v r[|j                  j                  j                  d«      d   }| j                  ||j                  «      }t        | |j                  |«      }|�U| j                  t         | j#                  «       | j%                  |j                  j                  «      |g|j                  «       t'        | |j                  «       | j(                  j+                  |«       y )Nú.éÿÿÿÿ)rP   rQ   ÚfuncrR   rS   rT   rU   Úload_decorated_funcrV   rW   rX   Úfdefs_to_decoratorsÚfullnameÚsplitÚload_global_strÚcall_crF   Úload_globals_dictÚload_strrY   Ú	functionsÚappend)r[   Údecr]   r^   r_   Údecorated_funcrU   Ú	orig_funcs           r`   Útransform_decoratorry   t   sI  € Ø
�.‰.×
$Ñ
$ S§X¡X¨w¯©×/TÑ/TÓ
U€CÜ% g¨s¯x©x¸¿¹¿¹ÈÓLÑ€GˆXØ#'€NÙÜ,¨W°c·h±hÀÓIˆØ�‰” w°·±Ó9¸>È3Ï8É8Ï=É=ÕYð 
�‰�W×0Ñ0Ñ	0à�x‰x× Ñ ×&Ñ& sÓ+¨BÑ/ˆð ×+Ñ+¨D°#·(±(Ó;ˆ	Ü,¨W°c·h±hÀ	ÓJˆàÐ!à�‰Ü"Ø×&Ñ&Ó(¨'×*:Ñ*:¸3¿8¹8¿=¹=Ó*IÈ>ÐZØ×Ñô	
ô $ G¨S¯X©XÔ6à×Ñ×Ñ˜WÕ%rb   c           	     ól  — t        | j                  |   «      }t        |t        «      sJ |«       ‚g }t	        |j
                  |j                  «      D ]_  \  }}||j                  _        |j                  t        |j                  j                  | j                  |«      |j                  «      «       Œa | j                  |j                  «      }t        ||«      }t         › | j"                  › �}| xj"                  dz  c_        t%        | |||«      \  }	}
|
€J ‚| j&                  j                  |	«       |
S )Né   )r   ÚtypesÚ
isinstancer   ÚzipÚ	argumentsÚ	arg_typesÚvariableÚtyperu   r!   rU   Útype_to_rtypeÚkindÚret_typer    r   Úlambda_counterrT   rt   )r[   ÚexprÚtypÚruntime_argsÚargÚarg_typer…   ÚfsigÚfnamer^   r_   s              r`   Útransform_lambda_exprrŽ   “   s  € Ü
˜'Ÿ-™-¨Ñ-Ó
.€CÜ�cœ<Ô(Ð-¨#Ó-Ð(à€LÜ˜TŸ^™^¨S¯]©]Ó;ò 
‰ˆˆXØ$ˆ�‰ÔØ×ÑÜ�s—|‘|×(Ñ(¨'×*?Ñ*?ÀÓ*IÈ3Ï8É8ÓTõ	
ð
ð
 ×$Ñ$ S§\¡\Ó2€Hä˜ xÓ0€Däˆm˜G×2Ñ2Ð3Ð4€EØ×Ò˜aÑÕÜ% g¨t°U¸DÓAÑ€GˆXØÐÐÐà×Ñ×Ñ˜WÔ%Ø€Orb   NFc                óR  ‡ ‡‡‡— d}|‰ j                   v xs t        |t        «      }|‰ j                  j	                  «       v }|‰ j
                  v }	|‰ j                  v Šd}
t        ‰ |«      }d}‰rA‰ j                  j                  ‰j                     }|j                   xr | }
‰j                  }‰rt        |«      }n|}t        |||t        ‰ «      |||	|
|¬«	      }|j                   }‰ j#                  |‰j$                  ¬«       |r`‰ j&                  j(                  }t        |t*        «      sJ |«       ‚‰ j                  j,                  |   }t/        |«      ‰ j&                  _        |s|r%‰ j&                  j3                  «       st5        ‰ «       |s|
rt7        ‰ «       |r#t9        ‰ ˆ ˆˆˆfd„«      \  }}t;        ‰ ||«       nt=        ‰ ‰‰‰«      \  }}‰rK‰ j>                  jA                  |«       t        |t*        «      sJ |«       ‚tC        ‰ ||j                  |‰«      S ||fS )aí  Generate and return the FuncIR for a given FuncDef.

    If the given FuncItem is a nested function, then we generate a
    callable class representing the function and use that instead of
    the actual function. if the given FuncItem contains a nested
    function, then we generate an environment class so that inner
    nested functions can access the environment of the given FuncDef.

    Consider the following nested function:

        def a() -> None:
            def b() -> None:
                def c() -> None:
                    return None
                return None
            return None

    The classes generated would look something like the following.

                has pointer to        +-------+
        +-------------------------->  | a_env |
        |                             +-------+
        |                                 ^
        |                                 | has pointer to
    +-------+     associated with     +-------+
    | b_obj |   ------------------->  | b_env |
    +-------+                         +-------+
                                          ^
                                          |
    +-------+         has pointer to      |
    | c_obj |   --------------------------+
    +-------+
    NF)	ÚfitemrU   Ú
class_nameÚ	namespaceÚ	is_nestedÚcontains_nestedÚis_decoratedÚ
in_non_extÚadd_nested_funcs_to_env)r…   c           	     ó&   •— t        ‰| |‰|‰‰«      S rO   )Úgen_func_ir)ÚargsÚblocksÚfn_infor[   ÚcdefÚis_singledispatchr]   s      €€€€r`   ú<lambda>zgen_func_item.<locals>.<lambda>  s   ø€ ¬+Ø˜˜v s¨G°TÐ;Ló+€ rb   )"Únested_fitemsr}   r   Úencapsulating_funcsÚkeysrm   Úsingledispatch_implsÚhas_nested_func_self_referencerP   Ú
type_to_irÚinfoÚis_ext_classrU   Úsingledispatch_main_func_namer:   Úgen_func_nsÚis_generatorÚenterr…   rœ   r�   r   Úfdef_to_generatorr;   Úgenerator_classÚ#can_merge_generator_and_env_classesr?   r9   r@   rA   Úgen_func_bodyrt   ru   Úgen_dispatch_func_ir)r[   r�   rU   r]   r�   Úmake_ext_methodr_   r“   r”   r•   r–   r—   r‘   ÚirÚ	func_namerœ   rª   Úgenerator_class_irr^   rž   s   `  ``              @r`   rT   rT   ­   s  û€ ðX "€Hð
 ˜×.Ñ.Ð.ÒO´*¸UÄJÓ2O€IØ˜w×:Ñ:×?Ñ?ÓAÐA€OØ˜G×7Ñ7Ð7€LØ ×!=Ñ!=Ð=ÐØ€JÜ<¸WÀeÓLÐØ€JÙØ�^‰^×&Ñ& t§y¡yÑ1ˆØŸ™Ð(Ò@°Ð-@ˆ
Ø—Y‘Yˆ
áÜ1°$Ó7‰	àˆ	äØØØÜ˜gÓ&ØØ'Ø!ØØ 7ô
€Gð ×'Ñ'€LØ‡M�M�' C§L¡L€MÔ1áØ—‘×%Ñ%ˆÜ˜%¤Ô)Ð0¨5Ó0Ð)Ø$Ÿ^™^×=Ñ=¸eÑDÐÜ*8Ð9KÓ*Lˆ�‰Ô'ñ
 Ù˜WŸ_™_×PÑPÔRä˜Ô á‘JÜ˜WÔ%áä.Øöó
Ñˆ�ô 	  ¨°(Õ;ä)¨'°3¸Ð>OÓPÑˆ�áà×Ñ× Ñ  Ô)ä˜%¤Ô)Ð0¨5Ó0Ð)Ü# G¨U°G·L±LÀ$ÈÓLÐLà�HÐÐrb   c           	     óš  — t        | «       t        | «       | j                  j                  rt	        | «       t        | «       | j                  | j                  j                  j                  «       | j                  «        | j                  d   }| j                  «       \  }}}}}	t        | ||||	||«      \  }
}t        | |	||«       |
|fS )Nrj   )r>   r5   rœ   r”   r=   r<   re   r�   ÚbodyÚmaybe_add_implicit_returnÚ	symtablesÚleaver™   r4   )r[   r]   r�   rž   Úsymtablerš   Ú_r›   r…   rœ   r^   r_   s               r`   r¯   r¯   &  s¸   € ô �wÔÜ�WÔØ‡�×&Ò&Ü˜7Ô#Ü�GÔØ‡N�N�7—?‘?×(Ñ(×-Ñ-Ô.Ø×%Ñ%Ô'ð × Ñ  Ñ$€Hà)0¯©«Ñ&€Dˆ!ˆV�X˜wä# G¨T°6¸3ÀÈÐO`ÓaÑ€GˆXô ˜7 G¨X°xÔ@Ø�HÐÐrb   c                óÊ   ‡ — t        d„ ‰ j                  j                  |t        «       «      D «       «      ryt        ˆ fd„‰ j                  j                  |g «      D «       «      S )z¼Does a nested function contain a self-reference in its body?

    If a nested function only has references in the surrounding function,
    we don't need to add it to the environment.
    c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrO   )r}   r
   )Ú.0Úsyms     r`   ú	<genexpr>z1has_nested_func_self_reference.<locals>.<genexpr>E  s   è ø€ Ò
Y¨Œ:�cœ8×$Ñ
Yùó   ‚Tc              3  ó6   •K  — | ]  }t        ‰|«      –— Œ y ­wrO   )r¤   )r¾   Únestedr[   s     €r`   rÀ   z1has_nested_func_self_reference.<locals>.<genexpr>G  s    øè ø€ ò àô 	' w°×7ñùs   ƒ)ÚanyÚfree_variablesÚgetÚsetr¡   )r[   r�   s   ` r`   r¤   r¤   ?  sZ   ø€ ô Ñ
Y°×0FÑ0F×0JÑ0JÈ5ÔRUÓRWÓ0XÔ
YÔYØÜó à×1Ñ1×5Ñ5°e¸RÓ@ôó ð rb   c                óx  — d}|j                   s|j                  r+t        | ||||«      }t        | |«       t	        | |«      }||fS |j
                  }	t        |	t        «      sJ |	«       ‚| j                  j                  |	   }
|rZ|j                  t        |
j                  z   k(  r:| j                  j                  |j                     j                  |j                     }
|j                  s|r¨|€dn|j                  }t!        |j                  || j"                  ||
j$                  |
j&                  |
j(                  |
j*                  |
j,                  |
j.                  |
j0                  ¬«      }
t3        |
|||	j4                  |	j                  ¬«      }||fS t3        |
|||	j4                  |	j                  ¬«      }||fS )a  Generate the FuncIR for a function.

    This takes the basic blocks and function info of a particular
    function and returns the IR. If the function is nested,
    also returns the register containing the instance of the
    corresponding callable class.
    N)Úis_prop_getterÚis_prop_setterrª   Úis_coroutineÚimplicitÚinternal)Útraceback_name)r“   r–   r6   r7   r8   r�   r}   r   rP   Úfunc_to_declrU   r   r¥   r¦   Úmethod_declsr•   r   Úmodule_namer„   rÉ   rÊ   rª   rË   rÌ   rÍ   r   rX   )r[   rš   r›   r]   rœ   r�   Úis_singledispatch_main_funcr_   r^   r�   Ú	func_declr‘   s               r`   r™   r™   M  s�  € ð  "€HØ×Ò˜G×.Ò.Ü,¨W°d¸FÀCÈÓQˆÜ! '¨7Ô3Ü-¨g°wÓ?ˆð4 �XÐÐð1 —‘ˆÜ˜%¤Ô)Ð0¨5Ó0Ð)Ø—N‘N×/Ñ/°Ñ6ˆ	Ù�G—L‘L¤K°)·.±.Ñ$@Ò@àŸ™×1Ñ1°$·)±)Ñ<×IÑIÈ'Ï,É,ÑWˆIØ×ÒÑ#>Ø!% ™°4·9±9ˆJÜ Ø—‘ØØ×#Ñ#ØØ—‘Ø(×7Ñ7Ø(×7Ñ7Ø&×3Ñ3Ø&×3Ñ3Ø"×+Ñ+Ø"×+Ñ+ôˆIô ˜Y¨¨f°e·j±jÐQV×Q[ÑQ[Ô\ˆGð �XÐÐô ˜Y¨¨f°e·j±jÐQV×Q[ÑQ[Ô\ˆGØ�XÐÐrb   c           	     óÔ  — |j                   dz   }| j                  j                  |j                     }|j                  }d|j                   › d�}|j
                  r| j                  |dz   |«       |j                  r| j                  |dz   |«       | j                  ||t        d¬«      5  | j                  dt        «      }| j                  t        | j                  «       |g|«      }t        «       t        «       }
}	t        d	t        |«      }| j!                  t#        ||t"        j$                  |«      «      }| j'                  ||	|
«       | j)                  |	«       | j!                  t+        ||«      «       | j)                  |
«       | j-                  | j                  «       |j                   |gt        |«      }| j!                  t+        ||«      «       d
d
d
«       y
# 1 sw Y   y
xY w)ag  
    Generate a wrapper function for __getattr__ that can be put into the tp_getattro slot.
    The wrapper takes one argument besides self which is the attribute name.
    It first checks if the name matches any of the attributes of this class.
    If it does, it returns that attribute. If none match, it calls __getattr__.

    __getattr__ is not supported in classes that allow interpreted subclasses because the
    tp_getattro slot is inherited by subclasses and if the subclass overrides __getattr__,
    the override would be ignored in our wrapper. TODO: To support this, the wrapper would
    have to check type of self and if it's not the compiled class, resolve "__getattr__" against
    the type at runtime and call the returned method, like _Py_slot_tp_getattr_hook in cpython.

    __getattr__ is not supported in classes which inherit from non-native classes because those
    have __dict__ which currently has some strange interactions when class attributes and
    variables are assigned through __dict__ vs. through regular attribute access. Allowing
    __getattr__ on top of that could be problematic.
    Ú	__wrapperz&"__getattr__" not supported in class "ú
" because ú it allows interpreted subclassesú#it inherits from a non-native classT©rÍ   Úattrr   N)rU   rP   r¥   r¦   rX   Úallow_interpreted_subclassesÚerrorÚinherits_pythonÚenter_methodr2   Úadd_argumentrq   rG   Úselfr"   r%   Úaddr#   ÚNEQÚadd_bool_branchÚactivate_blockr(   Úgen_method_call)r[   r�   ÚgetattrrU   r²   rX   Ú
error_baseÚattr_argÚgeneric_getattr_resultÚreturn_genericÚcall_getattrÚnullÚgot_genericÚgetattr_results                 r`   Úgenerate_getattr_wrapperrï   ~  sŸ  € ð$ �<‰<˜+Ñ%€DØ	�‰×	"Ñ	" 4§9¡9Ñ	-€BØ�<‰<€Dà9¸$¿)¹)¸ÀJÐO€JØ	×&Ò&Ø�‰�jÐ#EÑEÀtÔLØ	×ÒØ�‰�jÐ#HÑHÈ$ÔOà	×	Ñ	˜b $Ô(9ÀDÐ	Ó	Iñ 2Ø×'Ñ'¨Ô0AÓBˆØ!(§¡´À'Ç,Á,Ã.ÐRZÐA[Ð]aÓ!bÐä'1£|´Z³\˜ˆÜ�qÔ+¨TÓ2ˆØ—k‘kÜÐ/°´|×7GÑ7GÈÓNó
ˆð 	×Ñ ¨^¸\ÔJà×Ñ˜~Ô.Ø�‰”FÐ1°4Ó8Ô9à×Ñ˜|Ô,à ×0Ñ0Ø�L‰L‹N˜GŸL™L¨8¨*Ô6GÈó
ˆð 	�‰”F˜>¨4Ó0Ô1÷'2÷ 2ñ 2ús   Â*D+GÇG'c           	     ó  — |j                   dz   }| j                  j                  |j                     }|j                  }d|j                   › d�}|j
                  r| j                  |dz   |«       |j                  r| j                  |dz   |«       | j                  ||t        d¬«      5  | j                  dt        «      }| j                  d	t        «      }t        «       t        «       }
}	t        d
t        |«      }| j                  t        ||t        j                   |«      «      }| j#                  ||	|
«       | j%                  |	«       |j                  j'                  d«      }|r|j(                  nd}|duxr |j*                  j-                  d«       }|r%| j/                  | j1                  «       d|gd|«       n(| j3                  t4        | j1                  «       ||g|«       | j                  t7        t        d
t        «      |«      «       | j%                  |
«       | j/                  | j1                  «       |j                   ||gd|«       | j                  t7        t        d
t        «      |«      «       ddd«       y# 1 sw Y   yxY w)a„  
    Generate a wrapper function for __setattr__ that can be put into the tp_setattro slot.
    The wrapper takes two arguments besides self - attribute name and the new value.
    Returns 0 on success and -1 on failure. Restrictions are similar to the __getattr__
    wrapper above.

    The wrapper calls the user-defined __setattr__ when the value to set is not NULL.
    When it's NULL, this means that the call to tp_setattro comes from a del statement,
    so it calls __delattr__ instead. If __delattr__ is not overridden in the native class,
    this will call the base implementation in object which doesn't work without __dict__.
    rÕ   z&"__setattr__" not supported in class "rÖ   r×   rØ   TrÙ   rÚ   Úvaluer   Ú__delattr__Nú	builtins.)rU   rP   r¥   r¦   rX   rÛ   rÜ   rÝ   rÞ   r/   rß   r2   r"   r%   rá   r#   ÚEQrã   rä   rÆ   Únodern   Ú
startswithrå   rà   rq   rH   r(   )r[   r�   ÚsetattrrU   r²   rX   rç   rè   Ú	value_argÚcall_delattrÚcall_setattrrì   Ú
is_delattrÚdelattr_symbolÚdelattrÚdelattr_overrides                   r`   Úgenerate_setattr_wrapperrÿ   °  s"  € ð �<‰<˜+Ñ%€DØ	�‰×	"Ñ	" 4§9¡9Ñ	-€BØ�<‰<€Dà9¸$¿)¹)¸ÀJÐO€JØ	×&Ò&Ø�‰�jÐ#EÑEÀtÔLØ	×ÒØ�‰�jÐ#HÑHÈ$ÔOà	×	Ñ	˜b $Ô(8À4Ð	Ó	Hñ @Ø×'Ñ'¨Ô0AÓBˆØ×(Ñ(¨Ô2CÓDˆ	ä%/£\´:³<�lˆÜ�qÔ+¨TÓ2ˆØ—[‘[¤¨i¸¼|¿¹ÐPTÓ!UÓVˆ
Ø×Ñ 
¨L¸,ÔGà×Ñ˜|Ô,ØŸ™Ÿ™ }Ó5ˆÙ)7�.×%Ò%¸TˆØ"¨$Ð.Ò_°w×7GÑ7G×7RÑ7RÐS^Ó7_Ð3_ÐÙØ×#Ñ# G§L¡L£N°MÀHÀ:ÈtÐUYÕZð �N‰Nœ?¨W¯\©\«^¸XÀtÐ,LÈdÔSØ�‰”Fœ7 1Ô&6Ó7¸Ó>Ô?à×Ñ˜|Ô,Ø×Ñ §¡£°·±¸xÈÐ>SÐUYÐ[_Ô`Ø�‰”Fœ7 1Ô&6Ó7¸Ó>Ô?÷5@÷ @ñ @ús   Â*GJÊJc           	     óò  — |j                   }| j                  j                  |j                     }| j                  j	                  || j
                  j                  «      }t        | ||||«      \  }}| j                  j                  |«       t        | |«      �rx|j                  j                  d«      \  }}}| j                  |j                  «      }	| j                  |	d|j                  «      }
| j!                  t"        |
| j%                  |«      g|j                  «      }t'        | ||«      }|j(                  j*                  t,        k(  r;| j/                  d|j                  «      }| j1                  ||g|j                  «      }nW|j(                  j*                  t2        k(  r:| j/                  d|j                  «      }| j1                  ||g|j                  «      }| j!                  t4        |	| j%                  |«      |g|j                  «       |j6                  r"||j8                  vsJ ‚|d f|j8                  |<   nA|| j:                  v r3||j8                  v sJ ‚|j8                  |   \  }}||f|j8                  |<   ||j<                  |j(                  j                   <   |j>                  dd  D ]¥  }||j@                  v sŒ|dk7  sŒtC        |j@                  |   jD                  |j@                  |   jD                  «      rŒStG        | |j@                  |   jD                  ||||«      }||jH                  ||f<   | j                  j                  |«       Œ§ |jJ                  r\tG        | |jD                  ||||d¬«      }||jH                  ||j(                  j                   f<   | j                  j                  |«       |j                   d	k(  rtM        | ||«       y |j                   d
k(  rtO        | ||«       y |j                   dk(  rl|j                  jQ                  d
«      }|r1|jR                  r%|jR                  j                  jU                  d«      r| jW                  d|j                  «       y y y )Nri   Ú__dict__úbuiltins.classmethodúbuiltins.staticmethodr{   Ú__init__T©Ú	do_py_opsÚ__getattr__Ú__setattr__rò   ró   z{"__delattr__" supported only in classes that also override "__setattr__", or inherit from a native class that overrides it.),rU   rP   r¥   r¦   rQ   rR   rS   rT   rt   ru   r•   rn   Ú
rpartitionÚload_native_type_objectÚpy_get_attrrX   Úprimitive_oprI   rs   rl   Údeclr„   r   Úload_module_attr_by_fullnameÚpy_callr   rJ   Úis_propertyÚ
propertiesÚprop_settersÚmethodsÚmrorÐ   rL   r]   Úgen_glueÚglue_methodsrÛ   rï   rÿ   rÆ   rõ   rö   rÜ   )r[   r�   r\   rU   Úclass_irr]   r^   r_   r»   rˆ   Ú	type_dictrx   rw   Úcls_methÚ	stat_methÚ	getter_irÚbaseÚfr÷   s                      r`   Úhandle_ext_methodr  ã  sñ  € à�9‰9€DØ�~‰~×(Ñ(¨¯©Ñ3€HØ
�.‰.×
$Ñ
$ T¨7¯?©?×+PÑ+PÓ
Q€CÜ% g¨t°T¸3ÀÓEÑ€GˆXØ×Ñ×Ñ˜WÔ%ä�G˜TÕ"à—]‘]×-Ñ-¨cÓ2‰
ˆˆ1ˆdð ×-Ñ-¨d¯m©mÓ<ˆØ×'Ñ'¨¨Z¸¿¹ÓCˆ	Ø×(Ñ(Ü˜Y¨×(8Ñ(8¸Ó(>Ð?ÀÇÁó
ˆ	ô
 -¨W°d¸IÓFˆð �<‰<×ÑÔ 0Ò0Ø×;Ñ;Ð<RÐTX×T]ÑT]Ó^ˆHØ$Ÿ_™_¨X¸Ð7GÈÏÉÓS‰NØ�\‰\×ÑÔ"3Ò3Ø×<Ñ<Ð=TÐVZ×V_ÑV_Ó`ˆIØ$Ÿ_™_¨Y¸Ð8HÈ$Ï)É)ÓTˆNð 	×ÑÜ˜C ×!1Ñ!1°$Ó!7¸ÐHÈ$Ï)É)ô	
ð ×Òð ˜8×.Ñ.Ñ.Ð.Ð.Ø%,¨d Oˆ×Ñ˜DÒ!à	�×%Ñ%Ñ	%à�x×*Ñ*Ñ*Ð*Ð*Ø×*Ñ*¨4Ñ0‰ˆ	�1Ø%.°Ð$8ˆ×Ñ˜DÑ!à*1€H×Ñ�W—\‘\×&Ñ&Ñ'ð —‘˜Q˜RÐ ò (ˆà�D×%Ñ%Ò%Ø˜
Ó"Ü,Ø×%Ñ% dÑ+×/Ñ/°×1BÑ1BÀ4Ñ1H×1LÑ1Lõô ˜ $×"3Ñ"3°DÑ"9×"=Ñ"=¸wÈÐRVÐX\Ó]ˆAØ23ˆH×!Ñ! 4¨ ,Ñ/Ø×Ñ×$Ñ$ QÕ'ð(ð( ×,Ò,Ü�W˜gŸk™k¨7°H¸hÈÐX\Ô]ˆð
 @Aˆ×Ñ˜x¨¯©×):Ñ):Ð;Ñ<Ø×Ñ× Ñ  Ô#à‡y�y�MÒ!Ü  ¨$°Õ5Ø	�‰�mÒ	#Ü  ¨$°Õ5Ø	�‰�mÒ	#Ø—)‘)—-‘- Ó.ˆÙ˜gŸlšl¨g¯l©l×.CÑ.C×.NÑ.NÈ{Ô.[Ø�M‰MðFà—	‘	õð /\ð 
$rb   c                óv  — |j                   }| j                  j                  || j                  j                  «      }t        | ||||«      \  }}|€J ‚| j                  j                  |«       t        | |«      r|}t        | ||«      }|j                  r;| j                  d|j                  «      }	| j                  |	|g|j                  «      }nÉ| j                  j                  |   j                  t         k(  r;| j                  d|j                  «      }
| j                  |
|g|j                  «      }nd| j                  j                  |   j                  t"        k(  r:| j                  d|j                  «      }| j                  ||g|j                  «      }| j%                  ||||j                  «       | j                  j&                  |j(                     }t*        |j                   z   }||j,                  v r?t        | ||||d¬«      \  }}||j.                  |<   | j                  j                  |«       y y )Nzbuiltins.propertyr  r  T)r±   )rU   rP   rQ   rR   rS   rT   rt   ru   r•   rl   r  r  rX   r  rÏ   r„   r   r   Úadd_to_non_ext_dictr¥   r¦   r   rÐ   r  )r[   Únon_extr�   r\   rU   r]   r^   r_   rx   Úpropr  r  r  s                r`   Úhandle_non_ext_methodr#  G  sì  € ð �9‰9€DØ
�.‰.×
$Ñ
$ T¨7¯?©?×+PÑ+PÓ
Q€CÜ% g¨t°T¸3ÀÓEÑ€GˆXØÐÐÐØ×Ñ×Ñ˜WÔ%ä�G˜TÔ"àˆ	Ü& w°°iÓ@ˆð ×ÒØ×3Ñ3Ð4GÈÏÉÓSˆØ—?‘? 4¨(¨°T·Y±YÓ?‰à	�‰×	$Ñ	$ TÑ	*×	/Ñ	/Ô3CÒ	CØ×7Ñ7Ð8NÐPT×PYÑPYÓZˆØ—?‘? 8¨h¨Z¸¿¹ÓC‰à	�‰×	$Ñ	$ TÑ	*×	/Ñ	/Ô3DÒ	DØ×8Ñ8Ð9PÐRV×R[ÑR[Ó\ˆ	Ø—?‘? 9¨x¨j¸$¿)¹)ÓDˆà×Ñ ¨¨x¸¿¹ÔCð �~‰~×(Ñ(¨¯©Ñ3€HÜ˜Ÿ™Ñ"€DØˆx×$Ñ$Ñ$Ü)¨'°4¸¸sÀDÐZ^Ô_Ñˆ�Ø!(ˆ×Ñ˜ÑØ×Ñ× Ñ  Õ)ð %rb   c                óF   — dj                  d„ | j                  D «       «      S )zJGenerate a namespace for a nested function using its outer function names.r»   c              3  ó¦   K  — | ]I  }|j                   r;|j                   d k7  r,|j                   |j                  sdnd|j                  z   z   –— ŒK y­w)z<module>Ú r»   N)rU   r‘   )r¾   r¦   s     r`   rÀ   zgen_func_ns.<locals>.<genexpr>q  sD   è ø€ ò àØ�9Š9˜Ÿ™ jÒ0ð 	�	‰	˜tŸš‘R°C¸$¿/¹/Ñ4IÕJñùs   ‚AA)ÚjoinÚfn_infos)r[   s    r`   r©   r©   o  s&   € à�8‰8ñ à×$Ñ$ôó ð rb   c                ó  — t        | |«      s|S | j                  |   }|}t        |«      D ]R  }|j                  | j                  «      }t        |t        «      sJ |«       ‚| j                  ||g|j                  «      }ŒT |S )zùApply decorators to a function.

    Given a decorated FuncDef and an instance of the callable class
    representing that FuncDef, apply the corresponding decorator
    functions on that decorated FuncDef and return the decorated
    function.
    )	r•   rm   Úreversedre   Úvisitorr}   r,   r  rX   )r[   r\   Úorig_func_regÚ
decoratorsr_   ÚdÚ	decorators          r`   rl   rl   x  s‡   € ô ˜ Ô&ð Ðà×,Ñ,¨TÑ2€JØ€HÜ�jÓ!ò IˆØ—H‘H˜WŸ_™_Ó-ˆ	Ü˜)¤UÔ+Ð6¨YÓ6Ð+Ø—?‘? 9¨x¨j¸(¿-¹-ÓH‰ðIð €Orb   c                ó   — || j                   v S rO   )rm   )r[   r\   s     r`   r•   r•   Ž  s   € Ø�7×.Ñ.Ð.Ð.rb   r  c          	     óü   — |j                   rt        | |||||j                  |«      S |r9|j                  j	                  t
        «      rt        | |||||j                  «      S t        | |||||j                  |«      S )ay  Generate glue methods that mediate between different method types in subclasses.

    Works on both properties and methods. See gen_glue_methods below
    for more details.

    If do_py_ops is True, then the glue methods should use generic
    C API operations instead of direct calls, to enable generating
    "shadow" glue methods that work with interpreted subclasses.
    )r  Úgen_glue_propertyrX   rU   rö   r   Úgen_glue_property_setterÚgen_glue_method)r[   Úbase_sigÚtargetÚclsr  r\   r  s          r`   r  r  ’  sq   € ð& ×ÒÜ  ¨(°F¸CÀÀtÇyÁyÐR[Ó\Ð\Ù�V—[‘[×+Ñ+¬NÔ;Ü'¨°¸6À3ÈÈdÏiÉiÓXÐXÜ˜7 H¨f°c¸4ÀÇÁÈIÓVÐVrb   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)ÚArgInfozlist[Value]rš   zlist[str | None]Ú	arg_nameszlist[ArgKind]Ú	arg_kindsN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© rb   r`   r9  r9  ¬  s   … Ø
ÓØÓØÔrb   r9  c                óö  — |D �cg c]#  }t        |j                  «      |j                  f‘Œ% }}|D ��cg c])  \  }}| j                  | j	                  ||d¬«      |«      ‘Œ+ }}}|D �cg c]P  }|j
                  j                  «       s&|j
                  j                  «       r|j                  s|j                  nd ‘ŒR }}|D �cg c]  }|j
                  ‘Œ }	}t        |||	«      S c c}w c c}}w c c}w c c}w )NT)Úis_arg)
r   rU   r‚   ÚreadÚadd_local_regr„   Úis_namedÚis_optionalÚpos_onlyr9  )
r[   Úrt_argsrX   rŠ   Ú	fake_varsÚvarr‚   rš   r:  r;  s
             r`   Úget_argsrK  ²  sï   € à6=Ö>¨s”#�c—h‘h“- §¡Ò*Ð>€IÐ>ð #÷áˆC�ð 	�‰�W×*Ñ*¨3°¸TÐ*ÓBÀDÕIð€Dñ ð öàð —H‘H×%Ñ%Ô'¨C¯H©H×,@Ñ,@Ô,BÈ3Ï<Ê<ˆ�ŠÐ^bÑbð€Ið ð &-Ö-˜c�—“Ð-€IÐ-Ü�4˜ IÓ.Ð.ùò ?ùóùòùò .s   …(C&´.C+Á)AC1ÃC6c                ó0  — t        | ||j                  j                  |«       | j                  «        |j                  | j
                  d<   t        |j                  «      }|j                  j                  t        k(  r/t        |j                  d   j                  t        |«      «      |d<   t        | ||«      }|j                  |j                  |j                  }}
}	d}|j                   r]|	d|j                     }	|
d|j                     }
|d|j                     }t        | j"                  j                  |j                    d «      }t%        d„ |
D «       «      r2t%        d„ |j                  j                  j                  D «       «      rd}|rv|j                  j                  t&        k(  r| j"                  j)                  |«      }d}n|	d   }d}| j"                  j+                  ||j                  |	|d ||
|d ||d «      }n+| j"                  j-                  |j                  |	|
|||¬«      }| j/                  ||j                  |«      }| j1                  t3        |«      «       | j5                  «       \  }}}}}|j                   r|d|j                     }t7        t9        |j                  d	z   |j                  z   d
z   |j                  | j:                  t=        ||«      |j                  j                  |j                  j>                  ¬«      ||«      S )aU  Generate glue methods that mediate between different method types in subclasses.

    For example, if we have:

    class A:
        def f(builder: IRBuilder, x: int) -> object: ...

    then it is totally permissible to have a subclass

    class B(A):
        def f(builder: IRBuilder, x: object) -> int: ...

    since '(object) -> int' is a subtype of '(int) -> object' by the usual
    contra/co-variant function subtyping rules.

    The trickiness here is that int and object have different
    runtime representations in mypyc, so A.f and B.f have
    different signatures at the native C level. To deal with this,
    we need to generate glue methods that mediate between the
    different versions by coercing the arguments and return
    values.

    If do_pycall is True, then make the call using the C API
    instead of a native call.
    rj   r   Nc              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wrO   )Úis_star)r¾   r„   s     r`   rÀ   z"gen_glue_method.<locals>.<genexpr>ø  s   è ø€ Ò
0˜dˆ4�<‰<�>Ñ
0ùrÁ   c              3  óR   K  — | ]  }|j                   j                  «        –— Œ! y ­wrO   )r„   rN  )r¾   rŠ   s     r`   rÀ   z"gen_glue_method.<locals>.<genexpr>ø  s%   è ø€ ò 9Ø#&ˆC�H‰H×ÑÓÔñ9ùs   ‚%'Tr{   )Úbitmap_argsÚ__Ú_glue)rË   ) Úcheck_native_overrider  r]   r«   r…   Ú	ret_typesÚlistrš   r„   r   r!   rU   r-   rK  r;  r:  Únum_bitmap_argsr[   rÄ   r   Úget_native_typeÚpy_method_callÚcallÚcoercerá   r(   r¹   r   r   rÑ   r    rË   )r[   r5  r6  r7  r  rX   Ú	do_pycallrH  Úarg_inforš   r;  r:  rP  ÚfirstÚstÚretvalÚarg_regsr»   r›   r…   s                       r`   r4  r4  Á  sÀ  € ôD ˜' 8¨V¯[©[¯_©_¸dÔCà‡M�M„OØ$×-Ñ-€G×Ñ�bÑä�8—=‘=Ó!€GØ‡{�{×Ñœ;Ò&Ü §¡¨aÑ 0× 5Ñ 5´yÀ³~ÓFˆ�‰
ä˜ ¨$Ó/€HØ!)§¡°×0BÑ0BÀH×DVÑDV�Yˆ)€Dà€KØ×ÒØÐ/�x×/Ñ/Ð/Ð0ˆØÐ9 ×!9Ñ!9Ð 9Ð:ˆ	ØÐ9 ×!9Ñ!9Ð 9Ð:ˆ	Ü˜7Ÿ?™?×/Ñ/°×1IÑ1IÐ0IÐ0KÐLÓMˆô Ñ
0 iÔ
0Ô0´Sñ 9Ø*0¯+©+¯/©/×*>Ñ*>ô9ô 6ð ˆ	áØ�;‰;×ÑÔ0Ò0à—O‘O×3Ñ3°CÓ8ˆEØ‰Bà˜‘GˆEØˆBØ—‘×/Ñ/Ø�6—;‘;  R S 	¨4°¸2¸3°ÀÈ2È3Àó
‰ð —‘×%Ñ%Ø�K‰K˜˜y¨)°TÀ{ð &ó 
ˆð �^‰^˜F H×$5Ñ$5°tÓ<€FØ‡K�K”�v“Ôà'.§}¡}£Ñ$€Hˆa�˜ 1Ø×ÒØÐ5˜X×5Ñ5Ð5Ð6ˆÜÜØ�K‰K˜$Ñ §¡Ñ*¨WÑ4Ø�H‰HØ×ÑÜ˜' 8Ó,Ø�K‰K×ÑØŸ™×1Ñ1ô	
ð 	Øóð rb   c           	     ó  — t        |j                  «       |j                  «       «      D ]à  \  }}|j                  j                  rG|j                  s;|j                  r/|j
                  r#| j                  dd|j                  › d�z   |«       |j                  j                  s|j                  j                  sŒ�t        |j                  |j                  «      rŒ±| j                  dd|j                  › d|j                  › d�z   |«       Œâ y)z˜Report an error if an override changes signature in unsupported ways.

    Glue methods can work around many signature changes but not all of them.
    zAn argument with type ú"z6" cannot be given a default value in a method overridezIncompatible argument type z" (base class has type "z")N)r~   Ú	real_argsr‚   Úerror_overlapÚoptionalrV  rÜ   rM   )r[   r5  Úsub_sigrX   Úbase_argÚsub_args         r`   rS  rS     sä   € ô ! ×!3Ñ!3Ó!5°w×7HÑ7HÓ7JÓKò Ñˆ�'Ø�=‰=×&Ò&Ø×$Ò$¨×)9Ò)9¸h×>VÒ>Vð —‘Ø,Ø˜(Ÿ-™-˜Ð(^Ð_ñ`àôð
 �=‰=×&Ò&¨'¯,©,×*DÓ*DÜ §¡¨w¯|©|Õ<ð —‘Ø1Ø˜'Ÿ,™,˜Ð'?ÀÇÁ¸ÈbÐQñRàõñrb   c                óœ  — | j                  «        t        t        t        |«      «      }| j	                  |«      }| j                  ||«      }	|j                  | j                  d<   |r| j                  |	|j                  |«      }
n&| j                  t        |	|j                  |«      «      }
| j                  |
|j                  |«      }| j                  t        |«      «       | j                  «       \  }}}}}t        t!        |j                  dz   |j                  z   dz   |j                  | j"                  t%        |g|«      «      ||«      S )a»  Generate glue methods for properties that mediate between different subclass types.

    Similarly to methods, properties of derived types can be covariantly subtyped. Thus,
    properties also require glue. However, this only requires the return type to change.
    Further, instead of a method call, an attribute get is performed.

    If do_pygetattr is True, then get the attribute using the Python C
    API instead of a native call.
    rj   rQ  rR  )r«   r!   r   r-   Úadd_self_to_envrC  r…   rT  r  rU   rá   r$   rZ  r(   r¹   r   r   rÑ   r    )r[   r]   r6  r7  r  rX   Údo_pygetattrÚrt_argÚself_targetrŠ   r_  Úretboxrš   r»   r›   Úreturn_types                   r`   r2  r2  =  s  € ð$ ‡M�M„Oäœ	¤9¨S£>Ó2€FØ×)Ñ)¨#Ó.€KØ
�,‰,�{ DÓ
)€CØŸL™L€G×Ñ�bÑÙØ×$Ñ$ S¨&¯+©+°tÓ<‰à—‘œW S¨&¯+©+°tÓ<Ó=ˆØ�^‰^˜F C§L¡L°$Ó7€FØ‡K�K”�v“Ôà&-§m¡m£oÑ#€Dˆ!ˆV�[ !ÜÜØ�K‰K˜$Ñ §¡Ñ*¨WÑ4Ø�H‰HØ×ÑÜ˜6˜( KÓ0ó		
ð 	Øó	ð 	rb   c                óv  — | j                  «        |j                  | j                  d<   t        |j                  «      }t        |j                  d   j                  t        |«      «      |d<   t        | ||«      }|j                  }|d   }	|d   }
|j                  j                  t        «      sJ ‚|j                  t        t        «      d }| j                  t        |	| j                  |«      | j                  |
t         |«      g|«       | j                  | j#                  «       |j                  |«      }| j%                  t'        |«      «       | j)                  «       \  }}}}}t+        t-        |j                  dz   |j                  z   dz   |j                  | j.                  t1        ||«      «      ||«      S )a  Generate a shadow glue method for a property setter.

    For interpreted subclasses, property setters can't be called via the
    internal __mypyc_setter__<name> method. Instead, use Python's setattr
    to set the property via the standard descriptor protocol.
    rj   r   r{   NrQ  rR  )r«   r…   rT  rU  rš   r!   rU   r-   rK  rö   r   Úlenr  rJ   rs   rZ  r2   Únonerá   r(   r¹   r   r   rÑ   r    )r[   r]   r6  r7  r  rX   rH  r\  rš   Úself_argrø   Ú	prop_namer_  r`  r»   r›   ro  s                    r`   r3  r3  i  s{  € ð ‡M�M„OØŸL™L€G×Ñ�bÑä�3—8‘8‹n€GÜ˜CŸH™H Q™K×,Ñ,¬i¸«nÓ=€GˆA�Jä˜ ¨$Ó/€HØ�=‰=€Dà�A‰w€HØ�Q‘€Ið �;‰;×!Ñ!¤.Ô1Ð1Ð1Ø—‘œC¤Ó/Ð1Ð2€Ià×ÑÜàØ×Ñ˜YÓ'Ø�N‰N˜9Ô&7¸Ó>ð	
ð
 	ôð �^‰^˜GŸL™L›N¨C¯L©L¸$Ó?€FØ‡K�K”�v“Ôà*1¯-©-«/Ñ'€Hˆa�˜ aÜÜØ�K‰K˜$Ñ §¡Ñ*¨WÑ4Ø�H‰HØ×ÑÜ˜' ;Ó/ó		
ð 	Øó	ð 	rb   c                óè   — t        |«      }||ur| j                  |«      S | j                  j                  s| j                  j                  r| j                  |«      S | j                  |t        «      S )zÁGiven a FuncDef, return the target for the instance of its callable class.

    If the function was not already defined somewhere, then define it
    and add it to the current environment.
    )rC   Úlookuprœ   rª   r—   rD  r2   )r[   r\   Útarget_symbols      r`   rW   rW   ›  sa   € ô +¨4Ó0€MØ˜DÑ à�~‰~˜mÓ,Ð,à‡�×#Ò# w§¡×'NÒ'NØ�~‰~˜dÓ#Ð#à× Ñ  Ô'8Ó9Ð9rb   c                óÜ  — || j                   j                  v r6| j                   j                  |   }| j                  j                  |«      }|S | j	                  |j
                  |«      x}r|}|S t        |t        «      rO|j                  j                  d«      }| j                  |d   |«      }|dd  D ]  }| j                  |||«      }Œ |S | j                  |j                  |«      }|S )Nri   r   r{   )rP   r¥   r[   rW  Úload_builtinrn   r}   r   rU   ro   rp   r  )	r[   rˆ   Úunbounded_typerX   r  Ú	class_objÚbuiltinÚ
path_partsrÚ   s	            r`   Ú	load_typer~  ¬  sú   € ð ˆg�n‰n×'Ñ'Ñ'Ø—>‘>×,Ñ,¨SÑ1ˆØ—O‘O×3Ñ3°HÓ=ˆ	ð Ðð ×(Ñ(¨¯©°tÓ<Ð	<ˆÐ	<Øˆ	ð Ðô 
�N¤KÔ	0Ø#×(Ñ(×.Ñ.¨sÓ3ˆ
Ø×+Ñ+¨J°q©M¸4Ó@ˆ	Ø˜q˜r�Nò 	CˆDØ×+Ñ+¨I°t¸TÓB‰Ið	Cð
 Ðð ×+Ñ+¨C¯H©H°dÓ;ˆ	àÐrb   c                óØ   — |rU|j                  | j                  «      s:|j                  d«      d   }| j                  |«      }| j	                  |||«      }|S | j                  ||«      }|S )Nri   r   )rö   Úcurrent_moduleÚrsplitÚload_moduler  rp   )r[   r³   rn   rX   ÚmoduleÚloaded_modulerk   s          r`   Ú	load_funcr…  É  sq   € Ù˜×+Ñ+¨G×,BÑ,BÔCð —‘ Ó% aÑ(ˆØ×+Ñ+¨FÓ3ˆà×"Ñ" =°)¸TÓBˆð €Kð ×&Ñ& y°$Ó7ˆØ€Krb   c                óì  — |j                   }| j                  j                  |   }t        | |j                  j
                  |«      }| j                  «       }| j                  j                  |j
                  d   |«      }| j                  j                  |dt        |«      }t        «       t        «       t        «       }}
}	| j                  t        ||g|«      }| j                  || j                  «       d|«      }t!        t"        «      }| j%                  ||
|	«       | j'                  |
«       | j)                  |||«       | j+                  |«       | j'                  |	«       | j-                  d|«      }t/        | ||«      }| j1                  |||g|«      }| j3                  t4        |||g|«       | j)                  |||«       | j+                  |«       | j'                  |«       t7        | ||||«       y )Nr   Údispatch_cachezis notzfunctools._find_impl)rX   rP   rÏ   rK  r]   rš   rà   r[   Úget_type_of_objÚget_attrr0   r"   r  rD   Útranslate_is_opÚnone_objectr'   r2   rã   rä   rV   Úgotor  Úload_singledispatch_registryr  rq   rF   Úgen_calls_to_correct_impl)r[   Ú!main_singledispatch_function_namer�   rX   Úcurrent_func_declr\  Údispatch_func_objr‹   r‡  Úcall_find_implÚ	use_cacheÚ	call_funcÚ
get_resultÚis_not_noneÚimpl_to_useÚ	find_implÚregistryÚuncached_impls                     r`   Ú)generate_singledispatch_dispatch_functionr›  Ù  s¸  € ð �:‰:€DØŸ™×3Ñ3°EÑ:ÐÜ˜Ð!2×!6Ñ!6×!;Ñ!;¸TÓB€HàŸ™›Ðà�‰×.Ñ.¨x¯}©}¸QÑ/?ÀÓF€HØ—_‘_×-Ñ-ØÐ+¬_¸dó€Nô ,6«<¼»ÄzÃ|˜y�I€NØ×%Ñ%Ô&?À.ÐRZÐA[Ð]aÓb€JØ×)Ñ)¨*°g×6IÑ6IÓ6KÈXÐW[Ó\€KÜÔ,Ó-€KØ×Ñ˜K¨°NÔCà×Ñ˜9Ô%Ø‡N�N�; 
¨DÔ1Ø‡L�L�Ôà×Ñ˜>Ô*Ø×4Ñ4Ð5KÈTÓR€IÜ+¨GÐ5FÈÓM€HØ—O‘O I°¸(Ð/CÀTÓJ€MØ‡N�NÔ)¨N¸HÀmÐ+TÐVZÔ[Ø‡N�N�; ¨tÔ4Ø‡L�L�Ôà×Ñ˜9Ô%Ü˜g {°H¸eÀTÕJrb   c                óÖ  ‡ ‡‡‡— ‰ j                   j                  |   Šdˆˆ ˆˆfd„}‰ j                  d‰«      }|sJ ‚‰ j                  j	                  ||‰«      }t        «       t        «       }	}‰ j                  |||	«       ‰ j                  |«       ‰ j                  t        |t        ‰«      «      }
t        ‰ |«      }|j                  «       D ]{  \  }}t        «       t        «       }}‰ j                  |«      }‰ j                  |
|d‰«      }‰ j                  |||«       ‰ j                  |«        ||«       ‰ j                  |«       Œ} ‰ j                  t        «       «       ‰ j                  |	«       ‰ j!                  |‰j"                  ‰‰j$                  ‰j&                  «      }‰ j)                  |‰j*                  j,                  ‰«      }‰ j                  t/        |«      «       y )Nc                ó4  •— ‰j                   j                  |    }‰j                  j                  |‰j                  ‰j
                  ‰j                  ‰«      }‰j                  |‰j                  j                  ‰«      }‰j                  t        |«      «       y rO   )rP   rÏ   r[   rY  rš   r;  r:  rZ  r]   r…   rá   r(   )r\   rÓ   Úret_valÚcoercedr\  r[   r�  rX   s       €€€€r`   Úgen_native_func_call_and_returnzBgen_calls_to_correct_impl.<locals>.gen_native_func_call_and_return  sw   ø€ Ø—N‘N×/Ñ/°Ñ5ˆ	Ø—/‘/×&Ñ&Ø�x—}‘} h×&8Ñ&8¸(×:LÑ:LÈdó
ˆð —.‘. Ð*;×*?Ñ*?×*HÑ*HÈ$ÓOˆØ�‰”F˜7“OÕ$rb   zbuiltins.intz==)r\   r   ÚreturnÚNone)rP   rÏ   ry  r[   Ú
type_is_opr"   rã   rä   rá   r*   r1   Úget_native_impl_idsÚitemsÚload_intÚ	binary_opr+   r  rš   r;  r:  rZ  r]   r…   r(   )r[   r—  r\  r�   rX   r   Úint_type_objÚis_intÚnative_callÚnon_native_callÚ	passed_idÚ
native_idsrd   ÚiÚ	call_implÚ	next_implÚ
current_idÚcondrž  rŸ  r�  s   ` ` `               @r`   rŽ  rŽ  ü  s§  û€ ð  Ÿ™×3Ñ3°EÑ:Ð÷%ð %ð ×'Ñ'¨¸Ó=€LÙÐˆ<Ø�_‰_×'Ñ'¨°\À4ÓH€Fä#-£<´³�€KØ×Ñ˜F K°ÔAØ×Ñ˜;Ô'à—‘œE +¬~¸tÓDÓE€Iä$ W¨eÓ4€JØ×#Ñ#Ó%ò *‰ˆˆaÜ)›|¬Z«\�9ˆ	à×%Ñ% aÓ(ˆ
Ø× Ñ  ¨J¸¸dÓCˆØ×Ñ  i°Ô;ð 	×Ñ˜yÔ)á'¨Ô-Ø×Ñ˜yÕ)ð*ð ‡K�K”“Ôà×Ñ˜?Ô+Ø�o‰oØ�X—]‘] D¨(×*<Ñ*<¸h×>PÑ>Pó€Gð �n‰n˜WÐ&7×&;Ñ&;×&DÑ&DÀdÓK€GØ‡K�K”�w“Õ rb   c                óÖ  — | j                  t        ||«      «       t        | «       t        | j                  j
                  j                  j                  d<   t        | j                  j
                  j                  j                  d<   d| j                  j
                  j                  _        d| j                  j
                  j                  _	        t        | «       t        | ||«       | j                  «       \  }}}}}t        | ||||«      }	| j                  j                  |	«       t!        | |«       t#        | |«       t%        | |«      }
t'        | ||	j(                  |«      }||
fS )z�Create a dispatch function (a function that checks the first argument type and dispatches
    to the correct implementation)
    r™  r‡  T)r«   r:   r9   r0   rœ   Úcallable_classr²   Ú
attributesÚhas_dictÚneeds_getsetersÚ+generate_singledispatch_callable_class_ctorr›  r¹   r6   rt   ru   r7   Ú%add_register_method_to_callable_classr8   Ú&generate_dispatch_glue_native_functionr  )r[   r�   Úmain_func_nameÚdispatch_namer]   rš   r»   r›   rœ   Údispatch_callable_classr_   Údispatch_func_irs               r`   r°   r°   ,  s,  € ð ‡M�M”(˜5 -Ó0Ô1Ü˜Ô!Ü?N€G‡O�O×"Ñ"×%Ñ%×0Ñ0°Ñ<ÜET€G‡O�O×"Ñ"×%Ñ%×0Ñ0Ð1AÑBØ15€G‡O�O×"Ñ"×%Ñ%Ô.Ø8<€G‡O�O×"Ñ"×%Ñ%Ô5Ü/°Ô8ä-¨g°~ÀuÔMØ")§-¡-£/Ñ€Dˆ!ˆV�Q˜Ü8¸À$ÈÐPSÐU\Ó]ÐØ×Ñ×ÑÐ4Ô5Ü˜g wÔ/Ü)¨'°7Ô;Ü)¨'°7Ó;€HÜ=Ø�Ð/×4Ñ4°móÐð ˜XÐ%Ð%rb   c                ó"  — |j                   }| j                  «        | j                  ||«      }| j                  j                  |   }t        | |j                  j                  |«      }|g|j                  z   }t        j                  g|j                  z   }	|j                  }
|
j                  dd«       | j                  j                  |||	|
|«      }| j                  t!        |«      «       | j#                  «       \  }}}}}t%        |||«      S )Nr   rà   )rX   r«   rp   rP   rÏ   rK  r]   rš   r   ÚARG_POSr;  r:  Úinsertr[   rY  rá   r(   r¹   r   )r[   r�   Úcallable_class_declr¼  rX   r´  r  r\  rš   r;  r:  rž  r`  r»   r›   rœ   s                   r`   rº  rº  H  sè   € ð �:‰:€DØ‡M�M„Oà×,Ñ,¨]¸DÓA€NØ�>‰>×&Ñ& uÑ-€DÜ˜ §¡§¡°Ó5€HØÐ˜hŸm™mÑ+€DÜ—‘Ð! H×$6Ñ$6Ñ6€IØ×"Ñ"€IØ×Ñ�Q˜ÔØ�o‰o×"Ñ"Ð#6¸¸iÈÐTXÓY€GØ‡K�K”�w“Ô Ø&-§m¡m£oÑ#€Hˆa�˜˜GÜ�$˜ &Ó)Ð)rb   c           
     óT  — | j                   j                  j                  }| j                   j                  j                  }| j                  |dt        «      5  | j                  t        g |«      }| j                  t        | j                  «       d||«      «       | j                  t        g |«      }| j                  d«      }| j                  t        | j                  «       ||g|«       | j                  t        t!        dt        |«      |«      «       ddd«       y# 1 sw Y   yxY w)zGCreate an __init__ that sets registry and dispatch_cache to empty dictsr  r™  r‡  r{   N)rœ   r�   rX   r´  r²   rÞ   r.   rq   rE   rá   r)   rà   rs   r  rJ   r(   r%   )r[   rX   r  Ú
empty_dictÚ
cache_dictÚdispatch_cache_strs         r`   r¸  r¸  [  sè   € à�?‰?× Ñ ×%Ñ%€DØ�‰×-Ñ-×0Ñ0€HØ	×	Ñ	˜h¨
´OÓ	Dñ EØ—^‘^¤K°°TÓ:ˆ
Ø�‰”G˜GŸL™L›N¨J¸
ÀDÓIÔJØ—^‘^¤K°°TÓ:ˆ
Ø$×-Ñ-Ð.>Ó?Ðà×Ñœ]¨W¯\©\«^Ð=OÐQ[Ð,\Ð^bÔcà�‰”Fœ7 1¤o°tÓ<¸dÓCÔD÷E÷ Eñ Eús   ÁB=DÄD'c                ó¬  — |j                   j                  }| j                  |j                  j                  dt
        «      5  | j                  dt
        «      }| j                  dt
        t        j                  «      }| j                  t        | j                  «       ||g|«      }| j                  t        ||«      «       d d d «       y # 1 sw Y   y xY w)NÚregisterr7  rk   )r�   rX   rÞ   r´  r²   r2   rß   r   ÚARG_OPTrq   rK   rà   rá   r(   )r[   rœ   rX   Úcls_argÚfunc_argrž  s         r`   r¹  r¹  j  s¥   € Ø�=‰=×Ñ€DØ	×	Ñ	˜g×4Ñ4×7Ñ7¸ÔEVÓ	Wñ +Ø×&Ñ& uÔ.?Ó@ˆØ×'Ñ'¨Ô0AÄ7Ç?Á?ÓSˆØ—.‘.Ô!2°W·\±\³^ÀWÈhÐ4WÐY]Ó^ˆØ�‰”F˜7 DÓ)Ô*÷	+÷ +ñ +ús   ÁA?C
Ã
Cc                óF   — | j                   j                  |dt        |«      S )Nr™  )r[   r‰  r0   )r[   r‘  rX   s      r`   r�  r�  s  s   € Ø�?‰?×#Ñ#Ð$5°zÄ?ÐTXÓYÐYrb   c                ó   — d| › d�S )NÚ%__mypyc_singledispatch_main_function_rQ  r@  )Ú	orig_names    r`   r¨   r¨   w  s   € Ø2°9°+¸RÐ@Ð@rb   c                óB  — |j                   }|| j                  v }t        t        «      }| j                  j	                  «       D ])  \  }}|D ]  \  }}||k(  sŒ||   j                  |«       Œ! Œ+ |s|sy |r£t        |j                  «      }	t        | |	|j                  |«      }
| j                  d|«      }| j                  j                  ||
fg|«      }| j                  |j                  |«      }| j                  t        || j!                  d«      |g|«       |j	                  «       D ]ó  \  }}t#        | |«      }||vr#t        | |j                  |j                  |«      }n&||   }t%        |t&        «      }| j)                  |«      }t        | |j                  |j                  |«      }t+        | ||«      }|D ]*  }t-        | |d |«      }| j/                  t0        |||g|«       Œ, | j                  j3                  |dt4        |«      }| j7                  |dg d |«       Œõ y )Nzbuiltins.objectr™  r‡  Úclear)rX   r£   r   rU  r¥  ru   r¨   rU   r…  rn   r  r[   Ú	make_dictrp   r  rJ   rs   r¤  r&   r2   rá   r�  r~  rq   rF   r‰  r0   rå   )r[   r�   rX   rÒ   Úto_registerÚ	main_funcÚimplsÚdispatch_typerd   r»  Úmain_func_objÚloaded_object_typeÚregistry_dictr‘  Úsingledispatch_funcr|   r­  Ú	to_insertr±  Úload_literalr™  rˆ   Úloaded_typer‡  s                           r`   rY   rY   {  s7  € Ø�:‰:€DØ"'¨7×+GÑ+GÐ"GÐä8CÄDÓ8I€KØ#×8Ñ8×>Ñ>Ó@ò =Ñˆ	�5Ø#(ò 	=ÑˆM˜4Ø˜‹}Ø˜IÑ&×-Ñ-¨mÕ<ñ	=ð=ñ
 Ñ:Øá"Ü6°u·z±zÓBˆÜ! '¨>¸5¿>¹>È4ÓPˆà$×AÑAÐBSÐUYÓZÐØŸ™×1Ñ1Ð4FÈÐ3VÐ2WÐY]Ó^ˆà#×3Ñ3°E·J±JÀÓEÐØ×ÑÜÐ-¨w×/?Ñ/?À
Ó/KÈ]Ð[Ð]aô	
ð '2×&7Ñ&7Ó&9ò IÑ"Ð˜Uô )¨Ð2EÓFˆ
Ø˜
Ñ"Ü! '¨5¯:©:°u·~±~ÀtÓL‰Ià# EÑ*ˆJÜ& zÔ3DÓEˆLØŸ™ LÓ1ˆIä%ØÐ(×-Ñ-Ð/B×/KÑ/KÈTó
Ðô 0°Ð9JÈDÓQˆØò 	]ˆCÜ# G¨S°$¸Ó=ˆKØ�N‰NÔ1°H¸kÈ9Ð3UÐW[Õ\ð	]ð !Ÿ™×1Ñ1ØÐ/´À$ó
ˆð 	×Ñ °¸¸TÀ4ÕHñ+Irb   c           	     ó�   — | j                   |   }t        |«      D ���ci c]  \  }\  }}t        | |«      rŒ||“Œ c}}}S c c}}}w )zgReturn a dict of registered implementation to native implementation ID for all
    implementations
    )r£   Ú	enumerater•   )r[   rÚ  rÕ  r®  rˆ   rd   s         r`   r¤  r¤  ¬  sG   € ð ×(Ñ(Ð)<Ñ=€EÜ*3°EÓ*:×^Ð^™˜™;˜C Ä,ÈwÐX\ÕB]ˆD�!‰GÔ^Ð^ùÔ^s
   ŸA·Ac                óÚ  — |j                   }| j                  |«       | j                  d|j                  j                  d   j
                  «      }|j                  xs d}|sN| j                  j                  |||j                  j                  |«      }| j                  t        ||«      «       n| j                  t        «       «       | j                  «       \  }}	}
}}t        |||
«      S )z‹Generate an implicit trivial property getter for an attribute.

    These are used if an attribute can also be accessed as a property.
    rà   r   rj   )rU   r«   rß   r]   rš   r‚   Ú_liner[   r‰  r…   rá   r(   r+   r¹   r   )r[   rÓ   r�   Úis_traitrU   Úself_regrX   rñ   rš   r»   r›   r…   rœ   s                r`   Úgen_property_getter_irrä  ´  s¼   € ð �>‰>€DØ‡M�M�$ÔØ×#Ñ# F¨I¯M©M×,>Ñ,>¸qÑ,A×,FÑ,FÓG€HØ�?‰?Ò ˜b€DÙØ—‘×(Ñ(¨°4¸¿¹×9OÑ9OÐQUÓVˆØ�‰”F˜5 $Ó'Õ(à�‰”K“MÔ"Ø)0¯©«Ñ&€Dˆ!ˆV�X˜wÜ�)˜T 6Ó*Ð*rb   c                óR  — |j                   }| j                  |«       | j                  d|j                  j                  d   j
                  «      }| j                  d|j                  j                  d   j
                  «      }|j                  t        «      sJ ‚|t        t        «      d }|j                  xs d}|s| j                  t        ||||«      «       | j                  t        | j                  «       |«      «       | j                  «       \  }	}
}}}t        ||	||«      S )z‹Generate an implicit trivial property setter for an attribute.

    These are used if an attribute can also be accessed as a property.
    rà   r   rñ   r{   Nrj   )rU   r«   rß   r]   rš   r‚   rö   r   rq  rá  rá   r)   r(   rr  r¹   r   )r[   rÓ   r�   râ  rU   rã  Ú	value_regÚ	attr_namerX   rš   r»   r›   r…   rœ   s                 r`   Úgen_property_setter_irrè  È  só   € ð �>‰>€DØ‡M�M�$ÔØ×#Ñ# F¨I¯M©M×,>Ñ,>¸qÑ,A×,FÑ,FÓG€HØ×$Ñ$ W¨i¯m©m×.@Ñ.@ÀÑ.C×.HÑ.HÓI€IØ�?‰?œ>Ô*Ð*Ð*Ø”SœÓ(Ð*Ð+€IØ�?‰?Ò ˜b€DÙØ�‰”G˜H i°¸DÓAÔBØ‡K�K”�w—|‘|“~ tÓ,Ô-Ø)0¯©«Ñ&€Dˆ!ˆV�X˜wÜ�)˜T 6¨4Ó0Ð0rb   )r[   r3   r\   r   r¡  r¢  )r[   r3   rf   r   r¡  r¢  )r[   r3   rv   r	   r¡  r¢  )r[   r3   r‡   r   r¡  r,   )NF)r[   r3   r�   r   rU   Ústrr]   r    r�   úClassDef | Noner±   Úboolr¡  útuple[FuncIR, Value | None])
r[   r3   r]   r    r�   rê  rž   rë  r¡  rì  )r[   r3   r�   r   r¡  rë  )F)r[   r3   rš   zlist[Register]r›   zlist[BasicBlock]r]   r    rœ   r:   r�   rê  rÒ   rë  r¡  rì  )r[   r3   r�   r   ræ   r   r¡  r¢  )r[   r3   r�   r   r÷   r   r¡  r¢  )r[   r3   r�   r   r\   r   r¡  r¢  )
r[   r3   r!  r   r�   r   r\   r   r¡  r¢  )r[   r3   r¡  ré  )r[   r3   r\   r   r,  r,   r¡  r,   )r[   r3   r\   r   r¡  rë  )r[   r3   r5  r    r6  r   r7  r   r  r   r\   r   r  rë  r¡  r   )r[   r3   rH  zSequence[RuntimeArg]rX   Úintr¡  r9  )r[   r3   r5  r    r6  r   r7  r   r  r   rX   rí  r[  rë  r¡  r   )
r[   r3   r5  r    rf  r    rX   rí  r¡  r¢  )r[   r3   r]   r    r6  r   r7  r   r  r   rX   rí  rk  rë  r¡  r   )r[   r3   r]   r    r6  r   r7  r   r  r   rX   rí  r¡  r   )r[   r3   r\   r   r¡  rB   )
r[   r3   rˆ   r   rz  zType | NonerX   rí  r¡  r,   )
r[   r3   r³   ré  rn   z
str | NonerX   rí  r¡  r,   )r[   r3   r�  ré  r�   r   r¡  r¢  )r[   r3   r—  r,   r\  r9  r�   r   rX   rí  r¡  r¢  )r[   r3   r�   r   r»  ré  r¼  ré  r]   r    r¡  ztuple[FuncIR, Value])
r[   r3   r�   r   rÂ  r   r¼  ré  r¡  r   )r[   r3   r¡  r¢  )r[   r3   rœ   r:   r¡  r¢  )r[   r3   r‘  r,   rX   rí  r¡  r,   )rÏ  ré  r¡  ré  )r[   r3   r�   r   r¡  r¢  )r[   r3   rÚ  r   r¡  zdict[FuncDef, int])
r[   r3   rÓ   r   r�   r   râ  rë  r¡  r   )‡Ú__doc__Ú
__future__r   Úcollectionsr   Úcollections.abcr   Útypingr   Ú
mypy.nodesr   r   r	   r
   r   r   r   r   r   r   Ú
mypy.typesr   r   r   r   Úmypyc.commonr   r   r   r   Úmypyc.ir.class_irr   r   Úmypyc.ir.func_irr   r   r   r   r   r    r!   Úmypyc.ir.opsr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   Úmypyc.ir.rtypesr-   r.   r/   r0   r1   r2   Úmypyc.irbuild.builderr3   r4   r5   Úmypyc.irbuild.callable_classr6   r7   r8   r9   Úmypyc.irbuild.contextr:   r;   Úmypyc.irbuild.env_classr<   r=   r>   r?   Úmypyc.irbuild.generatorr@   rA   Úmypyc.irbuild.targetsrB   Úmypyc.irbuild.utilrC   Úmypyc.primitives.dict_opsrD   rE   rF   Úmypyc.primitives.generic_opsrG   rH   rI   rJ   Úmypyc.primitives.misc_opsrK   Úmypyc.sametyperL   rM   ra   rg   ry   rŽ   rT   r¯   r¤   r™   rï   rÿ   r  r#  r©   rl   r•   r  r9  rK  r4  rS  r2  r3  rW   r~  r…  r›  rŽ  r°   rº  r¸  r¹  r�  r¨   rY   r¤  rä  rè  r@  rb   r`   ú<module>r     sÎ  ðñ
õ #å #Ý $Ý ÷÷ ÷ ÷ HÓ Gß LÓ Lß 6÷÷ ñ ÷÷ ÷ ñ ÷÷ ÷ VÑ U÷ó ÷ ;÷ó ÷ PÝ 2Ý 5÷ñ ÷
ó õ 8ß Aó
	-óó&ó>ð> !Ø!ðvØðvàðvð ðvð 
ð	vð
 ðvð ðvð !óvðrØðØ*ðØ2AðØVZðà óó2ð* ).ð.Øð.à
ð.ð ð.ð 
ð	.ð
 ð.ð ð.ð "&ð.ð !ó.ób/2ód0@ófaðH%*Øð%*Ø!0ð%*Ø8@ð%*ØHOð%*à	ó%*óPóó,/ð ñWØðWàðWð ðWð 
ð	Wð
 ðWð ðWð ðWð óWô4ˆjô ó/ð\Øð\àð\ð ð\ð 
ð	\ð
 ð\ð ð\ð ð\ð ó\ð~ØðØ"/ðØ:GðØORðà	óð:)Øð)à	ð)ð ð)ð 
ð	)ð
 ð)ð ð)ð ð)ð ó)ðX/Øð/Ø*ð/Ø4:ð/ØAHð/ØPWð/Ø_bð/àó/ód:ó"ó:ð  KØð KØ;>ð KØGNð Kà	ó KðF-!Øð-!Ø%*ð-!Ø6=ð-!ØFMð-!ØUXð-!à	ó-!ð`&Øð&Ø&ð&Ø8;ð&ØLOð&ØVcð&àó&ð8*Øð*Ø&ð*Ø=Eð*ØVYð*àó*ó&Eó+óZóAó.Iób_ð+Øð+Ø#+ð+Ø3;ð+ØGKð+àó+ð(1Øð1Ø#+ð1Ø3;ð1ØGKð1àô1rb   