
    CpjZO                     l    S SK rS SKJr  S SKrS SKJr  S SKJrJ	r	J
r
  S SKJr  SSKJr   " S S	5      rg)
    N)assert_allclose)raises)binned_statisticbinned_statistic_2dbinned_statistic_dd)check_random_state   )check_named_resultsc                      \ rS rSr\S 5       rS rS rS rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S  r#S! r$S" r%S# r&S$ r'S% r(S& r)S' r*S( r+S) r,S* r-S+ r.S, r/\0Rb                  Re                  S-\3Rh                  \3Rj                  /5      \0Rb                  Re                  S.\3Rl                  \3Rn                  \3Rp                  \3Rr                  \3Rt                  \3Rv                  S/S0 S1 /	5      S2 5       5       r<\0Rb                  Re                  S3S4S5\3Rz                  " S45      /S6-  /5      S7 5       r>S8 r?S9r@g:);TestBinnedStatistic   c                    [        S5      nUR                  SS9U l        UR                  SS9U l        UR                  SS9U l        UR                  SS9U l        UR                  SS9U l        UR                  SS9S-   U l        g )Ni&  d   sizer      g    .A)r   uniformxyvXwu)clsrngs     c/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/stats/tests/test_binned_statistic.pysetup_classTestBinnedStatistic.setup_class   s}     &%%%*%%+    c                     U R                   nU R                  n[        XSSS9u  p4n[        R                  " USS9u  pg[        X65        [        XG5        g )Ncount
   binsr   r   r   np	histogramr   )selfr   r   count1edges1bccount2edges2s           r   test_1d_count!TestBinnedStatistic.test_1d_count   sI    FFFF-aG"Eab1''r    c                 d    U R                   nU R                  n/ SQnU H  n[        XUSS9  M     g )N)meanmedianr"   sumr#   r$   )r   r   r   )r)   r   r   
statistics	statistics        r   test_gh5927TestBinnedStatistic.test_gh5927"   s1     FFFF7
#IQ926 $r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        g Nstdr#   r$   )r   r   r   r'   r;   r   r)   r   r   stat1r+   r,   stat2r.   s           r   test_big_number_std'TestBinnedStatistic.test_big_number_std+   sH     FFFF,Q5rBr,Q266Cr%r    c           	          U R                   nU R                  n[        [        XSSS95        [        XSSS9u  p4n[        X[        R
                  SS9u  pgn[        X65        g )Nr"   i  r$   r;   )r   r   printr   r'   r;   r   r<   s           r   test_empty_bins_std'TestBinnedStatistic.test_empty_bins_std5   sX    FFFFqW489,Q5tDr,Q266Er%r    c                 d    U R                   nU R                  n[        XSSS9nSn[        X45        g )Nr"   r#   r$   r6   	bin_edges	binnumber)r   r   r   r
   )r)   r   r   res
