Ë
    üÇ:j9  ã                   óT  — d dl Z d dlZd dlmZ d dl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mZ d d
lmZmZ d dlmZ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#m$Z$ d dl%m&Z&m'Z' d dl(m)Z)  eddddd«      Z* G d„ de*e«      Z+ G d„ de
«      Z, e,«       Z- G d„ dej\                  «      Z/e/eed   <   d„ Z0d„ Z1d „ Z2ejf                  ejh                  ejj                  ejl                  d!œZ7d"„ Z8ed#„ «       Z9 G d$„ d%e:«      Z; G d&„ d'e;«      Z< G d(„ d)e;«      Z=d*„ Z>y)+é    N)Úcontextmanager)ÚconfigÚtargetconfig)Újit)ÚTargetDescriptor)Ú	is_jitted)ÚNumbaDeprecationWarning)ÚTargetOptionsÚinclude_default_options)Ú
cpu_target)Údispatcher_registryÚtarget_registry)ÚutilsÚtypesÚ	serializeÚcompilerÚsigutils)Úas_dtype)Ú	_internal)Úparse_signature)Úbuild_ufunc_wrapperÚbuild_gufunc_wrapper)ÚFunctionCacheÚ	NullCache)Úglobal_compiler_lockÚnopythonÚforceobjÚboundscheckÚfastmathÚwritable_argsc                   ó   — e Zd Zd„ Zy)ÚUFuncTargetOptionsc                 óJ  — |j                  d«      sd|_        |j                  d«      sd|_        |j                  dd¬«       |j                  d«      st        j
                  |_        |j                  d«      s|j                  |_        d|_        |j                  d«       y )	NÚenable_pyobjectTÚenable_loopliftÚnrt)ÚdefaultÚ	debuginfor   r   )	Úis_setr$   r%   Úinherit_if_not_setr   ÚDEBUGINFO_DEFAULTr(   r   Úenable_pyobject_looplift)ÚselfÚflagsÚoptionss      úp/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/numba/np/ufunc/ufuncbuilder.pyÚfinalizezUFuncTargetOptions.finalize#   s†   € Ø�|‰|Ð-Ô.Ø$(ˆEÔ!à�|‰|Ð-Ô.Ø$(ˆEÔ!à× Ñ  °Ð Ô5à�|‰|˜KÔ(Ü$×6Ñ6ˆEŒOà�|‰|˜MÔ*Ø %§¡ˆEÔà)-ˆÔ&à× Ñ  Õ,ó    N)Ú__name__Ú
__module__Ú__qualname__r1   © r2   r0   r"   r"   !   s   „ ó-r2   r"   c                   óB   ‡ — e Zd ZeZˆ fd„Zed„ «       Zed„ «       Zˆ xZ	S )ÚUFuncTargetc                 ó$   •— t         ‰| �  d«       y )NÚufunc)ÚsuperÚ__init__)r-   Ú	__class__s    €r0   r<   zUFuncTarget.__init__:   s   ø€ Ü‰Ñ˜Õ!r2   c                 ó"   — t         j                  S ©N)r   Útyping_context©r-   s    r0   r@   zUFuncTarget.typing_context=   ó   € ä×(Ñ(Ð(r2   c                 ó"   — t         j                  S r?   )r   Útarget_contextrA   s    r0   rD   zUFuncTarget.target_contextA   rB   r2   )
r3   r4   r5   r"   r/   r<   Úpropertyr@   rD   Ú__classcell__)r=   s   @r0   r8   r8   7   s5   ø„ Ø €Gô"ð ñ)ó ð)ð ñ)ó ô)r2   r8   c                   óF   — e Zd ZdZeZd	d„Zd„ Zed„ «       Z	d„ Z
d
d„Zd„ Zy)ÚUFuncDispatcherzK
    An object handling compilation of various signatures for a ufunc.
    Nc                 óŽ   — |€i }|€i }|| _         t        j                  «       | _        || _        || _        t        «       | _        y r?   )Úpy_funcr   Ú
