§
    qŠtjÓ`  ã                   óŽ  — d dl Z d dlZd dlZd dlmZmZ d dlmZ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 d d	lmZ d d
lmZmZ d dlmZ ej                             d ¦  «        ZdZddgde                      ed¦  «        z  z   Z!ddgde                      ed¦  «        z  z   Z"ddgde                      ed¦  «        z  z   Z#ddgde                      ed¦  «        z  z   Z$ddgde                      ed¦  «        z  z   Z%ddgde                      ed¦  «        z  z   Z& ej'        e!e"e#e$e%e&f¦  «        Z(ej)         *                    dg d¢dgg d¢d gdddd d!dej+        gdgdddd d!dej+        gdgg¦  «        d"„ ¦   «         Z,ej)         *                    dddd#d$dd%d%ej+        gdgddd#d$d&dd%d%ej+        g	d gddd#dej+        gd gddd#ej+        gdgg¦  «        d'„ ¦   «         Z-ej)         *                    d(g d)¢d dgddggg d*¢gg d)¢d dgddggg d+¢gg d)¢d dgddgd dggg d+¢gg d,¢d dgddgd dggg d-¢gg¦  «        d.„ ¦   «         Z.d/„ Z/d0„ Z0ej)         *                    d1d2gd3„ eD ¦   «         z   ¦  «        d4„ ¦   «         Z1d5„ Z2d6„ Z3d7„ Z4d8„ Z5d9„ Z6d:„ Z7d;„ Z8ej)         *                    d<g d=¢¦  «        ej)         *                    d>g d?¢¦  «        ej)         *                    d1d2d@gdA„ eD ¦   «         z   ¦  «        dB„ ¦   «         ¦   «         ¦   «         Z9dC„ Z:ej)         *                    dD e;de(j<        d          dz  dE¦  «        ¦  «        dF„ ¦   «         Z=ej)         *                    dGe¦  «        dH„ ¦   «         Z>dI„ Z?dJ„ Z@dK„ ZAej)         *                    dGdgez   ¦  «        dL„ ¦   «         ZBej)         *                    dGe¦  «        dM„ ¦   «         ZCdN„ ZDdS )Oé    N)ÚDBSCANÚOPTICS)Ú_extend_regionÚ_extract_xi_labels)Úgenerate_clustered_data)Ú
make_blobs)ÚDataConversionWarningÚEfficiencyWarning)Úcontingency_matrix)Úpairwise_distances)Úshuffle)Úassert_allcloseÚassert_array_equal)ÚCSR_CONTAINERSé
   éûÿÿÿéþÿÿÿçš™™™™™é?é   é   éÿÿÿÿçš™™™™™¹?é   çš™™™™™É?é   ç333333Ó?gš™™™™™ù?é   é   )Úr_plotÚend)r   çÍÌÌÌÌÌ!@çš™™™™™!@çffffff!@é   r   )r   r!   r"   r#   g333333!@r$   r   r!   r"   r#   r$   c                 ó¤   — t          j        | ¦  «        } | d d…         | dd …         z  }|dk    }|dk     }t          ||dd¦  «        }||k    sJ ‚d S )Nr   r   grÇqÇñ?r   r   ©ÚnpÚarrayr   )r   r    ÚratioÚsteep_downwardÚupwardÚes         ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/cluster/tests/test_optics.pyÚtest_extend_downwardr.      sd   € õ ŒX�fÑÔ€FØ�3�B�3ŒK˜&   œ*Ñ$€EØ˜gÒ%€NØ�QŠY€Få�~ v¨q°!Ñ4Ô4€AØ�Š8ˆ8ˆ8ˆ8ˆ8ˆ8ó    gÍÌÌÌÌÌ @gš™™™™™@é   gffffff@c                 ó¤   — t          j        | ¦  «        } | d d…         | dd …         z  }|dk    }|dk    }t          ||dd¦  «        }||k    sJ ‚d S )Nr   r   gÍÌÌÌÌÌì?r   r   r&   )r   r    r)   Ústeep_upwardÚdownwardr,   s         r-   Útest_extend_upwardr4   2   sc   € õ ŒX�fÑÔ€FØ�3�B�3ŒK˜&   œ*Ñ$€EØ˜C’<€LØ�qŠy€Hå�| X¨q°!Ñ4Ô4€AØ�Š8ˆ8ˆ8ˆ8ˆ8ˆ8r/   )ÚorderingÚclustersÚexpected©r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                 óF   — t          | |¦  «        }t          ||¦  «         d S ©N)r   r   )r5   r6   r7   Úlabelss       r-   Útest_the_extract_xi_labelsr<   E   s)   € õ   ¨(Ñ3Ô3€Få�v˜xÑ(Ô(Ð(Ð(Ð(r/   c                 óð  — t           j                             d¦  «        }d}ddgd|                     |d¦  «        z  z   }ddgd	|                     |d¦  «        z  z   }d
dgd|                     |d¦  «        z  z   }ddgd|                     |d¦  «        z  z   }ddgd|                     |d¦  «        z  z   }ddgd|                     |d¦  «        z  z   }t          j        |||||t          j        ddgg¦  «        |f¦  «                             | d¬¦  «        }	t           j        dgdz  dgdz  d
gdz  dgdz  d
gdz  ddgdz  f         }
t          |	|
|¬¦  «        \  }	}
t          ddddd¬¦  «         
                    |	¦  «        }t          |j        |
¦  «         t          d	dddd¬¦  «         
                    |	¦  «        }t          |j        |
¦  «         t          j        |||||t          j        ddggdz  ¦  «        |f¦  «                             | d¬¦  «        }	t           j        d
gdz  dgdz  dgdz  dgdz  dgdz  dddgdz  f         }
t          |	|
|¬¦  «        \  }	}
t          ddddd¬¦  «         
                    |	¦  «        }t          |j        |
¦  «         ddgdd	gddgd	dgg}ddgddgddgddgg}ddgddgddgddgg}t          j        |||f¦  «                             | d¬¦  «        }	t           j        dgdz  d
gdz  dgdz  f         }
t          |	|
|¬¦  «        \  }	}
t          ddt           j        dd¬¦  «         
                    |	¦  «        }t          |j        |
¦  «         d S ) Nr   r   r   r   r   r   r   r   r   r   r   r   r   g333333ã?r   éd   F©Úcopy©Úrandom_stateé   Úxiçš™™™™™Ù?)Úmin_samplesÚmin_cluster_sizeÚmax_epsÚcluster_methodrD   g{®Gáz´?çš™™™™™¹¿r   é	   é   éZ   én   ç{®Gáz¤?)r'   ÚrandomÚRandomStateÚrandnÚvstackr(   ÚastypeÚr_r   r   Úfitr   Úlabels_Úinf)Úglobal_dtypeÚrngÚn_points_per_clusterÚC1ÚC2ÚC3ÚC4ÚC5ÚC6ÚXÚexpected_labelsÚclusts               r-   Útest_extract_xire   T   s  € õ
 Œ)×
Ò
 Ñ
"Ô
"€CØÐà
ˆbˆ�C˜#Ÿ)š)Ð$8¸!Ñ<Ô<Ñ<Ñ	<€BØ
ˆRˆ�3˜ŸšÐ#7¸Ñ;Ô;Ñ;Ñ	;€BØ
ˆRˆ�3˜ŸšÐ#7¸Ñ;Ô;Ñ;Ñ	;€BØ
ˆaˆ�3˜ŸšÐ#7¸Ñ;Ô;Ñ;Ñ	;€BØ
ˆRˆ�3˜ŸšÐ#7¸Ñ;Ô;Ñ;Ñ	;€BØ
ˆQˆ�#˜Ÿ	š	Ð"6¸Ñ:Ô:Ñ:Ñ	:€Bå
Œ	�2�r˜2˜r 2¥r¤x°#°s°°Ñ'=Ô'=¸rÐBÑCÔC×JÒJØ˜5ð 	Kñ 	ô 	€Aõ ”e˜Q˜C !™G a S¨1¡W¨q¨c°A©g¸°s¸Q±wÀÀÀaÁÈÈaÈSÐSTÉWÐTÔU€OÝ   OÀ#ÐFÑFÔFÑ€A€åØ¨°2ÀdÈsðñ ô ç	‚cˆ!�f„fð 
õ �u”} oÑ6Ô6Ð6õ Ø¨$¸È4ÐTWðñ ô ç	‚cˆ!�f„fð 
õ �u”} oÑ6Ô6Ð6å
Œ	�2�r˜2˜r 2¥r¤x°#°s°°¸qÑ0@Ñ'AÔ'AÀ2ÐFÑGÔG×NÒNØ˜5ð 	Oñ 	ô 	€Aõ ”eØ	
ˆˆa‰�!��q‘˜1˜# ™' A 3¨¡7¨Q¨C°!©G°R¸¸a¸SÀ1¹WÐDô€Oõ !  OÀ#ÐFÑFÔFÑ€A€åØ¨°2ÀdÈsðñ ô ç	‚cˆ!�f„fð 
õ �u”} oÑ6Ô6Ð6àˆaˆ&�1�c�(˜Q ˜I¨¨Q xÐ	0€BØˆrˆ(�R˜�G˜b "˜X¨¨2 wÐ	/€BØ�ˆ*�s˜B�i # s ¨b°#¨YÐ	7€BÝ
Œ	�2�r˜2�,ÑÔ×&Ò& |¸%Ð&Ñ@Ô@€AÝ”e˜Q˜C !™G a S¨1¡W¨q¨c°A©gÐ5Ô6€OÝ   OÀ#ÐFÑFÔFÑ€A€åØ¨µ2´6È$ÐSWðñ ô ç	‚cˆ!�f„fð 
õ �u”} oÑ6Ô6Ð6Ð6Ð6r/   c                 ól  — t           j                             |¦  «        }d}ddgd|                     |d¦  «                             | d¬¦  «        z  z   }ddgd|                     |d¦  «                             | d¬¦  «        z  z   }t          j        ||f¦  «        }t          ||¬¦  «        }t          dd	¬
¦  «                             |¦  «        j	        }|j
        dk    sJ ‚dt          j        |d         ¦  «        dz   cxk    rdk    sn J ‚t          j        |d         ¦  «        dz   dk    sJ ‚d S )Nr>   r   r   Fr?   é2   rA   rC   r   )rF   rD   )r   r   r   és   r   éÈ   )r'   rP   rQ   rR   rT   rS   r   r   rV   Úcluster_hierarchy_ÚshapeÚdiff)rY   Úglobal_random_seedrZ   r[   r\   r]   rb   r6   s           r-   Útest_cluster_hierarchyrn   �   sc  € Ý
Œ)×
Ò
Ð 2Ñ
3Ô
3€CØÐØ
ˆQˆ�!�c—i’iÐ 4°aÑ8Ô8×?Ò?Ø˜5ð @ñ ô ñ ñ 
€Bð ˆQˆ�"�s—y’yÐ!5°qÑ9Ô9×@Ò@Ø˜5ð Añ ô ñ ñ 
€Bõ 	Œ	�2�r�(ÑÔ€AÝ� Ð$Ñ$Ô$€Aå "¨Ð-Ñ-Ô-×1Ò1°!Ñ4Ô4ÔG€HØŒ>˜VÒ#Ð#Ð#Ð#ð •"”'˜( 1œ+Ñ&Ô&¨Ñ*Ð1Ð1Ò1Ð1¨cÒ1Ð1Ð1Ð1Ð1Ð1åŒ7�8˜B”<Ñ Ô  1Ñ$¨Ò+Ð+Ð+Ð+Ð+Ð+r/   zcsr_container, metric)NÚ	minkowskic                 ó   — g | ]}|d f‘ŒS ©Ú	euclidean© ©Ú.0Ú	containers     r-   ú
<listcomp>rw   §   s   € ÐVÐVÐV¸)˜i¨Ð5ÐVÐVÐVr/   c                 óN  — d}t          |¬¦  «        }t          ddd| ¬¦  «        }|                     |� ||¦  «        n|¦  «         t          t	          |j        ¦  «        ¦  «        t          d|j        v ¦  «        z
  }||k    sJ ‚|j        j        t          |¦  «        fk    sJ ‚|j        j        j	        dk    sJ ‚|j
        j        t          |¦  «        fk    sJ ‚|j
        j        j	        d	k    sJ ‚|j        j        t          |¦  «        fk    sJ ‚|j        j        j	        d	k    sJ ‚|j        j        t          |¦  «        fk    sJ ‚|j        j        j	        dk    sJ ‚t	          |j        ¦  «        t	          t          t          |¦  «        ¦  «        ¦  «        k    sJ ‚d S )
Nr   )Ú
n_clustersg      >@r   r   )rH   rF   rD   Úmetricr   ÚiÚf)r   r   rV   ÚlenÚsetrW   Úintrk   ÚdtypeÚkindÚreachability_Úcore_distances_Ú	ordering_Úrange)rz   Úcsr_containerry   rb   rd   Ún_clusters_1s         r-   Útest_correct_number_of_clustersrˆ   ¥   sª  € ð €JÝ¨:Ð6Ñ6Ô6€Aõ ˜9°!¸ÀFÐKÑKÔK€EØ	‡I‚I -Ð";ˆmˆm˜AÑÔÐÀÑCÔCÐCå•s˜5œ=Ñ)Ô)Ñ*Ô*­S°°u´}Ð1DÑ-EÔ-EÑE€LØ˜:Ò%Ð%Ð%Ð%ð Œ=Ô¥3 q¡6¤6 )Ò+Ð+Ð+Ð+ØŒ=ÔÔ# sÒ*Ð*Ð*Ð*àÔÔ$­¨Q©¬¨	Ò1Ð1Ð1Ð1ØÔÔ$Ô)¨SÒ0Ð0Ð0Ð0àÔ Ô&­3¨q©6¬6¨)Ò3Ð3Ð3Ð3ØÔ Ô&Ô+¨sÒ2Ð2Ð2Ð2àŒ?Ô ¥S¨¡V¤V IÒ-Ð-Ð-Ð-ØŒ?Ô Ô%¨Ò,Ð,Ð,Ð,ÝˆuŒÑÔ¥3¥u­S°©V¬V¡}¤}Ñ#5Ô#5Ò5Ð5Ð5Ð5Ð5Ð5r/   c                  óÊ   — d} ddgg}t          ddd¬¦  «        }t          j        t          | ¬¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz#min_samples must be no greater thanr   g      ø?r   ç      ð?)rH   rF   rG   ©Úmatch)r   ÚpytestÚraisesÚ
ValueErrorrV   )Úmsgrb   rd   s      r-   Ú#test_minimum_number_of_sample_checkr‘   Å   s²   € à
/€Cð ˆQˆˆ€AÝ˜9°"ÀsÐKÑKÔK€Eõ 
Œ•z¨Ð	-Ñ	-Ô	-ð ð Ø�	Š	�!‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   µAÁAÁAc                  ó  — d} ddgddgddgg}t          d|dd¬¦  «        \  }}t          dd	d
d¬¦  «        }t          j        t          | ¬¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz.Specify an epsilon smaller than 0.15. Got 0.3.r   r   éî  rE   r   ©Ú	n_samplesÚcentersÚcluster_stdrB   g333333Ã?Údbscanr   r   ©rH   rI   ÚepsrF   r‹   )r   r   r�   rŽ   r�   rV   ©r�   r–   rb   Úlabels_truerd   s        r-   Útest_bad_extractr�   Ò   sá   € à
:€CØ�1ˆv˜˜B�x ! R Ð)€GÝØ˜w°CÀaðñ ô �N€A€{õ
 ˜:°hÀCÐUWÐXÑXÔX€EÝ	Œ•z¨Ð	-Ñ	-Ô	-ð ð Ø�	Š	�!‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁA5Á5A9Á<A9c                  ó  — d} ddgddgddgg}t          d|dd¬¦  «        \  }}t          j        t          | ¬¦  «        5  t	          d	d
d	¬¦  «        }|                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz6All reachability values are inf. Set a larger max_eps.r   r   r“   rE   r   r”   r‹   g¸…ëQ¸Ž?r   )rH   rF   rš   )r   r�   ÚwarnsÚUserWarningr   rV   r›   s        r-   Útest_bad_reachabilityr¡   à   sÞ   € Ø
B€CØ�1ˆv˜˜B�x ! R Ð)€GÝØ˜w°CÀaðñ ô �N€A€{õ 
Œ•k¨Ð	-Ñ	-Ô	-ð ð Ý˜{¸ÀÐFÑFÔFˆØ�	Š	�!‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ¿(A4Á4A8Á;A8c                  ó*  — d} t           j                             ddt          ¬¦  «        }t	          j        ¦   «         5  t	          j        dt          ¦  «         t          | ¬¦  «         	                    |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚrogerstanimotor   ©r   r   ©Úsizer€   Úerror©rz   )
r'   rP   ÚrandintÚboolÚwarningsÚcatch_warningsÚsimplefilterr	   r   rV   )Úpairwise_metricrb   s     r-   Ú$test_nowarn_if_metric_bool_data_boolr¯   ì   sË   € ð
 '€OÝ
Œ	×Ò˜! &µÐÑ5Ô5€Aå	Ô	 Ñ	"Ô	"ð .ð .ÝÔ˜gÕ'<Ñ=Ô=Ð=å�oÐ&Ñ&Ô&×*Ò*¨1Ñ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð .ð .s   ½>BÂBÂBc                  ó~  — d} t           j                             ddt           j        ¬¦  «        }d| › �}t	          j        t          |¬¦  «        5 }t          j        ddt          ¬	¦  «         t          | ¬
¦  «                             |¦  «         t          |¦  «        dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr£   r   r¤   r¥   z-Data will be converted to boolean for metric r‹   Úignorez+'asyncio.iscoroutinefunction' is deprecated)ÚmessageÚcategoryr¨   r   )r'   rP   r©   Úint32r�   rŸ   r	   r«   ÚfilterwarningsÚDeprecationWarningr   rV   r}   )r®   rb   r�   Úwarn_records       r-   Ú%test_warn_if_metric_bool_data_no_boolr¸   ú   s  € ð '€OÝ
Œ	×Ò˜! &µ´ÐÑ9Ô9€AØ
K¸/Ð
KÐ
K€Cå	ŒÕ+°3Ð	7Ñ	7Ô	7ð %¸;åÔØØAÝ'ð	
ñ 	
ô 	
ð 	
õ
 	�oÐ&Ñ&Ô&×*Ò*¨1Ñ-Ô-Ð-Ý�;ÑÔ 1Ò$Ð$Ð$Ð$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %s   ÁAB2Â2B6Â9B6c                  óÈ  — d} t           j                             ddt          ¬¦  «        }t           j                             ddt           j        ¬¦  «        }t          j        ¦   «         5  t          j        dt          ¦  «         t          | ¬¦  «         
                    |¦  «         t          | ¬¦  «         
                    |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nro   r   r¤   r¥   r§   r¨   )r'   rP   r©   rª   r´   r«   r¬   r­   r	   r   rV   )r®   ÚX_boolÚX_nums      r-   Útest_nowarn_if_metric_no_boolr¼     s
  € ð "€OÝŒY×Ò˜q vµTÐÑ:Ô:€FÝŒI×Ò˜a fµB´HÐÑ=Ô=€Eå	Ô	 Ñ	"Ô	"ð 2ð 2ÝÔ˜gÕ'<Ñ=Ô=Ð=õ 	�oÐ&Ñ&Ô&×*Ò*¨6Ñ2Ô2Ð2å�oÐ&Ñ&Ô&×*Ò*¨5Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2s   Á)A!CÃCÃCc                  óÈ   — ddgddgddgg} t          d| dd¬¦  «        \  }}t          ddd	d
¬¦  «                             |¦  «        }t          |j        ¦  «        dk    sJ ‚d S )Nr   r   r“   rE   r   r”   rŠ   r˜   r   r   r™   r   )r   r   rV   ÚmaxrW   )r–   rb   rœ   rd   s       r-   Útest_close_extractr¿     s…   € ð �1ˆv˜˜B�x ! R Ð)€GÝØ˜w°CÀaðñ ô �N€A€{õ
 ˜3¨x¸SÈbÐQÑQÔQ×UÒUÐVWÑXÔX€EåˆuŒ}ÑÔ Ò"Ð"Ð"Ð"Ð"Ð"r/   rš   )r   r   ç      à?rF   )r   r   rC   )Nrr   c                 ó   — g | ]}|d f‘ŒS rq   rs   rt   s     r-   rw   rw   2  s   € Ð@Ð@Ð@ Iˆ	�;ÐÐ@Ð@Ð@r/   c           	      ó�  — ddgddgddgg}t          d|dd¬¦  «        \  }}|� ||¦  «        n|}|                     |d¬¦  «        }t          |d	| |¬
¦  «                             |¦  «        }t	          | |¬¦  «                             |¦  «        }	t          |	j        |j        ¦  «        }
t          t          j	        t          j
        |
d¬¦  «        ¦  «        t          j	        t          j
        |
d¬¦  «        ¦  «        ¦  «        }|j        d         |z
  }t          j        |dz
  |j        d         z  d¦  «        }|dk    sJ ‚d S )Nr   r   é–   rE   r   r”   Fr?   r˜   )rF   rI   rš   rz   )rš   rF   )Úaxisr   gš™™™™™©?)r   rT   r   rV   r   r   rW   Úminr'   Úsumr¾   rk   Úround)rš   rF   rz   rY   r†   r–   rb   rœ   ÚopÚdbÚcontingencyÚagreeÚdisagreeÚpercent_mismatchs                 r-   Útest_dbscan_optics_parityrÎ   -  sa  € ð �1ˆv˜˜B�x ! R Ð)€GÝØ˜w°CÀaðñ ô �N€A€{ð *Ð5ˆˆ�aÑÔÐ¸1€Aà	�Š� EˆÑ*Ô*€Aõ 
Ø°¸cÈ&ð
ñ 
ô 
ç	‚cˆ!�f„fð õ
 
�C [Ð	1Ñ	1Ô	1×	5Ò	5°aÑ	8Ô	8€Bå$ R¤Z°´Ñ<Ô<€KÝÝ
Œ�rŒv�k¨Ð*Ñ*Ô*Ñ+Ô+­R¬VµB´F¸;ÈQÐ4OÑ4OÔ4OÑ-PÔ-Pñô €Eð Œw�qŒz˜EÑ!€Hå”x ¨A¡°´¸´Ñ ;¸QÑ?Ô?Ðð ˜tÒ#Ð#Ð#Ð#Ð#Ð#r/   c                 ó  — ddgddgddgg}ddgddgddgg}ddgddgdd	gg}t          j        |||f¦  «                             | d
¬¦  «        }t           j        dgdz  dgdz  dgdz  f         }t	          dddd¬¦  «                             |¦  «        }t          |j        |¦  «         t           j        dgdz  dgdz  dgdz  f         }t	          dddd¬¦  «                             |¦  «        }t          |j        |¦  «         t           j        dgdz           }t          j	        t          d¬¦  «        5  t	          dddd¬¦  «                             |¦  «        }t          |j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   rJ   r   rK   rL   r>   é`   éj   Fr?   r   r   r   r$   rD   rO   )rF   rH   rI   rD   r   zAll reachability valuesr‹   r   )r'   rS   rT   rU   r   rV   r   rW   r�   rŸ   r    )rY   r\   r]   r^   rb   rc   rd   s          r-   Útest_min_samples_edge_caserÒ   S  sê  € Øˆaˆ&�1�c�(˜Q ˜IÐ	&€BØˆrˆ(�R˜�G˜b "˜XÐ	&€BØ�ˆ*�s˜B�i # s Ð	,€BÝ
Œ	�2�r˜2�,ÑÔ×&Ò& |¸%Ð&Ñ@Ô@€Aå”e˜Q˜C !™G a S¨1¡W¨q¨c°A©gÐ5Ô6€OÝ˜q¨!¸DÀTÐJÑJÔJ×NÒNÈqÑQÔQ€EÝ�u”} oÑ6Ô6Ð6å”e˜Q˜C !™G a S¨1¡W¨r¨d°Q©hÐ6Ô7€OÝ˜q¨!¸DÀTÐJÑJÔJ×NÒNÈqÑQÔQ€EÝ�u”} oÑ6Ô6Ð6å”e˜R˜D 1™H”o€OÝ	Œ•kÐ)BÐ	CÑ	CÔ	Cð ;ð ;Ý 1¨aÀÈÐNÑNÔN×RÒRÐSTÑUÔUˆÝ˜5œ=¨/Ñ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ;ð ;s   Ä7<F Æ FÆFrG   é   c                 ó¼  — t           d d d…                              |d¬¦  «        }t          d| ¬¦  «                             |¦  «        }t	          j        |j        |j        dk             ¦  «        }|j        rt          |¦  «        | k    sJ ‚t          d| |j	        d         z  ¬¦  «        }|                     |¦  «         t          |j        |j        ¦  «         d S )Nr   Fr?   rK   )rF   rG   r   r   )rb   rT   r   rV   r'   ÚbincountrW   r¦   rÅ   rk   r   )rG   rY   ÚredXrd   Úcluster_sizesÚ
clust_fracs         r-   Útest_min_cluster_sizerÙ   h  sØ   € åˆSˆSˆqˆSŒ6�=Š=˜¨Eˆ=Ñ2Ô2€DÝ˜qÐ3CÐDÑDÔD×HÒHÈÑNÔN€EÝ”K ¤¨e¬m¸rÒ.AÔ BÑCÔC€MØÔð 6Ý�=Ñ!Ô!Ð%5Ò5Ð5Ð5Ð5åØØ)¨D¬J°q¬MÑ9ðñ ô €Jð ‡N‚N�4ÑÔÐÝ�u”} jÔ&8Ñ9Ô9Ð9Ð9Ð9r/   r†   c                 óä  — t          t          t          ¦  «        dz   ¬¦  «        }t          j        t
          d¬¦  «        5  |                     t          ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          t          ¦  «        dz   d¬¦  «        }t          j        t
          d¬¦  «        5  |                      | t          ¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )rG   zmust be no greater than the r‹   rr   )rG   rz   )r   r}   rb   r�   rŽ   r�   rV   )r†   rd   s     r-   Útest_min_cluster_size_invalid2rÛ   x  sJ  € å¥C­¡F¤F¨Q¡JÐ/Ñ/Ô/€EÝ	Œ•zÐ)GÐ	HÑ	HÔ	Hð ð Ø�	Š	•!‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ ¥C­¡F¤F¨Q¡J°{ÐCÑCÔC€EÝ	Œ•zÐ)GÐ	HÑ	HÔ	Hð $ð $Ø�	Š	�-�-¥Ñ"Ô"Ñ#Ô#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $s$   ÁA(Á(A,Á/A,Â4$C%Ã%C)Ã,C)c                  ó0  — dgdgdgdgg} t          dd¬¦  «                             | ¦  «        }t          |j        t          j        dddg¦  «         t          |j        ddt          j        t          j        g¦  «         t          |j        g d¢¦  «         d S )	Nr   r   iöÿÿÿé   r   é   ©rF   rH   r8   )r   rV   r   r‚   r'   rX   rƒ   r„   )ÚYrd   s     r-   Útest_processing_orderrá   ƒ  s”   € ð ˆˆrˆd�S�E˜B˜4Ð €Aå˜q¨"Ð-Ñ-Ô-×1Ò1°!Ñ4Ô4€EÝ�uÔ*­R¬V°R¸¸RÐ,@ÑAÔAÐAÝ�uÔ,¨r°2µr´v½r¼vÐ.FÑGÔGÐGÝ�u”¨¨¨Ñ5Ô5Ð5Ð5Ð5r/   c                  ód  — g t           j        ‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d	‘d	‘d
