
    riY              
          d dl Z d dlZd dlmZ d dlZd dlZd dlmZ d dl	m
Z
 d dlmZmZ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 d d
lmZ d dlmZmZ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(m)Z)m*Z*m+Z+m,Z,  G d de
      Z- G d de
      Z. G d de      Z/ ej`                         Z1e1jd                  e1jf                  cZ2Z4d Z5d Z6ejn                  jq                  dd e9dfd e:dfg      d        Z;ejn                  jq                  dd de2jx                  d   dg      d         Z=ejn                  jq                  dd! d" d# g      d$        Z>ejn                  jq                  dd% dg      d&        Z?ejn                  jq                  dd' d( d) g      d*        Z@ G d+ d,e
      ZAd- ZBd. ZCd/ ZDe,d0        ZEd1 ZFejn                  jq                  d2 ed3d45       ed46       edd47       edgd47      g      d8        ZGe,d9        ZHd: ZId; ZJd< ZKd= ZLd> ZMd? ZNd@ ZOdA ZPdB ZQdC ZRdD ZSdE ZTejn                  jq                  dF e$ ed 6       e!             dGf ed 6      eTfg      dH        ZUejn                  jq                  dIeeeg      dJ        ZVdK ZWejn                  jq                  dLdMdNg      dO        ZXdP ZYy)Q    N)Mock)datasets)BaseEstimator)CCAPLSCanonicalPLSRegression)make_friedman1make_regression)PCA)HistGradientBoostingClassifierRandomForestClassifier)NotFittedError)SelectFromModel)
ElasticNetElasticNetCVLassoLassoCVLinearRegressionLogisticRegressionSGDClassifier)make_pipeline)	LinearSVC)MinimalClassifierassert_allcloseassert_array_almost_equalassert_array_equalskip_if_32bitc                        e Zd Z fdZ xZS )NaNTagc                 F    t         |          }d|j                  _        |S NTsuper__sklearn_tags__
input_tags	allow_nanselftags	__class__s     m/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/sklearn/feature_selection/tests/test_from_model.pyr$   zNaNTag.__sklearn_tags__%   !    w')$(!    __name__
__module____qualname__r$   __classcell__r*   s   @r+   r   r   $        r-   r   c                        e Zd Z fdZ xZS )NoNaNTagc                 F    t         |          }d|j                  _        |S )NFr"   r'   s     r+   r$   zNoNaNTag.__sklearn_tags__,   s!    w')$)!r-   r.   r3   s   @r+   r6   r6   +   r4   r-   r6   c                        e Zd Z fdZ xZS )NaNTagRandomForestc                 F    t         |          }d|j                  _        |S r!   r"   r'   s     r+   r$   z#NaNTagRandomForest.__sklearn_tags__3   r,   r-   r.   r3   s   @r+   r9   r9   2   r4   r-   r9   c                     t        dddd d       } dD ]`  }t        | |      }|j                  t        t               t        j                  t              5  |j                  t               d d d        b y # 1 sw Y   mxY w)N皙?
   Talphamax_itershufflerandom_statetol)gobbledigookz.5 * gobbledigook	threshold)	r   r   fitdataypytestraises
ValueError	transform)clfrF   models      r+   test_invalid_inputrP   =   st    
B4TC ; "	y9		$]]:& 	"OOD!	" 	""	" 	"s   A77B 	c                      t               } t        |       }|j                  t        t               |j
                  | u sJ y )N	estimator)r   r   rG   rH   rI   rS   esttransformers     r+   test_input_estimator_unchangedrW   H   s6    
 
"C!C0KOOD!  C'''r-   zmax_features, err_type, err_msgc                      y)Ng      ? Xs    r+   <lambda>r\   T       r-   z3max_features must be an instance of int, not float.c                      y)NrY   rZ   s    r+   r\   r\   Y   r]   r-   zmax_features ==c                    t        j                  |      }t        dd      }t        || t        j
                         }t        j                  ||      5  |j                  t        t               d d d        y # 1 sw Y   y xY w)N   r   n_estimatorsrB   rS   max_featuresrF   match)reescaper   r   npinfrJ   rK   rG   rH   rI   )re   err_typeerr_msgrN   rV   s        r+   test_max_features_errorrn   P   sh      ii G
 aa
@C!LRVVGK 
xw	/ !a ! ! !s   A;;Bre         c                 V   t        dd      }t        || t        j                         }|j	                  t
        t              }| 0|j                  | k(  sJ |j                  d   |j                  k(  sJ yt        |d      rJ |j                  d   t
        j                  d   k(  sJ y)z>Check max_features_ and output shape for integer max_features.ra   r   rb   rd   Nrp   max_features_)
r   r   rj   rk   fit_transformrH   rI   rr   shapehasattrre   rN   rV   X_transs       r+   "test_inferred_max_features_integerrx   j   s     !aa
@C!LRVVGK ''a0G((L888}}Q;#<#<<<<;888}}Q4::a=000r-   c                      yNrp   rY   rZ   s    r+   r\   r\   |   r]   r-   c                      | j                   d   S rz   rt   rZ   s    r+   r\   r\   |   s    AGGAJ r-   c                 4    t        | j                  d   d      S Nrp   i'  minrt   rZ   s    r+   r\   r\   |   s    #aggaj%2H r-   c                     t        dd      }t        || t        j                         }|j	                  t
        t              }|j                   | t
              k(  sJ |j                  d   |j                  k(  sJ y)z?Check max_features_ and output shape for callable max_features.ra   r   rb   rd   rp   N)	r   r   rj   rk   rs   rH   rI   rr   rt   rv   s       r+   #test_inferred_max_features_callabler   z   sq     !aa
@C!LRVVGK ''a0G$$T(::::=={88888r-   c                 6    t        t        | d         dz        S )Nr   ro   )roundlenrZ   s    r+   r\   r\      s    E#ad)a-4H r-   c                     g dg dg dg dg}g d}t        dd      }t        || t        j                   	      }|j	                  ||      }|j
                  d
   |j                  k(  sJ y )N)gףp=
?q=
ףpgףp=
?)gRQg{Gzg333333)r   gQ޿gffffff)gQ?gGz?g?)r   rp   r   rp   ra   r   rb   rd   rp   )r   r   rj   rk   rs   rt   rr   )re   r[   rI   rN   rV   rw   s         r+   test_max_features_array_liker      sr     			A 	A
 aa
@C!LRVVGK ''1-G=={88888r-   c                 4    t        | j                  d   d      S r~   r   rZ   s    r+   r\   r\      s    s1771:u% r-   c                      | j                   d   S rz   r|   rZ   s    r+   r\   r\      s     r-   c                      yrz   rY   rZ   s    r+   r\   r\      r]   r-   c                     t        dd      }t        |       }t        ||t        j                         }|j                  t        t               |j                  t               y)z7Tests that the callable passed to `fit` is called on X.2   r   rb   )side_effectrd   N)	r   r   r   rj   rk   rs   rH   rI   assert_called_with)re   rN   mrV   s       r+   test_max_features_callable_datar      sL     !bq
AC&A!CaBFF7SKdA&r-   c                       e Zd Zd ZddZy)FixedImportanceEstimatorc                     || _         y N)importances)r(   r   s     r+   __init__z!FixedImportanceEstimator.__init__   s
    &r-   Nc                 L    t        j                  | j                        | _        y r   )rj   arrayr   feature_importances_)r(   r[   rI   s      r+   rG   zFixedImportanceEstimator.fit   s    $&HHT-=-=$>!r-   r   )r/   r0   r1   r   rG   rY   r-   r+   r   r      s    '?r-   r   c            	          t        j                  ddddddd      \  } }| j                  d   }t        dd	      }t	        |t
        j                   
      }t	        ||t
        j                         }|j                  | |      }|j                  | |      }t        ||       t	        t        dd            }|j                  | |      }t        j                  |j                  j                        }t        j                  | d      }	t        d|j                  d   dz         D ]  }
t	        t        dd      |
t
        j                         }|j                  | |      }t        j                  |j                  j                        }t        j                  | d      }t        | d d |	d |
 f   | d d |d |
 f           t        |j                  j                  |j                  j                         y )N  r=      r   F	n_samples
n_featuresn_informativen_redundant
n_repeatedrA   rB   rp   r   rb   rS   rF   rd   g?*   r?   rB   rR   	mergesort)kind)r   make_classificationrt   r   r   rj   rk   rs   r   r   abs
estimator_coef_argsortrange)r[   rI   re   rU   transformer1transformer2X_new1X_new2scores1candidate_indices1r   scores2candidate_indices2s                r+   test_max_featuresr      s   ''DAq 771:L
 bq
AC"SRVVGDL"LRVVGL ''1-F''1-FFF# #UR-PQL''1-Fff\,,223GWH;?Av||A23 

&%b9#vvg

 ++Aq1&&00667ZZ{Ca#KZ0011Q8J;J8W5W3X	

 L++11<3J3J3P3PQr-   c            	         t        j                  ddddddd      \  } }| j                  d   }t        j                  g d      }t        d|dz         D ]  }t        t        |      |t        j                   	      }|j                  | |      }t        j                  |j                               d   }t        |t        j                  |             |j                  d   |k(  rJ  y )
Nr   r=   r   r   Fr   rp   )
   r   r   r   r   r   r   ro   ro   rp   )re   rF   )r   r   rt   rj   r   r   r   r   rk   rs   where_get_support_maskr   arange)r[   rI   re   feature_importancesr   rV   X_newselected_feature_indicess           r+   test_max_features_tiebreakr      s    ''DAq 771:L((#ABA|a/0 	,
%$%89#vvg

 ))!Q/#%88K,I,I,K#LQ#O 3RYYz5JK{{1~+++	,r-   c            	      `   t        j                  ddddddd      \  } }t        dd      }t        |dt        j
                   	      }|j                  | |      }t        |d
      }|j                  | |      }t        |dd
	      }|j                  | |      }|j                  d   t        |j                  d   |j                  d         k(  sJ |j                  t	        j                  | j                  d         t        j                  d d f         }	t        || d d |	d   f          y )Nr   r=   r   r   Fr   r   rb   rd   g{Gz?r   rp   )r   r   r   r   rj   rk   rs   rt   r   rM   r   newaxisr   )
r[   rI   rU   r   r   r   r   transformer3X_new3selected_indicess
             r+   test_threshold_and_max_featuresr      s   ''DAq !bq
AC"SqRVVGTL''1-F"SDAL''1-F"SqDQL''1-F<<?c&,,q/6<<?CCCC#--bii
.CBJJPQM.RSFAa!1!!4456r-   c            	      $   t        j                  ddddddd      \  } }t        dd      }t        d	d
gt        j
                  t        j                  g      D ]  \  }}t        ||      }|j                  | |       t        |j                  d      sJ |j                  |       }|j                  d   | j                  d   k  sJ |j                  j                  }t	        j                  |       ||      kD  }t        || d d |f           y )Nr   r=   r   r   Fr   r   rb   meanmedianr   r   rp   )r   r   r   ziprj   r   r   r   rG   ru   r   rM   rt   r   r   r   )	r[   rI   rU   rF   funcrV   r   r   feature_masks	            r+   test_feature_importancesr     s    ''DAq !bq
AC1BGGRYY3GH 
=	4%yI1{--/EFFF%%a({{1~
***!,,AAvvk*T+->>!%1l?);<
=r-   c            	         t        j                  ddddddd      \  } }t        j                  |j                        }||dk(  xx   dz  cc<   t        dd      }t        |	      }|j                  | |d 
       |j                         }|j                  | ||
       |j                         }t        j                  ||k(        rJ |j                  | |d|z  
       |j                         }t        j                  ||k(        sJ y )Nd   r=   r   r   Fr   rp   )rB   fit_interceptrR   )sample_weight)
r   r   rj   onesrt   r   r   rG   r   all)r[   rI   r   rU   rV   maskweighted_maskreweighted_masks           r+   test_sample_weightr   (  s    ''DAq GGAGG$M!q&S 
!5
AC!C0KOOAqO-((*DOOAqO6113Mvvmt+,,,OOAqM(9O:!335O66-?2333r-   rS   r<   r   r   rB   l1_ratiorB   c           	         t        j                  ddddddd      \  }}t        |       }|j                  ||       |j	                  |      }t        j                  |j                  j                        dkD  }t        ||d d |f          y )	Nr   r=   r   r   Fr   rR   gh㈵>)
r   r   r   rG   rM   rj   r   r   r   r   )rS   r[   rI   rV   r   r   s         r+   test_coef_default_thresholdr   D  s     ''DAq "I6KOOAq!!!$E66+((../$6DeQq$wZ0r-   c            
         t        j                  dddddddd      \  } }t               }t        dd	gt        j
                  t        j                  g      D ]  \  }}d
