Ë
    ÷Q(h©j  ã                   óB  — d Z 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
mZ ddlmZ ddlmZ ddlmZmZmZmZ ddlmZ dd	lmZmZ dd
lmZmZmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/ ddl0m1Z1m2Z2m3Z3  ejh                  «       Z5e5jl                  dd…dd…f   e5jn                  cZ8Z9 e%«       ju                  e8«      Z; ejx                  d¬«      \  Z=Z>ej~                  j�                  ddg idfd e«       fgddgdœdfg«      d„ «       ZAd„ ZBd „ ZCd!„ ZDd"„ ZEd#„ ZFd$„ ZGd%„ ZHd&„ ZId'„ ZJd(„ ZKd)„ ZLej~                  j›                  d*«      d+„ «       ZNd,„ ZOd-„ ZPd.„ ZQd/„ ZRd0„ ZSej~                  j�                  d1e8e9 ed e«       fd2 ed3¬4«      fg«      fe=e> ed e«       fd2 ed3¬4«      fg«      fg«      d5„ «       ZTej~                  j�                  d6 ed e«       fd7 e/d¬8«      fg¬9«       ed ed¬8«      fd7 e.d¬8«      fg¬9«      gd:d;g¬<«      d=„ «       ZUej~                  j�                  d> ed e«       fd2 ed?¬8«      fgd¬@«       ed ed?¬8«      fd2 ed?¬8«      fgd¬@«      g«      dA„ «       ZVdB„ ZWej~                  j�                  dCdDddEœg dF¢fdGdHidIdJgfg«      dK„ «       ZXdL„ ZYej~                  j�                  dMee)fee*fg«      dN„ «       ZZej~                  j�                  dMee)fee*fg«       ed¬O«      dP„ «       «       Z[ej~                  j�                  dMee)fee*fg«      ej~                  j�                  dQdRdSg«       ed¬O«      dT„ «       «       «       Z\ej~                  j�                  dMee)fee*fg«       ed¬O«      dU„ «       «       Z]y)Vz4Testing for the VotingClassifier and VotingRegressoré    N)Úconfig_contextÚdatasets)ÚBaseEstimatorÚClassifierMixinÚclone)Úmake_multilabel_classification)ÚDummyRegressor)ÚRandomForestClassifierÚRandomForestRegressorÚVotingClassifierÚVotingRegressor)ÚNotFittedError)ÚLinearRegressionÚLogisticRegression)ÚGridSearchCVÚcross_val_scoreÚtrain_test_split)ÚOneVsRestClassifier)Ú
GaussianNB)ÚKNeighborsClassifier)ÚStandardScaler)ÚSVC)ÚConsumingClassifierÚConsumingRegressorÚ	_RegistryÚcheck_recorded_metadata)ÚDecisionTreeClassifierÚDecisionTreeRegressor)Úassert_almost_equalÚassert_array_almost_equalÚassert_array_equalé   é   T)Ú
return_X_yzparams, err_msgÚ
estimatorszGInvalid 'estimators' attribute, 'estimators' should be a non-empty listÚlré   )r%   Úweightsz0Number of `estimators` and weights must be equalc                 ó®   — t        di | ¤Ž}t        j                  t        |¬«      5  |j	                  t
        t        «       d d d «       y # 1 sw Y   y xY w)N©Úmatch© )r   ÚpytestÚraisesÚ
ValueErrorÚfitÚXÚy)ÚparamsÚerr_msgÚensembles      ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/ensemble/tests/test_voting.pyÚ%test_voting_classifier_estimator_initr7   0   sB   € ô  Ñ) &Ñ)€HÜ	�‰”z¨Ô	1ñ Ø�‰”QœÔ÷÷ ñ ús   §AÁAc                  óÈ  — t        dt        «       fdt        «       fgd¬«      } d}d}t        j                  t        |¬«      5 }| j
                   d d d «       t        j                  j                  t        «      sJ ‚|t        |j                  j                  «      v sJ ‚t        | d«      rJ ‚| j                  t        t        «       t        | d«      rJ ‚y # 1 sw Y   Œ‰xY w)	NÚlr1Úlr2Úhard©r%   Úvotingú1predict_proba is not available when voting='hard'ú3'VotingClassifier' has no attribute 'predict_proba'r*   Úpredict_proba)r   r   r-   r.   ÚAttributeErrorr@   Ú
isinstanceÚvalueÚ	__cause__ÚstrÚhasattrr0   ÚX_scaledr2   )ÚeclfÚ	inner_msgÚ	outer_msgÚ	exec_infos       r6   Útest_predictproba_hardvotingrL   C   sÌ   € ÜØÔ.Ó0Ð1°EÔ;MÓ;OÐ3PÐQØô€Dð
 D€IØE€IÜ	�‰”~¨YÔ	7ð ¸9Ø×Ò÷ä�i—o‘o×/Ñ/´Ô@Ð@Ð@Øœ˜IŸO™O×5Ñ5Ó6Ñ6Ð6Ð6ä�t˜_Ô-Ð-Ð-Ø‡H�HŒX”qÔÜ�t˜_Ô-Ð-Ð-Ð-÷ð ús   ÁCÃC!c                  óJ  — t        dt        «       fdt        «       fgd¬«      } t        dt        «       fg«      }d}t	        j
                  t        |dz  ¬«      5  | j                  t        «       d d d «       t	        j
                  t        |dz  ¬«      5  | j                  t        «       d d d «       t	        j
                  t        |dz  ¬«      5  | j                  t        «       d d d «       t	        j
                  t        |d	z  ¬«      5  |j                  t        «       d d d «       t	        j
                  t        |d	z  ¬«      5  |j                  t        «       d d d «       y # 1 sw Y   ŒúxY w# 1 sw Y   ŒÊxY w# 1 sw Y   ŒšxY w# 1 sw Y   ŒjxY w# 1 sw Y   y xY w)