‘d
‘d
‘d	‘d	‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d ‘d‘d!‘d"‘d#‘d$‘d%‘d%‘d%‘d%‘d&‘d&‘d&‘d'‘} g d(¢}g d)¢}t          d*¬+¦  «                             t          ¦  «        }t          |j        t          j        |¦  «        ¦  «         t          |j        |j                 t          j        |¦  «        ¦  «         t          |j
        |j                 t          j        | ¦  «        ¦  «         |j        d,d …         D ]+}|j
        |         |j        |j        |                  k    sJ ‚Œ,g t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d-‘t           j        ‘d.‘d‘d‘d‘d‘d/‘d‘d‘d‘t           j        ‘d	‘d	‘d
‘d
‘d
‘d	‘d	‘d‘d0‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘}g d1¢}g d2¢}t          d*d3¬4¦  «                             t          ¦  «        }t          |j        t          j        |¦  «        ¦  «         t          |j        |j                 t          j        |¦  «        ¦  «         t          |j
        |j                 t          j        |¦  «        ¦  «         t          j        |j        d3k    ¦  «        d5         }	t          |j        |	         |j        |	         ¦  «         d S )6NgÕÓ@zëð?g­¯N	Hè?gÞ‡~NTç?gšu™õå?gæµ”åE²í?g#íšrýËò?gÜž™„2¯
@g`ÒzÁß?gP{¾
„VÐ?gØ:×“ÚíÏ?g}~ aÁÓ?gÊ$Ôáï¦@gÐ°{änøù?göŒ Ý?g€ŒuûºLÐ?gÀ»*æëÙÌ?g$¼ý&È?gÛÐ{æ˜PÇ?gÔê¦x²¬Ì?g\xð·*xò?gù~)ÔN{õ?göÞe’E,õ?go°¸F‹ë?g–Ç>E”kÑ?gPñÖRùÀ?g�ŒBåQ¹?g‚÷òªWÁ?gÃ@¸‹*Ä?g´r©2\kÆ?gúØhGÆ?g[Øœ]N†ã?g!ì´Lõ?gª´ƒá@g¿wÏc?�@g;¹Ã©fh@gK�!Q¡œ@gó,@ùM@gÄåZôvÄ@gr/É%ñA@)<r   r   r   r   r$   r0   r   rK   r   r   é   é   é    é"   é!   é&   é'   é#   é%   é$   é,   é   rÓ   é   é   rÝ   é   é   é   é   rC   é(   é-   é.   r   rÞ   rL   é   é   é   é   é   é   é   é/   é1   é+   é0   é*   é)   é5   é9   é3   é4   é8   é;   é6   é7   é:   rg   )<r   r   r   r   r   r   r0   r   r$   r   r   rã   rä   rä   ræ   ræ   ræ   rå   rå   rë   rì   rí   rî   rÓ   rï   rð   rÝ   rÝ   rð   rð   rð   rî   rõ   rö   r÷   r   rÞ   rÞ   rø   rø   rÞ   rL   rú   rÞ   r   rÿ   rü   rö   rþ   r  r  r  r  r  r  r  r
  r
  r
  r  r   )rF   r   gÄ9'Ê%Šß?g�ÉÎ–FÑ?gx»ôåÕôÇ?gÑ*üùÖ?)<r   r   r   r   r   r   r   r$   r0   rK   r   rÞ   rL   rø   rù   rú   rû   rü   rý   rþ   rÿ   r÷   rC   rð   rÝ   rÓ   rñ   rò   rï   ró   rô   rî   rä   rå   ræ   rç   rè   ré   rê   rë   rì   rã   rõ   r  r  r  rí   rö   r  r   rg   r  r  r  r  r  r	  r  r  r
  )<r   r   r   r   r   r   r   r   r   r   r   r   rÞ   rÞ   rø   rø   rÞ   rL   rú   rÞ   r   rÿ   r   rC   rð   rÝ   rÝ   rÝ   rÝ   rð   rð   rÓ   r   rä   rä   ræ   ræ   ræ   rå   rå   rë   rè   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rÀ   rß   r   )r'   rX   r   rV   rb   r   r„   r(   Úpredecessor_r   r‚   rƒ   Úwhere)
Úr1Úo1Úp1Úclust1r{   Úr2Úo2Úp2Úclust2Úindexs
             r-   Útest_compare_to_ELKIr  Ž  sH  € ð
=
Ý
Œð=
àð=
ð 	ð=
ð 	ð	=
ð
 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð  	ð!=
ð" 	ð#=
ð$ 	ð%=
ð& 	ð'=
ð( 	ð)=
ð* 	ð+=
ð, 	ð-=
ð. 	ð/=
ð0 	ð1=
ð2 	ð3=
ð4 	ð5=
ð6 	ð7=
ð8 	ð9=
ð: 	ð;=
ð< 	ð==
ð> 	ð?=
ð@ 	ðA=
ðB 	ðC=
ðD 	ðE=
ðF 	ðG=
ðH 	ðI=
ðJ 	ðK=
ðL 	ðM=
ðN 	ðO=
ðP 	ðQ=
ðR 	ðS=
ðT 	ðU=
ðV 	ðW=
ðX 	ðY=
ðZ 	ð[=
ð\ 	ð]=
ð^ 	ð_=
ð` 	ða=
ðb 	ðc=
ðd 	ðe=
ðf 	ðg=
ðh 	ði=
ðj 	ðk=
ðl 	ðm=
ðn 	ðo=
ðp 	ðq=
ðr 	ðs=
ðt 	ðu=
ðv 	ðw=
ðx 	ðy=
€Bð|=
ð =
ð =
€Bð|=
ð =
ð =
€BõD  Ð"Ñ"Ô"×&Ò&¥qÑ)Ô)€Få�vÔ'­¬°"©¬Ñ6Ô6Ð6Ý�vÔ*¨6Ô+;Ô<½b¼hÀr¹l¼lÑKÔKÐKÝ�FÔ(¨Ô)9Ô:½B¼HÀR¹L¼LÑIÔIÐIð Ô˜a˜b˜bÔ!ð Yð YˆØÔ# AÔ&¨&Ô*@ÀÔATÐUVÔAWÔ*XÒXÐXÐXÐXÐXð=
Ý
Œð=
å
Œð=
õ 	Œð=
õ 	Œð	=
õ
 	Œð=
