From 59c9994173be76bd20a5b96291965cfaf136fa92 Mon Sep 17 00:00:00 2001 From: Melyn Roberts Date: Mon, 29 Sep 2025 10:34:57 +1000 Subject: [PATCH 01/13] Add flags --- aemworkflow/aemworkflow.py | 26 +++++++++---------- docs/source/installation/install_anaconda.rst | 2 +- docs/source/run_scripts/index.rst | 2 +- environment.yml | 4 ++- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/aemworkflow/aemworkflow.py b/aemworkflow/aemworkflow.py index a099a73..13ff930 100644 --- a/aemworkflow/aemworkflow.py +++ b/aemworkflow/aemworkflow.py @@ -12,8 +12,8 @@ def cli(): pass @cli.command() -@click.argument("input_directory", type=click.Path(exists=True)) -@click.argument("output_directory", type=click.Path()) +@click.argument("--i", "input_directory", type=click.Path(exists=True)) +@click.argument("--o", "output_directory", type=click.Path()) @click.option("--crs", default="28349", help="Coordinate Reference System (default: EPSG:28349)") @click.option("--gis", default="esri_arcmap_0.5", help="GIS format (default: esri_arcmap_0.5)") @click.option("--lines", default=10, help="Number of depth lines (default: 10)") @@ -27,8 +27,8 @@ def pre_interpret(input_directory, output_directory, crs, gis="esri_arcmap_0.5", sys.exit(1) @cli.command() -@click.argument("input_directory", type=click.Path(exists=True)) -@click.argument("output_directory", type=click.Path()) +@click.argument("--i", "input_directory", type=click.Path(exists=True)) +@click.argument("--o", "output_directory", type=click.Path()) @click.option("--crs", default="28349", help="Coordinate Reference System (default: EPSG:28349)") @click.option("--gis", default="esri_arcmap_0.5", help="GIS format (default: esri_arcmap_0.5)") @click.option("--lines", default=10, help="Number of depth lines (default: 10)") @@ -42,9 +42,9 @@ def interpret(input_directory, output_directory, crs="28349", gis="esri_arcmap_0 sys.exit(1) @cli.command() -@click.argument("input_directory", type=click.Path(exists=True)) -@click.argument("output_directory", type=click.Path()) -@click.argument("asud_filename", type=click.Path(exists=True)) +@click.argument("--i", "input_directory", type=click.Path(exists=True)) +@click.argument("--o", "output_directory", type=click.Path()) +@click.argument("--a", "asud_filename", type=click.Path(exists=True)) def validate(input_directory, output_directory, asud_filename): try: validation(input_directory, output_directory, asud_filename) @@ -54,8 +54,8 @@ def validate(input_directory, output_directory, asud_filename): sys.exit(1) @cli.command() -@click.argument("input_directory", type=click.Path(exists=True)) -@click.argument("output_directory", type=click.Path()) +@click.argument("--i", "input_directory", type=click.Path(exists=True)) +@click.argument("--o", "output_directory", type=click.Path()) @click.option("--crs", default="28349", help="Coordinate Reference System (default: EPSG:28349)") def convert(input_directory, output_directory, crs): try: @@ -66,10 +66,10 @@ def convert(input_directory, output_directory, crs): sys.exit(1) @cli.command() -@click.argument("input_directory", type=click.Path(exists=True)) -@click.argument("output_directory", type=click.Path()) -@click.argument("boundary_filename", type=click.Path(exists=True)) -@click.argument("split_filename", type=click.Path(exists=True)) +@click.argument("--i", "input_directory", type=click.Path(exists=True)) +@click.argument("--o", "output_directory", type=click.Path()) +@click.argument("-b", "boundary_filename", type=click.Path(exists=True)) +@click.argument("-s", "split_filename", type=click.Path(exists=True)) @click.option("--mdc", is_flag=True, help="Export to MDC format", default=False) @click.option("--mdch", is_flag=True, help="Export to MDCH format", default=False) @click.option("-egs", is_flag=True, help="Export to EGS format", default=False) diff --git a/docs/source/installation/install_anaconda.rst b/docs/source/installation/install_anaconda.rst index ef7a96e..d51069c 100644 --- a/docs/source/installation/install_anaconda.rst +++ b/docs/source/installation/install_anaconda.rst @@ -91,6 +91,6 @@ Once `Miniforge` is installed and activated we can now create an environment to .. code-block:: bash conda env create -f environment.yml - conda activate aem_workflow-env + conda activate aemworkflow-env diff --git a/docs/source/run_scripts/index.rst b/docs/source/run_scripts/index.rst index d634c59..9a08a12 100644 --- a/docs/source/run_scripts/index.rst +++ b/docs/source/run_scripts/index.rst @@ -11,7 +11,7 @@ Pre-interpretation .. code-block:: bash - aemworkflow pre_interpret "{input_directory}" "{output_directory}" + aemworkflow pre-interpret "{input_directory}" "{output_directory}" **Parameter examples:** diff --git a/environment.yml b/environment.yml index 640cbfa..9a32084 100644 --- a/environment.yml +++ b/environment.yml @@ -7,5 +7,7 @@ dependencies: - pip=25.0.1 - python=3.12.9 - pip: - - git+https://github.com/GeoscienceAustralia/aem-interpretation-conversion.git@main + # - git+https://github.com/GeoscienceAustralia/aem-interpretation-conversion.git@main + - git+https://github.com/GeoscienceAustralia/aem-interpretation-conversion.git@PV-2480-add-flags-for-aem-workflow-cli-scripts#egg=aemworkflow + prefix: /opt/conda-env From 32c242e508d7b4a5de789086884b9c2846294276 Mon Sep 17 00:00:00 2001 From: Melyn Roberts Date: Mon, 29 Sep 2025 10:58:26 +1000 Subject: [PATCH 02/13] Add dist folder Change arguments to options --- .gitignore | 1 - aemworkflow/aemworkflow.py | 28 ++++++++++++------------ dist/aemworkflow-0.0.3-py3-none-any.whl | Bin 0 -> 30318 bytes dist/aemworkflow-0.0.3.tar.gz | Bin 0 -> 35003 bytes pyproject.toml | 2 +- 5 files changed, 15 insertions(+), 16 deletions(-) create mode 100644 dist/aemworkflow-0.0.3-py3-none-any.whl create mode 100644 dist/aemworkflow-0.0.3.tar.gz diff --git a/.gitignore b/.gitignore index 57828a2..b0a31e9 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,6 @@ __pycache__/ # Packaging / build artifacts build/ -dist/ downloads/ .eggs/ eggs/ diff --git a/aemworkflow/aemworkflow.py b/aemworkflow/aemworkflow.py index 13ff930..cc1f0ae 100644 --- a/aemworkflow/aemworkflow.py +++ b/aemworkflow/aemworkflow.py @@ -12,8 +12,8 @@ def cli(): pass @cli.command() -@click.argument("--i", "input_directory", type=click.Path(exists=True)) -@click.argument("--o", "output_directory", type=click.Path()) +@click.option("--i", "input_directory", type=click.Path(exists=True)) +@click.option("--o", "output_directory", type=click.Path()) @click.option("--crs", default="28349", help="Coordinate Reference System (default: EPSG:28349)") @click.option("--gis", default="esri_arcmap_0.5", help="GIS format (default: esri_arcmap_0.5)") @click.option("--lines", default=10, help="Number of depth lines (default: 10)") @@ -27,8 +27,8 @@ def pre_interpret(input_directory, output_directory, crs, gis="esri_arcmap_0.5", sys.exit(1) @cli.command() -@click.argument("--i", "input_directory", type=click.Path(exists=True)) -@click.argument("--o", "output_directory", type=click.Path()) +@click.option("--i", "input_directory", type=click.Path(exists=True)) +@click.option("--o", "output_directory", type=click.Path()) @click.option("--crs", default="28349", help="Coordinate Reference System (default: EPSG:28349)") @click.option("--gis", default="esri_arcmap_0.5", help="GIS format (default: esri_arcmap_0.5)") @click.option("--lines", default=10, help="Number of depth lines (default: 10)") @@ -42,9 +42,9 @@ def interpret(input_directory, output_directory, crs="28349", gis="esri_arcmap_0 sys.exit(1) @cli.command() -@click.argument("--i", "input_directory", type=click.Path(exists=True)) -@click.argument("--o", "output_directory", type=click.Path()) -@click.argument("--a", "asud_filename", type=click.Path(exists=True)) +@click.option("--i", "input_directory", type=click.Path(exists=True)) +@click.option("--o", "output_directory", type=click.Path()) +@click.option("--a", "asud_filename", type=click.Path(exists=True)) def validate(input_directory, output_directory, asud_filename): try: validation(input_directory, output_directory, asud_filename) @@ -54,8 +54,8 @@ def validate(input_directory, output_directory, asud_filename): sys.exit(1) @cli.command() -@click.argument("--i", "input_directory", type=click.Path(exists=True)) -@click.argument("--o", "output_directory", type=click.Path()) +@click.option("--i", "input_directory", type=click.Path(exists=True)) +@click.option("--o", "output_directory", type=click.Path()) @click.option("--crs", default="28349", help="Coordinate Reference System (default: EPSG:28349)") def convert(input_directory, output_directory, crs): try: @@ -66,13 +66,13 @@ def convert(input_directory, output_directory, crs): sys.exit(1) @cli.command() -@click.argument("--i", "input_directory", type=click.Path(exists=True)) -@click.argument("--o", "output_directory", type=click.Path()) -@click.argument("-b", "boundary_filename", type=click.Path(exists=True)) -@click.argument("-s", "split_filename", type=click.Path(exists=True)) +@click.option("--i", "input_directory", type=click.Path(exists=True)) +@click.option("--o", "output_directory", type=click.Path()) +@click.option("--b", "boundary_filename", type=click.Path(exists=True)) +@click.option("--s", "split_filename", type=click.Path(exists=True)) @click.option("--mdc", is_flag=True, help="Export to MDC format", default=False) @click.option("--mdch", is_flag=True, help="Export to MDCH format", default=False) -@click.option("-egs", is_flag=True, help="Export to EGS format", default=False) +@click.option("--egs", is_flag=True, help="Export to EGS format", default=False) def export(input_directory, output_directory, boundary_filename, split_filename, mdc, mdch, egs): try: exports(input_directory, output_directory, boundary_filename, split_filename, mdc, mdch, egs) diff --git a/dist/aemworkflow-0.0.3-py3-none-any.whl b/dist/aemworkflow-0.0.3-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..8cfa771e435de035dd4b625b995978add79c2353 GIT binary patch literal 30318 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 DHnC-u literal 0 HcmV?d00001 diff --git a/dist/aemworkflow-0.0.3.tar.gz b/dist/aemworkflow-0.0.3.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..2d219e2a66eacf1b4ae246f77e9d96ee2ecb918e GIT binary patch literal 35003 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 Date: Mon, 29 Sep 2025 11:07:38 +1000 Subject: [PATCH 03/13] Testing --- aemworkflow/aemworkflow.py | 2 +- dist/aemworkflow-0.0.3-py3-none-any.whl | Bin 30318 -> 30319 bytes dist/aemworkflow-0.0.3.tar.gz | Bin 35003 -> 35001 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/aemworkflow/aemworkflow.py b/aemworkflow/aemworkflow.py index cc1f0ae..547795f 100644 --- a/aemworkflow/aemworkflow.py +++ b/aemworkflow/aemworkflow.py @@ -72,7 +72,7 @@ def convert(input_directory, output_directory, crs): @click.option("--s", "split_filename", type=click.Path(exists=True)) @click.option("--mdc", is_flag=True, help="Export to MDC format", default=False) @click.option("--mdch", is_flag=True, help="Export to MDCH format", default=False) -@click.option("--egs", is_flag=True, help="Export to EGS format", default=False) +@click.option("-egs", is_flag=True, help="Export to EGS format", default=False) def export(input_directory, output_directory, boundary_filename, split_filename, mdc, mdch, egs): try: exports(input_directory, output_directory, boundary_filename, split_filename, mdc, mdch, egs) diff --git a/dist/aemworkflow-0.0.3-py3-none-any.whl b/dist/aemworkflow-0.0.3-py3-none-any.whl index 8cfa771e435de035dd4b625b995978add79c2353..413b912b9f8ff55517cc8e5fe4c30716927d41b5 100644 GIT binary patch delta 1600 zcmV-G2EY04>;doW0gyor;|M)llK>pgn*sm;wvkRLe;4{cgg#ZMqH}{y5H`G>6L!aC z?paX5Na-WW=QV@%nIxi)`U<#d3vWE-BVE?jvx!KuQ?YCB~yY=eLY*Kq4NS zIiVAjBWv{I(JPFm1w#oGn67b84%`nl#sjj(Jt??tFE#qvJF2*kj%(*5QxzYXytQR3 ze^<=+c(h8hwtd5DxhtRYhCH#;HESq!PUQNPK#@KO6Yj;PX{bm+Lu7RaO8yW6d9QyNys^O>p0Nna-4)h9A+l}cDv=WXH!L&?O%zew(rFt zzmFiz(c{Cs{7bHN?q{4TIK!A+Liy!#PS~nW#$d5JPiQSt+^;Ta?UU;GsF`OU7@1Ax zUy13I5J`)q>BSR^;Fl6leY>G#_o?HEH>6x)St}IM+|4bzKF|*ih7N{a^G!YcX z2=8r!bwDG2E%DN>R>c;7Hv_1~eZN>>fvZn;&0+3%7ij?>U!XATh7y-`k zd*4;eD{LZDCXKhPvxxhwpkzQHI=^Xa6e+xIN3EVFNUI56;@>BK`30u`D`Rd}wLq)u z(vT8y@EyK0Wrk1qQMVnz9*xi&saT&9m=F>v@Ne>rVGA(?uOr1fXI7=tsX2ELZq54o zh$WxCLcZ{KrNBsecnC<>wKGKrn(H#lyJfu*jMPYg$3v*Fnv0vs(GsRJH+i&zuli{ zTi8E$i=Z^R$Q~Dd5aL57divr|7vJ4W5)2B0qW%%$YLUE^Bl*u#2-ky_oHc_K8o^z_ z*Jr}uIURH7=IYKa_Aa&3TVM{Qi4Y`~{}zu8O>=(B=~FF#8INjtNgmfnl#An2LwhM2 z^5k^Ag}a02Z#jQn`)DF0>RT7|czmP-`dXFg1F!hc%|%|Fki*av_qr@jN4c^dqW4@E zxjA4tK@rq-c3H;23J9M3HUgs|ZNVM1uRa@`hpLjsZ5mQ}f-h-Fa-g9z%ihzI*SNXO zTHaJ&PhL$8Q1rKcsHuLqC5RvY0h5w(Q4Qk=JzJ9i9M78q006eL@Nswo0q~P)bXfuL ylL2HClh$-T0q~O*bxr~BlVo*S0q~Q)byf-R2t8Y-UpxE>lO1+T29t3B0002G-wN#j delta 1599 zcmV-F2Eh66>;dlV0gyorcnCdP`d1*}n*sm;w~aAZ&O$C+v>P z+Ezu(Y`xi{ka3D-i~9)NFA$Ri+7h#A&G{{(JK%_g zYA%%#Dv&Mu+4L1g)q*|;3W;oS&kx)WEye?~#XT>%buV@L**dDYgN|$GAXOCysl4@N zf2&X|_IR{PwYIupCC{s;q9IT0bj=znofA2`5h&9Ke#ER$H4RN;kPv9yaaY%@g5bqh z*+XveqYb3}xHv=Ta?bby{es_W_rQ7Sga)i$V9Mh}S~L4@ySwcg+g)q9rVjtidjG?A zcgyt#V;zh|7I-0vA;A=eSD?G7I>5jsf5q$2_jg2d9=e`zu=EZ2z3ex8(-x=0;_P?n zi>1F4np5pbAYK85vnyfM0s)1y0c7q70fm$BY?=XulZ$P1 z0fmxoR0)L$JzLj~WSa<+U2ZRbxt5zs5C-7f&w^&ym%sra1Y$>kSrQIQ3pHXBGy>`A z?`$88E8f`fn&juZEI4-2 zj?rbXc;IyH7~2~4C{?M8zZ^mg|B=67FYgzR95YYsZ+Uzn?F{W05PRc)8oH^i?-V>u z7A5u}8zN7_X^h56>WwUiuFLyse)0Iy`z1wl-|h&}da5X3HKCAbT0e1FVHG-A`y@m= zK@cpArb&YP3+(S;n&HsDkYEFG-J34&;WoV8)jCvtiwSgO_e^Dhda|On9L~5g%oxE? z+7B^)J0*N(@pjESEP-=`7*!M|)eu3Hl%7|HH#Z&6K z(u9N`9h2>jBE=@`q#7n?Oxnqwh)A6im|z0Vv2XH%U<(lhuOmeVbCHEOZqg3I{jt72 zBEccAkS(1<6+)_)m0>XKMjUyJWGMO#yyq>f{x0#Fckv8*hc$d}TW*U;o$sN1EIH?r zmFrv_qv6psbuom0BF1v~+eml#2mV2QRB%Q+*q?{b7M7r&!Tf0+WyO}2-yv2fJFT0N z2IoExDQ^s%SXZaMlXG zJ`;M+IV{YZrJ9GxzSL5$gXJX57$?x|w|Jx}iuqg4o^nNh*+k0<;5+}Y*Q(4PXhVN)F0ktaAIGM=*HsyZ;#q(2_H$ds z#z$f@1W;A!b)7uj!&v;=2sDgY3+|wO^=U61&u3xUXD6aa&?T#I1~g=@8!kE9ja3-5 zZqM~Kwrh+GAiwobitL>B81~~olap~#4R{DWTl!ZZ;F|&f0JpR8ad-j&g_CM@SpkKU x0b~=C*K|Gsg_9O_P636JWp!Brg_FN^Rtbd&JzLj~WSa<+9(GFxl5qe4000!I2NM7Q diff --git a/dist/aemworkflow-0.0.3.tar.gz b/dist/aemworkflow-0.0.3.tar.gz index 2d219e2a66eacf1b4ae246f77e9d96ee2ecb918e..c052bf7680a573ef3458c15439ea0cccd94bf4c2 100644 GIT binary patch delta 26174 zcmZ6yb8zR)6UP~QgN<$5#>Td7+uTo_Y;4>1#!fc2v)S0T@xAAFSBJW)u9~i%nX3M8 zdiwq9u0)8AL!@dUdAf;j!5%YqXI5lb54zJ5zGh z{ikIg1Bm;QxMHUj2Pm zeI{#Q6auZSQ`h%m^7YINvdRdd-+29dxuKO>Ww@N4o@WWFudgq^23`#HYU^ql>+9-P z(@a3CRlie-*UtPw!ms&Xf^(oZ-JCDx*;7#S9LQG$WK`Sh`}@h(pnirHw4L#Fed);g z+?EyJ4O(4US$Gn@@dfC`L0W06D_XYBic4oV53riK*C1+;U!ULLQ%x(c`*b?9VeeX# z6#D3yfp^UsQ={+i-U&q}c~72OrVCPjj=x5+d7KxG)2sr{3{JtR$O=}*9d*!@4Cw|L zaXvyOf}=RTmgQ5OaW-sSlYgFBSyV}MO)DQ zE|+y)7CclbS1dywm#r3HA}fs>`$4=9NGSLhx&ez85-5C?gwc4qzjRMCBteIWc4IfC z{-bpaC$DQ}ai_j<%aSA(mfto$U10r4jh<_RD6{&{IH<2CvB5kq21y#KEw~!^HL-;i z@Yb#Ux7z+ivjOMYaPR&X17g_33m<7N6mqRY`pqbWkf>Phx#9Q^@dzf@QaqJ;8C2N$ z`UYzuH`)v*Dqa^zg(}H(9`+erw)gp#8$;CEy>`zge)}hXpBl_|3;w|{5ir%dI2vVf z5cOV(ZG>Fi8Sb#f1pmRT|A$z-ZFO9h!D)?qw5A+!U<{xb8+{X;JZVn6R8F2RJX;F$ zQtMOU0?MH23uxb|CazC2jZ;uJ^6?6=rz~#Q$uY!Gna5bSX@K2{rS$#;{4T27y8qc zu~Qd33g95R%>``Q-L)F)>-lAOT~FHk-G3e_0?D?7U^qBLY5RoceLZ%2?Dj6`Uws}; zehu;D>wIg%yutYvI4ASJjGo&z_boFWh%SltbGiljyiv@CdBf;np`humxOs7MoUnAU zXoCBM3Ah6y?YlZUVEf}5*lWn{~u}R)G!k2{$NVT&y$YO4epk(td5)vNr zQ4Ig5G{NozhX(Ww7|$d`Tue7(?N8vqa&49<<-^wJidj(XdOf|9^(Q36FEetG-m7!V zs`2$j5HDMTaNkXL;)b^F8F;*~(CWsMF)i5Hkbba=R*mv1okO1;+D=y;KiB3cc#k<6 z3+mt-$(6Rjq&psxE~Jbti^x^LEY8yi%l8#)>0d~_j1lw%U_;0Wg)g_mk5ky-SiE3d z4r{DZR3GdQhP^y&ARIjsFpXqqBTRrH684auIvI^5#LCc5u3^uJ{|Qq*1Qn0o=?9n{ zOCg7{h*JpClCeWVK(C{H_kvv{TVgs%y7vCSh@?h+&x)2=yu+sv zyTBreZN7RWC@eEMJ9x@>Pp6BR#?r^opJP89`Wb3QwL-vk`D#L-QQ7&Lyz9-7D8{ zF^9a6OS#&i&lb@`Nn_mq{j3hK;kk?sqwM%6=WJWEVw5hORHII3D(V>_viKgb)sx$} zyqk>VWXrd42I-w77C)7Eshf8xZ`k{CcR1OxYuN1%j*pXo72V%vG{bo9|L@DzxAXD= zPY~dd>?N#)L`sO_w?~i(S`j1H1|yqlWwPJkT&MQCXgIoAaJ?X{5?lisPh+K;{_X97 zUuv|j8)u6_9{Pn~#>oYTUDzXo8!_N&9K9F>lL4t?A!6;Eoyl?!tC1PBCkzbF*KeXt-czSK$A7C&S!uwTgdZ2UM&<}Q)F zpnjTn?QWb$Q4m8LzK91{_(m$8Ae!C1uj2^W)p6(Mh#?Ed_xAEQ35=R4*Pbpz_F-n? zg`3cpOQKT2yM{^k77SG54YYr?o(gO8wS~*M`hR(2VFS(KEC3U|;{aX(9<=m}@jp|P>sCew=Y!m6{znhPdmv)mKi2e1Mrz3!911pqBd0Bz*4mRB> zIMK{Vw_=EwSnm^gf0!6k%5)_|u3Wm*$uJ8-DE9PZr!Ocbmp>e`HZ(yjFxXAr=*+CE z)^POX{6*3IJ#@*hyOh3qJK_uzfJ3G(B%EhSFk0d*in~S}d{wnHDwqX*s1AmqRQUv@ zCGo*Whr9`3heKcdX1?J`wl*a~+zzgVR4=IAU{Z!jPB6s)O2JEt$-Aah(kBSA15{VT z+&x@(zNsJ~-q9)(&*|@g1)AD>1`UqQxSnZUWEhzJdj`w$3d-J{)ZA~z`Gc*#MBBHj z*_$#kh3gheO+w@R9YM4|{7P5wpV5S&ReB)U2=AHk@-JEaUyad2NgHBUacGywYmC=z zas=^zLlog+fjaMRaguaz)O+)mEZfegm^Mt%fK(r%7(<$@ZfK4ESz(YQE}RKc zL2)X1o}KToSDaK$aYBJIs3tLm6$w_3Ri^nkAW1f0x-07JEFID?EB$kICU}#o=u50|ocnZZj@BnYN@5^~ z%SO=;9(m<+pMp~gaBQqSlf+*F{!=uWcMwqQ3TS*Z|*e6^Br6Umb9EjxW{%qn*;Ojo; zYjzdn^VydOs{ijFk@F?@R__n=qp^g2)$j9*f-78=?;8oPW zJR_FbC_yTTsG_=rd9}aa`I<@1BeeUX)JY;Xtw;T$y8B{`RnKHvyG5}(v?kktxdWLy zzI}dhkChG@D0Dd&93_g6DotnRv&1ehimVH&xLx94+|c-G=cE-O+Wj!*98gg~Bpx9a zN~ha6{!e9z4pWYvozb*8NDA08H+Q^giU{{o;izX^b>mjdY1EO0FeA^X$fO2WG(BwH z7ggEyX)R1FL?9|4J_>KO*ianBD|&q&yU0R*U5Z{SS{QBqp;-^3!C)h!@KB?Sjo&pY5t{^RiQyS^?AGV&wVbbkPiWB$8H%Zl5x9GBnara7}`>F6;w86 zc3X>-BlTyJ)a;%rveS~>FwGq3rkuw5Eo~O_@coSnZN-gh51-WBo_~4)c3!cjLv;=; zU#L021iLGc!y0GUov=8gzJQ7@bJZb3aHRyLlL_LzF%hESl&5vknEQw@X3L$R7d?1T zq~ADR&#+N5%c<+N6%lCNtkGlAj*!~$1x8x4ojQgmU^J0CEETT7O%or$CY!xUZ^m)Z zZp4})b2=ZuZ(f^(aZ4$$5;m&b98b*U;o48Sjmzo)FxTF%qB~wq~%%6x(2q~4T){9|3PevoJ)V$hlbJydRn{VjY`yc`~&%Ox|-iVQe&upwciXh$w!3Ifv9FjyVeBV^Mt3nrm8Um7)0ePszn?zf}&Wb9NTOzyJ;?OPVUJ(B9aDm=(w zufp2Bd*PT%sl%F>wxyIJX0YUtB3PlCulyM=*V`Eoy}dhgEf>Sd(vqWKQob|kmjP!F z#?r)YzFr8YL+Gc>jmGT_3XYd!WO+d#mRK|J4g>TXZqzF+fX8+BJ@wsch_Gwg&k5%n zE=ZPgZis_ig2s8TK$9G2>#IJQIBct06s0v7Hxv5ITrx)wLJ;j==O~fu2jK6D@>L8Q zedubdGF|Eco(F6E4fNLE=Uuvhi-pI~Z$hTtMhhy&D5qWEoCRQ*OTU_#Z5eCbbp;V+ zg8=owHS*oDOfxwonCTz?XkUuQdv~`XOqrL417S|0ug)N{qf4bpH=#vMkTve!>Pt+AU0^v9iAKhfpc(hO^MzA#_#z9@sI zxirnno{4OPAS2zYmq!0tP)CjWN+x%T^ad7iQV%gYQP*J1)Ex9k`y@`JDvZFiI5Jx> zF~mot@go0(B6vkwO%b+jl%0EyetwD5xq2gCmRK-Dr{oI%e*e?D>9mZ8G=n-c#BiLF z=m=-@9u8VQcgJ^jKivqo>XwKSbI(^SQLFOCDg{YdTK&UPZ+3VNcV<)ZbxdLT@djj% zQT*MWiYxH{^Zh(7B4sQmH#?;Y4IFLVD+hi7GiH$TUBQYgfq-Y=u>PO83ZZL8$+Eug zb|aj*Nx~qW*Hw{hd`JSW2Qn0C9IV(6)=yrfAxW6nF>)snd67c90eKygK5QrqO#-l| z_8QG3D+)B-JoEU50qM}~())|TejA{Yl}#I)nl)%=aYqnIoBa5F>|tbvMPT(~)FV@2 z;zAGdg#nRy4c;7Hj8YVl@aWcqrJ1}m&>c7Fh@=3nk<1mt)W6}wng!lh>4iEj3u^}5 z{-u|fVXy*<)W%El28lSwmWBT>Zgs!;NnY$`!V-)p1ryo3Psl#Pd!|ySY%~BNu5Jl$ z)3e+$(h(L;)`e3rIHcwcl!;=^t|`@cVpaZd(+>GE^+I$|zcIv~aj$l2gO~4qpwRbC zGUz-`zj|zzGh9{k`$4F5A|v>lnwHb|ad@jF<;rY(xg#VjWieYB&*UC=mLVLLG{peo z20j^#*@X9}sYFH`fv%qBf}W^vR)i4$gqZp$?=XgZ=+Zw7s)QJ ztImJ~S3s-N*t@PlBZl`@@lOnIp~50bSt1}moaAhwv@lec3Lbvx`K#$2vF?eib*eD^ zS2VweN;%WfgT#TLZ!=ms8T>hH(zrw%G{!^i;2EzbTch*dl@eV>=PO{bD-fNd&Eqmj zjfv#xccXcAP{K6&>_@ib9#f$-6#2#xQ&DalDmGfmgWnTKuBJ_@aYVN`Q1JnkLb}3^ z+OP7%86lKxBkp(;*q_zu?XL(joAtXjELH0{*ze*IA+f}EF+4$OR`Fav^|6F! z9Gvz?HI8n}&u_x=x-9|Wm3H?71HYR9mB@PGm0pjqe-pSAE@g;uFWF>1$Ci6{Wz-t0IHwWFhs?m)5 zn;SGY!LKA^8?#3gs{Opm!9D9CTkS56kiS4a72~cRbljzD5bi*^)%RRC`Idn=yOtPVb|9e+1@IH2LoAMZr zZ`oR^A?WqX5fy+yjPU4H+pctpU+y?8-YvTrLS4d`6ByV1n*~gTrRbL?_!UL;kj(R} z^*@j<-(}HBm1*`$Jx%YviDhwTT;+caaP%EOv}~tVC8`BE6rY>~)rQBTp(feALM!~k z6Bhh%+S36H{Cfvy4ULd9R(u0%IFLVESO_rGzr3yYnlu2+t&KDHK_!BB1R`UH&-lhu z`GydCvye}SPxS|cVKs!N#EJn3aA19a3? z3ByHy=r{otMH9G%6m6CV4rr`I3w&R#Q0_p{I89MT=CL6a&L~d%$4cs(II8H6`6yBc zdGS>UlIuZTteW!bm!Z#RE(&iF;bIva%Q>;SBlLqI;!GYwG*G?x@uf@2y%u&P_L63B z3eFQzB+}o5Ty}#1^Y|zYb=EZ%opHb}O|YcfF8S?(vo+zkb(;od|n0sis$g>~tH z?=g#y(SAKviDN7=6kk{<(F%Ih(2155VpZ=y2Wa3@ z5I5v+KCtOF#$Hq3rf*iO(jdYY8(kFoTp4CDUP_YRuAX4vvHXp>Z&>6r*~sjK9U62e z?EHWWNF!tJiAcn@uBs6L)MP6r83?@!r7tPepWrE|dXg+YgFt78$q9`yJ!9sJLk3Y6m9G|q%-9FbI}owpyBm|U#)P$&o} zgF3MQL7)n|-5uFm(#$J%teY-B#uJC(&oIif}^-e&bwEH~JLWy?D0@>I;7P%4F z8~fv=JLs{~EIRtu7STip`iwA}>V1WcP%47^mq$t*LxWLkb=$`K2C?FkWAfLQ)77Rc zoC*$da{?UiNCRy0ncDXy0qS{gr$9Xb`^2O)LmbE0wph2G-9nEWXX+)lj6X+(ULBDV z)MY5G9f=CxD$*JLbe#m7)Iujpi8-bdB`981K8G3?Rj4A)&q+YCSY1J)8X&6rTSXt8 za{ce+5s}`TQR_n*BVqHOY0{iT^DVc;QaGFH52nPglhG`JZ!-5#VKVojF_rkh{em?S z@nw_Q=~+Re(`K3z9xzGn)sx6zH2 z+pZy~Hq<`NPP0hWgIj$u{{o#EQkCgYZL~i<>la}jsOeiC8E$9DLw&J@xr?izO3Y)C z^9qHj>U&7Zv?h{pYKS`YSp%9tTS+{t%<^iHapT;=!KxZ6qF!#TUk*9fZ5pAF-`Q63ItW2vK-rBC=GBR=0x!&$otec z7|9?=#D(cwfm~R0HS%bt=EMo~)ucPJv!;o6*?1?4v%3gR699>8iBLXzs=(N#90Nn? z>5?%{7ES9k#U|+q$vD(EH%`0%he$G0+Ah+{k6V;&Pqw)Mn;>r!f8LC&fc?WAU;=T^ z(nhJI-0=(+GOt4t?veri3OjS*4X@1W#X33rmf-j<4syKIQyaC4$!{c|k zYRVEOLAQUktB4d z9b`H|=G0~9zCm=(#@PX@FsCNQMhHfIqS!p5Pi6f+iu1J<=qyN8#7!i>BMkdFUFK=4 zk{T6oSo5)<7-9(6rx zdu!s2wMG5+f-%$sxKyMvOCQdnmqz>X@2!uuu0Uho{$#W(#LNU3f>)il_K@m`dm*=S zwXN?Gnc7dc{ntwP+jVs0c^|p?kD^ptu(@IDb-i+vU8c~UFQ>l1#mTpTzUU`#K*MdU0#;M+6VW!PnU zt6Yd&6}QpGcvXl@dXDL^)lHS^=TuSO&>?s&l8fV&~b` z0<_rfqK{n^8UHD35!1!Vn@6np2F>%Kk8c8b3ZgniI<+Cio4K2x(>*II0|WD1{`@wr zal(Z89NVMS7*E{W+?gZ3o*O3(f-h|-WVWQb2x`CkqQ>qpnA<4x%0v%ikjtxO#t$AD20Mvc#;U2o$qY#x*2af5GIJ$q)n~ zp)a2**H)h8RO&JidF|`yOSra28WZat$;Sa?jytr2j=D#iF;`^P0$Tn&s#!2}bTH)Q zuUxgcdF`RF8j5zbo)%Z~Fy5X~AR8y%tBIS{T|2 z;#7`|Oxv43Ikm{^XK_=C#+6-CpM;|v5h%eo^kXc~&@AV}ObY^>XU%QNSNI9FmPZGt zLWb<%8b55Kz7xDg?r`G%<2^S&G%-0wt7iC+68-zV@AtyGx>~1`%rnKE=zDqn?8I99 zV&{uKRzCe+Go6s#o|}e$U9N==2-69WAs}?J)_pBk-nj3tA7@W8MPxoyM=qYpidn+a zoppOHC!M5xElT+L=b{7cGiv@>7ifxu=94%}?Ln#CAL`jeAAk7W`k%@gpFLV(_JecM zR(}*iBVS?kduF9OD%Z!pf8XCUDN`HX*G9J}8RXJPDg#*1XO>iKmt`%!%6mYGx#%vNdQQ z?SMj;3h5xuJI57S4-+|VQOHOG`!|rsUq^H7=}?4(85Y8e7qw#YnhGk$ce-zJ-w0*v z+Nn2|dmtYY&S;Ja@kb{C+=Kp%o|E~Pkc9vBR-IZmIItmjvhgWDz0Xz(@n(eV+b~X;V+tMPDcT+Jv?U>zLyOrazG^yG7uWbW)g|dbEsCCqN zYTZZwhzxp;n>C!4v}RM8;ZA*6kS|86^ox74hfsmo;-&HbF z?&@$_hI@Cw5Zb*`Pz~*3G-JF0J356srkIi!3!ax5fdShB*i!-jNr9W>zElX2i@}<^ zriXV+=pkzVdAgEfn!5o^{W9`PcMBHz z5!`eK{881TZUCkD7~At-RA_R?%&P0~$hhRQPBhDwsxwSlzGZf@LmG4$YFHmfant)2 zYr=_#KV=#A+ck+e0hy&!BxmW~5)TB0Su%0i^FHB_;Fj3b_+=_!?T~QX1WJ{DNe;`wj~)q_CqEcf(pH4)#vP0V+qqgne6xqPD9d1)%|?ZC9{WPrikP3$ zbV$ns=oCxNsKadKYGf45d9*`zhJ>kNE$};CO~CpGqexw{`w}GHy9$blW~|)CSwE9A z+UI+#pzC7+3`rs8vU12y*X?8ZU!dtcf7i_$-stCBrF-!?U(SuR_ArzzHxVyU zKi~z@$tiVB)tfL#H4NWpa1Ih0M0n+n=@|Z)qaUd}PQJklGTCA!ok!e8-C_Z$Ec@Wx zOQUsW#TX48vLnt^#2#ZRq9Se4yQ*=qS(YlW2OX6WJbaHB)8#+l^{#RT5yqPzSokE7rk-y7gap15&qOI)}^0d07kzN zki#ul(RD8*aUc^2=If-oIDG%`P=F|yl>8D#?f=&1Z2;u zt3M*`%5x8GG$H&R=;n8UC^ZEpKo+A=O7$iehR;>lnC@jR3_PP!GPW6l!{`onChH~7 z%6ot^$cFMhhGsIlBgI!E#q6oi;U=Uu(dXP%H?g9(|5+~6FhdPRJf$W&e^@EZF~RBw z{TtJe#a~356IyTfUGNI^pKC2SLJH2QVuDnRe$B2X_E!|jk$SOpU)AJKlqMj-mX*gz z{mrB$vXNDV{o^FaieaN+G))|{lrDZ}9z|kb8FoZ-r3TF={m)2l36QnAv2ylv=WLpZoP%1j0pWJ3aUoK*_%mGHtvknf z+Y$R?nTaGTdh^uT@d5Qh0!Hxtk%aUAN9pccETY0vQ1db#f zDsD6-*@mR-@Z-uHesl##guIkXO77bkHD0fyEcc{b=HzMjA|SVV`NP^MAM^6OxhO!@ zGN&>}&-op>gRWac3eDcCy&31my#GA?N~ihfcGhIG#>15`8xj-0+@+>haY4NYBBchd zxrbS2!G)fO#ZgB3h_U#!iqJBV6u0_pHU8kc_0pfQ+7<*`a2nR8@57ib<_waeRFD;k|BfBmNzD6ZA zAPPQTA9!ylEj=#ISLi%dj`0|uQ~-~<&aFF*x{Id%%B?w&sFRL~Ecd`bISsM>v$o#8O4Nd9V*48GDcXFcRB;%dJQrM~ceVE!KB4mo zsT4^1$w43I8jz(}n^&S%ZFROZ#+YlW<^NkU#~Dd-D>Qc_Z?qUQi=AfE(U|t?E6ca- zP3*z(lnLPep-D(&qe7sBj}K8O7yA$iQQKc`U;8kJ^Jhu!kD}*x9OZ0oh*i%xxiuHc z)|QwXuIu+XA{js4#mf$A@V{#M(g(eEbI@TAF>1}8NA=j@R%!E;6Z|NMviEZd94JWA zYF+gdNiRaHp?XOw-?+T%#wc_Km_aonJ4y)pv?xG#H*rQKN45<`?Q#OmI$u6waukb> z_p$%}#fQs=Sl9DV={UN}W5(-|d#5GRX9te^U-v7<&YN%LD}=k7COfs%Kse3cV2E18 z^N5B(NHw&I+pj(&ph?LUv~YKodO05V8`c- z$ydk*C~pIlgAgM!BzZ*{6q zmuK;k*GYH5OCvsNK3B8lyFYwpGXStw8fP$B;`~B?l)mi^!e*r~A-l|i&cCx8ST|rJ z=ETms-wc|MAzo(X&Z22qga|Hsb_ZMwiN40Jgd~PYhXJt~%oa?6Og7iGmcGKj7t?36 zas%-;W>7bJ)`6u17xqk?+j-pvf9-pX?)(Uuk~V)ag2K1|2QLm}AMM^M0>xjpJ|3^f zrE8P++Hx)OPJ>4%vh(Y$5eC)Vo}q?dp+d~E`ubCKGT-Ai?uLM*>T=b`7O;8*Q^-9k zX!S|DScw!o|7R6)cW73_p!9^p)6Uf;CKK9HG^Pqm&Oy1cJJpa}4Y4%Zm%=OWv!yha ztzo)QLn{UCiUO!!5@`BjU~yodQvJknoCTIKbooDCn=fT)BKXP4nmdn^1wVhM{_ZQl z!Y_Lu=;q46jK#X031;hu2An^#hyc59kP9!vXuu%-j26}TI?0`^%2-7X12S1Y!8_T z=-;uCJCH>)P{k~6fqt=8U7Cg8y2C+jy3*8ojI_46-p>opzT`tL3IU6!u_}W8k$oTC zQzLNCR+FgA(YmD&z`0^a!fjry*%vDe$4TT`7mkC27{7Wu;Q^<$6=5I$fu{*0VN*c~ z)F&N^yJ=yAB%ge*16)aEFvdFk9t-9bEo4o>D3n(UVx2JhfWZ~gi$DMO7f+@e6UefP zJY=IQZQ<(22Q2AF(zZ@@g3u!y(iPQ0)m<`U@C_I9n?z_NEV#(Qjd06{_W?DMF2{#; z)W8n>Fc4ib7Rv=N^l{Dl^*|YLnl85gMo4RvSN4sFx;g6!zRQR4C2rPk+1KF}*7K79 zon?e)VeVtw{qx*|OJv@zxE1-};qk5dca>qTQ(fOQapZw2S$+S+`J~)LGUX0zXs`mY z0#VEVFnZM|(4FpYO;BMgf<#*S|45$;(C@RizbG|)+W<)E%j%mXmt>dckCp=?R*EVR z$EBIGQU3ny5;eK)&1mD1~_Ce1&TV z>`k`MFP=SCxKT4JhI}^_oo-bY4Prmd{CDh0lMKVjD_&6-G>xC>^Mp%-%9~{UN$fIS*!p+5>&8f{r34abxPaA%S<@`q9v}=ERh8yEjJqgMJS@Y|+mYF^O;k_I z=MVed18uWtVK8*&wt88(&OQg3|7|qH?PNo&$wX+%F|D;4Bmq%IT{Q7)+>4^jerWmS zlvrL31Fl$63uav?H7x-){7z3x?2WeY!(Yz=HA{_^7kRuzMMKTWgKw9b*Q^uJ8pqD# z1Il)+%QAuoe9uSV>f5JKwHwleYm8~A?FS7RovVKi<(XFsjIE)9N#>~5mj1<3y7 zJk6)gf*j<`!mx@mqES3Lc5RdIi{Z=OuvloB_upIvx&9bAIF|aAq?GbR_N=7ZG+TC{ za8FudK`{+W+wJ>ti5Mb0yd*$`J-voA@zthmqFNEWpP}ydT#6QY)b6}~qUojQ1KE|> zg6VGGRIJU^TpAJ&iql{Z*}B)Z4&Zk)!~Z{WQ9viYj^Ojz{bJiwiV7g9$Jyl7b|xEK z*elJll%9MrYhU~`ZI4lQpfLmPRgqOJ8iFs+%7U+Mg28{G68M=!wv{P0rBYHO2rXPH zFQ$`tA{^fPDQ_CL*AKrF8WYV7K%S)1KDoDTm1k`V6W4< zO{fnbN&nv}5kSlQeYW?!c;mJ5?R2B(YCZ`;*sL(HLxK84O+aKhwMyzu!j9Q5+-~-r z8g=(w`?uAJ+aSVL^|FlvG^|^dmHyyu%9JQ06I)(Ep+o$ShdywEj{hk}XNcp$giFF) z3Qx5be8|3*lq(v1t^GgO>$V)PodBNoE`>M0z7DT!0BXQQ_IpcU5fx=L`BzHQ{$PhP zEftz{%o;X4rB4}Z4a^Y!#NXqV-)YZ02+N}5psTLKl020R;2U4sCHJS~H_1GnW4(nQ z>iQ!}B{l>Ji&HFtS_udd#v9{4mE1|)2|sbfH78Gq zGYu98fcHF!(#T%9Dt&p%_?c1(goCqoN@4B@{wu%Q>UwW&wbvugG~q_z{cIE$1ry=t z37M@}V?oe^-phv$eJFh-Q+PkoV0>zkQ^C>e?@nm9gQtotSbvzU>~C2e^uw~~#^Rhy zVf3Z99Y)<|PnD;~^XdWTo!G@3FCgy?zMoz=z|6j4*oW?~Ul&CZL}|;LqwJKpZ72ft zeedeCPZ4DZlB|?jgiNFc4M>B@!WIp5Je$le1~qp5CsK8BBhWz$NQ$5n`=wL&rezc% z)IenZX`NLUp-gGwdX6{r6dvPgLx3=!dGH_WQ3; zz{vX`Rk0lADISqS_b8Rn_UHsYI}-7&@1xBJvcz3Br&ziNVg=uZG%9R$(JIurv=YM= z0gRRZy(>5K=(wnvpkouBkvw7D(gt*S<$2!vt1z018w{Njop*JpAT_vBT!H!qt0z4me%NS>DJAB8%qkAaGPcpAC|gOtvYklCFWXV@wA z%B|twS=~qf-WwJg7kDHMPq9DKRKl+owUzudB@c*0H^OOLZ9hv+CTdZ zeACD4895}kVEy?F-J|;7Owo&hJ#kVnXk%F*AktV^nrd<*!V?JYcYJYJA}AgQT)Y;r zzgf8XTbx;0bVyGQtfubRalYsx_SPN2!?lyh)k9;hhSb;p#}%M(%d@n&|0xI+r*vz&_%}_uO*FQ+gvKZUw|t<2qN-h z+)=QI4MhBp6R&_m5j(1cwtUV3_&&-Pr`yz~z4lkLMy0wgaIPs6t%QiPttDdAADT+C z5H}!~I`gXXSpF>Z1db#TM|4|#xF&869cuhJzgiwpTYh7G0E#HV6MhKmD z(7zBr{o9<$ckC19Y7`lZxPMyo2A80iNllf32W7SH&}tmiukq{Zo|3&H!q zzY0?JkNagP;V0EB zXHGsTQErUl4CBzR6NUpo`QJccBW!2VT+AB-O_EC7WmvUf7@lquRp^oqmQb9v=%qlc z=OjT@t_VL z(f9PJ8HJrJ-U7D_q#+k7j5xmw+FvGxJE{rqC_fL6RF+92)+e*he_3yT3#A=; zh1hL*AdA1abtT1Pp<{DeTt&ur*5^ zDW+xd%h+1FE-AAu>8g%w5#ajXn;%Rk2YKm^Yzp9d-kUE0xoJPR`OO^dGsT$EvAxcU z6b+_MqsRO(lq|EUeJVz`gzq&z{ZSyJ}lt8$)T3<|b z5K&@!I3QMAq0>`%85%rSl&5H2T9m6&*A_fB@E##!D`V zmNx}yJGBq|e~so=SpLr6gZMk}VP^Xgznq$S_$d9q_3%HwdX#+xwZ81V(WZYH3$?>+roxBGJiEY7? zHU?*9R21v7X0lJJgYPE_Z)Rj_iI?baDS#nNF&vUOo@%H!N*tn$3RE~nn9$a+>kNqI zoTQqsAz1HAJSE?k@x}aB4$jx|rrqck4cL_odaobo6!%})fv0_@jjQ(?=loPu!C+_> z9^ra2hur?WjtEJ%v;!IUjpt`yB8qL@a&5M>SHM6fKo~*rh2wtw_HDjW zN%OYd&ws-haxeRHom}sI@7opqM{9q?_co@VU+lVkyzdmV_e@GmZk!ncz~CC!i|dI| zDTlp;0fH|$)!})1VMKy@X7nBf2R7*kDmvMhADyi`=?qV#z=>pnmV>R@55wODMNq}& zQiwk%(tpM^@4yabEac>m#LQw@&=rT>DjdB;ALAD{MyHsz=!Z*v^88;qmPCiqjI0U% zJesXL8l;Rs%#LxxJ%lY9Pe`0dyX?)4daj6CROC5<^@04;7eh)iL6!xyR42FT3G|c% zG=8pQ(kM{9mR_!Y-r^fRZiR3oyelLdFLz<3Nu7^?EWipr;mw0N(u7b<)af6%7^Efw z?+_X-@h_E>IrbdOk%9$u2ZqMqNX5$pWzKWR#Dd0`3EN7T-*rT6RypJ4wo!w4AfiiS zu~icQTcV`<3@L^*EoM@fpyAdz&5zjZ*sOnujRP1y98R|TQ&qP#RXLAtsC7J8T~K@4 z8mSs`!o#MOD;Ht!o7^GZ7N{5rW}8;PP%JUFnLW-)z4fBovp_ia!JF$egC8R|;k(1U zvcGn!RKpbeFMAVyRB)}_!YY!<$BSP!KfrvS;r%_WO7<+)xY?{GV&x_jH#qo^a(%2c zI}M0zgP_|p!*pIV!$uFR)f*NwvUOh4QU7(<$SXQhLh)novq3t2hscXo$V^3t|9vAa zFQXVPF7z~niYfPepgjkd|K1rzBLLY<){amUxvHzFI@aYDMG3_{IOIMT@>fTfttSQH zu?69n7Bg)K@lngvAxZyy_%LG%Uv`c(DjXp54X1v>?Nb>fmPU~jELSpsa#~=ga%JX; zp<=Fwk#Ob#h0z*kIHMx8ENWTl?6Q8BapLhi)Ug>kW9xgH;_M>(bsK(LBQjfmlwjTjAUZkjQ-BhS z>ihs#3AT5?0vU$&o_JOi2rAdyZTxk0?O}eL8FPSylt~yyJkcx{tWE%5d$2en({gxf6ECl!GlkBt1kIpAqCu1?Eh`141d zQ34-qG*&vMUMO11A9QE~!OBd}Qv(6s11kgnP5fSc9U0o4@9bFP_vUf{dZYPqN+NlA zKI-q;*Vz}%|FIMJ=6(OM6CjzP0MBKw>F`Pp4Sprccs zzjyr2R`y5&VK&UhkbcxN`0v;EE0^ezH~#nGFBc^+;wLYqH82o2e;`0WL~xyV@zcJ^ za=ZJ$^?gc&<^4Woc~%q{R!;MP=_WU*I^lit4pl`k;OUQsZ!q_EXlq~hXU?CMM@czY zBjXqq!x774^_u_->n$?a?2pFKi{T(gQ!Caerigv^*uN3#TTpM)Xn?l_T<3J zvpBdTM2F%}AaR~Xy~lM1SC{g_vbr=Uyi9;Lz;QDZ8KSWGC zPYBXMgsuAg@#4UKaryfIflJ`JjzZRk`F|90mqBqod!N7=+${tM5+s5Kf@`oKApr(= zf@^RKesF@z4DRl3!QGv~HE4zq+;x`!z4zIwXZP9K7hQd-&Z(~Rs=KTE`}@>Z3B$*nkXC#4s=a z-Oq3yi|L3hAQ2v3Z!I9JKD~HcA${M7cAswpfNH)uK{{7n|4Kz&I9o)`m}Wet)<#=c zVSUesGdhOsRNMJ~J_=`O{d(-~Sz&(Ph&@`4416dRE6unvGbxa#wJY18btW~V{cY&g z^I|YSK`C$jzY+|xx!O-v-2($-Tk37vA&7bPi&!q`R50MaVhAZrlt}`=e8JDDvPWxu zJsoilLJ-x@9%FRqk^Rm-ljZc7^(3Ir?DQ4yTQt(`?@lhy0)CJd*F>}n zRq2wwRhm7>eu4V&Na=_Cqh^v4Z&H;l)Eg%KPXwaIZi>;#Nm|QzYE-woRS6%L!nDQ= zs)WpfBLqlmQE~Qa07EV8(GTq8j8dWdor3D>15~8$?UI!(oO2HT9yeXFY@x zg0$P9vdKj}wrZ32_pn*b(>+eEkPmf~R=J_Tcf&hZUf+tIH8??}QMPYA+&SyhOimyT zwujZE1--Q8hWrCmrkXtKn*N<8!?B#0f4`aV1=nl}g|eH~Yg5`(6=bFn#wstXFW?0F z+w9`(T&C<*&)OX=FOf~Dl+5Jycmj=Yxs7A4=Q}}pF~CAatljgRj6XL z)l;tG-?55~fe(dlW5&rUe?N0DMGDpwEa471XLc@9r5-_41;nKITH*OxaWso;%+e$0 zJMs6*;LM-B#l3^|V>9@gRGzk-TAz*pqmp zDA4`#?FMyY$67rcfpw(z&1(8vpRNb26StQ2K6WOP`vSXKc+Wo0XnWzF>l^!DA}^7Xme}Ge3UNNl{%|?r2EYsRQAO^47*gRJ;wxZ zScO|dUu|FBb*PgWqQ_=pGsN~sN2#F9!+<(j*}i1)RrakO@u=#El*FPXX|P*7a`Eg( zQqxWPMJcLa+_v8xRtPm zHyJ22qio0LfBva7TPis+|MRxC`d?A5Ul>OubT@ZXL&6C^ACqzfLy03fOL^4C7pBph zf5Q{2A+CpfwMBSQ1$e<9?DCyK_B`Qtzvq&Q_lXA-nhJH4aKjCp9(5< zb?pVd7VP(0*Nj-}=kwav^o_bho9CFX}@D-4p% zuyP+PzStn(x?#Mh)`5kpov>+C`@x=>tG<3(%QmvF6EZT+Lzbi%!w|3|i22w=FH*W$ z`&LAw@Ar~cF?8Mb3*Li!NuV%qhwfWZwUcKYr}_Jzp(L%HN5_s=(Tf0EFW(7dE)&qu zewvGvq&8^AA0gp`uWEmXr9~1&4nYQ<;*VR>{^tNM8jJGv-$zu%0eJG{cRu@6G-j-q zpJ_I3g=H?}hQ?m0GQ%8+Om^r92lU=&VmA-g%VrkQe)MJ4!LAju!sQno1gI*2s}UO2 zA}|?vwm97L3VTv+Y$ntqwNOU&eUp$0&XwmgKk~z2VWw{3M}+X>ch*Nl>8wWO+}HAn zEd=n?!mklYa|LV2ySL&mkZQIN8i^VS`y>d!)ZNBAzai@6NpN8~yGBf${2tinOIsVX z*X4TIDavsU{4kE>%s>3OTwk##Q?fdS;8Z3t6`?Io?wK4DZ}`SKT&wr3xnCT-G=i>AF);T+qG;yXHt47`K5IH5-P8G0Sj%#K6u}Zye>8fxDC$O3KB2 zuyElzg!h*^xWb0=$+Zl&6=WM~qdtgWoIol%T4=*lqOhpn>p8*md7tjKgFc#V)T-0^ zJ?k(S&}JhO)LHq3LF1N7UXuQ%U!pK}bKmzNswm+2w91md^L>s{(WuGB`Im}5fK;|4 zIR1_ANkYrgKNTFFC^)zXQd^w3Z@s*MFwmb@LX_GGAj*?hEXy^iJ1KJ4Gc`5YA#qcp zFwJA2Zr-+vTj6gs&n2QdU%w&o^Eqb5bG~R-*Q-W8UW0}ku0Ob*EiLnseWJf;c6r-o zeabdOUGB|aAhfyw^^;7Vdvj_4;U0u&E$CJ|NXY8aDACMK;VIG1ZRRP_&0XRt`I>vn zgREFN-O;L4qEpy>@f;b)`*x4vR@#u&KB(v_xV{VH^%omeL`{G{aM+8y8>@pmD$OF> z)V_D#ZxJTcs~_cT%pu(jqKD9ZC9VG)1OpFOM`oBr-3*X3I)n(r6^DRz8XF4+zt9Y_ zL@lQwu&=)Jv2`)m+%)A`sBr!KkkthH@E%)3Kc#=c%_5;4QNqjJU&O(>f&G^BRql<9 z1Q>!fPjLs*^X;-xcxcj(+75Y<)~0*DM8xjR`tGTI&HX@qL)6eJ_aO_a*$7ZS8((kn z*jRsYvD0*a6>+mJXa+1(kUuD{@tr*1d4~u|VW==)5Gge@uvrYDj~CCqR5g2RZJ;)ZvVmWp^lbC93{xOIbP&W06D=2 z0d`AeD-RdClIK2)Y;x5XrEU0L`LeqNR~m&?vW=Ew4poKQn`$VaTam!?W9;Y1Z^ z+-kj*!>z$OSAY{5^4Hl7(R8;yl}LWIFtUcTN6GLR=2}8ICQu^=<8gY4rZ(#sGQ;+3 z5{aW@T2)YTVI*mVXcsA?g!$)cEg~}>N!Nixr@_tSX(rBg)Q&>IC>+WZWDuF?iiyZ4 z8)yDMTDETCNG%93C!xSCM`v}!V{Gd+`x`3OoFn3RHvq>Z&)uz6MRJ1zVw9Mt5B>MS zZxL4Zsc_hO=)3%9FM$&E%gCZAwxV0TXP!}$tO7gI4Gi7o*jfVCnu0Evm`-Q3gHS%vlytK^Dhq+x9s<%w5-Y0#<@ob7d@G_%zFJM00x zS;1hMH%fV-F~U+ADq?3*u&?>9$C4mI3FjwMq)f0gpOxB4xhdWB~Y}wkRt3-xdnu66N33^}`A*HUr;qOZxG?xP+(Scj| z{-_68!#-W{Yc*nL3Q<1)>k5ZXZ)0Ru^sYb@t#CXxKFm#ZlZP_xUV4}GZh2>-LtAS` z+o;1pb9q@Bub@OJM`xQw{aIkSa$>VRm)qZZEI=n~8i@%cQX?9TLPJ}8jJ741OY-B5w%Lc-CCz~u8l1F0RDaSl zA`HXw^RiY*jQOVC9$vrUH;FS*Nk|>sOgJ>c3mnfEPS0n@?V;L7!2RUNzW4C#8Pq(Y8px znX^cgunI`VB=c|=JAi%#R#eJ~4l-WLNYmX){}?$z3&or~L6*p|{ij}L3&%L{-Y*%N zDtvJMi9H1)v;H$0um1cWCH|A1wmH|cc>*C4elPtI6`v!dFAOvvHvSNmq!dwn+INq8 zp*KrY@E6HsBx7mGs`t5dCj<#t%J7*IqjG z5g4X(_-&M>9m;r{%e6a6D=mYe%V4#Od|uzsyFWz~gD@WM%C{eV33 zIWE?L!D(&fM>H~vg%|`#M4RjUyav~2Q7GW_NMu$xKvT;A<^+L`Aliyd*m4Mh*@;(U zWZRXHNX1?d7^1AS4>E>`DAR%hA^OVv$Q=uiWaSAEF2quW2gCr$RN)|mb~~(0L~Fc~ z`FbF9vi+b@`%C2r1WJKSs)>L!AOz|N&~hz-#%B=d3Zkv~6r;VP5%sybsr{iD00QMg zaJ600fjSVx#|ZL6n-gRQY0-`ctwEG@RzQgmHeD9b7(`o_4KxG^)eT3#D+FlnJs}i& zRUjJ3h#np2JLEu*0??R^Z*IT!IGDZNpS=-5wA=x3vq}x|af7|CJHXrfgEyk*`yryb zx%sP3{~gWK8RoyVIm8DzVg+$@cZ_&;4jdx*3K2xNz_qAQ{OUs^26zL}*p58 zaHRb5<-szM+w#(JhGdyxjX#b|RP~MJd`aef3RaY8N{9E7~ z)@c^5YiyZaS+`=&YUGHccv`(L=OZIEJn)p>p2melE-V!Nsh_{K`dd#!ZDO2@&ZrUo z{MTcF_kJrq7sTivXsaoJxuGs&l0cvcFDd9^L1!_f`75|cD8+64m!4jId&=Zr3r-I7 zhsa1CxDWNNDuA;Z0PTSAdiZFxmhO_h8+_vja&_a zUU3`p^5#0;NMH@tf4N!0cbAFm`r~+4n>#oQoxXLNsO=Aqw(h^TE;V2y;vfd%blz;NCuF5v9Q{Hto*wIk&+56nbMi#wQ zE5luQgHM!r80Rrsd3j5aFkZe9N0lj>(bu{9 zUW!{6p?SvRDmoH;?$mQexwRGShZA8gw4CZ`twVU*@Wwxj0q-UNQ~Yq9Tl7CnR(e?< zP`1It$uGq$Jj~ox$U#kg&lgke6p~i+aga`|OQ3-LqI#7y7KwN?B7h*`{nUOVm2>DyaD>T^naMFwQ*a*XAb_9p=+{^eI%&o z^LPvxgS`z4$lTfjWQ7<5V$r`WWX?|Q(=L_TKO_5||d_swC zpyvOQv_2X2blpGr@kw&94i<`ei#hqBAcb{pxob0Du(*y^a2$I2T>G-?L{1oy=uf(X zZ`vA8^Cd%Ti(YNM_4Xwc4t#OQZd#c;G}3+7Y-^E2tYH*k2})W4UOIk{u=w6->)xTa z={EDyS;E4(@0&fh@{}l1G_Mf#Tl7HryF_%0n~qhY7brB=cR~;%kzK|q+CsF3=n{R^05YWJphFbSAl*d0-=2!gGo~CnX z-b4kPT#}41VPynew(CG(kpIVFa2M@AYSzoo;sBBp`(F;iAty&iGL3KVJKKNceEUji zA>!ilf1z27ioWp2rbQ{XaUwEPLSCAmsF7zb@Fb!P7?bI7~0M&$^@q`N9_6=SRy zt~>=)79r@t`#sMSQ1YH_?>tpyG}xWzsonlJD~lZX|5#bEjy*I?!Z(tUBgk%2E9_Ll zYrQ|8k;l8D25eZW45ltu_1bW8D1^zU{=cOxL=T$;L69s2woBN@{YQZ$T~zEMJqB7?1(BEOSMWyTN^Nlv}Zf?w>wB21b7& zEmGU6g?=z(mK6PJgLLWY&Met}#53J_JxdGO!_<c;no8KctB^#~fjE6Mh zQ}8=QkmwE37^0XBN6}(q27#U_vc9#eWu1s+EY%+*ysQ|#;U+(hPzSZ>=v^7atPiQy zfzs&f4uXnB>Z`>Jp8G%2JlO2|S$Z+laW$a*Ea{`JhOVcD?cj1DdXL;c4M~BlTCNyf_S`d3wRLDqxH)H1?D7`=}nutZ1Lsj4hUGR%Xnk;sDFld z8et-O0%1CIS`Y6CL$pNoBhpvDHnt;vE4;k%y+pYXyF__Fx(t{`nJ0jv%ssW)r#3^d zjRJe>r!UG>{x!yZhtDAmLgT!jZww(M^|-!Xe1p)72IMdP`89-oD&pwUK=11rqJtBm zaex49!yZ|#J6cljfP)K9{7K;Z{K5P^f-OVkkLeDFQ-jkZ422F(hp|2Ld2*H{`R~6OG5#157e>pZeH!>t9Qv5N?>D(KF78$AH@&ru5ah zFhA2%y5RZb9F!*OV$S_LIYj5u>>;#!i$VvGTbs2{b8 z=xK)~o{KBJWX6if6O*;?rA*1y(_yUjnXc1P4-yQgW20Bqk+9wfD*liX{BbZ^AX*&Q zw0I>i*VARqV**n4iGI)ab95_-{S^hPn$z=%s;KUdZ`6<9j&p0>*J(Pcyg2=+tW40A zg*sI80k80DFMgzikTmRt$?;7EJ0CIBPvmW?!9q8Ygz`Ym zOkmr*@@5}X-RXSdvVh<9mJ+MmApu!f0^%CCBg(#|E=VI(os&mj?VBRJ-Td0x`EaC1 zj$CP}Olen+JZLxf+)f`N0`FcC_VR0bI3bLGz2Uf+{!_giN$h3E_8Z65REUNMA7zY) zV;jrT%kAnhuL}vDPr@&|sdpG4TkH3}c2A13vce9=vIhy4-vkVro|GtuT5S9xoi9q= zw{q}<%Sh7ka?GtMJ0>1Vy0t}*{gnI0{O;c`>a{xDQ9SrQJIU)yAyLXS&Vz@X$=$jv zNN^J{jzp+nH55fw-|Dcb`{N)j}~qO}>|>A)-6nf8qn>#S6-yth3`9vH!@^bgNCt?p&@(mV;5gAsVo8`>h&CmYK> zgHnR1`fK4ikx!Mq;E9WDt^&Sy!b>O2B>S4hB7|0h4rjVSTpmj;9xmWbwMpiouU##; zxhX@+^wgqF$~)HqXq8?Q7U_ow*N zQ-h_ZmutmOb1Y4M-EJ|Y*^=)d|G}AIRsL$auoxyw&ET>!vsa+N?s8jP3lVH7u1ypK zPe^PM0*TJD(dR?>i*G!)nH&Vwv66M9<%030QQq3cc-3$VqrYS|bP&-oW0aUmAmB83 zSH@tbl!lqYNL$_c+UZE#`c;T2|5C&xGD9jfg+3%9Vc&OE75fDa<{aZv$GZ<2-9%`1 z4spt4T`#lo`d=-Tcz4Df!p5U;N)>LG2R!Z53xS7u_W$xLwn0{IJnIUY>(DANwE>3+NcRhLKsH#%Hf0A z`8z2p;l4$A39&oQe+ymb4;Q_ctMxnw*6LGR>G4`jYx!_O#fHDq`6Ez!rq1JTLrlCA z6oK>00*j)-zqEFV6j|{^t0ml3A_^a|U8IUqjVTYFW3#{0$v)HK)xXZb8&C&trNDlw zS*9UtpS6DOrhc(56Zu;vU3G@lQvfG3K8P=D2fF>+XXq>Re#Sml|Kcz4xC5y{eUF@cgeNY zG<=z#4=#H&rW@fV34@gIw374UAYwAMt_^DR`08zX%QGqh?5!NaBg_VYFS-IXLi~M> z%|GW;StC$&UYq1;{)I?q#DHBm17A~vpcu4xtsWZ2rps8~IU;@I#L0EzrLH`4%}+{! zT7BUHE8mK@^i~qDPGt!i5!-#E++8RuhM<`I6mu{#rvy1K8l??-9MVxS$q1>a;TINK z#s)IpA*l#s8^hdkui?HR5mJNriif_LJoy6BbeHz+Pau13>@%ok(l18Xrl^r4tee7= za`!Zy*|mjHRjS-;UdFRti&M-@y#jD*POJ4gxeh}LE}T*xuoFn`Up#&@?jn7JPMS4+ ztCAJtE+6ntabu=yR3g61d0gU(HLtX}mQVz~bjWHFE`;fK(ex#at@Xm7`RzDPr5#LZ_OLBleOr67? z-p~KAQC!^JY{MkWC~F1@?Q@?fiOLn1!w0@d>!ZQgX0|tp!DL&-KWLDetztPHbx12G zDmywvZ}c6p5J>4mnL#O?)@q=lc`GLiZJ9J|_YYYT<#*+AKi^pyCY8nFm^SIETQ77w zc!fk+Q53ZF+SHZwkr=t9rSk%?_#PdZR^;82DppR_(UP2;l4ChaCe;oAU4`ZfNf4JxS-#^uyqDm!-ouV+IW z-`Vk_2P->%RZAI|GUhFjb*P?pt$+00tt?U%!r?P^U6-iw_@)|ORFw}TIU2k2eI;3- z?rX*I^L$1Zc^_MKbirP^{*tS%Ib%W4MW`6Za%EY3kl32rcr$%7`+GIkTZ!Y>kKipq z%+TwCTocZ=QHGw8n^EINCXZ)U$FkuHhg5IQ+6dZ6rW5Xc}zDpb?JL zzAo8gAni9^He4n>Hz5Nv0a>m~JY-g@AHUia6^+fE+df^s)6X!4O-_K1Yn!p4b?`~i z+!Qt%6>T_ou-24y0#`51i*wDmFXo z=J%z?5_3ekU>XQcyg%IHXgL`p(X}jc7t27M_Q?(E7M}|O0top+HszxvDYh;9N}H_>~KXZ-1``x17qGY!(ph8R)>h(4qeW1n8z zOzh2GBI+Li*T>Q`=kIm{#RrIQcRv8 z>-p51(gEbpxQ|>{pJul8+q=C;BL}K>eBV)BJxKCt+uffyAEU2v@2F&4N|$347&_n> zbI6wDi$NC%6#L?hEiX~HXXEzO0m7Q(5OsYopRg>Y3Q_ww7E5+=++y&%-SzCR~Pp9#Z3nm^uBt zvy)8^VkUvnO#r~fE^2+m_RU@G_iT^*36&}r>ED)+l^NP zYf~FTbbsY_+;>Lm3kYWvH@IJXwN~`gnWzzz0G>xFf}4XZSG+mM*|YP%y)d^+xoNoE zHrs@T_E_KJN$#mC<=$JfRhw;_)qmz(nk)0-Vu`z5>AiBc-P|99^U7MHI5OwvM-IZ( z3Dobe2Xt%wiV2#1_5&)`XBF=!W%Q2rKPjF#G-#~ZcULUwk+>1m-}St~^>(2AeM6!@ zs8tvyT2UF^nq)=(C6*35M68z8GLyT2u0-Uz{RfN0!aS`4K1Ewa3+z30$~*3o6hBq9 z>ZF=WgvtoQ>IQgNDZdx}DS2}^-;B^=Kz#rH{kHjjef41O6d_a_=EC$0lcdQx8>tfo G>3;!!k_<`! delta 26209 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 PgSd}NVFT3(3-#Xsi?O47 From f3dfb9c6cff8a37e0b398cc9a4af2859d52b4188 Mon Sep 17 00:00:00 2001 From: Melyn Roberts Date: Mon, 29 Sep 2025 11:10:50 +1000 Subject: [PATCH 04/13] Update to version 0.4: --- dist/aemworkflow-0.0.4-py3-none-any.whl | Bin 0 -> 30315 bytes dist/aemworkflow-0.0.4.tar.gz | Bin 0 -> 34991 bytes pyproject.toml | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 dist/aemworkflow-0.0.4-py3-none-any.whl create mode 100644 dist/aemworkflow-0.0.4.tar.gz diff --git a/dist/aemworkflow-0.0.4-py3-none-any.whl b/dist/aemworkflow-0.0.4-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..4faaaff261dbdd88f854e5f1cf257c3ac48a9f5a GIT binary patch literal 30315 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 Vr+(_Ee*T)z{{!ti{6ql20|4HA^-ll* literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml index 2ffc9e1..67e8b55 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "aemworkflow" -version = "0.0.3" +version = "0.0.4" authors = [ { name="Geoscience Australia", email="toolkits@ga.gov.au" }, ] From f6b5fb988806c0643a3924e7b18b17686e08c159 Mon Sep 17 00:00:00 2001 From: Melyn Roberts Date: Mon, 29 Sep 2025 11:14:40 +1000 Subject: [PATCH 05/13] Revert to version 0.3 --- aemworkflow/aemworkflow.py | 2 +- dist/aemworkflow-0.0.3-py3-none-any.whl | Bin 30319 -> 30318 bytes dist/aemworkflow-0.0.3.tar.gz | Bin 35001 -> 35024 bytes dist/aemworkflow-0.0.4-py3-none-any.whl | Bin 30315 -> 0 bytes dist/aemworkflow-0.0.4.tar.gz | Bin 34991 -> 0 bytes pyproject.toml | 2 +- 6 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 dist/aemworkflow-0.0.4-py3-none-any.whl delete mode 100644 dist/aemworkflow-0.0.4.tar.gz diff --git a/aemworkflow/aemworkflow.py b/aemworkflow/aemworkflow.py index 547795f..cc1f0ae 100644 --- a/aemworkflow/aemworkflow.py +++ b/aemworkflow/aemworkflow.py @@ -72,7 +72,7 @@ def convert(input_directory, output_directory, crs): @click.option("--s", "split_filename", type=click.Path(exists=True)) @click.option("--mdc", is_flag=True, help="Export to MDC format", default=False) @click.option("--mdch", is_flag=True, help="Export to MDCH format", default=False) -@click.option("-egs", is_flag=True, help="Export to EGS format", default=False) +@click.option("--egs", is_flag=True, help="Export to EGS format", default=False) def export(input_directory, output_directory, boundary_filename, split_filename, mdc, mdch, egs): try: exports(input_directory, output_directory, boundary_filename, split_filename, mdc, mdch, egs) diff --git a/dist/aemworkflow-0.0.3-py3-none-any.whl b/dist/aemworkflow-0.0.3-py3-none-any.whl index 413b912b9f8ff55517cc8e5fe4c30716927d41b5..bdfb72f705511610b94a5cafd2bdc72aeb43d661 100644 GIT binary patch delta 1606 zcmV-M2D$m~>;dlV0gyorq6s})`d1*}n*sm;w~aAZ&O$C+v>P z+Ezu(Y`xi{ka3D-i~9)NFA$Ri+7h#A&G{{(JK%_g zYA%%#Dv&Mu+4L1g)q*|;3W;oS&kx)WEye?~#XT>%buV@L**dDYgN|$GAXOCysl4@N zf2&X|_IR{PwYIupCC{s;q9IT0bj=znofA2`5h&9Ke#ER$H4RN;kPv9yaaY%@g5bqh z*+XveqYb3}xHv=Ta?bby{es_W_rQ7Sga)i$V9Mh}S~L4@ySwcg+g)q9rVjtidjG?A zcgyt#V;zh|7I-0vA;A=eSD?G7I>5jsf5q$2_jg2d9=e`zu=EZ2z3ex8(-x=0;_P?n zi>1F4np5pbAYKB+39~F=)B*y<39|xZ?Fa(J36t?`nF7TL zlZufF0d7+X#R)xI*N$YH2$NlIFMqj~n@SJ{;M~uGX4sd&0U!ioM}S!p4oeF) zViPn1>FMtz_K|$f9cLYVe^qr=4!U)iuIF}GKeG(>5M|lN_`v2%PBQFIn%gVh*zlU< z=esO8cF~T}Ww3bQbnO`18uchusf)iHLJa?rzhE!#7mpk>Pwa1bd?D=&?HCYy<9`~u zsjcr6JWUoQ_8}W0Pr_-8#!2dpEQhYk`)Ypi_|p3&MRVWo2+?|~C}1_AkZ4*zaamy% zI$8T9L_0wcER3c}g8K{X?_iqY(7%vi199D(F7M$syxrA0RDFvHbY%BTWr2FKqP85) zxG~Ha!BE_L+h7}q3B8thX*c~$mwz`6$lBd?C8}*UMI&x>lsx5&U>29Fq^!EJSRO`_ zJi)wqb%!!C>i~KY*+XWhfvk}U%~nHuFr$1;Q*q5nuBz62Yatyc2$cZ;s*or6HxTv+ zOydMlj^6t|N329AB5@?qzBO0g%}YWA#6T7|WeWm{HH@HDvt&?ej1}1TNq>HU+5gIj zS!Bgi>blZ|gdZJ~?T#YFChVjdCTC3A$)1QvofDW~0?x5-@`7Ls5d^OzMF(?{g*a}~ z4#NGhzCI$sA+L}vokJBus+W~vFziMgd5mNz`VGA2Ev)`7@tSw>40?w(d~aKBi%6aC zp?oYk=aQA{TpXj}(KK~2gnuH&a`@XwclZbXL48zkMmyM_htC$4pr66~X&z<8mX+Tj zRwp~Ho010SJ`XD=H7ZYsD?4(LpYyi5I`hS`TtR?di4nv#Y=wzFrPW$S|(6NqnJ(4*;*jljWRiro7ix8HeIo zfAIEmTgAplVlo6!Rq1t|Jl(@s{M!gLj9ClrpndgeFCEWkVcKUWqDasst8fN1WUd=7 zIopj@7_@HB^)ufF#dJ^t#R-!abxi`r36o}ZSOUcflfZRV3B?ILTi1?cn+TI0c1s45aR2}S E0D6-N#Q*>R delta 1607 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 F{{fAlmI?p> diff --git a/dist/aemworkflow-0.0.4-py3-none-any.whl b/dist/aemworkflow-0.0.4-py3-none-any.whl deleted file mode 100644 index 4faaaff261dbdd88f854e5f1cf257c3ac48a9f5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30315 zcmZU)Q*uy?XHv#|#->g!wDS-R-!GdOsF0xA7J zup=n`zezxNb6Nl4S`mSOaQ+wU|G45mEct*<4|oL2Q~bY6>{Rkjf1HSL`yf!A|hMGuI6wgPBb5i+ty+>8is5uP^PdSndr( zu5b)tIk`)p>33f3DSW7Udl%wJTWap#6-%P0N1eB2`^fZJhfg$uPjyoTz~~kMD*-EH z2`bYhQ`(gdhDH1UCZgInok6kEHRJ>&D+Yj>)E(F~%r)w21SF%FCHp5a>v`LPgX|FN z&d3rDo{VX}*$|iP%e2pv@8fF_wiFRMD`2)G8fpk<9uO`J0t;N@CIc$2hs`QJuw=zN z1Nv!~HJr*uCM4ZB%2KRZEja{$Y#4D0F=C)zWxpkL=n|5_S|%SY;y-JPwi6;D$l@+Q zO(wN|K3brSE(I5bMoX`CR7BWDWFG}>9Ob8Ow`FAi*x;>fkBhZFBUMEw%;;`0rPY{z zb8nVuYV{ei>Y&Yg4CQNBVz;JpRXF}g5lRq%LcJX+wJets7Bz8&l-F&83rw3gK?MI7 z#~%N3^bBW6M4qPl4C|Y<6OlFjS4Xbp%2V_h91Q>#WS}&-#hqUr({v|l4q;CAqv~MGeLlFPeyiZo2?j}bm zr;xGaqS{Z~qs|YzyI}w~w*hKu2YpqLxY72QCIRJ}la38W9!>d*Yh(+r^=^cyFOFzt z;b^G)OSaba);ybrYbaeuS?tMFWK~+x*M7fe;eb%QBb~CF zcj&h?y@5atn6RedAVB4pdVlQzS+;Ko=~vv~+JE_;4u#L&XlTx;p@zNzP~x{_e1Y)Y_E(*ki1y( zH$*Onn8HrHEjlkh!IjK+Hnvwuzs-1@dt~9F~f`4U0CU`^!+} z1O^mACDM+>4d3X}foD`Grhb=wjN?ShCYpF0s)P=VC%YR!5i3`)tNGhgmXB2(=^h%52PTDjm=owg28$~ z#ng5K=_kAs-r*-3X^!e>6y2|&BScg0ex{G#@xZi83;=c9305cbpXkTy1~$~}nnmNm z^wmf1&0{uM>yYI>R)Yw(K9+QQJiLx7 z8o|-nv+2f}0HWcIVN^WUQ9~RztPS7>Nj-lde*qU@)mr>%SKttK3L$=CYxWa7>1Yht z6QHA5=^?^J@7I$4imHI_8)A|M{{z({(oZM6rMC#w84$)8>mLW}`i=nsfY7W{!I7vi zon`s3MZqB04n9yEAdJCVfu>mJ>t3P~L!KAJ;TYa52)+Gg#JhEMLhyHANY3UEzrt!v_hgz#5Mzq)q!?c2biNdNZVjTAF{fv#LEPHu;=hDyE)$ls4%=49ap1*c%vSpVVbcbrr~^ zdcZcRMkF<`RdkS>JllBC!&0Pp4w)R!a8Q}1fYmKR(HUb$ER%S(P{nW%2%kDKCZ}K! zdvaVdg>n^I2=;cM`d`ipB8cD;$(O@NUWdCgncui!JQaYnN4^X zqBKQa*b`2&8AVm7D}oFxpJrqijS?Y;9HN#pl^>z(0hUO-z^dH8Amo4$O+p!RQ_#*X zTti*dYxnyhI8C7?Yl5t8p#rHQ)+7BU9hE?4ApX<*d7RCrL4p4~FPki3ki z1TV9m0xn&lP!3?pFuw z+6QE{w!Xvv^}DcS(#cWsH{J%klGQ1E4m>u32ZTobV=Q2|xNac@x3S%GFUx8e0@kER}pL``?b5quv1A@76Tm&jM|@ZN$ZNBW0n zU?CgFx6T_yCk>$&g4NTldMmm1NkGG=fN(~do0ynY|DDj>-adNRC*|E3YdM@=X$pst>`WaPu%6ScXR zW?p7jd_{;2YBt$GEPAR?MP908Wq{sXO)FTSO5&VV+1|FQdo-hXMPBD1QkxncLya=0 zAo^Hl6IiQ-KBf^?rrN>*nHgqTA07nt2R+`T3nX7izRT_IsiFk}S{-<@dbS+X(hA}` zA8za>7~XoDjJh93mTV;brkN3Dn$sP+2PVH*etWxhW@gi5fx+_90A?IQIe&mwmDw_g zi&iX*LaIfaC6EWQcpjRCBh$IQI@0d(RJC9vks)G}_O#za6ir9^U!y7oeNtVij2MuP z=wZaq9#ef7{H(Qs1V=jiwbkiU!KzJa3veAH{zPHn96?oSNjR8RLw1PzyeUS~jof#+ zy$O7Sy*t0SB!78rTt@O|dKb zIN*}&y6FTg09qgBi3(lI&~Iom?ieg}2A2^{3C~8~(4LY1J0N zbV74CW}#Fv+qt?6>%j$B9wRp;3;7goP!{rOIO9g8W)e8< zp;GQAp~8=4Bod5Twvm5mgM%t*RRn2r8c*m$3Do$ylgFCu9m`b@xLO<}M4J+-AN@q1 zJa^RqE%$?tS`5I4EzvA;HS4euMV~art71-7w9Ge^whWjfTks}LG$QuG2_=$Kh0<2op%Y647h) z$zudgDH^vRxpQQ>Qd2amUUnOgQEu=lysmvd-4}BEI&aLWl8-EBI=|SSWmbTkHEWIw zrCDaF0ybCujpKRHE7L<=NL`))SVX+-h0ZD3$|M^;F1tbv(Mu0iLT3AAGJEM!+T*Jz zLCc zc_acY4;d40oy{{(X-`YR3Z&X+u;M;E9?sSIh63=|6-ZYO7orJ?u9k=H@9Aujrr?iZ zbn5Ys88v)x*^>>8ir5Iw(}~-;?cW4Ov^YE>*WJ$hEgGevdP0w8l1{H@Pp>fiJJONX zL-f1%#ogCdfG6ekZS6iT1FFmIE&WH|{%0lrzodFrG5WG|R)l~*A|_|GK@i}nKh%|T zbS@~7`PJ2MKQX-FwLDqk_CcSIx@Rawv-K(aaB2lTXuBPuJ zM51)UYrCd7rh|qVb8!#1*127Lp-0fM*YyhHCZDrS>cCptzCGTSa+13Z$k({QP~}KK zn3uUt;4gad``E+6#qP!~BmXKc?^^I%pjyw+$$ZhxYwT;B+nb)~BPYMbymVdr+1u+I zf>-5+o764R<^v<8`CWjmeLC)NZ(bJthYzvuiDKp$F4PHl$O``B$TceYN5h{TRH{+(YKPG?zl!tfBZxfe+jG36j8uMIJ!a?S- zjtnW7b5rTl9AZ*%g7+r2KbfSY^?=$%B9~aVS*7ZXk+-@GcJ%9_u5{=eWFb5Gf(@HboHW8FeWn*?JE zIY*Q=p@Y*pW7H5}KN2FwaTBstDAERw@V~grCZd|K(Ze|LVT?;KJG)Y7PNd51F=7QA zyR*<(E17#sS9x&=2yJ`EQTunmV$~M7A_*KQ;v4&s^~C79#*pi^jvu$jX}gfJ=Uj1B zl4Q+aT%BM@o9j)uov|JBDtGbD0nv!W8vlO3U0@A_U@^wY6;It~>Tmnh5W6civM7yS zib}0mgh#-dmjB4l3gEpJ3$Rqw#3*qr3QAnuFjrJ2DTLTv`zzFl83fOfjSze<@^0+j zkOy85;@u$tQpXE%J018V0!Qi7UM;Tp$JD!)ehvyf^bdpe{#tx+G*)L;v zl|0@=H0#vIm}t>LNiQEG3NAwHtE+LOdH{<+aWYX+*1eiv$#a(#I^!0rpv9DsV&TgQ z>~4vzA~*lgti>i9WgmB*K}Ey>qaBj-XG&F(O#xav#3ut@E9A4opMqSC-30yKEP^UJ z$pk~Zlm>;{H}A&7yTXqe6DIwT^N?FFLs+9XR5Y}j6f*0DIU$x@s}3{TinKRBFWoyh zn;d}&Mi_Zf2(A;%wr%JZP3diWBWNmljrj9?ry~B2x|YCa=F#!Cg&4(bn}uAOxKhj| zTV)NtB%&KLkzR$ZN<(Z?8A+NI(!-9*B+3mo>SG`uH_xci$E~dJ1%h^fXfw@S;u)_X zTRb*Pi*G0xXkFX{6bIbj%im#4c>XVq=C1Gpw}+Z$>Cve(6K3SLl#yZWpe5#CyvDax z{5V{QZVg%!-N(TjigL)UjEg>#qG&naBGW77Mn`%L+=e0WU#S+-tFCD;2MqE?L{ml# zs^nm;;Xh@o+Ke1nKU z^xoKM4%C9;8g@+MnmegbGLPEm!b*AKLkb0AB{FOz+St%iR$K@OV5Axj=Yu5V`zJM$ zROmogL+37oVN^EE*lBDAu{(W<51deagDl})d=qd=B;2N8lyDyNtrh{_0Rd`K)q_5C z;UFyVp*8jtSl^Q3tip)|?+Wwxbk9I33y2fJ1w8J7p_vGQ77haBB9DjJhdYng7I=li zKyQ-!J^n;(pBpD?~X z*6ki2%^v2N6w~+PnqVM}VAKEx>GgB$30-XN;|&)fQ6_YS_-pg-jOv5TSj&1vUC!8J zS)#0rQ;Imhawc3Iybk$PX7{Sx!&pfLNC(2csVKFAMp=*Y$0?U=@Y;EEu>$un=C$-b zm#7999(FJ~<}zAhYFXQQ@*AStSTjpB-%6|mv5Y1P)zUI&BbV(#f zuBmKaAP0>)_0fh>h+Azx!-U+qM{|Qa{dw{e9W5@xyl!1JGHhrF?d_OA8t(0tI?%7Z zkF?mD6X@+M8*@E7J)&3nfP3e=W45j^%;Eq@yD?elAa`iv(BSj|e&q=wAOQ)0Slk)( z0`Z1>Qqb#={IMh7`i9q2a-rb!;S(adUxgGveHkkxsH z?E<0-nVO*ge$rP2?xs+@b-#sFVI;21qtK?8r-D*%@SMLM5v3Vf{Z3EO-Mt2+M9sHT zoFIuUB)aBsOlg1`G>v^YI1Z6tydd2|6Hq*{=|i7vna!*$@5rmPnG@40u%Bnsf}vlK zvP|vlaD8UM#K=36`HXL1*nu(*IG|DbOcKgGgoU#Z$bsh=r!70<5Lf+Gx20JXghM{ro~Z?H?kJGE7oFn-LlVZ zM19XASEDjrcye$xmpyk(z1}6w@bE=yITQlIG52Lg;#!e^#9~VZ9ht>VQHo1~B7>*E z-u|pJc7mP;J$lhH_%AsH4T<6HLzUa0%@j=q_N(BEeB-8 zPJxTKQfeXJ4nXOJVZ5*0ZsF*Xy)C?Ky_aQClu~nnaQ`0G*7&g|Db6^wTh&oveVY|H zASZJE%M>tme`;}=AqOq$Me7qZ11T!y2-%*x@0|Lf$r7Q#OYe2#TlAc)3)XQe2W=@J zLAwa;$RN`}i&iVGa#aCSmZc3T>Q+QQCz5#(8OH3G1pgv=DXsQ@CA1Kf@&VB8yCBA3 zMNS2=0bLF&d1nKKv~;^LwQo|?8YHOzE1qSU-fm@xN^m@dMVr(mib_7t)NlnC=VNS$ zN^@Wm$|Uxr@)nbM(E}``Un~8>rE6DZ39S;V{w;=OA6xY;7f^0kcZe!Eb(|1GXHA(_ z@sW{xtq8FFPY@&b`jb1B(4!JoZG(Z|nAl^5*O@pZ93!gfG*jnDCHt!FA|+d^$Btk- zu~Ick%+TRU&$av?hVU^_Hi!IZa=0ZNU|Fb}so57U^+Y*gQpZC%b&S(9EzQaeM(6w} z_gd+LB40Z>l`WT4^~gfGa$KqNcAR#EG1TD9LwqTS{&%nj9{%sf#;O{f z^kC+};wh&bTP90h>p;w3#^Zm(4Fe?B#zrx+xNqt2-J5uv-DWeLrN!~=5C{+jg+q+o z`N^W8{yZt81!kk~!+ng%chc!O#lTi<^dXS{v>6G&&=%gx;z(ao=#(arWcpvZpf7n6 z^J3lCQh-w$p-YSfQqujBK{Ng1kHo9UMKYHo-Wt7|(>fdUFvLBz(9TK}lGDhIyU`@w zrMuvZS%zP89Nb~ScEjx2mmGY&#PrD5C*FgN#k=BE3pc{cI3*R9_m>~T7yevAsCtln zTKvH~c_qox?iw#$t!=JI_{%d=`+lszeUvU&#NG8=6fQ}tR!svNV+WW=fAdr5`uiz+ zZFj=JIZ?sGw^*2-+o>x&Z~FJZVub&J+Dos+v=+mzJav+1LzGrMx(n#cGfZ;+8o$TG z|Agg)tlon4f~6tI`Y!jAMo2OeHUbZTznQP(d$`<~^6x3+K&#X>(eQ=kGl01Za%{bYg0Y<+%p?!Vy_Cx}ce_Twe$gi}i5|c9W6^W}S`jf?l za+mf&b2{0AH$<)@oF(RMffPNohT}<+Nl%5mP(6~jg$NH<;JPK1ZjbLOC=~=HSYy$yeFR^%+MD^HZLT_zn`$~RJOI4$Xn9ad5ai@0)uVqPd*CBMQ zrcf!`P*--C&FR&g38)Wgm)UK~F#63S=lJa5b{1(7U4!I5i))>t9A0D=9|Wu8{Uqt|r&OQu zcrT6s4GY5*tEb>3QE|VY7l~NF8VP_Z5-%;e)rI^SRFfgrQLdp0E{ne?0q>#-lPel4 zxP4!!NY(6~FqQJD715+A0P7_|r}bj$zaURJ_uX-$z!=1d{l-OAu?pS)*1chHqEt8o z)v<Z6NVHcx zGAyZh*6453hDjI#RZ9@_V|(C*C8x!6CrtV%G{C`%zr#MXkzMJomRmx{-` z2S{HpzBf;MFVcylo0k?5J!U)|mzXFT>faizjlc&@@XLs(?JtyF+#YTXxqfJ+zt6$> zR1Av^e=xTRhm#MhX@4P_NKJ{P%r;7aw9y?WrIP=l$9>b=9I&v0EHJi%EW*wVi+i9J zNZZIgd~ddSXeg+u5$;>k8gHNDaQI;dWx)zx@4~XJslumSM3}^3Yy7WG`s8X@gV(rU z4E9}$;DS=XB*`r&U;|ZL6o^)adTdCus0yw*5C?tRjIoV{I-z$9^X|=s^6pE2e*rF+ z(1X{D*YHrW8YN4#6oz-X=ny}+BvVV~V;fWD&y$KezE4Vvg@lySR%;eFHu2Y>%kVV^ zvVXAlCn>kM^HDed^Ojq2ym>uqY2T`p4N8AltDK$3}#o|o_$(3$4qr95!91T8KhEq=(I3g^_#pVbxJfSF1XUOL8--(ESMbq4!yy$2qQO!ZM=Q5d8s;|tx!vNFaxA! zN|F)991KrTTA1k$jEjn(PBwhEH!jd`0@Aubw{x^^8MY`EN${Y00M&H z0|LVSU+ySldpkE%Cud80yZrEG^8d-4-ncknm^ra| z<53+MDiBvPn^_A`qZ@hf>(k|viU*6F!w#WZWTBaS_yjJ+TtJZpJj>U>I^ zBKnj1&bdshc>#`$n~3O(2ktA~!xVWDUoU<+(?|x~=@<}42+l^k4r3LMNjP&~&dL33=IzN)jmcfUe5dRMvJo0HG ziS(aSN=g!?exk~=KoG>;zfeBxj&_(foz(eVS71~Rgqk>F4pHU|ByuFOjF$vO^=ZxI zv~iALkFz5&at8&Kc76UsUGtptfisYL65!(LcQ_a5?g8|o_yl0!lzDhF0O|Z_!WPsA z;0nCZ0fxDmxXR9^e!q&U1h~NvNM1RfLlRV#>2RzeUKMYqPS)sXd{7;ayXYjaMBXku z?MNFmQ*~@!zELS22|OQ484Fm}Q1(NZK9tD_h;!;tJdvc`0B@c$bzP;hl%P`?$1K*h zRm#ygi5-3Id9MY+ir$cg1l0)H3E+Je^7e+YK|VK5@Vvb<)c00VvOkJv2fB_xXQ7Z5 zo}`SKo(;MY`z=rp`DN{ak52Yn)V}YnaIwu;gqU0$bqr&HD#aD)2s`3p|NF>m?%Do3 zb8@@fgXcY#<>l6bVhL-2waL&@0D0`MdG^cG6%W=bAEugt^i-?94vHiL+>TExUrpRF zd>eH|aozV3vLe48`>q1Bt}>7U5^ArJ9ICWK6ioftFJ5zRHUcSW`4o@FmdEtz(_oG$ z4HF&(O=&4r3!K_Gu|)@7P6dCCBB#&iaWV#8GtOB#369SD_({mn&i3j{(PDHBgkLcB z;wDn6lJmrYSqSudoNpn!qG@QHYD%Z6PQQUEnB>!kR+IYTC zyhh!CSE=k04%=Phx|G~6AMTDVTZDtxh@m=5{PR&+O+;g3u~RbPW4c@IDc4a->`~@> z{P!YkP-klE?uvmMTJ&J-xE4f--Ujb>3}(OrU$d{ zC4>l(M6(h;neAal^EHIT**B7QY6CyLY)uQsdVm3u;uzB^Q@c1qYzgZ+0qU72Ik)S0 ze*uU#v>QtQx$E8pZqOY61mYRwQdMBV=>rQZ|Kt4!N3WA^vpYABt-oEgz z9pe?|A412Hx{Y5Wl$F^~`*cZzzFuXU*9T zTAR>kTDz#lc3BXFQzmGqTCFiY)3T@C!+{E_7lw_B#Kgyyf5&~EF!>li6uI^2Us?U^ z-oNDrgd{Lyijc|%!_zd?HYXd)tgF5T|^_~4A{a+O?Oe7)UlMcN1xR#Nltu%fvm zvBR-v8}Wo1qKkYN&y?c<8~gNJf$6!<_;^Max^VrB9399xjf@j*r~;~S@or)^{*s&o zbwbbx=b?%k-2Kp%Z{bA{`~+cx354e~^AbloEiU7goRmgJs%MVi4p zQ7b>7nfL22h$g$tDuMK@J!|BQSjr~YmM+=$J@90DqUSzP{0_>luB#!ybO3&|U|F*F zGnFxe5Z0Jg@J&1>WmulVZtj=+!)emRzk`!3MGClRF^lMoyxD+;6mjqJ6ntl(>#(8>hRb^ZOF{puUOVPI4@CxoI=r7=swtiaW`wiBtk%+}UaU$j2c0edKFaKw^P9>Dz6drMO%o+AF6#W( zY)7y_s-+Q>>MW|6YD2d=s{IhaL+oC+4aG zKXGOQ>&F?DaKxxUzh#aQpfES5m-J*USk~S^*TBIYrBhMtl&_CDi!$A*@FIg{ey=5k zdrL0?6myvYQ`_Pt)~)?!$9=#kaDLZEB0G<r@$me~r>g%RIj%4^73b{U_2%k-Akq3)|lUc{u8p zfON`W;UHYQj(s1Pj}lm|Sb+!Cw%`WF?{>m^cUm(pFV}oT#lq&%TQhR0JYmDoc1e;_ zD)b6SRuln&5=PsIz3(?Q3SICbRk`RI95r!Ec}Rr->+iM7ec~NsMU)&zK}T?iK@Z;A zg!k|aZ9+s?-pS{g{Bv9Laf&%cFbn+!O~76KOk@2@W9@EX-KI~E6)YM6NhR%R@W6S%F)(aQRqjwJnR}7P$t{UW z_L?}33|yl_(gkMq9#ub22acod{0Hm{rkG|7V4<5P>FNWHCl5dK^=E@Y9 zhc22R!x%_J^%+AlAwBlm@XQSzgQy%4wm}%O1I^>cr23x&1(cE~5CpF5cC}pRn-TRu z%R|JX~;+6|Gj63&A!Az0R>* zI<=8!UELp6*!gB|*B6>qY`Eqqt&Tho=Ige?UNf;?bh)(~-I{QmwDv6&x`Z|+mgiM)zwsu%_muBWk+4zY|u>C^FOGbD~SAc`7N*>q-2b%oT>xRoJuUW z#l^ zmH2E?9?_Fof^ppXq8gl?YV>bGZ9v&^Co@ZnMhw{5o0b)LxgZ zhuCWjBBA(Mxug!1oU1Kz&7wK1U|AAE2Wj##nAzh$0$}S#YzHj3v#>t`bGf?spR*pm zP7ws^m=_mGZYn}o;w1A|`hx@u7wSsDlm0xG`~nJ`EMM$J!hF~`@ciTqBdD99Td+#2 z+N&~ENcJ0(ce&SL=Z5m&+zI*wpZS*I=2X|hbrgYK{r-l zs;Rq!y_3uTJ^7&H<-93{@+pazocJ1p=V;0XthBLsc6aVqRRT zn(RxnuJ6-zPLxrWFGr^_>=4Uxd1q;9iFJuzaCFuE&=dH<{<}<(&Uf#rZqN%e5;B*U z0+khOW0f5Fr0gCGMP9DV{sYXH;=6vnC~(OwOx2zS`@m9)|AD4GM{`!Gm#6V-{{r=E ztqha}57M`9j}v4qUsS*ARRGs#stQT)-o{#UP4^_B|-ozc?la|YWYk#kEl@lH<34b?#>n#*%H!+m>@D@nzfc@7X-nilJ z3~u+k3JkjLngt@A*ZCJlXL_T7@Al6m zoM+T=yMGutT#@p*)8nG4RgsEq{zVgz0lZY?>ib&oGr?t*y_{kv9Ls;3Wxk&<4N4C= zsxS#zlz=&d!Bo#DkWP_nTr7dA$K~rd9Wcy?qW3cV3_=)+j}lbnwJJu7_8nmho>@62 z8Q)D7Bnh5TruPmo{U(6mftfIHtmBEUYTCI0DTDc~25u-2uWlFm5uOa*6gU~=Ex8rN zRyD7U&S{T!;+Nwx+|{#EKJ|qFroY)8(V)6m>@pzak}i_ zzxUxg9W|y zmCYHsSR(e&BQNpJ)XIG^Pc;`Gv^6-|XLHShW9Ta?dp}yO^WsUgSRM@4% zJh_&_xiI8*f-aDcJixcu;vDU-G0KBk*A$Qa9sSv(_S|H0d^94GZg~CkI3>xN|EW)u zxuMOGyWu$drsU4yE3eTo8E{2v#az0jY<=ArklTX7iS_|!K>VjB*+%z1L%#p-1 zxfJ>+=(GA5@)Kh1pzoc>Z>-{-%ck_WSmg|R<|!8%^u&eDh=THQPu zCj;c1W}n1BB2_1Bfns2A;>HS9; zEQw!|I(h`BkoO*>5}s|A-k^tLeYVALJa1hBwO}sAJa64WbWgzq7OY;3wR)eu9W?C; z*b#9*^Uu3@T#mJTa{84lO>8ua858P89&5C)OV5rVSTsQd=_u#Lx|u|qu8{5MTYD_^ zT5+u!qnEom5R;b>&2Qq485m9ps>eAXhD%)vROsMuBO1L`Sd%S}x0gIV^ z!+|X$w`P_-lrZKz*m_r|Z|+*4AXm(oC!PoVgWv=?>t=CQR?4RSLn7}1-3-D7b4}U! zZ~AoG-Vbu-QtYR5JkH%7hfO~43pu>7be0Kc#V&&84>0#iWB}5y8Ow2;?=$!>;1Wa;^X@UKsYq}0WsiGD;)9t5GYW@ zz>hCX0gTWv-a+L+8~q?tQrrC?xS9s!3I7F9*lH?!P*@v-0C>9k0PtQ(O@o(X!yp(N zrGPLa&hq}YSQxAmaYc#QVK6lDcNt^8hKuwWg?3YJ2ivWlQDaPsyq@<2d3V*%6aC>k zVZ}*&mZuL^4`hwXaB|5riL2-Gg;eL{20u0HmP`7gZr#wlMLWks?qhrMR!IrpVP1oj zQf_vB)Il_u|GX`XgR($K4Q`UFHgQzERgp=ImooPGJJ;9YS3aX0FBSO;S~U8>uzh@w z(Uw#7NUg~3Zttl&8Lw)1MEELc;X5FXtLFg+N$mR&q>hl?6jg|3Z4emE94xFqVd%zi zrDdD}d=qF_Y`#}sz?;AlxCE0aw@UsJH6>Lna9ry51uz&N}kN4#EegCTEeY32BcdKiraY9L72KFvnz z<$k#9s8f|-!_piDDRb(vK|ljoR1qse+mmrs6_(~ZiM1T_OFt^TISy>bdq*qHnGr?6 z0g71Hxil0r2!T^`pe1TTxpl}9?CtYF#cD-AO^2l_EMr_xx&rpq-~FA_YENdYeny3D z=q#8;vFB3A2s}#z#Z^bM3Di+a!YS-_?df%sK}6R@UxIp~)F&6_=cvc0fIy#UnA2sR zPcDk57^L%bPzShyg39cWoWhyHfDt_4o1grk-;~!fRj6+1mdI&ty1&S(4{y{jcI=~} za)O{5xg1|6lvpShw=cZ$3(8r9m*y=)otyO9ty@F#Cj69gU;?9#zE1UEQI%DAC_yJ` zUDWl;ZbA4&(JIu&7MVkN7jhfL{|F*5-^>K$(Z|f@aV;BuXzTlZ749!TCKU2e%O!?j zqk*Q|nJb&J)*efe5vit(gihSq*?AJvwFx&{AqzH+m)TvCp$4Rk?*x# z)cdVLpkIQ<0RgHF`ka^GAr1wPn&+@pcER`up+GOpm-M!GDF6bAp8k)O!rc&(U3-pI z{P!N90)6_3-Nt*e16E=_ue68Qqq;YU&k1)zN!2F3vHis^8An9t<6+5E0S^l!hzc&T zEoP7@KTtV`Dqn z7#rK%IC=B@Po3I*_Wa&+W~ysys=7bjJ#%+m_x-&j6hF`h?0@^_2Vv&vCs<%q3jYEZ z8IAu0SGKHssf{tQ1T}U1O(LzIVpQCL1vmeqHU!%*7^YflC=PV_%=v0!%eJ$wcWVDZ)x+A!zBav$K3uaI`s+m# zN*#S-{|iRo%Qmhcb^J%n2$^xOd)VyAL`wI9)*C%NC;htN9kfo|G=7DFLj%nh$C>YM%$+&}ft3Qo5w_)kw zTpi-X#H=j`xPdh&p;UZO2OSgmP0mT4DK?Z;oaW+~i>2S;xiksb+^IPEp3ymI@@Efa zso8b3X&vg*RK{&FXTp)q%lm3Bl`@n23uzQ{{YgRtPFjpM@yf9v5cvC)f>msYK+gPt ze=m6d$@OnI!Zz#pC|`jC2?T`o*Mir=7GS_)U~2~W@XyYx+bXUyA-%=Uy*sc-x#ZEy z53R?u1b}76a|Ba#x}>1v6yGHe_9zS%H9eoTx08hkZ|xLv|Cq16Xgyf>JUUGiH`0f$ z%|x%gX`3bBS}U4l$O|9yFt^L&?&@8fMBtB5Fhb7MqZmB0wES6Za{28fp!&z$%kCGT zC&JAi`%f+Ppe?~jaU9@ZiH+;;Lj#`}*wcTxA0=o}CaOW!kFQHHBL!VxlnxmiGz2FR zeRgP9;!67BlnZYYP5#+RtE(U4-pJVqpK2B~C2&OeU|yuXWiGLYA1Y|jO~X_V64y%#vjN)e~kXxIb+#JO!e2SdMx?22AnJmAb3Q->HhY zc3!?{tErBh;?%AxTLQ9S(c_V>N9z$-H~y#nS6qMT0FK?X>pa%#qc2H2NAZS9wsvy~ zKknSQmba-sGNL16e*zc=MzAp|)YnmbgW_Rm(TqN7b8JbaaihzoRB6i6F^!&=={8GD zIP&pifLRyLd7wntde~sz4fPaJ6EKbr!R9y!Qs30w$=|>BX&r98uOv25*Lo4Zg!U!X z_xZKh4$;BTu6Pl z*vr?dWnW`qGBq8Zj;|#S5|s#pL&PSm3z&&FlOJ6|Hj$LH!SLbX+WeV8rXJoAC$9!M zXC>bE&OwECQsjSY_?kSr6QU9MhA%>m(=8KG#J&TPS%JS7q{`W+o%%)dcHeaR7;c+P z+0mI=yvtxp(S~m3o+`Vu(gB5Xrm-A=xX(jN;uvFMZiNY($+?4JGg==uNH(5T>42s! zSC?&dF>qs=Nj&8}BI}Ji?|F`*D<3>}*Stkdno8h&2`ZW@H5ozV$+#K^>Q|>^O?S?p ze(SH8AvTTn4ElS>{}YoCcxN9I_A%T!ae;vF{~Gd^b^tRc2PZRt5#Yb#5*oE_71vrY z-eUXxF69NumP4SZDqR!mXmqKXX=RY7I|y}5Ln2sr68jT&j=HmX-+iVW6C<)QdDhM) zj^mf6Jg%;;JRChVph~62Dfps(oY8;siE?`7kstW^RN&1y(wk_&aVyB$hh+!5bq=6|dG*)Smy5^2MB`9y`Pqy~_P1UQqjqo6wyvVJ_ zh@&^4)cYQAQ9xR(es@>11JJMcSC70;M<~z8Z{nJoq4;2{%*D{??n8yhXd=>RSH|bXIP%Hmk}k72K2o&=P_?qHPK_1F zL=uw^;6CRP4TVwm`#5itAVEVQJ*4SC!j7Qdpjbrk{+!_)E{LvtYp!4q;@rhambvb| z(KK)xB21m8+dGIqz32Frh2DZmG}@=xSJiZ@^Nb1hat!nauHEl^QNMGFWWm|9QIE)} z5M~vo#b<8~PN@y&`fB4@dLS64H~?{)32WBg+yS*w(`stPaC5xM1wufzb6){MFzF;d zv;0kpcJeMQAMFiiqi>&*8>4A=5Eq7)7pM_Bk9)#T)!%^#N5CfEf3KHkE1Q z8v5o11Lgao@-}{O!tB@yYuv#oXs9oILPb__B*QuS<&TG1$o`G+_cdC3s5xJ-M088A zZM~tN#OGfaW35r=Xmo5Cw{~ibUO@Jh^83xix#vx3$iMTEjA@LIp5?Qf@WCR*%dy2) zZ!ya@eqOVEu@mhZmRRcf1|B_>R`unxu}KXo_%SxVk_akfYP2z4sFW_DW2Tc(K81IS zY!E#d#3G@d!w_cWH&?Zgg3wtqxQKR#xTg%P?QG25iCl;9`yl@7{nMA%fup;L`RAy5 zU;kqy3I?S&Wv+zKkrPzH#JCw;}kiI@jq%>AJ`Z$TZu`^L*Dw-np4S%aBdM z0<`UL=cK2}awv-koU{8BA zBpcgo31z&mFfOJ>36d_PU|sR{G}q8Ik)e83fhZ4>yWsZDfE|&0R(JdXtQ=1>a&-h5 z_(lioL`eX(E6g%~hbO(v36(gTPK6#S!=?!>v$KIDqvwELf?<~Hh{G=uk?$cQ;_4Z- znif)}f%8;c0*FYKa$EixJg)+jgCQ(4bxn0ZkesS zd9!@;q{Q;HSr;~dGfFX!AbAxt&};%xcKY)sTQ}iYZdaI~1Iy#086o>ZLgZ0>i{cJd zF}OC@V$Bq%o1DIN=MVlM_rQE+d-00D;~@SA%o20J6tBWh*;Y;M`z!(e1taOmUs z9B2Wx5OXZYb=y@Fg5}CPP|#z#8AnmP0~#SvVULTROUcfCuR-&tLmfZ|#_%!vqB_&5 z(V2AMiZto%7V%hBIQk4Fa8#iL8Y85vp5HvG;odj-W z?Jiv_#AP5>P(?12U6`2~U31tsW= z+v)-%h?PR2`(S;9hOiNJiAP8F{OrV#jvy6lbH1CREC7ZSZ&L{f6%qI8@^Y`|#7~3= zW=7WcNy{E@-gAnF-~|Y_+_(ID&z+kTosn87gUun~A|c~iF@JfRj6~dwLSZ(&yvwS} zv5fDhes~OF)|7862RsO&`tqd&J*0^q0#^isalqOL)yv>jN4g0xM+C^4b?)O_=ccGg zEf>M%lK#R44V}ecYm&7#R)r1%a#0h-YeOfVJK=_y5wtO8f zpB&!r*3S?gtC6tj)ydQ!%644XQP)V8*b#$#wDb#K&fb2B=5XwrR0Rt_f%X}GWg?){ z5-nB%4zxcZUa>nXCKPjodz>8eJlA1&+7h&4bvwJ6YEqTuG0$6p@?V|j8q%p4DK9m? zsPPEhp~Oxu_k4ZGC2zp_RfaNe!_r_hiG1Hgqu3#g>~1|xt(jLl1?W}Gx|+nCh0gK1 zfgpk%J;c4iN$q&UMWFsfEM%ZAj`Up`yhhg`P)O$6lV^y^cL)I004=giHjm9AEK2tq z_`fZ9PisT6Av6#WfD{Ob_%93oVZ1+zwf$wq=XG>dS7lIq71iJRD%|4%#wSZcD%xe< z$29>p+~QE+ruP9#G)6IJ0SOWoYzU6s?>_C4_p}h#b!8yB8J+TOiuatP^+YHt$hivI zn^%j~T26%3+b``@os+FC40a{q->2^*x6(Iluy>o?a^SSN!anvfR{|9VjRb-kcQSBzu0hZeyA(oN-i!7fqZ;`2GFQzm*!0D_Hm{7SZUeyN3EhN--LWpuJ+>ku`SFAh*iJ_`i%is|=(o<)o za&MQnFT=+9bwYXBiBdR>txgwq=)*s5!vy2sL|*PSv~9%(Vn{9f`IRhi_Wjc~Iy>{LczVTG zg(V@u(UHfr9ztQ1xHvf|O}a8><(H#CHC|8u2K=4H^FV<`oZckr-g(v_fYrqQb#l^D%X2t^r&34eSRzSYPPcL;*Q?uJ!o@-7B~X)tO-n*E~7fZ zEXF;zHqQql5Ut4aFz3BevzL-bsw)s<(E~MsIl&|$bwQ4VhbxEo?UUtvuNuGF+-Xca zai;PUNyu6Zq3`B$gEG}zQc{%?DpNyVT1}r-f^(7QKu?g{-`x394`YI!MfUa%tvY}; z(@pNJkq#VbeA>nBO%*z`Vm2`pFW9J^e6iXzlveDoKCc_Vw#M|6q+1wl6#(nuJl zF;(2v`Ed^}J$Rb8>XjwRnJJ)#r?aNeg*LrY{U~Z??R6Sl(GzpEqf<@PY zC0_U-;~sYJnJWG@UJfQNvOg4;vN8PIw^HIez^C#01j*eok57jKtrDN&qc*6kQxT|e z7(x#GZRz+vN>Q}e zjS9v>KEiDtK#9X|PD*Y@t$9`&BmR~}gJlv9g51nddJeB6Q{*0{M~5}{YQ`n5DFnHf zrKj4@0e4)bm`v0;O%JTZSx62z>WFrciVbO*7XfayDn^Xj1!!NRp56KzYr z<%DOq?7deHggIroe*OeFQnKrlQF$Zd>5igX3iG&RLSJF9-xCoslrE{-!WP4W zqKoGNW669`sDSE{EDOXQTda5Vit`6k@dEZiSro@4I^RD69o##KsIfHh&K5kDUSPnn z)nr-7^v#CWGCm*crBbo%pkvmHt>($XGfHU!l)*<#j>2p_)8fw3j5Nw8*hV?o)L0ug z$d>363A?e=^2%^Y3D8?ZEgYvtTvwc}F|88B>#stGfU*2SZQ`KM3_aDU#KRa=3ygvO zg`J1$OWNlMDY~-k--d@D{Rj`C=ed=ovm?B+1q87acbdYvE`21>WH$zwn}j(l2xzLS z!m6h4)kL*!Y%|pq9lL+sVExjVa2z7KMH|?6idjYS3U}YfhF(tDEGcE~$L{hQS|KhP4f2%Gcko)sEI3|>^BGJWC5B|go0w>Wlp1is z3DNedu#Ns%#ow{;C(?KadP;;`x1ofICvH?)AU4g;#STq=IF@noq6HjRfKbl9b~dqS?ycUHq3z%;ALs_>sq>Vq8WN&Iyv3)=Qy!vbuCb^GWMe zdpsny2|K>qMh;B#RRsrFQU7tns;ZW3y6L+Sff_anANyjBh!k zs6vUN$Q{@VmO6nT3p-nT$sbWS%_bg%>wTMu!v!}=$rxQ!XnVKyL}6Tl^?ylu%gr;S0!~k0z~Z(MpH}2I zwM^GoKf{r)ckxTq|Mqqz%b(no)YfLXxnrsDD4uVI$g}mGISZS=And>*clfb43aM$D zV6;iwRkhipd8mI&Etr+#g7u?zMy=P&UP)MCQ=6^|H~(SjclAacIa}R8cj>ZJ7Ms|V z^)Vf!9GTR@tumH72t~=$+F?NN7lpP30^P+dND{|~o~^D|$HqVg7xTsHQ5vAWnpF7Svg<~`pUZyGY=N|f*w<3F^R8axFye??*5|^4 zpyp=Oyxx#ME9~`y5x%;-?e(7`NMEzU-nJr$vdcihrzYgikj#jH^La$+hzu>UG~gZ7 zV`}Tkxp1cGA-G9QdM%yCxD8GIYX5oFJ~QwCf=1$CvM0^%q3a}G_dWuizsH0Po9vae z+ugWG8<$g_+|e{cESFt*YM=@t($5z}BZ34k2bYIy#nb1?x8asj6DYwjp7+`*sP$k|$3%T3n$B0|N z+JLc%tF&SaA=t(3!-^~O9i0};l6ZC$TVFjbNa;2srCOO=mb9=h*7YlQZKowo#G^YK z0lLJZ(oqU0L7;R-;1$#Kx1)6Ks#)WM zqmcU+n@?U7+_*$Vlhm)qJ?^3TH0%88K)_BV&u+S4$8wYCT~V}V8N`j zo436vcq-){obsEy^mL6?fsjcfg}5*1YT6Fp9BzYzwCqe3x|dbhhF4aRu+?YMLtPUb zeS*oh+LI@t>cLBKE@H=(}c0&z_o zhuy-Z(yhsYG{iv5=#+$OTNdwM)FWbEF#2ZqwASUctQ3)xEPfTTzMim%jbA8R5s{SN zp|93DlOHUdBjU(V`igTU(MFGDxyYf_LM@G)&?r&`HPhCHJq;A_kmf;|imm|7US19l zT^JOD=HTLbqnjzQ8%{Mft3cayjv`(bSzbxYcAY{}uS%o`V`~K~Yh(tYL3LDkX2Tjc zTxMLuW7^;*#xCowaWo4?!slPJli!fYgiIr*N!IY+GwwE`C;xzeBE32K)3t|UTPS{AcQCe56l2T^U_=Iqz4UGonP za2>nyfc+8S@Yhhva#B6<0IAV})F?Aw-T{4g+!Y9+nHjrbIb1`VkZL&GEvP#jHm#YHY(`S_MuEhM%;a3G^gwTe-24G4d5+_GMNmW@XSpp>&<9ZSM3^mgqT zR@;O)l`p5OV)v*hENT7zmr9$1fSjoV4g|#ZQB?cy%rRFZ8%xvwR%qw7brp9x(0nDg z1>NgKr00;B;nbDqJ%r{3PWv?G%NS{~#EBidfA%B9g34O#cP%!{@x`Ks%F-f}1)n*0 zIzQV`LaNONvj}DM1qCL;>{188sUs0J5)FEmDlFSZRJErFJ}Olw?-qTtZSI!jj3*!n z&&9*o6re{A69%J1)7T}TaHBV>fv&nCp;m%M4Zs6tCZlI9MpOIIU9@!!%MRzq&j<9f ztRIccAhqdZ%PjE#K_x4s&7v3Hp=2pYxNN+c#pDv!qq0fK%XCKK&Pzlv?$Lf@8Dzu|sL~N?Nd!cuZc{QOn5$9@xy$xQ( zb+KH1@1mQm4wV@}kSxd!EDav$X=A6*oz37>qg`O6h{4A6Ock7xqw;y6c8VB~VZXa* z4xS5xQ?(k%P=gU-Y}(iXpGzny*_(lPNoR5>Iv^Lz5AIy4D2DoH>y~-lmaQv>G_$NN z`KLJen()Go4T2Z90!kYg6;oviIta#7MLl}hiZ4fg82=Do)$@L0krgn3u%y=lQ^|5> z&~O=zV1TBYj&;=4k4kdk)C{5@J)u_(BFo7pU>$iQ8i`jCNlLt--OpUSxLIQa_+t>m zEwsRQMe`s$y)*$83&x>&XNXMDcjbYFx!XX5wH;AYNW-K#nPjbKw7z>at?3ytHmDYf z&Wdz7MAAI~Gg?<4Ox~@9D|TF;_UH3w%9raRIb-%O&mwIn92}BQ4RE9hJl*UKCf#ys zk~+KK=;n+l8p@_WK-3xPF@R8R$7jpy*1LCBve=E)Y2z+ggL<6_NQWjEhC0AXh9iZ` zR|Otc1d}}T3yYcEa#@d==ZUj$~7+*^Ka6;Re+~|itwlK?H+h8M1 z;*q-9r?f%myldjU`#tbGmAl0G&UiF$jUY)jG58@Dd7Z9xwBBXl-@y4!xK_n4=YbjX zuV`;{LD|`8VuvQ$kJsO07s0s%+tW|N_d@SBM!b-Wc5JVCBkb*)V@!rNre!vAd3~bK zTAI{>BiqPux?qvRK8D)sw`T0MM)kB6QFO8+@gwXZ1iNHBKE)`6D>UQ2PM`m_M9AIY zlWyod|DFHEM;Wqxt`|QG{h4%ipeDgq=E0<06V;dn6#`#kuV}E0+4tI^vp~>n)Nk(tH0ugGV1kDT4azBkoI>` z>E+UxMF>gr4nI$Z7wIp;uUj@)Bdp?NrdS2qsUeo)s>cuL`HUGY<7dxd($6QjS{{rk z@V-;~owM|PnZ>vG^n!?RHm1^wev!naB=tj@Pz{J4DU~1_MptrO$w`a7m zG%>StHgjf_lNJ?M5Ea)~k+olCg6qV+^doYz0xrOXIjzeyrj23hBBGse0@#o*>}v&( zGY)qVe%N~+A|av3jVJ>4B*l(5w*>L@mF8r1L2sA6wkz%iSYxiGrxdT{eDRMdrrc z44kAPDu={QH5kpEJIf??783#w|M4q&tO>vSM`ujN{nzI9SaX3JVA z=GJ2Y0BM83;&*UX^i{SCFW+z#@iPRMI-4so!c6+=4$^GnGj;-H)SI#wuwMI~{Rnev34u_G^ z{vH`jS!0O45CzpFQW+Hkk`+&<$xEfteU1Nu=RWJbpV{_A+vbg<*$1)rMLn-&Gl_B6u{yMP15JiKSHRyL5W66Y1F3 z?axHQ>w3Gi5iEQ=t)3#rn|go}=|uFBd8t1wz$}PoIM^_7dzy?T zZ!|DzX0arQ$Ja!6Tw<#e!4DR+W(qG=ao}>p8L1`IBdw<_E&IwRtGYUN zx+)eCS`m_^Dy_AUg09yywIdCgUJ5LY1};Rn2iUSA{3$cMhDdrx>Su!rqJjz{k45w4 zaRa5m+_EPZ-|dL=zFXk|#7z?BgWBXpqdKw{8GWhhBlk^*ibdm3g)uJW3OA)vKfSF9 z7>A={Tz~2K+zy@L%w&?k^;2e)B}9hgEiNXImCtaH@o2TTt^og-m%fsMJ||j-s=Fq* zb6*a8=T1ZUeBsyI!rSCnsABphAEV;1-oBxqxM<|%YbRyKc4=<8=JhAk(S2WGF;N$Rs#K;xg&zcQYnr$J7s-@-vy#a9EaF_LuyPjlGsWbDT8J5|5ig zm~d=eRv~3#8uDa6(GfOQMhzoLV{jlzais9sXgcjyT$+LeY>zu!hTc|QPUj9N6ZeCV zQjn=E%kU-ZqdQ}dxtVztRDt=0;O5H>ehp!>S;Ny`GXwy+-tj;Y9=L=aRx?Oor7~-! zv1MA2j0lLpS`zC0T1n1jshg{6fbGDdKqE=9Gv;5=itzseS{WdvBkpa+H?eNCde|1TSIYa}aJE6SS zXWU-g^xhS%Zn(I0?Tm8{&q-DlS-fS9R#d4fB(&AYrmF}4+#_vD;ONL+gwW@$b|bHM z>Wea+$Ir?ntt=!?;TYmfL%G$h=y216NLO%lpj4NFUBgVSacaW?dZ(-Ny0DL6#b<7p z8d$K-xh3op(T3BX>kadl(%eAq;4zsKc3ehFJiWbUkovTyxm#z#F zfehgDz?rZxK)e!e;rK-k3oczT@rc?O*mLHCVxe!s&prg=gbwW`-hQ=<_BMf|C?`-L zXo@K4LPYst#$qpJ4)_#MKpf#U0`p>(6=Fry6@dicyeeY|relvreOpxFec)K~KVcvX zXkIk8OK?NuA;pU51x9>y-`>>kCr$(+@SRi(zn>yT9XhxdWTWvh5}tCVGHdo)n+>C` zT|AXa9aJ(D(>Y;G%^Gt#!vI?$Y)EGE1a|3!c2Kg29FAa^aLt9 zVJicPlL6w5dGNhm`69r}=q8-AuvX{Z%l@&R3sF7b8NFG<Cw~e!i>S@f)kkWS@*o|jDh#O?ttO>{CeBBap0Tt`-mlC16~HT zD|wygR3l2WyHK3AXZzj-qhImQBA(!wjmS!lP<$|Hc|kFN!1gu`SW`2B`H>)HMVT_0 zyAyfI`3pCD9IeX`%x^I<) z$URJqBxT3@sN|DZ`6E-*rW~1@=VOFOhr|W=)~J9@9{a7>1!ouThg~x>JW9{-2ogAFeJ1m0OoTsL2; zE+<$+-^)HdbN+j>1K1xu)%%#_{L|~~FTeT!n8IsHiHpmD_b|isF~NaP>laTiA+R9m z;~3-tXo(x@VRP9G3yH==?KbWO1oK94*WG4&RY!0Ad#%$j&%+&qwNJcT57>&mzYWms zF7L79*}h{S5au=7g~Z)ZSizKfqP+g08UHg6^Yt91r2V+8k2*pB=jy`D4&dZr;9&pZ z=67ZQxC5dTCZ}j8r=(*T6&Ob8sHkK2WaK93rx-^S#zq)5Yt)6dkBDn46P;OF|7dje z&q*bi7tcPDJ%QjpHtLVJt&k4Hd_BsG$@SvQ)6xba7YX5yDxx zZpYZX+uMy~4jcd$r&>KKb&4&7zu)qSnJ@e(aR%=_3EkC-iS27AziB2LOPhONI!qcU z(kI?Y7YJ4X>+wCNi#V`HQm>v*>x?-7IbKGX?8>X*JY{Ms`|^02wtyKsf9WX zk^08CTWZ!DM`a?Qy`Deo7TId37u(rn@uftW9(*~`_-Gm83KCc(9_e*+j8F_%0e&I5 zexBo(j8vecGx+LiKeX&5FeWPjYu0LN4ZExw=m99(5BmW^Z?>`lVeRgW<}l`Z zC!a`>rdlvva{^>S9(Sk@=!G`ySQqK1`g68`^_@!5n#pEu^Rj1UW|*G#!U2{&iD&|O z)q_JS)bB!_>TSe=!-&5Mf>GDIJ4JHo>4XFWj%GQ~=GEsmM6(pGbl&B31K-yedz)s& zezjZ%ArZ37%wyQMxyLd}Gf_cBJ`EvB#_VR}jrj3g9n7)Hl|+S2lSLsh?#&KLQ8*W2 zWj>5b$0P-4$wiS8OVPd46P%P;y{FC=tFSQ4UnlZa#Zh4n6-Rng<6Q3oIzpas9ohiyHr@GT<3La*gX3l?wFliTdBk$1u zRZ0E3gCvsR+lT%O41xyq|KE`D<5~KDucm;1KK^)C|7_3rC*(i1XZ$b3N4v%V&c7gk z06%z}fzd z`JJ-hPtiMrz$8`NhmCOGd^&ca= z{>1%re}DTRf8%5{|Bd_8Bl#!gpZojU3Gtf}_hCc-{MY~GlK2zzpQN+j7$T#8Vg85J z`CCZ)oBX$Y@tge1WF~87GXE{i?^=Y> zP*C368x|k{LsMIKdnao%8+&(pCI%)3HU<|%C!p)zFSV`lCME%Y^V%L!Lguq|GaJKf z?L*dMI8cNGJPclh=%1%C^$m zOKn%zoi1tp#dJSzwz|Dc@i7-akEDJYfXr8oTDp4B-FuH(?b@Ya!xdrPf&H~t80ZY( z{_VTE-w1RLCj+0qJMY0L^oM{sKU~ zntrdAcWa&cSqi{j7VzfQp7o_YBe4sxwzjtXBJ}7*F9Og`Szpl#y;ryL+=mD@T>1b6 zKlZ+MP}|H~X9}(Rd>$VErSWHRsof13|8t96seVy)b24lij&wIf+$dc5wR)~GjJJ(D z2sHLYt#Ps70iANCr!wrk9&(v}g1+J&ooD4WU3HaB-q2m`W6H_XG|QWbIS7fB9Send z?KIaA1+#46VEcUpM|)uainDg_r5$E2bP30vc1!{`hAwZliH1}9HSi8(-p!J%U zy3tskmtK}0WBX*(*ANY3JmGaS6`mU-aF$(juHgWoX0=|wjptp5{phlXr&|D1E9Z99 z?*nQu#)JserEd=0Y3zEpTpSladg?pTOVJz?SwAyIBReMiKh`EZD+WQeoT10M=_t6Jvfq|~edCsymyhSYqkCuDZ1a@)dv)@({})9U9U7t^HNN=I-{cLBH_u z7r5Y^frv+lpW9%)D4=zVPu$`zTSEJ8|LnBB+q;`Gf09wZXNP}7qQV|AZk>X6n~!H> z=d+>Ra|A&U51#;!vk-I($lc!^aD&XYRexKOC+F`7kq0Lkmu-q{{*``^1Czz_~0 zx+dC?;rVfH?z_1S?vUPFavty2sGn^gS9;0q;76OATid?+W?R{JobFkFuYd*y?i=v# zh`w%gQS%L>v+n`5$veTmcoVCGzZ1ycbi+dN^50$kHw2thHcu9BSZBvK3xnQRq_fn2 zxrwM09s4H+_kEh@n}m?Re-1h>L`}A4X83{JVp1(rn%HVCzyIbw0i1v4^fdvXN$*$c zPrl#n#{fitc{#}0=AiQffPMet3i$`o2C$g}@W=Swdya`az)p=HumDM4HE{JkIf?c) zHsHtz!ei8b2Zxf|A0R}82xGNuz+ZCPO5+AwbwD*+V*X5f0Q}AYTsHp zd@NrBsa>xF7jUx%q?&Y*ka7}@VFbLV2=pE~)+22}c_%_+qPUrA{G3>?%@L*jTKV46 z^9tXtWp=RofdfYx69Kh8T$|Pn?ym!Q*yH*79=qeVbo4I)V}$uvw%!eBKre<2gB7%D z71pV3d#zCSx@-8^w?_ebO;A`+hQ3JdHFc&u@DR0uWb9Z(Z++%)-o{wa)@&tzAokLR z(Gda+A;%TJJr2E2fuiw%vN^6ZNKt>Wy%_cJGW}!dkpgJ&q=S1mG*+!$e_p0Ax5~EM zYLH#wF-C$PQhZr|%7md}Q`?CG*fSJys0!MJA*>oW#s%~_IrJ{r zeYsyzj!~@n*4Ha8JyK6vHqN?0ZmDbqyfzj}}=Bqx--otPP3{xUM&61BQWt5sx=4P99Zk zwG#w{cPSSh*c_*Dh~V44PBoQov72o@y83<74K@n#OL%4KoI6bryk!&z0?3zjmmD@R zVP%{;)AyG(YWo=y$uukfj)Ytz1eU#h^?36dR}WKS?=HKvtw7$Bg%f0wZng4lW%l?y zoJ^%V5BGX}fN(Go(PISK_vdKuesuh-JiBaNuzUSF#Q5-PL1Gc1yRV}qfz*bJHvs*~ zu+?2}vu;v&T{oOLC_Pyh{p;Oeyo4KX()sTn=w`J|^B_k!#N-^%60eQ+Ee03U76y_w-}qle-zsLJL!Mr7CnBOU8&Q4Dt$X#2z;jTEGb8>wMVmrs=5 z>tO@;!C6`u^asV}b%%r0f+h|J0zb>>TOM=M?u}bmd&oV1g|2+_kWp9bM_i%(MZ%L8 z;Vm*G>aTGAgTIFv@>DwACzKEPC=G!n{QCq#Pwt9>0r}#|0JmYSzwgL382jgrtkVbv zIyyU7 z22@f)!Y#9yA(flstE3M0;_`R^w+IX4SfxOqpmP8i=->J^NN8g2$#VTVbN6V+9WdJ+ z2nVWR=^ca3(hgpW);bRhq+tbY-+NpJ!>jNAetZeeqQ)B3GlSp*(QE%}aR?@RyMw z$H)mc2xNzneh8XL)y_Cj(sKnI=FfjLwq>q{de{fW`^i`cXM%=(2ShZBIxum5m|+@p zsVz{Noy(%2u`EbKSV9uC5`1gV5qEg;8WP09g}<7lgc2_O{PMr)2jg2?ri3~mT1vlM z#>O}|u#KC*X(W(hJl;*z?=8a)UM8gb8j%N=wL@iqB$cznAiqU-8=H49J>pln^B z&A`@Fw(7r=iQF`WngYYZ-Q3wP{UgL}_?YK{^Wmj$yxG^dtM&v0ciTnngJV{y{>$$Yx&Afx@v6U#ZrR&LA$NNl{I9ky>zB0`JZi95&w z5<>5l8cxPS!UihEM2At7J~~Z8wK(~u*U&1&TB7?p$f}?X?NchmkG}1^zH>8udteD4 zW?w3tTg~>(XWORnof8Dk-XFMEqz>A-&vLF4`q>|IOgEzrW4Rbb6G$8@KIy(^5?Rb{ zp3ZRT(Ty9#(tkIVQ)r(xmFm3Kh>@vB-eUMgB(R zbrkoVOys8um&*Zk8ls?4_VG~rt!2r&Ox-heRIPY`zJMY^&~vz|LYOiCh>!r_CG^p} z_w4PN?I;zA``AD0GC>c;SVr7Ij%$#RyHSZa+~e+6B)<0`*RJEfZ02zMT#Io+(;4R( z#u2180$de~-wd|)|BHK7?nY2fAY8gFW*bYu$)$;feaI_sOh;IbS+p?NZBC_1&L-ty=XFP*q<$_tT$uWPj_$;?AGhoj0wka9T&{yq4T~ zHL?9-^8d`O+yB?*(>(M4KM}|I-v&3u?EkX%$6ZbE{m$|IDzN>|NxQn%s%4J>KD;Y%-fF8Ine@{s{{CyJyCqG(iQsl`V9qqbKUALe0^ zboiyP$O{P{0lCWJABD4oQuSZD+Ub^v83+Q;xk1k(q?O(V--fDXlcSZ2+dxczl|m2 z>vXYgqfH^6(%7_@Nn)87WzMtzXv}3s*oP!E-mu9K z{^4yrl@6NecnJ6e|y-pO!h z@>+6ymxqD@1rFx7^Zch}*>`ig#jx(yY}aXkPhflXgS}Lotdh+bQn|CSp zS7SiLIF^Cg%lw6KJhm04owas*=Ss|x(NY8~FsDgRQZOUYd_;RE;g+x4l}MnNnP34O zVjVuIkgdkmDrN_s46ImWKhD4&8!{UTA_d-A80B{SyPr$;-JQSgb%4w*z^T7NEdc$j z>nr57U(2_)PcM2Cpr&5s{B!60pObYmPc91h^IU}jD+JW}sfGFGeNt*OhSl}B$TUdA zPOJBFt9_}lmN?30-wVSCob<0hU2dDdH8)>Wf z`cKFRdGfE5fe*WOooEjD+mBdZxixp4x(lQDd&i*89Cb78Sv8<~gvK6=M-g(;^jGY? zze`rn&y6uAaiV$KEz!`Bq_8%CK6fqht}{CI!j3bh z5dpv~0F0W;@`JI9Mx|1}PzL)mACJ6Ke(SKp(~MtjexPdR2maZ$g6qMvA1(x!+unE; zh{nQ2`6J5)N?%T8wB3Z5%0MfW4qJ0?Tubzv!V_@XkNGcowFqJOl-+yXq7?U1wB<4T zJei>marO0%X*{k1VQ9pTS_YHJkV_P8mT0^tI$5E8AUO2!WaUIYoQbVIO;V@ecsL*# z#0-qShQVyF6kZiAK!yjC)dv)uFkQ>w9$g@+q5B@D)8L>|dFuDF`C_DUNF5wzPvtZ9 zVBZ$PK;9l~oR{0E_zq~8>tKG{KN*j4R*NvN0seGIjfGci`;zBZrR4xEaQ6bxQd_u< zZK?)UZ(I16W`h0Fh~NOWr}b`F^>e-S3L4jE!QUA zBL$=qs8M1lk##H$3oa|TL*-r~*>|`fd_=Dz5*U6Sb7uvd15+kZqzg7=2(QgHrc`lR zAg8CcXAuQ9ab09s%4^CrgM{d>l1mR7t+`(IO{4kfX8``v!nG>jief~q%Y**9^L-%* z-H}Ot>T+NkBtF(@r8H)AX(bWb52eH|(nAR|%@nl@aRdBl*=C!FU-W#uVn0xw1&bvu zRYXi88&Whh`YqC22CrSa+}cgt*H7f%<9obKsVO}eDqer9w`kk$y()IB9OAHW%~@*F z9i+ZjctG{q1;_sRVmthtM>Jaaxj?RD`QHaRX+Zq+YzKXX+14%mfl1NxHkDz}GiRby zOMfQ5@JAH+Dn250A~!E5wJIqHNz)w{Y6&e?sLX5jtPK&jL(r6dXJir2F_TnvXG@B^HMXze- zSZ7#xF*jzR(D3s6U)fN)yvBTu8#?9S(*}s2f43N$75lvmITvbscBmO17g8P1WZf=v zj5}B6={XsYl%~iEqdo=Tg_lcZM4?+{QBW%GeoWsmb#BCLGDR6tG2JhV zBil?{i(RXQpyiQezC+-QW%5^kCSoa@B)@7YY?fLRxJxw`hcbqtuZGGC=S|3 zgA$8@-4b()hTMgTuFvlOK@?kTI%%XYnJ+*ji$H+H6J0!^UK-V9gVM^ zK2lgafaUj`@vCvX81H`F|0+V#_pkB2g6T|Ul{}Qi#CzZrdz_saIZ2jTGF_anDFao! zbWF2n#ws8o562+K&zh%j(FoMQWV6HIk_gQSUQTuSk_6EJw(bhOuu&r&2rxIS?E>A7 z#WCiL%~pH6l?T1ngS1&&pTYkIJSirhT>iC_ZUjGFEmhn-=y_2KqK|3|O z`8c?c@L;XPqyH;MECY2uBhjvehoq8ulv_mX8{&ZW`!ANPv%e1?neuDS9+_IGgR6DO zV`c$S!(rC1xG_efTre5jTMSeCxcSqhQ11qI3+sx=P;L%$D2k~==oK031!HZ#rBa9# zD2~Y7j2z>JvDq{22>t|H`b~ga^wX-6mV<1GFD!s+!xNGck*z(#W_7UpdA;wAH2-$J z`-JBA_Te$rz5r=j;(b~ga#2-$Kg^GqR@3yfuUv%WbG@ST4QzfA8ZTuUKyHjee1U&f zo}*LHx7$7|L92w|l!Irz28;oNFc1u1g2e+%35;R$P#C;V;f5a>hk(c|yv;{RhotlmS?vT-O)M#?pp|!EkfRP(mH$f|DHg42Rg^P? zR6^ZoaBc}hM>56nTnA+j6pB|HqNSG*UTlSCy?&{pu#Yc?@llK}x|tDC2QIW5+DfOP zp#Bj4b!RJiFXShl%rspPt}{b99xlk@$V2k0A33{qBzacPfW%l)3r5X+&5wlLGQn%! z^*K&}UR_}nQmm$03vLH#a=9lKvY+;iR&XFC(le5Z%gr&Hys;oX@iJ@p*f*+AFS&yw z2;~9;tv$l9BtD#hA$F5)3m*wAKu_)>6RN0A1eIz@Em(3NH9-mz2evQq{Di=;G;o`N zn{`mHN)HZKZhVyGccPI;eJ@4%vU3BELiavkw{MuiV)|#*Z_}VPW$kqxvTwjH1sT&0 zmOLS;Nr=|9+!eH3Sh37Ne56m-N;O4?z6U6>dvvm;uQ(AqaZCR z7m7=p-o5Sa6Qm+0JTqcsrx-&-ij{J* z3Qzf>hh3m{hWTM>=18W2W${)$^T{?lri=$(Id`sNwF(UBU-#aG1|(t>n?M)%n>}(w zGE3DEX_|y)H1CMN3WdaY=%U3DZdP1EW$H@8C7&TBR>d6@(oL;f|9x6L_uE|1Yx9^z zXNz)?PV}6S$RIDOedv<>EX1>W;v}6y!z7s`QwW6me)h)>m?u;XN%BQj$l)$48z+?h|V3|gfk6+5xax27wm%ct^N*2RV+08JGxrWdR^Dj(R z8I9(TVM$y?ntQbiF&RlUGi2oA>*g#P`y*uje(|gGYoDirR!nu`7$U0Q1j#cb_MSCR z2yghL-z3q@H8umnak!bb&r&Wwb@V_^gI^pT z=tJxC3uSN!xt0rj$|=%TqBOwzD`+BYh1eTleORROH<{*i`Hs!;PaLMZ^Uq6+}l^zF5^Bp64c_2kfvN9%YCWRslFZzRZ^) zJw)zHIDCHbDB-)wUaz&Q449Nj+ZM@O7d7hdRqLgeuO{JOL&*CGICaIRO;H?+%*6_3 zWqcs#>B4ONHXso)Ep zr&@}B>bfa|eaWWbc=sz*o}&07)DOK~=MC~B%5G!$_Bkocx)X9|r;xMte6ZB{ntM0= zTde(BKCh^g=hJX~VylZPtNaC#yZnN4U1ybPjpd?IuUe`6YF%m4~G~eY*&( zf9VSwYD*;=grA?wy}bStN`bzMg1@w2i8XAMbHPKI;XLHhU5W`Y9swa+g0g$Yn4`j2akruSF9$UNIYl3UhjsL#5*JuYazM#$3(vvT3?DKp)5dZCEk0#(}Lu?JRbwQK2 z&g{9zYcD76ZBV|(hXg7`B7SvK+5`Y(s2<{ngO7HScjDz_H+-d@@)WB&1-G6pcxQrp zgL8N2seap_L3ykw>c4MyZ~atMx7;T1MR>nGTpoE7ZmRUiAA8Hz&Yg9ACgYi65qFhT z;;Xj0^Sf1fPb-GzJP#_0eBJCXPk3kC6)H!4R3-$aB zS=(9$FRQJ+*u!VzxN_L2ldEHlP~ZjRlDR;zDXNwVwNzHPRa!OpZbzFtqK+Mq2L)QD zGx5Z>2UJ3KTBf_Pcf{sB>fRkn*x>*Eg%g*5ven|{cZ5c)%2`#up4`rayT3*QEbTf` zL_)V|@`{eJ1SKo`69*9WEOc$AL!~et=ejK&b-qd?YLFM=;-r;EtBrg8!VIUCKC7gR zc|*Rprf}edFiak-{pD>e!Vsy`z#$C}c4`x#v1DRh*^lPd#&24|&&(ZAc8~w$jk81` z1UpbqFua8|SdG*z@w8etx2N3UB+{Olo>=njF$1XzT1F%1dPE+yX6bNVotPXRnk7}! ze2))lA@{Q`ZLTbH*-N^WIu3nR(9ch8BrJD*=%f=+A2C<;Ssgj6de`BdYWk(!P2%F& zoo{(mC~P|m)K4}i`-h=7S&1i}%Z^=1-;#Iss34jq^C(9A6Sd(?`iWkA*ZOOM59<=O zOzTakH5UG#T$^-ZZF^%&K*$-dG!|r)w$c#?UL}wnN6w;hL1gnj_Tkq`A3w6_l!v-; z6JG(<$3U3P|0itc=JD=C;p9~B>4;*I;Y9Rm^BOQKD3B_Qwq?_2Z_Bxt-ku#!c{fQ# znU2UHXWnd{#$Lu1X-(wtG}aeY)Dyaau|@Eg268jPslXOVA08=rN<>=`p#|9Sy{RVQ zW-3rf4*~4fiAXVhPYw#}CCk5jte>D~Z_fwUK1dJ}sjom6BglmtDP>9ri9trVy$9Z; z-RJw@-1tdFW}GXYRsyW!o2v>4Hmp6G|Ni`-sDvK1Mp%3OTfT5CB$IKlE1d7 z^PI7=$%nKWpHnme1ddvhq|V0u;j*6cI8M~gCbA;=dmdUpHeyQSVjO<4tc)e@A*XXa zICi>lD$iEU$AU)qWWP9-w(7o&>z6Ep$DWeJ^h&%L!r1J z&#aDD-JXOA{8|Qr?wO?ODB)zGS9pR&1-=>kFoefh^-7)7emqygyHRA%>sCoWHo_z8_-)k0Y3gGidZ0h}Kz>-BQDdA`ADbtbqsq8% z9+-RLr$4e_CAiAQj)2Zo`|c(ct8lWpD93s{p$X+#E36KC*q1Zdh8UO0nvhGyj|%&5k*~=54_I87 zDvQk^cvg7RwgDG>8Q=YNpYNn}N&wOR@3=dfdi01tHjC;WJTgAziYw`~ zh3X2evP+fupGhT(Bzc6#?TC?6%LSg4i)cCKjXq6M=1&%xOyOn5hp2OI5%y#}&f+IH zNRVj;c@EiPAO}b!J1!_MY4|Dod6yVM^ejvNcf9G$Ax;!+tSg80e;Do8x>sRi@c)UY zsf%E6hmY3?ZI#%GM}j9sF?4>VVqb|)j`XXzj>F)9M5FNZYqu-#9z<0IGpdxJg~%y} z+LhI6I6$>Lcnl^z7mBLSbwx>4b5K-HnOIjS)ecex`uhq0GJ6h27uraRv;%DZKXRQ% zh278-7ZR;@?4Tr@N;;^?=8AQxGy*(r{ac&6DlF&^YMVQK$|B=+=Qwdw^;h_n)Kpk*5ZT`>> z(4oAjfMk0uCK#&0NpD*T)ZHife6#gFz7&QR5}~asgcx)`x>9Hbn5+p7pWUPMeLt&Q zh_AVF9V9kHKu3_2^mL+ai(Ejdiz9gQU1E_y%OJ@oJe&Ju)L2}U>6z(s(g`Lp2GWUz zedUI2>|c+&8jS82e?r^yIq?PD{Wf#SoY1tVbkp?0jcM+K_=ccA+G9CKeiW+5sLW9w zu!9Wu7>g8P_7V3O{uWm~F`XuoxUggQht07H*mIZFE{~sYI66aqxrPJC)&oKm=>0hn zSBk?fv6aw~S18=nS!-fWO>tSrh8w}>BKe^w@EWbP9VkkjlPq;g?9HKv6$}`buw@9t zo*R745wG*O*=`!UgEJW?I@wnWZn}5O&@W*ib$Va}FbEiE%!7KTd}LtMoWN)4Uag(Y z-TPnqK7Q9u7aX4v7#%?0dg3sRAka<2La;KuhmztzU1Iu>1@a&y!!20xa>%tLlEhwY z1H_bW8hO84#9P%;G~;lXWH!a>(f;mcBg5Gb|SlbG1TT?}2prP<4xZzJ8}!A9by z`o|}g`c_A<<8^<7o#s3~?6D-X8bPnwW;D-%F@X(T5c{DdH=`W#nFn;XTNed2c}!PD z0XZzZ60;Cg5nTVaJW`g`)jyEeLj`i>EE*dO@k?t^4NmZVRymC`Vssb8w7#;*Oh_93-NpH@#=NR)g7@6uU% znaT+ws5CJJBlBT)h~|RSo^`{fS}+&qRqoA(DkX)lVlPekSu4%de?TXRtww`%v=hNduKc(?xDg zJa#k%Q)P&;5o8tc<6Br&_!d)25Tf?HjHni?`mzMEDj6e>C(wk~m0@R;w##8m5<2?R zDpF_n=k{ApR{M*;h(2~20~U8Uji|C9EkTbX3*WhbVVpfL3>;cjTMUvFf&1mv=N3Kb z*eAxV_$DN`EoqrAB#VOGv`~^l^!_9#)yOMIqx@vkOG!Q3x0R4HBX({}$r|swCGP?+~oSY|JL7kk6@&)8tcH%IKxcRk6}n%Ft+0Qg~)Yjb?^A6W>is^0GDw zKuH~Cnm7?#k~PcPk>sTqkaNP%sc^efWNoAIQE$oE9p;uh-A=P#kn!qMWMBN@Rj>Y7 z=o6sbTr(H@Dw*a|;cnl5#dlKmsE#99pLH;2-k%6qW87&r`{`p(H?Kb5@i)QJaZB5* zy%iVMzrv8NVi~_2brIfZznq+AW{e$-*e&*{;*Ybd$W!MGd0VK6PSmzUUj|V$G9izk zjSI2HjS6#Wt}U@h3gH+onzGlZ;56dU4Zd1iHT5&nH$+}xZanM^beFZ+wH4s(F)!_@ zB1=c-rGO|bI!?z^948hP!k0Qxq%QI~yfcq@BU_eN242A}9SZhpeenkVckwkfmgq$S zpVAZx(jXTX6be$L4}8{}kdPGVB65(SKz&I_E{salWZ#lSTq2d{!PqR}J%M{=s#TJ1 z>8SVk$1{_8RK_VJyrvrOVALG=+r#gpvELJjZalPy<^U#eVfZn-j1o9AEMyHzaL0ai>8G;ce9yaX+qxnkGO zfb#Ya`-|O6`1#JFu3b*BitNau}q3P0Y=Jc zA+aR^RzjJZz7*MmZyj_ySuu{yy-uQ3Q;`0zX5c_RT8A=$ho>NuiY3RAq*gVtQj@Cy zCIz}-)BWtn=*GuUTe#a@xJ)wT;U)9a%!SJg)~7S`dCSGNw#xyod@b)#_wazW!Y`as z3pltI=4`vSR6HhHC>Jb?7Y= z81dyT!=DU2zMp%}CQN??T|G951)a{f9h$eYtJgfGa0xH61nxiUXpiRp<2AdYFBmw> z)niy_{f*4EC)-W{IHfw~dB)pB_z$^Lw4b^nqjHNQD9KTBLNXS64f^~d%BNL%4d0PU z_b@`JNl1@s2QMDFtQ5;o z>C&$dgFm2wP2(O$uuB1}?4!Q%ZIt=*K1#8wVS%?FC>c71v8g49tQI>7No1N_1mwNO zZX(wkR8PHZnJQih>KoX*k5$Txt#!t~^dF3z_{Ml~(4_M^hOb{={FNi9YXK^*o?Tf$ zvuoNEJNR7$&%rVxy~wChG}tZhdV`R(-k zz%dg7`$M>0W^>^8`RU7;DhB@nkKV(1y?Hx6YXc5}LH(1T zugO=AV9b5@B1lne@2BjI3$3+`+*T}FZTXQ1C%Af(3>RD|Iv^Z!;X`_v%$u8GZWRu^eE*U;sNRlex)J>=(hBVtM5E{bq(6>~WI{p+v-P_prA8us#H#+;n5VA`A z_NTKcUGv{x?3_17NCHpQ^A<3Q3vO~NDR%J*15-1to-LrfhbSCE z$Pgl1AmN9f$d+6y;YQ^+3eQ=SS%MksQy5)8 zAGP>2t0x)R-<>E1foe;_xb!T{sW#C-N0Nfxf;w6ft@EY~6a3OI$}~l+Lz+QCN#WaO z345jZkR1SE@PnO4`(+*}g}mE~NnoE!qu4=n?C_P@$KfA)#@`n*pNov)qc6P5eSC7b zeDY@OH>hq;TKD+*YgI3skBHZw+!O{ejwOX3{TH8WS2h7fYvQ)};}=&i>ei~gJbOC+ z*@8$DrGNASQ`gkfQYd8x5TU@c1+w@o0QI%CrPqLyR;$`yQCsvVI>xo?74&t0^~%c& zp~nAdN0`Hjv59fJ39^{zH;F zz*pMNRzy=#0&+e4kEI|e6v*D)V(2pc{BayHMv5Do)etxVaUB;7t5x)!dA}ewnUrF3m^q>;~>xG+rv$UeKL0F zY}EnLV6qB-Qc;udBxN_ksvnjFGs>ut#B=N5ntW;Ki4oyW+UvreRYX2M+9rwE%8i`x zk}Qj>%62bZh7_DeT>y1SjC`)LgA20E;K47evB-LknZykS^!^%yit_6ry;}QfKS6@9 z(smp-jZc-KKaj)Sq^qAP-&Tu)Dr}G;)@;HruMn0vKC<1|(J72Og)*+l8U~z`5wPvxJ%KrQi#N;G$z1S39%3r+ElFA{g(+#~ zcHH#Q^5;&kAq+BW!JI0LUJPeAMf0O&hX$k*67-0ZrXG#G6R1P1@c&EU`gGxJ^159) zE4RO)E{7tXW`Cg&| z_$CwUVU5oymelly@srLBYa-c5w3$Cd)?l8+RvRBTX2y;LvP3hJRU23mcVS%%Jr|aP z<_uecaF}vZy8xsxHmRJZR0d%u{6Aq!k1Wr3O``otcr>O@V0Wt;+@VP%I zm(%|dxiFK!c`N*FvaYqKT=1T!rE98PYyy9pbbEJp_kJCk+_RtG{G9JNpo4}}$Si=x zF*rTszQ?hJML3b{KZTF92dGR z`_EXM7(U0@_7ZOey&0K26SSzw#Wyw!diOF<8&K&lVe-Y))TlMnG72eMZXUEGWBjlD zbCGkNPv(f4v;{$y?y}%F{%C1r-}Jwo8PWu~GSO(`D~>XLb_njiRyTCqK$nI~&k*wgVFC3eJjxE@Yi zHfQySREmKJs|r|k=_BWUkFjf&rMcqD&sA4Oam#zaL!0aOEmO`|F3d+O3hIVfG#_1c zcf7eYiyfhdn%`Sx-VLH0dW?}Y8?TN?mjQMNrT?UXszaClVVA~Qz(TwZek?3VDR$29 z!bZi?g-JD`4-pW)Tb4>e(0%aLcCuvc(OKvm)u^d<^Pc06wT}*OVy?N6Nx&Jq%(a|Z z8pUMkujAPdbpQQ0ZLU20H6f-&%QP+T^7H~K2Qucf|A+k(gycmEmqel$cn#;G2pVjC z`5e@Nv-uJ?3Bc$(f2K^SLyY7=tK9q02w%-z1s5=Y0xi0Hmx1;<`*n*=YFe# zTRi#bwuBL9^7MUjd2Z4vF)g^Bc5uz=z7@kqcLo*7K{!nhmZlC;U;jV)f!HP0vn+El zWAr0z2^)f0RB~utEi#7BQv=Zo=nTZ64(dtiaL++`*2HWHZz;Hif+k5@6wS1&Qkb&@ zS$qPN|5a-sdlCm26R$yA5t<-uS_O9cmfQ7Rp*-8ZJnL?>o;^O^ZG(ANhGfo1fMX#F ztMc4biXF2Jvci>LmESO`)EhXKToA!??)`+MJAA4-YJ&Z~ky>O=1QM(a>BP3Y^q+h? zek3|n_EyJw-F6QWx*v*BL8^eWH7bemhP!dJ&%_)KQr+(XW8a;k< zg%8Rj%A>cmAFtpl*^vT)pa)y=7^36rVHeSuR1JI&+DpebZLed*k zJ_ng*HEa4!zI0nWa|E+m6E7U#SH2b4zmH*Ggok#&yGBTvwFauyt zNLU8KP8JFI$YEP)W0nf6u(xKK0P{(#=IFRxf$2LY54UNLvzf;%+?iR}@GJ^^o@Vry zEZaRf=Tl_8Uip?#`kyF|AUL9jei!V3Zo845gLqju2nOTd=P-;9Am=1kTTj%B&l;WC z&}J7tGKS3D>;ZOXp))4zup?P2ytj1~lwpyyboMpWg}#qaaQ(rS ziY{n~wVo@yi2E})azc6v2Dt2VIs{TQ`JVY!gEG3|Otcbp4@U#|F$O#b7O!r9O_oJqUk zPiW{wo72fpDCT4)auI_%+Im48Zm=NCr5SShiyv&TLe1qdd$hp~Hk*RICQGe0MVp$% zPv_FHyC*GAA6FEbRJ4}F^m4O2pH7TtQ-a>L#B_VIT%S%<@X`m{xs7hGvxMtWFx)PS z<#uH(VJ5y&#{4mpVuu;ab`pHgP>s)8rU1Jx6tVqaYBB=ZZ`SmuX~ z3Cd5x2p_Jc)a)g?1r1&(#-BScEyi1{U-dQ|` zgfA0vIb#g)zlY+Xf5!30r2yIc*z!AJH7)JbRpS55Q>~ug@#Zmr1Nk5zBHOn`K%Aqn z8Qg2(AB0Sd0a5}KG6VfkXKE)^v;sC0b^xu-KKXZ$yG|c>C zY_BIE`o8uMAt`58e+T`N1v$4c!+MTvyKId|2+;)m8A5J70AWm)2_yo%5vl)quy>!z zVs*GwR3zYv1VZsVDroE5YdqtRhLb_UaI8Sz|3FWHqMt^tV)3!)9LfcuQ#sB-SzX`3eIcwmd-WRK<- zf@FTnEo2y0R``$zarLQ7wmXK|j#=jOow4xzokmf4ytVeI-3s zC=dwa6dznfwBt;zbJrgZEi8~qDH^8M4wfm zp$o^ntRLAV>s*bTV$S4DDG)`27kh?NxMuY$4iQWsi1Cuo?}FMbF_%5obHI|*(}R!N zcld=>8DKgfLbE8ZpKTg4CQI6Nc%5usj9D@Dd&#tR6Z>?{avYfG#^Bk77n>#(I_%!y zEvB&Pm#`(z|LS+g2KdVv17@RUE6xJ;h}NkRA}HfK*S-pQ9qeMQYQd6v0xzVGWRjt3V)yHC*^V@+!b|~9eDjBBJ8s6xZV%;K2J+j4p-=@eltP` z@sOXx(%KuzaF^Y()yA?955$8W(%fS)3-^mhz$d`R0qYt31ZJxJV z{Jk#rC?ak)_~y_y)EiLChnKAb^r$Dd=YL-Z*+6`kH`%qo-*&D*01h6GZQix7RpY5{ zkFlfYG=Kf)6RL`w;IKT}3pjVNcI7#z%R8td)OLG63>5vb+jU!qhBsZloHTsOu{sg+ z=upNG9;4?(U>FaXxR!cSY5e^k-*$mr-7ZGG5Xk%xM<*E<-Q5$d{KCoY?ZMpG&7~-~ z6J&#UI50m?h3>^RlZ|U$VMST2C35_G?YH@EN&&B4A0#3~NBZIg>z#ZC+ZkfgP10Xw zFqoQ$@Eddb+k?h4aAuCfdV)W;G^RQ+up=ampMF6Ly%Y!7nr@Ulxxs2s*TvRNEa#-< zWEvp!-{Zx85p8t4bDcOs)aQ^JApH=2zb^mxywqgZzuB)Am~iuMqz=6FXTxV3oxUyX ztJDUF@yao|f15-vJ9OYWTQOdW1upPeNL|d}@b# z8vBqDQ-@;K(lE56H^=AX5J+^2CRpBX`fc>m`Q;nJzoA053w~vM)-e`XGa77BeiTRj zN2g)3ldo`m99ch{pVk)SQGkodGHyIYSpcSr?iyLoVn_;n>jHVyo3DUy2yi59rC36M z!!{w}O#!WI!ChsFKZluXz#Vlv5}>DnyjND#87fxz&kj353dzqAh2!1YD(Ls}oUumZ z+TWB?ZA4{0{UnVxiD&~5CRV=U3X~K#<M?j}- zM<4ytapclryCJ+_$7J0__DtHZ0R3<&)6Z?|+hsKeK-sQXUMyS*Z+k5E$1>G;B`M># zSRM?@-$zzZoKUdZ)iEV9Xdb0UW!^cWq?QIzk}QX4xy&b$(yY$k)MaThuZ|9h)NBhs zw)hgBwt&${xkp7)E$|WL5)mOO6PtU!aA%qXt*32&IKeW%#WrS@(++8!GMK@o>)*g zN1j>>Jcp$KI{da!W&J65b=Ijb(;0Gj^pj_==a*e~2nbCjA%=!?wsf6xd3KBeM z9ln@ET#(7IO;oKaGwX`rooD6%Dk4t1SM?7h0B;jJ`uyX>s=41zpcRKnRl?643rU8q zo_^V2f*(>~qZmXkps|hF$H{)PCov~t|3=eGYOpI+WzGsI<;o8Ctf*`#`$do^_Er=% z$F=nAMTRv)yC6ZF95^T=uJ7Km&r`(O14tTBN}>XVbGyt^2?Di?D_yN_8KcArd@P7WxFA9t}G1D0|P8<^K1d5mjJKd2eurnJN)xz7g zFX-Ipx!-v=w!3Vw%E&y4eEm-z(dTLL8Dgc%#Ye=W{+&HH-JFY3JGd-PkYcLu9nFfjHpBbtg|JVd^G|t0HN^di*C}UcW!R&L*%;^Wm4vriVT(|8Cn7Uz*B(SJ2F_X_cQo2 zB%e0cf0m*hK^N}>Pa_3%KJnfi)nm<&bc)17V~c-vd2MHB-D~||wutrY z>Q?hF+_#s1(#EsmOMSri{B?%;yCDEjxzBI)I>Yt-00Z!l39eYD6AY|Tt`lXoQf?A; zu~KdmZL(7C5`D4)%hfIN^(atok#)JC0YiU(T#$Q=>Q~=|QMiG(3Pco7UN8MNfdmI^ z{sW&RX~9g5QjK@?UO0=ILv;)5!95!`jC2P5LoVD&YncR7l9OnJ!#jri5W^(DkKi$z z7vICbJ}V1?!plJ4a2%fl)N{JKrf61K#D0w8VOf)~l&zPzpkp1y4kq)^K(tLv%RAXe z2G<4^weUy(!Bznu!P)pnlR!h~ezo8jf|^kzp7n0n}$I_fcgi?Oo7OX#rJ zRD+sK23S_mSj~OfSzTPvIKACqJ@mLtHnTFm=XKic(~N6E>W@H^@ix@vd8MFVz0xy-Frb5?t5F8YI}-{h8U#z&4>As3Z?X z7Uvz$Z^aD8I|C zQrD=S4lX+?K^e5YCs+!?EQdp2-(EU2Ui@K!eSsf%|1bBNUtno#3jF8iiVVZ8Yq=Y|1I4$)=dv ze^#DJU-g04!6Ou69Ut5dAZTT)Ltst--gzOZlDliUD%Ya2SEerXXGek)GY)*|D=c(A z!RQ(@E)SRqtFHf~Q0JorpSI1ROXwEA%WndXpcByX-{tuv#V5sYK3_wqz`X;zdf5Pf zKkq#pcZGUR0L99DRoNyS`(ttCLkly4F6cXj1m+50xs<-_K2C0PRB}~rD9%<#m(f)G zYBSfxA31|Ma^vD@?B_MfYPu-i+q2Rub($dy_?QLg_Da|>aA&rQ<@;I_*v)wDrVVx4 z@J!tC5{nzBzn9|qg|pLruvYpvxEQ(MASyJv@~(n-?l`g*bE)8<0*TmK!3L(UtYFU9 zNqnN8=2p_4=&e_T6(!0^Pg#6y!R~Yp{62=k)Zqf4A?wj`v~7P4R*k-EG=+(ra|LId z5^rv;%5UOsLC>Ve^S#0_L>!*3*Y}jS=;aJ~i&=oJr9-v|6ag!Ocp3ZRL-GkI?!h+K z6h#);y_g1UUtoGG=!Lci&*Be7n{gnI5%)VtsCUT&9jMmGGl0>WJJtH-iUfs%q-HKAeLklwYA|OGwFdNFNz5a@{}3E*i5D`^pBJ1jQ(3y+xT9@vB3? zHA=E_jy`x1;x`igUswgq6JDO7OTFB%*&kjdZ{ZdI5UsUz$%Oc*Y? z1nCt032$K=BJ=OX?E|H|plttntkFffctnEM;?HSItju*~LVz+r{7@BgchrA4a=aoJ zt5EQqf3QVC`m4_J;cf6v`dCp!NT_@mOQjEVKZ3NZ>mGlT29eJ+%l0qTx0quyF>v zW()as+e~B#F#Sp_w?x^Am&a7@z zRJ^jHYH8)}dyrv+sENwwW5jx#`A5M1pZ*f1>bEG*{#U{7Mj#^{{0QS9A5zF*pimb$ z*rKuUfsO!xi9pzVJ0OSbUibELpD?6aJ9fi;o|ER4ga3gCTxEe=TpA>?LY|Y3WtEgZ zS^LxAgA)}VYb0hk9^F^_khYxKcy{p8pp9-i8yzJ>ph_@E2e{8i0MbWID#h!LqtCm> z5(uK*N;_Qynwi`e;}+R^2dphz>DOYR&|d$}lWy-Oz~~yl^a4oz@Fo55^^0BiY(*4r z28eYvw>Kl-0o3)hvOfTTv~Pm)9IrD*Mq#{UFih7_$CZt+Z`G? zbp%kWdIMH-!l}{3V=YA^52+Iao3wSIV|PZLAQ5p8ie|zx12OVTh(W1I?MIF$--v zn+<|JM+Dq71?ho%OuTMm*=C-Gm9lJ#Kodxln+M-FNQ|57kB(BtdS{#b(X7~wnoo@{ z{Ntf1MC@zrc{?pcA3LIQ6oMRte5lXYR_k{Sn?#zK`yb3+Tua|-S)z8aQK<0p`*sCd zv)P6oG^Ks@CQl%j(~!O_JJ(Wgt$KyGL30m?^Z-e3uSup+qUr!s+S|w~kRrXbY_B9T z>`cO+4GuA7SgG(Ea;t7NYD~o>FMm;a-Z#Yrt6_ z8WNUF)ysKh zkok}U9fMiMEC+tAhZ2>-s29glxMEW66o14J%wux2bdXx*2Odq*xOLH=VuS)a@87>` z*rmzaS)FAd-$y-im}UEkD;DQLknR)UCB^W1zOjNhE1(ho7=ubiiNzP5;z~KoMS*El z6pN{A>3@xhIxurKO;ZoamNbx-(6W95HBhrgS$vJjF)m0zt%+qy=n_w=3E1p`+zD^# z6`rOKq1&`W+WPPJ-xYs^!OlG+u_N0P*%F_4e^3Pp=yX}vC)Lc$f*dy8U z5zMS2qoWJ^#GU)xO1y&VL)u1C8|!^g=~&kq$^w{&{HoFmgLiBOXE^z571KMM>QAgL z(FJ#jOYnVc<0-5eJ@=GY)8`&IOkm=9z7>}y*RsN>vK~0L=xV3vbyG=_7n;RPu*8Wj ztrJ%D14bJ4_;LoE%@tc`8u@=SwVa*F-U^@;d-lRclQzRjxi1vd+{^BJkj%jfaVO4; zCP?8ZN(=Rcf%N2O|K+jVB<<@wh&jk=RYF_|(*M1nNilcfpsBXP+5^i&@2@RYil#So z2(KQ^9XgQw32|vs_;AGWCB2Uu?|R&}hg?E%6pdn;;F;C2b(e+)WA32i_qr9JOG&nU zyQgKM`rb={&>G}^;MN}N3;U0Ut!HeKfys#;Q{3;;7?w*z;xN}trJfXSg8#}e)HL5K zU)Q!353Rc z1D(Q|m5xg--s+C!W&aPx?c~tJ(R|r3+Mt`-g7J8*hj3Z@!A(ZtIpqt2gpvVX!Wzc<sSEt? zbKV66Lng0fI{G(f-|yg|;C*L_vfEka^lQw`^J)q>q=_T<8EVQh)oPU?I z@)L9R{IG|V?(URz__tsO{dP}Ywa>%+NU+wc*Gzk=mDRA%GwQ4!rA^zUwI!}I@C+r5 zq2#N}1$=K|OaA|yisVVI)%y?cia9Z&AFwkdQg@stoZ!s*;V0vcgBbfF|U6>NVSInJW0&`pSZ^LeQD~7MW1=t40IU6y6!O z=@c?X{6H~ib@Pke4OlZOnL3!qPGOrwzKpB;!MPr*U#qD#3UuQoPx4HDVbY_q^ul$^ z&-|VqOIdTi`X+0)_JcFWy0m{d#G@YUy6t_p;z*N`0^*%{V1fBSQ{@iX zQ%M;%(L>!mQG31gT=?ua>)sx^9vz$Cn#cvxS6d)jN)sZsf#IT=>NblgL;?J;aT3Eo#5>SYKr%(ZoxGsm9xvZ*lz2O`V-QH~WR;eSaMM7@eFE3Ik$s@fg8sR{&) z35qA`YE)<1-vzytpcPO-i>H{b5E66wWQ{D+K#`Z0K407s{%9i*;mIu()^d# zCOI!Gnv~z-oS7BD>CKlOFmvNOeFQLm)4MH14Ey5M`KB1-#|Ct?Yi3OVW@rHkxPiz} z^Pp6c2RCIaED0jdVWn{5i;k1P_Ly|p#gy3l*uJ8QUgQKv^KSfmr%Tbp!p@9Fon&dh zB>IfTbP7e+MY(~q+wUDXDNQK2V-6}@cUVHIfgbn<*9LR(j$rz)4*fzFeoY<6gmGe2HVwN*Vs|5^qix|C&*=p1v%5c1ir82b zyZiHe1(jN4|A9tZ)UqX|3l=h5rDK~PA?%C*>)QyN;A6O%_Aihyj{$^Y<4mTl`j@Wo zR9>Qj4Gsgh9qO=d%YC>JeH0O_5elqyNAxc_HT1TqTRR+U6V5&dLQKJxIa}hup5L1e zC9Id{AseE??R`o$@EsOD7mYr1u@92$*O(#;QUCO)(z?OuvtV9s&)2ZpAfWZ`+&u;x z2m6;ApvY~ax2BFiG_6uXLBMEq5h2!$%_Q&LFZRbnbz!an321{4e23&eDs z<0Uc)PpBPtVU9W7k$NamW-wzHZ@=UzfW3XT^`Dj!!DmE?UO=1>K@s{^QE}sA8W{g^ zKT{sf+mGuV?f$)@Wz}q0N;0qW5tTdvsp|5L^XHe6OQ6syC10#ws;>|epr!CvPebT0 zDJbdt+I2B`teL)M5%PVq(eTcI&oIA7T~&stx*vLUG*J~H)|#-T3pn|vMjZL-{#()8 zt)jm}t`z?&9+J(9n?V&OU&z?b0<|UyZN@L~OB+itbbg|Xi)8EK0nvdbrSAX1s0E}X%%_*!|~MnTSPo0s}b%lJ|@!4cgnzYZ^M06;THnYPI>H2up?q_ zMnmpqJr^v^U6Z=%ilIq!lXy^8D|%ggOq8SVn1N{?ZhhDCttz;8MZol6TjZOT{s&u+ zYCjzFQE`}tV>m3;Vut{Vwm2s*j7Q$Es|A>Cr0QWPu1+N7A*Cehylag>*kqdgEK!p- z8}lD6iR`pO*L^ZGYbu9gWUcTdI8Dj5v9VK~QHKBw$p-&Pu|l)pbSDCc>8(>fKQ7g+ z2JYb?v6l0Ekmk~_j}l*k&%a{hsMqd{jG54^p{Z$v9d>LxEvQTJl@1GS1>9KQ&fv?hN1VJ;#i`a`*h(jI7c&GlMGQ~!X4f{mvFN@k zIyg&cBgd(xEO}?N@ITg-QB06`H+Uajzz5$af3n*CH^EaIV5H&Iw^Q+x-*QRqY2C`Z zNmom^qI&Y>ZD$K0%>K6v#t}jaaT{=PadGxR(Cq|>S!!D6diSkVRa^GauXy+ZyyOC$ z06jMY0J&K}8(=5%TkI6D2e?#rec8e12?p%E!!Z5@{?Zc#^sJA+Zvt*OzqcbYqmyEa z1H=6wDlTXk^ezKYSLGKNI=%KV2w6Pd_EW8hu&qZLx0-{~;ARtsoCHW&zjpv{J@nj| z@xr6U|BZ|m+;sjgWOVkDX-D29vGxDpqF?m7S8@MhG%GO)USCqM5BNOi9;(H9`krBV z&U7zE-DRXOFj@h#sJz)XuIS%f`g1aSnx^UeH#3^{#?Y&}<*H8+XfgC3PA;;nXTTo! zpB3U>HyyV~1ABbX$9R!m-R{+MoazV#pDc*LWzXmzveLk2Hq&L)oudh8ww%6g$g2&f z_MW~m7f;pF9hlOyVO*e5>P0js^IlHg%l%N?+X$wyZ%cn3%W6iHNtf!1UXNGZkA7wZ zTVaLK0wb{|Q(DvyE|tXyTJ_Uvq&vW3wPF2umX*ft?0$CpTGh$7qRel5SlqI5t7ZNF zz@y_sqyB@ArgR?E{g@MEW3%*gY*Gilwp(wRreXd~)!djYAJ1KC`2U5BR=KEvo{A<% zF`C_3RS&#gF|ef&Hqvj(<2JmOCkqTu0f(_m?ZQ(>8owp}gpWz?sO?4A9Vs&DNB6ek zw)X3e3nwAfJ;(Y>tJ(IcywNN7t+&TYo(FIe?yw5Uhn+Dh`eN>Fob=RNO(hAgGx}?}`K)HU{DXcsu`W7p~0akcXQ>&(VCL5GeBS<``plp4B)W^!a)S zGZ{>t!5gl;sP_6Hm+WZ`x5^S~IZm%GA()UTTH{W$NY$hT1$?*c9sQ)OBj^MQlAIho z?cqpmj#~6DfY8h@5|?4929dqB+BB)ppfZ_M<2KwK92%VdVdQexPvE+gP1gM*Wy77^ zA#fK)9SHD(S%hT4-~h_SJv`g`&NABO7EoYthopwr*x2*^ zLHk0vGjCWhFcesA^tJFy2EgiO0Ro1aW#nYr97f%> z028Cw;Dxf*8mkSxaz?6P<+<7FjPy)v(}W-hU43!khJS4~1TSQK=fmb0R4snfW!uAt zKI9OWqD>X;p1RFFs!>}Y)jO7jLSUN^t`d#NRrVsyu=2)05}4oxg9X2vMS0=QeLZu$ z>4lKk*`;{fLz|1d9YjW1G%^fYLaIwH+cTU0^q&Q|6V*vDJ-~FavZ6&&#NRK^`-40N zLGQ*fkuBY%)hRg&KT+WfS9+88^H9MUU;6Pu<9H}2+#H%9KrbUG+mD<4kClFg!vL4n ziN3!dq=OvE^9_2(`3C|XcAb-x+z{Z=?3p!qaP@~zw=Z^7LAaC41G`_IrCxst2rHl)s8kL=lO=Ol!m%Cv1v_-EOn zEQfNht;YVEtb9^yD8)jL2TKt8b}1!7haa|X@7WpNJpp_(*TQLDDr>72(b zxVS+`;c&k#4h3nVP_03p5{8&Ii}MUxCn$-ZCQvrxyG zuJsBK+V(9`X=DwCyF_kj`$z`b0?;Z=;i?Q z^s}HInq9Ic-K6HWu1{yDU!#4NvS%xw4<`!9&hbv#O)luH!OqZ z8rdQ)B!glgLHDS0gcp;|0x8Drlrf65+QX6z12it#Xc)<4ZnlD?I1d)tH{dzDsm%s= z?4~Ro;AhAuKF%C2F425|ZFUfqrTt7kroErmMYA!KPj=1}Cr(F2_KfhbQ-gzu3?wM& zXgx9(Tc%Dr>+V+Ie=TZ+MaNS+fJzhFY#h+?OkBD|;Bgy`}37*va|Ff7YFOFBU(0{_7@kK1Kj&U3W4M0NFUei<{NA@5+ImlJ|cu0#G{vWNoDb07Y*- zmH;=U$Ddo>(pdvo`C^>*bZk^T0o?906&Yw^(i*ZJa`2%95jhD+zySd6TtI>Q+UJh zjPXC}Ay5o$b}wh@IWIl=eUnc^H!&iVlWAYam{q_9G-~Og#)&1tg|LE%F~^0_fECco zp~COwCG<(bB?CydXK}CAh0>l9il^$S7d7A6fKfxQDo);#1cJusalw?UxM2XN<=Z#K(I=L6C_jUs-TG z5xbhBt}~@i69&%s;40dQa8}EV7@$IaeB7uJRkMB%5jxWD&xrw}^5q6g5pskL5G4|y zykc6uoC#zrS#usc;1U|*3%DE~r;a)DZH%z-n5xZ@$}xfgP41>}u>fp@gOUxwP!^0l zJ7)WIDPkf<3EX)@+3!yl)|UEcF+Tz;aGfk_qD{X?^btXhzmJSElkjH(?4@tO95xa3 zajq!C|;QGSfHXW_B19(hH16X~{v}6FtzGifN?d;5ImH~?ozH?N)S66_|?dpkV->&Ov z+Zn+xxt^7>EB@=lz3#m`sp52b7q9W$Ee;r!`y_y!_4RR#jrV-^<{$6%q^zjo*mL|IIukwo-xnBDW53U?MtSJ_udK%Vt(4mt}W&bb-tR<$Sj_-n>54X z^I6J3H@%Ic2@2e37^M~E)M)XTP5NXA+k?<2so;#&LQwk{BBUUSV?gy|N)eFS1yC}l zU*1mFt|QjREy!PQJM_rpoht#3ae>yICxO9*yTcDG=oc}D}Q#Y|*wgIq_$Vw*hmMn6!x7-W0lBGWg{^RB@@f6@1mAY zAd~RCxOB#Y;xKgR5Qwi~G>SAxuvQaAkkqDU26i6WTdm z2%F&nIMmjEv8rC4S($+kd`sk>y(TTTHslkGmU(#YqiNa;Uc3tY@OtwAax=2o`B!NrzytQmW zCQJAHQOS(L#Z}3S!6iF8c#w$xEFS+X0k2-_c~oiNxe}SVB{CHbFA_p}oAAxp!X1uB zy?@`Uc~U+opN_z|S5sYXGM@v9MM1#OU*dQ>a8(px!oCqJ4_uawid6)Gj&23GqYRZ9 z{a2+zqpy}{br1>6_C9G5eE_czPNZ0)%7-7>R!J5fhHBPhOU%nIm)wU=D92D{I4W8s zilD-)ry1(dMmw}b*5^*mh>7##^~=FaXiaofMcLQO9$1mleB*2)65lsU149e`1#q z7yvq?;Ee1EaqOKo@AOJ$PCjl;aGRc0fQF=9#X{dZGX(WKT%LV|ZJh>HSF>5@q`|uT zmKP_wDtnl<#GzuI1HAFrBPocRxjP1XCWfo5RO8tZosS0A4t0WRZ00Mzi}I~(kGSW2 zjV$wkw%5|&AzO_+yvPlSE(&L@s3j5|^I*NOVlc86Gp^byA)6?<T|9C&f7;PN;ET_tu5-b_LcEA8P9JSGy$ow%UKI*Ut(KeE` zQ*x`Lv73GPk+VY$y9Oq7v-qfZ-6};C4^hs!F_Z)s2qmHbw)<1{@OU%I`ycP{EHY+` zEVV1kN|(Pd6_#>!8n&$;k;6;0lyZ;27G-n6~cIv){b5*gBTTo+zraUi>msK-B?3eb=@44E{bhk^!PJ3gnZef@;%Y8tL|(H^TN+sO^?;dF3SVdR2a)~^eHoFrKw!aBL|Qt`!yrt=Ycf6fKW!} z8SPQ440r#4fN$9a2Ha2fj|mJ3lmWvehWk<$Uz_cF+G4M5$C0?`NYcYI3@ah=1351d zn;bUN>gMSA`ug7Y93p=Mb0zS@vih%;gUHt`9nUsKbD-UO3IuDuXpuQ+E%q~NkYJ2E zwpFgy1|Pg4;4QI8yZzfRSBan+yyf7wDW(Z+iFOB{JTTBOeva?r4Y9qRQ==}}MJuPI zn#gwTp)6BURph4;@3c{sWteD4Nm-y{D9ONBbcrIPx>!=+JBh@2(VupxIL1{ARy@H) zqMU+>QoGT`#gEhT?K6t#9hVnxV(=+D4D1O7n$lA!b49luzU&S*ep)U?S1^!bIvT#T z?WC;b4)?$Sc_A0Vej_p1xzN+?;WagP;jMEycU8ogZ*2*TC0jKg9^@VpzA;3R4%(IY z%o%q1g?uL?HfHRZCKrONHAI8R{Fl}3z z13&-@$}!~SXzmutLo8M`cGU9H!!uEwmy@$==7K_L zF_-5n`UaVp99n6?8~ff|SBh8)iaCtp^JsO*!2pzG@7JpLp zFR!=*NeNl_m0ToU1b}0B+ZwU*?BM68`lEXC6ojCPBu<>!#t)x1JCQS${y_POsXZql z_zU`SUu=O%{}4#+?mj3upvC){M2?Fi?w0b7S`73Xg2)zOC64b|9 zMtz6z14Y#Iwh55WZ>A0*jJ!o46FY95Y5U_t2Crvheno;kBu`&xV>(K_=453_lRW>K zPs7s$v2GcB-uG9JoL#);s;K%=@a$r*Rac{iOy;GJ6&1>r;B9ffJ`RlpIW{L^Pc|~t z!@G^_g^DYH)d%46Q|;vJdOKQa1F-T82-yJGPJHj2T|T@LWY{B1#YJ zqYoR#D@*xP))C}}(~QhtLYkLaVO>K0z?PmRSqW<4jzNb=ZB>w$uzS~+v3tv#A!?hO zAZjhG{HDNR-ag+|o`E#jO!EcLlseO*fGYXWsJG@#d(G*$@Tk!jvU4sH9k#e}5vGpq zUv}cTU{xrKg|h+Q=Tp#@SYr<_W_eQCJ>I;eh-Zl9)HykXtilXNsqXx+e-DrD_QvdP zV!8?j5`n5VZ{9&E10 zrUt1{Lf2k#!sg5JMc>x64W~w@ER&2It2EwBRY{-P{@t8y4z9$_*~HI794d=S;l#~V z;a9%i#k84%DiJt;Eko+`ROG$p#k6m)#O3ZESl4v!1?e<(P~PHOzJy9)zVEY5KTvhY z%Axsc>tT2>Eion&3!@_Vn`+GSSx5^jd*6B^sRh;62xj84cDO?|D{Fo(Y zRuU!fAvHo^wm=$q-UGiu|EG(#s-O9=&0~*rRN^ z_SDk>t={*rajrUIwmmVjBp3BYC?R|sZ_|+o(fM?f!9#bMIAt0Eq|$or)FO;ZW&;uL zta$ZzRi*$_b&iY3qJj8dGab}{#W87gh*2P8yR{Yf3FYYcvgAPo!sLH4Ir(4_@04#e zUJ(;@vx8N$Q}MB>30w@I7a-J`-h&nP*H#^E%o7?8MikM?NLjB6L(ll0#dV+Jils zTUHwrd3Wk{MRuWdY31>%BBcP_k_8aWj{I_yKTRx;QVpz+0~N(j+@0Vli^bNWq6%=n zcW8a^v!Nz_rr|=NuV z2>WbgEhb5?Ad7#WWG`rhaEfp_Rg0J{PQN~%Nwc3MA@HeVb(Io^I{u-;ld%+PPYF8Q z_7zG`REYnpBbn|MS~!T8?uCYCa~gSk>xws*N_Fry=S>`O{nK#xh)I;vB2^l%PKie* zbPfgNMj@NnNLViUEOc7o^K4|TkH9FD5<7V&&un1RJI=^*UF*w72U)IzD`7n_m>G6; zcjDc)7+|ip)P~7OWa7-8nh!Kqr*G`e#Fn_)nYl9CV zNEFH7TSPQonIg6OCn@UF-M{rYzfj#THxV0vRHT9~(Ndr96&I^xbsa*ETm9C&doQ|5 z3J+R~&~+gGWi>0ArL#VFmvv8f28}xgyx2&0N}?M(x}pT0g^8;w-{jSW@x{|+Q1o7& za*P3^n9e4E3+maYMwp`^e7&CM5^dM|4OzGIn9t^f^aTVx6_;N>5HGH$`{zMu0n33o zV}`{&(3bKu1KV<$miA`Ec+{ z65hrl(#xAIW-3-_fyV(7vvzvQor)LxSMFQPl*z`&T3ea`En8h9j|6O#qX)6~Q)*H9 zq8ig)C#{oN$4uw!KGTf|98ERY)0RB!ZaFPt9bw~GuO6wI#uY(4M&p?A8)tqSdF9XR z&62Lm+!MSRn`(M^h@qw=2zIGc=^V8FC*{j|O)lo^acu_SW6gyB@8t>AhXdE=%3co- zN$APpZ6$7Y%D`_YcUy#+>Akl$9{!Y*llxEY?3@j$vLSqHR^xv#mDI~b0 zRwHde&ehOopO3_Ng##?&VrLv#g$s`{k49WlCl;xqXT)D_*d-F}(rRZVk4~Nz(>_73 z+Jx_!>a?G(>x+FPC4a>-^PSkmK0thGL3JN1IW&RF?thg%cs2O8S!#=QOpn<#=5 zb4x)%?YFL34oGD`g-SH0!$W65iKp0!X3*y~5Zc7bWPVPlw3M{QVRF)K`p#=VQLbQu z?_2>}qpyz9itqFrso0`LPUvS^6Q_d(#u#(nrN~zip@L*_kKmDOfH6^Vb&GSCnUseo zaVZAz@ydSMLp9)D67xvjEZA3aMpMbg*(H@Za6*q_HkT6Rkgi1SGQuFI>XiQEIOCML z;r~Ksog}f6r7|R|alMz>l=ds7Yww<&d0ap+{fs;U#3qgL@8w1%2+|TlA@bA7Rb?HM zNQX)q+6+BIYP#~qYqT@aa5y1=H|-eRcx_Hc3kDgdZ=n(4CquT&GDGb4Hu6NOP2)g5gF(=xVH+;+$uM(O4yN@wv zk~#o&V;HGs;KWFPy;+vcHduD&q`fc|N?bKImdyn=n>1ecyt%P`#21%Xk8?z-2Wn`R zv`r3qb&jZ-2Bt`H@zc%!LY^Dm`Pz0CnDzbPED7#}Qi6eg%KM(p)vDFcO$BtzT; z6EdSLhYD$MZt`*=cmPwpGIzE3+XBvSaaCZ>S4l5PM4;^csN9uPFfClC{E>Y8sd69Y zmcb71+yW5KVH4VF^Flir*lsggwlzSQ0{OJzUB9r+nQ&=hPhh$Stjq*2!vxkP43mkY zh=H9`W!cFDpLp1W&!}R_loM4i+GLHUd=5}8R#fZIkOir#t=ng-qJy28#Z?N2FG;*H zb;3<=P|RVwLh$&8=~DLP@BqAD(ZDM3OmI5AW!f#e2RUsIH}x|2@j9Y7eVpu1&O=k8 zYk6dk(@jj%nZC5e;z9I?yxOy_oUidR2*9WbVjI^0QGFoI`+Z>F{-*OOQNKjmErV#P z5Ohdf&V6Q~j6T9%TwrB&R^7BvPW%6J$qiWG!2461WjDh`6;M zh-HsU%a(a;yCr)2MXLro&Iy&JC1HCP=oJ@k4MyZdgJv_HzxS^QhZW1LzfeD;P@Ngg zI`wlc(j^^MxCe&9?b3BM*LI6yTd76{T9ayvUk!2Wqimv0twW45}5*XHl3*_1+-s~*q&pUWc78D z$TTlVpB8jA=>APP8V%iHroRb^ciobmClP^UXL?u)ML)xpB@W3jHAICpXwyRu38L+c zBq*o}tBC794T9pg$6SNUX%v=xosao6?c4@s@9Wp14MpnSY62*K&zw~JVnHJp!;FYy zctKl^u87f(i=3nTdsCJ)GH1aY@Wy08-e+x$62z6ux*+|`*gjQ{UDx?N*rP{_7O94s z2U|1?4o?%}7N9#Se9!QQ$o#|$TlVBT(l|8&FR#FE4s&w^mMqc~>YZxs3dy;_z|M>$ z42p1gmhtmVomC5*MZe0r=ME$CpjOWBo5B@hpJWKsmQYs!_*~Ri4-cpi$P#ocq`iq@ z`24ZaNVq18tJ%q?y7;b)lY*eZBb$^!w@kjYQne5=Va55(<30DcvE-*5uq|`hS#kQW z0(au!v?bJ5lFjCPoJiaY6HGR9Xt-2!WvdUkSAnD`F1&2h3v8@~M21xe!SvxqZ53^y z{#bFbVd6nKK|?Q{UveY(G7hm4@$0Wu|A3h%2$~Hz%yajyN%-+8Cb{{##};|<#-?M` zg;EE#)&k1$fK2OIJ%-I5&-@WBRmI9chWZ~0SHw-RQReVk0U_E!*1$Wk-qS8BNaf9^ z3J4lwquX(7VpoWXaa}$um6RN9`D!Gzp@Nb5K*?Sx?tY1TQ_tAgIjK!9tg^vMsE zU;(L8MQHe`=+K4uLDkCV43MVwEn}x?0<yKqhDBRPcE<#Kn2!H?@*xy?r~qEV6Xo!-XE=f)f~75_Y2M81)pV%)VViW} zf3IU_IoRmvnf_@RMkg=3a(s^14yS5Jo*%6iiy)>xu&d!<1^_tfpt%}w9HYPoa{Ls` z$|1#li>85tuJHm$PrECd2{07Z+ncMADWMfa?GH&9J2qJ?;r|Q|!NdOx8v^lKl_kD( z;pJkDTpqn3I4GA#9|$f^5-=wK(&iJuHZ#yevcURK0oyh|bRSnWi9sbvNBRdG_AJB- zD}lYu=PjfNHg}cIMau9s*Q$^WGZc&j5{5(q_iKv!j%h3Bus&2S9KzH%2|^D!f#(-! zs|ttRE!n6`XKYtuqnn|edre+>8=R8S>LKm9%=ig&Q;YX+vH0z1K==n?_UEM(!A=rk z+uosBK8_zGBj{0}D!XSEGiS$yCwKso>n~*2t#dy{4-Tj`TE^4=1WjugEb!m~c7lz6 zz5J*Wo}g*s@hWJ2vyZbt3lG$kaE4EQJdIX~MXGG=ky(iW@5oUbnH* zOHsu5TM}l8;@$rgO<{f?ELSjHUtw&B(rK=@FIR#TDQi=O{0*8R7%Q=XDZ))y1kiAA zOx^jxR=+JnH2-Wsw#WtO-7Du`Y$Co7@)<hDGmlr{;|nIwvS$jlMgpkJdi9UTtQJ zfbIKZl`J>Y;$|7+*)p1bi_+IB+8O@QUVr`WYjoZVNK~rjHi4-o9ax|17qwnLzLA*# zLF)><<|nfhFb&A|dUS*0TyA$u*IcqmFHBIg8b&bv4S-Qhg$~=mR5#ITa&)JdPS<(| zR*=L~&yNRlf8hbk6h|BnT>g?X)&p1`ZF`Q`V*O0~IM^?AZ>@W)^?$Yguh#$7`oCKL zr|JLrQK_#v`?+5K*V*0K)z5$Scir0m*InxWr2Bu?sRDDPSaaI*rw6j3D7}DnKR51E z)|9gS9W}t52T9_Ond6Cb`DoxY9A&G^WL%oA%>LVOV_RhsRK zrOkid10Jl&qECTv!@|CVR~A_|C6y!!Vhcp0*W}!V1v_y^Ey>n8>Xnjlqc164uExsC zt-kiB;a?0aXtM=7bhm5u`a2eS8fJjf%uv=FNK%6qm5DyeK8%BSU_{A67RT>jcpsKA1dU^VF_{iL zbcT|6FII7!33T$4*zRVzLd9%qbLq+`|BygwY(q`atJhWh&g3X3YES6_8W;{DJVA6| zt(K$5d*u{jr53BusfDBAU?sxU+_BEd-^i(TX`MgnIW2g%WZ~0mW@ee!OSsgcd(AKk zA7=q{jP=^){bHuyhrE@iyXObATDAz-J3qkcktQubzR-)t<6LV&o!!1316kq04%Wy* z?DklM?=R;!#tNjkRLP0 zW3*=tChVCQfgz4e&8+ncpMOiKNT%=M3y#0=SGlazHlN(bP z?H|_Dppy4#=e%{@i?rx)2Sb}7FyfZ&WbWPBg<1Ggak-Yj8Jpo0V!;+!WE?;Y`E@4$ z+}3&9T-MI})Ekx;j_Rr3IQ8Gn+}Zg9{r+(_Ee(I-w>Zg9{r+(_Ee(I-w>Zg9{r+(_Ee(I-w>Zg9{r+(_Ee(I-w>Zg9{ Vr+(_Ee*T)z{{!ti{6ql20|4HA^-ll* diff --git a/pyproject.toml b/pyproject.toml index 67e8b55..2ffc9e1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "aemworkflow" -version = "0.0.4" +version = "0.0.3" authors = [ { name="Geoscience Australia", email="toolkits@ga.gov.au" }, ] From 99c55fb851caa4291ca3a514986facff7fadc453 Mon Sep 17 00:00:00 2001 From: Melyn Roberts Date: Mon, 29 Sep 2025 12:21:09 +1000 Subject: [PATCH 06/13] Revert to main --- environment.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/environment.yml b/environment.yml index 9a32084..640cbfa 100644 --- a/environment.yml +++ b/environment.yml @@ -7,7 +7,5 @@ dependencies: - pip=25.0.1 - python=3.12.9 - pip: - # - git+https://github.com/GeoscienceAustralia/aem-interpretation-conversion.git@main - - git+https://github.com/GeoscienceAustralia/aem-interpretation-conversion.git@PV-2480-add-flags-for-aem-workflow-cli-scripts#egg=aemworkflow - + - git+https://github.com/GeoscienceAustralia/aem-interpretation-conversion.git@main prefix: /opt/conda-env From b047e01da457c57d4ba8fc2361e7a14d73512add Mon Sep 17 00:00:00 2001 From: Melyn Roberts Date: Mon, 29 Sep 2025 13:50:50 +1000 Subject: [PATCH 07/13] Add exception handling for scripts --- aemworkflow/conversion.py | 557 +++++++++++----------- aemworkflow/exports.py | 743 +++++++++++++++--------------- aemworkflow/interpretation.py | 93 ++-- aemworkflow/pre_interpretation.py | 228 ++++----- aemworkflow/validation.py | 181 ++++---- 5 files changed, 930 insertions(+), 872 deletions(-) diff --git a/aemworkflow/conversion.py b/aemworkflow/conversion.py index 11e63b8..688e424 100644 --- a/aemworkflow/conversion.py +++ b/aemworkflow/conversion.py @@ -33,182 +33,190 @@ def conversion_zedfix_gmt_to_srt(wrk_dir: str, path_dir: str, ext_file: str, log """ logger_session.info("Running zedfix_gmt_to_srt conversion.") - fm1 = " {:{_f}}" * 7 + " {} {}\n" - fm2 = " {:{_f}}" * 7 + " {} {}\n" - # regex1 = re.compile('\d') # this fails for negative numbers - regex2 = re.compile('[+-]?([0-9]*[.])?[0-9]+') - - srt_dir = Path(wrk_dir) / "SORT" - get_make_srt_dir(srt_dir, logger_session=logger) - - dcols = ("nm", "frame_l", "frame_top", "frame_r", "frame_bot", "t_l", "t_top", "t_r", "t_bot") - exdf = pd.read_csv(ext_file, sep=r'\s+', names=dcols, header=None, index_col=False) - - logger_session.info("Testing GMT for +Z ") - - # pdf_list = [] - pcols = ("nm", "fid", "pix_x", "pix_y", "coordx", "coordy", "col7", "col8", "gl") - for nm in exdf['nm']: - ner = 0 - fidd = 0 - row = exdf.query("nm == @nm") - y_scale = (row['t_bot'].iloc[0] - row['t_top'].iloc[0]) /\ - (row['frame_bot'].iloc[0] - row['frame_top'].iloc[0]) - p_file = Path(path_dir) / f"{nm}.path.txt" - tdf = pd.read_csv(p_file, sep=r'\s+', names=pcols, header=None, index_col=False) - # pdf_list.append(tdf) - frst = tdf["fid"].iloc[0] - 1 - last = tdf["fid"].iloc[-1] - 1 - - gmt = Path(wrk_dir) / 'interp' / f"{nm}_interp.gmt" - - with open(gmt, "r") as fin: - lin_lst = fin.readlines() - logger_session.info(f"{nm}_interp.gmt successfully read.") - lines = lin_lst.copy() - - with open(Path(srt_dir) / f"{nm}zf.gmtf", "w") as fou: - while lines: - try: - line = lines.pop(0).strip() - except IndexError: - logger_session.info(f"{nm}.gmt processed") - break - # if not regex1.match(line[0]) and ("@D" in line): - if not regex2.match(line.split()[0]) and ("@D" in line): - with open(srt_dir / "met.bdf", mode="a") as fou1: - fou1.write(f"{gmt.name}|{fidd}|{line}\n") - fidd += 1 - fou.write(f"# {line.split('|')[1]}\n") - fou.write(f"{line}\n") - srt_file = srt_dir / f"{nm}_{line.split('|')[1]}.srt" - with open(srt_file, mode="a") as fou3: - fou3.write(">\n") - fou3.write(f"{line}\n") - # elif not regex1.match(line[0]): - elif not regex2.match(line.split()[0]): - if ">" not in line: - with open(srt_dir / f"{nm}_hdr.hdr", mode="a") as fou2: - fou2.write(f"{line}\n") - idd = 1 - fou.write(f"{line}\n") - else: - col_1, col_2 = [float(_l) for _l in line.split()[:2]] - x, y, t = interpol(col_1, frst, last, tdf) - dpth = ((col_2 - row['frame_top'].iloc[0]) * y_scale) + row['t_top'].iloc[0] - if t <= dpth: - # first_col = t - dpth - nyp = col_2 + (t - dpth) / y_scale - fou.write(fm1.format(col_1, nyp, x, y, t, t, 0, idd, fidd - 1, _f=".6f")) + try: + fm1 = " {:{_f}}" * 7 + " {} {}\n" + fm2 = " {:{_f}}" * 7 + " {} {}\n" + # regex1 = re.compile('\d') # this fails for negative numbers + regex2 = re.compile('[+-]?([0-9]*[.])?[0-9]+') + + srt_dir = Path(wrk_dir) / "SORT" + get_make_srt_dir(srt_dir, logger_session=logger) + + dcols = ("nm", "frame_l", "frame_top", "frame_r", "frame_bot", "t_l", "t_top", "t_r", "t_bot") + exdf = pd.read_csv(ext_file, sep=r'\s+', names=dcols, header=None, index_col=False) + + logger_session.info("Testing GMT for +Z ") + + # pdf_list = [] + pcols = ("nm", "fid", "pix_x", "pix_y", "coordx", "coordy", "col7", "col8", "gl") + for nm in exdf['nm']: + ner = 0 + fidd = 0 + row = exdf.query("nm == @nm") + y_scale = (row['t_bot'].iloc[0] - row['t_top'].iloc[0]) /\ + (row['frame_bot'].iloc[0] - row['frame_top'].iloc[0]) + p_file = Path(path_dir) / f"{nm}.path.txt" + tdf = pd.read_csv(p_file, sep=r'\s+', names=pcols, header=None, index_col=False) + # pdf_list.append(tdf) + frst = tdf["fid"].iloc[0] - 1 + last = tdf["fid"].iloc[-1] - 1 + + gmt = Path(wrk_dir) / 'interp' / f"{nm}_interp.gmt" + + with open(gmt, "r") as fin: + lin_lst = fin.readlines() + logger_session.info(f"{nm}_interp.gmt successfully read.") + lines = lin_lst.copy() + + with open(Path(srt_dir) / f"{nm}zf.gmtf", "w") as fou: + while lines: + try: + line = lines.pop(0).strip() + except IndexError: + logger_session.info(f"{nm}.gmt processed") + break + # if not regex1.match(line[0]) and ("@D" in line): + if not regex2.match(line.split()[0]) and ("@D" in line): + with open(srt_dir / "met.bdf", mode="a") as fou1: + fou1.write(f"{gmt.name}|{fidd}|{line}\n") + fidd += 1 + fou.write(f"# {line.split('|')[1]}\n") + fou.write(f"{line}\n") + srt_file = srt_dir / f"{nm}_{line.split('|')[1]}.srt" with open(srt_file, mode="a") as fou3: - fou3.write(fm1.format(col_1, nyp, x, y, t, t, 0, idd, fidd - 1, _f=".6f")) - # fou3.write(fm1.format(col_1, nyp, x, y, t, t, 0, idd, _f=".6f")) - - ner += 1 + fou3.write(">\n") + fou3.write(f"{line}\n") + # elif not regex1.match(line[0]): + elif not regex2.match(line.split()[0]): + if ">" not in line: + with open(srt_dir / f"{nm}_hdr.hdr", mode="a") as fou2: + fou2.write(f"{line}\n") + idd = 1 + fou.write(f"{line}\n") else: - fou.write(fm2.format(col_1, col_2, x, y, dpth, t, t - dpth, idd, fidd - 1, _f=".6f")) - with open(srt_file, mode="a") as fou3: - fou3.write(fm2.format(col_1, col_2, x, y, dpth, t, t - dpth, idd, fidd - 1, _f=".6f")) - # fou3.write(fm2.format(col_1, col_2, x, y, dpth, t, t - dpth, idd, _f=".6f")) - idd += 1 - - fou.write(">\n") - logger_session.info(f"** Error count {ner} **\n") - # logger_session.info("** See z_err.log **\n") - fou.write("# @D0|DNDUTL|||||||||||||||||||||MAL|\n") - for i in range(frst, last + 1): - tmp = f"{-(row['t_top'].iloc[0] - tdf['gl'].iloc[i]) / y_scale: .6f}"\ - .rstrip('0').rstrip('.') - fou.write(f"{i} {tmp}\n") - fou.write(">\n") - - logger_session.info("Completed zedfix_gmt_to_srt conversion.") - - return exdf['nm'].tolist() + col_1, col_2 = [float(_l) for _l in line.split()[:2]] + x, y, t = interpol(col_1, frst, last, tdf) + dpth = ((col_2 - row['frame_top'].iloc[0]) * y_scale) + row['t_top'].iloc[0] + if t <= dpth: + # first_col = t - dpth + nyp = col_2 + (t - dpth) / y_scale + fou.write(fm1.format(col_1, nyp, x, y, t, t, 0, idd, fidd - 1, _f=".6f")) + with open(srt_file, mode="a") as fou3: + fou3.write(fm1.format(col_1, nyp, x, y, t, t, 0, idd, fidd - 1, _f=".6f")) + # fou3.write(fm1.format(col_1, nyp, x, y, t, t, 0, idd, _f=".6f")) + + ner += 1 + else: + fou.write(fm2.format(col_1, col_2, x, y, dpth, t, t - dpth, idd, fidd - 1, _f=".6f")) + with open(srt_file, mode="a") as fou3: + fou3.write(fm2.format(col_1, col_2, x, y, dpth, t, t - dpth, idd, fidd - 1, _f=".6f")) + # fou3.write(fm2.format(col_1, col_2, x, y, dpth, t, t - dpth, idd, _f=".6f")) + idd += 1 + + fou.write(">\n") + logger_session.info(f"** Error count {ner} **\n") + # logger_session.info("** See z_err.log **\n") + fou.write("# @D0|DNDUTL|||||||||||||||||||||MAL|\n") + for i in range(frst, last + 1): + tmp = f"{-(row['t_top'].iloc[0] - tdf['gl'].iloc[i]) / y_scale: .6f}"\ + .rstrip('0').rstrip('.') + fou.write(f"{i} {tmp}\n") + fou.write(">\n") + + logger_session.info("Completed zedfix_gmt_to_srt conversion.") + + return exdf['nm'].tolist() + except Exception as e: + logger_session.error(f"Error during zedfix_gmt_to_srt conversion: {e}") + return [] def conversion_sort_gmtp_3d(wrk_dir: str, nm_lst: List[int], crs: str, logger_session=logger) -> None: logger_session.info("Running sort_gmtp_3d conversion.") - proj = osr.SpatialReference() - proj.ImportFromEPSG(int(crs)) - result_wkt = proj.ExportToWkt() - result_wkt = result_wkt.replace('"', '\\"') - result_proj = proj.ExportToProj4() - # print(f'epsg resutl is: {result_wkt}') - # print(f'proj string is: {result_proj}') - del proj - - srt_dir = Path(wrk_dir) / "SORT" - get_make_srt_dir(srt_dir, logger_session=logger) - - zfshp_dir = Path(wrk_dir) / "ZF_SHP" - if not Path(zfshp_dir).exists(): - Path(zfshp_dir).mkdir(parents=True, exist_ok=False) - else: - logger_session.warning(f"{zfshp_dir} folder already exists!") - - for nm in nm_lst: - ano_list = sorted(glob.glob(os.path.join(srt_dir, "*Annotations.srt"))) - if ano_list: - _ = [Path(_f).unlink() for _f in ano_list] - - srt_list = sorted(glob.glob(os.path.join(srt_dir, f"{nm}*.srt"))) - hdr = Path(srt_dir / f"{nm}_hdr.hdr") - with open(Path(srt_dir) / f"{nm}.gmtsddd", "w") as fou: - with open(hdr, 'r') as hdr_file: - for line in hdr_file: - fields = line.strip().split() - if len(fields) > 0: - if "@VGMT1" in fields[1]: - fou.write(f"{line}") - elif "@R" in fields[1]: - fou.write(f"{line}") - fou.write(f"# @Je{crs}\n") - fou.write(f'# @Jp"{result_proj}"\n') - fou.write(f'# @Jw"{result_wkt}"\n') - elif "@NId" in fields[1]: - hd3 = line.split("# @NId") - fou.write(f"# @NFID_|Entity{hd3[1]}") - elif "@Tinteger" in fields[1]: - hd4 = line.split("# @Tinteger") - fou.write(f"# @Tdouble|string{hd4[1]}") - elif "FEATURE_DATA" in fields[1]: - fou.write(f"{line}") - - for i, srt in enumerate(srt_list, 1): - vtx = 1 - seg = 0 - with open(srt, 'r') as srt_file: - for line in srt_file: + try: + proj = osr.SpatialReference() + proj.ImportFromEPSG(int(crs)) + result_wkt = proj.ExportToWkt() + result_wkt = result_wkt.replace('"', '\\"') + result_proj = proj.ExportToProj4() + # print(f'epsg resutl is: {result_wkt}') + # print(f'proj string is: {result_proj}') + del proj + + srt_dir = Path(wrk_dir) / "SORT" + get_make_srt_dir(srt_dir, logger_session=logger) + + zfshp_dir = Path(wrk_dir) / "ZF_SHP" + if not Path(zfshp_dir).exists(): + Path(zfshp_dir).mkdir(parents=True, exist_ok=False) + else: + logger_session.warning(f"{zfshp_dir} folder already exists!") + + for nm in nm_lst: + ano_list = sorted(glob.glob(os.path.join(srt_dir, "*Annotations.srt"))) + if ano_list: + _ = [Path(_f).unlink() for _f in ano_list] + + srt_list = sorted(glob.glob(os.path.join(srt_dir, f"{nm}*.srt"))) + hdr = Path(srt_dir / f"{nm}_hdr.hdr") + with open(Path(srt_dir) / f"{nm}.gmtsddd", "w") as fou: + with open(hdr, 'r') as hdr_file: + for line in hdr_file: fields = line.strip().split() if len(fields) > 0: - if fields[0] == ">": - seg += 1 - fou.write(f"{line.strip()}\n") - next_line = next(srt_file).strip() - met = next_line.split("# @D0") - fou.write(f"# @D0|3DPolyline{met[1]}\n") - else: - # fou.write(fields[2], fields[3], fields[4], fields[0], fields[1], fields[5], - # fields[6], fields[7], fields[8], vtx, seg) - fou.write(" ".join([fields[2], fields[3], fields[4], fields[0], - fields[1], fields[5], fields[6], fields[7], - fields[8], str(vtx), str(seg)]) + "\n") - vtx += 1 - - in_gmtf = Path(srt_dir) / f"{nm}zf.gmtf" - out_shp = Path(zfshp_dir) / f"{nm}_zf.shp" - - # ogr2ogr.main(["", "-f", "ESRI Shapefile", str(out_shp), str(in_gmtf)]) - cmd = [get_ogr_path(), "-f", "ESRI Shapefile", str(out_shp), str(in_gmtf)] - if not validate_file(in_gmtf): - return - run_command(cmd) - - if out_shp.exists(): - logger_session.info(f"{nm}zf.gmtf successfully converted to {nm}_zf.shp") - - logger_session.info("Completed sort_gmtp conversion.") + if "@VGMT1" in fields[1]: + fou.write(f"{line}") + elif "@R" in fields[1]: + fou.write(f"{line}") + fou.write(f"# @Je{crs}\n") + fou.write(f'# @Jp"{result_proj}"\n') + fou.write(f'# @Jw"{result_wkt}"\n') + elif "@NId" in fields[1]: + hd3 = line.split("# @NId") + fou.write(f"# @NFID_|Entity{hd3[1]}") + elif "@Tinteger" in fields[1]: + hd4 = line.split("# @Tinteger") + fou.write(f"# @Tdouble|string{hd4[1]}") + elif "FEATURE_DATA" in fields[1]: + fou.write(f"{line}") + + for i, srt in enumerate(srt_list, 1): + vtx = 1 + seg = 0 + with open(srt, 'r') as srt_file: + for line in srt_file: + fields = line.strip().split() + if len(fields) > 0: + if fields[0] == ">": + seg += 1 + fou.write(f"{line.strip()}\n") + next_line = next(srt_file).strip() + met = next_line.split("# @D0") + fou.write(f"# @D0|3DPolyline{met[1]}\n") + else: + # fou.write(fields[2], fields[3], fields[4], fields[0], fields[1], fields[5], + # fields[6], fields[7], fields[8], vtx, seg) + fou.write(" ".join([fields[2], fields[3], fields[4], fields[0], + fields[1], fields[5], fields[6], fields[7], + fields[8], str(vtx), str(seg)]) + "\n") + vtx += 1 + + in_gmtf = Path(srt_dir) / f"{nm}zf.gmtf" + out_shp = Path(zfshp_dir) / f"{nm}_zf.shp" + + # ogr2ogr.main(["", "-f", "ESRI Shapefile", str(out_shp), str(in_gmtf)]) + cmd = [get_ogr_path(), "-f", "ESRI Shapefile", str(out_shp), str(in_gmtf)] + if not validate_file(in_gmtf): + return + run_command(cmd) + + if out_shp.exists(): + logger_session.info(f"{nm}zf.gmtf successfully converted to {nm}_zf.shp") + + logger_session.info("Completed sort_gmtp conversion.") + except Exception as e: + logger_session.error(f"Error during sort_gmtp_3d conversion: {e}") + return def conversion_sort_gmtp(wrk_dir: str, nm_lst: List[int], logger_session=logger) -> None: @@ -228,62 +236,66 @@ def conversion_sort_gmtp(wrk_dir: str, nm_lst: List[int], logger_session=logger) """ logger_session.info("Running sort_gmtp conversion.") - srt_dir = Path(wrk_dir) / "SORT" - get_make_srt_dir(srt_dir, logger_session=logger) - - zfshp_dir = Path(wrk_dir) / "ZF_SHP" - if not Path(zfshp_dir).exists(): - Path(zfshp_dir).mkdir(parents=True, exist_ok=False) - else: - logger_session.warning(f"{zfshp_dir} folder already exists!") - - for nm in nm_lst: - seg = 0 - vtx = 1 - fn = 1 - ano_list = sorted(glob.glob(os.path.join(srt_dir, "*Annotations.srt"))) - if ano_list: - _ = [Path(_f).unlink() for _f in ano_list] - srt_list = sorted(glob.glob(os.path.join(srt_dir, f"{nm}*.srt"))) - hdr = Path(srt_dir / f"{nm}_hdr.hdr") - hlines = hdr.read_text().split("\n")[:-1] - with open(Path(srt_dir) / f"{nm}.gmts", "w") as fou: - for hline in hlines: - fou.write(f"{hline}\n") - for i, srt in enumerate(srt_list, 1): - lines = Path(srt).read_text().split("\n") - while lines: - try: - line = lines.pop(0) - except IndexError: - logger_session.info(f"{srt} completed") - break - if line.startswith(">"): - seg += 1 - fou.write(f"{line}\n") - line = lines.pop(0) - fou.write(f"{line}\n") - if fn != i: - seg = 1 - vtx = 1 - fn += 1 - elif line: - fou.write(f"{line} {vtx} {seg}\n") - vtx += 1 - - in_gmtf = Path(srt_dir) / f"{nm}zf.gmtf" - out_shp = Path(zfshp_dir) / f"{nm}_zf.shp" - - # ogr2ogr.main(["", "-f", "ESRI Shapefile", str(out_shp), str(in_gmtf)]) - cmd = [get_ogr_path(), "-f", "ESRI Shapefile", str(out_shp), str(in_gmtf)] - if not validate_file(in_gmtf): - return - run_command(cmd) - - if out_shp.exists(): - logger_session.info(f"{nm}zf.gmtf successfully converted to {nm}_zf.shp") - - logger_session.info("Completed sort_gmtp conversion.") + try: + srt_dir = Path(wrk_dir) / "SORT" + get_make_srt_dir(srt_dir, logger_session=logger) + + zfshp_dir = Path(wrk_dir) / "ZF_SHP" + if not Path(zfshp_dir).exists(): + Path(zfshp_dir).mkdir(parents=True, exist_ok=False) + else: + logger_session.warning(f"{zfshp_dir} folder already exists!") + + for nm in nm_lst: + seg = 0 + vtx = 1 + fn = 1 + ano_list = sorted(glob.glob(os.path.join(srt_dir, "*Annotations.srt"))) + if ano_list: + _ = [Path(_f).unlink() for _f in ano_list] + srt_list = sorted(glob.glob(os.path.join(srt_dir, f"{nm}*.srt"))) + hdr = Path(srt_dir / f"{nm}_hdr.hdr") + hlines = hdr.read_text().split("\n")[:-1] + with open(Path(srt_dir) / f"{nm}.gmts", "w") as fou: + for hline in hlines: + fou.write(f"{hline}\n") + for i, srt in enumerate(srt_list, 1): + lines = Path(srt).read_text().split("\n") + while lines: + try: + line = lines.pop(0) + except IndexError: + logger_session.info(f"{srt} completed") + break + if line.startswith(">"): + seg += 1 + fou.write(f"{line}\n") + line = lines.pop(0) + fou.write(f"{line}\n") + if fn != i: + seg = 1 + vtx = 1 + fn += 1 + elif line: + fou.write(f"{line} {vtx} {seg}\n") + vtx += 1 + + in_gmtf = Path(srt_dir) / f"{nm}zf.gmtf" + out_shp = Path(zfshp_dir) / f"{nm}_zf.shp" + + # ogr2ogr.main(["", "-f", "ESRI Shapefile", str(out_shp), str(in_gmtf)]) + cmd = [get_ogr_path(), "-f", "ESRI Shapefile", str(out_shp), str(in_gmtf)] + if not validate_file(in_gmtf): + return + run_command(cmd) + + if out_shp.exists(): + logger_session.info(f"{nm}zf.gmtf successfully converted to {nm}_zf.shp") + + logger_session.info("Completed sort_gmtp conversion.") + except Exception as e: + logger_session.error(f"Error during sort_gmtp conversion: {e}") + return def interpol(col_1: float, frst: int, last: int, tdf: pd.DataFrame) -> Tuple[float]: @@ -308,53 +320,56 @@ def interpol(col_1: float, frst: int, last: int, tdf: pd.DataFrame) -> Tuple[flo The list of path identifiers read from the first column of the extent file """ - i_last = len(tdf) - cdp = (tdf["fid"] - 1).tolist() - if frst <= col_1 < last: - # interpolate - for idx in cdp: - if cdp[idx] <= col_1 < cdp[idx + 1]: - x1 = tdf['coordx'].iloc[idx] - y1 = tdf['coordy'].iloc[idx] - g1 = tdf['gl'].iloc[idx] - x2 = tdf['coordx'].iloc[idx + 1] - y2 = tdf['coordy'].iloc[idx + 1] - g2 = tdf['gl'].iloc[idx + 1] - l1 = cdp[idx + 1] - cdp[idx] - l2 = col_1 - cdp[idx] - lr = l2 / l1 - x = x1 + (x2 - x1) * lr - y = y1 + (y2 - y1) * lr - t = g1 + (g2 - g1) * lr - elif int(col_1) <= frst: - # extrapolate to the left - x1 = tdf['coordx'].iloc[0] - y1 = tdf['coordy'].iloc[0] - g1 = tdf['gl'].iloc[0] - x2 = tdf['coordx'].iloc[1] - y2 = tdf['coordy'].iloc[1] - g2 = tdf['gl'].iloc[1] - l1 = cdp[1] - cdp[0] - l2 = col_1 - cdp[0] - lr = l2 / l1 - x = x1 + (x2 - x1) * lr - y = y1 + (y2 - y1) * lr - t = g1 + (g2 - g1) * lr - elif col_1 >= last: - # extrapolate to the right - x1 = tdf['coordx'].iloc[i_last - 2] - y1 = tdf['coordy'].iloc[i_last - 2] - g1 = tdf['gl'].iloc[i_last - 2] - x2 = tdf['coordx'].iloc[i_last - 1] - y2 = tdf['coordy'].iloc[i_last - 1] - g2 = tdf['gl'].iloc[i_last - 1] - l1 = cdp[i_last - 1] - cdp[i_last - 2] - l2 = col_1 - cdp[i_last - 1] - lr = l2 / l1 - x = x2 + (x2 - x1) * lr - y = y2 + (y2 - y1) * lr - t = g2 + (g2 - g1) * lr - return x, y, t + try: + i_last = len(tdf) + cdp = (tdf["fid"] - 1).tolist() + if frst <= col_1 < last: + # interpolate + for idx in cdp: + if cdp[idx] <= col_1 < cdp[idx + 1]: + x1 = tdf['coordx'].iloc[idx] + y1 = tdf['coordy'].iloc[idx] + g1 = tdf['gl'].iloc[idx] + x2 = tdf['coordx'].iloc[idx + 1] + y2 = tdf['coordy'].iloc[idx + 1] + g2 = tdf['gl'].iloc[idx + 1] + l1 = cdp[idx + 1] - cdp[idx] + l2 = col_1 - cdp[idx] + lr = l2 / l1 + x = x1 + (x2 - x1) * lr + y = y1 + (y2 - y1) * lr + t = g1 + (g2 - g1) * lr + elif int(col_1) <= frst: + # extrapolate to the left + x1 = tdf['coordx'].iloc[0] + y1 = tdf['coordy'].iloc[0] + g1 = tdf['gl'].iloc[0] + x2 = tdf['coordx'].iloc[1] + y2 = tdf['coordy'].iloc[1] + g2 = tdf['gl'].iloc[1] + l1 = cdp[1] - cdp[0] + l2 = col_1 - cdp[0] + lr = l2 / l1 + x = x1 + (x2 - x1) * lr + y = y1 + (y2 - y1) * lr + t = g1 + (g2 - g1) * lr + elif col_1 >= last: + # extrapolate to the right + x1 = tdf['coordx'].iloc[i_last - 2] + y1 = tdf['coordy'].iloc[i_last - 2] + g1 = tdf['gl'].iloc[i_last - 2] + x2 = tdf['coordx'].iloc[i_last - 1] + y2 = tdf['coordy'].iloc[i_last - 1] + g2 = tdf['gl'].iloc[i_last - 1] + l1 = cdp[i_last - 1] - cdp[i_last - 2] + l2 = col_1 - cdp[i_last - 1] + lr = l2 / l1 + x = x2 + (x2 - x1) * lr + y = y2 + (y2 - y1) * lr + t = g2 + (g2 - g1) * lr + return x, y, t + except Exception as e: + logger.error(f"Error during interpolation: {e}") def main(input_directory: str, output_directory: str, crs=28349) -> None: diff --git a/aemworkflow/exports.py b/aemworkflow/exports.py index 4d865b4..ecf7a70 100644 --- a/aemworkflow/exports.py +++ b/aemworkflow/exports.py @@ -14,39 +14,42 @@ def gmtsddd_to_egs(wrk_dir: str, alt_colors: str, nm_list: List[int]) -> None: un = {} # Open the CSV file for writing - with open(os.path.join(wrk_dir, 'SORT', 'output.egs'), 'w', newline='') as csvfile: - csvwriter = csv.writer(csvfile, quoting=csv.QUOTE_NONE, quotechar=None, escapechar='\\') - # Write the header to stderr and the CSV file - sys.stderr.write("Export EGGS CSV\n") - csvwriter.writerow(["Vertex", "SegmentID", "X", "Y", "ELEVATION", "PixelX", "PixelY", "AusAEM_DEM", "DEPTH", - "Type", "OverAge", "UnderAge", "BoundConf", "ContactTyp", "BasisOfInt", "OvrStrtUnt", - "OvrStratNo", "OvrConf", "UndStrtUnt", "UndStratNo", "UndConf", "WithinStrt", - "WithinStNo", "WithinConf", "HydStrtType", "HydStrConf", "BOMNAFUnt", "BOMNAFNo", - "InterpRef", "Comment", "Annotation", "NewObs", "Operator", "Date", "SURVEY_LINE"]) - - # Read the input file - with open(alt_colors, 'r') as prn_file: - for line in prn_file: - # parts = line.strip().split(',') - parts = re.split(r'\s{2,}', line) - ov[parts[0]] = ' ' if len(parts) < 2 else parts[1] - un[parts[0]] = ' ' if len(parts) < 3 else parts[2] - - for filename in nm_list: - with open(os.path.join(wrk_dir, 'SORT', f'{filename}.gmtsddd'), 'r') as file: - for line in file: - # Process the subsequent files - if line.startswith('# @D0'): - # Handle lines starting with '#' - # seg += 1 - parts = line.strip().split('|') - # l = parts[3].split('_') - met = [parts[2]] + [ov.get(parts[3], '')] + [un.get(parts[3], '')] + parts[3:25] - elif line[0].isdigit(): - # Handle lines starting with a digit - parts = line.strip().split(' ') - row_to_write = parts[9:10] + parts[8:9] + parts[0:7] + met + [filename] - csvwriter.writerow(row_to_write) + try: + with open(os.path.join(wrk_dir, 'SORT', 'output.egs'), 'w', newline='') as csvfile: + csvwriter = csv.writer(csvfile, quoting=csv.QUOTE_NONE, quotechar=None, escapechar='\\') + # Write the header to stderr and the CSV file + sys.stderr.write("Export EGGS CSV\n") + csvwriter.writerow(["Vertex", "SegmentID", "X", "Y", "ELEVATION", "PixelX", "PixelY", "AusAEM_DEM", "DEPTH", + "Type", "OverAge", "UnderAge", "BoundConf", "ContactTyp", "BasisOfInt", "OvrStrtUnt", + "OvrStratNo", "OvrConf", "UndStrtUnt", "UndStratNo", "UndConf", "WithinStrt", + "WithinStNo", "WithinConf", "HydStrtType", "HydStrConf", "BOMNAFUnt", "BOMNAFNo", + "InterpRef", "Comment", "Annotation", "NewObs", "Operator", "Date", "SURVEY_LINE"]) + + # Read the input file + with open(alt_colors, 'r') as prn_file: + for line in prn_file: + # parts = line.strip().split(',') + parts = re.split(r'\s{2,}', line) + ov[parts[0]] = ' ' if len(parts) < 2 else parts[1] + un[parts[0]] = ' ' if len(parts) < 3 else parts[2] + + for filename in nm_list: + with open(os.path.join(wrk_dir, 'SORT', f'{filename}.gmtsddd'), 'r') as file: + for line in file: + # Process the subsequent files + if line.startswith('# @D0'): + # Handle lines starting with '#' + # seg += 1 + parts = line.strip().split('|') + # l = parts[3].split('_') + met = [parts[2]] + [ov.get(parts[3], '')] + [un.get(parts[3], '')] + parts[3:25] + elif line[0].isdigit(): + # Handle lines starting with a digit + parts = line.strip().split(' ') + row_to_write = parts[9:10] + parts[8:9] + parts[0:7] + met + [filename] + csvwriter.writerow(row_to_write) + except Exception as e: + logger.error(f"Error during gmtsddd_to_egs conversion: {e}") def gmtsddd_to_mdc(wrk_dir: str, colors: str, nm_list: List[int]) -> None: @@ -55,100 +58,103 @@ def gmtsddd_to_mdc(wrk_dir: str, colors: str, nm_list: List[int]) -> None: b = {} # Open the CSV file for writing - with open(os.path.join(wrk_dir, 'SORT', 'output.mdc'), 'w', newline='') as csvfile: - csvwriter = csv.writer(csvfile, quoting=csv.QUOTE_NONE, quotechar=None, escapechar='\\') - # Write the header to stderr and the CSV file - # sys.stderr.write("Export EGGS CSV\n") - # csvwriter.writerow(["Vertex", "SegmentID", "X", "Y", "ELEVATION", "PixelX", - # "PixelY", "AusAEM_DEM", "DEPTH", "Type", "OverAge", "UnderAge", "BoundConf", - # "ContactTyp", "BasisOfInt", "OvrStrtUnt", "OvrStratNo", "OvrConf", "UndStrtUnt", - # "UndStratNo", "UndConf", "WithinStrt", "WithinStNo", "WithinConf", "HydStrtType", - # "HydStrConf", "BOMNAFUnt", "BOMNAFNo", "InterpRef", "Comment", "Annotation", "NewObs", - # "Operator", "Date", "SURVEY_LINE"]) - - # Read the input file - with open(colors, 'r') as prn_file: - prn_file.readline() - for line in prn_file: - # data = line.strip().split() - data = re.split(r'\s{2,}', line) - if len(data) > 4: - r[data[0]] = float(data[1]) - g[data[0]] = float(data[2]) - b[data[0]] = float(data[3]) - - for filename in nm_list: - with open(os.path.join(wrk_dir, 'SORT', f'{filename}.gmtsddd'), 'r') as file: - for line in file: - if line.startswith("# @D0"): - filen = [filename, ''] # filename.split(".") - line = line.strip().split("|") - second_line = file.readline().strip().split() - segn = second_line[8] - - csvwriter.writerow(["GOCAD PLine 1"]) - csvwriter.writerow(["HEADER {"]) - csvwriter.writerow([f"name:{filen[0]}_{segn}_{line[2]}"]) - csvwriter.writerow(["*atoms:false"]) - csvwriter.writerow(["*line*color:%f %f %f 1" % (r[line[2]] / 256, - g[line[2]] / 256, - b[line[2]] / 256)]) - csvwriter.writerow(["use_feature_color: false"]) - csvwriter.writerow(["width:5"]) - csvwriter.writerow([f"*metadata*Line: {filen[0]}"]) - csvwriter.writerow([f"*metadata*Type: {line[2]}"]) - csvwriter.writerow([f"*metadata*BoundaryNm: {line[3]}"]) - csvwriter.writerow([f"*metadata*BoundConf: {line[4]}"]) - csvwriter.writerow([f"*metadata*BasisOfInt: {line[5]}"]) - csvwriter.writerow([f"*metadata*OvrStrtUnt: {line[6]}"]) - csvwriter.writerow([f"*metadata*OvrStrtCod: {line[7]}"]) - csvwriter.writerow([f"*metadata*OvrConf: {line[8]}"]) - csvwriter.writerow([f"*metadata*UndStrtUnt: {line[9]}"]) - csvwriter.writerow([f"*metadata*UndStrtCod: {line[10]}"]) - csvwriter.writerow([f"*metadata*UndConf: {line[11]}"]) - csvwriter.writerow([f"*metadata*WithinType: {line[12]}"]) - csvwriter.writerow([f"*metadata*WithinStrt: {line[13]}"]) - csvwriter.writerow([f"*metadata*WithinStNo: {line[14]}"]) - csvwriter.writerow([f"*metadata*WithinConf: {line[15]}"]) - csvwriter.writerow([f"*metadata*InterpRef: {line[16]}"]) - csvwriter.writerow([f"*metadata*Comment: {line[17]}"]) - csvwriter.writerow([f"*metadata*Annotation: {line[18]}"]) - csvwriter.writerow([f"*metadata*NewObs: {line[19]}"]) - csvwriter.writerow([f"*metadata*Operator: {line[20]}"]) - csvwriter.writerow(["*metadata*Organization: Geoscience Australia"]) - csvwriter.writerow(["}"]) - csvwriter.writerow(["PROPERTIES px py gl depth"]) - - # Coordinate reference system - csvwriter.writerow(["GOCAD_ORIGINAL_COORDINATE_SYSTEM"]) - csvwriter.writerow(["NAME \" gocad Local\""]) - csvwriter.writerow(["PROJECTION \" GDA94 / MGA zone 53\""]) - csvwriter.writerow(["DATUM \" Mean Sea Level\""]) - csvwriter.writerow(["AXIS_NAME X Y Z"]) - csvwriter.writerow(["AXIS_UNIT m m m"]) - csvwriter.writerow(["ZPOSITIVE Elevation"]) - csvwriter.writerow(["END_ORIGINAL_COORDINATE_SYSTEM"]) - - # Feature class used to group section components (AEM section) - csvwriter.writerow([f"GEOLOGICAL_FEATURE {filen[0]}"]) - csvwriter.writerow(["ILINE"]) - - line = second_line - first = last = int(line[9]) - while True: - last = int(line[9]) - csvwriter.writerow([f"PVRTX {int(line[9])} {float(line[0]):.1f} " - f"{float(line[1]):.1f} {float(line[2]):.1f} " - f"{float(line[3])} {float(line[4])} " - f"{float(line[5]):.1f} {float(line[6]):.1f}"]) - line = file.readline().strip().split() - if not line or not line[0].replace('.', '').isdigit(): - break - - for i in range(first, last): - csvwriter.writerow([f"seg {i} {i + 1}"]) - - csvwriter.writerow(["END"]) + try: + with open(os.path.join(wrk_dir, 'SORT', 'output.mdc'), 'w', newline='') as csvfile: + csvwriter = csv.writer(csvfile, quoting=csv.QUOTE_NONE, quotechar=None, escapechar='\\') + # Write the header to stderr and the CSV file + # sys.stderr.write("Export EGGS CSV\n") + # csvwriter.writerow(["Vertex", "SegmentID", "X", "Y", "ELEVATION", "PixelX", + # "PixelY", "AusAEM_DEM", "DEPTH", "Type", "OverAge", "UnderAge", "BoundConf", + # "ContactTyp", "BasisOfInt", "OvrStrtUnt", "OvrStratNo", "OvrConf", "UndStrtUnt", + # "UndStratNo", "UndConf", "WithinStrt", "WithinStNo", "WithinConf", "HydStrtType", + # "HydStrConf", "BOMNAFUnt", "BOMNAFNo", "InterpRef", "Comment", "Annotation", "NewObs", + # "Operator", "Date", "SURVEY_LINE"]) + + # Read the input file + with open(colors, 'r') as prn_file: + prn_file.readline() + for line in prn_file: + # data = line.strip().split() + data = re.split(r'\s{2,}', line) + if len(data) > 4: + r[data[0]] = float(data[1]) + g[data[0]] = float(data[2]) + b[data[0]] = float(data[3]) + + for filename in nm_list: + with open(os.path.join(wrk_dir, 'SORT', f'{filename}.gmtsddd'), 'r') as file: + for line in file: + if line.startswith("# @D0"): + filen = [filename, ''] # filename.split(".") + line = line.strip().split("|") + second_line = file.readline().strip().split() + segn = second_line[8] + + csvwriter.writerow(["GOCAD PLine 1"]) + csvwriter.writerow(["HEADER {"]) + csvwriter.writerow([f"name:{filen[0]}_{segn}_{line[2]}"]) + csvwriter.writerow(["*atoms:false"]) + csvwriter.writerow(["*line*color:%f %f %f 1" % (r[line[2]] / 256, + g[line[2]] / 256, + b[line[2]] / 256)]) + csvwriter.writerow(["use_feature_color: false"]) + csvwriter.writerow(["width:5"]) + csvwriter.writerow([f"*metadata*Line: {filen[0]}"]) + csvwriter.writerow([f"*metadata*Type: {line[2]}"]) + csvwriter.writerow([f"*metadata*BoundaryNm: {line[3]}"]) + csvwriter.writerow([f"*metadata*BoundConf: {line[4]}"]) + csvwriter.writerow([f"*metadata*BasisOfInt: {line[5]}"]) + csvwriter.writerow([f"*metadata*OvrStrtUnt: {line[6]}"]) + csvwriter.writerow([f"*metadata*OvrStrtCod: {line[7]}"]) + csvwriter.writerow([f"*metadata*OvrConf: {line[8]}"]) + csvwriter.writerow([f"*metadata*UndStrtUnt: {line[9]}"]) + csvwriter.writerow([f"*metadata*UndStrtCod: {line[10]}"]) + csvwriter.writerow([f"*metadata*UndConf: {line[11]}"]) + csvwriter.writerow([f"*metadata*WithinType: {line[12]}"]) + csvwriter.writerow([f"*metadata*WithinStrt: {line[13]}"]) + csvwriter.writerow([f"*metadata*WithinStNo: {line[14]}"]) + csvwriter.writerow([f"*metadata*WithinConf: {line[15]}"]) + csvwriter.writerow([f"*metadata*InterpRef: {line[16]}"]) + csvwriter.writerow([f"*metadata*Comment: {line[17]}"]) + csvwriter.writerow([f"*metadata*Annotation: {line[18]}"]) + csvwriter.writerow([f"*metadata*NewObs: {line[19]}"]) + csvwriter.writerow([f"*metadata*Operator: {line[20]}"]) + csvwriter.writerow(["*metadata*Organization: Geoscience Australia"]) + csvwriter.writerow(["}"]) + csvwriter.writerow(["PROPERTIES px py gl depth"]) + + # Coordinate reference system + csvwriter.writerow(["GOCAD_ORIGINAL_COORDINATE_SYSTEM"]) + csvwriter.writerow(["NAME \" gocad Local\""]) + csvwriter.writerow(["PROJECTION \" GDA94 / MGA zone 53\""]) + csvwriter.writerow(["DATUM \" Mean Sea Level\""]) + csvwriter.writerow(["AXIS_NAME X Y Z"]) + csvwriter.writerow(["AXIS_UNIT m m m"]) + csvwriter.writerow(["ZPOSITIVE Elevation"]) + csvwriter.writerow(["END_ORIGINAL_COORDINATE_SYSTEM"]) + + # Feature class used to group section components (AEM section) + csvwriter.writerow([f"GEOLOGICAL_FEATURE {filen[0]}"]) + csvwriter.writerow(["ILINE"]) + + line = second_line + first = last = int(line[9]) + while True: + last = int(line[9]) + csvwriter.writerow([f"PVRTX {int(line[9])} {float(line[0]):.1f} " + f"{float(line[1]):.1f} {float(line[2]):.1f} " + f"{float(line[3])} {float(line[4])} " + f"{float(line[5]):.1f} {float(line[6]):.1f}"]) + line = file.readline().strip().split() + if not line or not line[0].replace('.', '').isdigit(): + break + + for i in range(first, last): + csvwriter.writerow([f"seg {i} {i + 1}"]) + + csvwriter.writerow(["END"]) + except Exception as e: + logger.error(f"Error during gmtsddd_to_mdc conversion: {e}") def gmtsddd_to_mdch(wrk_dir: str, colors: str, nm_list: List[int]) -> None: @@ -157,100 +163,103 @@ def gmtsddd_to_mdch(wrk_dir: str, colors: str, nm_list: List[int]) -> None: b = {} # Open the CSV file for writing - with open(os.path.join(wrk_dir, 'SORT', 'output.mdch'), 'w', newline='') as csvfile: - csvwriter = csv.writer(csvfile, quoting=csv.QUOTE_NONE, quotechar=None, escapechar='\\') - # Write the header to stderr and the CSV file - # sys.stderr.write("Export EGGS CSV\n") - # csvwriter.writerow(["Vertex", "SegmentID", "X", "Y", "ELEVATION", "PixelX", "PixelY", - # "AusAEM_DEM", "DEPTH", "Type", "OverAge", "UnderAge", "BoundConf", "ContactTyp", - # "BasisOfInt", "OvrStrtUnt", "OvrStratNo", "OvrConf", "UndStrtUnt", "UndStratNo", - # "UndConf", "WithinStrt", "WithinStNo", "WithinConf", "HydStrtType", "HydStrConf", - # "BOMNAFUnt", "BOMNAFNo", "InterpRef", "Comment", "Annotation", "NewObs", "Operator", - # "Date", "SURVEY_LINE"]) - - # Read the input file - with open(colors, 'r') as prn_file: - prn_file.readline() - for line in prn_file: - # data = line.strip().split() - data = re.split(r'\s{2,}', line) - if len(data) > 4: - r[data[0]] = float(data[1]) - g[data[0]] = float(data[2]) - b[data[0]] = float(data[3]) - - for filename in nm_list: - with open(os.path.join(wrk_dir, 'SORT', f'{filename}.gmtsddd'), 'r') as file: - for line in file: - if line.startswith("# @D0"): - filen = [filename, 'gmtsddd'] # filename.split(".") - line = line.strip().split("|") - second_line = file.readline().strip().split() - segn = second_line[8] - - csvwriter.writerow(["GOCAD PLine 1"]) - csvwriter.writerow(["HEADER {"]) - csvwriter.writerow([f"name:{filen[0]}_{segn}_{line[2]}"]) - csvwriter.writerow(["*atoms:false"]) - csvwriter.writerow(["*line*color: %f %f %f 1" % (r[line[2]] / 256, - g[line[2]] / 256, - b[line[2]] / 256)]) - csvwriter.writerow(["use_feature_color: false"]) - csvwriter.writerow(["width: 5"]) - csvwriter.writerow([f"*metadata*Line: {filen[0]}"]) - csvwriter.writerow([f"*metadata*Type: {line[2]}"]) - csvwriter.writerow([f"*metadata*BoundaryNm: {line[3]}"]) - csvwriter.writerow([f"*metadata*BoundConf: {line[4]}"]) - csvwriter.writerow([f"*metadata*BasisOfInt: {line[5]}"]) - csvwriter.writerow([f"*metadata*OvrStrtUnt: {line[6]}"]) - csvwriter.writerow([f"*metadata*OvrStrtCod: {line[7]}"]) - csvwriter.writerow([f"*metadata*OvrConf: {line[8]}"]) - csvwriter.writerow([f"*metadata*UndStrtUnt: {line[9]}"]) - csvwriter.writerow([f"*metadata*UndStrtCod: {line[10]}"]) - csvwriter.writerow([f"*metadata*UndConf: {line[11]}"]) - csvwriter.writerow([f"*metadata*WithinType: {line[12]}"]) - csvwriter.writerow([f"*metadata*WithinStrt: {line[13]}"]) - csvwriter.writerow([f"*metadata*WithinStNo: {line[14]}"]) - csvwriter.writerow([f"*metadata*WithinConf: {line[15]}"]) - csvwriter.writerow([f"*metadata*InterpRef: {line[16]}"]) - csvwriter.writerow([f"*metadata*Comment: {line[17]}"]) - csvwriter.writerow([f"*metadata*Annotation: {line[18]}"]) - csvwriter.writerow([f"*metadata*NewObs: {line[19]}"]) - csvwriter.writerow([f"*metadata*Operator: {line[20]}"]) - csvwriter.writerow(["*metadata*Organization: Geoscience Australia"]) - csvwriter.writerow(["}"]) - csvwriter.writerow(["PROPERTIES px py gl depth"]) - - # Coordinate reference system - csvwriter.writerow(["GOCAD_ORIGINAL_COORDINATE_SYSTEM"]) - csvwriter.writerow(["NAME \" gocad Local\""]) - csvwriter.writerow(["PROJECTION \" GDA94 / MGA zone 53\""]) - csvwriter.writerow(["DATUM \" Mean Sea Level\""]) - csvwriter.writerow(["AXIS_NAME X Y Z"]) - csvwriter.writerow(["AXIS_UNIT m m m"]) - csvwriter.writerow(["ZPOSITIVE Elevation"]) - csvwriter.writerow(["END_ORIGINAL_COORDINATE_SYSTEM"]) - - # Feature class used to group section components (AEM section) - csvwriter.writerow([f"GEOLOGICAL_FEATURE {line[2]}"]) - csvwriter.writerow(["ILINE"]) - - line = second_line - first = last = int(line[9]) - while True: - last = int(line[9]) - csvwriter.writerow([f"PVRTX {int(line[9])} {float(line[0]):.1f} " - f"{float(line[1]):.1f} {float(line[2]):.1f} " - f"{float(line[3])} {float(line[4])} " - f"{float(line[5]):.1f} {float(line[6]):.1f}"]) - line = file.readline().strip().split() - if not line or not line[0].replace('.', '').isdigit(): - break - - for i in range(first, last): - csvwriter.writerow([f"seg {i} {i + 1}"]) - - csvwriter.writerow(["END"]) + try: + with open(os.path.join(wrk_dir, 'SORT', 'output.mdch'), 'w', newline='') as csvfile: + csvwriter = csv.writer(csvfile, quoting=csv.QUOTE_NONE, quotechar=None, escapechar='\\') + # Write the header to stderr and the CSV file + # sys.stderr.write("Export EGGS CSV\n") + # csvwriter.writerow(["Vertex", "SegmentID", "X", "Y", "ELEVATION", "PixelX", "PixelY", + # "AusAEM_DEM", "DEPTH", "Type", "OverAge", "UnderAge", "BoundConf", "ContactTyp", + # "BasisOfInt", "OvrStrtUnt", "OvrStratNo", "OvrConf", "UndStrtUnt", "UndStratNo", + # "UndConf", "WithinStrt", "WithinStNo", "WithinConf", "HydStrtType", "HydStrConf", + # "BOMNAFUnt", "BOMNAFNo", "InterpRef", "Comment", "Annotation", "NewObs", "Operator", + # "Date", "SURVEY_LINE"]) + + # Read the input file + with open(colors, 'r') as prn_file: + prn_file.readline() + for line in prn_file: + # data = line.strip().split() + data = re.split(r'\s{2,}', line) + if len(data) > 4: + r[data[0]] = float(data[1]) + g[data[0]] = float(data[2]) + b[data[0]] = float(data[3]) + + for filename in nm_list: + with open(os.path.join(wrk_dir, 'SORT', f'{filename}.gmtsddd'), 'r') as file: + for line in file: + if line.startswith("# @D0"): + filen = [filename, 'gmtsddd'] # filename.split(".") + line = line.strip().split("|") + second_line = file.readline().strip().split() + segn = second_line[8] + + csvwriter.writerow(["GOCAD PLine 1"]) + csvwriter.writerow(["HEADER {"]) + csvwriter.writerow([f"name:{filen[0]}_{segn}_{line[2]}"]) + csvwriter.writerow(["*atoms:false"]) + csvwriter.writerow(["*line*color: %f %f %f 1" % (r[line[2]] / 256, + g[line[2]] / 256, + b[line[2]] / 256)]) + csvwriter.writerow(["use_feature_color: false"]) + csvwriter.writerow(["width: 5"]) + csvwriter.writerow([f"*metadata*Line: {filen[0]}"]) + csvwriter.writerow([f"*metadata*Type: {line[2]}"]) + csvwriter.writerow([f"*metadata*BoundaryNm: {line[3]}"]) + csvwriter.writerow([f"*metadata*BoundConf: {line[4]}"]) + csvwriter.writerow([f"*metadata*BasisOfInt: {line[5]}"]) + csvwriter.writerow([f"*metadata*OvrStrtUnt: {line[6]}"]) + csvwriter.writerow([f"*metadata*OvrStrtCod: {line[7]}"]) + csvwriter.writerow([f"*metadata*OvrConf: {line[8]}"]) + csvwriter.writerow([f"*metadata*UndStrtUnt: {line[9]}"]) + csvwriter.writerow([f"*metadata*UndStrtCod: {line[10]}"]) + csvwriter.writerow([f"*metadata*UndConf: {line[11]}"]) + csvwriter.writerow([f"*metadata*WithinType: {line[12]}"]) + csvwriter.writerow([f"*metadata*WithinStrt: {line[13]}"]) + csvwriter.writerow([f"*metadata*WithinStNo: {line[14]}"]) + csvwriter.writerow([f"*metadata*WithinConf: {line[15]}"]) + csvwriter.writerow([f"*metadata*InterpRef: {line[16]}"]) + csvwriter.writerow([f"*metadata*Comment: {line[17]}"]) + csvwriter.writerow([f"*metadata*Annotation: {line[18]}"]) + csvwriter.writerow([f"*metadata*NewObs: {line[19]}"]) + csvwriter.writerow([f"*metadata*Operator: {line[20]}"]) + csvwriter.writerow(["*metadata*Organization: Geoscience Australia"]) + csvwriter.writerow(["}"]) + csvwriter.writerow(["PROPERTIES px py gl depth"]) + + # Coordinate reference system + csvwriter.writerow(["GOCAD_ORIGINAL_COORDINATE_SYSTEM"]) + csvwriter.writerow(["NAME \" gocad Local\""]) + csvwriter.writerow(["PROJECTION \" GDA94 / MGA zone 53\""]) + csvwriter.writerow(["DATUM \" Mean Sea Level\""]) + csvwriter.writerow(["AXIS_NAME X Y Z"]) + csvwriter.writerow(["AXIS_UNIT m m m"]) + csvwriter.writerow(["ZPOSITIVE Elevation"]) + csvwriter.writerow(["END_ORIGINAL_COORDINATE_SYSTEM"]) + + # Feature class used to group section components (AEM section) + csvwriter.writerow([f"GEOLOGICAL_FEATURE {line[2]}"]) + csvwriter.writerow(["ILINE"]) + + line = second_line + first = last = int(line[9]) + while True: + last = int(line[9]) + csvwriter.writerow([f"PVRTX {int(line[9])} {float(line[0]):.1f} " + f"{float(line[1]):.1f} {float(line[2]):.1f} " + f"{float(line[3])} {float(line[4])} " + f"{float(line[5]):.1f} {float(line[6]):.1f}"]) + line = file.readline().strip().split() + if not line or not line[0].replace('.', '').isdigit(): + break + + for i in range(first, last): + csvwriter.writerow([f"seg {i} {i + 1}"]) + + csvwriter.writerow(["END"]) + except Exception as e: + logger.error(f"Error during gmtsddd_to_mdch conversion: {e}") def gmts_2_egs(wrk_dir: str, alt_colors: str, nm_lst: List[int]) -> None: @@ -268,61 +277,65 @@ def gmts_2_egs(wrk_dir: str, alt_colors: str, nm_lst: List[int]) -> None: The list of path identifiers from the the common extent file """ - srt_dir = Path(wrk_dir) / "SORT" - if not (srt_dir).exists(): - logger.error("SORT folder missing") - sys.exit(0) - - header = "Vertex,SegmentID,X,Y,ELEVATION,PixelX," \ - "PixelY,AusAEM_DEM,DEPTH,Type,OverAge,UnderAge," \ - "BoundConf,ContactTyp,BasisOfInt,OvrStrtUnt," \ - "OvrStratNo,OvrConf,UndStrtUnt,UndStratNo," \ - "UndConf,WithinStrt,WithinStNo,WithinConf," \ - "HydStrtType,HydStrConf,BOMNAFUnt,BOMNAFNo," \ - "InterpRef,Comment,Annotation,NewObs,Operator," \ - "" \ - "Date,SURVEY_LINE\n" - - regex2 = re.compile('[+-]?([0-9]*[.])?[0-9]+') - - cdf = pd.read_csv(alt_colors, sep=r"\s{2,}", header=0, index_col=False, engine="python") - cdf.fillna('', inplace=True) - seg = 0 - - for nm in nm_lst: - gmts = Path(srt_dir) / f"{nm}.gmtsddd" - if not gmts.exists(): - continue - lines = gmts.read_text().split("\n") - with open(Path(srt_dir) / f"{nm}.egs", "w") as fou: - fou.write(header) - while lines: - try: - line = lines.pop(0) - except IndexError: - logger.info(f"{nm}.gmts processed") - break - if "@D" in line: - seg += 1 - m_lst = line.split("|") - gnm = m_lst[2] - row = cdf[cdf["TYPE"] == gnm] - # row = cdf.query("TYPE == @gnm") - met = f"{gnm},{row['OVERAGE'].iloc[0]}," - f"{row['UNDERAGE'].iloc[0]}," - f"{','.join(str(x) for x in m_lst[2:24])}" - line = lines.pop(0) - + try: + srt_dir = Path(wrk_dir) / "SORT" + if not (srt_dir).exists(): + logger.error("SORT folder missing") + sys.exit(0) + + header = "Vertex,SegmentID,X,Y,ELEVATION,PixelX," \ + "PixelY,AusAEM_DEM,DEPTH,Type,OverAge,UnderAge," \ + "BoundConf,ContactTyp,BasisOfInt,OvrStrtUnt," \ + "OvrStratNo,OvrConf,UndStrtUnt,UndStratNo," \ + "UndConf,WithinStrt,WithinStNo,WithinConf," \ + "HydStrtType,HydStrConf,BOMNAFUnt,BOMNAFNo," \ + "InterpRef,Comment,Annotation,NewObs,Operator," \ + "" \ + "Date,SURVEY_LINE\n" + + regex2 = re.compile('[+-]?([0-9]*[.])?[0-9]+') + + cdf = pd.read_csv(alt_colors, sep=r"\s{2,}", header=0, index_col=False, engine="python") + cdf.fillna('', inplace=True) + seg = 0 + + for nm in nm_lst: + gmts = Path(srt_dir) / f"{nm}.gmtsddd" + if not gmts.exists(): + continue + lines = gmts.read_text().split("\n") + with open(Path(srt_dir) / f"{nm}.egs", "w") as fou: + fou.write(header) + while lines: try: - while regex2.match(line.split()[0]): - los = line.split() - fou.write(f"{los[9]},{los[8]},{los[2]}," - f"{los[3]},{los[4]},{los[0]}," - f"{los[1]},{los[5]},{los[6]}," - f"{met},{nm}\n") - line = lines.pop(0) + line = lines.pop(0) except IndexError: - pass + logger.info(f"{nm}.gmts processed") + break + if "@D" in line: + seg += 1 + m_lst = line.split("|") + gnm = m_lst[2] + row = cdf[cdf["TYPE"] == gnm] + # row = cdf.query("TYPE == @gnm") + met = f"{gnm},{row['OVERAGE'].iloc[0]}," + f"{row['UNDERAGE'].iloc[0]}," + f"{','.join(str(x) for x in m_lst[2:24])}" + line = lines.pop(0) + + try: + while regex2.match(line.split()[0]): + los = line.split() + fou.write(f"{los[9]},{los[8]},{los[2]}," + f"{los[3]},{los[4]},{los[0]}," + f"{los[1]},{los[5]},{los[6]}," + f"{met},{nm}\n") + line = lines.pop(0) + except IndexError: + pass + except Exception as e: + logger.error(f"Error during gmts_2_egs conversion: {e}") + sys.exit(1) def gmts_2_mdc(wrk_dir: str, colors: str, nm_lst: List[int]) -> None: @@ -340,97 +353,101 @@ def gmts_2_mdc(wrk_dir: str, colors: str, nm_lst: List[int]) -> None: The list of path identifiers from the the common extent file """ - fsctn = ("GOCAD PLine 1\n" - "HEADER {{\n" - "name:{}_{}_{}\n" - "*atoms:false\n" - "*line*color:{:.6f} {:.6f} {:.6f} 1\n" - "use_feature_color: false\n" - "width:5\n" - "*metadata*Line: {}\n" - "*metadata*Type: {}\n" - "*metadata*BoundaryNm: {}\n" - "*metadata*BoundConf: {}\n" - "*metadata*BasisOfInt: {}\n" - "*metadata*OvrStrtUnt: {}\n" - "*metadata*OvrStrtCod: {}\n" - "*metadata*OvrConf: {}\n" - "*metadata*UndStrtUnt: {}\n" - "*metadata*UndStrtCod: {}\n" - "*metadata*UndConf: {}\n" - "*metadata*WithinType: {}\n" - "*metadata*WithinStrt: {}\n" - "*metadata*WithinStNo: {}\n" - "*metadata*WithinConf: {}\n" - "*metadata*InterpRef: {}\n" - "*metadata*Comment: {}\n" - "*metadata*Annotation: {}\n" - "*metadata*NewObs: {}\n" - "*metadata*Operator: {}\n" - "*metadata*Organization: Geoscience Australia\n" - "}}\n" - "PROPERTIES px py gl depth\n" - "GOCAD_ORIGINAL_COORDINATE_SYSTEM\n" - 'NAME " gocad Local"\n' - 'PROJECTION " GDA94 / MGA zone 53"\n' - 'DATUM " Mean Sea Level"\n' - "AXIS_NAME X Y Z\n" - "AXIS_UNIT m m m\n" - "ZPOSITIVE Elevation\n" - "END_ORIGINAL_COORDINATE_SYSTEM\n" - "GEOLOGICAL_FEATURE {}\n" - "ILINE\n" - ) - fmt = "PVRTX {:0.0f} {:6.1f} {:7.1f} {:.1f} {:.6f} {:.6f} {:.1f} {:.1f}\n" - - srt_dir = Path(wrk_dir) / "SORT" - if not (srt_dir).exists(): - logger.error("SORT folder missing") - sys.exit(0) - - regex2 = re.compile('[+-]?([0-9]*[.])?[0-9]+') - - cdf = pd.read_csv(colors, sep=r"\s{2,}", header=0, index_col=False, engine="python") - cdf.iloc[:, 1:4] /= 256.0 - - for nm in nm_lst: - gmts = Path(srt_dir) / f"{nm}.gmtsddd" - if not gmts.exists(): - continue - lines = gmts.read_text().split("\n") - with open(Path(srt_dir) / f"{nm}.mdc", "w") as fou: - while lines: - try: - line = lines.pop(0) - except IndexError: - logger.info(f"{nm}.gmts processed") - break - if "@D" in line: - met = line.split("|") - gname = met[2] - row = cdf[cdf["Feature classes"] == gname] - # row = cdf.query("`Feature classes` == @gname") - line = lines.pop(0) - segn, frst = line.split()[8: 10] - frst = int(frst) - # segn = int(segn) - fou.write(fsctn.format(nm, segn, met[2], - row['Red'].iloc[0], row['Green'].iloc[0], row['Blue'].iloc[0], - nm, - *met[2:21], - nm - )) + try: + fsctn = ("GOCAD PLine 1\n" + "HEADER {{\n" + "name:{}_{}_{}\n" + "*atoms:false\n" + "*line*color:{:.6f} {:.6f} {:.6f} 1\n" + "use_feature_color: false\n" + "width:5\n" + "*metadata*Line: {}\n" + "*metadata*Type: {}\n" + "*metadata*BoundaryNm: {}\n" + "*metadata*BoundConf: {}\n" + "*metadata*BasisOfInt: {}\n" + "*metadata*OvrStrtUnt: {}\n" + "*metadata*OvrStrtCod: {}\n" + "*metadata*OvrConf: {}\n" + "*metadata*UndStrtUnt: {}\n" + "*metadata*UndStrtCod: {}\n" + "*metadata*UndConf: {}\n" + "*metadata*WithinType: {}\n" + "*metadata*WithinStrt: {}\n" + "*metadata*WithinStNo: {}\n" + "*metadata*WithinConf: {}\n" + "*metadata*InterpRef: {}\n" + "*metadata*Comment: {}\n" + "*metadata*Annotation: {}\n" + "*metadata*NewObs: {}\n" + "*metadata*Operator: {}\n" + "*metadata*Organization: Geoscience Australia\n" + "}}\n" + "PROPERTIES px py gl depth\n" + "GOCAD_ORIGINAL_COORDINATE_SYSTEM\n" + 'NAME " gocad Local"\n' + 'PROJECTION " GDA94 / MGA zone 53"\n' + 'DATUM " Mean Sea Level"\n' + "AXIS_NAME X Y Z\n" + "AXIS_UNIT m m m\n" + "ZPOSITIVE Elevation\n" + "END_ORIGINAL_COORDINATE_SYSTEM\n" + "GEOLOGICAL_FEATURE {}\n" + "ILINE\n" + ) + fmt = "PVRTX {:0.0f} {:6.1f} {:7.1f} {:.1f} {:.6f} {:.6f} {:.1f} {:.1f}\n" + + srt_dir = Path(wrk_dir) / "SORT" + if not (srt_dir).exists(): + logger.error("SORT folder missing") + sys.exit(0) + + regex2 = re.compile('[+-]?([0-9]*[.])?[0-9]+') + + cdf = pd.read_csv(colors, sep=r"\s{2,}", header=0, index_col=False, engine="python") + cdf.iloc[:, 1:4] /= 256.0 + + for nm in nm_lst: + gmts = Path(srt_dir) / f"{nm}.gmtsddd" + if not gmts.exists(): + continue + lines = gmts.read_text().split("\n") + with open(Path(srt_dir) / f"{nm}.mdc", "w") as fou: + while lines: try: - while regex2.match(line.split()[0]): - los = [int(_l) if i == 7 else float(_l) for i, _l in enumerate(line.split())] - fou.write(fmt.format(los[9], los[2], los[3], los[4], los[0], los[1], los[5], los[6])) - last = int(los[9]) - line = lines.pop(0) + line = lines.pop(0) except IndexError: - pass - for i in range(frst, last): - fou.write(f"seg {i} {i + 1}\n") - fou.write("END\n") + logger.info(f"{nm}.gmts processed") + break + if "@D" in line: + met = line.split("|") + gname = met[2] + row = cdf[cdf["Feature classes"] == gname] + # row = cdf.query("`Feature classes` == @gname") + line = lines.pop(0) + segn, frst = line.split()[8: 10] + frst = int(frst) + # segn = int(segn) + fou.write(fsctn.format(nm, segn, met[2], + row['Red'].iloc[0], row['Green'].iloc[0], row['Blue'].iloc[0], + nm, + *met[2:21], + nm + )) + try: + while regex2.match(line.split()[0]): + los = [int(_l) if i == 7 else float(_l) for i, _l in enumerate(line.split())] + fou.write(fmt.format(los[9], los[2], los[3], los[4], los[0], los[1], los[5], los[6])) + last = int(los[9]) + line = lines.pop(0) + except IndexError: + pass + for i in range(frst, last): + fou.write(f"seg {i} {i + 1}\n") + fou.write("END\n") + except Exception as e: + logger.error(f"Error during gmts_2_mdc conversion: {e}") + sys.exit(1) def main(input_directory: str, output_directory: str, boundary: str, split: str, diff --git a/aemworkflow/interpretation.py b/aemworkflow/interpretation.py index 223b1d7..5bf4f21 100644 --- a/aemworkflow/interpretation.py +++ b/aemworkflow/interpretation.py @@ -18,17 +18,20 @@ def active_gmt_metadata_to_bdf(gmt_file_path, bdf_file_path, mode): - with open(bdf_file_path, mode) as out_bdf_file: - with open(gmt_file_path) as in_gmt_file: - counter = 0 - for line in in_gmt_file: - if '@D' in line: - out_bdf_file.write(f"{Path(gmt_file_path).name}|{counter}|{line.strip()}\n") - counter += 1 + try: + with open(bdf_file_path, mode) as out_bdf_file: + with open(gmt_file_path) as in_gmt_file: + counter = 0 + for line in in_gmt_file: + if '@D' in line: + out_bdf_file.write(f"{Path(gmt_file_path).name}|{counter}|{line.strip()}\n") + counter += 1 + except Exception as e: + print(f"Error processing GMT metadata: {e}", file=sys.stderr) + sys.exit(1) def active_shp_to_gmt(shp_file_path, gmt_file_path): - # ogr2ogr.main(["", "-f", "GMT", gmt_file_path, shp_file_path]) cmd = [get_ogr_path(), "-f", "GMT", gmt_file_path, shp_file_path] if not validate_file(shp_file_path): return @@ -38,41 +41,45 @@ def active_shp_to_gmt(shp_file_path, gmt_file_path): def active_extent_control_file(extent_file_path, path_file_path, output_file_path, out_active_extent_path, crs, gis, mode): - proj = osr.SpatialReference() - proj.ImportFromEPSG(int(crs)) - result_wkt = proj.ExportToWkt() - result_wkt = result_wkt.replace('"', '\\"') - result_proj = proj.ExportToProj4() - # print(f'epsg resutl is: {result_wkt}') - # print(f'proj string is: {result_proj}') - del proj - - with open(out_active_extent_path, mode) as out_active_ext_file: - with open(extent_file_path) as extent_file: - extent_line = extent_file.readline().strip() - out_active_ext_file.write(f'{extent_line}\n') - - with open(output_file_path, mode) as out_file: - if mode == 'w': - out_file.write("# @VGMT1.0 @GLINESTRING\n") - out_file.write(f'# @Jp"{result_proj}"\n') - out_file.write(f'# @Jw"{result_wkt}"\n') - out_file.write("# @Nlinenum\n") - out_file.write("# @Tinteger\n") - out_file.write("# FEATURE_DATA\n") - - line_name = None - - with open(path_file_path) as path_file: - for path_line in path_file: - path_line = path_line.strip().split() - - if line_name != path_line[0]: - line_name = path_line[0] - out_file.write(">\n") - out_file.write(f"# @D{line_name}\n") - - out_file.write(f"{path_line[4]} {path_line[5]}\n") + try: + proj = osr.SpatialReference() + proj.ImportFromEPSG(int(crs)) + result_wkt = proj.ExportToWkt() + result_wkt = result_wkt.replace('"', '\\"') + result_proj = proj.ExportToProj4() + # print(f'epsg resutl is: {result_wkt}') + # print(f'proj string is: {result_proj}') + del proj + + with open(out_active_extent_path, mode) as out_active_ext_file: + with open(extent_file_path) as extent_file: + extent_line = extent_file.readline().strip() + out_active_ext_file.write(f'{extent_line}\n') + + with open(output_file_path, mode) as out_file: + if mode == 'w': + out_file.write("# @VGMT1.0 @GLINESTRING\n") + out_file.write(f'# @Jp"{result_proj}"\n') + out_file.write(f'# @Jw"{result_wkt}"\n') + out_file.write("# @Nlinenum\n") + out_file.write("# @Tinteger\n") + out_file.write("# FEATURE_DATA\n") + + line_name = None + + with open(path_file_path) as path_file: + for path_line in path_file: + path_line = path_line.strip().split() + + if line_name != path_line[0]: + line_name = path_line[0] + out_file.write(">\n") + out_file.write(f"# @D{line_name}\n") + + out_file.write(f"{path_line[4]} {path_line[5]}\n") + except Exception as e: + print(f"Error processing extent or path file: {e}", file=sys.stderr) + sys.exit(1) def main(input_directory, output_directory, crs=28349, gis="esri_arcmap_0.5", lines=10, lines_increment=30): diff --git a/aemworkflow/pre_interpretation.py b/aemworkflow/pre_interpretation.py index c9591f5..bf94a98 100644 --- a/aemworkflow/pre_interpretation.py +++ b/aemworkflow/pre_interpretation.py @@ -14,120 +14,132 @@ def all_lines(path_file_path, output_file_path, crs, gis, mode): - proj = osr.SpatialReference() - proj.ImportFromEPSG(int(crs)) - result_wkt = proj.ExportToWkt() - result_wkt = result_wkt.replace('"', '\\"') - result_proj = proj.ExportToProj4() - # print(f'epsg resutl is: {result_wkt}') - # print(f'proj string is: {result_proj}') - del proj - - with open(output_file_path, mode) as out_file: - if mode == 'w': - out_file.write("# @VGMT1.0 @GLINESTRING\n") - out_file.write(f'# @Jp"{result_proj}"\n') - out_file.write(f'# @Jw"{result_wkt}"\n') - out_file.write("# @Nlinenum|flightnum|date|Survey|Company|Status\n") - out_file.write("# @Tinteger|integer|integer|string|string|string\n") - out_file.write("# FEATURE_DATA\n") - - with open(path_file_path) as file: - first_line = file.readline().strip().split() - out_file.write(">\n") - out_file.write(f"# @D{first_line[0]}\n") - out_file.write(f"{first_line[4]} {first_line[5]}\n") - for line in file: - # Parse the input fields from the line - fields = line.strip().split() - if len(fields) > 0: - out_file.write(f"{fields[4]} {fields[5]}\n") + try: + proj = osr.SpatialReference() + proj.ImportFromEPSG(int(crs)) + result_wkt = proj.ExportToWkt() + result_wkt = result_wkt.replace('"', '\\"') + result_proj = proj.ExportToProj4() + # print(f'epsg resutl is: {result_wkt}') + # print(f'proj string is: {result_proj}') + del proj + + with open(output_file_path, mode) as out_file: + if mode == 'w': + out_file.write("# @VGMT1.0 @GLINESTRING\n") + out_file.write(f'# @Jp"{result_proj}"\n') + out_file.write(f'# @Jw"{result_wkt}"\n') + out_file.write("# @Nlinenum|flightnum|date|Survey|Company|Status\n") + out_file.write("# @Tinteger|integer|integer|string|string|string\n") + out_file.write("# FEATURE_DATA\n") + + with open(path_file_path) as file: + first_line = file.readline().strip().split() + out_file.write(">\n") + out_file.write(f"# @D{first_line[0]}\n") + out_file.write(f"{first_line[4]} {first_line[5]}\n") + for line in file: + # Parse the input fields from the line + fields = line.strip().split() + if len(fields) > 0: + out_file.write(f"{fields[4]} {fields[5]}\n") + except Exception as e: + print(f"Error processing file {path_file_path}: {e}", file=sys.stderr) + sys.exit(1) def print_boxes(pl, pt, pr, pb, out_file, xpo, ypo): - out_file.write(">\n") - out_file.write("# @Dextent\n") - out_file.write(f"{pl - xpo} {pt + ypo}\n") - out_file.write(f"{pr - xpo} {pt + ypo}\n") - out_file.write(f"{pr - xpo} {pb + ypo}\n") - out_file.write(f"{pl - xpo} {pb + ypo}\n") - out_file.write(f"{pl - xpo} {pt + ypo}\n") - - out_file.write(">\n") - out_file.write("# @Dupper_left\n") - out_file.write(f"{pl - xpo} {pt + ypo}\n") - out_file.write(f"{pl + 1 - xpo} {pt + ypo}\n") - out_file.write(f"{pl + 1 - xpo} {pt - 1 + ypo}\n") - out_file.write(f"{pl - xpo} {pt - 1 + ypo}\n") - out_file.write(f"{pl - xpo} {pt + ypo}\n") - - out_file.write(">\n") - out_file.write("# @Dlower_right\n") - out_file.write(f"{pr - xpo} {pb + ypo}\n") - out_file.write(f"{pr - 1 - xpo} {pb + ypo}\n") - out_file.write(f"{pr - 1 - xpo} {pb + 1 + ypo}\n") - out_file.write(f"{pr - xpo} {pb + 1 + ypo}\n") - out_file.write(f"{pr - xpo} {pb + ypo}\n") - - out_file.write(">\n") - out_file.write("# @Dground_level\n") + try: + out_file.write(">\n") + out_file.write("# @Dextent\n") + out_file.write(f"{pl - xpo} {pt + ypo}\n") + out_file.write(f"{pr - xpo} {pt + ypo}\n") + out_file.write(f"{pr - xpo} {pb + ypo}\n") + out_file.write(f"{pl - xpo} {pb + ypo}\n") + out_file.write(f"{pl - xpo} {pt + ypo}\n") + + out_file.write(">\n") + out_file.write("# @Dupper_left\n") + out_file.write(f"{pl - xpo} {pt + ypo}\n") + out_file.write(f"{pl + 1 - xpo} {pt + ypo}\n") + out_file.write(f"{pl + 1 - xpo} {pt - 1 + ypo}\n") + out_file.write(f"{pl - xpo} {pt - 1 + ypo}\n") + out_file.write(f"{pl - xpo} {pt + ypo}\n") + + out_file.write(">\n") + out_file.write("# @Dlower_right\n") + out_file.write(f"{pr - xpo} {pb + ypo}\n") + out_file.write(f"{pr - 1 - xpo} {pb + ypo}\n") + out_file.write(f"{pr - 1 - xpo} {pb + 1 + ypo}\n") + out_file.write(f"{pr - xpo} {pb + 1 + ypo}\n") + out_file.write(f"{pr - xpo} {pb + ypo}\n") + + out_file.write(">\n") + out_file.write("# @Dground_level\n") + except Exception as e: + print(f"Error writing boxes: {e}", file=sys.stderr) + sys.exit(1) def box_elevation(extent_file_path, path_file_path, output_file_path, depth_lines, line_increments, xpo, ypo): - last = None - yy = [] - - lines = int(depth_lines) - depth = depth_line_increments = int(line_increments) # Set initial value for depth - - # This function will be modified to do the following: - # - Look for all path and extent files in folder - # - check that the numbers are equal, if not report on the ones that are missing. - # - modify jointjs icons to show actual numbers - # - create box.gmt files for all combination of path and extent files. - - with open(output_file_path, 'w') as out_file: - - with open(extent_file_path) as file: - for line in file: - # Parse the input fields from the line - fields = line.strip().split() - if len(fields) > 0: - nr1, pt, pl, pr, pb, nr2, dt, nr3, db = map(float, fields) - y_of = dt - y_fact = (db - dt) / (pb - pt) - - out_file.write("# @VGMT1.0 @GLINESTRING\n") - out_file.write("# @Nlinename\n") - out_file.write("# @Tstring\n") - out_file.write("# FEATURE_DATA\n") - - print_boxes(pl, pt, pr, pb, out_file, xpo, ypo) - - with open(path_file_path) as path_file: - for line in path_file: - path_fields = line.strip().split() - - if len(path_fields) > 0: - ppt = int(path_fields[1]) - py = (y_of - float(path_fields[8])) / y_fact - out_file.write(f"{int(path_fields[1]) - 1} " - f"{round(decimal.Decimal((-py + ypo) - (2 / y_fact)), 4).normalize()}\n") - yy.insert(ppt - 1, py * -1) - last = ppt - - for j in range(1, lines + 1): - out_file.write(">\n") - out_file.write(f"# @D{depth}\n") - - for i in range(0, last): - # ly=(yy[i]-(ddd/y_fact)) - # print i-1" "ly+ypo - - ly = round(decimal.Decimal(str(yy[i] - (depth / y_fact) - (2 / y_fact))), 4).normalize() - out_file.write(f'{i} {round(ly + decimal.Decimal(ypo), 4).normalize()}\n') - - depth += depth_line_increments + try: + last = None + yy = [] + + lines = int(depth_lines) + depth = depth_line_increments = int(line_increments) # Set initial value for depth + + # This function will be modified to do the following: + # - Look for all path and extent files in folder + # - check that the numbers are equal, if not report on the ones that are missing. + # - modify jointjs icons to show actual numbers + # - create box.gmt files for all combination of path and extent files. + + with open(output_file_path, 'w') as out_file: + + with open(extent_file_path) as file: + for line in file: + # Parse the input fields from the line + fields = line.strip().split() + if len(fields) > 0: + nr1, pt, pl, pr, pb, nr2, dt, nr3, db = map(float, fields) + y_of = dt + y_fact = (db - dt) / (pb - pt) + + out_file.write("# @VGMT1.0 @GLINESTRING\n") + out_file.write("# @Nlinename\n") + out_file.write("# @Tstring\n") + out_file.write("# FEATURE_DATA\n") + + print_boxes(pl, pt, pr, pb, out_file, xpo, ypo) + + with open(path_file_path) as path_file: + for line in path_file: + path_fields = line.strip().split() + + if len(path_fields) > 0: + ppt = int(path_fields[1]) + py = (y_of - float(path_fields[8])) / y_fact + out_file.write(f"{int(path_fields[1]) - 1} " + f"{round(decimal.Decimal((-py + ypo) - (2 / y_fact)), 4).normalize()}\n") + yy.insert(ppt - 1, py * -1) + last = ppt + + for j in range(1, lines + 1): + out_file.write(">\n") + out_file.write(f"# @D{depth}\n") + + for i in range(0, last): + # ly=(yy[i]-(ddd/y_fact)) + # print i-1" "ly+ypo + + ly = round(decimal.Decimal(str(yy[i] - (depth / y_fact) - (2 / y_fact))), 4).normalize() + out_file.write(f'{i} {round(ly + decimal.Decimal(ypo), 4).normalize()}\n') + + depth += depth_line_increments + except Exception as e: + print(f"Error processing box elevation: {e}", file=sys.stderr) + sys.exit(1) def main(input_directory, output_directory, crs="28349", gis="esri_arcmap_0.5", lines=10, lines_increment=30): diff --git a/aemworkflow/validation.py b/aemworkflow/validation.py index 700f4c7..d61a340 100644 --- a/aemworkflow/validation.py +++ b/aemworkflow/validation.py @@ -6,10 +6,14 @@ def validation_remove_quotes(bdf_file_path, bdf_out_file_path, logger_session=logger): logger_session.info("Running remove quotes validation.") - with open(bdf_file_path, 'r') as bdf_file, open(bdf_out_file_path, 'w') as bdf_clean_out_file: - for line in bdf_file: - bdf_clean_out_file.write(line.replace('"', '')) - logger_session.info("Completed remove quotes validation.") + try: + with open(bdf_file_path, 'r') as bdf_file, open(bdf_out_file_path, 'w') as bdf_clean_out_file: + for line in bdf_file: + bdf_clean_out_file.write(line.replace('"', '')) + logger_session.info("Completed remove quotes validation.") + except Exception as e: + logger_session.error(f"Error during remove quotes validation: {e}") + raise def validation_qc_units(erc_file_path, bdf_2_file_path, validation_dir, logger_session=logger): @@ -22,94 +26,97 @@ def validation_qc_units(erc_file_path, bdf_2_file_path, validation_dir, logger_s no_unit = {} # Read stratigraphic-unit.csv - qc_outputs_path = os.path.join(validation_dir, 'qc') + os.sep - Path(qc_outputs_path).mkdir(exist_ok=True) - - with open(erc_file_path, "r", encoding='utf-8') as strat_file: - for line in strat_file: - fields = line.strip().split("|") - if len(fields) != 43: - with open(fr"{qc_outputs_path}asud_nf.asc", "a") as nf_file: - nf_file.write(f"{len(fields)} {line}") - else: - stratno[fields[0]] = fields[1] - name[fields[0]] = fields[0] - - # Read AusAEM1_Interp.csv and compare unit name-number - with open(bdf_2_file_path, "r") as interp_file: - with open(fr'{qc_outputs_path}error_list.log', "a") as error_list_file: - - for line in interp_file: - fields = line.strip().split("|") - if len(fields) <= 25: - with open(fr"{qc_outputs_path}short_nf.log", "a") as short_nf_file: - short_nf_file.write(f"{len(fields)} {fields[0]} {fields[1]}\n") + try: + qc_outputs_path = os.path.join(validation_dir, 'qc') + os.sep + Path(qc_outputs_path).mkdir(exist_ok=True) - if fields[7] == '' and fields[8] == '': - if fields[10] == '' and fields[11] == '': - if fields[13] == '' and fields[14] == '': + with open(erc_file_path, "r", encoding='utf-8') as strat_file: + for line in strat_file: + fields = line.strip().split("|") + if len(fields) != 43: + with open(fr"{qc_outputs_path}asud_nf.asc", "a") as nf_file: + nf_file.write(f"{len(fields)} {line}") + else: + stratno[fields[0]] = fields[1] + name[fields[0]] = fields[0] + + # Read AusAEM1_Interp.csv and compare unit name-number + with open(bdf_2_file_path, "r") as interp_file: + with open(fr'{qc_outputs_path}error_list.log', "a") as error_list_file: + + for line in interp_file: + fields = line.strip().split("|") + if len(fields) <= 25: + with open(fr"{qc_outputs_path}short_nf.log", "a") as short_nf_file: + short_nf_file.write(f"{len(fields)} {fields[0]} {fields[1]}\n") + + if fields[7] == '' and fields[8] == '': + if fields[10] == '' and fields[11] == '': + if fields[13] == '' and fields[14] == '': + units[f"{fields[7]} {fields[8]}"] = f"{fields[7]},{fields[8]}" + count[f"{fields[7]} {fields[8]}"] = count.get(f"{fields[7]} {fields[8]}", 0) + 1 + error_list_file.write(f"nulls|{fields[7]}|{fields[8]}|{line}") + continue + + if (name.get(fields[7]) == fields[7] and stratno.get(fields[7]) == fields[8]) or \ + (name.get(fields[10]) == fields[10] and stratno.get(fields[10]) == fields[11]) or \ + (name.get(fields[13]) == fields[13] and stratno.get(fields[13]) == fields[14]): + + if name.get(fields[7]) == fields[7] and stratno.get(fields[7]) == fields[8]: units[f"{fields[7]} {fields[8]}"] = f"{fields[7]},{fields[8]}" count[f"{fields[7]} {fields[8]}"] = count.get(f"{fields[7]} {fields[8]}", 0) + 1 - error_list_file.write(f"nulls|{fields[7]}|{fields[8]}|{line}") - continue - - if (name.get(fields[7]) == fields[7] and stratno.get(fields[7]) == fields[8]) or \ - (name.get(fields[10]) == fields[10] and stratno.get(fields[10]) == fields[11]) or \ - (name.get(fields[13]) == fields[13] and stratno.get(fields[13]) == fields[14]): - - if name.get(fields[7]) == fields[7] and stratno.get(fields[7]) == fields[8]: - units[f"{fields[7]} {fields[8]}"] = f"{fields[7]},{fields[8]}" - count[f"{fields[7]} {fields[8]}"] = count.get(f"{fields[7]} {fields[8]}", 0) + 1 - else: - no_unit[f"{fields[7]} {fields[8]}"] = f"{fields[7]},{fields[8]}" - count[f"{fields[7]} {fields[8]}"] = count.get(f"{fields[7]} {fields[8]}", 0) + 1 - error_list_file.write(f"over|{fields[7]}|{fields[8]}|{line}") - - if name.get(fields[10]) == fields[10] and stratno.get(fields[10]) == fields[11]: - units[f"{fields[10]} {fields[11]}"] = f"{fields[10]},{fields[11]}" - count[f"{fields[10]} {fields[11]}"] = count.get(f"{fields[10]} {fields[11]}", 0) + 1 - else: - no_unit[f"{fields[10]} {fields[11]}"] = f"{fields[10]},{fields[11]}" - count[f"{fields[10]} {fields[11]}"] = count.get(f"{fields[10]} {fields[11]}", 0) + 1 - error_list_file.write(f"under|{fields[10]}|{fields[11]}|{line}") + else: + no_unit[f"{fields[7]} {fields[8]}"] = f"{fields[7]},{fields[8]}" + count[f"{fields[7]} {fields[8]}"] = count.get(f"{fields[7]} {fields[8]}", 0) + 1 + error_list_file.write(f"over|{fields[7]}|{fields[8]}|{line}") + + if name.get(fields[10]) == fields[10] and stratno.get(fields[10]) == fields[11]: + units[f"{fields[10]} {fields[11]}"] = f"{fields[10]},{fields[11]}" + count[f"{fields[10]} {fields[11]}"] = count.get(f"{fields[10]} {fields[11]}", 0) + 1 + else: + no_unit[f"{fields[10]} {fields[11]}"] = f"{fields[10]},{fields[11]}" + count[f"{fields[10]} {fields[11]}"] = count.get(f"{fields[10]} {fields[11]}", 0) + 1 + error_list_file.write(f"under|{fields[10]}|{fields[11]}|{line}") + + if name.get(fields[13]) == fields[13] and stratno.get(fields[13]) == fields[14]: + units[f"{fields[13]} {fields[14]}"] = f"{fields[13]},{fields[14]}" + count[f"{fields[13]} {fields[14]}"] = count.get(f"{fields[13]} {fields[14]}", 0) + 1 + else: + no_unit[f"{fields[13]} {fields[14]}"] = f"{fields[13]},{fields[14]}" + count[f"{fields[13]} {fields[14]}"] = count.get(f"{fields[13]} {fields[14]}", 0) + 1 + error_list_file.write(f"within|{fields[13]}|{fields[14]}|{line}") - if name.get(fields[13]) == fields[13] and stratno.get(fields[13]) == fields[14]: - units[f"{fields[13]} {fields[14]}"] = f"{fields[13]},{fields[14]}" - count[f"{fields[13]} {fields[14]}"] = count.get(f"{fields[13]} {fields[14]}", 0) + 1 else: - no_unit[f"{fields[13]} {fields[14]}"] = f"{fields[13]},{fields[14]}" - count[f"{fields[13]} {fields[14]}"] = count.get(f"{fields[13]} {fields[14]}", 0) + 1 - error_list_file.write(f"within|{fields[13]}|{fields[14]}|{line}") - - else: - # No match at all - no_unit[f'{fields[7]} {fields[8]}'] = f'{fields[7]},{fields[8]}' - no_unit[f'{fields[10]} {fields[11]}'] = f'{fields[10]},{fields[11]}' - no_unit[f'{fields[13]} {fields[14]}'] = f'{fields[13]},{fields[14]}' - - count[f'{fields[7]} {fields[8]}'] = count.get(f'{fields[7]} {fields[8]}', 0) + 1 - count[f'{fields[10]} {fields[11]}'] = count.get(f'{fields[10]} {fields[11]}', 0) + 1 - count[f'{fields[13]} {fields[14]}'] = count.get(f'{fields[13]} {fields[14]}', 0) + 1 - - error_list_file.write(f'over|{fields[7]}|{fields[8]}|{line}') - error_list_file.write(f'under|{fields[10]}|{fields[11]}|{line}') - error_list_file.write(f'within|{fields[13]}|{fields[14]}|{line}') - - d = date.today().strftime("%Y%m%d") - summary_file = fr'{qc_outputs_path}AEM_validation_summary_{d}.txt' - - with open(summary_file, "a") as summary_file: - logger_session.info("result,name,number,count") - summary_file.write('result,name,number,count\n') - for var in units: - logger_session.info(f"matched,{units[var]},{count[var]}") - summary_file.write(f'matched,{units[var]},{count[var]}\n') - - for var in no_unit: - logger_session.info(f"no match,{no_unit[var]},{count[var]}") - summary_file.write(f'no match,{no_unit[var]},{count[var]}\n') - - logger_session.info("completed qc_units validation.") + # No match at all + no_unit[f'{fields[7]} {fields[8]}'] = f'{fields[7]},{fields[8]}' + no_unit[f'{fields[10]} {fields[11]}'] = f'{fields[10]},{fields[11]}' + no_unit[f'{fields[13]} {fields[14]}'] = f'{fields[13]},{fields[14]}' + + count[f'{fields[7]} {fields[8]}'] = count.get(f'{fields[7]} {fields[8]}', 0) + 1 + count[f'{fields[10]} {fields[11]}'] = count.get(f'{fields[10]} {fields[11]}', 0) + 1 + count[f'{fields[13]} {fields[14]}'] = count.get(f'{fields[13]} {fields[14]}', 0) + 1 + + error_list_file.write(f'over|{fields[7]}|{fields[8]}|{line}') + error_list_file.write(f'under|{fields[10]}|{fields[11]}|{line}') + error_list_file.write(f'within|{fields[13]}|{fields[14]}|{line}') + + d = date.today().strftime("%Y%m%d") + summary_file = fr'{qc_outputs_path}AEM_validation_summary_{d}.txt' + + with open(summary_file, "a") as summary_file: + logger_session.info("result,name,number,count") + summary_file.write('result,name,number,count\n') + for var in units: + logger_session.info(f"matched,{units[var]},{count[var]}") + summary_file.write(f'matched,{units[var]},{count[var]}\n') + + for var in no_unit: + logger_session.info(f"no match,{no_unit[var]},{count[var]}") + summary_file.write(f'no match,{no_unit[var]},{count[var]}\n') + + logger_session.info("completed qc_units validation.") + except Exception as e: + logger_session.error(f"Error during qc_units validation: {e}") def main(input_directory, output_directory, asud): From 833abff99b0a6bd09bbb33b42a7a7ec0d145f73e Mon Sep 17 00:00:00 2001 From: Melyn Roberts Date: Mon, 29 Sep 2025 14:44:53 +1000 Subject: [PATCH 08/13] Make directories required --- aemworkflow/aemworkflow.py | 27 ++++++++++++------------ dist/aemworkflow-0.0.3-py3-none-any.whl | Bin 30318 -> 30335 bytes dist/aemworkflow-0.0.3.tar.gz | Bin 35024 -> 35003 bytes environment.yml | 4 +++- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/aemworkflow/aemworkflow.py b/aemworkflow/aemworkflow.py index cc1f0ae..9dead60 100644 --- a/aemworkflow/aemworkflow.py +++ b/aemworkflow/aemworkflow.py @@ -1,3 +1,4 @@ +import re import sys import click from .conversion import main as conversion @@ -12,8 +13,8 @@ def cli(): pass @cli.command() -@click.option("--i", "input_directory", type=click.Path(exists=True)) -@click.option("--o", "output_directory", type=click.Path()) +@click.option("--i", "input_directory", type=click.Path(exists=True), required=True) +@click.option("--o", "output_directory", type=click.Path(), required=True) @click.option("--crs", default="28349", help="Coordinate Reference System (default: EPSG:28349)") @click.option("--gis", default="esri_arcmap_0.5", help="GIS format (default: esri_arcmap_0.5)") @click.option("--lines", default=10, help="Number of depth lines (default: 10)") @@ -27,8 +28,8 @@ def pre_interpret(input_directory, output_directory, crs, gis="esri_arcmap_0.5", sys.exit(1) @cli.command() -@click.option("--i", "input_directory", type=click.Path(exists=True)) -@click.option("--o", "output_directory", type=click.Path()) +@click.option("--i", "input_directory", type=click.Path(exists=True), required=True) +@click.option("--o", "output_directory", type=click.Path(), required=True) @click.option("--crs", default="28349", help="Coordinate Reference System (default: EPSG:28349)") @click.option("--gis", default="esri_arcmap_0.5", help="GIS format (default: esri_arcmap_0.5)") @click.option("--lines", default=10, help="Number of depth lines (default: 10)") @@ -42,9 +43,9 @@ def interpret(input_directory, output_directory, crs="28349", gis="esri_arcmap_0 sys.exit(1) @cli.command() -@click.option("--i", "input_directory", type=click.Path(exists=True)) -@click.option("--o", "output_directory", type=click.Path()) -@click.option("--a", "asud_filename", type=click.Path(exists=True)) +@click.option("--i", "input_directory", type=click.Path(exists=True), required=True) +@click.option("--o", "output_directory", type=click.Path(), required=True) +@click.option("--a", "asud_filename", type=click.Path(exists=True), required=True) def validate(input_directory, output_directory, asud_filename): try: validation(input_directory, output_directory, asud_filename) @@ -54,8 +55,8 @@ def validate(input_directory, output_directory, asud_filename): sys.exit(1) @cli.command() -@click.option("--i", "input_directory", type=click.Path(exists=True)) -@click.option("--o", "output_directory", type=click.Path()) +@click.option("--i", "input_directory", type=click.Path(exists=True), required=True) +@click.option("--o", "output_directory", type=click.Path(), required=True) @click.option("--crs", default="28349", help="Coordinate Reference System (default: EPSG:28349)") def convert(input_directory, output_directory, crs): try: @@ -66,10 +67,10 @@ def convert(input_directory, output_directory, crs): sys.exit(1) @cli.command() -@click.option("--i", "input_directory", type=click.Path(exists=True)) -@click.option("--o", "output_directory", type=click.Path()) -@click.option("--b", "boundary_filename", type=click.Path(exists=True)) -@click.option("--s", "split_filename", type=click.Path(exists=True)) +@click.option("--i", "input_directory", type=click.Path(exists=True), required=True) +@click.option("--o", "output_directory", type=click.Path(), required=True) +@click.option("--b", "boundary_filename", type=click.Path(exists=True), required=True) +@click.option("--s", "split_filename", type=click.Path(exists=True), required=True) @click.option("--mdc", is_flag=True, help="Export to MDC format", default=False) @click.option("--mdch", is_flag=True, help="Export to MDCH format", default=False) @click.option("--egs", is_flag=True, help="Export to EGS format", default=False) diff --git a/dist/aemworkflow-0.0.3-py3-none-any.whl b/dist/aemworkflow-0.0.3-py3-none-any.whl index bdfb72f705511610b94a5cafd2bdc72aeb43d661..5965ace6ab1b27f5c9b01a3f7981fe6afeb1d249 100644 GIT binary patch delta 2022 zcmZ8ic{J2(82-&LW5zOOP-4h(8HA`*6cI^`r3f)I)u6?0W)Mk}C6y)2PnJyFFvVCZ zu930b(qc(Oi#1DKpV!xVbnEs6T&x| z)Ce020N2r}4ytrgLa&)jr0lFxoU!H2yvpk?X!rj2q66jc>svGX$2)9sb$i^>I@dpE zUCAt@B(?5b$&-}dGnNBZ)86WnjWLCY=nrH*tH1eYrP8kTst?E$L7hvMs|d}ko7TJD zXeA);6v%5mNjC6+I7@W<6uiJ8@LRRbBJa!l+GEa5c7@Q}_CDUL94@{yfS_1BXOw-3 zo}_BWEc<{|HYg3^dKO#EzvfKpeKyHbigzepvu$W!kx$E)-mz4|y~XS@)GxUnf6TVh zbLsM%&|7UIYR;|KRF-Xq><1ldgmFfTQS2lk0`3lT^|=hU>~yth5nP174tF7+vSjak z#~GeIF=0a=K;1p+6AuXxWw-CYjJ< zsLkuOlkyE!hDh}=^4h)273NKOFVD}xkT5FSr{8MmeALaC$1}E}Y~CtqoqbS zyRyH$bDFrIJy{auN<0^8g6!MdetewS6rvqf8#xphEA7+uT@4D0dN-*!(QAqEiySZ+ zIcJJHjVt}KCw6<@pS$>C>+?LwlX)ugV_)`XNG3IIfS?(8-w)g3E96$%m;js8H4hj2 zx(8}amyo^V{aD;hc-LP+3v+U5P-`k_I_h2+< zApdTpqvB{^Co$N{GMr|meW^tJlT87|jIy*!`WpKw>}|UBi}zxT**`z2+3sw-S+?io zH&49?ma0w4N{u&VcVYFKcG6d)S9aKzK-Zw>?x%GN=Fcb0CF0KT4|-%1nL0Um)XJ2U zNh{Ac->&YE^s5ope29$R=ss8a&o^r#6{14UszMU#CKVp)rKrtB%3v6?nJij1h-@ZL z?S>^b6DHv{49ZZi&>_EvZbYcpBtj6u8NV!OsydkHPumEP04F3vU<)~*fh`J>0`%z3 z47Lp#KJ+tuD-Z5P?1!mFzd`I9i94(Ld#31p^!&HLz_&;fOx1Lm%V2KSovdpChdrJC zxX4fR?6y#Nt<)Hk$&Ni=P2YC)QJ979#e=3jFP=RS+h4LXrbp=E15bb7j>ckc=_)@6 z*L0>?Y;pGL%v7_J?o(D+lXpDpub?R+eQ?d(O7;xCs^*zUO?v&9>%6OlzJYFis@w#( zp#7n&LsRV|lHtN+9HZo6ypX+gmty0%#v%LClMnH^abds3=UM8D+s)9UekvwPANeVU zbP3Xm=-Oi38CO-~p5r{|A*9%6l1=zsq4aUv@x$^LRW(Cf8>%EeLXws%U$99F(e&m3 z`IO3t(G|9D>A%xYG3m4;Bh!Li`LX0)YmF%9!J8* zn04^d!-b};#pW9DevGNzQJ;s!2MJ?+I{pbOZimj-I=$@K&3cVCnc&*e-?^z8=3K#k zi(6GTA4uEW(GxCyZhS?Lkn%3BYwys&7)7QE2Vnw< zSwz)wmARjRky$WRNtZenp_Q_x0~=hn33fJMJPP-P4CW&1#)9qJvRQX;bdwt0 z?1lAq_a}!HYQ^&jw{z*#`pTkoX%;0?xJdudmap;8QjTVfh8|evR9v_hJ{fZhU8F?n z_%ef$9FK5*AXz(Nx?i^Y+!2(;y@6Ka8Yat}j##9T3VL5V#zG6(Z^{#MrZ5V8PvN5$ z{m}<6o{4-_gR)e)y|R3Sg((|hdL6dY;0||!Btp@%@x_z-WNT1rnm?@83!2_~JD?lZ zU?78X;(z}JI72xFkppe0IAwts3H_%YRD`1dK-3rj_ZioQDek=ee{>uPxqL#t4G@VU!G7Ssig2gm@ zh#UBWrm>03L1D7pVE|wt|9|Nm&@5PU!|gu73Q#>V2=U(zx|7j5$MF!T3?L)WKmZ%I zN371)mLdehD*=GoFUl~l4G<$lMtP$zc(jE_6x0cVt@2CXyq}=&w_k`;1%RuUTQsx< zje<)7bbbLO`)^Le^+%)rJB{EiY6ww)3I~9g0BsNvD!!?^`78+mzyZN2RsTctN0eK@ OCXHk0R(L*Tqw)_zUu3)h delta 2007 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±{6yL33T>=9XAO69vN04?nu$@p`Cfau(UvIWb7X? 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 Yk%%&rpNIwx=db(xKkKZ}bpXHv0C+HBbpQYW delta 33784 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 diff --git a/environment.yml b/environment.yml index 640cbfa..9a32084 100644 --- a/environment.yml +++ b/environment.yml @@ -7,5 +7,7 @@ dependencies: - pip=25.0.1 - python=3.12.9 - pip: - - git+https://github.com/GeoscienceAustralia/aem-interpretation-conversion.git@main + # - git+https://github.com/GeoscienceAustralia/aem-interpretation-conversion.git@main + - git+https://github.com/GeoscienceAustralia/aem-interpretation-conversion.git@PV-2480-add-flags-for-aem-workflow-cli-scripts#egg=aemworkflow + prefix: /opt/conda-env From 72c22b6f2c98ea1ae46a9cd3a1606950baf8fee8 Mon Sep 17 00:00:00 2001 From: Melyn Roberts Date: Mon, 29 Sep 2025 14:54:39 +1000 Subject: [PATCH 09/13] Back to main branch --- aemworkflow/aemworkflow.py | 1 - environment.yml | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/aemworkflow/aemworkflow.py b/aemworkflow/aemworkflow.py index 9dead60..16deff2 100644 --- a/aemworkflow/aemworkflow.py +++ b/aemworkflow/aemworkflow.py @@ -1,4 +1,3 @@ -import re import sys import click from .conversion import main as conversion diff --git a/environment.yml b/environment.yml index 9a32084..640cbfa 100644 --- a/environment.yml +++ b/environment.yml @@ -7,7 +7,5 @@ dependencies: - pip=25.0.1 - python=3.12.9 - pip: - # - git+https://github.com/GeoscienceAustralia/aem-interpretation-conversion.git@main - - git+https://github.com/GeoscienceAustralia/aem-interpretation-conversion.git@PV-2480-add-flags-for-aem-workflow-cli-scripts#egg=aemworkflow - + - git+https://github.com/GeoscienceAustralia/aem-interpretation-conversion.git@main prefix: /opt/conda-env From c15447aa42ccf4baecc7e6e3fa653ea95b300104 Mon Sep 17 00:00:00 2001 From: Melyn Roberts Date: Mon, 29 Sep 2025 16:05:47 +1000 Subject: [PATCH 10/13] Update docs --- README.md | 16 ++++++++-------- docs/source/run_scripts/index.rst | 10 +++++----- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index e441c44..5661c7d 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,7 @@ If using Anaconda, activate conda environment if required before running the scr ### Pre-interpretation ``` -aemworkflow pre-interpret "{input_directory}" "{output_directory}" +aemworkflow pre-interpret --i "{input_directory}" --o "{output_directory}" ``` **Parameter examples:** @@ -115,7 +115,7 @@ aemworkflow pre-interpret "{input_directory}" "{output_directory}" ### Interpretation ``` -aemworkflow interpret "{input_directory}" "{output_directory}" +aemworkflow interpret --i "{input_directory}" --o "{output_directory}" ``` **Parameter examples:** @@ -131,7 +131,7 @@ aemworkflow interpret "{input_directory}" "{output_directory}" ### Validation ``` -aemworkflow validate "{input_directory}" "{output_directory}" "{asud_filename}" +aemworkflow validate --o "{input_directory}" --i "{output_directory}" --a "{asud_filename}" ``` **Parameter examples:** @@ -145,7 +145,7 @@ aemworkflow validate "{input_directory}" "{output_directory}" "{asud_filename}" ### Conversion ``` -aemworkflow convert "{input_directory}" "{output_directory}" +aemworkflow convert --i "{input_directory}" --o "{output_directory}" ``` **Parameter examples:** @@ -159,7 +159,7 @@ aemworkflow convert "{input_directory}" "{output_directory}" ### Export ``` -aemworkflow export "{input_directory}" "{output_directory}" "{boundary_file}" "{split_file}" -mdc -mdch -egs +aemworkflow export --o "{input_directory}" --i "{output_directory}" --b "{boundary_file}" --s "{split_file}" --mdc --mdch --egs ``` **Parameter examples:** @@ -169,9 +169,9 @@ aemworkflow export "{input_directory}" "{output_directory}" "{boundary_file}" "{ | | output directory| Yes |None | | | | | name of boundary file| Yes |None | | | | | name of split file | Yes |None | | | -| -mdc | Export to MDC format | Yes |False | | | -| -mdch | Export to MDCH format| Yes |False | | | -| -egs | Export to EGS format | Yes |False | | | +| --mdc | Export to MDC format | Yes |False | | | +| --mdch | Export to MDCH format| Yes |False | | | +| --egs | Export to EGS format | Yes |False | | | Useful Links diff --git a/docs/source/run_scripts/index.rst b/docs/source/run_scripts/index.rst index 9a08a12..49f332a 100644 --- a/docs/source/run_scripts/index.rst +++ b/docs/source/run_scripts/index.rst @@ -11,7 +11,7 @@ Pre-interpretation .. code-block:: bash - aemworkflow pre-interpret "{input_directory}" "{output_directory}" + aemworkflow pre-interpret --i "{input_directory}" --o "{output_directory}" **Parameter examples:** @@ -34,7 +34,7 @@ Interpretation .. code-block:: bash - aemworkflow interpret "{input_directory}" "{output_directory}" + aemworkflow interpret --i "{input_directory}" --o "{output_directory}" **Parameter examples:** @@ -54,7 +54,7 @@ Validation .. code-block:: bash - aemworkflow validate "{input_directory}" "{output_directory}" "{asud_filename}" + aemworkflow validate --i "{input_directory}" --o "{output_directory}" --a "{asud_filename}" **Parameter examples:** @@ -71,7 +71,7 @@ Conversion .. code-block:: bash - aemworkflow convert "{input_directory}" "{output_directory}" + aemworkflow convert --i "{input_directory}" --o "{output_directory}" **Parameter examples:** @@ -89,7 +89,7 @@ Export .. code-block:: bash - aemworkflow export "{input_directory}" "{output_directory}" "{boundary_file}" "{split_file}" -mdc -mdch -egs + aemworkflow export --i "{input_directory}" --o "{output_directory}" --b "{boundary_file}" --s "{split_file}" --mdc --mdch --egs **Parameter examples:** From 55fdb6e0b37091e11bff94e9cc158c6989e9981e Mon Sep 17 00:00:00 2001 From: Melyn Roberts Date: Wed, 1 Oct 2025 11:04:45 +1000 Subject: [PATCH 11/13] Change readme to rst --- README.md | 195 --------------------------------------- README.rst | 264 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 264 insertions(+), 195 deletions(-) delete mode 100644 README.md create mode 100644 README.rst diff --git a/README.md b/README.md deleted file mode 100644 index e441c44..0000000 --- a/README.md +++ /dev/null @@ -1,195 +0,0 @@ -# AEM Interpretation Conversion Tool (AEMInterpConvert) - -## Overview -For more information about AEMInterpConvert, Geoscience Australia’s Online Airborne Electromagnetic Interpretation Conversion Tool, see this [Geoscience Australia article](https://ecat.ga.gov.au/geonetwork/srv/eng/catalog.search#/metadata/150529). - ---- - -## Installation Guide - -### 1. Clone the Repository -```bash -git clone git@bitbucket.org:geoscienceaustralia/aem-interpretation-conversion.git -cd aem-interpretation-conversion -``` - ---- - -### 2. Choose Your Environment Setup - -### **Option A: Anaconda (Recommended)** -If you have [Anaconda](https://www.anaconda.com/download) installed: -```bash -conda env create -f environment.yml -conda activate aemworkflow-env -``` - ---- - -### **Option B: Python 3.12 + Virtual Environment (VENV)** -#### i. Ensure Python 3.12 is installed. - -**Linux / macOS:** -```bash -python3.12 -m venv aem-venv -source aem-venv/bin/activate -``` - -**Windows (Command Prompt):** -```powershell -python -m venv aem-venv -aem-venv\Scripts\activate.bat -``` - -#### ii. Install GDAL Dependencies. - -**Linux / macOS:** -Use the provided build script to install system-level GDAL and PROJ libraries: -```bash -cd builds -./linux_gdal.sh -``` - -This script will: -- Install required system packages (`gdal`, `proj`) -- Install the Python GDAL bindings matching your GDAL version - ---- - -**Windows** -1. Download and install [OSGeo4W](https://trac.osgeo.org/osgeo4w/). - - Choose **Advanced Install** - - Select the following packages: - - `gdal` - - `proj` - -2. After installation (default path is `C:\OSGeo4W` or `C:\OSGeo4W64`), run the helper script to configure environment variables and install Python GDAL bindings using Windows Command prompt (CMD): -```cmd -cd builds -windows_gdal.bat -``` - -This script will: -- Add OSGeo4W binaries to your `PATH` -- Detect the installed GDAL version (`gdalinfo --version`) -- Install the matching Python GDAL bindings via `pip` - ---- -#### iii. Verify GDAL Installation -To confirm GDAL bindings are working correctly: -```bash -python -c "from osgeo import gdal; print(gdal.VersionInfo())" -``` - -#### iv. Install the AEMInterpConvert Package - -After setting up dependencies: -```bash -pip install . -``` - - -### 3. CLI Usage ------------- -For each script, run the file with any required arguments and any additional where you want to deviate from the default. All arguments should be in quotes as per the examples. - -If using Anaconda, activate conda environment if required before running the scripts. - -### Pre-interpretation - -``` -aemworkflow pre-interpret "{input_directory}" "{output_directory}" -``` - -**Parameter examples:** - -| Flag | Argument | Required | Default |Options |Notes | -| ------------|-----------------| ------------ |-----------|----------|--------| -| | input directory | Yes |None | |A non zipped folder containing required files| -| | output directory| Yes |None | | | -| | crs - GDA/MGA zone EPSG| No |28349 |28349, 28350, 28351, 28352, 28354, 28355, 28356| | -| | Interpretation GIS software| No|esri_arcmap_0.5|esri_arcmap_0.5 or esri_arcmap_pro_0.5| | -| | depth lines | No |10 | | | -| | depth lines increment| No |30 | | | - -### Interpretation - -``` -aemworkflow interpret "{input_directory}" "{output_directory}" -``` -**Parameter examples:** - -| Flag | Argument | Required | Default |Options |Notes | -| ------------|-----------------| ------------ |-----------|----------|--------| -| | input directory | Yes |None | |A non zipped folder containing required files| -| | output directory| Yes |None | | | -| | crs - GDA/MGA zone EPSG| No |28349 |28349, 28350, 28351, 28352, 28354, 28355, 28356| | -| | Interpretation GIS software| No|esri_arcmap_0.5|esri_arcmap_0.5 or esri_arcmap_pro_0.5| | -| | depth lines | No |10 | | | -| | depth lines increment| No |30 | | | - -### Validation - -``` -aemworkflow validate "{input_directory}" "{output_directory}" "{asud_filename}" -``` -**Parameter examples:** - -| Flag | Argument | Required | Default |Options |Notes | -| ------------|-----------------| ------------ |-----------|----------|--------| -| | input directory | Yes |None | |A non zipped folder containing required files| -| | output directory| Yes |None | | | -| | ausd file name | Yes |None | | | - - -### Conversion - -``` -aemworkflow convert "{input_directory}" "{output_directory}" -``` -**Parameter examples:** - -| Flag | Argument | Required | Default |Options |Notes | -| ------------|-----------------| ------------ |-----------|----------|--------| -| | input directory | Yes |None | |A non zipped folder containing required files| -| | output directory| Yes |None | | | -| | crs - GDA/MGA zone EPSG| No |28349 |28349, 28350, 28351, 28352, 28354, 28355, 28356| | - - -### Export - -``` -aemworkflow export "{input_directory}" "{output_directory}" "{boundary_file}" "{split_file}" -mdc -mdch -egs -``` -**Parameter examples:** - -| Flag | Argument | Required | Default |Options |Notes | -| ------------|-----------------| ------------ |-----------|----------|--------| -| | input directory | Yes |None | |A non zipped folder containing required files| -| | output directory| Yes |None | | | -| | name of boundary file| Yes |None | | | -| | name of split file | Yes |None | | | -| -mdc | Export to MDC format | Yes |False | | | -| -mdch | Export to MDCH format| Yes |False | | | -| -egs | Export to EGS format | Yes |False | | | - - -Useful Links ------------- - -Home Page - http://github.com/GeoscienceAustralia/aem-interpretation-conversion - -Documentation - http://GeoscienceAustralia.github.io/aem-interpretation-conversion - -Issue tracking - https://github.com/GeoscienceAustralia/aem-interpretation-conversion/issues - -AEMInterpConvert website user interface https://aem.toolkits.ga.gov.au - -Bugs & Feedback ---------------- - -For bugs, questions and discussions, please use -Github Issues diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..b8b2ec7 --- /dev/null +++ b/README.rst @@ -0,0 +1,264 @@ +AEM Interpretation Conversion Tool (AEMInterpConvert) +================================================================ + +Background +========== + +This online Airborne Electromagnetic (AEM) data viewer is designed to provide a user-friendly interface for visualizing and analyzing AEM data. + +For more information please see the `Metadata Statement and User Guide`_ and `Workflow Document`_. + +.. _Metadata Statement and User Guide: https://ecat.ga.gov.au/geonetwork/srv/eng/catalog.search#/metadata/150529 + +.. _Workflow Document: https://ecat.ga.gov.au/geonetwork/srv/eng/catalog.search#/metadata/147251 + + +Installation +============ + +1. Clone the Repository +------------------------------- +.. code-block:: bash + + git clone git@bitbucket.org:geoscienceaustralia/aem-interpretation-conversion.git + cd aem-interpretation-conversion + +--- + +2. Choose Your Environment Setup +-------------------------------------- + + +**Option A: Anaconda (Recommended)** +---------------------------------------------- + +If you have `Anaconda`_ installed + +.. _Anaconda: https://www.anaconda.com/downloads + +.. code-block:: bash + + conda env create -f environment.yml + conda activate aemworkflow-env + + +**Option B: Python 3.12 + Virtual Environment (VENV)** +---------------------------------------------- +Install a virtual environment +-------------------------------- + +Ensure Python 3.12 is installed on your system. +You can download it from the official Python website: https://www.python.org/downloads/. + +.. _Linux/MacOS instructions: + +Linux/MacOS instructions +---------------- +To create a virtual environment, open a terminal and run the following commands: + +.. code-block:: bash + + python3.12 -m venv aem-venv + source aem-venv/bin/activate + +This will create a virtual environment named `aem-venv` and activate it. + +Then install the GDAL dependencies: +Use the provided build script to install system-level GDAL and PROJ libraries: + +.. code-block:: bash + + ./builds/linux_gdal.sh + +This script will: + +- Install required system packages (gdal, proj) +- Install the Python GDAL bindings matching your GDAL version + +And add the current directory to the Python path: + +.. code-block:: bash + + export PYTHONPATH=$PYTHONPATH:$(pwd) + +Continue with the verification and installation instructions below + +.. _Windows instructions: + +Windows instructions +---------------- +To create a virtual environment, open a terminal and run the following commands: + +.. code-block:: bash + python -m venv aem-venv + aem-venv\Scripts\activate.bat + +Download and install `OSGeo4W`_. + +.. _OSGeo4W: https://trac.osgeo.org/osgeo4w/ + +- Choose Advanced Install +- Select the following packages: + - gdal + - proj +After installation (default path is C:\OSGeo4W or C:\OSGeo4W64), run the helper script to configure environment variables and install Python GDAL bindings using Windows Command prompt (CMD): + +.. code-block:: bash + + cd builds + windows_gdal.bat + +This script will: + +- Add OSGeo4W binaries to your PATH +- Detect the installed GDAL version (gdalinfo --version) +- Install the matching Python GDAL bindings via pip + +Continue with the verification and installation instructions below + +.. _verification-and-installation: + +Verification and installation +---------------- + +Then verify the gdal installation and bindings are working correctly by ensuring this command runs without errors: + +.. code-block:: bash + python -c "from osgeo import gdal; print(gdal.VersionInfo())" + +Finally, install the AEMInterpConvert Package: + +.. code-block:: bash + + pip install . + + +Run scripts +============ + +For each script, run the file with any required arguments and any additional where you want to deviate from the default. All arguments should be in quotes as per the examples. + +If using Anaconda, activate conda environment if required before running the scripts. + +Pre-interpretation +----------------------- + + +.. code-block:: bash + + aemworkflow pre-interpret --i "{input_directory}" --o "{output_directory}" + + +**Parameter examples:** + + +============================= ============== =============== ================================================ ============================================= +Argument Required Default Options Notes +============================= ============== =============== ================================================ ============================================= +input directory Yes None A non zipped folder containing required files +output directory Yes None +coordinate reference system No 28349 28349, 28350, 28351, 28352, 28354, 28355, 28356 GDA/MGA zone EPSG +GIS software No Esri ArcMap esri_arcmap_0.5 or esri_arcmap_pro_0.5 +number of depth lines No 10 +lines increments in metres No 30 +============================= ============== =============== ================================================ ============================================= + +Interpretation +----------------------- + + +.. code-block:: bash + + aemworkflow interpret --i "{input_directory}" --o "{output_directory}" + +**Parameter examples:** + +============================= ============== =============== ================================================ ============================================= +Argument Required Default Options Notes +============================= ============== =============== ================================================ ============================================= +input directory Yes None A non zipped folder containing required files +output directory Yes None +coordinate reference system No 28349 28349, 28350, 28351, 28352, 28354, 28355, 28356 GDA/MGA zone EPSG +GIS software No Esri ArcMap esri_arcmap_0.5 or esri_arcmap_pro_0.5 +number of depth lines No 10 +lines increments in metres No 30 +============================= ============== =============== ================================================ ============================================= + +Validation +----------------------- + +.. code-block:: bash + + aemworkflow validate --i "{input_directory}" --o "{output_directory}" --a "{asud_filename}" + +**Parameter examples:** + +============================= ============== =============== ========= ============================================= +Argument Required Default Options Notes +============================= ============== =============== ========= ============================================= +input directory Yes None A non zipped folder containing required files +output directory Yes None +asud filename Yes None +============================= ============== =============== ========= ============================================= + +Conversion +----------------------- + +.. code-block:: bash + + aemworkflow convert --i "{input_directory}" --o "{output_directory}" + +**Parameter examples:** + +============================= ============== =============== ================================================ ============================================= +Argument Required Default Options Notes +============================= ============== =============== ================================================ ============================================= +input directory Yes None A non zipped folder containing required files +output directory Yes None +coordinate reference system No 28349 28349, 28350, 28351, 28352, 28354, 28355, 28356 GDA/MGA zone EPSGac +============================= ============== =============== ================================================ ============================================= + + +Export +----------------------- + +.. code-block:: bash + + aemworkflow export --i "{input_directory}" --o "{output_directory}" --b "{boundary_file}" --s "{split_file}" --mdc --mdch --egs + +**Parameter examples:** + +============================= ============== =============== ================================================ ============================================= +Argument Required Default Options Notes +============================= ============== =============== ================================================ ============================================= +input directory Yes None A non zipped folder containing required files +output directory Yes None +asud filename Yes None +boundary file Yes None +split file No None +--mdc No False Add the flag if you want to set to true Export to MDC format +--mdch No False Add the flag if you want to set to true Export to MDCH format +--egs No False Add the flag if you want to set to true Export to EGS format +============================= ============== =============== ================================================ ============================================= + + + +Useful Links +------------ + +Home Page + http://github.com/GeoscienceAustralia/aem-interpretation-conversion + +Documentation + http://GeoscienceAustralia.github.io/aem-interpretation-conversion + +Issue tracking + https://github.com/GeoscienceAustralia/aem-interpretation-conversion/issues + +AEMInterpConvert website user interface https://aem.toolkits.ga.gov.au + +Bugs & Feedback +--------------- + +For bugs, questions and discussions, please use +Github Issues https://github.com/GeoscienceAustralia/aem-interpretation-conversion/issues From c5a320fd76cb63ef88dc7600ab7732321ff23c23 Mon Sep 17 00:00:00 2001 From: Mick Ilovski <68362775+mickilovski@users.noreply.github.com> Date: Fri, 3 Oct 2025 11:00:34 +1000 Subject: [PATCH 12/13] Delete README.md --- README.md | 195 ------------------------------------------------------ 1 file changed, 195 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index 5661c7d..0000000 --- a/README.md +++ /dev/null @@ -1,195 +0,0 @@ -# AEM Interpretation Conversion Tool (AEMInterpConvert) - -## Overview -For more information about AEMInterpConvert, Geoscience Australia’s Online Airborne Electromagnetic Interpretation Conversion Tool, see this [Geoscience Australia article](https://ecat.ga.gov.au/geonetwork/srv/eng/catalog.search#/metadata/150529). - ---- - -## Installation Guide - -### 1. Clone the Repository -```bash -git clone git@bitbucket.org:geoscienceaustralia/aem-interpretation-conversion.git -cd aem-interpretation-conversion -``` - ---- - -### 2. Choose Your Environment Setup - -### **Option A: Anaconda (Recommended)** -If you have [Anaconda](https://www.anaconda.com/download) installed: -```bash -conda env create -f environment.yml -conda activate aemworkflow-env -``` - ---- - -### **Option B: Python 3.12 + Virtual Environment (VENV)** -#### i. Ensure Python 3.12 is installed. - -**Linux / macOS:** -```bash -python3.12 -m venv aem-venv -source aem-venv/bin/activate -``` - -**Windows (Command Prompt):** -```powershell -python -m venv aem-venv -aem-venv\Scripts\activate.bat -``` - -#### ii. Install GDAL Dependencies. - -**Linux / macOS:** -Use the provided build script to install system-level GDAL and PROJ libraries: -```bash -cd builds -./linux_gdal.sh -``` - -This script will: -- Install required system packages (`gdal`, `proj`) -- Install the Python GDAL bindings matching your GDAL version - ---- - -**Windows** -1. Download and install [OSGeo4W](https://trac.osgeo.org/osgeo4w/). - - Choose **Advanced Install** - - Select the following packages: - - `gdal` - - `proj` - -2. After installation (default path is `C:\OSGeo4W` or `C:\OSGeo4W64`), run the helper script to configure environment variables and install Python GDAL bindings using Windows Command prompt (CMD): -```cmd -cd builds -windows_gdal.bat -``` - -This script will: -- Add OSGeo4W binaries to your `PATH` -- Detect the installed GDAL version (`gdalinfo --version`) -- Install the matching Python GDAL bindings via `pip` - ---- -#### iii. Verify GDAL Installation -To confirm GDAL bindings are working correctly: -```bash -python -c "from osgeo import gdal; print(gdal.VersionInfo())" -``` - -#### iv. Install the AEMInterpConvert Package - -After setting up dependencies: -```bash -pip install . -``` - - -### 3. CLI Usage ------------- -For each script, run the file with any required arguments and any additional where you want to deviate from the default. All arguments should be in quotes as per the examples. - -If using Anaconda, activate conda environment if required before running the scripts. - -### Pre-interpretation - -``` -aemworkflow pre-interpret --i "{input_directory}" --o "{output_directory}" -``` - -**Parameter examples:** - -| Flag | Argument | Required | Default |Options |Notes | -| ------------|-----------------| ------------ |-----------|----------|--------| -| | input directory | Yes |None | |A non zipped folder containing required files| -| | output directory| Yes |None | | | -| | crs - GDA/MGA zone EPSG| No |28349 |28349, 28350, 28351, 28352, 28354, 28355, 28356| | -| | Interpretation GIS software| No|esri_arcmap_0.5|esri_arcmap_0.5 or esri_arcmap_pro_0.5| | -| | depth lines | No |10 | | | -| | depth lines increment| No |30 | | | - -### Interpretation - -``` -aemworkflow interpret --i "{input_directory}" --o "{output_directory}" -``` -**Parameter examples:** - -| Flag | Argument | Required | Default |Options |Notes | -| ------------|-----------------| ------------ |-----------|----------|--------| -| | input directory | Yes |None | |A non zipped folder containing required files| -| | output directory| Yes |None | | | -| | crs - GDA/MGA zone EPSG| No |28349 |28349, 28350, 28351, 28352, 28354, 28355, 28356| | -| | Interpretation GIS software| No|esri_arcmap_0.5|esri_arcmap_0.5 or esri_arcmap_pro_0.5| | -| | depth lines | No |10 | | | -| | depth lines increment| No |30 | | | - -### Validation - -``` -aemworkflow validate --o "{input_directory}" --i "{output_directory}" --a "{asud_filename}" -``` -**Parameter examples:** - -| Flag | Argument | Required | Default |Options |Notes | -| ------------|-----------------| ------------ |-----------|----------|--------| -| | input directory | Yes |None | |A non zipped folder containing required files| -| | output directory| Yes |None | | | -| | ausd file name | Yes |None | | | - - -### Conversion - -``` -aemworkflow convert --i "{input_directory}" --o "{output_directory}" -``` -**Parameter examples:** - -| Flag | Argument | Required | Default |Options |Notes | -| ------------|-----------------| ------------ |-----------|----------|--------| -| | input directory | Yes |None | |A non zipped folder containing required files| -| | output directory| Yes |None | | | -| | crs - GDA/MGA zone EPSG| No |28349 |28349, 28350, 28351, 28352, 28354, 28355, 28356| | - - -### Export - -``` -aemworkflow export --o "{input_directory}" --i "{output_directory}" --b "{boundary_file}" --s "{split_file}" --mdc --mdch --egs -``` -**Parameter examples:** - -| Flag | Argument | Required | Default |Options |Notes | -| ------------|-----------------| ------------ |-----------|----------|--------| -| | input directory | Yes |None | |A non zipped folder containing required files| -| | output directory| Yes |None | | | -| | name of boundary file| Yes |None | | | -| | name of split file | Yes |None | | | -| --mdc | Export to MDC format | Yes |False | | | -| --mdch | Export to MDCH format| Yes |False | | | -| --egs | Export to EGS format | Yes |False | | | - - -Useful Links ------------- - -Home Page - http://github.com/GeoscienceAustralia/aem-interpretation-conversion - -Documentation - http://GeoscienceAustralia.github.io/aem-interpretation-conversion - -Issue tracking - https://github.com/GeoscienceAustralia/aem-interpretation-conversion/issues - -AEMInterpConvert website user interface https://aem.toolkits.ga.gov.au - -Bugs & Feedback ---------------- - -For bugs, questions and discussions, please use -Github Issues From 3703d78982536146c62a60b64a16ebea914618e8 Mon Sep 17 00:00:00 2001 From: Mick Ilovski Date: Fri, 3 Oct 2025 11:11:03 +1000 Subject: [PATCH 13/13] Updating .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index b0a31e9..bea3b29 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ downloads/ eggs/ develop-eggs/ sdist/ +dist/ *.egg-info/ .installed.cfg *.egg @@ -40,6 +41,7 @@ pip-log.txt pip-delete-this-directory.txt # Test / coverage / tooling +test-results/ .tox/ .nox/ .pytest_cache/