From d683b9a9b51508b12a619234edacd20245deb634 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Tue, 4 Feb 2025 10:33:09 +0100 Subject: [PATCH 01/61] Fix matlab compilation segyio-shared target was removed and exchanged with segyio target in af2059a (cherry picked from commit 18626f56b62fd53c7f3a47a78f1f82a992b83922) --- mex/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mex/CMakeLists.txt b/mex/CMakeLists.txt index 2a1a6654..4fb5cbc0 100644 --- a/mex/CMakeLists.txt +++ b/mex/CMakeLists.txt @@ -19,7 +19,7 @@ configure_file(SegySampleFormat.m SegySampleFormat.m) configure_file(TraceSortingFormat.m TraceSortingFormat.m) configure_file(TraceField.m TraceField.m) -get_property(dirs TARGET segyio-shared PROPERTY INCLUDE_DIRECTORIES) +get_property(dirs TARGET segyio PROPERTY INCLUDE_DIRECTORIES) include_directories(${dirs}) mexo(segyutil) From 6854a646c8667858e675b7b1987b020085187c66 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Wed, 5 Feb 2025 15:50:59 +0100 Subject: [PATCH 02/61] Wrap matlab test scripts with print information These script are intended to be run as tests, but there is no visible information whether scripts were actually executed. Wrapping them up in print statements gives us confidence that scripts were run from start to finish. (cherry picked from commit 6683da9c289454af7c5866622091a223e1f8e74a) --- mex/test/segy.m | 3 +++ mex/test/segyspec.m | 3 +++ 2 files changed, 6 insertions(+) diff --git a/mex/test/segy.m b/mex/test/segy.m index 2e2f5b54..6963d893 100644 --- a/mex/test/segy.m +++ b/mex/test/segy.m @@ -1,3 +1,4 @@ +disp('segy.m test suite: start'); % test segyline % preconditions @@ -279,3 +280,5 @@ assert(abs(wr_line1(2,2,1) - 101.01001) < eps); assert(abs(wr_line1(3,2,1) - 101.01002) < eps); assert(abs(wr_line1(2,2,2) - 101.02001) < eps); + +disp('segy.m test suite: over'); diff --git a/mex/test/segyspec.m b/mex/test/segyspec.m index bb8669be..9447b235 100644 --- a/mex/test/segyspec.m +++ b/mex/test/segyspec.m @@ -1,3 +1,4 @@ +disp('segyspec.m test suite: start'); % test segyspec % preconditions @@ -86,3 +87,5 @@ for il = spec.inline_indexes' assert(il >= 1 && il <= 5); end + +disp('segyspec.m test suite: over'); From 79f5786fd47fa0a1e500bdd2e4d24de2208e6389 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Mon, 3 Feb 2025 20:16:43 +0100 Subject: [PATCH 03/61] Add matlab job There is no plan to do anything with matlab bindings (we are not sure if we won't drop them whatsoever), but it would be useful to know if we accidentally break something in the future. Github actions allow us to use matlab. While originally intended way of running tests with ctests doesn't work for some reason (probably due to matlab setup in github actions), we still can run scripts there directly as commands. (cherry picked from commit d54440851e0cccfcacad784edd945a892ce45e40) --- .github/workflows/build.yaml | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 70b108b3..4fd04422 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -81,3 +81,47 @@ jobs: run: | cd build ctest -C Release --output-on-failure + + + matlab: + runs-on: ubuntu-latest + name: Build and test matlab code + + steps: + - uses: actions/checkout@v4 + + - name: Set up MATLAB + uses: matlab-actions/setup-matlab@v2 + + - name: Configure + shell: bash + run: | + cmake -S . -B build \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ + -DBUILD_PYTHON=OFF \ + -DBUILD_MEX=ON \ + -DBUILD_BIN=OFF \ + -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_NAME_DIR=/usr/local/lib \ + + - name: Build and Install + shell: bash + run: | + sudo cmake \ + --build build \ + --config Release \ + --target install \ + + - name: Set LD_LIBRARY_PATH + run: echo "LD_LIBRARY_PATH=/usr/local/lib" >> $GITHUB_ENV + + - name: Run 'segy.m' test script + uses: matlab-actions/run-command@v2 + with: + command: addpath('build/mex'), try, run('build/mex/test/segy.m'), exit(0), catch ME, disp(getReport(ME, 'extended')), exit(-1), end; + + - name: Run 'segyspec.m' test script + uses: matlab-actions/run-command@v2 + with: + command: addpath('build/mex'), try, run('build/mex/test/segyspec.m'), exit(0), catch ME, disp(getReport(ME, 'extended')), exit(-1), end; From 37a3e2ee4fb052db08cba7971f925350dfd9d8fc Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Wed, 5 Feb 2025 20:01:56 +0100 Subject: [PATCH 04/61] Run c++ tests only as separate entity 6e84e4d changed the way tests were written, but doing so dropped separation between c.segy and c++ tests. By bringing it back we remove duplicated test runs (reducing cases run in test entities 1-4 from 101 to 81, by 20 tests that belong to the c++ group and are not affected by mmap/lsb distinction). Note that c++ code is built and tests are run regardless of the "experimental" build option. That option impacts installation only. (cherry picked from commit bf3cfa6a522ec3d17584996fbf85302c2be90d35) --- lib/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 2bd45413..632842e8 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -133,8 +133,8 @@ target_compile_definitions(c.segy PRIVATE ${mmap} ) -add_test(NAME c.segy COMMAND c.segy) -add_test(NAME c.segy.mmap COMMAND c.segy --test-mmap) -add_test(NAME c.segy.lsb COMMAND c.segy --test-lsb) -add_test(NAME c.segy.mmap.lsb COMMAND c.segy --test-mmap --test-lsb) +add_test(NAME c.segy COMMAND c.segy [c.segy]) +add_test(NAME c.segy.mmap COMMAND c.segy [c.segy] --test-mmap) +add_test(NAME c.segy.lsb COMMAND c.segy [c.segy] --test-lsb) +add_test(NAME c.segy.mmap.lsb COMMAND c.segy [c.segy] --test-mmap --test-lsb) add_test(NAME cpp.segy COMMAND c.segy [c++]) From ecddee3c107ba7ea25e1f05f1e5aefef60b19868 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Wed, 5 Feb 2025 20:09:24 +0100 Subject: [PATCH 05/61] Print tests results verbose in CI (cherry picked from commit f44aafb81b4dc7079a261caf65e76b275a5f7b1e) --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4fd04422..88206d73 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -80,7 +80,7 @@ jobs: shell: bash run: | cd build - ctest -C Release --output-on-failure + ctest -C Release --output-on-failure -V matlab: From 69f0656b880e40345574c795b98586d9b31d1f8a Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Thu, 6 Feb 2025 11:50:00 +0100 Subject: [PATCH 06/61] Remove unused test file (cherry picked from commit 7e6fc9fd9398bc765669013923f304087d05bbba) --- test-data/inv-small-ps.sgy | Bin 10320 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test-data/inv-small-ps.sgy diff --git a/test-data/inv-small-ps.sgy b/test-data/inv-small-ps.sgy deleted file mode 100644 index 15badc2dab9bbdae285d7f388094050c70aa5292..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10320 zcmeH|yKWOf6o$hkLZYFi0^fL#(e^w7k{e&dBTz;{kP7UzgXj=xQsEmfV8$Dxe_4fBs@;b4xvbv$OqjtNmmpmh-CB2`7vlqtz)pmJ_Je87GV#qt!V(mJ_Je zcTN~PMyo58+of}~Szh|=Dj#TL)Z%D}n*1CMN70cwoXz7!JexlIyR6zI_+dQVkEfCP z^lcH%mHB>AHW#VQ_f*YxcjwW9zFDT{<>iU_(@EOcAL^soe7>6UB1Ot`;Y%H;a zIuY)VM0kHB!u^p5_eUb!ABk{(q{97?3in4U+#jiMf26|wkqY-mD%>BbaDSx2{gDdy z$BAfvJm4`p^OK zk&_ECS*==sU+VCs4qqHysHF$`!~n|mCCl~Vb+=$|{UMQq=7|EdNR*(D{(*Y&^QFH2 zAgIHe`g)GYLkmO^TCy;G@j9ECQzFdvkynogdpBQ!*PuZ(p&`+Nwk^!dd7aJ7DG}!H zOC7${;ftdIZ4x20MR0w|YQ5N9y@LPMejZCjX^^E#WEQzFdYml}Mj!52pZ+9X0~i{Sc_ z)q1h_vfi+tV2rst#y)a%p*^Ax9T42Po7H;p_oWJ7935zv=t29$0Lt|x%k|=Qw_uE! z>&QX#L;+ePO3>@RkE|ztzErV~s_>?YedNeP3q%oGvM?Ld>uhFDi7zOIGW}{=fY8QH;48V;?!X z&>qo;4hZht&1${)`%-}~jt;a-^q_rW0Ok6U<$CeDTM%RBI&#oFQGgbS67;(7BU>+i zzErS}D)6R)edNeP3q%oGvM`6A*V)XR5@FUCuO1I#%-tAsH^x44G@&8Ug0?Np%Xyv6 Y%qbD(?@I-~RN#xF0c{c?v_-Uk0LVZMCjbBd From 47b0302049a8ed4f8b9be7a41ac7d38042144d63 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Thu, 6 Feb 2025 12:55:18 +0100 Subject: [PATCH 07/61] Add test-data overview (cherry picked from commit 9bed32d21b2488e46462261a224f1515d18f4cab) --- test-data/README.md | 81 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 test-data/README.md diff --git a/test-data/README.md b/test-data/README.md new file mode 100644 index 00000000..d1e8fda9 --- /dev/null +++ b/test-data/README.md @@ -0,0 +1,81 @@ +# Test data + +Test files names are already self-telling, but this overview aims to provide more context. + +Due to changes in the scripts after the files were originally created, reproducing might not give 100% same result, but similar enough. + +## General test files + +| File | Purpose | Recreation | Comment | +|--------------------------------|-----------------------------------------------------------------------------|-------------------------------------------------------|--------------------------------------------| +| 1x1.sgy | File with 1 inline, 1 xline and 4 offsets - 4 traces of 10 samples total | make-ps-file.py 1x1.sgy 10 0 1 0 1 0 4 | | +| 1xN.sgy | File with 1 inline, 6 xlines and 4 offsets - 24 traces of 10 samples total | make-ps-file.py 1xN.sgy 10 0 1 0 6 0 4 | | +| Mx1.sgy | File with 6 inlines, 1 xline and 4 offsets - 24 traces of 10 samples total | make-ps-file.py Mx1.sgy 10 0 1 0 1 0 4 | | +| delay-scalar.sgy | Recording time delay is 10000 and corresponding scalar is -10. | likely real file, cropped | ASCII text header | +| f3.sgy | File in format number 3 (2-byte, two's complement integers). | cropped real file | see text header | +| f3-lsb.sgy | Same as f3.sgy, but little-endian. | ./flip-endianness --samples 75 -F 2 f3.sgy f3-lsb.sgy | | +| interval-neg-bin-neg-trace.sgy | Sample interval in binary header is -2000 and same in trace is -25000. | | 1 sample, 1 trace | +| interval-neg-bin-pos-trace.sgy | Sample interval in binary header is -2 and same in trace is 4000. | | 1 sample, 1 trace | +| interval-pos-bin-neg-trace.sgy | Sample interval in binary header is 2000 and same in trace is -25000. | | 1 sample, 1 trace | +| long.sgy | Declares 60000 samples (value is written in 16-bit field in binary header). | | broken as proper trace headers are missing | +| multi-text.sgy | Contains 4 extended text headers | python make-multiple-text.py multi-text.sgy | 1 sample, 1 trace | +| shot-gather.sgy | Some traces have common field record [2 3 5 8]/geophone group [1 2]. | make-shot-gather.py shot-gather.sgy | First trace value is field record value. | +| small-lsb.sgy | small.sgy converted to little endian | ./flip-endianness --samples 50 small.sgy small-ps.sgy | | +| small-ps.sgy | Pre-stack file with 2 offsets. | python make-ps-file.py small-ps.sgy 10 1 5 1 4 1 3 | | +| small.sgy | Inline-sorted file with 50 samples, 5 inlines-xlines test file. | make-file.py small.sgy 50 1 6 20 25 | Basic file used in testing | +| text-embed-null.sgy | small.sgy but with one byte in text header exchanged with 00 | | | +| text.sgy | File with unique textual file header. | | no traces | +| 小文件.sgy | small.sgy but with utf-8 characters in the filename | rename small.sgy | bug test for Windows OS | + + +## Rotation test files + +Shows how survey coordinate system relates to cdp. Described angles are relative to starting position, clock-wise. + +To recreate: +`python python/examples/make-rotated-copies.py test-data/small.sgy small.sgy test-data` + + +| File | Purpose | +|---------------------|-----------------------------------------------------------------------| +| normal-small.sgy | 0° Survey coordinate system is aligned to cdpx/cdpy coordinate system | +| acute-small.sgy | 45° | +| right-small.sgy | 90° | +| obtuse-small.sgy | 135° | +| straight-small.sgy | 180° | +| reflex-small.sgy | 225° | +| left-small.sgy | 270° | +| inv-acute-small.sgy | 315° | + + +## Dimensions sorting test files + +Could be reproduced with +`python python/examples/sorting-permutation.py test-data/small-ps.sgy` + +Dimensions are mentioned in the order from slowest to fastest changing. + +| File | Purpose | +|--------------------------------|-------------------------------------------------------------| +| small-ps-dec-il-inc-xl-off.sgy | Inlines: decreasing. Xlines: increasing. Offset: increasing | +| small-ps-dec-il-off-inc-xl.sgy | Inlines: decreasing. Xlines: increasing. Offset: decreasing | +| small-ps-dec-il-xl-inc-off.sgy | Inlines: decreasing. Xlines: decreasing. Offset: increasing | +| small-ps-dec-il-xl-off.sgy | Inlines: decreasing. Xlines: decreasing. Offset: decreasing | +| small-ps-dec-off-inc-il-xl.sgy | Inlines: increasing. Xlines: increasing. Offset: decreasing | +| small-ps-dec-xl-inc-il-off.sgy | Inlines: increasing. Xlines: decreasing. Offset: increasing | +| small-ps-dec-xl-off-inc-il.sgy | Inlines: increasing. Xlines: decreasing. Offset: decreasing | + + +## Seismic Un*x format + +| File | Purpose | Recreation | +|--------------|-------------------------------------------------------------------------|-----------------------------------------------------------------------------------------| +| small-lsb.su | small.sgy converted to Seismic Un*x format and swapped to little endian | suswapbytes < small.su > small-lsb.su | +| small.su | small.sgy converted to Seismic Un*x format | segyread tape=small.sgy ns=50 remap=tracr,cdp byte=189l,193l conv=1 format=1 > small.su | + + +## Multiformat + +Files in the `multiformat` directory. + +`f3.sgy` converted to multiple formats, both big/little endian. Creations methods vary/unknown. From 15ef53ec0b32a6f53fb707394092c3a5132550f7 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Tue, 25 Feb 2025 12:13:44 +0100 Subject: [PATCH 08/61] Add information about segyio 2.0 development (cherry picked from commit d8f8b2ba2cb507ff1a34d751a11674781b9d7b97) --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 0a67c15f..6dd39c51 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,13 @@ [![PyPI Updates](https://pyup.io/repos/github/equinor/segyio/shield.svg)](https://pyup.io/repos/github/equinor/segyio/) [![Python 3](https://pyup.io/repos/github/equinor/segyio/python-3-shield.svg)](https://pyup.io/repos/github/equinor/segyio/) +> [!NOTE] +> 🚧 *segyio 2.0* is under construction in the `main` branch. 🚧 +> +> New major release is intended to have better support for SEG-Y 2.1 revision. +> +> ⚠️ Users should be prepared for possible breaking changes. + ## Documentation ## The official documentation is hosted on [readthedocs](https://segyio.readthedocs.io/). From 8f6a2e055c684e5988711e233caa02e9d3b53fd5 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Tue, 25 Feb 2025 12:23:43 +0100 Subject: [PATCH 09/61] Update SEG-Y revision links (cherry picked from commit 2d6ae3b7f42345f088bc69a5caa7272f44777c5f) --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6dd39c51..c886a4c6 100644 --- a/README.md +++ b/README.md @@ -362,9 +362,10 @@ discriminate between the revisions, but instead tries to use information available in the file. For an *actual* standard's reference, please see the publications by SEG: -- [SEG-Y 0 (1975)](https://seg.org/Portals/0/SEG/News%20and%20Resources/Technical%20Standards/seg_y_rev0.pdf) -- [SEG-Y 1 (2002)](https://seg.org/Portals/0/SEG/News%20and%20Resources/Technical%20Standards/seg_y_rev1.pdf) -- [SEG-Y 2 (2017)](https://seg.org/Portals/0/SEG/News%20and%20Resources/Technical%20Standards/seg_y_rev2_0-mar2017.pdf) +- [SEG-Y 0 (1975)](https://library.seg.org/pb-assets/technical-standards/seg_y_rev0-1686080980707.pdf) +- [SEG-Y 1 (2002)](https://library.seg.org/pb-assets/technical-standards/seg_y_rev1-1686080991247.pdf) +- [SEG-Y 2 (2017)](https://library.seg.org/pb-assets/technical-standards/seg_y_rev2_0-mar2017-1686080998003.pdf) +- [SEG-Y 2.1 (2023)](https://library.seg.org/pb-assets/technical-standards/seg_y_rev2_1-oct2023-1701361639333.pdf) ## Contributing ## From 0a780e91ba3651417dd73ed841b94f0692f4b5ae Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Tue, 25 Feb 2025 12:31:44 +0100 Subject: [PATCH 10/61] Rename master -> main branch (cherry picked from commit 64ce46aa739eb374fc2d678e98c398165adb3ca5) --- .github/workflows/build.yaml | 4 ++-- .github/workflows/wheels.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 88206d73..35bb8709 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -2,9 +2,9 @@ name: Build and Test on: push: - branches: [master] + branches: [main] pull_request: - branches: [master] + branches: [main] workflow_dispatch: jobs: diff --git a/.github/workflows/wheels.yaml b/.github/workflows/wheels.yaml index 5cd6fbc3..d9a72ed2 100644 --- a/.github/workflows/wheels.yaml +++ b/.github/workflows/wheels.yaml @@ -2,11 +2,11 @@ name: Wheels on: push: - branches: [master] + branches: [main] tags: - '*' pull_request: - branches: [master] + branches: [main] workflow_dispatch: jobs: From 7fa3a9fddf4c6e1b4cc79b99c90e476596940878 Mon Sep 17 00:00:00 2001 From: Alan Richardson Date: Fri, 14 May 2021 11:13:16 +0100 Subject: [PATCH 11/61] Replace SegyFile with segyio.SegyFile Two documentation strings in python/segyio/tools.py referred to SegyFile. This caused a problem with the tests, so I changed it to segyio.SegyFile. (cherry picked from commit 5bf27cc059f0f50bc5fdc8f0a85d5913c0cdde80) --- python/segyio/tools.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/segyio/tools.py b/python/segyio/tools.py index 50179799..5f760e9b 100644 --- a/python/segyio/tools.py +++ b/python/segyio/tools.py @@ -260,7 +260,7 @@ def rotation(f, line = 'fast'): Parameters ---------- - f : SegyFile + f : segyio.SegyFile line : { 'fast', 'slow', 'iline', 'xline' } Returns @@ -380,7 +380,7 @@ def resample(f, rate = None, delay = None, micro = False, Parameters ---------- - f : SegyFile + f : segyio.SegyFile rate : int delay : int micro : bool From 2ebb807590011735356bfe850c67266e0e5d2109 Mon Sep 17 00:00:00 2001 From: Yngve Villanger Date: Tue, 25 Feb 2025 12:34:25 +0100 Subject: [PATCH 12/61] Fix declaration without a prototype warning (cherry picked from commit 05bbd63c5177b26bd91e936c75a6c3b8d4ad20b2) --- applications/segyio-catb.c | 2 +- applications/segyio-cath.c | 2 +- applications/segyio-catr.c | 2 +- applications/segyio-crop.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/applications/segyio-catb.c b/applications/segyio-catb.c index d5514e70..5709e1de 100644 --- a/applications/segyio-catb.c +++ b/applications/segyio-catb.c @@ -9,7 +9,7 @@ #include "apputils.h" #include -static int printhelp(){ +static int printhelp(void){ puts( "Usage: segyio-catb [OPTION]... [FILE]...\n" "Concatenate the binary header from FILE(s) to seismic unix " "output.\n" diff --git a/applications/segyio-cath.c b/applications/segyio-cath.c index 48e5cce1..22f47688 100644 --- a/applications/segyio-cath.c +++ b/applications/segyio-cath.c @@ -9,7 +9,7 @@ #include "apputils.c" #include -static int help() { +static int help(void) { puts( "Usage: segyio-cath [OPTION]... [FILE]...\n" "Concatenate the textual header(s) from FILE(s) to standard output.\n" "\n" diff --git a/applications/segyio-catr.c b/applications/segyio-catr.c index 0a4564e0..2007a58b 100644 --- a/applications/segyio-catr.c +++ b/applications/segyio-catr.c @@ -395,7 +395,7 @@ static const char* desc[91] = { "Unassigned 2" }; -static int help() { +static int help(void) { puts( "Usage: segyio-catr [OPTION]... FILE\n" "Print specific trace headers from FILE\n" diff --git a/applications/segyio-crop.c b/applications/segyio-crop.c index 97638850..c8fa93d9 100644 --- a/applications/segyio-crop.c +++ b/applications/segyio-crop.c @@ -10,7 +10,7 @@ #include "apputils.c" #include -static int help() { +static int help(void) { puts( "Usage: segyio-crop [OPTION]... SRC DST\n" "Copy a sub cube from SRC to DST\n" "\n" From b33022e28c88bd40cef5a8b6ef38de396c3127de Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Mon, 24 Feb 2025 19:06:20 +0100 Subject: [PATCH 13/61] Upgrade linux runners Ubuntu-20.04 is deprecated and will be removed soon. (cherry picked from commit 62644e3bb5782a7d4342959e82cf6d502c39f71e) --- .github/workflows/build.yaml | 4 ++-- .github/workflows/wheels.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 35bb8709..46dd5fa8 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -20,9 +20,9 @@ jobs: cmake_generator: "-G \"Visual Studio 16 2019\" -A Win32" - os: macos-latest privledges: "sudo" - - os: ubuntu-20.04 + - os: ubuntu-latest privledges: "sudo" - - os: ubuntu-20.04 + - os: ubuntu-latest privledges: "sudo" compiler: "clang" analyzers: "cppcheck" diff --git a/.github/workflows/wheels.yaml b/.github/workflows/wheels.yaml index d9a72ed2..22aaaaf8 100644 --- a/.github/workflows/wheels.yaml +++ b/.github/workflows/wheels.yaml @@ -25,11 +25,11 @@ jobs: cmake_generator: "Visual Studio 16 2019" cmake_generator_platform: "Win32" arch: x86 - - os: ubuntu-20.04 + - os: ubuntu-latest arch: x86_64 - os: ubuntu-24.04-arm arch: aarch64 - - os: ubuntu-20.04 + - os: ubuntu-latest arch: i686 # macos-latest runs on arm64 architecture and cibuildwheel cross # compiling for x86_64 fails From 7cf234c06d044e9cd9d543ac3c8103cf20db58dc Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Mon, 24 Feb 2025 20:31:22 +0100 Subject: [PATCH 14/61] Fix compilation warning in custom deleter Instead of deleter being function pointer, use custom type. In addition to getting rid of the warning, this is a preferred approach in defining custom deleters. (cherry picked from commit 5c69fb596cdd617d0728144fce2c27f4f26ba6e9) --- lib/experimental/segyio/segyio.hpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/experimental/segyio/segyio.hpp b/lib/experimental/segyio/segyio.hpp index 706f07ff..e1cec0f1 100644 --- a/lib/experimental/segyio/segyio.hpp +++ b/lib/experimental/segyio/segyio.hpp @@ -1012,8 +1012,14 @@ simple_handle< T >::simple_handle( const segyio::path& path, } auto p = std::string(path); - std::unique_ptr< std::FILE, decltype( &std::fclose ) > - file( std::fopen( p.c_str(), m.c_str() ), std::fclose ); + + struct file_deleter { + void operator()(std::FILE* fp) const { + std::fclose(fp); + } + }; + std::unique_ptr< std::FILE, file_deleter > + file( std::fopen( p.c_str(), m.c_str() )); if( file ) { /* mode isn't garbage, and path apparently is ok too */ From 07ec3a8bf4254c1de37be78daea164a930708118 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Mon, 24 Feb 2025 19:30:47 +0100 Subject: [PATCH 15/61] Add analyzer workflow (cherry picked from commit 96352611081bb045ee62e8838e8e1f38766c3c52) --- .github/workflows/analyzers.yaml | 98 ++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 .github/workflows/analyzers.yaml diff --git a/.github/workflows/analyzers.yaml b/.github/workflows/analyzers.yaml new file mode 100644 index 00000000..88178bb7 --- /dev/null +++ b/.github/workflows/analyzers.yaml @@ -0,0 +1,98 @@ +name: Run analyzers + +on: + push: + branches: [main] + pull_request: + branches: [main] + workflow_dispatch: + +jobs: + cppcheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run: | + sudo apt-get update + sudo DEBIAN_FRONTEND=noninteractive apt-get -y install cppcheck + + - name: Configure + run: | + cmake -S . -B build \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ + -DBUILD_PYTHON=OFF \ + -DBUILD_TESTING=OFF + + - name: Run cppcheck + run: | + cppcheck \ + --enable=style,portability,performance,warning \ + --library=posix \ + --library=cppcheck/segyio.cfg \ + --suppressions-list=cppcheck/suppressions.txt \ + --inline-suppr \ + --project=build/compile_commands.json \ + --error-exitcode=1 + + scan_build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run: | + sudo apt-get update + sudo DEBIAN_FRONTEND=noninteractive apt-get -y install clang clang-tools libfindbin-libs-perl + + - name: Configure segyio + run: | + scan-build --status-bugs \ + cmake \ + -S . \ + -B build \ + -DCMAKE_BUILD_TYPE=Debug \ + -DBUILD_PYTHON=OFF \ + -DBUILD_TESTING=OFF + + - name: Run scan-build + run: | + scan-build --status-bugs \ + cmake \ + --build build + + valgrind: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run: | + sudo apt-get update + sudo DEBIAN_FRONTEND=noninteractive apt-get -y install valgrind + + - name: Build segyio + run: | + cmake -S . -B build \ + -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_C_FLAGS_DEBUG="-O0" \ + -DCMAKE_CXX_FLAGS_DEBUG="-O0" \ + -DBUILD_SHARED_LIBS=ON \ + -DBUILD_PYTHON=OFF + cmake --build build + + - name: Run valgrind on C tests, file + working-directory: build/lib + run: | + valgrind --leak-check=full --show-leak-kinds=all --error-exitcode=1 ./c.segy "[c.segy]" + + - name: Run valgrind on C tests, mmap + working-directory: build/lib + run: | + valgrind --leak-check=full --show-leak-kinds=all --error-exitcode=1 ./c.segy "[c.segy]" "--test-mmap" + + - name: Run valgrind on C++ tests + working-directory: build/lib + run: | + valgrind --leak-check=full --show-leak-kinds=all --error-exitcode=1 ./c.segy "[c++]" From 73162f19b9435e329b4c4c367c54089d57577d3c Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Tue, 25 Feb 2025 15:01:01 +0100 Subject: [PATCH 16/61] Remove analyzers from build job cppcheck never really worked. clang used together with scan-build was suspicious as compiler on compilation didn't identify as clang. (cherry picked from commit b3db880cae37484bd3ec83c02aa8d0db4de58acb) --- .github/workflows/build.yaml | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 46dd5fa8..e5d17fd5 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -25,8 +25,6 @@ jobs: - os: ubuntu-latest privledges: "sudo" compiler: "clang" - analyzers: "cppcheck" - scan: "scan-build --status-bugs" mkdoc: "-DBUILD_DOC=ON -DSPHINX_ARGS=-WT" - os: macos-latest privledges: "sudo" @@ -43,23 +41,10 @@ jobs: echo "CC=/usr/bin/clang" >> $GITHUB_ENV echo "CXX=/usr/bin/clang++" >> $GITHUB_ENV - - name: Run cppcheck - shell: bash - if: ${{ matrix.analyzer == 'cppcheck' }} - run: | - cppcheck - --enable=style,portability,performance,warning - --library=posix - --library=cppcheck/segyio.cfg - --suppressions-list=cppcheck/suppressions.txt - --inline-suppr - --project=compile_commands.json - --error-exitcode=1 - - name: Configure shell: bash run: | - ${{ matrix.scan }} cmake -S . -B build \ + cmake -S . -B build \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DBUILD_PYTHON=OFF \ -DBUILD_SHARED_LIBS=ON \ From bdefa63a90d348002308cd6370896a45253780dd Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Wed, 26 Feb 2025 20:33:31 +0100 Subject: [PATCH 17/61] Tidy up macos build core jobs Removed duplicated job and added build on non-arm macos (cherry picked from commit a0d17031edf89c770f57b6764e5e0ab41b72f125) --- .github/workflows/build.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index e5d17fd5..7fe7c100 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -18,17 +18,16 @@ jobs: cmake_generator: "-G \"Visual Studio 16 2019\" -A x64" - os: windows-2019 cmake_generator: "-G \"Visual Studio 16 2019\" -A Win32" - - os: macos-latest - privledges: "sudo" - os: ubuntu-latest privledges: "sudo" - os: ubuntu-latest privledges: "sudo" compiler: "clang" mkdoc: "-DBUILD_DOC=ON -DSPHINX_ARGS=-WT" + - os: macos-13 + privledges: "sudo" - os: macos-latest privledges: "sudo" - arch: arm64 steps: - uses: actions/checkout@v4 From a130dc789aeb04723acb69fee18b6d5fec229587 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Wed, 26 Feb 2025 20:34:28 +0100 Subject: [PATCH 18/61] Add more error-checking to build core flow CMAKE_COMPILE_WARNING_AS_ERROR=ON is set to on. Reason is that with new coming adjustments for SEG-Y 2.1 types will change and we will need to be careful to do correct type conversions everywhere. Having failing jobs that should notice some type conversion mismatches should help. -D_CRT_SECURE_NO_WARNINGS is added to Windows jobs to prevent "security" warnings. Fixing these warnings properly would require different code paths for Linux-Windows and may have unexpected side-effects. As we deal with memory security in other ways, adding this flag is good enough. (cherry picked from commit 22592d9e524117abcf1f569a2fc31fffffaffed0) --- .github/workflows/build.yaml | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 7fe7c100..1710618e 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,24 +10,46 @@ on: jobs: test: runs-on: ${{ matrix.os }} - name: Build and test on ${{ matrix.os }} ${{ matrix.compiler }} + name: Build and test ${{ matrix.build_type }} on ${{ matrix.os }} ${{ matrix.compiler }} ${{ matrix.cmake_generator }} strategy: + fail-fast: false matrix: include: - os: windows-2019 cmake_generator: "-G \"Visual Studio 16 2019\" -A x64" + build_type: "Release" + compiler_flags: "-D_CRT_SECURE_NO_WARNINGS /EHsc" + - os: windows-2019 + cmake_generator: "-G \"Visual Studio 16 2019\" -A x64" + build_type: "Debug" + compiler_flags: "-D_CRT_SECURE_NO_WARNINGS /EHsc" - os: windows-2019 cmake_generator: "-G \"Visual Studio 16 2019\" -A Win32" + build_type: "Release" + compiler_flags: "-D_CRT_SECURE_NO_WARNINGS /EHsc" - os: ubuntu-latest privledges: "sudo" + build_type: "Release" + - os: ubuntu-latest + privledges: "sudo" + build_type: "Debug" + compiler_flags: "-Wextra -Wall -pedantic" - os: ubuntu-latest privledges: "sudo" compiler: "clang" mkdoc: "-DBUILD_DOC=ON -DSPHINX_ARGS=-WT" + build_type: "Release" + - os: ubuntu-latest + privledges: "sudo" + compiler: "clang" + build_type: "Debug" + compiler_flags: "-Wextra -Wall -pedantic" - os: macos-13 privledges: "sudo" + build_type: "Release" - os: macos-latest privledges: "sudo" + build_type: "Release" steps: - uses: actions/checkout@v4 @@ -47,8 +69,11 @@ jobs: -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DBUILD_PYTHON=OFF \ -DBUILD_SHARED_LIBS=ON \ - -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ -DCMAKE_INSTALL_NAME_DIR=/usr/local/lib \ + -DCMAKE_C_FLAGS="${{ matrix.compiler_flags }}" \ + -DCMAKE_CXX_FLAGS="${{ matrix.compiler_flags }}" \ ${{ matrix.mkdoc }} \ ${{ matrix.cmake_generator }} \ @@ -57,14 +82,14 @@ jobs: run: | ${{ matrix.privledges }} cmake \ --build build \ - --config Release \ + --config ${{ matrix.build_type }} \ --target install \ - name: Test shell: bash run: | cd build - ctest -C Release --output-on-failure -V + ctest -C ${{ matrix.build_type }} --output-on-failure -V matlab: From 1bf96d4465ef3d756bc8b7e4a2033f9b37e57108 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Tue, 25 Feb 2025 11:32:07 +0100 Subject: [PATCH 19/61] Fix cppcheck warnings (cherry picked from commit 04da50bcdf6dc7dd282f06c27b380282cecfe211) --- applications/segyio-catb.c | 4 ++-- lib/src/segy.c | 25 ++++++++++++------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/applications/segyio-catb.c b/applications/segyio-catb.c index 5709e1de..4d6ce53d 100644 --- a/applications/segyio-catb.c +++ b/applications/segyio-catb.c @@ -23,7 +23,7 @@ static int printhelp(void){ return 0; } -static int get_binary_value( char* binheader, int bfield ){ +static int get_binary_value( const char* binheader, int bfield ){ int32_t f; segy_get_bfield( binheader, bfield, &f ); @@ -156,7 +156,7 @@ int main( int argc, char** argv ){ "Number of 3200-byte, Extended Textual File Headers" }; - static int bfield_value[ 30 ] = { + static const int bfield_value[ 30 ] = { SEGY_BIN_JOB_ID, SEGY_BIN_LINE_NUMBER, SEGY_BIN_REEL_NUMBER, diff --git a/lib/src/segy.c b/lib/src/segy.c index 274ff477..e83fc9f3 100644 --- a/lib/src/segy.c +++ b/lib/src/segy.c @@ -168,9 +168,9 @@ void ascii2ebcdic( const char* ascii, char* ebcdic ) { #define IEMINIB 0x21200000 static inline void ibm_native( void* buf ) { - static int it[8] = { 0x21800000, 0x21400000, 0x21000000, 0x21000000, - 0x20c00000, 0x20c00000, 0x20c00000, 0x20c00000 }; - static int mt[8] = { 8, 4, 2, 2, 1, 1, 1, 1 }; + static const int it[8] = { 0x21800000, 0x21400000, 0x21000000, 0x21000000, + 0x20c00000, 0x20c00000, 0x20c00000, 0x20c00000 }; + static const int mt[8] = { 8, 4, 2, 2, 1, 1, 1, 1 }; unsigned int manthi, iexp, inabs; int ix; uint32_t u; @@ -189,8 +189,8 @@ static inline void ibm_native( void* buf ) { } static inline void native_ibm( void* buf ) { - static int it[4] = { 0x21200000, 0x21400000, 0x21800000, 0x22100000 }; - static int mt[4] = { 2, 4, 8, 1 }; + static const int it[4] = { 0x21200000, 0x21400000, 0x21800000, 0x22100000 }; + static const int mt[4] = { 2, 4, 8, 1 }; unsigned int manthi, iexp, ix; uint32_t u; @@ -223,7 +223,7 @@ void ieee2ibm( void* to, const void* from ) { } /* Lookup table for field sizes. All values not explicitly set are 0 */ -static int field_size[] = { +static int field_size[SEGY_TRACE_HEADER_SIZE] = { [SEGY_TR_CDP_X ] = 4, [SEGY_TR_CDP_Y ] = 4, [SEGY_TR_CROSSLINE ] = 4, @@ -899,7 +899,7 @@ int segy_binheader( segy_file* fp, char* buf ) { #ifdef HAVE_MMAP if( fp->addr ) { - char* src = (char*)fp->addr + SEGY_TEXT_HEADER_SIZE; + const char* src = (char*)fp->addr + SEGY_TEXT_HEADER_SIZE; const int len = SEGY_BINARY_HEADER_SIZE; const int err = memread( buf, fp, src, len ); if( err ) return err; @@ -1776,7 +1776,7 @@ int segy_readtrace( segy_file* fp, static int bswap64vec( void* vec, long long len ) { char* begin = (char*) vec; - char* end = (char*) begin + len * sizeof(int64_t); + const char* end = (char*) begin + len * sizeof(int64_t); for (char* xs = begin; xs != end; xs += sizeof(int64_t)) { uint64_t v; @@ -1790,7 +1790,7 @@ static int bswap64vec( void* vec, long long len ) { static int bswap32vec( void* vec, long long len ) { char* begin = (char*) vec; - char* end = (char*) begin + len * sizeof(int32_t); + const char* end = (char*) begin + len * sizeof(int32_t); for( char* xs = begin; xs != end; xs += sizeof(int32_t) ) { uint32_t v; @@ -1804,7 +1804,7 @@ static int bswap32vec( void* vec, long long len ) { static int bswap24vec( void* vec, long long len ) { char* begin = (char*) vec; - char* end = (char*) begin + len * 3; + const char* end = (char*) begin + len * 3; for (char* xs = begin; xs != end; xs += 3) { uint8_t bits[3]; @@ -1821,7 +1821,7 @@ static int bswap24vec( void* vec, long long len ) { static int bswap16vec( void* vec, long long len ) { char* begin = (char*) vec; - char* end = (char*) begin + len * sizeof(int16_t); + const char* end = (char*) begin + len * sizeof(int16_t); for( char* xs = begin; xs != end; xs += sizeof(int16_t) ) { uint16_t v; @@ -2345,8 +2345,7 @@ int segy_write_textheader( segy_file* fp, int pos, const char* buf ) { if( pos < 0 ) return SEGY_INVALID_ARGS; - err = encode( mbuf, buf, a2e, SEGY_TEXT_HEADER_SIZE ); - if( err != 0 ) return err; + encode( mbuf, buf, a2e, SEGY_TEXT_HEADER_SIZE ); const long offset = pos == 0 ? 0 From 7a3d17a4a0de74288c0281722451e42a0312a3eb Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Wed, 26 Feb 2025 18:48:13 +0100 Subject: [PATCH 20/61] Fix windows warnings Conversions are now made explicit, no check over the conversion logic was performed. Anyway new logic would have to be applied with expansion to 8 byte numbers. (cherry picked from commit 6ce46fae20fc62cbc0bb41b905af070c76a63b34) --- lib/src/segy.c | 28 ++++++++++++++-------------- lib/test/segy.cpp | 35 +++++++++++++++++++++++++---------- lib/test/segyio-cpp.cpp | 14 +++++++++++++- 3 files changed, 52 insertions(+), 25 deletions(-) diff --git a/lib/src/segy.c b/lib/src/segy.c index e83fc9f3..4538917c 100644 --- a/lib/src/segy.c +++ b/lib/src/segy.c @@ -389,7 +389,7 @@ static int file_size( FILE* fp, long long* size ) { // this means we're on windows where fstat is unreliable for filesizes >2G // because long is only 4 bytes struct _stati64 st; - const int err = _fstati64( fileno( fp ), &st ); + const int err = _fstati64( _fileno( fp ), &st ); #else struct stat st; const int err = fstat( fileno( fp ), &st ); @@ -1279,7 +1279,7 @@ int segy_traces( segy_file* fp, assert( size / trace_bsize <= (long long)INT_MAX ); - *traces = size / trace_bsize; + *traces = (int) (size / trace_bsize); return SEGY_OK; } @@ -1308,8 +1308,8 @@ int segy_sample_interval( segy_file* fp, float fallback, float* dt ) { segy_get_bfield( bin_header, SEGY_BIN_INTERVAL, &bindt ); segy_get_field( trace_header, SEGY_TR_SAMPLE_INTER, &trdt ); - float binary_header_dt = bindt; - float trace_header_dt = trdt; + float binary_header_dt = (float) bindt; + float trace_header_dt = (float) trdt; /* * 3 cases: @@ -1856,7 +1856,7 @@ int segy_readsubtr( segy_file* fp, err = memread( buf, fp, fp->cur, elemsize * elems ); if( err != SEGY_OK ) return err; } else { - const int readc = fread( buf, elemsize, elems, fp->fp ); + const int readc = (int) fread( buf, elemsize, elems, fp->fp ); if( readc != elems ) return SEGY_FREAD_ERROR; } @@ -1907,7 +1907,7 @@ int segy_readsubtr( segy_file* fp, */ void* tracebuf = rangebuf ? rangebuf : malloc( elems * elemsize ); - const int readc = fread( tracebuf, elemsize, elems, fp->fp ); + const int readc = (int) fread( tracebuf, elemsize, elems, fp->fp ); if( readc != elems ) { if( !rangebuf ) free( tracebuf ); return SEGY_FREAD_ERROR; @@ -2010,7 +2010,7 @@ int segy_writesubtr( segy_file* fp, err = memwrite( fp, fp->cur, buf, elemsize * elems ); if( err ) return err; } else { - const int writec = fwrite( buf, elemsize, elems, fp->fp ); + const int writec = (int) fwrite( buf, elemsize, elems, fp->fp ); if( writec != elems ) return SEGY_FWRITE_ERROR; } @@ -2036,7 +2036,7 @@ int segy_writesubtr( segy_file* fp, * only handle fstream path - the mmap is handled comfortably by the * stride-aware code path */ - const int writec = fwrite( tracebuf, elemsize, elems, fp->fp ); + const int writec = (int) fwrite( tracebuf, elemsize, elems, fp->fp ); if( !rangebuf ) free( tracebuf ); if( writec != elems ) return SEGY_FWRITE_ERROR; return SEGY_OK; @@ -2071,7 +2071,7 @@ int segy_writesubtr( segy_file* fp, void* tracebuf = rangebuf ? rangebuf : malloc( elems * elemsize ); // like in readsubtr, read a larger chunk and then step through that - const int readc = fread( tracebuf, elemsize, elems, fp->fp ); + const int readc = (int) fread( tracebuf, elemsize, elems, fp->fp ); if( readc != elems ) { free( tracebuf ); return SEGY_FREAD_ERROR; } /* rewind, because fread advances the file pointer */ err = fseek( fp->fp, -(elems * elemsize), SEEK_CUR ); @@ -2093,7 +2093,7 @@ int segy_writesubtr( segy_file* fp, bswap16vec_strided( cur, src, step, slicelen ); } - const int writec = fwrite( tracebuf, elemsize, elems, fp->fp ); + const int writec = (int) fwrite( tracebuf, elemsize, elems, fp->fp ); if( !rangebuf ) free( tracebuf ); if( writec != elems ) return SEGY_FWRITE_ERROR; @@ -2398,9 +2398,9 @@ static int scaled_cdp( segy_file* fp, err = segy_get_field( trheader, SEGY_TR_SOURCE_GROUP_SCALAR, &scalar ); if( err != 0 ) return err; - float scale = scalar; + float scale = (float) scalar; if( scalar == 0 ) scale = 1.0; - if( scalar < 0 ) scale = -1.0 / scale; + if( scalar < 0 ) scale = -1.0f / scale; *cdpx = x * scale; *cdpy = y * scale; @@ -2440,9 +2440,9 @@ int segy_rotation_cw( segy_file* fp, float x = nw.x - sw.x; float y = nw.y - sw.y; - float radians = x || y ? atan2( x, y ) : 0; + double radians = x || y ? atan2( x, y ) : 0; if( radians < 0 ) radians += 2 * acos(-1); - *rotation = radians; + *rotation = (float) radians; return SEGY_OK; } diff --git a/lib/test/segy.cpp b/lib/test/segy.cpp index 88a4bb1e..6c8ea375 100644 --- a/lib/test/segy.cpp +++ b/lib/test/segy.cpp @@ -7,9 +7,21 @@ #include #include +// disable conversion from 'const _Elem' to '_Objty' MSC warnings. +// warnings reason is unknown, should be caused by Catch2 though, thus ignored +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable: 4244) +#endif + #include #include "matchers.hpp" +#ifdef _MSC_VER +#pragma warning(pop) +#endif + + #include #include @@ -251,6 +263,9 @@ int arbitrary_int() { */ return -1; } +float arbitrary_float() { + return -1.0f; +} } @@ -262,7 +277,7 @@ TEST_CASE_METHOD( smallbin, segy_get_bfield( bin, SEGY_BIN_INTERVAL, &hdt ); REQUIRE( hdt == 4000 ); - float dt = arbitrary_int(); + float dt = arbitrary_float(); const Err err = segy_sample_interval( fp, 100.0, &dt ); CHECK( err == Err::ok() ); @@ -278,7 +293,7 @@ TEST_CASE( "use fallback interval when both trace and bin is negative", const float fallback = 100.0; - float dt = arbitrary_int(); + float dt = arbitrary_float(); const Err err = segy_sample_interval( fp, fallback, &dt ); CHECK( err == Err::ok() ); @@ -295,7 +310,7 @@ TEST_CASE( "use trace interval when bin is negative", const float fallback = 100.0; const float expected = 4000.0; - float dt = arbitrary_int(); + float dt = arbitrary_float(); const Err err = segy_sample_interval( fp, fallback, &dt ); CHECK( err == Err::ok() ); @@ -312,7 +327,7 @@ TEST_CASE( "use bin interval when trace is negative", const float fallback = 100.0; const float expected = 2000.0; - float dt = arbitrary_int(); + float dt = arbitrary_float(); const Err err = segy_sample_interval( fp, fallback, &dt ); CHECK( err == Err::ok() ); @@ -767,7 +782,7 @@ TEST_CASE_METHOD( smallcube, stride, offsets, inlines.data(), - inlines.size(), + (int) inlines.size(), &line_trace0 ); CHECK( success( err ) ); CHECK( line_trace0 == 15 ); @@ -783,7 +798,7 @@ TEST_CASE_METHOD( smallcube, stride, offsets, inlines.data(), - inlines.size(), + (int) inlines.size(), &line_trace0 ); CHECK( err == SEGY_MISSING_LINE_INDEX ); } @@ -817,7 +832,7 @@ TEST_CASE_METHOD( smallcube, stride, offsets, crosslines.data(), - crosslines.size(), + (int) crosslines.size(), &line_trace0 ); CHECK( success( err ) ); CHECK( line_trace0 == 2 ); @@ -834,7 +849,7 @@ TEST_CASE_METHOD( smallcube, stride, offsets, inlines.data(), - inlines.size(), + (int) inlines.size(), &line_trace0 ); CHECK( err == SEGY_MISSING_LINE_INDEX ); } @@ -974,7 +989,7 @@ TEST_CASE_METHOD( smallcube, std::vector< float > line( expected.size() ); Err err = segy_read_line( fp, line_trace0, - crosslines.size(), + (int) crosslines.size(), stride, offsets, line.data(), @@ -1011,7 +1026,7 @@ TEST_CASE_METHOD( smallcube, std::vector< float > line( expected.size() ); Err err = segy_read_line( fp, line_trace0, - inlines.size(), + (int) inlines.size(), stride, offsets, line.data(), diff --git a/lib/test/segyio-cpp.cpp b/lib/test/segyio-cpp.cpp index 18cd40c4..aec11e09 100644 --- a/lib/test/segyio-cpp.cpp +++ b/lib/test/segyio-cpp.cpp @@ -1,8 +1,20 @@ #include #include "matchers.hpp" +// MSC conversion warnings in segyio.hpp are ignored as +// it is unclear how to fix them in segyio.hpp template code +// pragmas could be removed if proper fix is found +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable: 4244) +#endif + #include +#ifdef _MSC_VER +#pragma warning(pop) +#endif + using namespace segyio; using namespace segyio::literals; @@ -223,7 +235,7 @@ TEST_CASE_METHOD( Writable, "[c++]" ) { std::vector< float > in( 50 ); - for( std::size_t i = 0; i < in.size(); ++i ) in[i] = i; + for( std::size_t i = 0; i < in.size(); ++i ) in[i] = (float) i; f.put( 0, in.begin() ); std::vector< float > out; From 7bf8213b6308471993f85a8dc299d5aba091b075 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Wed, 12 Feb 2025 19:24:36 +0100 Subject: [PATCH 21/61] Add benchmark tests Should allow us to make sure future development is not causing major drop in calculation speed. Currently only most straightforward cases are tested. Threshold is set to 25% of allowed slowness, which should be around x2 observed worst differences between two runs on the same sha. File sizes are reduced significantly to 1) fit into github actions runner 2) to assure stable enough environment in order to reduce speed fluctuations. Currently actions is also set to run on pull requests. We will see how often that fails and adjust triggers accordingly. Tests are considered to be secondary to main pytest suite and won't be run by default. Thus pytest-benchmark dependency is not considered to be a requirement for build and is not mentioned in the Readme. (cherry picked from commit ece8dc45ae491756b80236620ba231d000f8efa1) --- .github/actions/benchmark/action.yaml | 82 +++++++++++++++++++++++++ .github/workflows/benchmarks.yaml | 44 ++++++++++++++ python/requirements-dev.txt | 4 ++ python/setup.cfg | 1 + python/test/benchmarks.py | 88 +++++++++++++++++++++++++++ 5 files changed, 219 insertions(+) create mode 100644 .github/actions/benchmark/action.yaml create mode 100644 .github/workflows/benchmarks.yaml create mode 100644 python/requirements-dev.txt create mode 100644 python/test/benchmarks.py diff --git a/.github/actions/benchmark/action.yaml b/.github/actions/benchmark/action.yaml new file mode 100644 index 00000000..8c96627b --- /dev/null +++ b/.github/actions/benchmark/action.yaml @@ -0,0 +1,82 @@ +name: Benchmark +description: benchmark execution + +inputs: + ref: + description: ref to checkout + compare: + description: results comparison string + default: --benchmark-compare=0001 --benchmark-compare-fail=min:25% --benchmark-group-by=fullname --color=yes + +runs: + using: "composite" + steps: + - name: Print available disk space + shell: bash + run: df -h + + - name: Checkout commit which performance should be measured + shell: bash + run: | + git fetch origin ${{ inputs.ref }} --depth 1 + git checkout ${{ inputs.ref }} + + - name: Configure + shell: bash + run: | + cmake -S . -B build \ + -DBUILD_PYTHON=ON \ + -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_BUILD_TYPE=Release \ + + - name: Build + shell: bash + run: | + cmake \ + --build build \ + --config Release \ + + - name: Set PYTHONPATH + shell: bash + run: echo "PYTHONPATH=$(pwd)/python" >> $GITHUB_ENV + + - name: Checkout current commit which contains all tests to run + shell: bash + run: git checkout ${{ github.sha }} + + - name: Make segy file + shell: bash + working-directory: python + run: | + if [ ! -f file.sgy ]; then + time python -m examples.make-file file.sgy 1400 1 1000 1 600 + else + echo "file.sgy already exists" + fi + + - name: Make segy pre-stack file + shell: bash + working-directory: python + run: | + if [ ! -f file-ps.sgy ]; then + time python -m examples.make-ps-file file-ps.sgy 1400 1 500 1 600 1 3 + else + echo "file-ps.sgy already exists" + fi + + - name: Print filesize + shell: bash + working-directory: python + run: | + ls -lh file.sgy + ls -lh file-ps.sgy + + - name: Run benchmark tests + shell: bash + working-directory: python + run: | + pytest test/benchmarks.py --benchmark-sort=name --benchmark-autosave ${{ inputs.compare }} + + - name: Remove build artifacts + shell: bash + run: git clean -df --exclude=.benchmarks diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml new file mode 100644 index 00000000..6c25b0fc --- /dev/null +++ b/.github/workflows/benchmarks.yaml @@ -0,0 +1,44 @@ +name: Benchmarks + +on: + push: + branches: [main] + pull_request: + branches: [main] + workflow_dispatch: + inputs: + commit_ref: + description: "optional: compare to specific ref" + required: false + +jobs: + benchmarks: + name: Benchmark scripts + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Install build/test dependencies + shell: bash + working-directory: python + run: | + python3 -m pip install -r requirements-dev.txt + + - name: Set default benchmark reference + run: echo "BENCHMARK_REF=142e45a2b941a1b603723c38882b193db1c1d968" >> $GITHUB_ENV + + - name: Set benchmark reference if defined by workflow_dispatch + if: github.event.inputs.commit_ref != '' + run: echo "BENCHMARK_REF=${{ github.event.inputs.commit_ref }}" >> $GITHUB_ENV + + - name: Benchmark old commit + uses: "./.github/actions/benchmark" + with: + ref: ${{ env.BENCHMARK_REF }} + compare: "" + + - name: Benchmark current commit and compare + uses: "./.github/actions/benchmark" + with: + ref: ${{ github.sha }} diff --git a/python/requirements-dev.txt b/python/requirements-dev.txt new file mode 100644 index 00000000..3cb41283 --- /dev/null +++ b/python/requirements-dev.txt @@ -0,0 +1,4 @@ +numpy +scikit-build +pytest +pytest-benchmark diff --git a/python/setup.cfg b/python/setup.cfg index 4f1281e9..45924b36 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -6,3 +6,4 @@ test=pytest [tool:pytest] python_files = test/*.py +addopts = --ignore=test/benchmarks.py diff --git a/python/test/benchmarks.py b/python/test/benchmarks.py new file mode 100644 index 00000000..2014941b --- /dev/null +++ b/python/test/benchmarks.py @@ -0,0 +1,88 @@ +# Benchmarking suite, not run by default with pytest. +# To run this file pytest-benchmark must be installed via pip. + +import os +import shutil +import segyio +import pytest + + +# Files are expected to be present at the run location +# Files size should be compatible with retrieved lines +files = [ + 'file.sgy', + 'file-ps.sgy' +] + + +def run(filepath, mmap, func): + with segyio.open(filepath) as f: + if mmap: + f.mmap() + func(f) + + +def iline_slice(f): + f.iline[200] + + +def xline_slice(f): + f.xline[300] + + +def depth_slice(f): + f.depth_slice[1000] + + +def cube(filepath): + segyio.tools.cube(filepath) + + +def change_data(output_file): + # multiply data by 2 + with segyio.open(output_file, "r+") as f: + for i in f.ilines: + f.iline[i] = 2 * f.iline[i] + + +slices = [ + iline_slice, + xline_slice, + depth_slice, +] + + +@pytest.mark.benchmark(group="nommap") +@pytest.mark.parametrize("file", files) +@pytest.mark.parametrize("func", slices) +def test_read_speed(benchmark, file, func): + benchmark(run, file, False, func) + + +@pytest.mark.benchmark(group="with mmap") +@pytest.mark.parametrize("file", files) +@pytest.mark.parametrize("func", slices) +def test_mmap_read_speed(benchmark, file, func): + benchmark(run, file, True, func) + + +@pytest.mark.benchmark(group="cube") +@pytest.mark.parametrize("file", files) +def test_cube_speed(benchmark, file): + benchmark.pedantic(run, rounds=15, args=[file, False, cube]) + + +@pytest.mark.benchmark(group="write") +@pytest.mark.parametrize("file", files) +def test_write_file(benchmark, file, tmp_path): + output_file = tmp_path / 'output.sgy' + + def setup(): + if os.path.exists(output_file): + os.remove(output_file) + shutil.copyfile(file, output_file) + + benchmark.pedantic(change_data, setup=setup, rounds=5, args=[output_file]) + + if os.path.exists(output_file): + os.remove(output_file) From cfd1327ddea5fc3b5e0fd18f749bd74bf41b13ca Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Thu, 6 Mar 2025 21:06:11 +0100 Subject: [PATCH 22/61] Add bigendian workflow job We build and test wheels with cibuildwheel, but as no emulation happens there, tests are not actually run on bigendian system. In this new workflow we use qemu to emulate the setup. Run time is long, but we want this workflow anyway as our intention is to support bigendian environments. The most time-consuming operation is building numpy for s390x. Thus we run job only on merge to main as job is not expected to be failing often anyway. Alternatively we could build and cache numpy in github actions, but we decided to go with simpler solution for the moment. (cherry picked from commit cd874f4581d61c456159bea3dcbcbb2c53591d60) --- .github/images/bigendian.Dockerfile | 16 +++++++++++++++ .github/workflows/bigendian.yaml | 30 +++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 .github/images/bigendian.Dockerfile create mode 100644 .github/workflows/bigendian.yaml diff --git a/.github/images/bigendian.Dockerfile b/.github/images/bigendian.Dockerfile new file mode 100644 index 00000000..7a5256f3 --- /dev/null +++ b/.github/images/bigendian.Dockerfile @@ -0,0 +1,16 @@ +FROM s390x/debian:stable-slim +RUN apt-get update +RUN apt-get install -y git cmake g++ python3 python3-pip python3-venv libopenblas-dev + +WORKDIR / +COPY . /segyio +WORKDIR /segyio + +RUN python3 -m venv pyvenv +RUN /segyio/pyvenv/bin/python -m pip install --upgrade pip +RUN /segyio/pyvenv/bin/python -m pip install -r python/requirements-dev.txt + +WORKDIR /segyio/build +RUN cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Debug -DPYTHON_EXECUTABLE="/segyio/pyvenv/bin/python" .. +RUN make -j4 +RUN ctest --verbose diff --git a/.github/workflows/bigendian.yaml b/.github/workflows/bigendian.yaml new file mode 100644 index 00000000..7828437a --- /dev/null +++ b/.github/workflows/bigendian.yaml @@ -0,0 +1,30 @@ +name: Test bigendian + +on: + push: + branches: [main] + workflow_dispatch: + +jobs: + bigendian: + name: Run tests on bigendian s390x system + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 + + - name: Build + uses: docker/build-push-action@v6 + with: + builder: ${{ steps.buildx.outputs.name }} + context: . + file: .github/images/bigendian.Dockerfile + platforms: linux/s390x From ee9de4a99354c9ac9becbdd27ec6be9c20d725dd Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Tue, 11 Mar 2025 15:02:06 +0100 Subject: [PATCH 23/61] Make test type int24 endianness aware That fixes the only failure we have on bigendian environment (cherry picked from commit 8de6b93c60a39606bcf87b7fbe66a13c67cc8a9c) --- lib/CMakeLists.txt | 1 + lib/test/segy.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 632842e8..c8410301 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -132,6 +132,7 @@ target_compile_options(c.segy BEFORE target_compile_definitions(c.segy PRIVATE ${mmap} + $<${HOST_BIG_ENDIAN}:HOST_BIG_ENDIAN> ) add_test(NAME c.segy COMMAND c.segy [c.segy]) add_test(NAME c.segy.mmap COMMAND c.segy [c.segy] --test-mmap) diff --git a/lib/test/segy.cpp b/lib/test/segy.cpp index 6c8ea375..8cefada8 100644 --- a/lib/test/segy.cpp +++ b/lib/test/segy.cpp @@ -1548,6 +1548,14 @@ SCENARIO( "reading a large file", "[c.segy]" ) { } } +#ifdef HOST_BIG_ENDIAN + #define HOST_LSB 0 + #define HOST_MSB 1 +#else + #define HOST_LSB 1 + #define HOST_MSB 0 +#endif + /* * There is no native 3-byte integral type in C++, so hack a minimal one * together. We don't need arithmetic, only conversion to int32 and from int16 @@ -1564,9 +1572,15 @@ struct int24 { int24() = default; // cppcheck-suppress noExplicitConstructor int24(const int16_t& x) { +#if HOST_LSB this->bytes[0] = ((const char*)&x)[0]; this->bytes[1] = ((const char*)&x)[1]; this->bytes[2] = 0; +#else + this->bytes[0] = 0; + this->bytes[1] = ((const char*)&x)[0]; + this->bytes[2] = ((const char*)&x)[1]; +#endif } operator std::int32_t () const noexcept (true) { From 19ea03433ca224b1ef025b429b017149b17c8ead Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Tue, 11 Mar 2025 15:07:53 +0100 Subject: [PATCH 24/61] Correct multiformat int24 tests According to documentation, int24 test type is "quite incomplete". (See more information on original file creation at 6fe177c48d114f8a038c65381a5ed7ae1b0d31bd) Unfortunately that leads to confusion when trying to comprehend test behavior. This commit attempts to alleviate some of the confusion. 1. Intention of multiformat tests is to assure that files in all formats are read correctly. To test it f3.sgy file (format 3) was converted to all other formats. In theory we would like to assure that each sample value x in format n equals corresponding sample value in format 3. Instead we verify not that values are the same, but just that some bytes are. (Examples below are laid out as bigendian). 1a: From 2-byte signed integer f3.sgy file, 3-byte signed integer files were created by setting the most significant byte to 0. While numbers 0x12 0x34 (4660 dec) and 0x00 0x12 0x34 (4660 dec) are equivalent when read as signed 2-byte 2's complement int and signed 3-byte 2's complement int, 0xAB 0xCD (-21555 dec) and 0x00 0xAB 0xCD (43981 dec) are not. In the code casting from f3 format (int16) to int24 is implemented such that most significant byte is always set to 0. Thus f3 value, regardless of sign, is transformed to the same value that was written into format7 file. Behavior was intended, but is confusing, especially because 4-byte and 8-byte signed/unsigned int files are sign-aware. To improve this, int24 must be made sign-aware and format 7/15 files must be fixed by setting 0xFF instead of 0x00 byte for negative numbers - turn 0x00 0xAB 0xCD (43981 dec) to 0xFF 0xAB 0xCD (-21555 dec). This is fixed with a one-time script equivalent of for i in range(samples_value): bytes_read = f.read(3) if bytes_read[1] & 0x80: f.seek(-3, os.SEEK_CUR) if bigendian: f.write(b'\xFF' + bytes_read[1:]) else: f.write(bytes_read[:2] + b'\xFF') 1b: Similar value inequality happens for 1-byte formats 8 and 16 also. 2-byte integer file was converted to 1-byte integer files by cutting of the most significant byte. Usually values in f3.sgy do not have most significant byte = 0, so 2-byte int value 0x12 0x34 in f3 became 0x34. 0x12 0x34 is not equal 0x34, so values in the files are not equal. However comparison is done by casting f3 values into 1-byte type value, which by default will cut off the most significant byte. So in this case only the least significant bytes are compared and thus test passes. 1c: As original file contains signed integers, they are impossible to correctly represent as unsigned integers. Thus rules are defined by conversion of signed type to unsigned. So for example signed 2-byte int 0xF5 0xCE (-2610) and unsigned 4-byte int 0xFF 0xFF 0xF5 0xCE (4294964686) are considered equal. A cleaner approach would require creation of valid 1-byte files and their conversion to different formats, but it would require effort, which currently is not warranted as existing solution is good enough. 2. conversion to int32 is only used during comparison, so it could be implemented any way that can state whether internal bytes are the same or not. So while not required by tests, implementation is changed to actually represent the number that was provided. (cherry picked from commit bc7ac720d0b4cac664c073f656d43f2cd99f6ca2) --- lib/test/segy.cpp | 63 +++++++++++++++---------- test-data/multiformats/Format15lsb.sgy | Bin 196110 -> 196110 bytes test-data/multiformats/Format15msb.sgy | Bin 196110 -> 196110 bytes test-data/multiformats/Format7lsb.sgy | Bin 196110 -> 196110 bytes test-data/multiformats/Format7msb.sgy | Bin 196110 -> 196110 bytes 5 files changed, 39 insertions(+), 24 deletions(-) diff --git a/lib/test/segy.cpp b/lib/test/segy.cpp index 8cefada8..78ef47e6 100644 --- a/lib/test/segy.cpp +++ b/lib/test/segy.cpp @@ -1561,54 +1561,62 @@ SCENARIO( "reading a large file", "[c.segy]" ) { * together. We don't need arithmetic, only conversion to int32 and from int16 * (which is what the source file is in). * - * It's quite incomplete in the sense that it's really unaware of signed - * integers, but what's important is its size and its individual bytes, and how - * it is created from int16. The test file was created by just adding a single, - * zero byte at the most-significant byte position, and otherwise memcpy'd. + * Type is incomplete, but important parts of implementation are type's size, + * its individual bytes, and how it is created from int16. The test files were + * created by just adding a single, 0x00 byte or 0xFF byte at the + * most-significant byte position, and otherwise memcpy'd. */ -struct int24 { - char bytes[3]; +struct int24_base { + unsigned char bytes[3]; - int24() = default; + int24_base() = default; // cppcheck-suppress noExplicitConstructor - int24(const int16_t& x) { + int24_base(const int16_t& x) { + /* Sign is allowed to be negative even if type represents unsigned int, + * which is done to keep behavior consistent with that of other formats + */ + char sign = x < 0 ? -1 : 0; #if HOST_LSB this->bytes[0] = ((const char*)&x)[0]; this->bytes[1] = ((const char*)&x)[1]; - this->bytes[2] = 0; + this->bytes[2] = sign; #else - this->bytes[0] = 0; + this->bytes[0] = sign; this->bytes[1] = ((const char*)&x)[0]; this->bytes[2] = ((const char*)&x)[1]; #endif } operator std::int32_t () const noexcept (true) { - return (this->bytes[0] << 0) - | (this->bytes[1] << 8) - | (this->bytes[2] << 16) - ; - } - - bool operator == (int24 rhs) const noexcept (true) { - return std::int32_t(*this) == std::int32_t(rhs); - } +#if HOST_LSB + return (static_cast(this->bytes[0]) << 0) + | (static_cast(this->bytes[1]) << 8) + | (static_cast(this->bytes[2]) << 16) + | (static_cast(this->bytes[2]) << 24); +#else + return (static_cast(this->bytes[0]) << 24) + | (static_cast(this->bytes[0]) << 16) + | (static_cast(this->bytes[1]) << 8) + | (static_cast(this->bytes[2]) << 0); - bool operator != (int24 rhs) const noexcept (true) { - return !(*this == rhs); +#endif } }; static_assert( - sizeof(int24) == 3, + sizeof(int24_base) == 3, "int24 type is padded, but is expected to be 3 bytes" ); static_assert( - std::is_standard_layout< int24 >::value, + std::is_standard_layout< int24_base >::value, "int24 must be standard layout" ); +using int24 = int24_base; +using uint24 = int24_base; + + /* * open a copy of f3, but pre-converted to a different format, to check that * other formats are read correctly @@ -1694,6 +1702,10 @@ TEST_CASE("can open 1-byte signed char", "[c.segy][format]") { } TEST_CASE("can open 3-byte signed char", "[c.segy][format][uniq]") { + // int24 implementation sanity check + REQUIRE(static_cast(int24(int16_t(500))) == 500); + REQUIRE(static_cast(int24(int16_t(-500))) == -500); + f3_in_format< int24 >(SEGY_SIGNED_CHAR_3_BYTE); } @@ -1714,7 +1726,10 @@ TEST_CASE("can open 8-byte unsigned integer", "[c.segy][format]") { } TEST_CASE("can open 3-byte unsigned integer", "[c.segy][format]") { - f3_in_format< int24 >(SEGY_UNSIGNED_INTEGER_3_BYTE); + // uint24 implementation sanity check + REQUIRE(static_cast(uint24(int16_t(500))) == 500); + + f3_in_format< uint24 >(SEGY_UNSIGNED_INTEGER_3_BYTE); } TEST_CASE("can open 1-byte unsigned char", "[c.segy][format]") { diff --git a/test-data/multiformats/Format15lsb.sgy b/test-data/multiformats/Format15lsb.sgy index 9addbf6e4f5b4ddf6195f30820957ee59c4021e0..27c333afe3c2770ed9975f6a8803aa0114304a5a 100644 GIT binary patch literal 196110 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 literal 196110 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

L+R5)ld>LlPVXa~&M) zpnsXQ9Bk}iBR8vh*k6FIR|n|jxygCo26xx_87G{-r4t}KyA^FoY5 z-WJ!>F3u}*W04cew3k^=$pohzE#J)ZteXw}mZy!nxx~#)MZV8+T$z}Qkv^P$%lcmB zV!Df4EBx-Tyu<+lbp1L&uh0#$%SLYiUG2Hytk@(#YjYW(7OTbI$gx&|SJHf(WP>zU z>6unyUWsL8esb`hlP4XVR^h`OC#Bh_!l@B%jdHBRvh+W=NVljlyK}9K4)^ z@|N^FyuZEXbfP?}NJbkTH&1)m8M^ayC`;eNunaqRxzI;PjzuXRbCU=#J;y~|T$bT2 zxW>UGFY5=nufmne?&jFSVK37!UEJa1EjJwj0zO`bin5Uo&QS6JydKMGyyD^@0lHxw zpjyDTh^wPFfcAS~IO{eE(Ar!EsKsjWH)#y?@N|$n9Xyz|r2U~`o(OV;iy1CvM;I}f z5rg#E=>mUCu!k0Ym@U0bs_>%ziEb|T@xF@(3Jlc)Hq4V=1{EwPUvYD-$0|Vw3($?~ z0KHl_$Sxbb0W|XBa5iodptZRSP>a>#Z{$$2eZL%=W~eBuledCMQME`du`+WUtnDCO zWT!lFy$U^~f@FNOmUuQryMsIW^U44_=5HQi-8K&Ou)Lck%lM?s?@>;4vwsi2#Cg@p z)egqT`D8gq=6KS_L@nDa2WFVywO#b!oE?PUa@h-Xwz7^6)(o(NiwogQkA0$aVm($h zaR-|e_!gE#IVHsNC5*A~-A397|ND;gm9cP+7z-~p3DDYH7PG}`@i%E~=i-M5#}DB2 z{u~hDeg~JQaKv~vNnFrtaRu3`h0&rbxS6R#=yJ|m&e~b#yKND*7MWEf>SD_hE2fx` zW2-Xz7WuAPq28j%FL_#htmJ2-ELSC&?Pk{&o(^!PlciCFcH}P?**?$JDUMID zZGi&<{MJG|%2iSJ(QCBKJ!O{qnCG+n>ORUd1aJ=EA5m6<#d+J_{E_64rA%JNf(mQ2 zuvA2xWwa-G$i>>;F*k?nkgM&nmk~aeDU)Ae z9j}$tH^{PSiKAS+?B-J+O9E`+W6@uXh41SCH3ooPHhS~OJyDE>_nHJ~Z7u`UVzu}i zIkw4jP0FYv&-SpYa)8R~<{6;Vs9xD_b_|hixElhbFw$x*Fbx)OU1 zX4?QGGfZ2~CHlWk<}al?$rukWMi>&|8xODMc_YsdC%fhu6tknsdr=k&ptxbQFlhC= zoqO1;!mc4cadUhQXWob_q9pxPCg9?eAnWM8nPqU^$R~rHR)(AAt1=dTr~}j(0Cw5v z4WP$}vG7Tg0IkhsfLg2;f0Kr|Zl{EKa3K8$@k4*Ejj&#x#}~2hpRCZura4~oa$q|T zw)2i370P$(WQ#v79W>65GhhUR$F*OIFwe_|1=h*2EXU6(Tj$s_$MpsNbg@~`3gW*N zIb55lBGWt^?c-VH7K*%5HnLq3%k=);&)I z_^L^O*5)!mEnbVikz4>tnk9W)L-N{Zr^Xs2hO?%V9KMHJ8WHpy9!&@rsUN$n=sukX; z@JY$GvIls%!^_YL&uB@iE>N~Caetj^tMnwH{Pz<3mDx~_Wk1(A@u_g;;xrehYk%wK z0Y{awFs}|!V*uD?qcU8qClgaRFo~u+4Z{fLB*n1@o2(!4z7crJEA-R}GW9(gEj|#(F zOx99TsU^=^MecBLlhabTH|9B~%wi=BD}0eBQ)c}V=cTNkk_@xR!#^{&@qVpB$ieC^ zE3YWkFMh%%ZeB02Q<)!pxV?N%m9g++9iYYlu**ho0Nq=Rg`b)PXl*V7)MB;xn=}Si z7#ZgFf&4I#K?5j7_$1HY7c*rc!(()b?c--bKMows$Tr?_;*PP`B3|gSs7apuHrn{-5h=L*cp887#p9BaB5?`DItorAV3@n?Yz(>x|FUx>ql zmdkC)@Ii!C#7A1nc11qx&t*_b%0)?8)TP_-T=CZ7z^1Z0a}~O0JT^x{zi`BdG1Ux zJx+VVvVXI)+>qt@3bR98*2;($Zfs$N2s>zZ6yThIl}^^mF+>D-H!DSqvG7#Tb}YUE zw=U=4#Z2tx`vT(~{Hj!K${x1oIXJEaSuQJayqoPjjCJu{iFFJ7d4fC#H-tG)W(o49BGy=;yltIsH_TB`_jq4DG9eJQ}c^gLd7^^&Bo+6+jfD>-3#} zF&5_60cs2YyKM9Z(7!!19Pdxfp`g^}GC(a>i@%ZME7cq;+?^!V$xq!3NU~*&(_&05 z+LGKs%=tE^w=$`nd2MXx!zaB-%E~C?%C=cedzl~L`4EqaWFl?LVt(ty>!j#s8>MY? z{ODml52s{!B+m9ZCOeqt;V4mQl*o1C6sOnAPd)6joJD!d)4t?pQzs9I?dfJlfZN>0 zE?el}p&+Nbcufgj2X}c{;^f0(m9g+!9iV+>EUYTVLZnH6*5)!mEnbVik>iCFBRW}a z8C!HQIbjeeF|Ks$VJ(K>v{q74Ci!uDxG6$+JD+%L!?RH~tHhQx{2aB=L zze#}B<}yGnR*S!pW499FB<;&Nb1~N~=B+NWG1lzimK3*nIKDrj6*yu5LtB{_p%657 zu5wDFi;M{~e=rXW=76Z>=-$_RP)D9Lm*_>DW2X{N=lNTfJ+;+Qj=jJ#2_*`IO3W#+ zw}bVZ%+In#iGxDysRg^7Eejmq!T>ifi@o6BP37>*e6JF!$Ep%(9cSEp=OyRn3LijkiO?xg?r&%PmDza+ZT;-LFCo&M%Nf|ijuk!%b5T2I4B*iy4;DCm8S5?K&=e1LLP+mdY2V@1slFJahD)cp_-N?D^b zug9t_1M|Em8Crl7U96BdG-pNF-dANT{80y}F#znc(HlU+FAQgmCIMQT%K)`lE&fK1 zc$%FO6yiJ=V|tQEj=i$BEqO7(L#?b;WevF_CJt)x;ZRPX#F7NxWY88O*TR$i_&vn; z9{Q_Bse)I+c=ZxZNHrE0X)wjs38QGfn=@V8)_I=ScY1l*VfAZqy*ADo1;($B_y$4kt z)A1*6w9LG?B{_TZei+3U;nE^IC=uZ@Qui|@KB=&ogZX7kEUX+c2B5MH8!8p-uQC?K zDY0?Ezwbz284IV1u`sW5xsUh&p8F|<-d~mE z$+93pCdNtK+??iX7p-3YuBWlr68pbX{| zK6Y_x(JD0$=(OUaUxkZ`RmQ?Cb%6Gjv2cPI3okYa(Ar!EsKsmXH*)B``EHs=Q{0s1 zNM*&9T$Glx#78-!)JlakyM-%T*uITh+j%^|o+YD>=t#Jgmot3)?&9VmYvxRlxE(xL zrB5G_CR1d2iNCpsD@`Y%N`W==+>zmg7}IiG<7aCZkEQsy#I7oK3;Kk;dAIYjhP3}_ zQ`ty_xNpGZ4;#Dfzps(#SSL`GUBpH!^NyQ$#2wWx_trWGe;kRg}k^90+Zn4jX3Bwr~5;A5i}ZjNwRnB5~hA2jlh&J@>pETN~` z%I%_QNssU6aV@kmmvl2~AzLouEpg^W=xt$E&}2%Fl?de##EFcZM~-l_R+wpCt`Tt* zlWeQD@@JRHgjFxwUQ!5`rFO;Beo)oz5&=Wg*f0}Kvu zb&%KnRuo%Z>a(oTQErUz)c{uS$G;?aaoJzW1?8$mv~)5#YmaDGlym(oE|bl2dxq^Y zJSAa%mS3Gbq8behu5fdJEraZm!yjXU3Y|f&@bW;JNhOYi*)CHley`$bg&nF+EF!UN zpublJ(#M&9c`V#s2WVdz3kQg?@JW*Zt<7bCTD%s2BggTgL7sU_p`&aZyTS(u6Zi zce5~Ye zyj&(az23YYesc0$$);P~$51^wv_kKw1JoD*cG>97BX=(`7QSi{ptZRSP>a>#Z{(Pq z=ea7$$0aRomJ8)Zl3-z$M}uSsm<)eCsi!?GQ*OMfM@tq^2~}$P+a)m*CC_7I2IXy3 zHCwQZ`xY`I&R`!4qC`a$QPxhyO=-6atSf?*XAich&)F3;?@q^ajvf#8~*g zNr2YoGC(a>i@%XWJ52F;mZtb5#``^dmoQGzQE8sa^O}p_LQIabdzcG+#+R1P<=v80 z_?8U(xt*^EvGoAn3UP;?eo5Z#;@4%|-D8GPw*;BxW$%im)Ai0BRpQtzFLm+SG9E0l zS(HUyHp_7*>=(3$rwL14X4l}*>ov=cGF|bqr-M6-obKQp4?zdd75S#Z!YU2s8)*ps z@>sa54$!_b7Pc2-;pZj+TARxNwRkQ5Mh-nZWdyfV~}`(&ob2vQix4mJfvr{pCvxFDzRIh zhec9y+5T`Zf0eN?z7Ej7G8VQJW8se`0a}~O0JV56{zi_i(%ctg#TX~Y$R;SJm@Fbn znT!4O4^Z^7u6DB_6YX9Z{qvfMZ5&>2&Qjsnk?c-6%=DqD*eB-urZC&~<053@USvPZr*mVW5G(~Qot2UR_4>%yf|WC?Jxfg0Xm@$P-6htWurIm(4k^1 z#G3?YZ7u`UVzu}iIX1|XOY?M^1GG(5870qcMOLV0)K?a-AV@C44`HT@B?Fz;%c{^jeT^WvP1AJ|ft~5`S?93>;l9|drRrtw8QL=8?JbJC} z_GOGy)228ZDZiS;0-Yt! zDl%Op>LAoR_47&)mEiYwbE})1EA)u! zpnQbViP{M}svZmX)B$P?0K07TW`(XI#sWV#hp|wb%K)`lE&fK1Qi_YaxoA0m@3Q=x z4*oyo7*nwQhNuWXM;O+^kQNh%j_`7fgFloIaC4524}+#in%}}*I@eUJ^tN4s%a-%D zJ{1-AaG4vV_NXpB7OIWs;(<5;ZE>@fw~<-U-@;bWK3m39ve|6m$2MLLl2q|a+^`beS#vqq zGQy%TM|+4@$QHOS!#fh0Dpf0DSl%dJ;)&f}HqV52F-qY_X|r%lWz3#eB<+J#3{CN= zgVUqzB?)R54slmJ?3iV8g?=sOSaqIGpl&-BeOcx~Cxhh$D*AnhaUml!7-L~l9iYYl zu**ho0BsXvA=)HBYjYW(7OTbI$gyUOtC#TZViqo8Y8RU%csFG>Vjs5fSsP2k{1#?$7Zird8ZWh0Yk?h#nTOs>;?SZWB?^$tThyN?xkmg$ONv^J0Be z_Jb9^(K*Ot>3Z{6xVH{aV*uD?qc?zt#8?>6BtUC(8K4%c#ox%G|imY5V`GZQ;@9Q&AQ`~*U zIrQ*Y#qveRh`Z}!go72T`cM^UMwV$4fz4B8EZkQIXkQr%9x)bHZW5rixeQQ?*Wz#F zkdE(Uaf%W+5=_dN0CTf6yXS2$JH$B>txodfjX$mm4oi9=?>}K5bK7+@Gc>AF3da zt0bD>blB0$nI(plxh80Y!*|2B9XhOHf?uVPb)FS-`_llKFk^yM#=`w|fEok9E*rgB zp%nqTW|IJ|&1HaEtQLPG#~wYrw2*TaF!m4DSgRJPItBn)dInIOI z#hHG_xOo*`^qWuhf$i)VHc^=1XwBlx(3RrU7=wC{xr&V9Rb`U~e+79{7m0|Jq70$f z@6{#(>jZ3%H?csgOa%*UnlvMY4Fg=@CsF3?3hT=P)XPcod2q6!_$^L5?dm|Pd(c_o z4!?Qen8(5{TPlV2?>o|0#=`MpEIigEKx=bZ%oeZ3-^lSrmTzM0-o=AUIdU11IFIXW zm}48KIcnZ6>Q|7T|59j1@J1Q#H&(n1Y$d6_E6BhwCk5F(z%7zgXSjR`&c!TE+gnfU z_l*iXk!OB|+bTRRgVvlm-h8O4nTrjTD{yjLl-;6cTJ>coUy7gRV>{`)OPngjnVYNS z<*PiBlPzQ=ClN#$pIF2qj!L<&x~i+nSlG1=(7rMjjuKt>B*c$PA62`6`&c1cz5Z$oS_fPON~@Gv)E_HN_6{32$TtWM-_EMZ`UNi7WQXEe^J zjFF3c)Wy18gpy{EyP(8pF6--|vh^~#TRTm-9j-E4jxXAOzbl8vsIBpKi6dehouE~o zNN%&FyW7FZZXW$VYfO!jR9bnjov(R4;5qK zr6vJdo67*TSS|iW4*B~XU*NF}#F-RhBW;QbCd-|t!)A!hqZ}RKDs4V}{1`Bn(U3Hk z#W|+LiykfxFt3HSR=!kaM8%*2N9cLGobQrG@GGkxn&%6t>?0f;;K(w|lJ>K5FOg7U zC%G$lOxPkTmCeM|?dI=Uqo61gxJJ%8>#P;DXR_$@%Ek{=3BbppW#$*z28KDf%)vBy zw+hhR>j3R5V_|a{%Z{&DUj^f?y)5#}GIClv*^TlTeY3 z973f)tTh4-5TXl*V7)MB;x8#%<7-66q) z-E=Kw7ad5Kb4QHh)12iY*&m-6Ch|9S(xNw}a<-~XyODW?>XK_j*k&-p2XIc58@#NL z}BRQU%?>Hm&82>j)-uxA~hePt}{EXKm8O#-ww zmjP<=TKtV1%E)zO8JXssI0wggF~v)wNlW_g=aM$g?av8OJIKo=tScfl0;^|vrH2`L zI#mVp@=AbVAzN7wMgX_4k z*%oc8#t`yl%`sjMa{8$F2s^AF)8-Cd4%ym2IZuC>5##}xCuhuSPFY;JJFeiadMxZ! z2dFUs?6T3D6}p`m3$vR9Xl*V7)MB;x8#!)KGCX5#ajuDTUN@aR{3B_(1(mahv=be` z(;>UhLrO;e`FqtHYN<9V5}gHkF2s#KP8MalDzg52k<)s3c{wHNlH~a>L!ks8q--y$ zm*WFY4w7SPnjZ?*Y+|FTX!Q6XKSa4X#~aJpp<;>LqcDovhgb<_hMF-|Y%b9V#q||4 zO^f%olG#PJs?eqvw;s8B*8$pB#=;h2Ed0e1@pyb#Z|F{;HZspSQiaazZL+v7Z~mwC`go@2vo z6`@?U&HS`t0+!c13B;}Ej@%W_DjSjS6(PZ_Wz)xJ<7Q;)IhKU8A~C$AQ`OWpKzs+IKnFOP+N>j3R5V_~Qm z3x75V(Ar!EsKsmXH*$pY%uMoHk9qW!m-2o$A1JSz;X)7H{kUu(Td74$h|wW74C2&Z zR&c9WCJm9BZZH4xb76q@yvWQvB2m(E=5}$1#KLagFBwT*Y4(fcVWQR^dZNlTH-;LE ztQX~9(jp~HDf3yxv=YyBagpDIY%=T>T}@}wNBz8CEx<`s_@r9pHuS=K)v=bth*ku8pwglbFVdJaIg`kQ~j1$*tcYjpElCj)>&mN98d?SG7)`ZEDRK5A>SlGYjYW( z7O%zM$nkNOr9J%F$=szp)5-R6_Dk__hL7R7F!@%#h!75Pt#+7@ zh_PM<$}Cr%ePn?W`|97Sa!^tj^-6V%Zk?0MSAVMJX|PGPBj`RbH8dUG6X2& zP=Q94kMh%SRv8Ni)d6Y@0K07T<{TOnW5M4fKx=aupcbpe-^ejb{aH#@f)r2h0G%DO z#w^m-e^LW$vmKdTuY3{Z>L;&0?w zw_vtl|A_N_kMTej$C%thcZ`nxUxcih7i0*D_8gf9Oc-k;7mb|NlucEA`4x!5SDBb5_ zk{H)&s-82KcrgQ|BrPasUgV}2YbC6!?_Ms>ce9^lq)7r<4)qdpF*L&sWn5~irMGjQ z@mhwm8Y|lQEYPqns&savXO%`=Qyd$}199pU} z77ncgw6BbXtQZTcGzrk!Tn4DcYw@`Wu%9GRgZd^1d7#@lf2r;mTxty&egPMJ-$f6BHgny`COof8Ox=3s$&vR9` z)x5H3spg&i{OGPS7ILbmDQQ$4XXysnWurIm(7%hZ@KBQgt<7aITdWp;BZrtj->L^$ zC!5CkHg7JDtEtP9&N9;8`stA+r^g69hsxJF#LytyyIH&X&OOy--FT1J3)EvB?jDuB zzf!WDoYGCM%=unZF(^x45K+--Ezjg!{c)aK)qF6^s2n#|OcZ>V&$>%2tC%C)rzw`J z^Glf@)f2XQ>Pa}QiL(-k*UHkfV(jaRDEdX-mVtxB$o?v0Azue*Ul|LBh_Uc^lK`#F zWq?||7JnnhT#=&1xQlU6C+jR__f9sH$!*eFkFD$F_^>U^un4+gb_g-bYaagRIk_vq zNf8bR(dxHSON;b_MLKhw6{n+zy9<2jG4ZuLE@nGS8IdUQp1z@Ajhjy>S$B_+$4K4s z16)bTe~A-QoFnx<0z%_ie{=H!oa)~o}{$_)lNw}NilhDlHf>9c-65k z#7jZe_t{3}(KNZZb#xWtt3((TU~e_d3NcH2n5D)kdQ-%E4{yqPSLaPp<%8yvymuLo z_|-)cMLWX8N=DM&tA%6Tc#CYAA)e&Tw->S(JpgfSkKGua;fq%Q7Oa%N6D|F z!VNz21-(vfCbY{f)&bgA#=;(AEX-&UptZRSP>a{%Z{(1v!WUh3);K%H=P7=bh%8N3 zlmO*URe%mz^J^uG-f!XV7WN7ear0aCk^87xn;bz#>%Ns$O`i zjVd$mBIq;UPAT!bGOS#cR2-m2KaMJ6p;QN`F#znc(VKT@hZqZQHVM$$Tn4DcYVkL6 zNZ9qNYSVJd?BTveT>PgA!A|Vthy?$T%~hC*Z6z3E$ zNu|R}&@x526tk9bXs4Nz3$nTJZM6(NUrAuC`V8I5`{g-HX+7zieC*@mBL~;`%#ia* zxmo0A7kDDWt3}%?i##vGz^Mhc53pv$l75mnJzL@1YDLvN7Rq&i_LZ@)tr!b4 zn*?ZWE(6r!wfGx3b}X}^x;ErEME5Ph3*CfNJ1dZ>aF&zN0Um7Si71PMoDi|S?h*;p zQaq=et?c{MHZ;s7VeVHSkP!EYZ`s9&1$-bUWZA^I(3wc5j|W83)?>3wzZA2R9F`|o zWI&N`mA-2=3F;BDEKAZAM_G<3F1*^}YKQFPCiR<;o37k8avY;Fy3>SI56RY5V!0<<=l0c!DD{EZwJ6*)`(@G;g;8{y}tyfvB>F+kPNX)fN@ zq~d-^+v4XlCqWfH9K2m-V+UKvtJBYi63dHzDc?mM4B=z-CG6w^F;9ZFY$fmAGHHjD zKl}{Uenzx}v~{mj*6!VIlWb3qm_|nJxwlB#5mjpOi51Q$Gfl$(jHz8-Rg0g1wHy^i z|2{XN6i<%(Q zg{`!$j!gq58r`gFIWGUfJCr6$TC2NA(y}^71sJV_q0>ysUd|cAGbs9H!MbQ&uFOEt zl1tk6ev~IBQ_Y~cvno&ci!8-L=C|;9oN;dJZ@8#P!DaFmx#Q}@q~ePx5M?#!3Gjt@ zF9Ot22dFUs?6T3Dcj&reEX-{ZptZRSP>a>#Z{+Y)xGBe_@;9iqt)H4?cNxW(tR0nd z1-pv-CyVmcxuCzfy~&kvCnSd3lU?S$~#c9ySkhxwPITav|3AvT~MP)5fb`=AbpmPU=pmN2>_EdYG5_ zL?lnQ9b0CU*r;S26>%ZX7PVWcMFHxp1GKM} z32QHBP@EN#W)daK|6-Jht^B4Qc2U+Fz%^0J9+bW8ru$!EmkO^bsT*b65MK(fBJL8` zY5%FMayRp&GEvQ=>y2YXHtc?d|p8mKzd8Dqg!2WVdz3oD7Su&_yh*5)!m zEnbVikz-ztX+7+|lmq_Ymjyhrj2Givoi_jQ*?yA>4(-qVt(+ENTExyWJry(5eW1i! zen!Y0F2ascP7Uyo+>B%Fxt#NpW&$Pw+8br=m6ebs_Wxy4Y!@w^j32)Yg+Z;O7oCc#>?Y#HH19ifG|W z91I9qZ-R@Y<%h|ezf{sFJdR5`c zq^V6WSE4|i%z|lwCp)<owxM%|Q~+-`Y0ru`V^ znSdEw%K}R|rAPIMmQSFVic(}$s*DA19iV+>ECj?@C^QMs+FS;x#cT05b*OSJ&87$g zk$%i+wKhF_c5;lkf?m#*`CEYRqx|V-RGw&zK#w)wQTMu^#POFaLWK#!Oa5Sa%g{97F4rZ-g7eqrP*7@f8K4%c#ox%G4uGR`q>?O)*`Z@h zkI^{qFS69ndSOlzS;)sHQU1}+t!mEV;&`1tq(F@GW|~c;!;P{;PAOv1drScMdx~WV zPAysGR9)3x>$YF@c9Ngao4(tfFI)QPqcGRI%EINp`zEc3K(UVkL65a}tSq4JH3& zg^@;nV0fYvbB*QQ7%RvW`>D7tBi$U9iV+>EX2fE7}O*{YjYW( z7O%zM$Z?U35n{X>qdiXlIL{}{;Y~D#!9k<*?Hl3pYO@asIo0+^)(Wq=?XC_>+ClPb zx!s0M5Fx7ARw7kqc{t8zNqfU?AuBMop3GX+Ot}B*Hec(tRCiNv7j-AB5~o$yR&U=y z0iF;`A;qLc_SJBh6<~VKvbC>Q+0@@x8`#PBZ)J~(Uu1hOb9>42k5;}>EA%-rg)jd1 z9qB7$;b1Wq?rjpFwYe;2i`U|B9r($REgXc5+SzN15ia7*~gVlbsLfFWd+JBvLM1x`Qdb0Tcx~=rzDN3 zmMwYyKl@u*I^l*{qRJ<;-dck%+s`WfB z8)PSoeP)rdt~?=CMRl5k*>x3bMyU#&c`Uq82WVdz3%iT4Fs(^|*5)!mEnbWN|Ald& z*zaYYFB&gsVAlF8Z5$>zm|}mf@Ud5kdkP$?2W%JbFXiVnd;83^N`{$TSyoKjHdW6| z`Kb%6Gjv9OaE3(qzQ(Ar!EsKsmXH-3DPV2c=kOIerRvva(sv|G@e zPvl2^Ta+t;X8b;_z}@OSCsz}dp{uU)$ri3|F+S~WN=e2Twv-z?twFHt$aF|tNloot zoF=8V+fJ0Xm$)Rxb8$}ABRz*slvhRAxF2hK7@cOWvPOC`OO#r$2fhpeG*rBkv#v6| z%T>;k?TO1?3S%S^cNvLd7xpf(H z7xDXIT4UDmca-c(lz;QFRQ+D7Ekq}`nwd;R*}Q5`5aG3j_PqmWTZuDQ;D=UTRPH^- z*`4g!ZB^0T)#*cA2sxvAdEIAySY%u?O9l?gN97shFf!qOem03PF31-J^BCMjatt{+ zs9SmtZG`l(nd{&}b!~R=5Db!ym7jmP&CTWxbv*Pi)m`lhF{2JpV*uD?qc_Kv&Ba)F zt4V;?<}yGnR*S!pD3>TPQsM%&E3G#6 z9pB2)ax;$cL4a9Ic!aXhK z%O_F8%NZlx=~b>1;-<=wtD|~<>!^ONgHZ`i>0vXuohR8;Ue*u`SgXOO#FVaZt?~&n zh)c0f!c4O_QQ^C6ohXkDa(0N%MN8{pw(6T6MoJSQ&0vszZq^XKS_O`3yk!VR%?$6 z_lba1HloYyrT9ik_;yZN{i%SBPYictq1q7W!ne^MB6Kp zO)*9NKGa6U&zmKD72Dyc-M~;~8}dBhF`e&BskvP&6<6QKy%5!AOik{TF0Qb(v}q+a zZ{hTC)nnoHIzWv9V3&>F0NP)Sh51bav^JLkYOz}UjU0F7tbhIIog^0GUqWl#%x83O zMHQGObJQq14&c82OmE>-bsLloLeBE%XXzoV_P%XKY4|3}1h3g6ER*ZwGA`9yxWr0c zJRVk6M=hu2=tMxeA;n#3=4VWzB7)xtRa9N9l9-7T%}>w6BbXs2B^2ngnQVE(6r!wfGx3bm|mE zA)n$$$q7@eow2_5H|Yo;u!1E$4RK}3{Y zzt?J8vP4#OOqvv(9JO+%$62+DFOrByq*gxj^zlftl0J&^Em7%D@)n7{{hUzY-jvaI z)vsqwKb@i>i2x(VUA4`UQZ;8re-hECyt03gl9~m$SuSgO{j5xH@_gkq4ucREgMzo} z0PQPd!TIcPQcVK1HkScv@mlNPaa6nRX5zFh}sUl|KU0a|PlptZRSP>a{%Z{&y;O;R0_=r3tD$mLF}X?~Km z8+f7EAXSs14_oQ*m}-8L0_%8qTN;G4y~uWI=al}0{Z`Lvub8)+9Ok#o)1G9MTJR{( zuVQGC-`!jy;dX`3^41l)GtEv#p02hpJY0YD@^~AUsmRjFm>d&T>y%4|WHPY1cDVs| zba4`#>@@x0*U}Vg`=no`EU~yo0`#3aK>NyANQ<%Hn%^7>N^LF!)Z(@H8##8(lkLX0 zgs*fMOjHE5Wbd}vS`NLrlPpkS`NVGCheU3!L z)hSv2ay^#J`CiHt5b1ZTv=zd>sd{KUsG6F(+eVAeKk)sUJjtRu$_~WcZA2b&_zc z*V@mCZhd|WUo@=2GqG<;xSW1U7b zyI&r>0`!bJK>NyA*inpyDNO>jHkScv@mlLQP2xf zJR)_kQ{#Y;`4_E|Bc7#HHZ#Bz)%D)PhyXD^mzVh>ZF$0y!#alOIDBxK_v8xb;yh*e zJ!ZNqCE9~U_AIigHoZQp=ow?-%sN2(%2?Q1jD`P)xwj0Lth~B*N4aio#hu^;2qX~P z2?T-@q;UuyJUGFEyGw9)f@?!?cXw#--de8b9!2W<>d*J1_u14r&z0({-+rOjq{d!r zJ*o|N=oH?+W2_WTXT4=Q7`A6#pOxIb>a8B__TE^3#& z?k+g`^Zb%GQ5PrGfh3=R=6+p`)fL>ru=p?B7_}5$omE}TA+)Bm%DN(^&#>;S+ehW# zsJ)l>#0DQg4{ia}3;=(;0xiEbe*1s@C0AeW&PjTrO@KD9Wk6l4>mSWEURsU~&7fA! z+UXts6& zco%={K|jW~!1)&00{x1NQ`D!?l_gwpSo05?2LCF;ilVL>)>@rfdV=@8B;V~2cB2nx zDo)2&!;_C{dO-69{LFuk9QLRtNqa-fCv_s`6O$PWhqM4XQpUoPFczL~6QIp&8Bo{j z`hS&0-q~KmS_TGn-ae>1RkRU&56HCLdTKuXcZ|k`9e8vdOa^ShN;-xuaZQKgql@h- zUvJ&Bu%!_5_G`-bnlal?%QZWFAO!`YKyHk?8MwiaNi1h#pIg%-!`|xLHqKq*;Xdt~ z)n^D>f(jPY1Ft^jeAp%Nt|2U-Y}s#jr}Mr!^&B425@S5a*#tljZ2@$ojD>|^EWFYt zK%3Vxpsv^T|Nm=!6?E(VPLk_6zYOcGDUNC)LIR`C^P{#Z!jt?|%#$&wfi_>)djz=T zlp4^+%*#+LMm;xwwCbJkydkX`^g!n{`c&}hLk_kh#d~$!RPeTfOV5CnD4&{B2^h25 zW8ttCKu5}0m>0&v+ie20c`XC#dR_l$uJ>zpTzqLjYvpZkLMYM)gLiW%bJWQXU>NUng-nXtK_U^ zx*J|7{|Q+S%0EhIoq+lCSd?$ysr5oOGe0k)EeQ@N>k{VISowvVKZ4%y#DIQ`yEX9| zTzV#M6ad^1?~@J2!rxl}<$yXO#==+_3m>%!(B`!asOxq8qrXreyu|Up=>6@hFpKi~ znE4~@=%lt8ukYv4_-=O(mX$6bNRG}x&SR`~=*z`*82OK!Ybtgw;<5Sl96dBshtZo& z=+>0un8{lDoW^fbi;&O08 zN?VTAd=qus7;9DjJ*3GqbUWmSVfPSnbtf@B64T?@3gvalu)c}=wTvz=c)N?7^O9aI-|ggu)9b1ywDMS| z3H+vJ)5X4|cA`rV(CYB+61s=iVn#<5t=2!VVVz39eYm813;MXMMa%lA;K6haFR6$g z=bw-0#;9IRD^34!ju0c>HBpJMKANi9kWNW>s!~8S0gbTk0n^FcoMZV9D?9N7ZsNEr(O7z@+e1ZeYG2GsSs{?T8r=JaU4j_%WDv$ez=+aOPkY3~lV z=2jo4PbcaHQbcRo9p!aM{nEP}E4bGP;O^2F_}f&p{;;kX)Vsr)XF#XZTfpiq?uaX9 zB|pN;jd+8!D(#@Gb}DN5u-OO)a&BeM-0eJ2$e(B8k{!2a;O&IAW9Jz1&CAR5a|Wy> zT}2EKvpj@~Wu1~zJf*Kn4aUMzEr5=cu}}uk{x$*Hyp{oVy{>;W*U97{7gftzZT)1? z{-xLFG%x$2A#IAIbxPCGhjy#bsk^%LbBCXGJynBpO4Xq}ho-bir}G-%`P`eg_5{Yl z(fy85+ktj2mTpX?aceBuDHj_$CZ5mL?GLs?NpF>$`@DKm4?_tfh&HN^Iy@kwTl;26 zf5XVS=s@tdf;M}cpU{?s7DePjegRQg4LO?`3rDvAI#R|$7RExZO@KD9Wk6l8>mSYa zZKHK_8r`(nnm$8+9W)o^KP3n6X1krsz+)B>{U0Z&uUoxA3&Hk|yM=yf!0+^j6ZZZ( zC8+mMKn&Y*lY?iR9V~>~VO@!%CY0KW^9N5TYk7bm*MbuVUfC(tn8Xd(G3>yxdIiPV zRJ)q*lk#(wK`I?8Ovs`5o{F#~W{S(<(o#Xe>O37De$0X?GZv0%0h9-Hg9YF(DA4$p ze)+ZW+yCn?xq3g0g=(7sZC=ZOx?a~m`U|tE!sZac(0@&UTvh<*X;85LYJb1qjBCRHa)NRv7{c-nzQxMOy7@x?eHBvzNY73X(G=L zi&(BjheeG0twDz?g{nsOyB=L#Q_mdxq7#gTr|#mzX5CLp>s7cAjkw8WNrR2pzJm*K zu%+dAVN|n94aUN;Er5=cu`uJ|Necha9tukHS_ahhy8h8zob0wK>4mIL8`ep~dUIIc zapdn)E@Nj@qRkkM{gBpj9lE7Um*G|v(f#;QXKfmPA2z3H9h!D5&dLG(16Qc5;u#H) zfJUzXRydE%fS#`V5QOj0?79Yn&SZHRBPk-$F&K#3f;EyCuG*NJaL`^Ji(Rr{YB~VY zT2X%s>x7s)xBuZrj_A*5LhITPH^_?5yk;!?qXp2BG8TS?5Y|)~Q$8$cd-Pr{V>k`hSC|nA* z!lq}tD*SCC(%_hJY>8{WkZxoC9@1`MjgkIPb?bg1?$(I*fY$_|3vR??>wn+KL3}~} zcm-O1ZT$BC`b)090gQzU+XQIyTCUl(y8h8zGf80}R*9`+(YqZeuXJUJx!<;5(@-=J zwp(#((h=kJ)EIpiF%NT{q-KX3qQ9~o;da6}H)?&~&sD7rr4}c^tht~hw!r7?WFjWL z9MRw6dN-;S!=7L7SMxY*6&kq#?NHag6=zefkNT;iL)iC4{l>f-N>bSlD(_;69M$Jx z<*ND}6^6BLR7*hlCjAgV7it023;=(;<_6HUU@TnGCP16lGN7*2^^g9#lm=r#t`8&jay+}yJEfU(N6>Rg&NcfsBxZl1%ZlGZO*;-~=bv=#Pd3Gc zuX`a>Ucy=M5-e+R!dszrmGlZ;f|wMMp~ky7sCcKgPw8=bycxZ~Sv6$g%!MHvt?)1I zk<#vDPteZgqyw)zq8p03sHWfWtca^#XfPHQZUJnmJ0b>y|4au#00f*J9patR^zgkThgrW&cV~7}_ z1p%S@UQ*9Wid5Ylf@qE52|Nmpz2A~2+o``K+`;%u#i!czFR2iVv;b-bfInVybBC@3 zW8u~|0ouHl0d=jee>B$typ=FcB%C*+&2pMi)FwPC2ld&YeWIX4SBXy|p{z&GV3Cow zv3x45P|zuX6RP?)tUa)lk0=ejR+t{zg zw6N|;Ws0hfGdY6O0TuflA}|>B78>FI_H~`scofirKo34SWXFsHDwZ;_8GaECOt8UN zShNMukunyRg|To?n*eQI%YeFG*FXB}FGcm{^lVluRW(-30c<8-h{HkuJaORF#(_0k0KZ!H>i=P5#L?jL*;-f|W#|c3p?nv@Kb^r~;vI zlN3Xmp#WM!Rb(cPr(xrI)W*pA45}pYGrSa{HfA%~h(J1fevKV(%grqrpG7S?yB(vpklzBZjG)J_iq|v~ zx13hT6n9WpP1n*{&7XEF>4m($F6fb<)Uv%O=&yfP?F|2$iXJQYu)wHsd05jGt&!A6<80`+byZWVdWC59h&BrNo?_~K7iW-| zev28ue>4}y1U{$~x_;Ua@V;EpZFQZ%!#|)K6ApmphbkD<1%wh7b$`zLa1ubs|2?_W8|)l^LL%NT zsSv+u0d%B{g$@`C@3aZf=Cur{>vjF3x#&P~3iz&(Psd>pn!+bJeKw%m^STS-U&{C3 zgK51sMz?op9stFqGpYs2TrTO~jZDwmIqygGecUd)htARZgW5gsx$2=6i?w@dJ~`r# z$}R}e+0%LL)M$Ajk+{6UFFF;Esha7UsMxsmc87NzHA`)48j_rPup(y!K$tJvhbX;5 zeTnFs1T?z7Xe+owmudl&X~BpX3o#fAAGZn6=Cur{>vjFV%IYs`5bF{Q77BWW0}F=& znyv{QH;?{1uYOKzHD(`S@0Sq#ewBC2{i~|?D&%CnM67efN~PoboSSwW;ViWGc{oQj zL^rA8{Fh0LsyXcz94GpD!c>+Y`}ORQZiEQY=`>ij*-H{Tn{w*Wd)#)4oheAOmEo7Xa+uGjUC<~oSHn}GhB*Mh^k zh)|?VgK0VJMhz<6bvn$C{i?2bTob!}ULas@{gjS}+0{rnN4c<2SvNJ{+Z2OqdhA(8 zU(uz9V$DE=PT*5yMDm;rTQPcQ)rJ^9(#s{eyP{p0r{k(I&TenPnac4aL<~3C?iu|K z6C|w6q;IN@fH^**%hI-k!$jrDvLC-I#Tp(9%d`MGQpQ3FK!0o#pv`L;P}l4FM{_Z8 z&f{y*(Br?8F$?9WVXcuf(_sHDeM=%$M3r8>H;-OP>L7M9XzCfb;38hO5UCP&Ou#!) z-GQg^u#zNKqcL+}nIU*PPx^%4K#F&oxqY5#g5duiNJ;*J;jGk55+Er6N<;E&hbbc!-C z7G|^w(B`!asB3lozt-aXPWlE>S!A8hf%sAJbgXZFg~vOwjxEh6Q9TjSB6RO*w30E} z;KyzQ!7`y8`Q|xG!sqPQwtWsCUv%OXf7ltAK}@R*98NbFRNwpHr0fh`=azir=CpeHAtH^&EKQF z$NTnyvVtJxu}(Ky$1rQgrH$i1RtXSAFp*&DJ?^`7p@Mcr*M)mwW!R;FN~+b%%Z+9)hUopiZXQ z8?jPmn2{)V=<+Rqj+C)59mYbwO@KD9Wk6l8>mSW^6MWaA%6KX=7^Uw=_8E-ItTqei zPY4ES0b$-auWlNr{}Pmp<3Uu1#I#(%M6yQ z_dY#0q?JoLxzsRIB`|BeZtK*-=u;pUh3!`ifBwUg*00zwbH9|{PHJjYw_*er(198K zdxl=?cjKrts`X3y0frKTPEH&l?NQTOLCuMqK0S6=hYp+1NoFW+RJRlyE=kZ55v8l) z-cZp2WrsVnkzPg)USE}Q4{ zE@5*{md!d_CsNZ5(sWEVAlnypb)PzB`+nb;cOUIp?zpVGwfiS^H{yu8zK!UMuth7( zSsv|HtV5SD9T-*uv$C)zM0JbwSygw0-O#v^-BDfV#&u9auaE2n|ZjK%1+1YN~p|5&$Sg#iA zG`^*R4#yCCP)lSTMEFBRhhtqrx*0JaK|Nd7b0vK_;NjZt0ezUTNS{erF{#zbAgJq+ zyq#Bn7qW&0Bdpg7IxwIGW7;98Q)^BT=5{_fXrXaB;HVd{?S~>6X@#fn%D9uI&&Jt6^anvAuU;S_m5o2Xs6EYQn5qJC-eri z0c1o3*hTeVREs3^3?@Qho!`g+%@wrvOl7CrTNTCqPCPC9bZMVmO|FY+b3#I42L<(9 z&^OvUdAH)pn|Kd`P}$AHL%0FMdLFI<)CD#?Bt+nKQxk@2J#+3;@tIG zhc3bvL)tH*sXf}WN1tK17t}Vi^3wWUmkmr7;LJi#uB7GRhUN4s5imo#BX66dpCDRC zh3mx~cs1no@Q_36Hll|>Pp@&F9SCWspti@GF{=kFdN-y0;%0H5nRjf#A`QQ(D^Y(3 z^-NOthV5|Pi<&#F`I6=@ZNMG+c?+Os0QloIH+SeVFcxlT6QIp&8Bo{i`bTqJQPC~9 zg6H&YMk(@n2XsGv#h5WdO~;owsj&&?WML!2Ug)<)g@*O}K06_-lGfrA^zv9O(BpCE zLsc!1)viT1Y;nvuqhD*%CL%6&oR&)3oZ*q8`nfCnbjuvOs&2}^7*kh94+OQ_I4wdD z^K|!zucQTpek!B0iQR$49d^p$%QO~br^jhg(K;Rj^)#l$FCGhDv;aC%#=_z-7H(@3 zpv`L;P}l4FM{~jGU~{`uL%~M_7P{>Is4qzt$mv)-_afS%!*pwA+)t!*bKHkb?w8)M zI#YU}Q^!Eo;v0roo7Z317#Fk)+t-X+>pLSH%RAU^QH)ctrjbqmt|88>t}_|0U^x}h z?_wHHP#w*^lI||Mp|KwKDXCjgtrTdG7Q#9zruhTz;W*R5p3;V_R40-KpW{dL$r2}I$%pD{gel^*RgRwu@6 zv+#!weF0e)US-1`3KNFTwC062AN5ld1n)y}hLU2Y_RQFWh-U8%jqx|~?FR^m%&H$n z63^0zy;Hc6>HE>ue1!RVreh6zDj>AFSLj*}x zN5=g_gLQ?vyHBp3~5Tk z0}6h1Cra(KO@a1k2>SjO)Kkz82J}wNE{;THEexZ+L+dl_&bvp1@DtJq4C;0IwCS+c zk89x`z0bLIKns+$NmTa~l$fm(xIM>fPudYPwI)pLdG#jt)HA)wIc}VZ3a<<}jq7)D zEl6J%6;)kJ#r;a<2s5>!o$Jm9+AG;$EPUMp=tvn0y)YJ@Y7?N%YZ*}2>-tA?!Npyt z;6T`kL;BOOCUYPy>yu$U*{@Dc8F({xY3sDkPT9f{R@iRv6QcSZuDOgUJ2b1?q@YW% z!Y*kQ`O&@4EX^U3Af#R>K&W7{W}Ph=G)eEmvd%8KF-s3~e@rvz7)KpK`e05k(0Gh0 z+vS!oS!{bD^H2HEx?4%(a{6yo<(O?WHiYC~(b}Yl(m=+yfjjh@7C=YJSV+TInA|2n zo7Xa+uGjUC=0e_;E;uM>-lF4;dI+7&Xtg2hJt1)|Jx2TY>UE6$VN?>_9MhjslVO5^ z0YXg6bDJc5ggHN``)baJB;NPw;l_Ry4NKKFVhcyC4o(nffvfzm4uY^9*4}k3UDSW* z7y)Y*PJ#1Odl%Ur=jR+`(WX@OVvk;xGnz8$iEp z0d%B{g(!@L*V+VV^I8Vf^}7DiTuU;fCSqe)^9^b9Vf`lS?akYj#vReA<)XT&Y@*0J zomvrjZ`GvAF+uA(?~G|er$U6IMNAOlnDgVHUyt&j~A^kIGM($Z* zeOUH``srU73*WT>I#R}hU@W}bCP16lGN7*4_5Uhs=^+iw(Xm4s%4*?~{etF8DA=J* zx>fGb#Hhc|X^rUQr0Pz2CV+5~9xS_ahhy8h8$>(w0kc}lfW_ZFWZS|WhU1l_vB%iT$Xdx>}33@xD!iukEGd%GGgtr2qL*F zqGNlsdD=a|ZE?(~@*`s&+7w~$E01h2u2UgABs?5`B26G{&m3$_E=uTBI>Yc@a(X$es}M#Nv~%7a`(0BS zXn1(CWrEtx9F2|cthz-^ut|S|r8yynCEv5SVVkk=V+)`oWh~5rvG7xy0Bv5&fVy7S z|7)!sX}!*LY}Pq&^Qw9nj$fB5-CDO(-3dQ+-(sv;HyeSzTn~@j4oyfpabuf+4&e_o z+JClgnW6p3jzpxEv@(%AU*4W8r*#c+qWJ#htf~L9rdJ!0TeA|5;`)8j=B}r6Z-#Y4 zK#Q>dLHi%n!Xa%-HbKc6|9g|}Bt(O{fxEk=qhs#X+hgIU7C=YJSeOQ5VP=~EZC=ZO zx?a~m`s+Ie$Cz-=(zVm{$!uMg)s%`ZkC?P@Xpb@-cA(lmrZWSYT~i6irDLOYNd)D=CMNoRy;b0YoURBSkgKOT8Mi!c-KER=4)mw{M-WQNEr)1z*rb; z6QIp&8Bo{j`bTqdYpk2qjvPEWI}oa#)yqRVv!HFrqbCiJ`!S+x)A~52v81bq9JWHA zhnUC}<9Z%nucVeq>lOl~3D<7~`?bdDYz*0`FkkVq1o1u25PE)wjpd4N~ted`^G zF;QL{RCE`%x+FdidXSB*`}bkpLYs&=AtY@ktyTZ)Q6DhJ)c0w)JXS+8fwPE zlomio%2@d7;YljA3DD-X45;gM{lC^aV?fhpYrSFJRnTr&TN8FRMw{Rj)}vd}+MjJF zPhGxkb}1#h?X8~HS4jsqbi)^}=(0imI7L6saAT*lkp>c>WdSQJpbJP@D(eSm2{mm3 zKNG(=LePRbkJ(&R56;xmW$oQ<^4KbPEC+NZEd@5Q6}PaitLn|PUdKYYZrjF(qTXmh z0bS~sREVi9fR2>0@Cl5CdYb@kUdw>GUe`a$3w1Vcz)K3cvR?gcNqbyM z`Lvel&?+5zfS5BpZ6NOjEZ9W<^%~TAGCn%>W5jYZ+PNoHG+#*4h~*B*YH?4e+xDj|NBPF0Px3aZpLS;!B{x$r}j`#n%8p8uGRIA<{Bam zR$8fQt0<6G7s)h9!Bkz=E zL`|rEcSwKB*`8>Linb#~wC2R;cf#r_>G>hQAMXm8lRvqpDGl?D^^(qd*uJJU2lVtD zQ&8rOIiQ)@H~6xrT|KDx%ZgSsy{0vYs0iuHxVDO$AVJ@6Js!Civ;aC%#=?p)7S3rC zpv`L;P}l4FM{})9DoW8oIjh6st9XkNt?O8ttAkQabGj59qw#5NpV0m>i_Xpt>CUi^ zGi+CAvjFV?s}+S2h7q-baWBUcPrnk3b$v_Ilr@#y1%4JLk`=G z^w=7u)?;eQ7(C>ekLUE~vhzEbv2Izm_~_w~Qy$*Pn}WMMr%|#;3;L4gZKwLMP#AFf z_S?LdF`*jPyF5#2$R|`RyGL;VqTrYj{}=g*s2yY4Euk+X+9jr7%&a6hz-BC5)B@;8 z84HWuK1o-#3DD-X45;gM{iC^#s_Xl*n|1SLv_-$p7}84opFu5)YhqgQq*j273o|yR zv(nz&-i2pl)@fN6;e!$J?Z!8ZwIlqWv$O6T*7GWr^u&o|ogw7<) zC82i`x-#7GSh%;W*J60Zmvk#~LO9Z8g>WXRm_fa9 zK`YVFBPqK_r*_$-kyqhUBodO*P<7}M@phMXYPYB(9zH>E&4#D0mj-pqG>sj!e-Tb! zycsi?Z-jMP+O4OLtJ()yC>}ULt&jdCr&V!9?$B0w?SMURN|$#!-RY2F%?rU^+MRBE zS_@*6Thlug-|zGov4T7W@@Gg_)EkV2OIiRODPv&*jD_3V1ZeYG2GsSs{$F=}ozXP| zZU*9P6YbHZ6Lelwmvf>=3zpKmWnm1sS=Cm4w3Gj2?Zw&8ip7LG^mr7eJ(0pO3<-0X6D?wX|g+5~9xS_ag$y8h8z zxE7xX=Ok|m%FF?kbEX!2(8%uW@6_c;>BE|bzz)nXi8$}jvGiSg*ScFxzL`FB4ZSD9$Tvugn*ZDZc2xUE#xB13B1iV)CLRi<1(HlYg zb)*M;q(#bf9LJoxBfmH7)Jt@F3+~@SAiRfZaE`Zu_Dt*NnCAP%W8tzEKu5}0NWob6 zPn!U3Udw>GUe`aG3&W^bU9(F{WwdZcRbF-#{jR|;x(sS`uLj5H>BgH50opX?S#_OL z(IPed1MO{>{*-dp{oA14*%`s+>mg<-pgdrVB`ghKUX1rK#p!I!eL!n(Pu?{uEy?*9)4Jl#~diUTuA#>by=~& zSh%7E(2+70>Hzv;n*eQI%YeFG*FT!;uXu?-$112WpmPT_bx2nX>st(~Axx%pS;~3z zuQS$6=!mhJ35TJe%?C9Vj94f5V2AeTaoF4m1A20f2V`p#;*-;bS@(0`#?Kq_ zXnPKhtVKuad{p&3Wo@S0VQtl+e|9RvAI{eG1w9$}0Ahg2OF*y0wPaKW$hY=KML+W~ z(S0JIKUOV%c_yWmLk*9GD_a0H1Hd1zxp{{cp`g6pCP16lGN7*2^^fLysS(QpuLE}U zQUj)l?1;6+EL}O>Br7SWEF5O6pf`=;f*@ zLjZ>$e*)o3Dea3AA5Lk|cDo(&|Mm*%q)>yga8(PSBV{ZM!B}{&O@KD9Wk6l8>;HAv z-b31OmhK$VC8Sn$>y1v`9@O$7y-Y|%x9J}kT_nSS63HIKdCBkC@qkCVEd zQAj|iWwjD<5}1ltv|-uNX?K+LQ`sucJIm_o*QFWztkMMLKcq_MC#0L{VZ{7o{^zis z!ek?&LO`<`B%)kgD+b+Cm`n_1#2d3O!&;MmMNNxw1WsyPy}?+xrUg(l0Q~Wqn@8?c z7z^LD3DD-X45({${iC^d;meGh&hdIyhxX}Tc?Bw(iT77VPZR2a!zyBjn9fUS?@qfy z9TnE}u-=U*6;&Q_N=&^F@G4rJ?9rO`%Bj|``}0Z#bv0bCj4saGZs@0w14dEo-dVTL z#T&YM~4w6dlni3)2Kc0ufZGx{%+m!vgKrw}z8)!}r5A(Vz~2DoI{FLYj@+|)}D zRKe`5q&2DykA>@605t=^AFsIq^h+2Ev)Tk`^I8VfwYvV%T&J^fuDX9awx~JKx(2lQ zfKJI<_I`I-AEtfc;JNxLMl?}%p|magiOQyBm4v=d=`n0J<5r-M(DVdu*o~lAl)q== zI?mLFNXm?ZdTB6{2hoWdh3RK*)Q`cc`aZlOTpAbU;+=M18DSRCx8rors$JjOnV`u@d>ThsryqpE@;<_ za|U$rY#lyiGUxf+-~luG{vLI3@TWs67rk+sujVXZ-lu!j{6gHd=4>^XD!(b(xaN0h z?~31IvnS9;72UAo_W+D~IzC89M5jHo*9d0)(J>KY&$qN?plbxB)yJc%|) z;|+e&FCGgUwg7rCUywgua|7s7Fcwa46QIp&8Bo{i`rEfYjOzQe-a=K4W+Ci$!8#B~ zh&PJph#tK>M(d`{l>W4=^@cP!TfO)mPj}46&9WgCoT6t!TC}R0i|*orelI++fObsS zZfKyQeNhb)vXga|C_F>d+%N+_iMgk@4EJ(GTN6FNkTmazkjv6qif@1y1ZUNd)}XP> z9lB8qpk@I0<25&cE(&Ae+%^H)yp{oVt*(DG*N#=)R`UGo__9N+aMU~yYrcy1KyVbZ zCiiCIwz(@~CT%Vm)8|QzXRng?0QARR4Rq<)lwW@j)pYlur=0gSvUnhEP9*w#KwG1M z!ls@^P+mJDf50&VrC~^~U`S5y3r>DW@nKbR+BB|LVs099ZVFW_mZ3k7Bl=YKw?x|U zQv?~9OwyPRN@|^uHo_+vKsRmybfk=h`C%+v(k4Kg*D|24*Y%I)nhhhGR4m*Nayns1 z$K^bN{HSgjWC=wEd3aBJ+<3f(5Cypqw{gU(XlV7i|C*<>N8CQl^n z#Q5i;g@I&w)9r`QyLrwHLpaj3_X!vH1n*XIMT`1r$g`xbEm}WuQN89~AD*rVUapMVVBrjz#z{ErTPThL?leL( zJB}zNj1N-EHhKH=PriXKL(C5md@=Daq6Wc6dSA-3N4qSc!C#aHc#9yadPmI$) zQ`$*-psJ6Va}ljo(-On#>T@jnQ2}p<_AIL$)k108T!b;!$ms!OP56+9^kSbbFX~=m z@@NMBq_2mxRF8Z0$ln$VXxW&3T%WJl@N>(6E$ct&ux4r#hByU3=O+Xj9t(eJ0d%B{ zg)oeT``ZL)^I8Vf^}7D{tO*2V$^^14GWx499eHRd*M( z4EKAtmV~5Dnj!8|QOy_8^Uwm>M?otk9XM!3@caSWvjF3xt6SHOv$Mb+YD*lKGREXsQ4+mRY5nCrX5fm7nBa| zn$Ts~Pj#EVz7HwSRlS<9XXDBpdY8-y!tC(v7K-Q% zaz$bNmCXzKIpUO`r3nws>%W|5BO3hKvb7y1D&48guuckTWu}y$BuVp}8tLq=lwaKthLwp}mGOu&z z=vwslOqOvx2&-qDI?@)Ed{fuz0c{UkAgMQ!x`9(nM4NZ%O*Wzp6BS05&<~Em+nl{_ z$@z32MV;z`0;a`t`w9_?_%ZZ>qWAUj>th+DG9!j>(7j+C)53&z6hZ347;Ed%O$UH@pV zlkxg1I+yB`f<7A1#6f!+>{T_&7)sAf>C7>jp7x&e4q7)!ZIJMb?3uE%Jz9053HJBY zbh7l%vX&gwt9|aStg!A(pm(L1Z=tz3VUxH#q}|&@llOMu~=y^7Pe{ubfk=hDKHk^ zYZIW&YZ*}2>-yWeE)Qs9FA)XH5w)a)=Qu!Q(O%n_zdhBVr6=^L+OXODxNadv zG^l95Ab$Tgtz*aNRYvV0hYKTgTEFUE)}OgU|Iz~JNEr*?!C3gTO@KD9Wk6l8>mSW^ z+OVoQ=Ky}i&SbW}AJk3-zeC9&8yC}(>?CQTCf!L`E2v4`eh7bxcr&WaC#cq~lj`Pb za?;FHG$F5TVWA+$j_U8sK>Ji3GGBLmL|p|ta(qy?TJWHNmMG}ziYCW(33qEn*Pvdh z=u#%C&{u+XB%|SfT+H5^Z{&1-R%6JE>97e^yr$*S%0NRR;PMxbg{@lv9Vuhs3m6OE zveHeIrfb!ooSw#r?YOXql@H4g&pu3tXz~>G-YhMF15(HX&zxa(M& zV5xz}HRn*MTvdR2 z1n?MJo%GGr?}_IQIcA+v%e4{plki*i5$R-l%Q&JWv=UpgsLwTYx6a_59&0cbwrv4) zq>P1kU@XjP6QIp&8Bo{j`bTpeigU%FCJyM{0dGEIMH|b1i63LbBNwN>i%A*lHYMz+ zs;2|oBgK+MXB`uD)mW!;pGJ;kK&xfcHAmOkfq^IEf_^9s6Sz<#YX=x#`R{#C4c z+JgO2fwmF^hJbCvIAd;9arbYxfKIIIz>4Y>`|I{gYokaa9s>K0q|&5CNA;JQJyMWJ zY##S5Y{tTNEr6N<;E&hb+@Y_*SQu&(pv`L;P}l1EM|07vdz7O`N$U*hjTt(v-?=%5 z<*lIKz2vjQmt)P+g#2?wub%F)hsn!RbZ5qHnYZ_vIkv%gZIjk3So3A=UUgWX4uW}7 z*NynhGekq$A2#iC`-09b>wDTtDED*jH$F|DpZzoKATllo^f83nq)s7Alr1i|WL;;I zK!GhJ@9v16P58L9SJ~n<6chEbCp%^=l(yy3^}la~$Ha&j3roRRIA+Sf|M#QN{9*V% zUvq_>0xT!iyMdc%SpC0Q&1<=4*X#O6bKOqLd7pM4(5e}2n%BN%lS3xTIV=mL^fD}z zfcgVkGN3PN4r~5Rmv-sUO&xlDf({<93G~vl9zgF*qDsLgfrnIecwJY^!7g~T9y&vB z4r>taDb$@&w`zZ=Hf*M%szDzuYhqSo+5NJ~fo+0;cF+W*V~`cg+hZa3MygME0=~yp zrz}CxWipFL$6Fjx0kqr#s2KqMc+Jfnx(JMgliCDm^I8VfwYvV%T=e4pTlR!ym#iiX zDVWjxMcq)enOg$FGlR>qn%Zg2AavZvVh#|b6@OSntM};Xar&~yrhMCBGCxz#&#@F@ zwVabEdDZgs0GV@Td@ve+!d22)%|Z|w_T~p#W~^ps6)3?Nfo|LH+--8$*-c%Jj3Oeq zQx8|QD~;c%&Ip+m#`N%rxIRhfVA>8P?S;WIfL2-n9VugBJ{SvUvC`DvWeTP)a02=#`lF&L*(=uE zC7uu7W=s#|MC>f)80%tlRP?ZH2Na7OEeCu&p(hWA0iRwPhRBq@<0V_y;U)74U&Kl` zp*`4)(Oi+bd7pMP7z@=FKu5}07zbnF+%^H)yp{oVy{>;W*C~)j`UID23G8SJ&V4wJ zyw|#3jadirL%{a$_k>Mv{s#p3s6Hf7H0HRRbGr1=1RasqJcI)9a^zG}a6|9Voa16? z>69R)^y#VDHY~cGyPMFZsHSyl58P1--Uy)$j7Chhf0;b@ssH8Vys6Xrphw$;^aD*N?$BBbpd)20bir7-q)mV}uVp}8uj?Pp#b%O$ z%aM6)m$ATP(}E5_3|Q1P8Qb@Lhi}_h9goKXH%Q#MJhwzFMd1dyG3i$MKa$o*(0^EL zQ03XWsbAAz76EI6dpV=-;VJKBo}aVujb~IkpdDl09@D$459zF^E=cIG0TV|Lk88hf z?a^?RKQL&6qrD?KRhqYI!P+_aa0WFyq{lnlk>J(;K!1a=P;UWrq>P2colsEP1ZeYG z2GsSs{Jfo4~t@wN4uhX!+ST zEV^aLPQ09AprG_8O*4r1+v4UasM=MBfSjIk#`pOsKzY@&n@u{?8KZ!;Au0sSX8=&% z+7}=&Oj>}(g}CJ}jp@tI24g|n{hwX#NEr(u7z;PH3DD-X45;gM{iC_I&gqLmt&q|B zd7B>dPQ1Hf+yC#8Y{zw9(o`|@@5og+H7wkrg?k-GI60eqenOoEf_XFZAGJ@;1F8=LJax(#|$o-JEB4#@%Q$jfO^;Aw-C05KChasw@Z^266)0r(4=n_X_z6qGgr z+Pszlb-k{CG#6=N7gn`9XAMv*X&D@!Dn0;mW;_(JSW>$afz+wLMD#iwPBdsytIY1J zDMk!d!z`Dx;W-(F@gyne;*uo{*ALr;?EaXiEpH8I5~A;<>JdFMV8@$uO52aoIKtNZ zbqs&!7=4Hcai&5cb&l1oQ59$e1#Hf_B8DD8JsHtMA#>&zvjEYU4+)b_gJ4UdXENfws4-abSKsg;VQ)?6JgPnL$|IX<2vet%j1_7y}#pw+)P)k}Oaoez#j4R%419MQs~U57~KfT^6*t4G-kEA`Qkus0GlY_=5cLnwvXx z5XQozZ347;Ed%OWUH@nWw)bYh#jj$?>dvRTXj_Ff;>-esLx_sjPW6}?SVH^J!q00#ZA zy$V3<`l{f7Ldc?Meu=?aCaY8FEOps6?7x6WtcXUwHzm%knSRKoMc0c$O1YD zFAiG33C--a1=dRyI|G=p5NQE)q>P21VJy7VCP16lGN7*4^|y7s5%xU#?hdWgqw6|7 zK1(G(a*sJ?%SGK zdH;-AHkeH7Ct5>M^-AlOEZDrOL(lf;#V%z!eKveDr_?mfLskf8DX8^_^y&<)PTVI6 zzcsr{q0W9ZrnggiL>gPr)-{DOD(46@U>W{n2wq|ugEbucqJ(zA|1GG+Iqwv;P)(;r zw06{kycZ*SFs8*B$MDYO4vn<{Y6gHmUUT!v{T#-^`)vZWc`XC#T3!EWuFqjhR-FNH zArykDF0ShOvcgrL3wYciErh#H(>2mJE*^P>CUtX z_T1X%By=n};Mi|sOcc^X^i`_*nV~ta;D|eo&nFrl3-J~}N6J|E5XQo1Z347;Ed%O$ zU4L8G?eKqk^xIzD)M@wW8>_matUZG^hN27iXpaRc%dyo#VM=0JpZ+mR7iWAFdVo7C zV*`!r&-BTByyoT(eH+HYw`~Hnc`XC#T3!EWu6W4D z^KGDAL6^bk7ye_O=8Wm>#XYfaN|*~xc{m8=l_OGp<)bPN-7?sO~}OO`ACDQ6>{O{$s_ z*1tLXgx$VC_CiiUnVxXPFPifbDo1RZ{Vo9$F-vT?XW!>91khv)pd)20yb5DsN}B*} zUdw>GUe`aGi@jo!0cB0|AlSsT4MkW@TObr2){A9(wI$K><}D%IZ>%os@$>e@oL`Z5 zjQ7Z!EfWO1Y*jCm)IDTsZbw*8Vt_DHJ=5I5OLr)oFmPMd^c+O%s_kx=mfnkgjdovI zH?ghl)U`PeT>5BVB;30HeaWs4w}qSq43y8IuL1$X158@=Cur{>vjEYUD){VozT8%%QGkSDxTKWFvK7gB(yN;EkO$dcOYAkWLS)F zhqSa^D@L!E;15%sJ=xD|;vD<+z^d zY%mrcX#vy>0DrvZ<{dgOjD=&`1ZeYG2Gq5>{$G7zdN2|HD8e;Jz!|SgyPTwRdqg)k zWWNXFOqJ7a5$%@JL2-qlSjY5Qz$BIvXKJHCjl)ADWT%TS>(;DYSG6$z)U1_C0Z1l9 zM&{krU7RO5&X6g;9JeWIpNIp6cb6Vwvc_zsX4TSOF%MR5We*n9X(>CKy#vLlrjrVq zQD`t0{?h{JNEr)bVJw`~CP16lGN7*4^^fL)Bz8_!sft#FUtQ3L1znWUt_3|r5;}GY zNgESEoX+R952^PN{ZvyVE4-24=+TDb^l68lN?6JAU0L@JXy&jMkg|-hL;7u5XASCg zoUDpkuB_D?wyS%>6oP<+yLC$OF}ClcrLag&=Vf(eP{;S^U;J%6jj`^In0L(-6=R(B z!e#){lKOL4*Pw}unI40H(H;wrwg5U(#zH5Ig)`a&X!BYI)b+al(OkP#baGLh1znoA z<`*e9{iw%y@Zp2Xqd1_qQGvy5EPrZDSD-{=c2?D9WMRYe#F3tDa77afS~uq->LQJd zByPrjM1>{$_5H%Vq)mYw=669IP*kj>P2yTKq{RpAM$SBrwBMiUGI2^x=#ZM-dS}FR zCE=t+-4U=hA8IbpRpWX$taqxmhU4hEJE2Sb>0>Q`j+C(whp}*8n*eQI%YeFG*Z-?8 zeEB}g>q0!==Fxf+ZGi$~WCaAjT{g^Q7fOQ;cku&~$`zdmT*LJg^-5m#pY+XiJ&*fz zx8}!wJ8y0N)ua$+{TI^kK^?qSO$2}A{{~-o(H`qhkuko9^GUCjyzlY0MTwts(nqME zYdGd4ZHGd4Vj@Z0Bt%4gtFBry{mdQ!Vb4fUypH~-DGGaLG__B zD`_Ws@>$(LG$D@k3HN`t{6;(E>=;i6Z}J>Hk+I|MLow}2xIR3F*+yJ~Tp#3{_^8^Lb+PdtRhBIQC zNVacGH4@6ge%?YO`44;Jy6Iad(bt894`eu*6cikC*ayLpojHAyb)?#9A)Pp^?}~b| z+lehOn#hjXD5_0Diel@EnRZzDpf0 zkb|*sQ=0&7Udw>GUf2JtuT67K;{G&ayNn_NrB2^sD|Tz6c}*Dmu4EINbuxnBFUT3O2Q0*X4C+#ngAk&@YhCQPF8+b08V6+TP?!gupdtBw+!!6@GD1|JdYd z!Uz4no=rm!t#`!}^KIgKoO_l4mx|Vk=}$@B(J+g-tA?En3tc@|IUGTF?nuO@|AeS65x9B=uUC&hFNVy&6tABjDD!*6FlB z`>bh3^XM+EKVIi{>if80HEb#^JfwYQD$o0un7NWpo1^OowL{))B}iiBnh&bD|8>Ol ze!#am(cV+XX;V7w1KNNn=Y+l^oK#MUe&*eJwn!p z1+lb3)W(UONqyL3|M?FCjyn3DT`msr-CDI*n|13&Y)R8y4!F&W4nM( z1;?81C9@#zL<6YT@rrJUYT0yyvG7a_phxos`QtS=jfJ0KEIigGK%3Vxpsv;RkLE(P z$If#CBPv>>v}I~`L}43w0ur#Yjt%RT4&52IKpwWw*j{`1UpuIWXDWrjGo~kr0+CL~ z(x0|NKs)!VGF_im^Z-*BWE8{BQCcjm1JI7qGzRFZLq*YwuE9&Qq(9QI4ePsMy;;&9 z;1J^5kk=ACF%nuL?Xl^;B>8gh2i;;?7Bo{HjFLI~`+|=Bg|YB#3!o!qEPM-N;n_9; z+Pszlb-k{CG}p=)9kcnVYEDIeE9#GBEBJQKsL-!2yfk~Y(gc;#dWm*W(vL@S3Fptc z#qmawOaL@po2Z8ivRe=wlm;*`bT#yj-6 z7C_Aa@W*Rz?$FO*Ec~}kfHtpXKwYcr|JB!?H7!htXUQ2lp}1bGX?D@7qD?#On|kW7 z2`6uL>CyRh%Q$Tw(Z7qrO=bMBcEsi@sk4HL_vy{qdM)U^F@u%A58M3h!;qFMX`4P> zRkpWScU9lcaj3`CvHAjw`)TIeA2ZQU+GqHY2v|`3cG%wO>t?KdTQjXm2_4^%0F%77 zMn{9O@O%rPW&rr(H8+5M0Au0JHUZkamH~CGu75Pw)Ub|9II!b#>BffL!DfTHu;0v( z`=RYcZ9aql8?29=Q&!W{S*p#{y0d+{**2~b9<0CFo`mPkWje zlS|%}J;z=sradEWJZ{ZvG}vG)ywC#ZNEr)n!C3g9O@KD9Wk6l8>mSY4LvRB#XpRZh zhJ~Y?O!r&v0=6iy{)lPr(ubW+`OINdUe%{0-$fi2iB$i~4m~gcXA7$W&rr(H8*$YD=-#5Zxf)+ zYZ*}2>iU26wI^8{+^1PHVDCzLJbhwGG2BZM%0x}6-MOwsdUWlAx_OM*KDaWH{!pCb z1_j1qU*gNxrv+wPWxq52w`6=&Jtg6ExqP1v?6+_Haor|~AyX;@bxpT@?Eg8ag?Npo zwMWSsRgxg!)n7q}2n+g{9tqhQlC#g@c+JV-&iRf8W8uXXKu5}0cmc-3cWnZ+c`XC# zdR_l$t{3VJ+swK?tmrNTfJGgTvrW;&gA40+GZ^mCO9?jwc!yp%PP_9g&FgRk4mtC< zPVUt)5zV4a*QsO5+WmVyI$QI_92Lut)}b@CP*Bsm zHBZzev;k~#qxKv-xa8?f9D`ge;1c>QsN?uyK=jZS;cM~O(?u}4pLYY9xq8B-Q5 z&pfMU*TkC$UP)`#SgkWo8}%wfzqh9GL$+t+fJ55yeLPP4wRcfx=Cx}^^E8e^Qy}YB zbbQ3gu$cZaUz-o68i)ho578}yQ0Gbm! z%v_z*(rGO+PPH*Aj@Nr*bRYgRgjm%yo&9RR8JqWo^k`h$cd9?FrKQ}Erq0%3v%S}y z9MBOdU4`pcURzdlNJNL=#!0$pS%=ge-<&2SG^FmJE=;JD)RF~l)2{8M%F$GG!UlCMKL73y6=lhZm3i;R@>>~4mm3x|X@LQyaB_$MEB zoQC3VDqEY`^masyu|-TL%!xC>Q-faQMAM7YB=SlOcT1H&kRE%)p+ER zC_$DJ;BJ((okA(3`vU4V&=rj;LM< zs=uVq=jg{N`gl+qM{VrJt8f$Yl4_cSxk|rM^qpe57U$%m{wvK#3NxA-1TWC}vKr|3 z!6eI5eU~rG1J9mv`<7ZCEc1RlbW&5Irnn^)FR)Y^IdEuizTJVIPw zazmIPGyEJ*Le8JHDCw(+_q1Qv>~nH)$R^~GfFHT^5(#5soc)imcES`TXld1nu?Az| z;1)nf%2)`%SU9syfHtpXKwYovAI)_aPerC(8Fgdijt6GI^aE7eFDA4Fa_bJAOIRmK zb~OExTCU43#2oxnI8N8xBf5@no*Ox!zN$8-Q#4EW_N&0775Yj+FIM%6oYBlSiT2SV zW&ip7VQ)~M8PHh;t(rC+Vsc)ql6px8A*C1dI<};T!a58>9Nh+VF%i89+cBXuR~6AW`Hs~sAr>QjUs5eB%qf|T0E$)=%Fouj+C*Gg|Tp1n*eQI%YeFG*FTzTO&Z{JJweu0R$mS3yaByS6mP-4wMUHC z>6;o{ql^qvzjyHF3>^=tsK=B0R?FLlvT}G>3>nk65vw^XG!a`gcf1*Q_=l3 zT}9?yMDO4+7|;NYRbgG4YA_ZKYXQ^@0DrvZW>eG;W8vC10ouHl0d=jee>B&g455m; zF|Tim%8(UE%M^}uz}uCTuviT1;FK2W*5%#0IHfDd_GJ;usI-nQWJ;H?-^ZY0^v^ z9rMk9!g#u@2l4+e+Xdy)toEq5P4p<6D>9WxBZX!LnW3Tule#CM1qStASsQoj-n0qc z&ler^^CkAVi1)J&YGH%Ty!Gp_E=uctC`lxo)*Fn4!&?9yDP!R$7z=l`3DD-X45;gM z{iC@s&HE&;aco=%weO(L85Gl&{Y%;}p~t(lV2{=wXIcU;uMc@1avMS<8_=G4EuYZp z^C~*Ow(QUVPQ^tJO)*J7fphQ}=4$a$S#)3X8JTx&%2 zZqlZX8x8BTehroNQA8ggUAkkWCYYA}|qtk@$^(|Ct3|i4Ul=X1HVWZi)lYD98zaMny z5>t}ZE2jK~%a%@jgu2=T9~M=MT%ucyBaFH&X*s^mU)%tEC;6hDRgx!7LIBG)C>TByyoT(egFPRdag}?Hm_wsU90OK&9xFenSf3H=c6q!tn2%AaKDme zXVx#@tX&nZo< zSq7f#veWgoBYx#>Q`2p@*+g}9z`fj+QaU;AW7QO12t|KA??t2!1p<>CLSZ_rT-%%{ z^w<_aN6T1v55~fqZ348pmjQLXu74~S#2)$p-qh zNFLxSBpk;~;=q|4HDR!a^~Z$H=u|MN=XrbNRUX#SBl=HXd)0J9z#24+tbgJ$#6zBj z08|8!A_!netE4@%+bCk!R+6*!3EC;;6Rd0!+CQc)Y4yg~9VHqbgAa1q;pHFJdL15! zGvIqY?`}qas=-(|t_9H1G8W#1vG9JI0B!DNKwYovZ_^6mX3(Prdwl=hzU~CiACPmV zwfB%l0-9%nKA+bT;H?6hNu0-QO`feiXt|RrTh>#IT41(E#jJc_*giWlW(I0@%vk(I6L9LP2vm<&mtpmtP z9;d_v{n%s0SryG!*3nB$C*K;r~FSDgBTzWEBc1Xw{I;jOqHY>9~Jp1V9RK zNvDsJS5n=Xu{%A-aHh8xG!F3$D1V)j0-B8pD7|r30lhYo=Y7-3;^?>`} zs=3^Oqz=t!321(G8~xEn-Y?tru;Yn+RF*?~>b?q4ORrGH9z+nyJZxhmk)dpi>LB6!7{`WUBTE;>@jD>xs zwTH3L+{-n)Ue`aCYg&WDvs6xhBi^WJHQ$3db=1|@rO!KkH)+2ni36cGQA$<4FjFfG>YRw*kl0K?b(n}p9MnZ= zi1-zvqQlw%uRq8|Lt3k3CMO4^SL^yFZd?0BY1+f;$32YvP`FR{X3)sxean>xtJP$~ zV_~5dK+OQ~kJp@hLpxzC9NZ>An|m2h*XsJma_w2P`vJNVLeTaB)12~IU6$A1Yi__| zHiZuNq%LQj9}0DZ#N=-4ug{I?*zvl2K7G)mdF!fW^umZc_KW<&(bfdZv+!7`o2l|V z&g3Ms)bw$-(UuQtmu}q=)!TVz#jcXDAJJC>dI<7Mk6j$!DCxDjHKbcLnBJF1^g*Y7 zO6eUGi#07()7}IvRrONce{5zfEZhR9836wAniD{yFcyw#6QIq#45({${cT#DX$g8b zrcdL$^<$S3T{;lk|DbJBz9{Lol70;8sHCPa^&n}T9G0vSKkLn(#UBaA3pXGjCDJZ$ zj}+$DFOgP;u!ROiSvw;nIC zDg4Lk`U%5NKA-xuXarj48QP;@YrbFlwKE(Q+)E-lxTyCC z_&_oo*E}7X0IzSBjxK5wf`H@tHlyv+4ySuBr|mPQByGeOIboMhcHAweXG%_0D@bow z9HsPZQVTN`W$qT&;&2{v4&S+}OTSB53_e%Mu>$J@=%Ouvj+U`d0?^aj1ZZtl1qMr!-CDR9;1>au)U91Jr(J~e? zFc!{f6QIq#45;gM{cTz`4nJWf`*lgbwty+k1BKMOthEE0MFs>Jpt#e(G3Yj?J0SK< zJ4ESdOoxJ=M?c;$0mHaHoHL>5>#FTFKAx?I3OYS*J?}E8hRH4M@X6<2v(#VL;^Vbv zN((j`R)3ZLzyU0xwIW(NtiQ#zXVjb)c*zT-w0~ToUp*EUZvm7J$gfEY{D$V_8#(}E z;o>#{+T6>4x?a~mmJ22I;UyLFx+bfO@>;c^zvgstRUhLc)QeN9o`~uwzMDZkn$qUI zIsn7@AskY=j5-os^ma#Am#==!?0<^i80d>8ue=OI71ndVF(?{vu3 zU3#F`XCB^do5A>kao3>@;?Dm)Wr8l8OQ)xNXFRxI@zKgz%{QXbpx)1z?Qn5am?5l@ zbL;i~svfH9bd*X6OXGTrs18OjBqc>0193{m62+H0^+}(Nd9gft4(l*7DGE;f38(y> zMf-3IukMn*tY~k(*9jdQZZH;p(*md&0RHislPB~?7z;PH3DD+V2Gq5>{;^zi)rR2F z4QP$&>YJ$_acnD^#(4(DQw_@HMg7`oUR^eqVf_jQbx>P}EOp^*(@Q37kJZ_4N>g)= zI$C;IXW*5Q)QkN2rJY8~OZ$kRj^NnCfEBOuoaV3E{rHK9c7>u)*1b_35^;9kM|pi6 z_dJwmww$w}&DxzxVPsvj@l+z^@A&zg3gfnUoJUGm8jOV{TL2v`W8pg(3wN{$(B@tS z)b+alv0Q_E-B8WvRLJU_l3r{`M5mPWE_eTs&#TXO>dp>FV%^`Ri#oM#T^|o?{FV?)PQz=L7spa9 zfR2{2@CA&8``ZL)b1wtxdR_lmu9NVcPOEoNs}E`t8l|cxRJ8@_vy%Q&^QijCu-}si z0}l+E%mdT%AcE|B6`Y{xc+HP1GBN9Q9Y3Tir|G<@dUvLFC^!jg9qt_=OGm#!?~ffT zvU&`TZ~}}uNc1{Zv+YHby+( zLR29BEb6J;>tu`q=xD>{ZRp{^C*R7p;^<7Fc>N;o;Zy4=B z%P3-TH)9b*PiNKiWlZ<8K*@+(cH1FpAqv0?T>va>0fnEs~6`MBi$X;USW+7 z>fxZBw1295+J1l>^!#m1zYpu{utHI@g1ajX#=_DqfSLi|AFnz2hQ149;n_9;+T6>4 zx>naemg}vu8+2!J-zNj2>|^H}4Kv#*IbYrnPw48D)~oBVfbQ>A61ErtvT4nP8YJCB zqI$RbasKaeM!*`d_y)9V(MdXw26aqc(`g`}*v0jTUO~Z~`Tfhfm|1pCvlymC8$5)7 zZmKC$G%XNT=YA=t0Cxv%YCIw6=IwG-O)cv;++xCx0;h*Ov1TgEik!N6LYHX)bhM0x zH()Hh+$KPqdl^vI>-xuXZNL;VV@A-iY2`CE(A#E2FQsi-J`aX_5EYn0;xix7xP%5` z`VIazxMXnF9jA}R>)2i`oYVyk&o^8$rv9vTf7Gh8-ITypV@=XsE1IvOKXBOz`#5w& z&c4UT;GaO7qHN(IF7*6G;dpaVLeF;URT4cgy^-fB*K$`vfQD6LK!1&B)0%!)GFu+; zK31IQU$y|yWm^CpEo0&DFc$vNCP15e8Bo{j`p0tp0q2UKw#@71={oplT{qoi%l&dX zxTdcX`fI;_=+^_?S{wI+KD&aymhlDi_`JP_xJa%}AE{6Euw$5>8qhY=by-@ga|{Oh zpzSv)Hx*Mb?$q@O!w+8Cv zvQN2>cWUl#?Nhhy_Fw4y$F*3k!B|+X1<;fD1^LHoPF}gsKDN6)XcM5#y$q;pb^T+x zW>=l5fnVav4eQ0jQ29xJ%DN9g?{w1+r3ndzRU6TU6SQrgQ+EmaT%_nLA*UV2B3uc7 zH(r}hG>`h;8Tx5JD8YFl|6I{FRU70^CcCh#<$^X+I56uFAD%4ed(T&e-1wI+6OE20 zOqN(}`ca*lR@K}^r%%?HqH)t7dY)lgf?a@{H_Ji(J~euhq3Tk zn*eR@Wk6l8>mSSYKvs`tve{N7?9v_` zS{mnb0A0QXP%{Ah<25Hw=z}m8zG)Mn&Akk$Yjyo&xvq{nARB+M6Q^rrnr08#G(J1q zjDqEH@1Lm0=hK9_waqwFI>B`DSz2m_R?F&DY;SvX);yXpQQu**n$=fR$!yfS8T~P; z=RmNg#gG{$v}WAu&h3g?Z$w87*ps{?=E>K!B^?+tvv+3A&3p`68C#=8Dnv9C)TdQ% zQQ*=ACI(^w3+j(*M7KYd z($6(5Frc$XY{dz^VYRaDYc`DAd2HdDbAearaH`#{Wm{pBUAqM>1#BMa`tpQ+*#f8; z0RHislP5F^V`1Mm0ovTlfVx)KKbGqhQgkusBeHo|fg!Clth+{Z1JXiVXcC&-tIhhg zU7z;s*NT0Pf!Hae>+uH9>yCo%4XU$K=XB{`5f9Y3z3wpR_vikw$Y{a`b!AoemGxvu z<5QlF?Nrsj%6h1*x3ea?;1c%L1Wk_Wf|;O*NHX1+z!p_Gd_01 z>dsoTa8N;S5t@wMP+XfQ&9uBHraz~2c)w2T*Tzu?vRs?fr(qpGPPdO&4=Q`yz(`y| zwavwogJ{NxqwD;zpsR;fN6rv(YTi?6ouAbL6`y|p9#l2pm7q}RR3gg>9d%Dn3GQ8E}TzzdIX@g>PB_9W7%a z4P)WNHUZk)%YeFG*FTnP8-CB|7Y23hY(-~l`$6q7qLb+7B(-awmSQB@r^+}T!}+sU zUv+4EdN>GS_&;^id%lP(meAuN?T@f!P`k|5&g4Fqv|35q!zZMzgp>*AoSMnf_eLDW z4s~I-0Ux4@UHVIpPA}`=yv_^ik&wm^n!Y|T!)n`xaJ-!&6n4wC2q`b)Ss6PYa*neS((C&P1CW(yg7!;HQczit8}!>yXby7XqN=(oVEaByR@dxs(%BPP9h9@1&GWrlkN`4d^)biH zLA_?Q{qMA<=k-WVzsYM}I0kiJDt9N1rKDrg9M!FL%As)xYVV*f2nYjRZ73<)Wb=) z?!PT+zPjE|=#);o&F~T)N5lh-ql{(@>Ndha3G%4=P7xp%siqI=ZonRm__}UcF$(Sj z@uQ1seL7KL-;9`>9Qm_*N(e5tis|sQp2LUqqW z%MHfDzgqwuEo0$Z7z|e0wPdCk9lrF zuff|)I%IhTzN$UWbXXu`^HqdJGkY~(kMryfL{c3vm3qsWN{#3chGJZBg1QIc4AzTb zr!rlFE5eXI%-GfKEFuW8sX>4iwOVkYif&>SL%Tk%$#8uuI)+yfQYHqVnBfJrX~PVk zZZNbl5)2RRwAz;j*TzBVKP`Zcma*_J7z;PG3DD+V2GsSs{;^zxFhjBGDqGmKa6z{) z7sJyA>%WRhoO!UVh$ln(4L6WEM}A6ft%Eo0$h7z=l{3DD+V2GsSs{;^#D zY-mQ{@VpJbJ#8m9!j;B1e8TzNRxwxXv6Q>3A>X5=fDka z?%1z0q>E>3Hyr=?A_p~B+#LYgzl#uf*X7~(5KeJJnoN5(Wu?PT1&t$9DX!uyZ86jH z>yLXq?A|S-t160y^h#CV6*Ut*X;M4$nWnV@r>L%*i6IVaJ~bE%lUo2CEo0$b7z+=y z3DD+V2GsSs{{MqT_RVhHS~OwXy`h|DGQNa5!sIKZRKh8r7X|biSV==VwCWV*RZ{jm zKRn}a>m3m-iNk7M#|>(`tj*^+^e%(4o*r^i#}Lj^(%<3qR_$E+fK6{sscC91VlaZo)Oo)U3Rc}A)~iS3SgB( z@Os{1&8MbxRi}0i>vOX9s`@glTj}8=A}(voxK4mh|EtHsPc49&0pK66IXUIN1Y_a3 zHUZk)%YeF8*FTnvgXr@$tzFcWX+1uqoyq6T=$yQVp${?C?9^q@ih7-U&HxL={ClwF z3!a1g(4`IfwP>IA?^ZfudiLD2l%JtD2Xs3zNpQ47&VpI0s32iXH1<>arL1p8oC`xw z?Bl8 z#}^mI9l4~CY8S8p!l_{ey7XMP_UqD_QO~=H0JxU}R$8ZH0oQ9@(5`uHPoyB{WO5uD z)<#cO9PTqUs}*zlGNQ*4Di^dG>CaKyp1@P$b-hcEMmjtkU%cub@_|XsE^CL3{g7#t zJr}ZD9q(|YE{G|%45D6a0d%yCg~wnlywxT^n|m2h*X#Pna?#b{EP7jU?4(hYI3S|Wdb|IoGqPsivQOu*#KM`gZ&^maI1)T7UN_75) zQRfdtQG{$YkLk+oMLm$$ca4tU^q3y*XfPJ0v;aC<#=-+I7Cvkfpv}DusOxq8W4WF{ z{LUAutQCs7oB>K>j>$9oNLgJ0eV#Otpbrjb#O?I=0yg{~&g(RU44v9UR&;(Zt?P!Lgx;y$o2?mEORh4gdK!Q3Yi9K%x|a5Ua=WT*w9?6&}F27rIO=HwfC z7mS6^+XQHHF9YgYUH@1v&KN7?^?q9K4!O}fgMY>LwxmNNrs1s?RUu$!D*WF-@bwP8 z64XjHJxXwMr#pdr#`Q`>M+f}g{tQP=8o3Cod+dFkOxwU@7oyD&GBgzT+=Irab<5AX zxuoAA`489yZtsXX!uoyD1{%D0F-%^IE`3bLH6nn|Oe!95BXKv_fKfZn{SFRHL_5>h^#A@wM$1@;z*yLEMtc|w&AnW+>vjEOxn|e&eok)=>ckn^cdBlmf)lXv z!x~1cJwcauYnQP88PZL0-Ah<=(t>L+T?P3GbXk~16YQGXS=Ufj>o6lLI~R}t%ETA#7*4Ltx8HamX%|>vMo1ZK^%t5Ze737X;14K#4;g|0Pes93Egi|e+lUD zsC%~6pb6Mm{}BO`i|V&Q?HSZ{p$22&k`_SC0Pv63oIIg*0NuS!fHwCspsv;RkL9`@ z!F5{a4(YieEs@o`d1cW0aeCn(8aMr8p^!GkawM)ox4!6739Ck^2+%3ZdZ((lQHOOp zCFha4&dKS%5$#U{5ZXyu$5gd#*m2A}WkhS)XEmo{S~K!iTO2|@^ zw|gfNr|avpV9ad>XnUc09hb5*z(TXlOmL*u# zF}MZd!V&i|X(1xrF;(bvJ_rob-JlnS-P(mMKS(Dqp>w$1#Ox2iz~z~mZlp6=whnPU zzM+@306JR6!U&9oL)!#sb1wtxdR_lmF1*1z@HZGy$1E*3RTHM^4x?a~mmWxi&)=1+={A7{N@O@Qp zk(L$oonqO>p!0@^wPRn=e(%#=<1OcW9IsA3pwcD;4$Dmj`f~Ue!7aIc*r|4O16F2A zQt~rMe)oDwJyz2TCH=x#2>U6FYXVvpcigI9q|5N%MGl(#Q^@@rtC9@c{V=f9>xT+ssPXc-GrU@V-}CP15e8Bo{j`p0siG?_Z0 z;E;-gnlhxL(!TX?j4C0dzjbMHpC0ShTpdbw>iaG&pVImv{ki7Y-g4S1)L9B4Rtu z(M8fYZ_y6PsAK5N?-6j8)*6J&MjY95BO%U6Dw)+*bzWo4sw-OnH3PsuUUPCN`T@qm z8Epczxt9TTt*(D8*S{mWp{i(FOAhIGv$gCrZ9dC@-Wt`8TriWmrAv49Yb%n|lMX#c zp}>js_OzqTZlz7sskvf00oRM1&dliPoGmYcL9HLKm(i;QJzBAW2JH728kGC9qwYIl zxbbdKyOGyiF*)-otUgPgs_z%EYt1;gjah3{KMLyekYkn34{CB;-;rHdRE$W|F8|kW z{MBROsun=a0Pv63oB;X_jD_>s1ZZKI$v2b+@prd6hd=6vb(l!Cw+{=KvUe`aS3lH0Zp3Ybl zPmual0$GN1J3Q);ZtrmOcKL2yz~kAi-H;YW4LVLit3gG8NRaXid8k9jMYR-t+?+m` zrHE<4VdUbfsq+g^@*F|mIhmY$PxFL1uayZo)OY%d|ma2Mw z*qOhNaR{v2D4Y2j`WHmUzoof>7Ne}WiA94B!91N)?lmod^4Hd20r(d*Cr{`{Fcz+9 z6QIq#45;gM{bRX~hKp5EeOQ%QT5z_`pRLqv^$@8O)oOj(I;Q6!enhoUj~-6w?tnfE z=ncFPIK;xq>~O>9!lX7L5dbE9M$@u7yr>I8ey(vb;-fsN=F!{l1Lm0o@quI-9#mgZ zcbD{CR3pqoYj%BPE>Oa$jK)-4n*{W5PG=NsEJh0#J8L?_3xu^K4ik;1{<2Oj+o4A| zl>z9rEr5=evG5Lzg`3+1Xmc+E>Uv%OSgzr^)~c&gbHpTWw5YaGyDUnuV8xTiC#$~f zXBcG1-6jgtSco~h^Szq8H0y+|2P`Cf^?;a-jmi9tF5*@>|B>8DG(b%Gq@IbnJHgTS zt*oEln?_8?d^F~(&@7H#5sQf5D{0xZ4lU^WnhCv3X4iqJ-|IA`AD9}1bRg0vgmTCX z$<9mZPx!L(p9AQ1Er5=evG6*Kg}d4WXmc+E>Uv%O|G|Rx^Due`j;TcpJQ=|dloN-A z(xZDCjfEa!){DArMDu4Iyv03*Y0GhGEikNANOr&#utN(ls>^A^M#qol{1Ig>8q>F( zx)(|bPd90Iow|$8;h_GV)dR$Qq_kR02f}R#XsZrwiX6CTA6MSkJBD@Luc;8%w*Wd? z#=?s*79MO9pv}DusOxq8W4Tapug&}-r)5U8?+krBMc)jXH~RsEXVOy8N|TJ!p=FTg z)9B;+iSH0IHF%r-x^iJBqm75CNvo%zowE7~LSR{6;AnwMRaUWz+jOfjjAP`DsG-qL z$4PbFfQ?Z0#uP5Djrr6P|B=tG~W#QD0_QEcXep3PHozwXE-m_H7jEZ%8xU28gsOY zwhh>u5z6JR-S)#_kox-(JvK`(VhtD9zaV55^-f&Z^ja4B%8-paZVc$6vNkB&bs0lH z1_W;qfm^p>5ySmZUI*lSMp}@;I!7|{paJy87C=YKSa=l1!t-qcw7Hi7b-k{CEZ6x} z9fmDfR?&yZf>?9)TNN_RRX2a`<1oA}JUi?WP&V?v$X`nf}U zC3R*73(^cMYkk6Du{y`81}XwZ)yxb z$#JM^ej4n|+DZoKUrfG|)&t(oyOcm}5+s>WC$$gEUOGhsc23x~)0&HUvPx#OD}z_A zqL|*4{oQ2RE<{WrZ5Q>hU`2YozotUm+ydxm84Gv9Sa`clfHwCspsv^TkL5zUw*-`r zf_CHAPEUqhY<~GAyAc1OqOQ8d^^-ZAbZNyNEeSsphwu??G@|ctz=-RN9{oJtB9~)f z29D^aS^9p4KEnZ$TLzXFJcc-fbve=F(Z&JzrUCOgS52B#_;OyaVrhlgzoM;YYNeu^ z@DTiRMJ*7}B@p$KI-#xyDyCawgmpnl&yw;(d{38dkLotM&^)2Hv;b-bfPcK^qCoe4`A*;W18dTu-0gh_$y)^aKJ zp(QM8d1wiFREF9v>1HhERR6?PBd*P)3KF)AE-l*AcwE(Y*!>IUkNs5em1k17jw>|U zhGY}a)}w{UeYQs>=HN4(RmW)c&4M;dI}L3T9KW(jELU`Clej;x8;7)JOs_@sCS>fI z4pW1%u>QeF)BgJ#87*U>cKh!9NwtTu(A>*4yI$8nma9e|Z$Ov*q6L1^nbWoSu-0RU zIiy=rFvay!m)7jo?kGe1RpK3+)Hh+Ri{7)Uy%M@{oZjo#;VI3>VHkZ%PV=R;8!^F{ ztQP#@eJP}~`JOTlg=Z_<7yqfM&Y->`v#F8n056Dx%{~k_F$AEk#1S{7HMr5#w78T+ z08YSnM2Uzk2O%mHX$gisSM4dOi@YA5&<$DuH3PsuUUTw<7GNyw)FwcidrhK7*XsJm za!t=EHLP_;bQ>bUymlmvqvS!x6%o6jte#Y%M|+J|q|?8lmAC`e^v}FjNUOhQ3!|=t zPbP1LY#($JGn$NvyDL|fqHRlSqUL+Yl}QI+!P(oi;8=lqN?If6*e-oY{JHS$C5)hJGZa<;LlbKIghlg4~700eYpR zjv#6f7jYbRH5q8&mX>CRbG;t*NH7 zOS&P{U@UCZ0_bQN3o~IX?B6Cpn|n4$8zzRdm*b$26fXky*)*h>2NW$;w()p z=|c?t`t(M^mWdyC>-Y(}2Le2UW(>q4x(dIk9&OyGZ+e{MvUf#4j%Yi=C>fNORKYjC zq-k{xN3|vX{}uIDv~E$~puXpni>)7it%yKLm6e{rdZ=jsgd>6~2dz}X$tr{0O2qWD zYihRld?My)8cH`_x#u=WhBLSg@r3@l1<=tl7Jh-Ta9EoFZSFM*6kV_DAIlXgxI5Rw z<#AYhr1g)CR?X?p+#e%4G@1kA*+Jt4!QF&+3Npq(QPkA;m}039u3;Xg1Ij%gF1 z&AldpqU&}2W4Vywe>bSX*{Tib?z9TXBC1*lG8zn6RQBC^saxkHwN%V4nxpU}59;-Z z7EAh2^hH?Zy3I+>;uRg#ZCn^<+rByMiJy-5t|E(04azFtm$d6+RZ#S)FDqFrMR@vvtt~&P}m2ujwB+ob!Zk z(gNsc84F+EySq+q6QIq#CV`^sb^T+xUcg3}K~+h|6Izs2Xtq|LuBo%^Z}Uh@EB9KI z^j1v2i`$3%pp-7GsSoC-6iaF?c(zzrU|=3|no?nwlk67B=-#T%A^kI?>td=BqZ72H z$wfu;6IQQSti%}ZH&N{Yn}xJ)R4w=|l(b;cNwWNR7s10EuM7A50;)8?J%tM3l`CH^u3e!E#ifcLnNn37Y!;k zpf@YNZgB5-tm0A2aJPbG{c*^#5l2S-2Qv@Nd`8}NJyg-v5lhlwnjMY(W=_w-&ktGW zhzHAg__y$cZq@>*836wAnv-kGhcFh-Zxf)+y(UqkYjyo&xiEhJ{jmNypnhD(^EQ17 zR~%VBJ!%EYHAw}#v>H}>Bpiiw1pObb6%hXtdN-->p+kplZ~jZg4p9}Xs%Pt#S=zdB zql`uDoG<{hnuLy+CfD7wy`ZRz6M6_CL)q=4duTNT4fKfxZA%yd@!UmSSJWjnTc#{3 zyEpJ+pAa!08xG;A{2}2s&)c3yn|N6O-Mj_R(J~g^hOuy2n*eR@H3<}5uj?PnwW%Bu zN52Th_1Pnu&iHazs{?Uf=Y+H>v(BVGk7^S{@%RrX48*vseH7t2_jLL6`+kF(!tcMH z){cXEChh-MjODLlyhY!YC?C4GRb7Y%AFn_3{s{Ifx<8>AF)hYSGoTpBp+)V~;D7Fi zOF8f4VI7&%`(e$MGPm&ahPBS05z&P7Pux^!B+@RXYyjP&1<=tl7G8s~aBZ6aZSFM* z6kV_DZ}(cFQ^{^!7S`sx@zS~|qc@6vH!_YqF0My9bxleig%o4rS=57hr?fL4$w&{> zbPfy?|IK}&9#xeAi zV1y!h3+Wuxu|-WH%_pi*%)ZTLENs~V=x7-WFTz;3rA>e~_nHKXuGjUCY&9M6Qsdv$y`3Zi3{a* z{-AF_t5w}L3`P_zX?9jm5%UqzH<+aqY+HS?>}&Ks2CALP_UZJx_8Qc}WqpF!EvQ(| zb5HDy3UwV3(_az}K07&RBa~g~MN~ZWSq}es_Ql2uK(}fEbhM0xr(rDI-6lYrdrbmG z*X#Pna$zigX+r-g`x(J?>Q;O$rfIKV%mb+f^mwlxAE&#!#6x;~j}}Vkv#fqQOG_8j znbh4q8tm4=J-WBkG_WrRb>S4nW@`g7?&U+&dYqRMIwImna$Zz_9H+6(si}*GUeJCf zgAJb8?`sO;Bv$g>XW7OG6;oD*r@ip~VhUi+$ss(b$D^E;bQ*2skoX&0JJet-Y~2Fr zXc-HSJhHnUY7?N%y(WR8>vjEOxv&;lwQi5EjZs?LYzb+o$$)AYM_ZNRU@#=;#i7G7u*pv}D|fuiem{bRY{Fq6sh zitJc|(10i9p(%RpXPt}>6`wF(vq@)}UDlx^#%r5Si?1IW)@~@vxZNl8=T2?i<$uE% z`r83rGE+aKbwN#E6J1|5-+-&l)p&TKj6hOawbs6yK__Fin(YK}CF1j1Ea~XHeyM7? zfL4TER@6c`5JuFS@Hy}|Wo=v04-L}V-Zia6_$*Oq0XOQm0?_SR039u3;U*XhueAx# z=3bLP(e=9iv0P`s3=Qk=A$^w9VzadCOeJUOgAwt@%aU?VD0aVkChE!_OW+qS>fb}! zVunApXa?uvBGY9l6M|fB7UU%{TfylX<9ckUq5DP)S}|xr;%WhFLbpW!i&%SDOVWWS zXn=NKSaVM_A%DuC+jIOPUo zVfz+9PvIBjAFnxSEL;O);hi=C+T3drHM&;UKbC8xXb);EhR&O=tJ0c;Wi*ywxR?^+ z1cN%N4f$rpHHFDbhyIiBIFdB0>v8^1>Y}91jwwbt4T=4pJW9iE8=jWeGvq zC0$t6nYeMrY{>aN(=ixdb@k;eafxcEXvi_RT=X_6-&Mf;< zo|-Mkyk@rcAYFn=akwSl0k?l*D9ehMJPYIO`uD0WGOnqpBdStLpF=OCiIH*Q_Tx!s z#qzS{+2p89WF8=1ks!HoeAI^I-AR~>w5#zLh9(9tp$hG8sh(-xuXF~Z2q)ax^J*06TZYxTO;PugpdrxK#wR*b;Twt*> zUiWus!y)w!s2;O7qbt1!0@9uw!uZgzIYYFm5MqPSBiv|>egO;+N#g3o=veH z3i*sm#MNyW0}_zb>8S3jBGzlaUeZcw{b!aQnWcph^Ok+AeU!*%BrtI;PnS=+gjrj_ zG~kDaon5$1ME`+<4I!bTo?*Z3w}?5UavZUGRiCJ*hkcHHGNR2=daglHn~WbIM8vus zToIz$W1-dp=x7-WKf_qqvrT|D_cEZa*Y%I(x;~?u@D3{LYO+>~4l57BP9M}eu!fL) zcI(q#trO3~a8OQnT{mX5(4arccXG$9t5(yq z1wD|l0b_r_e5AYTHicV@gKkb48oV8LV#MNp{j5D&Nkn5FN6Y%Kim#=-itnJ$Pc%=D zhErOhs;g;D@D!8WjX7kg!C0ub06JR6!oOiG9MC2}n|m2h*X#PnaxGEd|0`Oi5ry;d zi0y^{+@)8$6%A{nnuG5dP#!3K!Xc#Q`v~p0ZLkPSDc7OTQd)>sPfdI0v`yNAwf)KO zK&UdPW6OG_(Y3oe=dh2*BTfvtwxWaa66EipOA+kH2ULmaym@sKu~{?q4&Fo&{k^7} zQARL`3FwBPHlw>pgnG!cY*Z3~qMgKeWB1Wzg3HYlYQnXDIbNe>EPMrH;qW#A+T6=E zyI$8nmg^C|L}e|6L1NJouzNV8Y9k*h)(L# zaosv2sd>q_s%f{1@&$c9sI_M5p^Ua-0Ef1vWE*PY>`CaJ4x_K)?<{?xhY?K-YKee8 z=+Vr$Ge(i^Zx*%>)p!&xaK9_sj#PJS7MQJs^<$?#>^2?utr5LeP>D#yu+2HmSO~NL zI$FlUr!W?dZ4;o)y$q=9b^T+x-Yr>5AH@R!zfE{SxRhXrJ7i2h4tf&0Os^)4)5qBR zciRke)x7gr9vIOXxIQvy?$Ymjby-p&LdtSFFY5&DxiWg3e+&*uK+Etyi``JjXQUIc zbL3W1);}>^t+=ayGEZO9aT0O(3^iQ@6+iBnt(^**8xz8yKc>IbbyiBX4&BEshRh}& zPufrc6UjCL&|nLoqh&070At~lHUZk)%YeFG*FTo)6iBv%T6{?7WwZ$0p132imaS`# zigt*ZGz(>D9o}z^Y~Q;`=&0Mj8cxy5n8iUIf!7Do3FapzMOjlTgHdhV;LQKAp}(dh z1Z^Hedp>+<&=w{`B&R!~X7nwY)m#*5J6o@h(U=90y5dW10tprIB(N6T1v3&z4(Z348pmjQLXu751oF#+4W<9M)T(R#qc z3A-OuM_%`0Zh*-QmxWFp)~9O|x}~DctLAzwf)Y?l@DlFS37tAQX0FI7S^XR1`kZzh zu^NJ`Z6=!=;};jwHuzwWTNgI0htusTY0;{abXK7CmvS5)s*1-;j`_wjXQ#3@&-wk& zM3pP&fgzhY+=xn)_5!XfjrsVy5uM#>U*(MfG~5E{Xc-Hy!dSSVO@KD{GN7*4^^fIR z5({xgU08)9H^}Ne;z0)-(C}17+cM@zsf^`mpH`fpKlIqEEsGz*p!P{?kP}WqoA>IV zUai=vFucC9&Pi*TVeOc;TlMDwZ4-2|WRh4P$WSx`t2&{m8wu#CxWSIs-y1}QhP4(J z3N$nbz~c5wyj|5g#1+dnbtDfs-p5T6o7kZAFB;V@71PqpSctR$I$FlU3osTg zZxf)+y$q=9b^T+xxDO_0D~p7o!wSK1Py%M_xW<+6LYzi8nGlCv_ctp-05>`a;y+^A zVS;Y!vkercQg@S-UC|P0otoA&SYa^Xs;VQXeWO|?>c0vym%l0Mhmayc+pS>tN0!;# zNr(KdfQ3<~`Af)1FT>n8p!*_@T;HW+V#8|zC9p=1Iv$$uJF|%|E6$^YluK*zj9(cG z(H1~Q%UE~{#=>=N0<^i80d>8ue~i~N(!4e0bNcOUC8lcW=~{_{4LOfoLVL7*ukP&A zDjk}NLV^5xY&IL@leg*3cIuHHZOY>r(zud4=Uk^Mb(Bhepm;k^$szSgBm}g zORHL|LpSuJ0sdkAJyC`+CF7f@3fMhOFOmzX%b3a&bMC|O*lbrb|zf~ zo@?0hA=|{QhDR2;lOYXNtyZ(gLc9gg(J~h9g|To?n*eR@Wk6l8>mSR7qs0T5|B$9M ztObX3M@A18ET+B{fqcT2x%?X6t(pUNa#B%ji=aH_3t#Q%h zy(P$+q$5F`JrMx#Er~uS47#ApBi7NAAi(?llcZVPG~0QD@Ix zcEHo$0@{r>RF|e9Jk0CQ1?`XReAK>GynfG(>aRGA0cfHH(9tp$Zilh(aGL;a?qxt- zuj?QC^{2W%;EXz30WFjwJ>gqU$yYv;8PT^ z3s1EP(B@tS)b+alv0Sf8A63l4nwhsD{QX1v^RTWTG+~Ta=%I0Y$aMCqhM-Pt=%ti3^?$`yrD)vOO`F%Z zxtx)-T#qhEnCbTiWHp%8qhYM;#j1XX9ZFG~6Z0L`mkG~wiZ%U-25;S|vUnnGMTfuK zU@W9s039u3;c6HQFSZHL=3WNW^}7DCTu@3N*^<1|Gve{|+gV+~Ad>cI%+ZALh)*eZ zmK=<}Y=_1Zsa&^#+b`tr^jd_A{pNF!5CV?pc$;r%R@2i?B}j36jp>P`b-P-b zrj-lo9nwI~4f#70I<>4F>Hf{FpZo2$anf|=L=_V!V;`{u@lG^8zX zb4Afl3yTy>MxucRW1*u3P%{Ah;}vN6*T%p7|NNI+{ZbeUueS-%=3WNWwYvVXTzyfk z9MPqS__)>$>8)v6^%o5F-Cy0aN4JgFJLB}pI4zyh4H(+w^%soa^E$kwFQWRkR|`$h zCKH?<3z6cJjQ%>P+h^$F>6$lf3d#{dUlmb;&&OjP^`FghL+1U)F-I!vfqN+FriYt7f%2(;wdL_#`t8k7*;UuJ9-C&|iX1BBu596pqRXn_92UH}r|4cMjqEUdF8~$EQ+a|=E zlT+*S1#?<%!HO!c4RY2p{63<2qq-oa{bFv~ZBDz1Mtt)N|GmgUv%OSS~uTa1t;XCZ=KEi1SwN zD(L>Kid9X7XvaVe?-Aa6T<~K$ET~hWS{#d#y6%L4SJJt(YU2*#nG#R|-4jyaoWt3l z&+6o;-X+>KZ~pDa_(zd(1|=%zptReukjm>3vP5G#V}cIkO`G!&XKK{xyu`%HXqUY9$Dp1g4bF|- znv&3xG;mPhj_41=mS8`Zv?7>J-E7!m*l9vYD7b-7&;vuUR7nSCeE!*Eq8~l1;T~w* zI=9524CYBxyH@pcNq1p671h!e=ea=LhiL{G8@AH#V)kda2>lv>KGy>1Xc-Id!&o?? zO@KD{GN7*4_5W|z?pgJc&|0t@X*x|dEM*dUFd{tZ_$+dT+?jmOgf8aeON$R-OG4Ll zm`Q@cS2(BlhBPs)w~Ok4XB#ve(5<5(AA=XF=-6RJ%9;p~j}-5;whQX8E|1L4Aq|Ai z60cuEAMm6qIWQ5*#C}1ukNSBj5 zn|m2h*X#Pna^bf3p!_J^A9nB!U#__e7T3>P)%tY@mZ3C6?S(L(2js%K6+;j|rZK^+ zns4xGMT>@YQ$lNp)rF3};#=xF87*4Tn<1SVH1pvixZD*RHZpZ(Jl9pyym$k0+)eug zTk5g!aO!|IE9ymTjT3sD?`A>I)|HIFY_f0X!8qH*H5ZNFf?F1+V8lT#TfMmSQSFX)u8-VIoU`w||-c}*m4V}@#3zwXe~0KCr7-D7Iz9UL|yAg}do+chErMLK8R%|1-Mo_=0=#NEn zxz{N9BC}G!DTJqEEZ?QK>smEqsnkCLx;S88)_p6A)wP6lUrl$^v|>n?rgQ)aGC{qN zbL3V!rXUhXUb!!}0BQz+f4t`8l>0o4g|piPXmc+E>RMg@|8Oy+CS|F+=)~ktQQcza z)u~In>~_m#b3H`6Os@I0m+e%uCbqY|I-p-)rtCot=koy0w==cofW9th!+>q8KY%@0 zRVbk|I!*UlI%BIM#^rYvod&|y^(IUh7;)xxSxxK5bu&GDnHYaV!T&{~VQ^ahB&u(^ zd~Dt-t+VU4$c7&LOs>ILc&P=@(J~gEgt2g8n*eR@Wk6l8>mSR-|0bxN6L2FPALHK- z=?~l?N%JIV8|Jh0bx6~@wA}<<(yP;Pv}n9+AyFe#d7)@;+n;cP;wl=`q9L7C(X=6q zE$v7)gkLcM+{Bhu^%QfzE>Bk(+02{Ml#s28NcR{j>iixjG?A87$!IrT6hT9I8Mc9C z?HATtDJ5d=SMb0+7S}P-J30L*6;hhbb%`hR?=66ima*_KjD;)O1ZZTE~@4r`&v4uRx1Mib{e&%!Gu4yM04ho;Ze@J`MP|i!H{wHIK%A z>eREH`i|7dy1sxImeXm2x^u{)v+K#N3+XuCpBUGmcSu;u^kiCFr?q^=!2ux>Dhc?2 ziyPJsbQ@$%cLxGt`i*IAg?k3_x1bXc-H) z!C1JhO@KD{GN7*4^^fIR5aAx_t5wY`=qfq@d3~PM5jlNR*0CrNm{Rd%;d;@lCB|v_ zr0t7$C2<1>lA=y6D3^DKmI>ELO1CC0@7*(RY0Qxs52i1OnX-F#M%&c18FbAqUv2vG zdKo%s$d*Thir&_t9r|@5c5njhAWX5pqU?QQ35rF~N zshxuj#=@&DfR2{2a085md)fqOb1wtxdR_lmE(Axn*X_G_W>FdDl?AuW14Ftjt3Xui zc4-I3&>i|@F8yVKtxJy2=o&aDMU$~%U>=*&7meBI4R9=n6`yIt1Oi-kA)qj-1?%P@ zCHe4STpw{%6L-%|$=WWNeLVr!g>KE=Z_4fl1)WN7Hl!3sudIf%`kq-2iFJ8*53cLh z?1Z^bKZb3G0$b^He61r5kA>G-039u3;VKvl54Q=>=3WNW^}7E5;o=m!Q6u|oVQ%*k z?U+!$!{!)RTVIN#sG`fbvtZT-$w7JxKb&4g`z$J?i@p+}qOdV>z?fl9W{ku-{v=4& zF6nNlw!}jau9(*!^PZEQ8FKQ@k2O!Re~&y6;b+Lt-J+P{a))hPKa)6Ygxu1Hx&T0UeXp-f0`2uhXsh2#u{-{{o9Fo7BE_eVoy$5CZ462I{pzJNV&wj%&)T z$fhuBjc6iL7aTKkT9OVDo&Y7iRIpFocb(<|Iu+uL7C_Aa@Q>G=+(XZUvG8J>0B!DN zKwYcrAIo)KKnI|zuIL&~Ki!mGwVkxrAk0 zhrU8~O6!SWk)jSMYa6UKaH*k&8=3cJZ^}7DCU(mNO zZ~P)_PSG<&oMW6zw57aluj!DK!-8R$ z@Haq*>P)Q3^17m;dph-akDG)m^0!30ENbT>1WjDE%vd-xuXJ&L1OQO6WD8B?0F zw#aF{5xt(#^(5^^G!pdzby`w~CY20mcG1UCG96;{^!l{dy!bF`t_EFU@e$2~Q|^ea zzzQ}9 z`=$`=Bib;j*+g4LbzaU@UCcCP15e8Bo{j`u`^j z{p@~>DKT^7!O3e|QXu2HqC*EZqSebO9huYtQGZL22Gh)e1o%r$hemZmho|1_5YanT zhtJj}CDnq4;M#!BMfAkG5s?u*go-7EOj3~5FFLF@a=I{Xuk7owGAp|Se{I9wQy$Om3vqVprd6h{1e8)E^Pv|xt9TT zy{`ZNc=d+uI({0xT(~76K?GeO=KeXIy>TO&Inyu0kLBR(XJzIOH`d!C`lEd5fTx5d zHBb6i8QYAX+^01$%`WP!qGkqsjyfmexU@@)x;f)1>Zx%nn+~EcM4%q&&%?U0YKaY3 z^1fdg3x~G=Y6gIRyyoN^`W}phz1sw6b1wtxT3!EGE(jraAtf9d(Wzne!f@uYiD)51M^ zv{$zV)lt?If|zsmPlkTU2Xym_b_?nF4!zo?<-(q<@!YM+l#>T@M6+@ZhJKrK7m;e1 zvCxsA&wvSbUHcdP&!5(zFL62J2|c0((9tp$-n@5r9n>a3n|m2h*X#QKCo5IZQzQ1R zT^qhM1GA{EzIAgNBi|ckDV2-&FP~7eLHBi z?~||;BD#l8U|cVfyc}>ZVymo<&S@4*p_0DEnF{Zel!+yn7hRHf$}m$KuESf^H96tY zHuPXR4@3`Ov+yR#cb(3E87aGCkCf)G60_<;)Pf6$51A zfYY|n`F?`!GCt)mp=_4#EXLjIFrdFEtno zN3{StTE@b2Fcyw$6QIq#45;gM{bRYd;rdX}YVh~Un#G@eS>I&!9}JMI9;Wc5q|ogq z^eJhcI1~l-X4#^l^-{WdZrwFO{~!ttr_-GNHbVzY)4@ZU1f!thh=E0uc2VXaj92-* zxNzh>JcaprPuBC7t7s5~^nKmoJ{J%JowXvP+^2J*)-D~7nj2dxUdzO01L+BkU|<7eV|P*28xW!UG+Nidjj39^`KW3wk`#$#M!ie+Oq>bPzZpqr{H{e6=|| zpqm5wnn^k~t(^2B>ce*`H5dzjZ2^>NeS-zyU(lQY`VfqTv)cq{b1wtxdR_n6ul|q@ zf`|)eU_e_B=?kRRHBH3q0za{co`HxG)e<~Y3F}JE4Vpc>B_}8hZODsES?cl*&vIQG z(R3X)(R!7#vsZ2`>m&lZgU$-!CJQ|YX&c^Rf6VH#5jT!#N{~0P0Ih?fR)pJtrw!gF z0i9XWr$c(FqGFG>#!;}Mr-}Cs=zPMMpkX7-5Bale#=LtDg5MB~Gdxicah=a$0f7JwPmoFX=Eh>?d@Eo%*52SI(`axe4Uu zca9@XmyJ)q5Bqz!8N$zkftZ}pX9IdPqX$AhN-=sP+LfW(ZduK25ETx{>dmSSN;vUq zxr%w(m89tk5;Bt&aBNofU0QyNSPwurJ_{UT93wizv%;xBF8Xjx`ty$F=}E zTE@a{Fcz+86QIq#45;gM{r{`=?y$a_sh&Z-mDWBbErs0^W0XGi_v@Jsn^f!A1LgIv}Mc6E$`N+^R8lStNx*5<_< z)0;6}9M#uhb1b(k>Q80=jm_Js<9c->+WCro&Yy&Z+n_P5TeflTpJ3R=#D{o3E-6Kw zHl)KKfYmg!s9VxHiPKS!2Qk-XHP8@@|0AUFd99LB4wE8$7~-DAfFOyq7liaaG?jpb zqI^~Hm$S#h@hyOkma%XpjD_3U1ZZzW8#vglVXGna4qdU6{b&^1Fk z6harem4;XCkBI&zIyoJ@@Tz?#ss}o>5b4`VollxoQnv)nt$k>Q1;1QK&&b)-@dxY| zQd*B*K|#+m8Y}w@%vtv#T;u59maSpjhzVLuhZMC1%<3*Z5!5rYbnvh?q8SAvf|y{m z+eA`^brB5Dxb6v>2=P_j_tPx_^n?~bN6T2a7{o z+v$^#;&$r7eqB6X(|hdR|2G=E1+AG@ch+pNdbiG+s23)fX|Nz? z>Py*8F!A`3%aRlQV`Ag)v*T*TX}k2&|0%gV44Lre@X8Z z{SDn0u@XkC7;eD64mlg*28e<+-4t@V7Bd$DXU$kRsRhu{G8WE&vG8=80B!DNKwYov zAIp{J399H11xpOL`#+acK4TFXX2|z*g-mJX4()@G5Y0lbw(GDl!b*))*5^5{^yp#y zS21=AJ7n;o9Mn0&$?@aY`f2mGPw&wuT~1*xW-Xbylw{|!Ud?NHX=+4Y^Y06~l2qT6 zUa4uWnvQSeYK3x24BMwM4aYlaT@sl}E2EO@(F0w&w65Js`UP`NzU% zK^a*TS%R7kf`pKSPIp&zRabS_HovDhbx!?Dou+2)IsFGq`o1Sm)%V@|zR#i~Ip1>q zN$QrQ8y$!#Uc*p@=Q(U8-0T5#Y6GBV0Qkr2?c76mz*zWDivX?fWk6l4>mSL*f%9jK zFoJremgz7xU_+rjX+`=hHhC#&W0~iMbT(Is4xNJsGSu0MB6JM$`X+kPu;Z>~j?%A@ zbz@)Cr@!>-^5NRlGVHjej~8rgeo~uf)3b`|9@cO{ONti%LPL5FK7sB2e|YV_r=)%? z%8Bl6^I010KQs4hA$(Rf4NE$1H@JBW>!pOHi#(PSZ+R>n+5l*?jD^3#SU9;wfY$di zpsv^TkL22lHBil6;g*8_J!b+*Za}LC{KUH~pm7OZl{B4iYDmv>nkCe}%MZ!NgId9? z6P*hlUjbc=rwxM=95aU0pSMlT!K8Iyl#$WFy=FoDSo$Mvy?~ZgbOfeG_}FK41hdhx zx_G>wn3oXwO?n+YioA255i|aZVE3|eM8^h|rLz&Yw<@zUc!RS-dJLf=ye7V(hcy7& zEMws>FcucI2+;ao2GsSs{&#RKmbpMQbH-+c?B&6PrUvyGp`rn8OKL}lqtIv(ypYo0 zd7WYWj_MHYL)ND83)`I3@Q<{e{nkcw7kzt(*?C=%*4ms2x}15Ai0SyGrjiQLYX;yb zVhs~|bWrmL6c6j+PR)wyMFs>zR>5pQjE_YCwl?h!hsAPmcfnqN=LQ{3xD+lofKF=w zv{}Z&Q!p0(xkZ51_cEZa*Y*FuUhm6kZbtJ9J|=N*{S0w+n8FR4VtrFa=V9iF@|P$4 zfWwk@P0}Fl4F_~}pL1cxC+rMxYn!f%dpdB_fHtCOiaH^Y=KP+#ZXebMV&<+uF#FM9 z&0}GD1E9?^7Jk1D3QCIrt?y+(U9amO$u)x;M9D-u?)ztw#hg}m)+*h(SjR-wSvEud z+l1i6)f3T4otDEtK4{qj-m2A@KFI$Qb2{WKoS@)56g8Ka$WHw|qMKjW>HC~}wW6vm zSO`{afO9<*(1KP5-L+f8(;(?&(vw4&%IK+nU0>_g&cyB*k5=;RqS_PD64~aF=-A)m zygj4|kjf&u4+_d#sSt-Z0NN~L;ZYb1pKlSM^}P(J>vjDjxprX)A9WJhn^m2N-&#rO z9?b*RoLuu+CXe)!WVGFu%;~EmxLZVgpQirrGrj2nM4KeIK6m@n;hh%itUJdr^1>94s z+EdH%;fr}Au0$~RN~#X{!Fxg2K@ZG2%fsqnrWR9(q?oKO1G|JxY_QANQq^|6uu3`# zg&M)!9h%jyiA8+{#sUWBm@U^jhfak!q5;rm84Ev$v9PQ~fY$dipsv^TkL3DpP^S>b zKtv8XzkNQd%PgJ z^puLaE~EVw8?N$PosAJIeC(iJBax)!5nCXkJyktasxcO3HUQczW8r5T&edft0<^xD z0d>8ueDdk)F-m<9 zdw6vYS~zxXLDQsN0iBKFDXU+WP3Xd1{I}@(VHsugCB`KQE#M@ab9g8Mr5SMP^Lh#& z`=lm?w0cmy}eMF%2!Ib~YWLcXC#HUQcz zW8o(-7OrR!p!K~BsOxq8@9erWt@r_5UeFEgdVZW0_awI#$X-wA1TwhE8p!H2q_|`C z*jUYG-$UkZbD~tSeD4IqLIZn^y8%eg!MqhZDcbR-rWFb zvy6p1U@TnSB0%eV8Bo{j`bToTuT5*QTr29{jE(qCNbC5Fo-b$$5lbn3g5Z_1oi@)Q z+??rEK-2SjI`4nHZj6?8+ET2N39O{)m(cxf7Brp2>9?$OL=U&wQ3u?o1Z@`?iRo%-9XHUbv$2*Ita({T z9}@q0RN(+Rs{znv84I_-Sh&7LfY$dipsv^TkL0>>&{FH;M(ZHv$Qg@?j^+V7tOdx9 zc%^1-0JSY@Crlz@cXnvzSoMrnBWOPQ0WLYK>91kjmUVA7#)SO^gRuLHp^JJ8OFlu76Dq{%YeFG*Z;aF7GQxzLHAf7T~;k^xjHp^JJ9>&70EdsQ@mjQLXu74yKXP$CU*U_TS zYI>jJHty}$GdV4*ng36Q_*d0eqFNetF1CA*d0jzlM^xDX>v8qp^D166$z`3cb; z10I7yV^|x~-96gXYbL|1A>C2b;*xVhCswp(!1li>q{!YDs@kBgZ9ygR6$ zSF~+Vx8^jitcOCn2aDspIto?=Zbdy>cEWF8R=aQjBML3)td?q@4UWclX?fl;+<)kD zy6DWbCXgf>Qi^2uoOzoGvhczxjB;MgcS=?epND5}Q5TnWCywPw=lGbhFsA{~W*G}t z!dSScMS#}#GN7*4^}n-gAg!}{lo+sS{DQF>HBPT$dpqRA2`!^LhxEm)QzlRE)Mv+O z9xBn8{>J5$TMwS|{Tj1dXLGEI=@?o87{!Nl6LQ^&rp4~TYC0bR*Q@JXh_eY5*@MwB<36EB14NfyZLwqLuK6;RCmyg3o{nxHUMe{ zfPcK+&OCG#jD`DK1ZaIP1L|5`|41$#s=V)R9oBt)Zu&iRK!^9Jd(hfy+Td##Oq1fu z-y8hN4m%+~n^Usjgw~~Fba$6IV6PBjg={qJzwk@T76#@^R(F1QNINt72hUO-zfsdp zFjmbJ^u&O_r&rLU;2TFc9RW;O=0ZY%wG!5+cwOSrirSRK?U=T}F$-GuG7%?*ist7{ zUh3@7Lzs33YK(=y@kHUXR$I+77PiA!cwc{O7z_2iT(j$S{Uf<)xcck^EbArqcWgO5;Tzb5I?gm~=C=sY`d$Xq^}7C% zT+v}&4AHJ8>ZE_Wo;x7K__8iXxP<;1vPVq^@kB%u8LuRr4RLx=3(?&twZB8%Q9X_6 zK|rgEmiE7i6AsSR%(b&t=I#%fQFcaBtJ_W8WTrL+UOhHMc$5|NDYBuNjJNxH{e2Sj zs+z~Bv`xP(_|KwC{X;|_mSL5 zjt^GzCK$5=nuJ4CNk1U*99K+?W!fB)btQxKge{4_9M)ANisBQVQ>CDvH?7@VK;U-;+>(WZgii3!nCA>>QcS&_o|}9iW77Wg zHeDI9HVxYo*kyEq-pxxBIwB+Qq<)UaLSFMZJ3)zo+C-C|nF8O??G1o7%UF0E#=_|> z0<^xD0d>8ueDMrqB- zY8f=qExen?1B)xu8wM)+QRXwa(<>8e?Hc z1E9?^7Jdg~;hYu$THninx?b1cx&Sy@&+TzlcxVJ`9t%4g05t=^KVEO= z+VT*Lh0nAI(E45m)U~?)kz9PCru0dJW)y6oRXm_&2OvhfQ_6AZU34>`_jGGwN{ho< z#@{MgOQbEAwWz~Jnq(?%t5`mEX2t=*{W(1k?FS`MOn(jOOIhyg9(&}xvha-U7x{{-w_B1-~y+_09=WJvqD{V!2nTD4AXJK63ywe}n9hv^hW zbs4%C9=R_!0NN~L;Q<&6=eG#Z`d$Xq^}7C%TxXSSUj6UraB0U4Y7rgOf-cYKulsey zfMy_8>efx%{Zm>+J|LFJc`eWB)~bDv&mN}<6LrQx+S{({;cD(zb+7)gPruG+HbFVu zbVAO7-HOX@NbzBPE~g2klrmW(MT^XCjE>`49oBjM+LG4zxFVe%pg)ap3IBw$x@bK` zeOp;n)v+*Ss%VTfQ;f8I(N%}Q%uR-t}<6&tsxmZ!{WxE43^pmq*v zs7Gu1^oFchxvipa2CR!A&F2`X-Dw*pN8|RP;>I+V_h!JmHmELCHt1hs ze);mvJrzKAH2~TyW8udz7M8aN(E45m)b+alkzDt3M<{4NE>CIQ)~EAm=i*VEv+2`d z($~y&G2J>wk96qTs$Qw;w-vpLs|LiL365Jrw*N-d*`SMap15(7#hn$hssU_IgW4i%~sA{sx1y%i~-3~<$^Nr@05O7w~b=V+R^^sw{yPyvRbWz+y zrWpY}%GC+C^Q!(F(1|f!8`nAp>j3&{1E9?^7H)^J@YNOpTHninx?a~mk_!p#!A!pJ zmnNWro;(@{t_ejg=*JS+>XJzvTF|AwF0CJ>2P0ZHs0Y&4cOM$p>~UH-St};$g{b;S zse3~U4(Q~56Xq8~a!BZoxQ(el*`}|?tnDRSfUtmjp^(9U$myf_Y;@?tq#hxkE2DLB zo9^<~hU2{tqt}3TVN;I?k%-zr>)*&HHjcR{Tt1GqvB+)EZ()*)=K7wh+uVUKXuJb}lV^x&bw+qVl=^6A# zZF({3@!XRo`;Z?+R&TH7?a|_@E=T8E3;7*5NOPmwut)Q7yy?0b1Y7fVy7SKawjzbWzcH zNjE^v8q{G!wuVa;bSH1C4)bOo4cgY=TR7!nHcn@+WO5g*&LhX@r<3(shj}Rsn&)A6 zoY#iEn*4@tLllg1zo3iuXn975cIbvNW}Cny{8L!JDch{6dTc(QxNcw6)W&xpM||C#UE(h0(=CY@ZH%364^Dj^Tq;(S;rU4dJ&u7WOm%x{ALb|9HKf z#=Tp~}6Y|xVZjviqKk=Gf0dW0ho*-UUaLz+cXH(=W5(!9+- zAMDhOF}@?4vG7I%pk@I0$Ls9?x)R31-7NyNzLx=Yt*(D0*DGZ!I@|KvIPA{+DJAQ6 znW-I_(da%6<3^4l=QwTYHUV#6SWC&@>C>MWkOj5AOU3ajPjLEDVOXd3E1J)-8{Uy-~FHegr!eN6H(4ss2>m3fB=l)6xp_xI@JTzs zyqgHxpc}jwaIzZKD&9LWk4L9w9rIzv!rlfz%>eL^*V_Sf1&oECwg}MrUIx^)y8f0f zcs{7(Kh0M-=**PUO8Nz+QWS!C6Mvyj57A~Mbx+E?J~+3x4=B~6hxces+7bp%R?x7^ zBtEq1F76sVH9Oo6eE~*p+R_oWs&CmX2cKH)h^u`gYo@5F3H&AmV)y`T)WIVD)GDYL-4=VLRKVvlK!5GW-YAIgk1Abm!73Ggn9NL`2^~ zz|SH48iBLu?Q8xm??k*6;q&PJMEhzw4dg7~XW$zI{zc>x`1;arWpZgvUp=^U81wU) zim};a+r7-6#*&ux5ZX}$-$G>`u@C%3TmMdtQH#pUR6H9Fme@H$wd=&fdP z2Xo)iISqJ-`7Uf3MDGrC{0xZ#Z9VU~@RQ{qnBIrwI^Z0Z8)=`0A(%&JCySHFqY%9g z(Z%pp((Oy<5SFi_lQS={qC0%E>2`$g9{65ia%RV#RyTT!>0CjlGZ}>MF5oAY=d-wk zbt`JS-^rG9_}>P$zKhTosJI$|CIn_6dT~91vb>T!8lm@4IR@4JP*I7%bb7PMy@8c< zuA)61q3=*T7+pr8rXzy4uy_VjhclC)y&a(_{7*6S23s2Fu0m)JI;S%?j?O{^euVV~ ziyK+|27VjSC0gYHEL^~{1MClL2f|YjI|9}dEMCXrQ7r3d41@1PgnJ@1AA#@TJDSPv zU3%%k-LF`DkNG#4`IW6du;n+V2C;BItPsLyBHjm;TM!*;ju!f$>OsUOGJhrW`yg=$ zdc@FaFGQ}PGoAT)EX-r>Tjnk@dokF?{FiLC;fo^iAgrw{lH7p6zI2~vVG0XvboaoJ zz%dA3M*Dr{?*slruQ910c9o|yS6|0iF9t2=+<7?bceB`p@WH719W{reViWwIFn8EU%|Gj`o-4m{rd~@3rW4DmnudgK1ZD=bzj-_g~!J06h? zqJ80;PqziuHu%1zeKM0z_cS}*9m3*L=Kp2-Pqt>5-pJfjEWQPNjL<-Y{fLc3bTq6z z;0q&mIQ$nddooK)QKeeA7iwNX`~^g|!LKTR9h+=6okx0zr)l?Q>mpclQQ_%>nV!!= zkj@#fj)nCA^V?Yb8bcDNAm+05NVaZ5#bcK9B@3a$VNFuwLEsQrwR9&U6hr(C1h1esmZg7~9N2q;p4#rO8V{fT z_W`UTqLWd30(wkAx8G6Oi_}3nhxzN7AII!O<_@Rx0IU@4b<7;cd{5dc497C}Fe4zXunP#iui8`Ze@N2?XIZ25nazi z?OasOMWjTp7gIagmZ7r%;e!zD&Elmu_=eH>kA*PXHgK?aIXbr>aT8Nlt5G1j%zUHVHqu7m zGgvDSJV7-c)-$j+!O~%Sq2Dy?ES4f{aJhXkTh65WH}Eh^4J=Q6F?mz}o@R&jWBvnX zzhQnL%QNY|M^|mG5!PSueGY3Gc^OMzF@GU>01}s?@)20)3gW=O5jA;q*b}i0h+l|= zI_4r~2C{9T>Fbd$@Qr8Y5T@UU^$J39(~R2wru`Q}Tj4vOg%_FqlY{MpfPd&FSontC z4n(d*;8}W`)O```0snaTZ-Y;$V;20X^&c~NFxWZ1D(lq3kc|3sE8lQaw~I3un2h=`>P9GpP7V#md z*%!f6+1kv;dV1fY@;?Novh8@L|AFsAShq7>$L4QYIuqe#2tBQ;$-;>k8G1^^fTgag zy6}H$khZ-6RvV&w!9NO^f#5V)kE=YA=fcv%4F-NiWj*4TFuCS{qx21Ow=iWf`!>sI z_@*K@1yzS3F&ly2%zwe=iEO@x#eERis&$}KO=ms)0+>UY>(0_s^bVsV?D?DdZ0Asx z|3SDKksd4_!0b!}HlRwd^iBAt(QBan7@hmzI{|?r0#7421XcdWU|o#BWeC1X?|dd7 zAKcyp+vw<|gy?uIk7Vw4W-g$8IHD(@>R(i*Q8^RQW9hZfn~!hq_Jw~-VV>2HvHaUhc?9lWnOEW??*!;p@)x0&6O#cNsqm#)g* z9tg}td^Bo`=1$45?l0C2KCHVS$0=+Ph<_XYP3ZU_I-iZoBM{z)-WoPdrZ{pdWxmEN`JV z6ID~N#|reAh>8>F>}F~m>zlbd%hW5hCz2E3SD6%G`-A1*>4;802HzaDX_nQ9u7ZCz z`7DQ&*U?i|*`K*X^!I1m1P;M>OXwe8zfZEGf54;E2I$9bqo(!P)O*Lwdtw7Qd?CFFs=Dz1Vc<&g<`M1G?=lvIO^330F!M{8-;;&k$*G9PQN0Y+x1+kF;b;)X zoQTA&2uxyrFP57S>xIe~!XibI4raqTftioEV;buRk_RH($bwExgzjtbTPz>Q;;(df zi&P-e6VZ-FjwlYs@X*PKZKN%NlK`ZLJO>=ia*S>s{xbZ{z@D&b5c~oD=jaL^eS=^P zu$js6qqQex7_)_`7V0p!Kl6v0ZkxJ?>HAnZ0T_kI z64We5r}xn5PE`E@{KoV&wr*kWG`eauRR+0rtX0EC;C1F7XQRu;Q^ZqYy(vIJE{1!Msy+kqs{vTdO0&4Od~FCVDUck9mF@F`eszkLe>39bVGC$ zqF*3-mEaOf{aEgUfM|9P;e5nI44yKqu=x@0KAEjg)BXdN7>2&+B<&4Y*U&wWMbNz& zfeR2E0sn(^f1|xGhJ^k?{JwTPvbQ;DiAU*OOJ`5DIC>A#Ru?`Cp;H7I5n7CZR2Qil zE64USrELSV9-F@5&hNRq%=CUNCRn%Yr~{|5bXj|of1c^z*!C(5lG~o8-GkY+be1E0 z5`6txc$%d@5IEHEN#9}2UC!K8Lvx}FSongu^APEbsGhMzXDv|A(kwcsBc|T@iu!~p zP-tfIu5ta$7PyUBk?$N^|6;ZiQ$v}$jLs6XV%5@5Dp9>09TuQwGr}WSmYSF|c*~n> z&Uz@1=vKtvLHHFGKjQB1*z_-aAw(QH!&wqV`4d4ArAwH8nWd4iq!(@mCbPUR0@bMT zAsX7mw!heXEb9hM=+ezlJZmRnFT#I0ZB?=R5PAZ>dM3}C(Anz9+)6ghVq-71s2?rT zC$R4RqkCW6eo{sw{17UxMeuF12i*+48Y9QGCfRZa?Vl0sL-$eUer4%+IulslNn73R zaF+H1jzxv|b(pSH!)p-Q3F|IXmUGPpZAVtnd60FnV+<1QcT6uyXs%dc1)Do?_cZRl zi!GlrRb<;2;Ad(%0Z zTxi&6LAu_zbmO!IASc2%fW@tJ#q>@Bj%M?|w1=Wfw6+rq0{%M?`h*@yRm@xApAO^^ zh#~YFlKF|fte*5XvJhh1aZFES=`NOC<_=?9p6M;DJ7`j^n%ZWgf;B(Rw$7wT*4OB8 zJvv>1N_C+Z*mybX2QYUkLQ@d?0=^Rk=;>}}N&V&sX8&f^rE@Yucfdb_?pOrM2(D*# z9_yZ;)VBW^B>G}{pEBfB(Md7+-0?;r6$#A!&DQa( z-;cY`WvdwZdZwCLx8VdmsWTtekLEB{Z$|aqh+IzZJ(j*i=-e>Uw)-5_o&&aQ}*Wp`%#D1vV3$<^c zaxAPd%w*X#iH-A^79!uFUX9QNhMN2JfPXWyji~}#FJ%59_C8{g2mloec!$nyvbh;(G~sFO{p))vg`Wxc}u z9NK3BUyBCQB};nJ+l*{gCCYFcYDS{NBZw}gd$i#cXh!HTgs*^KpZ^d`dl_94BUpIB zkpH}vQk$|F{=E@ROYoyz%ko|_dyK@+Gud=KA4Jwb)!DdE?U7LCYf_<4U zvaaovJ#?xoPc;i#KAnYb%$At>fjRx0u=tJgO-|cG3%Xc92=PZz@eU$Q2rZ>|0$Xq7 z&U?9QDBC`TuZ*f?h^;qLmHR5oar1NqX)q5Wa0V*$mS3ZN2M|G6O!PjsNcF$S05#u8 z_|I4OHW~z9pqr)B2H!fP+*oty-e&~!BFN2;EBWdAg#^XTrb1XpG(;}VGK zEUsW-1~VtJsJ`?HIu(uV9T}kggHR*F+7~6-S=RkLxmJ4n3O33ld5&p;S_yO85Uey3 zuW2^WIzD`nt(VE;fkj@=hfDV77 z%g^XE4DnCtJ;v-fwya^}7PdV}&O+>Agw~T2>FG}`rh6}o=d$HpHhx6s1yqXI?PBR* z494S#9Y=4P^ilW^H==*YV(|`oqY;wKax@*Oo|hvi*d-xYYrDs}=Bdl-;_I0k$$T#s z0xX=*QXgO#!XHxN4#vB|=;EJv7?us@P+jVX?W*)07DzkHFeSkP-f0$4-) z3c6ypA0nW_d>h@~9HP(jUPnN1S9IhTR2+@?4i-Z!NxqgP@hi*g5d2Hj27%59%88o9 za6s9_yH@XKn`zdP~|8BT@ApYC}kzh@jf$necrK$OD}KpPqLWI!r*v z^{7f9Jdb>aInk#YZvUI9(eS;A=#dBs+aE%2qS_g4Ay9qFbF?QQaF=N+(s%-WP&Z|2 z@GwK+(wkIr5d9qi$?zLs9S{FYMh&t)qdi(6TaqGOM@SU@tB{Z&_Y#u}r?zAKfy|ef zf0Kn1+Vz#$bmU8@NpFY0Ct|-LQ9{K=RH!1%K~R?)ZejLlR7fCG zM+q7uD}J?+Xkz=DIxCUM_bRNHnVfo&*)O@}Ojk11%NQzYKMVUCutN*+E$H}!gmi@E zCabNUkHlRDl^X%^e1y(J#X|@^3+p)eTM?3wlw$sHHqB?7EXnH;f01%!a${MZD`-gD zrrSj4N_xx9rVHy`-%h6&hSwYiUyAi-Fmnom?*SqL7n-f*-avP6L?$67mH8(GbXFcA zAA+yVoGL$<9C1lEb;6vSpc~kHJzLH)9kaNQB}p&SEVZ;ylTczXKzt6|B>{)a`$6ms9jGIJ#SkE8Psh~L3dE$bRD-AgUF z>M{fH3vsq7im;jK=UIrd*oSq)F7GXPC}pt~)_+J0Ma3=z&nD$-se?Vo{A!jiV)+i1 zuc1A|FgH);p(^GY!)o(i(^<%ZNXsrGYXnYG^?~&rDlcbQnufGb3qglP)e8a7jpicipSC901{ zbUy?JkTZ=H+t!IKuQKnz^57R5P~%?DatFGTjZ@<6Z@QYA02H$jnq3Hd(ynhF%TyKZ zUl3huAXVK%)4B)fsrT3^x6F_0uB)BO!fUL*g}Z&sHy~JV zlm=TC%79y>5Kf*F~B)d+}P zY=reB0^($ICGsPXgTDpH84W{6r*smc5DGg3;SiHwU*8ThpP+pK3$HQ_rX+tHKzn~l zr3h?B{3=uqLE>ygXCnL!qJJWA8uNXazM1Yh2qqD|0afB~661a}6x+UzsWaHzh1uU& z7QK`OAr85&{WqLU?@VSJ&7V~OiO<462Em;e9KTP_3GIW~I*~<@r4jJ$!BSu26vg_P z*I$;P@e<;l5f)E8mC3m`_7%V^CfWKYn~r7ux2(UKt)tCR^DaT`XLP&_Ro@_TH^NsV zmPAFl9XYIG-M=>}zvXUYdJuP|*&G*Dfd2y{5$6}vX@LJU_ zhE9-OcEimv?GCZ-%qX_Lz=jsqk7e^3rXFM6leef&^A{xgqU&&UIvO$+%R{9<;)5&ZyhrACyudY(B!F7bg8f?u=;Gk-kGk4S(w zs}k61HjOKeGtP(uS((fYsF;f(a+LxHwVS&=Sx{u_JA{9MRY4`utRaZMua3;}#Xv1$ z`bhP;?MzxTds+L^d6)%}^RQE^0y|qgNp+f&P9L&S29rrgTKlM=Wl-t%^}jF{m{LXNn%S zj%D5Xv$`B$x{+*HRTAInz-cUBN&7AMMQt9Xa{%xIDjz~ZrRFRXlSwX_Wf~*J7`n@9 zWX{h_3kxb$7cp}&i&Egw~sny}s zW5t?3W;#j}uaW|@tTd+DFQNlSrW3w}K94_SCZZpU5io3?`4FWB~xu`C-rwytIROBQA!I0GG9 z(fMXnABOl^#AhQm2tgmIDj$$eiNIqBwIcFAL}wuMIdD4*33Db}Hqp^p|AOvXqlH-W z5WF7NbL0ao$+O(0z!543!2dsHmSd!)@BY0Jfm+@|_b?cODV= z1hH%3f7@vKc19i_f=bk!a8El@AH%e;>cOmkj!iEzbpSKcfj600QnftLgAsYn$gH7< z>8>VsAlMn!gXD7vYavjr(l)L z8kD|}Ut-974`E|5r|d0&`q`_rZ-TWEk#kH`wa&Y@iy&s_`;3a>cBOp@OK&iLHM9Dt zQ<$E~x=FLu+sen9E$jCobdXUL{nJP}6epAC8xhq$&ehC}Lu{;WaBk8SRUfpH@tTKF0&`HWX zhwnCFE|%sptpoHg;))GC$gF85W{E^YM&s_ zKtH-N76mWSU_6%i%X6^f$r}BYG1ev(%!Q`kPH#nSYJE zm!$)l5^))c@E!>NYjh3gAgcGd`?8cY1t_gTCV+4X0@|~^$>&iajVQyqk#oC;=_v=a zQ6|LPp4MTqevAp0zKCsq7?_^g&9+5MwbEAGo{h>2P_Z7-`w^aiki^2<5&2D`w$il^ z*G@Cx(xwo1FJbm)Z7=u~5>@W=KYB;O=YwxMe2VA^nak~~SJz@uom-Bygo7{(y;1QJ zs-#3Ipx}dl9Q~)2iw8l-SFXhoE$wNy>@P`P2N%!a}2S1Qf_Qm2FR{T40de zA;s<#LP|_Wg*ungNY5Z~3!)Nfe}<(r*wY9e48P>V+nD_Ev34GI6We}e)8$MH+W$&9 zso7q12O@R}BDVr<2!>HnK;l%yRl39qCHw57oeck_Ce#|1N^+A@dJT=a#D@NC8qc;t%)Z9DKk5cvMe1xS{no_vm25kL_LB$-JnHPP zh9#j!980wIbET+g^14$Hu0~LiGg($W5buGA`sCltU54OyCZAN2q1=lUhL{WM4EU}> zupeYlSwVBulGi-hz9~hO0xbO`#LS$^P0*w)b*fxfECiuBCIX#s5&si0X~Bwu4Q2in zrb|kEBD60Odmwr*A`=mphPvKR6!9VZ6H`PSVNCVt5r~~4|KEsHB`Fgp(#e>rv zFr-Rb_*^<67KSpLX89f9bP4Trq-)PccnU%T5E^ellqGtlMmU+tBc3)7u5?AqI#X0q z)0vY;u!Z>=x<$lfHouMdCMeunq5ZlRRZk+Wk4cyz1if(ID~RaFl)Mw%7*6k87OrN) zIc#{GN+HA)eAt_|LPmNWAJSW3Bx6Mf3x62(lR5GTC^k1Fz5qexGhQ`5lY$7I%zObd z{fbxMdjtwF1!c(mhp=ow{Z~onElk!t)4l~1$`IH%pKUL5*K^!)gORhE)EFl&I9Os; ziH+;obgIckP-IIP!Cw)O#HQ*gy-+2x)kxy*mBxb#cYesZg++xV$7>xtA<65JEH5yLI&U<~N|q_~ zdI~d3*t(LLIBhY60(@5@IvdpzpI=98Hxg4+3rLBXTbPwhKUba}Dk7-35ixNcIpoh7 ze|Xz0Hh)R?WSMU8iC~UI=y`m&7)S@D_)h-|03ADiE0UO|lG z;hV=+@d9zH<&v39>Nu<4=9lP9N?wqp`Wg!l8Nn#>A)>Okwi*E?paf-{(fl&eLDBqqED*Qb-T7mZ$)#S;@p*!{k{n zn4-@hOLLeL{5V?4X=ax&H=gc+2(42!NAM_g$fEZ$)M}umK>4cf7#1e6?N$X+4Xf`k z4Al|?M6p%t6;OGf^%pWFOGe-9BtsYRy0K3JZS=})X;v5s!9x%m!m=cvy~W;DZ1-ZZ zC-X;1IDyrOn4F+7EJ<8>5f$1i5 zQLbFlS!KVpnQgDJVLZ2=z-|Aq@pYz?%-_zs17GfMMRZGom@%JOASj9s`a{?vld!H`#pO9A}GCKs;P(0Ux ze*sHx)A^r*Z*+fW;YB)A5k3L&y%D??6;=TOY22dar!e{R%k6Q$eOVN;Qm%PA(<_-% zw>y+|?kfg|o@|85+*IQ&`5!bZqd>gxWg|#RNKN--(+U=Y=AE0E(mIm?tFcfchNVL^ zi@8&zy&@oDRL$ZnRL?`_t7(70mXF)DuNw?TEGxG2yV)I)DB_R7Cuk@~Ssda3R+QGj zQgpVH;w(%qe$_mzeXaRJX{ELV-_B)Tc<>|EtzW8#buTt=H6{V*T{G#X^$m|Rww`-} zVWZ8TvuzkXorvxRtz?%;{{(Jv8^zQVD3L=8tGnYL=&a!T0f$*5EY*xJemc8 zFsVLsjQZ;O>AVj#BJ`-lbnOcB4ccy(pNoj>kQ=1O8j@e57XPyHp{jidZikhn#-l=( zK&-^Y4$Heqrn84JtEiynTf{O}(mtC-S^FS2n^=OHLQO_63>9KNM_bY)NQu|! zQuLMz>lq9yvN2ZG`f|^-M_$U&C|J1e^g zdiG-7x|Q9hvHT3v_n3S@>PzO|qpg>uknfRluZ`*~?L&=4sSq{g)-RY5EBYFhN~N{1 zDDnJI#11sHFyCJ&gI=8SQ+OkyA`LP4b&TZiod6Aa+BYaKo-_c`_OUpGxg(8GCg^F* zy9H+WrSK(uN7-}7a)gX_dJ)gx> z*)ow0O1p`TE0;S1!3GvvnD1^5TA)bT#YJ`Ia}k^a>lS)y^+y?X!QaM=G_Z+ABvlAp zA${i%KwM-xVoxEy3RZVkxT6t}yn39-Hj}ycjn$fwXQK3~vUQKMG#whPiT!Ryh7<&- zoQIf*Scdj%be|;E9~9ZxWpWu+SybI___XF|Q+_sx9o}(DKTdkRnQVM(NUOg9}ddTW>I3bO14gH43^BvD`Ecn%-G<5MVyYZ$TKyHP1D(Ww1JYv@yfoL;6O;n>SGfq%ACz+1!Ep#`CM3C3?Gdg zhoOnVh|Q%LWfO!OjKC@hr@}cpOJ;pEC*_*~>kAWu2q^uy8iD^Q70cxOj}2ritzzaP zrgF^Qz}$_@4K}4%B3@vtNpVFB2o@1glR4SwhVJ_;Wa*u14vSczh;gL|-lMdyWZ^#( zV->F}oWySFlToxwlKwpL4lJ)1*QA0YZAx~!-D1{>y* zrz83`%S)MGsS1vuRF#*^qWiN5oDTn$bajYUGI{wYChM9#-pt{)9n17AmQF)J={>oP zza#M#s^+)*hI**?jq7{fFh@FeL#(00=khUUx8xWjGO?*fXi%mkHBg=iM@VRdl!oQ;W zH^h%)ajhB7QH)RsIMWBECHF~eRIu+{jq;HJd0WNb}4h=0iBq|%*@%WfL`7#2T+ue0hO z-JWzFLEuBgHG?@3L4{ZcQ6oZvCxU-U`i3o3U5XQB=07SPj1<^M~Mf=-vfO zFm|I!Blx6+i>?%y{O9v-dTGVZY(A5_pJ$7bM%OS~!`7cfH&87tPiEB}sQL?i`YEMm z{84#j(I!M>+TTP^d5o7)rJTk$vRnRLpcFe9DkYXqOyzG2-~$1pdH$>m>|Tx#hFre9{$ z58RnyeS~S1jh^Pu)cyOV5WReHjl6`eMAa#%S!OK$%3lytxLqn$BO6a=+f8(JlzJc- zgio%7q=>Ucq?o&p`6sCH754^1Dq}M3Rr>qGXR|bu>9L|P2B7#)qP^VApC}v64EZmt zrxab1B!R#PgzzUlC1~&Xs=Y`|H{d;2HWx7D@+|Db((wq)LFI9Xzk=9obQo*q1^p3| zA;va9y4L$F$wIRbRgn@zc$&EmEIzAZE7ggmyIE4;>Kg<*!q>>sH7v^C?qkG9ce?So zluHaxLv)-eWkYR!##~gL!?ND3-mp0J9D45>3Mw-1`xdboi2hCIKbAH6Sb}vL?Nzcd zzA+xWGlkg?*|L-=@tyt5LCC$!y1Tv|sN;6A)FJ~pgw8Z|(6T49>x>!Z8_9xntm6UU z;hQuGqTxv+%SQgD28nae8iudLRAet^rL&1utu%4a;s%z~D!wopu1}dOojccnhNwcX z$FeLVXR=%!ZF>Pls+qs5uwWorph= zPW{l~NKM(We7Oh#f--g|Aw0)SekFAO#>>ne$(FmAJ)GVcSiM-*I(=xYD$PTb78=Re z)l_u^xR>7HLSyjVh~Vp*_qf!2suC>$sbrG1*L}Z-8l(op^^LdaNtw)lZ`>e9?6eoG zIJ1fl_GObU$E5*U`}LYF5Lxmx*?!@4Q?d$?BCPYB@seXV-R~2iZ2eeg$2a|muhZP2E9W-^Q3w9fz=iOMuc_w$Ojldr^L6H+m5*X;k@aCVN|TsQ#f}wqQADgR z|Komo0dj+N9L|%1WsZBB(4aWDdZ+5gV3QQ29!hoaK-w=z`G@~mI;&Y+U{)!-5TO|? z-Ks1aEDgbFNnWD+2LgN3`%cIT{+AIZB9eeaPv#i?MNChslkas@9Ijn(QgYFHvkQbN z3mTeMAhCfNjgCnV8_9+y6EN;{Cc0E0(TvJ4YVSn#p1R_}2y>-t%+OuvP7}kELQ$nk zKG!Ij4RRxv8N7l^Se~yd4@^U`7SZS;$J3RkqagP+)IB2-%4B?pYB=0$AAc`CKu=sb z0bh+01@x2wy2$`1@sxn9ex;(7h}i*1IFw&e)?6EtS8Oo5gZEHDc$pF{8h$*)AjZ}w zS=fZI9|;9_mYR64WYkE1Q)tUy(*BzT{eV*N%H2PQ+6hRA(a)g!vtcyFF3bxE+bkimaMKir|Y}&%|6NvAocaKC7374o= zSXj#6_r@~~w9vbQ<&T*>=obSa9EYXLSxm8WUl8#E>q9J^C{9cDUL&v+dR4Q##K(DM9d1a$+4ypE@7!XhhFILKqEaYvI5ewFT? z%uF|Xr)Db#RVpDcktrQoVH8ciCIk$PhZfPX-vHky^ls22BixVPX-xWln`XAk0CNJi zhuQR=!FRGFqVje3GwFZ-cP5jgZee(Sm4Mj1cGlwvhnw@L=?@n=xPgDEGA~5 z{(LTrUsB=0*a?V8Wq3m~9k4XjmqmpJRC;ezLvy;Y^>?<6VqPahJ{K8Za!Ej?@)NYeEj6Yu_Vq4T7uX z<{OF6d4Y}y-$4k=7*jv;9i^vFzQ3`3qi&`KW$epj#hVkYoM&)=nJbVITm6UZHgXu9 z*EEIIZpNuND7OC>G`JEOj*yty6U>L$8fL>mY*Ig3VUBk2aynAiu0cYw`ES%*L`Gj; zK;;MK$Fdkf;!bp&Vf5hvIRT%8$>}UCVR@sF5ipnDCkATAkC04Dr%4}d4Ef}Zn@w^{ zQ9h~X={t@4neQt5LGcZFkAHU8K9F|QABufd?r$dg;!@>x3Y9XOZ07H!WeH+w??9sj znq3k4x*ox@XdnyASbUxCgDgL+(`E)|YNhg=!Pb{pdIlj8#$H-5>DFeP%3TKkV`h5R zz8_)nHes#@Wx*g6ny#DzlPCVKo4Sogs8fPA2P@QJXmehwgl^H%M6CFkvP5(K>aEM8 zbl^3)^|B->V+3T^Gxd=+5qv_9vb00;5BmyC~R~g(CIwR}ub@6b}BxI9sisbL$Q^$;#h`%8{z1!1*Rc6nVik*7Q-L zLGaC{mtr7g9WAnh|TNg(7ZZQ4)9sl+Z6K zuPPzl0#2lTD>F*#3ZXx!x@=xbeh7SGNUsAjF|HT#MpVYp7-=vv1IMFM-0nz)Fc8#@ zC*qH5={}Cg5cr=oaU>~}mTdR`RR76ulvN~^oqgm#qZUY}DJu^nDu1B4F`^(o^_%k1 z=9;d~r=Z(bRCjJK()+`DL@uzQU4mhOF^F_UP~*=%=;)RkX_1$(`7btTI7HcX#s8(! z2(xLdXcJb z0`e>alIgJRXWGx0rYuFFI7zz^noP>R%(5cq(#qDDv_$+7312LYXY#NO;E z7n*ohjh=$Kq)%xq4K!394TW#GoP{@xUL|&*A-BvcfC{LX)8ux*r7*n$(bpUF%1>qR zv8;T`4;UHfkC@DDjV0cN(EjG4FI;JGfnP}Ka+aPpgBiL9K_;>pwBHJ=FUwa`Nig41 zMcW%Y>;D%tC!lfid)NeXrC4fmyY!w^$QIQ(6P&Eu+O*GEEdIodbo6~qp|v8+FEC1% z^E9k$DM3~NM|&nI@p`GKzUjE}HrgT}^6_4T4nyfH?mUD}PsC+oU2G6<>}&*N?wsFz zn3hpKS^aHn9L?sR*t$hK&m;mW9zoSY)Hb8DhBTDDO0xVDJ)cQHdee=ITD2OTL#Pz| zU(JTXZRm+9MWGy(o&MbXuCi()3X{(xP6R$IFkz!-6=JF<>W($XU&#+ms zf`JMFn-qZVtdWFMaXvk5ZI$yD1oubqT!e?2PqJkWUW$;U#baCB@yabMD=4;Fv3F+f zVCH+aZDEUi}o(WWOODx>Vx}($ksG`(s zjp)p0sh7#wWYw*OylYwfn3*ngjx$b_Iz&#FNgi&j>*!r{wDf%uz6}*(fETEFApSTy zrdd2r$qNHFs}7Z_%G{;Ua75%~_~5a`$#1e%OQX^SP!gt-&o0t8;9yPc)c zhE?V?>z`vWDk4sbH7`N%OEZoWT91G(AQ0+SJg|uzqLik<&>3_tp}SUhe$craxC)^g z44u~yfc>zn9{AS_Yay_SZk`&?2>gW55hjh7{50Fs>PPnpy0xYbmdov6|6J2UeGeE@ zHKNN9exYXI>%5%AMNf9pncQ|Zw~1)#Ud%aWJTB0W&Z!FPz}g%Bi7Y?H+*hh*N~6(h zGtx?B1o6{pzt5~DY*xeXNiBnap7Dho1)-)Oae=WymD&i&6jWJwo|@OG=&uYXi=tnK zI*jivtnqBVTFPhXGPZ2sj!U`o3$|*oV<+oAEgX2K$@k^YGie+NVGVB>mM-VW5}vuu zV0oV|h`dmNL)xpU_zgZI-=-&-C2N|F5yehc2Z3LroQiJ;xzKZhMMfH^^VWlhDmb+YePt3qU+5f5@T%95FpywJTyG?T3z z(ZVR5*_W*)C^8cgwV7^Q0m)DdFT3 z<`0ku%DQvy?s~ZznE9L>XG~?qtttm2;=)ok<9lYG;;xC@CRQS;P#3Z4`97hp%<%+& zBt+fKVkOgGXps1MA&<+*KiqpFnzTZtw z4C+pb&tHeoAI9O$oet|#gXiEA_#MBu-t<3i%=D>8%oTU3D~w)Jkgk0PonuXcP1{5l zMPh;i@02uD*4==bcve1j5qHnmlvew6lp3P+AKm&U3t2C|UAu}a3v@i4+o|Y8^nWJ1 zmX&gR0J%!Hv>;S#`jTW!oC4o(Mr-w7h>D?z$>mTs_F4EECDNMshS};E-w#H4Nv>qV zobbEpoj^yNSdQkyWR|XYVgqz%WT#){$x?3RQ`@cHs$jYn=O=Emxch!YlIYq4QC&)) zq-X}wEeJ`S(d>`Tb_f-+IGWA*^nZg2T_rG@skc~=lAz4hgY;r_kAiN$@rP(nX33$_ zi;|41Z_%!2_A*73P$fhsP-Y0lc(EHj?g#f;R#-KkR~x*nOHQ+3>uR>$FDk_OFZ#?A zDvhA|yXb+a(S5J8jhdR#)f>H-|5nL;X2fe2OGjgQf)dCwEfHCUaN4Aq>>5h#^G3na zkoSw47%>X3^CkH*-I+$Yj!K)`WJ;!Tw*lQ4p)u1pfk#Y&Ny*>JS@2DwKcD9ZWBrx^ zv}T%OiwPmBu9fhAmd*l7t}hD z_^fq&Y)$-=QC?2O=ucJvw6rJ);ES%&b8!h7QKp`gHL#uX)4VFKoD6g=qDnXfon^mC zm3Q#>n;lfQ1#{cp?hW0f3fBPNoX#5b@pwy4^Fx4+wY0Yd;24O$QCU21#!)rF@U)bF zQo1!7ctu<8Q+_~0Qyk647>0Wnb0#F(sPk+zA*YKhvIzzo!(#ta;MpVlWv(T!xekV2M&FZEv&shs44xHy77U3&` zaOG8{H`?5y6c@KySijDfp zQXh(NBTpH`!u_<$uo>W{6d!k3j4tp|WuodsA2d@#%Qb-E;8<&zX;I1y%34T80GspG zgK-?40cSU2!FK@iZBjegDV#mMdA)ea|>uX1X;aaaDgN;fKf zSt{^6yF$@rM`-XWyQ$QpO1l??V|#6Q#9X!rhk*PfEv=-=w@%B{&aq&Yk#Us#*b)a? z0PVAi`X;G&U!kkypMX$hz*iF%x!iFeGQ0|)5Yz;L%7E-AJ3-n$++tT~@Jy{wMV{j5 zroQa9U=0gXT(T3MR<#|3(OPb>wvW6Cc4->+%FUEMr19@{a;^F~pvNe`rW4`=^UU70 z=HDy@o(UK8sI`r?;YZcq1o;LxTl34@^(uEru>G*BTm{Q53VXSqyT-UCvDV{j(2sTA zX*&zAX<=mWNF-XF7Iux(tIDDmxY*(=+nCl1lzUOj2XR_higx@BP9JN5J#AN4YjZF< zP?T#$ zXPG#J9y^cDUD{dLQ4;rXY(J=Ur6q8HB)3St*J$u9l}I~7lKhG_WNrAx*8H%64Av+p zzjWOLuukb~Rp?|otl?Noq2l<RDzV?DU4>SaCV_>WqZyyThrC%4IBIIUAoUALliqI zg_QoHt-b_`%alPm(5*aKOoRoFx8zuB-qpg$y^ws4wGr!BJGubs#D5tM??$2sGW8Z` zEtieeqGnvCOZ+e{7Swx}mZO9E$#3>5D~ou8YpEnGg(Bn$DUIt1hp8iHwuZI7Wb2UI zQ@ll)c2$xV`NLu(%pOz~>m3QFASMq;>^wdL{qRRh-_a55&a39uTSfvCqH44qUKZt7^y+v0U$FeA`gPLT~vG%zxo^3__;p zS1Qw{PDj1!MQ(`z22O^Wg!A`ue^DNq7q^B>T}LYF7OHm`*fk6rw|OV93rCopW9g|Q zC>3D97ib82_H_-MqMk$44?{(_*{`lsMh5Fmr3O@iryrrgk2FYq@~9cCB%kBpI$MEu zfI!vfUAR~Q<>lT#pR*U?k%bN-AkAHa6=eLx)*b7hNLSCuU__HEP|BQxcUWqS(rq-U ze7VXU?*Gf7XZuwHL>7Fe?9-si&H^UE5;+ftS!z>@H~T&*uCGj3y_I=8me8t@7#zMy=c%L#i>HLq^NcCq+4ZIW%V z&@Tod#Uh>GKVUAGL?o(yzFgV)@YOqGtBse09toD zyjr=!TW9XJI48t#m;5?D^@Lv}6)-}2g*`0Tz`KD6^20NY=b*BQ?u~9w6#!X;+HYBE z2fq4_>DR^vt-RzSyd*Dn4-L=_tg6hx&H^9{L%L7H**3|B9c^*c-S=D5X4ded1rIto zMc%3N2;k0G!-hG}#_JW5Jmz5?rnmHd*5 z^W~0)Y3e&%{ab14zgBsi#dcQVKU$tNyTFEXs?AXMpaqj{G*s88>gL4R&N|O?adki4IfCqs zR3kp~2kBKyP-Vg#a3(Q7B0Y6{eNBJ|6sEW!cW|UKbT$A>X9yEj->d4nYNdeI28CLQ zx_y!_oMlIAkOO?klI^N}uOTRMdhXRM6j7N@|7yRj!{@1XoGK_C2+{jlxo6e?j*CxP zhP)6cOtQ$4*07ZyrzK`{bgKHk#mff$0r62eSlZeF$LPl_2s(yc((A1pG=YtlfU6pX z=e;=E)oX)o$_~@uCSb1K^mRwWm}>u*@~_y6^JP zm#QY=5iL62QD@u2$M^M3h5{nAxLqYy=&pqlqCY?8;hFlziUYbKaAY*7FK`Yy_{-+h5b78+qQc{sBjEXpP-D>K1iK20-H zo)Kmu;X%I_n`+VZvp(H$C(yC<-!ts*I$-7Xd1S3Wh%b$*~Y(I53DS zm40v4dfPxKWlz5b&(RPbsqrvWmKHkIqbH{h8y=Hc*k-FM)CV9jJ z%Sh+=SL>`A~In^1?2k;07o7Ilb!*WNi-%Uu%ghL<^B_FrR39 zSGFj(-ZGJN5NWq$0~Lj+-^)nEKDHQE99GLZO5eOX58R;|P)tRA7pwbI^-l7$qwAA3 zf^i%q|52&Y?f%XGwMGC+(lEKM@51e;p=O$NKR^QjU_^}jx#Th67P?=R^Q2kqaFv(H z>9P$iOwl}pjzziKEW~V@IjDS9Vy~{{kY0F!%3Gt+vgqU1c8)df#yzXzzKRhxVMV1+ zn8=a9ZGcb+?goMY{p7!uN4q{#W7mV z{^)sYImB8k*1U~*L;#wP&&2IP?N44=s?G6c%xx%`0tkbXl+9@QaaxLVo;nH<>Z6XH zqEKe}Hg0HckQy@wD=w^|IUZ}5PKNC-J63p;+wM0`^5o$pk_f> zOHShP@Zr_1(kf~~b6Tq1JS&Zl>;*Z`?akYBP z(K;64#r=a6I-o@kH4JFa3gdHS0~gB#oB6}X4z(EOgdf}~0{G;2J@SMn%zjt;mvwpD zEAo>?)@Fv_kyoAd8`{BL5``-)M4voPUG3}pxm;RF)jL${c2#)~E?sa=-u@lZCuS%- z=UIemvcr4cd>60FB2>xWsIt8!&_w@}zS2wU#s+tm=t1x>KU@ox02IWm3IbmE%>R&+ z!T=0ld8c~Ij}D22@h1!8_4RpFfMP5riW_Pr1uHm+3IIr2O!G1aC8EEBH+lh4K?6hv?+war=~mHN1y#MH z;C7}lUWQDHGGe?&<)J{a-9Oq`#{=l2(U+Xq6h0(aGxJx}>CHt7W~Y=f}j6hEm)8SCyF3Et>!wP{M7a;*BbdRS}Ks zOTP9MQ;rzwcht4-ror0#5Ch=5xO=XCqnI7(%~bR{FF&(y3$a$@Zl*t|ysOF=TPThs znHIqfPK0Za5`!LbXu4}nBb;Q1t4LXWp1S638Vut)U8wZZO@j@BxcW$6JYHQZZC*bx zpVr_JV2jokbvmXE1{kyuPzd0P*PV9|76XZ z8)lDw!pA?e*yk2}=9N57!G?cY627JA`j_B%i#OJJ5gJwA4gyXX!st(i=P?d;G)?LE zH)oS@@13dgLI)4CW7N01M{Rd4-y#?nmmYTuR#)qm!LXw>gc<4_<)v~-<*!saM*6@~ zj1zm+|LrWuGlc2os-P-GQ@fWnZEq=5_h=45?B}RwZ55#$?vYM+w2UyhhF_f@@=E`A z!$=tBF1mWlzfZ>rDnSc8q3R=IhsD3H;*n9MTsh;k>6}hoZ4CS%oFJ!P3u{VP$6m%=CWjL&FDN8k5Oe4 ze<{Ht31;bB2j^Q>ASPC5Ckc>)*sAWM^d?j4ivTr487CqyYID!|$d%PKZ5yvrN(fa) zBGs`b8l=5dJ5Z0FwK^jry+L4SFYmV(#t<*QKE?` zoKWt*V;#^0bDc`*XL(KpbyJy=h8r0L7(44d6~Giv_x{-aqekpH7P3a*mqkj)x8+$m z!dXRem6j`ujCZ`s-0URBpio#%- zwraK{f6ANGL)!%-Xm77l`34IU(DgAEdZqujU41$9U9Tm;)PNoTHZYj6=zIYyCR*|h zYbDL)a5sxqp0nngt$iDdN9z?E70ds*(4zM!_3o|WQVShuxXd7dXaiFeq$qhl)&ThD zg|6*N;sLrw1L^uN`N*sI993Q3595~bk3#QY_giGVDz~cZ#vOtY^c2S`{lpG`ztMwH zVyLi@`pFBwR)Yi*Bew<=M#e$7&uuTt{@JlgB(p&rmdm9hAKt{+;A{_c4H77T|(iG}JQNGpBXPIY{!MmxNw_Xpq<{a_Q%t8$>0y{@h& zcJ|eaO+T{0n%1yJ6qb~}6wK?W44Fv3-U}6N;j>f&2tQbPVhe!azTiYq9tp)f3lCEj zD59iF(ZZb;*-F(Zs^D7N*HUNu;aH_ZdCZ3&Qva^5i+-l2PZK0)|wRX299Ik;8@O6fhVd7`DR6W+Nb zNesZM)kdYq{)6ir5^S<^L`P)R_lNq<=Tf(5$(jOO0!G$AxWN)L9A!-oQ}JbGFLLE{ z;&F?AWzh>QMLrVU?6(@aRK*RXznm5=?|@oSrAJj}mqBPhroI++J+NCadLw0^X;C0h z0n+1v1A@=zEVLeXfU2O$0EMp`ikI?a)sC?gl+mq9_w2@(?$FRD>P0Y)Scz=-Wc0L!8dSZ@W%>D=orVhkAq1}=w0g`UfPrgi2wsysvK6h7 zdy8xIXp7up4bRgaxLvQnnM1t8f1p`CI;Z_fYuH{DV5is3wwE$4w?%Vep*_uZPk+1z zj~7?wR`u)%IJakjfwTCqNSH#=AI6fqmqmJ1!*23}1`k&s(isY_*RTg$l;b?38q@>O z79jurD%=fbV{xdPQ7WTgT4Is!Ej&pB{bZU~S0{dz&Qi!JuE%BQL8w5h>po@{HS zZ<<=i@~OHRGgKtusYm@6sh&)32A`vB7DcZ_Bai+G%#>uBL!}=q%=OOd_}rS|jhnQHZU9Z`8nl~U4Iv!k91Si} zbx(&#e8vUasEaJ_8I}Z2`V~A*>FIm(tfM3@%9_I%Ok%1Yq7s7Al`*G2SZ+?-h%Mt&v+Mqsm*ZxhQZ$Rjh%9JqZHW z8sZk2t;~PDGNx|wu;E#*=O58&4eV1W6#g?Ct)FT~!8dYM@oo1`Z@Mql2%Gm%^&Y9N z>HF0;F9pZV-e)CgLALeayU=+M1nR#=%Wu};Y4uhZy~`8sE{mP&I^sd#xw7w(+L*d( z7;ySXmXd0Rc>)w22EmiD->h*XHoIz{2|aWkR*%iGuSMoq>~Xg~#Q^`_f`VUxMeDR| zI<$ZN;4UD8yRI&xc**mz3KwuMTl9I=PEiRCnQ*PMtnok8T^0uB`pl3?l&6!9VsY^GF>>3^Dt4-bC3ZVB5?VGxi$Na|t^CsrCn3-k2i(`HLLjXMa%{g#c_m0_|1pL$fPvGExQH6dBZl6-$7le@I>6M;xie zrMKN*lSCZ-moH8_SCo|MwD>`m`j>^LD1Fu;f3E^cq4$($y%U!P>qk9Br%gM3u!Z`p zX`$CIp_>I-Ant)yON=w)n*Bc;!PvJC`3NdgwjU*w_BKYPv(@{7dRG)uB#?&MSx$6@ zo^o6uLd}T5WT_tljM}Xbt@x&G9v*HT91X|l&v%e!dFo^G3YDKzX@5gz7kNPfuZKrp z&*I16)Up(>mHGgdZ2QB4BlrZ_56SQL=+PzHYtgGTHgpo6cM0WMq$3)Mc$-qh`}W*! zer?j~hsH`di+*P@lmQ!S@DCUDwX|3m*9MRMx+N~NXrLNC;H^{!3z_H)J(Ct|Kh>`U z`rj$+@*R;Tq{klth|4{)gG%5>ll;2P!C&{OKotV_{g5khfC#EB7NN@j$cz*+^kkgF z9F4169kJx0qp%zv>c*LlB&I3r(C5uE!@^Vv=r0vbhZA$^#O zRS`|xX_LvfGFtfkQQfNenFZ@}{dzZuD+|qN^c)~SDp?CHwj{V9l@;gnmTsD8I7sOw z)9MQW2~DwA0IUT95HgM(Gr1?W{x*BVyI^Wt8tO#e^I3{DA99mAOQkPV z9^(zN|I*Rk?UaCJ96?$LGd!r1VA{D|%cn5K%FTb- z7nEHcwW2kgXHgU-n^*&?Cvq;?26OSmt4cKHOlMum9_~QO{HP^Dp69l7U3KrQ{PPw@ z{Erv7Svh_)_2l*BMykjix6Gd?o>6tS3T*Z@$$aAduco2j#T?WaFzFa0cZ~oXc!J6p z3*nEu3ZBYB+}^tiUm0@C2)P|JDip(>QXjS?9NRF6bO&eO{mmZ!JzDE_<3>fI$)xVWbWFf|&La+O>7lP5S5%XGoot^Am zPIQq)iJySey~WzzM;)p~1HgSY@&IdYR1uOJoU~g+o%IiR@ft>ab%HTsIyH$4d!j>C z>50ct2wbep&OkNByzBa(&NgdoQf-O!iv^n-VH&9>OU*T`1<_g7 zvYRD7#jfG>OBGs;d3BBtUrI{A{8H0 z8Nd+z)i)X#3E-~kk^ZCXCTr-n4hApr6V`FnM~Y$^aq*2}oIGRhM{aD1wM2@7aSUIg zfz>>-+KZLVEc~0rj>gNV5=|o@WUumoU*ADE8sR-r?(!dnkaKbpxdfisHm1*b6VN`* zY)|FrQ9iQB&5$4xg0rVB!coO1yv2f;F+MjoTpFhImnQ^U@Cme|g>JE?!zk-4Oq|TZUkYDyQc} z7euwMj7CI%eU4Dp+Ac6AIv2MVTq5(h0ml1c>dgLZjq6*-IhNpZlp#$9X-oh6#J`uv zrOH)NM`~!kj|3ZFfXqQIMN848cS@^SY!^%2hGNPQ?A9ZE!BoGu*d{h&H*2j)6#2&4 z>o8J&gogI@l*d??YNx7~92S%VpW-u6p~aaG&2v;Sz*xJgDtB38j;$XDasg{cAW4^U ztI%15dYy8lbc&y6vBmBL973$$VNHl)j#2vPlj}GZKAqwi6}Qvio?5n_ldbex#iu5<%AxxQMcPj*il%lo1no|{9a4?^~c6&5X~O7$az$! zX3y6@Z?7c~k?-x6;1Y?yV6j_($UE^hxfSpEW6A>Efn_70pGO&`q0Rj^k8GzZ|H9oa z>29Qvr&QS1uLQ;t+W%CUuk^O3)(_o92w~4RD}?Z>(o#6MV-X_U2^!oRJG_O z8k`q~Sf=#^VVi`<%5!XY!<*#*cWIg*F2jEE4w`PN{SIq;9Wq3JexNKyKe!HzI`q z7lCgNS@>H^J!rnu`BFDasHU#A5UK&dsv|7$}kIH4A_-(EQBx!)aGnsjsu4b=NCRK z>r#95dsX3DKd(c5ES)EnzT%wvae=~?$_>Ybr{IND1pdDdE>h*B3j&8dV$FY9WTr&` zC0|BF=>-oSx;E0`U-w{@*fbB)?Y>++Z#zzu+XU&U-(?MC^zyCAavjY-aUCx<*epcg zdh9I=-Hxo>63;N9lOzz3^nDR^*H!B0;r}yeaiiC!5ID^DM)-1XG{dJ@;&k`DM_{A? zj}JI6*wsJKSJ?9aM};B$bkB%`Vr-|5LGak!^>c57A%lPs&pC+w#DA{x-v4|(kooR z(p_0Y7poV23Yy|oRk%~gg-TSS^DPdw!&Uqn0P%&vc%Bxd;tCZxld;8(Rt}72J~xbN zWE=9FuXqSGB{MClaA90wb7qy|24v>>vNs(<(=MU6oM46RI!2?Z4U z(|B!;E|ecqWv(?=tqp8$ACV%>Mo-r+3_5@ksM(1A%5utrFzw=I15AI}yVbSkMZv@) zxFa+$LCeePBS>&Do6sUC{2rHJqCRF#`^O>LD}$S%#o`BYYWUqaNC^Q#cZ2#*0Ryna zY1VqIg(xKcvd{@eqEPfGvzcJO7dhp_MoG`TD45}2@GZ}#B6kOhtbcngUk7eUgAck8 zpfZ_O#!{Rc9qLO!>sX9eG{xmh4VR&WP?2Ny8jB)3VoTobHbX=w!D4R?suZ!$Soj7@ z5hZ(_1w;OB4So2CImf^bs)&r!h`wD+f6)++yrhr+14D;tX`V^Qkbghg+1B#i0`BcX-( zQ}&Dey+(Vks;|)+_Xu3)Cx+BX2YG{78!)gN`?C(B4*3Rzl#cV4jJD{es;=oOF#h{7 zS_yjky;bR>*Hq>cm5-9HU~#KLk|iB0l`l&Su@X{twlnJ6`7X1}0a&4Ce~W4Anp~P` zEm+k~Ld~SYj@E`#7um~h!sZCPV~?AyZHQ%qOO>Z0+}e_6?cK0=s=TN4v)6E3@2^^; zBmM}xFvB*Gzp$D$u$>9}B|W4;jKMBceCBC(73HZ0xEw1ga0rKu*rgKd{C=-gfENJ9 zk@w>wDjuk=J+2GJA49S_b`CKE7pEB zTg~E^I68@_D2~c>Ri0U;Z2&s02@TMj)`AKh{s?o}t6I$5f>9Rz)Z%|?utiI`B{#P? z9n%75xQZlfykrfZo4ugIFcDJ`0c`$8;r`duwZaX-2xzNSyp65lMno-34(hQMeb?g8 znysSr-Z#`yi3+B_Q(c=|VPnrx^=6g-t!l*45MD2UCCCPrta8k8n<)PWpAaL#RW=NG zkqTR1K_eE&sGe%Hl`(8kW4qlIN&K8{JLiVq}M;J8r6P>goe3-(jH{^>8t+oR=J2 z3W(E!zsHBYotB-eEU5L3Dn6s^iq1ONz0gNg6|U3-S-7rk&E4w> z#w|0w`!DbYuCVY$V$d!K8EVxc$McuolP8B!5nty1m~{Wm_3te%JSxXU8UkjdG~qFx zglz<}wa7&l`M0HJSUdmu-to5V8?LH}k!tmeHI4H^vT2FKw?nIF2p9!P-R|rk^{%4D zfMdWn3_q9v;z*d5MRClZ?Yw<~TJm(qKXWLCAcm?tTjWm(B9L-#JdhP48nOhCTUhuU zOI~NuGHMDZJ&4$Jh`g@RxBp#}-6e#<^ckt~-V8&1rVg;CogJeiW`D^z4MbFfK$)jrX2R{~K^U1j%vAqM%)Fp&<#1 z^B&cyd(^T=vper3bkW?ZXBS@;@@jTXZo zf|4bG4_K+_%}%#)cU@F*kR?8_<~KOsx5cQC-sY})_X`-$VL%u!G?%n zEND7$Pko8fs396*)D(F>1#q&j-QQI>%%aaZT%8(jO-DFnkSA{CXp3&E+8;h{5xGIz zT0TrrT^B)*Zv>P+ngHSE~OL$SalCRvsnN*0heEYF{|S=Pq?5 z$SC+p#mAJRT)NIecUs%|mb^;kZ`^1Zb;QB7kg-$EEe^CGeJ2 zh6D-2TeI@F3j7xiCd^J@)0s*%R4gQlJG7OwG2D6>2T*g&G27Kz4z@PhXj)wU^^wYL z!wGC?_)Fwoqu1#DH z*AT>)T9o$TzaF!ZxJ)$t2s&`}M!r;f_I<%d!NpE|=D)#ZY@>F!k=t6F3Y)dDuC;t< z(PivZL#B)BB1KV;3v`grio)N=d;B3S`Nbk{`xGJ@>sef&?X|l!L=Y2gF$coFs%<6Y z*+bL4LT-Z^*u(+R%2!MQ0sK|zD_AvxGO+6JtFFTz2uL@iq9|>w^aT&_T4BLnfCOMm ztH5hTvi7kNeUka=AZYx~hxVy55`>j9Wt`5cryE43W55nfpMfEV+;0J->j- z9bhrKwu{9eq^@9gFlQ~oStSRGG#7Qae=kIY7JP);Hn?8*p3#a znc&ub#qIndR><}MJt{7v@V18E9NrI?W-C47p}Gz($6(7z>YDnnKUQghQ$C)Y#nRl* zB7pacERMAJD=)?R{!;#4RZf=1Q|7Aj4!S5GPk@@dy1!sVN*GHhQeK2?MAYRSb%@rA zbCVdk&n>pxm0suqsL09IPQBu2U4=h?D@!5%c~nVpAU>=DL~8HDyvX4yuB`lK4i6Vt zD;H>JiSo;e;OIm?D)=R^;_&|;K0yJ&E{#~kL+S^_mQbM8_NAPwbk z+Ro9XTG>xwXjHf6u~+wY33Vriv|ZG{Kk5FKyvLe{TVyX!Z_tK!MZyQx zzOl9LYKeDMBFr-^r2et(RCr8_82bZa+-c2k3lY}fWFzV+v6XTmqS-hBtf>>>kOsjC zpNIGKZ22s_5tTp9Icw%M?h1=PV!^g5&lD;65rm^_c$8omTp@k!<8{3#cpuxaIzmFj z4gq(I%BT4rt6U)Xq{ul&&TZl`N2;4wv-V*Y{#^t2sQY=wL|7aH?W<<=JJ5Mt5VO^H zh?elFzqdA+C+3(@$316_6Rh!gRqj>(b+$Zi--QF za=`P+ zd#&X&8~c)V;`iB2MG}K{R%W_DlPoAN^7f^>a+`9 zP}NrT{Ax&$hS6^QsKwomvy433R*F+Iyx}I0qMj(idDA$eAF;| z@_<0v2k4z{ROuTFKkbrq&*{CyyNZTGz_^8Rnpt$qxu@2&1nC`HSYm(YdlJv8x|^ew zy&rpdk^~;47eI;#)4(r1PGxYV`O;^qY^uJBG9`y64(8knvw}wYpl0COST3 zEeCn(Z4(D9XyYLgIthxhtcBLFrk`y1OZaYJmoI`m%+UZDc#A6;jk`rn~< zwa7dR;9~C;B6xyH8m{#It#2D!ouH{!aCcB%Y@MCf{4Qhk>~3RqBuhX7rQ=>{yg=#SI;GmoVX=dwOE#hUyQbFTgg_q$2w+vX9VAiB&esz zZR2cV>?dc2myZJxw2otqW zD?l2VN{Gcck|E#7MTA7aY)3Garv$|fGiGdMX}U@$*6TRhn~4Bd7WzR|@ZB$rDTka@ zk(Zn+0s4cXPVfBk-)G0Ej+u+&52~k6`c~*>aDQ+ji4XaI*7~|Na1i1Bc@BV6wJTLV zU7F=c(6D9JImOy{#Oy3gs5o5Ui=EQr4L_y6YgIf7|CO?bsf;qTPx(LT#|`tpD{mob z*Qc^P!V(iz8>=jtoqJj%ut~_5RgH#?&TU8}dLV)08a714hg$p-i+o1Pi>kjWJu+QC z!Ao3p6V%_YUUNPtcb7Fzw9b{Rqh`a4*723ao-)G*j@5VxpPnw=QLqHd8r4sq*+ft8 zSpJumpTdD+!5nL#cc7SFuF9SkJ;@CB1BWd5%}G+(!i^R_(L$}3Bq+b6NrlzaN87}( zGHeQKsQh1xpiRt~{b->}d|9BRj<#?=i1fAqYWQNM|9Z8)Gx0j1SBK3mA+6X>YIOiY zGcA0s#b#QP$&Yia=@c*FP&q~r7sZ|7D{{cSYpw6Pmo+h{(pB!^_`KM~j{7f%%O#i6DR5OGDpLz4v%Z%3NY;pr2#3+|E<*7^fF;q;KTexHaR6Z*h z#Nu2_t?Zb5gzB5CAEnoweu1$4(yzZB?8L#%YzipB)?ck{nkDbD7^MeX-G?gmd8GQE zT$bNjjB6OQW;dU54wAw|EoQcrxjxS^Tua4gh;z2c7}YKj{u^-Fp?T`VUYxczW+CA2C zv9&<<65>{t&QNKB>l`p!13Gly?z)`z0qa2g55Jldyk~Y(E!_>*i$!0u4giZ=Gzh>! zYd}G{r;1J3&@A|;CFqIn5YuyPAsRwjyZIXUKMj=~nTyW%{-*Xb6pB+K@PV2WjK6)vw41x^01N{f&0gV&WXg5llPVBL zwTTK3sQRuM!YukR3;^s;dZSG&LitT&_l62rTI0svwdCg*;Q}4l15A0UEi^mNnVq5< zFdCyf7npr&2`Z`kU2&LRWlo)V$4;0!+1fiT74_P+{XQB_kIWOq_q=K*BkNw`eu<++LBC?1kFR;9y&buIj}3!5tm zkCcc(+x9xJhdXSg(gzkI%I#RRIj$+dZlac^3gl$twI`ohX&@W z|2p-33AggTm&e(u`fF$A$yV&gD0Lqi>+Zjt4h|2pH#BsZs_4Tmb#pfI zrvQ=N+N!PNy1l_3E-Fi|Xt50~*xf>b$}P%5`acB;?x-`8*T#1&NpXjaXo+f1OI;R? zS}gX3;q*$+eV?O>LvTiY8&E|2q8bk8p&5wIm?o}7#6PtD(Nd# zfppwMecV*wX6Sl%aGwgG<={g1`oy6IXbb4*MpwHLhYK zu?IcD?GLq~BK_`D7NN4AWkJ@#jmQ?NJa0)JhdejiLg`r_)<1p`1u#`&H&n2O4pbfw z#60Vy%cD3t)@$r)!uNFVw(4f&^S}9X=nY+HQhHX{*s;S8ad1rM;*wsn&;*xL!}v0I zoD7WA3KozvJ5J@VtQCG6#``rD-*&wkiUoC zcUS2p<-gNVrv`4%gaEAw6xu{gybN&PRh}IzR1?T|+zz?**>Ag{_|Y z5|&t*9o6@P%Fq(u7?U(Ygs`AWm}jw#EwrPU*^ypn?%x&71Io9naFfa}s&=2FYE=%! zB`QF05d&HT_PBPt<&WhX=1+W(mTcwK!&Lr%2@@JkelI0|wu zwixX4Pg~o^60<6r@pM$gvH^RYQomSZ4#%6&GZ)9G0(5{$cQs3HX-$_{3c}zuT2Og*2f=Qs6E)8KRTu#6B)ZM<7bFr*C>p_pK{ z{8Oqjo(%rOgy6K4ag8FpOyqiZk#$x`D}}W?4=b({u#imx13B<(PIz>Q$15}5z444; z8BD8d<~RPmhrV!C8&zWeN9vl*KRQ9Eiwjl{i8+^7pxX1wPL^g{D}cZk>Vunr>pDp} zDvM@It!vTCEIiX1aDc|aGv-qWk!xHpByQo43gLW55kgRb>OB~M{QhLR2 z`Q)vln=edMk>b8pLx;d%eiw|p*unNej2x5+l;daE$hB=8C)*Q3@Yi>tdiK>|cU{rV zhXLK-cZiJ)!9>M(x3h`u^rW|F=~aH_cK}zttU-$1jeWRh zV$i}-&JwA~q6d00)mVMRT&FxhPo(sxKm2`qLq$P)OjPy?6~P$@$#_y~wB~ke`j&&o zh${-6?_GFou{Hi~0SC@e0^LPAlz82kyx6uEDM~`{H%RjVfAOP5Z?*&~4FqRw=?yJ< zrKPSCEE`pS0Rjz@7p$&dr44NJ$Ruk)RCtp5mk28poi&?Ab1Z?xhPDYd-AN(~y({es zAYzVC_fteDebiwS?q;9W45|`fhz@!ixb1z3yqUa?*w}w9~@`+Gh)h0?@=iexO{QP>5 z61+_5dzEHc=yywz&Hk4)?CfnMNyv+mT7){X${h`e18UjqZMMWyqOQ^tnY;gppe2FDFYJZiESM>uhYtNP`yr=FDRhZ_i zX~&<|cyOKQo8}gYflpN!vIH)D{<`6wgjvKJ_zz2LsO)@Y_E+g{<#5{V@4Zyx&b-e< zEx^=pi6^9%Ua@e8OYABiTNHgp+5$*H@@0{Dqj(}G@<}(Hkv~$TnQK_Udf<~G0KHv9 zHz~^mpBps@>Gp%8C0$!B^xBSEx76Z6N1ZQN`ztO6ht8p7>048M$EpvLz()5(R4r5f>h%;U`@&cJJ>Qj|yMOXH^f!wU%F_mfLIU}fBPqi4}{}Lk{ zBfP3bK<6JJl<^Okn1#Wn0Z}?_zX!u;X!90qW5IG20OaZ1Ua=PBnt7EEP=+ds^yH|$;w5%?Wz9gEC(^q1-fXQ=lCY6usGXjb^zhNlRA8mP6Ip%h5mzPXIQX_ zi;v3oy`J%M58RDl)GL4+5bYtgh_uXqPQkr2Y0Ai3yDm(+GbGN#zc+&~{V+ zs&1yr6!1?NOy#j>Rjd&N5?l?<-__7kD(^2?&gk`K7eZWG{CZ0wVv4+`BB1Lfi|WgD z=t(V~r)9@z*%ewYWwufg#F%mcRTjZ-ANe>bHk5_Dev5r*h#i?ugC=vLQbHSoM`iUonGPzroS}++^k7LjCyaQWZVa*ZWe%n;5t zTImT(>dS!%+DwSbP4Jk=5{(d1AxP$?F0F5;?c8FT8Rv$ZQ|$mucZSnDw2g9~Yj9JMbKmfc#qV@> zx#ozOMF}*x#r^65?I+;ZCbUX#TQi5=N2C@lW%r}uJYSg=)yEvPEj)a(xZdc6rK91>HdUy=j-YT+8SexUB=aOH)eIH#&wgBzky3=6obHV> z_B>)ILM^U(3k|p60ae!()+AfqQ(j{YR2*95rEK1Ztm0wG;IO~5 zKUfcwZ!;`}7A@BA&~2M}v^T6pl6pNOayrAnGPkf#d}N*r8qPGkQ)Tprb1aH8h*CCX z$?L6&Lm!32rL^J>A`_FQXH_}Z(Hr88Y80Mp57gNRQXrPzr$t0Z-sKHy?ikfh@HE+u zGpu8wwfx80x3Tu`jBKgwyM8i~-BjG$d!XT4So;sGZ&$JPzNDr6gqzXkyI~--y33`! zQNUXb)r$FTxCZz%RknzQ4s@ASz_iw*c#}stXjSSqB0SM5hC#z6?;DxF9a3;>K{j76E9zL_@HJoA~vL?mv~0HnQkeHhd>* zhbc!&c8y>{Im)U(QRi6l1nXSSM(pAELic0prSj|ZU0Ye?ZYmT2L}=0jht_p$pE$}A z&ksNf3HKVI`|M!w=wGz_bT5KhiKh5URcg{vE(eW)_#+YLZF4H2WJJgGhlPLjRh9lB z%Z`Ty`44GQL=Pe$)nKfiDYiWoi~}pJw|iPD0nCY&EJ6>s7jm?m)1H-P^>*s7OZD4U z`t3|uYlL;)U&Z%SA1=wT#SSuT*J#_aHA|dm4L_-b+~YJ$O|;l7^>!=EyZF$CU8B-s zVdy0o0?S==7mF;G`u(uNr5QB3%Du`oACd*8sk#%y|%XcbVX9aR8FVWex5 zHD75_fNau+=ob&De|jJ{5Yi-L%~XEe!T>t7gWy94sSMcjl!g$0Kyg22!zs6a)3R%s z59a}}Ev+g8R-DGxun-DK4(WwneDmKV2ENRRbP6}xPiB9p)T#6emHO>lJCBc|Jaclf zjD+ybcjk7_WU6~rI`MEqaduyd?)wk0?P?(nHUbdH?9bls+8?oCAE093UiNyKH(drPY-R&t8 z#;Sz)u&>I4j`e=Obh|RZQ+sNNtYprbQ@j<2!0B2^!G-OO}GUxXVpSsS7-$ zAUwvI)XLgQr^QFcrnQd-+ts%~JzZ`;>)T(0({#u35Vcj|0u{#4^ck&B0!0?Q-Sa9^ z`!7@v`GPc4<5k*R_>wV`Fpjzg`&FWTv?$dax}UUqiR7+XbJ1E4QJJrB0)c84hCjh7 z(`O+_q?pio6pwW6I>Ffuv%K3apHIvrqLRIx&c{`jz9k3^XFXOPQxQU+G*w>LE-Ix} z!Y1*ay5@vJqfvmNSYlH$5pjlfFwOT!iy@sMmVb%{AJGsJuGP%`GR&aWRfM4sHE{WJ z;c6wRufJV6?iXtG7rg+eo@_>Rz!bEGhHJ11b5K@YTZTguXef}X9~tI>=w~^l@2$_P ze8TaLq45Y+Jm{jC-`rp!c%1u;2rL*<==R2~E%ZMPy`ZjVBcTzyQada2tMW^gdj{9D zs=R413<744aL}=Omb5!Sn<@l)fZ%dk5iEQMD6KMIvL`Ku7<@h2S#`BUL&VRJ9-dw^ z8d{O#vPvg9+&#a&|I_kL^&g-i(w^RiW3$v$>sV^T{zVLvCxvdo zNT-39e2dU$0?B38RM+~6&^T!G71XtNB1A_B(6DT(20^3#Weqp^u~`JE$N4u5xtmJ( z|DF};?5?)I%;v+1~+Cgm1W4-1^*z|p= z`YO?XT{e>|EAz3(mE(s)?pEn^rG_i`s@6Knhj^u$&4BCgR_Q`-@yh#I^SL(WcozhA(JiD;YYcg)Hhg5RUj<5R zTHTS>aFiu^$^6jkJ%6?TN>xvEk#fVPs?t!g_O`GnI-E5eN9{XX7}C(Lu=_D4M6mHc zffrY$ZIwaoJld5LF(?thGioW^uOPv`oiMV=yY z$=YtVwrkLOdzEHQDgaWU_MKzR3$0^EYoA~(u=k|=oT256LCbs6MQ*lJe&oKpxND*X z#EqS64ITJdGziJhZFrk2!7DuGg|>O>4fn|`d6oj)F91YcB?^R#EkH4{iL|Z58L_W? z8VM9bX{?1VbX5yDNV>bN{@Pt%0HK5c1Yr3ZhqH%{R2hjK17D_FWTtATIbp}?*>s>a zKX1V$j^aoD&zdn?zG}@l9WM1Eec%%HJ*Etp>%|@;h>?<%bR4P(tO9zG^_tqV$g}LK+&}EH zQystoPi73m(CI>J315VdU0Y7(&8|Tk<@WFH!y`RZex*x_rF)Y}u6_nCbQI2YE32tE+sA^YFYBzI7_}Gt;em{bm^N=w?rX0=dHH1mNFXL) zT|TtdcE|G>P(ngADj6&nHF~PMY}he4*j)5TzSqF(>c3BYpQvXi<+t|&sqqtw{;1m8 zDsAY*N1PS1ortce{YA!s+gmVOPL5BZ&QazBEnnG!8?70E>h}uvo;(!jXX@vbwyU49%8YNgW@KpGL8{TaJ?p#=H+5pV zMbS!~?mutv8=M{%#Zy%c=Z;xvsT?sW zZO+w^on8Q~`gL?@Q?LBcDXyvhtJDvox0>f-<|uO38XKZs78N@<>?amu*i8gE7B*+) zuGAnImdAS4QLYMecm%Z|0*gx#-#LGt>+rxeavgw@^e;c}8)sVV9cA}Y-)S)L7JbIS z1Onh7EmDX0f-@ABE5gYEl&UzKi_RZ4{pr|{4{6W6iNMSUfAx@`F-aLXp-0tK85bHi zL!xlL$>BDFERwf@mDO_wepi`6aa|f5BiO^xXtyv9a9);Fq9g}OK<2cS3csRyQZ=L^ zwAELPAopETpu)b@nm$F4)&iK%SEK7m->K0?kGz#7q<1vJiAV3`O!_N9NPU0OFrl^?ftoBkCkT z(mC96PF@v>Bbx0ZMQv+L`6?an@2VkVsqH@|wL2n$(aby=; zdcrEyd#H}@Q6}c;h&}6R$vRq2`204jdcVY0%gjcJXUz`)M_7EMhnnU{Mj>zGWw-?Z zCkx0@_+I!)DqMNsWXQ%~2a!--&Ml?FTP{I}QUx9DZLVIbdnJebk+lQ930?(XPcTLWN9cI%9`&7L(Y5``0dO&hXehz47VrVkb0B6R;c`P2 z`39F-!+5jH$u3&Gey<}#V?ShHc7z*UcrU91>oc$SL2I1t7kSJ2)_SeAK!zR8{p&vy z%BTqPGtnBD(~626k?Gm4mdp`I{<(S@mEVZ{soG?f7N|f+@TRpgQ8%pG$qp5O-I2XP zO-#D>B%$s6#6q_yyQmJZLrX9XjS^%ZL%d7iaF}a~E^L0~SD)!z`v0~#>W5KY>xflOjKXiKI7p>OE%v=7(yE>B z>@l5Awd6okL%~9OD+g|Il~aJ!?CR$90u}+WAe3$2Kh$pp|3EvbMhi(lbTX(l@p3BS zQQT8hM8M1_>VG_}(_MDhiVCMBH2`t@z!%xYfF2tQejkBQo`$N8`bt!HTqssW!02Igm_H*?R*as2v~^(;yt zI_vnj4Zl?Ny*l2Bba6Wyyn~G)R(Ff4LN05%HM4^%p$va zS*(5R)vc*d$^VY8zhWfB7Pj>oGl1Im6C~~`T`4jOsx)oDiH86jTHDUn@}sq2)V#yV zp8jvS3M~4dH9unPXKUZbnqQC@{Ca$1S^bO1$gH4=J=h`*OwHB?0sUzm`rS%BUS zQ_}3QLN>P}t2H|C9o?(`#gHq8sEX8y@}CVE1uSbk<+y|pzE3jZYx7~{PW3mgjcXK{ z$h@t8@BRVU&(Z+AIDj?~gT7Q4tALKd)JipCmQ*fD7GC)Uq);R&Vx zq|8%ZYTDnj4(?tmJ>J(1>-XL=^`EKy*%o@w0su|`ijhuvlt7E9JZ_W z2i3YUB3goG;!w}otXyF&2LnK9V1%*>3+T2c8W1FJ0mqrHJ-Ow!!G@gW(sL?qR7aGL z^&6tb#s9uaUm_?_Wm}2w_HXx~wNA433D&#`@0Rz)X@bVScj%}6D(m{qI$pF8oyXhi znWxo1DD$~RE_D%L4W^rb&&LgCbpC0-Jl4)*61T+mOvlRmS$N$#lRn?BA#!gbZ4I-k zia8^!pK$ENG15guVK|x*|5~M+luud|)f>tI3~_DSa~6OH_g3*7H&vzop#GzkI#+%C zgh0T5niN1~z;+LeR~`%yEcB3iV{o=L;MY3UNGlnrD7%-6j87PUc+me=;S`?<3%~k( z*mk7~7kF`xb{pp3%oqNHxBsS6NozPN1N6u$ysgZ>C<2WLlk®uC>$HSEo~w(u0H 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 delta 70846 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 LI$plvaAN-tdp9md diff --git a/test-data/multiformats/Format7lsb.sgy b/test-data/multiformats/Format7lsb.sgy index 0625b51b4cab52cd4389e79401471be234b07eb6..c4811408acba6a9a72cf7eaceac68d86a676b46e 100644 GIT binary patch literal 196110 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 literal 196110 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%0A%1KDbhM0x*I_I?-X=hsdl^vI>-xuXVP9}y$phs( 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ℜw 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®uC>$HSEo~w(u0H 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 delta 70846 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 LI$plvaAN-tdp9md From f160811552e5339925a0025f0a5ca3e7671d1510 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Thu, 27 Mar 2025 12:14:44 +0100 Subject: [PATCH 25/61] Build wheel in benchmark CI Current logic is flawed. Intention of benchmark tests was to build library from two different commits. However only C/C++ library was built separately, python code was not touched and included. When current commit's directory was checked out to run the fresh tests, so was other python code: tests were always run on the same python part of the library. To fix that, build a local wheel from existing code and make sure it is being used instead of local code. (cherry picked from commit 3ca438f8e4b6ce7f6ae51db290ed904fdc574667) --- .github/actions/benchmark/action.yaml | 34 ++++++++++++++++----------- .github/workflows/benchmarks.yaml | 4 +++- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/.github/actions/benchmark/action.yaml b/.github/actions/benchmark/action.yaml index 8c96627b..a9693b63 100644 --- a/.github/actions/benchmark/action.yaml +++ b/.github/actions/benchmark/action.yaml @@ -18,32 +18,36 @@ runs: - name: Checkout commit which performance should be measured shell: bash run: | + git restore . git fetch origin ${{ inputs.ref }} --depth 1 git checkout ${{ inputs.ref }} - - name: Configure + - name: Build wheel shell: bash + env: + CIBW_BUILD_VERBOSITY: 1 run: | - cmake -S . -B build \ - -DBUILD_PYTHON=ON \ - -DBUILD_SHARED_LIBS=ON \ - -DCMAKE_BUILD_TYPE=Release \ + python -m cibuildwheel --only cp312-manylinux_x86_64 --output-dir ./wheelhouse python/ - - name: Build + - name: Install local wheel shell: bash run: | - cmake \ - --build build \ - --config Release \ - - - name: Set PYTHONPATH - shell: bash - run: echo "PYTHONPATH=$(pwd)/python" >> $GITHUB_ENV + pip install ./wheelhouse/*.whl + rm -f ./wheelhouse/*.whl - name: Checkout current commit which contains all tests to run shell: bash run: git checkout ${{ github.sha }} + # assure that local segyio doesn't take priority (one installed to pip is used) + - name: Remove local segyio + shell: bash + working-directory: python + run: | + python -c "import segyio; import inspect; print('before: segyio loaded from ' + inspect.getfile(segyio))" + rm -rf $(pwd)/segyio + python -c "import segyio; import inspect; print('after: segyio loaded from ' + inspect.getfile(segyio))" + - name: Make segy file shell: bash working-directory: python @@ -79,4 +83,6 @@ runs: - name: Remove build artifacts shell: bash - run: git clean -df --exclude=.benchmarks + run: | + git clean -df --exclude=.benchmarks + pip uninstall -y segyio diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index 6c25b0fc..22d65475 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -19,8 +19,10 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Install cibuildwheel + run: python3 -m pip install cibuildwheel + - name: Install build/test dependencies - shell: bash working-directory: python run: | python3 -m pip install -r requirements-dev.txt From 67882ca0625673a0126857025cc2fd079455e4f6 Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Wed, 2 Apr 2025 21:29:33 +0200 Subject: [PATCH 26/61] Bump minimum CMake version to 3.11 Red Hat Enterprise Linux (RHEL) 7 has reached its end of life in 2024. This means we can bump the minimum required version to 3.11 which is provided in RHEL 8 [1]. We assume that other systems either have CMake 3.11 or newer available, or have a way to install a sufficently new CMake versions. Bumping the minimum version removes some deprecation warning (about support for older CMake versions being dropped), and also ensures compatibility with CMake 4.0 which has dropped support for CMake <3.5 and was rolled out to GitHub runners recently. [1]: https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html-single/8.0_release_notes/index#platform-tools (cherry picked from commit 3e2cbe6ca6d4bc7d4f4d95666f5d2983836e8461) --- CMakeLists.txt | 2 +- README.md | 2 +- external/catch2/CMakeLists.txt | 13 +++---------- external/catch2/dummy.cpp | 0 lib/CMakeLists.txt | 2 +- python/CMakeLists.txt | 2 +- python/setup-CMakeLists.txt | 2 +- 7 files changed, 8 insertions(+), 15 deletions(-) delete mode 100644 external/catch2/dummy.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 41e9d639..fdc95ee1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.11) project(segyio LANGUAGES C CXX) include(CheckFunctionExists) diff --git a/README.md b/README.md index c886a4c6..525e14bb 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ A copy of segyio is available both as pre-built binaries and source code: To build segyio you need: * A C99 compatible C compiler (tested mostly on gcc and clang) * A C++ compiler for the Python extension, and C++11 for the tests - * [CMake](https://cmake.org/) version 2.8.12 or greater + * [CMake](https://cmake.org/) version 3.11 or greater * [Python](https://www.python.org/) 3.9 or greater * [numpy](http://www.numpy.org/) version 1.10 or greater * [setuptools](https://pypi.python.org/pypi/setuptools) version 28 or greater diff --git a/external/catch2/CMakeLists.txt b/external/catch2/CMakeLists.txt index e5088023..1eb0fef0 100644 --- a/external/catch2/CMakeLists.txt +++ b/external/catch2/CMakeLists.txt @@ -1,12 +1,5 @@ -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.11) project(catch2 CXX) -# Dummy source file added because INTERFACE type -# library is not available in CMake 2.8.12 -# it's STATIC, because MSVC would otherwise not generate a .lib file, making -# "linking" (for header path) fail later -# -# TODO: when cmake minimum version is bumped to 3.x series, replace with -# an INTERFACE library -add_library(catch2 STATIC dummy.cpp) -target_include_directories(catch2 SYSTEM PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +add_library(catch2 INTERFACE) +target_include_directories(catch2 SYSTEM INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/external/catch2/dummy.cpp b/external/catch2/dummy.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index c8410301..0016d554 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.11) project(libsegyio C CXX) set(SEGYIO_LIB_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH "") diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 6c481b96..509b4d77 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -7,7 +7,7 @@ if (SKBUILD) return () endif () -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.11) project(segyio-python) if (REQUIRE_PYTHON) diff --git a/python/setup-CMakeLists.txt b/python/setup-CMakeLists.txt index cc14b632..b83d74e6 100644 --- a/python/setup-CMakeLists.txt +++ b/python/setup-CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5.0) +cmake_minimum_required(VERSION 3.11) project(segyio-python-extension LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 11) From d203b4980ab0bbc4a19129f935c47c46bf3f66ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=AFd=20Benaissa?= Date: Fri, 8 Dec 2023 21:51:32 +0100 Subject: [PATCH 27/61] Add missing includes - `algorithm` must be included because the header uses functions like `copy_n`. - `cstdint` must be included explicitly on Fedora-based Linux distribtuions, like Red Hat Enterprise Linux 8, to make all the used integer types available. - `stdexcept` must be included for definition of exceptions such as `runtime_error`. (cherry picked from commit abfa92c6286c3acba727f81f589e39754af0f7de) --- lib/experimental/segyio/segyio.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/experimental/segyio/segyio.hpp b/lib/experimental/segyio/segyio.hpp index e1cec0f1..87a9cbf3 100644 --- a/lib/experimental/segyio/segyio.hpp +++ b/lib/experimental/segyio/segyio.hpp @@ -1,12 +1,15 @@ #ifndef SEGYIO_HPP #define SEGYIO_HPP +#include #include +#include #include #include #include #include #include +#include #include #include #include From 7b51b980d87d9833fe85dbd887606c27deecf144 Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Fri, 4 Apr 2025 14:31:30 +0200 Subject: [PATCH 28/61] Add tests including public headers These tests try to check whether the inclusion of segyio headers that are part of segyio's public interface prevent other projects from compiling. We had cases in which our public facing C and C++ headers did not define all required includes. This could lead to failures depending on the compiler and what other includes were and in which order when a segyio header was included. Testing for the correct headers to be included appears to be non-trivial and it is not 100% clear if this test is sufficiently accurate to prevent further problems in the future. At least the test tries to approximate how segyio's C/C++ interfaces are included in other projects such as the the si4ti project [1] that uses the C++ interface. If our tests is too simple, we could also try a tool like "include-what-you-use" [2]. If our test does not provide sufficient value, we can remove it again in the future. Note, the added test should fail at compile time if anything is wrong with the includes. [1]: https://github.com/equinor/si4ti [2]: https://github.com/include-what-you-use/include-what-you-use (cherry picked from commit c35e43dff5edc53f02f9a9c1dbc2900eef360014) --- lib/CMakeLists.txt | 16 ++++++++++++++++ lib/test/test-include.c | 5 +++++ lib/test/test-include.cpp | 10 ++++++++++ 3 files changed, 31 insertions(+) create mode 100644 lib/test/test-include.c create mode 100644 lib/test/test-include.cpp diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 0016d554..a0026f58 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -139,3 +139,19 @@ add_test(NAME c.segy.mmap COMMAND c.segy [c.segy] --test-mmap) add_test(NAME c.segy.lsb COMMAND c.segy [c.segy] --test-lsb) add_test(NAME c.segy.mmap.lsb COMMAND c.segy [c.segy] --test-mmap --test-lsb) add_test(NAME cpp.segy COMMAND c.segy [c++]) + + +# These targets check if code that includes the public C and C++ header compile +# correctly. This is done to detect issues like missing includes directives in +# these headers of segyio. Missing includes may not be picked up by the tests +# above because the test framework does include some C++ dependencies like +# `cstdint` and `algorithm` that may be used in the segyio headers. +add_executable(c-include.segy test/test-include.c) +target_link_libraries(c-include.segy segyio) +target_include_directories(c-include.segy PRIVATE src) +add_test(NAME c-include.segy COMMAND c-include.segy) + +add_executable(cpp-include.segy test/test-include.cpp) +target_link_libraries(cpp-include.segy segyio::segyio) +target_include_directories(cpp-include.segy PRIVATE experimental) +add_test(NAME cpp-include.segy COMMAND cpp-include.segy) diff --git a/lib/test/test-include.c b/lib/test/test-include.c new file mode 100644 index 00000000..db4fbc0b --- /dev/null +++ b/lib/test/test-include.c @@ -0,0 +1,5 @@ +#include + +int main(void) { + return 0; +} diff --git a/lib/test/test-include.cpp b/lib/test/test-include.cpp new file mode 100644 index 00000000..aa8c4465 --- /dev/null +++ b/lib/test/test-include.cpp @@ -0,0 +1,10 @@ +#include + +int main() { + // Open a SEG-Y file to avoid error about unused internal functions. + segyio::basic_volume< segyio::readonly > tmp( + segyio::path{ "test-data/small.sgy" }, + segyio::config{} + ); + return 0; +} From 72a34762b18e9bf3d98f941a0b1fd12746891b3b Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Mon, 14 Apr 2025 20:27:32 +0200 Subject: [PATCH 29/61] Use numpy system package in bigendian workflow That speeds up Github Actions workflow from around 35 minutes to 7.5 minutes. We are now fast enough to run this job on pull requests. Numpy is a bit oldish, but it shouldn't matter to us. (cherry picked from commit dec89ae12bb258440d979726378599023b874786) --- .github/images/bigendian.Dockerfile | 4 ++-- .github/workflows/bigendian.yaml | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/images/bigendian.Dockerfile b/.github/images/bigendian.Dockerfile index 7a5256f3..3cef90cd 100644 --- a/.github/images/bigendian.Dockerfile +++ b/.github/images/bigendian.Dockerfile @@ -1,12 +1,12 @@ FROM s390x/debian:stable-slim RUN apt-get update -RUN apt-get install -y git cmake g++ python3 python3-pip python3-venv libopenblas-dev +RUN apt-get install -y git cmake g++ python3 python3-pip python3-venv python3-numpy WORKDIR / COPY . /segyio WORKDIR /segyio -RUN python3 -m venv pyvenv +RUN python3 -m venv pyvenv --system-site-packages RUN /segyio/pyvenv/bin/python -m pip install --upgrade pip RUN /segyio/pyvenv/bin/python -m pip install -r python/requirements-dev.txt diff --git a/.github/workflows/bigendian.yaml b/.github/workflows/bigendian.yaml index 7828437a..6f026392 100644 --- a/.github/workflows/bigendian.yaml +++ b/.github/workflows/bigendian.yaml @@ -3,6 +3,8 @@ name: Test bigendian on: push: branches: [main] + pull_request: + branches: [main] workflow_dispatch: jobs: From 8d895eca8b3c86d9f416f63b762b04b609c4a651 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Mon, 14 Apr 2025 21:06:05 +0200 Subject: [PATCH 30/61] Cache s390x environment Caching environment should provide additional speedup in certain cases. If cache is available, job could finish in 4 minutes. (cherry picked from commit 662f1476276d1b5e59be9890e395d1aa5b1a7427) --- .github/images/bigendian.Dockerfile | 4 ++- .github/workflows/bigendian.yaml | 49 +++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/.github/images/bigendian.Dockerfile b/.github/images/bigendian.Dockerfile index 3cef90cd..1f6528f6 100644 --- a/.github/images/bigendian.Dockerfile +++ b/.github/images/bigendian.Dockerfile @@ -1,7 +1,9 @@ -FROM s390x/debian:stable-slim +ARG S390X_BASE_IMAGE=s390x_base +FROM s390x/debian:stable-slim AS s390x_base RUN apt-get update RUN apt-get install -y git cmake g++ python3 python3-pip python3-venv python3-numpy +FROM $S390X_BASE_IMAGE AS tester WORKDIR / COPY . /segyio WORKDIR /segyio diff --git a/.github/workflows/bigendian.yaml b/.github/workflows/bigendian.yaml index 6f026392..7c1f1ebd 100644 --- a/.github/workflows/bigendian.yaml +++ b/.github/workflows/bigendian.yaml @@ -22,11 +22,60 @@ jobs: - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v3 + with: + # driver must be docker, likely related to https://github.com/moby/buildkit/issues/2343 + driver: docker + + - name: Set caching parameters + run: | + dockerfile_sha=$(sha1sum .github/images/bigendian.Dockerfile| head -c 40) + echo "DOCKERFILE_SHA=$dockerfile_sha" >> $GITHUB_ENV + echo "S390X_CACHE_DIR=~/s390x_image" >> $GITHUB_ENV + echo "S390X_CACHE_FILE=s390x.tar" >> $GITHUB_ENV + echo "S390X_IMAGE_TAG=s390x:$dockerfile_sha" >> $GITHUB_ENV + + - name: Make s390x cache directory + run: mkdir -p ${{ env.S390X_CACHE_DIR }} + + - name: Check for s390x cache + uses: actions/cache@v4 + id: s390x-cache + with: + path: ${{ env.S390X_CACHE_DIR }} + key: s390x-cache-${{ env.DOCKERFILE_SHA }} + + - if: steps.s390x-cache.outputs.cache-hit != 'true' + name: Build s390x image + uses: docker/build-push-action@v6 + with: + builder: ${{ steps.buildx.outputs.name }} + context: . + file: .github/images/bigendian.Dockerfile + load: true + platforms: linux/s390x + target: s390x_base + tags: ${{ env.S390X_IMAGE_TAG }} + + - if: steps.s390x-cache.outputs.cache-hit != 'true' + name: Save built s390x image + run: | + echo "s390x image from dockerfile with sha ${{ env.DOCKERFILE_SHA }} not found in cache" + echo "made s390x image with tag: ${{ env.S390X_IMAGE_TAG }}" + docker save -o ${{ env.S390X_CACHE_DIR }}/${{ env.S390X_CACHE_FILE }} ${{ env.S390X_IMAGE_TAG }} + + - if: steps.s390x-cache.outputs.cache-hit == 'true' + name: Load s390x image + run: | + ls ${{ env.S390X_CACHE_DIR }} + docker load -i ${{ env.S390X_CACHE_DIR }}/${{ env.S390X_CACHE_FILE }} - name: Build uses: docker/build-push-action@v6 with: builder: ${{ steps.buildx.outputs.name }} + build-args: | + S390X_BASE_IMAGE=${{ env.S390X_IMAGE_TAG }} context: . file: .github/images/bigendian.Dockerfile platforms: linux/s390x + target: tester From 4fb53210e92e1c37bea4a856ca34eb17ff0cbd05 Mon Sep 17 00:00:00 2001 From: Yngve Villanger Date: Thu, 27 Mar 2025 12:15:02 +0100 Subject: [PATCH 31/61] Fix end-of-file-fixer changes (cherry picked from commit 4660cec0aa488c095099da5c4685747d98736301) --- applications/segyio-catb.c | 1 - applications/segyio-catr.c | 1 - bandit.yml | 2 +- mex/TraceSortingFormat.m | 1 - python/test/segyio_c.py | 1 - 5 files changed, 1 insertion(+), 5 deletions(-) diff --git a/applications/segyio-catb.c b/applications/segyio-catb.c index 4d6ce53d..33f14114 100644 --- a/applications/segyio-catb.c +++ b/applications/segyio-catb.c @@ -229,4 +229,3 @@ int main( int argc, char** argv ){ } return 0; } - diff --git a/applications/segyio-catr.c b/applications/segyio-catr.c index 2007a58b..8a4cf1f1 100644 --- a/applications/segyio-catr.c +++ b/applications/segyio-catr.c @@ -725,4 +725,3 @@ int main( int argc, char** argv ) { return 0; } - diff --git a/bandit.yml b/bandit.yml index ec2e3a91..75d550c3 100644 --- a/bandit.yml +++ b/bandit.yml @@ -1 +1 @@ -skips: ['B101'] \ No newline at end of file +skips: ['B101'] diff --git a/mex/TraceSortingFormat.m b/mex/TraceSortingFormat.m index c6ceea7c..f2192967 100644 --- a/mex/TraceSortingFormat.m +++ b/mex/TraceSortingFormat.m @@ -6,4 +6,3 @@ iline (2) end end - diff --git a/python/test/segyio_c.py b/python/test/segyio_c.py index b1e144d9..2e1231f1 100644 --- a/python/test/segyio_c.py +++ b/python/test/segyio_c.py @@ -588,4 +588,3 @@ def test_fread_trace0_for_depth(): with pytest.raises(KeyError): _segyio.fread_trace0(25, 1, 1, 1, indices, "depth") - From 6a9b482c58e41a327edab7c6ad74478ff627fced Mon Sep 17 00:00:00 2001 From: Yngve Villanger Date: Thu, 27 Mar 2025 12:16:11 +0100 Subject: [PATCH 32/61] Fix trailing-whitespace changes (cherry picked from commit b499e9ef53fb6d0c271ac57a64db8a7eabac6b76) --- .pyup.yml | 2 +- applications/segyinfo.c | 2 +- applications/segyinspect.c | 16 ++++++++-------- applications/segyio-catb.c | 14 +++++++------- man/CMakeLists.txt | 2 +- man/segyio-catb.1 | 2 +- mex/test/segyspec.m | 2 +- python/segyio/segyio.cpp | 6 +++--- 8 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.pyup.yml b/.pyup.yml index 604f69f7..6143d800 100644 --- a/.pyup.yml +++ b/.pyup.yml @@ -1,4 +1,4 @@ -# autogenerated pyup.io config file +# autogenerated pyup.io config file # see https://pyup.io/docs/configuration/ for all available options update: insecure diff --git a/applications/segyinfo.c b/applications/segyinfo.c index 86faa91f..9c4b2197 100644 --- a/applications/segyinfo.c +++ b/applications/segyinfo.c @@ -23,7 +23,7 @@ static void printSegyTraceInfo( const char* buf ) { #define maximum(x,y) ((x) > (y) ? (x) : (y)) int main(int argc, char* argv[]) { - + if( argc < 2 ) { puts("Missing argument, expected run signature:"); printf(" %s [mmap]\n", argv[0]); diff --git a/applications/segyinspect.c b/applications/segyinspect.c index 952aff3b..27e17fcf 100644 --- a/applications/segyinspect.c +++ b/applications/segyinspect.c @@ -9,21 +9,21 @@ static const char* getSampleFormatName( int format ) { switch( format ) { case SEGY_IBM_FLOAT_4_BYTE: - return "IBM Float"; + return "IBM Float"; case SEGY_SIGNED_INTEGER_4_BYTE: - return "Int 32"; + return "Int 32"; case SEGY_SIGNED_SHORT_2_BYTE: - return "Int 16"; + return "Int 16"; case SEGY_FIXED_POINT_WITH_GAIN_4_BYTE: - return "Fixed Point with gain (Obsolete)"; + return "Fixed Point with gain (Obsolete)"; case SEGY_IEEE_FLOAT_4_BYTE: - return "IEEE Float"; + return "IEEE Float"; case SEGY_NOT_IN_USE_1: - return "Not in Use 1"; + return "Not in Use 1"; case SEGY_NOT_IN_USE_2: - return "Not in Use 2"; + return "Not in Use 2"; case SEGY_SIGNED_CHAR_1_BYTE: - return "Int 8"; + return "Int 8"; default: return "Unknown"; } diff --git a/applications/segyio-catb.c b/applications/segyio-catb.c index 33f14114..9b0ca7e2 100644 --- a/applications/segyio-catb.c +++ b/applications/segyio-catb.c @@ -54,7 +54,7 @@ static struct options parse_options( int argc, char** argv ){ opts.description = 0; opts.version = 0, opts.help = 0; opts.errmsg = NULL; - + static struct option long_options[] = { {"version", no_argument, 0, 'V'}, {"help", no_argument, 0, 'h'}, @@ -64,7 +64,7 @@ static struct options parse_options( int argc, char** argv ){ }; opterr = 1; - + while( true ){ int option_index = 0; @@ -72,7 +72,7 @@ static struct options parse_options( int argc, char** argv ){ long_options, &option_index); if ( c == -1 ) break; - + switch( c ){ case 0: break; case 'h': opts.help = 1; return opts; @@ -188,7 +188,7 @@ int main( int argc, char** argv ){ SEGY_BIN_TRACE_FLAG, SEGY_BIN_EXT_HEADERS }; - + if( argc == 1 ){ int err = errmsg(2, "Missing argument\n"); printhelp(); @@ -196,7 +196,7 @@ int main( int argc, char** argv ){ } struct options opts = parse_options( argc, argv ); - + if( opts.help ) return printhelp(); if( opts.version ) return printversion( "segyio-catb" ); @@ -206,9 +206,9 @@ int main( int argc, char** argv ){ if( !fp ) return errmsg(opterr, "No such file or directory"); char binheader[ SEGY_BINARY_HEADER_SIZE ]; - int err = segy_binheader( fp, binheader ); + int err = segy_binheader( fp, binheader ); - if( err ) return errmsg(opterr, "Unable to read binary header"); + if( err ) return errmsg(opterr, "Unable to read binary header"); for( int c = 0; c < 30; ++c ){ int field = get_binary_value( binheader, bfield_value[ c ] ); diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt index e92bd49d..9f96d7cc 100644 --- a/man/CMakeLists.txt +++ b/man/CMakeLists.txt @@ -7,6 +7,6 @@ endif() install(FILES segyio-cath.1 segyio-catb.1 segyio-catr.1 - segyio-crop.1 + segyio-crop.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 ) diff --git a/man/segyio-catb.1 b/man/segyio-catb.1 index fea70b78..4feaa032 100644 --- a/man/segyio-catb.1 +++ b/man/segyio-catb.1 @@ -30,7 +30,7 @@ display this help and exit Copyright © Statoil ASA. License LGPLv3+: GNU LGPL version 3 or later . .PP -This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. +This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. .SH SEE ALSO segyio-cath(1), segyio-catb(1) diff --git a/mex/test/segyspec.m b/mex/test/segyspec.m index 9447b235..536a1fc7 100644 --- a/mex/test/segyspec.m +++ b/mex/test/segyspec.m @@ -1,7 +1,7 @@ disp('segyspec.m test suite: start'); % test segyspec -% preconditions +% preconditions filename = 'test-data/small.sgy'; assert(exist(filename,'file')==2); t0 = 1111.0; diff --git a/python/segyio/segyio.cpp b/python/segyio/segyio.cpp index 6fb32791..1989cc78 100644 --- a/python/segyio/segyio.cpp +++ b/python/segyio/segyio.cpp @@ -98,8 +98,8 @@ PyObject* RuntimeError( int err ) { template< typename T1, typename T2 > PyObject* RuntimeError( const char* msg, T1 t1, T2 t2 ) { return PyErr_Format( PyExc_RuntimeError, msg, t1, t2 ); -} - +} + PyObject* IOErrno() { return PyErr_SetFromErrno( PyExc_IOError ); } @@ -845,7 +845,7 @@ struct metrics_errmsg { "or offset (%i) field", il, xl, of ); case SEGY_INVALID_SORTING: - return RuntimeError( "unable to find sorting." + return RuntimeError( "unable to find sorting." "Check iline, (%i) and xline (%i) " "in case you are sure the file is " "a 3D sorted volume", il, xl); From 2311c2180137be976018292b7fd879f9dfb836b4 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Wed, 9 Apr 2025 20:56:32 +0200 Subject: [PATCH 33/61] Test large file through python Current test that is supposed to read the large file actually doesn't do it. All it does is testing how well segy_seek and segy_ftell functions match each other. Giving that segy_ftell is not used in any other place in the codebase other than in this one test function, usefulness of this test is questionable. Hence test was substituted with actual large file test run through python. Further plan is to add more tests to this file, for example to test correct processing when max samples number would exceed 16-bit int. (cherry picked from commit e76e8d1abbada9e23b1c3f7be4eff11205a78289) --- lib/test/segy.cpp | 25 ------------------------- python/setup.cfg | 2 +- python/test/large.py | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 26 deletions(-) create mode 100644 python/test/large.py diff --git a/lib/test/segy.cpp b/lib/test/segy.cpp index 78ef47e6..00a857cf 100644 --- a/lib/test/segy.cpp +++ b/lib/test/segy.cpp @@ -1523,31 +1523,6 @@ TEST_CASE("open file with >32k traces", "[c.segy]") { CHECK(samples == 60000); } -SCENARIO( "reading a large file", "[c.segy]" ) { - GIVEN( "a large file" ) { - const char* file = "4G-file.sgy"; - - unique_segy ufp( segy_open( file, "w+b" ) ); - auto fp = ufp.get(); - - const int trace = 5000000; - const int trace_bsize = 1000; - const long long tracesize = trace_bsize + SEGY_TRACE_HEADER_SIZE; - const long trace0 = 0; - - const Err err = segy_seek( fp, trace, trace0, trace_bsize ); - CHECK( err == Err::ok() ); - WHEN( "reading past 4GB (pos >32bit)" ) { - THEN( "there is no overflow" ) { - const long long pos = segy_ftell( fp ); - CHECK( pos > std::numeric_limits< int >::max() ); - CHECK( pos != -1 ); - CHECK( pos == trace * tracesize ); - } - } - } -} - #ifdef HOST_BIG_ENDIAN #define HOST_LSB 0 #define HOST_MSB 1 diff --git a/python/setup.cfg b/python/setup.cfg index 45924b36..6f63132a 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -6,4 +6,4 @@ test=pytest [tool:pytest] python_files = test/*.py -addopts = --ignore=test/benchmarks.py +addopts = --ignore=test/benchmarks.py --ignore=test/large.py diff --git a/python/test/large.py b/python/test/large.py new file mode 100644 index 00000000..fb6422a8 --- /dev/null +++ b/python/test/large.py @@ -0,0 +1,34 @@ +import tempfile +import numpy as np +import segyio + +# requires Python >3.12 + + +def test_reading_past_4GB(): + # reading from position that can't be stored as 32 bit int + with tempfile.NamedTemporaryFile(delete_on_close=False) as temp_file: + temp_path = temp_file.name + + # each trace is 4 bytes * 250 samples = 1000 bytes + # 5 million traces = 5 GB + fmt = segyio.SegySampleFormat.IEEE_FLOAT_4_BYTE + nsamples = 250 + trace_count = 5000000 + + spec = segyio.spec() + spec.format = fmt + spec.samples = range(nsamples) + spec.tracecount = trace_count + + zero_trace = np.zeros(nsamples, dtype=np.float32) + last_trace = np.arange(1, nsamples + 1, dtype=np.float32) + + with segyio.create(temp_path, spec) as f: + for i in range(trace_count - 1): + f.trace[i] = zero_trace + + f.trace[trace_count - 1] = last_trace + + with segyio.open(temp_path, "r", strict=False) as f: + assert np.array_equal(f.trace[trace_count - 1], last_trace) From ef7e121a0dd4c79831ec93df3b7ad79bb706ed50 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Thu, 10 Apr 2025 14:56:33 +0200 Subject: [PATCH 34/61] Run test/large.py on CI Tests are run on several systems as main point of the tests is to assure we use wide enough variable types/run correct workarounds for OS-dependent code. If we add more tests and jobs become slower, they could be attempted to run in parallel. (cherry picked from commit fc3d77695b6662aa46269eaa134452b529d0d814) --- .github/images/large32-bit.Dockerfile | 17 ++++ .github/workflows/large.yaml | 135 ++++++++++++++++++++++++++ 2 files changed, 152 insertions(+) create mode 100644 .github/images/large32-bit.Dockerfile create mode 100644 .github/workflows/large.yaml diff --git a/.github/images/large32-bit.Dockerfile b/.github/images/large32-bit.Dockerfile new file mode 100644 index 00000000..68066330 --- /dev/null +++ b/.github/images/large32-bit.Dockerfile @@ -0,0 +1,17 @@ +FROM i386/python:3-slim +RUN apt-get update +RUN apt-get install -y git cmake g++ libopenblas-dev + +WORKDIR / +COPY . /segyio +WORKDIR /segyio + +RUN pip install --upgrade pip +RUN pip install -r python/requirements-dev.txt + +WORKDIR /segyio/build +RUN cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_BIN=OFF -DBUILD_TESTING=OFF -DBUILD_PYTHON=ON .. +RUN make -j4 + +WORKDIR /segyio/python +RUN pytest test/large.py -rPV diff --git a/.github/workflows/large.yaml b/.github/workflows/large.yaml new file mode 100644 index 00000000..601e9294 --- /dev/null +++ b/.github/workflows/large.yaml @@ -0,0 +1,135 @@ +name: Run large tests + +on: + push: + branches: [main] + pull_request: + branches: [main] + workflow_dispatch: + +jobs: + large: + name: Run large tests on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + # only 64-bit windows + - os: windows-2019 + cmake_generator: '-G "Visual Studio 16 2019"' + - os: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Install build/test dependencies + working-directory: python + run: | + python -m pip install -r requirements-dev.txt + + - name: Configure and Build + shell: bash + run: | + cmake -S . -B build \ + -DBUILD_PYTHON=ON \ + -DBUILD_TESTING=OFF \ + -DBUILD_BIN=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + ${{ matrix.cmake_generator }} \ + + cmake \ + --build build \ + --config Release \ + + - name: Test + shell: bash + run: | + cd python + pytest test/large.py -rPV + + large-32-bit-linux: + name: Run large tests on 32-bit linux + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 + + - name: Build + uses: docker/build-push-action@v6 + with: + builder: ${{ steps.buildx.outputs.name }} + context: . + file: .github/images/large32-bit.Dockerfile + platforms: linux/386 + + # The only true way to test 32-bit library is to run it on 32-bit machine, but + # there are no 32-bit runner in Github Actions. + # + # Running compiled 32-bit library on 64-bit machine is a substitute. It is not + # clear how well it represents true 32-bit system, but it is our only option. + # + # Building python code directly, without cbuildwheel, with 32-bit MSVC compiler + # fails. Seems like skbuild forces native platform internally, even if we supply + # 32-bit one directly. Build works in cbuildwheel as they seem to hack the + # environment to make it look like 32-bit system. + large_win32: + name: Run large tests on windows-2019, 32-bit wheel + runs-on: windows-2019 + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + architecture: "x86" + + - name: Install cibuildwheel + run: python3 -m pip install cibuildwheel + + - name: Install build/test dependencies + working-directory: python + run: | + python -m pip install -r requirements-dev.txt + + - name: Build wheel + shell: bash + env: + CIBW_BUILD_VERBOSITY: 1 + CIBW_ENVIRONMENT_WINDOWS: > + CMAKE_GENERATOR="Visual Studio 16 2019" + CMAKE_GENERATOR_PLATFORM="Win32" + run: | + python -m cibuildwheel --only cp312-win32 --output-dir ./wheelhouse python/ + + - name: Install local wheel + shell: bash + run: | + pip install ./wheelhouse/*.whl + rm -f ./wheelhouse/*.whl + + # assure that local segyio doesn't take priority (one installed to pip is used) + - name: Remove local segyio + shell: bash + working-directory: python + run: | + python -c "import segyio; import inspect; print('before: segyio loaded from ' + inspect.getfile(segyio))" + rm -rf $(pwd)/segyio + python -c "import segyio; import inspect; print('after: segyio loaded from ' + inspect.getfile(segyio))" + + - name: Test + shell: bash + run: | + cd python + pytest test/large.py -rPV From ff67e1d5b9a6f4881ffd7876645c0953cb1ae32a Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Mon, 28 Apr 2025 13:50:33 +0200 Subject: [PATCH 35/61] Pin cbuildwheel version in benchmark tests New release of cbuildwheel updated cmake version to 4.0.0 (probably because manylinix did). Cmake 4.0 drops support for cmake < 3.5. In our old "reference" code, which we would prefer to test against until segyio 2.0 is released, one of the cmake files still declares minimum required version to be 2.x and therefore is affected. The easiest workaround is to pin cbuildwheel to latest cmake-compatible version v2.23.2. (cherry picked from commit 38b570140443801459efdb51d52a94d3fa4a763f) --- .github/workflows/benchmarks.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index 22d65475..2c1b9744 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -20,7 +20,9 @@ jobs: - uses: actions/checkout@v4 - name: Install cibuildwheel - run: python3 -m pip install cibuildwheel + # old ref is incompatible with cmake 4.0.0, which is used in cbuildwheel > 2.23.2 + # once default ref is updated, restriction can be removed + run: python3 -m pip install cibuildwheel==2.23.2 - name: Install build/test dependencies working-directory: python From 2d5760248d552be6ca4875d6565d6f9156173f88 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Fri, 23 May 2025 12:08:18 +0200 Subject: [PATCH 36/61] Update benchmark test suite - New tests for known functionality are added. Adding new tests increases runtime, we we prefer to keep reasonably small. - Operations which results doesn't seem to be tested in segy.py before are included to assure correct syntax in benchmarks.py. - Pre-stack ps-file is excluded from the tests to reduce run time. It behaves similar to post-stack file and thus doesn't give us much. - Instead two post-stack files of different sizes are introduced, one used for read, another for write. - Update-tests now work on actual file instead of copying it every time. This is again done to save time. As we don't care about the data, only about operations, overwriting same file shouldn't hurt. (cherry picked from commit 936bf74e14216856b94cf5fea88500dd8618d981) --- .github/actions/benchmark/action.yaml | 14 +-- python/test/benchmarks.py | 141 +++++++++++++++++++++----- python/test/segy.py | 25 +++++ 3 files changed, 150 insertions(+), 30 deletions(-) diff --git a/.github/actions/benchmark/action.yaml b/.github/actions/benchmark/action.yaml index a9693b63..8a32fc80 100644 --- a/.github/actions/benchmark/action.yaml +++ b/.github/actions/benchmark/action.yaml @@ -53,19 +53,19 @@ runs: working-directory: python run: | if [ ! -f file.sgy ]; then - time python -m examples.make-file file.sgy 1400 1 1000 1 600 + time python -m examples.make-file file.sgy 1600 1 1000 1 1200 else echo "file.sgy already exists" fi - - name: Make segy pre-stack file + - name: Make segy small file shell: bash working-directory: python run: | - if [ ! -f file-ps.sgy ]; then - time python -m examples.make-ps-file file-ps.sgy 1400 1 500 1 600 1 3 + if [ ! -f file-small.sgy ]; then + time python -m examples.make-file file-small.sgy 500 1 350 1 350 else - echo "file-ps.sgy already exists" + echo "file-small.sgy already exists" fi - name: Print filesize @@ -73,13 +73,13 @@ runs: working-directory: python run: | ls -lh file.sgy - ls -lh file-ps.sgy + ls -lh file-small.sgy - name: Run benchmark tests shell: bash working-directory: python run: | - pytest test/benchmarks.py --benchmark-sort=name --benchmark-autosave ${{ inputs.compare }} + pytest test/benchmarks.py -rP --benchmark-sort=name --benchmark-autosave ${{ inputs.compare }} - name: Remove build artifacts shell: bash diff --git a/python/test/benchmarks.py b/python/test/benchmarks.py index 2014941b..8758ad1f 100644 --- a/python/test/benchmarks.py +++ b/python/test/benchmarks.py @@ -2,21 +2,25 @@ # To run this file pytest-benchmark must be installed via pip. import os -import shutil import segyio import pytest +import numpy as np # Files are expected to be present at the run location # Files size should be compatible with retrieved lines -files = [ +read_files = [ 'file.sgy', - 'file-ps.sgy' + 'file-small.sgy', +] + +write_files = [ + 'file-small.sgy', ] -def run(filepath, mmap, func): - with segyio.open(filepath) as f: +def run(filepath, mmap, func, mode="r"): + with segyio.open(filepath, mode=mode) as f: if mmap: f.mmap() func(f) @@ -26,63 +30,154 @@ def iline_slice(f): f.iline[200] +def iline_strided(f): + list(f.iline[0:400:4]) + + def xline_slice(f): f.xline[300] +def xline_strided(f): + list(f.xline[0:400:4]) + + def depth_slice(f): - f.depth_slice[1000] + f.depth_slice[400] + + +def depth_strided(f): + list(f.depth_slice[300:310:4]) + + +def reverse_traces(f): + f.trace.raw[::-100] + + +def sparse_samples(f): + list(f.trace[::3, ::4]) + + +def binary_header(f): + f.bin + + +def trace_header(f): + list(f.header[100:200:2]) + + +def attributes(f): + list(f.attributes(segyio.TraceField.INLINE_3D)) def cube(filepath): segyio.tools.cube(filepath) -def change_data(output_file): - # multiply data by 2 - with segyio.open(output_file, "r+") as f: - for i in f.ilines: - f.iline[i] = 2 * f.iline[i] +def update_by_iline(f): + for i in f.ilines: + f.iline[i] = 2 * f.iline[i] + + +def update_by_xline(f): + for i in f.xlines: + f.xline[i] = 4 * f.xline[i] + + +def update_by_depth(f): + f.depth_slice[20:30:5] = np.ones( + (2, len(f.ilines), len(f.xlines)), dtype=np.float32 + ) + + +def update_by_traces(f): + new = [trace * 5.0 for trace in f.trace.raw[:]] + for i in range(len(f.trace)): + f.trace[i] = new[i] -slices = [ +def create(output_file): + spec = segyio.spec() + + spec.sorting = 2 + spec.format = 1 + spec.samples = range(1000) + spec.ilines = range(600) + spec.xlines = range(600) + + with segyio.create(output_file, spec) as f: + ref = np.ones((len(f.ilines), len(f.xlines)), dtype=np.float32) + tr = 0 + for il in spec.ilines: + for xl in spec.xlines: + f.header[tr] = { + segyio.su.offset: 1, + segyio.su.iline: il, + segyio.su.xline: xl + } + f.trace[tr] = ref + tr += 1 + + +operations = [ iline_slice, + iline_strided, xline_slice, + xline_strided, depth_slice, + depth_strided, + reverse_traces, + sparse_samples, + binary_header, + trace_header, + attributes +] + +write_operations = [ + update_by_iline, + update_by_xline, + update_by_depth, + update_by_traces, ] @pytest.mark.benchmark(group="nommap") -@pytest.mark.parametrize("file", files) -@pytest.mark.parametrize("func", slices) +@pytest.mark.parametrize("file", read_files) +@pytest.mark.parametrize("func", operations) def test_read_speed(benchmark, file, func): benchmark(run, file, False, func) @pytest.mark.benchmark(group="with mmap") -@pytest.mark.parametrize("file", files) -@pytest.mark.parametrize("func", slices) +@pytest.mark.parametrize("file", read_files) +@pytest.mark.parametrize("func", operations) def test_mmap_read_speed(benchmark, file, func): benchmark(run, file, True, func) @pytest.mark.benchmark(group="cube") -@pytest.mark.parametrize("file", files) +@pytest.mark.parametrize("file", read_files) def test_cube_speed(benchmark, file): - benchmark.pedantic(run, rounds=15, args=[file, False, cube]) + benchmark.pedantic(run, rounds=5, args=[file, False, cube]) @pytest.mark.benchmark(group="write") -@pytest.mark.parametrize("file", files) -def test_write_file(benchmark, file, tmp_path): - output_file = tmp_path / 'output.sgy' +@pytest.mark.parametrize("file", write_files) +@pytest.mark.parametrize("func", write_operations) +def test_write_file(benchmark, file, func): + # note that original file will get overwritten + benchmark.pedantic(run, rounds=7, args=[file, False, func, "r+"]) + + +@pytest.mark.benchmark(group="create") +def test_create_file(benchmark, tmp_path): + output_file = tmp_path / 'new.sgy' def setup(): if os.path.exists(output_file): os.remove(output_file) - shutil.copyfile(file, output_file) - benchmark.pedantic(change_data, setup=setup, rounds=5, args=[output_file]) + benchmark.pedantic(create, setup=setup, rounds=5, args=[output_file]) if os.path.exists(output_file): os.remove(output_file) diff --git a/python/test/segy.py b/python/test/segy.py index e86afcd0..3f4faa37 100644 --- a/python/test/segy.py +++ b/python/test/segy.py @@ -1073,6 +1073,21 @@ def test_assign_all_traces(small): with segyio.open(copy) as f: assert np.array_equal(f.trace.raw[:], traces) + with segyio.open(copy, 'r+') as f: + traces = f.trace.raw[:] + f.trace[::2] = [trace * 2.0 for trace in traces[::2]] + f.trace[1::2] = [trace * 3.0 for trace in traces[1::2]] + + with segyio.open(copy) as f: + for index, trace in enumerate(f.trace): + # assuming precision error comes from ibm-iee conversion as file is ibm + if index % 2 == 0: + npt.assert_array_almost_equal( + trace, traces[index] * 2.0, decimal=5) + else: + npt.assert_array_almost_equal( + trace, traces[index] * 3.0, decimal=5) + def test_traceaccess_from_array(): a = np.arange(10, dtype=int) @@ -1720,6 +1735,16 @@ def value(x, y): assert np.allclose(depth_slice, buf * index) next(islice(itr, 3, 3), None) + other = [buf * i * 2 for i in range(len(f.depth_slice))] + f.depth_slice[::2] = other[::2] + + itr = iter(enumerate(f.depth_slice)) + for index, depth_slice in itr: + if index % 2 == 0: + assert np.allclose(depth_slice, buf * index * 2) + else: + assert np.allclose(depth_slice, buf * index) + @pytest.mark.parametrize('endian', ['little', 'big']) def test_no_16bit_overflow_tracecount(endian, tmpdir): From 6cd1dcb58aafa460cc840b54f95bde8f4e235d86 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Wed, 4 Jun 2025 13:09:10 +0200 Subject: [PATCH 37/61] Upgrade windows runners windows-2019 gets deprecated and needs to be updated. To match Windows and Visual Studio versions, use 2022 setup. Note: Visual Studio 2022 comes with v143 toolset, while skbuild checks for v144 first. This results in error which must be mitigated. (cherry picked from commit 29df7da06be8ee65a7e0c524af39f4d4e0828c7a) --- .github/workflows/build.yaml | 12 ++++++------ .github/workflows/large.yaml | 26 +++++++++++++++++--------- .github/workflows/wheels.yaml | 8 ++++---- 3 files changed, 27 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 1710618e..3160bbe1 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -15,16 +15,16 @@ jobs: fail-fast: false matrix: include: - - os: windows-2019 - cmake_generator: "-G \"Visual Studio 16 2019\" -A x64" + - os: windows-2022 + cmake_generator: "-G \"Visual Studio 17 2022\" -A x64" build_type: "Release" compiler_flags: "-D_CRT_SECURE_NO_WARNINGS /EHsc" - - os: windows-2019 - cmake_generator: "-G \"Visual Studio 16 2019\" -A x64" + - os: windows-2022 + cmake_generator: "-G \"Visual Studio 17 2022\" -A x64" build_type: "Debug" compiler_flags: "-D_CRT_SECURE_NO_WARNINGS /EHsc" - - os: windows-2019 - cmake_generator: "-G \"Visual Studio 16 2019\" -A Win32" + - os: windows-2022 + cmake_generator: "-G \"Visual Studio 17 2022\" -A Win32" build_type: "Release" compiler_flags: "-D_CRT_SECURE_NO_WARNINGS /EHsc" - os: ubuntu-latest diff --git a/.github/workflows/large.yaml b/.github/workflows/large.yaml index 601e9294..59b55f91 100644 --- a/.github/workflows/large.yaml +++ b/.github/workflows/large.yaml @@ -16,8 +16,8 @@ jobs: matrix: include: # only 64-bit windows - - os: windows-2019 - cmake_generator: '-G "Visual Studio 16 2019"' + - os: windows-2022 + cmake_generator: '-G "Visual Studio 17 2022"' - os: ubuntu-latest steps: @@ -32,7 +32,7 @@ jobs: run: | python -m pip install -r requirements-dev.txt - - name: Configure and Build + - name: Configure shell: bash run: | cmake -S . -B build \ @@ -42,9 +42,17 @@ jobs: -DCMAKE_BUILD_TYPE=Release \ ${{ matrix.cmake_generator }} \ - cmake \ - --build build \ - --config Release \ + - name: Build + shell: bash + # scikit-build first checks for toolset v144, which is not available on + # github windows-2022 environment. It is able to build with v143, but + # fails the command anyway. continue-on-error is a workaround for that. + # In case actual error occurs and segyio is not build, tests will fail. + continue-on-error: true + run: | + cmake \ + --build build \ + --config Release \ - name: Test shell: bash @@ -84,8 +92,8 @@ jobs: # 32-bit one directly. Build works in cbuildwheel as they seem to hack the # environment to make it look like 32-bit system. large_win32: - name: Run large tests on windows-2019, 32-bit wheel - runs-on: windows-2019 + name: Run large tests on windows-2022, 32-bit wheel + runs-on: windows-2022 steps: - uses: actions/checkout@v4 @@ -108,7 +116,7 @@ jobs: env: CIBW_BUILD_VERBOSITY: 1 CIBW_ENVIRONMENT_WINDOWS: > - CMAKE_GENERATOR="Visual Studio 16 2019" + CMAKE_GENERATOR="Visual Studio 17 2022" CMAKE_GENERATOR_PLATFORM="Win32" run: | python -m cibuildwheel --only cp312-win32 --output-dir ./wheelhouse python/ diff --git a/.github/workflows/wheels.yaml b/.github/workflows/wheels.yaml index 22aaaaf8..ae943f21 100644 --- a/.github/workflows/wheels.yaml +++ b/.github/workflows/wheels.yaml @@ -17,12 +17,12 @@ jobs: fail-fast: false matrix: include: - - os: windows-2019 - cmake_generator: "Visual Studio 16 2019" + - os: windows-2022 + cmake_generator: "Visual Studio 17 2022" cmake_generator_platform: "x64" arch: AMD64 - - os: windows-2019 - cmake_generator: "Visual Studio 16 2019" + - os: windows-2022 + cmake_generator: "Visual Studio 17 2022" cmake_generator_platform: "Win32" arch: x86 - os: ubuntu-latest From 92f8e60637d2b3eb9731219db624d082b582a195 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Fri, 25 Jul 2025 20:59:47 +0200 Subject: [PATCH 38/61] Disable building wheels on python 3.14 (cherry picked from commit b7837d534bbc0ab6d240ead49473cc723518dd5e) --- .github/workflows/wheels.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/wheels.yaml b/.github/workflows/wheels.yaml index ae943f21..53467a39 100644 --- a/.github/workflows/wheels.yaml +++ b/.github/workflows/wheels.yaml @@ -54,7 +54,7 @@ jobs: CIBW_ENVIRONMENT_WINDOWS: > CMAKE_GENERATOR="${{ matrix.cmake_generator }}" CMAKE_GENERATOR_PLATFORM="${{ matrix.cmake_generator_platform }}" - CIBW_SKIP: pp* *-musllinux_* cp36-* cp37-* cp38-* + CIBW_SKIP: pp* *-musllinux_* cp36-* cp37-* cp38-* cp314* CIBW_ARCHS: ${{ matrix.arch }} run: | python -m cibuildwheel --output-dir wheelhouse python/ From d800079ee10a63dbb068738841757b4fe09c4ab5 Mon Sep 17 00:00:00 2001 From: bug-sentinel Date: Wed, 13 Nov 2024 16:49:46 +0100 Subject: [PATCH 39/61] Fix typo in readme (cherry picked from commit 1c4fb249ebe58ffd0bbab8dcad50ec82e8ce13b1) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 525e14bb..bf1fc833 100644 --- a/README.md +++ b/README.md @@ -382,7 +382,7 @@ demos in this Small SEG-Y formatted files are included in the repository for test purposes. The data is non-sensical and made to be predictable, and it is reproducible by -using segyio. The tests file are located in the test-data directory. To +using segyio. The test files are located in the test-data directory. To reproduce the data file, build segyio and run the test program `make-file.py`, `make-ps-file.py`, and `make-rotated-copies.py` as such: From ec8eff0f9b615318ec2e57748e31705c6c135a0d Mon Sep 17 00:00:00 2001 From: Gustavo Pretto Scholze Date: Wed, 17 Sep 2025 11:15:07 -0300 Subject: [PATCH 40/61] Fix typo in tools.collect example The `collect` example was depicting to reshape based on `f.samples` - an array, instead of `len(f.samples)` (cherry picked from commit 09d835df9b134923cb3517a4ee266eed6de7865d) --- python/segyio/tools.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/segyio/tools.py b/python/segyio/tools.py index 5f760e9b..d5a31f49 100644 --- a/python/segyio/tools.py +++ b/python/segyio/tools.py @@ -200,7 +200,7 @@ def collect(itr): >>> with segyio.open('post-stack.sgy') as f: >>> x = segyio.tools.collect(f.trace[:]) - >>> x = x.reshape((len(f.ilines), len(f.xlines), f.samples)) + >>> x = x.reshape((len(f.ilines), len(f.xlines), len(f.samples))) >>> numpy.all(x == segyio.tools.cube(f)) """ From d677f2e63fb201ce782ffc66f451dd4dc91df9d1 Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Wed, 9 Jul 2025 11:55:48 +0200 Subject: [PATCH 41/61] Bump minimum CMake version to 3.18 This allows us to use CMake's new way of finding and interacting with Python. This also acts as preparatory step to move to the build process of the Python extension from `scikit-build` to `scikit-build-core` [1] which requires CMake >=3.15. CMake 3.18 is chosen as minimum version because the usage of the `WITH_SOABI` option is recommended [2] which requires CMake >=3.17 [3] and allows to use `Development.Module` (introduced in CMake 3.18) instead of the more generic `Development` component. [1]: https://scikit-build-core.readthedocs.io/en/latest/ [2]: https://scikit-build-core.readthedocs.io/en/latest/guide/migration_guide.html [3]: https://cmake.org/cmake/help/latest/module/FindPython.html#commands (cherry picked from commit acd3b824985cadd17b83ab4e659041b2c82d7df2) --- .github/images/bigendian.Dockerfile | 2 +- CMakeLists.txt | 2 +- README.md | 4 ++-- external/catch2/CMakeLists.txt | 2 +- lib/CMakeLists.txt | 2 +- python/CMakeLists.txt | 34 ++++++++++++++--------------- python/setup-CMakeLists.txt | 2 +- 7 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/images/bigendian.Dockerfile b/.github/images/bigendian.Dockerfile index 1f6528f6..5fad2d17 100644 --- a/.github/images/bigendian.Dockerfile +++ b/.github/images/bigendian.Dockerfile @@ -13,6 +13,6 @@ RUN /segyio/pyvenv/bin/python -m pip install --upgrade pip RUN /segyio/pyvenv/bin/python -m pip install -r python/requirements-dev.txt WORKDIR /segyio/build -RUN cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Debug -DPYTHON_EXECUTABLE="/segyio/pyvenv/bin/python" .. +RUN cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Debug -DPython_ROOT_DIR="/segyio/pyvenv/" .. RUN make -j4 RUN ctest --verbose diff --git a/CMakeLists.txt b/CMakeLists.txt index fdc95ee1..16d4b5e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.11) +cmake_minimum_required(VERSION 3.18) project(segyio LANGUAGES C CXX) include(CheckFunctionExists) diff --git a/README.md b/README.md index bf1fc833..3cd8bfe7 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ A copy of segyio is available both as pre-built binaries and source code: To build segyio you need: * A C99 compatible C compiler (tested mostly on gcc and clang) * A C++ compiler for the Python extension, and C++11 for the tests - * [CMake](https://cmake.org/) version 3.11 or greater + * [CMake](https://cmake.org/) version 3.18 or greater * [Python](https://www.python.org/) 3.9 or greater * [numpy](http://www.numpy.org/) version 1.10 or greater * [setuptools](https://pypi.python.org/pypi/setuptools) version 28 or greater @@ -126,7 +126,7 @@ LD_LIBRARY_PATH and PATH). If you have multiple Python installations, or want to use some alternative interpreter, you can help cmake find the right one by passing -`-DPYTHON_EXECUTABLE=/opt/python/binary` along with install prefix and build +`-DPython_ROOT_DIR=/opt/python/binary` along with install prefix and build type. To build the matlab bindings, invoke CMake with the option `-DBUILD_MEX=ON`. In diff --git a/external/catch2/CMakeLists.txt b/external/catch2/CMakeLists.txt index 1eb0fef0..dd2baa42 100644 --- a/external/catch2/CMakeLists.txt +++ b/external/catch2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.11) +cmake_minimum_required(VERSION 3.18) project(catch2 CXX) add_library(catch2 INTERFACE) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index a0026f58..d6aba1d1 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.11) +cmake_minimum_required(VERSION 3.18) project(libsegyio C CXX) set(SEGYIO_LIB_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH "") diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 509b4d77..7781d6a7 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -7,7 +7,7 @@ if (SKBUILD) return () endif () -cmake_minimum_required(VERSION 3.11) +cmake_minimum_required(VERSION 3.18) project(segyio-python) if (REQUIRE_PYTHON) @@ -18,17 +18,17 @@ if (NOT BUILD_PYTHON) return() endif() -find_package(PythonInterp REQUIRED) +find_package(Python COMPONENTS Interpreter REQUIRED) -if (NOT PYTHON_EXECUTABLE AND REQUIRE_PYTHON) +if (NOT Python_EXECUTABLE AND REQUIRE_PYTHON) message(SEND_ERROR "Could not find python executable") return() endif() -if (NOT PYTHON_EXECUTABLE) +if (NOT Python_EXECUTABLE) message(WARNING "Could not find python - skipping python bindings. " "Select specific python distribution with " - "-DPYTHON_EXECUTABLE=bin/python") + "-DPython_EXECUTABLE=bin/python") return() endif() @@ -62,7 +62,7 @@ add_custom_target( # # This is probably something that should be addressed upstream COMMAND ${CMAKE_COMMAND} -E env --unset=DESTDIR - ${PYTHON_EXECUTABLE} ${setup.py} + ${Python_EXECUTABLE} ${setup.py} # build the extension inplace (really, once its built, copy it to the # source tree) so that post-build, the directory can be used to run # tests against @@ -95,7 +95,7 @@ install(CODE " execute_process( COMMAND ${CMAKE_COMMAND} -E env --unset=DESTDIR - ${PYTHON_EXECUTABLE} ${setup.py} + ${Python_EXECUTABLE} ${setup.py} install \${root_destdir} --single-version-externally-managed @@ -121,7 +121,7 @@ if(BUILD_PYDOC) # run sphinx as the same python version that was just built # otherwise, the it will search for the wrong segyio extension and # fail - COMMAND ${PYTHON_EXECUTABLE} -m sphinx + COMMAND ${Python_EXECUTABLE} -m sphinx # use the -d argument to avoid putting cache dir in docs/, because # that directory will be install'd -d ${CMAKE_CURRENT_BINARY_DIR}/.doctrees @@ -149,7 +149,7 @@ endif() add_test( NAME python.unit - COMMAND ${PYTHON_EXECUTABLE} -m pytest test/ + COMMAND ${Python_EXECUTABLE} -m pytest test/ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) @@ -157,49 +157,49 @@ configure_file(../test-data/small.sgy write.sgy COPYONLY) add_test( NAME python.example.about - COMMAND ${PYTHON_EXECUTABLE} -m examples.about + COMMAND ${Python_EXECUTABLE} -m examples.about ../test-data/small.sgy INLINE_3D CROSSLINE_3D WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) add_test( NAME python.example.write - COMMAND ${PYTHON_EXECUTABLE} -m examples.write + COMMAND ${Python_EXECUTABLE} -m examples.write ${CMAKE_CURRENT_BINARY_DIR}/write.sgy WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) add_test( NAME python.example.makefile - COMMAND ${PYTHON_EXECUTABLE} -m examples.make-file + COMMAND ${Python_EXECUTABLE} -m examples.make-file ../test-data/large-file.sgy 20 1 20 1 20 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) add_test( NAME python.example.makepsfile - COMMAND ${PYTHON_EXECUTABLE} -m examples.make-ps-file + COMMAND ${Python_EXECUTABLE} -m examples.make-ps-file ../test-data/small-prestack.sgy 10 1 5 1 4 1 3 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) add_test( NAME python.example.subcube - COMMAND ${PYTHON_EXECUTABLE} -m examples.copy-sub-cube + COMMAND ${Python_EXECUTABLE} -m examples.copy-sub-cube ../test-data/small.sgy ${CMAKE_CURRENT_BINARY_DIR}/copy.sgy WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) add_test( NAME python.example.rotate - COMMAND ${PYTHON_EXECUTABLE} -m examples.make-rotated-copies + COMMAND ${Python_EXECUTABLE} -m examples.make-rotated-copies ../test-data/small.sgy ex-rotate.sgy ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) add_test( NAME python.example.scan_min_max - COMMAND ${PYTHON_EXECUTABLE} -m examples.scan_min_max + COMMAND ${Python_EXECUTABLE} -m examples.scan_min_max ../test-data/small.sgy WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) add_test( NAME python.example.multi-text - COMMAND ${PYTHON_EXECUTABLE} -m examples.make-multiple-text + COMMAND ${Python_EXECUTABLE} -m examples.make-multiple-text _skbuild/multi-text.sgy WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) diff --git a/python/setup-CMakeLists.txt b/python/setup-CMakeLists.txt index b83d74e6..c245aaa1 100644 --- a/python/setup-CMakeLists.txt +++ b/python/setup-CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.11) +cmake_minimum_required(VERSION 3.18) project(segyio-python-extension LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 11) From d87206ec9a21c8d07743e85af3e3a964a467aca6 Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Wed, 9 Jul 2025 12:00:27 +0200 Subject: [PATCH 42/61] Remove REQUIRE_PYTHON build option This options did not have any observable effect because we search for the Python packages with ``` find_package(Python COMPONENTS Interpreter REQUIRED) ``` which will issue a fatal error if it cannot find the specified PYthon components. This means that we would never reach our own error handling if the Python interpreter was missing. Instead, we can rely on the `BUILD_PYTHON` build option to decide whether we want to include the Python-specific build path or not. (cherry picked from commit 87436acfedfd4c1ce29e38627fce2211533f2687) --- CMakeLists.txt | 5 +++-- python/CMakeLists.txt | 20 -------------------- 2 files changed, 3 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 16d4b5e7..28955867 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,7 +61,6 @@ endif () option(BUILD_SHARED_LIBS "Build language bindings shared" OFF) option(BUILD_BIN "Build applications" ON) option(BUILD_PYTHON "Build Python library" ON) -option(REQUIRE_PYTHON "Fail cmake if python cannot be built" OFF) option(BUILD_MEX "Build Matlab mex files" OFF) option(BUILD_DOC "Build documentation" OFF) option(EXPERIMENTAL "Enable experimental features" OFF) @@ -125,7 +124,9 @@ add_subdirectory(external/catch2) add_subdirectory(lib) # language bindings add_subdirectory(mex) -add_subdirectory(python) +if (BUILD_PYTHON) + add_subdirectory(python) +endif() add_subdirectory(applications) add_subdirectory(man) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 7781d6a7..ab9bf6ea 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -10,28 +10,8 @@ endif () cmake_minimum_required(VERSION 3.18) project(segyio-python) -if (REQUIRE_PYTHON) - set(BUILD_PYTHON ON) -endif() - -if (NOT BUILD_PYTHON) - return() -endif() - find_package(Python COMPONENTS Interpreter REQUIRED) -if (NOT Python_EXECUTABLE AND REQUIRE_PYTHON) - message(SEND_ERROR "Could not find python executable") - return() -endif() - -if (NOT Python_EXECUTABLE) - message(WARNING "Could not find python - skipping python bindings. " - "Select specific python distribution with " - "-DPython_EXECUTABLE=bin/python") - return() -endif() - if (PYTHON_INSTALL_LAYOUT) set(setup-install-layout --install-layout ${PYTHON_INSTALL_LAYOUT}) endif() From fb2f834e76fdceaaaafeb432b557ca1c21837c94 Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Wed, 9 Jul 2025 12:11:42 +0200 Subject: [PATCH 43/61] Align OSX deployment target We now choose the the same OSX deployment target for the segyio core library and its Python extension when building the wheels for MacOS. This fixes warnings that we can observe in the GitHub Actions: ``` ld: warning: object file (/usr/local/lib/libsegyio.a[2](segy.c.o)) was built for newer 'macOS' version (14.0) than being linked (11.0) ``` (cherry picked from commit 3182a86f8e5c1bc3c29684b72784eb42677a8ad2) --- python/pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/python/pyproject.toml b/python/pyproject.toml index 73f6f749..d2079f60 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -66,6 +66,7 @@ before-build = [ -DBUILD_TESTING=OFF \ -DBUILD_PYTHON=OFF \ -DBUILD_BIN=OFF \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \ """, """sudo cmake \ --build build \ From 2bf91d2340b4f1feef96c6cfbd8a4f242af190f3 Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Wed, 9 Jul 2025 12:20:04 +0200 Subject: [PATCH 44/61] Replace scikit-build by scikit-build-core We were experiencing some issues with scikit-build on the GitHub runners for Windows builds while also facing some deprecation warnings w.r.t. the build system. This is solved by moving to scikit-build-core for building the Python extension. scikit-build-core is currently more actively developed and more modern replacement for scikit-build for projects that do not need to manipulate the build process excessively. The changes mostly follow the migration guide [1]. Changing to scikit-build-core also allows us to simplify the the build process of the Python extension. The `Manifest.in` for building a source distribution (sdist) was removed since it does not have any use anymore. We do not build a source distribution at the moment. If we want to build one again, we need to configure it inside the `pyproject.toml`. [1]: https://scikit-build-core.readthedocs.io/en/latest/guide/migration_guide.html UPD achaikou: backport-1.x branch: cherry pick required updates to setup.cfg file. Originally cherry picked from commit f01a5038c8965a72b1173b7bfbce1f18deb3f4f6 --- .github/utils.py | 37 -------- .github/workflows/benchmarks.yaml | 5 + MANIFEST.in | 3 - README.md | 2 - python/CMakeLists.txt | 147 ++++++++++++++---------------- python/pyproject.toml | 119 ++++++++++++++++++------ python/requirements-dev.txt | 1 - python/setup-CMakeLists.txt | 21 ----- python/setup.cfg | 9 -- python/setup.py | 114 ----------------------- 10 files changed, 162 insertions(+), 296 deletions(-) delete mode 100644 .github/utils.py delete mode 100644 MANIFEST.in delete mode 100644 python/setup-CMakeLists.txt delete mode 100644 python/setup.cfg delete mode 100644 python/setup.py diff --git a/.github/utils.py b/.github/utils.py deleted file mode 100644 index c1ce5710..00000000 --- a/.github/utils.py +++ /dev/null @@ -1,37 +0,0 @@ -import argparse -import shutil -import sys - -def cptree(argv): - parser = argparse.ArgumentParser(prog = 'shutil.copytree') - parser.add_argument('-r', '--recursive', action = 'store_true') - parser.add_argument('--src', type = str) - parser.add_argument('--dst', type = str) - args = parser.parse_args(argv) - - if args.recursive: - shutil.copytree(args.src, args.dst) - else: - shutil.copyfile(args.src, args.dst) - -def rmtree(argv): - parser = argparse.ArgumentParser(prog = 'shutil.rmtree') - parser.add_argument('--paths', nargs = '*', type = str) - args = parser.parse_args(argv) - - for path in args.paths: - shutil.rmtree(path) - -if __name__ == '__main__': - """Command line utils - - The CI pipeline is executed in bash on linux/mac and in PowerShell on - Windows. This mini-script handles a couple of commands that differ in the - two shells. - """ - parser = argparse.ArgumentParser(prog = 'shutil') - parser.add_argument('cmd', choices = ['copy', 'remove']) - args = parser.parse_args(sys.argv[1:2]) - - if args.cmd == 'copy': cptree(sys.argv[2:]) - if args.cmd == 'remove': rmtree(sys.argv[2:]) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index 2c1b9744..1aa8b8f3 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -42,6 +42,11 @@ jobs: ref: ${{ env.BENCHMARK_REF }} compare: "" + # Head of repository is incompatible with cibuildwheel < 3.0.0 due to + # using the "test-sources" feature in pyproject.toml + - name: Update cibuildwheel for new commit + run: python3 -m pip install --upgrade cibuildwheel + - name: Benchmark current commit and compare uses: "./.github/actions/benchmark" with: diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index f7abb48f..00000000 --- a/MANIFEST.in +++ /dev/null @@ -1,3 +0,0 @@ -include License.md -include README.md -recursive-include src *.h diff --git a/README.md b/README.md index 3cd8bfe7..fa986fa4 100644 --- a/README.md +++ b/README.md @@ -100,8 +100,6 @@ To build segyio you need: * [CMake](https://cmake.org/) version 3.18 or greater * [Python](https://www.python.org/) 3.9 or greater * [numpy](http://www.numpy.org/) version 1.10 or greater - * [setuptools](https://pypi.python.org/pypi/setuptools) version 28 or greater - * [setuptools-scm](https://pypi.python.org/pypi/setuptools_scm) * [pytest](https://pypi.org/project/pytest) To build the documentation, you also need diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index ab9bf6ea..c73eb478 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -1,93 +1,78 @@ -if (SKBUILD) - # invoked as a part of scikit-build, so this is just a proxy for the python - # extension cmake. this works around the fundamental limitation in cmake - # that it looks only for directories with a CMakeLists.txt in it, not for a - # named file - include(setup-CMakeLists.txt) - return () -endif () - cmake_minimum_required(VERSION 3.18) -project(segyio-python) +project(segyio-python LANGUAGES CXX) -find_package(Python COMPONENTS Interpreter REQUIRED) +set(CMAKE_CXX_STANDARD 11) -if (PYTHON_INSTALL_LAYOUT) - set(setup-install-layout --install-layout ${PYTHON_INSTALL_LAYOUT}) +find_package(Python COMPONENTS Interpreter Development.Module REQUIRED) +# If we execute CMake via a scikit-build-core, i.e., `python -m build`, `pip +# install` etc., we expect that the segyio library is available on the system. +if (SKBUILD) + find_package(segyio REQUIRED) endif() -set(setup.py ${CMAKE_CURRENT_SOURCE_DIR}/setup.py) -if (CMAKE_BUILD_TYPE) - # use the cmake_build_type of the source project, unless it has been - # specifically overriden - set(SEGYIO_PYTHON_BUILD_TYPE - --build-type=${CMAKE_BUILD_TYPE} - CACHE STRING "override CMAKE_BUILD_TYPE in python extension" +python_add_library(_segyio MODULE WITH_SOABI segyio/segyio.cpp) +target_link_libraries(_segyio PRIVATE segyio::segyio) + +if (MSVC) + target_compile_options(_segyio + BEFORE + PRIVATE + /EHsc ) endif () -add_custom_target( - segyio-python ALL - COMMENT "Building python library with setup.py" - SOURCES ${setup.py} - DEPENDS ${setup.py} - VERBATIM - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - - # if DESTDIR is used, either for build and install, and make (or similar) - # is the generator, the scikit-build's internal install command will - # respect it and install the build-dir shared object there. The cmake - # driven install already respects DESTDIR by translating into --root, so - # simply remove it from then environment when doing python commands +if (SKBUILD) + set(SEGYIO_PYTHON_INSTALL_DIR segyio) +else() + # CMake defines Python_SITELIB that points to the system path for Python + # libraries, but we cannot use it here. In case of a non-empty installation + # prefix, CMake would merge the installation path into something like + # ${CMAKE_INSTALL_PREFIX}/${Python_SITELIB} which would lead to the wrong + # full path. For example, it could look like this: # - # This is probably something that should be addressed upstream - COMMAND ${CMAKE_COMMAND} -E env --unset=DESTDIR - ${Python_EXECUTABLE} ${setup.py} - # build the extension inplace (really, once its built, copy it to the - # source tree) so that post-build, the directory can be used to run - # tests against - build_ext --inplace - build # setup.py build args - --cmake-executable ${CMAKE_COMMAND} - --generator ${CMAKE_GENERATOR} - ${SEGYIO_PYTHON_BUILD_TYPE} - -- # cmake to the extension - -Dsegyio_DIR=${SEGYIO_LIB_BINARY_DIR} - # "install" to the python/dlisio dir with rpath, so there's no need - # to fiddle with environment in ctest to load the core library from - # the build tree - -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON - -DCMAKE_INSTALL_RPATH=$ - -DCMAKE_INSTALL_NAME_DIR=$ -) + # /usr/local/usr/lib/python3.12/site-packages + # PREFIX | SITELIB + # + # This is not a path one would expect the Python library to be in. + set(SEGYIO_PYTHON_INSTALL_DIR lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/segyio) +endif() -add_dependencies(segyio-python segyio) - -install(CODE " - if (DEFINED ENV{DESTDIR}) - get_filename_component(abs-destdir \"\$ENV{DESTDIR}\" ABSOLUTE) - set(root_destdir --root \${abs-destdir}) - endif() - - if (CMAKE_INSTALL_PREFIX) - set(prefix --prefix \"${CMAKE_INSTALL_PREFIX}\") - endif () - - execute_process( - COMMAND ${CMAKE_COMMAND} -E env --unset=DESTDIR - ${Python_EXECUTABLE} ${setup.py} - install - \${root_destdir} - --single-version-externally-managed - --record record.txt - --cmake-executable \"${CMAKE_COMMAND}\" - --generator \"${CMAKE_GENERATOR}\" - \${prefix} - ${SEGYIO_PYTHON_BUILD_TYPE} - -- - -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - )" +install(TARGETS _segyio LIBRARY DESTINATION ${SEGYIO_PYTHON_INSTALL_DIR}) + +# Emulate in-place build behavior of invoking `python setup.py build_ext -i`. +# This places the binding library into the `python/segyio/` directory. Doing so +# allows the usage of `ctest` to test the core library, but also the Python +# package. +if (MSVC) + # On Windows, setting the target properties does not work. Whatever is + # built on Windows does not fullfil CMake's definition of "library", + # "archive" or other outputs that for which we could set the output + # directory as target property. Therefore, we copy the library into the + # correct location. + add_custom_command(TARGET _segyio POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_CURRENT_SOURCE_DIR}/segyio + ) +else() + set_target_properties(_segyio PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/segyio + ) +endif() + +# If CMake is run via a scikit-build-core, we have set up everything needed and +# we can return from this file. The installation and collection of relevant +# files is handled by scikit-build-core. Other options, like building the +# documentation, are not available via scikit-build-core. +if (SKBUILD) + return() +endif() + +# Explicitly install Python files to avoid copying files that are not required, +# e.g., segyio.cpp or folder like __pycache__ that exist if the tests were run +# via ctest. +install( + DIRECTORY segyio/ + DESTINATION ${SEGYIO_PYTHON_INSTALL_DIR} + FILES_MATCHING PATTERN "*.py" ) option(BUILD_PYDOC "Build python documentation" OFF) @@ -180,6 +165,6 @@ add_test( add_test( NAME python.example.multi-text COMMAND ${Python_EXECUTABLE} -m examples.make-multiple-text - _skbuild/multi-text.sgy + ${CMAKE_CURRENT_BINARY_DIR}/multi-text.sgy WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) diff --git a/python/pyproject.toml b/python/pyproject.toml index d2079f60..0ff416a8 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -1,10 +1,92 @@ [build-system] requires = [ - "setuptools >= 40", - "scikit-build", - "wheel", - "pybind11", + "scikit-build-core", ] +build-backend = "scikit_build_core.build" + +[project] +name = "segyio" +version = "1.9.13" +description = "Simple & fast IO for SEG-Y files" +authors = [ + { name = "Equinor ASA" }, +] +urls.homepage = "https://github.com/equinor/segyio" +license = "LGPL-3.0-or-later" +requires-python = ">=3.9" +dependencies = ["numpy >= 1.10"] +readme = { text = """ +======= +SEGY IO +======= + +https://segyio.readthedocs.io + +Introduction +------------ + +Segyio is a small LGPL licensed C library for easy interaction with SEG Y +formatted seismic data, with language bindings for Python and Matlab. Segyio is +an attempt to create an easy-to-use, embeddable, community-oriented library for +seismic applications. Features are added as they are needed; suggestions and +contributions of all kinds are very welcome. + +Feature summary +--------------- + * A low-level C interface with few assumptions; easy to bind to other + languages. + * Read and write binary and textual headers. + * Read and write traces, trace headers. + * Easy to use and native-feeling python interface with numpy integration. + +Project goals +------------- + +Segyio does necessarily attempt to be the end-all of SEG-Y interactions; +rather, we aim to lower the barrier to interacting with SEG-Y files for +embedding, new applications or free-standing programs. + +Additionally, the aim is not to support the full standard or all exotic (but +correctly) formatted files out there. Some assumptions are made, such as: + + * All traces in a file are assumed to be of the same sample size. + * It is assumed all lines have the same number of traces. + +The writing functionality in Segyio is largely meant to *modify* or adapt +files. A file created from scratch is not necessarily a to-spec SEG-Y file, as +we only necessarily write the header fields segyio needs to make sense of the +geometry. It is still highly recommended that SEG-Y files are maintained and +written according to specification, but segyio does not mandate this. +""", content-type = "text/markdown" } + +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Environment :: Other Environment", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "Natural Language :: English", + "Programming Language :: Python", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Topic :: Scientific/Engineering", + "Topic :: Scientific/Engineering :: Physics", + "Topic :: Software Development :: Libraries", + "Topic :: Utilities", +] + + +[tool.pytest.ini_options] +python_files = "test/*.py" +addopts = "--ignore=test/benchmarks.py --ignore=test/large.py --ignore=test/stream.py" + +[tool.scikit-build] +# We can safely pass OSX_DEPLOYMENT_TARGET as it's ignored on +# everything not OS X. We depend on C++11, which makes our minimum +# supported OS X release 10.9 +cmake.args = [ "-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9" ] [tool.cibuildwheel] before-build = [ @@ -27,31 +109,13 @@ before-build = [ test-requires = "pytest" -# Copy out test folder to make sure that tests are runned against the wheel and -# not the source. Test assumes a relative path to the test-data directory, so +# Copy out test folder to make sure that tests are run against the wheel and +# not the source. The tests assume a relative path to the test-data directory, so # copy that too. segyio's python test-suite doesn't follow common naming -# convensions for filenames. Hence pytest doesn't pick them up by default. +# conventions for filenames. Hence pytest doesn't pick them up by default. # If not for powershell on windows we could simply run 'pytest test/*.py'. -# Instead we copy setup.cfg which embeds the same pattern but doesn't rely on -# the shell. -test-command = [ - """python {project}/.github/utils.py copy -r \ - --src {package}/test \ - --dst tmptest/python/test \ - """, - """python {project}/.github/utils.py copy -r \ - --src {project}/test-data \ - --dst tmptest/test-data \ - """, - """python {project}/.github/utils.py copy \ - --src {package}/setup.cfg \ - --dst tmptest/python/setup.cfg \ - """, - """cd tmptest/python""", - """pytest test""", - """cd ../../""", - """python {project}/.github/utils.py remove --paths tmptest""", -] +test-command = [ "cd python", "pytest test" ] +test-sources = [ "python/test", "python/pyproject.toml", "test-data" ] [tool.cibuildwheel.linux] manylinux-x86_64-image = "manylinux2014" @@ -75,4 +139,3 @@ before-build = [ --config Release \ """, ] -environment = { CXXFLAGS="-L/usr/local/lib" } diff --git a/python/requirements-dev.txt b/python/requirements-dev.txt index 3cb41283..3d81def5 100644 --- a/python/requirements-dev.txt +++ b/python/requirements-dev.txt @@ -1,4 +1,3 @@ numpy -scikit-build pytest pytest-benchmark diff --git a/python/setup-CMakeLists.txt b/python/setup-CMakeLists.txt deleted file mode 100644 index c245aaa1..00000000 --- a/python/setup-CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -cmake_minimum_required(VERSION 3.18) -project(segyio-python-extension LANGUAGES C CXX) - -set(CMAKE_CXX_STANDARD 11) - -find_package(PythonExtensions REQUIRED) -find_package(segyio REQUIRED) - -add_library(_segyio MODULE segyio/segyio.cpp) -python_extension_module(_segyio) -target_link_libraries(_segyio segyio::segyio) - -if (MSVC) - target_compile_options(_segyio - BEFORE - PRIVATE - /EHsc - ) -endif () - -install(TARGETS _segyio LIBRARY DESTINATION segyio) diff --git a/python/setup.cfg b/python/setup.cfg deleted file mode 100644 index 6f63132a..00000000 --- a/python/setup.cfg +++ /dev/null @@ -1,9 +0,0 @@ -[metadata] -version = 1.9.13 - -[aliases] -test=pytest - -[tool:pytest] -python_files = test/*.py -addopts = --ignore=test/benchmarks.py --ignore=test/large.py diff --git a/python/setup.py b/python/setup.py deleted file mode 100644 index e078d835..00000000 --- a/python/setup.py +++ /dev/null @@ -1,114 +0,0 @@ -import os -import sys -import skbuild -import setuptools - -long_description = """ -======= -SEGY IO -======= - -https://segyio.readthedocs.io - -Introduction ------------- - -Segyio is a small LGPL licensed C library for easy interaction with SEG Y -formatted seismic data, with language bindings for Python and Matlab. Segyio is -an attempt to create an easy-to-use, embeddable, community-oriented library for -seismic applications. Features are added as they are needed; suggestions and -contributions of all kinds are very welcome. - -Feature summary ---------------- - * A low-level C interface with few assumptions; easy to bind to other - languages. - * Read and write binary and textual headers. - * Read and write traces, trace headers. - * Easy to use and native-feeling python interface with numpy integration. - -Project goals -------------- - -Segyio does necessarily attempt to be the end-all of SEG-Y interactions; -rather, we aim to lower the barrier to interacting with SEG-Y files for -embedding, new applications or free-standing programs. - -Additionally, the aim is not to support the full standard or all exotic (but -correctly) formatted files out there. Some assumptions are made, such as: - - * All traces in a file are assumed to be of the same sample size. - * It is assumed all lines have the same number of traces. - -The writing functionality in Segyio is largely meant to *modify* or adapt -files. A file created from scratch is not necessarily a to-spec SEG-Y file, as -we only necessarily write the header fields segyio needs to make sense of the -geometry. It is still highly recommended that SEG-Y files are maintained and -written according to specification, but segyio does not mandate this. - -""" - -def src(x): - root = os.path.dirname( __file__ ) - return os.path.abspath(os.path.join(root, x)) - -if 'MAKEFLAGS' in os.environ: - # if setup.py is called from cmake, it reads and uses the MAKEFLAGS - # environment variable, which in turn gets picked up on by scikit-build. - # However, scikit-build uses make install to move the built .so to the - # right object, still in the build tree. This make invocation honours - # DESTDIR, which leads to unwanted items in the destination tree. - # - # If the MAKEFLAGS env var is set, remove DESTDIR from it. - # - # Without this: make install DESTDIR=/tmp - # /tmp/src/segyio/python/_skbuild/linux-x86_64-3.5/cmake-install/segyio/_segyio.so - # /tmp/usr/local/lib/python2.7/site-packages/segyio/_segyio.so - # - # with this the _skbuild install is gone - makeflags = os.environ['MAKEFLAGS'] - flags = makeflags.split(' ') - flags = [flag for flag in flags if not flag.startswith('DESTDIR=')] - os.environ['MAKEFLAGS'] = ' '.join(flags) - -skbuild.setup( - name = 'segyio', - description = 'Simple & fast IO for SEG-Y files', - long_description = long_description, - author = 'Equinor ASA', - author_email = 'jokva@equinor.com', - url = 'https://github.com/equinor/segyio', - packages = ['segyio', 'segyio.su'], - package_data = { 'segyio': ['segyio.dll'], }, - license = 'LGPL-3.0', - platforms = 'any', - install_requires = ['numpy >= 1.10'], - setup_requires = [ - 'setuptools >= 28', - 'scikit-build', - ], - cmake_args = [ - # we can safely pass OSX_DEPLOYMENT_TARGET as it's ignored on - # everything not OS X. We depend on C++11, which makes our minimum - # supported OS X release 10.9 - '-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9', - ], - classifiers = [ - 'Development Status :: 5 - Production/Stable', - 'Environment :: Other Environment', - 'Intended Audience :: Developers', - 'Intended Audience :: Science/Research', - 'License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)', - 'Natural Language :: English', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3.9', - 'Programming Language :: Python :: 3.10', - 'Programming Language :: Python :: 3.11', - 'Programming Language :: Python :: 3.12', - 'Programming Language :: Python :: 3.13', - 'Topic :: Scientific/Engineering', - 'Topic :: Scientific/Engineering :: Physics', - 'Topic :: Software Development :: Libraries', - 'Topic :: Utilities' - ], -) From 5f7b097855c467174bd2f97849d491722157fd2d Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Wed, 9 Jul 2025 13:38:43 +0200 Subject: [PATCH 45/61] Remove workaround in large tests A workaround to make the tests pass on current GitHub runners for Windows is not needed anymore after the move to scikit-build-learn. (cherry picked from commit 58a2485973e149af2f5934b5560204978cf79ccb) --- .github/workflows/large.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/large.yaml b/.github/workflows/large.yaml index 59b55f91..79d4f78d 100644 --- a/.github/workflows/large.yaml +++ b/.github/workflows/large.yaml @@ -44,11 +44,6 @@ jobs: - name: Build shell: bash - # scikit-build first checks for toolset v144, which is not available on - # github windows-2022 environment. It is able to build with v143, but - # fails the command anyway. continue-on-error is a workaround for that. - # In case actual error occurs and segyio is not build, tests will fail. - continue-on-error: true run: | cmake \ --build build \ From 91e60e156efa040904c2c8fa906d20b64932fdf0 Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Wed, 9 Jul 2025 13:41:34 +0200 Subject: [PATCH 46/61] Remove unused selectors in cibuildwheel config Removed explicitly skipped builds that are either not selected (pp-*) nor supported (cp36 and cp37) by cibuildwheel 3.0. This removes warning issued by cibuildwheel in the corresponding GitHub Action. (cherry picked from commit 796b42a7982ff0a084c2896b8e98c8097ef4da2e) --- .github/workflows/wheels.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/wheels.yaml b/.github/workflows/wheels.yaml index 53467a39..26115527 100644 --- a/.github/workflows/wheels.yaml +++ b/.github/workflows/wheels.yaml @@ -54,7 +54,7 @@ jobs: CIBW_ENVIRONMENT_WINDOWS: > CMAKE_GENERATOR="${{ matrix.cmake_generator }}" CMAKE_GENERATOR_PLATFORM="${{ matrix.cmake_generator_platform }}" - CIBW_SKIP: pp* *-musllinux_* cp36-* cp37-* cp38-* cp314* + CIBW_SKIP: cp38-* cp314* *-musllinux_* CIBW_ARCHS: ${{ matrix.arch }} run: | python -m cibuildwheel --output-dir wheelhouse python/ From 743988f8468ce4cdc8d195b660352c81c4ed2098 Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Wed, 9 Jul 2025 14:24:00 +0200 Subject: [PATCH 47/61] Let cibuildwheel choose Linux base image There is no obvious reason anymore to restrict the base image to manylinux2014. Additionally, the usage of the manylinux2014 negatively impacts the time it takes for cibuildwheel to test the wheels on Python >=3.11 because NumPy must be build from source in this case. (cherry picked from commit 858f4554dc05189d7432fee67fd8f35784176b73) --- python/pyproject.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/python/pyproject.toml b/python/pyproject.toml index 0ff416a8..d755154c 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -117,9 +117,6 @@ test-requires = "pytest" test-command = [ "cd python", "pytest test" ] test-sources = [ "python/test", "python/pyproject.toml", "test-data" ] -[tool.cibuildwheel.linux] -manylinux-x86_64-image = "manylinux2014" - [tool.cibuildwheel.macos] before-build = [ """sudo cmake \ From 260e3ec48b90699c336765165f1065668d5fae5d Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Thu, 2 Oct 2025 13:33:45 +0200 Subject: [PATCH 48/61] Spellcheck Readme (cherry picked from commit d9bbc01d86e48138a263f5419506756eab4689b0) --- README.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fa986fa4..7e2761cd 100644 --- a/README.md +++ b/README.md @@ -201,8 +201,7 @@ The segy file object has several public attributes describing this structure: * `f.ext_headers` The number of extended textual headers -If the file is opened *unstructured*, all the line properties will will be -`None`. +If the file is opened *unstructured*, all the line properties will be `None`. ### Modes ### @@ -379,7 +378,7 @@ demos in this ## Reproducing the test data ## Small SEG-Y formatted files are included in the repository for test purposes. -The data is non-sensical and made to be predictable, and it is reproducible by +The data is nonsensical and made to be predictable, and it is reproducible by using segyio. The test files are located in the test-data directory. To reproduce the data file, build segyio and run the test program `make-file.py`, `make-ps-file.py`, and `make-rotated-copies.py` as such: @@ -404,8 +403,8 @@ segyread tape=small.sgy ns=50 remap=tracr,cdp byte=189l,193l conv=1 format=1 \ suswapbytes < small.su > small-lsb.su ``` -If you have have small data files with a free license, feel free to submit it -to the project! +If you have small data files with a free license, feel free to submit it to the +project! ## Examples ## @@ -515,7 +514,7 @@ with segyio.open(output_file, "r+") as src: src.iline[i] = 2 * src.iline[i] ``` -[Make segy file from sctrach](python/examples/make-file.py) +[Make segy file from scratch](python/examples/make-file.py) ### MATLAB ### From c32e7eaf8e6e438d7454acaced7d09c9828e1ddb Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Fri, 10 Oct 2025 14:53:29 +0200 Subject: [PATCH 49/61] Ignore some compiler warnings in Python bindings Disable warnings for methods exposed to Python arguments and potentially missing field initializers in Python-specific data structures. Removing the cause of the warnings is, in parts, impossible, or tedious as it depends on the Python version the Python bindings are compiled for. Note: The warnings became visible because we updated the build process of the Python bindings in a previous commit. Earlier, additional compiler flags for warnings and making warnings into errors were not forwarded to the Python binding's build process but are forwarded now. **Methods exposed to Python (-Wcast-function-type)** The PyMethodDef always expects a pointer to a C implementation of type `PyCFunction` as second argument. `PyCFunction` expects two input arguments. If a method has only one argument, e.g., a method that only accepts `self`, or a method with more than two arguments, e.g., a Python method with keyword arguments, the compiler issues a warning. As far as I understand, this cannot be resolved for functions with keyword arguments (`METH_VARARGS | METH_KEYWORDS`, see [1]) that have three input arguments. We can either cast the method to `PyCFunctionWithKeywords` and get an error about too many input arguments or we cast to PyCFunction and get an error about non-matching function types. **Missing field initalizers (-Wmissing-field-initializers)** The number of fields in structs defined by the Python interface depend on the version number. To fix this we would need, potentialy, confusing `#if ... #else` constructions in the code. **Guarding of pragmas** The used pragmas are not standardised but depend on the compilers. Therefore, we use pragmas specific to the currently detected compiler to avoid errors about unknown pragmas [1]: https://docs.python.org/3/c-api/structures.html [2]: https://stackoverflow.com/a/10264563 UPD achaikou: backport-1.x branch: cherry pick required solving merge conflicts. Originally cherry picked from commit 8c0102abdea591715d519d51cd7695f6f7c93191 --- python/segyio/segyio.cpp | 68 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/python/segyio/segyio.cpp b/python/segyio/segyio.cpp index 1989cc78..b000c904 100644 --- a/python/segyio/segyio.cpp +++ b/python/segyio/segyio.cpp @@ -22,6 +22,13 @@ #define IS_PY3K #endif +#if defined(__GNUC__) && !defined(__clang__) +#define IS_GCC +#endif +#if defined(__clang__) +#define IS_CLANG +#endif + namespace { std::string segy_errstr( int err ) { @@ -1336,6 +1343,16 @@ PyObject* rotation( segyiofd* self, PyObject* args ) { return PyFloat_FromDouble( rotation ); } +#ifdef IS_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcast-function-type" +#pragma clang diagnostic ignored "-Wmissing-field-initializers" +#endif +#ifdef IS_GCC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-function-type" +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif PyMethodDef methods [] = { { "segyopen", (PyCFunction) fd::segyopen, METH_NOARGS, "Open file." }, { "segymake", (PyCFunction) fd::segycreate, @@ -1376,9 +1393,24 @@ PyMethodDef methods [] = { { NULL } }; +#ifdef IS_GCC +#pragma GCC diagnostic pop +#endif +#ifdef IS_CLANG +#pragma clang diagnostic pop +#endif } + +#ifdef IS_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wmissing-field-initializers" +#endif +#ifdef IS_GCC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif PyTypeObject Segyiofd = { PyVarObject_HEAD_INIT( NULL, 0 ) "_segyio.segyfd", /* name */ @@ -1417,6 +1449,12 @@ PyTypeObject Segyiofd = { 0, /* tp_dictoffset */ (initproc)fd::init, /* tp_init */ }; +#ifdef IS_GCC +#pragma GCC diagnostic pop +#endif +#ifdef IS_CLANG +#pragma clang diagnostic pop +#endif PyObject* binsize( PyObject* ) { return PyLong_FromLong( segy_binheader_size() ); @@ -1583,6 +1621,16 @@ PyObject* format( PyObject* , PyObject* args ) { return out; } +#ifdef IS_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcast-function-type" +#pragma clang diagnostic ignored "-Wmissing-field-initializers" +#endif +#ifdef IS_GCC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-function-type" +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif PyMethodDef SegyMethods[] = { { "binsize", (PyCFunction) binsize, METH_NOARGS, "Size of the binary header." }, { "thsize", (PyCFunction) thsize, METH_NOARGS, "Size of the trace header." }, @@ -1599,11 +1647,25 @@ PyMethodDef SegyMethods[] = { { NULL } }; +#ifdef IS_GCC +#pragma GCC diagnostic pop +#endif +#ifdef IS_CLANG +#pragma clang diagnostic pop +#endif } /* module initialization */ #ifdef IS_PY3K +#ifdef IS_CLANG +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wmissing-field-initializers" +#endif +#ifdef IS_GCC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif static struct PyModuleDef segyio_module = { PyModuleDef_HEAD_INIT, "_segyio", /* name of module */ @@ -1611,6 +1673,12 @@ static struct PyModuleDef segyio_module = { -1, /* size of per-interpreter state of the module, or -1 if the module keeps state in global variables. */ SegyMethods }; +#ifdef IS_GCC +#pragma GCC diagnostic pop +#endif +#ifdef IS_CLANG +#pragma clang diagnostic pop +#endif PyMODINIT_FUNC PyInit__segyio(void) { From ffe1a217e7c9f78d77021762198777ec06b49899 Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Wed, 15 Oct 2025 09:56:19 +0200 Subject: [PATCH 50/61] Add additional tests to CI that build Python bindings The tests are used to verify that the Python bindings do not emit any unexpected warnings. (cherry picked from commit d127d60b54077a98a93461eb44365703315c20ac) --- .github/workflows/build.yaml | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 3160bbe1..4a09d25a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,7 +10,7 @@ on: jobs: test: runs-on: ${{ matrix.os }} - name: Build and test ${{ matrix.build_type }} on ${{ matrix.os }} ${{ matrix.compiler }} ${{ matrix.cmake_generator }} + name: Build and test ${{ matrix.build_type }} on ${{ matrix.os }} ${{ matrix.compiler }} ${{ matrix.cmake_generator }} BUILD_PYTHON=${{ matrix.build_python }} strategy: fail-fast: false matrix: @@ -19,37 +19,56 @@ jobs: cmake_generator: "-G \"Visual Studio 17 2022\" -A x64" build_type: "Release" compiler_flags: "-D_CRT_SECURE_NO_WARNINGS /EHsc" + build_python: "OFF" - os: windows-2022 cmake_generator: "-G \"Visual Studio 17 2022\" -A x64" build_type: "Debug" compiler_flags: "-D_CRT_SECURE_NO_WARNINGS /EHsc" + build_python: "OFF" - os: windows-2022 cmake_generator: "-G \"Visual Studio 17 2022\" -A Win32" build_type: "Release" compiler_flags: "-D_CRT_SECURE_NO_WARNINGS /EHsc" + build_python: "OFF" - os: ubuntu-latest privledges: "sudo" build_type: "Release" + build_python: "OFF" - os: ubuntu-latest privledges: "sudo" build_type: "Debug" compiler_flags: "-Wextra -Wall -pedantic" + build_python: "OFF" + - os: ubuntu-latest + privledges: "sudo" + build_type: "Debug" + compiler_flags: "-Wextra -Wall -pedantic" + build_python: "ON" - os: ubuntu-latest privledges: "sudo" compiler: "clang" mkdoc: "-DBUILD_DOC=ON -DSPHINX_ARGS=-WT" build_type: "Release" + build_python: "OFF" - os: ubuntu-latest privledges: "sudo" compiler: "clang" build_type: "Debug" compiler_flags: "-Wextra -Wall -pedantic" + build_python: "OFF" - os: macos-13 privledges: "sudo" build_type: "Release" + build_python: "OFF" - os: macos-latest privledges: "sudo" build_type: "Release" + build_python: "OFF" + - os: macos-latest + privledges: "sudo" + build_type: "Debug" + compiler_flags: "-Wextra -Wall -pedantic" + build_python: "ON" steps: - uses: actions/checkout@v4 @@ -62,12 +81,24 @@ jobs: echo "CC=/usr/bin/clang" >> $GITHUB_ENV echo "CXX=/usr/bin/clang++" >> $GITHUB_ENV + # Required to be able to install Python packages on MacOS + - uses: actions/setup-python@v6 + if: ${{ matrix.build_python == 'ON' }} + with: + python-version: '3.13' + + - name: Install build/test for Python dependencies + working-directory: python + if: ${{ matrix.build_python == 'ON' }} + run: | + python3 -m pip install -r requirements-dev.txt + - name: Configure shell: bash run: | cmake -S . -B build \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ - -DBUILD_PYTHON=OFF \ + -DBUILD_PYTHON=${{ matrix.build_python }} \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ From a57ef952f01eed3aabd2154d5495aa5f406d1072 Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Fri, 17 Oct 2025 09:36:42 +0200 Subject: [PATCH 51/61] Improve return value check Add explicit EOF check in segyio-catr when reading from command line options. (cherry picked from commit 09fa7f33d284c8c757090facd92f45e3ea8aa725) --- applications/segyio-catr.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/applications/segyio-catr.c b/applications/segyio-catr.c index 8a4cf1f1..a1ddcb82 100644 --- a/applications/segyio-catr.c +++ b/applications/segyio-catr.c @@ -550,6 +550,11 @@ static struct options parse_options( int argc, char** argv ){ ret = sscanf(optarg," %d %d %d", &r->start, &r->stop, &r->step ); + if ( ret == EOF ) { + opts.errmsg = "input error while parsing range parameters"; + return opts; + } + if( ret && ( r->start < 0 || r->stop < 0 || r->step < 0 ) ) { opts.errmsg = "range parameters must be positive"; return opts; From 115e27f881e3270e46713f64af545c8bf7d889ac Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Fri, 17 Oct 2025 09:40:55 +0200 Subject: [PATCH 52/61] Reduce permissions of GitHub tokens in Actions (cherry picked from commit 7bebfd7a486fe18ca955e20c57c4c8d551802df8) --- .github/workflows/analyzers.yaml | 1 + .github/workflows/benchmarks.yaml | 1 + .github/workflows/bigendian.yaml | 1 + .github/workflows/build.yaml | 1 + .github/workflows/large.yaml | 1 + .github/workflows/wheels.yaml | 1 + 6 files changed, 6 insertions(+) diff --git a/.github/workflows/analyzers.yaml b/.github/workflows/analyzers.yaml index 88178bb7..420b67b4 100644 --- a/.github/workflows/analyzers.yaml +++ b/.github/workflows/analyzers.yaml @@ -1,4 +1,5 @@ name: Run analyzers +permissions: {} on: push: diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index 1aa8b8f3..28f57071 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -1,4 +1,5 @@ name: Benchmarks +permissions: {} on: push: diff --git a/.github/workflows/bigendian.yaml b/.github/workflows/bigendian.yaml index 7c1f1ebd..c4fe6555 100644 --- a/.github/workflows/bigendian.yaml +++ b/.github/workflows/bigendian.yaml @@ -1,4 +1,5 @@ name: Test bigendian +permissions: {} on: push: diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4a09d25a..9a77090b 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,4 +1,5 @@ name: Build and Test +permissions: {} on: push: diff --git a/.github/workflows/large.yaml b/.github/workflows/large.yaml index 79d4f78d..025ec69b 100644 --- a/.github/workflows/large.yaml +++ b/.github/workflows/large.yaml @@ -1,4 +1,5 @@ name: Run large tests +permissions: {} on: push: diff --git a/.github/workflows/wheels.yaml b/.github/workflows/wheels.yaml index 26115527..becbcafa 100644 --- a/.github/workflows/wheels.yaml +++ b/.github/workflows/wheels.yaml @@ -1,4 +1,5 @@ name: Wheels +permissions: {} on: push: From a4eaf0f51d6c3623a3c20e1316f9d1928ae19762 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Tue, 28 Oct 2025 17:13:35 +0100 Subject: [PATCH 53/61] Renovate badges (cherry picked from commit 466cf219c815fdc5bf9625977f18bb9e7099630d) --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7e2761cd..a6398671 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,7 @@ # segyio # -[![Travis](https://img.shields.io/travis/equinor/segyio/master.svg?label=travis)](https://travis-ci.org/equinor/segyio) -[![Appveyor](https://ci.appveyor.com/api/projects/status/2i5cr8ui2t9qbxk9?svg=true)](https://ci.appveyor.com/project/statoil-travis/segyio) -[![PyPI Updates](https://pyup.io/repos/github/equinor/segyio/shield.svg)](https://pyup.io/repos/github/equinor/segyio/) -[![Python 3](https://pyup.io/repos/github/equinor/segyio/python-3-shield.svg)](https://pyup.io/repos/github/equinor/segyio/) +[![PyPI - Version](https://img.shields.io/pypi/v/segyio)](https://pypi.org/project/segyio/) +[![Read the Docs](https://img.shields.io/readthedocs/segyio)](https://segyio.readthedocs.io/) > [!NOTE] > 🚧 *segyio 2.0* is under construction in the `main` branch. 🚧 From 9fde455c7c848db79afffaabc329a4499db13135 Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Tue, 28 Oct 2025 13:56:19 +0100 Subject: [PATCH 54/61] Update Action for Trusted Publishing on PyPI This commit updates the publication workflow for Trusted Publishing via GitHub Actions [1]. Further configuration changes are made on the repository (GitHub) and PyPI level [2]. [1]: https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/ [2]: https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/#configuring-trusted-publishing (cherry picked from commit 7f5b253455887085834404d38d0d6221c3140f1b) --- .github/workflows/wheels.yaml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/wheels.yaml b/.github/workflows/wheels.yaml index becbcafa..8a57adb9 100644 --- a/.github/workflows/wheels.yaml +++ b/.github/workflows/wheels.yaml @@ -70,6 +70,13 @@ jobs: name: Publish wheels to PyPI runs-on: ubuntu-latest if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') + + environment: + name: pypi + + permissions: + id-token: write + steps: - uses: actions/checkout@v4 @@ -80,9 +87,6 @@ jobs: path: ./wheelhouse/ - name: Publish wheels to PyPI - uses: pypa/gh-action-pypi-publish@release/v1 with: - user: __token__ - password: ${{ secrets.PYPI_API_TOKEN }} packages-dir: ./wheelhouse/ From ad5425aee7c6a07d8007d0728b409a9e1be8e499 Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:35:38 +0100 Subject: [PATCH 55/61] Update RefTrace's garbage collection Python 3.14 changed how object reference counts work [1], often resulting in lower counts than before. In RefTrace, this reduces the internal trace reference count from 3 to 2 for objects that may be garbage collected. [1]: https://docs.python.org/3/whatsnew/3.14.html#optimizations (cherry picked from commit 7fc9868b9d8aca119f1fe31c93102b32700dade5) --- python/segyio/trace.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/python/segyio/trace.py b/python/segyio/trace.py index d560ce26..32f9ccbc 100644 --- a/python/segyio/trace.py +++ b/python/segyio/trace.py @@ -435,8 +435,14 @@ def flush(self): be useful in certain contexts to provide stronger guarantees. """ garbage = [] + # If there are no external references to the data (so only internal + # references remain), the reference count is + # - 2 (Python >= 3.14) + # - 3 (Python < 3.14) + garbage_threshold = 3 if sys.version_info < (3, 14) else 2 + for i, (x, signature) in self.refs.items(): - if sys.getrefcount(x) == 3: + if sys.getrefcount(x) == garbage_threshold: garbage.append(i) if fingerprint(x) == signature: continue From 5c42877c07f947a2452c3a710b85236978c888c3 Mon Sep 17 00:00:00 2001 From: Alexander Jaust <18347253+ajaust@users.noreply.github.com> Date: Mon, 17 Nov 2025 07:19:36 +0100 Subject: [PATCH 56/61] Enable Python 3.14 build (cherry picked from commit 252acc4c604a1f87306e27cabfa09502ae4d5858) --- .github/workflows/wheels.yaml | 2 +- python/pyproject.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/wheels.yaml b/.github/workflows/wheels.yaml index 8a57adb9..00718bd6 100644 --- a/.github/workflows/wheels.yaml +++ b/.github/workflows/wheels.yaml @@ -55,7 +55,7 @@ jobs: CIBW_ENVIRONMENT_WINDOWS: > CMAKE_GENERATOR="${{ matrix.cmake_generator }}" CMAKE_GENERATOR_PLATFORM="${{ matrix.cmake_generator_platform }}" - CIBW_SKIP: cp38-* cp314* *-musllinux_* + CIBW_SKIP: cp38-* *-musllinux_* CIBW_ARCHS: ${{ matrix.arch }} run: | python -m cibuildwheel --output-dir wheelhouse python/ diff --git a/python/pyproject.toml b/python/pyproject.toml index d755154c..d3de9f62 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -71,6 +71,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Physics", "Topic :: Software Development :: Libraries", From 8103c40e57136df0bb61c85b91290df115fae662 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Sat, 22 Nov 2025 19:32:19 +0100 Subject: [PATCH 57/61] Drop support for python 3.9 Python 3.9 is EOL. (cherry picked from commit 4792eaeed1187a8c38484d4881e0a28dfb279591) --- .github/workflows/wheels.yaml | 2 +- README.md | 2 +- python/pyproject.toml | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/wheels.yaml b/.github/workflows/wheels.yaml index 00718bd6..a7a2e684 100644 --- a/.github/workflows/wheels.yaml +++ b/.github/workflows/wheels.yaml @@ -55,7 +55,7 @@ jobs: CIBW_ENVIRONMENT_WINDOWS: > CMAKE_GENERATOR="${{ matrix.cmake_generator }}" CMAKE_GENERATOR_PLATFORM="${{ matrix.cmake_generator_platform }}" - CIBW_SKIP: cp38-* *-musllinux_* + CIBW_SKIP: cp38-* cp39-* *-musllinux_* CIBW_ARCHS: ${{ matrix.arch }} run: | python -m cibuildwheel --output-dir wheelhouse python/ diff --git a/README.md b/README.md index a6398671..20805ff0 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ To build segyio you need: * A C99 compatible C compiler (tested mostly on gcc and clang) * A C++ compiler for the Python extension, and C++11 for the tests * [CMake](https://cmake.org/) version 3.18 or greater - * [Python](https://www.python.org/) 3.9 or greater + * [Python](https://www.python.org/) 3.10 or greater * [numpy](http://www.numpy.org/) version 1.10 or greater * [pytest](https://pypi.org/project/pytest) diff --git a/python/pyproject.toml b/python/pyproject.toml index d3de9f62..5c97e5c3 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -13,7 +13,7 @@ authors = [ ] urls.homepage = "https://github.com/equinor/segyio" license = "LGPL-3.0-or-later" -requires-python = ">=3.9" +requires-python = ">=3.10" dependencies = ["numpy >= 1.10"] readme = { text = """ ======= @@ -66,7 +66,6 @@ classifiers = [ "Intended Audience :: Science/Research", "Natural Language :: English", "Programming Language :: Python", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", From 66680c2e27409646542d9108d390cb54d3ef385b Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Fri, 28 Nov 2025 14:48:46 +0100 Subject: [PATCH 58/61] Update SEG-Y revision links (cherry picked from commit 8c3a5fdd64ab7f846b49ed3453e4bfc44261a3f8) --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 20805ff0..3570ee12 100644 --- a/README.md +++ b/README.md @@ -357,10 +357,10 @@ discriminate between the revisions, but instead tries to use information available in the file. For an *actual* standard's reference, please see the publications by SEG: -- [SEG-Y 0 (1975)](https://library.seg.org/pb-assets/technical-standards/seg_y_rev0-1686080980707.pdf) -- [SEG-Y 1 (2002)](https://library.seg.org/pb-assets/technical-standards/seg_y_rev1-1686080991247.pdf) -- [SEG-Y 2 (2017)](https://library.seg.org/pb-assets/technical-standards/seg_y_rev2_0-mar2017-1686080998003.pdf) -- [SEG-Y 2.1 (2023)](https://library.seg.org/pb-assets/technical-standards/seg_y_rev2_1-oct2023-1701361639333.pdf) +- [SEG-Y 0 (1975)](https://seg.org/wp-content/uploads/2025/11/seg_y_rev0.pdf) +- [SEG-Y 1 (2002)](https://seg.org/wp-content/uploads/2025/11/seg_y_rev1.pdf) +- [SEG-Y 2 (2017)](https://seg.org/wp-content/uploads/2025/11/seg_y_rev2_0_mar2017.pdf) +- [SEG-Y 2.1 (2023)](https://seg.org/wp-content/uploads/2025/11/seg_y_rev2_1-oct2023.pdf) ## Contributing ## From 78c3b928b7aa1bd5b917c9977a3c1a8bc8d8d17f Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Tue, 28 Oct 2025 16:11:12 +0100 Subject: [PATCH 59/61] Fix compilation complaints --- python/segyio/segyio.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/python/segyio/segyio.cpp b/python/segyio/segyio.cpp index b000c904..eb29aace 100644 --- a/python/segyio/segyio.cpp +++ b/python/segyio/segyio.cpp @@ -239,6 +239,7 @@ struct buffer_guard { namespace fd { int init( segyiofd* self, PyObject* args, PyObject* kwargs ) { + (void)kwargs; // required by signature. mark to silence -Wunused-parameter char* filename = NULL; char* mode = NULL; int endian = 0; From 38abbb5f6a44d020a80bee23ac16886b14c4db8f Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Fri, 28 Nov 2025 17:18:50 +0100 Subject: [PATCH 60/61] Migrate to newest macos intel Migration happens only for v1.x branch to keep support. Github expects to drop macos intel support fall 2027. --- .github/workflows/build.yaml | 2 +- .github/workflows/wheels.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 9a77090b..ca30c296 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -57,7 +57,7 @@ jobs: build_type: "Debug" compiler_flags: "-Wextra -Wall -pedantic" build_python: "OFF" - - os: macos-13 + - os: macos-15-intel privledges: "sudo" build_type: "Release" build_python: "OFF" diff --git a/.github/workflows/wheels.yaml b/.github/workflows/wheels.yaml index a7a2e684..0fdebba6 100644 --- a/.github/workflows/wheels.yaml +++ b/.github/workflows/wheels.yaml @@ -34,7 +34,7 @@ jobs: arch: i686 # macos-latest runs on arm64 architecture and cibuildwheel cross # compiling for x86_64 fails - - os: macos-13 + - os: macos-15-intel arch: x86_64 - os: macos-latest arch: arm64 From 3a65a386213e5c89607b9362e9ce6c8360db8057 Mon Sep 17 00:00:00 2001 From: Alena Chaikouskaya Date: Tue, 28 Oct 2025 16:24:33 +0100 Subject: [PATCH 61/61] Adjust workflows for 1.x branch support --- .github/workflows/analyzers.yaml | 4 ++-- .github/workflows/benchmarks.yaml | 4 ++-- .github/workflows/bigendian.yaml | 4 ++-- .github/workflows/build.yaml | 4 ++-- .github/workflows/large.yaml | 4 ++-- .github/workflows/wheels.yaml | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/analyzers.yaml b/.github/workflows/analyzers.yaml index 420b67b4..715f00ce 100644 --- a/.github/workflows/analyzers.yaml +++ b/.github/workflows/analyzers.yaml @@ -3,9 +3,9 @@ permissions: {} on: push: - branches: [main] + branches: [segyio-1.x] pull_request: - branches: [main] + branches: [segyio-1.x] workflow_dispatch: jobs: diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index 28f57071..9d773fbb 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -3,9 +3,9 @@ permissions: {} on: push: - branches: [main] + branches: [segyio-1.x] pull_request: - branches: [main] + branches: [segyio-1.x] workflow_dispatch: inputs: commit_ref: diff --git a/.github/workflows/bigendian.yaml b/.github/workflows/bigendian.yaml index c4fe6555..25b17c75 100644 --- a/.github/workflows/bigendian.yaml +++ b/.github/workflows/bigendian.yaml @@ -3,9 +3,9 @@ permissions: {} on: push: - branches: [main] + branches: [segyio-1.x] pull_request: - branches: [main] + branches: [segyio-1.x] workflow_dispatch: jobs: diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index ca30c296..323920d4 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -3,9 +3,9 @@ permissions: {} on: push: - branches: [main] + branches: [segyio-1.x] pull_request: - branches: [main] + branches: [segyio-1.x] workflow_dispatch: jobs: diff --git a/.github/workflows/large.yaml b/.github/workflows/large.yaml index 025ec69b..8c1301e9 100644 --- a/.github/workflows/large.yaml +++ b/.github/workflows/large.yaml @@ -3,9 +3,9 @@ permissions: {} on: push: - branches: [main] + branches: [segyio-1.x] pull_request: - branches: [main] + branches: [segyio-1.x] workflow_dispatch: jobs: diff --git a/.github/workflows/wheels.yaml b/.github/workflows/wheels.yaml index 0fdebba6..616f79d4 100644 --- a/.github/workflows/wheels.yaml +++ b/.github/workflows/wheels.yaml @@ -3,11 +3,11 @@ permissions: {} on: push: - branches: [main] + branches: [segyio-1.x] tags: - '*' pull_request: - branches: [main] + branches: [segyio-1.x] workflow_dispatch: jobs: