
    _ h                     -   d dl Z d dlZd dlZd dlZd dlmZ 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 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"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) dZ*dZ+e*e+z  Z,d	Z-d
Z.e-e.z   Z/ ej`                  ddddd      Z1 ej`                  d e2d            Z3 ej`                  ddd      e3dz  z   Z4 ej`                  ddde*z        e3dz  z   Z5 ej`                  ddde+z        e3dz  z   Z6 ej`                  ddde,z        e3dz  z   Z7 ej`                  dddd      e4z   Z8 ej`                  ddde*z  d      e5z   Z9 ej`                  ddde+z  d      e6z   Z: ej`                  ddde,z  d      e7z   Z; ej`                  dddd      e4z   Z< ej`                  ddde*z  d      e5z   Z= ej`                  ddde+z  d      e6z   Z> ej`                  ddde,z  d      e7z   Z? ej`                  dddd      e8z   Z@ ej`                  ddde*z  d      e9z   ZA ej`                  ddde+z  d      e:z   ZB ej`                  ddde,z  d      e;z   ZCdZD e j                  dddgdd      ZF e j                  ddddgdddidd      ZG e j                  d ddd!d"gdd#d$iddd%d!d&gd'dgd(d&gd)dggdd&d$d*ddd+d,d&gd-d&gd-dgd,dgd,d&gggdd.d/id$d*dgd0d      ZH e	j                  dd      ZJ e	j                  d!d"g       e	j                  d!d&gd'dgd(d&gd)dgg       e	j                  d,d&gd-d&gd-dgd,dgd,d&gg      gZMd1 ZNd2 ZOej                  j                  d3dd4eRd5fd6d7d8eSd9fd7d4ed9fd7d:eTd;fd<d=d4ed>fd=d8eSd>fd?d@d8eSdAfdBdCd4edDfdCd8eSdDfg      dE        ZUej                  j                  e	j                  dFk  dGH      ej                  j                  dIg dJ      dK               ZXej                  j                  e	j                  dFk\  dLH      dM        ZYej                  j                  dNe      dO        ZZej                  j                  dPdQ      dR        Z[ej                  j                  dPdS      dT        Z\dU Z]dV Z^dW Z_ej                  j                  dXdd4eRd5fd6d7d4edYfd7d8eSdYfd7d:eTd;fdZd[d4ed\fd[d8eSd\feDd]ddfeDd4ed^feDd8eSd^fg      d_        Z`ej                  j                  e	j                  dFk  dGH      ej                  j                  d`dadbeDdcfg      dd               Zaej                  j                  e	j                  dFk\  dLH      de        Zbej                  j                  dNe      ej                  j                  dfdgdhg      ej                  j                  did dg      dj                      Zcej                  j                  dNe      ej                  j                  dfdgdhg      ej                  j                  did dg      dk                      Zdej                  j                  e	j                  dlk  dmH      ej                  j                  dNe      ej                  j                  dfdgdhg      ej                  j                  did dg      dn                             Zeej                  j                  e	j                  dlk  dmH      ej                  j                  dNe      ej                  j                  dfdgdhg      ej                  j                  did dg      do                             Zfej                  j                  dN e        e        e        e
       f      dp        Zgej                  j                  dqdr      ds        Zhdt Zidu Zjdv Zkdw Zldx Zmdy Zndz Zod{ Zpej                  j                  dPg d|      d}        Zqd~ Zrd Zsej                  j                  dN edd        ed d      g      d        Ztej                  j                  dN edd        ed d      g      d        Zuej                  j                  dN ed d d       eddg       eg d       eg d       eg dg dg       eddg       e eddg       eddg      g       ee) eg d      g       e