dt        j                  fD ]  }t        t               ||      }|j                  | |       t        |j                  d      sJ |j                  |       }|j                  d
   | j                  d
   k  sJ |j                  | |       t        j                  j                  |j                   d|      }| ||      kD  }	t#        || d d |	f            y )Nr   r=   r   r   Fr   )r   r   r   r   r   rA   rB   	n_classesr   r   rp   ro   )rS   rF   
norm_orderr   )axisord)r   r   r   r   rj   r   r   rk   r   rG   ru   r   rM   rt   linalgnormr   r   )
r[   rI   rU   rF   r   orderrV   r   r   r   s
             r+   test_2d_coefr   `  s7   ''	DAq 
C1BGGRYY3GH A	4BFF^ 	AE),.)PUK OOAq!;117;;;))!,E;;q>AGGAJ... GGAqM))...FK&k)::L%eQq,-?@	AAr-   c                     t        dddd d      } t        |       }|j                  t        t        t        j                  t                     |j                  }|j                  t        t        t        j                  t                     |j                  }||u sJ |j                  t              }|j                  t        j                  t        t        f      t        j                  t        t        f             t        ||j                  t                     t        t                     }t        |d      rJ y )	Nr   Fra   pa1)rB   rA   r@   rC   learning_raterR   classespartial_fit)r   r   r   rH   rI   rj   uniquer   rM   rG   vstackconcatenater   r   ru   )rU   rV   	old_model	new_modelX_transforms        r+   test_partial_fitr     s    
t5C "C0KD!RYYq\:&&ID!RYYq\:&&I	!!!''-KOOBIItTl+R^^QF-CDk;+@+@+FG ",B,DEK{M2222r-   c                      t        d      } t        |       }|j                  t        t               |j                  d       |j                  t        t               |j                  j                  dk(  sJ y )Nr   r   rR   r   )estimator__C)r   r   rG   rH   rI   
set_paramsr   CrT   s     r+   test_calling_fit_reinitializesr     s]    

#C!C0KOOD!,OOD!!!##s***r-   c                  p   t        ddddd       } t        |       }|j                  t        t               |j                  t              }| j                  t        t               t        | d      }t        |j                  t              |       |j                  t        t               |j                  | usJ t        | d      }|j                  t        t               t        |j                  t              |       t        ddddd       } t        | d      }d}t        j                  t        |	      5  |j                  t        t               d d d        t        j                  t        |	      5  |j                  t        t               d d d        t        j                  t        |	      5  |j                  t               d d d        t        dddd 
      j                  t        t              } t        | d      }|j                  t        t               t        |j                  j                  | j                         |j                  t        t               t        |j                  j                  | j                         y # 1 sw Y   >xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr<   r=   Tr   r>   )prefitFzEWhen `prefit=True`, `estimator` is expected to be a fitted estimator.rf   )r?   r@   rA   rC   )r   r   rG   rH   rI   rM   r   r   rJ   rK   r   r   r   r   )rN   rO   r   rm   s       r+   test_prefitr     s   
 cB1RV
WCC E	IIdA//$'KGGD!C-Eeood3[A	IIdA3&&& C.E	IIdAeood3[A cB1RV
WCC-EUG	~W	5 		$	~W	5 #$"#	~W	5 
 cB$
G
K
KDRS
TCC-E	IIdAE$$**CII6	dAE$$**CII6 # # s$   ;J9J7J,JJ),J5c                     t        dd      } | j                  t        t               t	        | dd       }d}t        j                  t        |      5  |j                  t               d	d	d	       d
}|j                  |       t        j                  t        d      5  |j                  t               d	d	d	       y	# 1 sw Y   WxY w# 1 sw Y   y	xY w)z:Check the interaction between `prefit` and `max_features`.ra   r   rb   Tc                      | j                   d   S rz   r|   rZ   s    r+   r\   z*test_prefit_max_features.<locals>.<lambda>  s    177ST: r-   r   re   z[When `prefit=True` and `max_features` is a callable, call `fit` before calling `transform`.rf   Ng      @)re   z!`max_features` must be an integer)r   rG   rH   rI   r   rJ   rK   r   rM   r   rL   )rS   rO   rm   re   s       r+   test_prefit_max_featuresr     s     'AAFIMM$IdAUVE	&  
~W	5  L	,/	z)L	M    s   C !C C	Cc                  `   t        ddd      \  } }t        g dd      }t        |      }|j                  | |       |j	                         }|j                         }t        j                  t        | j                  d         D cg c]  }d	| 	 c}      |   }t        ||       y
c c}w )zWCheck if ElasticNetCV works with a list of floats.

    Non-regression test for #30936.ra   r   r   )r   r   rB   )g      ?      ?g      ?r   rR   rp   xN)r
   r   r   rG   get_feature_names_outget_supportrj   r   r   rt   r   )r[   rI   rS   selector	names_outr   iexpecteds           r+   'test_get_feature_names_out_elasticnetcvr    s     aqqIDAq&7aHI3HLLA..0I!Dxx%
*;<Q1QC<=dCHy(+ =s   B+c                     t        dd      } | j                  t        t               t	        | dd      }t        |      j                  }d| d}t        j                  t        |	      5  |j                          d
d
d
       |j                  t        t               |j                         }|dgk(  sJ y
# 1 sw Y   <xY w)z;Check the interaction between prefit and the feature names.ro   r   rb   Trp   r   zThis z_ instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.rf   Nx3)r   rG   rH   rI   r   typer/   rJ   rK   r   r  )rN   rO   namerm   feature_namess        r+   !test_prefit_get_feature_names_outr    s    
 aa
@CGGD!C1=E;D
v = 	=  
~W	5 &##%& 
IIdA//1MTF"""& &s   ,B88Cc                  Z   t        dd      } t        | d      }|j                  t        t               |j                  t              }| j                  t        t               dt        j                  | j                        z  }| j                  |kD  }t        |t        d d |f          y )Nr   r   rb   z0.5*meanrE   r   )
r   r   rG   rH   rI   rM   rj   r   r   r   )rU   rO   r   rF   r   s        r+   test_threshold_stringr    s    
 bq
ACC:6E	IIdA//$'K GGD!bggc6677I##i/Dk44=9r-   c                     t        ddddd       } t        | d      }|j                  t        t               |j                  t              }d|_        |j                  d	   |j                  t              j                  d	   kD  sJ y )
Nr<   r=   Tr   r>   z
0.1 * meanrE   z
1.0 * meanrp   )r   r   rG   rH   rI   rM   rF   rt   )rN   rO   r   s      r+    test_threshold_without_refittingr    ss    
cB1RV
WCC<8E	IIdA//$'K #EOQ%//$"7"="=a"@@@@r-   c                      t        d      } t        |       }t        j                         }t        j
                  |d<   t        j                  |d<   |j                  t        t               y )Nr   r   rR   rp   )	r   r   rH   copyrj   nanrk   rG   rI   )rN   rO   nan_datas      r+   test_fit_accepts_nan_infr    sI    
(a
8Cc*Eyy{H&&HQK&&HQK	IIdAr-   c                      t        dd      } t        j                         }t        |       }|j	                  |t
               t        j                  |d<   t        j                  |d<   |j                  |       y )Nr   r   rb   rR   rp   )
r9   rH   r  r   rG   rI   rj   r  rk   rM   )rN   r  rO   s      r+   test_transform_accepts_nan_infr  )  sW    
#A
>Cyy{Hc*E	IIh&&HQK&&HQK	OOHr-   c                      t               } t        |       }|j                         j                  j                  du sJ t               }t        |      }|j                         j                  j                  du sJ y )NrR   TF)r   r   r$   r%   r&   r6   )allow_nan_estrO   
no_nan_ests      r+   'test_allow_nan_tag_comes_from_estimatorr  7  sj    HMm4E!!#..88D@@@Jj1E!!#..88EAAAr-   c                 @    t        j                  | j                        S r   )rj   r   explained_variance_)pca_estimators    r+   _pca_importancesr!  A  s    66-3344r-   zestimator, importance_getterz$named_steps.logisticregression.coef_c                     t        | d|      }|j                  t        t               |j	                  t              j
                  d   dk(  sJ y )Nr   )rF   importance_getterrp   )r   rG   rH   rI   rM   rt   )rS   r#  r  s      r+   test_importance_getterr$  E  sJ     V7HH LLqd#))!,111r-   PLSEstimatorc                     t        ddd      \  }} | d      }t        t        |      |      j                  ||      }|j	                  ||      dkD  sJ y)	zCheck the behaviour of SelectFromModel with PLS estimators.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/12410
    r   r=   r   )r   r   rB   rp   )n_componentsr   N)r	   r   r   rG   score)r%  r[   rI   rS   rO   s        r+   test_select_from_model_plsr)  W  sW     B2AFDAq!,I/)4i@DDQJE;;q!s"""r-   c                  $   t        j                  d       t        j                  dd      \  } t	        j
                        }fd}t        t               |      j                  |       }t        |j                  j
                         t	        |j                               }||k  sJ t        j                         5  t        j                  dt               |j!                  j"                  dd        d	d	d	       y	# 1 sw Y   y	xY w)
zvSelectFromModel works with estimators that do not support feature_names_in_.

    Non-regression test for #21949.
    pandasTas_frame
return_X_yc                 H    t        j                  j                  d         S rz   )rj   r   rt   )rS   r[   s    r+   r#  zHtest_estimator_does_not_support_feature_names.<locals>.importance_getterm  s    yy$$r-   )r#  errorrp   r   N)rJ   importorskipr   	load_irissetcolumnsr   r   rG   r   feature_names_in_r  warningscatch_warningssimplefilterUserWarningrM   iloc)rI   all_feature_namesr#  r  feature_names_outr[   s        @r+   -test_estimator_does_not_support_feature_namesr=  d  s    
 !t=DAqAII% /@	c!Qi 
 x11199=H::<=0000		 	 	" (g{3166!A;'( ( (s   9DDr-  TFc                    t        j                  d       t        j                  | d      \  }}t	        t               d      j                  ||g d      }| r!t        |j                  |j                         y	t        |d      rJ y	)
zITest that partial_fit from SelectFromModel validates `feature_names_in_`.r+  Tr,  r   )rS   re   )r   rp   ro   r   r5  N)rJ   r1  r   r2  r   r   r   r   r5  r4  ru   )r-  r[   rI   r  s       r+   'test_partial_fit_validate_feature_namesr?    s{     !xDADAqqIUU	1i V H 855qyyA8%89999r-   c                     t        t                     } d}d}t        j                  t        |      5 }| j                  t        t              j                  t               ddd       t        j                  j                  t              sJ |t        |j                  j                        v sJ y# 1 sw Y   SxY w)zCheck that we raise the proper AttributeError when the estimator
    does not implement the `partial_fit` method, which is decorated with
    `available_if`.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/28108
    rR   z5This 'SelectFromModel' has no attribute 'partial_fit'z8'LinearRegression' object has no attribute 'partial_fit'rf   N)r   r   rJ   rK   AttributeErrorrG   rH   rI   r   
isinstancevalue	__cause__str)
from_model	outer_msg	inner_msg	exec_infos       r+   )test_from_model_estimator_attribute_errorrJ    s     !+;+=>JGIJI	~Y	7 29tQ++D12ioo//@@@IOO5566662 2s   .B44B=)Zrh   r6  unittest.mockr   numpyrj   rJ   sklearnr   sklearn.baser   sklearn.cross_decompositionr   r   r   sklearn.datasetsr	   r
   sklearn.decompositionr   sklearn.ensembler   r   sklearn.exceptionsr   sklearn.feature_selectionr   sklearn.linear_modelr   r   r   r   r   r   r   sklearn.pipeliner   sklearn.svmr   sklearn.utils._testingr   r   r   r   r   r   r6   r9   r2  irisrH   targetrI   rP   rW   markparametrize	TypeErrorrL   rn   rt   rx   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?  rJ  rY   r-   r+   <module>r^     sK   	      & H H < % S - 5   + ! ] } /  x
))T[[a"( % A	
 	
!! !Q

1t)DE1 F1 &(HI9	9 *H!)LM9 N9" %';[I	?} ?(RV,472 = =248 Cb)R AB/qc3	11& A A>3(+(7V2,#&
:	A
B5 " #1-/A/CD2	
 
!	./	2	2 #|])KL	# M	#(8 dE]3: 4:7r-   