
    (&h                     $   d dl Zd dlZd dlZd dlmZmZmZmZmZm	Z	m
Z
mZmZmZmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZ ed d         dk    Zed d         dk    Z ed d         d	k    Z!ej"        ej#        ej$         ej%        ej&        ej'        (                    ej        d
k     d                    ej)        ej*        ej+        ej,        ej-        ej.         ej%        ej/        ej'        (                    ej        dk     d                    fZ0ej1        ej2        ej3        ej4        ej5        fZ6ej'        7                    de          ej'        7                    de0          d                         Z8ej'        7                    de          ej'        7                    de6          d                         Z9ej'        7                    de          ej'        7                    de          d                         Z:ej'        7                    de0          d             Z;ej'        7                    de6          d             Z<ej'        7                    de          ej'        7                    de6          d                         Z=d Z>d Z?d Z@ej'        7                    de          d             ZAd ZBej'        7                    deefeef e eg d           eg d           g           eg dg d g!          feefegegfg          d"             ZCd# ZDej'        7                    deef eg d$           e	d%d&g          f eg d'           e eg d(           eg d)          g          feefegegfg          d*             ZEej'        7                    deef eg d+           eg d'          g eg d+           e eg d,           eg d(          g          gfedegedegfg          d-             ZFej'        (                    ej        dk     d          ej'        7                    deef eg d$           eg d$          f eg d'           e eg d(           eg d)          g          feefegegfg          d.                         ZGej'        (                    ej        dk     d          ej'        7                    deef eg d$           e            f eg d'           e eg d(           eg d)          g          feefegegfg          d/                         ZHej'        (                    ej        dk    d0          d1             ZIej'        (                    ej        dk     d          ej'        7                    d2 ejJ        d3d4g          d5eKd6fd3d5d7geKd8fd9d5eLd:fd3d7eLd;fg          d<                         ZMej'        7                    deef e	d=d%g           e	d%d&g          fg          d>             ZNd? ZOd@ ZPdA ZQdB ZRdC ZSej'        (                    ej        d
k     d          ej'        7                    d eg dD           edEdFg          f eg dG           eg dH          f eg dI           eg dJ          f eg dKg dLg!           eg dKg dMg!          f e eg dN           eg dO          g           e eg dP           eg dQ          g          feefeefeefeefeefeefeefg          dR                         ZTej'        (                    ej        dSk     dT          ej'        7                    dU eg dP          dgg          dV                         ZUej'        (                    ej        d
k     d          dW             ZVej'        (                    ej        d
k     d          ej'        7                    dUdXdYg          dZ                         ZWej'        7                    d edEd[g           ed[dEg          f eg dH           eg d\          f eg dP           eg d]          f eg dKg dMg!           eg d^g d_g!          f e	dEd[gd`dagg           e	d[dEgdad`gg          f e eg dP           eg dQ          g           e eg d]           eg db          g          feefeefeefeefeefeefeefg          dc             ZXdd ZYej'        7                    dedfdgg          dh             ZZej'        7                    d ed d            e            f edidi           edidi          f edidj           e            f edEdkg           e            f edldmg           edldmg          f eg dn           e            f edodpg           edqdrg          fg          ds             Z[ej'        7                    dt edudvg!          dw e            f edudxg!          dw e            f edydvg!          dz edydvg!          f eg dug dvg!          d{ eg d|          fg          d}             Z\ej'        7                    de          d~             Z]d Z^ej'        7                    deeeeg          d             Z_d Z`d Zad Zbd Zcd Zdd Zed Zfd Zgd Zhej'        (                    ej        dk     d          ej'        7                    de          ej'        7                    ddd g          d                                     Ziej'        (                    ej        dk     d          ej'        7                    de          d                         Zjej'        (                    ej        dk     d          ej'        7                    deeeeg          d                         Zkej'        (                    ej        dk     d          ej'        7                    deeeg          d                         Zlej'        (                    ej        dk     d          d             Zmej'        (                    ej        dk     d          ej'        7                    d edEdg          d edEdg          f eg dK          d eg dK          f edEdg          d eg d          f eg dK          d eg d          f edEdg           edEdg          gd eg d           edEdg          gf edEdg           edEdg          gdg eg d           edEdg          gf edEdg           edEdg          gddg eg d           eg d          gfg          d                         Znej'        7                    de          d             Zoej'        7                    d eg d           ej1         edd          d          f edFdg           ej1         edgd          d          f e
ddg           ej1         edd          dg          f edd           edd          f e             e            fg          d             Zpej'        7                    de          d             Zqej'        7                    dejr        ejs        g          ej'        7                    d e
g d           eg d          f eg d           eg d          f eg d           eg d          f edYdg           edYdg          f edd           edd          f e             e            fg          d                         Ztej'        (                    ej        dSk    d          ej'        7                    d e
g d           eg d          f eg d           eg d          f eg d           eg d          f edYdg           edYdg          f edd           edd          f e             e            fg          d                         Zud Zvej'        (                    ej        d
k     d          d             Zwej'        (                    ej        dk     d           G d d                      Zxej'        (                    ej        dSk     dT          d             Zyej'        (                    ej        dSk    d          d             Zzej'        7                    de          d             Z{ej'        7                    ddg          d             Z|d Z}d Z~ej'        7                    de          d             Zd Zd Zd Zd Zd Zd Zd ZdÄ ZdS )    N)GeometryGeometryCollectionGEOSException
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPointPolygongeos_version)UnsupportedGEOSVersionErrorassert_geometries_equal)	ArrayLike	all_typesemptyempty_line_stringempty_pointempty_polygonignore_invalidline_stringmulti_pointpointpoint_z   )   	   )r   
   )r      r   r    r   zGEOS < 3.11)reason)marks)r   r   r   zGEOS < 3.10geometryfuncc                 R   | j         r^t          j        |           dk    rF|t          j        u r8t          rt
          dk     st          rt
          dk     rt          j        d            || | g          }|j	        dk    sJ |d         t          |d         t                    sJ d S d S )Nr   )r   r   r   )r   r   r   z;GEOS < 3.9.3 or GEOS < 3.10.3 crashes with empty geometriesr   )is_emptyshapelyget_num_geometriesnodegeos39r   geos310pytestxfailshape