Nr9   r:   Úsoftr<   ÚdrzfThis %s instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.r   r*   r   )r   r   r   r	   r-   r.   r   Úpredictr1   r@   Ú	transformÚX_r)rH   ÚeregÚmsgs      r6   Útest_notfittedrU   U   s\  € ÜØÔ.Ó0Ð1°EÔ;MÓ;OÐ3PÐQØô€Dô ˜T¤>Ó#3Ð4Ð5Ó6€Dð	Cð ô 
�‰”~¨SÐ3EÑ-EÔ	Fñ Ø�‰”QŒ÷ä	�‰”~¨SÐ3EÑ-EÔ	Fñ Ø×Ñœ1Ô÷ä	�‰”~¨SÐ3EÑ-EÔ	Fñ Ø�‰”qÔ÷ä	�‰”~¨SÐ3DÑ-DÔ	Eñ Ø�‰”SÔ÷ä	�‰”~¨SÐ3DÑ-DÔ	Eñ Ø�‰”sÔ÷ð ÷ð ú÷ð ú÷ð ú÷ð ú÷ð ús<   ÁE)ÂE5ÃFÄFÅ
FÅ)E2Å5E>ÆF
ÆFÆF"c                 óÐ   — t        d| ¬«      }t        d| ¬«      }t        «       }t        d|fd|fd|fgd¬	«      }t	        |t
        t        d
¬«      }|j                  «       dk\  sJ ‚y)z7Check classification by majority label on dataset iris.Ú	liblinear)ÚsolverÚrandom_stateé
   ©Ún_estimatorsrY   r&   ÚrfÚgnbr;   r<   Úaccuracy©ÚscoringçÍÌÌÌÌÌì?N)r   r
   r   r   r   r1   r2   Úmean©Úglobal_random_seedÚclf1Úclf2Úclf3rH   Úscoress         r6   Útest_majority_label_irisrj   k   sk   € ä [Ð?QÔR€DÜ!¨rÐ@RÔS€DÜ‹<€DÜØ˜4�L 4¨ ,°¸°Ð>Àvô€Dô ˜T¤1¤a°Ô<€Fà�;‰;‹=˜CÒÐÑó    c                  óš  — t        dd¬«      } t        d¬«      }t        d| fd|fgd¬«      }| j                  t        t
        «      j                  t        «      d	   d
k(  sJ ‚|j                  t        t
        «      j                  t        «      d	   dk(  sJ ‚|j                  t        t
        «      j                  t        «      d	   dk(  sJ ‚y)zECheck voting classifier selects smaller class label in tie situation.é{   rW   )rY   rX   ©rY   r&   r]   r;   r<   éI   r'   r"   N)r   r
   r   r0   r1   r2   rP   )rf   rg   rH   s      r6   Útest_tie_situationrp   x   s©   € ä¨3°{ÔC€DÜ!¨sÔ3€DÜ¨¨t¨°t¸T°lÐ'CÈFÔS€DØ�8‰8”A”q‹>×!Ñ!¤!Ó$ RÑ(¨AÒ-Ð-Ð-Ø�8‰8”A”q‹>×!Ñ!¤!Ó$ RÑ(¨AÒ-Ð-Ð-Ø�8‰8”A”q‹>×!Ñ!¤!Ó$ RÑ(¨AÒ-Ð-Ñ-rk   c                 óÔ   — t        | ¬«      }t        d| ¬«      }t        «       }t        d|fd|fd|fgdg d¢¬	«      }t	        |t
        t        d
¬«      }|j                  «       dk\  sJ ‚y)z>Check classification by average probabilities on dataset iris.rn   rZ   r[   r&   r]   r^   rN   ©r"   r'   rZ   ©r%   r=   r(   r_   r`   rb   N)r   r
   r   r   r   rG   r2   rc   rd   s         r6   Útest_weights_irisrt   ‚   sm   € äÐ+=Ô>€DÜ!¨rÐ@RÔS€DÜ‹<€DÜØ˜4�L 4¨ ,°¸°Ð>ØÚô€Dô
 ˜T¤8¬Q¸
ÔC€FØ�;‰;‹=˜CÒÐÑrk   c                  ó<  — t        d¬«      } t        d¬«      }t        dd¬«      }t        d| fd|fd|fgg d¢¬«      }t        t        t        d	¬
«      \  }}}}| j                  ||«      j                  |«      }|j                  ||«      j                  |«      }	|j                  ||«      j                  |«      }
|j                  ||«      j                  |«      }t        j                  t        j                  ||	|
g«      dg d¢¬«      }t        ||d¬«       t        d| fd|fd|fgd¬«      }t        d| fd|fd|fgg d¢¬«      }|j                  ||«       |j                  ||«       |j                  |«      }|j                  |«      }t        ||d¬«       y)zACheck weighted average regression prediction on diabetes dataset.rc   )ÚstrategyÚmedianÚquantileçš™™™™™É?)rv   rx   rr   )r(   g      Ð?)Ú	test_sizer   )Úaxisr(   r'   ©ÚdecimalN©r"   r"   r"   )r	   r   r   rR   Úy_rr0   rP   ÚnpÚaverageÚasarrayr   )Úreg1Úreg2Úreg3rS   Ú	X_r_trainÚX_r_testÚ	y_r_trainÚy_r_testÚ	reg1_predÚ	reg2_predÚ	reg3_predÚ	ereg_predÚavgÚereg_weights_noneÚereg_weights_equalÚereg_none_predÚereg_equal_preds                    r6   Útest_weights_regressorr“   �   sž  € ä 6Ô*€DÜ 8Ô,€DÜ :¸Ô<€DÜØ
�$ˆ˜( DÐ)¨J¸Ð+=Ð>Ê
ô€Dô 0@ÜŒS˜Dô0Ñ,€Iˆx˜ Hð —‘˜ IÓ.×6Ñ6°xÓ@€IØ—‘˜ IÓ.×6Ñ6°xÓ@€IØ—‘˜ IÓ.×6Ñ6°xÓ@€IØ—‘˜ IÓ.×6Ñ6°xÓ@€Iä
�*‰*Ü
�
‰
�I˜y¨)Ð4Ó5¸AÂzô€Cô ˜	 3°Õ2ä'Ø
�$ˆ˜( DÐ)¨J¸Ð+=Ð>ÈôÐô )Ø
�$ˆ˜( DÐ)¨J¸Ð+=Ð>Ê	ôÐð ×Ñ˜) YÔ/Ø×Ñ˜9 iÔ0Ø&×.Ñ.¨xÓ8€NØ(×0Ñ0°Ó:€OÜ˜¨ÀÖCrk   c           	      óì  — t        | ¬«      }t        d| ¬«      }t        «       }t        j                  ddgddgdd	gd
dgddgddgg«      }t        j                  g d¢«      }t        |j                  ||«      j                  |«      g d¢«       t        |j                  ||«      j                  |«      g d¢«       t        |j                  ||«      j                  |«      g d¢«       t        d|fd|fd|fgdg d¢¬«      }t        |j                  ||«      j                  |«      g d¢«       t        d|fd|fd|fgdg d¢¬«      }t        |j                  ||«      j                  |«      g d¢«       y)z6Manually check predicted class labels for toy dataset.rn   rZ   r[   çš™™™™™ñ¿ç      ø¿ç333333ó¿çffffffö¿ç333333Àçš™™™™™Àçš™™™™™ñ?ç333333ó?gÍÌÌÌÌÌ @gffffffö?gÍÌÌÌÌÌ@gffffff@)r"   r"   r"   r'   r'   r'   r&   r]   r^   r;   r~   rs   rN   N)	r   r
   r   r€   Úarrayr!   r0   rP   r   )re   rf   rg   rh   r1   r2   rH   s          r6   Útest_predict_on_toy_problemrž   ´   sY  € äÐ+=Ô>€DÜ!¨rÐ@RÔS€DÜ‹<€Dä