UniqueDictÚ	overloadsÚtargetoptionsÚlocalsr   Úcache)r-   rJ   rN   rM   s       r0   r<   zUFuncDispatcher.__init__O   sF   € Øˆ>ØˆFØÐ ØˆMØˆŒÜ×)Ñ)Ó+ˆŒØ*ˆÔØˆŒÜ“[ˆ�
r2   c                 óZ   — t        | j                  | j                  | j                  ¬«      S )ú4
        NOTE: part of ReduceMixin protocol
        )ÚpyfuncrN   rM   )ÚdictrJ   rN   rM   rA   s    r0   Ú_reduce_stateszUFuncDispatcher._reduce_statesZ   s(   € ô Ø—<‘<Ø—;‘;Ø×,Ñ,ô
ð 	
r2   c                 ó   —  | |||¬«      S )rQ   )rJ   rN   rM   r6   )ÚclsrR   rN   rM   s       r0   Ú_rebuildzUFuncDispatcher._rebuildd   s   € ñ
 ˜6¨&ÀÔNÐNr2   c                 ó8   — t        | j                  «      | _        y r?   )r   rJ   rO   rA   s    r0   Úenable_cachingzUFuncDispatcher.enable_cachingk   s   € Ü" 4§<¡<Ó0ˆ�
