
    (phh                       S SK r S SKrS SKrS SKrS SKrS SKJrJrJrJ	r	  S SK
Jr  S SKrS SKJrJrJr  S SKJr  S SKJrJr  S SKJrJr  S SKJr  S S	KJrJr  S S
K J!r!J"r"  S SK#J$r$  S SK%J&r&  S SK'J(r)  S SK*r+\ RX                  " \SSS9r-S r.\" S/S9S 5       r/\-" S/SS9S 5       r0\-" S/SS9S 5       r1\-" S/SSS9S 5       r2\-" S/SSS9S 5       r3\-" S/SSS9S  5       r4S! r5\-" S"/S\R                  S#:X  a  S$OS S%9S& 5       r6\-" S'/SS9S( 5       r7S) r8\-" S*/SS9S+ 5       r9\-" S,/SS9S- 5       r:S. r;\-" S//S\Rx                  " 5       S0:X  a  S OS1S%9S2 5       r=\-" S3/SS9S4 5       r>\-" S5/SS9S6 5       r?\-" S7/SS9S8 5       r@\R                  R                  S9S:/ S;Q/S</ S=Q/S>/ S?Q//5      \" S/S9S@ 5       5       rC\-" SA/SBSSC9SD 5       rDSE rE\-" SF/SS9SG 5       rF\" S/S9SH 5       rGSI rH\-" SJ/SS9SK 5       rI\" S/S9SL 5       rJ\-" SM/SS9SN 5       rK\-" SO/SS9SP 5       rL\-" SQ/SS9SR 5       rM\" S/S9SS 5       rN\" S/S9ST 5       rO\R                  R                  SUSS/5      \" S/S9SV 5       5       rP\R                  R                  SWSXSY/5      \" S/S9SZ 5       5       rQ\" S/S9S[ 5       rR\-" S\/S]SSC9S^ 5       rS\-" S_/SS9S` 5       rT\-" Sa/SS9Sb 5       rU\-" Sc/SS9Sd 5       rV\" Se/SS9Sf 5       rW\-" Sg/SS9Sh 5       rX\-" Si/SS9Sj 5       rY\" S/S9Sk 5       rZ\" S/S9Sl 5       r[\-" Sm/SS9Sn 5       r\\-" So/SSS9Sp 5       r]\" S/S9Sq 5       r^\-" Sr/SsSSC9St 5       r_\-" Su/SvSSC9Sw 5       r`\-" Sx/SS9Sy 5       ra\-" Sz/SS9S{ 5       rb\-" S|/SS9S} 5       rcS~ rdS re\-" S/SSS%9S 5       rf\" S/S9S 5       rg\-" S/SS9S 5       rh\-" S/SS9S 5       riS rj\" S/S9S 5       rkS rl\-" S/SS9S 5       rmS rn\-" S/SS9S 5       ro\-" S/SS9S 5       rp\-" S/SS9S 5       rqS rrS rs\-" S/SSS9S 5       rt\-" S/SSS9S 5       ru\-" S/SSS9S 5       rvS rwS rxS rySS jrz\-" S/SS9S 5       r{\-" S/SS9S 5       r|S r}S r~\R                  R                  SS5      \R                  R                  SS5      S 5       5       r\" S/S9S 5       rS r\-" S/SSS9S 5       r\-" S/SSS9S 5       r\-" S/SS9S 5       r\" S/S9S 5       r\R                  R                  S\+GR                  \+GR                  /5      \R                  R                  S/ SQ5      S 5       5       r " S S5      rS r\" S/S9S 5       rS rS r\" S/S9S 5       r\" S/S9S 5       r\" S/SS9S 5       r\-" S/SSS%9S 5       r\-" S/S\Rx                  " 5       S0:X  a  S OSBS%9S 5       r\" S/SSS%9S 5       r\" S/SS9S 5       rS rS rS r\" S/S9S 5       rS rS r\R                  R                  SS5      S 5       rS r\R                  R                  SS\GR:                  SS4S\GR:                  SS4S\GR:                  SS4S\GR<                  SS4S\GR:                  SS4S\GR:                  SS4S\GR:                  SS4/5      S 5       r\GR@                  GRC                  S5      \" S/S9S 5       5       rS r\" S/SS/SS9S 5       rS rS rS rS r\R                  R                  S\S0 S4\S0 S4\S0 S4\\" 5       SS0S4\\" 5       SS0S4\\" 5       SS0S4\SSS0S4\SSSSS.S4\SSSS.S4\S0 S44
5      S 5       r\" S/S9S 5       rS r\" S/S9S 5       r\" S/SSS9S 5       rS rGS  rGS r\R                  R                  GSS/ GSQ/ GSQ/ GSQ/ GSQ/GSGS/GS	GS
/4GSGS/GS
GS
/4GSGS/GS
GS/4// GSQ4S/ GSQ/ GSQ/ GSQ/ GSQ/GSGS/GSGS/4GSGS/GS
GS/4GSGS/GSGS/4// GSQ4S/ GSQ/ GSQ/ GSQ/ GSQ/GSGS/GSGS
/4GSGS/GSGS/4GSGS/GSGS/4// GSQ4/5      GS 5       r\R                  R                  GS/ SQ5      GS\GSS4GS j5       r\R                  R                  GSS/ GSQ4S/ GSQ4S/ GSQ4/5      GS  5       r\" GS!/SSS9GS" 5       r\" GS#/SSS9GS$ 5       r\" S/S9GS% 5       rGS& r\-" GS'/SS9GS( 5       rGS) rGS* rg(+      N)Axes3Daxes3dproj3dart3d)_Quaternion)MouseButton
MouseEventNavigationToolbar2)cm)colorspatches)image_comparisoncheck_figures_equal)
mock_event)LineCollectionPolyCollection)Circle	PathPatch)Path)TextTdefault)remove_textstylec                    SS/n[         R                  " [        R                  " [	        [         R
                  " X"U5      5      5      S5      nU H  u  pE[        R                  " [        R                  " XE-
  5      5      US   US   -
  :X  d  M@  U R                  " [        U[        R                  " U5      -  U[        R                  " U5      -  5      6   M     g )Nr         )
	itertoolscombinationsnparraylistproductsumabsplot3Dzip)axscalerptsstartends         Y/var/www/html/venv/lib/python3.13/site-packages/mpl_toolkits/mplot3d/tests/test_axes3d.pyplot_cuboidr.      s    	
AA

 
 $y/@/@q/I*J!KQ
OC
66"&&%&!A$1+5IIs5%0#bhhuo2EFG     png)
extensionsc                 R    U R                  [        SS9S9nUR                  S5        g )N3d
projection
subplot_kwF)subplotsdictset_visiblefig_testfig_refr'   s      r-   test_invisible_axesr>   '   s&    			dd&;		<BNN5r/   zgrid_off.pngmpl20r   c                  n    [         R                  " 5       n U R                  SS9nUR                  S5        g Nr3   r4   F)pltfigureadd_subplotgridfigr'   s     r-   test_grid_offrI   -   s(    
**,C	D	)BGGENr/   zinvisible_ticks_axis.pngc                  <   [         R                  " 5       n U R                  SS9nUR                  / 5        UR	                  / 5        UR                  / 5        UR                  UR                  UR                  4 H  nUR                  R                  S5        M      g rB   )rC   rD   rE   
set_xticks
set_yticks
set_zticksxaxisyaxiszaxisliner:   )rH   r'   axiss      r-   test_invisible_ticks_axisrS   4   sp    
**,C	D	)BMM"MM"MM"288RXX.		e$ /r/   zaxis_positions.pngFc                  H   / SQn [         R                  " SSSS0S9u  p[        UR                  5       U 5       Hf  u  p4UR                  UR
                  UR                  4 H%  nUR                  U5        UR                  U5        M'     U nUR                  SSSUS	9  Mh     g )
N)upperlowerbothnoner   r5   r3   r6   xyz)xlabelylabelzlabeltitle)
rC   r8   r&   flattenrN   rO   rP   set_label_positionset_ticks_positionset)	positionsrH   axsr'   posrR   r_   s          r-   test_axis_positionsrg   ?   s    2I||AqlD-ABHCs{{}i0HHbhh0D##C(##C( 1 %
c#c? 1r/   zaspects.pngc                     Sn [         R                  " SSSS0S9u  pUR                  5       SS  H  n[        U/ S	QS
9  M     [        US   S   / SQS
9  [	        UR                  5       5       H;  u  pCUR                  X   5        UR                  S5        UR                  X   SS9  M=     US   S   R                  S5        g )N)autoequalequalxyequalyzequalxzrj   r      r5   r3   r6   r   )r   r      r(   r   r   r   r   rn      rp   datalim
adjustablezequal (cube))rC   r8   r`   r.   	enumerate	set_titleset_box_aspect
set_aspect)aspects_re   r'   is        r-   test_aspectsr   K   s    IG\\!QL$+?@FAkkmAb!Bi( " Aq	+3;;=)
WZ 
)$
gjY7 * F1I'r/   zaspects_adjust_box.pngc                      Sn [         R                  " S[        U 5      SS0SS9u  p[        U5       H6  u  p4[	        U/ SQS9  UR                  X   5        UR                  X   S	S
9  M8     g )N)ri   rj   rk   rl   rm   r   r5   r3   )   rn   )r7   figsize)rt   rn   rp   rq   boxrv   )rC   r8   lenrx   r.   ry   r{   )r|   rH   re   r~   r'   s        r-   test_aspects_adjust_boxr   \   sh     AG||As7|t8L$+-HC 3Bi(
WZ 
gjU3  r/   c                     [         R                  " 5       n U R                  SS9nUR                  S5        UR	                  S5        UR                  S5        UR                  S5        UR                  S5        [        U5      S:X  d   eg )	Nr3   r4   labelr_   rY   rZ   r[   zV<Axes3D: label='label', title={'center': 'title'}, xlabel='x', ylabel='y', zlabel='z'>)	rC   rD   rE   	set_labelry   
set_xlabel
set_ylabel
set_zlabelreprrG   s     r-   test_axes3d_reprr   i   sx    
**,C	D	)BLLLLMM#MM#MM#8	IJ J Jr/   zaxes3d_primary_views.pngdarwin皙?)r   tolc                  n   / SQn [         R                  " SSSS0S9u  p[        UR                  5       Hi  u  p4UR	                  S5        UR                  S5        UR                  S	5        UR                  S
5        UR                  X   S   X   S   X   S   S9  Mk     [         R                  " 5         g )N))Z   r   r   r   r   r   r   r   )r   r   r   r   r   r   r      r   r   rn   r5   r3   r6   rY   rZ   r[   orthor   r   elevazimroll)
rC   r8   rx   flatr   r   r   set_proj_type	view_inittight_layout)viewsrH   re   r~   r'   s        r-   test_axes3d_primary_viewsr   v   s    E ||AqlD-ABHC388$
c
c
c
!
%(1+EHQKehqkJ % r/   z	bar3d.pngc                  &   [         R                  " 5       n U R                  SS9n[        / SQ/ SQ5       HY  u  p#[        R
                  " S5      n[        R
                  " S5      nU/[        U5      -  nSUS'   UR                  XEUSS	US
S9  M[     g )Nr3   r4   )r)   gbrZ   )      
   r   r   cr   rZ   edge皙?)zszdiraligncoloralpha)rC   rD   rE   r&   r   aranger   bar)rH   r'   r   r[   xsyscss          r-   
test_bar3dr      s{    
**,C	D	)B(/:YYr]YYr]S3r7]1
r!#V2SI ;r/   c                     [         R                  " 5       n U R                  SS9nS Hb  n[        R                  " [        U5      5      n[        R                  " U5      n[        R                  " U5      nUR                  X4USSSUS9  Md     g )Nr3   r4   )redgreenblueyellowr   r   )rC   rD   rE   r   r   r   
zeros_likebar3d)rH   r'   r   r   r   r   s         r-   test_bar3d_colorsr      so    
**,C	D	)B/YYs1v]]2]]2 	Q1A. 0r/   zbar3d_shaded.pngc                  <   [         R                  " S5      n [         R                  " S5      n[         R                  " X5      u  p#UR                  5       UR                  5       p2X#-   S-   n/ SQn[        R
                  " [        R                  " S[        U5      -  5      S9nUR                  S[        U5      [        SS9S9n[        Xu5       H0  u  nu  pnUR                  X#US	-  SSUS
S9  UR                  XUS9  M2     UR                  R                  5         g )Nrt   rp   r   ))r   r   )r   r   r   )r   r   ),  r   r   r   r3   r4   r6   r   Tshader   )r   r   meshgridravelrC   rD   	figaspectr   r8   r9   r&   r   r   canvasdraw)rY   rZ   x2dy2dr[   r   rH   re   r'   r   r   r   s               r-   test_bar3d_shadedr      s    
		!A
		!A{{1 HCyy{CIIK	AAGE
**S]]1s5z>:
;C
,,	3u:4(  C #&c/T
37Aq!48
$5 #2 JJOOr/   zbar3d_notshaded.pngc            
      |   [         R                  " 5       n U R                  SS9n[        R                  " S5      n[        R                  " S5      n[        R
                  " X#5      u  pEUR                  5       UR                  5       pTXE-   nUR                  XEUS-  SSUSS9  U R                  R                  5         g )	Nr3   r4   rt   rp   r   r   Fr   )
rC   rD   rE   r   r   r   r   r   r   r   )rH   r'   rY   rZ   r   r   r[   s          r-   test_bar3d_notshadedr      s    
**,C	D	)B
		!A
		!A{{1 HCyy{CIIK	AHHSsQw1auH5JJOOr/   c                  N   [         R                  " 5       n U R                  SSSSS9n[        R                  " SSS9nSu  p4X4-  n[
        R                  " [
        R                  " U5      [
        R                  " U5      5      u  pgUR                  5       nUR                  5       nXg-   n[        U5       V	s/ s H  n	[        R                  " X-  5      PM     n
n	UR                  XgSSSUU
SUS	9	n[
        R                  R                  XR                  SS S
2   S5        g s  sn	f )Nr   r3   r4   r   r   )azdegaltdeg)rn   rt   T)	rY   rZ   r[   dxdydzr   r   lightsource   rt   )rC   rD   rE   mcolorsLightSourcer   r   r   r   ranger   coolwarmr   testingassert_array_max_ulp_facecolor3d)rH   r'   lslengthwidtharearY   rZ   r   r~   r   
collections               r-   test_bar3d_lightsourcer      s    
**,C	AqT	2B			1R	0BMF>D;;ryy("))E*:;DA		A		A	
B*/+6+QR[[ +E6Aa1 %Tr  CJ JJ##E+B+B14a4+H!L 7s   7"D"zcontour3d.pngx86_64gMb`?c            	         S[         R                  S'   [         R                  " 5       n U R                  SS9n[        R
                  " S5      u  p#nUR                  X#USS[        R                  S9  UR                  X#US	S
[        R                  S9  UR                  X#USS[        R                  S9  UR                  S
SS
SSSS9  g )NTaxes3d.automarginr3   r4   r   r[   r   offsetcmaprY   rZ   (   d   )xminxmaxyminymaxzminzmax)
rC   rcParamsrD   rE   r   get_test_datacontourr   r   rR   rH   r'   XYZs        r-   test_contour3dr      s     )-CLL$%
**,C	D	)B""4(GA!JJqQSBKKJ@JJqQS2;;J?JJqQS"++J>GG2Cbt#GFr/   zcontour3d_extend3d.pngc            
      T   S[         R                  S'   [         R                  " 5       n U R                  SS9n[        R
                  " S5      u  p#nUR                  X#USS[        R                  SS9  UR                  S	S
5        UR                  SS5        UR                  SS5        g )NTr   r3   r4   r   r[   r   )r   r   r   extend3dr   r   r   P   )rC   r   rD   rE   r   r   r   r   r   set_xlimset_ylimset_zlimr   s        r-   test_contour3d_extend3dr     s    (,CLL$%
**,C	D	)B""4(GA!JJqQSBKK$JOKKRKKRKKRr/   zcontourf3d.pngc            	         S[         R                  S'   [         R                  " 5       n U R                  SS9n[        R
                  " S5      u  p#nUR                  X#USS[        R                  S9  UR                  X#US	S
[        R                  S9  UR                  X#USS[        R                  S9  UR                  S
S5        UR                  S
S5        UR                  SS5        g )NTr   r3   r4   r   r[   r   r   rY   r   rZ   r   r   )rC   r   rD   rE   r   r   contourfr   r   r  r  r  r   s        r-   test_contourf3dr
     s    (,CLL$%
**,C	D	)B""4(GA!KKac$R[[KAKKac#BKKK@KKac"2;;K?KKRKKRKKcr/   zcontourf3d_fill.pngc            	         S[         R                  S'   [         R                  " 5       n U R                  SS9n[        R
                  " [        R                  " SSS5      [        R                  " SSS5      5      u  p#UR                  SS5      nS	US S S
2S S S
24'   UR                  X#USSS/[        R                  S9  UR                  SS5        UR                  SS5        UR                  SS5        g )NTr   r3   r4   r         ?r   皙?rp   皙)r   levelsr   ro   r   )rC   r   rD   rE   r   r   r   clipr	  r   r   r  r  r  r   s        r-   test_contourf3d_fillr    s    (,CLL$%
**,C	D	)B;;ryyQ-ryyQ/EFDA	q!A Acc3Q3hKKKa4)"++KFKKAKKAKKAr/   zextend, levelsrW   )r   rt   r   min)r   rt   r      max)r   r   rt   r   c                 f   [         R                  " [         R                  " SSS5      [         R                  " SSS5      5      u  pEUS-  US-  -   n[        R                  S   R                  5       nUR                  U" S5      5        UR                  U" S5      5        SSUS	.nUR                  S
S9n	U	R                  " XEU4S/ SQ0UD6  U R                  S
S9n
U
R                  " XEXc4SU0UD6  X4 H9  nUR                  SS5        UR                  SS5        UR                  SS5        M;     g )Nr  r   r  viridisr      r      )vminvmaxr   r3   r4   r  )r   r   rt   r   r  extendr   )r   r   r   mpl	colormapscopy	set_underset_overrE   r	  r  r  r  )r<   r=   r  r  r   r   r   r   kwargsax_refax_testr'   s               r-   test_contourf3d_extendr&    s   
 ;;ryyQ-ryyQ/EFDA	1q!tA ==#((*DNN47MM$s)D1F  D 1F
OOA!>O>v>""d"3GQ1>V>v>
B
B
C  r/   ztricontour.png{Gz?)r   r   c                     S[         R                  S'   [         R                  " 5       n [        R                  R                  S5        [        R                  R                  S5      S-
  n[        R                  R                  S5      S-
  nUS-  US-  -   * nU R                  SSSSS	9nUR                  XU5        U R                  SSSSS	9nUR                  XU5        g )
NTr   i!N,        ?r   r   r3   r4   )
rC   r   rD   r   randomseedrandrE   
tricontourtricontourf)rH   rY   rZ   r[   r'   s        r-   test_tricontourr0  3  s    (,CLL$%
**,CIINN8
		ts"A
		ts"A
Q$A+A	AqT	2BMM!	AqT	2BNN1r/   c                      [         R                  " 5       n U R                  SS9nSu  p#[        R                  " SSU5      n[        R                  " SSU5      n[        R
                  R                  SSX2/5      nUR                  XEUS/5        g )	Nr3   r4   )r   r   r  r   r   r   r*  )rC   rD   rE   r   linspacer+  randintr   )rH   r'   nxnyrY   rZ   r[   s          r-   test_contour3d_1d_inputr6  C  st    
**,C	D	)BFB
CR A
CR A
		!Q)AJJqQr/   zlines3d.pngc                     [         R                  " 5       n U R                  SS9n[        R                  " S[        R
                  -  S[        R
                  -  S5      n[        R                  " SSS5      nUS-  S-   nU[        R                  " U5      -  nU[        R                  " U5      -  nUR                  XVU5        g )	Nr3   r4   rt   r   r  r   r   )	rC   rD   rE   r   r2  pisincosplot)rH   r'   thetar[   r)   rY   rZ   s          r-   test_lines3dr>  N  s    
**,C	D	)BKKRUU
AIs3E
B3A	Q
A	BFF5MA	BFF5MAGGA!r/   c                     U R                  SS9nUR                  S/S/S5        UR                  SS9nUR                  SSS5        g )Nr3   r4   r   orE   r<  r<   r=   ax1ax2s       r-   test_plot_scalarrE  Z  sL    


$

/CHHaS1#s




.CHHQ3r/   c                     [         R                  " [        SS9   [        R                  " S/ / 5        S S S 5        [         R                  " [        SS9   [        R                  " / S/ 5        S S S 5        [         R                  " [        SS9   [        R                  " / / S5        S S S 5        [        R                  " / / / 5      n [         R                  " [        SS9   U R                  S/ / 5        S S S 5        [         R                  " [        SS9   U R                  / S/ 5        S S S 5        [         R                  " [        SS9   U R                  / / S5        S S S 5        g ! , (       d  f       GN;= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nz	x must bematchr   z	y must bez	z must be)pytestraisesRuntimeErrorr   Line3Dset_data_3d)rQ   s    r-   test_invalid_line_datarN  b  s   	|;	7QB 
8	|;	7RB 
8	|;	7RQ 
8 <<B#D	|;	7B# 
8	|;	7Q# 
8	|;	7R# 
8	7 
8	7	7	7	7	7 
8	7	7	7	7	7sG   E'E9F FF-
F>'
E69
F
F
F*-
F;>
Gzmixedsubplot.pngc            
         S n [         R                  " SSS5      n[         R                  " SSS5      nS[        R                  S'   [        R                  " [        R
                  " S5      S	9nUR                  S
SS5      nUR                  X" U5      SX " U5      SSS9  UR                  S5        UR                  S
SS
SS9n[         R                  " [         R                  " SSS5      [         R                  " SSS5      5      u  pV[         R                  " XV5      n[         R                  " U5      nUR                  XVUSSSSS9  UR                  SS5        g )Nc                     [         R                  " S[         R                  -  U -  5      [         R                  " U * 5      -  $ )Nr   )r   r;  r9  exp)ts    r-   ftest_mixedsubplots.<locals>.fu  s,    vvagai 2661":--r/                 @r  r'  Tr          @r   r   r   bozk--r   )markerfacecolorr3   r4   rp   r  r   r   F)rcountccount	linewidthantialiasedro   )r   r   rC   r   rD   r   rE   r<  rF   r   hypotr:  plot_surface
set_zlim3d)	rS  t1t2rH   r'   r   r   Rr   s	            r-   test_mixedsubplotsre  s  s   . 
3S	!B	3T	"B(,CLL$%
**S]]2.
/C	Aq	!BGGB"tR2wGGGGDM	AqT	2B;;ryyQ-ryyQ/EFDA
A
q	AOOA!BrU  4 MM"ar/   c                     U R                  SS9nUR                  SSSSS9  U R                  5         UR                  SS9nUR                  5         UR                  SSSSS9  g )Nr3   r4   r*  zsome strings)rE   textr   rB  s       r-   test_tight_layout_textrj    sj     

$

/CHHRR=H)




.CHHRR=H)r/   zscatter3d.pngc                     S[         R                  S'   [         R                  " 5       n U R                  SS9nUR	                  [
        R                  " S5      [
        R                  " S5      [
        R                  " S5      SSS9  [
        R                  " SS	5      =n=p4UR	                  X#US
SS9  SUS'   UR	                  / / / SSS9  g )NTr   r3   r4   r   r)   r@  )r   markerr   r   ^r   ro   r   rC   r   rD   rE   scatterr   r   rH   r'   rY   rZ   r[   s        r-   test_scatter3drq    s    (,CLL$%
**,C	D	)BJJryy}biimRYYr]S  "		"b!!A!JJqQ#cJ*AbEJJr2rSJ-r/   zscatter3d_color.pngc            	      V   S[         R                  S'   [         R                  " 5       n U R                  SS9nUR	                  [
        R                  " S5      [
        R                  " S5      [
        R                  " S5      SSSS	9  UR	                  [
        R                  " S5      [
        R                  " S5      [
        R                  " S5      SSSS	9  UR	                  [
        R                  " SS
5      [
        R                  " SS
5      [
        R                  " SS
5      SSS9  g )NTr   r3   r4   r   r)   rX   r@  )	facecolor	edgecolorrl  r   r   rh  )r   rl  rn  rG   s     r-   test_scatter3d_colorru    s    (,CLL$%
**,C	D	)B JJryy}biimRYYr]s  <JJryy}biimRYYr]3s  < JJryyR "))B"3RYYr25F  &r/   zscatter3d_linewidth.pngc            	         [         R                  " 5       n U R                  SS9nUR                  [        R
                  " S5      [        R
                  " S5      [        R
                  " S5      S[        R
                  " S5      S9  g )Nr3   r4   r   r@  )rl  r]  )rC   rD   rE   ro  r   r   rG   s     r-   test_scatter3d_linewidthrw    s[    
**,C	D	)B JJryy}biimRYYr]RYYr]  4r/   c           	         UR                  SS9nUR                  [        R                  " S5      [        R                  " S5      [        R                  " S5      SS9nUR	                  [        R                  " S5      5        U R                  SS9nUR                  [        R                  " S5      [        R                  " S5      [        R                  " S5      S[        R                  " S5      S9  g )Nr3   r4   r   r@  rl  )rl  
linewidths)rE   ro  r   r   set_linewidthsr=   r<   r%  r   r$  s        r-   %test_scatter3d_linewidth_modificationr}    s     ""d"3G		"ryy}biim" 	 	$ARYYr]#  D 1F
NN299R="))B-2s iim  -r/   c                    UR                  SS9nUR                  [        R                  " S5      [        R                  " S5      [        R                  " S5      SS9nUR	                  S5        UR                  S5        UR                  SS	/S
-  5        UR                  5       (       d   eUR                  S5        UR                  5       (       a   eUR                  [        R                  " SS5      5        UR                  S5        U R                  SS9nUR                  [        R                  " S5      [        R                  " S5      [        R                  " S5      SSSSS	/S
-  SSSS9
  g )Nr3   r4   r   r@  ry  C1C2333333?ffffff?rp   FK   rn   )rl  rs  rt  r   
depthshaderh  rz  )rE   ro  r   r   set_facecolorset_edgecolor	set_alphaget_depthshadeset_depthshade	set_sizesfullr{  r|  s        r-   test_scatter3d_modificationr    s-    ""d"3G		"ryy}biim" 	 	$AOODOODKKc
QU!!!!KKB Q  D 1F
NN299R="))B-2s!T#sa#ra  9r/   r  c                 b   [         R                  SS2SS24   u  p4[         R                  " UR                  5      R	                  UR
                  5      n[         R                  " UR
                  S5      nSUSSS2SSS24'   SUSSS2SSS24'   [         R                  " UR
                  S5      nS	USS
2SS
24'   SUSS2SS24'   SUSS2SS24'   [         R                  " UR
                  S5      nSUSS
2SS
24'   SUS
S2SS
24'   SUS
S2S
S24'   [         R                  " UR
                  S5      n	S
U	SSS2SSS24'   S
U	SSS2SSS24'   S XCXVXxU	4 5       u  pCpVpxn	U R                  SS9n
S XgX4 5       n[        R                  " U6  H{  u  ppXl:g  X}:g  -  X:g  -  X:g  -  n[         R                  R                  UU[        S9n[         R                  " U[        UR                  ) 5      5      nU
R!                  XCUXXSUS9	  M}     UR                  SS9nUR!                  XCXVXxU	SUS9	  g)z1Test that marker properties are correctly sorted.Nr      r   r   r   r   C0r  rp   r  r   rt   C3C4C5C6	   C7c              3   B   #    U  H  nUR                  5       v   M     g 7fN)r`   .0as     r-   	<genexpr>)test_scatter3d_sorting.<locals>.<genexpr>  s      :EA 	
		Es   r3   r4   c              3   N   #    U  H  n[         R                  " U5      v   M     g 7fr  )r   uniquer  s     r-   r  r    s     N"MQBIIaLL"Ms   #%dtype)rh  fceclwr   r  )r   mgridr   sizereshapeshaper  rE   r   r"   mamasked_arrayfloatrepeatr#   maskro  )r=   r<   r  rZ   rY   r[   sizes
facecolors
edgecolorsrz  r$  setsrh  r  r  r  subsetr%  s                     r-   test_scatter3d_sortingr    s   
 88CRC"HDA
		!&&!!!''*AGGAGGR EE!$Q$1*E!$Q$1*$'JJrr2A2vJqr2A2vJqr12v$'JJqsAaCxJqsAaCxJqsAaCx!$JJqt!tQTTzJqt!tQTTz:**E:6A!JJ
   D 1FN5j"MND"**D1rZ  	 ##AvU#; YYr3|,-qVqBQ", 	 	. 2$ ""d"3GOOA!!z  Cr/   r      c           
         SS/nSS/nSS/nSS/nU R                  SS9nUR                  X4USUS	9  UR                  SUSS
9  UR                  SS9nUR                  USSS2   USSS2   USSS2   SUSSS2   S	9  UR                  SUSS
9  g)z
Test that the draw order does not depend on the data point order.

For the given viewing angle at azim=-50, the yellow marker should be in
front. For azim=130, the blue marker should be in front.
ro   r   r   r   rZ   r3   r4     rh  r   r   N)rE   ro  r   r<   r=   r   rY   rZ   r[   r   r'   s           r-   $test_marker_draw_order_data_reversedr    s     
QA	
BA	
AA#JE					.BJJqQ$%J(LLadL+					-BJJq2w$B$4R4DE$B$KJ@LLadL+r/   c           
      B   SnSS/nSS/nSS/nSS/nU R                  SS9nUR                  5         UR                  X4US	US
9  UR                  SUSS9  UR                  SS9nUR                  5         UR                  X4US	USSS2   S
9  UR                  SUS-
  SS9  g)z
Test that the draw order changes with the direction.

If we rotate *azim* by 180 degrees and exchange the colors, the plot
plot should look the same again.
r  ro   r   r   r   rZ   r3   r4   r  r  r   Nr   )rE   set_axis_offro  r   r  s           r-   #test_marker_draw_order_view_rotatedr  2  s     D	QA	
BA	
AA#JE					.BOOJJqQ$%J(LLadL+					-BOOJJqQ$%"+J.LLadSjqL1r/   zplot_3d_from_2d.pngg~jt?c                      [         R                  " 5       n U R                  SS9n[        R                  " SS5      n[        R                  " SS5      nUR                  X#SSS9  UR                  X#SSS9  g )	Nr3   r4   r   rp   r   rY   r   r   rZ   )rC   rD   rE   r   r   r<  )rH   r'   r   r   s       r-   test_plot_3d_from_2dr  J  s`    
**,C	D	)B	1aB	1b	BGGBqsG#GGBqsG#r/   zfill_between_quad.pngc                      [         R                  " 5       n U R                  SS9n[        R                  " SS[        R
                  -  S5      n[        R                  " U5      n[        R                  " U5      nS[        R                  " SU-  5      -  nS[        R                  " U5      -  nS[        R                  " U5      -  nSnU[        R
                  S-  :  US	[        R
                  -  S-  :  -  n	UR                  X4XVXxU	S
SSS9
  g )Nr3   r4   r   r   2   r  r   333333?rn   ri   r*  k)wheremoder   rt  )	rC   rD   rE   r   r2  r9  r;  r:  fill_between)
rH   r'   r=  x1y1z1x2y2z2r  s
             r-   test_fill_between_quadr  T  s    
**,C	D	)BKK1RUU7B'E	B	B	rvva%i 	 B	rvve}	B	rvve}	B	
BRUU1W_255!23E OOBBBfC3  Hr/   zfill_between_polygon.pngc                  h   [         R                  " 5       n U R                  SS9n[        R                  " SS[        R
                  -  S5      nU=p4S=pV[        R                  " U5      nUS-   nU[        R
                  S-  :  US[        R
                  -  S-  :  -  n	UR                  X5XtXhU	SS	S
9	  g )Nr3   r4   r   r   r  r   rn   ri   r  )r  r  rt  )rC   rD   rE   r   r2  r9  r;  r  )
rH   r'   r=  r  r  r  r  r  r  r  s
             r-   test_fill_between_polygonr  k  s    
**,C	D	)BKK1RUU7B'EOBKB	B	aBRUU1W_255!23E OOBBBf  =r/   zsurface3d.pngc                     S[         R                  S'   [         R                  " 5       n U R                  SS9n[        R
                  " SSS5      n[        R
                  " SSS5      n[        R                  " X#5      u  p#[        R                  " X#5      n[        R                  " U5      nUR                  X#USS[        R                  S	SS
9nS[         R                  S'   UR                  SS5        U R                  USSS9  g )NFzpcolormesh.snapr3   r4   rZ  rp   r  r   r   )r[  r\  r   r  r^  Tr   )\()\(?r*  )shrinkaspect)rC   r   rD   rE   r   r   r   r_  r:  r`  r   r   r  colorbar)rH   r'   r   r   rd  r   surfs          r-   test_surface3dr  ~  s     ',CLL"#
**,C	D	)B
		"aA
		"aA;;qDA
A
q	A??12br{{U  4D(,CLL$%KKtLLc!L,r/   z(surface3d_label_offset_tick_position.pngc            	      6   S[         R                  S'   [         R                  " 5       R                  SS9n [        R
                  SS[        R                  -  S2SS[        R                  -  S24   u  p[        R                  " [        R                  " [        R                  " U5      [        R                  " U5      -   5      5      nU R                  US	-  US
-  US-  SSSS9  U R                  S5        U R                  S5        U R                  S5        g )NTr   r3   r4   r   r   r  rt   g     j@g    .Ag    חAautumnr   )r   cstriderstridezX labelzY labelzZ label)rC   r   rD   rE   r   r  r9  sqrtr$   r;  r`  r   r   r   )r'   rY   rZ   r[   s       r-   )test_surface3d_label_offset_tick_positionr    s    (,CLL$%		!	!T	!	2B88Aa"%%i$aBEE	$&667DA
rvvay266!9,-.AOOAGQWa#gHaQROSMM)MM)MM)r/   zsurface3d_shaded.pngc                     [         R                  " 5       n U R                  SS9n[        R                  " SSS5      n[        R                  " SSS5      n[        R
                  " X#5      u  p#[        R                  " US-  US-  -   5      n[        R                  " U5      nUR                  X#USS/ SQSS	S
9  S[         R                  S'   UR                  SS5        g )Nr3   r4   rZ  rp   r  r   )r  r   r  r   F)r  r  r   r  r^  Tr   r  r  )rC   rD   rE   r   r   r   r  r:  r`  r   r  )rH   r'   r   r   rd  r   s         r-   test_surface3d_shadedr    s    
**,C	D	)B
		"aA
		"aA;;qDA
Qa A
q	AOOA!Q)aU  D(,CLL$%KKtr/   zsurface3d_masked.pngc                     [         R                  " 5       n U R                  SS9n/ SQn/ SQn[        R                  " X#5      u  p#[        R
                  " / SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/5      n[        R                  R                  US5      n[        R                  " UR                  5       UR                  5       S9n[        R                  S   " U" U5      5      nUR                  X#XWS9  UR                  SSS5        g )Nr3   r4   )r   r   rn   rt   rp   r   r  r  r  r   r   )r   r   rn   rt   rp   r   r  r  )ro   r   r   r   r   r   r   r   r   r   r   )ro   r   r   rn   rt   rt   rt   rn   r   r   r   )ro         rt   rp   r   r  r   rp   rt   rn   r  )ro   r  r  r  r      r   r  r  r  r  )ro   r  r  r  r      r   r  r   r  r  )ro   r  r  r  r  r   r  r  r   r  r  )ro   r  r  r        r  r      r  r  )ro   r  r  r  r        r  r  r  r  r   )r  r  plasmar  r   r  )rC   rD   rE   r   r   r    r  masked_lessr   	Normalizer  r  r  r  r`  r   )rH   r'   rY   rZ   matrixr[   normr   s           r-   test_surface3d_maskedr    s    
**,C	D	)B+A A;;qDAXX..276<=?		
F 	&!$A!%%'8D]]8$T!W-FOOA!O/LLS!r/   c                    [         R                  " SSS5      n[         R                  " SSS5      n[         R                  " U5      [         R                  " U5      -  nUS:  n[         R                  R                  XES9nU R                  SS9nUR                  X#U5        UR                  X#U5        [         R                  =X%'   =X5'   XE'   UR                  SS9nUR                  X#U5        UR                  X#U5        g )Nr   r   r   )r  r3   r4   )
r   r2  r:  r;  r  r    rE   ro  r<  nan)	r<   r=   rY   rZ   r[   r  z_maskedr%  r$  s	            r-   test_plot_scatter_masksr    s    
Ar3A
Ar3A
q	BFF1IAq5Duu{{1{(H""d"3GOOA(#LLx "$&&(AG(ag  D 1F
NN1
KKar/   c                    [         R                  " [         R                  " S5      [         R                  " S5      5      u  p#X#-   nU R                  SS9nUR	                  X#US S9  UR                  SS9nUR	                  X#U5        g )Nrp   r3   r4   r  )r   r   r   rE   r`  )r<   r=   rY   rZ   r[   r%  r$  s          r-   test_plot_surface_None_argr    sv    ;;ryy|RYYq\2DA	A""d"3GqT2  D 1F
a r/   zsurface3d_masked_strides.pngc                     [         R                  " 5       n U R                  SS9n[        R                  SSS2SSS24   u  p#[        R
                  R                  X#-  S5      nUR                  X#USSS9  UR                  S	S
S5        g )Nr3   r4   igffffff@r   r   rt   r  r  <   r   )	rC   rD   rE   r   r  r  r  r`  r   rp  s        r-   test_surface3d_masked_stridesr    sz    
**,C	D	)B88Bs1HbQh&'DA
!%#AOOA!QO2LLS!r/   z
text3d.pngc                     [         R                  " 5       n U R                  SS9nSnSnSnSn[        X#XE5       H   u  pgpSXxX4-  n
UR	                  XxXU5        M"     UR	                  SSSS	S	S
9  UR                  SSSUR                  S9  S[         R                  S'   UR                  SS5        UR                  SS5        UR                  SS5        UR                  S5        UR                  S5        UR                  S5        g )Nr3   r4   NrY   rZ   r[   r   r   r   rr   r   r   rt   r  r  r   r   rt   r  r  r   r   rt   r   rp   r   r   r  z(%d, %d, %d), dir=%sr   r   r   r   gffffff?z2D Text)	transformTr   r   r   zX axiszY axiszZ axis)rC   rD   rE   r&   ri  text2D	transAxesr   
set_xlim3d
set_ylim3dra  r   r   r   )rH   r'   zdirsr   r   r   r   rY   rZ   r[   r   s              r-   test_text3dr    s    
**,C	D	)B7E	B	B	BU/&!8
a% 0 GGAq!U%G(IIdD)r||I<(,CLL$%MM!RMM!RMM!RMM(MM(MM(r/   c                     SnSnSnSnUR                  SS9nUR                  SS5        UR                  SS5        UR                  SS5        [	        X#XE5       H8  u  pxpUR                  SSSS	U S
U	 S
U
 SU 35      nUR                  XU
4US9  M:     U R                  SS9nUR                  SS5        UR                  SS5        UR                  SS5        [	        X#XE5       H$  u  pxpUR                  XU
S	U S
U	 S
U
 SU 3US9  M&     g )Nr  r  r  r   r3   r4   r   r   (z, z), dir=)r   )rE   r  r  ra  r&   ri  set_position_3d)r=   r<   r  r   r   r   r%  r   rY   rZ   r[   rR  r$  s                r-   test_text3d_modificationr  
  s;    8E	B	B	B""d"3Gq"q"q"U/LLAqAaS1#Rs'$"@A	1)$/ 0   D 1F
a
a
aU/A!q2aS1#WTF;$G 0r/   ztrisurf3d.pnggZd;?c                     Sn Sn[         R                  " SSU5      n[         R                  " SS[         R                  -  U SS9n[         R                  " US	[         R                  4   US
S9nUS S 2S
S S24==   [         R                  U -  -  ss'   [         R
                  " SU[         R                  " U5      -  R                  5       5      n[         R
                  " SU[         R                  " U5      -  R                  5       5      n[         R                  " U* U-  5      n[        R                  " 5       nUR                  SS9nUR                  XEU[        R                  SS9  g )N$   r        ?      ?r   r   Fendpoint.r   rR   r3   r4   皙?)r   r]  )r   r2  r9  r  newaxisappendr;  r`   r:  rC   rD   rE   plot_trisurfr   jet	n_anglesn_radiiradiianglesrY   rZ   r[   rH   r'   s	            r-   test_trisurf3dr  #  s   HGKKsG,E[[AbeeGX>FYYvc2::o.a@F
1add7OruuX~%O
		!eBFF6N*3356A
		!eBFF6N*3356A
r!tA
**,C	D	)BOOA!"&&CO8r/   ztrisurf3d_shaded.pngQ?c                     Sn Sn[         R                  " SSU5      n[         R                  " SS[         R                  -  U SS9n[         R                  " US	[         R                  4   US
S9nUS S 2S
S S24==   [         R                  U -  -  ss'   [         R
                  " SU[         R                  " U5      -  R                  5       5      n[         R
                  " SU[         R                  " U5      -  R                  5       5      n[         R                  " U* U-  5      n[        R                  " 5       nUR                  SS9nUR                  XEU/ SQSS9  g )Nr  r  r  r  r   r   Fr  .r   r  r3   r4   )r   r*  r   r  )r   r]  )r   r2  r9  r  r  r  r;  r`   r:  rC   rD   rE   r  r  s	            r-   test_trisurf3d_shadedr   5  s   HGKKsG,E[[AbeeGX>FYYvc2::o.a@F
1add7OruuX~%O
		!eBFF6N*3356A
		!eBFF6N*3356A
r!tA
**,C	D	)BOOA!;#O>r/   zwireframe3d.pngc                      [         R                  " 5       n U R                  SS9n[        R                  " S5      u  p#nUR                  X#USSS9  g )Nr3   r4   r      r[  r\  rC   rD   rE   r   r   plot_wireframer   s        r-   test_wireframe3dr&  G  sH    
**,C	D	)B""4(GA!aAb4r/   zwireframe3dzerocstride.pngc                      [         R                  " 5       n U R                  SS9n[        R                  " S5      u  p#nUR                  X#USSS9  g )Nr3   r4   r   r"  r   r#  r$  r   s        r-   test_wireframe3dzerocstrider(  O  sH    
**,C	D	)B""4(GA!aAb3r/   zwireframe3dzerorstride.pngc                      [         R                  " 5       n U R                  SS9n[        R                  " S5      u  p#nUR                  X#USSS9  g )Nr3   r4   r   r   r   r  r$  r   s        r-   test_wireframe3dzerorstrider*  W  sH    
**,C	D	)B""4(GA!aAq"5r/   c            	      
   [         R                  " 5       n U R                  SS9n[        R                  " S5      u  p#n[
        R                  " [        5         UR                  X#USSS9  S S S 5        g ! , (       d  f       g = f)Nr3   r4   r   r   r  )	rC   rD   rE   r   r   rI  rJ  
ValueErrorr%  r   s        r-    test_wireframe3dzerostrideraisesr-  _  s`    
**,C	D	)B""4(GA!	z	"
!1a8 
#	"	"s   A44
Bc            	         [         R                  " 5       n U R                  SS9n[        R                  " S5      u  p#n[
        R                  " [        5         UR                  X#USSS9  S S S 5        [
        R                  " [        5         UR                  X#USSS9  S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nr3   r4   r   r   r  )r  r\  )r  r[  )
rC   rD   rE   r   r   rI  rJ  r,  r%  r`  r   s        r-   test_mixedsamplesraisesr/  g  s    
**,C	D	)B""4(GA!	z	"
!2b9 
#	z	"
aB7 
#	" 
#	"	"	"s   B)B:)
B7:
Czquiver3d.pngg~jth?c                     S[         R                  S'   [         R                  " 5       n U R                  SS9n/ SQn/ SQn[	        [        X#5      5       H]  u  nu  pV[        R                  " SS/SS/SS/5      u  pxn	U* n
U* nU	* nU	S	U-  -  n	UR                  XxXXS
XVS9	  UR                  XxXS9  M_     UR                  SS5        UR                  SS5        UR                  SS5        g )NTr   r3   r4   )tipmiddletail)ztab:bluez
tab:orangez	tab:green      r*  r   r   )r   pivotr   r   rn   ro   rp   )rC   r   rD   rE   rx   r&   r   r   quiverro  r  r  r  )rH   r'   pivotsr   r~   r5  r   rY   rZ   r[   uvws                r-   test_quiver3dr<  r  s    (,CLL$%
**,C	D	)B&F4F&s6':;>E++tSkD#;sDaBBB	QU

		!a1E	G


1
( < KKAKKAKKAr/   c                 ~    UR                  SS9  / =n=n=n=n=pgU R                  SS9nUR                  X#XEXgSSSS9	  g )Nr3   r4   r  r1  Tr   r5  	normalize)rE   r7  )	r<   r=   rY   rZ   r[   r9  r:  r;  r'   s	            r-   test_quiver3d_emptyr@    sZ    4(AAA					.BIIaA!s%4IHr/   zquiver3d_masked.pngc                  *   [         R                  " 5       n U R                  SS9n[        R                  SSS2SSS2SSS24   u  p#n[        R
                  " [        R                  U-  5      [        R                  " [        R                  U-  5      -  [        R                  " [        R                  U-  5      -  n[        R                  " [        R                  U-  5      * [        R
                  " [        R                  U-  5      -  [        R                  " [        R                  U-  5      -  nS[        R                  " [        R                  U-  5      -  [        R                  " [        R                  U-  5      -  [        R
                  " [        R                  U-  5      -  n[        R                  R                  S	U:  US
:  -  USS9n[        R                  R                  S
U:  US:  -  USS9nUR                  X#XEXgS
SSS9	  g )Nr3   r4   ro   r   y              $@r  y              @g>,p ?皙ٿr  F)r   r  r1  Tr>  )rC   rD   rE   r   r  r:  r9  r;  r  masked_wherer7  )rH   r'   rY   rZ   r[   r9  r:  r;  s           r-   test_quiver3d_maskedrD    s   
**,C	D	)B hhr#cz2c#:r#by89GA!
ruuqyBFF25519--ruuqy0AAA			RVVBEEAI..	1BBARVVBEEAI&&	)::RVVBEEAI=NNA
D1HS115AA
C!GC0!%@AIIaA!s%4IHr/   zquiver3d_colorcoded.pngc            
      V   [         R                  " 5       n U R                  SS9n[        R                  " S5      =n=n=pE[        R
                  " S5      =pg[         R                  R                  XwR                  5       -  5      nUR                  X#XdXuUS9  UR                  SS5        g )Nr3   r4   r         $@)r   r   )rC   rD   rE   r   zerosr   r   Redsr  r7  r  )	rH   r'   rY   rZ   r   r   r[   r   r   s	            r-   test_quiver3d_colorcodedrI    s    
**,C	D	)Bhhrl"A""BYYs^AFFKK668$EIIaA2%I0KK2r/   c                     [         R                  " 5       n U R                  SS9n[        S5      nUR	                  U5        [
        R                  " U5        UR                  S5        [        R                  " UR                  5       S5      (       d   eU R                  R                  5         [        R                  " UR                  5       S5      (       d   eg )Nr3   r4   r   r   )r  rU  rU  r   )r   r   r   r   )rC   rD   rE   r   	add_patchr   patch_2d_to_3dr  r   
same_colorget_facecolorr   r   )rH   r'   circles      r-   test_patch_modificationrQ    s    
**,C	D	)BF^FLL	 
+,f224lCCCCJJOOf224lCCCCr/   c           	         [        SS5      n[        SS5      n[        R                  " / SQ/ SQ/5      n[        R                  " X#/SS9nU R                  S	S
9nUR                  U5        UR                  S5        UR                  U5        UR                  S5        UR                  5       (       d   eUR                  S5        UR                  5       (       a   e[        SS5      n[        SS5      n[        R                  " / SQ/ SQ/5      n[        R                  " X#/SSUSSS9nUR                  S	S
9nUR                  U5        g )NrK  r   )r  r  r  )rU  r*  rU  r  )r*  rU  rU  r*  rn   )rz  r3   r4   r  r  F)rz  rt  rs  r   r  )r   r   r    r   Patch3DCollectionrE   add_collection3dr  r  r  r  r  )r<   r=   patch1patch2r  r   r%  r$  s           r-   "test_patch_collection_modificationrW    s4    FD!FJ%F,.@ABJ 0Q?A""d"3GQOODOOJKKU!!!!FD!FJ%F,.@ABJ 0Q*.*&)e	=A   D 1F
Ar/   c                  v   / SQ/ SQ/ SQ/ SQ/n [         R                  " [        SS9   [        R                  " U 5        S S S 5        [
        R                  " U [        S9n [         R                  " [        SS9   [        R                  " U 5        S S S 5        g ! , (       d  f       N`= f! , (       d  f       g = f)Nr   r   r   r   r   r   r   r   r   r   zlist of \(N, 3\) array-likerG  r  )rI  rJ  r,  r   Poly3DCollectionr   r    r  )polys    r-   &test_poly3dcollection_verts_validationr^    s    y)Y7D	z)G	Ht$ 
I 88D&D	z)G	Ht$ 
I	H	 
I	H 
I	Hs   B9B*
B'*
B8zpoly3dcollection_closed.pngc                     [         R                  " 5       n U R                  SS9n[        R                  " / SQ/ SQ/ SQ/[
        5      n[        R                  " / SQ/ SQ/ SQ/[
        5      n[        R                  " U/SS	S
SS9n[        R                  " U/SS	SSS9nUR                  USS9  UR                  USS9  g )Nr3   r4   rY  rZ  r   rr   r  rn   r  )r*  r*  r   r*  Trz  rt  rs  closed)r   r*  r*  r*  Fautolim)	rC   rD   rE   r   r    r  r   r\  rT  rH   r'   poly1poly2c1c2s         r-   test_poly3dcollection_closedri    s    
**,C	D	)BHHiI6>EHHiI6>E			A*<T
KB			A*<U
LBE*E*r/   c                     [        / 5      n [        R                  " U 5        [        U [        R                  5      (       d   eU R                  5       / :X  d   e[        R                  " [        SS9S9u  pUR                  U 5        U R                  5       n[        R                  " U5      (       d   eUR                  R                  5         g )Nr3   r4   r6   )r   r   poly_collection_2d_to_3d
isinstancer\  	get_pathsrC   r8   r9   
add_artistdo_3d_projectionr   isnanr   r   )r]  rH   r'   minzs       r-   #test_poly_collection_2d_to_3d_emptyrr    s    "D	""4(dE223333>>r!!!lldd&;<GCMM$  "D88D>>> JJOOr/   zpoly3dcollection_alpha.pngc                     [         R                  " 5       n U R                  SS9n[        R                  " / SQ/ SQ/ SQ/[
        5      n[        R                  " / SQ/ SQ/ SQ/[
        5      n[        R                  " U/SS	S
SS9nUR                  S5        [        R                  " U/SSS9nUR                  S5        UR                  S	5        UR                  S5        UR                  USS9  UR                  USS9  g )Nr3   r4   rY  rZ  r   rr   r  rn   r  r*  r*  r   Tr`  r*  F)rz  ra  )r   r*  r*  rb  )rC   rD   rE   r   r    r  r   r\  r  r  r  rT  rd  s         r-   test_poly3dcollection_alpharu     s    
**,C	D	)BHHiI6>EHHiI6>E			A*7
FBLL			Ae	DB]#SLLE*E*r/   zadd_collection3d_zs_array.pngc                     [         R                  " S[         R                  -  S[         R                  -  S5      n [         R                  " SSS5      nUS-  S-   nU[         R                  " U 5      -  nU[         R                  " U 5      -  n[         R
                  " X4U/5      R                  SSS5      n[         R                  " US S USS  /SS	9n[        R                  " 5       nUR                  S
S9n[        R                  " SS[         R                  -  5      n	[        US S 2S S 2S S24   SU	S9n
U
R                  [         R                  " U S[         R                  -  5      5        UR                  XS S 2S S 2S4   S9nUc   eS[        R                   S'   UR#                  SS5        UR%                  SS5        UR'                  SS5        g )Nr8  rt   r   r  r   r   ro   rn   r  r3   r4   r   twilightr   r  r   Tr   rZ  rp   r   )r   r2  r9  r:  r;  column_stackr  concatenaterC   rD   rE   r  r   	set_arraymodrT  r   r  r  r  r=  r[   r)   rY   rZ   pointssegmentsrH   r'   r  lcrQ   s               r-   test_add_collection3d_zs_arrayr    s{   KKRUU
AIs3E
B3A	1qA	BFF5MA	BFF5MA__aAY'//Aq9F~~vcr{F12J7a@H
**,C	D	)B==AbeeG$D	Arr*$	GBLLqw'(rq!Qw&78D(,CLL$%KKAKKAKKAr/   zadd_collection3d_zs_scalar.pngc                     [         R                  " SS[         R                  -  S5      n SnUS-  S-   nU[         R                  " U 5      -  nU[         R                  " U 5      -  n[         R
                  " X4/5      R                  SSS5      n[         R                  " US S USS  /SS9n[        R                  " 5       nUR                  SS9n[        R                  " SS[         R                  -  5      n	[        US	U	S
9n
U
R                  U 5        UR                  XS9nUc   eS[        R                  S'   UR!                  SS5        UR#                  SS5        UR%                  SS5        g )Nr   r   r   r   ro   r  r3   r4   rw  rx  ry  Tr   rZ  rp   r8  r   )r   r2  r9  r:  r;  rz  r  r{  rC   rD   rE   r  r   r|  rT  r   r  r  r  r~  s               r-   test_add_collection3d_zs_scalarr  0  s7   KK1ruu9c*E	A	1qA	BFF5MA	BFF5MA__aV$,,RA6F~~vcr{F12J7a@H
**,C	D	)B==AbeeG$D	z	=BLLr(D(,CLL$%KKAKKAKK1r/   c                     [         R                  " 5       n U R                  SS9nSS/SS/SS//n[        R                  " U5      nUR                  U5        [        R                  " UR                  5       S	5      (       d   e[        R                  " UR                  5       S
5      (       d   e[        R                  " UR                  5       S5      (       d   eg )Nr3   r4   r   )r   rt   r   r   r   rn   )r   r   r   r   r   rt   )r   rt   rp   )gUUUUUUgUUUUUU @)gUUUUUUUUUUUU@)ggj@)rC   rD   rE   r   Line3DCollectionrT  r   allclose
get_xlim3d
get_ylim3d
get_zlim3d)rH   r'   linesr  s       r-   !test_line3dCollection_autoscalingr  K  s    
**,C	D	)B###%E 
			&B;;r}}(STTTT;;r}}(QRRRR;;r}}(QRRRRr/   c                     [         R                  " 5       n U R                  SS9n[        R                  " / SQ/ SQ/ SQ/5      n[
        R                  " U/5      nUR                  U5        [        R                  " UR                  5       S5      (       d   e[        R                  " UR                  5       S5      (       d   e[        R                  " UR                  5       S5      (       d   eg )Nr3   r4   r   r  r  UUUUUUgUUUUUU?)gSUUUUUr  )rC   rD   rE   r   r    r   r\  rT  r  r  r  r  )rH   r'   r]  cols       r-   !test_poly3dCollection_autoscalingr  Z  s    
**,C	D	)B88Y	956D

 
 $
(C;;r}}(STTTT;;r}}(STTTT;;r}}(PQQQQr/   zaxes3d_labelpad.pngc                     [         R                  " 5       n U R                  [        U 5      5      nUR                  R
                  [        R                  S   :X  d   eUR                  SSS9  UR                  R
                  S:X  d   eUR                  S5        UR                  SSS9  UR                  R
                  S:X  d   eUR                  5       S:X  d   eSUR                  l        SUR                  l        [        UR                  R                  5       5       H-  u  p#UR!                  UR#                  5       S	-   US	-  -
  5        M/     g )
Nzaxes.labelpadzX LABELr   )labelpadzY LABELzZ LABELr   r   rp   )rC   rD   add_axesr   rN   r  r  r   r   r   r   rP   
get_zlabelrO   rx   get_major_ticksset_padget_pad)rH   r'   r~   ticks       r-   test_axes3d_labelpadr  e  s
    **,C	fSk	"B88_ ====MM)bM)88"""MM)MM)bM)88"""==?i'''BHHBHH RXX5578T\\^a'!a%/0 9r/   zaxes3d_cla.pngc                      [         R                  " 5       n U R                  SSSSS9nUR                  5         UR	                  5         g )Nr   r3   r4   )rC   rD   rE   r  clarG   s     r-   test_axes3d_clar  |  s8     **,C	AqT	2BOOFFHr/   zaxes3d_rotated.pngc                  x    [         R                  " 5       n U R                  SSSSS9nUR                  SSS5        g )Nr   r3   r4   r   -   r   )rC   rD   rE   r   rG   s     r-   test_axes3d_rotatedr    s5     **,C	AqT	2BLLRr/   c                     [         R                  " SSSS9n [         R                  " SSSS9n[         R                  " X5      u  p#[         R                  R	                  S5      n[
        R                  " SS9nUR                  SSSS	S
9n[        R                  " [        5         UR                  X#U5        S S S 5        g ! , (       d  f       g = f)Nr*  r   r   )num)   r   r   r   r   r3   r4   )r   r2  r   r+  randnrC   rD   rE   rI  rJ  r,  r`  )rY   rZ   r   r   r[   rH   r'   s          r-   test_plotsurface_1d_raisesr    s    
C%A
C%A;;qDA
		A
**W
%C	AqT	2B	z	"
a  
#	"	"s   $C  
Cc                  X   [         R                  " / SQ5      n [         R                  " / SQ5      n[         R                  " / SQ5      nSn[        R                  " XX#5      u  pEn[        R                  " XEX`5      n[        R
                  " SSS5      n[         R                  " X5      n	U	$ )N)r)  ii  )r   r   r   rY  r   r   r   r   )r   r    r   
_view_axes_view_transformation_uvw_persp_transformationdot)
Erd  Vr   r9  r:  r;  viewMperspMMs
             r-   _test_proj_make_Mr    s    
$%A
!A
ADa.GA!++A!7E))#tQ7F
vAHr/   c                     [        5       n [        R                  R                  U 5      n[        R                  " / SQ5      S-  n[        R                  " / SQ5      S-  n[        R                  " / SQ5      S-  n[
        R                  " X#X@5      u  pVn[
        R                  " XVXq5      u  pn
[        R                  R                  X5        [        R                  R                  X5        [        R                  R                  X5        g )N
r   r   r   r   r   r   r   r   r   r        r@
r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   r   r   r   r   )
r  r   linalginvr    r   proj_transforminv_transformr   assert_almost_equal)r  invMr   r   r   txstystzsixsiysizss              r-   test_proj_transformr    s    A99==D	0	1E	9B	0	1E	9B	0	1E	9B))""8MCc((3=MCcJJ""3+JJ""3+JJ""3+r/   r   c                 L   SUSS/nSSUS/nSSSU/n[         R                  " XEX`5      u  pxn	[        Xx5      u  ppX4X4X4/n[        R                  " U0 UD6u  p[        U5      nUR                  U5        [        Xx/ SQ5       H  u  nnnUR                  UUU5        M     X4$ )Nr   )r@  rY   rZ   r[   )r   r  r&   rC   r8   r   add_collectionri  )r  rh  argsr#  r   r   r   r  r  r  r@  r'   ayazr  rH   linecrY   rZ   rR  s                       r-   _test_proj_draw_axesr    s    
Q1B
Q1B
Q1B))""8MCcMMA2Wqgw'EllD+F+GC5!Ees!561a
1a 7 7Nr/   zproj3d_axes_cube.pngc                  $   [        5       n SR                  5       n[        R                  " / SQ5      S-  n[        R                  " / SQ5      S-  n[        R                  " / SQ5      S-  n[        R
                  " X#X@5      u  pVn[        U SS9u  pU	R                  XVUS9  U	R                  XVS	S9  [        XVU5       H  u  pnU	R                  XU5        M     S
[        R                  S'   U	R                  SS5        U	R                  SS5        g )N0 1 2 3 0 4 5 6 7 4r  r  r  r  i  rg  r   r)   Tr   皙ɿr  )r  splitr   r    r   r  r  ro  r<  r&   ri  rC   r   r  r  )r  tsr   r   r   r  r  r  rH   r'   rY   rZ   rR  s                r-   test_proj_axes_cuber    s    A		$	$	&B	0	1E	9B	0	1E	9B	0	1E	9B))""8MCc"1,GCJJs3JGGCGs$a
a % )-CLL$%KKcKKcr/   zproj3d_axes_cube_ortho.pngc                  l   [         R                  " / SQ5      n [         R                  " / SQ5      n[         R                  " / SQ5      nSn[        R                  " XX#5      u  pEn[        R                  " XEX`5      n[        R
                  " SS5      n[         R                  " X5      n	SR                  5       n
[         R                  " / SQ5      S	-  n[         R                  " / S
Q5      S	-  n[         R                  " / SQ5      S	-  n[        R                  " XX5      u  pn[        U	SS9u  nnUR                  XSU-
  S9  UR                  XSS9  [        XU
5       H  u  nnnUR                  UUU5        M     S[        R                  S'   UR!                  SS5        UR#                  SS5        g )N)   r   r   r   rY  r   ro   r   r  r  r   r  r     rg  r   r)   r  Tr   i8r  )r   r    r   r  r  _ortho_transformationr  r  r  r  ro  r<  r&   ri  rC   r   r  r  )r  rd  r  r   r9  r:  r;  r  orthoMr  r  r   r   r   r  r  r  rH   r'   rY   rZ   rR  s                         r-   test_proj_axes_cube_orthor    sa   
!A
A
ADa.GA!++A!7E))"a0F
vA		$	$	&B	0	1C	7B	0	1C	7B	0	1C	7B))""8MCc"1,GCJJs3s7J#GGCGs$1a
1a % )-CLL$%KKcKKcr/   c                      Su  pSu  p#Su  pE[         R                  " XX#XE5      n[        R                  R	                  U/ SQ/ SQ/ SQ/ SQ/5        g )N)r   x   )r   r   )r  r  )r   r   r   rZ  )r   g{Gzt?r   r*  )r   r   rF  ro   r   r   r   r   )r   world_transformationr   r   assert_allclose)r   r   r   r   r   r   r  s          r-   
test_worldr    sP    JDJDJD##DDGAJJq 0 2 / , ./r/   c                     [         R                  " SS0S9u  pUR                  5       S:X  d   eSUl        UR	                  SSSS9  UR                  SS	/SS	/SS	/5        UR                  5       S
:X  d   eUR                  S5        UR                  S5        UR                  SS/SS/SS/5        UR                  5       S:X  d   eUR                  SS9  UR                  SS/SS/SS/5        UR                  5       S:X  d   eg )Nr5   r3   r6   linearr   r  r  rY   rZ   r[   r   )r   r   r  皙?r  g333333?FTr   )r   r   r  r  rB  333333@rY   r  )r   r   r  r  rB  r  )	rC   r8   
get_zscale_view_marginmarginsr<  
get_w_lims	autoscaleset_autoscalez_onrG   s     r-   test_autoscaler    s    ll|T&:;GC==?h&&&BOJJbBJGGQFQFQF#==?8888LLGGQFQFQF#==?8888LLcLGGQFQFQF#==?8888r/   rR   r  ri   )TFNc                    [         R                  " 5       nUR                  SS9n[        R                  " S5      n[        R
                  " SSS5      nUR                  XE5        [        USU  S35      n[        USU  S	35      n[        US
U  S	35      nUc  U" 5       OUn	U" SUS9  X" 5       :X  d   eUR                  R                  5         [        R                  R                  U" 5       S5        g )Nr3   r4   r   r  r  get_autoscale_onset_limget_)r4  r*  )ri   )rC   rD   rE   r   r   r2  ro  getattrr   r   r   assert_array_equal)
rR   ri   rH   r'   rY   rZ   get_autoscale_onset_limget_lim	post_autos
             r-   test_unautoscaler    s     **,C	D	)B
		#A
D#s#AJJqr]4&#<=bDc*+GbDc*+G&*l "IKd#(****JJOOJJ!!')[9r/   c                 b   Sn[        X4U5       H  u  p4UR                  SS9n[        U5      S-   n[        R                  " SXF5      n[        R
                  " U5      n[        R                  " U5      n	UR                  XxU	S5        UR                  SSSS9  UR                  S	S
S5        M     g )N)r   r  r3   r4   r   r   r  )rZ  rp   xlimylimzlimrp   r   )
r&   rE   r$   r   r2  onesrG  r<  rc   r   )
r<   r=   xminsrH   r   r'   nr   r   r   s
             r-   test_cullingr  .  s    E(,e4	___-IM[[D$WWQZXXa[
C 
G'8
QQ 5r/   c                  \   [         R                  " 5       n U R                  SS9n[        R                  " [
        5         UR                  SSS9  S S S 5        [        R                  " [
        5         UR                  SSS9  S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)Nr3   r4   perspr   focal_lengthr   r   )rC   rD   rE   rI  rJ  r,  r   rG   s     r-   test_axes3d_focal_length_checksr  =  sx    
**,C	D	)B	z	"
q1 
#	z	"
q1 
#	" 
#	"	"	"s   B2B
B
B+zaxes3d_focal_length.pngc                      [         R                  " SSSS0S9u  pUS   R                  S[        R                  S9  US   R                  SS	S9  g )
Nr   r   r5   r3   r6   r   r  r  333333?)rC   r8   r   r   inf)rH   re   s     r-   test_axes3d_focal_lengthr
  F  sO     ||AqlD-ABHCFrvv6Ft4r/   zaxes3d_ortho.pngc                  n    [         R                  " 5       n U R                  SS9nUR                  S5        g )Nr3   r4   r   )rC   rD   rE   r   rG   s     r-   test_axes3d_orthor  N  s+    
**,C	D	)BWr/   zaxes3d_isometric.pngc                     SSK Jn Jn  [        R                  " [        SSSS9S9u  p#SnU " [        R                  " [        U" XDU5      5      5      S	5       HJ  u  pV[        XV-
  5      R                  5       US
   US   -
  :X  d  M/  UR                  " [        XV5      SS06  ML     UR                  [        R                  " [        R                  " S[        R                   " S	5      -  5      5      SSS9  UR#                  S5        g )Nr   )r   r"   r3   r   )rt   rt   rt   )r5   	proj_type
box_aspectr6   )ro   r   r   r   r   r  r  r  r   T)r   r   r"   rC   r8   r9   r   r    r!   r$   r#   r%   r&   r   degreesarctanr  rF   )r   r"   rH   r'   r)   rh  es          r-   test_axes3d_isometricr  U  s    /lld' GC
 	ARXXd71+;&<=qAqu:>>qtad{*IIs1y(C( B LLbjj2
?!;<3QLOGGDMr/   c                    U R                  SS9n[        R                  " SSS5      n[        R                  " SSS5      n[        R                  " X45      u  pVXV-   nUR	                  XVUSS SSSS	9  UR                  S
S
/SS/S
S/SSSSS9  UR                  UR                  5       UR                  5       UR                  5       S-   SS9  UR                  UR                  5       UR                  5       UR                  5       S-   SUR                  5       -  SUR                  5       -  SUR                  5       -  S-   SSS9  UR                  US   US   US   S-   SSS9  UR                  SS
SSSS9  UR                  SSSS9  UR                  SS9nUS
:*  nXX   R                  SS5      nXh   R                  SS5      nXx   R                  SS5      nUR	                  XVUSS SSSS	9  UR                  S
S
/SS/S
S/SSSSS9  UR                  UR                  5       UR                  5       UR                  5       S-   SS9  UR                  UR                  5       UR                  5       UR                  5       S-   SUR                  5       -  SUR                  5       -  SUR                  5       -  S-   SSS9  UR                  US   US   US   S-   SSS9  UR                  SSSS9  g )Nr3   r4   r   r   r   r  r  T)rs  r  r[  r\  
axlim_clipr*        ?r  rn   rp   )r   r]  zorderr  )r  r   )arrow_length_ratior  r  )r   r  r  rt   test)r   r*  r   r   )r   rp   r  r   F)rE   r   r2  r   r`  r<  ro  r   r7  ri  rc   r  )	r<   r=   r'   rY   rZ   r   r   r   idxs	            r-   test_axlim_clipr  e  s    
				.B
Aq"A
Aq"A;;qDA	AOOA!tbT  ; GGS#JAc
1  ?JJqwwy!'')QWWY]tJDIIaggiAGGIM	k1QWWY;!'')a!"t  5 GGAaD!A$!qG>GGCaDG1FFvFF3 
				-B8C	r1A	r1A	r1AOOA!tbU  <GGS#JAc
1  @JJqwwy!'')QWWY]uJEIIaggiAGGIM	k1QWWY;!'')a!"u  6 GGAaD!A$!qG?FFvFF3r/   value)setterside))r  left)r  right)r  bottom)r  top)ra  r"  )ra  r#  c                     X0n[         R                  " 5       nUR                  SS9n[        R                  " [
        5         [        XP5      " S0 UD6  S S S 5        g ! , (       d  f       g = f)Nr3   r4    )rC   rD   rE   rI  rJ  r,  r  )r  r  r  limitrH   objs         r-   test_invalid_axes_limitsr(    sN     ME
**,C
//T/
*C	z	"%u% 
#	"	"s   A
A+c                       \ rS rSr\" S/SS9S 5       r\" S/SS9S 5       r\" S/SS9S	 5       r\" S
/SS9S 5       r\" S/SS9S 5       r	\" S/SSSS9S 5       r
S rSrg)
TestVoxelsi  zvoxels-simple.pngr?   r@   c                     [         R                  " SS0S9u  p[        R                  " S5      u  p4nX4:H  XE:H  -  nUR	                  U5        g )Nr5   r3   r6   )rp   rt   rn   )rC   r8   r   indicesvoxels)selfrH   r'   rY   rZ   r[   r-  s          r-   test_simpleTestVoxels.test_simple  sC    ,,<*>?**Y'a&QV$
		&r/   zvoxels-edge-style.pngc                    [         R                  " SS0S9u  p[        R                  " S5      u  p4nUS-
  S-  US-
  S-  -   US-
  S-  -   S:  nUR	                  USS	S
9nU[        UR                  5       5         R                  S5        g )Nr5   r3   r6   )rp   rp   rt   r   r  g](\@rn   r  )rz  rt  r  )rC   r8   r   r,  r-  r  keysr  )r.  rH   r'   rY   rZ   r[   r-  r:  s           r-   test_edge_styleTestVoxels.test_edge_style  s    ,,<*>?**Y'aq51*Az)QsUQJ6&@IIfdI; 	
#affh-&&t,r/   zvoxels-named-colors.pngc                 (   [         R                  " SS0S9u  p[        R                  " S5      u  p4nX4:H  XE:H  -  nXcU-  U-  S:  ) -  n[        R                  " SS[        R
                  S9nSXsS	:  US	:  -  '   S
XsU-   S:  '   UR                  XgS9  g)z5Test with colors set to a 3D object array of strings.r5   r3   r6   r   r   r   r   r  r  z0.25rp   cyanr   r  N)rC   r8   r   r,  r  object_r-  r.  rH   r'   rY   rZ   r[   r-  r   s           r-   test_named_colorsTestVoxels.test_named_colors  s     ,,<*>?**\*a&QV$EAIM**t2::>$*A!a% !%A|
		&	,r/   zvoxels-rgb-data.pngc                     [         R                  " SS0S9u  p[        R                  " S5      u  p4nX4:H  XE:H  -  n[        R                  " S5      nUS-  US'   US-  US'   US-  US	'   UR                  XgS
9  g)z5Test with colors set to a 4d float array of rgb data.r5   r3   r6   r6  )r   r   r   rn   r  .r   .r   .r   r  N)rC   r8   r   r,  rG  r-  r9  s           r-   test_rgb_dataTestVoxels.test_rgb_data  s|     ,,<*>?**\*a&QV$/*QvQvQv
		&	,r/   zvoxels-alpha.pngc                    [         R                  " SS0S9u  p[        R                  " S5      u  p4nX4:H  n[        R                  " X4-
  5      S:  nXg-  n[        R
                  " S5      n	/ SQX'   / SQX'   UR                  XS	9n
[        U
5      [        L d   eU
R                  5        H6  u  pX   (       d   S
5       e[        U[        R                  5      (       a  M6   e   g )Nr5   r3   r6   r6  r   )r   r   r   rt   )r   r   r   r*  )r   r   r   r*  r  zfaces returned for absent voxel)rC   r8   r   r,  r$   rG  r-  typer9   itemsrl  r   r\  )r.  rH   r'   rY   rZ   r[   v1v2r-  r   r:  coordr]  s                r-   
test_alphaTestVoxels.test_alpha  s    ,,<*>?**\*aVVVAE]Q/*#
#
IIfI0Aw$779KE=C"CC=dE$:$:;;;; %r/   zvoxels-xyz.png{Gz?F)r   r   r   c                    [         R                  " SS0S9u  pS n[        R                  " S5      S-  u  pEnU" U5      nU" U5      nU" U5      n	US-
  S-  US-
  S-  -   U	S-
  S-  -   S	:  n
[        R                  " U
R
                  S
-   5      nX{S'   XS'   XS'   UR                  XEXjU[        R                  " SU-  S-
  SS5      SS9  g )Nr5   r3   r6   c                     Sn[        U R                  5       HM  nX[        R                  S S -      X[        R                  SS  -      -   S-  n U[        R                  S S  -  nMO     U $ )Nr%  ro   r   rW  )r   ndimr   	index_exp)rY   slr~   s      r-   	midpoints&TestVoxels.test_xyz.<locals>.midpoints  sm    B166]BLL"--.BLL,,-.145bll1o% # Hr/   )   rR  rR  g      0@r*  r   r  )rn   r=  r>  r?  r   r   )r  r  r]  )rC   r8   r   r,  rG  r  r-  r  )r.  rH   r'   rP  r)   r   r   rcgcbcspherer   s               r-   test_xyzTestVoxels.test_xyz  s     ,,<*>?	 **\*T1aq\q\q\ s(Q"s(Q."s(Q>G &,,-.vvv 			!#WWQvX^Q: 	 	!r/   c           	      6   [         R                  " S5      u  pn[         R                  " S5      n[        R                  " SS0S9u  pV[        5       [        SS94 HT  nUR                  " U40 UD6  UR                  " SSU0UD6  UR                  " XX440 UD6  UR                  " XU4SU0UD6  MV     [        R                  " [        S	S
9   UR                  XX4US9  S S S 5        [        R                  " [        S	S
9   UR                  X5        S S S 5        [        R                  " [        SS
9 nUR                  XAX#S9  S S S 5        WR                  R                  S:X  d   eg ! , (       d  f       N= f! , (       d  f       Nn= f! , (       d  f       NM= f)Nrs   )r   rn   rt   r5   r3   r6   r  )rt  filledr-  rG  )rZ  zkeyword argument 'x')rZ  rY   rZ   r[   rY   r%  )r   r,  r  rC   r8   r9   r-  rI  rJ  	TypeErrorAttributeErrorr  name)	r.  rY   rZ   r[   rZ  rH   r'   kw	exec_infos	            r-   test_calling_conventions#TestVoxels.test_calling_conventions  sC   **Y'a#,,<*>? 64#./BIIf##II*V*r*IIaA,,IIaA3f33	 0 ]]9H5IIaAfI5 6 ]]9H5IIaO 6 ]]>1GHIIIVAI3 I##s*** 65 65 IHs$   E(?E92F
(
E69
F

Fr%  N)__name__
__module____qualname____firstlineno__mpl3d_image_comparisonr/  r3  r:  r@  rH  rW  r`  __static_attributes__r%  r/   r-   r*  r*    s    01A B 45WE- F- 67wG
- H
- 237C
- D
- /0@< A<" -. $%wH!H!@+r/   r*  c                     SS/SS/SS/p!n SS/S	S
/SS/pTn[         R                  " 5       nUR                  SS9nUR                  XU5      nUS   n	[        R
                  R                  XU4U	R                  5       5        U	R                  X4U5        [        R
                  R                  X4U4U	R                  5       5        U	R                  U 5        U	R                  U5        U	R                  USS9  [        R
                  R                  XU4U	R                  5       5        U	R                  SSS9  [        R
                  R                  X[        R                  " U5      4U	R                  5       5        g )Nr   r   r   rn   rt   rp   r   r  r  r  r   r   r3   r4   r[   r  )rC   rD   rE   r<  r   r   r  get_data_3drM  	set_xdata	set_ydataset_3d_propertiesr   )
rY   rZ   r[   r  r  r  rH   r'   r  rQ   s
             r-   test_line3d_set_get_data_3drm    s@   !fq!fq!f!AQ!Q"bBB
**,C	D	)BGGA!E8DJJ!!1)T-=-=-?@RR JJ!!22,0@0@0BCNN1NN1ac*JJ!!1)T-=-=-?@ac*JJ!!1q)9":D<L<L<NOr/   c                     U R                  SS9nUR                  / SQ/ SQ/ SQ5        UR                  5         UR                  SS9nUR                  5         UR                  / SQ/ SQ/ SQ5        g )Nr3   r4   )r   r   r   r   )r   r   r   r   )r   r   r   r   )rE   r<  invert_yaxisr;   s      r-   test_invertedrp  +  s^     
				.BGGNO];OO					-BOOGGNO];r/   c                  ^   [         R                  " SS0S9u  pUR                  5       (       a   eUR                  5       (       a   eUR	                  5       (       a   eUR                  SS5        UR                  SS5        UR                  SS5        UR                  5       (       d   eUR                  5       (       d   eUR	                  5       (       d   eUR                  5         UR                  5       (       a   eUR                  5       (       a   eUR	                  5       (       a   eg )Nr5   r3   r6   r   r   )	rC   r8   xaxis_invertedyaxis_invertedzaxis_invertedr  r  r  r  rG   s     r-   test_inverted_claru  7  s    ll|T&:;GC  """"  """"  """"KK1KK1KK1FFH  """"  """"  """""r/   c                  F   [         R                  " 5       n [        U 5      nUR                  SSS9  UR                  SSS9  UR                  SSS9  U R                  R                  5         UR                  R                  5        H  nUR                  R                  S:X  a  M   e   UR                  R                  5        H  nUR                  R                  S:X  a  M   e   UR                  R                  5        H  nUR                  R                  S:X  a  M   e   g )NrY   r   )rR   r   rZ   r[   )rC   rD   r   tick_paramsr   r   rN   r  	tick1line_colorrO   rP   )rH   r'   r  s      r-   test_ax3d_tickcolourrz  K  s    
**,C	BNNEN*NNEN*NNEN*JJOO((*~~$$--- +((*~~$$--- +((*~~$$--- +r/   c                    U R                  SSSS0S9nUR                   H  nUR                  SS5        M     [        U/ SQ5       H  u  pEUS	   R	                  US
S9  US   R	                  USS9  US   R	                  U[
        R                  S   (       + S9  US   R	                  U[
        R                  S   (       + S9  US   R	                  U[
        R                  S   (       + S9  M     S nUR                  SSSS0S9nUR                   H  nUR                  SS5        M     [        US/S/S// SQ/5       H  u  pGU" US	   U5       H  nUR                  S5        M     U" US   U5       H  nUR                  S5        M     U" US   U5       H*  nUR                  [
        R                  S   (       + 5        M,     U" US   U5       H*  nUR                  [
        R                  S   (       + 5        M,     U" US   U5       H*  nUR                  [
        R                  S   (       + 5        M,     M     g )Nrt   rp   r5   r3   r6   g    cAg   @cA)rY   rZ   r[   rW   r   plain)rR   r   r   )r  r   )rR   	scilimitsr   zaxes.formatter.useoffset)rR   	useOffsetrn   zaxes.formatter.use_locale)rR   	useLocalezaxes.formatter.use_mathtext)rR   useMathTextc                 `    U Vs/ s H  n[        X5      R                  5       PM     sn$ s  snf r  )r  get_major_formatter)r'   namesr]  s      r-   get_formatters-test_ticklabel_format.<locals>.get_formattersn  s(    DIJED!557EJJJs   #+rN   rO   rP   )rN   rO   rP   F)r8   r   r  r&   ticklabel_formatr  r   set_scientificset_powerlimitsset_useOffsetset_useLocaleset_useMathText)	r<   r=   re   r'   rowr]  r  r  fmts	            r-   test_ticklabel_formatr  \  sG   


AqlD-A

BChh
C" 56	AW 	  	&A 	  	*AS\\2L%M!M 	  	OAS\\2M%N!N 	  	PALL)FGG 	  	I 7K 

1a\4,@

AChh
C" 7)gY	3NO
 "#a&%0Cu% 1!#a&%0C( 1!#a&%0C#,,/I"JJK 1!#a&%0C#,,/J"KKL 1!#a&%0CLL!>??A 1r/   c                 b   Sn[         R                  " [         R                  " SSS5      [         R                  " SSS5      [         R                  " SSS5      5      u  p4n[         R                  " U5      =n=px[	        X4S5       H&  u  pU	R                  SS9nUR                  X4XVXxXS	9  M(     g )
Nr2  gr   r  r   )r   r  r3   r4   )r   r5  )r   r   r   	ones_liker&   rE   r7  )r<   r=   r5  rY   rZ   r[   r9  r:  r;  rH   r   r'   s               r-   test_quiver3D_smoker    s    Ekk
		$3
		$3
		$3GA!
 QAG.9___-
		!a6	? :r/   zminor_ticks.pngc                     [         R                  " 5       R                  SS9n U R                  S/SS9  U R	                  S/SS9  U R                  S/SS9  U R                  S/SS9  U R                  S	/SS9  U R                  S
/SS9  g )Nr3   r4   r  T)minorquartergQ?thirdr*  half)	rC   rD   rE   rK   set_xticklabelsrL   set_yticklabelsrM   set_zticklabels)r'   s    r-   test_minor_ticksr    s    		!	!T	!	2BMM4&M%	{$/MM4&M%y-MM4&M%xt,r/   zerrorbar3d_errorevery.pngc            
         [         R                  " SS[         R                  -  S-   S5      n [         R                  " U 5      [         R                  " SU -  5      [         R                  " SU -  5      p2n[
        R                  " 5       nUR                  SS9nS	n[         R                  " U R                  5      nXv-  S:H  Xv-  S-  S:H  -  nXv-  S:H  Xv-  S-  S:H  -  n	UR                  XUS
XUS9  g)z0Tests errorevery functionality for 3D errorbars.r   r   r  rJ  rn   rp   r3   r4      r  )zuplimszlolims
erroreveryN)
r   r   r9  r:  r;  rC   rD   rE   r  errorbar)
rR  rY   rZ   r[   rH   r'   estepr~   r  r  s
             r-   test_errorbar3d_erroreveryr    s     			!QruuWRZ&AffQi!bffQqSk!A
**,C	D	)BE
		!&&AyA~!*q.A"56GyA~!*q.A"56GKKag   "r/   zerrorbar3d.pngc                      [         R                  " 5       n U R                  SS9n/ SQn/ SQnUR                  X"X#X3S/ SQ/ SQSS	S
S9  UR	                  5         g)z9Tests limits, color styling, and legend for 3D errorbars.r3   r4   )r   r   rn   rt   rp   )r*  r*  r*  r*  r*  rn   )FTFTT)TFFTFTpurplezError lines)rY   rZ   r[   xerryerrzerrcapsizer  r  yuplimsecolorr   N)rC   rD   rE   r  legend)rH   r'   dr  s       r-   test_errorbar3dr    s[     **,C	D	)BAAKK!AAq89}	  6
 IIKr/   z
stem3d.pngg;On?c                  t   S[         R                  S'   [         R                  " SSSSSS0S9u  p[        R                  " S	S[        R
                  -  5      n[        R                  " U[        R
                  S-  -
  5      n[        R                  " U[        R
                  S-  -
  5      nUn[        US	   / S
Q5       H)  u  pgUR                  X4XWS9  UR                  SU 35        M+     [        R                  " [        R
                  * S-  [        R
                  S-  S5      n[        R                  " U5      n[        R                  " U5      n[        US   / S
Q5       HQ  u  pgUR                  X4USSSUS9u  pn
UR                  SU 35        UR                  SSS9  U
R                  S5        MS     g )NTr   r   rn   )r  r   r5   r3   r   constrained_layoutr7   r   r  )orientationzorientation=r   r   zC4-.C1Dr  )linefmt	markerfmtbasefmtr  rX   )rY  markeredgewidth)rC   r   r8   r   r2  r9  r;  r:  r&   stemry   r  rc   set_linewidth)rH   re   r=  rY   rZ   r[   r'   r   
markerline	stemlinesbaselines              r-   test_stem3dr    sp   (,CLL$%||Aq&/3(4d';=HC KK1RUU7#E
uruuQwA
uruuQwAAA0
a*
|D6*+ 1 	RUUF1HbeeAgr*A
QA
q	AA0*,''!eT +2 +'
x 	|D6*+vqAq! 1r/   zequal_box_aspect.pngc                     SSK Jn Jn  [        R                  " 5       nUR                  SS9n[        R                  " SS[        R                  -  S5      n[        R                  " S[        R                  S5      n[        R                  " [        R                  " U5      [        R                  " U5      5      n[        R                  " [        R                  " U5      [        R                  " U5      5      n[        R                  " [        R                  " U5      [        R                  " U5      5      nUR                  XgU5        SS/n	U" [        R                  " [        U " XU	5      5      5      S5       H[  u  p[        R                   " [        R"                  " X-
  5      5      U	S   U	S   -
  :X  d  M@  UR$                  " ['        X5      S	S
06  M]     [        R(                  " UR+                  5       UR-                  5       UR/                  5       /5      n[1        US   5      [3        US   5      /nUR5                  U5        UR7                  U5        UR9                  U5        UR;                  S5        UR=                  S5        [>        R@                  " [B        SS9   UR=                  SSS9  S S S 5        g ! , (       d  f       g = f)Nr   )r"   r   r3   r4   r   r   ro   r   r   r   offrr   zArgument zoom =rG  )zoom)"r   r"   r   rC   rD   rE   r   r2  r9  outerr;  r:  r  r`  r    r!   r#   r$   r%   r&   rz  r  r  r  r  r  r  r  ra  rR   rz   rI  rJ  r,  )r"   r   rH   r'   r9  r:  rY   rZ   r[   r)   rh  r  xyzlimXYZlims                 r-   test_equal_box_aspectr    s   /
**,C	D	)B 	Aq255y#&A
Aruuc"A
BFF1I&A
BFF1I&A
a"&&),A OOA! 
QARXXd71+;&<=qA66"&&- AaD1Q4K/IIs1y,, B
 __	"--/2==?;F &)nc&)n-FMM&MM&MM&GGENi 	z):	;
)"- 
<	;	;s   (K
Kc                     Sn [         R                  " SU SSSS0S9u  pU Hm  nUR                  [        R                  R                  S5      [        R                  R                  S5      [        R                  R                  S5      5      nMo     [         R                  " WUS	S
9nUR                  R                  5         UR                  R                  5       R                  S   S:  d   eg )Nr   r   )rt   rp   Tr5   r3   r  rp   
horizontal)r'   r  r  )rC   r8   r  r   r+  r  r  r   r   r'   get_positionextents)	num_plotsrH   re   r'   p_tricbars         r-   test_colorbar_posr    s    I||Ay&/3(4d';=HC 		 2BIIOOA4F "		 24  <<#<@DJJOO77!))!,s222r/   c                     [         R                  " 5       n U R                  SS9nUR                  SS5        UR	                  5       (       a   eUR                  5       S:X  d   eUR                  5       S:X  d   eUR                  S5        UR	                  5       (       a   eUR                  5       S:X  d   eUR                  5       S:X  d   eUR                  5         UR	                  5       (       d   eUR                  5       S:X  d   eUR                  5       S:X  d   eUR                  SS9  UR	                  5       (       d   eUR                  5       S	:X  d   eUR                  5       S:X  d   eUR                  S
S9  UR	                  5       (       d   eUR                  5       S:X  d   eUR                  5       S:X  d   eg )Nr3   r4   r   r   r  )r   r   )r   r   )rU   )r   r   r   )rV   )r   r   r   r   )	rC   rD   rE   r  rt  get_zlim
get_zbound
set_zboundinvert_zaxisrG   s     r-   test_inverted_zaxisr    s   
**,C	D	)BKK1  """";;=F"""==?f$$$ MM&  """";;=F"""==?f$$$ OO;;=F"""==?f$$$ MMM;;=F"""==?f$$$ MMM;;=F"""==?f$$$r/   c                  p   [         R                  " 5       n U R                  SS9n[        R                  " UR                  5       S5      (       d   eUR                  SS9  [        R                  " UR                  5       S5      (       d   eUR                  SS9  UR                  5       S	:X  d   e[        R                  " [        S
S9   UR                  SSS9  S S S 5        [        R                  " [        SS9   UR                  SSS9  S S S 5        g ! , (       d  f       NA= f! , (       d  f       g = f)Nr3   r4   r  r   )r   )r  r   r   )r   r  z"Cannot pass both 'lower' and 'min'rG  r   )r"  r   z"Cannot pass both 'upper' and 'max')r#  r   )
rC   rD   rE   r   r  r  r  rI  rJ  r[  rG   s     r-   test_set_zlimr  8  s    
**,C	D	)B;;r{{}n5555KKQK;;r{{}j1111KKQK;;=F"""	A
C
11%
C 
A
C
"
C 
C
C 
C
C 
Cs   
D<D'
D$'
D5c                    Su  p#nU R                  SSS9nU R                  SSUS9nU R                  SSS9nUR                  U5        UR                  X#USS	9  S
 H#  nUR                  USS9n	U	R                  X#US9  M%     g )N)rp   r   r      r3   r4      )r5   	shareview   T)r   r   r   share)r  r  r  r   )rE   r  r   )
r<   r=   r   r   r   rC  rD  ax3subplot_numr'   s
             r-   test_shared_viewr  I  s     D


st

4C


sts

CC


st

4CMM#MMtTM>&   >
$5 'r/   c                  R   [         R                  " 5       n U R                  SSS9nU R                  SSUS9nUR                  SS/SS/SS/5        UR                  SS/SS/SS/5        UR	                  / S	Q5        UR                  5       S
:X  d   eUR                  5       S
:X  d   eg )N   r3   r4      )r5   sharezr   r   r   )r4  r   r         @)r4  r  )rC   rD   rE   r<  rM   r  )rH   rC  rD  s      r-   test_shared_axes_retickr  W  s    
**,C
//#$/
/C
//#$s/
;CHHaVaVaV$HHaVaVaV$NN$%<<>[(((<<>[(((r/   c            
      Z   [        S/ SQ5      n U R                  S:X  d   eU R                  / SQ:H  R                  (       d   eU * R                  S:X  d   eU * R                  / SQ:H  R                  (       d   e[        S/ SQ5      nUR                  S:X  d   eUR                  / SQ:H  R                  (       d   e[        S/ SQ5      nUR                  S:X  d   eUR                  / SQ:H  R                  (       d   e[        S/ SQ5      nUR                  S:X  d   eUR                  / SQ:H  R                  (       d   eX-  U * :X  d   eX"-  U * :X  d   eX3-  U * :X  d   eX-  U:X  d   eX-  U:X  d   eX-  U:X  d   eX-  U:X  d   eX#-  U:X  d   eX1-  U:X  d   eX!-  U* :X  d   eX2-  U* :X  d   eX-  U* :X  d   e[        S/ S	Q5      [        S
/ SQ5      -  [        S/ SQ5      :X  d   eXX#4 H  nUR	                  5       R                  UR                  :X  d   eUR	                  5       R                  UR                  * :H  R                  (       d   eUR	                  5       R	                  5       U:X  d   eXDR	                  5       -  R                  S:H  R                  (       a  M   e   [        S/ SQ5      nUR
                  S:X  d   eU R
                  S:X  d   eUR
                  S:X  d   eUR
                  S:X  d   eUR
                  S:X  d   eXPXU4 H/  nUR
                  XDR	                  5       -  R                  :X  a  M/   e   [        S/ SQ5      [        S/ SQ5      [        S/ SQ5      [        S/ SQ5      [        S
/ SQ5      4 H#  nUR                  5       R
                  S:X  a  M#   e   XX#4 H4  nXDR                  5       -  U :X  d   eUR                  5       U-  U :X  a  M4   e   UR                  / SQ5      [        R                  " / SQ5      :H  R                  (       d   e/ SQ/ SQ[        [        R                  " S5      SS[        R                  " S5      /5      4/ SQ/ SQ[        [        R                  " S5      S[        R                  " S5      * S/5      4/ SQ/ SQ[        S/ SQ5      44 H"  u  pgn[         R                  " Xg5      U:X  a  M"   e   / SQ/ SQ/ SQ/ SQ4 H  n[        R                  " U5      n[        R                  " [        5         [         R                  " Xf* 5      nS S S 5        [        R                   " WR
                  S5      (       d   e[        R"                  " UR                  U5      S:X  a  M   e   S H  u  pn
S H  n[         R$                  " [        R&                  " U5      [        R&                  " U	5      [        R&                  " U
5      5      n[        R                   " UR
                  S5      (       d   e[        XR                  -  XR                  -  5      n[        R(                  R+                  [        R,                  " [         R.                  " U5      5      XU
4SS9  M     M     g ! , (       d  f       GNa= f)Nr   r   ro   r   r   r   r   r[  rY  r   rs   r   )r  r  r  i)r  0   ,   )rn   r   r   )r   rt   r   )r   r   rp   r   r   rn   )r   r  r6  r*  rr   )r   )r   r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )/   r   ir  ư>atol)
Quaternionscalarvectorall	conjugater  r?  
reciprocalrotater   r    r  rotate_from_torI  warnsUserWarningiscloser  from_cardan_anglesdeg2radr   r  rad2degas_cardan_angles)q1qiqjqkqq0r1r2r   r   r   mags               r-   test_quaternionr  c  s   	Ay	!B99>>II"''''C<<2SLLI%****	Ay	!B99>>II"''''	Ay	!B99>>II"''''	Ay	!B99>>II"''''5RC<<5RC<<5RC<<5B;;5B;;5B;;5B;;5B;;5B;;5RC<<5RC<<5RC<<q)$z!Y'??#|,- . - b{{}##qxx///$$	16666{{}&&(A---;;=((A-22222	  
Ay	!B77a<<77a<<77a<<77a<<77a<<bb!vv!KKM/11111 " 	1i 1i 1i 1i 1i  {{}!!Q&&& b2%%%||~a2%%%  IIi BHH[$99>>>> 
Iz"''#,Arwws|8LMN	Iz"''#,RWWS\M18MNO	Iz!Y78	
 ((0A555 )Y	:XXb\\\+&))"c2A 'zz!&&!$$$$vvahh#q((( ;,D C--

4 "**T"2BJJt4DFA::affa((((3>3>:AJJ&&rzz*2M2Ma2P'Q(,D'9 ' F 	, '&s   )Z
Z*	r   )azel	trackballrV  arcballc                 ,   U S:X  a  SnO[         R                  S   S-  nUS-  nS[         R                  S'   [         R                  " SU 05         / SQ/ S	Q/ S
Q/ SQSS[        R                  " S5      S-  /SS[        R                  " S5      S-  // SQ4 GH  u  p#n[
        R                  " 5       nUR                  SSSSS9nUR                  SSU5        UR                  R                  R                  5         UR                  [        U[        R                  SSS95        UR                  [        U[        R                  X-  UR                   -  X-  UR"                  -  S95        UR                  R                  R                  5         [        R                  " S5      S-  n0 SS_SS_SSSU4S_SS_SS_SS_SSSU4S_SS _S!S"_S#SSU4S$_S%SS&[        R$                  -  S4_S'S(_S)S*_S#SSU4S+_S,S-_S.S/_S0SSU4S1_S2SS3S4S5S6S0SSU4S7S8S9S:S;S<SSU4S=S>S?S@SASBSCS<SSU4SD0EnXX#U4   u  pn[        R&                  R)                  UR*                  UR,                  UR.                  4XU4SESF9  GM     SGSGSG5        gG! , (       d  f       gG= f)Hz*Test rotating using the left mouse button.r  r*  zaxes3d.trackballsizer   r   zaxes3d.trackballborderzaxes3d.mouserotationstyler[  )r   r   r   rY  )r   r   r   rn   r   )r   r   r   r   r3   r4   buttonxdataydata)r  r   r   r   )r   r  r   )r  r   r   r   )r  r   r   )^iN|C     6r   )r  r   r   r   r   )r  r   r   r   )g     6@r  r   )r  r   r   r   )r  r  r   )r  r  r   )r  r   r   r   )r   gyܥ<r   )r  r   r   r   )r  r   r   r  )E~8o.2.gC5%
@)r  r   r   r   iL)r  r   r   r   )gi:+@=!7Q9gX:@)r  r   r   r   )r  r  g:TS@@)gi:+r  gT7@@)rV  r   r   r   )r   r   r   )rV  r   r   r   )r   r   r   rV  )`#I9v$$0g! _B@)rV  r   r   r   )rV  r   r   r   )g&s|,@u.:gu.:@)rV  r   r   r   )r  r  g%T@@)g&s|,r  g6h@@)r  r   r   r   )r   r   r   )r  r   r   r   )r   r   r   r  )#KHxqZrDgwJ3@)r  r   r   r   r   )r  r   r   r   )g`#I9@ګ'Lgv$$0@)r  r   r   r   )r  r  gK;H@)r  r  gĮE@r  r  N)r  r   
rc_contextr   r  rC   rD   rE   r   r   r   _button_pressr   r   LEFT_on_move	_pseudo_w	_pseudo_hr9  r   r  r   r   r   )r   rh  r   r   r   rH   r'   r   expectationsnew_elevnew_azimnew_rolls               r-   test_rotater$    sO    LL/014HA-.CLL)*	4e<	=CA&S"''!*Q,'LDb **,CAqT:BLLAt$II!!# 2k&6&6aqIKKK2k&6&6!"bll!2!$r||:KMN II!!#
1AN!<N!;N C#%;N ";	N
 #$:N #$;N S!$&=N '(9N '(9N aa(*LN 'DJ(:N ()JN ()LN b#q)+NN" $[#N$ $[%N& 1c1%'I'N( $[$&H$&I2sA&(K$k$kAsA&(K$k%'I%'JBQ')L?NL@ ,8"8M+N(HJJ&&"'''B(0H'ED ' Ro 
>	=	=s   H,J
Jc            	         S n [         R                  " 5       nUR                  SS9nUR                  SSS5        UR                  R                  5         U " UR                  5       6 u  p4U " UR                  5       6 u  pVU " UR                  5       6 u  pxUR                  [        U[        R                  SSS95        UR                  [        U[        R                  SSS95        U " UR                  5       6 u  pU " UR                  5       6 u  pU " UR                  5       6 u  pU
[        R                  " U5      :X  d   eU[        R                  " U5      :X  d   eU[        R                  " U5      :X  d   eU	[        R                  " U5      :w  d   eU[        R                  " U5      :w  d   eU[        R                  " U5      :w  d   eg)z1Test mouse panning using the middle mouse button.c                     X-   S-  nX-
  nX#4$ )z+Convert min/max limits to center and range.r   r%  )dmindmaxcenterrange_s       r-   convert_limtest_pan.<locals>.convert_lim
  s    +"~r/   r3   r4   r   r
  r   N)rC   rD   rE   ro  r   r   r  r  r  r  r   r   MIDDLEr  rI  approx)r+  rH   r'   	x_center0x_range0	y_center0y_range0	z_center0z_range0x_centerx_rangey_centery_rangez_centerz_ranges                  r-   test_panr;    s    **,C	D	)BJJq!QJJOO%r}}7I%r}}7I%r}}7I 2k00CEKK2k00CE $R]]_5H#R]]_5H#R]]_5H fmmH----fmmH----fmmH---- v}}Y////v}}Y////v}}Y////r/   ztool,button,key,expectedr  ))rU  Q?)rJ  gQ?)r'  {Gz?rY   ))g{Gzr  )gQr=  gQr<  rZ   ))Q뱿r   )g{Gzr=  )rU  gQ?))g
ףp=
r  )g{Gzg(\?)r?  g
ףp=
?pan))gffffff(\)gp=
ףgQgRQgffffff))g
ףp=
gzG)rA  gq=
ףpݿr>  ))r  g{Gz?)gRQg(\ؿrB  c                    [         R                  " 5       nUR                  SS9nUR                  SSS5        UR                  R                  5         UR                  5       UR                  5       UR                  5       pnSn	Sn
UR                  R                  U	5      R                  [        5      nUR                  R                  U
5      R                  [        5      n[        SUR                  /UQUP7SU06n[        SUR                  /UQUP7SU06n[        UR                  5      nU S	:X  aD  UR                  5         UR!                  U5        UR#                  U5        UR%                  U5        OCUR'                  5         UR)                  U5        UR+                  U5        UR-                  U5        Uu  nnnUR                  5       [.        R0                  " US
S9:X  d   eUR                  5       [.        R0                  " US
S9:X  d   eUR                  5       [.        R0                  " US
S9:X  d   eUR3                  5         UR                  5       [.        R0                  " U5      :X  d   eUR                  5       [.        R0                  " U5      :X  d   eUR                  5       [.        R0                  " U5      :X  d   eUR5                  5         UR                  5       [.        R0                  " US
S9:X  d   eUR                  5       [.        R0                  " US
S9:X  d   eUR                  5       [.        R0                  " US
S9:X  d   eUR7                  5         UR                  5       [.        R0                  " U5      :X  d   eUR                  5       [.        R0                  " U5      :X  d   eUR                  5       [.        R0                  " U5      :X  d   eg )Nr3   r4   r   rK  r   r   button_press_eventkeybutton_release_eventr  rJ  )r$   )rC   rD   rE   ro  r   r   r  r  r  	transDatar  astypeintr	   r
   r  
press_zoom	drag_zoomrelease_zoomr@  	press_pandrag_panrelease_panrI  r.  backforwardhome)toolr  rF  expectedrH   r'   xlim0ylim0zlim0d0d1s0s1start_event
stop_eventtbr  r  r  s                      r-   test_toolbar_zoom_panr`  .  s
   ( **,C	D	)BJJq!QJJOO--/2==?BMMO%E 
B	B 
			#	*	*3	/B				#	*	*3	/B cjj@+-@/5@;>@K

B-/B17B=@BJ 
CJJ	'Bv~
	
k"
Z 

#

[!
J
z"  D$==?fmmDd;;;;==?fmmDd;;;;==?fmmDd;;;; GGI==?fmmE2222==?fmmE2222==?fmmE2222JJL==?fmmDd;;;;==?fmmDd;;;;==?fmmDd;;;;GGI==?fmmE2222==?fmmE2222==?fmmE2222r/   c                    [         R                  " [        [        R                  " [         R
                  " SSS5      [         R
                  " SSS5      [         R
                  " SSS5      /6 5      5      R                  u  p#nX#-   nU R                  SSS9nUR                  X#XESSS	9nU R                  R                  5         UR                  5         UR                  SSS9nUR                  X#XESSS	9n	g )
Nr   rp   r   o   r3   r4   r   r  )r   rh  r   )r   r    r!   r   r"   r   TrE   ro  r   r   changed)
r<   r=   rY   rZ   r[   r   r%  sc_testr$  sc_refs
             r-   test_scalarmap_updaterg  z  s     hhtI--		!Q0B02		!Q0B02		!Q0B0D E F GGHq A! 	
A ""34"8GooaAbyoAGOOOO    6F^^A!BY^?Fr/   c                      [         R                  " 5       n U R                  SS5      nUS   R                  SSSSS9nUS   R                  SSSSSS9ng )Nr   r   r   r3   r4   other)r5   r   )rC   rD   
subfiguresrE   )rH   sfr'   s      r-   test_subfigure_simplerl    sY    
**,C	1	B	A		1at		4B	A		1at7		CBr/   computed_zorder)baseline_imagesr   r1   r   c                  "   S[         R                  S'   [         R                  " 5       n U R                  SSS9nU R                  SSS9nSUl        SnX4 H  n[
        R                  " U/S	S
SS9nUR                  U5        UR                  SSSSSS9  UR                  SSSSSS9  UR                  S5        UR                  S5        UR                  S5        M     U R                  SSS9nU R                  SSS9nSUl        Sn[        R                  " U* U4U* U45      u  p[        R                  " S5      nSn[        R                  " U* U4SU45      u  pX-  n[        R                  " U* U4U* S45      u  nnUU-  nSnSn[        R                   " SS[        R"                  -  U5      nU[        R$                  " U5      -  U[        R&                  " U5      -  UU-  [        R&                  " U5      -  nnnXg4 GH  nUR)                  UUUSSSSS9  UR                  UUS:     UUS:     UUS:     S S!S"SS#9  UR)                  XUSSSSS9  UR                  U[        R&                  " U5      -  U[        R$                  " U5      -  [        R                  " U5      S S!S
SS#9  UR)                  XUSSSS$S9  UR                  UUS:     UUS:     UUS:     S S!S"S%S#9  UR+                  S&S'SS(9  UR-                  S)5        GM     g )*NTr      r3   r4      F)r   )r   rp   r   )rp   rp   r   )rp   r   r   whiteblackr   )r  r  r  )r   r   )r   rt   r   r   )r   r  )rn   rn   )r   rn   r   )r   rV  )r   r        r*  r   r  r)  r   ro   )r   r   r]  r  rp   z--r   )r  	linestyler   r  rn   rt   r   r  r   r  )rC   r   rD   rE   rm  r   r\  rT  r<  ro  r  r  r  r   r   rG  r2  r9  r;  r:  r`  r   rR   )rH   rC  rD  cornersr'   trir  ax4dimr   r   r   angleX2Y2Z2X3Y3Z3r)   r  thrY   rZ   r[   s                            r-   test_computed_zorderr    s;    )-CLL$%
**,C
//#$/
/C
//#$/
/CC ;Gj$$gY0707,-/ 	C  	%: 	

666U2
>
H
H
H " //#$/
/C
//#$/
/CC
C;;c{cT3K0DA
AE[[3$q#h/FB	B[[3$tQi0FB	eB	AA	QBEE	1	%B"&&*nq266":~uqy266":/E!qAj
B$!"#!	 	 	#
 	!a%!AE(Aa!eH	 	 	 	a#!"# 	 	 	" 	BFF2JBFF2J	 	 	 	$!"# 	 	 	" 	!a%!AE(Aa!eH 	 	 	"3Q/
G r/   c                  8   [         R                  " 5       n U R                  SS9n[        R                  " S5      nUR                  U[        R                  " U5      5        SnSnU R                  R                  5         UR                  X45      S:X  d   eUR                  SSS9  U R                  R                  5         UR                  X45      S	:X  d   eUR                  5         U R                  R                  5         UR                  X45      S:X  d   eUR                  S
5        U R                  R                  5         UR                  X45      S:X  d   eUR                  SSS9  U R                  R                  5         UR                  X45      S:X  d   eg )Nr3   r4   r   r  z"x=10.5227, y pane=1.0417, z=0.1444r   rZ   )r   vertical_axisz!x pane=9.1875, y=0.9761, z=0.1291r   z"x=10.8869, y pane=1.0417, z=0.1528r  r  z!x=9.0620, y pane=1.0417, z=0.1110)rC   rD   rE   r   r   r<  r:  r   r   format_coordr   r   )rH   r'   rY   xvyvs        r-   test_format_coordr    sJ   
**,C	D	)B
		"AGGArvvay	B	BJJOO??2"&JJJJ LLbL,JJOO??2"&IIII LLNJJOO??2"&JJJJ WJJOO??2"&JJJJ W3/JJOO??2"&IIIIr/   c                  $   [         R                  " 5       n U R                  SS9n[        R                  " S5      nUR                  U[        R                  " U5      5        U R                  R                  5         UR                  5       S:X  d   eg )Nr3   r4   r   )FTF)
rC   rD   rE   r   r   r<  r:  r   r   get_axis_position)rH   r'   rY   s      r-   test_get_axis_positionr  	  sf    
**,C	D	)B
		"AGGArvvayJJOO!%9999r/   c                     [         R                  " 5       n U R                  SS9nUR                  S5        UR                  5       S:X  d   eUR                  SSS5        UR                  5       S:X  d   eUR                  SS	9  UR                  5       S
:X  d   eUR                  SS9  UR                  5       S:X  d   eUR                  SS9  UR                  5       S:X  d   eg )Nr3   r4   r  )r  r  r  r  r  )r  r  r  r   )rY   )r   r  r  )rZ   )r   r  r  r[   )r   r  r   )rC   rD   rE   r  rG   s     r-   test_marginsr  	  s    
**,C	D	)BJJsO::<?***JJsC::<?***JJJO::<=(((JJJ::<=(((JJJO::<;&&&r/   c                      [         R                  " 5       n U R                  SS9nUR                  SSS5        UR	                  5       S:X  d   eUR                  5       S:X  d   eUR                  5       S:X  d   eg )Nr3   r4   r  r  r  )rC   rD   rE   r  get_xmarginget_ymarginget_zmarginrG   s     r-   test_margin_gettersr  $	  sl    
**,C	D	)BJJsC>>s""">>s""">>s"""r/   zerr, args, kwargs, match)ro   z!margin must be greater than -0\.5)r   ro   r   )r   r   ro   ro   r[   )r   z'Cannot pass both positional and keyword)rY   rZ   rD  z*Must pass a single positional argument forc                     [         R                  " XS9   [        R                  " 5       nUR	                  SS9nUR
                  " U0 UD6  S S S 5        g ! , (       d  f       g = f)NrG  r3   r4   )rI  rJ  rC   rD   rE   r  )errr  r#  rH  rH   r'   s         r-   test_margins_errorsr  -	  sH      
s	(jjl___-


D#F# 
)	(	(s   7A
A#c                 R   UR                  SS9n[        SSS5      n[        R                  " USS9  UR	                  U5        UR                  5       S:X  d   eU R                  SS9n[        R                  " SSSS5      nUR	                  U5        UR                  5       S:X  d   eg )Nr3   r4   r*  zFoo bar $\int$r   r  rt  )rE   r   r   text_2d_to_3drn  get_position_3dText3D)r<   r=   r'   txtt3ds        r-   test_text_3dr  C	  s    					-B
sC*
+C	q!MM# M111					.B
,,sC$5
6CMM# M111r/   c                      [         R                  " 5       n U R                  SS9nUR                  S/S//S/S//S/S//5        g )Nr3   r4   r   r   )rC   rD   rE   r<  rG   s     r-   test_draw_single_lines_from_Nx1r  Q	  sE    
**,C	D	)BGGaS1#J!qc
aS1#J/r/   c                    UR                  SS9n[        R                  " 5       n[        U5      n[        R
                  " USSS9  UR                  U5        U R                  SS9n[        R                  " USSS9nUR                  U5        g )Nr3   r4   )r   r*  r  r   r   rZ   r[   r   r  )rE   r   unit_rectangler   r   pathpatch_2d_to_3drn  PathPatch3D)r<   r=   r'   pathpatchpp3ds         r-   test_pathpatch_3dr  X	  s    					-B DdOE	U&9DMM%					.BT&9DDMM$r/   zscatter_spiral.png)rn  r   r   c                     S[         R                  S'   [         R                  " 5       n U R                  SS9n[        R
                  " SS[        R                  -  S-  S5      nUR                  [        R                  " U5      [        R                  " U5      US	US
-  -   US-  S9nU R                  R                  5         g )NTr   r3   r4   r   r   r      r   rp   r  )rC   r   rD   rE   r   r2  r9  ro  r:  r;  r   r   )rH   r'   r  scs       r-   test_scatter_spiralr  e	  s     )-CLL$%
**,C	D	)B	QBEE	As	+B	BFF2Jr
B1rAv:"'	JB JJOOr/   c                      [         R                  " SS0S9u  p[        SS5      nUR                  U5        [        R
                  " U5        UR                  5         g )Nr5   r3   r6   rK  r  )rC   r8   r   rL  r   r  get_path)rH   r'   ps      r-   test_Poly3DCollection_get_pathr  s	  sG     ll|T&:;GCvsALLO	QJJLr/   c                  0   [         R                  SSS2SSS24   u  p[         R                  " U5      S-  [         R                  " U 5      S-  -
  n[        R
                  " 5       nUR                  SSS9nUR                  XUS	S
9nUR                  5         g Nr   r   y              Y@rn   r   rb  r3   r4   hotr   )	r   ogridr;  r:  rC   rD   rE   r`  rO  rZ   rY   r  rH   r'   r)   s         r-   #test_Poly3DCollection_get_facecolorr  }	       88AbIqDy()DA	a"&&)q.	(B
**,C		.B
bu-AOOr/   c                  0   [         R                  SSS2SSS24   u  p[         R                  " U5      S-  [         R                  " U 5      S-  -
  n[        R
                  " 5       nUR                  SSS9nUR                  XUS	S
9nUR                  5         g r  )	r   r  r;  r:  rC   rD   rE   r`  get_edgecolorr  s         r-   #test_Poly3DCollection_get_edgecolorr  	  r  r/   zDvertical_axis, proj_expected, axis_lines_expected, tickdirs_expected)rU  #k$I?rU  ._x%I)rU  rU  (m?@mۿ)rU  rU  rU  g      $)#k$IrU  rU  W$%@g˗ì?g2m 3?g溾IgMg2m 3gM?r  )r  rU  rU  r  )rU  r  rU  r  )rU  rU  r  r  g˗ìg溾I?)r   r   r   )rU  rU  r  r  )r  rU  rU  r  )rU  r  rU  r  )r   r   r   c                 h   Sn[         R                  " SSSSS9nUR                  SSSU S9  UR                  5       R                  R                  5         UR                  5       n[        R                  R                  XUS9  [        UR                  5       UR                  5       UR                  5       /5       Hu  u  pxX'   n	UR                  R                  5       n
[        R                  R                  XUS9  X7   nUR!                  S5      n[        R                  R#                  X5        Mw     g	)
a  
Test the actual projection, axis lines and ticks matches expected values.

Parameters
----------
vertical_axis : str
    Axis to align vertically.
proj_expected : ndarray
    Expected values from ax.get_proj().
axis_lines_expected : tuple of arrays
    Edgepoints of the axis line. Expected values retrieved according
    to ``ax.get_[xyz]axis().line.get_data()``.
tickdirs_expected : list of int
    indexes indicating which axis to create a tick line along.
g>r   r3   r4   r   r   r   r   r  rtolr   N)rC   subplotr   
get_figurer   r   get_projr   r   r  rx   	get_xaxis	get_yaxis	get_zaxisrQ   get_data_get_tickdirr  )r  proj_expectedaxis_lines_expectedtickdirs_expectedr  r'   proj_actualr~   rR   axis_line_expectedaxis_line_actualtickdir_expectedtickdir_actuals                r-   test_view_init_vertical_axisr  	  s    H D	Q1	.BLLaaa}LEMMO! ++-KJJ}EbllnbllnbllnMN0399--/


""#5(, 	# 	. -/**95


%%&6G Or/   r  returnc                 b   [         R                  " SSSSS9nUR                  SSSU S9  UR                  5       R                  R                  5         UR                  5       n[        U[        R                  SSS9nUR                  U5        [        U[        R                  SSS9nUR                  U5        UR                  R                  U 5      UR                  :X  d   eUR                  5       n[        R                   R#                  [$        [        R                   R&                  X%5        g	)
zG
Test vertical axis is respected when rotating the plot interactively.
r   r3   r4   r   r  r
  r*  r   N)rC   r  r   r  r   r   r  r   r   r  r  r  _axis_namesindex_vertical_axisr   r   assert_raisesAssertionErrorr  )r  r'   proj_beforeevent_click
event_move
proj_afters         r-   test_on_move_vertical_axisr  	  s    
 
Q1	.BLLaaa}LEMMO!++-KR(8(8KK[!B{'7'7s#NJKK
>>."2C2CCCC JJJ

22Kr/   zvertical_axis, aspect_expected)/0?F&H?r  )r  r  r  )r  r  r  c                    [         R                  " SSSSS9nUR                  SSSU S9  UR                  5       R                  R                  5         UR                  S 5        [        R                  R                  XR                  SS9  g )Nr   r3   r4   r   r  r  r  )rC   r  r   r  r   r   rz   r   r   r  _box_aspect)r  aspect_expectedr'   s      r-   !test_set_box_aspect_vertical_axisr  
  sm     
Q1	.BLLaaa}LEMMO!dJJTJr/   zarc_pathpatch.pngc            	          [         R                  " SSSSS9n [        R                  " SSSSSS	S
9nU R	                  U5        [
        R                  " USSS9  g )Nr   r3   r4   )r*  r*  r*  g?r   r   r  )r   heightr{  theta1theta2r   r[   r  )rC   r  mpatchArcrL  r   r  )r'   r  s     r-   test_arc_pathpatchr  
  sP     
Q1	.B

:SBs	4ALLO	Q!#.r/   zpanecolor_rcparams.pngc                      [         R                  " SSSS.5         [         R                  " SS9n U R                  SS9  S S S 5        g ! , (       d  f       g = f)	Nr)   r   r   )zaxes3d.xaxis.panecolorzaxes3d.yaxis.panecolorzaxes3d.zaxis.panecolorrD  r   r3   r4   )rC   r  rD   rE   )rH   s    r-   test_panecolor_rcparamsr  #
  sK     
336368 
9 jj(4(	
9 
9 
9s   $A
Ac                     U R                  SSS9n/ SQn/ SQn/ SQnUR                  X4US5        / SQUSS& / SQUSS& UR                  SSS9n/ SQn/ SQn/ SQnUR                  X4US5        g)zn
Test to see if the `z` axis does not get mutated
after a call to `Axes3D.plot`

test cases came from GH#8990
rb  r3   r4   r  )rU  rU  rU  zo-NrA  )r<   r=   rC  rY   rZ   r[   rD  s          r-   "test_mutating_input_arrays_y_and_zr  .
  s     

st

4CAAAHHQ1d AaDAaD 

cd

3CAAAHHQ1dr/   c                  |   [         R                  SSS/n S[         R                  SS/nSS[         R                  * S/n/ SQ/ SQ/ SQ/ SQ/n[        R                  " 5       nUR                  SS9nUR                  XX#S9n[        UR                  5       5      [        [        [        U5      U]/  5       5      :X  d   eg)	zI
Test color parameter usage with non-finite coordinate arrays.

GH#26236
r   r   r   )rU  rU  rU  r   r3   r4   r   N)r   r  r	  rC   rD   rE   ro  r   get_offsetssuperrC  get_facecolors)rY   rZ   r[   r   rH   r'   path3ds          r-   test_scatter_masked_colorr  H
  s     
AA	
BFFAA	
AwA	F **,C	D	)BZZaZ.F v!!#$uT&\69;<= = =r/   zsurface3d_zsort_inf.pngc                     S[         R                  S'   [         R                  " 5       n U R                  SS9n[        R
                  SSS2SSS24   u  p#[        R                  " U5      S-  [        R                  " U5      S-  -   n[        R                  XBR                  S   S-  S 2UR                  S	   S-  S 24'   UR                  X#US
S9  UR                  SSS9  g )NTr   r3   r4   r  r   r  r   r   r  r  r     )r   r   )rC   r   rD   rE   r   r  r:  r;  r	  r  r`  r   rp  s        r-   test_surface3d_zsort_infr  b
  s    (,CLL$%
**,C	D	)B88BqHb3h&'DA
q	1rvvay!|#A,.FFAggajAo
a(()OOA!%O(LLbsL#r/   c                      [         R                  " [        SS9   [        R                  " / SQ/ SQ/ SQ/[
        5      n [        R                  " U /SS9nS S S 5        g ! , (       d  f       g = f)NzCYou must provide facecolors, edgecolors, or both for shade to work.rG  rY  rZ  r   Tr   )rI  rJ  r,  r   r    r  r   r\  )r]  r   s     r-   &test_Poly3DCollection_init_value_errorr  p
  sT     
z5
6 xxIy95A""D66	
6 
6 
6s   ;A
A,c            	          [         R                  " 5       n U R                  SSS9nUR                  SSS[        R
                  " / SQ5      S9  U R                  R                  5         g )Nrb  r3   r4   r   r   r  r   )rC   rD   rE   ro  r   r    r   r   rG   s     r-   %test_ndarray_color_kwargs_value_errorr  z
  sL     **,C		.BJJq!Qbhh|4J5JJOOr/   )	functoolsr   platformsysrI  mpl_toolkits.mplot3dr   r   r   r   mpl_toolkits.mplot3d.axes3dr   r  
matplotlibr  matplotlib.backend_basesr   r	   r
   r   r   r   r   r  matplotlib.testing.decoratorsr   r   matplotlib.testing.widgetsr   matplotlib.collectionsr   r   matplotlib.patchesr   r   matplotlib.pathr   matplotlib.textr   matplotlib.pyplotpyplotrC   numpyr   partialrf  r.   r>   rI   rS   rg   r   r   r   r   r   r   r   r   r   machiner   r  r
  r  markparametrizer&  r0  r6  r>  rE  rN  re  rj  rq  ru  rw  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@  rD  rI  rQ  rW  r^  ri  rr  ru  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*  rm  rp  ru  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r;  r  RIGHTr`  r   contextrg  rl  r  r  r  r  r  r,  tupler[  r  r  r  r  r  r  r  r  r  strr  r  r  r  r  r  r  r  r  r%  r/   r-   <module>r     sA      
  > > A : :  ; O 1 A 0       #**$i9 H ( )
 (8 9 34GD% E% -.EQ@ R@ U'J( K(  12$):4:4
J 34G$'LLH$<D!EE( W5J 6J	/ +,G< =& ./w?	 @	M6 )!)!1!1!3x!?AULGLG 12'B C )*':
 ;
 ./w? @ )VY,?-2L,A-2L,A,C D ( )D0 )*GD E w7 8 ( )$" +,G< =0 (	* )	* )9
. :
. ./w?& @&  237C4 D4 (
- )
- (9 )9( e}5(3C ) 63Cl #s,(, ) -,& (2 )2. ./U'J$ K$ 01AH BH, 34GD= E=$ )9- :-$ =>gN
 O
 /0@ A /0@ A4 ( )" (! )! 78H I EI J0 (H )H0 )uGD9 E9" /0d'J? K?" *+7;5 <5 56gF4 G4 56gF6 G698 (UC D* (I )I ./w?I @I" 237C	 D	
D ( )6% 67wG+ H+ 56gF+ G+$ 89I J8 9:'J K4SR ./$):1:1* )*WM N -.$)::	!
, " /0@ A, 56gF G:	/9  1!45: 6 2:( (  ) 2 23$):5:5 +,%wO P /0@ A (#4 )#4L 266266"23+ . & 4&y+ y+xP$ (< )<#(." ($A )$AN (@ )@ $%W5- 6- 45W%P" Q"" )*'!)!1!1!3x!?ATKK <.U;" <": )*':". ;".J3 %B#" (
6 )
6	)[F| CEAREARH$0N 3!;#3#3TDF!;#3#3SGI!;#3#3SFH!;#4#4dGI +"2"2DJL +"2"2CIK +"2"2CHJKL:3L:3z 9(@ ) @(D #4"54#WW7O7OdJ>:'# 3	UB DE	Z%IJ	Z%IJ	UWsBi)MN	UWsBi)MN	UWsBi)MN	EC8	2	4	E3	2	4	E+	2	4	FB LM6 $$ (
2 )
20 (	 )	 #7"8"!! J //&0	 j)K+EFz*[+,FG{+k:-FG
 	
  //&0	 z*Z,DEj)K+DE{+j*-EF
 	
  //&0	 {+j+-FGj)J
+CDk*Z,DE
 	
?.1d%He1d%HP /:c d  ;0 $	,-	,-	,-KK #6"7"!/!/ #;"<"!)!) ( )2=4 237C
$ D
$7r/   