isinstancer   r$   r%   actuals      Z/var/www/html/reinick/venv/lib/python3.11/site-packages/shapely/tests/test_constructive.pytest_no_args_arrayr5   G   s     		T&x00144GL   !$y00 1(:55 	RSSST8X&''F<4!9
6!9h ? ?    c                    |t           j        u rit          j        |           dvrSt           j        dk     rCt	          j        t          d          5   || | gd           d d d            n# 1 swxY w Y   d S t          |t           j        u o't          j        |           dk    ot           j        dk               5   || | gd          }d d d            n# 1 swxY w Y   |j	        dk    sJ t          |d         t                    sJ d S )	N   r   r!   zonly accept linestringsmatch        r   r      r   r'   )r)   offset_curveget_type_idr   r.   raisesr   r   voronoi_polygonsr0   r1   r   r2   s      r4   test_float_arg_arrayrC   Y   s    	$$$))77 :--]=0IJJJ 	, 	,D(H%s+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 
(( 	.))Q.	. :-
 
 1 1
 x*C001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 <4fQi*******s$   A++A/2A/;CCC	referencec                     t          j        | | g||gd          }|j        dk    sJ t          |d         t                    sJ d S )N      ?	tolerancer'   r   )r)   snapr0   r1   r   )r$   rD   r3   s      r4   test_snap_arrayrJ   p   sX     \8X.I0FRUVVVF<4fQi*******r6   c                 $     | d           }|J d S N r%   r3   s     r4   test_no_args_missingrO   x   s    T$ZZF>>>>>r6   c                 &     | d d          }|J d S )NrF   rM   rN   s     r4   test_float_arg_missingrQ   ~   s    T$__F>>>>>r6   c                 @     || t          d                    }|J d S )Nnan)floatr2   s      r4   test_float_arg_nanrU      s(     T(E%LL))F>>>>>r6   c                      t          j        t          d          5  t          j        t
          dd           d d d            d S # 1 swxY w Y   d S )N'invalid' is not a valid optionr:   r9   invalid)	cap_styler.   rA   
ValueErrorr)   bufferr   rM   r6   r4   test_buffer_cap_style_invalidr]      s    	z)J	K	K	K 6 6ua955556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6   AA
A
c                      t          j        t          d          5  t          j        t
          dd           d d d            d S # 1 swxY w Y   d S )NrW   r:   r9   rX   
join_stylerZ   rM   r6   r4   test_buffer_join_style_invalidrb      s    	z)J	K	K	K 7 7uaI66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7r^   c                  F    t          j        d t          d          } | J d S )NrF   rG   )r)   rI   r   r3   s    r4   test_snap_nonere      s%    \$555F>>>>>r6   c                 Z    t          j        | t          t          j                  }|J d S )NrG   )r)   rI   r   nprS   r$   r3   s     r4   test_snap_nan_floatri      s'    \(ERV<<<F>>>>>r6   c                  6    t          j        d           } | J d S rL   r)   
build_areard   s    r4   test_build_area_nonerm          %%F>>>>>r6   zgeom,expected)r   r   )r   r   r   r   )r   r   ro   )r9   r9   r   r   r8   rq   holesc                 J    t          j        |           }||usJ ||k    sJ d S rL   rk   geomexpectedr3   s      r4   test_build_areary      s<    . %%F!!!!Xr6   c                  6    t          j        d           } | J d S rL   )r)   
make_validrd   s    r4   test_make_valid_noner|      rn   r6   )ro   rq   r8   rq   ro   )rq   r8   )ro   rq   )ro   rr   r   r   r   r   ro   )rq   rr   r}   rq   )ro   r~   rq   ro   c                 n    t          j        |           }||usJ t          j        |          |k    sJ d S rL   r)   r{   	normalizerv   s      r4   test_make_validr      sG    0 %%F!!!!V$$000000r6   )ro   rr   r~   ro   )rq   ro   r~   rq   c                     t          j        |           }t          j        t          j        |          t          j        |          k              sJ d S rL   )r)   r{   rg   allr   rv   s      r4   test_make_valid_1dr      sK    0 %%F6'#F++w/@/J/JJKKKKKKKr6   c                 r    t          j        | d          }||usJ t          j        |          |k    sJ d S )N	structuremethodr   rv   s      r4   test_make_valid_structurer     sL    2 [999F!!!!V$$000000r6   c                 t    t          j        | dd          }||usJ t          j        |          |k    sJ d S )Nr   Fr   keep_collapsedr   rv   s      r4   .test_make_valid_structure_keep_collapsed_falser      sN    2 [OOOF!!!!V$$000000r6   zGEOS >= 3.10c                      t          j        t          d          5  t          j        t                      d          } d d d            d S # 1 swxY w Y   d S )Nz:The 'structure' method is only available in GEOS >= 3.10.0r:   r   r   )r.   rA   r[   r)   r{   r   )_s    r4   *test_make_valid_structure_unsupported_geosr   ?  s    	V
 
 
 < < uww{;;;< < < < < < < < < < < < < < < < < <s   #AAAz)method, keep_collapsed, error_type, errorlineworkr   Tz!method only accepts scalar valuesFz)keep_collapsed only accepts scalar valuesunknownzUnknown method: unknownz=The 'linework' method does not support 'keep_collapsed=False'c                     t          j        ||          5  t          j        t	                      | |          }d d d            d S # 1 swxY w Y   d S )Nr:   r   )r.   rA   r)   r{   r   )r   r   
error_typeerrorr   s        r4   test_make_valid_invalid_paramsr   G  s    4 
z	/	/	/ V VuwwvnUUUV V V V V V V V V V V V V V V V V Vs   $AAA)rq   ro   c                 >    t          j        |           }||k    sJ d S rL   )r)   r   rv   s      r4   test_normalizer   e  s+     t$$FXr6   c                      t          t          j        dk               5  t          j        t          d          } d d d            n# 1 swxY w Y   t          j        |           sJ d S )Nr=          @)r   r)   r   r?   r   r(   rd   s    r4   test_offset_curve_emptyr   u  s    	,z9	:	: > > %&7==> > > > > > > > > > > > > > > F#######s   AA	A	c                      t          j        t          t          gddg          } | d         t          j        t          d          k    sJ | d         t          j        t          d          k    sJ d S )N       g      r   r9   r)   r?   r   results    r4    test_offset_curve_distance_arrayr   }  sg    !;"<tTlKKF!9,[$??????!9,[$????????r6   c                      t          j        t          dddd          } t          j        t          d          }| |k    sJ d S )Nr   r   mitrer   )	quad_segsra   mitre_limitr   )result1result2s     r4   test_offset_curve_kwargsr     sO    "TQ7  G ";55Ggr6   c            	      @   d} t          j        t          |           5  t          j        t
          t
          gdt          j        ddg                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          j        t
          t
          gdddg	           d d d            n# 1 swxY w Y   t          j        t          |           5  t          j        t
          t
          gdd