�‰Ø
�ˆ˜˜d�| d¨D \°C¸°:ÀÀS¸zÈCÐQTÈ:ÐVó	€Aô 	�‰Ò#Ó$€Aä�t—x‘x  1“~×-Ñ-¨aÓ0Ò2DÔEÜ�t—x‘x  1“~×-Ñ-¨aÓ0Ò2DÔEÜ�t—x‘x  1“~×-Ñ-¨aÓ0Ò2DÔEäØ˜4�L 4¨ ,°¸°Ð>ØÚô€Dô
 �t—x‘x  1“~×-Ñ-¨aÓ0Ò2DÔEäØ˜4�L 4¨ ,°¸°Ð>ØÚô€Dô
 �t—x‘x  1“~×-Ñ-¨aÓ0Ò2DÕErk   c                  óú  — t        d¬«      } t        d¬«      }t        «       }t        j                  ddgddgddgd	d
gg«      }t        j                  g d¢«      }t        j                  ddgddgddgddgg«      }t        j                  ddgddgddgddgg«      }t        j                  ddgddgddgddgg«      }d|d   d   z  |d   d   z   |d   d   z   d z  }d|d!   d!   z  |d!   d!   z   |d!   d!   z   d z  }	d|d   d!   z  |d   d!   z   |d   d!   z   d z  }
d|d"   d!   z  |d"   d!   z   |d"   d!   z   d z  }t        d#| fd$|fd%|fgd&g d'¢¬(«      }|j                  ||«      j                  |«      }t        ||d   d   d!¬)«       t        |	|d!   d!   d!¬)«       t        |
|d   d!   d!¬)«       t        ||d"   d!   d!¬)«       d*}d+}t        j                  t        |¬,«      5 }t        d#| fd$|fd%|fgd-¬.«      }|j                  ||«      j                  |«       d/d/d/«       t        j                  j                  t        «      sJ ‚|t        |j                  j                  «      v sJ ‚y/# 1 sw Y   ŒSxY w)0z1Calculate predicted probabilities on toy dataset.rm   rn   r•   r–   r—   r˜   r™   rš   r›   rœ   ©r"   r"   r'   r'   g…7sa"ã?gö�=ñ»Ù?g�½¤Rhpâ?gâ„¶Z/Û?glç^Ô¬;à?g(1BW¦ˆß?gµU(V6ÁÙ?g&ÕëÔdã?gš™™™™™é?ry   ç333333Ó?çffffffæ?gá5ùwÇóï?g9=”qX?gè_óï?g$ö/ÐAY?ç        ç      ð?r'   r   é   r"   r#   r&   r]   r^   rN   )r'   r"   r"   rs   r|   r>   r?   r*   r;   r<   N)r   r
   r   r€   r�   r   r0   r@   r   r-   r.   rA   rB   rC   rD   rE   )rf   rg   rh   r1   r2   Úclf1_resÚclf2_resÚclf3_resÚt00Út11Út21Út31rH   Úeclf_resrI   rJ   rK   s                    r6   Ú!test_predict_proba_on_toy_problemr®   Ó   sÖ  € ä¨3Ô/€DÜ!¨sÔ3€DÜ‹<€DÜ
�‰�4˜�,  t ¨t°T¨l¸SÀ#¸JÐGÓH€AÜ
�‰’Ó€Aä�x‰xà˜Ð$Ø˜Ð$Ø˜Ð$Ø˜Ð$ð		
ó€Hô �x‰x˜#˜s˜ c¨3 Z°#°s°¸cÀ3¸ZÐHÓI€Hä�x‰xØ
�YÐ	 *¨jÐ!9¸CÀ¸:ÈÈSÀzÐRó€Hð ˆx˜‰{˜1‰~Ñ ¨¡¨A¡Ñ.°¸!±¸Q±Ñ?À1Ñ
D€CØˆx˜‰{˜1‰~Ñ ¨¡¨A¡Ñ.°¸!±¸Q±Ñ?À1Ñ
D€CØˆx˜‰{˜1‰~Ñ ¨¡¨A¡Ñ.°¸!±¸Q±Ñ?À1Ñ
D€CØˆx˜‰{˜1‰~Ñ ¨¡¨A¡Ñ.°¸!±¸Q±Ñ?À1Ñ
D€CäØ˜4�L 4¨ ,°¸°Ð>ØÚô€Dð
 �x‰x˜˜1‹~×+Ñ+¨AÓ.€Hä˜˜X a™[¨™^°QÕ7Ü˜˜X a™[¨™^°QÕ7Ü˜˜X a™[¨™^°QÕ7Ü˜˜X a™[¨™^°QÕ7àC€IØE€IÜ	�‰”~¨YÔ	7ð (¸9ÜØ˜t˜ t¨T l°U¸D°MÐBÈ6ô
ˆð 	�‰��A‹×$Ñ$ QÔ'÷	(ô �i—o‘o×/Ñ/´Ô@Ð@Ð@Øœ˜IŸO™O×5Ñ5Ó6Ñ6Ð6Ñ6÷(ð (ús   Ç'8I1É1I:c                  ó¶   — t        dddd¬«      \  } }t        t        d¬«      «      }t        d|fgd	¬
«      }	 |j	                  | |«       y# t
        $ r Y yw xY w)z7Check if error is raised for multilabel classification.r'   r"   Frm   )Ú	n_classesÚn_labelsÚallow_unlabeledrY   Úlinear)ÚkernelÚovrr;   r<   N)r   r   r   r   r0   ÚNotImplementedError)r1   r2   ÚclfrH   s       r6   Útest_multilabelr¸     s`   € ä)Ø˜a°ÀSô�D€A€qô œc¨Ô2Ó
3€Cä¨°¨ ~¸fÔE€DðØ�‰��A�øÜò Ùðús   ¹A Á	AÁAc                  óæ   — t        d¬«      } t        dd¬«      }t        «       }t        d| fd|fd|fgd¬	«      }d
dgddgg d¢g d¢gdœ}t	        ||d¬«      }|j                  t        t        «       y)zCheck GridSearch support.r"   rn   r#   )rY   r\   r&   r]   r^   rN   r<   r¤   g      Y@r;   )ç      à?rº   rº   )r¤   rº   rº   )Úlr__Cr=   r(   r'   )Ú	estimatorÚ
param_gridÚcvN)r   r
   r   r   r   r0   rG   r2   )rf   rg   rh   rH   r3   Úgrids         r6   Útest_gridsearchrÀ     s   € ä¨1Ô-€DÜ!¨q¸qÔA€DÜ‹<€DÜØ˜4�L 4¨ ,°¸°Ð>Àvô€Dð
 �u�Ø˜6Ð"Ú#¢_Ð5ñ€Fô  $°6¸aÔ@€DØ‡H�HŒX”qÕrk   c                 óþ  — t        | ¬«      }t        d| ¬«      }t        «       }t        j                  ddgddgdd	gd
