§
    tŠtj²1  ã                   óx  — d Z ddlZddlZddlmZmZ ddlmZ ddl	m
Z
mZmZ ddl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mZmZmZmZmZmZ dd	l m!Z!  e¦   «         re pe Z"ej#         $                    d
¦  «        ej#         $                    d¦  «        ej#         $                    d¦  «        gZ%d„ Z&d„ Z'd„ Z( ej)        eeeeeeeeeeeg¬¦  «        d„ ¦   «         Z*ej)        d„ ¦   «         Z+ej)        d„ ¦   «         Z,ej)        d„ ¦   «         Z-ej)        d„ ¦   «         Z.ej)        d„ ¦   «         Z/ej)        d„ ¦   «         Z0ej)        d„ ¦   «         Z1 G d„ de!j2        ¦  «        Z3ej#         4                    d ej5        ddg¦  «         ej5        ddg¦  «         ej5        d d!g¦  «        g¦  «        d"„ ¦   «         Z6dS )#aj  
This file contains a minimal set of tests for compliance with the extension
array interface test suite, and should contain no other tests.
The test suite for the full functionality of the array is located in
`pandas/tests/arrays/`.

The tests in this file are inherited from the BaseExtensionTests, and only
minimal tweaks should be applied to get the tests passing (by overwriting a
parent method).

Additional tests should either be added to one of the BaseExtensionTests
classes (if they are relevant for the extension interface for all dtypes), or
be added to the array-specific tests in `pandas/tests/arrays/`.

é    N)ÚIS64Úis_platform_windows)Únp_version_gt2)Úis_float_dtypeÚis_signed_integer_dtypeÚis_unsigned_integer_dtype)ÚBooleanDtype)ÚFloat32DtypeÚFloat64Dtype)Ú	Int8DtypeÚ
Int16DtypeÚ
Int32DtypeÚ
Int64DtypeÚ
UInt8DtypeÚUInt16DtypeÚUInt32DtypeÚUInt64Dtype)Úbasez9ignore:invalid value encountered in divide:RuntimeWarningz)ignore:Mean of empty slice:RuntimeWarningz4ignore:overflow encountered in reduce:RuntimeWarningc            
      óB   — ddddt           j        ddt           j        ddg
S )	Né   é   é   é   é
   é   éc   éd   ©ÚpdÚNA© ó    ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pandas/tests/extension/test_masked.pyÚ	make_datar$   ?   s!   € Øˆq�!�Q�œ˜r 2¥r¤u¨b°#Ð6Ð6r"   c            
      óB   — ddddt           j        ddt           j        ddg