dg           d d d            d S # 1 swxY w Y   d S )Nonly accepts scalar valuesr:   r9      r   )r   roundbevelr`         @      @)r   )r.   rA   	TypeErrorr)   r?   r   rg   arraymsgs    r4   #test_offset_curve_non_scalar_kwargsr     s   
&C	y	,	,	, X Xk;7bhPQSTvFVFVWWWWX X X X X X X X X X X X X X X 
y	,	,	, 
 
+&w6H	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
y	,	,	, T Tk;7c
SSSST T T T T T T T T T T T T T T T T Ts5   8A""A&)A&&B::B>B> &DDDc                      t          j        t          d          5  t          j        t
          dd           d d d            d S # 1 swxY w Y   d S )NrW   r:   rF   rX   r`   )r.   rA   r[   r)   r?   r   rM   r6   r4   $test_offset_curve_join_style_invalidr     s    	z)J	K	K	K E E[#)DDDDE E E E E E E E E E E E E E E E E Er^   )ro   ro   r9   r   ro   r   )ro   r8   r8   r9   r   ro   )ro   r8   r   ro   )ro   ro   r   rq   r   ro   )ro   r   rq   r   ro   )ro   r   r   r   r   r   r   ro   )rr   rr   r      r   r   r   r   rr   rr   r   r   r   rr   )ro   ro   r   rq   r   r9   ro   )rr   rr   r   r   rp   r   r   rr   ro   r   rq   r   ro   )rr   r   rp   r   rr   c                 L    t          t          j        | d          |           d S Nr   )r   r)   remove_repeated_pointsrw   rx   s     r4   test_remove_repeated_pointsr     s(    b G:4CCXNNNNNr6   r=   zGEOS < 3.12zgeom, tolerancec                     t          j        t          j        d          5  t          j        | |           d d d            d S # 1 swxY w Y   d S )NzInvalid number of pointsr:   )r.   rA   r)   r   r   rw   rH   s     r4   *test_remove_repeated_points_invalid_resultr     s     
w,4N	O	O	O 8 8&tY7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   AAAc                  D   t          j        d d          J t          j        d gd                                          d gk    sJ t          g d          } t          ddg          }t          j        d | gd          }|d         J t	          |d         |           d S )Nr9   )ro   ro   rq   ro   rq   r   )r)   r   tolistr   r   r$   rx   r   s      r4    test_remove_repeated_points_noner     s    )$22:::)4&!44;;==$GGGG22233H66*++H+T8,<a@@F!9F1Ix00000r6   )Not a geometryr9   rq   c                     t          j        t          d          5  t          j        | |           d d d            d S # 1 swxY w Y   d S Nz)One of the arguments is of incorrect typer:   )r.   rA   r   r)   r   r   s     r4   (test_remove_repeated_points_invalid_typer     s     
y(S	T	T	T 8 8&tY7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   ?AAr8   )ro   r   r8   ro   ro   r   rq   r   ro   ro   r   r   r   ro   )rr   r   r   r   rr   rp   r   )rr   r   rp   r   rr   c                 J    t          t          j        |           |           d S rL   )r   r)   reverser   s     r4   test_reverser     s%    h GOD118<<<<<r6   c                  >   t          j        d           J t          j        d g                                          d gk    sJ t          g d          } t          g d          }t          j        d | g          }|d         J t	          |d         |           d S )Nr   r   r   r9   )r)   r   r   r   r   r   s      r4   test_reverse_noner   )  s    ?4  (((?D6""))++v5555???@@H???@@H_dH-..F!9F1Ix00000r6   rw   r   r9   c                     t          j        t          d          5  t          j        |            d d d            d S # 1 swxY w Y   d S r   )r.   rA   r   r)   r   )rw   s    r4   test_reverse_invalid_typer   4  s    	y(S	T	T	T                   s   >AA   r   )   )r   r   )   r   )r   r   r   r   r   r   r   )      r   )r   r   c                 V    t          j        | dddd          }t          ||           d S )Nr   r   r)   clip_by_rectr   rv   s      r4   test_clip_by_rectr   :  s2    ( !$BB77FFH-----r6   zgeom, rect, expected)ro   )r      r   r   )r   r   ro   )r   r   r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   )rq   )r9   r   r   )r   r9   rq   )r   r   (   r   )r   r   r   r   )r   r   )r   r   r   r   r   )r   r   r   c                 J    t          j        | g|R  }t          ||           d S rL   r   )rw   rectrx   r3   s       r4   test_clip_by_rect_polygonr   R  s3    Z !$....FFH-----r6   c                    | j         rt          j        |           t          j        j        k    rt
          rt          dk     s$t          rt          dk     st          rXt          dk     rMt          j
        t                    5  t          j        | | gdddd           d d d            n# 1 swxY w Y   d S t          j        | | gdddd          }|j        dk    sJ |d         t          |d         t                    sJ d S d S )N)r   r   r   )r   r      )r   r    r   r<   rF   r'   r   )r(   r)   r@   GeometryTypePOINTr,   r   r-   geos311r.   rA   r   r   r0   r1   r   rh   s     r4   test_clip_by_rect_arrayr     s_    	))W-A-GGG H$y00 1(:55 6(:55 ]=)) 	K 	K (H!5sCcJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K!8X"6S#sKKF<4!9
6!9h ? ?s   >B%%B),B)c                  >    t          j        d dddd          } | J d S Nr   r9   )r)   r   rd   s    r4   test_clip_by_rect_missingr     s'    !$1a33F>>>>>r6   c                 ^    t          j        | dddd          }|t                      k    sJ d S r   )r)   r   r   )rw   r3   s     r4   test_clip_by_rect_emptyr     s:     !$1a33F'))))))))r6   c                      d} t          j        t          |           5  t          j        t
          t
          gdddt          j        ddg                     d d d            d S # 1 swxY w Y   d S )Nr   r:   r   r9   )r.   rA   r   r)   r   r   rg   r   r   s    r4   #test_clip_by_rect_non_scalar_kwargsr    s    