dgg«      }t        j                  g d¢«      }t        d|fd|fd|fgdd¬«      j                  ||«      }t        d|fd|fd|fgdd¬«      j                  ||«      }t        |j                  |«      |j                  |«      «       t        |j                  |«      |j                  |«      «       y)z:Check parallel backend of VotingClassifier on toy dataset.rn   rZ   r[   r•   r–   r—   r˜   r™   rš   r›   rœ   r    r&   r]   r^   rN   r"   )r%   r=   Ún_jobsr'   N)r   r
   r   r€   r�   r   r0   r!   rP   r    r@   )re   rf   rg   rh   r1   r2   Úeclf1Úeclf2s           r6   Útest_parallel_fitrÅ   )  sü   € äÐ+=Ô>€DÜ!¨rÐ@RÔS€DÜ‹<€DÜ
�‰�4˜�,  t ¨t°T¨l¸SÀ#¸JÐGÓH€AÜ
�‰’Ó€AäØ˜4�L 4¨ ,°¸°Ð>ÀvÐVWôç	�cˆ!ˆQƒið 
ô Ø˜4�L 4¨ ,°¸°Ð>ÀvÐVWôç	�cˆ!ˆQƒið 
ô �u—}‘} QÓ'¨¯©°qÓ)9Ô:Ü˜e×1Ñ1°!Ó4°e×6IÑ6IÈ!Ó6LÕMrk   zignore::FutureWarningc           	      óŒ  — t        | ¬«      }t        d| ¬«      }t        d| ¬«      }t        d|fd|fd|fgd	¬
«      j	                  t
        t        t        j                  t        t        «      f«      ¬«      }t        d|fd|fd|fgd	¬
«      j	                  t
        t        «      }t        |j                  t
        «      |j                  t
        «      «       t        |j                  t
        «      |j                  t
        «      «       t        j                  j                  | «      j!                  t        t        «      f¬«      }t        d|fgd	¬
«      }|j	                  t
        t        |«       |j	                  t
        t        |«       t        |j                  t
        «      |j                  t
        «      «       t        |j                  t
        «      |j                  t
        «      «       t#        «       }t        d|fd|fd|fgd	¬
«      }d}	t%        j&                  t(        |	¬«      5  |j	                  t
        t        |«       ddd«        G d„ dt*        t,        «      }
 |
«       }t%        j&                  t(        d¬«      5  |j	                  t
        t        |¬«       ddd«       y# 1 sw Y   ŒexY w# 1 sw Y   yxY w)z1Tests sample_weight parameter of VotingClassifierrn   rZ   r[   T)ÚprobabilityrY   r&   r]   ÚsvcrN   r<   ©Úsample_weight)ÚsizeÚknnzJUnderlying estimator KNeighborsClassifier does not support sample weights.r*   Nc                   ó   — e Zd Zd„ Zy)ú.test_sample_weight.<locals>.ClassifierErrorFitc                 ó   — t        d«      ‚)Nz!Error unrelated to sample_weight.)Ú	TypeError)ÚselfrG   r2   rÊ   s       r6   r0   z2test_sample_weight.<locals>.ClassifierErrorFit.fitc  s   € ÜÐ?Ó@Ð@rk   N)Ú__name__Ú
__module__Ú__qualname__r0   r,   rk   r6   ÚClassifierErrorFitrÎ   b  s   „ ó	Ark   rÕ   z Error unrelated to sample_weight)r   r
   r   r   r0   rG   r2   r€   ÚonesÚlenr!   rP   r    r@   ÚrandomÚRandomStateÚuniformr   r-   r.   rÐ   r   r   )re   rf   rg   rh   rÃ   rÄ   rÊ   Úeclf3Úclf4rT   rÕ   r·   s               r6   Útest_sample_weightrÝ   =  s:  € ô Ð+=Ô>€DÜ!¨rÐ@RÔS€DÜ˜4Ð.@ÔA€DÜØ˜4�L 4¨ ,°¸°Ð>Àvôç	�cŒ(”A¤R§W¡W¬c´!«f¨YÓ%7€cÓ8ð 
ô Ø˜4�L 4¨ ,°¸°Ð>Àvôç	�cŒ(”AÓð 
ô �u—}‘}¤XÓ.°·±¼hÓ0GÔHÜØ×ÑœHÓ% u×':Ñ':¼8Ó'Dôô —I‘I×)Ñ)Ð*<Ó=×EÑEÌCÔPQËFÈ9ÐEÓU€MÜ¨$°¨¨¸vÔF€EØ	‡I�IŒhœ˜=Ô)Ø‡H�HŒX”q˜-Ô(Ü�u—}‘}¤XÓ.°·±¼XÓ0FÔGÜØ×ÑœHÓ% t×'9Ñ'9¼(Ó'Côô  Ó!€DÜØ˜4�L 5¨$ -°%¸°Ð?Èô€Eð W€CÜ	�‰”y¨Ô	,ñ .Ø�	‰	”(œA˜}Ô-÷.ô
Aœ_¬mô Añ Ó
€CÜ	�‰”yÐ(JÔ	Kñ :Ø�‰”œ!¨=ˆÔ9÷:ð :÷.ð .ú÷:ð :ús   È.J.ÊJ:Ê.J7Ê:Kc            	      óÔ   —  G d„ dt         t        «      }  | «       }t        d|fgd¬«      }|j                  t        t
        t        j                  t        t
        «      f«      ¬«       y)z:Check that VotingClassifier passes sample_weight as kwargsc                   ó   — e Zd ZdZd„ Zy)ú1test_sample_weight_kwargs.<locals>.MockClassifierzAMock Classifier to check that sample_weight is received as kwargsc                 ó   — d|v sJ ‚y )NrÊ   r,   )rÑ   r1   r2   ÚargsrÊ   s        r6   r0   z5test_sample_weight_kwargs.<locals>.MockClassifier.fitq  s   € Ø" mÑ3Ð3Ñ3rk   N)rÒ   rÓ   rÔ   Ú__doc__r0   r,   rk   r6   ÚMockClassifierrà   n  s
   „ ÙOó	4rk   rä   ÚmockrN   r<   rÉ   N)	r   r   r   r0   r1   r2   r€   rÖ   r×   )rä   r·   rH   s      r6   Útest_sample_weight_kwargsræ   k  sO   € ô4œ¬-ô 4ñ Ó