S )	Nçš™™™™™¹?çš™™™™™É?g333333Ó?gš™™™™™Ù?ç      ð?gš™™™™™ñ?gÍÌÌÌÌÌ#@g      $@r   r!   r"   r#   Úmake_float_datar)   C   s!   € Ø��c˜3¥¤ s¨Cµ´¸¸TÐBÐBr"   c                  ó\   — ddgdz  t           j        gz   ddgz   t           j        gz   ddgz   S )NTFr   )ÚnpÚnanr!   r"   r#   Úmake_bool_datar-   G   s5   € Ø�%ˆ=˜1Ñ¥¤˜xÑ'¨4°¨-Ñ7½2¼6¸(ÑBÀdÈEÀ]ÑRÐRr"   )Úparamsc                 ó*   — |                       ¦   «         S ©N)Úparam)Úrequests    r#   Údtyper3   K   s   € ð  �=Š=‰?Œ?Ðr"   c                 ó²   — | j         dk    rt          ¦   «         }n(| j         dk    rt          ¦   «         }nt          ¦   «         }t	          j        || ¬¦  «        S )NÚfÚb©r3   )Úkindr)   r-   r$   r   Úarray)r3   Údatas     r#   r:   r:   ^   sT   € à„z�SÒÐÝÑ Ô ˆˆØ	Œ�sÒ	Ð	ÝÑÔˆˆå‰{Œ{ˆÝŒ8�D Ð&Ñ&Ô&Ð&r"   c                 ó¾   — | j         dk    r(t          j        t          j        d¦  «        | ¬¦  «        S t          j        t          j        d¦  «        dz  | ¬¦  «        S )Nr6   r   r7   r   )r8   r   r9   r+   Úonesr7   s    r#   Údata_for_twosr=   i   sM   € à„z�SÒÐÝŒx�œ ™œ¨5Ð1Ñ1Ô1Ð1ÝŒ8•B”G˜B‘K”K !‘O¨5Ð1Ñ1Ô1Ð1r"   c                 óú   — | j         dk    r"t          j        t          j        dg| ¬¦  «        S | j         dk    r"t          j        t          j        dg| ¬¦  «        S t          j        t          j        dg| ¬¦  «        S )Nr5   r&   r7   r6   Tr   ©r8   r   r9   r    r+   r,   r7   s    r#   Údata_missingr@   p   sm   € à„z�SÒÐÝŒx�œ ˜¨EÐ2Ñ2Ô2Ð2Ø	Œ�sÒ	Ð	ÝŒx�œ ˜¨eÐ4Ñ4Ô4Ð4ÝŒ8•R”U˜A�J eÐ,Ñ,Ô,Ð,r"   c                 ó¾   — | j         dk    rt          j        g d¢| ¬¦  «        S | j         dk    rt          j        g d¢| ¬¦  «        S t          j        g d¢| ¬¦  «        S )Nr5   )r&   r'   ç        r7   r6   )TTF)r   r   r   )r8   r   r9   r7   s    r#   Údata_for_sortingrC   y   sj   € à„z�SÒÐÝŒx˜˜˜¨uÐ5Ñ5Ô5Ð5Ø	Œ�sÒ	Ð	ÝŒxÐ+Ð+Ð+°5Ð9Ñ9Ô9Ð9ÝŒ8�I�I�I UÐ+Ñ+Ô+Ð+r"   c                 ó   — | j         dk    r#t          j        dt          j        dg| ¬¦  «        S | j         dk    r#t          j        dt          j        dg| ¬¦  «        S t          j        dt          j        d	g| ¬¦  «        S )
Nr5   r&   rB   r7   r6   TFr   r   r?   r7   s    r#   Údata_missing_for_sortingrE   ‚   su   € à„z�SÒÐÝŒx˜�bœe SÐ)°Ð7Ñ7Ô7Ð7Ø	Œ�sÒ	Ð	ÝŒx˜�rœv uÐ-°UÐ;Ñ;Ô;Ð;ÝŒ8�Q�œ˜q�M¨Ð/Ñ/Ô/Ð/r"   c                  ó   — d„ S )Nc                 ó:   — | t           j        u o|t           j        u S r0   r   )ÚxÚys     r#   ú<lambda>zna_cmp.<locals>.<lambda>Ž   s   € ˜�RœU˜
Ð1 q­B¬E z€ r"   r!   r!   r"   r#   Úna_cmprK   ‹   s   € ð 2Ð1Ð1r"   c           
      óª   — | j         dk    rd}d}d}n| j         dk    rd}d}|}nd}d	}d
}t          j        }t          j        ||||||||g| ¬¦  «        S )Nr5   r&   rB   r'   r6   TFr   r   r   r7   )r8   r   r    r9   )r3   r6   ÚaÚcÚnas        r#   Údata_for_groupingrP   ‘   sz   € à„z�SÒÐØˆØˆØˆˆØ	Œ�sÒ	Ð	ØˆØˆØˆˆàˆØˆØˆå	Œ€BÝŒ8�Q˜˜2˜r 1 a¨¨AÐ.°eÐ<Ñ<Ô<Ð<r"   c                   óL  ‡ — e Zd ZdZ ej        d¬¦  «        d„ ¦   «         Zej                             dddg¦  «        d„ ¦   «         Z	d	„ Z
d
„ Zdefd„Zˆ fd„Zdej        dedefd„Zdej        dedefd„Zdedefd„Zdej        dedefd„Zdej        dedefd„Zˆ fd„Zˆ xZS )ÚTestMaskedArraysÚbooleanT)Úautousec                 ó   — |j         rJ ‚d S r0   )Ú_supports_2d)Úselfr3   r2   s      r#   Úskip_if_doesnt_support_2dz*TestMaskedArrays.skip_if_doesnt_support_2d§   s   € ð Ô%Ð%Ð%Ð%Ð%Ð%r"   Ú	na_actionNÚignorec                 óþ   — |                      d„ |¬¦  «        }|j        t          ¦   «         k    r$|r"|                     dt          j        ¬¦  «        }n|                     ¦   «         }t          j        ||¦  «         d S )Nc                 ó   — | S r0   r!   )rH   s    r#   rJ   z+TestMaskedArrays.test_map.<locals>.<lambda>°   s   € ¨A€ r"   ©rY   Úfloat64)r3   Úna_value)Úmapr3   r
   Úto_numpyr+   r,   ÚtmÚassert_numpy_array_equal)rW   r@   rY   Úusing_nan_is_naÚresultÚexpecteds         r#   Útest_mapzTestMaskedArrays.test_map®   sy   € à×!Ò! + +¸Ð!ÑCÔCˆØÔ¥¡¤Ò/Ð/°OÐ/à#×,Ò,°9ÅrÄvÐ,ÑNÔNˆHˆHà#×,Ò,Ñ.Ô.ˆHÝ