&C	y	,	,	, T Tk;7Aq"(Aq6BRBRSSST T T T T T T T T T T T T T T T T Ts   9A$$A(+A(c            
         t          ddg          t          ddg          t          ddg          t          ddg          t          ddg          t          ddg          t          dd          d g} t          j        |           }t          j        |          dk    sJ t          t          g d	          t          g d
          g          }||k    sJ d S )Nro   rq   r   r   r   r   r   r      ro   rq   r   ro   rq   ro   r   rq   )r   r   r)   
polygonizer@   r   r   )linesr   rx   s      r4   test_polygonizer
    s    FF#$$FF#$$FF#$$FF#$$FF#$$FF#$$a	E &&Fv&&!++++!4445544455	
 H Xr6   c                     t          ddg          t          ddg          t          ddg          g} t          t          g d          g          }t          j        t          j        |                     }t          |t          j                  sJ ||k    sJ t          j        t          j        | g                    }t          |t
          j	                  sJ |j
        dk    sJ |d         |k    sJ t          j        | | g          }|j
        dk    sJ t          j        |          }t          |t
          j	                  sJ |j
        dk    sJ |d         |k    sJ |d	         |k    sJ t          j        | | g| | g| | gg          }|j
        d
k    sJ t          j        |          }t          |t
          j	                  sJ |j
        dk    sJ |                                D ]
}||k    sJ d S )Nro   rq   r   r  r9   r   r   r'   r9   r   r   r   r   )r   r   r   r)   r  rg   r   r1   r   ndarrayr0   flattenr	  rx   r   arrress        r4   test_polygonize_arrayr    s%   FF#$$FF#$$FF#$$E
 "7+K+K+K#L#L"MNNH00Ffg./////X% 1 122Ffbj)))))<4!9    
(E5>
"
"C9$$Ffbj)))))<4!9    !9    
(UENUENUENC
D
DC9	!!!!$$Ffbj)))))<6!!!!~~  h r6   c                  "   t          ddg          t          ddg          t          ddg          g} t          j        | | g          }t          j        |d          }|j        dk    sJ t          j        |d          }|j        dk    sJ d S )	Nro   rq   r   r9   axisr'   r   r   )r   rg   r   r)   r  r0   r	  r  r   s      r4   test_polygonize_array_axisr    s    FF#$$FF#$$FF#$$E
 (E5>
"
"C!,,,F<4!,,,F<4r6   c                  Z    t          j        d d g          } | t                      k    sJ d S rL   )r)   r  r   r   s    r4   test_polygonize_missingr    s4    t--F'))))))))r6   c                     d t          ddg          t          ddg          t          ddg          t          ddg          d t          ddg          t          ddg          t          ddg          t          dd          d g} t          j        |           }t	          |          d	k    sJ t          d
 |D                       sJ |\  }}}}t          t          g d          t          g d          g          }||k    sJ |t                      k    sJ t          t          ddg          t          ddg          g          }||k    sJ |t                      k    sJ d S )Nro   rq   r   r   r   r  d   r  r   r   c              3   F   K   | ]}t          j        |          d k    V  dS )r  N)r)   r@   .0rw   s     r4   	<genexpr>z'test_polygonize_full.<locals>.<genexpr>  s2      AA$w"4((A-AAAAAAr6   r  r  )r   r   r)   polygonize_fulllenr   r   r   )r	  r   polygonscutsdanglesrX   expected_polygonsexpected_dangless           r4   test_polygonize_fullr*    s   FF#$$FF#$$FF#$$FF#$$FF#$$FF#$$FJ'((aE $U++Fv;;!AA&AAAAAAAA'-$HdGW*4445544455	
  (((((%'''''')	VZ(	)	):vv6F+G+GH  &&&&&(********r6   c                  n   t          ddg          t          ddg          t          ddg          g} t          t          g d          g          }t          j        t          j        |                     }t          |          dk    sJ t          d |D                       sJ |d         |k    sJ t          d |d	d          D                       sJ t          j        t          j        | g                    }t          |          dk    sJ t          d
 |D                       sJ t          d |D                       sJ |d         d         |k    sJ t          d |d	d          D                       sJ t          j        | | g          }|j	        dk    sJ t          j        |          }t          |          dk    sJ t          d |D                       sJ t          d |D                       sJ |d         d         |k    sJ |d         d	         |k    sJ t          d |d	d          D                       sJ t          j        | | g| | g| | gg          }|j	        dk    sJ t          j        |          }t          |          dk    sJ t          d |D                       sJ t          d |D                       sJ |d         
                                D ]
}||k    sJ |d	d          D ]-}|
                                D ]}|t                      k    sJ .d S )Nro   rq   r   r  r   c              3   J   K   | ]}t          |t          j                  V  d S rL   )r1   r)   r   r   s     r4   r"  z-test_polygonize_full_array.<locals>.<genexpr>  s/      EEdz$ 011EEEEEEr6   r   c              3   :   K   | ]}|t                      k    V  d S rL   r   r   s     r4   r"  z-test_polygonize_full_array.<locals>.<genexpr>  s.      CCt)+++CCCCCCr6   r9   c              3   J   K   | ]}t          |t          j                  V  d S rL   r1   rg   r  r   s     r4   r"  z-test_polygonize_full_array.<locals>.<genexpr>#  s.      ??z$