e' ed d d      g       e
 e
 ed d d      g      g       ed d ej                  fdg       ed d ej                  fdddg       e
 ed d        ed d d      g      g      d        Zwd Zxd Zyd Zzej                  j                  e	j                  dlk  dmH      d        Z{d Z|d Z}ej                  j                  e	j                  dlk  dmH      d        Z~d Zd Zd Zd Zd Zd Zd Zd Zd Zej                  j                  e	j                  dk  dH      d        Zej                  j                  e	j                  dlk  dmH      d        Zej                  j                  e	j                  dk  dH      d        Zej                  j                  e	j                  dk\  dH      d        Zej                  j                  d ej                  ee4d       ej                  ee4d       ej                  ee4d       ej                  ee4d       ej                  e!e8d       ej                  e#e8d       ej                  e"e8d       ej                  e$e8d       ej                   e	j                  eg      e<d       ej                   e	j                  eg      e<d       ej                   e	j                  eg      e<d       ej                   e	j                  eg      e<d       ej                   e	j                  e!g      e@d       ej                   e	j                  e#g      e@d       ej                   e	j                  e"g      e@d       ej                   e	j                  e$g      e@d      g      d        Zej                  j                  d ej                  ee5d       ej                  ee5d       ej                  e#e9d       ej                  e$e9d       ej                   e	j                  eg      e=d       ej                   e	j                  eg      e=d       ej                   e	j                  e#g      eAd       ej                   e	j                  e$g      eAd      g      d        Zej                  j                  e	j                  dlk  dmH      ej                  j                  d ej                  ee6d       ej                  e"e:d       ej                   e	j                  eg      e>d       ej                   e	j                  e"g      eBd      g      d               Zej                  j                  e	j                  dlk  dmH      ej                  j                  d ej                  ee7d       ej                  e$e;d       ej                   e	j                  eg      e?d       ej                   e	j                  e$g      eCd      g      d               Zej                  j                  d ej                  ee4d       ej                  e!e8d       ej                   e	j                  eg      e<d       ej                   e	j                  e!g      e@d      g      d        Zej                  j                  d ej                  e4d dd       ej                  e5d dd       ej                  e8ddd       ej                  e9ddd       ej                  e<ddd       ej                  e=ddd       ej                  e@ddd       ej                  eAddd      g      d        Zej                  j                  e	j                  dlk  dmH      ej                  j                  d ej                  e6d dĬ       ej                  e:ddŬ       ej                  e>ddƬ       ej                  eBddǬ      g      dȄ               Zej                  j                  e	j                  dlk  dmH      ej                  j                  d ej                  e7d dɬ       ej                  e;ddʬ       ej                  e?ddˬ       ej                  eCdd̬      g      d̈́               Zd΄ Zej                  j                  dNee'efz         dτ        Zej                  j                  dNe      dЄ        Zej                  j                  e	j                  dlk  dmH      ej                  j                  dNe      dф               Zej                  j                  e	j                  dlk  dmH      ej                  j                  dNe      d҄               Zej                  j                  dNee'efz         dӄ        Zej                  j                  e	j                  dk  dլH      ej                  j                  d ej                  eFeJd׬       ej                  eGeJdج       ej                  eH e	j                  eM      d٬       ej                  eFgdz  eJgdz  dڬ       ej                  ddd۬       ej                  eFdgeJdgdܬ      g      d݄               Zej                  j                  e	j                  dk  dլH      dބ        Zej                  j                  e	j                  dk  dլH      d߄        Zej                  j                  e	j                  dk  dլH      d        Zej                  j                  e	j                  dk  dլH      d        Zej                  j                  e	j                  dk  dH      ej                  j                  d ej                  eFeJd׬       ej                  eFgdz  eJgdz  dڬ       ej                  ddd۬       ej                  eFdgeJdgdܬ      g      d               Zej                  j                  e	j                  dk  dH      ej                  j                  dg d      d               Zej                  j                  e	j                  dk  dH      d        Zej                  j                  e	j                  dk  dH      ej                  j                  dNe e	jH                  ee%g       e	j                  ee%g       e	j                   e	j                  eg      e%g      g      d               Zej                  j                  e	j                  dk  dլH      ej                  j                  dNe      d               Zy)    N)nullcontext)	GeometryCollectionGEOSException
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPointPolygon)UnsupportedGEOSVersionError)assert_geometries_equal)	all_typesall_types_mall_types_zall_types_zmempty_pointempty_point_mempty_point_zempty_point_zm)equal_geometries_abnormally_yield_unequalmulti_point_emptymulti_point_empty_mmulti_point_empty_zmulti_point_empty_zmpointpoint_mpoint_zpoint_zm	polygon_zl        i   @  i  <BI2d         ?z<dnanz<BI         z<BII   Z01030000000100000002000000507daec600b1354100de02498e5e3d41306ea321fcb03541a011a53d905e3d41r   gffffff_@g333333$@)typecoordinatesindentFeaturenamezDinagat Islands)r+   geometry
propertiesFeatureCollectiong     Y@g333333?prop0value0r   g        g     Y@g      Z@g     @Z@)prop1r4   r   g      Y@g     @Y@thisthat)r+   featuresc                      t        j                  dd      } t        j                  d      }t        ||        t        j                  d      }t        ||        y )Nr#   POINT (1 1)s   POINT (1 1))shapelypointsfrom_wktr   expectedactuals     q/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/shapely/tests/test_io.pytest_from_wktrC      sF    ~~a#Hm,FFH-n-FFH-    c                  2    t        j                  d       J y N)r<   r>    rD   rB   test_from_wkt_nonerH          D!)))rD   zwkt, on_invalid, error, messageraise!Expected bytes or string, got int) ignoreNNrL   warnz+Expected word but encountered end of streamunsupported_optionnot a valid option)LINESTRING (0 0)rM   NNrQ   zmust contain 0 or >1 elements)NOT A WKT STRINGrM   NNrR   zUnknown type: 'NOT')POLYGON ((0 0, 0 0))rM   NNrS   zInvalid number of pointsc                 ,   |dk(  rt        j                  ||      }nD|dk(  rt        j                  ||      }n'|dk(  rt               }nt        j                  ||      }|5  t	        j
                  | |      }|J 	 d d d        y # 1 sw Y   y xY wNrN   matchrJ   rM   
on_invalid)pytestwarnsraisesr   r<   r>   )wktrY   errormessagehandlerresults         rB   test_from_wkt_on_invalidrb      s    & V,,uG4	w	--W5	x	---W5	 !!#*=~~     $B

B)r'      r   z/on_invalid='fix' not supported with GEOS < 3.11)reasonzwkt, expected_wkt)	)rL   N)rQ   N)rR   N)rS   N)zPOLYGON ((0 0, 1 1, 0 1))zPOLYGON ((0 0, 1 1, 0 1, 0 0)))zPOLYGON ((0 0, 1 1))zPOLYGON ((0 0, 1 1, 0 0)))z3MULTIPOLYGON (((5 5, 6 6, 6 5, 5 5)), ((0 0, 0 0)))N)z3MULTIPOLYGON (((5 5, 6 6, 6 5, 5 5)), ((0 0, 1 1)))z8MULTIPOLYGON (((5 5, 6 6, 6 5, 5 5)), ((0 0, 1 1, 0 0))))zIGEOMETRYCOLLECTION (POLYGON ((5 5, 6 6, 6 5, 5 5)), POLYGON ((0 0, 0 0)))Nc                 f    t        j                  | d      }t        j                  |      |k(  sJ yz[Tests for on_invalid="fix".

    Geometries that cannot be fixed are returned as None.
    fixrX   N)r<   r>   to_wkt)r]   expected_wktgeoms      rB   test_from_wkt_on_invalid_fixrl      s-    : CE2D>>$<///rD   z/on_invalid='fix' is supported with GEOS >= 3.11c                      t        j                  t        d      5  t        j                  dd      } ddd       y# 1 sw Y   yxY w)/on_invalid="fix" not supported with GEOS < 3.110on_invalid='fix' only supported for GEOS >= 3.11rV   rL   rh   rX   N)rZ   r\   
ValueErrorr<   r>   _s    rB   -test_from_wkt_on_invalid_fix_unsupported_geosrs      s?     
L
 3 RE23 3 3	   =Ark   c                     t        j                  |       }t        j                  |      }t        |       r/t	        j
                  t              5  t        ||        d d d        y t        ||        y # 1 sw Y   y xY wrF   )r<   ri   r>   r   rZ   r\   AssertionErrorr   )rk   r]   rA   s      rB   test_from_wkt_all_typesrw      sd    