Ô# F¨HÑ5Ô5Ð5Ð5Ð5r"   c                 ó€  ‡— |d         Š|                      ˆfd„d¬¦  «        }|j        j        dk    r)t          j        dt
          j        dgt          ¬¦  «        }nL|s)t          j        ‰t
          j        ‰gt          ¬¦  «        }n!t          j        ‰t          j        ‰g¦  «        }t          j
        ||¦  «         d S )Nr   c                 ó   •— ‰S r0   r!   )rH   Úzeros    €r#   rJ   z<TestMaskedArrays.test_map_na_action_ignore.<locals>.<lambda>º   s   ø€ ¸€ r"   rZ   r]   r6   Fr7   )r`   r3   r8   r+   r9   r   r    Úobjectr,   rb   rc   )rW   rE   rd   re   rf   rj   s        @r#   Útest_map_na_action_ignorez*TestMaskedArrays.test_map_na_action_ignore¸   s³   ø€ Ø'¨Ô*ˆØ)×-Ò-¨n¨n¨n¨nÈÐ-ÑQÔQˆØ#Ô)Ô.°#Ò5Ð5Ý”x ­¬¨uÐ 5½VÐDÑDÔDˆHˆHØ ð 	6å”x ¥r¤u¨dÐ 3½6ÐBÑBÔBˆHˆHå”x ¥r¤v¨tÐ 4Ñ5Ô5ˆHÝ