r2   c                 óz  — |€i }| j                   j                  «       }|j                  |«       | j                  j                  «       }|j                  |«       t	        j
                  «       }| j                  j                  j                  ||«       d|_	        d|_
        d|_        | j                  |||«      S )NTÚnumpyF)rN   ÚcopyÚupdaterM   r   ÚFlagsÚtargetdescrr/   Úparse_as_flagsÚno_cpython_wrapperÚerror_modelr%   Ú_compile_core)r-   ÚsigrN   rM   ÚlocsÚtoptr.   s          r0   ÚcompilezUFuncDispatcher.compilen   s¡   € Øˆ>ØˆFØ�{‰{×ÑÓ!ˆØ�‰�FÔà×!Ñ!×&Ñ&Ó(ˆØ�‰�MÔ"ä—‘Ó ˆØ×Ñ× Ñ ×/Ñ/°°tÔ<à#'ˆÔ Ø#ˆÔð !&ˆÔà×!Ñ! # u¨fÓ5Ð5r2   c                 óÐ  ‡ ‡	— ‰ j                   j                  }‰ j                   j                  }t        ˆ	ˆ fd„«       }t        5  t        j                  «       j                  |j                  «       «      5   |«       5  ‰ j                  j                  ||«      Š	‰	�‰	cddd«       cddd«       cddd«       S t        j                  |«      \  }}t        j                  ||‰ j                  ||||¬«      Š	‰ j                  j!                  |‰	«       ‰	cddd«       cddd«       cddd«       S # 1 sw Y   nxY w	 ddd«       n# 1 sw Y   nxY wddd«       y# 1 sw Y   yxY w)z•
        Trigger the compiler on the core function or load a previously
        compiled version from the cache.  Returns the CompileResult.
        c               3   ó¶   •K  — 	 d –— ‰j                   j                  ‰j                  «      } | €‰‰j                   ‰j                  <   y y # t        $ r ‚ w xY w­wr?   )rL   ÚgetÚ	signatureÚ	Exception)ÚexistsÚcresr-   s    €€r0   Ústore_overloads_on_successzAUFuncDispatcher._compile_core.<locals>.store_overloads_on_success‹   sX   øè ø€ ð:Ûð Ÿ™×+Ñ+¨D¯N©NÓ;�Ø�>Ø59�D—N‘N 4§>¡>Ò2ð "øô	 ò Øðüs   ƒA…A ‰AAÁAÁAN)ÚargsÚreturn_typer.   rN   )r_   r@   rD   r   r   r   ÚConfigStackÚenterr\   rO   Úload_overloadr   Únormalize_signaturer   Úcompile_extrarJ   Úsave_overload)
r-   rd   r.   rN   Ú	typingctxÚ	targetctxro   rp   rq   rn   s
   `        @r0   rc   zUFuncDispatcher._compile_coreƒ   sQ  ù€ ð
 ×$Ñ$×3Ñ3ˆ	Ø×$Ñ$×3Ñ3ˆ	ä	ô		:ó 
ð		:ô "ñ 	 Ü×)Ñ)Ó+×1Ñ1°%·*±*³,Ó?ñ  Ù/Ó1ñ  àŸ:™:×3Ñ3°C¸ÓC�DØÐ'Ø#÷	 ð  ÷ ð  ÷	 ñ 	 ô )1×(DÑ(DÀSÓ(IÑ%�D˜+Ü#×1Ñ1°)¸YØ26·,±,ÀTØ>IØ8=ÀfôN�Dð —J‘J×,Ñ,¨S°$Ô7à÷! ð  ÷ ð  ÷	 ñ 	 ÷ ð  úð  ÷ ÷  ñ  ú÷	 ÷ 	 ñ 	 úsU   Á2EÁ6EÁ> D1Â	EÂ'	EÂ:AD1Ä	EÄ	EÄ1D:Ä6EÄ>	EÅE	ÅEÅE%)NNr?   )r3   r4   r5   Ú__doc__Úufunc_targetr_   r<   rT   ÚclassmethodrW   rY   rg   rc   r6   r2   r0   rH   rH   I   s=   „ ñð €Kó	!ò
ð ñOó ðOò1ó6ó*' r2   rH   Únpyufuncc                 ób   —  | j                   |fi |¤Ž}t        j                  |«      \  }}|||fS r?   )rg   r   ru   )Únb_funcrM   rd   rn   rp   rq   s         r0   Ú_compile_element_wise_functionr€   ²   s;   € ð ˆ7�?‰?˜3Ñ0 -Ñ0€DÜ ×4Ñ4°SÓ9Ñ€Dˆ+Ø��{Ð"Ð"r2   c                 ó”   — |€-| j                   rt        d«      ‚| j                  j                  }|t        j
                  k7  sJ ‚ ||Ž S )z¼Given a compilation result, argument types, and a return type,
    build a valid Numba signature after validating that it doesn't
    violate the constraints for the compilation mode.
    z-return type must be specified for object mode)Ú
objectmodeÚ	TypeErrorrk   rq   r   Úpyobject)rn   rp   rq   s      r0   Ú_finalize_ufunc_signaturer…   º   sI   € ð
 ÐØ�?Š?äÐKÓLÐLàŸ.™.×4Ñ4ˆKàœ%Ÿ.™.Ò(Ð(Ð(Ù˜ÐÐr2   c           	      óî  — | j                   }| j                  }| j                  j                  }t        5  t        ||||| j                  | «      }|j                  j                  |j                  «      }ddd«       |j                  D �cg c]  }t        |«      j                  ‘Œ }}|j                  t        |j                  «      j                  «       || j                  fS # 1 sw Y   ŒrxY wc c}w )z�Build a wrapper for the ufunc loop entry point given by the
    compilation result object, using the element-wise signature.
    N)rD   ÚlibraryÚfndescÚllvm_func_namer   r   r‚   Úget_pointer_to_functionÚnamerp   r   ÚnumÚappendrq   Úenvironment)	rn   rk   Úctxr‡   ÚfnameÚinfoÚptrÚaÚ	dtypenumss	            r0   Ú!_build_element_wise_ufunc_wrapperr•   Ê   sÉ   € ð ×
Ñ
€CØ�l‰l€GØ�K‰K×&Ñ&€Eä	ñ >Ü" 7¨C°¸	Ø#'§?¡?°Dó:ˆà�l‰l×2Ñ2°4·9±9Ó=ˆ÷>ð
 +4¯.©.Ö9 Q”˜!“—“Ð9€IÐ9Ø×Ñ”X˜i×3Ñ3Ó4×8Ñ8Ô9Ø�c˜4×+Ñ+Ð+Ð+÷>ð >üò
 :s   µA C&ÂC2Ã&C/)r   é   NÚreorderablec                 óP   — 	 t         |    } | S # t        $ r t        d| ›�«      ‚w xY w)z]
    Parse an identity value and return the corresponding low-level value
    for Numpy.
    zInvalid identity value )Ú_identitiesÚKeyErrorÚ
ValueError)Úidentitys    r0   Úparse_identityr�   ä   s:   € ð
DÜ˜xÑ(ˆð €Oøô ò DÝ¹ÐBÓCÐCðDús   ‚	 �%c               #   óž   K  — t        j                  «       5  t        j                  dt        d¬«       d–— ddd«       y# 1 sw Y   yxY w­w)z÷This suppresses the NumbaDeprecationWarning that occurs through the use
    of `jit` without the `nopython` kwarg. This use of `jit` occurs in a few
    places in the `{g,}ufunc` mechanism in Numba, predominantly to wrap the
    "kernel" function.Úignorez3.*The 'nopython' keyword argument was not supplied*)ÚcategoryÚmessageN)ÚwarningsÚcatch_warningsÚfilterwarningsr	   r6   r2   r0   Ú3_suppress_deprecation_warning_nopython_not_suppliedr¥   ð   sF   è ø€ ô 
×	 Ñ	 Ó	"ñ Ü×Ñ Ü)@ð*=õ	@ó 	÷÷ ñ üs   ‚A—!A¸	AÁA
ÁAc                   ó   — e Zd Zdd„Zd„ Zy)Ú_BaseUFuncBuilderNc                 ó  — t        | d«      r| j                  }n| j                  j                  }t        | j                  ||«      \  }}}| j	                  |||«      }| j
                  j                  |«       || j                  |<   |S )NrM   )ÚhasattrrM   r   r€   Ú_finalize_signatureÚ_sigsr�   Ú_cres)r-   rd   rM   rn   rp   rq   s         r0   Úaddz_BaseUFuncBuilder.add  sz   € Ü�4˜Ô)Ø ×.Ñ.‰Mà ŸL™L×6Ñ6ˆMÜ"@Ø�L‰L˜-¨ó#.Ñˆˆd�Kà×&Ñ& t¨T°;Ó?ˆØ�
‰
×Ñ˜#ÔØˆ�
‰
�3‰Øˆr2   c                  ó   — y)zI
        Disable the compilation of new signatures at call time.
        Nr6   rA   s    r0   Údisable_compilez!_BaseUFuncBuilder.disable_compile  s   � r2   r?   )r3   r4   r5   r­   r¯   r6   r2   r0   r§   r§      s   „ ó
ór2   r§   c                   ó&   — e Zd Zdd„Zd„ Zd„ Zd„ Zy)ÚUFuncBuilderNc                 óô   — |€i }t        |«      r|j                  }|| _        t        |«      | _        t	        «       5   t        dd|dœ|¤Ž|«      | _        d d d «       g | _        i | _        y # 1 sw Y   ŒxY w)Nr}   ©Ú_targetrO   r6   )	r   rJ   r�   rœ   r¥   r   r   r«   r¬   )r-   rJ   rœ   rO   rM   s        r0   r<   zUFuncBuilder.__init__  s†   € ØÐ ØˆMÜ�WÔØ—o‘oˆGØˆŒÜ& xÓ0ˆŒÜ@ÓBñ 	9ð0œ3ð 0 zØ%*ñ0à!.ñ0à07ó9ˆDŒL÷	9ð ˆŒ
Øˆ�
÷	9ð 	9ús   ½A.Á.A7c                 ó   — t        |||«      S )z^Slated for deprecation, use ufuncbuilder._finalize_ufunc_signature()
        instead.
        )r…   ©r-   rn   rp   rq   s       r0   rª   z UFuncBuilder._finalize_signature%  s   € ô )¨¨t°[ÓAÐAr2   c                 óä  — t         5  g }g }| j                  st        d«      ‚g }d }| j                  D ]o  }| j                  |   }| j                  ||«      \  }}}|j                  |«       |j                  t        |«      «       |j                  |j                  |f«       Œq d gt        |«      z  }	|€5t        j                  | j                  «      }
t        |
j                  «      }nt        |j                  j                  «      }d}t        j                   | j                  j"                  | j                  j$                  |||||	|| j&                  «	      }|cd d d «       S # 1 sw Y   y xY w)NúNo definitionr–   )r   r   rƒ   r«   r¬   Úbuildr�   Úintr‡   ÚlenÚinspectÚgetfullargspecrJ   rp   rk   r   Úfromfuncr3   rz   rœ   )r-   Ú	dtypelistÚptrlistÚ	keepalivern   rd   r”   r’   ÚenvÚdatlistÚargspecÚinctÚoutctr:   s                 r0   Úbuild_ufunczUFuncBuilder.build_ufunc+  sE  € Ü!ñ $	ØˆIØˆGØ—<’<Ü Ó0Ð0ð ˆIØˆDØ—z‘zò 6�Ø—z‘z #‘�Ø&*§j¡j°°sÓ&;Ñ#�	˜3 Ø× Ñ  Ô+Ø—‘œs 3›xÔ(Ø× Ñ  $§,¡,°Ð!4Õ5ð6ð �fœs 7›|Ñ+ˆGàˆ|Ü!×0Ñ0°·±Ó>�Ü˜7Ÿ<™<Ó(‘ä˜4Ÿ>™>×.Ñ.Ó/�ØˆEô ×&Ñ&Ø—‘×%Ñ% t§|¡|×';Ñ';Ø˜ D¨%°Ø˜4Ÿ=™=óˆEð ÷I$	÷ $	ò $	ús   ‡EE&Å&E/c                 ó   — t        ||«      S )z^Slated for deprecation, use
        ufuncbuilder._build_element_wise_ufunc_wrapper().
        )r•   )r-   rn   rk   s      r0   r¹   zUFuncBuilder.buildR  s   € ô 1°°yÓAÐAr2   )NFN)r3   r4   r5   r<   rª   rÇ   r¹   r6   r2   r0   r±   r±     s   „ óòBò%óNBr2   r±   c                   ó4   — e Zd Z	 	 dd„Zd„ Zed„ «       Zd„ Zy)ÚGUFuncBuilderNc                 ó†  — |€i }|| _         t        |«      | _        t        «       5   t	        d|¬«      |«      | _        d d d «       || _        t        |«      \  | _        | _	        || _
        || _        g | _        i | _        t        |«      }t        |D �cg c]
  } ||«      ‘Œ c}«      | _        y # 1 sw Y   ŒtxY wc c}w )Nr}   r³   )rJ   r�   rœ   r¥   r   r   rk   r   ÚsinÚsoutrM   rO   r«   r¬   Ú_get_transform_argÚtupler    )	r-   rJ   rk   rœ   rO   rM   r    Útransform_argr“   s	            r0   r<   zGUFuncBuilder.__init__\  s·   € àÐ ØˆMØˆŒÜ& xÓ0ˆŒÜ@ÓBñ 	IØ?œ3 z¸Ô?ÀÓHˆDŒL÷	Ià"ˆŒÜ-¨iÓ8ÑˆŒ�$”)Ø*ˆÔØˆŒ
ØˆŒ
ØˆŒ
ä*¨7Ó3ˆÜ"¸mÖ#L¸¡M°!Õ$4Ò#LÓMˆÕ÷	Ið 	Iüò $Ms   ¦B2ÂB>Â2B;c                 ó¬   — |j                   s2|j                  j                  t        j                  k7  rt        d«      ‚|€t        j                  } ||Ž S )Nz(gufunc kernel must have void return type)r‚   rk   rq   r   Úvoidrƒ   r¶   s       r0   rª   z!GUFuncBuilder._finalize_signaturen  sD   € Ø�Š 4§>¡>×#=Ñ#=ÄÇÁÒ#KÜÐFÓGÐGàÐÜŸ*™*ˆKá˜DÐ!Ð!r2   c                 óv  — g }g }| j                   st        d«      ‚g }| j                  D ]n  }| j                  |   }| j	                  |«      \  }}}|j                  |«       |j                  t        |«      «       |j                  |j                  |f«       Œp d gt        |«      z  }	t        | j                  «      }
t        | j                  «      }t        j                  | j                  j                  | j                  j                  |||
||	|| j                   | j"                  | j$                  «      }|S )Nr¸   )r   rƒ   r«   r¬   r¹   r�   rº   r‡   r»   rÌ   rÍ   r   r¾   rJ   r3   rz   rœ   rk   r    )r-   Ú	type_listÚ	func_listrÁ   rd   rn   r”   r’   rÂ   ÚdatalistÚninÚnoutr:   s                r0   rÇ   zGUFuncBuilder.build_ufuncw  s  € àˆ	Øˆ	Ø�|Š|Ü˜OÓ,Ð,ð ˆ	Ø—:‘:ò 	2ˆCØ—:‘:˜c‘?ˆDØ"&§*¡*¨TÓ"2ÑˆI�s˜CØ×Ñ˜YÔ'Ø×ÑœS ›XÔ&Ø×Ñ˜dŸl™l¨CÐ0Õ1ð	2ð �6œC 	›NÑ*ˆä�$—(‘(‹mˆÜ�4—9‘9‹~ˆô ×"Ñ"Ø�L‰L×!Ñ! 4§<¡<×#7Ñ#7Ø�y # t¨XØ�t—}‘} d§n¡n°d×6HÑ6Hó
ˆð
 ˆr2   c                 ó¸  — |j                   }t        | j                  || j                  | j                  | j
                  d¬«      }|j                  }|j                  j                  |j                  «      }g }|j                  D ]O  }t        |t        j                  «      r|j                  }n|}|j                  t!        |«      j"                  «       ŒQ |||fS )zJ
        Returns (dtype numbers, function ptr, EnvironmentObject)
        F)rO   Ú
is_parfors)rk   r   rJ   rÌ   rÍ   rO   rÂ   r‡   rŠ   r‹   rp   Ú
isinstancer   ÚArrayÚdtyper�   r   rŒ   )	r-   rn   rk   r‘   rÂ   r’   r”   r“   Útys	            r0   r¹   zGUFuncBuilder.build”  s³   € ð
 —N‘Nˆ	Ü#Ø�L‰L˜$ §¡¨$¯)©)Ø—*‘*¨ô
ˆð
 �h‰hˆØ�l‰l×2Ñ2°4·9±9Ó=ˆàˆ	Ø—‘ò 	/ˆAÜ˜!œUŸ[™[Ô)Ø—W‘W‘à�Ø×ÑœX b›\×-Ñ-Õ.ð	/ð ˜#˜sÐ"Ð"r2   )NFNr6   )r3   r4   r5   r<   rª   r   rÇ   r¹   r6   r2   r0   rÊ   rÊ   Y  s0   „ ð AFØ35óNò$"ð ñó ðó8#r2   rÊ   c                 ó¢   ‡ ‡‡— t        j                  ‰ «      j                  Št        ‰«      D ��ci c]  \  }}||“Œ
 c}}Šˆˆˆ fd„}|S c c}}w )z-Return function that transform arg into indexc                 óŽ   •— t        | t        «      r| S 	 ‰|    S # t        $ r! d| › d‰› d‰j                  › �}t	        |«      ‚w xY w)NzSpecified writable arg z not found in arg list z for function )rÛ   rº   rš   r5   ÚRuntimeError)ÚargÚmsgrp   Ú
pos_by_argrJ   s     €€€r0   rÐ   z)_get_transform_arg.<locals>.transform_arg±  s_   ø€ Ü�cœ3ÔØˆJð	$Ø˜c‘?Ð"øÜò 	$Ø,¨S¨EÐ1HØ�V˜>¨'×*>Ñ*>Ð)?ðAˆCä˜sÓ#Ð#ð	$ús	   • š*A)r¼   r½   rp   Ú	enumerate)rJ   Úirâ   rÐ   rp   rä   s   `   @@r0   rÎ   rÎ   ¬  sG   ú€ ä×!Ñ! 'Ó*×/Ñ/€DÜ'0°£×7™V˜Q �#�q‘&Ó7€Jö	$ð Ðùó 8s   ±A)?r¼   r¢   Ú
contextlibr   Ú
numba.corer   r   Únumba.core.decoratorsr   Únumba.core.descriptorsr   Únumba.core.extendingr   Únumba.core.errorsr	   Únumba.core.optionsr
   r   Únumba.core.registryr   Únumba.core.target_extensionr   r   r   r   r   r   r   Únumba.np.numpy_supportr   Únumba.np.ufuncr   Únumba.np.ufunc.sigparser   Únumba.np.ufunc.wrappersr   r   Únumba.core.cachingr   r   Únumba.core.compiler_lockr   Ú_options_mixinr"   r8   r{   ÚReduceMixinrH   r€   r…   r•   ÚPyUFunc_ZeroÚPyUFunc_OneÚPyUFunc_NoneÚPyUFunc_ReorderableNoner™   r�   r¥   Úobjectr§   r±   rÊ   rÎ   r6   r2   r0   ú<module>rý      s/  ðó Û Ý %ç +Ý %Ý 3Ý *Ý 5ß EÝ *ß Lß BÕ BÝ +Ý $Ý 3ß Mß 7Ý 9ñ )ØØØØØó€ô-˜¨ô -ô,)Ð"ô )ñ ‹}€ôa �i×+Ñ+ô a ðH 4CÐ �O JÑ/Ñ 0ò
#òò ,ð& ×ÑØ×ÑØ
×
 Ñ
 Ø×4Ñ4ñ	€ò	ð ñ
ó ð
ô˜ô ô*ABÐ$ô ABôHP#Ð%ô P#ófr2   