..
Cc"F06]]>* 	2#FD1	2 	2 	 -		2 	2s   A22A;r]   )POINT EMPTYzLINESTRING EMPTYzPOLYGON EMPTYzGEOMETRYCOLLECTION EMPTYc                     t        j                  |       }t        j                  |      j                         sJ t        j                  |      j                         sJ t        j
                  |      | k(  sJ y rF   )r<   r>   is_geometryallis_emptyri   )r]   rk   s     rB   test_from_wkt_emptyr}      se    
 C Dt$((***D!%%'''>>$3&&&rD   )zCIRCULARSTRING(1 3,2 4,3 1)z4COMPOUNDCURVE(CIRCULARSTRING(1 3,2 4,3 1),(3 1,0 0))zCURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0,2 1,2 3,4 3),(4 3,4 5,1 4,0 0)),CIRCULARSTRING(1.7 1,1.4 0.4,1.6 0.4,1.6 0.5,1.7 1))zhMULTICURVE((0 0,5 5),COMPOUNDCURVE((-1 -1,0 0),CIRCULARSTRING(0 0,1 1,2 0)),CIRCULARSTRING(4 0,4 4,8 4))zMULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(0 0,4 0,4 4,0 4,0 0),(1 1,3 3,3 1,1 1)),((10 10,14 12,11 10,10 10),(11 11,11.5 11,11 11.5,11 11)))c                 h   t         j                  dk\  r:t        j                  t        d      5  t        j
                  |        d d d        y t        j                  t         j                  j                  d      5  t        j
                  |        d d d        y # 1 sw Y   y xY w# 1 sw Y   y xY w)Nr'      r   4Nonlinear geometry types are not currently supportedrV   zUnknown type)r<   geos_versionrZ   r\   NotImplementedErrorr>   errorsr   r]   s    rB   #test_from_wkt_nonlinear_unsupportedr      s     z)]]H
 	" S!		" 	" ]]7>>77~N 	"S!	" 	"	" 	"	" 	"   B=B(B%(B1c                  z    t        j                  dd      } t        j                  t              }t	        ||        y Nr#   )r<   r=   from_wkbPOINT11_WKBr   r?   s     rB   test_from_wkbr     s,    ~~a#Hk*FFH-rD   c                      t        j                  dd      } t        j                  d      }t        ||        t        j                  d      }t        ||        y )Nr#   *0101000000000000000000F03F000000000000F03Fs*   0101000000000000000000F03F000000000000F03F)r<   r=   r   r   r?   s     rB   test_from_wkb_hexr     sH    ~~a#HJKFFH-KLFFH-rD   c                  2    t        j                  d       J y rF   )r<   r   rG   rD   rB   test_from_wkb_noner   $  rI   rD   zwkb, on_invalid, error, messagezUnexpected EOF parsing WKB)       rM   NNr   ParseExceptionrM   z4Points of LinearRing do not form a closed linestringc                 ,   |dk(  rt        j                  ||      }nD|dk(  rt        j                  ||      }n'|dk(  rt               }nt        j                  ||      }|5  t	        j
                  | |      }|J 	 d d d        y # 1 sw Y   y xY wrU   )rZ   r[   r\   r   r<   r   )wkbrY   r^   r_   r`   ra   s         rB   test_from_wkb_on_invalidr   )  s    6 V,,uG4	w	--W5	x	---W5	 !!#*=~~  rc   zwkb, expected_wkt)rD   N)r   Nz[POLYGON ((1421568.7761 1924750.2852, 1421564.1314 1924752.2408, 1421568.7761 1924750.2852))c                 f    t        j                  | d      }t        j                  |      |k(  sJ yrg   )r<   r   ri   )r   rj   rk   s      rB   test_from_wkb_on_invalid_fixr   R  s-    ( CE2D>>$<///rD   c                      t        j                  t        d      5  t        j                  dd      } ddd       y# 1 sw Y   yxY w)rn   ro   rV   rD   rh   rX   N)rZ   r\   rp   r<   r   rq   s    rB   -test_from_wkb_on_invalid_fix_unsupported_geosr   j  s?     
L
 4 SU34 4 4rt   use_hexFT
byte_orderc                     t        j                  |       t         j                  j                  k(  rt	        j
                  d       t        j                  | ||      }t        j                  |      }t        ||        y Nz$Linearrings are not preserved in WKBhexr   	r<   get_type_idGeometryType
LINEARRINGrZ   skipto_wkbr   r   rk   r   r   r   rA   s        rB   test_from_wkb_all_typesr   v  \     4 G$8$8$C$CC:;
..7z
BCc"FFD)rD   c                     t        j                  |       t         j                  j                  k(  rt	        j
                  d       t        j                  | ||      }t        j                  |      }t        ||        y r   r   r   s        rB   test_from_wkb_all_types_zr     r   rD   r'      r   z,M coordinates not supported with GEOS < 3.12c                     t        j                  |       t         j                  j                  k(  rt	        j
                  d       t        j                  | ||      }t        j                  |      }t        ||        y r   r   r   s        rB   test_from_wkb_all_types_mr     \     4 G$8$8$C$CC:;
..7z
BCc"FFD)rD   c                     t        j                  |       t         j                  j                  k(  rt	        j
                  d       t        j                  | ||      }t        j                  |      }t        ||        y r   r   r   s        rB   test_from_wkb_all_types_zmr     r   rD   c                     t        j                  |       }t        j                  |      } t        j                  |       j	                         sJ t        j
                  |       j	                         sJ t        j                  |       |k(  sJ y rF   )r<   r   r   rz   r{   r|   )rk   r   s     rB   test_from_wkb_emptyr     ss    
 ..
CC Dt$((***D!%%'''>>$3&&&rD   r   )r010800000003000000000000000000F03F0000000000000840000000000000004000000000000010400000000000000840000000000000F03F01090000200E16000002000000010800000003000000000000000000F03F0000000000000840000000000000004000000000000010400000000000000840000000000000F03F0102000000020000000000000000000840000000000000F03F00000000000000000000000000000000"  010A0000200E1600000200000001090000000200000001080000000500000000000000000000000000000000000000000000000000004000000000000000000000000000000040000000000000F03F00000000000000400000000000000840000000000000104000000000000008400102000000040000000000000000001040000000000000084000000000000010400000000000001440000000000000F03F000000000000104000000000000000000000000000000000010800000005000000333333333333FB3F000000000000F03F666666666666F63F9A9999999999D93F9A9999999999F93F9A9999999999D93F9A9999999999F93F000000000000E03F333333333333FB3F000000000000F03F  010B000000030000000102000000020000000000000000000000000000000000000000000000000014400000000000001440010900000002000000010200000002000000000000000000F0BF000000000000F0BF0000000000000000000000000000000001080000000300000000000000000000000000000000000000000000000000F03F000000000000F03F00000000000000400000000000000000010800000003000000000000000000104000000000000000000000000000001040000000000000104000000000000020400000000000001040  010C00000002000000010A000000020000000108000000050000000000000000000000000000000000000000000000000010400000000000000000000000000000104000000000000010400000000000000000000000000000104000000000000000000000000000000000010200000004000000000000000000F03F000000000000F03F000000000000084000000000000008400000000000000840000000000000F03F000000000000F03F000000000000F03F01030000000200000004000000000000000000244000000000000024400000000000002C40000000000000284000000000000026400000000000002440000000000000244000000000000024400400000000000000000026400000000000002640000000000000274000000000000026400000000000002640000000000000274000000000000026400000000000002640c                 h   t         j                  dk\  r:t        j                  t        d      5  t        j
                  |        d d d        y t        j                  t         j                  j                  d      5  t        j
                  |        d d d        y # 1 sw Y   y xY w# 1 sw Y   y xY w)Nr   r   rV   zUnknown WKB type)r<   r   rZ   r\   r   r   r   r   )r   s    rB   #test_from_wkb_nonlinear_unsupportedr     s      z)]]H
 	" S!		" 	" ]]7>>77?QR 	"S!	" 	"	" 	"	" 	"r   c                      t        j                  dd      } t        j                  |       }|dk(  sJ t        j                  | d      }|dk(  sJ t        j                  | dd      }|dk(  sJ y )	Nr#   r;   FtrimzPOINT (1.000000 1.000000)r'   )rounding_precisionr   zPOINT (1.000 1.000))r<   r=   ri   r   rA   s     rB   test_to_wktr     sn    NN1a E^^E"F]"""^^E.F0000^^EaeDF****rD   c                  n   t        j                  ddd      } t        j                  |       dk(  sJ t        j                  | d      dk(  sJ t        j                  | d      dk(  sJ t        j                  | d      d	k(  sJ t         j                  d