Ô# F¨HÑ5Ô5Ð5Ð5Ð5r"   c                 ó  — 	 t          j        |¦  «        }n$# t          $ r t          j        |¦  «        }Y nw xY w|j        dk    r>|                     d¦  «                             d¦  «        dv rt          S |dv rt          S d S d S )Nr6   Ú_Úr)ÚpowÚtruedivÚfloordiv)Ú__sub__Ú__rsub__)rb   Ú	get_dtypeÚAttributeErrorr8   ÚstripÚlstripÚNotImplementedErrorÚ	TypeError)rW   Úop_nameÚobjÚotherr3   s        r#   Ú_get_expected_exceptionz(TestMaskedArrays._get_expected_exceptionÄ   s�   € ð	(Ý”L Ñ%Ô%ˆEˆEøÝð 	(ð 	(ð 	(å”L Ñ'Ô'ˆEˆEˆEð	(øøøð Œ:˜ÒÐØ�}Š}˜SÑ!Ô!×(Ò(¨Ñ-Ô-Ð1OÐOÐOå*Ð*ØÐ3Ð3Ð3å Ð Ø�4Øˆts   ‚ —8·8r{   c                 óz   — t          j        |¦  «        }|}|j        dk    r|dv r|                     d¦  «        }|S )Nr6   )Ú__mod__Ú__rmod__ÚInt8)rb   ru   r8   Úastype)rW   r{   r|   r}   Úpointwise_resultÚsdtyperf   s          r#   Ú_cast_pointwise_resultz'TestMaskedArrays._cast_pointwise_resultÕ   sM   € Ý”˜cÑ"Ô"ˆØ#ˆàŒ;˜#ÒÐØð ð ð ð
 $Ÿ?š?¨6Ñ2Ô2�àˆr"   c                 óÖ   •— |j         j        dk    r5t          j                             d¬¦  «        }|                     |¦  «         t          ¦   «                              ||¦  «         d S )Nr6   z‡Inconsistency between floordiv and divmod; we raise for floordiv but not for divmod. This matches what we do for non-masked bool dtype.©Úreason)r3   r8   ÚpytestÚmarkÚxfailÚapplymarkerÚsuperÚtest_divmod_series_array)rW   r:   r=   r2   r‹   Ú	__class__s        €r#   r�   z)TestMaskedArrays.test_divmod_series_arrayã   si   ø€ ØŒ:Œ?˜cÒ!Ð!Ý”;×$Ò$ð)ð %ñ ô ˆDð
 ×Ò Ñ%Ô%Ð%Ý‰Œ×(Ò(¨¨}Ñ=Ô=Ð=Ð=Ð=r"   ÚserÚreturnc                 óX   — |dv r%|j         j        dk    rt          j        d¬¦  «         dS )N©ÚanyÚallr6   z-Tested in tests/reductions/test_reductions.pyrˆ   T)r3   r8   rŠ   Úskip©rW   r‘   r{   s      r#   Ú_supports_reductionz$TestMaskedArrays._supports_reductioní   s4   € Ø�nÐ$Ð$¨¬¬¸3Ò)>Ð)>ÝŒKÐNÐOÑOÔOÐOØˆtr"   Úskipnac                 ó.  — d}|j         j        dk    r|j         j        }n|j         j        dk    r|dv rd}|                     ¦   «                              |¦  «        }|dk    r1 t          ||¦  «        ¦   «         } t          ||¦  «        ¦   «         }nl t          ||¦  «        |¬¦  «        } t          ||¦  «        |¬¦  «        }|s6|                     ¦   «                              ¦   «         r|dvrt          j	        }t          j        ||¦  «         d S )	NÚint64r5   r6   ©ÚminÚmaxÚboolÚcount©rš   r”   )r3   r8   Únumpy_dtypeÚdropnarƒ   ÚgetattrÚisnar•   r   r    rb   Úassert_almost_equal)rW   r‘   r{   rš   Ú	cmp_dtypeÚaltre   rf   s           r#   Úcheck_reducezTestMaskedArrays.check_reduceò   s   € ð ˆ	ØŒ9Œ>˜SÒ Ð ð œ	Ô-ˆIˆIØŒYŒ^˜sÒ"Ð"Ø˜.Ð(Ð(Ø"�	ð
 �jŠj‰lŒl×!Ò! )Ñ,Ô,ˆØ�gÒÐØ*•W˜S 'Ñ*Ô*Ñ,Ô,ˆFØ,•w˜s GÑ,Ô,Ñ.Ô.ˆHˆHà*•W˜S 'Ñ*Ô*°&Ð9Ñ9Ô9ˆFØ,•w˜s GÑ,Ô,°FÐ;Ñ;Ô;ˆHØð !˜cŸhšh™jœjŸnšnÑ.Ô.ð !°7À.Ð3PÐ3PÝœ5�Ý
Ô˜v xÑ0Ô0Ð0Ð0Ð0r"   c                 ó8  — t          |j        ¦  «        r|j        j        }nø|dv rd}nñ|dv r|j        j        }nà|j        dv r|j        j        }nÊt          |j        ¦  «        r#t	          ¦   «         r	t
          r	|rt          sdnd}n“t          |j        ¦  «        r#t	          ¦   «         r	t
          r	|rt          sdnd}n\|j        j        d	k    r=|d
v rd}nE|dv r#t	          ¦   «         r	t
          r	|rt          sdnd}nt          d¦  «        ‚t          d¦  «        ‚|S )N)ÚmeanÚmedianÚvarÚstdÚskewÚkurtÚsemÚFloat64)rŸ   rž   )ÚInt64ÚUInt64ÚInt32r´   ÚUInt32rµ   r6   r�   rS   )ÚsumÚprodznot supposed to reach this)