õ 	Œð=
õ 	Œð=
õ 	Œð=
õ 	Œð=
õ 	Œð=
õ 	Œð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð  	ð!=
ð" 	ð#=
ð$ 	ð%=
ð& 	ð'=
ð( 	ð)=
ð* 	ð+=
ð, 	ð-=
õ. 	Œð/=
ð0 	ð1=
ð2 	ð3=
ð4 	ð5=
ð6 	ð7=
ð8 	ð9=
ð: 	ð;=
ð< 	ð==
ð> 	ð?=
ð@ 	ðA=
õB 	ŒðC=
ðD 	ðE=
ðF 	ðG=
ðH 	ðI=
ðJ 	ðK=
ðL 	ðM=
ðN 	ðO=
ðP 	ðQ=
ðR 	ðS=
ðT 	ðU=
õV 	ŒðW=
õX 	ŒðY=
õZ 	Œð[=
õ\ 	Œð]=
õ^ 	Œð_=
õ` 	Œða=
õb 	Œðc=
õd 	Œðe=
õf 	Œðg=
õh 	Œði=
õj 	Œðk=
õl 	Œðm=
õn 	Œðo=
õp 	Œðq=
õr 	Œðs=
õt 	Œðu=
õv 	Œðw=
õx 	Œðy=
€Bð|=
ð =
ð =
€Bð|=
ð =
ð =
€Bõ|  ¨3Ð/Ñ/Ô/×3Ò3µAÑ6Ô6€Få�vÔ'­¬°"©¬Ñ6Ô6Ð6Ý�vÔ*¨6Ô+;Ô<½b¼hÀr¹l¼lÑKÔKÐKÝ�FÔ(¨Ô)9Ô:½B¼HÀR¹L¼LÑIÔIÐIåŒH�VÔ+¨sÒ2Ñ3Ô3°AÔ6€EÝ�FÔ*¨5Ô1°6Ô3IÈ%Ô3PÑQÔQÐQÐQÐQr/   c           	      ón  — t           j                             |¦  «        }d}ddgd|                     |d¦  «        z  z   }ddgd|                     |d¦  «        z  z   }ddgd|                     |d¦  «        z  z   }dd	gd|                     |d¦  «        z  z   }t          j        ||||f¦  «                             | d
¬¦  «        }t          dd¬¦  «                             |¦  «        }	t          t          j	        t          j
        |	j        |	j        dk             ¦  «        ¦  «        g d¢¦  «         d S )NrC   r   r   r   r   r   r   r   r   Fr?   r˜   rÀ   )rI   rš   r8   )r'   rP   rQ   rR   rS   rT   r   rV   r   ÚsortÚuniquerW   )
rY   rm   rZ   r[   r\   r]   r^   r_   rb   rd   s
             r-   Útest_extract_dbscanr     s:  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØÐØ
ˆbˆ�C˜#Ÿ)š)Ð$8¸!Ñ<Ô<Ñ<Ñ	<€BØ
ˆRˆ�3˜ŸšÐ#7¸Ñ;Ô;Ñ;Ñ	;€BØ
ˆQˆ�#˜Ÿ	š	Ð"6¸Ñ:Ô:Ñ:Ñ	:€BØ
ˆaˆ�3˜ŸšÐ#7¸Ñ;Ô;Ñ;Ñ	;€BÝ
Œ	�2�r˜2˜rÐ"Ñ#Ô#×*Ò*¨<¸eÐ*ÑDÔD€Aå (°Ð4Ñ4Ô4×8Ò8¸Ñ;Ô;€EÝÝ
Œ•”	˜%œ-¨¬¸Ò(;Ô<Ñ=Ô=Ñ>Ô>ÀÀÀñô ð ð ð r/   c                 ó  — t           d d d…                              | d¬¦  «        }t          |d¬¦  «        }|� ||¦  «        n|}t          j        ¦   «         5  t          j        dt          ¦  «         t          ddd	¬
¦  «                             |¦  «        }d d d ¦  «         n# 1 swxY w Y   t          ddd¬
¦  «                             |¦  «        }t          |j
        |j
        ¦  «         t          |j        |j        ¦  «         d S )Nr   Fr?   rr   r¨   r±   r   ÚbruteÚprecomputed)rF   Ú	algorithmrz   )rb   rT   r   r«   r¬   r­   r
   r   rV   r   r‚   r   rW   )rY   r†   rÖ   Údistsr  r  s         r-   Útest_precomputed_distsr#  1  s?  € åˆSˆSˆqˆSŒ6�=Š=˜¨Eˆ=Ñ2Ô2€DÝ˜t¨KÐ8Ñ8Ô8€EØ$1Ð$=ˆMˆM˜%Ñ Ô Ð À5€EÝ	Ô	 Ñ	"Ô	"ð 
ð 
ÝÔ˜hÕ(9Ñ:Ô:Ð:Ý B°'À-ÐPÑPÔP×TÒTØñ
ô 
ˆð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ
  ¨g¸kÐJÑJÔJ×NÒNÈtÑTÔT€Få�FÔ(¨&Ô*>Ñ?Ô?Ð?Ý�v”~ v¤~Ñ6Ô6Ð6Ð6Ð6s   ÁA B%Â%B)Â,B)c                 ó  — t           j                             |¦  «                             dd¦  «        }t          j        |d¦  «          | |¦  «        }t          d„ t          |                     ¦   «         Ž D ¦   «         ¦  «        sJ ‚|                     ¦   «         }t          d¬¦  «         
                    |¦  «         |j        |j        k    sJ ‚t          |                     ¦   «         |                     ¦   «         ¦  «         dS )z£Check that we don't modify in-place the pre-computed sparse matrix.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/27508
    r   r   c              3   ó(   K  — | ]\  }}||k    V — Œd S r:   rs   )ru   ÚrowÚcols      r-   ú	<genexpr>zKtest_optics_input_not_modified_precomputed_sparse_nodiag.<locals>.<genexpr>O  s*   è è € Ð<Ð<™h˜c 3ˆs�cŠzÐ<Ð<Ð<Ð<Ð<Ð<r/   r   r¨   N)r'   rP   rQ   ÚrandÚfill_diagonalÚallÚzipÚnonzeror@   r   rV   Únnzr   Útoarray)r†   rm   rb   ÚX_copys       r-   Ú8test_optics_input_not_modified_precomputed_sparse_nodiagr1  A  sé   € õ 	Œ	×ÒÐ0Ñ1Ô1×6Ò6°q¸!Ñ<Ô<€Aõ Ô�Q˜ÑÔÐØˆ�aÑÔ€AÝÐ<Ð<­#¨q¯yªy©{¬{Ð*;Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ø�VŠV‰XŒX€FÝ
�-Ð Ñ Ô ×$Ò$ QÑ'Ô'Ð'ð Œ5�F”JÒÐÐÐÝ�q—y’y‘{”{ F§N¢NÑ$4Ô$4Ñ5Ô5Ð5Ð5Ð5r/   c                  óB  — t          j        g d¢¦  «                             dd¦  «        } g d¢}| |         }t          dd¬¦  «                             | ¦  «        }t          dd¬¦  «                             |¦  «        }t          |j        |         |j        ¦  «         dS )	aƒ  Check that cluster correction using predecessor is working as expected.

    In the following example, the predecessor correction was not working properly
    since it was not using the right indices.

    This non-regression test check that reordering the data does not change the results.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/26324
    )r   r   r   r   r0   r0   r$   r>   r   r   )r   r   r   r   r   r   r$   r   r   rr   )rF   rz   N)r'   r(   Úreshaper   rV   r   rW   )ÚX_1ÚreorderÚX_2Úoptics_1Úoptics_2s        r-   Ú+test_optics_predecessor_correction_orderingr9  X  sŸ   € õ Œ(Ð-Ð-Ð-Ñ
.Ô
.×
6Ò
6°r¸1Ñ
=Ô
=€CØ&Ð&Ð&€GØ
ˆgŒ,€Cå !¨KÐ8Ñ8Ô8×<Ò<¸SÑAÔA€HÝ !¨KÐ8Ñ8Ô8×<Ò<¸SÑAÔA€Hå�xÔ'¨Ô0°(Ô2BÑCÔCÐCÐCÐCr/   )Er«   Únumpyr'   r�   Úsklearn.clusterr   r   Úsklearn.cluster._opticsr   r   Úsklearn.cluster.tests.commonr   Úsklearn.datasetsr   Úsklearn.exceptionsr	   r
   Úsklearn.metrics.clusterr   Úsklearn.metrics.pairwiser   Úsklearn.utilsr   Úsklearn.utils._testingr   r   Úsklearn.utils.fixesr   rP   rQ   rZ   r[   rR   r\   r]   r^   r_   r`   ra   rS   rb   ÚmarkÚparametrizerX   r.   r4   r<   re   rn   rˆ   r‘   r�   r¡   r¯   r¸   r¼   r¿   rÎ   rÒ   r…   rk   rÙ   rÛ   rá   r  r  r#  r1  r9  rs   r/   r-   ú<module>rG     sz  ðð €€€à Ð Ð Ð Ø €€€à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ @Ð @Ð @Ð @Ð @Ð @Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø !Ð !Ð !Ð !Ð !Ð !Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ .Ð .Ð .Ð .Ð .Ð .à„i×Ò˜AÑÔ€ØÐ Øˆ"€X��c—i’iÐ 4°aÑ8Ô8Ñ8Ñ8€Øˆ€Wˆs�S—Y’YÐ3°QÑ7Ô7Ñ7Ñ7€Øˆ€Wˆs�S—Y’YÐ3°QÑ7Ô7Ñ7Ñ7€Øˆ!€Wˆs�S—Y’YÐ3°QÑ7Ô7Ñ7Ñ7€Øˆ€Wˆs�S—Y’YÐ3°QÑ7Ô7Ñ7Ñ7€Øˆ€Vˆa�#—)’)Ð0°!Ñ4Ô4Ñ4Ñ4€Ø€B„Iˆr�2�r˜2˜r 2Ð&Ñ'Ô'€ð „×ÒØà	#Ð	#Ð	# QÐ'Ø	(Ð	(Ð	(¨!Ð,Ø