k\  rt        j                  | d      dk(  sJ y y )Nr#   r&   r'   POINT Z (1 2 3)output_dimensionPOINT (1 2)Told_3dPOINT (1 2 3)r   r(   )r<   r=   ri   r   r   s    rB   test_to_wkt_zr     s    NN1a#E>>% $5555>>%!4EEE>>%!48IIII>>%-@@@z)~~ea8<MMMM *rD   c                     t        j                  d      } t        j                  | d      dk(  sJ t         j                  dk  rSt        j                  |       dk(  sJ t        j                  | d      dk(  sJ t        j                  | d	      d
k(  sJ y t        j                  |       dk(  sJ t        j                  | d      dk(  sJ t        j                  | d      dk(  sJ t        j                  | d	      dk(  sJ y )NzPOINT M (1 2 4)r&   r   r   r   zPOINT Z (1 2 4)r'   Tr   zPOINT (1 2 4)r(   r<   r>   ri   r   r   s    rB   test_to_wkt_mr     s    ./E>>%!4EEEj(~~e$(9999~~ea8<MMMM~~eD1_DDD~~e$(9999~~ea8<MMMM~~ea8<MMMM~~eD15FFFFrD   c                     t        j                  d      } t        j                  | d      dk(  sJ t        j                  | d      dk(  sJ t         j                  dk  r7t        j                  |       dk(  sJ t        j                  | d	      d
k(  sJ y t        j                  |       dk(  sJ t        j                  | d      dk(  sJ t        j                  | d	      dk(  sJ y )NzPOINT ZM (1 2 3 4)r&   r   r   r'   r   r   Tr   r   r(   zPOINT (1 2 3 4)r   r   s    rB   test_to_wkt_zmr     s    12E>>%!4EEE>>%!48IIIIj(~~e$(9999~~eD1_DDD~~e$(<<<<~~ea8<PPPP~~eD15FFFFrD   c                  2    t        j                  d       J y rF   )r<   ri   rG   rD   rB   test_to_wkt_noner         >>$'''rD   c                  |    g d} t        j                  |       }t        t        j                  |            | k(  sJ y )N)POINT Z EMPTYNPOLYGON Z EMPTY)r<   r>   listri   )	empty_wktempty_geomss     rB   test_to_wkt_array_with_empty_zr     s3    :I""9-K{+,	999rD   c                  0   t        j                  t              5  t        j                  d       d d d        t        j                  t        j
                        5  t        j                  t        d       d d d        y # 1 sw Y   QxY w# 1 sw Y   y xY w)Nr#      r   )rZ   r\   	TypeErrorr<   ri   r   r   rG   rD   rB   test_to_wkt_exceptionsr     sk    	y	! q 
w,,	- 2uq12 2 2 2s   B B B	Bc                  @    t        j                  t              dk(  sJ y )Nrx   )r<   ri   r   rG   rD   rB   test_to_wkt_point_emptyr   !  s    >>+&-777rD   )r   zLINESTRING Z EMPTYzLINEARRING Z EMPTYr   c                 ^    t        j                  t        j                  |             | k(  sJ y rF   )r<   ri   r>   r   s    rB   test_to_wkt_empty_zr   %  s&     >>'**3/0C777rD   c                      t        j                  t        t        g      } t        j                  |       j                  d      sJ y )Nz(POINT EMPTY, POINT (2 3)))r<   geometrycollectionsr   r   ri   endswith)
collections    rB   /test_to_wkt_geometrycollection_with_point_emptyr   2  s7    ,,k5-ABJ >>*%../KLLLrD   c                      t        j                  t        t        g      } t         j                  dk\  rd}nd}t        j
                  |       |k(  sJ y )Nr   zMULTIPOINT (EMPTY, (2 3))zMULTIPOINT (EMPTY, 2 3))r<   multipointsr   r   r   ri   )rk   r@   s     rB   'test_to_wkt_multipoint_with_point_emptyr   9  sH    U34Dz). ->>$8+++rD   g}Ô%ITc                 L    t        j                  |        dt        |       vsJ y )NException in WKT writer)r<   ri   reprrk   s    rB   test_to_wkt_large_float_okr   C  s"     NN4$DJ666rD   \nTc                 F   t         j                  dk\  r:| j                  t        j                  t        j                  |                   sJ y t        j                  t        d      5  t        j                  |        d d d        dt        |       v sJ y # 1 sw Y   xY w)Nr   z(WKT output of coordinates greater than.*rV   r   )	r<   r   equalsr>   ri   rZ   r\   rp   r   r   s    rB   test_to_wkt_large_floatr   J  s    z){{7++GNN4,@ABBB ]]H
 	! NN4 	! )DJ666		! 	!s   )BB 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   c                     	 t        j                  |        t        |        y # t        $ r&}t        |      j	                  d      sJ Y d }~6d }~ww xY w)Nz&WKT output of coordinates greater than)r<   ri   rp   str