++??????r6   c              3   ,   K   | ]}|j         d k    V  dS )r  Nr0   r   s     r4   r"  z-test_polygonize_full_array.<locals>.<genexpr>$  s)      55dtzT!555555r6   c              3   F   K   | ]}|d          t                      k    V  dS )r   Nr.  r   s     r4   r"  z-test_polygonize_full_array.<locals>.<genexpr>&  s2      FF4tAw,...FFFFFFr6   r   c              3   J   K   | ]}t          |t          j                  V  d S rL   r0  r!  r  s     r4   r"  z-test_polygonize_full_array.<locals>.<genexpr>,  .      ==sz#rz**======r6   c              3   ,   K   | ]}|j         d k    V  dS r'   Nr2  r5  s     r4   r"  z-test_polygonize_full_array.<locals>.<genexpr>-  )      33SsyD 333333r6   c              3   D   K   | ]}|D ]}|t                      k    V  d S rL   r.  )r!  rw   gs      r4   r"  z-test_polygonize_full_array.<locals>.<genexpr>0  s;      NNTNNAq&(((NNNNNNNr6   r  c              3   J   K   | ]}t          |t          j                  V  d S rL   r0  r5  s     r4   r"  z-test_polygonize_full_array.<locals>.<genexpr>6  r6  r6   c              3   ,   K   | ]}|j         d k    V  dS )r   Nr2  r5  s     r4   r"  z-test_polygonize_full_array.<locals>.<genexpr>7  s)      55ssyF"555555r6   )r   r   r   r)   r#  rg   r   r$  r   r0   r  r  s        r4   test_polygonize_full_arrayr>    s   FF#$$FF#$$FF#$$E
 "7+K+K+K#L#L"MNNH$RXe__55Fv;;!EEfEEEEEEEE!9    CCqrr
CCCCCCCC$RXug%6%677Fv;;!??????????55f55555555!9Q<8####FF6!"":FFFFFFFF
(E5>
"
"C9$S))Fv;;!==f========33F33333333!9Q<8####!9Q<8####NNVABBZNNNNNNNN
(UENUENUENC
D
DC9	!!!!$S))Fv;;!==f========55f55555555ay  ""  habbz / /;;== 	/ 	/C,.......	// /r6   c                     t          ddg          t          ddg          t          ddg          g} t          j        | | g          }t          j        |d          }t          |          dk    sJ t          d |D                       sJ t          j        |d          }t          |          dk    sJ t          d	 |D                       sJ d S )
Nro   rq   r   r9   r  r   c              3   ,   K   | ]}|j         d k    V  dS r8  r2  r5  s     r4   r"  z2test_polygonize_full_array_axis.<locals>.<genexpr>H  r9  r6   r   c              3   ,   K   | ]}|j         d k    V  dS )r  Nr2  r5  s     r4   r"  z2test_polygonize_full_array_axis.<locals>.<genexpr>K  r9  r6   )r   rg   r   r)   r#  r$  r   r  s      r4   test_polygonize_full_array_axisrB  ?  s    FF#$$FF#$$FF#$$E
 (E5>
"
"C$Sq111Fv;;!33F33333333$Sq111Fv;;!33F3333333333r6   c                      t          j        d d g          } t          |           dk    sJ t          d | D                       sJ d S )Nr   c              3   :   K   | ]}|t                      k    V  d S rL   r.  r   s     r4   r"  z/test_polygonize_full_missing.<locals>.<genexpr>R  s.      ??t)+++??????r6   )r)   r#  r$  r   r   s    r4   test_polygonize_full_missingrE  N  sV    $dD\22Fv;;!????????????r6   max_segment_lengthc                     t          j        t          d          5  t          j        | |           d d d            d S # 1 swxY w Y   d S )NIllegalArgumentExceptionr:   rF  )r.   rA   r   r)   
segmentize)r$   rF  s     r4   *test_segmentize_invalid_max_segment_lengthrL  U  s     
},F	G	G	G L L88JKKKKL L L L L L L L L L L L L L L L L Ls   A  AAc                 N    t          j        | t          j                  }|J d S )NrJ  )r)   rK  rg   rS   rh   s     r4   &test_segmentize_max_segment_length_nanrN  ]  s(     RVDDDF>>>>>r6   c                 R    t          j        | d          }t          ||            d S Nr   rJ  r)   rK  r   rh   s     r4   test_segmentize_emptyrR  d  s/    
 Q???FFH-----r6   c                 R    t          j        | d          }t          ||            d S rP  rQ  rh   s     r4   test_segmentize_no_changerT  m  s/     Q???FFH-----r6   c                  6    t          j        d d          J d S rP  )r)   rK  rM   r6   r4   test_segmentize_nonerV  t  s$    dq999AAAAAr6   zgeometry,tolerance, expectedr   r   r   )ro   r   r   r   )	ro   r   r   r   r   r   r   r   r   rW  ro   r~         ?)ro   r   r~   c                 P    t          j        | |          }t          ||           d S rL   rQ  )r$   rH   rx   r3   s       r4   test_segmentizer\  y  s-    V )44FFH-----r6   c                     t          j        | | g          }|j        dk    sJ |d         t          |d         t                    sJ t          j        d           }|J d S Nr'   r   )r)   minimum_bounding_circler0   r1   r   rh   s     r4   &test_minimum_bounding_circle_all_typesr`    sj    ,h-ABBF<4!9