€CÜ¨°¨ ¸vÔF€Dð 	‡H�HŒQ”¤§¡¬#¬a«&¨Ó!3€HÕ4rk   c                 ó¼  — t        | ¬«      }t        d| d ¬«      }t        «       }t        d|fd|fgdddg¬	«      j	                  t
        t        «      }t        d|fd
|fgdddg¬	«      }|j                  |¬«      j	                  t
        t        «       t        |j                  t
        «      |j                  t
        «      «       t        |j                  t
        «      |j                  t
        «      «       |j                  d   d   j                  «       |j                  «       k(  sJ ‚|j                  d   d   j                  «       |j                  «       k(  sJ ‚y )Nrn   rZ   )r\   rY   Ú	max_depthr&   r]   rN   r"   r'   )r=   r(   Únb)ré   r   )r   r
   r   r   r0   rG   r2   Ú
set_paramsr!   rP   r    r@   r%   Ú
get_params)re   rf   rg   rh   rÃ   rÄ   s         r6   Ú!test_voting_classifier_set_paramsrì   {  s:  € äÐ+=Ô>€DÜ!ØÐ&8ÀDô€Dô ‹<€DäØ
�ˆ˜˜d�|Ð$¨V¸aÀ¸Vôç	�cŒ(”AÓð 
ô Ø
�ˆ˜˜d�|Ð$¨V¸aÀ¸Vô€Eð 
×Ñ˜ÐÓ×!Ñ!¤(¬AÔ.ä�u—}‘}¤XÓ.°·±¼hÓ0GÔHÜØ×ÑœHÓ% u×':Ñ':¼8Ó'Dôð ×Ñ˜AÑ˜qÑ!×,Ñ,Ó.°$·/±/Ó2CÒCÐCÐCØ×Ñ˜AÑ˜qÑ!×,Ñ,Ó.°$·/±/Ó2CÒCÐCÑCrk   c            	      ó´  — t        d¬«      } t        dd¬«      }t        «       }t        d| fd|fd|fgdg d	¢¬
«      j	                  t
        t        «      }t        d| fd|fd|fgdg d¢¬
«      }|j                  d¬«      j	                  t
        t        «       t        |j                  t
        «      |j                  t
        «      «       t        |j                  «      d   dk(  sJ ‚t        |j                  «      dk(  sJ ‚t        d„ |j                  D «       «      sJ ‚|j                  «       d   dk(  sJ ‚|j                  d¬«      j	                  t
        t        «       |j                  d¬«      j	                  t
        t        «       t        |j                  t
        «      |j                  t
        «      «       t!        |j#                  t
        «      |j#                  t
        «      «       d}t%        j&                  t(        |¬«      5  |j                  ddd¬«      j	                  t
        t        «       d d d «       t+        j,                  dgdgg«      }t+        j,                  ddg«      }t        d|fd|fgdddgd¬«      j	                  ||«      }t        d|fd|fgdddgd¬«      }|j                  d¬«      j	                  ||«       t!        |j/                  |«      t+        j,                  ddgddggddgddggg«      «       t!        |j/                  |«      t+        j,                  ddgddggg«      «       |j                  d¬«       |j                  d¬«       t        |j/                  |«      t+        j,                  ddgddgg«      «       t        |j/                  |«      t+        j,                  dgdgg«      «       y # 1 sw Y   �Œ–xY w)Nrm   rn   rZ   r[   r&   r]   ré   r;   )r"   r   rº   rs   )r"   r"   rº   Údrop)r]   r'   c              3   óH   K  — | ]  }t        |t        t        f«      –— Œ y ­w)N)rB   r   r   )Ú.0Úests     r6   ú	<genexpr>z*test_set_estimator_drop.<locals>.<genexpr>ª  s"   è ø€ ò Ø>AŒ
�3Ô+¬ZÐ8×9ñùs   ‚ "rN   )r=   z4All estimators are dropped. At least one is requiredr*   )r&   r]   ré   r"   r   rº   F)r%   r=   r(   Úflatten_transformr¢   r¡   r¤   r£   )r   r
   r   r   r0   r1   r2   rê   r!   rP   Údictr%   r×   Úestimators_Úallrë   r    r@   r-   r.   r/   r€   r�   rQ   )rf   rg   rh   rÃ   rÄ   rT   ÚX1Úy1s           r6   Útest_set_estimator_droprù   “  s‚  € ô ¨3Ô/€DÜ!¨rÀÔD€DÜ‹<€DÜØ˜4�L 4¨ ,°°t°Ð=ØÚô÷ 
�cŒ!ŒQƒið	 
ô Ø˜4�L 4¨ ,°°t°Ð=ØÚô€Eð
 
