
    nj                    P   S SK r S SKrS SKJrJr  S rS rSrSrSS jr	S r
S rSS	 jrS
 rS rS rS rS rS rS rS rS r " S S\5      rS S jrS S jrS rS rS rS r   S!S jr\R>                  4S jr \!S:X  a#  \RD                  " \ " \R>                  5      5        gg)"    N)gdalosrc                      [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S	5        [        S
5        g)NzTUsage: validate_jp2 [-expected_gmljp2] [-inspire_tg] [-datatype imagery|non_imagery]zR                    [-oidoc in.xml] [-ogc_schemas_location path|disabled] test.jp2 zOptions:zG-expected_gmljp2: hint to indicate that a GMLJP2 box should be present.zF-inspire_tg: Validate using Inspire Orthoimagery technical guidelines.zV-datatype imagery|non_imagery: To specify the nature of the data. Defaults is imagery.z7                               Only used by -inspire_tgzQ-oidoc: XML document conforming with Inspire Orthoimagery GML application schema.zX-ogc_schemas_location: Path to directory with OGC schemas. Needed for GMLJP2 validation.   )print     \/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/osgeo_utils/samples/validate_jp2.pyUsager   &   sp    	^ 
\ 
"I	*	
ST	
RS	` 

CD	[ 
b r
      r   c                     U [            nX1:X  a  U $ [        [        [        U 5      5       H=  nX   nU(       a  U[           [
        R                  :w  a  M+  [        XQ5      nUc  M;  Us  $    g N)XML_VALUE_IDXrangeXML_FIRST_CHILD_IDXlenXML_TYPE_IDXr   CXT_Attributefind_xml_node)arelement_nameonly_attributesvalue	child_idxchildfounds          r   r   r   C   sf    }E	.B8	u\2d6H6HHe2L 9 r
   c                     [        XS5      nUb  U[           [        R                  :w  a  g [	        U 5      [
        :  a2  U[
           [           [        R                  :X  a  U[
           [           $ g )NT)r   r   r   r   r   r   CXT_Textr   )r   	attr_namenodes      r   get_attribute_valr"   R   s`    -D|tL)T-?-??B%%$%l3t}}D'(77r
   c                 &    [        U S5      nUc  gU$ )Nmessageunknown)r"   )r   msgs     r   find_messager'   ^   s    