6!9h ? ?,T22F>>>>>r6   zgeometry, expected)rW  rY  r   rX  rW  )r9   r   rr   r   r   c                 N    t          j        |           }t          ||           d S rL   )r)   r_  r   r$   rx   r3   s      r4   test_minimum_bounding_circlerc    s*    4 ,X66FFH-----r6   c                     t          j        | | g          }|j        dk    sJ |d         t          |d         t                    sJ t          j        d           }|J d S r^  )r)   oriented_enveloper0   r1   r   rh   s     r4    test_oriented_envelope_all_typesrf    sj    &(';<<F<4!9
6!9h ? ?&t,,F>>>>>r6   )rF   rF   )rF   r   )      @r   )g      @r   )r   r   )rg  )rF   r   )r   r   )r   rF   rg  )rq   )r   r9   r   )rq   )r   rG  )r>   r   r   rq   )rq   )r   r9   )r   r   rq   )rg  )r         "@)g3333330@333333@)gffffff(@gffffffrg  )r   r9   c                 B     ||           }t          ||dd           d S NTgMbP?)r   rH   r   )r$   rx   r%   r3   s       r4   test_oriented_enveloperm    s/    B T(^^FFHMMMMMMr6   zGEOS >= 3.12)gɿgffffff?)rZ  g      @)gffffff@g333333@)rj  g?rn  )rg  )rF   ri  )      .@ri  )ro  rF   rg  c                 j    t           j                            |           }t          ||dd           d S rl  )r)   constructive_oriented_envelope_geosr   rb  s      r4   #test_oriented_envelope_pre_geos_312rs    s8    B !99(CCFFHMMMMMMr6   c                  n   t          dd                              d          t          dd                              d          g} t          j        t	          |                     }t          |t                    sJ t          j        |           }t          t          j        |          |           d S )Nr9   r   )	r   r\   r)   re  r   r1   r   rg   asarray)
geometriesr3   rx   s      r4    test_oriented_evelope_array_likerw  D  s     1++$$Q''q!););A)>)>?J&y'<'<==Ffi((((((44HBJv..99999r6   c                  P   t          dd          } t          |                     d          j        j        d d          |                     d          j        j        d d          z             }t          j        |d          }t          |j                  dk    sJ t          j        |dd          }t          |j                  d	k    sJ t          j        |d          }t          j        |d	          }t          j	        |          t          j	        |          k     sJ d S )
Nr   r   r   g      ?)ratior   T)ry  allow_holesr9   )
r   r	   r\   exteriorcoordsr)   concave_hullr$  	interiorsget_num_coordinates)pmpr   r   result3result4s         r4   test_concave_hull_kwargsr  O  s   b"A	AHHQKK(/2QXXa[[5I5PQRQRQR5SS	T	TB"2S111Gw !!Q&&&&"2SdCCCGw !!Q&&&&"2Q///G"2Q///G&w//'2Mg2V2VVVVVVVr6   c                   *    e Zd ZdZd Zd Zd Zd ZdS )$TestConstrainedDelaunayTriangulationz
    Only testing the number of triangles and their type here.
    This doesn't actually test the points in the resulting geometries.

    c                     t          j        t          g d                    }t          |j                  dk    sJ |j        D ]}t          |t                    sJ d S )Nr   )r   r   )Z   r  )r  r   r   r   )r)   constrained_delaunay_trianglesr   r$  geomsr1   )selfpolysr  s      r4   	test_polyz.TestConstrainedDelaunayTriangulation.test_polyf  sw    6FFFGG
 
 5;1$$$$ 	* 	*Aa))))))	* 	*r6   c                     t          t          d          t          d          g          }t          j        |          }t	          |j                  dk    sJ |j        D ]}t          |t                    sJ d S )N)2   r   )<   r   r  r  r  r   )r
   r   r)   r  r$  r  r1   )r  	multipolyr  r  s       r4   test_multi_polygonz7TestConstrainedDelaunayTriangulation.test_multi_polygonn  s     BCCJKK
 
	 6yAA5;1$$$$ 	* 	*Aa))))))	* 	*r6   c                     t          dd          }t          j        |          }t          |j                  dk    sJ d S )Nr9   r   )r   r)   r  r$  r  )r  r  r  s      r4   
test_pointz/TestConstrainedDelaunayTriangulation.test_pointz  s@    !QKK6q995;1$$$$$$r6   c                 z    t          j        t                                }t          |j                  dk    sJ d S r   )r)   r  r   r$  r  )r  r  s     r4   test_empty_polyz4TestConstrainedDelaunayTriangulation.test_empty_poly  s7    6wyyAA5;1$$$$$$r6   N)__name__
__module____qualname____doc__r  r  r  r  rM   r6   r4   r  r  ^  sZ         * * *
* 
* 
*% % %
% % % % %r6   r  c                  D   t          g d          } t          j        | d          }|j        d                             t          g d                    sJ t          j        | d          }|j        d                             t          g d                    sJ d S )N)rh  rF   )rh  r   )rF   r   rg  Forderedr   )rG  rG  )rG  rZ  r   rZ  r   rG  r  T)r   rG  r  r  )r   rZ  r  )r	   r)   rB   r  equalsr   )r  r   result_ordereds      r4   test_voronoi_polygons_orderedr    s    	DDD	E	EB%b%888F<?!!BBBCC     -b$???N"))???@@      r6   c                      t          g d          } t          j        t          d          5  t	          j        | d           d d d            d S # 1 swxY w Y   d S )Nr  z%Ordered Voronoi polygons require GEOSr:   Tr  )r	   r.   rA   r   r)   rB   )r  s    r4   #test_voronoi_polygons_ordered_raiser    s    	DDD	E	EB	#+R
 
 
 3 3 	 T22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   AAAc                 $   t          j        |           dvrIt          j        t          d          5  t          j        |            d d d            n# 1 swxY w Y   d S | j        rIt          j        t          d          5  t          j        |            d d d            n# 1 swxY w Y   d S t          j        | | g          }|j        dk    sJ |d         t          |d         t                    sJ t          j        d           }|J d S )N)r   r   zArgument must be Polygonal or LinearRing|Input geometry must be a Polygon or MultiPolygon|Operation not supported by GeometryCollectionr:   %Empty input geometry is not supportedr'   r   )
r)   r@   r.   rA   r   maximum_inscribed_circler(   r0   r1   r   rh   s     r4   'test_maximum_inscribed_circle_all_typesr    s   8$$F22]@
 
 
 	7 	7 ,X666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	 ]!H
 
 
 	7 	7 ,X666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	-x.BCCF<4!9