×Ñ˜ÐÓ×#Ñ#¤A¤qÔ)ä�u—}‘}¤QÓ'¨¯©´qÓ)9Ô:ä�× Ñ Ó! $Ñ'¨6Ò1Ð1Ð1Üˆu× Ñ Ó! QÒ&Ð&Ð&Üñ ØEJ×EVÑEVôô ð ð ð ×ÑÓ˜dÑ# vÒ-Ð-Ð-à	×Ñ˜FÐÓ#×'Ñ'¬¬1Ô-Ø	×Ñ˜FÐÓ#×'Ñ'¬¬1Ô-ä�u—}‘}¤QÓ'¨¯©´qÓ)9Ô:Ü˜e×1Ñ1´!Ó4°e×6IÑ6IÌ!Ó6LÔMØ
@€CÜ	�‰”z¨Ô	-ñ DØ×Ñ˜F v°&ÐÓ9×=Ñ=¼aÄÔC÷Dô 
�‰�A�3˜˜�*Ó	€BÜ	�‰�1�a�&Ó	€BÜØ˜4�L 4¨ ,Ð/ØØ�C�Øô	÷
 
�cˆ"ˆbƒkð 
ô Ø˜4�L 4¨ ,Ð/ØØ�C�Øô	€Eð 
×Ñ˜ÐÓ×#Ñ# B¨Ô+ÜØ�‰˜ÓÜ
�‰�C˜�:  S˜zÐ*¨c°3¨Z¸#¸s¸Ð,DÐEÓFôô ˜eŸo™o¨bÓ1´2·8±8¸sÀC¸jÈ3ÐPSÈ*Ð=UÐ<VÓ3WÔXØ	×Ñ˜FÐÔ#Ø	×Ñ˜FÐÔ#Ü�u—‘ rÓ*¬B¯H©H°q¸!°f¸qÀ!¸fÐ5EÓ,FÔGÜ�u—‘ rÓ*¬B¯H©H°q°c¸A¸3°ZÓ,@ÕA÷9Dñ Dús   È-OÏOc                 ó|  — t        | ¬«      }t        d| ¬«      }t        d|fd|fgddgd¬	«      }t        d|fd|fgt        j                  d
«      d¬	«      }|j                  t        t        «       |j                  t        t        «       t        |j                  t        «      |j                  t        «      «       y )Nrn   rZ   r[   r&   r]   r"   r'   rN   )r%   r(   r=   )r"   r'   )
r   r
   r   r€   r�   r0   rG   r2   r    r@   )re   rf   rg   rÃ   rÄ   s        r6   Útest_estimator_weights_formatrû   Ô  s§   € äÐ+=Ô>€DÜ!¨rÐ@RÔS€DÜØ˜4�L 4¨ ,Ð/¸!¸Q¸Èô€Eô Ø˜4�L 4¨ ,Ð/¼¿¹À&Ó9IÐRXô€Eð 
‡I�IŒhœÔØ	‡I�IŒhœÔÜØ×ÑœHÓ% u×':Ñ':¼8Ó'Dõrk   c                 óf  — t        | ¬«      }t        d| ¬«      }t        «       }t        j                  ddgddgdd	gd
dgg«      }t        j                  g d¢«      }t        d|fd|fd|fgd¬«      j                  ||«      }t        d|fd|fd|fgdd¬«      j                  ||«      }t        d|fd|fd|fgdd¬«      j                  ||«      }t        |j                  |«      j                  d«       t        |j                  |«      j                  d«       t        |j                  |«      j                  d«       t        |j                  |«      |j                  |«      «       t        |j                  |«      j                  dd«      j                  d«      |j                  |«      «       y)z:Check transform method of VotingClassifier on toy dataset.rn   rZ   r[   r•   r–   r—   r˜   r™   rš   r›   rœ   r    r&   r]   r^   rN   r<   T©r%   r=   ró   F)r¥   é   )r#   r¥   r'   r   r"   N)r   r
   r   r€   r�   r   r0   r!   rQ   Úshaper    ÚswapaxesÚreshape)	re   rf   rg   rh   r1   r2   rÃ   rÄ   rÛ   s	            r6   Útest_transformr  å  s–  € äÐ+=Ô>€DÜ!¨rÐ@RÔS€DÜ‹<€DÜ
�‰�4˜�,  t ¨t°T¨l¸SÀ#¸JÐGÓH€AÜ
�‰’Ó€AäØ˜4�L 4¨ ,°¸°Ð>Àvôç	�cˆ!ˆQƒið 
ô Ø˜4�L 4¨ ,°¸°Ð>ØØô÷ 
�cˆ!ˆQƒið	 
ô
 Ø˜4�L 4¨ ,°¸°Ð>ØØô÷ 
�cˆ!ˆQƒið	 
ô �u—‘ qÓ)×/Ñ/°Ô8Ü�u—‘ qÓ)×/Ñ/°Ô8Ü�u—‘ qÓ)×/Ñ/°Ô;Ü˜eŸo™o¨aÓ0°%·/±/À!Ó2DÔEÜØ�‰˜Ó×#Ñ# A qÓ)×1Ñ1°&Ó9¸5¿?¹?È1Ó;Mõrk   zX, y, voterr]   é   )r\   c                 óŒ  — t        |«      }t        «       j                  | «      }|j                  ||t	        j
                  |j                  «      ¬«       |j                  d¬«       |j                  ||t	        j
                  |j                  «      ¬«       |j                  |«      }|j                  |j                  k(  sJ ‚y )NrÉ   rî   )r&   )	r   r   Úfit_transformr0   r€   rÖ   rÿ   rê   rP   )r1   r2   ÚvoterrG   Úy_preds        r6   Ú test_none_estimator_with_weightsr    s“   € ô: �%‹L€EäÓ×-Ñ-¨aÓ0€HØ	‡I�Iˆh˜¬¯©°·±Ó)9€IÔ:Ø	×Ñ˜ÐÔØ	‡I�Iˆh˜¬¯©°·±Ó)9€IÔ:Ø�]‰]˜8Ó$€FØ�<‰<˜1Ÿ7™7Ò"Ð"Ñ"rk   rñ   Útreern   ©r%   r   r   )Úidsc                 ó„   — ddgddgddgg}g d¢}t        | d«      rJ ‚| j                  ||«       | j                  dk(  sJ ‚y )	Nr"   r'   r#   r¥   r  rþ   ©r   r"   r'   Ún_features_in_)rF   r0   r  )rñ   r1   r2   s      r6   Útest_n_features_inr  +  sS   € ð& ˆQˆ�!�Q�˜!˜Q˜Ð €AÚ€Aä�sÐ,Ô-Ð-Ð-Ø‡G�GˆAˆq„MØ×Ñ Ò"Ð"Ñ"rk   r¼   rm   )r%   Úverbosec                 ó   — t        j                  ddgddgddgddgg«      }t        j                  g d	¢«      }d
}t        | «      j                  ||«       t	        j
                  ||j                  «       d   «      sJ ‚y )Nr•   r–   r—   r˜   r™   rš   r›   rœ   r    za\[Voting\].*\(1 of 2\) Processing lr, total=.*\n\[Voting\].*\(2 of 2\) Processing rf, total=.*\n$r   )r€   r�   r   r0   Úrer+   Ú