r   r3   Únamer   r   r   r   r   r8   rz   )rW   Úarrr{   rš   r¨   s        r#   Ú_get_expected_reduction_dtypez.TestMaskedArrays._get_expected_reduction_dtype  sƒ  € Ý˜#œ)Ñ$Ô$ð $	:Øœ	œˆIˆIØÐOÐOÐOØ!ˆIˆIØ˜Ð&Ð&Øœ	œˆIˆIØŒYÐ-Ð-Ð-Øœ	œˆIˆIÝ$ S¤YÑ/Ô/ð 	:õ (Ñ)Ô)ðÝ3AðØIOðåð��ð ð	 ˆIõ ' s¤yÑ1Ô1ð 	:õ (Ñ)Ô)ðÝ3AðØIOðåð��ð ð	 ˆIð ŒYŒ^˜sÒ"Ð"Ø˜.Ð(Ð(Ø%�	�	Ø˜OÐ+Ð+õ ,Ñ-Ô-ð!Ý7Eð!ØMSð!åð!�G�Gð !ð	 �	õ  Ð <Ñ=Ô=Ð=åÐ8Ñ9Ô9Ð9ØÐr"   c                 ó   — dS )NTr!   r˜   s      r#   Ú_supports_accumulationz'TestMaskedArrays._supports_accumulation5  s   € Øˆtr"   c           
      ó‚  — d}t           r|j        j        dk    sd}|j        j                             d¦  «        rd|› �}nh|j        j                             d¦  «        rd|› �}nC|j        j                             d¦  «        r|j        }n|j        j        d	k    r|d