startswithr   )rk   es     rB   #test_to_wkt_large_float_3d_no_crashr   X  sJ    :Kt 	J  K1v  !IJJJKs   # 	AAAc                  R    t        j                  t        ddd      d      dk(  sJ y )Nr   r   r&   r   POINT (0 0))r<   ri   r   rG   rD   rB   test_to_wkt_large_float_skip_zr   |  s$    >>%1e,qA]RRRrD   c                  h    t        j                  t        dd      d      j                  d      sJ y )Nr   r   Fr   zPOINT ()r<   ri   r   r   rG   rD   rB   test_to_wkt_large_float_no_trimr    s)     >>%q/6AA)LLLrD   c                  T    t        t              dk(  sJ t        t              dk(  sJ y )Nz<POINT (2 3)>z<POINT Z (2 3 4)>)r   r   r   rG   rD   rB   	test_reprr    s'    ;/)))=////rD   c                  T    t        t              dk(  sJ t        t              dk(  sJ y )Nz<POINT M (2 3 5)>z<POINT ZM (2 3 4 5)>)r   r   r   rG   rD   rB   test_repr_mr    s*    
 =////>3333rD   c                      t        j                  t        j                  d      t        j                  d            } t	        |       }t        |      dk(  sJ |j                  d      sJ y )Nr!   P   z...>)r<   linestringsnparanger   lenr   )rk   representations     rB   test_repr_max_lengthr    sT    ryy		$@D$ZN~"$$$""6***rD   c                  ,    t        t              dk(  sJ y )Nz<POINT Z EMPTY>)r   r   rG   rD   rB   test_repr_point_z_emptyr    s    "3333rD   c                  T    t        t              dk(  sJ t        t              dk(  sJ y )Nz<POINT M EMPTY>z<POINT ZM EMPTY>)r   r   r   rG   rD   rB   test_repr_point_m_emptyr    s,    
 "3333#5555rD   c                  t    t        j                  dd      } t        j                  | d      }|t        k(  sJ y )Nr#   r   )r<   r=   r   r   r   s     rB   test_to_wkbr    s0    NN1a E^^Ea0F[   rD   c                      t        j                  dd      } t        j                  | dd      }d}d}d}|||z   d|z  z   k(  sJ y )Nr#   Tr   0101000000000000000000F03Fr&   r<   r=   r   )r   rA   le
point_typecoords        rB   test_to_wkb_hexr    sN    NN1a E^^Et:F	BJER*_q5y0000rD   c                     t        j                  ddd      } t        j                  ddddd      }t        j                  dddt        z  ddd      }t        j
                  | d	      |k(  sJ t        j
                  | dd
      |k(  sJ t        j
                  | dd
      |k(  sJ t         j                  dk\  rt        j
                  | dd
      |k(  sJ y y )Nr#   r&   r'   r"   r$          @<BI3d      @r  r   r   r   r(   )r<   r=   structpackEWKBZr   r   )r   expected_wkbexpected_wkb_zs      rB   test_to_wkb_zr(    s    NN1a#E;;w1c37L[[!QYS#FN>>%A..@@@>>%!BlRRR>>%!BnTTTz)~~eaAF.XXX *rD   c            
         t        j                  t        j                  dddt        z  ddd            } t        j                  ddddd      }t        j                  dddt        z  ddd      }t         j
                  dk  r|}t        j                  | d      |k(  sJ t        j                  | d	d
      |k(  sJ t        j                  | dd
      |k(  sJ t         j
                  dk\  rt        j                  | dd
      |k(  sJ y y )Nr   r#   r$   r        @r"   r   r  r&   r"  r'   r(   )r<   r   r#  r$  EWKBMr   r   )r   r&  expected_wkb_ms      rB   test_to_wkb_mr-    s    V[[!QYS#NOE;;w1c37L[[!QYS#FNj(%>>%A..@@@>>%!BlRRR>>%!BnTTTz)~~eaAF.XXX *rD   c                  ^   t        j                  t        j                  dddt        z  dddd            } t        j                  ddddd      }t        j                  dddt
        z  ddd      }t        j                  dddt        z  dddd      }t         j                  d	k  r|}t        j                  | d
      |k(  sJ t        j                  | dd      |k(  sJ t        j                  | dd      |k(  sJ t         j                  d	k\  rt        j                  | dd      |k(  sJ y y )Nz<BI4dr#   r$   r  r!  r*  r"   r   r   r  r&   r"  r'   r(   )r<   r   r#  r$  EWKBZMr%  r   r   )r   r&  r'  expected_wkb_zms       rB   test_to_wkb_zmr1    s   V[[!QZc3PSTUE;;w1c37L[[!QYS#FNkk'1a&j#sCMOj((>>%A./AAA>>%!BlRRR>>%!BnTTTz)NN51CV	
V *rD   c                  2    t        j                  d       J y rF   )r<   r   rG   rD   rB   test_to_wkb_noner3    r   rD   c                     t        j                  t              5  t        j                  d       d d d        t        j                  t        j
                        5  t        j                  t        d       d d d        t        j                  t              5  t        j                  t        d       d d d        y # 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   y xY w)Nr#   r   r   otherflavor)rZ   r\   r   r<   r   r   r   rp   rG   rD   rB   test_to_wkb_exceptionsr8    s    	y	! q 
w,,	- 2uq12 
z	" .uW-. . 2 2. .s#   B=C	C=C	CCc                      t        j                  dd      } d}d}d}d}t        j                  | d      ||z   d|z  z   k(  sJ t        j                  | d	      ||d d d
   z   d|d d d
   z  z   k(  sJ y )Nr$          s      s         ?r#   r  r&   r   r  )r   ber  r  r  s        rB   test_to_wkb_byte_orderr>    s    NN3$E	B	B$J,E>>%A."z/AI2MMMMu+rJtt4D/Dq5QUSUQU;/VVVrD   c                     d} d}t        j                  |       }t        j                  |d      dk(  sJ t        j                  |dd      |k(  sJ t        j                  |ddd      | k(  sJ t        j                  dd      }t        j
                  |t        j                  d	            }t        j                  |dd
      }t        j                  |dd d      j                         d	k(  sJ y )N201010000200400000000000000000000000000000000000000*010100000000000000000000000000000000000000Tr   r   r#   r   )r   include_sridr     )rB  r   r   	   z<u4)