attributess        r   test_1d_result_attributes-TestBinnedStatistic.test_1d_result_attributes?   s/    FFFFqW26<
C,r    c                     U R                   nU R                  n[        XSSS9u  p4n[        R                  " USUS9u  pg[        X65        [        XG5        g )Nr4   r#   r$   r%   weightsr&   )r)   r   r   sum1r+   r,   sum2r.   s           r   test_1d_sumTestBinnedStatistic.test_1d_sumG   sK    FFFF+A%bAb||AB:#'r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nr2   r#   r$   )r   r   r   r'   r2   r   r)   r   r   r=   r+   r,   r>   r.   s           r   test_1d_mean TestBinnedStatistic.test_1d_meanQ   sN    FFFF,Q6Cr,Q277Dr%'r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g r:   )r   r   r   r'   r;   r   rU   s           r   test_1d_stdTestBinnedStatistic.test_1d_std[   N    FFFF,Q5rBr,Q266Cr%'r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nminr#   r$   )r   r   r   r'   r]   r   rU   s           r   test_1d_minTestBinnedStatistic.test_1d_mine   r[   r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nmaxr#   r$   )r   r   r   r'   ra   r   rU   s           r   test_1d_maxTestBinnedStatistic.test_1d_maxo   r[   r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nr3   r#   r$   )r   r   r   r'   r3   r   rU   s           r   test_1d_median"TestBinnedStatistic.test_1d_mediany   sN    FFFF,Q8"Er,Q2992Fr%'r    c                 .   U R                   S S nU R                  S S n[        XSSS9u  p4n[        R                  " / SQ5      n[        R
                  " U5       Vs/ s H  ouU:H  R                  5       PM     nn[        XV5        [        X5        g s  snf )N   r"   r   r$   )r      r	   r   ri   r   r   r   r   r	   r	   r   r   r	   ri   r   r	   r	   ri   r	   )r   r   r   r'   arrayuniquer4   r   )	r)   r   r   r*   r+   r,   bc2ibcounts	            r   test_1d_bincode#TestBinnedStatistic.test_1d_bincode   s    FF3BKFF3BK-aG!Dhh ! " ,.99R=9=a7--/=9 ' :s   Bc                 H   [         R                  R                  S5      n[         R                  " S5      nUR                  S5      n[	        US S US S 5      u  pEn[	        X#S/S9u  pxn[	        X#SS9u  pn[        XG5        [        XX5        [        XI5        [        XZ5        g )Nl    p-       )r      range)r'   randomdefault_rngaranger   r   )r)   r   r   datar2   r%   _
mean_range
bins_rangemean_range2bins_range2s              r   test_1d_range_keyword)TestBinnedStatistic.test_1d_range_keyword   s    ii##J/IIbMzz"~(3Bcr;A$4QWI$N!
&6qg&N#!))**r    c                    U R                   nU R                  nU R                  n[        XSSS9u  pEn[        XSSS9u  pxn	[        XU/SSS9u  pn[	        U
S   U5        [	        U
S   U5        [	        X[5        [	        Xl5        g )Nr2   r#   r$   r   r	   )r   r   r   r   r   )r)   r   r   r   stat1vedges1vbc1vstat1wedges1wbc1wr>   r.   rl   s                r   test_1d_multi_values(TestBinnedStatistic.test_1d_multi_values   s    FFFFFF 0vB G 0vB G-aQbIsa&)a&)("r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        R
                  " XSS9u  pn
[        XH5        [        XY5        [        Xj5        g )Nr"      r$   r   r   r   r   r'   histogram2dr   )r)   r   r   r   r*   binx1biny1r,   r-   binx2biny2s              r   test_2d_count!TestBinnedStatistic.test_2d_count   sb    FFFFFF#6!W1$& u!~~a;u'%%r    c                 ~    U R                   nU R                  nU R                  n[        XUSSS9nSn[	        XE5        g )Nr"   r   r$   )r6   x_edgey_edgerH   )r   r   r   r   r
   )r)   r   r   r   rI   rJ   s         r   test_2d_result_attributes-TestBinnedStatistic.test_2d_result_attributes   s:    FFFFFF!!7;C
C,r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        R
                  " XSUS9u  pn
[        XH5        [        XY5        [        Xj5        g )Nr4   r   r$   rN   r   )r)   r   r   r   rP   r   r   r,   rQ   r   r   s              r   test_2d_sumTestBinnedStatistic.test_2d_sum   sa    FFFFFF!4Q1e!!LU^^Aq!DU#%%r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        XU[        R
                  SS9u  pp[        XH5        [        XY5        [        Xj5        g Nr2   r   r$   r   r   r   r   r'   r2   r   r)   r   r   r   r=   r   r   r,   r>   r   r   s              r   test_2d_mean TestBinnedStatistic.test_2d_mean   sc    FFFFFF"5aAvA"Ne"5aArwwQ"Oe%%%r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        XU[        R
                  SS9u  pp[        XH5        [        XY5        [        Xj5        g r   r   r   s              r   test_2d_mean_unicode(TestBinnedStatistic.test_2d_mean_unicode   sf    FFFFFF"5!V!#%e"5aArwwQ"Oe%%%r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        XU[        R
                  SS9u  pp[        XH5        [        XY5        [        Xj5        g )Nr;   r   r$   )r   r   r   r   r'   r;   r   r   s              r   test_2d_stdTestBinnedStatistic.test_2d_std   c    FFFFFF"5aAu1"Me"5aArvvA"Ne%%%r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        XU[        R
                  SS9u  pp[        XH5        [        XY5        [        Xj5        g )Nr]   r   r$   )r   r   r   r   r'   r]   r   r   s              r   test_2d_minTestBinnedStatistic.test_2d_min   r   r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        XU[        R
                  SS9u  pp[        XH5        [        XY5        [        Xj5        g )Nra   r   r$   )r   r   r   r   r'   ra   r   r   s              r   test_2d_maxTestBinnedStatistic.test_2d_max   r   r    c                     U R                   nU R                  nU R                  n[        XUSSS9u  pEpg[        XU[        R
                  SS9u  pp[        XH5        [        XY5        [        Xj5        g )Nr3   r   r$   )r   r   r   r   r'   r3   r   r   s              r   test_2d_median"TestBinnedStatistic.test_2d_median
  sk    FFFFFF"5!XA#'e"5!RYYQ#(e 	%%%r    c                 r   U R                   S S nU R                  S S nU R                  S S n[        XUSSS9u  pEpg[        R
                  " / SQ5      n[        R                  " U5       V	s/ s H  oU	:H  R                  5       PM     n
n	[        Xx5        XDR                  5          n[        X5        g s  sn	f )Nrh   r"   r   r$   )            r   r      r   r      r   r   r   r   r   r   r   r   r      )
r   r   r   r   r'   rj   rk   r4   r   nonzero)r)   r   r   r   r*   r   r   r,   rl   rm   rn   	count1adjs               r   test_2d_bincode#TestBinnedStatistic.test_2d_bincode  s    FF3BKFF3BKFF3BK#6!W1$& uhh 0 1 ,.99R=9=a7--/=9 >>+,	*	 :s   -B4c                 B   U R                   nU R                  nU R                  nU R                  n[	        XUSSS9u  pVpx[	        XUSSS9u  pp[	        XX4/SSS9u  pnn[        US   U5        [        US   U	5        [        Xn5        [        X5        [        UU5        g )Nr2   r   r$   r   r	   )r   r   r   r   r   r   )r)   r   r   r   r   r   binx1vbiny1vr   r   binx1wbiny1wr   r>   r   r   rl   s                    r   test_2d_multi_values(TestBinnedStatistic.test_2d_multi_values(  s    FFFFFFFF':!V!(%$':!V!(%$#61&&q$* eS 	a&)a&)&&c"r    c           	         U R                   nU R                  nU R                  n[        XSSS9u  pEn[        X#SSS9u  pGn[	        XUSSSS9u  pp[
        R                  " XQSS	9n[
        R                  " XrSS	9nXUR                  5       :H  ==   S
-  ss'   XUR                  5       :H  ==   S
-  ss'   [        XlS   5        [        XS
   5        [        XS   5        [        XS
   5        g )Nr2   rh   r$   r#   )rh   r#   Tr%   expand_binnumbersright)sider	   r   )	r   r   r   r   r   r'   searchsortedra   r   )r)   r   r   r   statedgesxbcxedgesybcyr>   edgesx2edgesy2rl   bcx3bcy3s                  r   test_2d_binnumbers_unraveled0TestBinnedStatistic.test_2d_binnumbers_unraveled;  s    FFFFFF,Q6Cc,Q6Cc':!V(d(D$ vw7vw7 	!%%'\a!%%'\aV$V$!f%!f%r    c                     U R                   nU R                  n[        XSSS9u  p4n[        R                  " USS9u  pg[        X65        [        XG5        g )Nr"   r   r$   )r   r   r   r'   histogramddr   )r)   r   r   r*   r+   r,   r-   r.   s           r   test_dd_count!TestBinnedStatistic.test_dd_countR  sI    FFFF0wQG2''r    c                 d    U R                   nU R                  n[        XSSS9nSn[        X45        g )Nr"   r   r$   rF   )r   r   r   r
   )r)   r   r   rI   rJ   s        r   test_dd_result_attributes-TestBinnedStatistic.test_dd_result_attributes\  s/    FFFF!!a8<
C,r    c                    U R                   nU R                  n[        XSSS9u  p4n[        R                  " USUS9u  pg[        X[        R
                  SS9u  pn[        X65        [        XG5        [        X85        [        XI5        g )Nr4   r   r$   rN   )r   r   r   r'   r   r4   r   )
r)   r   r   rP   r+   r,   rQ   r.   sum3edges3s
             r   test_dd_sumTestBinnedStatistic.test_dd_sumd  sr    FFFF.qUCb~~aa;.qRVV!Db#'#'r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nr2   r   r$   )r   r   r   r'   r2   r   r)   r   r   r=   r+   r,   r>   r.   s           r   test_dd_mean TestBinnedStatistic.test_dd_meanq  sN    FFFF/f1Er/bggAFr%'r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nr;   r   r$   )r   r   r   r'   r;   r   r   s           r   test_dd_stdTestBinnedStatistic.test_dd_std{  N    FFFF/e!Dr/bff1Er%'r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nr]   r   r$   )r   r   r   r'   r]   r   r   s           r   test_dd_minTestBinnedStatistic.test_dd_min  r   r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nra   r   r$   )r   r   r   r'   ra   r   r   s           r   test_dd_maxTestBinnedStatistic.test_dd_max  r   r    c                     U R                   nU R                  n[        XSSS9u  p4n[        X[        R                  SS9u  pgn[        X65        [        XG5        g )Nr3   r   r$   )r   r   r   r'   r3   r   r   s           r   test_dd_median"TestBinnedStatistic.test_dd_median  sN    FFFF/hQGr/biiaHr%'r    c                 R   U R                   S S nU R                  S S n[        XSSS9u  p4n[        R                  " / SQ5      n[        R
                  " U5       Vs/ s H  ouU:H  R                  5       PM     nn[        XV5        X3R                  5          n	[        X5        g s  snf )Nrh   r"   r   r$   )?   !   V   S   X   C   9   r   *   )   R   r   \       $   [   +   W   Q   r  )	r   r   r   r'   rj   rk   r4   r   r   )
r)   r   r   r*   r+   r,   rl   rm   rn   r   s
             r   test_dd_bincode#TestBinnedStatistic.test_dd_bincode  s    FF3BKFF3BK0wQGhh 4 5 ,.99R=9=a7--/=9 >>+,	*	 :s   B$c                 `   U R                   nU R                  nU R                  nSSSSSSS[        R                  4 Hn  n[        XUSS	9u  pVn[        XUSS	9u  pn
[        XU/USS	9u  pn[        US
   U5        [        US   U5        [        Xl5        [        X5        [        X}5        Mp     g )Nr"   r4   r2   r;   r]   ra   r3   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   s                 r   test_dd_multi_values(TestBinnedStatistic.test_dd_multi_values  s    FFFFFFeVUE5(VVD$7d$K!FT$7d$K!FT!4QA1!ME3E!Hf-E!Hf-G,G,D&r    c                 *   U R                   nU R                  n[        US S 2S4   USSS9u  p4n[        US S 2S4   USSS9u  p6n[        US S 2S4   USSS9u  p8n	[        XSS	S
S9u  pn[	        X\S   5        [	        X|S   5        [	        XS   5        g )Nr   r2   rs   r$   r	   rh   ri   r#   )rs   rh   r#   Tr   )r   r   r   r   r   )r)   r   r   r   r   r   r   r   edgeszbczr>   r.   rl   s                r   test_dd_binnumbers_unraveled0TestBinnedStatistic.test_dd_binnumbers_unraveled  s    FFFF,Qq!tWabIc,Qq!tWabIc,Qq!tWabIc0&|tEs 	V$V$V$r    c                 0   [         R                  R                  S5      nUR                  S5      nUR                  S5      n[         R                  " SSS5      nXDU4n[	        X#SUS9nUR
                  n[	        X#SUS	9nUR
                  n[        Xg5        g )
Nl   g
F '  r   r  r   r	   r#   r2   r$   )binned_statistic_result)r'   rw   rx   linspacer   r6   r   )r)   r   r   r   r%   resultr   r>   s           r   test_dd_binned_statistic_result3TestBinnedStatistic.test_dd_binned_statistic_result  s    ii##J/JJz"JJu{{1a$D!$Q6=$Q6=CE  $r    c                 R   [         R                  R                  S5      nUR                  S5      nUR                  S5      n[         R                  " SSS5      n[         R                  " US5      nXDU4n[        [        SS9   [        X#S	US
9  S S S 5        g ! , (       d  f       g = f)NiCr  r  r   r	   r#   zdifference is numerically 0matchr2   r$   )r'   rw   rx   r  appendassert_raises
ValueErrorr   )r)   r   r   r   r%   s        r   test_dd_zero_dedges'TestBinnedStatistic.test_dd_zero_dedges  s    ii##J/JJz"JJu{{1a$yyq!D!:-JKf48 LKKs   B
B&c                    [        [        SS9   [        U R                  /U R                  SS//S9  S S S 5        [        [        SS9   [        U R
                  U R                  /U R                  SS/SS//S9  S S S 5        [        [        SS9   [        U R
                  U R                  /U R                  SS/SS//S9  S S S 5        [        [        SS9   [        U R
                  U R                  /U R                  SS//S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nv= f! , (       d  f       g = f)	NzIn range, start must be <= stopr  r	   r   ru   z.In dimension 1 of range, start must be <= stopz.In dimension 2 of range, start must be <= stopz(range given for 1 dimensions; 2 required)r  r  r   r   r   r   )r)   s    r   test_dd_range_errors(TestBinnedStatistic.test_dd_range_errors  s<    :!BD$&&()1vh0D FH   0$&&()1v1v&68H
 FH   0$&&()1v1v&68H
 @B   0$&&()1vh0B BD DH H
H H
B Bs/   $D	2D"2D3/E
D"
D03
E
Ec                     [         R                  " SS/[         R                  S9n[        US SSS9u  n  n[	        U[         R                  " / SQ[         R
                  S95        g )Nr   ghw?)dtyper"   r   r$   )r	   r   r   r   r	   )r'   rj   float32r   r   float64)r)   r   r   r{   s       r   test_binned_statistic_float321TestBinnedStatistic.test_binned_statistic_float32  sI    HHa_BJJ7%awQ?
abhhbjjIJr    c                 2   / nSn[        U5       H  nUSSU-  -
  /-  nM     [        R                  " SSS5      n[        U[        R                  " [        U5      5      U/SS9u  pVn[        R                  " XS9u  p[        XX5        [        US   U	5        g )	Nrh   r	   g?r   r   r4   )r%   r6   r$   )rv   r'   r  r   oneslenr(   r   )
r)   r   r   rm   r%   rP   r+   r,   rQ   r.   s
             r   test_gh14332 TestBinnedStatistic.test_gh14332  s    tA!CF(OA  {{1Qr".q"''#a&/59FeMb||A1#q	6*r    r$  r6   r"   c                 (    U S-  R                  5       $ )Nri   r4   r   s    r   <lambda>TestBinnedStatistic.<lambda>  s    adZZ\r    c                 .    U S-  R                  5       S-  $ )Nri                 ?r/  r0  s    r   r1  r2    s    adZZ\B5Fr    c                   ^ U4S jn[         R                  R                  S5      nSnUR                  US9nUS:  nUR                  US9nU[         R                  L a  XR                  US9S-  -   n[	        XhTSS9u  n	  n
[         R
                  " U" X)    5      U" X   5      /5      n[        X5        U	R                  [         R                  " UR                  [         R                  5      :X  d   eg )	Nc                 6   > TS:X  a  [        U 5      $ T" U 5      $ )Nr"   )r+  )r   r6   s    r   ref_statistic6TestBinnedStatistic.test_dd_all.<locals>.ref_statistic  s    &'13q6Cy|Cr    l   #t%i r#   r   g      ?r4  ri   r$   )
r'   rw   rx   
complex128r   rj   r   r$  result_typer&  )r)   r$  r6   r7  r   nr   rm   r   r   r{   refs     `         r   test_dd_allTestBinnedStatistic.test_dd_all  s    	D ii##$45JJAJHJJAJBMM!JJAJ&r))A(yqA
ahhae,mAD.ABC"zzR^^CIIrzzBBBBr    r%   r#   )r#   r#   r#   r   c                 b   [         R                  R                  S5      nUR                  SS9nUR                  S5      nUR                  UR                  5      S:  n[         R
                  X5'   Sn[        R                  " [        US9   [        X45        S S S 5        g ! , (       d  f       g = f)N   %V:r   r   r   皙?z/The sample on which `values` is to be binned...r  )
r'   rw   rx   standard_normalshapenanpytestr   r  r   )r)   r%   r   samplesvaluesrm   messages          r   test_nan_gh17154$TestBinnedStatistic.test_nan_gh17154,  s     ii##$67%%8%4$$S)JJw}}%,VV
C]]:W50 655s   B  
B.c           
         [         R                  R                  S5      nUR                  SS9nUR                  S5      nUR                  UR                  5      S:  n[         R
                  X$'   UR                  UR                  5      S:  n[         R
                  * X%'   [        X#5      nXE-  nUR                  5       nSX'   [         R                  " USS9n	[         R                  " USS9n
[        X#[        [        X5      5      S9n[         R                  R                  US   US   5        [         R                  R                  US	   US	   5        [         R                  R                  US
   US
   5        g )Nr@  r   r   r   rA  r   )axisru   r	   ri   )r'   rw   rx   rB  rC  infr   copyr]   ra   listziptestingr   )r)   r   rF  rG  i_pinfi_ninfrI   i_inftemplowhighr<  s               r   test_inf_gh17154$TestBinnedStatistic.test_inf_gh17154>  s4    ii##$67%%8%4$$S)GMM*T1&&GMM*T166' "'2 ||~ffT"vvd#!'c#n9MN 	

""3q63q62


""3q63q62


""3q63q62r     N)A__name__
__module____qualname____firstlineno__classmethodr   r/   r7   r?   rC   rK   rR   rV   rY   r^   rb   re   ro   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,  rE  markparametrizer'   r&  r9  r2   r3   r4   r;   r]   ra   r=  ry   rI  rX  __static_attributes__rZ  r    r   r   r      s   , ,(7&&-(((((((+#&-
&
&	&
&
&
&&+ #&&.(-((((((+' %%"90.K
+ [[Wrzz2==&AB[[[277BIIrvvrvv+-662667+A+F+H IC	I C
C" [[Vb,28I%JK1 L1"3r    r   )numpyr'   numpy.testingr   rE  r   r  scipy.statsr   r   r   scipy._lib._utilr   common_testsr
   r   rZ  r    r   <module>rh     s-     )  *. . / -N	3 N	3r    