6!9h ? ?-d33F>>>>>s#   AAAB##B'*B')%POLYGON ((0 5, 5 10, 10 5, 5 0, 0 5))zLINESTRING (5 5, 2.5 7.5)c                     t          j        |           t          j        |          }} t          j        |           }t          ||           d S rL   )r)   from_wktr  r   rb  s      r4   test_maximum_inscribed_circler    sI     !)(33W5Eh5O5OhH-h77FFH-----r6   c                  t   t          j        d          } t          j        t          d          5  t          j        |            d d d            n# 1 swxY w Y   t          j        d          } t          j        t          d          5  t          j        |            d d d            d S # 1 swxY w Y   d S )NzPOINT EMPTYzYArgument must be Polygonal or LinearRing|Input geometry must be a Polygon or MultiPolygonr:   zPOLYGON EMPTYr  )r)   r  r.   rA   r   r  r$   s    r4   #test_maximum_inscribed_circle_emptyr    s6   ..H	?
 
 
 3 3 	(2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 00H	},S	T	T	T 3 3(2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s#   AAAB--B14B1c                      t          j        d          } t          j        t          d          5  t          j        | d           d d d            d S # 1 swxY w Y   d S )Nr  z'tolerance' should be positiver:   rG  rG   )r)   r  r.   rA   r[   r  r  s    r4   /test_maximum_inscribed_circle_invalid_tolerancer    s     GHHH	z)I	J	J	J A A(R@@@@A A A A A A A A A A A A A A A A A As   AAAc                     t          j        | | g          }|j        dk    sJ t          |d         t                    sJ t          j        d           }|J d S r^  )r)   orient_polygonsr0   r1   r   rh   s     r4   test_orient_polygons_all_typesr    sa    $h%9::F<4fQi*****$T**F>>>>>r6   c                     t          g dg dg          } t          j        |           }|j        j        sJ |j        d         j        rJ t          j        | d          }|j        j        rJ |j        d         j        sJ t          | | g          }t          j        |          }t          |j                  dk    sJ |j        D ]$}|j        j        sJ |j        d         j        rJ %t          j        |gd          d         }t          |j                  dk    sJ |j        D ]$}|j        j        rJ |j        d         j        sJ %t          t          dd          | |g          }t          j        |          }t          |j                  d	k    sJ |j        d         t          dd          k    sJ |j        d         t          j        |           k    sJ |j        d         t          j        |          k    sJ d S )
Nr   r   rs   r   T)exterior_cwr   r9   r   )r   r)   r  r{  is_ccwr~  r
   r$  r  r   r   )polygonr   r  rw   gcs        r4   test_orient_polygonsr    s@   4447778  G
 $W--F?!!!!"))))$W$???F%%%%A%%%% 
w(	)	)B$R((Fv|!!!! , ,}####>!$+++++$bTt<<<Q?Fv|!!!! ( (=''''~a ''''' 
U1a[['26	7	7B$R((Fv|!!!!<?eAqkk))))<?g5g>>>>>><?g5b99999999r6   c                      t          j        t          dd          t          ddg          d g          } t	          j        |           }t          ||            d S )Nr   ro   rq   )rg   r   r   r   r)   r  r   )r  r   s     r4   (test_orient_polygons_non_polygonal_inputr    sS    
(E!QKKVV,<!=!=tD
E
EC$S))FFC(((((r6   c                  @   t          g dg dg          } t          j        | gdz  gdz            }t          j        |          }t          |t          j                  sJ |j        dk    sJ t          j        |           }||k                                    sJ d S )Nr   r   rs   r   r   r   )	r   rg   r   r)   r  r1   r  r0   r   r  rv  r3   rx   s       r4   test_orient_polygons_arrayr    s     4447778  G G9q=/A-..J$Z00Ffbj)))))<6!!!!&w//Hh##%%%%%%%r6   c                  X   t          g dg dg          } | t          dd                              d          g}t          j        t          |                    }t          |t
                    sJ t          j        |          }t          t          j	        |          |           d S )Nr   r   rs   r   r9   )
r   r   r\   r)   r  r   r1   r   rg   ru  r  s       r4   test_orient_polygons_array_liker  #  s     4447778  G 5A;;--a001J$Yz%:%:;;Ffi(((((&z22HBJv..99999r6   c            
         t          j        d          5  t          j        t          dd           d d d            n# 1 swxY w Y   t          j        d          5  t          j        t          ddd           d d d            n# 1 swxY w Y   t          j        d          5  t          j        t          dddd           d d d            n# 1 swxY w Y   t          j                    5  t          j        t          ddddd           d d d            n# 1 swxY w Y   t          j                    5  t          j        t          dddddd	           d d d            d S # 1 swxY w Y   d S )
Nz:positional argument `quad_segs` for `buffer` is deprecatedr:   rF   r   zLpositional arguments `quad_segs` and `cap_style` for `buffer` are deprecatedr   z[positional arguments `quad_segs`, `cap_style`, and `join_style` for `buffer` are deprecatedr   F)r.   deprecated_callr)   r\   r   rM   r6   r4    test_buffer_deprecate_positionalr  1  s   		J
 
 
 & & 	uc1%%%& & & & & & & & & & & & & & & 
	&
 
 
 / / 	uc1g...	/ / / / / / / / / / / / / / /
 
	&
 
 
 8 8 	uc1gw777	8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 
		!	! = =uc1gw<<<= = = = = = = = = = = = = = =			!	! D Duc1gwUCCCD D D D D D D D D D D D D D D D D DsW   >AABBB'CCC/DD!D8 E%%E),E)c                     t          j        d          5  t          j        t          dd           d d d            n# 1 swxY w Y   t          j        d          5  t          j        t          ddd           d d d            n# 1 swxY w Y   t          j        d          5  t          j        t          dddd           d d d            d S # 1 swxY w Y   d S )	Nz@positional argument `quad_segs` for `offset_curve` is deprecatedr:   rF   r   zSpositional arguments `quad_segs` and `join_style` for `offset_curve` are deprecatedr   zcpositional arguments `quad_segs`, `join_style`, and `mitre_limit` for `offset_curve` are deprecatedr   )r.   r  r)   r?   r   rM   r6   r4   &test_offset_curve_deprecate_positionalr  F  s   		P
 
 
 2 2 	[#q1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
	,
 
 
 ; ; 	[#q':::	; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
 
	,
 
 
 @ @ 	[#q'3???	@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @3   >AABBB'CCCc                      t          j        d          5  t          j        t          dd           d d d            d S # 1 swxY w Y   d S )NzDpositional argument `preserve_topology` for `simplify` is deprecatedr:   rF   T)r.   r  r)   simplifyr   rM   r6   r4   "test_simplify_deprecate_positionalr  W  s    		T
 
 
 1 1 	c40001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   ?AAc                     t          j        d          5  t          j        t          dd            d d d            n# 1 swxY w Y   t          j        d          5  t          j        t          dd d           d d d            n# 1 swxY w Y   t          j        d          5  t          j        t          dd dd           d d d            d S # 1 swxY w Y   d S )NzDpositional argument `extend_to` for `voronoi_polygons` is deprecatedr:   r<   zWpositional arguments `extend_to` and `only_edges` for `voronoi_polygons` are deprecatedFzcpositional arguments `extend_to`, `only_edges`, and `ordered` for `voronoi_polygons` are deprecated)r.   r  r)   rB   r   rM   r6   r4   *test_voronoi_polygons_deprecate_positionalr  ^  s   		T
 
 
 9 9 	 c48889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 
	0
 
 
 @ @ 	 c4???	@ @ @ @ @ @ @ @ @ @ @ @ @ @ @
 
	0
 
 
 G G 	 c4FFF	G G G G G G G G G G G G G G G G G Gr  )numpyrg   r.   r)   r   r   r   r   r   r   r	   r
   r   r   r   shapely.errorsr   shapely.testingr   shapely.tests.commonr   r   r   r   r   r   r   r   r   r   r   r,   r-   r   boundarycentroidconvex_hullparamr}  markskipifenvelopeextract_unique_pointsminimum_clearance_liner+   r   point_on_surfacer  CONSTRUCTIVE_NO_ARGSr\   r?   delaunay_trianglesr  rB   CONSTRUCTIVE_FLOAT_ARGparametrizer5   rC   rJ   rO   rQ   rU   r]   rb   re   ri   rm   ry   r|   r   r   r   r   r   r   r   r[   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r*  r>  rB  rE  rL  rN  rR  rT  rV  r\  r`  rc  rf  re  minimum_rotated_rectanglerm  rs  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rM   r6   r4   <module>r     s;                                  7 6 6 6 6 6 3 3 3 3 3 3                          
ac	f	$
qs
w
&
qs
w
& FLk   :-m ! 
 
   !"LFL.k   :-m ! 
 
  ! 2 N  Y//!566@ @ 76 0/@  Y//!788+ + 98 0/+* Y//i00+ + 10 0/+ !566  76
 !788  98
 Y//!788  98 0/
6 6 6
7 7 7
  
 Y//  0/
  
 		e GDDDEEG<<<==  G8887778  	
 

5'# , - ,  
 	 G<<<==O-/?@AA	
 G<<<==LG<<<==G<<<== 	
 

5'% .1 1/ .1 	I 88899@@@AA
 88899 @ @ @AA @ @ @AA 	
 u	tU34% .L L/ .L G(:5mLL	 G<<<==J???@@	
 G<<<==LG<<<==G<<<== 	
 

5'% .1 1/  ML01 G(:5mLL	 G<<<==GII	
 G<<<==LG<<<==G<<<== 	
 

5'% .1 1/  ML01 G(J6~NN< < ON< G(:5mLL/ BHj+.///		
 5M7		
 
D*&?@K		
 0V V1  ML2V
 	 O-/?@AAO-/?@AA	

 
 
 

$ $ $@ @ @  T T TE E E
 G(:5mLL	,,,	-	-zz66:J/K/KLJ???@@J77788	

 GDDDEEG<<<==	

 G<<<GGGH   G<<<???@  		
 LGLLLMMGLLLMM  LGDDDEEGDDDEE 	
 
	'	k"	k"	-.		&U+. .^O O_. . ML`O G(:5mLL!I!I!IJJANO 8 8  ML8 G(:5mLL1 1 ML1 G(:5mLL*-BF,KLL8 8 ML ML8
 	VV$	%	%zz662B'C'CDJ77788J77788	

 G<<<==G<<<==	

 G<<<???@   G<<<???@  		
 Off-/?@AAOff-/?@AA	

 LGDDDEEGDDDEE  LGDDDEEGDDDEE 	
 
	'	k"	k"	-.		&]/2 2f= =g2 2f=1 1 1 "2A!677  87
  
q!((**+	r2b"&	r2**,,-	VW%	&	&(:(:(<(<=	Xx(	)	)::x6J+K+KL	222	3	35G5G5I5IJ	Wh'	(	(**h5I*J*JK &. .' &.
  G<IJ     	
 G<IJ     	
 G<IJ   G<IJ  
	
 G<<<IIIJ   GTTTUU	
A(+ +X. .Y+ +X.
 Y//@ @ 0/@&  
 %):M!JKK* * LK*T T T  ,  B
  
  
 * * *+ + +B(/ (/ (/V4 4 4@ @ @ G(:5mLLY//-Aw77L L 87 0/ MLL
 G(:5mLLY//  0/ ML
 G(:5mLL%6F . .  ML.
 G(:5mLLeWk%BCC. . DC ML.
 G(:5mLLB B MLB G(:5mLL" J())J())	
 G@@@AAG@@@AA	
 J())J00011	
 G@@@AAG
 
 
 	
( 
FG,--
FF+,, 
44455
FF+,,
	
 
FG,--
FF+,, C
44455
FF+,,
	
 
FG,--
FF+,, H
44455
33344
	
uEH HR. .SH H MLT.
 Y//  0/  G>>>??GN55A;;**	

 J())GN55A;;**	

 J'((GN55A;;**	

 E!QKKE!QKK	

   GII	
# 2. .3 2.
 Y//  0/ 
W&(IJ   JSSSTTGPPPQQ	

 J11122G@@@AA	

 G55566GSSSTT	

 J())J())	

 E!QKKE!QKK	

   GII	
+ :N N;  @N
 G(J6~NN JSSSTTGRRRSS	

 J11122G@@@AA	

 G55566GRRRSS	

 J())J())	

 E!QKKE!QKK	

   GII	
+ :N N;  ON<N: : : G(:5mLLW W MLW G(:5mLL"% "% "% "% "% "% "% ML"%J G(:5mLL
 
 ML
 G(J6~NN3 3 ON3 Y//  0/: 	
 . . .3 3 3 A A A Y//  0/#: #: #:L) ) )& & &: : :D D D*@ @ @"1 1 1G G G G Gr6   