r<   r   ri   r   r=   set_sridr	  int32
frombufferitem)ewkbr   rA   r   point_with_sridra   s         rB   test_to_wkb_sridrK  	  s    ?D
6Cd#F>>&t,===>>&dq9S@@@>>&d!LPTTTTNN1a E&&ubhhtn=O^^O$1MF==!e,113t;;;rD   )r'   r   r   zGEOS < 3.10.0c                  0   t        j                  t        d      } | j                         dd t	        j
                  ddt        z        j                         k(  sJ t        j                  t        dd      } | j                         dd t	        j
                  ddt        z        j                         k(  sJ t        j                  t        dd      } | j                         dd t	        j
                  ddt        z        j                         k(  sJ y )	Nr#   r  r&   r   <Iextendedr   r7  iso)r<   r   r   r   r#  r$  r%  ISOWKBZrA   s    rB   test_to_wkb_flavorrS    s     ^^G2F::<"T1u9!=!A!A!CCCC^^G*EF::<"T1u9!=!A!A!CCCC^^G%@F::<"T1w;!?!C!C!EEEErD   c                     t        j                  t        d      } | j                         dd t	        j
                  ddt        z        j                         k(  sJ t        j                  t        dd      } | j                         dd t	        j
                  ddt        z        j                         k(  sJ t        j                  t        d      } | j                         dd t	        j
                  ddt        z        j                         k(  sJ t        j                  t        dd      } | j                         dd t	        j
                  ddt        z        j                         k(  sJ y )Nr#   r  r&   r   rM  rP  rO  )r<   r   r   r   r#  r$  r+  ISOWKBMr   r/  ISOWKBZMrR  s    rB   test_to_wkb_m_flavorrW  %  s    ^^G2F::<"T1u9!=!A!A!CCCC^^G%@F::<"T1w;!?!C!C!EEEE ^^H3F::<"T1v:!>!B!B!DDDD^^H5AF::<"T1x<!@!D!D!FFFFrD   c                      t        j                  t        d      5  t        j                  t
        dd       d d d        y # 1 sw Y   y xY w)Nzcannot be used togetherrV   TrP  )rB  r7  )rZ   r\   rp   r<   r   r   rG   rD   rB   test_to_wkb_flavor_sridrY  7  s:    	z)B	C AwT%@A A As   AAc                      t        j                  t              5  t        j                  t
        d       d d d        y # 1 sw Y   y xY w)NrP  r6  )rZ   r\   r   r<   r   r   rG   rD   rB   #test_to_wkb_flavor_unsupported_geosr[  =  s2    	2	3 .wu-. . .s	   ?Azgeom,expectedrx   )idr   zPOINT M EMPTYzPOINT ZM EMPTYzMULTIPOINT EMPTYzMULTIPOINT Z EMPTYzMULTIPOINT M EMPTYzMULTIPOINT ZM EMPTYz GEOMETRYCOLLECTION (POINT EMPTY)z"GEOMETRYCOLLECTION (POINT Z EMPTY)z"GEOMETRYCOLLECTION (POINT M EMPTY)z#GEOMETRYCOLLECTION (POINT ZM EMPTY)z%GEOMETRYCOLLECTION (MULTIPOINT EMPTY)z'GEOMETRYCOLLECTION (MULTIPOINT Z EMPTY)z'GEOMETRYCOLLECTION (MULTIPOINT M EMPTY)z(GEOMETRYCOLLECTION (MULTIPOINT ZM EMPTY)c                    t        j                  | dd      }d}t        |      |z
  }t        |      ||z   k(  sJ |d | |d | k(  sJ t        j                  t        j                  d||d              j                         sJ y )Nr&   r#   r"     <2dr<   r   r  r	  isnanr#  unpackr{   rk   r@   rA   coordinate_lengthheader_lengths        rB   test_to_wkb_point_empty_2drf  C  s    L ^^D1CFM$55Mv;-*;;;;;.=!Xn}%==== 88FMM%)?@AEEGGGrD   c                    t        j                  | dd      }d}t        |      |z
  }t        |      ||z   k(  sJ |d | |d | k(  sJ t        j                  t        j                  d||d              j                         sJ y Nr'   r#   r"     z<3dr`  rc  s        rB   test_to_wkb_point_empty_zrj    s    L ^^D1CFM$55Mv;-*;;;;;.=!Xn}%==== 88FMM%)?@AEEGGGrD   c                    t        j                  | dd      }d}t        |      |z
  }t        |      ||z   k(  sJ |d | |d | k(  sJ t        j                  t        j                  d||d              j                         sJ y rh  r`  rc  s        rB   test_to_wkb_point_empty_mrl        4 ^^D1CFM$55Mv;-*;;;;;.=!Xn}%====88FMM%)?@AEEGGGrD   c                    t        j                  | dd      }d}t        |      |z
  }t        |      ||z   k(  sJ |d | |d | k(  sJ t        j                  t        j                  d||d              j                         sJ y )Nr(   r#   r"      z<4dr`  rc  s        rB   test_to_wkb_point_empty_zmrp    rm  rD   c                    t        j                  | dd      }d}t        |      |z
  }t        |      ||z   k(  sJ |d | |d | k(  sJ t        j                  t        j                  d||d              j                         sJ y )Nr'   r#   r"  r^  r_  r`  rc  s        rB   'test_to_wkb_point_empty_2d_output_dim_3rr    s    $ ^^D1CFM$55Mv;-*;;;;;.=!Xn}%==== 88FMM%)?@AEEGGGrD   zwkb,expected_type,expected_dimPOINT_NAN_WKBPOINTZ_NAN_WKBMULTIPOINT_NAN_WKBMULTIPOINTZ_NAN_WKBGEOMETRYCOLLECTION_NAN_WKBGEOMETRYCOLLECTIONZ_NAN_WKBNESTED_COLLECTION_NAN_WKBNESTED_COLLECTIONZ_NAN_WKBc                     t        j                  |       }t        j                  |      sJ t        j                  |      |k(  sJ t        j                  |      |k(  sJ y rF   )r<   r   r|   r   get_coordinate_dimension)r   expected_typeexpected_dimrk   s       rB   test_from_wkb_point_emptyr  .  sZ      C DD!!!t$555++D1\AAArD   zwkb,expected_typePOINTM_NAN_WKBMULTIPOINTM_NAN_WKBGEOMETRYCOLLECTIONM_NAN_WKBNESTED_COLLECTIONM_NAN_WKBc                     t        j                  |       }t        j                  |      sJ t        j                  |      |k(  sJ t        j                  |      dk(  sJ t        j
                  |      rJ t        j                  |      sJ y )Nr'   r<   r   r|   r   r|  has_zhas_mr   r}  rk   s      rB   test_from_wkb_point_empty_mr  E  s~     C DD!!!t$555++D1Q666}}T"""==rD   POINTZM_NAN_WKBMULTIPOINTZM_NAN_WKBGEOMETRYCOLLECTIONZM_NAN_WKBNESTED_COLLECTIONZM_NAN_WKBc                     t        j                  |       }t        j                  |      sJ t        j                  |      |k(  sJ t        j                  |      dk(  sJ t        j
                  |      sJ t        j                  |      sJ y )Nr(   r  r  s      rB   test_from_wkb_point_empty_zmr  \  s~      C DD!!!t$555++D1Q666====rD   c                      t        j                  t        d      } t        j                  | d      }t        j                  |      }t        j
                  |      dk(  sJ y )Ni  T)rB  )r<   rE  r   r   r   get_srid)r@   r   rA   s      rB   test_to_wkb_point_empty_sridr  u  sM    T2H