v rd}nd|› �}|dk    r"|dk    r|rt          j        d|› d|› �¦  «         |dk    rn/|dv r|j        }n#|dk    r|d d…         }nt          |› d�¦  «        ‚ t          ||¦  «        |¬¦  «        }t          j        t          j         t          |                     d¦  «        |¦  «        |¬¦  «        d¬¦  «        ¦  «        }t          j        |t          j        |¦  «        <   |                     |¦  «        }t#          j        ||¦  «         d S )Né@   é   é    ÚUÚUIntÚIÚIntÚFr6   )ÚcumminÚcummaxrS   ÚFloat32Úcumprodz4Float32 precision lead to large differences with op z and skipna=Úcumsum)rÉ   rÈ   é   z not supportedr¢   r^   r³   r7   )Úis_windows_or_32bitr3   Úitemsizerº   Ú
startswithr8   rŠ   r—   ry   r¥   r   ÚSeriesr9   rƒ   r    r+   Úisnanrb   Úassert_series_equal)rW   r‘   r{   rš   ÚlengthÚexpected_dtypere   rf   s           r#   Úcheck_accumulatez!TestMaskedArrays.check_accumulate8  s  € ð ˆÝð 	ð ”9Ô%¨Ò*Ð*Ø�àŒ9Œ>×$Ò$ SÑ)Ô)ð 	0Ø, F˜_˜_ˆNˆNØŒYŒ^×&Ò& sÑ+Ô+ð 
	0Ø+ 6˜^˜^ˆNˆNØŒYŒ^×&Ò& sÑ+Ô+ð 	0ð !œYˆNˆNØŒYŒ^˜sÒ"Ð"ØÐ.Ð.Ð.Ø!*��à!/ v  �à˜YÒ&Ð&¨7°iÒ+?Ð+?ÀFÐ+?åŒKð'Àwð 'ð 'Ø$ð'ð 'ñô ð ð
 �hÒÐØØÐ,Ð,Ð,Ø œYˆNˆNØ˜	Ò!Ð!Ø�c�r�c”(ˆCˆCå%¨Ð&@Ð&@Ð&@ÑAÔAÐAà&•˜˜gÑ&Ô&¨fÐ5Ñ5Ô5ˆÝ”9ÝŒHØ7•˜Ÿ
š
 9Ñ-Ô-¨wÑ7Ô7¸vÐFÑFÔFØðñ ô ñ
ô 
ˆõ (*¤uˆ•”˜(Ñ#Ô#Ñ$Ø—?’? >Ñ2Ô2ˆÝ
Ô˜v xÑ0Ô0Ð0Ð0Ð0r"   c                 óJ   •— t          ¦   «                              |¦  «         d S r0   )rŽ   Ú8test_loc_setitem_with_expansion_preserves_ea_index_dtype)rW   r:   r2   r�   s      €r#   rØ   zITestMaskedArrays.test_loc_setitem_with_expansion_preserves_ea_index_dtypek  s!   ø€ Ý‰Œ×HÒHÈÑNÔNÐNÐNÐNr"   )Ú__name__Ú
__module__Ú__qualname__Ú_combine_le_expected_dtyperŠ   ÚfixturerX   r‹   Úparametrizerg   rl   r~   Ústrr†   r�   r   rÑ   r    r™   rª   r¼   r¾   rÖ   rØ   Ú__classcell__)r�   s   @r#   rR   rR   ¤   sÅ  ø€ € € € € Ø!*Ðà€V„^˜DÐ!Ñ!Ô!ð&ð &ñ "Ô!ð&ð „[×Ò˜[¨4°Ð*:Ñ;Ô;ð6ð 6ñ <Ô;ð6ð
6ð 
6ð 
6ðð ð ð"¨cð ð ð ð ð>ð >ð >ð >ð >ð r¤yð ¸3ð À4ð ð ð ð ð
1 ¤	ð 1°Cð 1Àð 1ð 1ð 1ð 1ð6&¸#ð &Àtð &ð &ð &ð &ðP¨"¬)ð ¸cð Àdð ð ð ð ð11 B¤Ið 11¸ð 11ÀTð 11ð 11ð 11ð 11ðfOð Oð Oð Oð Oð Oð Oð Oð Or"   rR   r»   TFr   r   r(   g       @c                 óº   — t           j        t           j        g}|                      |¦  «        }|j        | j        k    sJ ‚t	          d„ |D ¦   «         ¦  «        sJ ‚d S )Nc              3   ó2   K  — | ]}|t           j        u V — Œd S r0   r   )Ú.0rH   s     r#   ú	<genexpr>zLtest_cast_pointwise_result_all_na_respects_original_dtype.<locals>.<genexpr>w  s(   è è € Ð*Ð*˜aˆq•B”EˆzÐ*Ð*Ð*Ð*Ð*Ð*r"   )r   r    r†   r3   r–   )r»   Úvaluesre   s      r#   Ú9test_cast_pointwise_result_all_na_respects_original_dtyperæ   o  sb   € õ
 Œe•R”Uˆ^€FØ×'Ò'¨Ñ/Ô/€FØŒ<˜3œ9Ò$Ð$Ð$Ð$ÝÐ*Ð* 6Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*r"   )7Ú__doc__Únumpyr+   rŠ   Úpandas.compatr   r   Úpandas.compat.numpyr   Úpandas.core.dtypes.commonr   r   r   Úpandasr   Úpandas._testingÚ_testingrb   Úpandas.core.arrays.booleanr	   Úpandas.core.arrays.floatingr
   r   Úpandas.core.arrays.integerr   r   r   r   r   r   r   r   Úpandas.tests.extensionr   rÎ   r‹   ÚfilterwarningsÚ
pytestmarkr$   r)   r-   rÝ   r3   r:   r=   r@   rC   rE   rK   rP   ÚExtensionTestsrR   rÞ   r9   ræ   r!   r"   r#   ú<module>rö      sØ  ððð ð  Ð Ð Ð Ø €€€ðð ð ð ð ð ð ð ð /Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð (Ð 'Ð 'Ð 'Ð 'Ð 'à*Ð*Ñ,Ô,ÐC°^Ð1CÐPÈDÈÐ ð „K×ÒØCñô ð „K×ÒÐJÑKÔKà
„K×ÒÐUÑVÔVð€
ð7ð 7ð 7ðCð Cð CðSð Sð Sð €„àØØØØØØØØØØððñ ô ðð ñô ðð „ð'ð 'ñ „ð'ð „ð2ð 2ñ „ð2ð „ð-ð -ñ „ð-ð „ð,ð ,ñ „ð,ð „ð0ð 0ñ „ð0ð „ð2ð 2ñ „ð2ð
 „ð=ð =ñ „ð=ð$HOð HOð HOð HOð HO�tÔ*ñ HOô HOð HOðV „×ÒØ	ˆHˆBŒH�d˜E�]Ñ#Ô# X R¤X¨q°!¨fÑ%5Ô%5°x°r´xÀÀcÀ
Ñ7KÔ7KÐLñô ð+ð +ñô ð+ð +ð +r"   