readouterr)r¼   Úcapsysr1   r2   Úpatterns        r6   Útest_voting_verboser  F  s|   € ô( 	�‰�4˜�,  t ¨t°T¨l¸SÀ#¸JÐGÓH€AÜ
�‰’Ó€Að	=ð ô 
ˆ)Ó×Ñ˜˜AÔÜ�8‰8�G˜V×.Ñ.Ó0°Ñ3Ô4Ð4Ñ4rk   c                  óÐ   — ddgddgddgg} g d¢}t        dt        «       fd	t        d
¬«      fdg¬«      }|j                  | |«       |j	                  «       }ddg}t        ||«       y)z1Check get_feature_names_out output for regressor.r"   r'   r#   r¥   r  rþ   r  r&   r	  r   rn   )Úignorerî   r
  Úvotingregressor_lrÚvotingregressor_treeN)r   r   r   r0   Úget_feature_names_outr!   )r1   r2   r=   Ú	names_outÚexpected_namess        r6   Ú%test_get_features_names_out_regressorr  e  s€   € ð ˆQˆ�!�Q�˜!˜Q˜Ð €AÚ€AäàÔ#Ó%Ð&ØÔ*¸Ô:Ð;Øð
ô€Fð ‡J�Jˆq�!Ôà×,Ñ,Ó.€IØ*Ð,BÐC€NÜ�y .Õ1rk   zkwargs, expected_namesrN   )r=   ró   )Úvotingclassifier_lr0Úvotingclassifier_lr1Úvotingclassifier_lr2Úvotingclassifier_tree0Úvotingclassifier_tree1Úvotingclassifier_tree2r=   r;   Úvotingclassifier_lrÚvotingclassifier_treec           	      ó.  — ddgddgddgddgg}g d¢}t        dd	d
t        d¬«      fdt        d¬«      fgi| ¤Ž}|j                  ||«       |j	                  |«      }|j                  «       }|j                  d   t        |«      k(  sJ ‚t        ||«       y)zBCheck get_feature_names_out for classifier for different settings.r"   r'   r#   r¥   r  rþ   rœ   )r   r"   r'   r   r%   r&   r   rn   r	  Nr,   )	r   r   r   r0   rQ   r  rÿ   r×   r!   )Úkwargsr  r1   r2   r=   ÚX_transr  s          r6   Ú&test_get_features_names_out_classifierr*  y  sµ   € ð& ˆQˆ�!�Q�˜!˜Q˜ ! S Ð*€AÚ€Aäñ àÔ%°1Ô5Ð6ØÔ+¸Ô;Ð<ð
ðð
 ñ€Fð ‡J�Jˆq�!ÔØ×Ñ˜qÓ!€GØ×,Ñ,Ó.€Ià�=‰=˜Ñœs >Ó2Ò2Ð2Ð2Ü�y .Õ1rk   c                  ó  — ddgddgddgg} g d¢}t        dt        d	¬
«      fdt        d	¬
«      fgdd¬«      }|j                  | |«       d}t	        j
                  t        |¬«      5  |j                  «        ddd«       y# 1 sw Y   yxY w)zJCheck that error is raised when voting="soft" and flatten_transform=False.r"   r'   r#   r¥   r  rþ   r  r&   r   rn   r	  rN   Frý   zYget_feature_names_out is not supported when `voting='soft'` and `flatten_transform=False`r*   N)r   r   r   r0   r-   r.   r/   r  )r1   r2   r=   rT   s       r6   Ú,test_get_features_names_out_classifier_errorr,  ž  s�   € à
ˆQˆ�!�Q�˜!˜Q˜Ð €AÚ€AäàÔ%°1Ô5Ð6ØÔ+¸Ô;Ð<ð
ð Øô€Fð ‡J�Jˆq�!Ôð	$ð ô 
�‰”z¨Ô	-ñ 'Ø×$Ñ$Ô&÷'÷ 'ñ 'ús   Á'BÂB
zEstimator, Childc                 óð   — t        j                  ddgddgddgg«      }g d¢}t        j                  t        d¬«      5   | d	 |«       g«      j                  ||g d
¢d¬«       ddd«       y# 1 sw Y   yxY w)z�Test that the right error message is raised when metadata is passed while
    not supported when `enable_metadata_routing=False`.r   r"   r'   r¥   rþ   ©r"   r'   r#   z1is only supported if enable_metadata_routing=Truer*   r·   r~   Úa©rÊ   ÚmetadataN)r€   r�   r-   r.   r/   r0   )Ú	EstimatorÚChildr1   r2   s       r6   Ú*test_routing_passed_metadata_not_supportedr4  ¹  s{   € ô 	�‰�1�a�&˜1˜a˜& 1 a &Ð)Ó*€AÚ€Aä	�‰ÜÐMô
ñ Uñ 	�5™%›'Ð"Ó#×'Ñ'¨¨1ºIÐPSÐ'ÔT÷U÷ Uñ Uús   ¾%A,Á,A5)Úenable_metadata_routingc                 óD   —  | d |«       fg«      }|j                  «        y )NÚsub_est)Úget_metadata_routing)r2  r3  rñ   s      r6   Ú%test_get_metadata_routing_without_fitr9  Ê  s$   € ñ �i¡£Ð)Ð*Ó
+€CØ×ÑÕrk   ÚproprÊ   r1  c           
      óÐ  — t        j                  ddgddgddgg«      }g d¢}g d¢d}} | d	  |t        «       ¬