..
5Cc"FF#t+++rD   c                 p    t        j                  |       }t        t        j                  |      | d       y Nr   	tolerance)pickledumpsr   loadsrk   pickleds     rB   test_pickler  |  s%    ll4 GFLL141ErD   c                     t        j                  |       }t        j                  |      }t        || d       |j                  s|j
                  sJ t        j                  dk\  r|j                  rJ y y )Nr   r  r   )	r  r  r  r   r|   r  r<   r   r  rk   r  rA   s      rB   test_pickle_zr    s_    ll4 G\\'"FFDA6??|||z)<<< *rD   c                     t        j                  |       }t        j                  |      }t        || d       |j                  rJ |j
                  s|j                  sJ y y r  )r  r  r  r   r  r|   r  r  s      rB   test_pickle_mr    sQ     ll4 G\\'"FFDA6||??||| rD   c                     t        j                  |       }t        j                  |      }t        || d       |j                  s|j
                  sJ |j                  sJ y y r  )r  r  r  r   r|   r  r  r  s      rB   test_pickle_zmr    sP     ll4 G\\'"FFDA6??|||||| rD   c                     t        j                  | d      } t        j                  |       }t        j                  t        j
                  |            dk(  sJ y )NrC  )r<   rE  r  r  r  r  r  s     rB   test_pickle_with_sridr    sD    D$'Dll4 GFLL12d:::rD   )r'   r   r#   zGEOS < 3.10.1zgeojson,expectedGEOJSON_GEOMETRYGEOJSON_FEATUREGEOJSON_FEATURECOLECTIONGEOJSON_GEOMETRYx2NoneGEOJSON_GEOMETRY_Nonec                 F    t        j                  |       }t        ||       y rF   )r<   from_geojsonr   )geojsonr@   rA   s      rB   test_from_geojsonr    s    6 !!'*FFH-rD   c                     t        j                  t        d      5  t        j                  d       d d d        t        j                  t        j
                  d      5  t        j                  d       d d d        t        j                  t        j
                  d      5  t        j                  d       d d d        t        j                  t        j
                  d      5  t        j                  d	       d d d        t        j                  t        j
                  d
      5  t        j                  d       d d d        t        j                  t        j
                  d
      5  t        j                  d       d d d        y # 1 sw Y   ZxY w# 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrK   rV   r#   zError parsing JSONrL   zUnknown geometry typez){"type": "NoGeometry", "coordinates": []}ztype must be array, but is nullz+{"type": "LineString", "coordinates": null}zkey 'type' not foundz${"geometry": null, "properties": []}z{"no": "geojson"})rZ   r\   r   r<   r  r   rG   rD   rB   test_from_geojson_exceptionsr    sk   	y(K	L  Q  
w,,4H	I !R ! 
w,,4K	L JHIJ 
w,,4U	V LJKL
 
w,,4J	K ECDE 
w,,4J	K 2012 2#   ! !J JL L
E E2 2sG   F
F"F$%F0(F<+G
FF!$F-0F9<GGc                      t        j                  t        d      5  t        j                  dd      J 	 d d d        y # 1 sw Y   y xY w)NzInvalid GeoJSONrV   rL   rN   rX   )rZ   r[   Warningr<   r  rG   rD   rB   !test_from_geojson_warn_on_invalidr    sC    	g%6	7 C##B6:BBBC C Cs   A  A	c                      t        j                         5  t        j                  d       t        j                  dd      J 	 d d d        y # 1 sw Y   y xY w)Nr^   rL   rM   rX   )warningscatch_warningssimplefilterr<   r  rG   rD   rB   #test_from_geojson_ignore_on_invalidr    sN    		 	 	" Eg&##B8<DDDE E Es   /AAc                      t        j                  t        d      5  t        j                  t
        d       d d d        y # 1 sw Y   y xY w)NrP   rV   rO   rX   )rZ   r\   rp   r<   r  r  rG   rD   rB   /test_from_geojson_on_invalid_unsupported_optionr    s<    	z)=	> P-:NOP P Ps   AA