ˆc�3˜˜Q  2¤6Ð	*¨AÐ.Ø
ˆc�3˜˜Q  2¤6Ð	*¨AÐ.ð	ñô ðð ñô ðð „×ÒØà
ˆQ��S˜!˜Q  2¤6Ð	*¨AÐ.Ø
ˆQ��S˜#˜q ! Q¨¬Ð	/°Ð3Ø
ˆQ��Q˜œÐ	 Ð#Ø
ˆQ��R”VÐ	˜aÐ ð	ñô ðð ñô ðð „×ÒØ(à	ˆˆ˜˜A˜  A Ð'¨¨¨Ð6Ø	ˆˆ˜˜A˜  A Ð'¨¨¨Ð7Ø	ˆˆ˜˜A˜  A ¨¨A¨Ð/°°°Ð?Ø	ˆˆ˜˜A˜  A ¨¨A¨Ð/°°°Ð?ð	ñô ð)ð )ñô ð)ð87ð 87ð 87ðv,ð ,ð ,ð, „×ÒØØÐÐVÐVÀ~ÐVÑVÔVÑVñô ð6ð 6ñ	ô ð6ð8
ð 
ð 
ðð ð ð	ð 	ð 	ð.ð .ð .ð%ð %ð %ð*2ð 2ð 2ð #ð #ð #ð „×Ò˜   Ñ0Ô0Ø„×Ò˜¨¨¨Ñ4Ô4Ø„×ÒØØÐ-Ð.Ø@Ð@°Ð@Ñ@Ô@ñAñô ð
$ð $ñô ñ 5Ô4ñ 1Ô0ð$ð>;ð ;ð ;ð* „×ÒÐ+¨U¨U°1°a´g¸a´jÀBÑ6FÈÑ-KÔ-KÑLÔLð:ð :ñ MÔLð:ð „×Ò˜¨.Ñ9Ô9ð$ð $ñ :Ô9ð$ð6ð 6ð 6ðORð ORð ORðdð ð ð" „×Ò˜¨4¨&°>Ñ*AÑBÔBð7ð 7ñ CÔBð7ð „×Ò˜¨.Ñ9Ô9ð6ð 6ñ :Ô9ð6ð,Dð Dð Dð Dð Dr/   