«      j                  di |di¤Žfd  |t        «       ¬
«      j                  di |di¤Žfg«      } |j                  ||fi ||dk(  r|n|i¤Ž |j
                  D ]B  }|dk(  r||i}	n||i}	|d   j                  }
t        |
«      sJ ‚|
D ]  }t        d|dddœ|	¤Ž Œ ŒD y)z3Test that metadata is routed correctly for Voting*.r   r"   r'   r¥   rþ   r.  r~   r/  Úsub_est1)ÚregistryTÚsub_est2rÊ   r0   )ÚobjÚmethodÚparentNr,   )	r€   r�   r   Úset_fit_requestr0   r%   r=  r×   r   )r2  r3  r:  r1   r2   rÊ   r1  rñ   r¼   r(  r=  r7  s               r6   Ú+test_metadata_routing_for_voting_estimatorsrC  Õ  s(  € ô 	�‰�1�a�&˜1˜a˜& 1 a &Ð)Ó*€AÚ€AÚ'¨�8€Má
ð Ø;‘œy›{Ô+×;Ñ;ÑK¸tÀT¸lÑKðð
 Ø;‘œy›{Ô+×;Ñ;ÑK¸tÀT¸lÑKðð		
ó€Cð €C‡G�GˆAˆqÑS�T¨D°OÒ,C™=ÈÐRÒSà—^‘^ò 	Wˆ	Ø�?Ò"Ø˜MÐ*‰Fà˜HÐ%ˆFà˜Q‘<×(Ñ(ˆÜ�8Œ}Ðˆ}Øò 	WˆGÜ#ÐV¨¸ÀeÑVÈvÓVñ	Wñ	Wrk   c                 óD  — t        j                  ddgddgddgg«      }g d¢}g d¢d}} | d	 |«       fg«      }d
|j                  › d�}t        j                  t
        t        j                  |«      ¬«      5  |j                  ||||¬«       ddd«       y# 1 sw Y   yxY w)zCTest that the right error is raised when metadata is not requested.r   r"   r'   r¥   rþ   r.  r~   r/  r7  zb[sample_weight, metadata] are passed but are not explicitly set as requested or not requested for z.fitr*   r0  N)	r€   r�   rÒ   r-   r.   r/   r  Úescaper0   )r2  r3  r1   r2   rÊ   r1  rñ   Úerror_messages           r6   Ú1test_metadata_routing_error_for_voting_estimatorsrG  ü  s¨   € ô 	�‰�1�a�&˜1˜a˜& 1 a &Ð)Ó*€AÚ€AÚ'¨�8€Má
�i¡£Ð)Ð*Ó
+€Cð	!Ø!&§¡Ð 0°ð	6ð ô
 
�‰”z¬¯©°=Ó)AÔ	Bñ FØ�‰��1 M¸HˆÔE÷F÷ Fñ Fús   Á7BÂB)^rã   r  Únumpyr€   r-   Úsklearnr   r   Úsklearn.baser   r   r   Úsklearn.datasetsr   Úsklearn.dummyr	   Úsklearn.ensembler
   r   r   r   Úsklearn.exceptionsr   Úsklearn.linear_modelr   r   Úsklearn.model_selectionr   r   r   Úsklearn.multiclassr   Úsklearn.naive_bayesr   Úsklearn.neighborsr   Úsklearn.preprocessingr   Úsklearn.svmr   Ú%sklearn.tests.metadata_routing_commonr   r   r   r   Úsklearn.treer   r   Úsklearn.utils._testingr   r    r!   Ú	load_irisÚirisÚdataÚtargetr1   r2   r  rG   Úload_diabetesrR   r   ÚmarkÚparametrizer7   rL   rU   rj   rp   rt   r“   rž   r®   r¸   rÀ   rÅ   ÚfilterwarningsrÝ   ræ   rì   rù   rû   r  r  r  r  r  r*  r,  r4  r9  rC  rG  r,   rk   r6   ú<module>ra     sÙ  ðÙ :ã 	ã Û ç ,ß >Ñ >Ý ;Ý (÷ó õ .ß Eß SÑ SÝ 2Ý *Ý 2Ý 0Ý ÷ó ÷ G÷ñ ð €x×ÑÓ€Ø‡y�y’�A�a�C�Ñ˜$Ÿ+™+€€€1áÓ×)Ñ)¨!Ó,€à!ˆ8×!Ñ!¨TÔ2�€€Sð ‡�×ÑØð ˜2ÐØUð	
ð
 "Ñ#5Ó#7Ð8Ð9ÀqÈ!ÀfÑMØ>ð	
ð	óñóðò.ò$ò,
 ò.ò ò!DòHFò>17òhòò&Nð( ‡�×ÑÐ3Ó4ñ*:ó 5ð*:òZ5ò Dò0>BòBò"ð> ‡�×ÑØð ØÙàÑ-Ó/Ð0ØÑ1¸qÔAÐBðóð		
ð ØÙàÑ+Ó-Ð.ØÑ0¸aÔ@ÐAðóð		
ðóñ2#ó3ð2#ð ‡�×ÑØ	áàÑ'Ó)Ð*ØÑ.¸AÔ>Ð?ðô	
ñ 	àÑ)°qÔ9Ð:ØÑ/¸QÔ?Ð@ðô	
ðð 
Ð.Ð/ð! ó ñ$#ó%ð$#ð ‡�×ÑØáàÑ'Ó)Ð*ØÑ,¸#Ô>Ð?ðð ô	
ñ 	àÑ)°sÔ;Ð<ØÑ-¸3Ô?Ð@ðð ô	
ðóñ&	5ó'ð&	5ò2ð( ‡�×ÑØð °DÑ9òð
	
ð �FÐ	Ð3Ð5LÐMÐNðóñ"2ó#ð"2ò('ð6 ‡�×ÑØØÐ+Ð,¨Ð@RÐ.SÐTóñ
Uó	ð
Uð ‡�×ÑØØÐ+Ð,¨Ð@RÐ.SÐTóñ ¨Ô-ñó .ó	ð
ð ‡�×ÑØØÐ+Ð,¨Ð@RÐ.SÐTóð ‡�×Ñ˜ /°:Ð!>Ó?Ù¨Ô-ñWó .ó @ó	ðWðB ‡�×ÑØØÐ+Ð,¨Ð@RÐ.SÐTóñ ¨Ô-ñFó .ó	ñ
Frk   