zGEOS < 3.10zexpected,geometryc                     t        j                  | d      }t        j                  |t        j                  |      k(        sJ y )Nr(   r-   )r<   
to_geojsonr	  r{   asarray)r1   r@   rA   s      rB   test_to_geojsonr    s6    * 3F66&BJJx00111rD   r.   )Nr   r(   c                     | dnd}t        j                  t        j                  t              | |      }t	        j
                  t        |       }||k(  sJ y )N),:)r  z: )r.   
separatorsr-   )jsonr  r  r  r<   r  GEOJSON_GEOMETRY_EXPECTED)r.   r  r@   rA   s       rB   test_to_geojson_indentr    sQ      &~;Jzz

#$V
H  9&IFXrD   c                      t        j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY wr   )rZ   r\   r   r<   r  rG   rD   rB   test_to_geojson_exceptionsr    s1    	y	! 1  s	   9Ar'   r   r&   zGEOS < 3.10.2c                 v    | j                  t        j                  t        j                  |                   sJ y rF   )r   r<   r  r  r   s    rB   test_to_geojson_point_emptyr  #  s,     ;;w++G,>,>t,DEFFFrD   c                 2   t        j                  |       }|t         j                  j                  k(  rt	        j
                  d       nQ| j                  rE|t         j                  j                  k(  r(t         j                  dk  rt	        j
                  d       t        j                  |       }t        j                  |      }|j                  rJ t        j                  | |g      }|j                         r|j                         sJ y t        ||        y )Nz(Linearrings are not preserved in GeoJSONr  zGEOS < 3.10.2 with POINT EMPTY)r<   r   r   r   rZ   r   r|   POINTr   r  r  r  anyr{   r   )rk   type_idr  rA   geoms_are_emptys        rB   test_geojson_all_typesr  3  s     !!$'G'&&111>?w++111  :-45  &G!!'*F||&&f~6O""$$$-rD   )r  r  r#  r  
contextlibr   numpyr	  rZ   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   r   r   r   r    r%  r+  r/  rQ  rU  rV  r$  r   floatNANrs  rt  r  r  ru  rv  r  r  rw  rx  r  r  ry  rz  r  r  INVALID_WKBr  r  r  r  r=   r  r  polygonsGEOJSON_COLLECTION_EXPECTEDrC   rH   markparametrizer   r  rp   rb   skipifr   rl   rs   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   r   r%   r   r   r  r  r  r  r  r  r  r  r(  r-  r1  r3  r8  r>  rK  rS  rW  rY  r[  paramr   rf  rj  rl  rp  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  rG   rD   rB   <module>r     s|       "   
 
 
 7 3    * 		

Wfkk'1ac2fkk$e%E1a(C!G4UAq5y1S1W=UAq5y1S1W=&++eQF
3sQw? V[[Aq1MA !fkk&!QY:^K !fkk&!QY:^K "v{{61a&j!<N (V[[Aq9MI )fkk&!QYB^S )fkk&!QYB^S *v{{61a&j!DV 'FKK1a8;MM (V[[AIqADWW (V[[AIqADWW FKK1v:q),@@  k4::wt}MVWX $**$eT]C01
  &4::# "%,eS\J&1 "(	$ ),h? "% #CL"CL"CL"CL"CL$ *0(88L'#
&N Q) V +GNN5$7 GNNE3< G%s|eS\E3<PQG
s|eS\E3<%N .*
 %	
GY CD"	VWKL	Wm%RS	!:/CD2	Wm5TU	VW.MN2	VW.CD6	-9ST	2LM$%$ :%<   (0)	00 J&<  3	3 +
. ,
. 	T'	' 		"	"..*
 %	
GY CD"	Wm%AB	VW:;	!:/CD;	$g}>NO	$fg7GH	hd+B		
 B		
!454 :%<   +i	

0
	0 J&<  4	4 +UDM21v.* / 3 ,* -UDM21v.* / 3 .* :%9   -UDM21v.* / 3 .	* :%9   .UDM21v.* / 3 /	* 

WjlGI'9';<'	' 	""	+	NG"G (
:28 	88M, %q/5E?!CD7 E7 %q/5E?!CD
7 E
7 
 	aEI}-.CD@A:=>	
 	I}-.I./Y<V1WX	
 	 PQR	
 	GU1a%789.aE0B/CDEFQ266NM23!QM9EFE!QKq!U);<=+454S
M0
 :%9  4	4
+4 :%9  6	6
!1
YY"
((
.
<" G((:5oNF OF :%9  G	G G((:5oNA OA
 G((J6O. P.
 [-MB]MoF]MoF^]7GH!	

 	#	

 	#	

 	 $	

 	'G''6&1	

 	'G''8&3	

 	'G''8&3	

 	'G''(89&4	

 	'G''):(;<%6	

 	'G'')<(=>%8	

 	'G'')<(=>%8	

 	'G'')=(>?%9	
yADJHKDJH ]NG^^8HI#	

 	 $	

 	'G''8'3	

 	'G''(89'4	

 	'G'')<(=>&8	

 	'G'')=(>?&9	
9!$JHK$JH :%9   ]NG#	

 	'G''8'3	

 	'G'')<(=>&8	
*H+	2H :%9   ^_9IJ  $	

 	'G''(89(4	

 	'G'')=(>?'9	
*H+	2H [-MB&(:?QR'G''6&1	

 	'G''):(;<%6	
"H#"H $]Aq_=^Q.>?'A2FG(!Q3HI/A:VW'A2O	
 	.19TU/A:VWBB :%9   ^Q+;<(!0EF0!8UV/7ST		 :%9   _a,=>)11GH(!0N	
 	0!8UV

	, g{-C!CDF EF
 -  .  :%9   - .	
 :%9   . /	
 g{-C!CD; E; G((:5oN7<N	
 	_&?DUV$'G''(CD)	

 	"&'!+#	

 	T4F+t$&-&	
!2.3 O4.
 G((:5oN2 O2, G((:5oNC OC
 G((:5oNE OE G((:5oNP OP
 G((:5mL7<N	
 	"&'!+#	

 	T4F+t$&-&	
&2' M(2
 G((:5mL<0 1 M G((:5mL M
 G((:5oN
[%01###[%$89###(W((+7?	
	
G
 OG G((:5oN+. , O.rD   