B	
*C
{Jr
   c                     U [            nU [           nU[        R                  :X  a  XQ:X  a  [	        X5      U:X  a  U $ [        [        [        U 5      5       H  nX   n[        XqX#5      nU(       d  M  Us  $    g r   )	r   r   r   CXT_Elementr"   r   r   r   find_element_with_name)	r   r   nameattribute_nametypr   r   r   r   s	            r   r*   r*   e   st    
\
C}Et!b1T9	.B8	&uDQ5L	 9
 r
   c                     [        U SU5      $ )NJP2Boxr*   )r   jp2box_names     r   find_jp2boxr2   v       !"h<<r
   c                     [        U SU5      $ )NMarkerr0   )r   marker_names     r   find_markerr7   z   r3   r
   c                    0 n[        [        [        U 5      5       H_  nX   nU[           [        R
                  :X  d  M$  U[           S:X  d  M3  [        US5      nXA;   a  X   S   S-   X   S   4X'   MY  SU4X'   Ma     U$ )Nr/   r+   r   r   )r   r   r   r   r   r)   r   r"   )r   the_dicr   r   r1   s        r   !get_count_and_indices_of_jp2boxesr:   ~   s    G.B8	$"2"22u]7Kx7W+E6:K%(+a/(+($
 )*9~$ 9 Nr
   c                 *   0 n[        [        [        U 5      5       Hs  nX   nU[           [        R
                  :X  d  M$  U[           S:X  d  M3  [        US5      nUS:X  d  MG  [        [        US5      5      nXQ;   a  X==   S-  ss'   Mo  SX'   Mu     U$ )Nr/   r+   uuidUUIDr   )
r   r   r   r   r   r)   r   r"   get_element_valr   )r   r9   r   r   r1   r<   s         r   get_count_of_uuidboxesr?      s    G.B8	$"2"22u]7Kx7W+E6:Kf$&}UF'CD?MQ&M$%GM 9 Nr
   c                     [        U SU5      $ )NFieldr0   r   
field_names     r   
find_fieldrD      s    !"gz::r
   c                     U c  g [        [        [        U 5      5       H-  nX   nU[           [        R
                  :X  d  M$  U[           s  $    g r   )r   r   r   r   r   r   r   )r!   r   r   s      r   r>   r>      sH    |.D	:	$--/'' ; r
   c                 *    [        [        X5      5      $ r   )r>   rD   rB   s     r   get_field_valrG      s    :b566r
   c                 l   / n[         R                  " S5      nU(       aI  S HC  n[         R                  " U5      nUS:w  a  Ub  UR                  5         UR                  U5        ME     [         R                  " U 5      nU(       a.  UR                  5         U H  nUc  M  UR                  5         M     U$ )NJP2OpenJPEG)JP2KAKJP2ECWrI   JP2MrSIDJPEG2000)r   GetDriverByName
DeregisterappendOpenRegister)filenamedriversjp2openjpeg_drvdrvnamedrvdss         r   $gdalOpenWithOpenJPEGDriverPreferablyrY      s    G**=9ORG&&w/C-'CO NN3	 S 
8	B ""$C  Ir
   c                 T    [        U 5      nUc  g UR                  S5      nUc  g US   $ )Nzxml:gml.root-instancer   )rY   GetMetadata)rS   rX   mdds      r   
get_gmljp2r]      s4    	-h	7B	z
..0
1C
{q6Mr
   c                   2    \ rS rSrSS jrSS jrS	S jrSrg)
ErrorReport   c                 H    SU l         SU l        Xl        / U l        / U l        g )Nr   )error_countwarning_countcollect_internallyerror_arraywarning_array)selfrd   s     r   __init__ErrorReport.__init__   s(    "4r
   Nc                 "   U =R                   S-  sl         US:X  a  Uc  SnUb  Ub
  SUUUU4-  nO'Ub  SXU4-  nOUb  SU< SU< SU< 3nO
SU< SU< 3nU R                  (       a  U R                  R                  U5        g [	        U5        g )	Nr   	PROFILE_1zA.8.14z3ERROR[%s, Requirement %d, Conformance class %s]: %szERROR[%s, Requirement %d]: %szERROR[z, Conformance class ]: )rb   rd   re   rP   r   )rg   categoryr&   requirementconformance_classfull_msgs         r   	EmitErrorErrorReport.EmitError   s    A{"'8'@ ("'8'DL!	P H $6(QT9UUH*!H + +3C8H""##H-(Or
   c                     U =R                   S-  sl         Ub	  SUUU4-  nO
SU< SU< 3nU R                  (       a  U R                  R                  U5        g [	        U5        g )Nr   z"WARNING[%s, Recommendation %d]: %szWARNING[rl   )rc   rd   rf   rP   r   )rg   rm   r&   recommendationrp   s        r   EmitWarningErrorReport.EmitWarning   sf    a%;? H & -5c:H""%%h/(Or
   )rd   re   rb   rf   rc   F)NNr   )__name__
__module____qualname____firstlineno__rh   rq   ru   __static_attributes__r	   r
   r   r_   r_      s     8r
   r_   c           	      N   U[            nU[           nU[        R                  :X  a  US:X  a  [	        US5      nU[        R                  :X  a)  US:X  a#  U R                  SSU< S[        U5      < 35        [        [        [        U5      5       H  nX   n[        XU5        M     g )Nr/   r+   RemainingBytesGENERALzRemaining bytes in JP2 box : )r   r   r   r)   r"   rq   r>   r   r   r   find_remaining_bytes)error_reportr   parent_node_namer-   r   r   r   s          r   r   r   	  s    
\
C}E
d5H#4,R8
d5,<#<!46	
 .B8	\2BC 9r
   c           	      <   U[            nU[           nU[        R                  :X  aF  US:X  a@  SnUb  [	        US5      nUc	  U[           nU R                  SSU< S[        U5      < 35        [        [        [        U5      5       H  nX   n[        XU5        M     g )NErrorr   r+   r   z"Codestream error found on element r   )r   r   r   r)   r"   rq   r'   r   r   r   find_errors)r   r   parent_noder-   r   r   r   r   s           r   r   r     s    
\
C}E
d5G#3"0fE'#.}#= b!13	
 .B8	L, 9r
   c                    UnSnSnUb  US:  a  SnUS-  nUS-  nUnU(       a:  US:w  a4  US:w  a.  US:w  a(  US:w  a"  U R                  S	S
U[        U5      Xg4-  SSS9  g U(       a@  US:X  a:  US:w  a  US:w  a  US:w  d  US:  a"  U R                  S	SU[        U5      Xg4-  SSS9  g Ub  US:  a"  U R                  SS
U[        U5      Xg4-  5        g g )Nunsignedr      signedr             
INSPIRE_TGz(%s=%s (%s %d bits), which is not allowed   zA.8.9rn   ro   imageryzQ%s=%s (%s %d bits), which is not allowed for Orthoimagery (but OK for other data)   %   r   )rq   str)r   
inspire_tgval_orirC   datatypeval
signednessnbitss           r   validate_bitsizer   /  s   
CJE
#:!J3JCqcQh3!8r	cRi63w<;<% 	 	
 		!Qh3!8r	gn_3w<;<% 	 	
 
b63w<;<	
 !r
   c                      U c  g [        U 5      $ r   )int)r   s    r   int_or_noner   U  s    
{s8Or
   c                    [         R                  " SS5        [         R                  " SS5        [        U 5      nUc  UR                  SSU -  5        g UR	                  5       nUR                  5       nUR                  5       nS n[         R                  " SS5        [         R                  " SS5        [        U 5      nUR	                  5       nUR                  5       nS n[         R                  " SS 5        [         R                  " SS 5        US:X  af  Sn[        S	5       H!  n	[        X9   Xi   -
  S
:  5      (       d  M  SnM#     U(       a-  UR                  SS[        U5      < S[        U5      < S35        [        R                  " 5       n
U
R                  U5        U
R                  S 5      n[        R                  " 5       nUR                  U5        UR                  S 5      nU
R                  U5      S:X  aP  X:w  aJ  U
R                  5       nUR                  5       nX:w  a$  UR                  SSU< SU< SU< SU< S3	5        g g g g )NGDAL_USE_GEOJP2YESGDAL_USE_GMLJP2NOr   0Cannot open %s with a JPEG2000 compatible driverr   F   :0yE>Tz*Inconsistent geotransform between GeoJP2 (z) and GMLJP2 ()z%Inconsistent SRS between GeoJP2 (wkt=, proj4=z) and GMLJP2 (wkt=)r   SetConfigOptionrY   rq   GetGeoTransformGetProjectionRefGetGCPCountr   absr   r   SpatialReferenceImportFromWktGetAuthorityCodeIsSameExportToProj4)rS   r   rX   	geojp2_gt
geojp2_wktgeojp2_gcps	gmljp2_gt
gmljp2_wktdiffi	geojp2_srgeojp2_epsg_code	gmljp2_srgmljp2_epsg_codegeojp2_proj4gmljp2_proj4s                   r   check_geojp2_gmljp2_consistencyr   [  s   *E2*D1	-h	7B	zIHT	
 	""$I$$&J.."K	B*D1*E2	-h	7B""$I$$&J	B*D1*D1aqA9<),.566  ""y>3y>3 $$&IJ' 11$7$$&IJ' 11$7	"a',<,P ..0 ..0'""|ZG ( -Q'r
   c                 f   [         R                  " S5      c  g [        U 5      nUc  UR                  SSU -  5        gUR	                  5       nUR                  5       nUR                  5       nS nSU-  n[         R                  " SS5        [         R                  " SU5        [         R                  " S5      R                  S	S
S
S5      nUR                  / SQ5        [         R                  " S5      R                  SUS/S9  [         R                  " SS 5        [         R                  " S5        [        S5      nUR	                  5       n	UR                  5       n
S n[         R                  " S5        US:X  ae  Sn[        S5       H!  n[        X   XL   -
  S:  5      (       d  M  SnM#     U(       a,  UR                  SS[        U	5      < S[        U5      < S3SS9  [         R"                  " 5       nUR%                  U5        UR'                  S 5      n[         R"                  " 5       nUR%                  U
5        UR'                  S 5      nUR)                  U5      S:X  aQ  UU:w  aJ  UR+                  5       nUR+                  5       nUU:w  a#  UR                  SSU< SU< SU
< SU< S3	SS9  g g g g )NrI   r   r   faila:  <gml:FeatureCollection xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlJP2Profile/1.0.0/gmlJP2Profile.xsd">
        <gml:boundedBy>
        <gml:Null>withheld</gml:Null>
        </gml:boundedBy>
        <gml:featureMember>
        <gml:FeatureCollection>
            <gml:featureMember>
            <gml:RectifiedGridCoverage dimension="2" gml:id="RGC0001">
                <gml:rectifiedGridDomain>
                    %s
                </gml:rectifiedGridDomain>
                <gml:rangeSet>
                <gml:File>
                    <gml:rangeParameters />
                    <gml:fileName>gmljp2://codestream/0</gml:fileName>
                    <gml:fileStructure>Record Interleaved</gml:fileStructure>
                </gml:File>
                </gml:rangeSet>
            </gml:RectifiedGridCoverage>
            </gml:featureMember>
        </gml:FeatureCollection>
        </gml:featureMember>
    </gml:FeatureCollection>GMLJP2OVERRIDEz/vsimem/override.gmlMEMr   
   r   )r   <   r   r   r   iz/vsimem/temp.jp2z	GeoJP2=NO)optionsr   Fr   r   Tr   z0Inconsistent geotransform between OrthoImagery (z) and GMLJP2/GeoJP2 (r   zA.8.8ro   z+Inconsistent SRS between OrthoImagery (wkt=r   z) and GMLJP2/GeoJP2 (wkt=)r   rN   rY   rq   r   r   r   r   FileFromMemBufferCreateSetGeoTransform
CreateCopyUnlinkr   r   r   r   r   r   r   r   r   )rS   serialized_oi_rgr   rX   gtwktgcpsgmljp2_from_oi
fake_in_dsoi_gtoi_wktr   r   sr	epsg_codeoi_sroi_epsg_codeproj4oi_proj4s                      r   check_oi_rg_consistencyr     s   M*2	-h	7B	zIHT	
 				B



C>>D	B	 . /	 4 	)+AB1>B%%e,33BBBJ45'22J 3  	)40KK&'	-.@	AB E  "F	BKK"#qyqA58be#d*++  ""u:s2w(")	 #  
			BS##D)I  "E	))$/L	yy1l!:  "&&(H""vx1")	 #   ";r
   c                 A   Uc
  [        5       n[        R                  " U S/5      nUc	  SUl        U$ [	        Xh5        [        Xh5        U(       a!  U[           S:w  a  UR                  SS5        U$ S n	Sn
S n/ nU[           S:X  Ga`  [        US5      (       d  UR                  SS	5        [        U 5      nUS LnU(       a  U(       d  UR                  S
S5        U(       a  U(       a  SU;   a  UR                  SSSS9  U(       a  US:w  a  Ub  [        R                  R                  [        R                  R                  [        R                  R                  [         5      5      S-   5         SS KnSnU(       a%  WR)                  XS9(       d  UR                  S
SSS9  OUR'                  S
S5        [+        U5      nSU;   a   US   nUS:  a  UR                  SSU-  5        [-        USSSS9S Ln[/        US5      nU(       a  U(       d  UR                  SS 5        Ol[/        US!5      n[1        US"5      nUS#:w  a  UR                  SS$[3        U5      -  5        [1        US"5      nUS#:w  a  UR                  SS%[3        U5      -  5        U(       a  U(       a  [5        X5        [        US&5      nU(       Ga	  SnSnUc  U(       a	  SU;   a  S'nOS(n[7        US)5      U:w  a%  UR                  SS*[7        US)5      < S+U< S,35        [7        US-5      S.:w  a  UR                  SS/[7        US-5      -  5        [9        S05       H)  n[7        US1U-  5      nUc    OUS(:X  a  SnUS':X  d  M'  SnM+     U(       d  UR                  SS25        U(       a3  U(       d,  U(       a  UR                  SS35        O%UR'                  SS35        OUR                  SS45        [        US55      nU(       a"  U(       a  U(       d  UR                  SS65        GOU(       Ga  [7        US75      nUc  UR                  SS85        Sn[;        U5      nSnSn [9        S95       HM  n[7        US:U-  5      nUc    O:US;:X  a  Sn[7        US<U-  5      nUc  UR                  SS=U-  5          O	U S-  n MO     UU :w  a  UR                  SS>UU 4-  5        U(       a3  U(       d,  U(       a  UR                  SS?5        OUR'                  SS?5        [7        US@5      n!U!c  UR                  SSA5        Sn![;        U!5      n!Sn"[9        S95       HE  n[7        USBU-  5      nUc    O2[7        USCU-  5      nUc  UR                  SSDU-  5          O	U"S-  n"MG     U!U":w  a  UR                  SSEU!U"4-  5        [        USF5      n#U#(       d  UR                  SSG5        GO[        U#SH5      n	U	(       d  UR                  SSI5        GO[=        [7        U	SJ5      5      n$U$c!  UR                  SSK[3        U$5      -  5        Sn$O"U(       a  U$SL:  a  UR                  SSMU$-  5        [=        [7        U	SN5      5      n%U%c!  UR                  SSO[3        U%5      -  5        Sn%O"U(       a  U%SL:  a  UR                  SSPU%-  5        [=        [7        U	SQ5      5      n
U
b  U
SR:  a   UR                  SSS[3        U
5      -  5        Sn
[=        [7        U	ST5      5      n&U&SU:w  a  [?        XbU&SVU5        [=        [7        U	SW5      5      n'U'SX:w  a  UR                  SSY[3        U'5      -  5        [=        [7        U	SZ5      5      n(U(b  U(S:  a  UR                  SS[[3        U(5      -  5        [=        [7        U	S\5      5      n)U)b  U)S:  a  UR                  SS][3        U)5      -  5        [        U#S^5      n*U	(       a   W&SU:X  a  U*(       d  UR                  SS_5        O&U	(       a  U*(       a  W&SU:w  a  UR'                  SS`5        U	(       a  U*(       a  [9        SR5       HD  n[7        U*SaU-  5      nUc    O1[;        U5      nUR                  U5        [?        XbUSbU-  U5        MF     [A        U5      U
:w  a   UR'                  SSc[A        U5      U
4-  5        U	(       a"  U*(       d  [9        U
5       Vs/ s H  nW&PM     nn[        U#Sd5      n+U+(       d  UR                  SSe5        GO![=        [7        U+Sf5      5      n,U,S:w  a$  U,Sg:w  a  UR'                  SSh[3        U,5      -  5        [=        [7        U+Si5      5      n-U-b  U(       a$  U-S:w  a  UR'                  SSj[3        U-5      -  5        [=        [7        U+Sk5      5      n.U.(       d  U(       a$  U.S:w  a  UR'                  SSl[3        U.5      -  5        U,S:X  aP  [=        [7        U+Sm5      5      n/U/b  U(       a0  U/Sn:w  a*  U/So:w  a$  U/Sp:w  a  UR'                  SSq[3        U/5      -  5        OS n/[        U#Sr5      nU	(       Gav  U(       Gan  U(       a  U
S:w  a  UR                  SSsU
-  5        [=        [7        USt5      5      n0U0c   UR'                  SSu[3        U05      -  5        Sn0[=        [7        USv5      5      n1U1c   UR'                  SSw[3        U15      -  5        Sn1U(       a  U1Sx:w  a  UR                  SSyU1-  SS9  W&SX:X  a  U0Sz:  a  UR                  SS{U0-  5        [9        U15       HH  n[7        US|U-  5      nUc  UR                  SS}U-  5          O [;        U5      n[?        XbUS~U-  U5        MJ     U0S:  a=  U1S:  a7  [7        USU0S-
  U1S-
  4-  5      nUc  UR                  SSU0S-
  U1S-
  4-  5        [        U#S5      n2U2(       Gal  Uc  UR                  SS5        GOnSn30 n4[9        SR5       GH  n[7        U2SU-  5      n5U5c    GO	[;        U55      n5U5U
:  a  UR                  SSUU54-  5        [7        U2SU-  5      n6U6c  UR                  SSU-  5          O[;        U65      n6U(       a  U6S:w  a  UR                  SSUU64-  5        [7        U2SU-  5      n7U7c  UR                  SSU-  5          O`[;        U75      n7U
S:X  a  U7W1:  a  UR                  SSUU74-  5        U6S:X  a"  U7U4;   a  UR                  SSUU74-  5        SU4U7'   U3S-  n3GM      U
S:X  a  U3W1:w  a  UR                  SSU3U14-  5        OU(       a  UR                  SS5        [        U#S5      n8Sn9U8(       a  U(       a  UR'                  SS5        GOU	(       Ga  U8(       Ga  [;        [7        U8S5      5      n:U:U
:w  a  UR                  SSU:U
4-  5        Sn;0 n<Sn=0 n>Sn?[9        SR5       GH  n[7        U8SU-  5      n@U@c    GO[;        W@5      n@U@S:  d  W@U
:  a  UR                  SSUW@4-  5        OW@U<;   a  UR                  SSUW@4-  5        SU<W@'   [7        U8SU-  5      nAUAc  UR                  SSU-  5          GO[;        WA5      nAUAS:w  a)  WAS:w  a#  WASg:w  a  WAS:w  a  UR                  SSUWA4-  5        WAS:X  d  WASg:X  a_  U(       a/  W@[A        U5      :  a   UW@   S:w  a  UR'                  SSUW@   -  SS9  U=(       a  U(       a  UR                  SSUWA4-  5        W@n9Sn=[7        U8SU-  5      nBUBc  UR                  SSU-  5          O[;        WB5      nBU(       aL  WBS:X  aF  WAS:X  d  WASg:X  d  UR                  SSUWBUWA4-  5        U?(       a  UR                  SSUWB4-  5        Sn?OQU+(       aJ  WBS:  aD  WBS:  a>  WBU
:  a  UR                  SSUWB4-  5        OWBU>;   a  UR                  SSWB-  5        SU>WB'   U;S-  n;GM     U;U::w  a  UR                  SSU:U;4-  5        U(       ao  [C        U5       H`  u  nnCUU9:X  a/  WCUS   :w  a$  WCS:w  a  UR                  SSUWCUS   4-  SS9  M7  M9  M;  WCUS   :w  d  MF  UR                  SSUWCUS   4-  SS9  Mb     [        U#S5      nDUD(       aV  [E        WD5      nEUE HE  nFWEUF   u  nnGUS:  a  UR                  SSWFU4-  5        WFS;  d  M0  UR'                  SSWF-  5        MG     [E        U#5      nEUE HE  nFWEUF   u  nnGUS:  a  UR                  SSWFU4-  5        WFS;  d  M0  UR'                  SSWF-  5        MG     SnHS H0  nIUIWE;   d  M  WEWI   u  nGnJUJWH:  a  UR'                  SSWI-  5        WJnHM2     [        US5      nKUK(       d  UR                  SS5        U	(       a*  W)S:X  a$  [        US5      (       d  UR'                  SS5        O0U	(       a)  W)S:X  a#  [        US5      (       a  UR'                  SS5        [E        U5      nEUE H  nFWEUF   u  nnGUFS;   aQ  WFS:X  a*  U(       a!  US:  a  UR                  SSWFU4-  SSS9  M=  M?  MA  US:  a  UR                  SSWFU4-  5        M`  Mb  WFS;  d  Mj  UR'                  SSWF-  5        M     SnHS H0  nIUIWE;   d  M  WEWI   u  nGnJUJWH:  a  UR'                  SSWI-  5        WJnHM2     U(       a6  S H0  nIUIWE;   d  M  WEWI   u  nGnJUJWH:  a  UR'                  SSWI-  5        WJnHM2     [/        US5      nLULc  U$ [G        WLS5      nMUM(       d  UR                  SS5        [G        WLS5      nNSnOSnPSnQSnRSnSSnT/ nUUN(       d  UR                  SS5        GOj [7        WNS5      nOUOc  UR                  SS5        GOF[;        WO5      nO[;        [7        WNS5      5      nTU(       a  WTSg:w  a  UR                  SSWT-  SS9  [;        [7        WNS5      5      nP[;        [7        UNS5      5      nQ[;        [7        UNS5      5      nR[;        [7        UNS5      5      nS[;        [7        UNS5      5      nV[;        [7        UNS5      5      nW[;        [7        UNS5      5      nX[;        [7        UNS5      5      nYU(       d  WTSg:X  a  WPSL:  a  UR                  SSWP-  5        U(       d  WTSg:X  a  WQSL:  a  UR                  SSWQ-  5        U(       d  WTSg:X  a  WRSL:  a  UR                  SSWR-  5        U(       d  WTSg:X  a  WSSL:  a  UR                  SSWS-  5        U(       d  WTSg:X  a  WXSL:  a  UR                  SSWX-  5        U(       d  WTSg:X  a  WYSL:  a  UR                  SSWY-  5        U	(       a!  W%WPWR-
  :w  a  UR                  SSU%WPWR4-  5        U	(       a!  W$WQWS-
  :w  a  UR                  SSU$WQWS4-  5        U	(       a  U
WO:w  a  UR                  SSU
WO4-  5        SUnZ[9        WO5       GHa  n[7        WNSU-  5      n[U[c  UR                  SSU-  5          GO8[;        W[5      n[[?        XbU[SU-  U5        WUR                  U[5        U(       aF  U[A        U5      :  a7  UU   W[:w  a.  UR                  SSU[3        W[5      U[3        UU   5      4-  5        [7        WNSU-  5      n\U\c  UR                  SSU-  5          O[;        W\5      n\U\S:X  a  UR                  SSUW\4-  5        OW\WZ:  a  W\nZ[7        WNSU-  5      n]U]c  UR                  SSU-  5          O;[;        W]5      n]U]S:X  a  UR                  SSUW]4-  5        GMV  W]WZ:  d  GM_  W]nZGMd     WVWX-   WP:  =(       a    WWWY-   WQ:  (       + n^U(       d  WTSg:X  a+  WVWZ-  S:  a"  W^(       a  UR                  SSSWV-  WZ-  -  5        U(       d  WTSg:X  a$  WVWW:w  a  W^(       a  UR                  SSWVWW4-  5         W(       Gau  [        RH                  " W5      n_[/        U_S5      n`U`c  [/        W_S5      n`W`c  UR                  S
S5        GO-[/        W`S5      naUac  [/        W`S5      na[/        W`S5      nbUbc  [/        W`S5      nbWa(       a  Wb(       a  [K        Wa5      naUaRM                  S5      SSg u  ncnd[;        Uc5      nc[;        Ud5      ndUcWR:w  a  UR                  S
S5        WdWS:w  a  UR                  S
S5        [K        Wb5      nbUbRM                  S5      SSg u  nenf[;        Ue5      ne[;        Uf5      nfUeWPS-
  :w  a  UR                  S
S5        WfWQS-
  :w  a  UR                  S
S5        OUR                  S
S5        U(       Ga  [O        U5      RQ                  5       ng[        RH                  " Ug5      nhUhc  UR                  SSU-  5        GO|[/        WhS5      niUic  [/        WhS5      niWic  UR                  SSU-  5        GOG[/        WiS5      n`U`c  [/        WiS5      n`W`c  U(       a  UR                  SS5        GO^[/        W`S5      naUac  [/        W`S5      na[/        W`S5      nbUbc  [/        W`S5      nbWa(       a  Wb(       a  [K        Wa5      naUaRM                  S5      SSg u  ncnd[;        Uc5      nc[;        Ud5      ndUcWR:w  a  UR                  SSWcWR4-  SS9  WdWS:w  a  UR                  SSWdWS4-  SS9  [K        Wb5      nbUbRM                  S5      SSg u  nenf[;        Ue5      ne[;        Uf5      nfUeWPS-
  :w  a  UR                  SSWeWP4-  SS9  WfWQS-
  :w  a  UR                  SSWfWQ4-  SS9  OUR                  SS5        [S        U [        RT                  " W`5      U5        [/        WiS5      njUjc  [/        WiS5      njWjc  UR                  SS5        GO~[/        WjS5      nkUkc  [/        WjS5      nkWkc  UR                  SGS 5        GOKSnl/ nm/ nn[9        [V        [A        Wk5      5       GH?  noWkUo   npUp[X           [        RZ                  :X  d  M&  Wp[           GS:X  d  Wp[           GS:X  d  MD  WlS-  nlS nq[/        WpGS5      nrUrc  [/        WpGS5      nrWrbK  [/        WrGS5      nsUsc  [/        WrGS5      nsWsb+  [/        WsGS5      nqUqc  [/        WsGS5      nqWqb  [K        Wq5      nqWqc:  UR                  SGS	Wl-  5        WmR                  S 5        WnR                  S 5        M  WqRM                  S5      u  ntnu[;        Ut5      nt[;        Uu5      nuWmR                  Ut5        WnR                  Uu5        GMB     Uc  WlWO:w  a  UR                  SGS
WlWO4-  SS9  O[9        WO5       H  nWUU   GS:  a#  WUU==   GS-  ss'   SgUUU   -  * nvSgUUU   -  S-
  nwOSnvSgWUU   S-   -  S-
  nwWmU   c  MH  WnU   c  MP  WmU   Wv:w  a  UR                  SGSUWmU   UWv4-  SS9  WnU   Ww:w  d  M  UR                  SGSUWnU   UWw4-  SS9  M     OWlSx:w  a  UR                  SGSWl-  SS9  [G        WLGS5      nxUx(       d  UR                  SGS5        GO [7        WxGS5      nyUyc  UR                  SGS5        GO[=        [7        WxGS5      5      nz[;        [7        UxGS5      5      n{U(       d  WTSg:X  ae  WN(       a^  WVWPWR-
  ::  a  WWWQWS-
  ::  a  []        WVWW5      n|O[]        WPWR-
  WQWS-
  5      n|W|GSSgW{-  -  :  a   UR                  SGSW{W|GSSgU{-  -  4-  5        [;        [7        WxGS5      5      n}[;        [7        UxGS5      5      n~U(       d  WTSg:X  a  W}GS:  a  UR                  SGSW}-  5        U(       d  WTSg:X  a  W~GS:  a  UR                  SGSW~-  5        W}W~-   GS:  a  UR                  SGSW}W~-   -  5        [9        W{S-   5       H  n[7        WxGSU-  5      nUb!  WzS-  S:X  a  UR'                  SGSU-  5        M7  Wc!  WzS-  S:w  a  UR'                  SGSU-  5        M[  Wb  M`  U(       d  Mi  UR'                  SGS U-  GS!S9  M      [G        WLGS"5      nU(       d  UR                  SGS#5        [G        WLGS$5      nU(       d  UR                  SGS%5        [G        WLGS&5      nU(       a  W(       a  UR                  SGS'GS(GS)S9  [G        WLGS*5      nU(       d  UR                  SGS+5        U$ ! [$         a    UR'                  S
S5        Sn GN{f = fs  snf (,  NzALL=YESr   JP2Filer   zIThe file contains only a JPEG2000 codestream, instead of being a JP2 filer   jP  r   z"jp  " box not foundGMLJP2z+No GMLJP2 box found whereas it was expectedzgmljp2:GMLJP2CoverageCollectionz5GMLJP2 v2 box found, but Inspire TG require GMLJP2 v1zA.8.6r   disabledz/../../../../autotest/pymodTz%xmlvalidate not found or not runnableF)ogc_schemas_locationz$Validation of GMLJP2 document failedz#-ogc_schemas_location not specified B14BF8BD083D4B43A5AE8CD7D5A6CE03GeoJP2z%d GeoTIFF UUID box foundr=   GeoTIFFdescription)r,   DecodedGeoTIFFz8GeoTIFF UUID box found, but content is not valid GeoTIFF
VRTDatasetrasterXSize1z,GeoTIFF should have width of 1 pixel, not %sz-GeoTIFF should have height of 1 pixel, not %sftypzjpx zjp2 BRzftyp.BR = "z" instead of ""MinV0zftyp.MinV = "%s" instead of 0r   zCL%dz."jp2 " not found in compatibility list of ftypzF"jpx " not found in compatibility list of ftyp, but GMLJP2 box presentz"ftyp" box not foundrreqz,"rreq" box not found, but GMLJP2 box presentNSFzrreq.NSF not foundi  zSF%d67zSM%dzrreq.SM[%d] not foundz!rreq.NSF (=%d) != NSF_found (=%d)zL"rreq" box does not advertise standard flag 67 whereas GMLJP2 box is presentNVFzrreq.NVF not foundzVF%dzVM%dzrreq.VM[%d] not foundz!rreq.NVF (=%d) != NVF_found (=%d)jp2hz"jp2h" box not foundihdrz"ihdr" box not foundHEIGHTzinvalid value ihdr.HEIGHT = %sl        z@ihdr.height = %d, whereas only 31 bits are allowed for Profile 1WIDTHzinvalid value ihdr.WIDTH = %sz?ihdr.width = %d, whereas only 31 bits are allowed for Profile 1NCi @  zinvalid value ihdr.NC = %sBPC   z	ihdr.bpccC   zihdr.C = %s instead of 7UnkCz ihdr.UnkC = %s instead of 0 or 1IPRzihdr.IPR = %s instead of 0 or 1bpccz2"bpcc" box not found whereas ihdr.bpcc requires itz6"bpcc" box found whereas ihdr.bpcc does not require itzBPC%dzbpcc.BPC[%d]z/"bpcc" box has %d elements whereas ihdr.nc = %dcolrz"colr" box not foundMETHr   zUnknown value %s for colr.METHPRECzUnknown value %s for colr.PRECAPPROXz Unknown value %s for colr.APPROXEnumCSr         z Unknown value %s for colr.EnumCSpclrzpclr box found but ihdr.nc = %dNEzInvalid value %s for pclr.NENPCzInvalid value %s for pclr.NPC   z$pclr.NPC(=%d) != 3 (for color table)   z'%d entries in pclr box, but 8 bit depthzB%dzpclr.B%d not foundz
pclr.B[%d]zC_%d_%dzpclr.C_%d_%d not foundcmapzcmap box found but no pclr boxzCMP%dzcmap.CMP[%d] = %d is invalidzMTYP%dzcmap.MTYP[%d] missingzcmap.MTYP[%d] = %d is invalidzPCOL%dzcmap.PCOL[%d] missingzcmap.PCOL[%d] = %d is invalidz0cmap.PCOL[%d] = %d is invalid since already usedz:cmap box contains %d channel definitions but pclr.NPC = %dz"cmap box not found but pclr existscdefz8cdef found and pclr also. Ignoring cdef as it is unusualNz cdef.N = %d whereas ihdr.nc = %dzCn%dzcdef.cn[%d] = %d is invalidz.cdef.cn[%d] = %d is invalid since already usedzTyp%dzcdef.typ[%d] missingi  zcdef.typ[%d] = %d is invalidzCBit depth of alpha channel should be 1 (BPCC 0), but its BPCC is %d&   )rt   zQcdef.typ[%d] = %d is invalid since another alpha channel has already been definedzAsoc%dzcdef.asoc[%d] missingz,cdef.asoc[%d] = %d whereas cdef.typ[%d] = %dz[cdef.asoc[%d] = %d is invalid since another band has already been associated to whole imagezcdef.asoc[%d] = %d is invalidz0cdef.asoc[%d] = %d is invalid since already usedz4cdef.N = %d whereas there are %d channel definitionszHBand %d has bpc=%d, which is different from first band whose value is %d   )rn   res zD"%s" box expected to be found zero or one time, but present %d times)resdrescz"%s" box not expected)r   r   r  r  r  r  r  z"%s" box not at expected indexjp2cz"jp2c" box not foundjp2iz"ihdr.ipr = 1 but no jp2i box foundzihdr.ipr = 0 but jp2i box found)r   r   r   r   r  z<"%s" box expected to be found one time, but present %d times   zA.8.15r   )r  asocxml r<   uinf)r   r   r   r   r  r  )r  r  r<   r  JP2KCodeStreamSOCzNo SOC marker foundSIZzNo SIZ marker foundCsizzSIZ.Csiz not foundRsizz,SIZ.Rsiz=%d found but 2 (Profile 1) expected   XsizYsizXOsizYOsizXTsizYTsizXTOSizYTOSizrk   z9Xsiz = %d, whereas only 31 bits are allowed for Profile 1z9Ysiz = %d, whereas only 31 bits are allowed for Profile 1z:XOsiz = %d, whereas only 31 bits are allowed for Profile 1z:YOsiz = %d, whereas only 31 bits are allowed for Profile 1z;XTOSiz = %d, whereas only 31 bits are allowed for Profile 1z;YTOSiz = %d, whereas only 31 bits are allowed for Profile 1z)ihdr_width(=%d) != Xsiz (=%d)- XOsiz(=%d)z*ihdr_height(=%d) != Ysiz(=%d) - YOsiz(=%d)zihdr_nc(=%d) != Csiz (=%d)zSsiz%dzSIZ.Ssiz[%d] not foundzSIZ.Ssiz[%d]z$SIZ.Ssiz[%d]=%s, whereas bpcc[%d]=%szXRsiz%dzSIZ.XRsiz[%d] not foundzXRsiz[%d] = %d is invalidzYRsiz%dzSIZ.YRsiz[%d] not foundzYRsiz[%d] = %d is invalidi   zXTsiz / min_XYRSiz = %f > 1024g      ?zXTsiz (=%d) != YTsiz (=%d)zgml:RectifiedGridRectifiedGridz#Cannot find RectifiedGrid in GMLJP2lowzgml:lowhighzgml:high z1RectifiedGrid.limits.GridEnvelope.low[x] != XOsizz1RectifiedGrid.limits.GridEnvelope.low[y] != YOsizz5RectifiedGrid.limits.GridEnvelope.high[x] != Xsiz - 1z5RectifiedGrid.limits.GridEnvelope.high[y] != Ysiz - 1z*Cannot find low/high node in RectifiedGridzCannot parse %sOrthoimageCoveragezoi:OrthoimageCoveragez$Cannot find OrthoimageCoverage in %sz1Cannot find RectifiedGrid in OrthoImageryCoveragez;RectifiedGrid.limits.GridEnvelope.low[x](=%d) != XOsiz(=%d)z;RectifiedGrid.limits.GridEnvelope.low[y](=%d) != YOsiz(=%d)z?RectifiedGrid.limits.GridEnvelope.high[x](=%d) != Xsiz(=%d) - 1z?RectifiedGrid.limits.GridEnvelope.high[y](=%d) != Ysiz(=%d) - 1zgmlcov:rangeType	rangeTypez4Cannot find gmlcov:rangeType in OrthoImageryCoveragezswe:DataRecord
DataRecordz<Cannot find swe:DataRecord in OrthoImageryCoverage.rangeTypez	swe:fieldfieldzswe:constraint
constraintzswe:AllowedValuesAllowedValueszswe:intervalintervalz:Cannot find constraint.AllowedValues.interval for field %dz>count(OrthoImageryCoverage.rangeType.field)(=%d) != Csiz(=%d) r   z2rangeType.field[%d].min(=%d) != min(Ssiz[%d])(=%d)z2rangeType.field[%d].max(=%d) != max(Ssiz[%d])(=%d)zGcount(OrthoImageryCoverage.rangeType.field)(=%d) != 3 (for color table)CODzNo COD marker foundSPcod_transformationz=cod.SPcod_transformation not found (and perhaps other fields)ScodSPcod_NumDecompositionszVNot enough decomposition levels = %d (max_dim=%d, 128 * 2**SPcod_NumDecompositions=%d)SPcod_xcb_minus_2SPcod_ycb_minus_2   z>SPcod_xcb_minus_2 = %d, whereas max allowed for Profile 1 is 4z>SPcod_ycb_minus_2 = %d, whereas max allowed for Profile 1 is 4r   zDSPcod_xcb_minus_2 + SPcod_ycb_minus_2 = %d, whereas max allowed is 8zSPcod_Precincts%dzMUser-defined precincts %d found but SPcod_transformation did not advertise itzKNo user-defined precincts %d defined but SPcod_transformation advertized itz$No user-defined precincts %d defined'   QCDzNo QCD marker foundSOTzNo SOT marker foundRGNz&RGN marker found, which is not allowed   zA.8.16EOCzNo EOC marker found)/r_   r   GetJPEG2000Structurerb   r   r   r   rq   r2   r]   syspathrP   osdirnamerealpath__file__xmlvalidateImportErrorru   validater?   r*   r   r"   r   r   rG   r   r   r   r   r   	enumerater:   r7   ParseXMLStringr>   splitopenreadr   SerializeXMLTreer   r   r)   max)rS   oidocr   expected_gmljp2r   r   r   expected_ftyp_brandingr   r   ihdr_ncr  bpc_valsgmljp2gmljp2_foundrI  xml_validate_foundcount_uuidboxescount_geotiff_boxesgeotiff_founddecoded_geotiff
vrtdatasetwhr   
JP2CLFound
JPXCLFoundr   r   r   r   	SF67Found	NSF_foundr   	NVF_foundr   ihdr_height
ihdr_width	ihdr_bpccihdr_c	ihdr_unkcihdr_iprr   r  methprecapproxenum_cspclr_NEpclr_NPCr  
cmap_countPCOL_mappingCMPMTYPPCOLr  transparent_indexcdef_N
cdef_count
cn_mappingtyp_alpha_usedasoc_mappingasoc_whole_usedcnr-   r  bpc_valrescount_boxeskey_last_idxbox_nameidxr  cssocsizr  r"  r#  r$  r%  r   tab_Ssizr&  r'  r(  r)  
min_XYRSizSsizXRsizYRsiztiledgmljp2_nodergr+  r,  low_xlow_yhigh_xhigh_yoidoc_content
oidoc_nodeoic	rangetype
datarecordcount_fieldsmin_valsmax_valsr   r   r4  r2  r3  min_valmax_valminSsizmaxSsizcodr6  r7  r8  max_dimr9  r:  SPcod_Precinctsqcdsotrgneocs                                                                                                                                       r   rK  rK    sd$    "}		"	"8i[	9B	z#$ *!b'94W	
 DGDH	-I% 2v&&""9.DE H%T)<""G J+LPV+V""G") # 
 0J>#/GGOOBGG$4$4X$>?34/&)-& &&// 0  %..$B.5 /  ((C
 14-@"12T"U"Q&&&9<OO #2vyW 	 (,<="&&X +2|<
%j-@8 ** FQO &j-@8 ** G#a&P \+HC 2v&JJ%-$E$O-3*-3*T4(,BB&&$T402HJ T6*c1&&3mD&6QQ
 2Y#D&1*5;&=!%J&=!%J  &&O J **$`
 !,,!`
 ""9.DE 2v&,t""L e,C{&&y2FGc(CII4[#D&1*5;$; $I#D&1*5; **96MPQ6QRQ	 ! i&&Bc9EUU I **$f
 !,,!f
  e,C{&&y2FGc(CI4[#D&1*5;#D&1*5; **96MPQ6QRQ	 ! i&&Bc9EUU
 2v&""9.DE tV,D&&y2HI)-h*GH& **!#Cc+FV#V #$KK%$7 **$Z%& )tW)EF
% **!#BS_#T "#JJ$6 **$Y$% &mD$&?@?go **!#?#g,#N  G'dE(BC	#$$)[( %]4%=>Q; **!#=F#K (dF(CD	$	A **!#EI#V '}T5'AB#x!| **!#Ds8}#T
 tV,D	S( **!#W $9#3((W uA'gk:C{c(COOC($$#~7I8 & x=G+ ,,!Ix='23 D/4W~>~!I~> tV,D&&y2HI"=v#>?19 ,,!#Cc$i#O #=v#>?<J419 ,,!#Cc$i#O %]4%BCjVq[ ,,!#EF#S 19)-h*GHG"w"}B7VX=$00%'ICPWL'X #G tV,D'Q, **$&G7&S &mD$&?@? ,,!#ACL#P  G&}T5'AB# ,,!#BS]#R  !H(a- **$>(K*1 +  >gm **!#LPW#X xA'eai8C{$..y:NRS:TUc(C$$#|a7G ) Q;8a<'i7Q;ST:U.UVC{$..%4!XPQ\7RR tV,D< **96VW!"J#%L"5\+D'A+>;!!#h'>(22 )+IQPSH+T  -T8a<@<(22 )+BQ+F ""4y%$!)(22 , ?1d) K
  -T8a<@<(22 )+BQ+F ""4y"a<DH,<(22 )+JaQUY+V  19#|3 , 6 6$-$V'($i%0!"
 26L."a
W *Z !|
h(>$..%X)845  **!#G
 tV,D "((N $]456W$ **!:fg=NN 

!&!"'uA&tVaZ8BzRBAvw$..%'D2w'N z)$..%LPQSUwV &*JrN'gk:C{$..y:PST:TUc(CaxC1HcUl$..%'EC'P ax3!8%"s8}*<"QRAR(44 , e"*2,!//1	 5  *j(22 ) s#$c(!+
 -/))-(x!|<D|$..y:QTU:UVt9D!dai #qC1H(22 ) N#$dAs"3!4
 +(22 ) }#$d)!,
 +/$(te|'>(22 )+JaQUY+V "\1(22 ) R"&!'
 .2T*!OJU &X ' **!N!:./ "+H"5JAw--"hqk1gl(22 , j#$gx{";!<,.	 3  7C1 !HQK/$..(f '8A;78(*	 /  #6$ dF+C?D&C*3/HS!Qw$..%b"Cj)
 "22$00%'>'D ' <DAK"&s+a7 **!^*%
 VV ,,Y8ORU8UV # HT{**84HQX~$00%'G('R  #H U 2v&""9.DEHM+b&*A*A$$Y0TUh!mB(?(?$$Y0QR 8;C"3'HS!>>&=!cAg$..(Z"Cj)(*.6 /  '.z 1W **!^*%  DD((4Kc4QR' , HH;&&x0C> ,,!#Ch#N  I <{**84HQX~$00(*JX*U  #H = 
r+	,B	z
b%
 Cy*?@ b%
 CDDDEEDHy*?@ f-D|&&y2FGt9D}S&12Ddai&& BTI " '  }S&12D}S&12Dc734Ec734Ec734Ec734EsH56FsH56FdaiTU]&&ORVV daiTU]&&ORVV daiUe^&&P
 daiUe^&&P
 daiVu_&&Q
 daiVu_&&Q
 
dUl2&&?!4/0
 te|3&&@"D%01
 4&&;woM J4[$S(Q,7< **96NQR6RS4y  dNQ4F %CM 1hqkT6I **!>c$iC,<=> &c9q=9= **96ORS6STE
A: **!#>!U#K Z'!&J%c9q=9= **96ORS6STE
A: **!#>!U#K Z'!&JQ !T 4/JEFNd4JKEdaiUZ-?$-F5&&4ej8PQ daiUe^&&!=!N  ))&1;(;<:{O<B:""8-RSE*C{#B	2 V,D|$R4t%c*!$3!!4E
E
E> ** "U E> ** "U 't,#'::c?1Q#7 VVTAX% ** O TAX% ** O
 &&J
 U((*((7
""9.?%.GH
,@AC{#J0GH{&&EM
 #3(;<:&sO<B:&$..(O
 (E2C{+B	:(V4D|,R<t-c2),3!)< #E
 #E
 E>(22 , ]#(%.!129	 3  !E>(22 , ]#(%.!129	 3   /t4+/::c?1Q+?(!$V!$V!TAX-(22 , a#)4.!129	 3  "TAX-(22 , a#)4.!129	 3  %..(*V , $"7"7";\ *#/AB	$ -c; ?I$ **$N
 "/y:J!KJ!)%29l%K
!)$..(Z
 ()#%#%)./BC
O)TI$.y$9E$\2d6F6FF %m 4 C#(#77#B , 1+/-:5BR-S
#-#51>ul1SJ#-#94A(24G5&M (5'<8E,69* (5'@3@,9>4* ,4+;7D0=z8.H ,4+?7Fx7PH#+#3$0$:$:(4(d*6)7%&
 %-OOD$9$,OOD$99A9L$6Wg.1'lG.1'lG$,OOG$<$,OOG$<W *U\  <+t3 , 6 6$0$d'3T&:%;6=	 !7 !" */tA'/{c'9(0s(:45!4D2E23x{2BQ2F2323a2H12L(0(?,4QK,C+3A;'+A,8,B,B0<0d34hqk1g2N1OBI	 -C -. ,4A;'+A,8,B,B0<0d34hqk1g2N1OBI	 -C -.) *56  ,q0 , 6 6$0$m'3%56=	 !7 !" b%
 Cy*?@#06L#M #+&&S }S&9:D&)-=V*W&X#daiSD5L(UdUl-B!%/G!$,u=GS1&=#=== **#p3#!%<"<< !$M#7J$K L #M#7J$K Ldai->-F&&T'(
 dai->-F&&T'(
 !#44q8&&Z(+<<> 2Q67"/5H15L"M".D1H? ,,!DFGH
 %,$(q ,,!e
 %, ,,$>B') -  8*  b%
 Cy*?@ b%
 Cy*?@ b%
 Cc4&	 	 	
 b%
 Cy*?@W# # / ,, "I */&	/X ?s   .BC 6BC3CBC0C/BC0c                 ~   SnS nS nS nSnSnSnU[        U 5      :  a  X   S:X  a)  U[        U 5      S-
  :  a
  [        5       $ XS-      nUS-   nOX   S:X  a)  U[        U 5      S-
  :  a
  [        5       $ XS-      nUS-   nOnX   S:X  a)  U[        U 5      S-
  :  a
  [        5       $ XS-      nUS-   nO=X   S:X  a  SnO2X   S	:X  a  SnO'X   S
   S:X  a
  [        5       $ Uc  X   nO
[        5       $ US-   nU[        U 5      :  a  M  Uc
  [        5       $ Uc   [        R                  " S5        SnUb   [        R                  " SU-  5        [        X#XVXG5      R                  $ ! [         a     N@f = f! [         aA     [        R                  " SU-  5        SU-  n NR! [         a    [        SU-  5          gf = ff = f)Nr   Fr   z-oidocz-ogc_schemas_locationz	-datatypez-inspire_tgTz-expected_gmljp2r   -SCHEMAS_OPENGIS_NETz
%s/xml.xsdz%s/SCHEMAS_OPENGIS_NET/xml.xsdz%s/SCHEMAS_OPENGIS_NETzECannot find %s/xml.xsd. -ogc_schemas_location value is probably wrong)r   r   rE  statOSErrorr   rK  rb   )argvr   rS   rS  r   r   rT  r   s           r   mainr    s   	AHEJOH
c$i-7hCIM!wQKEAAW//CIM!w#'A; AAW#CIM!wE{HAAW%JW**"OWQZ37NwH7NE7 c$i-: w#	GG)*#8  '	GGL#778 6Jk#  		  		8;OOP'?BV'V$ [*+ 			s<   E! 1E1 !
E.-E.1
F<<FF84F<7F88F<__main__rw   )r+   r   )r   NN)#rE  rC  osgeor   r   r   r   r   r   r   r"   r'   r*   r2   r7   r:   r?   rD   r>   rG   rY   r]   objectr_   r   r   r   r   r   r   rK  r  r  rx   exitr	   r
   r   <module>r     s   @ 
 
 0  	"==" ;7.1& 1nD$-(#
L2lU| jZ% hh ?D zHHT#((^ r
   