From 4bcdd3b6c6fb55f5235f81f0eea7061c8346f5c5 Mon Sep 17 00:00:00 2001 From: Markus Date: Wed, 24 Jan 2024 09:56:23 +0000 Subject: [PATCH] From refs/heads/main a4876fbb571a1c45495f1db8ed79ab70910329f3 --- .buildinfo | 4 + .nojekyll | 0 README.html | 319 +++ README.md | 3 + ...ples_example_heavy_rainfall_index_15_0.png | Bin 0 -> 42553 bytes _images/examples_example_python_api_29_0.png | Bin 0 -> 73399 bytes _images/examples_example_python_api_31_0.png | Bin 0 -> 69612 bytes ...mples_example_python_api_extended_10_0.png | Bin 0 -> 18854 bytes ...amples_example_python_api_extended_9_1.png | Bin 0 -> 20575 bytes .../idf_analysis/event_series_analysis.html | 329 +++ _modules/idf_analysis/idf_backend.html | 436 ++++ _modules/idf_analysis/idf_class.html | 984 +++++++ _modules/idf_analysis/in_out.html | 152 ++ _modules/idf_analysis/little_helpers.html | 337 +++ .../idf_analysis/parameter_formulations.html | 205 ++ _modules/idf_analysis/plot_helpers.html | 190 ++ _modules/idf_analysis/sww_utils.html | 321 +++ _modules/index.html | 85 + _sources/README.md.txt | 210 ++ _sources/api.rst.txt | 10 + _sources/base_functions.rst.txt | 59 + .../examples/example_commandline.ipynb.txt | 255 ++ .../example_heavy_rainfall_index.ipynb.txt | 442 ++++ .../examples/example_python_api.ipynb.txt | 534 ++++ .../example_python_api_extended.ipynb.txt | 288 ++ _sources/index.rst.txt | 25 + _static/basic.css | 925 +++++++ _static/doctools.js | 156 ++ _static/documentation_options.js | 13 + _static/file.png | Bin 0 -> 286 bytes _static/language_data.js | 199 ++ _static/minus.png | Bin 0 -> 90 bytes _static/nature.css | 252 ++ _static/nbsphinx-broken-thumbnail.svg | 9 + _static/nbsphinx-code-cells.css | 259 ++ _static/nbsphinx-gallery.css | 31 + _static/nbsphinx-no-thumbnail.svg | 9 + _static/plus.png | Bin 0 -> 90 bytes _static/pygments.css | 84 + _static/searchtools.js | 574 ++++ _static/sphinx_highlight.js | 154 ++ api.html | 665 +++++ base_functions.html | 709 +++++ examples/example_commandline.html | 318 +++ examples/example_commandline.ipynb | 255 ++ examples/example_heavy_rainfall_index.html | 2211 ++++++++++++++++ examples/example_heavy_rainfall_index.ipynb | 2315 +++++++++++++++++ examples/example_python_api.html | 1246 +++++++++ examples/example_python_api.ipynb | 1454 +++++++++++ examples/example_python_api_extended.html | 519 ++++ examples/example_python_api_extended.ipynb | 589 +++++ genindex.html | 404 +++ index.html | 147 ++ objects.inv | Bin 0 -> 2575 bytes py-modindex.html | 127 + search.html | 101 + searchindex.js | 1 + 57 files changed, 18914 insertions(+) create mode 100644 .buildinfo create mode 100644 .nojekyll create mode 100644 README.html create mode 100644 README.md create mode 100644 _images/examples_example_heavy_rainfall_index_15_0.png create mode 100644 _images/examples_example_python_api_29_0.png create mode 100644 _images/examples_example_python_api_31_0.png create mode 100644 _images/examples_example_python_api_extended_10_0.png create mode 100644 _images/examples_example_python_api_extended_9_1.png create mode 100644 _modules/idf_analysis/event_series_analysis.html create mode 100644 _modules/idf_analysis/idf_backend.html create mode 100644 _modules/idf_analysis/idf_class.html create mode 100644 _modules/idf_analysis/in_out.html create mode 100644 _modules/idf_analysis/little_helpers.html create mode 100644 _modules/idf_analysis/parameter_formulations.html create mode 100644 _modules/idf_analysis/plot_helpers.html create mode 100644 _modules/idf_analysis/sww_utils.html create mode 100644 _modules/index.html create mode 100644 _sources/README.md.txt create mode 100644 _sources/api.rst.txt create mode 100644 _sources/base_functions.rst.txt create mode 100644 _sources/examples/example_commandline.ipynb.txt create mode 100644 _sources/examples/example_heavy_rainfall_index.ipynb.txt create mode 100644 _sources/examples/example_python_api.ipynb.txt create mode 100644 _sources/examples/example_python_api_extended.ipynb.txt create mode 100644 _sources/index.rst.txt create mode 100644 _static/basic.css create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/file.png create mode 100644 _static/language_data.js create mode 100644 _static/minus.png create mode 100644 _static/nature.css create mode 100644 _static/nbsphinx-broken-thumbnail.svg create mode 100644 _static/nbsphinx-code-cells.css create mode 100644 _static/nbsphinx-gallery.css create mode 100644 _static/nbsphinx-no-thumbnail.svg create mode 100644 _static/plus.png create mode 100644 _static/pygments.css create mode 100644 _static/searchtools.js create mode 100644 _static/sphinx_highlight.js create mode 100644 api.html create mode 100644 base_functions.html create mode 100644 examples/example_commandline.html create mode 100644 examples/example_commandline.ipynb create mode 100644 examples/example_heavy_rainfall_index.html create mode 100644 examples/example_heavy_rainfall_index.ipynb create mode 100644 examples/example_python_api.html create mode 100644 examples/example_python_api.ipynb create mode 100644 examples/example_python_api_extended.html create mode 100644 examples/example_python_api_extended.ipynb create mode 100644 genindex.html create mode 100644 index.html create mode 100644 objects.inv create mode 100644 py-modindex.html create mode 100644 search.html create mode 100644 searchindex.js diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 0000000..4002c35 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 2b19e505fcdb10a3dbc579c74e3d59d4 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/README.html b/README.html new file mode 100644 index 0000000..3cd6271 --- /dev/null +++ b/README.html @@ -0,0 +1,319 @@ + + + + + + + + Intensity duration frequency analysis (based on KOSTRA) — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + + + +
+
+
+
+ +

© Institute of Urban Water Management and Landscape Water Engineering, Graz University of Technology and Markus Pichler

+
+

Intensity duration frequency analysis (based on KOSTRA)

+

license +PyPI

+

PyPI - Downloads +PyPI - Downloads +PyPI - Downloads

+

Heavy rain as a function of the duration and the return period acc. to DWA-A 531 (2012). +This program reads the measurement data of the rainfall +and calculates the distribution of the design rainfall as a function of the return period and the duration +for duration steps up to 12 hours (and more) and return period in a range of ‘0.5a ≤ T_n ≤ 100a’.

+

The guideline was used in the application KOSTRA-DWD.

+
+
+

Heavy rainfall data are among the most important planning parameters in water management and hydraulic engineering practice. In urban areas, for example, they are required as initial parameters for the design of rainwater drainage systems and in watercourses for the dimensioning of hydraulic structures. The accuracy of the target values of the corresponding calculation methods and models depends crucially on their accuracy. Their overestimation can lead to considerable additional costs in the structural implementation, their underestimation to an unacceptable, excessive residual risk of failure during the operation of water management and hydraulic engineering facilities. Despite the area-wide availability of heavy rainfall data through “Coordinated Heavy Rainfall Regionalisation Analyses” (KOSTRA), there is still a need for local station analyses, e.g. to evaluate the now extended data series, to evaluate recent developments or to classify local peculiarities in comparison to the KOSTRA data. However, this is only possible without restrictions if the methodological approach recommended in the worksheet is followed. In the DWA-A 531 worksheet, the main features of the ATVA 121 worksheet published in 1985 and of the identical DVWK-R 124 booklet of the DVWK Rules for Water Management “Heavy Rain Evaluation after Return Time and Duration” are retained. The aim of the revision is to take account of current developments without, however, calling into question the standardisation of the procedure for statistical heavy rain analyses which was intended at the time.

+
+

DWA-A 531 (2012) Translated with www.DeepL.com/Translator

+
+
+

An intensity-duration-frequency curve (IDF curve) is a mathematical function that relates the rainfall intensity with its duration and frequency of occurrence. These curves are commonly used in hydrology for flood forecasting and civil engineering for urban drainage design. However, the IDF curves are also analysed in hydrometeorology because of the interest in the time concentration or time-structure of the rainfall.

+
+

Wikipedia

+
+

This package was developed by Markus Pichler during his bachelor thesis and finalised it in the course of his employment at the Institute of Urban Water Management and Landscape Water Engineering.

+
+

Documentation

+

Read the docs here 📖.

+
+
+

Installation

+

This package is written in Python3. (use a version > 3.5)

+
pip install idf-analysis
+
+
+

Add the following tags to the command for special options:

+
    +
  • --user: To install the package only for the local user account (no admin rights needed)

  • +
  • --upgrade: To update the package

  • +
+
+

Windows

+

You have to install python first (i.e. the original python from the website).

+

To use the command-line-tool, it is advisable to add the path to your Python binary to the environment variables ^path1. +There is also an option during the installation to add python to the PATH automatically. ^path2

+
+
+

Linux/Unix

+

Python is pre-installed on most operating systems (as you probably knew).

+
+
+

Dependencies

+

Packages required for this program will be installed with pip during the installation process and can be seen +in the requirements.txt file.

+
+
+
+

Usage

+

The documentation of the python-API can be found here.

+
+
+

Commandline tool

+

The following commands show the usage for Linux/Unix systems. +To use these features on Windows you have to add python -m before each command.

+

To start the script use following commands in the terminal/Prompt

+

idf_analysis

+
+

idf_analysis -h

+
+
usage: __main__.py [-h] -i INPUT
+                   [-ws {ATV-A_121,DWA-A_531,DWA-A_531_advektiv}]
+                   [-kind {partial,annual}] [-t {>= 0.5 a and <= 100 a}]
+                   [-d {>= 5 min and <= 8640 min}] [-r {>= 0 L/s*ha}]
+                   [-h_N {>= 0 mm}] [--r_720_1] [--plot] [--export_table]
+
+heavy rain as a function of the duration and the return period acc. to DWA-A
+531 (2012) All files will be saved in the same directory of the input file but
+in a subfolder called like the inputfile + "_idf_data". Inside this folder a
+file called "idf_parameter.yaml"-file will be saved and contains interim-
+calculation-results and will be automatically reloaded on the next call.
+
+optional arguments:
+  -h, --help            show this help message and exit
+  -i INPUT, --input INPUT
+                        input file with the rain time-series (csv or parquet)
+  -ws {ATV-A_121,DWA-A_531,DWA-A_531_advektiv}, --worksheet {ATV-A_121,DWA-A_531,DWA-A_531_advektiv}
+                        From which worksheet the recommendations for
+                        calculating the parameters should be taken.
+  -kind {partial,annual}, --series_kind {partial,annual}
+                        The kind of series used for the calculation.
+                        (Calculation with partial series is more precise and
+                        recommended.)
+  -t {>= 0.5 a and <= 100 a}, --return_period {>= 0.5 a and <= 100 a}
+                        return period in years (If two of the three variables
+                        (rainfall (height or flow-rate), duration, return
+                        period) are given, the third variable is calculated.)
+  -d {>= 5 min and <= 8640 min}, --duration {>= 5 min and <= 8640 min}
+                        duration in minutes (If two of the three variables
+                        (rainfall (height or flow-rate), duration, return
+                        period) are given, the third variable is calculated.)
+  -r {>= 0 L/(s*ha)}, --flow_rate_of_rainfall {>= 0 L/(s*ha)}
+                        rainfall in Liter/(s * ha) (If two of the three
+                        variables (rainfall (height or flow-rate), duration,
+                        return period) are given, the third variable is
+                        calculated.)
+  -h_N {>= 0 mm}, --height_of_rainfall {>= 0 mm}
+                        rainfall in mm or Liter/m^2 (If two of the three
+                        variables (rainfall (height or flow-rate), duration,
+                        return period) are given, the third variable is
+                        calculated.)
+  --r_720_1             design rainfall with a duration of 720 minutes (=12 h)
+                        and a return period of 1 year
+  --plot                get a plot of the idf relationship
+  --export_table        get a table of the most frequent used values
+
+
+
+
+

Example

+

Example Jupyter notebook for the commandline

+

Example Jupyter notebook for the python api

+

Example python skript

+
+

Example Files

+

Interim Results of the idf analysis

+
+
+

Example Plot

+

IDF-Curves-Plot

+
+
+

Example IDF table

+

IDF-Table

+

| return period in a
duration in min | 1 | 2 | 3 | 5 | 10 | 20 | 25 | 30 | 50 | 75 | 100 | +|————————————–:|——:|——-:|——-:|——-:|——-:|——-:|——-:|——-:|——-:|——-:|——-:| +| 5 | 9.39 | 10.97 | 11.89 | 13.04 | 14.61 | 16.19 | 16.69 | 17.11 | 18.26 | 19.18 | 19.83 | +| 10 | 15.15 | 17.62 | 19.06 | 20.88 | 23.35 | 25.82 | 26.62 | 27.27 | 29.09 | 30.54 | 31.56 | +| 15 | 19.03 | 22.25 | 24.13 | 26.51 | 29.72 | 32.94 | 33.98 | 34.83 | 37.20 | 39.08 | 40.42 | +| 20 | 21.83 | 25.71 | 27.99 | 30.85 | 34.73 | 38.62 | 39.87 | 40.89 | 43.75 | 46.02 | 47.63 | +| 30 | 25.60 | 30.66 | 33.62 | 37.35 | 42.41 | 47.47 | 49.10 | 50.43 | 54.16 | 57.12 | 59.22 | +| 45 | 28.92 | 35.51 | 39.37 | 44.23 | 50.83 | 57.42 | 59.54 | 61.28 | 66.14 | 69.99 | 72.73 | +| 60 | 30.93 | 38.89 | 43.54 | 49.40 | 57.36 | 65.31 | 67.88 | 69.97 | 75.83 | 80.49 | 83.79 | +| 90 | 33.37 | 41.74 | 46.64 | 52.80 | 61.17 | 69.54 | 72.23 | 74.43 | 80.60 | 85.49 | 88.96 | +| 180 | 38.01 | 47.13 | 52.46 | 59.18 | 68.30 | 77.42 | 80.36 | 82.76 | 89.48 | 94.81 | 98.60 | +| 270 | 41.01 | 50.60 | 56.21 | 63.28 | 72.87 | 82.46 | 85.55 | 88.07 | 95.14 | 100.75 | 104.73 | +| 360 | 43.29 | 53.23 | 59.04 | 66.37 | 76.31 | 86.25 | 89.45 | 92.06 | 99.39 | 105.20 | 109.33 | +| 450 | 45.14 | 55.36 | 61.33 | 68.87 | 79.08 | 89.30 | 92.59 | 95.28 | 102.81 | 108.79 | 113.03 | +| 600 | 47.64 | 58.23 | 64.43 | 72.23 | 82.82 | 93.41 | 96.82 | 99.61 | 107.42 | 113.61 | 118.01 | +| 720 | 49.29 | 60.13 | 66.47 | 74.45 | 85.29 | 96.12 | 99.61 | 102.46 | 110.44 | 116.78 | 121.28 | +| 1080 | 54.41 | 64.97 | 71.15 | 78.94 | 89.50 | 100.06 | 103.46 | 106.24 | 114.02 | 120.20 | 124.58 | +| 1440 | 58.02 | 67.72 | 73.39 | 80.54 | 90.24 | 99.93 | 103.05 | 105.61 | 112.75 | 118.42 | 122.45 | +| 2880 | 66.70 | 77.41 | 83.68 | 91.57 | 102.29 | 113.00 | 116.45 | 119.26 | 127.16 | 133.42 | 137.87 | +| 4320 | 71.93 | 85.72 | 93.78 | 103.95 | 117.73 | 131.52 | 135.96 | 139.58 | 149.75 | 157.81 | 163.53 | +| 5760 | 78.95 | 95.65 | 105.42 | 117.72 | 134.43 | 151.13 | 156.50 | 160.89 | 173.20 | 182.97 | 189.90 | +| 7200 | 83.53 | 101.38 | 111.82 | 124.98 | 142.83 | 160.68 | 166.43 | 171.12 | 184.28 | 194.72 | 202.13 | +| 8640 | 85.38 | 104.95 | 116.40 | 130.82 | 150.38 | 169.95 | 176.25 | 181.40 | 195.82 | 207.27 | 215.39 |

+
+
+
+

Background

+

Pseudocode for the parameter calculation.

+
For every duration step
+    calculating event sums
+    
+    if using annual event series:  # only recommeded for measurements longer than 20 year
+        converting every max event sum per year to a series
+        calculating parameters u and w using the gumbel distribution
+        
+    elif using partial event series:
+        converting the n (approximatly 2.72 x measurement duration in years) biggest event sums to a series
+        calculating parameters u and w using the exponential distribution
+    
+Splitting IDF curve formulation in to several duration ranges
+For each duration range:
+    For each parameter (u and w):
+        balancing the parameter over all duation steps (in the range) using a given formulation (creating parameters a and b)
+        # one-folded-logaritmic | two-folded-logarithmic | hyperbolic
+
+u(D) = f(a_u, b_u, D)
+w(D) = f(a_w, b_w, D)
+
+h(D,Tn) = u(D) + w(D) * ln(Tn)
+
+
+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..bf51521 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +#GitHub Pages + +Last update of sphinx html documentation from [a4876fb](https://github.com/MarkusPic/intensity_duration_frequency_analysis/tree/a4876fbb571a1c45495f1db8ed79ab70910329f3) diff --git a/_images/examples_example_heavy_rainfall_index_15_0.png b/_images/examples_example_heavy_rainfall_index_15_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f89dc6d11eae44c35cf7dd7a1c24edfd1f197923 GIT binary patch literal 42553 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 literal 0 HcmV?d00001 diff --git a/_images/examples_example_python_api_31_0.png b/_images/examples_example_python_api_31_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8f19388bfaea295d9a3b2996f6e98c85b5809611 GIT binary patch literal 69612 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 EKSx-_%K!iX literal 0 HcmV?d00001 diff --git a/_images/examples_example_python_api_extended_10_0.png b/_images/examples_example_python_api_extended_10_0.png new file mode 100644 index 0000000000000000000000000000000000000000..24d4c80934642bfde146ef717ff21d4c532bfbfe GIT binary patch literal 18854 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 literal 0 HcmV?d00001 diff --git a/_images/examples_example_python_api_extended_9_1.png b/_images/examples_example_python_api_extended_9_1.png new file mode 100644 index 0000000000000000000000000000000000000000..eb168670540f19681c4d6879dbf8e9f6c7748dee GIT binary patch literal 20575 zcmb6Aby$>d)HaL~(k0!Xq)3C5Na@fWBMl-Y4blywIJAU-NJ%pYNH+`(Qqmog(j{H{ z8h_9G?7iRbuTKx)V7TwAuXCMit#gHGsL2!H(%_UHQsfsZN=hmf3W|EaB1A^VD|I)`+fQeF`n*M5n53MY z%Z${S1N#w=0{Qo<<>$rAT4ggYXKftD{c?7Tq2sHSIh=SiwmL;Cf%xAS0g}hPX}*I^XJTh+>t9^cRdvYQ`S9Bn zo@gy|2bocYn!Rr)O8`G(KPA5tz;EXxA<@EDdCpPKsS)ydjG{8rhI2ixwLWvG+pvAsj9*tILAy=8x>Zx8Cx-J!;$lJrqTDA-U>N?oDAgGz@Wn#>rxQ_ubS6%O_F5563|Sw#yw?oUPAF8 z7CZ-}P-8Mz4s!&pQ)6u0moMHn1_m?DdU6DyA-&P@;o-89+}yP!EJnW{y!%cq%6=H| z%aWRTHl|H@y%I!Hicf4s-O6e`x3jY|KZc6GZEh9385%S(F>wQj!%-ZMMi)!pT`EAV z;9I_k2E+xE7Wx>zO8C4=_lA`B z+Yd_# z(Tv+Cc`X||fBsNa8U>WPP8xfDW^hKJa=&;h(@u4-iK8G!c2&e=I?9b$jD60o;GR&V z*U|5fj8^^W6224q)@eePgQ;SIQWvZ7k=vy$0XvP}$EOmjpI%rQxpb1RpaxuyW~j}9 z4`Fq#8-wS=F#%5wd)YJkB@R1C&j?dDu8)TnSE9xD9$_Z)n|B3Jn))5Se?cVSwkUOX zG4w&us()%foU?=~@Xxo8d*arEsnq+8$Adf-sp5OJ+2^bA>I-(Q?=VJB7X$C~r7n8a zyD(-Fd5jI71m0fzZw#i1uYjk&(rNgtbjL^?wBhllihAzNQS&yRzaD&tftS~G^pler zb+2wCJxk1WyB zFHUEjtR;_nm}Q5g?yfJPpj}l(#o>ni<_4O~M4pV`!<3Mjv&V_?u&x+u9p(>Bt6{MAvlxCtumtkx{)*1f7 z`(Tv4;(vd=uts?zB9iZS{`=z>?K~Bm?IE!t(UnMs^dI?Y9tH%6RxHNGmBqVTPqSKc zLh+p+m*AARq0#y7lnHUZ{NAIetUT(zJrVWn`k?&`Kes9N115SztzTF542-J^^ z_*n~Wf0nxbO_b66cSLzw{n;VpHddZNY~=%`i5{&+Vkoi0b>7pb3J??WShmc0Uw5xS z0`r=cKiM%QU~8`A$0sNAQ4$gp^PHy3S-GX8T3oxM>F4isefR3Dx4RhwQ^)7#xS&vI zVQJH;!NRN38*on6p)X(N2@47J3JyKf<^xxy3j>d040(k=7*^XWq8EJst}_3_?1h}u zhS<)J_7s!Ao0GZl@bJp$XhH_>)!3|dBB@4~g+_1H(w1AFy=sS9t=XBG)x&Pa{q){q z)0Tja4au{*Jb#HI++hn%dp-->!jpjIj8xIttx4o=i)g>=hhYB9s*w|b~m|icBHk~bq zFUPIqD8|o#>wV{YoYed`cc=hP2c}g8w%vyt0T#Y?E!jMJT7;cF-*wUdY&Y=&Kv44e zW`0Jr1{Ap>TO0jfMxRX`QpvGguP+y29SMcmx;BFC2&56Tirj};wJY4)t6hm+MxycE z{@v|<{$XM#A7&d^stMJv!n<5j{x@=eCGqLRonw)9E<5ntc)9N$14S&kw6}A}c!)sc zx0Qy)8%OezxhOLhi2(93gMFlxrF!wsROC3L+u;5`o5+^+jwF^D4d=D&YJtLy&Pkmf zwiS44XW_4KNIiY>ngegtFZp1J?8mW4bNnlUG6Oz{JCjcH+w!N)r)K~jyaB$YS1kry z4b-ov*eN}q-A4|)P&N)TUjBB&-?z4q63QxRryz z^0M53vv}JtgGK-3I5UJW<)X;+2EM4@Y2F!0EqMA>(0cG+E6E~GCUfnyZ4xa%fBqZ; z`?yyD)@#V1*7>*OY>kt8RDL8Xlf)$CGi969KIC(aRK|yr5}xL}n|<{erkl`JjtmdC0tl(=MxGZUDA0+_1zk8;052p+k3zccezg**VvqFjqgj`T_0})C~fAyDfA_?V+g!H{14JV z5Bii&`e4+^!;CazGz$S&yPg{ZUniYcqD1zNLO2*8J|$s~oq~RCq!k>UZd4rfFvqMq z&DHWB7uPKKoQbqtsBW?*8Ig=WHET{~fv^yrQy+N0BKwtwuLAw({;=Y*tu4gd`?fJ9 zMTDuU>H4T|I-X6{Hci;UfEIzno~nUdUkW;4lGkFRaWqU#GXyM;R?)LL>>iCb^#t_u zcRvYTPir`tFq9v7b~77q&M`{aWg(YfGm@jYi);z2XJ}|Y<*B>vah~c|ftTO)VqM3f zQc;CQXCu&BFUd7>k{^xA!H$jQW;}u4ww%moHx?rhooC z?tXW3=A>8mcC8)&?RAJ$kv&bvfBlQ~#PioZLf%KK9zlmI z-JW!={rpvc=>@*7Hxj-NCMgc!VFVTV4G;W+Qqp|6g>$?$|DA5kH5v8db6p& z#5xye%6!oJ3Iit6G!1(_0Pb}PaufOiwR>QGwA#B1NRZwzz31Gai*p8&{vdR&g0UDL zB@0+8;Ys`Z`)^TOr`PQQlEn)wrv9F8%jNh`>H;m4LP5b$l!IXlZ;}JUr^-ZK33?doH$BkZp^c>~c{_J^UJA7mvx0S2Env z=H}*G=Z7n^w#|AsT>!qsZUI^6F=_DF6@S61n}a;qHS<2(@}@Uix^^oMopLtj8yagm zRTrEgaVNk;zTO?lRqjspKb;;&@~gq#-p$k}Hd?-5&bBTtF1~Vdp*)7wTs4i2&mLRq z0ng=lYLm+4p)({~o6DUMQlrz;y*Bx2)i(%qBKtakY~74*zhqP+ zD0xe+cAWyn*Qc#BxD^0{Yiw+co^@*RXGVZejGMd;mz#iv6*OP(|02$&p8hOnd&)Z1 zrE6@`G*F@jm<5NKN}DTFuiqaGdFuaUad(4L)Qo|FK@W_XqrJU7-AHc4Mn<6I24Ez- z3*cI&AYB3UC9rslbWU~E$V&rUmtBHi!^00FD7fKI0X}SrIL=Xt)B&gmOYFBj*>Zc* zgmf!30sPnj({Lq;Rtr3czQFT#MzyB3M8hsdBxiWRY96F8B&4|(^|z4-@Y6g<0@8NH zt4r4H73Qb^1TEZHTLRvAb6V3fk6m^pxm7V23d=#$MV~CPwR^&of~{AFbUMGW!`Fm$ zsz}cnUP?>?f0yd{HBH$b#;qwA20zlfeRVyPxsFB&>&ca-=D}h_fzt%GyaptIdGnws z^LD8zF6=#?n-G5c6v4sG{B{k)7$X*s@@rrw%Sx)M+*^p5<&v|2PfdkpU}&iQ^yyQ- zjjX@oAxcz`9F$s8U0g`8tIo-|WVDUWc zaak54wF<+aJLve0vlzPPx4gX22%dVFWnW^ahEcmhfR-)i3irF%obzI=&%s}-=z_j} zcFTsp__FtiK=hvOQ8uwCaehz$&4`oafu+-xI->X+`_H~UbKvFhlaBFuP(EQcvwcpZ z7`n*XEQMC#vL^KS@(-=DFlrj&8@%2aB8g>0@y)4JEEPghV(`HXUwvd`g*zB@2i3p} zE`%GK8K(5LXG2)R%uLN_njeyBkVoP#?Xe)wN`tPf?V8yL`}rKP0;r1!hK zTFh^3Ox@YB*V5K5oU4v{heP_Npg_8z{!ubt@K(71PtVZC{a5?-Pt(($gbg_@sQ4=3 z-cgGuG7CFd`I|lbLQk(^^Jb~HH(soyGT|~3e}S9FYGIxy zEalPNJa+6E`AM|2KCR2uAB8L0e8+%-p9+Pu(N^`JwQOv%I0MNzPR1WBmq1NFSglFx zQjXMTU!~^c4GRe*C4|zrS@5`3GCOdK&yEWG`AMg!WX_$E=47rk!mns2X#7dXT&Zg# z;gR_kkw04m#{JluAakftdPRN^*H@P>V;EkHqDoM^=alD@s0m!?*?H<{KcK zJ0}LQsVsT;DsGF(A@BLWznMp6##~jg+X-EDGPvpjj{o}k=4^(MA27{dnBM9f*e$&# zOs<2cM2(ViAOg%T>9G3`QdyeOo_z2qC@vOa$7zS5afmM)^!-wJea&-tgShg2(G!4i z8ksKYpAG-oMDjo#O~3Y8a9_Lo$?e|nlWiF_wP-O#D!C_r=yae??J(G)j=T%+7lNg_ zg#0DkM*%2w=#8{_+kFUXgg-*@_aIbPce028E+mzaceY4m7xI)viV;>qu=RIlB1g|u ztxL$2R-4gWN%@7x82e;$+@Tn2Px9qS+I~0Y=SQ%fbc8vAB@-7oKE_!Nva66KCsE64 z%o?sK=CK>#&HMsE4Ee^FPBQh{m%Kh1$@9HbB{}wsDw72`hZOBpY>;_ORwhfPBb(&O zk4#66Frx=d{6k9L;EXGcr_mjqmJYCACq7FN@Dz;iC?1MxQ)6Qm!jHg;*bLAtW?5IVtG#_YJ(LNE0d-!=NfFi@~^FYe5qg6%|P@p7`^p66AeW7Sm%+&fdPh z?23x`ygatIdFuJ_%7n^D{PKv1!rA)IsmrfN;P5w&j(Isb?~jh&3J3^%I$S9%EqLJh z_l?2VlsB_wA%yOTg8n4Wij`*wGg!$lJI$BYMEkm2-;kY9W^EZwFEgKRs7}n9nAkfVn4Z?LwkkJ; zl9xu(c7KOIK0*#qWPN=kF0t!x3QeMVGU6dW%_#KdJpGgw3re7(IewYxkAYx^8$9CS ze$fP9KV6v#c@Bw2zm1L<^5M?eePNWUL&`&8TMa+$={^G1bQ`#MuX(Il3}2e44)9$0 zRQOWMWsQtXDOjngEz-v)a~x8vw%ROt!#$X_4O2jpL|(C9{QTL%);kU zA-1iomIPmuq0qi;4jo=M6w0D4TjE{}Nz_3rl+ zH&-_{DgZJc9Uo6mOjJh@JgzB=g~J~UoKCgd(+cOA3FeLcb)%_q+GiMLbt!k~7&UQy zOA^iTa;Q)WQYjPGLyW3kyP!o=xaE3Nzx?2S?67nLd?H+df@f%90PbU~(BfYEeFOIi zO2)1eoz63U!vy}+M}c?#N_nc=0aC01Syb&ow^NxuUuEVA`;V%Vscp6qu}X^OFV>n{QzrsVUL}RE;8pj!%?1l)^*FOBkE5U+>D*KML&p(@R z(FmzxRt<}$3MF>!+L>ytj=fR#w5VhEG<~f}WJ~d5WLA>s9L@RB!QCbALS`~i>W7Gi z8D+=>tmn|5&K%5u_=RMPw`-#;UmO_-*mDGh_n6e`Pa2>Qhka@I0-M7~MX|^0PtbAy z0Hed6+jZYYd=4O5(^xWr-lSWH%#h5qE@$F1Kdm(6kz|$wMw>Ip(8a`!2;J-F ziZidtMiGlU-e6WlOmI=-nS7{N^JG<@UWbgON?N@j1)v!Lvzcl{<>+*l)loTgqsy14 z?|-15S2;ZUG%;eXl3$gxXFIE)xVCe7_HiING`@+Ax_gWf(7JFJ>b}`v(?Z*9m>zFR4fa9F4HeQe+5wk2FH`QH40Q zKmVLPuW7n)N%xiWk)gz+Y$*Whxo{}l=L6iN7#_9I+-+W%>hle~79%;VD7k@6B|{4R z>bFu5S7$CHg>23Y1P!e~(CJa8euHP09<#@}!7^zqaqU{AVDM|`0A;Ls@KC{4aoPR; z3K{OUPH_zFcYPRoQO6_V3^o0f{f|<2ZSy=!(49^EErSXFHDp$I9!d3kvff*8Fn-@| zr*gLuE0q!N+p|5?W@4*5H>1s%o8S!>2LIoG@Td2_MT(1y^W&QzC~QZ2MZ99+2uNd5 zLp^;t&PKe6rZGOiL{jm=8fwhL^zoz3C7CFl7iv;h0e>5Z0Av+4_4T|ZK~_nLqlOyE zfS6bV+m4F*zDL~oAWG!E?*(7;V(s3_d*L9qY)wy3hS7H3mW8wAk&#dIC+$`$0U4uE zZRL7;HwOIpF_HXS)~7hRP49=l;pEP?u_g=-TMVi;IgJB)}(;k@&#pq!O|vb9Z;Itf}#=krz_*;5DBaBa&E}RLmlqGKFqK zatxpmjUC0DQ1{XRqoI~pOo12_DA~aSh;exRn6^R9Qo=R^!l{iVq6z1m_y^@+XCrQ{ z5;TzVkDwlVSTh|{9{zcMli*zBj@(iFcQuk$LMGbw%8#5+ZT}8zjTdDz6kHJ*#Z45V zFbNQDpxxF4hfRsVeb`Dmu6*H7HK9p9SGomTt+hTnyi3n6p6g?B>5i+yXV!YBS4PLC zrrxNLgc1{IVI}Yn@LhK7vv1=rQ6j_<3QI4Rh!8{OEV>ZL>T@G}9b(6q%b z+P?PNJFlG;&T=Td00}gcZXH4V?gVV%f&l-GGp!%Lbko?OH?^j^f5WUpo|0?`n4lUF zjIAuEY&m=6mLcSz5?rfOmWU^*;yySBlFlvg1=2sqBg(v+-}TL02TsE>g625TpB}6A zPgr!sE1V`ddnC=w7~taKzUGOKrTg2BIX;VTi$0iZG_`5KpwLM3ecVR}9z~H(fJ{U3 zYDBwoJ7K0{m=L*oi8&^okf$16X1D&t$!u<3z@?y(Bm1*o`nvr<*$D%$f&LL>)etd^ z7z)xd`n3%e#o)In*m_EQ!L8;Ujbb3-{alRBYtHqP9w(Fe3vml;>#s-)Chh9_KbWRQ zGP!)Thanlp7~bOB3IVu%89a}q2X+7Gpp(d6b z^eUN~%O(P_yi|nd^>4b;=Z7}cWfc8sCrj07#HCHEqeLck+-gLyqBvOllSf8J3yX_Y z&-qzbTxp^K_YPRetVY4paX0?e>>s?L<8HLdoE-sMMR!_Jc@`g(AM^rRC7iQ}nR>*9 zn9l4fw0-HE(b^$%Vil4ikSVy=VXuCeFLg?ZuB5E|<(c=}#!kLaoHAHQJ++q_#PNRY zvFs}5+|j}SI{DimmCm}P$t5~Q$-E5}j%2hstwo&LH3WkmT>_v3k&%(j;?!Lz2isP+ zoW$N(diZp(<7jbt=*P=h34$IpNvt`-ornnUOB;n2x~237v^v^*^1W~@>6D=^ zYxTsg&5vA`n4em0B1E6~{c?;j{FjJVnJXpjnDlaH`RT$};8Dr>2p7<{leLKp=G2%5^@*&jPEgIuyCuk<aurqTAtLj zV_EvpN8-3&u=MJt`OGdviDfI;&j_CTY$+7`MoY(?$C>z5#40e)?U81m*EAsj7`q2P zl?VAii*ZJUNWD5{148(EVb=Z0G5~#AN*K4AL^`|q*FV?92YJqQeY#nv7ir|@mCTm< zZqhX4xfsClh*%M|3vS!k?7p$A)V#5h@QZ<|Tm{;m`wpASV=wLz#U&%wc-$AoRv7Uh z=I4x|I>Z+#!4tOHZR~Il>q^7DTY+#5~i`{Wmko^hZ&4 z$a*Ly+r|dbn*qQ1%ah8=N|2q6fSpU)f_?{{0Ay_YEVD%(jKcpo&T7T0N~6garzjSW12H_{C@K`-SNQTkN&T z1q@GwgunpIAi@3p{r?%Lq;m?C6=;<)giIRBDQls!1DPc!{&H_F!qsOAJ14A%3+gYD zV~00LK)>W|B)h->h@|1a7QTP~{@+P1%G`3c^EsoC0QGB0Vd#>@T1F-X}oj9+$PTwKth?a;SkR@EwEkqf$A)SOvdpR;vE&ksAi zfEQ5pCUQ^HdA(xIzwvwwyml|IPOExcxnpSqyss4%g@gU8gTN2yj>;~CheuaeJNjy7 zZ1)vPOeQV*T{R6v}#Ea^jX|U;v7-~FH%1MY;s`vVT z80?!fD`*o>j;UA)-8BQk>s1c?GY^^zkm z)O7KsyaBui%!$g^=ele;aVdE67?aIACs1>_jSUzW4C z?U#Zj6G#zXn2xlKY|f3z#z2lw6o?csS6N&X0wjNpDlQkz(q<>>oqQ9a{Z{-TaMjw4 z^2v2sl3vxf@;G4PPWghG>#S63P%GIwP@c9$)(f+_#{JkxkVc|!8cQ{*e9_kI%~M~g zL$WdR*u-V?D9V`sEflc$A^aE7nw@ zrhqjqBO`KutwOdC)5)*$2{vYBc9*O2FKY+65du&NRfs@P?80qdkTvv#jdx<}dO?ke ziBSd&Fqyl_x`^AOr%cHM$kLzc@hD;=BlX(5FBg4VU+8Nh5lN>q$;vvoDQgBTi8U|8b(~J_kr_C)*(=Hk{IKk!=!#)vbmEUR zd#+=z0XLxWLX8Mn#M-?pkFitf0h3j46DX}t6-g51f$74n=ag8X7z(yWpKs6A6{Z>8 zK1k0DU|LdXB9=2F^@i=}5@2*|4te1{lz*tzE7_OWyL;L8-Klum&&g8T&^GA3n&1l@ zOe@Y8$8E%PZnNZnn>pX$+d1QM{!RX&MgoXM`N*hELBUdzv2mlQ8JczC=d#)|YnPT+ zv}5Sh4&QmXSSqqZI0y)g1ib~Ixw)%uZW`5v@w>A%qie;T6D+?k-wKp`nN0>(zAFJt z6NUJqV|EU`#-2jj#d6X~Yh3=S5!PcTYWbG6q}q9Omce}VQIO@o;_?vI0Db4Bpq_7VYwSZpYPDCI6+ zezgvGsS(G%Ol`Zef4>sp98K~?6f2w_?vn|77FMDBA=>~-L=yWo$mzW>ro9FpB~PWL zBoJT~76#CH6J+0=t5S%+T4Q0#N4Z)d)1c5Og$HkT4Akbfy-sboyg-aU%-8!3`GuJ& z0})0IJf7J*8zgWHt?r#&=onm@`xtCo>HYw)p~zNEQ&V-b-#i%T_~yUP)hNWV*OyE?JqKq09Rin`n*id&}b9$wLD-J7u_A zz47ywtQ?L*hPK%WA8Xw<1rhvQPQgb90;`UWFwzz7P<|Dd5;%`sxHAko4!FdMCq}(@ zI6CkxyIRX8u2kO(acN8*9DC6tmuQj*=MUJx6AGx!oOed;L~AU8R|JpO!s{h|h=Qml z;fo9A$*HD44q^L}9_w92SuxMNWADc**3zg`*Y?V#!1~*!bI?jTL_0~Ng%E){fB`JD zTJqmDOrDBr>^jt-L@jvGI?7=ly!TWgLPLgC@S}&b<-3v2(Wa`*=ZGGnpeoT^5*jRw zAh_gYx6sp|2&j7%Y;}2rG>za|L<4QE5H14i*_CGTtbe(0V9Z34iY+{aSw&o9k1ZM3 zc^MW0|1T9#@1Qa1dy*;VQ+K{#RFT(hV4qUVJDcp${vTIjs5@Urom@)%m4{|&R&P@< z@TlKgZiP&)7-sRCj@t3%IB-Z&&&%Mq8L&A#x_r3#i|9M{A0j`E;kbHQT3UvJAyHk;6dkx)>tILLePKwE6ozOsf zY$Kg(k;#v4>F0LaS<6rc?o`McAu_5=WPp3$UrCjCsnpKTr}b zxKG&ay)1<4708RRej(~1sn$w|xx>n22U+zhb--{=NQ&4;TMBHtIYUEcJ!;pQhHLew zE^3Vee7$>3lPX-pcoTF=hn%pr9ozqf!D<&XLy7%?_6&|{h2n&<`xSHS)IAekazD1g zMW#9nj&)CH@q_ET<65w+MS#TW|J$erH>09^y29Lx@dui z)%!$Sqfx*UlXH9Y_;Gj*wp`q@uFMUImmDM!Emw5%*a=nY#QRzT5wgIU>>7+T_rw<% z&V)PtS%eRm+gT?(fB-D&Ck!C@5?RRjszNEwuq2&e%3?+ z-1-R00P-Z^H+ToSQ2&Xu4-i7Ebj|VpOn=&-p~9_~#C5p&u%qYE4LIj)JoF=ywcqdG zp*07&D)VZOue42N?se8>TBBXSpFTWq1Xikl&w{E+TU*2;EM8*J!Raz z7@6?-Llq_g@*aYn;}NP46*8zs51EF%W}9X*`xV=OYYg-gNKT#L#aSR9?1YZx6BvO4 zVIdG5oejLtrvwSuU-1+1YHjlO_`AZQX=6 zK@v*~S;ZmNXShCcZG@*6!dG;JjG^p4gd_#FzuF{&F2%; z8u{k`-q8?Qp=0xa^`OEpRa3RlDD@iIK~#DV;~Bc2m|h;hH5sfegHNUN=s$c9e!U<% zndj)8o|i&jx?=!Irz@TZ>z-lzyrM~aEfv~0kcf7udj%{KHJu{%1mRn|)*PA{aHj=5 z38#2juqBSdbi}~(%Tu+-TS{{r(JX@9%QieS^AiXV`@k3N+Hb0^y^k2%Gy!$TgW~>Y zCqU+F{Vq)s5NOzf&tOYY49f)H=ab@~*M$;dPr)Zw5yrjuOpn(aVruH01cfI9WYR#;7jAca)@ z8GpsT2?#>SH3GRoI(nkF*vZcjTAh;;8KXe1gC862NtoBN(4?@Q8$>X?o)F<0sI@t@ihHv(Gg<%qSItg{96O68ube)b7Ub7NIEBM?_?_O#^~Qe z-NExygqlVbz6ZnXatt%YIH7T_fZuYzS=4o2<0lOJ=J)Rp;iec+bh08_-CxZ*fGW!s z-;adReS`Of30VFb={&gk^O*+nWMrFjEINSCxS<47PX{Bo zpxh@jT_{dKQ6?{llz70Bw-g|Wg^u2>&@XVV^M&U!Rd_wDsP2gdiD6-ce;4(8v) z2;N%44|mspLd*pZvf$Mpg$uR>9@xt2rU%}75A;|1m4))_0VRlna)hUgqj~KQ^X}+f zJPNJ@DCy(nd?n}|$zP8qcr(R}JY=0vx_P1Y-gyzMF%l0yfJq~odB(!Rg3tf*uU_g5 zp9d!pl~D7)hWv}~73r4poXk#^e!UnaK9#SE%&Ex{rPd2K9PyQfEP$&kyXs7Q$mx_( zS+g&oD2Q*4l8}^iHs8yKDP3xM&J?$d(H}0a^vjMhlX(WMaElOnlLSvMg~tb%q6#70 z5if}^zQX)GeoQJVhNYAUM$V`FpNPsIyWh1TX@kVyeiq=>N^X&S$b|2s?W47j#rhc~ z9?LYO_zD%Yy&X6bRcDMX zzuzN`?XAVF7i+zGVQ-F}S0VVeD`#YeXW@})+wtJ{ z&hrIuspjM2YUI zG& zPBoY;|DBlgy1qOOoh}CqG|)TPL*4P+RNu zba&*`lCBK7*Mb|015;cHyvSKOpzHzqMsW?UNIY(%WY`48j&6n-1S=v$;PnS^iDF^> zf2$WU1}S4JoDUVtmOPel9}p=J`N$4r2!VeF`2vyiG!;_RWo@PL9qK`^ovs8@*^LPg zn)I+g#BVzmrQ1=3#oSB@zLw3v{i)15hW7p5LE`Ca<0l7`2ur57AzeLRAEr{8K9H_y zDnh*d`m2*1J&))NlEjQz}=|D01%%arhv&O zP+OMGyk&C_DCu+R>r-Mu5N3Xu?-D=;6!+Q?!hre{`>{y@Tvyic5!By>uiIDb3W$|9 z(@F{6&^B6t0;$*hALPCRAS@3G^qD0!Xa1>%G@GQlrxH&n7d`z_Uq9Bsnd4@v2o?## zgI3Mf>lhmLU0)o7Y6YYoL0etob4k(7`j0J^--)d`WQMB$ubbq7ooa zCHDgKY2_*p8#-!GtvzvhvdEHcJD9MSB{H$8KE2Z#e@o0k8fyc;l>C8`MC~t~FkvwL zPh!`V1pdfC%?`=AS4-o?LGc{b8r3trM_XDJ#&vf2tQ!N7Awkp}6YPW`Vj%1aoIxNd zA)}-`LmrOapl~K{!Gwq)BAAwc-u-4AKf*^AlRg^FWC`#RRHhPFgK|Ca2Efp$f3z+c z?mvnh#vRT?iG~H=s;5d@MAB*{u&Dw-n*Hx^gXo?K)1yos@WRGz*k7z1=K;)Ai$Y6l;4Z|TOPk@~pG)HK{nOof9nEleq_wEU# ztMe$7)jn!RIXXJ}FAygjf?Mrlg=UI*8`9TTgT+Vb#pjX5$|f$DZfKui7WBcMs*E`c ztm0nnL*A2LU*MOoel=?ccb1X!dQ3@u2ALWlw)vlM2usJl)(qwJ7cOB$HsVn8vlVvP zKM$LgmGzLKRY3~~e+Up~FHX~l{K$-5LJ3{t_#*#kfRp|&;#yjIQWN}9c2(<@ARp=< z6t$?&uTUG~j^_((bt0uG8q7d=@+EVm-tWnQYgOWDEKxElpi(x0jwh?UfUG`9ExNcB z#UgMHv&~+&lGNY@!CarXj10zqO?y_tK?M0Top6E_+8x>;sz=8%TH;m@Usn6+?riVi zAnaIL&h}iqpJ1Qg6PSyRED9`y{!W6V z$yhF@3cN&-FnX_Zvh&6$v#1ZvfqbesODZRSr5Uap0V-3{}Y0S z^K+{{(~H-?ad79^EX&(2OxVPRNY90?ef zqPjY}lvD-?#>Ho3s2dv64h#&;?^07!1Ko`l6e??G_7Hpm(l~B4)>c+=pFhj0suF-& z$tO>q`~o$S^FTf?D<=oywC<5KLgDrGPiJOl8)hpiDil>!a{>N?kcqajaTHtt2)!OZ ze%#aBi<((hHVho>t;u99EiE9+Q-vdwlu8NwCs>MdPQt`usG=s&7Ivhs_2u}V`qIE0Bj&O@KnG?l8avkq@Lo_a@@K|Yv z+^VobQ37TXptt>ZCE`qE3b*hOc;BwBXtBr}=O}SFv7C0IK@OCdlf(cV0;&h>UK#KJ zx+vFfCc>XTTWK4ZDX=U%!r$v?FqPlmur+zdSwZ~3c1`%d+^1EZcLhz^L(P_4C-f4G zw>m>2GL^*H5~C>X!V#i zixjZ(t82S)s{MSJs#$}XiD--AYZ%uZppJJ~1nlX*k&~PlUTQ3TWO_^8kT@&KL_>+~ zA;|cc@@>0<91RUk{pb=9Ln`WExaXgRQ@7&&jKQljqxxO;4wz8|1&myHVC0F=cLtDQ z`$s!uvt}~y$2x`exH26zpNYVQIf}3>0oDN*XJ0LpABE&Ch|uezS);e0Dh2lSDbAQqjO*b|RyBU^XY{ znW$d0Z|+T?s3I_i>w^Z6`k^WOpD=Qq!c3hi6X;ME_huBj9DHjUZm_-KMf`<@X(*z{ zfY@6d!h`P`^#|91s)1vj*bZ!<{su`b2fTiGc0n*ljD2ZrsbWsu6C|GEv82hEg#g@0%7nNMsj8qMQEkm>a*S)VOg1t(c0YW&tB7n(iK0Z%D z>5lzkbK3Q_AD|Hbf6B?8fq~rIs`$#vC*ZEW`F|;uv9`93Pf1bo_m{|)kIDQ0p+asO zT6XsKJN$Y7mzXne&-IdC8ww={1+oBMXOrWcRX`;X$N{m9|I^0)Ouh_Z$>NrS1Qfxg z@GAnt;3i`+$Ezs3Xp==-FIpXVoBqZPrU*p9g$;N)iN zoZx{j(%`oi_c!!gOBjMe%{qc0mFBd)GS4{*P+EWX8kWRoRu_CP)Q2+za#G!44NjU{ z-2K=?rlTJ)o!{>qXG2Uh|I@tz^4an4Tq^(rf?A1+=UjJAh{gaa5Gr{-rOa42I?eGB z$(V~0!(#X&-^3Se8yyEp=u{~}bfAkQv97_oK~f$1)jy0X8l#T#{-pLjy9YQIiLQ+M za^fk9t*pfpjTmKJvNSx1*jH~G2gccrO}YXYln&aADR_cAY4%4%n^>lgO-lIfH4?3 zfe{LT(O$7@PukM*&7mEbb=cF8r*hCc)J*sQ!X2y^&4Kh29_LAU^EXpdB%`cC6|B?^ z=)qc|pwyPc9kc35+wG$KHriS-b)#lUNI5NaC@QEf`VZu6G0Alb_+%k@BZ9OY>C(!T zC6>ec|Bh6G@!m1Kr1G=9rJbXY?SWw}2L(_+gBO5+%A+(+{$EsE}eRj|mF$0sFG zB6$ewH!__}jc>5V0(eGD&9i_h8*3#lCA)z=OMHT1!fC!p6tKl;_#fVCk(h@KEoa0f zAu7_0KE;g*PXB*N);(sLjJx-m0R2^b(GF}8(aCyk4&#>q~X4!fEZ&fGdLh%fT zw?kISN=itM_X@c~lfqbWl=#=j8GN|7wIXk>2K7w27}Q8Ys_=GsT6##oAOx}RCtsvr z{ZYG1`?aCHuo|sAVf_+tvth+H`)>`Dt(?zMi8h1M0v;?H;$(w^$SX4&NVjtVv3Tf= z_X!u7!@#KN&VFTfKshU&czSsi@oWUEoopTv_GE>i`bDCM`-yYv^jv0Rb)6mJE+WN1+CNzW zv;OAAx;S*N3*9iN1=X`KrZ5H+*3_VOqkIjzgY{&?>xF+=KLR_JZ~AK13IAn*z%dwy zR;Kflr1V5?!>+aucv$}F7EGxtDgqb|Sdvm}s*YUbg)4=B%)j`!zEJO^zn7@;k9p?M zj;X`1nUW43ZHb4vk9yg5q%<JTR=@dzGEhi z+(8pI{asy5HU3X4s!J{(=DDVrC%%7F*PZ{Ka7uWE-gnd&oI%}--BUiW7W%a?dvaCZ zGMvy1E&Fe9nG3E6;~o#P9p@Ue7J+`4hIyU;Wzt z=o=7_uAdp0)67xJ8@eD#i(3D5cJ%71CElK;%~OWuofPx^+b^eQcYc|7SlRNGRepBM z>|a0$re8_MHp>=?X~-Gwye?xg-m|lIo3NDiUQi?zHa+P%1c7QO2YrOBvZWH(kQ|sV zt!KI^6l`@9NB@5sxzeyEvMibf5y1@n&x3Uq%0YbBdJw2?AgU}!t1f@kJ0hKK*Q|X!cG5_XgeXqXvy}Iw+ zTlbxF?|Cz)t#a;eZNC(B+=I?gs_R*WM2`IO3CJfTBpYisYpy7YAt=!--e)(8AwH+* zbL;#Lc61s49J`n!!dy=_j^in;FoXW#0nRIPqJYKA15KqFf{SSUZp_Jr=Z=uB1%cLV z!37t|!%V@YiA{+sCFXT>tJ0*7mL6c-xX^40Trtp+>?ExYFcS^Jw_1S3oU4l0jWd+> zwF&=|HGEkzTbj6Vmc*uAdu=_fBf9U)*2qOQ~6=r^0~+C216h^OMnOR zRVGJ*lN5pMAaFXKwCW7L$`B|TXpzw)2~~58U3IWpG7aRvi^BMZiCWxD&%f4F^RNxF zJ>t<#g_6mrEnWC}Lzi7LQ>-d>jg~NkY35zKu)55o?Tw#~R7UNBjZCrPX8g?Yc6D=w znG$?nR&iQC-{i-W_(05i%I6uqLEH80mXFJ7=D4ES+tlh>W&yi0aNZ@5R=R~X_3UI0 zbgwk0c|OW}`<1Nne&o@0bxO~U<6xm|R5JzWZfiXMZ6frIf}f&rppH*~Hcmrh@WNT@ zwPuB!^I@zGCmhx7=&RGDNgX34clzzzERXH)Y=sd}#i^m)!iaNs*x79xzLkE zCL;0+1ksseJ9)n^%Rt{eL`2ImjH(2M)*O6Nh^^d8F;at|wO+F_SD1ETca={CLKQ@t z0!-Dm(i{`bc^Ar=e&SQ_AyW)AuJ-SRX5TnJ?C0ib(2)M4F2i@N9xPXK20OC^DuEK2 zvi*;?_CyC+(4JhbvtVq&Q-F{T_z>22^R%47_iT4PL#Ui--ZG{zUMgk_RE5sM>cBP1 zl+<3WIWC}DhTveL7C9p6uCjL^sg6uv3$qtHLr`PICjB;q1?=j7BXg`r15W5dn7uTIecV=)0 zLhettHVb`oh;-(_cd?Hm(~!7$-%%&wgQh!RY(ynazWtgiL8N;*0nZSOZ4x)?iN%ed z1~%lf*yU5-y)1>k-f3DRa`u;|xKD{KQO72>?VY{SjrRsBfVv9bZ&cX!c?GrBZ+0}uW>0y3l!Gg}01DnOLvAZyTeuLWc+R?KfmNd+v`SBDw>-UMxqC|B{WZ8U*Z7=gN5|`mF@5L0|Lmsx%?a@Zk5F>X# z*@Gm;4t1`w;9}D*TkjNQfi&Fx>Um_J5hnVTm3kO#j6d~wCJE(6f+NDsrB7zDd}xB%#SlGRb?l;SmkSUXc&F?C^Aw|Sf=ZdHRic>rlQh!58@A{ttmM}xgXyZ-QvrkS*Ma|WpVJAtW;kbGP)PI%?k>skiH#91*a={VA(w| zR0Tc=>%dvu-Uitfuhh1eBdbmlJ-CM5aI<@I#by6H>->V$9tv7Q(FVZ{SZ?_Xe|KoZ zHZWE*ouo;sQ=+q01{vMwDMZv_z5GDvlW3 zX;=Y6%h|8>fZTZ2b%VDi1t@Jq(nT{^Y%P|G`^b6;L&j3nbUZIr+6+>`cR@oaxCh$} z4ZZe72jY$@M-jfSK>V?O)jPP$-R9{gKx{5Mzy=(SKMCe&WnR+kq~(Rj&?10ES!bZZ z4Jysb3PqcAz-d{bBeawIy?($JGa2ncxV`BKg>@dYZ(}QFJSeOA?ZtavNWhd`((=iW zvWL7pnr8xH?+QI!T0HPBlwt+Mma%_U)KZLShF{nvs9C`2iQ{LNDiHuAaVNHf_H%~ ztp`YU*6#BOq%->ff7j3#?0}j3+LqZo4h>a4OSc5_vFj=;DzsG3pVux_+R5_B+!cmm znI>L^*n92OjLuQX>3y@KkZ{a;wv0t_J3K_km$b+H#;X^P7 zv3@*jExcIbV}*W6I9d;=(U(oMzSKW*%LjJ(gJ-sp#?##C{FGgeM1~bzIYDqV2C7{o zgRmvg>?adtgC9$IIyAS@yD;rVtjYYF#Na;W!UnG}7}WlAr8PJe5WMl-KXv$S{0_bq znhBmY1&G4JaolcwE4}AC7~W8B23!$NFfW{}%FA86=%3C}8c{|Wrd)bVT#0U``!DR0 zO!{j@K}YY|NZ0ah^iH5iK0f}DBO&1!*tgjCJ=*re7BrF86gAA2#CwG{Kt2`N3siC0 zUut9`G%UJMu{ux=io$!zHp%(ngMz~hM-83To@t+!+rQmzT}^1!-zKX4>GtgD67BHq zG=+8Cw&{lf@;yqNv!vB9)pjSc0P_lWkdNo{j7o;h34b|q-(D&{myNNO(sBQ{{M`eo jUuCDZ|3^D-J?W36)n6x%n|PsOe;5x}FYxJ+b2t74FrCjx literal 0 HcmV?d00001 diff --git a/_modules/idf_analysis/event_series_analysis.html b/_modules/idf_analysis/event_series_analysis.html new file mode 100644 index 0000000..8112f7c --- /dev/null +++ b/_modules/idf_analysis/event_series_analysis.html @@ -0,0 +1,329 @@ + + + + + + + idf_analysis.event_series_analysis — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + +
+
+
+
+ +

Source code for idf_analysis.event_series_analysis

+import warnings
+
+from math import floor, e
+
+import numpy as np
+import pandas as pd
+
+from scipy.stats import linregress
+
+from .definitions import PARAM, SERIES, COL
+from .sww_utils import year_delta, guess_freq, rain_events, agg_events
+
+
+
+[docs] +def annual_series(rolling_sum_values, year_index): + """ + Create an annual series of the maximum overlapping sum per year and calculate the "u" and "w" parameters. + + acc. to DWA-A 531 chap. 5.1.5 + + Gumbel distribution | https://en.wikipedia.org/wiki/Gumbel_distribution + + Args: + rolling_sum_values (numpy.ndarray): Array with maximum rolling sum per event per year. + year_index (numpy.ndarray): Array with year of the event. + + Returns: + dict[str, float]: Parameter u and w from the annual series for a specific duration step as a tuple. + """ + annually_series = pd.Series(rolling_sum_values).groupby(year_index).max().values + # annually_series = pd.Series(data=rolling_sum_values, + # index=events[COL.START].values).resample('AS').max().index + annually_series = np.sort(annually_series)[::-1] + + sample_size = annually_series.size + index = np.arange(sample_size) + 1 + x = -np.log(np.log((sample_size + 0.2) / (sample_size - index + 0.6))) + + return _lin_regress(x, annually_series)
+ + + +def _plotting_formula(k, l, m): + """ + plotting function acc. to DWA-A 531 chap. 5.1.3 for the partial series + + Args: + k (float): running index + l (float): sample size + m (float): measurement period + + Returns: + float: estimated empirical return period + """ + return (l + 0.2) * m / ((k - 0.4) * l) + + +
+[docs] +def partial_series(rolling_sum_values, measurement_period): + """ + Create a partial series of the largest overlapping sums and calculate the "u" and "w" parameters. + + acc. to DWA-A 531 chap. 5.1.4 + + Exponential distribution | https://en.wikipedia.org/wiki/Exponential_distribution + + Args: + rolling_sum_values (numpy.ndarray): Array with maximum rolling sum per event. + measurement_period (float): Measurement period in years. + + Returns: + dict[str, float]: parameter u and w from the partial series for a specific duration step as a tuple + """ + partially_series = rolling_sum_values + partially_series = np.sort(partially_series)[::-1] + + # Use only the (2-3 multiplied with the number of measuring years) of the biggest + # values in the database (-> acc. to ATV-A 121 chap. 4.3; DWA-A 531 chap. 4.4). + # As a requirement for the extreme value distribution. + threshold_sample_size = int(floor(measurement_period * e)) + + if partially_series.size < threshold_sample_size: + warnings.warn('Fewer events in series than recommended for extreme value analysis. Use the results with mindfulness.') + threshold_sample_size = partially_series.size + + partially_series = partially_series[:threshold_sample_size] + + sample_size = threshold_sample_size + index = np.arange(sample_size) + 1 + log_return_periods = np.log(_plotting_formula(index, sample_size, measurement_period)) + + return _lin_regress(log_return_periods, partially_series)
+ + + +def _lin_regress2(x, y): + # based on math - custom function + sample_size = len(x) + x_mean = np.mean(x) + y_mean = np.mean(y) + + slope = ((x * y).sum() - sample_size * y_mean * x_mean) / \ + ((x ** 2).sum() - sample_size * x_mean ** 2) + + intercept = y_mean - slope * x_mean + return {PARAM.U: intercept, PARAM.W: slope} + + +def _lin_regress(x, y): + # using scipy + res = linregress(x, y) + return {PARAM.U: res.intercept, PARAM.W: res.slope} + + +def _improve_factor(interval): + """ + correction factor acc. to DWA-A 531 chap. 4.3 + + Args: + interval (float): length of the interval: number of observations per duration + + Returns: + float: correction factor + """ + improve_factor = {1: 1.14, + 2: 1.07, + 3: 1.04, + 4: 1.03, + 5: 1.00, + 6: 1.00} + + return np.interp(interval, + list(improve_factor.keys()), + list(improve_factor.values())) + + +
+[docs] +def iter_event_series(file_input, duration_steps): + """ + Statistical analysis for each duration step. + + acc. to DWA-A 531 chap. 5.1 + + Save the parameters of the distribution function as interim results. + + Args: + file_input (pandas.Series): precipitation data + duration_steps (list[int] | numpy.ndarray): in minutes + + Yields: + series: max rainfall intensity per event for each duration step + """ + ts = file_input.copy() + + # ------------------------------- + base_frequency = guess_freq(ts.index) # DateOffset/Timedelta + + # ------------------------------------------------------------------------------------------------------------------ + # acc. to DWA-A 531 chap. 4.2: + # The values must be independent of each other for the statistical evaluations. + # estimated four hours acc. (Schilling, 1984) + # for larger durations - use the duration as minimal gap + min_gap_schilling = pd.Timedelta(hours=4) + + # -------------- + # if + # use only duration for splitting events + # may increase design-rain-height of smaller durations + + # ------------------------------- + try: + from tqdm.auto import tqdm + pbar = tqdm(duration_steps, desc='Calculating Parameters u and w') + except ModuleNotFoundError: + pbar = duration_steps + + for duration_integer in pbar: + pbar.set_description('Calculating Parameters u and w for duration {:0.0f}'.format(duration_integer)) + + duration = pd.Timedelta(minutes=duration_integer) + + if duration < pd.Timedelta(base_frequency): + continue + + if duration < min_gap_schilling: + min_gap = min_gap_schilling + else: + min_gap = duration + + events = rain_events(ts, min_gap=min_gap) + + # Correction factor acc. to DWA-A 531 chap. 4.3 + improve = _improve_factor(duration / base_frequency) + + roll_sum = ts.rolling(duration).sum() + + year_index = events[COL.START].dt.year.values + + # events[COL.rolling_sum_valuesAX_OVERLAPPING_SUM] = agg_events(events, roll_sum, 'max') * improve + yield agg_events(events, roll_sum, 'max') * improve, duration_integer, year_index
+ + + +
+[docs] +def calculate_u_w(file_input, duration_steps, series_kind): + """ + Statistical analysis for each duration step. + + acc. to DWA-A 531 chap. 5.1 + + Save the parameters of the distribution function as interim results. + + acc. to DWA-A 531 chap. 4.4: use the annual series only for measurement periods over 20 years + + + Args: + file_input (pandas.Series): precipitation data + duration_steps (list[int] | numpy.ndarray): in minutes + series_kind (str): 'annual' or 'partial' + + Returns: + dict[int, dict]: with key=durations and values=dict(u, w) + """ + # ------------------------------- + # measuring time in years + measurement_start, measurement_end = file_input.index[[0, -1]] + measurement_period = (measurement_end - measurement_start) / year_delta(years=1) + if round(measurement_period, 1) < 10: + warnings.warn("The measurement period is too short. The results may be inaccurate! " + "It is recommended to use at least ten years. " + "(-> Currently {}a used)".format(measurement_period)) + + # ------------------------------- + interim_results = {} + + for rolling_sum_values, duration_integer, year_index in iter_event_series(file_input, duration_steps): + + if series_kind == SERIES.ANNUAL: + interim_results[duration_integer] = annual_series(rolling_sum_values, year_index) + elif series_kind == SERIES.PARTIAL: + interim_results[duration_integer] = partial_series(rolling_sum_values, measurement_period) + else: + raise NotImplementedError + + return interim_results
+ +
+ +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/_modules/idf_analysis/idf_backend.html b/_modules/idf_analysis/idf_backend.html new file mode 100644 index 0000000..df447c0 --- /dev/null +++ b/_modules/idf_analysis/idf_backend.html @@ -0,0 +1,436 @@ + + + + + + + idf_analysis.idf_backend — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + +
+
+
+
+ +

Source code for idf_analysis.idf_backend

+__author__ = "Markus Pichler"
+__credits__ = ["Markus Pichler"]
+__maintainer__ = "Markus Pichler"
+__email__ = "markus.pichler@tugraz.at"
+__version__ = "0.1"
+__license__ = "MIT"
+
+from collections import OrderedDict
+
+import pandas as pd
+import numpy as np
+from pathlib import Path
+
+from .definitions import *
+from .event_series_analysis import calculate_u_w, iter_event_series
+from .in_out import write_yaml, read_yaml
+from .parameter_formulation_class import FORMULATION_REGISTER, _Formulation, register_formulations_to_yaml
+
+
+
+[docs] +class IdfParameters: + def __init__(self, series_kind=SERIES.PARTIAL, worksheet=METHOD.KOSTRA, extended_durations=False): + self.series_kind = series_kind + + self._durations = None + self._set_default_durations(extended_durations) + + self.parameters_series = {} # parameters u and w (distribution function) from the event series analysis + self.parameters_final = {} # parameters of the distribution function after the regression + # {lower duration bound in minutes: {parameter u or w: {'function': function-name}}} + + self.set_parameter_approaches_from_worksheet(worksheet) + + def __bool__(self): + return bool(self.parameters_series) + + def calc_from_series(self, series): + u_w = calculate_u_w(series, self.durations, self.series_kind) + for p in PARAM.U_AND_W: + self.parameters_series[p] = np.array([d[p] for d in u_w.values()]) + self._calc_params() + + # def get_event_max_series(self, series): # TODO + # interim_results = {} + # + # for rolling_sum_values, duration_integer, _ in iter_event_series(series, self.durations): + # interim_results[duration_integer] = rolling_sum_values + # return interim_results + + def reverse_engineering(self, idf_table, linear_interpolation=False): + durations = idf_table.index.values + u = idf_table[1].values + w_dat = idf_table.sub(u, axis=0) + # -- + w = [] + for dur in durations: + dat = w_dat.loc[dur] + log_tn_i = np.log(dat.index.values) + w.append(sum(dat.values * log_tn_i) / sum(log_tn_i ** 2)) + + # ------- + # ax = dat.plot(logx=True) + # fig = ax.get_figure() + # fig.show() + # print(results.summary()) + + self.durations = durations + self.parameters_series[PARAM.U] = np.array(u) + self.parameters_series[PARAM.W] = np.array(w) + + if linear_interpolation: + self.clear_parameter_approaches() + self.add_parameter_approach(0, 'linear', 'linear') + self._calc_params() + else: + self._calc_params() + + @property + def durations(self): + return np.array(self._durations) + + @durations.setter + def durations(self, durations): + self._durations = list(durations) + + def _set_default_durations(self, extended_durations=False): + # Suggestion from ATV-A 121 (ATV-DVWK-Regelwerk 2/2001) + + # sampling points of the duration steps in minutes + duration_steps = [5, 10, 15, 20, 30, 45, 60, 90] + # self._duration_steps += [i * 60 for i in [3, 4.5, 6, 7.5, 10, 12, 18]] # duration steps in hours + duration_steps += [i * 60 for i in [2, 3, 4, 6, 9, 12, 18]] # duration steps in hours + if extended_durations: + duration_steps += [i * 60 * 24 for i in [1, 2, 3, 4, 5, 6]] # duration steps in days + + self.durations = duration_steps + + def filter_durations(self, freq_minutes): + self.limit_duration(lowest=freq_minutes) + + def limit_duration(self, lowest=None, highest=None): + bool_array = self.durations == False + if lowest is not None: + bool_array |= self.durations >= lowest + if highest is not None: + bool_array |= self.durations <= highest + + self.durations = self.durations[bool_array] + for param in PARAM.U_AND_W: + if param in self.parameters_series: + self.parameters_series[param] = self.parameters_series[param][bool_array] + +
+[docs] + def set_parameter_approaches_from_worksheet(self, worksheet): + """ + Set approaches depending on the duration and the parameter. + + Args: + worksheet (str): worksheet name for the analysis: + - 'DWA-A_531' + - 'ATV-A_121' + - 'DWA-A_531_advektiv' (yet not implemented) + + Returns: + list[dict]: table of approaches depending on the duration and the parameter + """ + self.parameters_final = read_yaml(Path(__file__).parent / 'approaches' / (worksheet + '.yaml'))
+ + + def add_parameter_approach(self, duration_bound, approach_u, approach_w): + self.parameters_final[duration_bound] = { + PARAM.U: {PARAM.FUNCTION: approach_u}, + PARAM.W: {PARAM.FUNCTION: approach_w}, + } + + def clear_parameter_approaches(self): + self.parameters_final = {} + + def _iter_params(self): + lower_bounds = list(self.parameters_final.keys()) + return zip(lower_bounds, lower_bounds[1:] + [np.inf]) + + def _calc_params(self, params_mean=None, duration_mean=None): + """ + Calculate parameters a_u, a_w, b_u and b_w and add it to the dict + + Args: + params_mean (dict[float]): + duration_mean (float): + + Returns: + list[dict]: parameters + """ + for dur_lower_bound, dur_upper_bound in self._iter_params(): + param_part = (self.durations >= dur_lower_bound) & (self.durations <= dur_upper_bound) + + if param_part.sum() == 1: + del self.parameters_final[dur_lower_bound] + # Only one duration step in this duration range. + # Only one value available in the series for this regression. + continue + + params_dur = self.parameters_final[dur_lower_bound] + + dur = self.durations[param_part] + + for p in PARAM.U_AND_W: # u or w + values_series = self.parameters_series[p][param_part] + + if params_mean: + param_mean = params_mean[p] + else: + param_mean = None + + # ---------------------------- + if not isinstance(params_dur[p], _Formulation): + approach = params_dur[p][PARAM.FUNCTION] + if approach not in FORMULATION_REGISTER: + raise NotImplementedError(f'{approach=}') + + params_dur[p] = _Formulation.from_dict(params_dur[p]) # init object + + if params_dur[p].a is None or params_dur[p].b is None or param_mean is not None: + params_dur[p].fit(dur, values_series, param_mean=param_mean, duration_mean=duration_mean) + + # ---------------------------- + # balance_parameter_change + # TODO only between Not linear ranges + if params_mean is None and (len(self.parameters_final) > 1): + print('_balance_parameter_change') + # the balance between the different duration ranges acc. to DWA-A 531 chap. 5.2.4 + duration_step = list(self.parameters_final.keys())[1] + durations = np.array([duration_step - 0.001, duration_step + 0.001]) + + # if the interim results end here + + if any(durations < self.durations.min()) or \ + any(durations > self.durations.max()): + return + + u, w = self.get_u_w(durations) + self._calc_params(params_mean={PARAM.U: np.mean(u), PARAM.W: np.mean(w)}, duration_mean=duration_step) + +
+[docs] + def measured_points(self, return_periods, max_duration=None): + """ + get the calculation results of the rainfall with u and w without the estimation of the formulation + + Args: + return_periods (float | np.array | list | pd.Series): return period in [a] + max_duration (float): max duration in [min] + + Returns: + pd.Series: series with duration as index and the height of the rainfall as data + """ + interim_results = pd.DataFrame(index=self.durations) + interim_results.index.name = PARAM.DUR + interim_results[PARAM.U] = self.parameters_series[PARAM.U] + interim_results[PARAM.W] = self.parameters_series[PARAM.W] + + if max_duration is not None: + interim_results = interim_results.loc[:max_duration].copy() + + return pd.Series(index=interim_results.index, + data=interim_results[PARAM.U] + interim_results[PARAM.W] * np.log(return_periods))
+ + + def get_duration_section(self, duration, param): + for lower, upper in self._iter_params(): + if lower <= duration <= upper: + return self.parameters_final[lower][param] + +
+[docs] + def get_scalar_param(self, p, duration): + """ + + Args: + p (str): name of the parameter 'u' or 'w' + duration (float | int): in minutes + + Returns: + (float, float): u, w + """ + param = self.get_duration_section(duration, p) # type: _Formulation + + if param is None: + return np.NaN + + return param.get_param(duration)
+ + +
+[docs] + def get_array_param(self, p, duration): + """ + + Args: + p (str): name of the parameter 'u' or 'w' + duration (numpy.ndarray): in minutes + + Returns: + (numpy.ndarray, numpy.ndarray): u, w + """ + return np.vectorize(lambda d: self.get_scalar_param(p, d))(duration)
+ + +
+[docs] + def get_u_w(self, duration): + """ + calculate the u and w parameters depending on the durations + + Args: + duration (numpy.ndarray| list | float | int): in minutes + + Returns: + (float, float): u and w + """ + if isinstance(duration, (list, np.ndarray)): + func = self.get_array_param + else: + func = self.get_scalar_param + + return (func(p, duration) for p in PARAM.U_AND_W)
+ + +
+[docs] + @classmethod + def from_interim_results_file(cls, interim_results_fn, worksheet=METHOD.KOSTRA): + """DEPRECIATED: for compatibility reasons. To use the old file and convert it to the new parameters file""" + interim_results = pd.read_csv(interim_results_fn, index_col=0, header=0) + p = cls(worksheet, interim_results) + return p
+ + + def to_yaml(self, filename): + register_formulations_to_yaml() + + def to_basic(a): + return list([round(float(i), 4) for i in a]) + data = OrderedDict({ + PARAM.SERIES: self.series_kind, + PARAM.DUR: to_basic(self.durations), + PARAM.PARAMS_SERIES: {p: to_basic(l) for p, l in self.parameters_series.items()}, + PARAM.PARAMS_FINAL: self.parameters_final + }) + write_yaml(data, filename) + + @classmethod + def from_yaml(cls, filename): + data = read_yaml(filename) + if isinstance(data, list): + return cls.from_yaml_depreciated(filename) + p = cls(series_kind=data[PARAM.SERIES]) + p.durations = data[PARAM.DUR] + # list to numpy.array + p.parameters_series = {p: np.array(l) for p, l in data[PARAM.PARAMS_SERIES].items()} + p.parameters_final = data[PARAM.PARAMS_FINAL] + p._calc_params() + return p + + @classmethod + def from_yaml_depreciated(cls, filename, series_kind=SERIES.PARTIAL): + data = read_yaml(filename) + p = cls(series_kind=series_kind) + p.durations = [] + p.parameters_series = {PARAM.U: [], PARAM.W: []} + p.parameters_final = {} + for part in data: + start_dur = float(part['von']) + start_idx = 0 + if start_dur in part[COL.DUR]: + start_idx = 1 + p._durations += part[COL.DUR][start_idx:] + part_params = {} + + for u_or_w in PARAM.U_AND_W: + part_params[u_or_w] = {PARAM.FUNCTION: part[u_or_w]} + if part[u_or_w] != APPROACH.LIN: + part_params[u_or_w][PARAM.A] = part[f'{PARAM.A}_{u_or_w}'] + part_params[u_or_w][PARAM.B] = part[f'{PARAM.B}_{u_or_w}'] + + p.parameters_series[u_or_w] += part[PARAM.VALUES(u_or_w)][start_idx:] + + p.parameters_final[start_dur] = part_params + + p.parameters_series = {param: np.array(l) for param, l in p.parameters_series.items()} + if '.yaml' in filename: + os.rename(filename, filename.replace('.yaml', '_OLD.yaml')) + p.to_yaml(filename) + return p
+ +
+ +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/_modules/idf_analysis/idf_class.html b/_modules/idf_analysis/idf_class.html new file mode 100644 index 0000000..6eb64f3 --- /dev/null +++ b/_modules/idf_analysis/idf_class.html @@ -0,0 +1,984 @@ + + + + + + + idf_analysis.idf_class — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + +
+
+
+
+ +

Source code for idf_analysis.idf_class

+__author__ = "Markus Pichler"
+__credits__ = ["Markus Pichler"]
+__maintainer__ = "Markus Pichler"
+__email__ = "markus.pichler@tugraz.at"
+__version__ = "0.1"
+__license__ = "MIT"
+
+import warnings
+from os import path, mkdir
+from webbrowser import open as show_file
+import matplotlib.pyplot as plt
+from scipy.optimize import newton
+
+import numpy as np
+import pandas as pd
+
+from .arg_parser import heavy_rain_parser
+from .idf_backend import IdfParameters
+from .little_helpers import minutes_readable, height2rate, delta2min, rate2height, frame_looper, event_caption, \
+    event_caption_ger
+from .definitions import *
+from .in_out import import_series
+from .sww_utils import guess_freq, rain_events, agg_events, event_duration, resample_rain_series, rain_bar_plot, IdfError
+from .plot_helpers import idf_bar_axes
+from .synthetic_rainseries import _BlockRain, _EulerRain
+
+
+########################################################################################################################
+
+[docs] +class IntensityDurationFrequencyAnalyse: + """ + heavy rain as a function of the duration and the return period acc. to DWA-A 531 (2012) + + This program reads the measurement data of the rainfall + and calculates the distribution of the rainfall as a function of the return period and the duration + + for duration steps up to 12 hours (and more) and return period in a range of '0.5a <= T_n <= 100a' + + Attributes: + _series (pandas.Series): rain time-series + _freq (pandas.DateOffset): frequency of the rain series + _return_periods_frame (pandas.DataFrame): with return periods of all given durations + _rain_events (pandas.DataFrame): + _rainfall_sum_frame (pandas.DataFrame): with rain sums of all given durations + + """ + def __init__(self, series_kind=SERIES.PARTIAL, worksheet=METHOD.KOSTRA, extended_durations=False): + """ + heavy rain as a function of the duration and the return period acc. to DWA-A 531 (2012) + + This program reads the measurement data of the rainfall + and calculates the distribution of the rainfall as a function of the return period and the duration + + for duration steps up to 12 hours (and more) and return period in a range of '0.5a <= T_n <= 100a' + + Args: + series_kind (str): ['partial', 'annual'] + worksheet (str): ['DWA-A_531', 'ATV-A_121', 'DWA-A_531_advektiv'] + extended_durations (bool): add [720, 1080, 1440, 2880, 4320, 5760, 7200, 8640] minutes to the calculation + """ + self._series = None + self._freq = None + + # how to calculate the idf curves + # IdfParameters.__init__(self, series_kind=series_kind, worksheet=worksheet, + # extended_durations=extended_durations) + self._parameter = IdfParameters(series_kind=series_kind, worksheet=worksheet, + extended_durations=extended_durations) + # self._parameter = None # type: IdfParameters # how to calculate the idf curves + + self._return_periods_frame = None + self._rain_events = None + self._rainfall_sum_frame = None + + self._duration_steps_for_output = None + + # __________________________________________________________________________________________________________________ + @property + def series(self) -> pd.Series: + if self._series is None: + raise IdfError('No Series defined for IDF-Analysis!') + return self._series + + @series.setter + def series(self, series: pd.Series): + self._series = series + +
+[docs] + def set_series(self, series): + """ + set the series for the analysis + + Args: + series (pandas.Series): precipitation time-series + """ + if not isinstance(series, pd.Series): + raise IdfError('The series has to be a pandas Series.') + + if not isinstance(series.index, pd.DatetimeIndex): + raise IdfError('The series has to have a DatetimeIndex.') + + # if series.index.tz is not None: + # series = remove_timezone(series) + + self._freq = guess_freq(series.index) + freq_minutes = delta2min(self._freq) + self._parameter.filter_durations(freq_minutes) + self.series = series.replace(0, np.NaN).dropna() + self._return_periods_frame = None + self._rain_events = None + self._rainfall_sum_frame = None
+ + + # __________________________________________________________________________________________________________________ + @property + def duration_steps(self): + """ + get duration steps (in minutes) for the parameter calculation and basic evaluations + + Returns: + list | numpy.ndarray: duration steps in minutes + """ + # if not self.parameters: + # raise IdfError('No Series defined for IDF-Analysis!') + return self.parameters.durations + + @duration_steps.setter + def duration_steps(self, durations): + """ + set duration steps (in minutes) for the parameter calculation and basic evaluations + Args: + durations (list | numpy.ndarray): duration steps in minutes + """ + if not isinstance(durations, (list, np.ndarray)): + raise IdfError('Duration steps have to be {} got "{}"'.format((list, np.ndarray), type(durations))) + self.parameters.durations = durations + + @property + def duration_steps_for_output(self): + """ + get duration steps (in minutes) for the parameter calculation and basic evaluations + + Returns: + list | numpy.ndarray: duration steps in minutes + """ + # if not self.parameters: + # raise IdfError('No Series defined for IDF-Analysis!') + + if self._duration_steps_for_output is None: + self._duration_steps_for_output = self.duration_steps.copy() + + return self._duration_steps_for_output + + @duration_steps_for_output.setter + def duration_steps_for_output(self, durations): + """ + set duration steps (in minutes) for the parameter calculation and basic evaluations + Args: + durations (list | numpy.ndarray): duration steps in minutes + """ + if not isinstance(durations, (list, np.ndarray)): + raise IdfError('Duration steps have to be {} got "{}"'.format((list, np.ndarray), type(durations))) + self._duration_steps_for_output = durations + + # __________________________________________________________________________________________________________________ + @property + def parameters(self): + """ + get the calculation parameters + + calculation method depending on the used worksheet and on the duration + also the parameters for each method + + to save some time and save the parameters with + :func:`IntensityDurationFrequencyAnalyse.write_parameters` + and read them later with :func:`IntensityDurationFrequencyAnalyse.read_parameters` + + Returns: + IdfParameters: calculation parameters + """ + if not self._parameter: + self._parameter.calc_from_series(self.series) + return self._parameter + +
+[docs] + def write_parameters(self, filename): + """ + save parameters as yaml-file to save computation time. + + Args: + filename (str): filename for the parameters yaml-file + """ + self.parameters.to_yaml(filename)
+ + +
+[docs] + def read_parameters(self, filename): + """ + Read parameters from a .yaml-file to save computation time. + + Extract interim results from parameters. + + Args: + filename (str, Path): filename of the parameters yaml-file + """ + self._parameter = IdfParameters.from_yaml(filename)
+ + +
+[docs] + def auto_save_parameters(self, filename): + """Auto-save the parameters as a yaml-file to save computation time.""" + if path.isfile(filename): + self.read_parameters(filename) + else: + from os import makedirs + parent = path.dirname(filename) + if parent and not path.isdir(parent): + makedirs(parent) + self.write_parameters(filename)
+ + + # __________________________________________________________________________________________________________________ +
+[docs] + def depth_of_rainfall(self, duration, return_period): + """ + calculate the height of the rainfall h in L/m² = mm + + Args: + duration (int | float | list | numpy.ndarray | pandas.Series): duration: in minutes + return_period (float): in years + + Returns: + int | float | list | numpy.ndarray | pandas.Series: height of the rainfall h in L/m² = mm + """ + if self.parameters.series_kind == SERIES.ANNUAL: + if return_period < 5: + print('WARNING: Using an annual series and a return period < 5 a will result in faulty values!') + + if return_period <= 10: + return_period = np.exp(1.0 / return_period) / (np.exp(1.0 / return_period) - 1.0) + + log_tn = -np.log(np.log(return_period / (return_period - 1.0))) + + else: + log_tn = np.log(return_period) + + u, w = self.parameters.get_u_w(duration) + return u + w * log_tn
+ + + # __________________________________________________________________________________________________________________ +
+[docs] + def rain_flow_rate(self, duration, return_period): + """ + convert the height of rainfall to the specific rain flow rate in [l/(s*ha)] + if 2 array-like parameters are give, a element-wise calculation will be made. + So the length of the array must be the same. + + Args: + duration (int | float | list | numpy.ndarray | pandas.Series): in minutes + return_period (float): in years + + Returns: + int | float | list | numpy.ndarray | pandas.Series: specific rain flow rate in [l/(s*ha)] + """ + height_of_rainfall = self.depth_of_rainfall(duration=duration, return_period=return_period) + return height2rate(height_of_rainfall=height_of_rainfall, duration=duration)
+ + + # __________________________________________________________________________________________________________________ +
+[docs] + def r_720_1(self): + """ + rain flow rate in [l/(s*ha)] for a duration of 12h and a return period of 1 year + + Returns: + float: rain flow rate in [l/(s*ha)] + """ + return self.rain_flow_rate(duration=720, return_period=1)
+ + + # __________________________________________________________________________________________________________________ +
+[docs] + def get_return_period(self, height_of_rainfall, duration): + """ + calculate the return period, when the height of rainfall and the duration are given + + Args: + height_of_rainfall (float): in [mm] + duration (int | float | list | numpy.ndarray | pandas.Series): in minutes + + Returns: + int | float | list | numpy.ndarray | pandas.Series: return period in years + """ + u, w = self.parameters.get_u_w(duration) + return np.exp((height_of_rainfall - u) / w)
+ + + # __________________________________________________________________________________________________________________ +
+[docs] + def get_duration(self, height_of_rainfall, return_period): + """ + calculate the duration, when the height of rainfall and the return period are given + + Args: + height_of_rainfall (float): in [mm] + return_period (float): in years + + Returns: + float: duration in minutes + """ + return newton(lambda d: self.depth_of_rainfall(d, return_period) - height_of_rainfall, x0=1)
+ + + # __________________________________________________________________________________________________________________ +
+[docs] + def result_table(self, durations=None, return_periods=None, add_names=False): + """ + Get an idf-table of rainfall depth with return periods as columns and durations as rows. + + Args: + durations (list | numpy.ndarray): list of durations in minutes for the table + return_periods (list): list of return periods in years for the table + add_names (bool): weather to use expressive names as index-&column-label + + Returns: + pandas.DataFrame: idf table + """ + if durations is None: + durations = self.duration_steps_for_output + + if return_periods is None: + return_periods = [1, 2, 3, 5, 10, 20, 25, 30, 50, 75, 100] + + result_table = {} + for t in return_periods: + result_table[t] = self.depth_of_rainfall(durations, t) + + result_table = pd.DataFrame(result_table, index=durations) + + if add_names: + result_table.index.name = 'duration (min)' + result_table.columns = pd.MultiIndex.from_tuples([(rp, round(1 / rp, 3)) for rp in result_table.columns]) + result_table.columns.names = ['return period (a)', 'frequency (1/a)'] + return result_table
+ + + #################################################################################################################### +
+[docs] + def result_figure(self, min_duration=5.0, max_duration=720.0, logx=False, return_periods=None, color=True, ax=None, + linestyle=None, add_interim=False, alpha=1): + """ + Create a plot with the idf-curves with duration on the x-axis and rainfall depth on the y-axis. + + Args: + min_duration (float): Shortest duration on the plot. + max_duration (float): Longest duration on the plot. + logx (bool): Use a logarithmic scale on the x-axis. + return_periods (list[int] | Optional): List of return periods to plot. Default = [1, 2, 5, 10, 50, 100] + color (bool): Use color and a legend to differentiate between the return periods (default). + Otherwise, annotation text and black lines. + ax (plt.Axes): Axes to plot on. Default = create new one. + linestyle (str): Line-style for the plotted lines. + add_interim (bool): Add interim results from the series analysis as scatter points. + alpha (float): Alpha of the idf-lines in the plot. + + Returns: + (plt.Figure, plt.Axes): figure and axes of the plot. + """ + duration_steps = np.arange(min_duration, max_duration + 1, 1) + + if return_periods is None: + return_periods = [1, 2, 5, 10, 50, 100] + + table = self.result_table(durations=duration_steps, return_periods=return_periods) + if color: + table.columns.name = 'T$\\mathsf{_N}$ in a' + ax = table.plot(color=(None if color else 'black'), logx=logx, legend=color, ax=ax, ls=linestyle, alpha=alpha) + + for _, return_time in enumerate(return_periods): + if add_interim: + p = self.parameters.measured_points(return_time, max_duration=max_duration) + # p = measured_points(self, return_time, max_duration=max_duration) + ax.plot(p, 'k' + 'x') + + if not color: + x, y = list(table[return_time].tail(1).items())[0] + ax.text(x + 10, y, '{} a'.format(return_time), verticalalignment='center', horizontalalignment='left', + # bbox=dict(facecolor='white', alpha=1.0, lw=1) + ) + + ax.tick_params(axis='both', which='both', direction='out') + ax.set_xlabel('Duration D in min') + ax.set_ylabel('Rainfall h$\\mathsf{_N}$ in mm') + ax.set_title('IDF curves') + + fig = ax.get_figure() # type: plt.Figure + + cm_to_inch = 2.54 + fig.set_size_inches(h=21 / cm_to_inch, w=29.7 / cm_to_inch) # (11.69, 8.27) + return fig, ax
+ + + #################################################################################################################### + @classmethod + def command_line_tool(cls): + user = heavy_rain_parser() + + # -------------------------------------------------- + # use the same directory as the input file and make as subdir with the name of the input_file + "_idf_data" + out = '{label}_idf_data'.format(label='.'.join(user.input.split('.')[:-1])) + + if not path.isdir(out): + mkdir(out) + action = 'Creating' + else: + action = 'Using' + + print('{} the subfolder "{}" for the interim- and final-results.'.format(action, out)) + + fn_pattern = path.join(out, 'idf_{}') + + # -------------------------------------------------- + idf = cls(series_kind=user.series_kind, worksheet=user.worksheet, extended_durations=True) + + # -------------------------------------------------- + parameters_fn = fn_pattern.format('parameters.yaml') + + if path.isfile(parameters_fn): + print('Found existing interim-results in "{}" and using them for calculations.'.format(parameters_fn)) + else: + print('Start reading the time-series {} for the analysis.'.format(user.input)) + ts = import_series(user.input).replace(0, np.NaN).dropna() + # -------------------------------------------------- + idf.set_series(ts) + print('Finished reading.') + + # -------------------------------------------------- + idf.auto_save_parameters(parameters_fn) + + # -------------------------------------------------- + h = user.height_of_rainfall + r = user.flow_rate_of_rainfall + d = user.duration + t = user.return_period + + if r is not None: + if h is None and d is not None: + h = rate2height(rain_flow_rate=r, duration=d) + + elif d is None and h is not None: + d = h / r * 1000 / 6 + + if user.r_720_1: + d = 720 + t = 1 + + if any((h, d, t)): + if all((d, t)): + pass + + elif all((d, h)): + t = idf.get_return_period(h, d) + print('The return period is {:0.1f} years.'.format(t)) + + elif all((h, t)): + d = idf.get_duration(h, t) + print('The duration is {:0.1f} minutes.'.format(d)) + + print('Resultierende Regenhöhe h_N(T_n={t:0.1f}a, D={d:0.1f}min) = {h:0.2f} mm' + ''.format(t=t, d=d, h=idf.depth_of_rainfall(d, t))) + print('Resultierende Regenspende r_N(T_n={t:0.1f}a, D={d:0.1f}min) = {r:0.2f} L/(s*ha)' + ''.format(t=t, d=d, r=idf.rain_flow_rate(d, t))) + + # -------------------------------------------------- + if user.plot: + import matplotlib.pyplot as plt + fig, ax = idf.result_figure() + plot_fn = fn_pattern.format('curves_plot.png') + fig.savefig(plot_fn, dpi=260) + plt.close(fig) + show_file(plot_fn) + print('Created the IDF-curves-plot and saved the file as "{}".'.format(plot_fn)) + + # -------------------------------------------------- + if user.export_table: + table = idf.result_table(add_names=True) + print(table.round(2).to_string()) + table_fn = fn_pattern.format('table.csv') + table.to_csv(table_fn, sep=';', decimal=',', float_format='%0.2f') + print('Created the IDF-curves-plot and saved the file as "{}".'.format(table_fn)) + + #################################################################################################################### +
+[docs] + def get_rainfall_sum_frame(self, series=None, durations=None): + """ + Get a rainfall sum frame for any series with the duration steps as columns. + + Default: The time-series and the duration-steps of the analysis. + + Args: + series (pandas.Series, Optional): rainfall time-series + durations (list, Optional): list of durations in minutes which are of interest (default: pre-defined durations) + + Returns: + pandas.DataFrame: Rain sum depending on the duration per datetime-index. + """ + if durations is None: + durations = self.duration_steps_for_output + + if series is None: + if self._rainfall_sum_frame is not None: + return self._rainfall_sum_frame + ts = self.series.copy() + freq = self._freq + else: + freq = guess_freq(series.index) + ts = series.copy() + ts = ts.asfreq(freq).fillna(0) + # ts = series.replace(0, np.NaN).dropna() + + df = pd.DataFrame(index=ts.index) + # df = {} + + freq_num = delta2min(freq) + + for d in frame_looper(ts.index.size, columns=durations, label='rainfall_sum'): + if d % freq_num != 0: + warnings.warn('Using durations (= {} minutes), ' + 'which are not a multiple of the base frequency (= {} minutes) of the series, ' + 'will lead to misinterpretations.'.format(d, freq_num)) + df[d] = ts.rolling(pd.Timedelta(minutes=d)).sum() + + # printable_names (bool): if durations should be as readable in dataframe, else in minutes + # df = df.rename(minutes_readable, axis=0) + + return df#.round(2)
+ + + @property + def rainfall_sum_frame(self): + """ + Get the rainfall sum over the whole time-series for the default duration steps. + + Returns: + pandas.DataFrame: Rain sum depending on the duration per datetime-index. + """ + if self._rainfall_sum_frame is None: + self._rainfall_sum_frame = self.get_rainfall_sum_frame() + return self._rainfall_sum_frame + + #################################################################################################################### +
+[docs] + def get_return_periods_frame(self, series=None, durations=None): + """ + Get the return periods for any time-series with the duration steps as columns. + + Default: The time-series and the duration-steps of the analysis. + + Args: + series (pandas.Series, Optional): rainfall time-series + durations (list, Optional): Durations in minutes which are of interest (default: pre-defined durations) + + Returns: + pandas.DataFrame: Return periods depending on the duration per datetime-index. + """ + sums = self.get_rainfall_sum_frame(series=series, durations=durations) + df = pd.DataFrame(index=sums.index) + # df = {} + for d in frame_looper(sums.index.size, columns=sums.columns, label='return_periods'): + df[d] = self.get_return_period(height_of_rainfall=sums[d][sums[d] >= 0.1], duration=d) + return df#.fillna(0)#.round(2)
+ + + @property + def return_periods_frame(self): + """ + Get the return periods over the whole time-series for the default duration steps. + + Returns: + pandas.DataFrame: data-frame of return periods where the columns are the duration steps + """ + if self._return_periods_frame is None: + self._return_periods_frame = self.get_return_periods_frame() + return self._return_periods_frame + +
+[docs] + def write_return_periods_frame(self, filename, **kwargs): + """save the return-periods dataframe as a parquet-file to save computation time.""" + df = self.return_periods_frame.copy() + df.columns = df.columns.to_series().astype(str) + df.round(2).to_parquet(filename, **kwargs)
+ + +
+[docs] + def read_return_periods_frame(self, filename, **kwargs): + """read the return-periods dataframe as a parquet-file to save computation time.""" + df = pd.read_parquet(filename, **kwargs) + df.columns = df.columns.to_series().astype(int) + self._return_periods_frame = df
+ + +
+[docs] + def auto_save_return_periods_frame(self, filename): + """auto-save the return-periods dataframe as a parquet-file to save computation time.""" + if path.isfile(filename): + self.read_return_periods_frame(filename) + else: + self.write_return_periods_frame(filename)
+ + + #################################################################################################################### + @property + def rain_events(self): + """ + get the all the rain events of the time-series + + default minimal gap between events is 4 hours + + Returns: + pandas.DataFrame: data-frame of events with start-, end-time and duration + """ + if self._rain_events is None: + events = rain_events(self.series) + events[COL.DUR] = event_duration(events) + events[COL.LP] = agg_events(events, self.series, 'sum').round(1) + events[COL.LAST] = events[COL.START] - events[COL.END].shift() + # events = events.sort_values(by=COL.LP, ascending=False) + self._rain_events = events + + return self._rain_events + +
+[docs] + def write_rain_events(self, filename, sep=';', decimal='.'): + """save the rain-events dataframe as a csv-file for external use or to save computation time.""" + self.rain_events.to_csv(filename, index=False, sep=sep, decimal=decimal)
+ + +
+[docs] + def read_rain_events(self, filename, sep=';', decimal='.'): + """read the rain-events dataframe as a csv-file to save computation time.""" + events = pd.read_csv(filename, skipinitialspace=True, sep=sep, decimal=decimal) + events[COL.START] = pd.to_datetime(events[COL.START]) + events[COL.END] = pd.to_datetime(events[COL.END]) + events[COL.DUR] = pd.to_timedelta(events[COL.DUR]) + events[COL.LAST] = pd.to_timedelta(events[COL.LAST]) + self._rain_events = events
+ + +
+[docs] + def auto_save_rain_events(self, filename, sep=';', decimal='.'): + """auto-save the rain-events dataframe as a csv-file to save computation time.""" + if path.isfile(filename): + self.read_rain_events(filename, sep=sep, decimal=decimal) + else: + self.write_rain_events(filename, sep=sep, decimal=decimal)
+ + + def add_max_return_periods_to_events(self, events): + if COL.MAX_PERIOD not in events: + return_periods_frame = self.return_periods_frame + + # maximum return period for every timestep + max_periods = return_periods_frame.max(axis=1).fillna(0) # fill NaN -> weil < 0.1 gefiltert wurde + + datetime_max = agg_events(events, max_periods, 'idxmax') + datetime_max = np.where(np.isnan(datetime_max), events[COL.START].values, datetime_max) + # alternative: + # [xv if c else yv for c, xv, yv in zip(np.isnan(datetime_max), events[COL.START].values, datetime_max)] + if return_periods_frame.index.tz is not None: + datetime_max = pd.DatetimeIndex(datetime_max).tz_localize('utc').tz_convert(return_periods_frame.index.tz) + events[COL.MAX_PERIOD] = max_periods[datetime_max].values + + events[COL.MAX_PERIOD_DURATION] = return_periods_frame.loc[datetime_max].idxmax(axis=1, skipna=True).values + +
+[docs] + def add_max_intensities_to_events(self, events): + """ + Add the maximum intensities for all duration steps to the events table. + + Args: + events (pandas.DataFrame): events table + + Returns: + pandas.DataFrame: events table including the columns with the maximum intensities + """ + sum_frame = self.rainfall_sum_frame + for duration in self.duration_steps: + events[f'max_sum_{duration:0.0f}'] = agg_events(events, sum_frame[duration], 'max').round(2) + return events
+ + + #################################################################################################################### +
+[docs] + def event_report(self, filename, min_event_rain_sum=25, min_return_period=0.5, durations=None): + """ + create pdf file with the biggest rain events + for each event is represented by a plot of the rain series + and a IDF analysis where the return periods are calculated + + Args: + filename (str): path (directory + filename) for the created pdf-report + min_event_rain_sum (float): only events with a bigger rain sum will be created + min_return_period (float): only events with a bigger return period will be analysed + (the plot will be created anyway) + durations (list[int]): analysed durations + (default: [5, 10, 15, 20, 30, 45, 60, 90, 120, 180, 240, 360, 540, 720, 1080, 1440, 2880, 4320]) + """ + import matplotlib.pyplot as plt + from matplotlib.backends.backend_pdf import PdfPages + from tqdm.auto import tqdm + + events = self.rain_events + self.add_max_return_periods_to_events(events) + + main_events = events[(events[COL.LP] > min_event_rain_sum) & (events[COL.MAX_PERIOD] > min_return_period)].sort_values(by=COL.MAX_PERIOD, ascending=False).to_dict( + orient='index') + + unit = 'mm' + column_name = 'Precipitation' + + pdf = PdfPages(filename) + + for _, event in tqdm(main_events.items()): + fig, caption = self.event_plot(event, min_return_period=min_return_period, + unit=unit, column_name=column_name) + + # ------------------------------------- + fig.get_axes()[0].set_title(caption + '\n\n\n') + + # DIN A4 + fig.set_size_inches(w=8.27, h=11.69) + # fig.tight_layout() + pdf.savefig(fig) + plt.close(fig) + + pdf.close()
+ + + def event_plot(self, event, durations=None, unit='mm', column_name='Precipitation', min_return_period=1., german_caption=False, max_duration=None): + import matplotlib.pyplot as plt + if isinstance(event, pd.Series): + event = event.to_dict() + + plot_range = slice(event[COL.START] - pd.Timedelta(self._freq), event[COL.END] + pd.Timedelta(self._freq)) + + return_periods_frame = self.return_periods_frame[plot_range] + if COL.MAX_PERIOD not in event: + event[COL.MAX_PERIOD] = return_periods_frame.max().max() + event[COL.MAX_PERIOD_DURATION] = return_periods_frame.max().idxmax() + + sum_frame_event = self.rainfall_sum_frame[plot_range] + + ts = self.series[plot_range].resample(self._freq).sum().fillna(0).copy() + + # ------------------------------------- + fig = plt.figure() + + if event[COL.MAX_PERIOD] < min_return_period: + rain_ax = fig.add_subplot(111) + + else: + if max_duration is None: + if durations is not None: + max_dur = max(durations) + else: + max_dur = max(self.duration_steps_for_output) + else: + max_dur = max_duration + + return_periods_frame_extended = self.get_return_periods_frame( + self.series[event[COL.START] - pd.Timedelta(minutes=max_dur): + event[COL.END] + pd.Timedelta(self._freq)].resample(self._freq).sum(), + durations=durations + ).round(1) + + idf_bar_ax = fig.add_subplot(211) + idf_bar_ax = idf_bar_axes(idf_bar_ax, return_periods_frame_extended) + rain_ax = fig.add_subplot(212, sharex=idf_bar_ax) + + # ------------------------------------- + ts_sum, minutes = resample_rain_series(ts) + rain_ax = rain_bar_plot(ts_sum, rain_ax) + rain_ax.set_ylabel('{} in {}/{}min'.format(column_name, unit, minutes if minutes != 1 else '')) + rain_ax.set_xlim(ts.index[0], ts.index[-1]) + + return fig, (event_caption_ger(event) if german_caption else event_caption(event, unit)) + + #################################################################################################################### + def event_return_period_report(self, filename, min_return_period=1): + import matplotlib.pyplot as plt + from matplotlib.backends.backend_pdf import PdfPages + from tqdm.auto import tqdm + + events = self.rain_events + self.add_max_return_periods_to_events(events) + + main_events = events[events[COL.MAX_PERIOD] > min_return_period].sort_values(by=COL.MAX_PERIOD, ascending=False) + + pdf = PdfPages(filename) + + for _, event in tqdm(main_events.to_dict(orient='index').items()): + fig, ax = self.return_period_event_figure(event) + + # ------------------------------------- + # DIN A4 + fig.set_size_inches(h=11.69 / 2, w=8.27) + # fig.tight_layout() + pdf.savefig(fig) + plt.close(fig) + + pdf.close() + + def return_period_event_figure(self, event): + import matplotlib.pyplot as plt + period_line = self.return_periods_frame[event[COL.START]:event[COL.END]].max() + + # period_line[period_line < 0.75] = np.NaN + period_line = period_line.dropna() + + ax = period_line.plot() # type: plt.Axes + + ax.set_title('rain event\n' + 'between {} and {}\n' + 'with a total sum of {:0.1f} mm\n' + 'and a duration of {}\n' + 'The maximum return period was {:0.2f}a\n' + 'at a duration of {}.'.format(event[COL.START].strftime('%Y-%m-%d %H:%M'), + event[COL.END].strftime('%Y-%m-%d %H:%M'), + event[COL.LP], + event[COL.END] - event[COL.START], + period_line.max(), + period_line.idxmax())) + # ax.set_xscale('log') + # ax.set_yscale('log') + # print(ax.get_ylim()) + # ax.set_ylim(0.01, 300) + # exit() + ax.set_xticks(period_line.index) + ax.set_xticklabels([minutes_readable(m) for m in period_line.index]) + ax.set_xlabel('duration steps') + ax.set_ylabel('return period in years') + return ax.get_figure(), ax + +
+[docs] + @classmethod + def from_idf_table(cls, idf_table, worksheet=METHOD.KOSTRA): + """ + Create an IDF-analysis-object based on an idf-tabel (i.e. from a given KOSTRA table) + + Args: + idf_table (pandas.DataFrame): idf-table with index=Durations and columns=return Period and values=Rainheight + worksheet (str | optional): name of the worksheet to use. default: 'KOSTRA' + + Returns: + IntensityDurationFrequencyAnalyse: idf-object + """ + idf = cls(worksheet=worksheet) + idf._parameter.reverse_engineering(idf_table) + return idf
+ + + @property + def model_rain_block(self): + """ + Create a model block rain class. + + Returns: + _BlockRain: Synthetic model block rain. + """ + return _BlockRain(self) + + @property + def model_rain_euler(self): + """ + Create a model Euler rain class. + + Returns: + _EulerRain: Synthetic model Euler rain. + """ + return _EulerRain(self)
+ +
+ +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/_modules/idf_analysis/in_out.html b/_modules/idf_analysis/in_out.html new file mode 100644 index 0000000..a060376 --- /dev/null +++ b/_modules/idf_analysis/in_out.html @@ -0,0 +1,152 @@ + + + + + + + idf_analysis.in_out — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + +
+
+
+
+ +

Source code for idf_analysis.in_out

+__author__ = "Markus Pichler"
+__credits__ = ["Markus Pichler"]
+__maintainer__ = "Markus Pichler"
+__email__ = "markus.pichler@tugraz.at"
+__version__ = "0.1"
+__license__ = "MIT"
+
+import pandas as pd
+import yaml
+from collections import OrderedDict
+
+
+
+[docs] +def import_series(filename, series_label='precipitation', index_label='datetime', csv_reader_args=None): + """ + + Args: + filename: + series_label: + index_label: + csv_reader_args: for example: sep="," or "." and decimal=";" or "," + + Returns: + pandas.Series: precipitation series + """ + if filename.endswith('csv'): + if csv_reader_args is None: + csv_reader_args = dict(sep=';', decimal=',') + try: + ts = pd.read_csv(filename, index_col=0, header=0, squeeze=True, **csv_reader_args) + ts.index = pd.to_datetime(ts.index) + ts.index.name = index_label + ts.name = series_label + except: + raise UserWarning('ERROR | ' + 'Something is wrong with your csv format. The file should only include two columns. ' + 'First column is the date and time index (prefered format is "YYYY-MM-DD HH:MM:SS") ' + 'and second column the precipitation values in mm. ' + 'As a separator use "{sep}" and as decimal sign use "{decimal}".'.format(**csv_reader_args)) + + return ts + elif filename.endswith('parquet'): + return pd.read_parquet(filename, columns=[series_label])[series_label].rename_axis(index_label, axis='index') + elif filename.endswith('pkl'): + return pd.read_pickle(filename).rename(series_label).rename_axis(index_label, axis='index') + else: + raise NotImplementedError('Sorry, but only csv, parquet and pickle files are implemented. ' + 'Maybe there will be more options soon.')
+ + +# ------------------------------------------------------------------------------ +_mapping_tag = yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG + + +def _dict_representer(dumper, data): + return dumper.represent_dict(data.items()) + + +def _dict_constructor(loader, node): + return OrderedDict(loader.construct_pairs(node)) + + +yaml.add_representer(OrderedDict, _dict_representer) +yaml.add_constructor(_mapping_tag, _dict_constructor) + + +def write_yaml(data, fn): + yaml.dump(data, open(fn, 'w'), default_flow_style=None, width=200) + + +def read_yaml(filename): + return yaml.load(open(filename, 'r'), Loader=yaml.FullLoader) +
+ +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/_modules/idf_analysis/little_helpers.html b/_modules/idf_analysis/little_helpers.html new file mode 100644 index 0000000..fedc5d8 --- /dev/null +++ b/_modules/idf_analysis/little_helpers.html @@ -0,0 +1,337 @@ + + + + + + + idf_analysis.little_helpers — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + +
+
+
+
+ +

Source code for idf_analysis.little_helpers

+__author__ = "Markus Pichler"
+__credits__ = ["Markus Pichler"]
+__maintainer__ = "Markus Pichler"
+__email__ = "markus.pichler@tugraz.at"
+__version__ = "0.1"
+__license__ = "MIT"
+
+import pandas as pd
+from pandas import Timedelta
+
+from .definitions import COL
+
+
+
+[docs] +def delta2min(time_delta): + """ + convert timedelta to float in minutes + + Args: + time_delta (pandas.Timedelta, pandas.DateOffset): + + Returns: + float: the timedelta in minutes + """ + if isinstance(time_delta, pd.DateOffset): + time_delta = time_delta.delta + return int(time_delta.total_seconds() / 60)
+ + + +
+[docs] +def minutes_readable(minutes): + """ + convert the duration in minutes to a more readable form + + Args: + minutes (float | int): duration in minutes + + Returns: + str: duration as a string + """ + if minutes <= 60: + return '{:0.0f} min'.format(minutes) + elif 60 < minutes < 60 * 24: + minutes /= 60 + if minutes % 1: + fmt = '{:0.1f} h' + else: + fmt = '{:0.0f} h' + return fmt.format(minutes) + elif 60 * 24 <= minutes: + minutes /= 60 * 24 + if minutes % 1: + fmt = '{:0.1f} d' + else: + fmt = '{:0.0f} d' + return fmt.format(minutes) + else: + return str(minutes)
+ + + +
+[docs] +def duration_steps_readable(durations): + """ + convert the durations to a more readable form + + Args: + durations (list[int | float]): in minutes + + Returns: + list[str]: of the readable duration list + """ + return [minutes_readable(i) for i in durations]
+ + + +
+[docs] +def height2rate(height_of_rainfall, duration): + """ + calculate the specific rain flow rate in [l/(s*ha)] + if 2 array-like parameters are give, a element-wise calculation will be made. + So the length of the array must be the same. + + Args: + height_of_rainfall (float | np.ndarray | pd.Series): height_of_rainfall: in [mm] + duration (float | np.ndarray | pd.Series): in minutes + + Returns: + float | np.ndarray | pd.Series: specific rain flow rate in [l/(s*ha)] + """ + return height_of_rainfall / duration * (1000 / 6)
+ + + +
+[docs] +def rate2height(rain_flow_rate, duration): + """ + convert the rain flow rate to the height of rainfall in [mm] + if 2 array-like parameters are give, a element-wise calculation will be made. + So the length of the array must be the same. + + Args: + rain_flow_rate (float | np.ndarray | pd.Series): in [l/(s*ha)] + duration (float | np.ndarray | pd.Series): in minutes + + Returns: + float | np.ndarray | pd.Series: height of rainfall in [mm] + """ + return rain_flow_rate * duration / (1000 / 6)
+ + + +def frame_looper(size, columns, label='return periods'): + if size > 30000: # if > 3 weeks, use a progressbar + try: + from tqdm.auto import tqdm + return tqdm(columns, desc=f'calculating {label} data-frame') + except ModuleNotFoundError: + return columns + else: + return columns + + +def event_caption(event, unit='mm'): + caption = 'rain event\n' + if (COL.START in event) and (COL.END in event): + caption += f'between {event[COL.START]:%Y-%m-%d %H:%M} and ' + if f'{event[COL.START]:%Y-%m-%d}' == f'{event[COL.END]:%Y-%m-%d}': + caption += f'{event[COL.END]:%H:%M}\n' + elif f'{event[COL.START]:%Y-%m-}' == f'{event[COL.END]:%Y-%m-}': + caption += f'{event[COL.END]:%d %H:%M}\n' + else: + caption += f'{event[COL.END]:%Y-%m-%d %H:%M}\n' + + if COL.LP in event: + caption += f'with a total sum of {event[COL.LP]:0.1f} {unit}\n' + + if COL.DUR in event: + caption += f' and a duration of {timedelta_readable(event[COL.DUR])}' + + caption += '.\n' + + if COL.MAX_PERIOD in event: + caption += f' The maximum return period was {return_period_formatter(event[COL.MAX_PERIOD])} a\n' + + if COL.MAX_PERIOD_DURATION in event: + caption += f' at a duration of {minutes_readable(event[COL.MAX_PERIOD_DURATION])}.' + + return caption + + +def event_caption_ger(event, unit='mm'): + caption = 'Regenereignis\n' + if (COL.START in event) and (COL.END in event): + caption += f'zwischen {event[COL.START]:%Y-%m-%d %H:%M} und ' + if f'{event[COL.START]:%Y-%m-%d}' == f'{event[COL.END]:%Y-%m-%d}': + caption += f'{event[COL.END]:%H:%M}\n' + elif f'{event[COL.START]:%Y-%m-}' == f'{event[COL.END]:%Y-%m-}': + caption += f'{event[COL.END]:%d %H:%M}\n' + else: + caption += f'{event[COL.END]:%Y-%m-%d %H:%M}\n' + + if COL.LP in event: + caption += f'mit einer Regensumme von {event[COL.LP]:0.1f} {unit}\n' + + if COL.DUR in event: + caption += f' und einer Dauer von {timedelta_readable(event[COL.DUR])}' + + caption += '.\n' + + if COL.MAX_PERIOD in event: + caption += f' Die maximale Wiederkehrperiode war {return_period_formatter(event[COL.MAX_PERIOD])} a\n' + + if COL.MAX_PERIOD_DURATION in event: + caption += f' bei einer Dauerstufe von {minutes_readable(event[COL.MAX_PERIOD_DURATION])}.' + + return caption + + +def return_period_formatter(t): + if t < 1: + return '< 1' + elif t > 200: + return '$\\gg$ 100' + elif t > 100: + return '> 100' + else: + return f'{t:0.1f}' + + +
+[docs] +def timedelta_components_plus(td, min_freq='T'): + """Schaltjahre nicht miteinbezogen""" + l = [] + + # years, weeks + days_year = 365 + days_week = 7 + + for component, value in td.round(min_freq).components._asdict().items(): + if component == 'days': + years, value = value // days_year, value % days_year + l.append([int(years), 'years']) + + value -= years // 4 + + weeks, value = value // days_week, value % days_week + l.append([int(weeks), 'weeks']) + + l.append([value, component]) + return l
+ + + +def timedelta_components_readable(l, short=False, sep=', '): + s = sep.join( + ['{}{}{}'.format(v, '' if short else ' ', c[0] if short else (c if v > 1 else c[:-1])) for v, c in l if v > 0]) + if not short: + # replace last "," with "and" + s = ' and '.join(s.rsplit(sep, 1)) + return s + + +
+[docs] +def timedelta_readable(td, min_freq='T', short=False, sep=', '): + """Schaltjahre nicht miteinbezogen""" + return timedelta_components_readable(timedelta_components_plus(td, min_freq), short=short, sep=sep)
+ + + +def timedelta_readable2(d1, d2, min_freq='T', short=False, sep=', '): + td = d2 - d1 + + years = None + if td > Timedelta(days=365): + d2_new = d2.replace(year=d1.year) + + if d2_new < d1: + d2_new = d2_new.replace(year=d1.year + 1) + + years = d2.year - d2_new.year + + td = d2_new - d1 + + l = timedelta_components_plus(td, min_freq) + + if years is not None: + l[0][0] = years + + return timedelta_components_readable(l, short=short, sep=sep) +
+ +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/_modules/idf_analysis/parameter_formulations.html b/_modules/idf_analysis/parameter_formulations.html new file mode 100644 index 0000000..6a75ad2 --- /dev/null +++ b/_modules/idf_analysis/parameter_formulations.html @@ -0,0 +1,205 @@ + + + + + + + idf_analysis.parameter_formulations — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + +
+
+
+
+ +

Source code for idf_analysis.parameter_formulations

+import numpy as np
+
+from .definitions import APPROACH
+
+
+
+[docs] +def folded_log_formulation(duration, param, case, param_mean=None, duration_mean=None): + """ + + Args: + duration: + param: + case: + param_mean: + duration_mean: + + Returns: + + """ + if param_mean and duration_mean: + mean_ln_duration = np.log(duration_mean) + mean_ln_param = np.log(param_mean) + else: + param_mean = param.mean() + mean_ln_param = np.log(param).mean() + mean_ln_duration = np.log(duration).mean() + + divisor = ((np.log(duration) - mean_ln_duration) ** 2).sum() + + if case == APPROACH.LOG2: + # for the twofold formulation + b = ((np.log(param) - mean_ln_param) * (np.log(duration) - mean_ln_duration)).sum() / divisor + a = mean_ln_param - b * mean_ln_duration + + elif case == APPROACH.LOG1: + # for the onefold formulation + b = ((param - param_mean) * (np.log(duration) - mean_ln_duration)).sum() / divisor + a = param_mean - b * mean_ln_duration + + else: + raise NotImplementedError + + return float(a), float(b)
+ + + +
+[docs] +def hyperbolic_formulation(duration: np.array, param: np.array, a_start=20.0, b_start=15.0, param_mean=None, duration_mean=None): + """ + Computes the hyperbolic formulation using the given parameters. + + Args: + duration (np.array): Array of durations. + param (np.array): Array of parameters. + a_start (float): Initial value for 'a' parameter. + b_start (float): Initial value for 'b' parameter. + param_mean (float, optional): Mean value of parameters. Defaults to None. + duration_mean (float, optional): Mean value of durations. Defaults to None. + + Returns: + tuple[float, float]: Computed value of 'a' and 'b'. + """ + + def get_param(dur, par, a_, b_): + """ + Computes 'a' and 'b' parameters based on given durations and parameters. + + Args: + dur (np.array): Array of durations. + par (np.array): Array of parameters. + a_ (float): Current value of 'a' parameter. + b_ (float): Current value of 'b' parameter. + + Returns: + tuple[float, float]: Computed value of 'a' and 'b'. + """ + i = -a_ / (dur + b_) + if param_mean: + i_mean = - param_mean / duration_mean + param_mean_ = param_mean + else: + i_mean = i.mean() + param_mean_ = par.mean() + + b_ = ((par - param_mean_) * (i - i_mean)).sum() / ((i - i_mean) ** 2).sum() + a_ = param_mean_ - b_ * i_mean + return a_, b_ + + # ------------------------------------------------------------------------------------------------------------------ + iteration_steps = 0 + + a = a_start + b = b_start + + conditions = True + while conditions: + conditions = False + + a_s = a + b_s = b + a, b = get_param(duration, param, a, b) + conditions = (abs(a - a_s) > 0.005) or (abs(b - b_s) > 0.005) or conditions + a = (a + a_s) / 2 + b = (b + b_s) / 2 + + iteration_steps += 1 + return float(a), float(b)
+ + + +def hyperbolic_function(D, a, b): + return a * D / (D + b) + + +def hyperbolic_formulation_chatgpt_opt(duration: np.array, param: np.array, a_start=20.0, b_start=15.0, param_mean=None, duration_mean=None): + # TODO: param_mean and duration_mean for parameter - balance + from scipy.optimize import curve_fit + # Perform the curve fitting + initial_guess = [a_start, b_start] # initial guess for a and b + fit_params, _ = curve_fit(hyperbolic_function, duration, param, p0=initial_guess) + + # Extract the optimized parameter values + a_fit, b_fit = fit_params + return float(a_fit), float(b_fit) +
+ +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/_modules/idf_analysis/plot_helpers.html b/_modules/idf_analysis/plot_helpers.html new file mode 100644 index 0000000..1d506b1 --- /dev/null +++ b/_modules/idf_analysis/plot_helpers.html @@ -0,0 +1,190 @@ + + + + + + + idf_analysis.plot_helpers — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + +
+
+
+
+ +

Source code for idf_analysis.plot_helpers

+__author__ = "Markus Pichler"
+__credits__ = ["Markus Pichler"]
+__maintainer__ = "Markus Pichler"
+__email__ = "markus.pichler@tugraz.at"
+__version__ = "0.1"
+__license__ = "MIT"
+
+import pandas as pd
+
+from .definitions import COL
+from .little_helpers import duration_steps_readable
+from .sww_utils import guess_freq, rain_events, event_duration
+
+RETURN_PERIOD_COLORS = {
+    # 0.5: '#e0ffff',  # 'lightcyan',
+    1: '#00ffff',  # 'cyan',
+    2: '#add8e6',  # 'lightblue',
+    5: '#0000ff',  # 'blue',
+    10: '#ffff00',  # 'yellow',
+    20: '#ffa500',  # 'orange',
+    50: '#ff0000',  # 'red',
+    100: '#ff00ff',  # 'magenta',
+}
+
+
+
+[docs] +def idf_bar_axes(ax, idf_table, return_period_colors=RETURN_PERIOD_COLORS): + """ + create + + Args: + ax (matplotlib.pyplot.Axes): + idf_table (pandas.DataFrame): + return_period_colors (dict): color of each return period {return period: color} + + Returns: + matplotlib.pyplot.Axes: + """ + return_periods = list(return_period_colors.keys()) + color_return_period = list(return_period_colors.values()) + + # legend + from matplotlib.lines import Line2D + custom_lines = [Line2D([0], [0], color=c, lw=4) for c in color_return_period] + names = ['{}a'.format(t) for t in return_periods] + ax.legend(custom_lines, names, bbox_to_anchor=(0., 1.02, 1., .102), loc=3, ncol=len(color_return_period), + mode="expand", borderaxespad=0., title='return periods') + + duration_size = len(idf_table.columns) + # labels for the y axis + durations_index = range(duration_size) + dh = 1 + ax.set_yticks([i + dh/2 for i in durations_index], minor=True) + ax.set_yticks(list(durations_index), minor=False) + + ax.set_yticklabels(duration_steps_readable(idf_table.columns), minor=True) + ax.set_yticklabels([''] * duration_size, minor=False) + ax.set_ylabel('duration of the design rainfall') + + # for the relative start time + freq = guess_freq(idf_table.index) + start_period = idf_table.index[0].to_period(freq).ordinal + + # idf_table.index = idf_table.index - idf_table.index[0] + + min_duration = pd.Timedelta(minutes=1) + + for hi, d in enumerate(idf_table.columns): + tn = idf_table[d] + + for t in return_periods: + c = return_period_colors[t] + # not really a rain event, but the results are the same + # tab2 = rain_events(tn, ignore_rain_below=t, min_gap=pd.Timedelta(minutes=d)) + tab = rain_events(tn, ignore_rain_below=t, min_gap=freq) + # if tab.size != tab2.size: + # print() + if tab.empty: + continue + + if 1: + durations = ((event_duration(tab) + freq) / min_duration).tolist() + rel_starts = ((tab[COL.START] - idf_table.index[0]) / min_duration + start_period).tolist() + bar_x = list(zip(rel_starts, durations)) + else: + tab[COL.DUR] = event_duration(tab) / min_duration + bar_x = [(r[COL.START] / min_duration + start_period, r[COL.DUR]) for _, r in tab.iterrows()] + + ax.broken_barh(bar_x, (hi, dh), facecolors=c) + + ax.tick_params(axis='y', which='minor', length=0) + ax.grid(axis='y', which='major') + + ax.set_ylim(0, duration_size) + ax.set_xticklabels([]) + from matplotlib.ticker import NullFormatter + ax.xaxis.set_major_formatter(NullFormatter()) + + # --- + duration_steps = idf_table.columns.values + duration_steps_middle_to_long = duration_steps[duration_steps > 2*60] + if duration_steps_middle_to_long.size: + # (k)urzzeitige Summationen, d. h. der Dauerstufen von 5 Minuten bis 2 Stunden + ax.axhline(duration_steps.tolist().index(duration_steps_middle_to_long[0]), color='black') + duration_steps_long = duration_steps_middle_to_long[duration_steps_middle_to_long > 3*60*24] + if duration_steps_long.size: + # (m)ittelfristige Summationen, d. h. der Dauerstufen von 3 Stunden bis 3 Tagen. + ax.axhline(duration_steps.tolist().index(duration_steps_long[0]), color='black') + return ax
+ +
+ +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/_modules/idf_analysis/sww_utils.html b/_modules/idf_analysis/sww_utils.html new file mode 100644 index 0000000..2fbf445 --- /dev/null +++ b/_modules/idf_analysis/sww_utils.html @@ -0,0 +1,321 @@ + + + + + + + idf_analysis.sww_utils — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + +
+
+
+
+ +

Source code for idf_analysis.sww_utils

+__author__ = "David Camhy, Markus Pichler"
+__copyright__ = "Copyright 2018, University of Technology Graz"
+__credits__ = ["David Camhy", "Markus Pichler"]
+__license__ = "MIT"
+__version__ = "1.0.0"
+__maintainer__ = "David Camhy, Markus Pichler"
+
+import numpy as np
+import pandas as pd
+from pandas.tseries.frequencies import to_offset
+
+from .definitions import COL
+
+
+
+[docs] +class IdfError(Exception): + """Some Error Within this Package"""
+ + + +######################################################################################################################## +
+[docs] +def guess_freq(date_time_index, default=pd.Timedelta(minutes=1)): + """ + guess the frequency by evaluating the most often frequency + + Args: + date_time_index (pandas.DatetimeIndex): index of a time-series + default (pandas.Timedelta): + + Returns: + pandas.DateOffset: frequency of the date-time-index + """ + freq = date_time_index.freq + if pd.notnull(freq): + return to_offset(freq) + + if not len(date_time_index) <= 3: + freq = pd.infer_freq(date_time_index) # 'T' + + if pd.notnull(freq): + return to_offset(freq) + + delta_series = date_time_index.to_series().diff(periods=1).bfill() # .fillna(method='backfill') + counts = delta_series.value_counts() + counts.drop(pd.Timedelta(minutes=0), errors='ignore') + + if counts.empty: + delta = default + else: + delta = counts.index[0] + if delta == pd.Timedelta(minutes=0): + delta = default + else: + delta = default + + return to_offset(delta)
+ + + +######################################################################################################################## +def year_delta(years): + return pd.Timedelta(days=365.25 * years) + + +######################################################################################################################## +
+[docs] +def rain_events(series, ignore_rain_below=0.01, min_gap=pd.Timedelta(hours=4)): + """ + get rain events as a table with start and end times + + Args: + series (pandas.Series): rain series + ignore_rain_below (float): where it is considered as rain + min_gap (pandas.Timedelta): 4 hours of no rain between events + + Returns: + pandas.DataFrame: table of the rain events + """ + # best OKOSTRA adjustment with 0.0 + # by ignoring 0.1 mm the results are getting bigger + + # remove values below a from the database + temp = series[series >= ignore_rain_below].index.to_series() + + if temp.empty: + return pd.DataFrame() + + # 4 hours of no rain between events + bool_end = temp.diff(periods=-1) < -min_gap + bool_end.iloc[-1] = True + + bool_start = temp.diff() > min_gap + bool_start.iloc[0] = True + + events = pd.DataFrame.from_dict({ + COL.START: temp[bool_start].to_list(), + COL.END: temp[bool_end].to_list(), + }) + return events
+ + + +
+[docs] +def event_number_to_series(events, index): + """ + make a time-series where the value of the event number is paste to the <index> + + Args: + events (pandas.DataFrame): + index (pandas.DatetimeIndex): + + Returns: + pandas.Series: + """ + ts = pd.Series(index=index) + + events_dict = events.to_dict(orient='index') + for event_no, event in events_dict.items(): + ts[event[COL.START]: event[COL.END]] = event_no + + return ts
+ + + +######################################################################################################################## +
+[docs] +def agg_events(events, series, agg='sum'): + """ + + Args: + events (pandas.DataFrame): table of events + series (pandas.Series): time-series data + agg (str | function): aggregation of time-series + + Returns: + numpy.ndarray: result of function of every event + """ + if events.empty: + return np.array([]) + + if events.index.size > 3500: + res = series.groupby(event_number_to_series(events, series.index)).agg(agg).values + else: + # res = [] + # for _, event in events.iterrows(): + # res.append(series[event[COL.START]:event[COL.END]].agg(agg)) + res = events.apply(lambda event: series[event[COL.START]:event[COL.END]].agg(agg), axis=1).values + return res
+ + + +######################################################################################################################## +
+[docs] +def event_duration(events): + """ + calculate the event duration + + Args: + events (pandas.DataFrame): table of events with COL.START and COL.END times + + Returns: + pandas.Series: duration of each event + """ + return events[COL.END] - events[COL.START]
+ + + +######################################################################################################################## +
+[docs] +def rain_bar_plot(rain, ax=None, color='#1E88E5', reverse=False, step='post', joinstyle='miter', capstyle='butt'): + """ + Make a standard precipitation/rain plot. + + Args: + rain (pandas.Series): + ax (matplotlib.axes.Axes): + color (str): + reverse (bool): + step (str): 'mid' 'post' pre' + + Returns: + matplotlib.axes.Axes: rain plot + """ + ax = rain.plot(ax=ax, drawstyle=f'steps-{step}', color=color, solid_capstyle=capstyle, solid_joinstyle=joinstyle, + lw=0) + ax.fill_between(rain.index, rain.values, 0, step=step, zorder=1000, color=color, capstyle=capstyle, + joinstyle=joinstyle) + + if reverse: + # ax.set_ylim(top=0, bottom=rain.max() * 1.1) + ax.set_ylim(bottom=0) + ax.invert_yaxis() + else: + ax.set_ylim(bottom=0) + + return ax
+ + + +######################################################################################################################## +
+[docs] +def resample_rain_series(series): + """ + + Args: + series (pandas.Series): + + Returns: + tuple[pandas.Series, int]: the resampled series AND the final frequency in minutes + """ + resample_minutes = ( + (pd.Timedelta(hours=5), 1), + (pd.Timedelta(hours=12), 2), + (pd.Timedelta(days=1), 5), + (pd.Timedelta(days=2), 10), + (pd.Timedelta(days=3), 15), + (pd.Timedelta(days=4), 20) + ) + + dur = series.index[-1] - series.index[0] + freq = guess_freq(series.index) + + minutes = 1 + for duration_limit, minutes in resample_minutes: + if dur < duration_limit: + break + + if freq.delta > pd.Timedelta(minutes=minutes): + return series, int(freq / pd.Timedelta(minutes=1)) + + # print('resample_rain_series: ', dur, duration_limit, minutes) + return series.resample('{}T'.format(minutes)).sum(), minutes
+ +
+ +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/_modules/index.html b/_modules/index.html new file mode 100644 index 0000000..8f7b95b --- /dev/null +++ b/_modules/index.html @@ -0,0 +1,85 @@ + + + + + + + Overview: module code — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + +
+ + +
+
+ + + + \ No newline at end of file diff --git a/_sources/README.md.txt b/_sources/README.md.txt new file mode 100644 index 0000000..a480495 --- /dev/null +++ b/_sources/README.md.txt @@ -0,0 +1,210 @@ +© [Institute of Urban Water Management and Landscape Water Engineering](https://www.sww.tugraz.at), [Graz University of Technology](https://www.tugraz.at/home/) and [Markus Pichler](mailto:markus.pichler@tugraz.at) + + +# Intensity duration frequency analysis (based on KOSTRA) + + +[![license](https://img.shields.io/github/license/markuspic/intensity_duration_frequency_analysis.svg?style=flat)](https://github.com/MarkusPic/intensity_duration_frequency_analysis/blob/master/LICENSE) +[![PyPI](https://img.shields.io/pypi/v/idf-analysis.svg)](https://pypi.python.org/pypi/idf-analysis) + +[![PyPI - Downloads](https://img.shields.io/pypi/dd/idf-analysis)](https://pypi.python.org/pypi/idf-analysis) +[![PyPI - Downloads](https://img.shields.io/pypi/dw/idf-analysis)](https://pypi.python.org/pypi/idf-analysis) +[![PyPI - Downloads](https://img.shields.io/pypi/dm/idf-analysis)](https://pypi.python.org/pypi/idf-analysis) + + +Heavy rain as a function of the duration and the return period acc. to [DWA-A 531 (2012)](http://www.dwa.de/dwa/shop/shop.nsf/Produktanzeige?openform&produktid=P-DWAA-8XMUY2). +This program reads the measurement data of the rainfall +and calculates the distribution of the design rainfall as a function of the return period and the duration +for duration steps up to 12 hours (and more) and return period in a range of '0.5a ≤ T_n ≤ 100a'. + +The guideline was used in the application [KOSTRA-DWD](https://www.dwd.de/DE/leistungen/kostra_dwd_rasterwerte/kostra_dwd_rasterwerte.html). + +---- + +> Heavy rainfall data are among the most important planning parameters in water management and hydraulic engineering practice. In urban areas, for example, they are required as initial parameters for the design of rainwater drainage systems and in watercourses for the dimensioning of hydraulic structures. The accuracy of the target values of the corresponding calculation methods and models depends crucially on their accuracy. Their overestimation can lead to considerable additional costs in the structural implementation, their underestimation to an unacceptable, excessive residual risk of failure during the operation of water management and hydraulic engineering facilities. Despite the area-wide availability of heavy rainfall data through "Coordinated Heavy Rainfall Regionalisation Analyses" (KOSTRA), there is still a need for local station analyses, e.g. to evaluate the now extended data series, to evaluate recent developments or to classify local peculiarities in comparison to the KOSTRA data. However, this is only possible without restrictions if the methodological approach recommended in the worksheet is followed. In the DWA-A 531 worksheet, the main features of the ATVA 121 worksheet published in 1985 and of the identical DVWK-R 124 booklet of the DVWK Rules for Water Management "Heavy Rain Evaluation after Return Time and Duration" are retained. The aim of the revision is to take account of current developments without, however, calling into question the standardisation of the procedure for statistical heavy rain analyses which was intended at the time. + +**[DWA-A 531 (2012)](http://www.dwa.de/dwa/shop/shop.nsf/Produktanzeige?openform&produktid=P-DWAA-8XMUY2) Translated with www.DeepL.com/Translator** + +---- + +> An intensity-duration-frequency curve (IDF curve) is a mathematical function that relates the rainfall intensity with its duration and frequency of occurrence. These curves are commonly used in hydrology for flood forecasting and civil engineering for urban drainage design. However, the IDF curves are also analysed in hydrometeorology because of the interest in the time concentration or time-structure of the rainfall. + +**[Wikipedia](https://en.wikipedia.org/wiki/Intensity-duration-frequency_curve)** + +---- + +This package was developed by [Markus Pichler](mailto:markus.pichler@tugraz.at) during his bachelor thesis and finalised it in the course of his employment at the [Institute of Urban Water Management and Landscape Water Engineering](https://www.sww.tugraz.at). + +## Documentation + +Read the docs [here 📖](https://markuspic.github.io/intensity_duration_frequency_analysis). + +## Installation + +This package is written in Python3. (use a version > 3.5) + +``` +pip install idf-analysis +``` + +Add the following tags to the command for special options: + +- ```--user```: To install the package only for the local user account (no admin rights needed) +- ```--upgrade```: To update the package + +### Windows + +You have to install python first (i.e. the original python from the [website](https://www.python.org/downloads/)). + +To use the command-line-tool, it is advisable to add the path to your Python binary to the environment variables [^path1]. +There is also an option during the installation to add python to the PATH automatically. [^path2] + +[^path1]: https://geek-university.com/python/add-python-to-the-windows-path/ +[^path2]: https://datatofish.com/add-python-to-windows-path/ + + +### Linux/Unix + +Python is pre-installed on most operating systems (as you probably knew). + +### Dependencies + +Packages required for this program will be installed with pip during the installation process and can be seen +in the [`requirements.txt`](https://github.com/MarkusPic/intensity_duration_frequency_analysis/blob/master/requirements.txt) file. + +## Usage + +The documentation of the python-API can be found [here](https://markuspic.github.io/intensity_duration_frequency_analysis/api.html). + +## Commandline tool + +The following commands show the usage for Linux/Unix systems. +To use these features on Windows you have to add ```python -m``` before each command. + +To start the script use following commands in the terminal/Prompt + +```idf_analysis``` + +> ```idf_analysis -h``` + +``` +usage: __main__.py [-h] -i INPUT + [-ws {ATV-A_121,DWA-A_531,DWA-A_531_advektiv}] + [-kind {partial,annual}] [-t {>= 0.5 a and <= 100 a}] + [-d {>= 5 min and <= 8640 min}] [-r {>= 0 L/s*ha}] + [-h_N {>= 0 mm}] [--r_720_1] [--plot] [--export_table] + +heavy rain as a function of the duration and the return period acc. to DWA-A +531 (2012) All files will be saved in the same directory of the input file but +in a subfolder called like the inputfile + "_idf_data". Inside this folder a +file called "idf_parameter.yaml"-file will be saved and contains interim- +calculation-results and will be automatically reloaded on the next call. + +optional arguments: + -h, --help show this help message and exit + -i INPUT, --input INPUT + input file with the rain time-series (csv or parquet) + -ws {ATV-A_121,DWA-A_531,DWA-A_531_advektiv}, --worksheet {ATV-A_121,DWA-A_531,DWA-A_531_advektiv} + From which worksheet the recommendations for + calculating the parameters should be taken. + -kind {partial,annual}, --series_kind {partial,annual} + The kind of series used for the calculation. + (Calculation with partial series is more precise and + recommended.) + -t {>= 0.5 a and <= 100 a}, --return_period {>= 0.5 a and <= 100 a} + return period in years (If two of the three variables + (rainfall (height or flow-rate), duration, return + period) are given, the third variable is calculated.) + -d {>= 5 min and <= 8640 min}, --duration {>= 5 min and <= 8640 min} + duration in minutes (If two of the three variables + (rainfall (height or flow-rate), duration, return + period) are given, the third variable is calculated.) + -r {>= 0 L/(s*ha)}, --flow_rate_of_rainfall {>= 0 L/(s*ha)} + rainfall in Liter/(s * ha) (If two of the three + variables (rainfall (height or flow-rate), duration, + return period) are given, the third variable is + calculated.) + -h_N {>= 0 mm}, --height_of_rainfall {>= 0 mm} + rainfall in mm or Liter/m^2 (If two of the three + variables (rainfall (height or flow-rate), duration, + return period) are given, the third variable is + calculated.) + --r_720_1 design rainfall with a duration of 720 minutes (=12 h) + and a return period of 1 year + --plot get a plot of the idf relationship + --export_table get a table of the most frequent used values +``` + +## Example + +[Example Jupyter notebook for the commandline](https://markuspic.github.io/intensity_duration_frequency_analysis/examples/example_commandline) + +[Example Jupyter notebook for the python api](https://markuspic.github.io/intensity_duration_frequency_analysis/examples/example_python_api) + +[Example python skript](https://markuspic.github.io/intensity_duration_frequency_analysis/examples/example_python_api.py) + + +### Example Files + +[Interim Results of the idf analysis](https://markuspic.github.io/intensity_duration_frequency_analysis/examples/ehyd_112086_idf_data/idf_parameters.yaml) + +### Example Plot + +![IDF-Curves-Plot](https://markuspic.github.io/intensity_duration_frequency_analysis/examples/ehyd_112086_idf_data/idf_curves_plot.png) + +### Example IDF table + +[IDF-Table](https://markuspic.github.io/intensity_duration_frequency_analysis/examples/ehyd_112086_idf_data/idf_table_UNIX.csv) + + +| return period in a
duration in min | 1 | 2 | 3 | 5 | 10 | 20 | 25 | 30 | 50 | 75 | 100 | +|--------------------------------------:|------:|-------:|-------:|-------:|-------:|-------:|-------:|-------:|-------:|-------:|-------:| +| 5 | 9.39 | 10.97 | 11.89 | 13.04 | 14.61 | 16.19 | 16.69 | 17.11 | 18.26 | 19.18 | 19.83 | +| 10 | 15.15 | 17.62 | 19.06 | 20.88 | 23.35 | 25.82 | 26.62 | 27.27 | 29.09 | 30.54 | 31.56 | +| 15 | 19.03 | 22.25 | 24.13 | 26.51 | 29.72 | 32.94 | 33.98 | 34.83 | 37.20 | 39.08 | 40.42 | +| 20 | 21.83 | 25.71 | 27.99 | 30.85 | 34.73 | 38.62 | 39.87 | 40.89 | 43.75 | 46.02 | 47.63 | +| 30 | 25.60 | 30.66 | 33.62 | 37.35 | 42.41 | 47.47 | 49.10 | 50.43 | 54.16 | 57.12 | 59.22 | +| 45 | 28.92 | 35.51 | 39.37 | 44.23 | 50.83 | 57.42 | 59.54 | 61.28 | 66.14 | 69.99 | 72.73 | +| 60 | 30.93 | 38.89 | 43.54 | 49.40 | 57.36 | 65.31 | 67.88 | 69.97 | 75.83 | 80.49 | 83.79 | +| 90 | 33.37 | 41.74 | 46.64 | 52.80 | 61.17 | 69.54 | 72.23 | 74.43 | 80.60 | 85.49 | 88.96 | +| 180 | 38.01 | 47.13 | 52.46 | 59.18 | 68.30 | 77.42 | 80.36 | 82.76 | 89.48 | 94.81 | 98.60 | +| 270 | 41.01 | 50.60 | 56.21 | 63.28 | 72.87 | 82.46 | 85.55 | 88.07 | 95.14 | 100.75 | 104.73 | +| 360 | 43.29 | 53.23 | 59.04 | 66.37 | 76.31 | 86.25 | 89.45 | 92.06 | 99.39 | 105.20 | 109.33 | +| 450 | 45.14 | 55.36 | 61.33 | 68.87 | 79.08 | 89.30 | 92.59 | 95.28 | 102.81 | 108.79 | 113.03 | +| 600 | 47.64 | 58.23 | 64.43 | 72.23 | 82.82 | 93.41 | 96.82 | 99.61 | 107.42 | 113.61 | 118.01 | +| 720 | 49.29 | 60.13 | 66.47 | 74.45 | 85.29 | 96.12 | 99.61 | 102.46 | 110.44 | 116.78 | 121.28 | +| 1080 | 54.41 | 64.97 | 71.15 | 78.94 | 89.50 | 100.06 | 103.46 | 106.24 | 114.02 | 120.20 | 124.58 | +| 1440 | 58.02 | 67.72 | 73.39 | 80.54 | 90.24 | 99.93 | 103.05 | 105.61 | 112.75 | 118.42 | 122.45 | +| 2880 | 66.70 | 77.41 | 83.68 | 91.57 | 102.29 | 113.00 | 116.45 | 119.26 | 127.16 | 133.42 | 137.87 | +| 4320 | 71.93 | 85.72 | 93.78 | 103.95 | 117.73 | 131.52 | 135.96 | 139.58 | 149.75 | 157.81 | 163.53 | +| 5760 | 78.95 | 95.65 | 105.42 | 117.72 | 134.43 | 151.13 | 156.50 | 160.89 | 173.20 | 182.97 | 189.90 | +| 7200 | 83.53 | 101.38 | 111.82 | 124.98 | 142.83 | 160.68 | 166.43 | 171.12 | 184.28 | 194.72 | 202.13 | +| 8640 | 85.38 | 104.95 | 116.40 | 130.82 | 150.38 | 169.95 | 176.25 | 181.40 | 195.82 | 207.27 | 215.39 | + +## Background + +Pseudocode for the parameter calculation. + +``` +For every duration step + calculating event sums + + if using annual event series: # only recommeded for measurements longer than 20 year + converting every max event sum per year to a series + calculating parameters u and w using the gumbel distribution + + elif using partial event series: + converting the n (approximatly 2.72 x measurement duration in years) biggest event sums to a series + calculating parameters u and w using the exponential distribution + +Splitting IDF curve formulation in to several duration ranges +For each duration range: + For each parameter (u and w): + balancing the parameter over all duation steps (in the range) using a given formulation (creating parameters a and b) + # one-folded-logaritmic | two-folded-logarithmic | hyperbolic + +u(D) = f(a_u, b_u, D) +w(D) = f(a_w, b_w, D) + +h(D,Tn) = u(D) + w(D) * ln(Tn) +``` diff --git a/_sources/api.rst.txt b/_sources/api.rst.txt new file mode 100644 index 0000000..10ed9ad --- /dev/null +++ b/_sources/api.rst.txt @@ -0,0 +1,10 @@ +-------------------- +API +-------------------- + +Main Function +-------------------- + +.. autoclass:: idf_analysis.idf_class.IntensityDurationFrequencyAnalyse + :members: + :no-undoc-members: diff --git a/_sources/base_functions.rst.txt b/_sources/base_functions.rst.txt new file mode 100644 index 0000000..9dfff6b --- /dev/null +++ b/_sources/base_functions.rst.txt @@ -0,0 +1,59 @@ +-------------------- +Base Functions +-------------------- + +Calculation Methods +------------------- + +Functions to analyse the precipitations series based on the core method. + + +.. automodule:: idf_analysis.event_series_analysis + :members: + :no-undoc-members: + +.. automodule:: idf_analysis.parameter_formulations + :members: + :no-undoc-members: + +.. autoclass:: idf_analysis.idf_backend.IdfParameters + :members: + :no-undoc-members: + +Input and Output +---------------- + +Function for reading and writing files. + +.. automodule:: idf_analysis.in_out + :members: + :no-undoc-members: + +SWW Utils +--------- + +Functions to help analyse data in a general way. +Most of this function have been developed on the +institute of urban water management at the university of technology Graz. + +.. automodule:: idf_analysis.sww_utils + :members: + :no-undoc-members: + +Converter helper functions +-------------------------- + +Functions to help convert things and units. + +.. automodule:: idf_analysis.little_helpers + :members: + :no-undoc-members: + +Plotting helper functions +------------------------- + +Functions to add or manipulate plotting figures. + +.. automodule:: idf_analysis.plot_helpers + :members: + :no-undoc-members: diff --git a/_sources/examples/example_commandline.ipynb.txt b/_sources/examples/example_commandline.ipynb.txt new file mode 100644 index 0000000..4ae71fd --- /dev/null +++ b/_sources/examples/example_commandline.ipynb.txt @@ -0,0 +1,255 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# Example Commandline Use" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "usage: __main__.py [-h] -i INPUT\n", + " [-ws {ATV-A_121,DWA-A_531,DWA-A_531_advektiv}]\n", + " [-kind {partial,annual}] [-t {>= 0.5 a and <= 100 a}]\n", + " [-d {>= 5 min and <= 8640 min}] [-r {>= 0 L/s*ha}]\n", + " [-h_N {>= 0 mm}] [--r_720_1] [--plot] [--export_table]\n", + "\n", + "heavy rain as a function of the duration and the return period acc. to DWA-A\n", + "531 (2012) All files will be saved in the same directory of the input file but\n", + "in a subfolder called like the inputfile + \"_idf_data\". Inside this folder a\n", + "file called \"idf_parameter.yaml\"-file will be saved and contains interim-\n", + "calculation-results and will be automatically reloaded on the next call.\n", + "\n", + "optional arguments:\n", + " -h, --help show this help message and exit\n", + " -i INPUT, --input INPUT\n", + " input file with the rain time-series (csv or parquet)\n", + " -ws {ATV-A_121,DWA-A_531,DWA-A_531_advektiv}, --worksheet {ATV-A_121,DWA-A_531,DWA-A_531_advektiv}\n", + " From which worksheet the recommendations for\n", + " calculating the parameters should be taken.\n", + " -kind {partial,annual}, --series_kind {partial,annual}\n", + " The kind of series used for the calculation.\n", + " (Calculation with partial series is more precise and\n", + " recommended.)\n", + " -t {>= 0.5 a and <= 100 a}, --return_period {>= 0.5 a and <= 100 a}\n", + " return period in years (If two of the three variables\n", + " (rainfall (height or flow-rate), duration, return\n", + " period) are given, the third variable is calculated.)\n", + " -d {>= 5 min and <= 8640 min}, --duration {>= 5 min and <= 8640 min}\n", + " duration in minutes (If two of the three variables\n", + " (rainfall (height or flow-rate), duration, return\n", + " period) are given, the third variable is calculated.)\n", + " -r {>= 0 L/(s*ha)}, --flow_rate_of_rainfall {>= 0 L/(s*ha)}\n", + " rainfall in Liter/(s * ha) (If two of the three\n", + " variables (rainfall (height or flow-rate), duration,\n", + " return period) are given, the third variable is\n", + " calculated.)\n", + " -h_N {>= 0 mm}, --height_of_rainfall {>= 0 mm}\n", + " rainfall in mm or Liter/m^2 (If two of the three\n", + " variables (rainfall (height or flow-rate), duration,\n", + " return period) are given, the third variable is\n", + " calculated.)\n", + " --r_720_1 design rainfall with a duration of 720 minutes (=12 h)\n", + " and a return period of 1 year\n", + " --plot get a plot of the idf relationship\n", + " --export_table get a table of the most frequent used values\n" + ] + } + ], + "source": [ + "! python -m idf_analysis -h" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I used the rain-time-series from ehyd.gv.at with the ID 112086 (Graz-Andritz)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using the subfolder \"ehyd_112086_idf_data\" for the interim- and final-results.\n", + "Found existing interim-results in \"ehyd_112086_idf_data\\idf_parameters.yaml\" and using them for calculations.\n" + ] + } + ], + "source": [ + "! python -m idf_analysis -i ehyd_112086.parquet" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using the subfolder \"ehyd_112086_idf_data\" for the interim- and final-results.\n", + "Found existing interim-results in \"ehyd_112086_idf_data\\idf_parameters.yaml\" and using them for calculations.\n", + "Resultierende Regenhöhe h_N(T_n=1.0a, D=720.0min) = 49.29 mm\n", + "Resultierende Regenspende r_N(T_n=1.0a, D=720.0min) = 11.41 L/(s*ha)\n" + ] + } + ], + "source": [ + "! python -m idf_analysis -i ehyd_112086.parquet --r_720_1" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using the subfolder \"ehyd_112086_idf_data\" for the interim- and final-results.\n", + "Found existing interim-results in \"ehyd_112086_idf_data\\idf_parameters.yaml\" and using them for calculations.\n", + "Resultierende Regenhöhe h_N(T_n=1.0a, D=720.0min) = 49.29 mm\n", + "Resultierende Regenspende r_N(T_n=1.0a, D=720.0min) = 11.41 L/(s*ha)\n" + ] + } + ], + "source": [ + "! python -m idf_analysis -i ehyd_112086.parquet -d 720 -t 1" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using the subfolder \"ehyd_112086_idf_data\" for the interim- and final-results.\n", + "Found existing interim-results in \"ehyd_112086_idf_data\\idf_parameters.yaml\" and using them for calculations.\n", + "The return period is 2.0 years.\n", + "Resultierende Regenhöhe h_N(T_n=2.0a, D=720.0min) = 60.00 mm\n", + "Resultierende Regenspende r_N(T_n=2.0a, D=720.0min) = 13.89 L/(s*ha)\n" + ] + } + ], + "source": [ + "! python -m idf_analysis -i ehyd_112086.parquet -d 720 -h_N 60" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! python -m idf_analysis -i ehyd_112086.parquet -t 5 -t 15" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using the subfolder \"ehyd_112086_idf_data\" for the interim- and final-results.\n", + "Found existing interim-results in \"ehyd_112086_idf_data\\idf_parameters.yaml\" and using them for calculations.\n", + "Created the IDF-curves-plot and saved the file as \"ehyd_112086_idf_data\\idf__curves_plot.png\".\n" + ] + } + ], + "source": [ + "! python -m idf_analysis -i ehyd_112086.parquet --plot" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using the subfolder \"ehyd_112086_idf_data\" for the interim- and final-results.\n", + "Found existing interim-results in \"ehyd_112086_idf_data\\idf_parameters.yaml\" and using them for calculations.\n", + "return period (a) 1 2 3 5 10 20 25 30 50 75 100\n", + "frequency (1/a) 1.000 0.500 0.333 0.200 0.100 0.050 0.040 0.033 0.020 0.013 0.010\n", + "duration (min) \n", + "5.0 9.39 10.97 11.89 13.04 14.61 16.19 16.69 17.11 18.26 19.18 19.83\n", + "10.0 15.15 17.62 19.06 20.88 23.35 25.82 26.62 27.27 29.09 30.54 31.56\n", + "15.0 19.03 22.25 24.13 26.51 29.72 32.94 33.98 34.83 37.20 39.08 40.42\n", + "20.0 21.83 25.71 27.99 30.85 34.73 38.62 39.87 40.89 43.75 46.02 47.63\n", + "30.0 25.60 30.66 33.62 37.35 42.41 47.47 49.10 50.43 54.16 57.12 59.22\n", + "45.0 28.92 35.51 39.37 44.23 50.83 57.42 59.54 61.28 66.14 69.99 72.73\n", + "60.0 30.93 38.89 43.54 49.40 57.36 65.31 67.88 69.97 75.83 80.49 83.79\n", + "90.0 33.37 41.74 46.64 52.80 61.17 69.54 72.23 74.43 80.60 85.49 88.96\n", + "180.0 38.01 47.13 52.46 59.18 68.30 77.42 80.36 82.76 89.48 94.81 98.60\n", + "270.0 41.01 50.60 56.21 63.28 72.87 82.46 85.55 88.07 95.14 100.75 104.73\n", + "360.0 43.29 53.23 59.04 66.37 76.31 86.25 89.45 92.06 99.39 105.20 109.33\n", + "450.0 45.14 55.36 61.33 68.87 79.08 89.30 92.59 95.28 102.81 108.79 113.03\n", + "600.0 47.64 58.23 64.43 72.23 82.82 93.41 96.82 99.61 107.42 113.61 118.01\n", + "720.0 49.29 60.13 66.47 74.45 85.29 96.12 99.61 102.46 110.44 116.78 121.28\n", + "1080.0 54.41 64.97 71.15 78.94 89.50 100.06 103.46 106.24 114.02 120.20 124.58\n", + "1440.0 58.02 67.72 73.39 80.54 90.24 99.93 103.05 105.61 112.75 118.42 122.45\n", + "2880.0 66.70 77.41 83.68 91.57 102.29 113.00 116.45 119.26 127.16 133.42 137.87\n", + "4320.0 71.93 85.72 93.78 103.95 117.73 131.52 135.96 139.58 149.75 157.81 163.53\n", + "5760.0 78.95 95.65 105.42 117.72 134.43 151.13 156.50 160.89 173.20 182.97 189.90\n", + "7200.0 83.53 101.38 111.82 124.98 142.83 160.68 166.43 171.12 184.28 194.72 202.13\n", + "8640.0 85.38 104.95 116.40 130.82 150.38 169.95 176.25 181.40 195.82 207.27 215.39\n", + "Created the IDF-curves-plot and saved the file as \"ehyd_112086_idf_data\\idf_table.csv\".\n" + ] + } + ], + "source": [ + "! python -m idf_analysis -i ehyd_112086.parquet --export_table" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/_sources/examples/example_heavy_rainfall_index.ipynb.txt b/_sources/examples/example_heavy_rainfall_index.ipynb.txt new file mode 100644 index 0000000..d80d0c2 --- /dev/null +++ b/_sources/examples/example_heavy_rainfall_index.ipynb.txt @@ -0,0 +1,442 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# Example for Heavy Rainfall Index" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "markdown", + "source": [ + "Based on the IntensityDurationFrequencyAnalysis, the HeavyRainIndexAnalysis enables the creation of location-dependent heavy rain indices according to the methods of Schmitt, Mudersbach and also those of Krüger and Pfister.\n", + "Furthermore, the possibility of creating heavy rain index curves according to the Krüger and Pfister method was included and implemented for the other two methods. Thus, heavy rainfall index curves can be compared with each other. Furthermore, it is possible to assign individual rain events to a heavy rain index using existing rain data." + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from matplotlib.colors import ListedColormap\n", + "from idf_analysis.definitions import METHOD, SERIES, COL\n", + "from idf_analysis.little_helpers import minutes_readable\n", + "from idf_analysis.sww_utils import rain_events, event_duration, agg_events\n", + "from idf_analysis.heavy_rainfall_index import HeavyRainfallIndexAnalyse\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from os import path\n", + "\n", + "%matplotlib inline\n", + "plt.style.use('fast')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Implemented Methods for the HeavyRainIndexAnalysis: \n", + "SCHMITT = 'Schmitt' \n", + "KRUEGER_PFISTER = 'KruegerPfister' \n", + "MUDERSBACH = 'Mudersbach'" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "hri = HeavyRainfallIndexAnalyse(method=HeavyRainfallIndexAnalyse.METHODS.KRUEGER_PFISTER,\n", + " series_kind=SERIES.PARTIAL, worksheet=METHOD.KOSTRA, extended_durations=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "cmap = ListedColormap([(1,1,1)] + list(hri.indices_color.values()))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "data = pd.read_parquet('ehyd_112086.parquet')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "output_directory = 'Ergebnisse'" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "hri.set_series(data['precipitation'])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "hri.auto_save_parameters(path.join(output_directory, 'idf_parameters.yaml'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Heavy rainfall index-matrix is created with regard to the individual procedures for SRI generation" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "", + "text/html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Return Period in a1235102025305075100
duration in min           
5.000001111111
10.000011111222
15.000011122223
20.000111222233
30.000111222334
45.001112233445
60.001112333455
90.001112334456
120.001112334556
180.001112344566
240.001122344566
360.001123444567
540.001123445677
720.001123445678
1080.001123455678
1440.001223455678
2880.011234556789
4320.0112346678910
5760.01123567891112
7200.012235788101112
8640.012235789101212
\n" + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hri.interim_sri_table().style.background_gradient(cmap=cmap, vmin=1, vmax=12)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An auxiliary table must be generated for the creation of the heavy rain index-curves. Here, the rainfall heights are shown depending on the duration and the heavy rain index." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "", + "text/html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
SRI123456789101112
duration in min            
5.017.925.330.935.739.943.847.350.553.656.559.261.9
10.022.531.939.145.150.455.259.763.867.671.374.878.1
15.025.536.144.251.157.162.567.672.276.680.784.788.5
20.027.739.248.055.562.067.973.478.583.287.792.096.1
30.031.043.853.661.969.275.881.987.692.997.9102.7107.2
45.034.348.659.568.776.884.190.897.1103.0108.6113.9118.9
60.036.952.263.973.882.590.397.6104.3110.6116.6122.3127.7
90.038.053.765.875.984.993.0100.4107.4113.9120.0125.9131.5
120.038.854.867.177.586.794.9102.5109.6116.3122.6128.5134.3
180.039.956.469.179.889.297.7105.6112.9119.7126.2132.3138.2
240.040.757.670.681.591.199.8107.8115.2122.2128.8135.1141.1
360.042.059.372.783.993.8102.8111.0118.7125.9132.7139.2145.3
540.043.261.174.886.496.6105.9114.3122.2129.6136.7143.3149.7
720.044.162.476.488.398.7108.1116.8124.8132.4139.6146.4152.9
1080.044.763.277.489.399.9109.4118.2126.4134.0141.3148.2154.8
1440.044.362.676.788.699.0108.5117.2125.3132.9140.1146.9153.4
2880.047.066.581.494.0105.1115.1124.3132.9141.0148.6155.9162.8
4320.051.272.488.7102.4114.4125.4135.4144.8153.5161.9169.8177.3
5760.055.278.095.5110.3123.3135.1145.9156.0165.5174.4182.9191.1
7200.056.980.598.6113.8127.2139.4150.6160.9170.7179.9188.7197.1
8640.058.783.1101.7117.5131.3143.9155.4166.1176.2185.8194.8203.5
\n" + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hri.result_sri_table().style.background_gradient(cmap=cmap, vmin=0, vmax=700).format(\"{:.1f}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using heavy rainfall index curves, the necessary rainfall heights can be read off depending on the respective index." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAEYCAYAAAC5q4bCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAClpklEQVR4nOyddZgcVdaH31vVMj3uk5EkE3dXSII7LO4sBAjOLm4LLLrILm4fi8tiCwsLLA5BQ9zdM0kmmYxre1Xd74/bY5lJMpZMpN7n6adaqm/d6pn+1elzjwgpJTY2NjY2+ydaZ0/AxsbGxmb3YYu8jY2NzX6MLfI2NjY2+zG2yNvY2Njsx9gib2NjY7Mf4+jsCXQkKSkpskePHnvseIZhAOBwtP1jbO0YnXHMjhjDPubuOV5HjLGvHrO17K3nuat9DMNg0aJFJVLKtNbMtZb9SuS7du3K3Llz99jxSktLAUhJSdljY3TGMTtiDPuYu+d4HTHGvnrM1rK3nueu9iktLSU1NXVja+bZENtdY2NjY7MfY4u8jY2NzX6MLfI2NjY2+zH7lU++OcLhMPn5+QQCgQ4f2zRNAIqKinbbGFFRUeTk5OB0Ott8DBsbmwOX/V7k8/PziYuLIzc3FyFEh469u1frpZSUlpaSn5/PnowasrGx2X/Y7901gUCAlJSUDhf4PYEQgpSUlN3yK8TGxubAYL8XeWCfFPha9uW529jYdD4HhMjb2NjYHKjYIt9CHnroIQYNGsTQoUMZPnw4s2bN4sgjj2TQoEEMGzaMMWPGsHDhwrr9c3NzKSkp6bwJ29jY2HAALLx2BDNmzOCLL75g/vz5uN1uSkpKCIVCALz11luMHz+eN954g1tvvZXvv/++k2drY2NjU49tybeAgoICUlNTcbvdAKSmppKVldVon4MOOogtW7Z0xvRsbGxsdogt8i3gmGOOYfPmzfTt25drrrmGX375pck+33zzDaeeeuqen5yNjY3NTrDdNS0gNjaWefPm8dtvv/HTTz9xzjnn8OijjwIwefJkQqEQNTU1jXzyNjY2NnsDtiXfQnRd57DDDuP+++/n+eef5+OPPwaUT379+vVMnjyZP//5z508SxsbG5vG2CLfAlatWsWaNWvqHi9cuJDu3bvXPRZC8OCDDzJz5kxWrlzZGVO0sbGxaRZb5FtATU0NkydPZuDAgQwdOpTly5dz3333NdrH4/Fw880389hjj3XOJG1sbGyawfbJt4BRo0Yxffr0Js9PnTq10eObb7657n5eXt7unpaNjY3NLrEteRsbG5v9GFvkbWxsbPZjbJG3sbGx2Y+xRd7GxsZmP8YWeRsbG5v9GFvkbWxsbPZjbJHfA1x66aWkp6czePDguuduvfVW+vfvz4gRIzjzzDOpqKjovAna2Njst9givwe4+OKL+eabbxo9d/TRR7N06VIWLFhAnz59eOSRRzppdjY2NnszgUKrXe+3RX4PcMghh5CcnNzouWOOOaauefe4cePIz8/vjKnZ2NjsxZQvDTLnj1XtGmOPZbwKIboCbwMZgARellI+I4RIBv4N5AJ5wNlSynKhmps+A5wA+ICLpZTz2zOH+fcVU7Es2J4hGiGlJHGgi1EPZLRrnDfffJNzzz23g2ZlY2OzP7D1By8zrt2GHte+cfakJW8AN0spBwLjgWuFEAOBO4CpUso+wNTIY4DjgT6R2xXAi3twrnuMRx55BIfDwQUXXNDZU7GxsdlLWP16BdOmFBDXy8XYd+LbNdYes+SllAVAQeR+tRBiBZANnAIcFtntLeBn4PbI829LKSUwUwiRKITIjIzTLKZpUlpa2uQ5wzAAGHp3UkeeUt24tdvW7vvWW2/xxRdf8PXXX2Oa5g7f2/C8ysvL2zPlThvDPuaeeX9bxthXj9la9tbzbLiPNCWrH/ez+f0gaYc7Gfywh6pARWun2YhOKVAmhMgFRgCzgIwGwr0N5c4BdQHY3OBt+ZHnGom8EOIKlKXfpCXf3sy3337LE088wbfffkt0dHRnT8fGxqaTMbySpXd4KfktTLeL3PS53oPQBQTaN+4eF3khRCzwMXCDlLJKud4VUkophJCtGU9K+TLwMsDw4cNlSkpKo9eLiorqFjh3F7sa/7zzzuPnn3+mpKSE3Nxc7r//fh555BGCwSAnnXQSoHrE/vOf/2z2/bqus/15bf+4LXTGGPYx98z72zLGvnrM1rI3nmeg0GLhtT4qV4UZ9XAavS9MaM/0GrFHRV4I4UQJ/LtSyk8iTxfWumGEEJlAUeT5LUDXBm/PiTy3z/H+++83eW7KlClAvftmd1+IbGxs9k7K54VZeocX0w+T3swk87CYDh1/jy28RqJlXgNWSCmfbPDS58DkyP3JwGcNnr9IKMYDlTvzx9vY2NjsSxg+i/n3FDNvSg2aW3DkJzkdLvCwZy35CcCFwBIhxMLIc3cCjwIfCiGmABuBsyOvfYUKn1yLCqG8ZA/O1cbGxma3UTTDz+xbCvFuMuh6npve13lIzHE3u69c5W/XsfZkdM00QOzg5SOb2V8C1+7WSdnY2NjsQcJei8WPlrL2zUpiuzs5/KNs9D6+He4f/KIYrl3frmPajmAbGxubPUDRDB+zbynCu9mgz5QEht6WgiNao7S0qchLS+J/ciO+v+fBUA9savtxbZG3sbGx2Y0YPsm8p4pZ+1YlsblOjvgom7Rxnh3uL70m1X9aQeiLEtxnZxC8K1UFj7cRW+RtbGxsdhOViw2W/sWLf6tF3ykJDLk9BYdnx/Eu5uYAVRcuwVzhJeaBXkRdlUOorKxdc7ALlO0Bmis1/NFHHzFo0CBcLhdz587txNnZ2NjsDqrWhlhwbQ0AR3yUzYj70nYq8OEZFVQcMw9rc4D494bguborDfOI2oot8nuA5koNDx48mE8++YRJkyZ10qxsbGx2F8Eyk18nb0VzwshXYnfqngGQH5ZRecYitAQHCd+OwnVkxyWJ2e6aPcAhhxxCXl5eo+cGDBjQOZOxsbHZrZhBybTLCggUmox8NRZPlr7Dfa3CIPKWTfBNJc7Dk4h7ZSBagrND53NAiXzNXWswltZ02HhSSvRBscQ/0rfDxrSxsdl3kVIy59ZCSuYEOPjFLkQPab60uZSS4DsFeO9fDz4Trs8g/i/9Va2aDuaAEnkbGxub3cmyp8vZ+N8ahtyeTNeTYiktbSry5jof1TetwpheieOgBIy/ZiB6uncs8P5wu+Z0QIl87EN9OnS8lpQYtrGxOTDI+281y54sI/esOAZc27SsuQxb+J/fjO+JPIRbI/bJvrgvyKSsfMfRM9a6MqLO+mSHr7eEA0rkbWxsbHYHxXP8zLmlkLTxUYx+NL1JVEx4XhU1N63CXO7F9Yc0Yh/ujdal+TIGtZhfriY85VO0dnpw7OiaPcB5553HQQcdxKpVq8jJyeG1117jv//9Lzk5OcycOZNTTjmFY489trOnaWNj0wZq8sL8flkBMTlOJrycie5qUD7dayIf2krl8fOR5WHi/jWY+NcH7VTgpWkRvv8nwmf+G9EzCf/XZ7VrfrYlvwdortQwwGmnnWaXGrax2YcJVZj8eslWpKXKBLuT6iNppNeESzbAEj9Rl2QRfXdPtLidf89lqY/wJZ9ifb8OffJwHE8fT423sl1ztJXFxsbGpg2YIcnvV23DuzHMYe9nE9fDVfeaNCyqLlsGS/3wXDdiz+m5y/Gs+QWEzvsIttXgeOFEHJeOVC942zdPW+RtbGxsWomUknl3FVP0u59xT6c3SnaSUlJz6xrCP5TBfVmIo3bd5cnxwQpCd/0KaTG4pl6MNrrjWpnaIm9jY2PTSlb+s4INH1Qx8Pokcs+Ib/Sa//GNBN8pwHNTdwLnxu9gBIXcWIH7+q9xfLsB7cieON88DZHasT2fbZG3sbGxaQVFU0MsfthLt5NjGXxzcqPXAv/aiu8febjP7UL0HbkEdlBcTIZMzGdmYDzyGzoQuvMg4u48AqF3fCyMLfI2NjY2LaRyicHSu7ykjIpi7BONQyVD35VQc+tqnEckE/tk3x0WFzN/3oBxw9fIVaVop/Sn5s4xyOy43SLwYIu8jY2NTYvY9ouP+VdV407RmPhqF/SoelEOz6ui6rLlOAbHEv/aQISzqWDLgmrCd3yP9eEyRM8knJ+eh35sb2Rp6U6Pq+UVt2vedpz8HqC5UsNlZWUcffTRDBgwgOOOO47y8vJOnKGNjc3OWP/vKn69eCuebJ1Rr8cRlVpvH5vrfFRdsAQtw0X8e0MRsdvZzoaF8fwsgsP+D+uzlTjuPgTXvKvQj+296wP/ZwaJ5zzbrrnbIr8HaK7U8KOPPsqRRx7JihUrOOKII3j00Uc7aXY2NjY7QkrJ0idLmXNLEekHeRj9ehxRGfWyaRWFqDx3MQAJHwxFS3c1er+2tJioEz7CuPU7tIO64pp3FY67DkVE7cKJ4gvCja/D9a9hDGhHWyhskd8jHHLIISQnN16g+eyzz5g8eTIAF154IZ9++mknzMzGxmZHWGHJnFuKWPZUOblnxXHIW1k4Yhtks9YYVJ2/GKsoRPx7Q9B7NY6KsRZvI+rszxBlAZzvn4nz0/PQeiVvf5imrMiHE/4GH82AG06i6tXL23UeB5RPPnzLt1iLCztsPCklYmg6jieOb/V7CwsLyczMxDAMunTpQmFhx83LxsamfYSrLX6/soDC3/wMujGJQTcmN1pIlWGLqsuWYyytIf7tIThHNg6VtNaWEvrDe8gYJ4H/nk70sNxdH1RKeO83uOd9iPPA+zfBpAGwC5/9rjigRH5vRQjRIW2+bGxs2o+vwOC3i7dSuTrEmMfT6XlOYwGXUlJz82rCU8uIfbIvrmMad3GS+VWETngXLEngw1OQOXG7PKaoCcBfX4HPZsMhA+HZKZC26ySqlnBAibzz8Y4tAtaeUsMZGRkUFBSQlpZGQUEB6enpHTgzGxubtlCxIsivkwsIV5kc8mYWXQ5tJjHpuSKC7xfhubU7URc2zkyVxV5CJ70DFX5c31yEt7ur6fu3wzFrLbEPfAJby+GO0+Ha40DrOE+67ZPvJE4++WTeeustAP71r39xyimndPKMbGwObAp/9/HjGVuQpuSIj3OaFXj5Vgn8XxHuC7oQfWtu49eqgoROfR+5sRLXJ+eijczc+QE3FsNlL5Bw+StgWvCfW+HPJ3SowMMBZsl3Fueddx4///wzJSUl5OTkcP/993PHHXdw9tln89prr9GtWzc++uijzp6mjc0BS94n1cy5pZDYHi4OeTuTmOzGfValYeH96zp4tQCOjif28cbJTtIfJnTGB8jFhTg/PBttYvcdH6wmAM99BS9/Bw4d35+OxX/RJFKyu+yWc7NFfg+wo1LDU6dOtUsN29h0IlJKVjxXzpLHykg/2MOEl7vgSmjceNuqMqi+bBnhn8rhklS4pQvCUW9ty7BJ+IKPkb9vwvnGaejH76ADnWXBf2bAI59AUSWccRD85XT8Lmt3nqIt8jY2NgcmlqEqSa5/r4rup8Uy5rEMdHfjAAgzz0/VBUsw1/uJfaof3uMb+9ilJQlf/jnW12twPHcC+jmDaZa56+De92FhHozoCa9dCyMj5Yd3FT1jmG08Q4Ut8jY2NgccYa/FjKu3UfCTjwF/SmLIbclNW/bNqKDq4qUgIf4/Q3FNSMLbQJCllBg3fo3176U4HjgCx2WjmhxHFFcR8+RX8OUC6JKoomZOG9div7uVl0/Un+9rz6naIm9jY3Ng4S8y+O3iAiqWBRn9aBq9Lmgaqhj4YBs1N61C7xZF/LtNE50AjPt+wnx5HvpNB+G4dULTA+WXknDh/6GVVsP1J6momZioFs1RSon5wRcYDz6P1s7CZbbI29jYHDB415tMvy6fYKnJxNczyToyptHr0pL4/rYe/3ObcR6SSNxrg9ASnU3GMZ6agfmP39GnjMTxtyObHmhLGZz1GKI6QOVb15A4aWiL5yhLygnf8Q+sH35HO3gkNXdfDYP6t/pca7FF3sbGZr8nWG6y5eMga57244jSOOKjbJKHNbaqpdek+poVhL4qIeriLGIe7t1sNUnHe8sx7vwZ7cyBOJ45vmkiY0E5nP0YlHupemkK5sCW154xp04nfPvfocqL4+4/oV96JrKdxQttkbexsdkvCZab5H9TQ/4XNRRO9yMNiO2rc+gbOcR2a2ydm1sDVF2wFHN5DTEP9Sbq8uxms9D1T1bjuv1ntGN743zt1KY14Asr4KzHoaQa3rsRMzexZZP1Bwj/5THM9/+H6N8L57tPofXbdV/YlmCL/B7imWee4ZVXXkFKyeWXX84NN9zQ2VOysdnvCJYpYd/8RQ1F0/1IE2K6Oeh3eSLxE03iBurEpjYW+PCCKqr+uBR8JvHvDsF1VEqTcaVpYdz7E1FPTMccn0XUe2ciXI1DLSmqhLMfh6IKePdGGNVrl5EzUkr06fNxPfYq5uZt6Feeh+OmKQj3rjNlW4ot8nuApUuX8sorrzB79mxcLhfHHXccJ510Er17t6CetI2NzU4JlJps+aaGzV/WC3tsdyf9r0ok58RYkga7EUJQ2ozgBj8tovrPK9HSXcR/PAxH/5gm+8gyP+GL/4v1/TrCFw4idP9EYqK389OXVME5Tyhf/Ls3wJhdf7etJaswHnmRqOnzsbIzcL3/DNr44W38FHaMLfJ7gBUrVjBu3Diio9UK/aGHHsonn3zCbbfd1skzs7HZNwmUGOR/4yX/yxqKZkSEPddJ/6uS6HpSLImDXDst+ielxP/kRnyP5uEYG0/8W4PRUptaz9bSQsJnf4TMr8Txwol4T2kmk7WsGs59AjaVwL+ug3F9dzp3a9NWjMdewfrfVEhOIHjLFIwzjyW6i53x2n7u+QCWb+qw4XQpkQO7woPn73S/wYMHc9ddd1FaWorH4+Grr75i9OjRHTYPG5sDgUCxQf7XXjZ/WUPxTD/SgtgeTvpfHRH2gTsX9lpkwKTmhlUEPy7CfXYGsU/2Q7ibLrCanywnfMXnEOfG9d1ktPE5Td0v5TVwzpOwoQjevA4O3nEUjCyrwHjubcx3PgVdR//ThTiuPB9vKNDaj6JVHFgi30kMGDCA22+/nWOOOYaYmBiGDx+Oruu7fqONzQGOv0gJe/6XNRTPUsIe19PJgGuTyDkplsQBLRP2WmRJmMo/LsKYW0X0XT3wXN+tyfulaWHc/zPmY78jxuXgeu9MRFYz5YIrvHDek7CuAN74s6r93uxJBDFe+BfGP98Drx/9nBNx3HAJIiNVvV5qi3zH8cC5HTqcGak705JUhSlTpjBlyhQA7rzzTnJycjp0LjY2+wv+IoP8r5SPvXhWACTE9XYy4M9JdD0xloT+rRN2UNa7/LEK/rYVo9wk7o1BuE9Ka7pfecT//t06FQP/xLEIdzMyWemD85+CVVtViYJDBzV7XP3nWbgefRmjuAztqAk4br8SrU9uq+ZOO0qaw4Em8p1IUVER6enpbNq0iU8++YSZM2d29pRsbNqN4bfwbzMoWxnG8EroHSA6y0FUqo7QWi7E/kKD/K9VVEzxbCXs8X2cDLo+iZwTY0no13pht6oNwj+UEvyyhPAPZeA1oYuTxP+NwDGsqWVuLSsifPaHyM2VOJ4/EceUkc2OK2oCcO1LsHwzvHINHDGk2f3M/3yN+7Z/YPXNxfV/D6CNaXlCVB0rF5Fwx0Wtf18DWizyQojRwF1A98j7BCCllG2Y+YHHGWecQWlpKU6nkxdeeIHExMTOnpKNzU6xwhJ/oYFvazO3AgP/1jDBsu0rKHoB0Fzg6eIgOstBdJaT6Mza+w48WQ7CURZWEFZ/XkH+FzUUz4kIe18Xg26IWOz93K2fc3GI0DclBL8qIfxrOYQkIs2J+4x0ApPcMC4GR2ZTgTf/u4Lw5Z8p//u3F6Ed1LX5A3iDxF3zOizNh5eugqOHNbub8a9PMf76JNa4YQSeuIOYnFY24w4F4aWH4JVH0OKSWvfe7WiNJf8ucCuwBNi9tTH3Q3777bfOnoKNTRMsU1K5xKBykcGmimJ8BUrE/VsN/EUmyMb7O+O1OsFOHuZW97MdGLE+HNEClz+mbozaW/FsP/5tBnIHXof4vi4G3ZishL1v6+PDzc0BQl8WE/yqBGNWJVigdY8iako27hPTcIyOR+iCYDMhlNK0MB74GfMfvyPGZuN6/6zm/e8AeUUkTPkn+ppt8OKVcNyIZnczXvkA46H/QzvqYLwPXA+tjXlfPBvuvhTWLoM//JGKK++BXjuP2NkZrRH5Yinl5209kBDideAkoEhKOTjy3H3A5UBxZLc7pZRfRV77CzAFMIHrpJTftvXYNjY29dRsDLPtNx+Fv/oonO4nXKlsNj1KuVqisx0kHBpdZ3UrUXcSneXAGdv8ClRpaRiAlJTYZl+3TEmw2Ky7ABSvqUSa0OfkNOL7tE4EpZSYq3xK2L8swVxSo+Y/MAbPTd1xn5iGPihml+4dWRFQ/vdv16JfMgLHU8c1738H+Goe3PQmmoDqZycTf2LTipNSSszn3sZ48jW0Ew/H+fRfoaqy5Sfm98Hz98JbT0J6Frz4JRx6AnIPNvK+VwjxKjAVCNY+KaX8pIXvfxN4Hnh7u+efklI+3vAJIcRA4FxgEJAF/CCE6CulbF9hZRubA5BQpUnRdD/bfvWx7Vcf3k3KpI7OcpBzXAwxIyySRjvI7Ju62xrKa7rA08WBp4uDlBEQXaokJD6lZQIvLYmxoLpO2K31fgAcY+KJvrcn7hNS0Xs20491B1jLi1T8+6YKHM+egH7ZyObPPWTAQ/+BV3+AET2ofOQcrKym7hMpJcbfX8L853topx+L8x+3I1rRCMixcDo8dhNsWgtnXQG3/APi9nwj70uA/oCTeneNBFok8lLKX4UQuS081inAB1LKILBBCLEWGAvM2NmbTNNsktVmmma7Gm7vjI4YtyVjNDyv8nYWK+qsMexj7pn3A5QVl1OzHNYt81M2M0zlUhMs0KMhaYyT7PM8pBzkJLq7hhCC8vJyfEBZWdtL2u6Oz0mGJcz1wveV8EMVFBlKscbGwoVZcEQ8ZoYTP+DHD6X+Fh1T/2od7ht/REY7CH54CtaYTCgra7K/tq2C2FvfxbloE/7zD8Z384mU11TD9nO3LFyPv47z318SPuNYQndcAZWVLTpPfcNKXC89RNzvX2Nmdqfm6U8wRh2iLi4d9J1vjciPkVL2a9fRmudPQoiLgLnAzVLKciAbaBh+kh95rglCiCuAKwCysrKa28XGZr9GWpKatSZlswzKZoUpnwtWANACJAzW6XFZFCkHOYkfrKM5d4+l3lFIvwW/V8P3VfBzNVSaECVgUhwcFQ+HxSMS2phjYkniX1hC1MvLMEdkEHz5WGRm8+4l528rib3r3xA2qX78AkLH7CC+xDRxPfQizs+mEr7gZEI3Xgwt+DWkbVpD9BuP4Zr6X2RUNGVnX4287A7wNC2r0F5aI/LThRADpZTLO/D4LwIPon4RPAg8AVzamgGklC8DLwMMHz5cpqQ0Li5UVFS02/undsT4OxtD13W2P6/tH7eFzhjDPmbHvN+7Ocy2aT6Kpvkp/N1PsFR5MuN6Ock62U3yOAe9jk1v0q+0I+YspUSWhrG2BjELglhbg8j1QfBaeLo70bLcaFlu9Ew3WqYb4dnxHFJSUrAqw4S+KyX0ZQmhn8rAZyESHLiOTcV1Qiquw5MR0W0Tdhk0sH7biPXlGjz/W4G2pQZ98nDczxxPTHP+d8OEJz6HZ7+EATnw0lXE9WpabiAlJQUZNgjf/DDW51PRr7sY942X7NDdVffZblwL/3wQ/vcOuKNgym2Un3IpMjGlQ/5Pm6M16jQeWCSEWI/yybc7hFJKWVh7XwjxCvBF5OEWoGEMU07kORubA5JgmUnh7z4Kf/dT+Fu9Xz0qXafLodFkTPSQMTGa6ExHnWuvNQJfizQlVnEIa2uw/hYRcnNrEGubuk9ou7AbHYjS8HmbLhKKJIcS/kw3emQr48MQlFT+mk94WgUYEi3DRdQ5XXCdkIpzQmKztdxbdA6lPqxv12J+sRrrh3VQHQKPA2tSDqG7DyZh8tjmxbioEq55GWasgvMnwQPngaf5NQMZDBH+8/1Y3/2G4/YrcVx9wc4nlb8B/vk3+OwtcDjhohthym2Qkt7uhdVd0RqRP66Z52Qzz7UYIUSmlLIg8vA0YGnk/ufAe0KIJ1ELr32A2e05Vmfz1FNP8eqrryKEYMiQIbzxxhtERbWsFZjNgYfhsyiepaz0wmk+KpaFAHDGaaSN99D3skQyJkQT38fZ5sVSq8ogPKMC+V0BLPZTVrQaqzCo4tka4hZoEavcOSoe7Q/qfq1wa1luyrVqhC5Ididgbgs1ujg0vEgYC6uRJeG6oc0eHjxX5eA6IRXHqPhWJVA1OpfVJVhfrMb8ag1yxmawJHSJRT97MNoJfdAO74HXVwXQ/Oc1faUS+OoAPHUJnN1MO79a/EHCNz2K9cssHPddj+PiM3a4qygpIPrNx+HLd0HT4fw/wWW3Q1pmm86zLbRG5NNonAxVS4sseSHE+8BhQKoQIh+4FzhMCDEcdbHIA64EkFIuE0J8CCwHDODafTmyZsuWLTz77LMsX74cj8fD2WefzQcffMDFF1/c2VOz2Uswg5LSBQE2TvVTNseganE5VlglFaWO9jDk1mQyJkWTNMSN5mibEEq/SXh2JeHfKghPK8dYUK1CKNwChkbjPCQJLdOlXC0NBFwk7/pCIkpVGKOIdeDo7YDeO450kUGL0pWFYEiSRma26SIlDQs5YzPml6uxvlyNXKsWTsXQDPTbJ6Kf2BcxIrPxRcPXzECWBc9/DY99Cj0y4IObof9OEpe8fqJufAhr/nIcf78Nxzkn7XjflYtIvPxYRGUZnH0lXP4XyGhlUlQHsMeSoaSU5zXz9Gs72f8h4KHWHmdvxTAM/H4/TqcTn89nLxIf4FhhSdmiAEXT/RTN8FMyN4AZkKBBXH9dWeoTo0kdE4XD00a3RdjCWFBN+LdyJexzKpWbxSFwjIjDc2N3nJMSqeppIFwacbvJJ7w9wq0hcpQbpFXFxSoDWN+vU8L+7VooD4BLRzs0F/3asegn9EV0a0XYYVkNXP8q/LgUThkL/7gIYnf869patR7PNfcg8vJxPn03+ilH73jsWT/Bn09FemKoenUqiWMntXxe2yGqi3e9007YY8lQewPh+5/FWr62w8aTUiIG9sJx3w073S87O5tbbrmFbt264fF4OOaYYzjmmGM6bB42ez+WISlfGqRohp+i6X5KZvsxfMrbmTDARa8L4kk/OBq9jw9nvNamRThpSsylNchvi2G2l7K5y5FeEwTog2PxXJaNc1ISjvEJaLH1X32xm33C7cHaWIEVsdatXzeCYUGKB+3Evugn9EU7qicirvXlD5i3Dq56STX7ePgCuOiwHUbFSCkx3/4E46EXIS6a4DN/xXNSM827a/n6Q7jjQujWm6q/v4/VVuvdMuH7f5L4wZ1te3+EPZkMdcBSXl7OZ599xoYNG0hMTOSss87inXfe4Y9//GNnT81mNyEtScXyEEXTfRTN8FM8K0C4Wv0Aju/jJPeseNIP9pA+3oM7uX6BtLQVZWelKTGX1RD+vULdZlQgqyJezR5u3Gdn4JyUhHNCIlqyc+eD7SVISyLnbsX8chXWV2uQS4sAEP1T0a8bh35iP8S47Ka9VVt8AAmvfA9/+w9kJcFnd8DQ3B3vXlJO+LZHsX6cgXb4eLx3XgnJiTse/1/PwqM3wIgJ8MLnWEYbK8CsmQWvXwMb5mP2nQS0vSzKHkuG2htw3ntdh47X0mSoH374gR49epCWpkqbnn766UyfPt0W+f0IaUkqV4XYNDVA+RyDyvmVhCrU1yQ210nXk2PJOMhD2kEePOltC7mVlsRc7iU8rZzw9ArC0yuRlZFy1z09uE9NxzkhkeoBEpHuJHY3ul9kdRC5tRpZUA1bq3GuLQRfGCM3DZEZh8hSNzJiEY6dC7L0hrB+3ID11WrMr9dAoRd0gTahG/rfj0Y7sS9ar+R2z1mUVBPz8Kfww1I4djg8eQkk7jgu3fx5FuFbHoGqGhz3XY8++fRmk6YA5dt/6i/w2j/gqNPgH+9ClGeXPV6bUF0KH9wJP74CiZlw3QdU9T0SHmxaFrml7A3JUPs93bp1Y+bMmfh8PjweD1OnTrU7Q+3jSEtSsTJE8Qw/RTP9FM/yEypXoh6VqZF9TIyy1A9WYY1tPYa50kt4WkVE1CuQ5RFRz43CdVIqzonKUtcz610WNe1wv8iQCdtqlIBvrUIW1NRtiYi63FoNNaFG73MBUoCxfbydJiA9pk70ay8AjngBIZPQrwVYP22AgAEJbrRjeqOf0Aft2N6IJE+bzwMA04KFG+DHJfDjEpIXb0TqGvz1LLjymB27Z4IhVaLg9Y8Q/XrgfOcJtP69dnycUAj+OkXFvp93Ddz5LLS2KZBlwY+vwvt3gLcCTrgRzrwPPHGtv1BsR2cnQx0QjBs3jjPPPJORI0ficDgYMWIEV1xxRWdPy6YVWKakYnmQ4pkBimtFPVLYK6abg6yjYkgf78HZP4Anu2nyWkuQlkSuCsCcGqoWFhCeUYmMFP7SukfhOi4V58REJerZ7Q+/lVuqsH7biOuH1WiLiggU+aHI23RHpwa11vmgdLSje9UJNtlqW+4Og8dBshlVdyGouyDUPs6rwJqxGUr91F6SZG4i+pSRaCf1RZvQDeFsZ8e00mr4eSn8tBR+Xqba82kCRvbE96djCB01mMQxA3f4dmtNHuHrHkCuWIs++XQcf7kaEbUTn7+3Gm44E37/Dq77G1x5Z4syXuuQEsfq34j+/CHYMBf6T4JLX4BuzdeobwutTYZaKITYQAclQx1I3H///dx///2dPQ2bFlK7ULrxpwDlcw0qF1YSroq4X7o7yT4uhvSDPKSN9xCTXe/vrq3G2BKkYWEu8xKeEbHUZ1ZCxFI3cty4jkqut9S7doCob65U2Z+/bcT6bRNynXI9OOJcmCMz0Md2VS6WBu4WkRkHKdG7jl+PWJsiLRbRJRZG7DgOXAYMyldsBlOSNKpH+4qiWRYsylOi/uMSWJin/O4pcaqZx5FD4JCBkBSLfycWsZQS853PMP72PMR4cL72KPqRB+/82CWFcPWJsHIhPPganNGKZH3Lgnmfw2ePkrB2FlZ8OlzzFky6sHUXiRbQ3mQoG5v9AsNvUbYwSPFsZaWXzgvURb9Ed9foelIsaePVQmmb3S8hC2NRtRL0GZUYsyqRNWqhVMtVlnpwqAPGxJA0tEu7K0JaGyuQv23E+lUJu8yrUC8kRqFN7IZ+xSi0Sd0pz3aAru1WH35DRJQD2S1e3W/LOZbVwK/LVOjjz0uV9S4EDO8BN58Mhw+God1Ba9nirCyrIHzb37F++B1t0hicT9yJSN/FZ7FxLVxxLJRsg+c/g0NPbNncjTD8/h58/nfYsgLSe1Bz7mMEx51LSubuaQna4v9WKeXG3TIDG5tOIFxtUTJXRb0Uz/ZTtiiAFQIEJPR3kXtWPGnjonD0CeBOa2NIo98kPL8KY0alstbnVIE/Uru9bzTuM9JxHpyI46B6n3qo1iJubQ9TKZFrSrGmbcL14xr0mVsJbVEJSiR7lKhfOxZtUnfE4PTG0Sl7cQgloKzepZuUqP+4BBasVxmtSbFw+CA4fAgcNgiSd9DsYyeY0+YSvukhqKjCcfef0C89E7GLi4O+Yj7ccYGa1+s/wrBxuz5Q0Kd87l88DqWbodtQ+PN7MP4sghWtqDnfBuwerzYHBIFSk5KIlV48O0DFsiDSAuGApCFu+l6aSNo4D6mjo3AlNgxpDO1k1MZYNQZyWjXM9VKxYBPGgiqVfCRUQ4uoP2biPCgR5/gEtLTWd0BqiDQt5JJCrGmbsH7fhDV9c50/3ZHqwRybievmiWiTuiEGpre5XECnUeGFX5crUf95KRSrkgQMz4XrT1KumGG50MZQShkKYzzxKuZL7yN6d8f5xj/QBvXZ5fucv31F3INXQ3IavPIt5O68Y5PwVRL1yyvwy6tQXQL9JsJl/4Thx3e4W2ZH2CJvs1/i3RKmYGqQigUG1YtqqFqjfOW6W5AyKoqB1yWRNs5DysgoHNFtEwqrOER4ZiXhWZUYMyswltaoui86MDQOz+U5OA5KwDkuAS2xfXHqMmgg5xUoQf99k1rArFLpKqJ7ItrRvdAmdEOb2I3yJAlC7DH3CwC+IMIXgoREcLRh8VRKWLa53rc+b52KjkmMhkMHK1E/bBCkxrd7qta6TYSvfwC5dDX6BafguPtahGcXax5VFfDoDcR/+hZG36E4XvkW0ppWp2zE5qUkPHoSeulGGHEinHIH9J/Y7vm3FlvkbfZ5LFPFqJfM9lMyJ0DxnAD+ArWA6YgVpI31kHtmPGljo0gaGoXuakOtFCmx8gKEZ1ZERL0Sc12kSUWUhmNkHJ7ru+MfIGBENInd09t1TrImhDUrXwn6tE3IOVtUmCEgBqSinzMY7eCuKiKl63ap/B3lfpESKn2qOmNhJRRVqPvbItsGz6d4I/mRmlCLnukJkJEIGQmQnhh5nFD/vG4ggmGYOa/eWt9WocYY0g3+dILyrY/o0baLxg7Ox/HpD4SeeB3cLpwvPYR+bAvKDfzyFdx7OZQW4rvoJvyTbyZlVwI/7wt47jyEK5rKm78iYczxHXMObaDFIi+EcANnALkN3yelfKDjp2Vjs2NqF0lL5vgpnhOgdF59Nqmni07qGA9pY6Nw9gkS20cnNT211ceQhoW53Iv8qQTm+SifvwqrULluRKIDx9gE3Bdk4hyfgGNoHMKtfg0E2iiwsrAGa8ZmXD+tQZtVQHBpMZgSNIEY3gX98lFoE7uhHdwNkdryNne7pNqP8/dV6Cu2qpK8DcW8qBICzUQLRbvrRXtwV8gYgjfWiYx2EeszG18Ulm1SrharcQB9CiA1oZ6P98Ahg5S1fvhgNXYHIb0+rJkLsX6bg+fnmWh5W9AOHonzybsQXXaRYFRdCX+/CT55HXoNhOc/w5/ZYxcHlMrv/t7tkDuCyilvYiV1bp2q1ljynwGVwDwalDWw2TWrVq3inHPOqXu8fv16HnjgAW644YbOm9Q+RKDYoGRugPxpPioWGlSvUBUaARL6ueh2SiypYz2kjYkiOttRt2i5fSvInWHVGBhzqwjPrsSYXYUxt0rVfQHIdOKcmIRjXALO8Qno/WLa5eOWUiJXlWDNyMeavgk5I78+nNGtYw3PQL9lghL1cTltq82yIwrKYc5amLMGZq2BFfnE1wpwvEcJbHoijOqlLO6GFnh6InRJbLaIV+3FrVkXkWmpGjENxN+XVwCmJPqYkepYHWStS9NELlmF9dsczN/mIucvVY1AotxYIwYSvuBk4qecs8vFVX7/TiU4FW1V1SOvvRdc7p3/SgoH4ZUr4de3YPxZcPWbWDU7b0nYEvSKBe16f2tEPkdKaYdRtoF+/fqxcOFCQPVrzc7O5rTTTuvcSe2lWKakanWIkrkBSuYFKJ0boGajUnThhITBDvpdkUjqGOVPdye1TRzM/ADGbOVPD8+uwlxeo4p1aKAPiMF9dgaOcQnU9LEQ2a52VWis86fP2Iw1YxPWzPz6fqSp0WgHdVUJQQd3pbybC1w6MR3hT7csWLsNZq+B2RFh31SiXvO4lLjecBJV/TMwBncluftuKoOraxHXTSJEcnxqY9ajO+A8rc1bsX6dgzVtLtb0+VBZDYAY3Bf9snPQJo1BGzUYrzdSDnlnAl9TBY/dAh+9Aj37w3szYOjYXU+iohCePB1WT1eZqqf/VYVwtkfka/JgwV0kbniv7WPQ+ozXIVLKJe064gHO1KlT6dWrF927d+/sqewVhGssShcol0vJHD+lC4J1rpeoNJ2UUVH0ujCe1NFRyCwvmku0OpyxLulodmWdpW5tjfwYjdZwjo7HdVN3nGMTcIyOR4ur/1p42+J+KQ9gzlytRH36ZuT8rRBUvwpEn2RV6/zgbmgHd0X0Tm4cLtkef7o/BIvziPp1Cc4FebBok4pSAUiNg7F94dIjYWwfGJgDTnWe4b09hHI7ZGU11owFWL8pYZcbI03jMtPQj52ENnEM2oRRiJTExm+MiPwOmf6Dst4L81XXpj/dr1r07YqNi+Cxk6GqGG74UFnx7SFUAUsehhXPgNDw9boReKrNw7VG5CcCF+/TGa+P3KCy0zoIXUpkv2Fw17Mtfs8HH3zAeec1V1p//0dKSc2mcJ2FXjLPT+WKENKiLj692ymxpI6OInW0h5hujkYCWFraXNeHpliVYeVu+bUQFngpXeQHn7pwaFluHGPjcY5NwDk2AX1QzC4LaO3qnOTqUqyZ+chZ+Xim5aGtKScM4NQQIzLRrxqjFknHd0Wkd2Cj5sIKmLtOuV/mroOlGyFsEgOY3VPhuBEwtrcS9dz0PRay19HIsIFcuBzzt7lYv81BLlqhfqXEeNDGj0C/+Ay0SWMQvbq1LbnKWw2P3QofvgQ9+sG7v8Ow8S1775xP4fk/Qkwi3Pcb9BzV+uPXYoZg9Yuw6AEIlUOvyTD8QfwBD3tK5DtveXg/IRQK8fnnn/PII4909lT2KP4ig6X3eCmbHSZUXAGoqJeUEVEMvD6J1FEekke4ccW3oSepJTHX+jDmVBGeU4kxtwpzVeRioAH9o4g6LxPnuHgcYxPaXfNFekNY87YiZ+ZjzczHmpUPZZGf5ElRWMPTMU7vS+xR/RCjshCeDirxa1qwcosS9HkRUa91vUQ5Vcz4FUfD6N6U9UxGJsXstsbQuxspJXJDPtZvs7F+m4s1cwHU+EDTEEP7o1/7R/SJoxEjBiFc7fx8Z/4Id18KBZvgklvgzw+o6pG7niR8+gj8+y7oNRZu+RSS2tjST1q4tn0Bvz4E1esg8ygY9TgkD1OvB/ZQgbL9IuP1L0936HBmpNRwS+3Ar7/+mpEjR5KRkdGh89ibKZzmY+Z1hYSqTdKPcJE9IYGU0VEk9HOh6W0IZawxCS0tU4ukc6ow5lUhKyKhhYkOHKPjcZ+WjmNsAlXdwohYvc3x4lJKxJZqtLnbCC+dgzUrH7lom4p6IVLj/A/9EONz0MbnIPqm4i1XC6haewW2ygcLNsDctUrY56+H2jDF9AQY3RsuOUJtB3cDV/1XeXc3hm6IDIagtBxt7QbwB7F6dkekJUNCXOu6PpVVYP0+D2vaXMxpc2FLIQCiayb6yUehTRqNdvAoRELrs1qbxVsDT94O7/8fdO8D70yDEbuoVVNLyK+s99/fgwnnw5WvgqsNFTPD1bDubRKXPY3uXQuJg+HIryHr2A791bVLkRdCTJNSThRCVNO4cXetu6b92QkHCO+///4B46qxTMnyp8tY9kw58b2dDH8xhtjeOikpLQ+Pq7PS50bEfFY5rAlQFXHv6P2icf0hDefoeBxj4tF7NS6k1dqOR9IXRs4vwJqtLHRr9haityk/rhntRBuTjXbLBLTxOWhjcxDJ7SyFW4tlwfoimLeOmBnLcSzaBGu2KWtRE9A/B848GEb3UreuqbvV9SJNE0orkMVlyJJyKC5V95t5XLvIWftJ1OUHOx2QmoRIS0GkJinhT0tGpCYj0pLR3A4IG4QXr1Z+9aWr1fnGxaJNGIl29R+VsO+OxeA5v8Bdl8CWPJh8o6oe6WlZWKqoKCDu5cmwcT6c+7BKcGrt36JqLax6Hta+AeEqrMSR+Ia/SNzgy1Wz7w5mlyIvpZwY2XbQJfTAxOv18v333/PSSy919lR2O/5Cg5nXFVI03U/umXGMeiiNSn/5Lt9nlYUx5lURnqdE3ZhfVdfpSMTrMMQDR6UTf2gXHKPi0eLbnssnpUSuL0fOzseatQVrzhbk4kLVXg4QPZPQDsvFPygJa3QXEif2bZfvvhG1Vvr89Sqzc8F6qFAuJldcFMbgrvCHPyhBH9ET4jroYrIdsqgUa/4ynNPnoq3ZSLCiWgl3WYW68GxPjEeJdWoyok8u2sEj6x7XRDmRUW7iwxayuDRyMYhcGApLsJauhtIKMNXfs/aMTIeOGDEIxw2XKL/60H4Ix+7J0RRV5Xhe/wd8/Ap06w1v/wqjWpiBalnw4yskvns7wjTg5v/CmFNbfnApoeB7WPEsbPkKNAd0Pxv6/5kqrbfaZzcIPNgZr3uMmJiYVsVt76vUumfC1RZjn0inx9mRH3rbRZLJsEo2Cs9VYh6eW4W1PrJTbRjjaek4RsXjGK2s9LKIK8SV0vouQbI6qHzpEQvdmr0FSiK++1gX2ugstJsOQhubgzY2G5GmFkirawuGtVXgLQvWFCgxn78e5q1Xj6UqPUDfTDhhFIzsCaN6UZ7kBK1tBdF2hgyFkcvXYC1YjjV/Gdb8ZbBlGwBOhwOrdzdETiba8AHK4m5wIzVZWeMxO7Z2zcjnpO9k3tI0obwKWVJG5bo8hGWRcNjBiLgOXIxuSHUlzP0VZv8Ms38iaeVChJRw4fVww8Mttt7ZuBhevQrWzMDsO5Gacx8jaWALF2YNL+78f8O016FyJUSlw9B7oO+VEB3x4e9mXbBF3qZD2N49c9j7WST0q0/ikcVhmOfDu6ZCCfuiaghErOY0J84xCTguyMQ5Kh7HsFhEbDusdEsiVxbj+Hk12vxCgotKkMuK6pyNon8q+gl9ELWCPjCt7T1Dt0NU+nAs3gRripWoL9gA1ZGLV2K0EvOTx8Conqo0bvx2QtNBX3hRXIY5e4kS9AXLkUtWQTDiTMlMQxs5GO2SM9BGDKI8MwXcro6Jzd/ZnHRduXBSk7DSEtVzHSnw3mqYNw1m/6Ruy+eri6zLDcMPwn/JbYQmHEviQYe3bLyAFz6+H758EmKT4Zq3qRrYisJiZYtInHY6unc9pIyGif+C7meB3oHJbS3AFnmbdtOce6a26Je0JP7/2wwPb4CwxO8SOIbFEXVxFs6RykrXctztqp0uC6qx5kRcLnO3Ys1TKfpuQCa4EeNy0E/tr0R9dFb728rVEjJg+eZ618uCDSRvUAuGdb70U8YqQR/ZC3pl7BZfuvT5VZbnwhVYC5fjmb8UrbBUhXG6XIghfdEvPFUJ+4iBiMzt6ursq78wfV5Y8DvM+gnm/AxL5yh3kMOpQiCvvBvGHa7uu6N22jSkCfP+B2/8CUo2wRGXwfl/V0LfkjGkhDWvwuw/I5xJVI77hIS+p3ZaCGurRV4IcS+NF2Dt+jUHMDt0zwDmtiA1164g/GsFHB0Pl6eRcnB2XZ2XNuENYy3fWCfq1pytsCVShtahIYZmoJ8/FG1MFpW9Y5A9E0lJa33tmiZICRuLlaAviFjoyzZBMNLMPT0BRvTAd9JwwsO6kzBpaLPp/+2ehmUh127EWrgcuWA51sIVyNUb6nzdolsW1vCBhAf3IW7iWMTA3gh3+8oa7zUE/LBwRr2lvni2asLhcMCQsTDldhh7uIqSaakrZntK8+HN62DOfyFnkIp9b03lyHANzLoa1r8DmUdTMehZpDutU3MU2mLJfxDZRgHXAYkdNhubfQZpSta/FGDDK+XE9XJy6HtZJPav/xka/KaEmutXIgMWsU/2peZ4F0KIVgm8DJvIpUXKlz5vK1GzNqOtKiMUqbUieiSpJKMx2WhjshHDuyCiOiiUsKwGFuXhmb4Mx5LNsCxfPQcQ5VKdhy4+Qi2MjuwBWckgRL212EECL4tKsRZGxHzhcqzFK1XMOKhIlOED0I6egDZ8INqwAYiUxLpG3u0O4+xsQkFYNLPeUl84A8IhVS5g0Gi4+KaIqE+AmNj2Hcs04Nvn4cO/gmXCeY/CiTeCoxUXyIrl8MuZyvc+/AEYfCeyvKJ98+oAWi3yUspVQogLgROB56SUv3f8tGz2ZnwFBvOvraF8jkHumXGM/FsazpiIe8Zn4r1vHYE3tqIPiSXupQE4+sTssjyAtFRnIzlvK1bE5SIXbasrB0CyBzkklfAxPYg5tLdyu6R1kD/XF4QlG5V1vihP3TYWA+ARArNnGhw9TAn6iB7QL6uuJEBHIn1+tAXL0ZatIbR6I9bCFXWLozh0RP9e6KcegzZ8AGL4QETPrrsutLUvEQopl8vsn5SwL5wOwYCyggeOhAv+rNwvoyZBbAdGbq+bowqL5S2AESfAJc9D+i6qTTYZ418w6ypwxMLR30PmkR03v3bSFnfNXGAx8C8gQQhxgpTyqw6fmc1eyeavaph7WxFG0GLgfdEMmVKf2GUsq6H6yuWYq3x4rskh+s6ezVruUkrYXIU1b2udlW7NL6hrgkGMEzE8E/3KMUrMR2chchPxlqnomp1FcOySsKEyR+sEfQOs2lpfCjc7GYb1gD8eAsN6UJ4Th4yN2j3RLqvWYy1aiVy8AmvxSuTqPDyR0EUru4uy0i85A234QMTgvoioPbtgpyZiQWUZlBZBWRGUFja4H3lcVkRi8TZEwAcp6ZCcDikZDe5HHtfeT46sCRhGY0t9/jTwR36l9BsG51ylLPXRh0B8Ysefm68SPrgLvv8/SMyEGz6CcWe0zrVi+GH2dbD2Vcg4FCa9Xx8100EIdh1+vDPaYo48F9l2gKPzwKGiooLLLruMpUuXIoTg9ddf56CDDursabWYcI3FgnuL2fBhNUlD3fR/0E1MdxXXK6Uk8MoWvA+sQyQ4if9oKK7DGoc5ajO3os/YQmhFhVoYLYwUznJqiCEZ6OcMRozOQhuVheif2jHRLpaFtrEUflqtxHxhXmM/elKsaid33EhVFmB4LqQ1TtbqiOxRaVnI9ZuQi1ZiLV6phH35WmW5AiQloA3rj3bMIXh7ZGEO6kNK317tPm6LKCnEOX0qet4q8FXVC3hZEZQUQkVJnb+/EZoGSWl1om0MGIF0e4jy16j3Lp6lLgC+5ouCJXsiv8L8kf+DPoPh9Ckw9jAYcygk7kZXk5Qw8yN4+wao2AbH/gnO/htEt/LXQdVq+OUsKF8MQ+6EYfer+PcOm2cJhJ8kKarltbGaoy3umrfadcQDlOuvv57jjjuO//znP4RCIXy+lhXb2hsomR9g1nWF1GwKM+BPSQy+KZnyKmVVW8Uhqq9bSfiHMpzHpBD3TD+01Ho/piz1Eb7hazz/WY4UIPuloh3VS8Wlj8pCDMlo5EdvM1KqWi6L8mBxHizeSNLiPLTqgHo92l3vRx+Wq9wuuyNzVErEthLMWUuwFq1ALl6pEoGqI2IW7VElcCefpnzow/ojcjLroovM3RnpUl0JS+cql8jSObBkDmzbTJ20RcfWW+DZPWDouKZWea01npAMen3yTu06QNT2v3j8PigrbnzhKCsisGUjWBaeg49Sop7Svk5aLUUryYOX/wiLvoEeI+GWz6HX6NYPlPchzLhM1b8+8ivI7sDSXrIIwk+A8QLgI2SejGrn0TbszlB7gMrKSn799VfefPNNAFwuFy7X3h/xYBmSFc+Xs+zpMjxdHBz+YTbp4+vDD+Vv1ZTfuRJZbRLzaB+iLs1qFAppfrOG8NVfQKmP0G1jCV8ylJTcDvgpKyVsLYu4WzZGRD2vLmsUlwMG5hA6bjjG4BxiJw6BPpltbvq806kUlWAtXoW1eBVyyUqiF61AlFVGqlA6lB/9lKMRQ/ujDeuP6N1dxYvvboJ+WDC9XsyXzoG81fWvd+0FIyfA4DFUduuL0WcwKV1zO34enmjI7q5uDfBFLgqe3b04LCVsXQWrphGz6Afc8z8D3QEXPQ3HXqvutwYzSMyKe2Dja5B2EBzyb4jp2kFz3Qbhx8F4EfCDfi4476amPIM9IvLsD52h3roB8hZ22HC6lMjuw+CSnf+c2rBhA2lpaVxyySUsWrSIUaNG8cwzzxATs5sy/TqAmk1hZl5fSOncAN1OjWXU39JwJUTcM34T+chWeKsUbUAMcR8PwDGgPrpBVgcx7vge8/UFiEFpOD89D29OG6sF1gr6kk14Zq3AsXwLrNgKpapmCg4d+mfDiaOVpT4sF/plg8tRt9jbUQ2tZUk51pKVyMWrsJasxFqyGgojlSA1DdG7O8ZBI7AG9yHuoFGI/r32jB89GIBVi2HZXFg2j4RFs9DzVta7WdKzYPAYOPkiGDJGRaYk1rvTjH01Tr45jBBsmA8rp8GqyK1anZ8rNpXgyFOIuuhxSMlp3bhSwpavSJh1Iw7vGhh4M4x8BLT2VxnVxAaiHK+C/y0gBPr54LwLtP6RPfZQFUrszlBtxjAM5s+fz3PPPce4ceO4/vrrefTRR3nwwQc7e2pNkFKS93E18/9ajBCCcc9mkHtafdmi8IIqaq5dCWt8cEEKiY8MRHjqLVNr2kbCl3+O3FSJfvPBOP56KMLtaHkSyeYSWLwRlmxSES9LNtaFLnp0DbNXhop0qRX0/jmq1G4HI0vKsZauxjl7AdqKdQRWbYCtRepFIRC9uqEdPBJtSD+0of1VPHq0Z/eHL4aCEUGfVyfqrF2qFjEBklKx+g4jNOFYosccokQ9vXN7jO5WfJWweoYS85XTYO0sCEdcdF36wKiTod9E6DeRcpcKc23iUtoV5Uth7k1Q8D0ipidVY94nfsC57Zu39IH5MRivkxT1M1LqoP8RnHeC1rd9Y2/HgdUZavLTHTpcS0sN5+TkkJOTw7hx4wA488wzefTRRzt0Lh1BqMJk7p3FbP5fDaljohj/TAYxXZWAypCF74mN+J/ZiJbhhtdyERPi6gReBgyMe3/CfG4mokcSru8nox28k5+xlgV5xfVCvmSTanpR63Jx6CpU8djhMLg7DO1OWboHPK4OjXSRUkJRKdaSVcilq7EiN7apEEoXYHXPQhszVAn6kH6IQX0RsR3YTHtHhIKwZqnyoy+fp7ZrlqoEIFCLk4NGwSG3qe2g0ZDZlepIFFJHtNbb6yjNrxf0VdNg0+JItU4dckfAUVfBgEnQdwIkblfSu7W/WPxFsOgeWPMKOONh9FNUpJ0DWhtdrVKCNQfM18F4H6gC0RNf+E6CxrkkpQxp27i7oCWlhpegMlwdwCVCiPXsq52hOokuXbrQtWtXVq1aRb9+/Zg6dSoDBw7s7Gk1omiGj1k3FOEvMhhyWzL9r0mqq/duLKuh+toVmMu8uM/tQszfelFuVNW915pfQPiyT5ErStCvGIXjoaMQsY2/CFp+GY5FG2FDqRL1pZvra7q4HDAgp97lMqS7csG4t7PQ2+lWkFLClkIl5MtWq1IAS9dAiRLFOgt9/HC0wf3QBvelvEsyxO2BBhzBAKxegnvubzhWLYJ1y5TFXivoCclKyC+5JSLooyCr+z7b7alFWBZsWV4v6CunQUmkrYU7BvoeBGfcqyz1PuMgqp0JUbWYQdV6b8lDYHih37Uw9F6ISmnT/6CgBMJvg/E6yKWAB/QzwXEpaIfg97UvRHJXtMSSP2m3zuAA4bnnnuOCCy4gFArRs2dP3njjjc6eEgBmSLL0iVJWvlhBbK6TI/+bQ8pwla0pDQv/c5vxPZaHSHQQ96/BuI+LRM6WAmET46FfMB6dBmkxOD8/H/3o7UL/fEH4+39JfG2qqgAY5YQBXeH08TCkmxL0vlmNml50BNKyEJsL0FauJ5y3FblstRL08kq1g64j+nRHP2wcYnBftMF9EQN6Na20uDv81d5qWLlIFdBasQBWzIe1y8A0iQWs2ATlZrn4JmWdDxoF2bn7t6ADhAKwfm69oK/+HbwV6rXELkrMT7hRlRnoPqz1i6a7QkrY9DHMuw1qNkD2iTD6cUjov+v3NjteNTHOW3Hr70A4DNpYcL4E+jkgWt5Xob20pJ78vt8Rai9g+PDhzJ07t7On0YiqtSFmXldI+ZIgPc+LZ/i9qXWZq8YaLzV/WokxvxrXqWnEPtoHLaXeOhdrynDfMBVjUTHauYNxPnlc08Jfvy6H29+GTSUEzx5P4OzxJI4ZoFwxHYgMG8g1eVjL1igxX74GuWId0ZGwRdPpQPTtgX7sJMSgBoK+JxZFK8qUkC+fDysj27xIgwxQ4YkDR8Jhf4CBIynP7IHVpSspqXtBGoppQE2ZalBdVQzVJfXb6mKoqt0Wk1hZhAj5IT4V4tLqt3GpEN9gW3vf0FRd9rwZ9Quk6+aohVOArP4w7sw6fzoZPXfvRa50Hsy5EYp+Ux2ajvoOso5u+3jmzxC6BLe+kaB5MVGxN4E2uMOm2xrsKpQHIFJKtvwnxJonKtA9ggkvdyHnePVTV1qSwMv5eB/agPBoxL08EPdp9THMMmxiPj0Tz0O/QLQT57tnoJ++neup0gcPfAgfTIMeGfDJbXh7R9wd7RV4nx8rb0lE0Neo7eoNEIq4NTxRiAG90E89Gl+3TKwBvUgcM3z3F+mSEkq24Zz1C47Vi2HjKiXoW/Lq98nspgT9pAvUduBISGscUmrtyUgXbwXkLSRq+TT0bashWNVYyL3l9Rej7YlOqBfs1G6EMweBK4oow6feX7IJ1s9T981wk7c3cn7pDug5Go67TlnpfQ9WY+8JfFthwZ2w7i2ISoPx/4TeU9qe1CR9EL4TjGdA9KYq9AWGNY4orfPWR2yRP8DwFxksuslLyS9hMiZ5GPdkBp4u6t/AzPNTfd1KjBmVuI5NIfaJvmqRNYK1oIDw1f9DLirEPKEnob8dgmfAdour3yyAO9+Bkmr40/Fwwx/A42q126NuQXT5WuTytVgr1uJZsgqxaSuhWuFJSkAb1AftkjPRBvZBDOqD6JFTF4deGxrY4QJvmrBprbLQVy6s35YW1ScWde+jkonOvRoGjISBI3ZvFufOkBLKC1Rtloa3og0AxABWbCokZyrR7j68gUXejDUel9KkcJd3R8lQUoK/ertfAsV4t20EKYkZdgT0GgPuPbCQ3RDDB8seh2V/B8uAQbfCkLvA1Q43ijkDQpNBrgHHn8D5KIYv0HFzbiO2yB9AbPq8mnl3FWP4LPrc7GHEdVkITaiyBG9txXvvOoQuiH2uP+5zMuoSm6Q/jPHQr5hPz1C+9/fPxDtpuwzF4kq4+334Yi4M7Apv/hmG5rZoXjJsqLT/FWuVqEe2lFbU7SO6ZmL16oZ13CRixgxDG9QHuqS1qw59iwj60devgK0blJCvXAirFtXXWHE4VUr+ISdC/+FUZvXA7DOE5G65u3deO8Ky0ArX4shfCqVr6wW9sqh+ny69leV8xOWQO4KyhO7I+PTds7gshCoXEB0PXerXawKRi8LublTSBGmpMsDz/wK+fOh2Boz6B8T1bMeYQQjfC8ZjIHLAPRX0IyIv7gMi30wD77qXsBt57xMESk3m313M5i9qSB7upt+9bmJ66AhNYG4JUHPDKsI/l+M8LInYp/uhZ9eXybWmbSR89RfItWXok4fjeOQo5XuvtcylhI9nwr0fqEXW20+Dq4/dYZVGWVWjRHzFOtWObsU65KoN9XVcXC5Evx7oRx6MGNgHbWBvlVQUH1sXg96uAmU7QkooLlALoqsit5WLSM5bhajtdxqXAP2Hw5mXq+2AEdBzADTIXt6jiUVBH2xaAhsXqiS/jYtg02KSgpESCrpD1UQffoIKL8wdoRYst6vR0hH1efZqpAWVq3BvnkrUxtehcgGkjIJJ70LGIe0b25oHwckgl4E+BVxPgti7JLElC692A+99mPyva5j7l2LCVSZDbk+m/1VJlFeWKev9/QK8d61FmpKYx/oQNbm+LIGsCmLcPRXzlXmI3EScX16AfkRja0crKIfr/wU/LVVNpx+fDH2aJt5YGzbj/vtLaEtWEdxSWP9CSiLawN5oF5+uxHxgH1U+dzc1cq4jFIINK+uEvM46Ly+p3yerO/Qbhn/SCZh9hhA39pDOi3CRUhXSylsImxZFBH0hFDRYwPXEQ+5wOHwKNSm9MHIGkzh4Ajg7oXJlZ+MvhJJZ6lY8C0rnQLiKWMCMyoQJb0LPC0G0o8yFDEP4ITD+BiId3F+CfkJHnUGHYrtr9lOC5SYL7i1m439rSBzs5rD3s0gcoL7wsjgM92yh5qdqHOMTiHu2P3qP+sgY86vVhK/7Ggqq0a8bj+OeQxExDXywpoX7g+nEPP01IODB8+Diw1VlwgbIQBDjxXcxX3wP3enAnDAS1/mnIAb2RhvYG9JTdru7RVSUwuqFjaxz1i2vjz93uZW75fCTVXnbAcOh79C60rZ1TUD2lFvBNNAL18KKjfUW+qZFjd0tablK0A86V227D4e0+pj5YO2cDwSBN3xQOr9e1EtmgzcSECh0SBoKPc6H1HFUOPphxvYmJbV9i7q6WA6B60EuAP0CcD0LovXN5fcUrXHXNPdtbLG7RgjxOirmvkhKOTjyXDLwb1TRszzgbClluVDf/GeAEwAfcLGUcn5LjrO3kpubS1xcHLqu43A4dms45dapXubcVkSwzGTQTckM/FMSmlP53oMfFsJda8BvEfNAL6KuyEFEkp5ksZfwLd9ifbgMMTAN53tnoo3Nbjz4ko3wl3eIXbCB0EF9cD01RVVz3A7zl9kY9zyF3LgF7eSjqLnmPGRacofVkWlCKAR5q1QC0erFsGoxSSsXopVsq98nLVMJ+aTj1LbfMMjtq9rHdQZVxbBxsRLxjYth02KS85cjjEhpKIcLug6GEScpN0vucOg2FGISO2e+nY20VNelWjEvmaXK/MpIjZ6Y7pA6DgZcp7bJI8BRv6Db7gqfsgKP4xE8judAJoDrE3Cc1r4xW3JYjHa9f0+6a94EngfebvDcHcBUKeWjQog7Io9vB44H+kRu44AXI9t9mp9++onU3Rj/HKoyWXh/CRs+rCahv4tJb2aSPET5183NAWpuXkX4p3IYHg0PZeOJCLiUEuuDpYRv/Raqgjj+eij6LRMQrgbhjtV+eOxTeONHSI6l+pFzCZ0wvEk8t9xWTPiB57C++hnRsyvOd55Enzi64/y+UkLR1noxX71EbdetqLfOHU7oNZDwyEkYvQcRM/JgJeh7qJxtE4wQbFlRJ+R1t4oGF6CkTOg2lEDvCRjZA4kbPAky+6lzOVDxb4u4W2Y3crsAqsxA6lgYfLsS9NRx4MnY+XhtRVaqkMjwk0Q7Kwkap+GOewnE7g3zNCnHxzeEk9rXk6lVJowQIgklvHUrc1LKX1vyXinlr0KI3O2ePgU4LHL/LeBnlMifArwtpZTATCFEohAiU0pZsLNjmKZJ6XZiYpomhtG+K+GOaO24hmE0eU9Lxmh4XuXlzadAl04Ps/x+L8FiSe6UKHpeGYV0eSkpqoF3S+HpiC/8rkwqjtdA9yNKSxFbq3Hd8QuOHzdhjswg+NjhyH7JUF2h9pcS17eLiXnsf4iSGoJnj8f352MpMwNQUVHvozZMHP/+Etc/3wfTInz1+YQvOhVcTigt3eG8d4qvGsf6lejrV6CvX4Fn9WLceauhun4sMz0Ls+dAzHMOx+g9ELPXIMyuvcDhrDtmUlJS5ENq/YWmVfOWkqpNq3BvW4W3aiOOLcvRtyxH37YaYam/s3S4MTP7YfQ/HDN7IEb2IMysgci41EbHC0UnQWXVDg/VYXNuw/6NkBbCqKK6JA/NDKIFumE5k0DfeY/bJsc0fTgqF+GomB+5zUP356tDCB0zbiBG5ukYiaMwEkdhxvZu7FP3Ab6d/31bf57VeByvEuV4AU1UEDJPYFvplYSMgSSFNVpSHbIlx9x+H0tfj+X5Acs1G4SJ4W9jxm2E1tSTvwy4HsgBFgLjgRnAETt5267IaCDc24DaS3E2sLnBfvmR55qIvBDiCuAKgKysnVfb0+bdhChf1I7pbjeelFiJQ2HM07vcVwjB8ccfjxCCyy+/nMsvv7xD5mB4JWue8rHlPyGie2iMeSuWhCHqzyrXBuCufFjkh0mxcF82ItsF5eVgSRxvLcX18AywJMH7JmBcMqRRzXVtYwkxj3yKa/oajAHZ1DwzGXNwJC6+vD40TFu8EtcjL6GvzsOYMJLQbZcjc7q0/CTCIfSNa9A3rMCxbgX6BiXq+rb6fwHpiSHYtTc1Bx2DY+AIjF4DMXsNRMYltuvzayvCX41esAJ9y3IcW1egb12OXrCSFG+DC1BSNmb2QEKDj8HMGYSZPQgzrWfHp+N3FKYPLVSBCJchQmVo4fLItgIRKkOEy9FCZYhQuXotXI4IlSOw2N4jLfVoLGci0pWMdCZhuZKRzkQsZzLSlURc2A3SJCZ/FY6K+ejVyxERt4vp6YqROIpA7hVK1BOGgL4n4+hriHK8jsfxPJooI2Qegy98G6YcTsjYXXVmDEzXDKyoH5DO9WBFoQUORw8cibfUDTzW5pFb8992PTAGmCmlPFwI0R94uM1H3g4ppRRC7CC9bqfvexl4GWD48OFy+1jfoqIiHLU+V03r8OgITdPQWuDTnTZtGtnZ2RQVFXH00UczaNAgDjmkPnzLsZMxdF1vEsOckpJC4XQfc24pwptv0O/KRIbckowepSFDFv5nN+F7aiMiRifmhf64z6qPexfrynHf+gv67AK0I3vieP4EPLlJ9YMHwvDCV/DC18oS/9v5OC46jMTtm25UVBH/2GuYH3wBXdJwvvgA7uMOJXZHn7FlkeKtUJUU1yxR29VLYOPq+lK5Dgf06A+jJkLvwdB3CPQZjMjqjjdi8SS00q/frvhvI4ReuJbEbbNh8xLYvFSFLdYWygLwxEHOYBh/Ft7kHhjZg0gYPBE9NgkdVcmytXREzHqzY0gJ3s1QsRQqlkD5EhJKFqJ71yMs/44Hc0SDKwXcKapQV0IPcCerx+4UqsNu0NzEuQ0IliKCZejBUqi9+VZF7pcpca8dt9bt0v1ktU0dh+7JQAd217LxDj9b6VMNO8J/B4pBOx6c9+HSxzb5G7b279Pc/hKLMKswoqdiuWdhapXoZBPDFXi0I9A80eABYe25evIBKWVACIEQwi2lXCmE6Neuo0NhrRtGCJEJ1IYQbAEaplLmRJ5rHy2wuFtDS0sNA2RnK/93eno6p512GrNnz24k8q06rl8y/55i1rxRqYqKfZJN6mgVHROeX0XNDaswV3hxnZZO7EO90dLUv6gMGBiP/47nsWngceJ4+WT0Pw5tHOHyyzK4813IK4JTx8I9Z0NGYqPjS8vC8flUXM+8jVntRb/8HBzXX7Lj8ruzfyb+6btwrFwIgQZtD3N6QJ8hcOSpdWJO976N4s73GJYJ29ZB/jIl5JuXQv4ykreuqnO1oDtUTZW+B8NRV6pF0a5DGkW21Cb5EJu0gwPtQYLldUJOxdL6bbiyfp/oHKyY/oRTJ+FJ7B4R7Xrxrnu8C/dLqKVRSNKCcBXlhetAmiR1Hd2+UMaOQPrBeAnCjwKFoB0NzvtB7/gezErYV+LndwJMx6IUohyI8BASXSfjZgSiRYrScloj8vlCiETgU+B7IUQ50N7iZZ8Dk4FHI9vPGjz/JyHEB6gF18pd+eP3ZrxeL5ZlERcXh9fr5bvvvuOee+5p01gVCwyW3ePFv9miz6UJDL0jBYdHQ3pNvI9uIPByPlqGi7h3BuM+tn5R1PxhHcYN3yDXlWGe0ofQvRMalyTYVgH3fQD/m6vqzbx/ExzStByyNX8Z4fufwb1oJeaw/ngevR1twA6aTm9eD4/dAj/8Fy0jh8AfLsQzdIyy0HsPgpgOKg3bGixL1VXZvBTyl8LmZWq7ZWV9swkhIK0HdB2Mf+DRmNkDiBtwEGT1a5LOv1cQroHK5VCxDCqWEle8EL16BQQafGWcCZA0RIUTJg2BxCGQOAjcSVTvqVZ8oATdlYgVnVv/uLOQATBeAeMRkAWgHQHO/4A+sWMPg0WI5Y2FHSduRuJhMt7y3gjpaX0zkxbSkhDKf0kpLwR+llJWAPcJIX4CEoBvWnogIcT7qEXWVCFEPnAvStw/FEJMQV0wzo7s/hUqfHItaknlkpYeZ2+ksLCQ005ToVaGYXD++edz3HGta7IV9los+Xspa96sxpOlqX6rBynrPfRLGTU3r8baGCDq4iyi/9oTLT7ily+oJnz791gfLUP0Tsb55QV4hzWoz2GY8NZP8I9PIWzALafA1cc16bYktxUT/vtLWP/9DtJTCD5wPcbxhxCT1kyEQU0VvPwwvPWUig657m9UnDwZ3J49IyQAUqJVFKAXrITKiKhvXqYs9dqMUICUriordPBRyjLPGQTZAyBKORT2eJz8zjD8KoSwcpnqVlSpRJ2avPp9NDdabF+MlInoGaPrBT06e/8vVdxSZFDVdjceArkFtEPA9R7oh3XsYQhiev6H6f6JUsqpF/aLcTMGDfXL1yd3b8ZxSyz5UUKILOBSIcTbqHj52u5QsUBZSw4kpTxvBy8d2cy+Eri2JePuC/Ts2ZNFi9q+4GsGLL45ahO+LQZdz3XT688e0rt6sCrCeO9ZR/D9bWg9PSR8OhznhEQApGlhvjwP476fIGjguPsQ9JsnIKIatOJbsB7ueAeWboLDBsHfzldWfANkIIj52ocYL7wDhoF+7YU4rrkAb6AZ/61pwqdvwtN3QWkhnDoZbnhYtZ/bXanzUqpuQVuWKwHPX65uW5aT5GvglkjIUCJ+xGVKyLsOhpyBqpri3oYVUiIesczrRL1mnXJ3gOotGt9PhQ72nqKs8sTBENuTyvIKANx7w4Vpr8KLW/8YAk+D3ATaweB6S1nwHXgBlEiCzKSK1zCjixChoSTolzYS9j1JS0T+n8BUoCeqibegPjlKRp632Q1YhsRfYBAoMdHdgiP+k43WS/m0g/8rpuaONcjSEJ7ruhF9S/e6VnzWvK2Er/sKOT+ysPr0cWi967/wospH9DPfwn9mQUYC/PMqOGlUo390KSXWt79i/O0FZP42tOMOwXHnNWjdIhFM24v83F/hkRtURcYRB8P//U81vuiwD8NCK92Mvm0VVG6OiLoSc/zV9fslpEP2QJj4R2qSumNm9iNh4MGqquLehhmEqtVQsVy5WyqXk1C6GN27HmRkHUBoENcn4mo5r17M4/t0SBPp/RZZCtaCRrfkqNUIYYEYB65XlO+9g3/dhNlMFa8QYiEOuuOovA3NGLDnfsE2Q0uSoZ4FnhVCvCilvHoPzMkGCFWa+LYYWIbEGadx7Ddd0aM0SlZUwoNbqf6+Cn1ILHHvD8ExVOWrycoAxn0/Y740BzJicb59OtqZA+sXVi0L/v07iQ9/jKjwwpQjlXsmrnGzD2vFOowHnsWasQDRrwfOd59CnzCq+Ynmb4DHb4Pv/gNdusJj78EJ57b9y2MaULguIuAr1G2r2iYFGyzaJmQoi/yQyWqbM1CJewMxr0vvj+9ki7bOzRIR81pRr15bb5kLDWJ7YcX0JpRxAtGZo5WYJ/Tb5aLnAY2UIDfXi7ms3TaIwBZdQRuBP/QHwtZBJCSe2uHibuGlhg/w8gWCKOK5gmiOp8yo6NDjtIUWL7zaAr9nsMIS31aDUKWJHiWIz3Xh2qijuQT+N7bAg+sgJIn+a0881+QgHJqyuv+znPBt30FhDfqVY3DcdxgioYE4zF0H97wPi/IwR+Ti/ecUEic0bhwsyyownnwd873PIT4Wx4M3op/3h+YLhvmq8fzrGfjwRdB1+NP9qv+op4U/R0N+2LqqXsjzlysxL1jTuMlESlflIz/icmoSumJm9idh4HhV03xvI1yDXrEAvWY15G2qF/Xq9dQVchUOZYUnDoHccyBhICQOhPi+oEfVLYLul02424s0Qa7ezkJfSH1SkgDRD7SJoI2ovwn1WfprIvt1qGvGws9UqnkbiyqiOYZY/ojO3uMGbE0ylBs4A1Vnpu59UsoHOn5aBx5SSkIVFr6tBtKSeDIcRKWpcsAybFF54gKMuVUwPgbuyyZ6lHKbWOvKMK7/GmvqesTITJz/OQdtVIOksG0V8PDH8PEM6JIEz19O1aRejV0zYQPznU8xnnodvH70i07DccMliMRmyhIZBnz8GknP3YNWVgR/+CPc+Ah0ydnxyRlhXHM/wbFpEZTlKVEv3lBfQVFokNFLifmok9U2e4AKV/TUV9Wos8w7U+ClhEAxVK5oevPlk1i7X63PPHmUqnhYK+ZxfUDfCyN09jZkAKyl9Za5tQCsxag4DAAXaENAP62BoA8FEbOzUTuUEKuo4mXCrMFJf5K5Dyc7iDTrRFoTQvkZUInyywd3z3QOTKywxL85TLjawhGtEZPjVElNpsTcGsDaFsLc4Cf2hf7UHOFACIEMGphPTMf4xzRwO3A8dRz65aMQtQlLwTC8+gM88wWETfjzCeoWE9VoEdT8bQ7GA88h1+ShTRyN454/o/Xt0XSSUsIP/4Wn/gJ5qzEHj6X64bdJOOTYnZyYBTP+DR/+lbjCdUiHW4Uh9hoDh1xUL+aZffe+iomWCd5NOItmK8t81aZ6MQ81iDVwxKhGzxmHQsIAqrUcjLh+Kv67rS3k9nZkCCgHWQGyHCjHpW9CEAIjG0SSupEY2cbv3HqWVcoit+Y3cLusgLrCXPGgDQfH5Q2s8wEgOmdNQopKKngHP1PRSCaRm4jiUESzNRw7n9b8F+ZIKVsX92ezU6SUhMosAkUWSIjOcuBO0RFCYFUaWFsCyJBExOgkzRiLluTEW1qK9ttmQn/9ALm2DO2sQTj/fjQiM652UPhhMdz3b5XQdOxwldCU27g4l9hcQOj2x7F++B3RPRvnKw+jHTWh+dK/c3+DJ26DRTOhZ3947lOqhk3Y8RdXSlj4NXxwp2pk0W0oVVe9S3jQUaSkdVKRsB0RrlGLn5UroWplxHe+EqrXgBmob+fnToWEAdD9TLWtvcXkNIr1rksK2lcEXobQxSo0kad+pcnyiHBX1Al40+d8TYaJq/1xEmruIBp1gi8SgSRinTEgTPCvALmuwb5dlIjrf2gg6D06P2EKMKnE9HyOGfU1YQxiOINYzuqUiJnW0Jr/xOlCiCFSyiW73tVme0zTZPTo0WRnZ/PFF19g+C18WwwMn4UjRijr3a0hwxbmlgBWhYGI0tB7R6FtdqIlOZFbq3Hf9D2Oz9ZAr2ScX1yAfmSD4Ka12+D+D+DHpdC7C7x3Ixw6qNE8ZFUNzmffxvnu/7DcThy3X4l+6VnN90Fdswye/gv89D8VBvnAK3Dqxar0wI5CIlf9Du//BVb+Buk94U/vwsHnEm5PEaz2IiX4tkDVqnoRrxV0X379fkKD2B4Q3x+yjoH4flSKTMzYviRn9u28+XcEsgyslSBXbrddT2JUpFRvI4GOi1jhEatc6xu5n9j4+YjFXl4pADdJiaKRhd/kAhF53qHlAVZEyC9pIOiNG5vvDYTJw8v/8PMzRIcRoeGkuq7Cwc5rZe0ttEbkJwKXCCHWo9w1te3/hu6Wme1nPPPMMwwYMICqyip8BWECxSZCF0RlaTgTBJpDYBWHsAqCSEDLdKGluRCaACkxnpyO8chv6GGT0I2jibvnaBXzDqoM8FP/g9emqqbZ952jmng0aMEnQ2HMdz/DePYtnBVVGCceRuw9f0akNxNauC0fnr9XxbxHx6pY9wuv3/mi6qYl8O+7YN7/ILELXPqCiknfkxmiYa+ywCtXQdUqYosXo3vXgncdGDX1+znjlJB3OUxtEyK3uN6gN3Yb7dF2fu1FGiDzcGpz0cVaCG1WQm6tAIob7OgC0Re0YSDOodqXjWX1JCGxZ0S0E9QCcSuwahN6tJatl1REPteU2L1zgVliEWQeXj4nxCLARTRHEq6YhDCzcOxDC+Ot+UseR31svE0ryM/P58svv+S2G+/gycefIlBs4k7S8WQ6sDCRfguzwIf0WYg4HUdOFMKtfp7KqiCyoAbjrqloJ/Wl5i9jkN0TlMBbFnw0HR75BEqq4dwJcMfpkFq/YCqlxPr6F4x/vITM24I2YRTea87H6t8Tsf0/alUFvPoo/OsZNfaF18MVd0LSTmLMizbAh/fA7++qFnTnPgzHXVeXMdrhSBOqNyirvGpVxNUSud/QKgccnhzMmD7Q+1C1CFor5p7MfTv7U5aCtQrkqu2264AQ8bXXKSMVtP6gn6K2Wn8Q/UHkqq5JEULVrRPo/RkLP35+xMv/MNmKRgpxXEQ0x6IRR6m5D130I7SkrME0KeVEYBmNBb5W8PeurrU7I3RDJOSqY9ClRIph4Hh2p/tdf90N3HfTw5Rvq0QAcT2dOGN1pCmRW0NQaoJDoHePQiTWL6zK/CqoUPVUnP89F/24PvXNN+avVyGRCzbAqF7w1nUwLLfRca15Swg/9H/I+ctUvPsb/0A7bBxW2XZJysEAvPcCvPSQqiN/0gVw3YOqp+kOEFVFeL55Eqa9BZoOf7gNTr4NYjugDZqUEChSAl61GqrWQPVqEspWoPs2gNVg3d+ZoGLJuxymhDy+n3oc15uKSpWw1REVHfc4MqhEu07EV9eLeaM65k4QvUHrB+Jk0PpRWZ2BafUmOWUfdzHtQUyK8fIFPr5D4sVJX+K4hSgORuzjXVJbkgw1MbK1G3q3Eikl/33/cxJdKQzqNow5wd9xxGg4YjSssjDW1iAYEpJ19KwoFfNuSeS2auQ25V4Q2XEITyz6wD7qcUk10U9/DZ/PU9mqz0yB08c16q9qbdiM8feXsL75FdJTcPz9NvQzj0foeuMJmiZ88S48+1co2AQTj4UbH1V9TndEVTH873GSvn0ejKByyZz+V0jO3vF7dkSool7EawW9OnI/3CCLVXNCXC+s6O6E04/EkzE8Iuh9ISp9J1b5Tkrn7g1ISyXtyNVgrQG5mjjXMnSxDvwbAavBzl2UkDvOiMSC91NbkdvEtWK0szTtgUSIlXj5nADTAYjiYGI4GRfta9TRkch2Ok/27UtUa3E93aHD7azUsBGw8OUb/Dp1Gt/8/CVTZ3xLIBigqqqKC049j7fufwURrUF3F8KjKYGvDCA3V0HQgKQoRHY8wu2AcgH+ELzyPUnPfalCIq89Dq47CWLrE55kaQXGs29ivvsZuF04bpqCftnZiOjGGa1IiXPWVHj1YdVGb+BI+NvrcFCTMkL1RMSd756HUIDQ6NPxnXArSQPG7vqDskychd/hqF4GK7fUC3qwpMFOAmJzVRx5z8lKwOP7qG1MN9Ace7ZaYkchJVAUscTrxVw9XkvjaORoNNELwxqK7rqgXsi1viD2nuSafR2JQYDpePmcMKsRxBDDKcRwEjq7t6VfawhSRRlrKU5Y1a5x9lj7vwMFaUn8hSaBYgOhC/7+2KM89eo/wIIfP/meJ597krf/9gpaphuR4sQ0TQiaWHlVUBkAjwPRJwVR61iVEnxBOPRu2FJG+IhBeG88gaSR9aX8pT+A+fpHGC++C/4g+rknqWSmtGZcJwumE//E7TjnT4OuPeHx9+G4sxv9EmhEVTF88QR8+7zKUp1wHpx2NzVRLfgyWGFY/w4seYT46jXqOU+WEu9upylBj++rbnE9myx67lPIMrDW4tLnK0s8uKVezGnwq6TOvdIHxPERAe+jFkJFJpURV5q7s0sx7GdIDKS+Fcu5gCJ+wqIUnSziuQoPh6Ph2fUge4AwPspYRxlr8UUWy92yfXWXOrv9335FuNrEu8XACklcSTrRmQ6EDrLcwNoaRFYa4NTQB8Qoy920ENu8iGKfysjOiYe0GBVRA+ANwNZyKKuBpFh4+lKq+9WLqzRNrP9+R/iJV6GgGO2oCTjuuAqtd/emk1s2D567B379Cj0pDe/1DxNzyc07btBRVQJfPB4Rdx8cfJ5yy2RHfsbuLOrEDMDaN2Dp38G7EZKGUz3ydUJph5OSkdu2D3dvICLkyDURi7z2/lpqi7HGuUBKAVauEm7HQZFIllox79bqyBWbliMxMNiKwWYMNjXYboVE9cvbxTBiuAY3ozq8QUdbMEQAv6uAUmZSzVZA4iGFbMaRTC+qq9qXe7rXtP/bl7HCEl+BQajCRHOJ+oVVv4m5IYj0mohojSPOP5ajLjsBKSWy1IfcUo0Im8ikKLScBIQr4jMPhaGgAiq84NSVwH91t+q/GhFX87c5GA+/iFyxFjGsP86n/4o2bnjTya1ZqsT9h/9CfBLc9Cjlx50HnhhimhP4qhL48gn45rkG4n63ykzdFWEvrHkZlj0G/gJIHQ/jXoDsEwhtv9i7NyIlUAzWOiXg1jpincvQtPXgy6NxVW0REeze4Dg7IuC9qahKxZS5pKTsGzHU+yqSMAYFEQHfTsyJxP0j0MnAQTfcjCFQnYxm9CAlaXBnTh0Lg2oKqGYLVeTjT478eiOeTEaQTG+i6gtk0N4CA53d/m+fRkpJuEISLDJVvZl0B1HpOkhUQlNJGKGB3tWNSHaqqJmaEDK/ErxhiHFidY+HGCfCoYNpQVGFCocE1XYvLR5W19Q12BZr8nA98zbhGQsQOV1wPnsv2kmHI7Z3t+Sthhfug68+gJg4uPY+uOgGiEto3grfXtwPOhfO+GvLxD1UBategOVPKj97l8Nh4jtqu7eFKkpLNYqQ9ULeaNvItSJwaDmYskcjIVeulh4gmlaHNHdzA4gDDSXmW7cT8s3NiHkXHHTFzVgcdMNJNxzkIBp0ig2HOudvI5H4KKGKfKrYQg3bkJgINGLpQpJ3MFHhDDITe+6W0gjtbf+X1+Ez2kcwfBa+LRamX+KI0YjJdqK5Rb1rxpBoKU60TJdyzQQNrC3VUO4Hl47ITYRkj4pwkRJKq1UxMcOEpBhVTMxV/+exNm/FePJ1PJ9+D3ExOO6+Fv3C05pmquZvgP97AD5/G9xRMOV2uPQWSNyBj7eqBL58Er59TnVMaoW4i1A5LHwWVj6rImWyj4chd0H6hDZ/rh2CDIHchFNboNL1QwUNhHwdjS0jZ0Swe6m2b6I3aL3UVuRSUaainFL2xqqXewESicSP1MqBMBZOBB4Erasro8R8SyMxD7MZk63URxlpDcR8PE664qAbDrIbifneQogaSqMX4nXnY0X+56JIIo2BxJNDHJloOCgNqIvP7qp905pSw6dF7jZs/3fALflbYYl/m0Gw3EToEJWp4Ul1QsDCXBuoc83oPT1o0TrStLC2VkFhpOVcZhwiI0YVEpMSURNA21apCorFuKFHOkTX/8PKsIGsqCJ08rWgaYQvOpXwxaeT0mM7v/u2fBXn/vGrKm79wuuVwKc27vRUi6gpg++eaCDu5yife07Tvq5N8G0lesWjRG18HUyvWkQdchek7KDm/O5AVoBcXy/c1vqIdb4e5CbAapAU5FEirvVVi52iN2i91XOi6y585DU7eW3fRyKRohqplRFkCxIfFr5GW3Xfi8Qf2TZ83Q9YEOlbXlg3sgsND4IYNKIRkZu6H4PhEYBFGSUYbMakgMZinomDrng4GEedmGftlWK+PQEq2MZCSlkDURATyibN3Zt4cnDujZ2hhBDxqFZ82agG298DQ4GbgUXAv3bnBPcWpCUJlJgEigykhKhUHWfEuLO2BpVrRq93zQB1fnfCJiR7VMx7rXXuC0JBOXpNAOlyQG4axEfXuTekaSKLy6CkXJX/PesEHNdNxuvczi1TUqiyVD94UWWpnnk5XHkXZOwgbr2qGM9nD+P55ZWIW6YV4l6xHJY9DhveIcoyCWWdinvU/bA7fJzSiMSQrwe5Aaz1xDpXoGt54NtE066TaaD1VC3dxB9B60VldQqm1YPk5EF7n9toDyIxMSnGZBsm2zC228pkVXCs+VWTpmKtkdngvtr6aiTgICZWj4h/w4uC2loUYNReHDw+QGCQiZNueJgQEfKuEct83yvH7KOUbSygnPUIdNIYiLuiGw4rmhT3XtwZCiXi5ahImsuAO1HZrqdKKRfuvqntHUgpCVdZ+ApU1IwzXiM604HmEhglQSgMYxk0ds1s53cXPZMQsZF/2mBYuWUqvODQMLskIpNicLgiFwbLgtIKZFGpcuUkxoNMwfnwLer9tf70ilJ4/TF49zmVsXrKZLj6r5DTTJlggJLNyuc+9WU84QChESfjPu8h6Dqo+f3rPwAo/FUtpm75EnQP9LmSiqyLsaJzcSe18Z9XSqAUrA0RIV/f+L7cRL3PFcAR8Y/ngmM8iJ4R67xn5H7TxOu6pKADQOAtvBHhLsSMWo/UiymlApMCTIrZ/rNUC5KZuBhA0BuPsFKIj8tsxupumdslGFSfdUwLa9GUlJUAFqkpe1lV0jZQQyHbWEAlm9Bw0oXhpDMEJx5K94LEtJaIfE8p5RAAIcSrQAHQTUoZ2K0z2wsw/KqJh+G10N2CuB5OnHE6VrWBmRcEvwUeUe+aCRpYmyqb+N2FEMrXXlgBpTXqEpmeAOnxyEjjDCkllFciC0sgbEBcDKJLGsIThVhR35Ba1FQR9eGL8OE/wVcDJ5wH194LuTtIYS9YA5//HX59G5Aw8Y9UHHIlVpc+O2/0bJmw6RMl7qVzICoNht0P/a6BqFSs1hTuktW49XfRxUoIbou4VtbTeJETIB20HqCNB3G+ui9qRTybijL1ORyI/nGJUWeNGxRGrPJCTAox2IZs6FaKAawYJJk46U0UE3HQJeIC6YJGMoL67Odan7CbPfe5Kv+zvsv99lYkkmq2sI2FVLMVHTdZjCaNQTj2MpdSS0S+rheblNIUQuTv7wJvhSX+QoNgmaoUWVvnnYCFsc6HrDYRLgE5TkhQ3Zt26Hc3LQL5hRxy0nEEQ0EMJGeedRb3/+1BtW84DNVe5ZoJhiDag+iaiYjdrsBXdSW88yyJbz6JVl0BR5+uWu712YGrZOMi+PQRmPmRqgR51JVw0i2Q1n3nAm34VIz78iehZr2qzDjuReg1GRytTBix1oHxHBivE+uqRsoosCKirR9SL+Baj8jiZ2zrxt+PkEgsKrAca5FaCdURy7xWyE2U5VuPA510HGTgoQ86GZFFyQwqy1wIGb1v1uzZy5FI/M4CivgVH8U4iSaH8aQyAL2Vi817ipaI/DAhRFXkvgA8kce1pYb3nQJlu0BakkCpSaBQhUS6U3U86Q6EJbE2B7DKDIQOWpYLLdWFaRpQHkRu89b73bPiVCmC2oiZwgrcIYMfP/gvsb2yCeuCiRMnctyJJzB+8BDEthKEPwBuF6J7NsTHNm7cYRqqaNjRB0NVBcaEY/FdciuJB++gBMGq6fDpw7DgS9U67+Tb4PgbILH5Bdg6AsWw8nkVChksVTHuox6DrqeohdwWf4gSrB/BeAbMLwAd9LOp9E7GkCNJSWlf9t6+iozYfsoKL4oId1HEElf3IVQXylADaCShk4GTAXjogk6XiJslo4k13hBhh3F2OAEqVImBxFUYuhcXcXRjIin0Q9vLf5G0pEDZ3n0GHYCUknC1cs1YIYkzTiM604nmFFhFIcziEEjQ0pxoGS7QBVQHEVuqED6jsd9dSqj0QUF5XcSM6J5GbIyKqQ77fISDQdhSiIxJAqcDKysdPSWpqbiXFkFpobLiRx0C19xDdZfc5k4AFn+vxH3FL6oH6jl/g2OuhZjEnZ981Vplta97Q2Wq5vwBBt2mwiBb48uWPjDfhfCzIJcCaeC4GxxXgZaFUbP/C4+FF0vfDFoxXnwYdWKuRFxuVzBNEItOOk66EsUodDLwVUWDlUpKYl80msbh2+w5mpYYEESZaST6BtItbthekS3bEg6o/OpKXsFgQ6PnpCUxgxKpqQRGzSWwdEHQsCAgkXEgkgS4hGqqbVrgN0FY0FXg0HqS4LlaCbQ3oMTdGwS3U7Xci/eAEJimyagRI1i7bh3XnH0e4wYNRqSnYsXHgEowUxMyDCXsZUVq4TU+EdI0eOEz9XpDV4tlwdxPlbivn6cqQV70FBxx+S7ruTvK58GSl5XfXXOqZtMDb4bEFiQ/NcTaDMYLYLwClIEYDq43QD+32WShfRVliXsbWOBFERGvv0m81CYqqp+6URE3SgYuhtRZ4Trp6GSg0fRvFAirv68t8J2DSZgK8ihjLVXkU1tiIIfxJNGL6mrlqd5XBB4OMJFviJRghSRWWIIA3SUQTgGmBJ+JlKqvgnBpCF2o2u/+MBiWsnDdDnBogI6ojZip9KkyBDkpkBxbHw7p8yO2lTD/nQ+p8Pk445brWRb2MSQlUYk67EDcs1Q3Ju+KxpM3w/Drv+CzR2DLCsjoBVe8ApMu3HlDbMuEzZ8Rv+QxnGUzwZUIg++A/n+G6Fa0XZMShzaLKP1lCHwBSNBPA8f1oE3cJ6NZJBYWlRHBLq4T7nDcVtBKKKS0GUs8KiLY6bgYgE46vmoPwkwlJbEfgri9trmzTT0Siyq2UMYaKsjDwsBFLF0YRjJ98NQmAQCw7y1HHlAin8DlSEsSLDPxF5popsSdouPJcKhKkBtDKpnJraFluRAx6nm5MZKp6tAQGbGQFo3QNQx/EK24Ciq2qiqOXRJVV6ZICQLpD6homaoacOiIzDSSUpI4/Jij+fa77xgydCiYBqKsGMqLlWUenwRpmc232gv5cf/6Op4fnofSTdBtCFz3Pow7E/Sd/ClDFbDmNVj5HHg3onm64h3wIDHDr1et8FqKrAbjHTBeJMG9BEsmgOMmcFwLWjNF0fYiJGFMShuIePF2gl5CgxgDAAQxoCWDlYqH4XWC7ohsmxPxYKjWEt9vlqr2S1SpgWLKWEsZ6zDwo+Mmmd4k04dYuuw3F+gDSuRDVSb+AgMzKHHGangynegaWPmRxtkOgZ6jSgATNpGbKqHUB5qAzFhEeizCoakQx23l6GU1qjdWSpyqM+NQyxfSH1Bx7pXVoOuUOATOjGSSUlLw+/18//333H7zzbAtH72sCFEr7umZENWMuFsmfPwAfPMcsdUlhHuMRr/0BRh54s6t5qrVsOJZWPcmGF7IOARGP0lF9ATQHMS0VOCtRWC8CMa7QA2IkdSEniRonkFKTLdW/hU6nnpXSjEmJXUibsTmI7USCqnAoozGjc1qFzbTcNKLKMZHRDwtcktHI4bSSiXaCXakyn5BWKuhgI2UsoYglQh0EuhGCn2Ip+tev4jaFg4IkTcDKpkpXG2huQSx3Z04owVWYQijNAwCtC6qcTaWpdrulagsQNJiEF1iEU4dQgZsiZT+lRKZEI2VFo8jWvlPZSCoxL2iCnQNkZEKqUlsW7aMyUcdhWmaWKbJ2Sccy0l9ukLpNmRcImZKBo6YZgQ3HITKQijbAh/dCyNOpPLQKzF6H0RK6g6iVKSEgu9hxTOw5SvQXNDjPOh/PaSMUPu0JMZdBsD8SIm7NQOIUn52x9WgjSHo23NVJWutcMuxDqmVUYO/kZibFDdxpYADHEkIKwU3wxoIeO02dZ/MqrTZORKJSZAgVdvdqvEnVmDq6v8klky6MIxEeux1ce0dzX4t8qEKk1CFSeXqEEITeLo4iErWsUpDmJtCSDOSqdrFBQJkYTUUecGSkBKtxN3tiIh7aZ24kxQL6QlYesTnHgzVi7sQkJ6CSE1WlSWBoUOHsmDmdCjeBpURcUxMgdQuWM25WYJeqCgEbxkgwB0Njy2FroMwdiTQhg/W/0tZ7pXLISoDht0Hfa8Czy7CJxtirQHjJTDeQC2k9gPnU+C4CEQH9G/dDomJRcV2VngJFiWRxyVYVACyLrywGuUO0UhDJwsXw9BJbWCFp6GRSFlFOQCJthW+XyGxCFFDkOpmxLwKazu3m5No3MQTFU7HFYgnJ2YILg6cnIz9UuQtQ7L+vSqWPF5K1ycs3F11PBk6VJuYq7zIsETE6ziy3OAUUOxDFtaoRdUkDyIrFhHlVOKeHxF3UNUh0xNU5AyAz48oKUdWVitxT01CpCUjHA0+Vr8Pigugqlz57ZPTVdEwZ8SKrF14lRL81VC5DXxVat+EDHULroOuO4h68W6GlS/AmlcgVAbJI2DCW5B7Tss7LUkDzM8jVvsPgAP0UyNWe/vLBUsMLOdSpL6NKnwNxLsEkzIap9yrBU2NVHRScZMbEfBUvFVuhJlMSlKffaJQlU3bMQnXiXaoiZhX09D1JtBwEYebeGLpgpt43JHHbuLRIjJX6lUGkivmwBF42A9FvnCajwX3lVC5KkTa+Cg8GQ48CQJrvR/ptxAeDb17FCJah1IfsqBGJTIluFUiU7SrqbgnR8S9tr5MIIgsLkOriOSIpSQqcXc2yHjzVkPJNhXjrutqMTUlHRzbZcVJifBVQHUxBH3q9ZQciEvd8WKqlFA8A5Y/DZs+BiR0PQ0GXA/prYhusfLBeBXMV0BuVRUZnQ+CYwqIVkTb7IAwG/AzFT+/YMWrkgReHHWi7WJQxBpPbXBLQxDT7KKXP1xbktUW+N2NhYmFgUUYkzAWYSyMZu+bhPHFVEcWM2PRcKDjRMMZ2Tqa3DdEAJDUsK2JgAepwtjO/abjxk080aSSRM86AXcTj5PofSqkcU+zX4m8f7PFz+dtJaarg4Nf6kKXbpLVZaWY6/wIl1DinuCAcj8yrxqCJsS6ED0SEXHuZsQ9NiLu6mOSXp8qP1BVA5qGTE5AJifi8ERimqWEmipluftqwOFQ1SCT05oKtmlAdQl6ZRHCCIErCtJyITZ5x/1WzRCuLR/h2fAyVC4AZwIMuBH6X6uaYLcEaeHUfiTK8SYEvgUs0I4F54ugn9Du1nQmlQT4BR9TIzkJDqIYi1E1BmH0ICU51/5CdgK1vuoQNYTwEsZbd98XX4EpAmzBqhN22aiEws4RaJHqqgIfVhN3SbM04/lzEYubeBLpXmeZ1972d7/57mS/Ennj/9s78zg5ruref09VV2+z9OzaRpZkyzK2LLwbvGBjdhyeScAh+BEMwcFAcGK2vJDkkwdk4bEECAkEcMCBR7DD9gzYIcQmwRCwjXcjyfIqZFuyrWU0Mz1bT1dXnffHvd3T0+qeTSNp1L7fz6c/Xd11697bt2/96tSpe88dUzZ9pIv1r8ky+ekdDP/rs+h1ObyVKbyeAPIF9KFBmChBNkDW56A9hYRRQ3FXVciPGnEfGzdDIZf1QHfH1GmgakIP7H3GuGeCJKxYDZ09B4YEKD9MHdlnHvKmW4g7V+G3dTW2wOMS3PcX8Og1tBX2ELWsh7M/D8ddDsEcbz3jJyH6ZyhdS3vqSWLthsQHIHGlieR4ECglJrmbcf6LSe4CIgLW0847yPAiPNoZqFjhTuAXG0UpMVER73xqD5E3Qd76ro2gj6E1bjEQArJ4pAmiNjKJ1gbWdzCjdS54DAya/7e7u9uOdooaWv0xIfnRIQC6Wo17JUlbU45sWQo0lci3HuuxJj9E/oItECmZd/XjrSjipRV9ZJ8J/ZtOIMd2QkcaCcsPVG1gsVpxH8qbB6qFSQgCZGUfdHaYwGMAYYjkB80EpskCJFOwag3kuqdb46pQGDXiPj4ECLR2Qm4ZcdlvXivwqlAaMTFlxnfBtr+B/teQX/lmwp4X093Ty6xo0fravwzxzZjYDC9jZPIvKEYX091ycOuQxv6T5LnBuGMYxqODFi4hw0sIWNrj5o8WYuMMqQh1o/dpw0NbARWStBDQQpYeOlhLQAtJWkjSSkALARkj0Hkr0IsU81wQhIT1hTcIamdDE+fmGJrYsXCaSuRl+yQTn3mS1Ov6yP7ZOuSZAdg7iBYGTOjfNR3QnUHKbpnBOuIexzAwaCz3YgjpFLJ6BeTaEc8KcVSCwX34A3uQsAjpDKw+1ox1rxZrjWFsEIb3QGHM+OZzyyHXZyJDwtSD1zJxBMUBKOyBUgG8BCTb4bceh7Z1hHMZ/hg/CKWvQOn/AvtAVtk4Mr8H3jqKYwuPIxMxwAQ/I8z9J5p4kpJ1x2R4KSlObxg0yzGdsvskZLwi1iHjjLQMUPIK7CGkyNgBvmkAj0RFsFtZURHz8vvo/iK+puh5jgaDazZUS7MnmoGmEnlSQu6W0/H9CUrv/z7xvz0KP3gFsjoHPVljuZfFXYDuVui14l6KYM8Aum+/if2ezRjLva0qKuRkwQQNG7Kulmwr8bJV+LkaV4v1tzO8B0pFnto3xOUf+BC7BwYREa688kquvvrq6XUvTcDkXijsMxeHRNb42VNdsPthaGuwGEgZHYXoW0bc49swI2QugcTvg/cKE6NhgcSMUuA2JvgpRbYAirAOf+xN9LS82s3urCEmsqNCpsT7wO3xOu4T8JJJ/DhDxj5krBbv8rtPcsbZmAUXhfKoJtaQofAB9hVvZ6B4BwPhnQeVX3OJ/MoE+pkfU/z2VsilSfzlRWbETC5p3DKDo0aMq8U9DNFn9sD+IYhis1hHbze02MU+yg9Ty9EgRSDXBd3LiMvDIMsCXyxAfk/F306mDXqOIZEZ51Of/QdOP/10RkZGOOOMM3j5y1/OSSeeiITDSHEfhHYYZrIT0n2QaJl9lIwqxHfZETLXY2ajngDBJyHxZpB5jI+vzZoiBe5igp8yyd1ACZ+VtPJGMlzI8LBxM3ktzx2Bj4mqfN/jFdEuv4qMUewcI/aKBxwr+BWRbqHPbmerxDtLQJbBQbswihvb/5wh0nFG9SH2jTzIQPF29od3E6m5g2tLbKDXew3wdwvOv6lE3ntkP/GeR/A/cB6J956DDOXh6Sfh4V1W3NuMWyZImAlMO58Fe1KRazPDIMsjZeLYLLE3sBsKE2akTN9K6OyF8lDJUqlqfHu1v73LjG9PmRAFK1o6WLHS+L/b2to48XknsOvxBzhpeYgfh6gXQHYVpHtMRMhZEPZD+C9G3HULkAX/DWboozfPEMFVKBFFNjPBTylwO8o4Hp20cDFpLiRgfZUF2TzW4pTf+8DXeNsQJa/ATiYp1Q1OJRWBTpMjKHbixxly2Z5pQj6b9e14blCMBxkOtzAcbmU43MJQaQujpceBGEahPXEix2Quoyf5QrqTLyTldzMwMIAT+TLdGVK/ugoZH4MPXwc3/BKuvRzWtkNfO08FdzIe7YVCaFwyHUBvAoLE1IPSWKFUhFIISYVVnvGfJxIgT02VpYoSki0kOWbPCjNEsmMFtNcZC2/TE+bZ8fC93HfvXbzg5PdDIksUdKGJdhLBLOKuEcS30Bp8iaT/QwiL4J0FwZdsWN+FWdTmVzxGgZ8xwX8Tsx8hQ5pzyXAhSTYdtX72mBKRV2CEYkMRDxknYrLO0WIeTHpJEnGWFlYSkJ1mdQe0kCA9TbzLE266s84Sf66jGjMc38uw3slj+7czXNrCRLSzsj/traAj2ERn/FJavRNZ2/0Skt7izypvKpHXnjTy0W/CDXeYiUtveyks70RXdsLYODo+An7B+OOTgRHuysPUyAh7yY7x9RPGYvcSTDPA4tiE+o1CRBU0Cb1roLW7/vj2qGhGEkzuZXR4iNe/+d383Sf/ivZjzgE/hdY+eD3gR02ADkLhGNCnCfxOCtFbyLS+G7xTFt5W3m5GuIUJfkrELiBBijPJcCFpzlyyE47MRWlimkiXaj6X98fdB47XFrxplncbK6pEe+plxNurBChz7hPHXFBVBsN72FW4kacnbqIQP4uJZ7qOruB0ctm3kAtOJhecTMoK+oAdTHEoBB6aTOT9x3bD5D3w9pfDu16Jdreh9z+APv4EjBfoTxyH9HSaGaq+b6zr/JB5mDo2YkS6s8eEHkhVLdqgMYwNQX6vcc2IQEsHpZYuyLROuW8q6dX42Cf3mjC/qoSkef3bP8yb3nwFr7vs7TP/EC0Bg6D7QMdA8yCnQfD3DA6fA6TIePMXnYi9TPALwvZb0WA7IUKSk2nlt0hzLt4Riudh1jcNpwn0dOGeoMQEk52jRDJJbTRJAI+gItBZuglYTXEMEpqms7Wvss8n5dwmjkVFVRkKH+Dpwo3sKtzIRLQLjyR9qYtoL11Nl3cBy3rWHrH6LQmRF5EdmLhTEVBS1TNFpAv4JrAW2AG8QVUHZ8on7m6FO/4PmssSfe9moi9eD396BWRzyKrl0NmOeJ6x2gd2G3EvTprJS8v7jcBXz0wNJ42wj+4z/vcgaVZfausxLpkDhj+Gxmov7IVo0twFpPvQVA9XvO0dnLjx+bzv/e+vX3lVIA86YCx31KysJP3gpSF9k004P194xAAFfsEEPyfkIQBE1uCPvYHullfhc+iH2cWUGA+epeSNM8mvK6JdLer1RppM+bszZtJOsRU/TtOe7aqxujN1F1EeKJi2andjsR2LjKoyXNrKrokf8HThRsajJxEC+lIX8LzWP2ZF+pUEXnvFSj+SLAmRt1ykqvuqPn8Q+E9V/ZiIfNB+/pOZMoh72yh9/0eUvvwteHYvsvF4Y7WfsM6MlClOGmEvL9CRbTVhB6rHt6vC+LC12u1D2WwH9PZCpr3+pKXQTloqDprPQStkV5qRMuLxi5//nK9//ets2rSJU089FYCPfvSjXHzxxUABYRB0P2gI+CA95kXWljfjte0AIvbbIY8/J+RBABKso403k+a8ysgYv+XQiV/IOMM8yRA7yLMLbZ8S8QTpiji3kquIeMK+lz/XWt3O3+04ksRaYiTezP74p9y39xbGol8j+PSmXsSG1qtZkX4VSa/jSFfzAJaSyNfyWuDFdvtrwK3MIvLeY09Q+uvP451zGv4n/gTvRWchDz2EjI/aIZBDgECuE7qWQbZqjc1S0Qx9zO8z24nAPEht652KGFlNHCKTe/GKA9Zq9yHdC6leSEyf5Xf++eebGbRlNDSiHm8jIWPW+ZADrxvoAJn/1P+IQQrcToGfU2QroCRYQytvIsN5JOivSr341oWiFBhiiB0M8wRj7AFMPJJeTkTyHQSldvq6VrrQBo6jAtWI4dKD7Jv8BfuKtzFQvJOSmkDXPclzWd/6TlakL6741pcqS0XkFbhZRBT4kqpeAyxT1Wfs/meBWQd9aybNxFc/TrxpA4RFktd9Ee3fANEY6vvEXcvQjp4pH3oYIoURZHQAmRhGFOJMG9q5Es3kpqz2SjjgGCnlkeJ+pJTHV4j9LHH2GDTomBLnug9TY4RhRAYRRhAUJUMpWk6sHfh+upKOmuBQURRVbvsGB6esepUR4uQ9xKk70cRDIAqllfjFS/CKZyHRKoqAGbU9JezVeSyUwcFBlJhCYi/jyWcYTz5NyTcziJOlTjqKJ5EtriSI2hGEwcFBChRIzOxxm7XMQ5l+KZR5NNb5SJU5X2YrUzVmXB9jSO9kOL6LYb2biBEA0qyhx3sliYmTaIlOpzd5LEzA6IQyOoPRNJffOVuag22rpSLy56vqLhHpA24RkYeqd6qq2gvAAYjIlcCVACtXrkT7u8h89W9J33At3v498IVbiJb3o+1V0R2jEjI2gDc6gIRF1E+gbX1Erd0HLoStCtE4XrgfKQ4hGqFegKb6KHo51EuRSDRqRgVG8WQQYQghRglQ7SWiE8gQxfOcsuyNkWjZTNi2FQ22gcQQLceb+B8VYT+UDxYjKVIIdjPe9ySlln3k/RKoRybspX1iA9lwBYm4QbwSh2MJoaqM6+MM610Mx3cyrPdQYgiANP30eC8jJ2eT884kZScWDkaH/+J0sCwJkVfVXfZ9j4jcAJwN7BaRFar6jIisAHv/f+Cx1wDXAJyxvFu7Lj3F+N5f9Gq4/D1I1yr8nuVTQcLye008GVUzI7WrH8l2IJ433YkQTcLkfvMgNSoYKz3ZAakeJGhDRPCtxX6AyOuEeYDKfhMkDA+kE6TbLP4sBzosGl8owPOFdPddFLiNlq7NIBEey0nzejKcT8Jfi2QF6iwPOxNzGRaoKBPsZ5gnyfMUo+wGFC9Okg1XsszfQLv04yeTzGU1vcUYijjfPI7GMo/GOh+pMueKaswET5BP32bdL7czGZvHgBl/FSuSL6cneS49qfPI+qtmzOtQ/M5D1RZHXORFpAXwVHXEbr8C+EvgB8BbgI/Z9+/Pmld+EN71DvjdP4Lj7EpKW7ea2aj5vSbsgO9De695JWsszjgyD08nB8zDVDAPUTNrzUPU2rDB1WjR+NnZD2rXh5UceP1Abt6xY5QSMaMoo8TsI88/4rMSr/BKvMmz6Ok4/ZBZ7BFF8uwiz1MM8yQh5vdk6WEFp9HOagqDPoLQuUiRCx2OhRJpgUK0h8l4z9R7vIfJaC+FeDeFeC+T0R4K8V4gghDS3nJ6UxfQkzyPnuS5ZP3VUzGqmowjLvIYX/sNtoETwHWq+iMRuQv4lohcATwBvGG2jErHbYQPfcFY6Y/+En78RTj5jZCegHQL9K2FlhqxroxpH7CjY2KzbF52JaS6Z1lCL0IYhnjIjGUHkBazwpJ0gcweoqAaJSRmlJixysLUQgqhhR7+ngRr2G8X0F5MgS8/NC2L+ijPosR4BORYTTurybGaoOpWYbKJwho4lh6qSqiDFKxQG8GuFvLddt8eSuVzbxpCyush7fWR8vvIJU4knmwlLf2s6XoZLf66phX1Wo64yKvqduCAqZuqOgC8dF6ZeQI//pIR9x33Q7oVzrgC+k+qxJGpEBXsTNQBMytVfBPxMdUNidbG8V80AoZBB/FlGCEGkma5POkCmZ8/WglBxgiZQG1sFCGFTzcerQhJPMYIWDuvfGcjpsQwT9rXUxTtA6YMXfSxiRzH0MoyNxKmyVFVSjpKiWFGwv1ETBJrgUgLxDpJpAX73eT077RAzCSRmvQTpTxKRHqoDZ80nqTwJY0vqcq2Rwrfbo/FIaCMjBWmibexuo31rXVWmPJJk/KXkfb6aAs20Ou9iJTXS9pfRtrrtft6SXrdeDWrnJUHL7Qmnlt3n0dc5BeTxK6t8OV3wppT4IovwPlvgh07pwQ+LpnFricHILThhoN2ExzMjmmvi0bAkJmkpMOYB6oBSheRdpDwco0vCsDb3vY2brrpJvr6+ti8ZTPKpHXDjKEJM/ZFSOPTY4V9fncAc2HKWt/JQNt2JoK9QIxHgjZWsZxTybH6ObWKfbOhqkQ6QUGfoaSDRJMxxXg/k/F+ige8BivfV8R038z5VyP4eGURJwVxEsFjvBhVhD/SSeK6Qd2qsEZ40us2VrfXR1vqOFLeMtJ+b+W7tG/eE9L6nLHAF4umEnnN5OCvfgjrXzB9clNxyLpjhsznRBpa+iHZBX6Dp4X1hF0CkF7zEJVW4shO8Jml073lrZfzB1ddwVsvv4ISO1BKmCgqGYjaQLMEifSMeSyEEgXrW99Jnp2EmCGOCb+V9sKxLMtsoJUVbtm1JUjZwi4Lsnntp6iDVd/Vvg8SVwdb21+do5D0OklKF0mvi6y/hs7gNJJeF2EhRYJ2cm29FdH2Zbo1bizxqe8aWcm1Dw9VlbhyJzB1N7B/yDzA7+taT8rrwZuna9Mxd5pK5KPuY+D4F5oPg7+Cx78GvBLy4zbEQK/1s2frC/MchH2uYXyVCGWcmDHOveAYfr3jCZQYIY1HCx4tCD6lg1z1ZXqZMaPsroj6OHsB8EnSxirrX+9nZMgIQXvmuXXbeqSItUgxHpoSax0kjAenfxcPEuogE+E+Qh2m9OxwXXeFQUhKB0mvi6TXSdZfTUfw/Mrn4niSQDrozq2x33WRlBzS4OF/ef3d7kPQH0QEnzS+pKfdnxbtBKKM7/rgoaapRB4twYN/Z8R98H4Tm33jJdB2HCRzbM5/mOHCgzXHKFACQqjETxFM0wSY4Y/1hV1VaU+cxCkdf2U+U7IPTceIGcesoOQjtJCgDyFJghWL+pMnyZNnJ8M8xQhPExNiot71sYIzaKefFnprfOv1Qus6ZiPWEmE8bEW6LNBDhDq1PVraTUmH0b2j1uoeJNKxhnl6JAm8TmNle51kWEubl6M9s7LynXl1Vd4DySEzzIoesOundiedgDqaTOQT+a1w93uh+ww46+9h3WXw672Q6pyesKGwB8wm7AcSEzFoxb2AEfYAnxxCK2LjjXt11upcCLGEFBJ7GWMbeXYyaZ2aSdroYj3t9NPGShJLNFTwUiDSghHrikCbV1j1ObTfTYQDhDpE9OxIg1EcZTySksPTdgLJkfV7afM2WBdJWag7rKB3Vb73JTPNx1xxe7Q7gXYsDk0l8nGqFy75CXRsrPrWuCzQEpva/8i6YvIYV0wS6LSumDkst4dxiSgF44rRMVSKROyzI2I6rbAv3ipAJgxvxNPcTZ5djHXuAVE8AtpYQR+baKefFO3PqRC6qhGh5q0gDxPqcJVQD1ureg+hDiMDExXLO4yHiGZ8GOgZMZYOkl6OgA4y3lra0ssJvA6SXgdJr9Put9teB4G0I+JNiXSXE2nH0qC5RD69crrA636zwHX8COgIFWGXvnkKe0jMOFp5xYAgmkbiLhJ++6KNiFEUJSKiSERITEiJcZ7hAVroJTdxApmwjxW544/6B6axhoRxnlCHq4R6aju020UdIozzTIQDlDQ/B6vaDLXzaSchOTJ0k/XX0BGcYq3pDgLJVbaNVd1B4OXs6I0pV0hFtHNOtB1HJ00l8oAJJxB9D0rfhvg/QW8EUmZRa+lkKnzvDFnYAYdl37paH7YQILThk0XIEsWx/X7mZrzsssu49dZb2bdvH/39/XzkIx/hiiuuqCovJqRAbIVdbYAyDx+fFAkybORyEqQYmBio7FvqlOJxhsJfMRjex57SXRR1H+wdt8I9PKOvGsAjReDlCLwcScmRpJesdxyt6T4r0LlpYj21ncOXVMMRHw7Hc4mmEnnf2w4Ty4AIZB0k3geyHGTTHIS9/NB0urXukcGjByFbxw0TN8puGtdff/20zzExJQpEhER+EZXyxcLDJ8Ajad+NkHsklryPXTVmtPQ4g+G95lW8j3zpocpiIClWkpLlZP3VBMHJVrg7SHjtJCVnxbws1DkCrx2/ZmKZs6odjvnTVCIvTELiA5D4bZDTjbDLtroC39haT1RZ65lFWcTaeNVD634pElvhEwTRBH6cIvDTdiTO0eFXD3WQEd3MnpFHGSzex2B4f8WFkpA2OoNTOb71KjqD0+gMTmd0yBznfNUOx+GlqUS+FJ8IyY813G+s9XHUxoYxVqaYSR4NrfX5Uxb1uCLsZiy82GWkk6TxCPBIEMVG8L0l/FeEcZ6h8FcMhQ/Y168Yj54yO0c92hPPoz9zCR3B6XQGp9GWWH/AEL+ZYm47HI5Dx9JVlkXATEgKKek+VKpjwyQQWvBpWRRrvbwQtbHWixVRB/DtAtM+STwS876ATFtR6jBQiscZLm1hqHi/9ac/wFi0vbI/6x9DR3AqfVxKm2zimO7zSXgtM+TocDiOJE0n8hFDTHIvk9zDJPch6deyb0Do6u7Al26EloO21tV61UsyiUqJySpR9yqiHuARHFw5qgwMDJBOL37IAzDjxfPhNgarLPSR0iOUnzWkvRV0BKewOnMpnclT6Qg2kbQzFcv+cSfwDsfSpqlEXv1n2MPlAHh0kOYF9PevYu/ODIN7R4HRheVLjBIR23etTKAC1MOTBB7+gnzqkY1/4/v17ybS6TT9/f11982rHJ0gHz7EcLiF3aW7GdGtjD/7qI2jYwJEdQansDJ9MR3B8+kITiHt9x10uQ6H48jSVCIP0MrvkuYMEqwzU/kDaFs39+PL0RpHebbyKofh9UjQwjJaWUYry5kcSOARHNQQvUMxzC+MR8mXHmQo3MxwuJnhcAsjpUcqF6cE7bTKRta3vJOO4BQ6k6eQ9la66H4ORxPSVCIv0QraZl9bZBoxEePsrRL13UR2pE2CDK0sp4+TaWU5WbqnxYAZWAIPE4vxIMPhFobCLRVBH422Y8IhQ8rrpSPYxPL0K8gFm+hIbGJ8KI2IuKnzDsdzgKYS+blQYpIxdldEfYy9VWO5c3SwllaW08ryJRUqQFUpxLvZH9/BqG7j8cHtDIebp0a5ABm/n47EJvozv2UEPdhE2l92QF4TcuQvTg6H4/DQ9CJfZHSa62WiEmRbaKGXPjbSynJaWEbA/FZ1OlSoRoyWtjNc2sJwuNW8SlspxlPi3MI6OoPTWJu9nFxwMh3ByZWHog6Hw1Gm6UR+nIFpol5eKMMjoJVldHKsFfW+JTE2PdJxxvRR8mNPMVzaynD4ICPhtkoQLY8kbYkTWJ56OblgI4yvokWex7KeNUe45g6H42jgyKvcIlJMDLGN7wIQkK24XVpZToauI7peqWrMePQU+dI2hsMHyZe2kQ8fZCx6AlDIQyAd5IKNrG25nFxiI7lgI62J9dNWzRkoOFeLw+GYO00l8p4mWctFtLKcJK1HzJ8exiPkSw+Rt2JuRP2hqoBcQou/jlywkW5+gxY5gdVdL3QjXBwOx6LTVCKfiLJ0c/xhK081osBOnp64neHSNvLhNvKlbYxHT1bSBJKjPTiRYzK/Qy44kfbEibQlTiDhmcXFy0Mo3TJoDofjUNBUIn+oUI0Yi55kpPSIeYX2vfSYWY1+CMCj1T+WzuBU1mQvoz1xIrngJGedOxyOI4oT+SqMmO9gpPRojZg/bsTckvZW0B6cQEt8GllZz6rOs2lLHH9AaFyHw+E40jwnRT7W0pSYhw9bUX+Y0dJ24qpFrjP+KtoSG+hJnU9bYoN9HU/gtQFTrpaOwLlaHA7H0qSpRT7WkLHoCSvkZav8UUZLjxNTrKTL+P20JzbQl7qwIuatieMJvNYjWHuHw+E4eJpK5EvkeXjkM+RLD1fEXAkr+7P+MbQljqcvdRFtieNpS5xAW2K9i6TocDialqYS+YLu5KHRT5H1j6E9sYFlqZfSnthAW7CBVn99ZUSLw+FwPFdoKpHPyrH8xvL7SLgHoA6HwwFwBKeAHgI80k7gHQ6Ho4qmEnmHw+FwTMeJvMPhcDQxTuQdDoejiXEi73A4HE2ME3mHw+FoYpzIOxwORxPjRN7hcDiaGCfyDofD0cQ4kXc4HI4mxom8w+FwNDFO5B0Oh6OJcSLvcDgcTYwTeYfD4WhilrTIi8irRORhEXlMRD54pOvjcDgcRxtLVuRFxAc+D7waOAm4TEROOrK1cjgcjqOLpbxoyNnAY6q6HUBE/hV4LfBgowOiKKosrn04GBwcPOx5HIkyFyMPV+bhOX4heRytZc6Xpfo7Z0tzsPVeyiK/Cniq6vNO4AW1iUTkSuBK+3Gyp6dny2GoWzU9wL7DnMeRKHMx8nBlHp7jF5LH0VrmfFmqv3O2NCfMo7xpLGWRnxOqeg1wDYCI3K2qZx7O8hejzPnmcSTKXIw8XJmH5/iF5HG0ljlflurvnC2NiNw9nzpWs2R98sAuYHXV5377ncPhcDjmyFIW+buA40VknYgkgTcCPzjCdXI4HI6jiiXrrlHVkohcBfwH4APXqurWWQ675tDX7JCUOd88jkSZi5GHK/PwHL+QPI7WMufLUv2ds6VZcL1FVRd6rMPhcDiWOEvZXeNwOByOg8SJvMPhcDQxS1bkRWSHiGwWkfsPZviQzeuHItLRYN+1IrJHRLbUfN8lIreIyKP2vfMgyv9LEXmZ3V4tIj8RkQdFZKuIXD3fMkUkLSJ3isgDNo+PVO1bJyK/FJH9InKrfWi90Hp/uTzLWEQ6ROQ7IvKQiGwTkXPmU+cZyqi0f3U71aR5sYgM275wv4j876p91e0ZVbdnTR5fFZFLG+xr2J416W4VkTOrPvsicp+I3DSX9DX76rbnXOts919t222riLynQZpHbdvV9u9P2rJ/JSI31Ds/bLvfNMM5cqqI3FE+R0Xk7Dp5/ExExmuPnQkRGZ1r2jrHNjy/5lrmXPtDzfFr7X/RsD/US1/z3ax9YqZ6N0RVl+QL2AH0HIZyLgBOB7bUfP8J4IN2+4PAxxepvBXA6Xa7DXgEOGk+ZQICtNrtAPgl8EL7+VvAG+32F4F3LVK9vwb8vt1OAh2L0U6N2r8mzYuBm+bQnqPV7VmT7qvApfNtz5p0twJnVn1+H3DdDHWbln4u7TmPOp8MbAGymAEUPwbW10n378Af1+nfrwASdvvj9f63crvPcI7cDLzabl8M3Fonj48C35zp/61zzOhB9NOG59dcy5xrf6g5fi3wzEz9oU762vactU8spK2WrCU/F6yl8wVrTWy3lse19ir41ap0O0Skx149t4nIP9kr9M2YoZr762T/WkyjY99/s075bxWR71kLdoeIXCUi77NX8ztEpKuqnmWL7HbgtSJyL3AbZlbvqvmUCdwA3CAiO4Cr7PFfE5E7gJcC37G//0ngN23dPiIi94q5O/qciHxNRP5bRJ4QkdeJyCfsvh+JSGDLulVEzhSRHPBmYJ2IPAD8DEgtRjthLhJRbTtV1xm4Fmg54B8CVPUZVb235usbbfsvq/n+AhG5zfaVS6vyUFUtW0SBfTUakfDb1srbDvxP4MsN0tWmf0REXmR/Ww4jnF+x5RdVdajB8XXrDJwI/FJVx1W1BPwUeF2d43djYj8dW52Hqt5sjwO4AzMPpR6twB8B3wb6RUSq9inQbrdzwNN1jn/E7lsj5q7iE7UJxNx93m773183qMecqO4PqjoCbGPq/JpTmXPtDyJyhrX2HwD+BHNRadgfatK/u2bfnPrEQtpqKYu8AjeLyD1iQhc0ohM4B3gvZhz9Z4CNwCYRObVO+uOBz6vqRmAIeH2DfJep6jN2+1mgVjDKnIw5uc4C/gYYV9XTMGJ+eYNj9qnq6RgL5wUYS2G+ZV4KjACfBraq6gnAfUBcdfIOMNXBy2V+ATgXOA54CXAJ8C/AT1R1EzAB/EZNeesw1s0LgBjIAH+wgDo3aqdG/0G5zt8HzrEnyL+LyMYG6Vsw/eE0zIXo7TX7VwDnA68BPla9Q4zr5X5gD3CLqv6S+iRU9WyMoEWY9piJcvr3AB+y360D9gL/bA2CL4tI3YvYDHXeArxIRLpFJIuxpFfXOR6gD9heJ48yb8NY/PU4zdb9ZRjr8ryqfe8BPikiTwF/C/xpgzxOwhgzm4DfEZHaen4W+ILtf8/UHrxQRGQtpv71/ssZy5xjf/hn4A9V9RTMufQsM/eH6vS1zLVPzLutlrLIn29P8FcD7xaRCxqku1HNfctmYLeqblbVGNiKuSWq5deqer/dvqdBmmnY/BtZdj9R1RFV3QsMAzfa7zfPkPf/E5FW4E3A46qaX0CZw/aP3gm0isjJGKslaFSmfb8H6AD+XVVDW08f+NEM9S7Pp/hzK8y7MBeH+da5UTs1siLLdf4BcLs9Of4B+F5tQtueCrzDtme9//Z7qhqr6oPUXIxUNVLVU21dzrbtWbdOIvIa4FGgu0Gaer+huj4JjPvjC7Y9xzCurnrUrbOqbsO4WW7G/Hf3Y++I6nCzPeaA3y0ifw6UgG80OPZOVd2JadsJprfpu4D3qupqjJH1lQZ5/AJjfBQwAQbX1Ow/D7jebn+9QR7zwvaH7wLvqXd+zVbmbP1BzDOMDlX9me0P9wOFGepTSd+gzLn2iXm31ZIVeVXdZd/3YNwTBzzUsUza97hqu/y53mSv6jRRgzQAu0VkBYB93zNL+bV1aFR+udzvYqyn6hBzCykzAv4beBWQB1IiUi63m6lQEJNV6b3yZ3tBDK1AN6r3TpO0Ys3chgmotNA617aTP8sxI5g7CVT1h0AgIuXyse6l79rfURbVev9tdR2EOthb5J9g2rNRnc4DXokRvH8FXiIi/zLLb6iuz05gZ1V7fgdzgs90/AF1VtWvqOoZqnoBph890iCPYr08rOvvNcCbqv7/mcqH6W36FqYuYt+m8TlaXX6jc27RJuxU9YdvVPWHesxa5hz6A5j+8GJgA7P3h0bMp0/Mq62WpMiLSIuItJW3MQ+JDnd0yR9gOjH2/fuLmPdnMVb3dQssMy1ToyEEuBB4yH7ehXHlgOl4B11vVX0WUBEpR8J7PsYan0+dD4aKxSxmBIeHcUVhfcRfwbRnuJDMRaS33J4ikgFezlR7HoCq/immDXZiwm38l6r+7lzLs+35VFV7vpQZQmjPUO8++34MxhVW259mOvZVwP8CLlHV8fmWbXka0/fAuCseXWA+v8C0I5i72wVT3R9U9dMLKXMu/cGK/5CInG/7w1cxF9m6/aE6fb0y59En5t1WSzWswTLMg0UwdbxOVX808yEL5vXAO4AeEdkJfEhVv4LxXX5LRK4AngDesEjlpWxemzGuqFUicrG1UOdaZgvwEzELq6wArlfVm6xldhtm1MfzMBfGr2BO5oNlEviGmCGZBeBX9vuDbad3Yny1SYxfchxjxbRhLhqfwnT4s+wDqwnM6KGyNXMe5qHwZiBj/ah/Ns86rMA8uPYxF5Bvqeqsw+AOkj9kqj23A7+3gDy+KyLdmIvbuxs8vL0A83C81fbv8jn/OUxfvMWeZ3eo6jvrFSIi12MMhg7g0yLi23Pk7cBn7Z1jgamQ39VU/l9bfr0FH64GrhORP+HgjYRKf7B9AeDP7Pk11zLn2h9+D7hWRBTrEpuF2dLPpU/Mu61cWAOHw+FoYpaku8bhcDgci4MTeYfD4WhinMg7HA5HE+NE3uFwOJoYJ/IOh8PRxDiRdzQVYiJR3i8mNtEDIvJ+EVm0fi4mDs/Kqs+VSJ2LkO9eO6X9URH5DxE592DzdTiW6jh5h2OhTNjp6OXJQtdhgmh9aKaDqrHjwBuFCHgrZv7B0wCq+vsHU9kavqmqV9k6XIQJoXCRDWHgcCwIZ8k7mhYbEuNK4CoxvFVEPlfeLyZW+ovt9qiIfMpOuDpHRP63iNwlJkb4Nfb4S4EzMRNW7heRjFTFjBeRy8REB9wiIh+vKmdURP7G3lnUi45Zr+4/wazrOVNwPodjVpzIO5oaVd2OiY3TN0vSFkzo3lNU9efA51T1LFU9GRN18zWq+h3gbkysl1NVdaJ8sHXhfBwzvf9UzAzd36zK+w4bYK1edMxG3IuZuexwLBgn8g6HoRw0rsxFYlbY2owR7kbhjcuchVk0Y68N9fwNTEgBMAG6ytPi5xT51FI3iJrDMR+cT97R1IjIsRgB34MJqVtt2KSrtgtlP7yIpIF/xKzq9JSIfLgm7XypjvI5U+TTWk7DBF5zOBaMs+QdTYuI9GKWQPycFdkdwKki4olZuKJRaNyyoO8TE5e8ekWmEUzwtFruBC4UswKZD1yGWa1poXW/EOOP/6eF5uFwgLPkHc1HORJlgLHcv45ZPQtMmNZfY0K4bsP4vA9AVYdE5J8wo2iexSwRWearwBdFZAKzIln5mGdE5IOY2OMC/Juqzjei4u/YULRZW8/Xu5E1joPFRaF0OByOJsa5axwOh6OJcSLvcDgcTYwTeYfD4WhinMg7HA5HE+NE3uFwOJoYJ/IOh8PRxDiRdzgcjibm/wNFI4L7jJaz8AAAAABJRU5ErkJggg==\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "hri.method = hri.METHODS.KRUEGER_PFISTER\n", + "fig, ax = hri.result_sri_figure()\n", + "ax.legend(loc='upper left')\n", + "ax.grid(color='grey', linestyle='-', linewidth=0.3)\n", + "ax.set_ylim(0, 230)\n", + "old_labels = ax.get_xticklabels()\n", + "old_labels[2] = ''\n", + "old_labels[5] = ''\n", + "old_labels[19] = ''\n", + "ax.set_xticklabels(old_labels)\n", + "handles, labels = ax.get_legend_handles_labels()\n", + "ax.legend(handles[::-1], labels[::-1], title='SRI', loc='upper left')\n", + "plt.savefig(\"kruegerpfister.svg\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Heavy rain index allocation of a specific rain event" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "calculating rainfall_sum data-frame: 100%|██████████| 21/21 [00:00<00:00, 163.22it/s]\n", + "calculating return_periods data-frame: 100%|██████████| 21/21 [00:00<00:00, 58.97it/s]\n" + ] + }, + { + "data": { + "text/plain": " start end duration rain_sum \\\n40 2008-07-20 17:43:00 2008-07-21 08:57:00 0 days 15:14:00 28.0 \n36 2008-06-23 19:50:00 2008-06-24 19:48:00 0 days 23:58:00 35.8 \n96 2009-08-27 19:52:00 2009-08-29 13:25:00 1 days 17:33:00 55.1 \n88 2009-07-18 08:55:00 2009-07-18 13:19:00 0 days 04:24:00 58.0 \n95 2009-08-21 19:49:00 2009-08-22 20:46:00 1 days 00:57:00 64.2 \n433 2016-05-30 12:38:00 2016-06-06 12:55:00 7 days 00:17:00 66.4 \n97 2009-09-04 00:31:00 2009-09-05 01:32:00 1 days 01:01:00 69.8 \n193 2011-07-27 20:37:00 2011-08-04 07:45:00 7 days 11:08:00 70.5 \n391 2015-07-08 11:50:00 2015-07-09 00:26:00 0 days 12:36:00 77.8 \n331 2014-05-07 16:49:00 2014-05-18 20:03:00 11 days 03:14:00 109.9 \n302 2013-08-24 01:33:00 2013-08-29 08:20:00 5 days 06:47:00 114.1 \n39 2008-07-12 22:10:00 2008-07-18 14:55:00 5 days 16:45:00 122.8 \n244 2012-07-09 18:49:00 2012-07-16 05:43:00 6 days 10:54:00 123.1 \n441 2016-07-21 22:28:00 2016-07-28 14:14:00 6 days 15:46:00 136.6 \n287 2013-05-02 02:45:00 2013-05-07 21:38:00 5 days 18:53:00 148.2 \n\n last_event max_return_period max_return_period_duration \n40 2 days 02:48:00 2.831020 5760.0 \n36 2 days 21:52:00 5.442798 15.0 \n96 4 days 23:06:00 19.718725 20.0 \n88 2 days 01:56:00 3.379539 240.0 \n95 4 days 03:04:00 3.975735 20.0 \n433 4 days 17:43:00 6.793788 5.0 \n97 5 days 11:06:00 2.605674 1080.0 \n193 3 days 05:28:00 12.732452 20.0 \n391 8 days 13:52:00 5.981540 720.0 \n331 4 days 03:29:00 2.798825 4320.0 \n302 9 days 12:51:00 3.543855 2880.0 \n39 2 days 11:12:00 6.296355 120.0 \n244 5 days 23:07:00 3.720530 8640.0 \n441 5 days 00:03:00 4.663786 8640.0 \n287 9 days 05:06:00 32.602489 2880.0 ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
startenddurationrain_sumlast_eventmax_return_periodmax_return_period_duration
402008-07-20 17:43:002008-07-21 08:57:000 days 15:14:0028.02 days 02:48:002.8310205760.0
362008-06-23 19:50:002008-06-24 19:48:000 days 23:58:0035.82 days 21:52:005.44279815.0
962009-08-27 19:52:002009-08-29 13:25:001 days 17:33:0055.14 days 23:06:0019.71872520.0
882009-07-18 08:55:002009-07-18 13:19:000 days 04:24:0058.02 days 01:56:003.379539240.0
952009-08-21 19:49:002009-08-22 20:46:001 days 00:57:0064.24 days 03:04:003.97573520.0
4332016-05-30 12:38:002016-06-06 12:55:007 days 00:17:0066.44 days 17:43:006.7937885.0
972009-09-04 00:31:002009-09-05 01:32:001 days 01:01:0069.85 days 11:06:002.6056741080.0
1932011-07-27 20:37:002011-08-04 07:45:007 days 11:08:0070.53 days 05:28:0012.73245220.0
3912015-07-08 11:50:002015-07-09 00:26:000 days 12:36:0077.88 days 13:52:005.981540720.0
3312014-05-07 16:49:002014-05-18 20:03:0011 days 03:14:00109.94 days 03:29:002.7988254320.0
3022013-08-24 01:33:002013-08-29 08:20:005 days 06:47:00114.19 days 12:51:003.5438552880.0
392008-07-12 22:10:002008-07-18 14:55:005 days 16:45:00122.82 days 11:12:006.296355120.0
2442012-07-09 18:49:002012-07-16 05:43:006 days 10:54:00123.15 days 23:07:003.7205308640.0
4412016-07-21 22:28:002016-07-28 14:14:006 days 15:46:00136.65 days 00:03:004.6637868640.0
2872013-05-02 02:45:002013-05-07 21:38:005 days 18:53:00148.29 days 05:06:0032.6024892880.0
\n
" + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "events = rain_events(hri.series, min_gap=pd.Timedelta(days=2))\n", + "events[COL.DUR] = event_duration(events)\n", + "events[COL.LP] = agg_events(events, hri.series, 'sum').round(1)\n", + "events[COL.LAST] = events[COL.START] - events[COL.END].shift()\n", + "\n", + "hri.add_max_return_periods_to_events(events)\n", + "\n", + "events = events[events[COL.LP] > 10]\n", + "events = events[events[COL.MAX_PERIOD] > 2]\n", + "\n", + "events.sort_values(COL.LP)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "hri.add_max_return_periods_to_events(hri.rain_events)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": " start end duration rain_sum \\\n798 2013-05-07 20:57:00 2013-05-07 21:38:00 0 days 00:41:00 2.0 \n797 2013-05-05 20:46:00 2013-05-07 12:41:00 1 days 15:55:00 119.6 \n289 2009-08-28 23:41:00 2009-08-29 00:42:00 0 days 01:01:00 49.3 \n566 2011-08-03 19:52:00 2011-08-04 07:45:00 0 days 11:53:00 54.7 \n799 2013-05-10 17:55:00 2013-05-10 22:21:00 0 days 04:26:00 3.9 \n\n last_event max_return_period max_return_period_duration \n798 0 days 08:16:00 32.602489 2880.0 \n797 0 days 17:29:00 30.585304 2880.0 \n289 1 days 03:44:00 19.718725 20.0 \n566 1 days 23:09:00 12.732452 20.0 \n799 2 days 20:17:00 7.412151 8640.0 ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
startenddurationrain_sumlast_eventmax_return_periodmax_return_period_duration
7982013-05-07 20:57:002013-05-07 21:38:000 days 00:41:002.00 days 08:16:0032.6024892880.0
7972013-05-05 20:46:002013-05-07 12:41:001 days 15:55:00119.60 days 17:29:0030.5853042880.0
2892009-08-28 23:41:002009-08-29 00:42:000 days 01:01:0049.31 days 03:44:0019.71872520.0
5662011-08-03 19:52:002011-08-04 07:45:000 days 11:53:0054.71 days 23:09:0012.73245220.0
7992013-05-10 17:55:002013-05-10 22:21:000 days 04:26:003.92 days 20:17:007.4121518640.0
\n
" + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hri.rain_events.sort_values('max_return_period', ascending=False).head()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/markus/.local/lib/python3.8/site-packages/pandas/core/series.py:1056: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " cacher_needs_updating = self._check_is_chained_assignment_possible()\n" + ] + }, + { + "data": { + "text/plain": "start 2013-05-06 20:00:00\nend 2013-05-07 12:41:00\nduration 1 days 15:55:00\nrain_sum 119.6\nlast_event 0 days 17:29:00\nmax_return_period 30.585304\nmax_return_period_duration 2880.0\nName: 797, dtype: object" + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "event = hri.rain_events.loc[797]\n", + "\n", + "event[COL.START] = pd.to_datetime('2013-05-06 20:00:00')\n", + "event" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "calculating rainfall_sum data-frame: 100%|██████████| 21/21 [00:00<00:00, 171.82it/s]\n" + ] + } + ], + "source": [ + "rainfall_sum_frame = hri.rainfall_sum_frame[event[COL.START]:event[COL.END]]\n", + "return_periods_frame = hri.return_periods_frame[event[COL.START]:event[COL.END]]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "", + "text/html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 max. Regensumme
5 min9.9
10 min16.3
15 min21.9
20 min28.2
30 min40.7
45 min46.3
60 min57.0
1.5 h69.6
2 h74.3
3 h76.5
4 h78.7
6 h89.6
9 h92.8
12 h93.0
18 h96.4
1 d98.2
2 d119.6
3 d136.0
4 d136.0
5 d143.2
6 d146.2
\n" + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rainfall_sum_frame.\\\n", + " max().\\\n", + " rename('max. Regensumme').\\\n", + " to_frame().\\\n", + " rename(minutes_readable).\\\n", + " style.bar(vmin=0, vmax=100).format(\"{:.1f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "", + "text/html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 max. Wiederkehrperiode
5 min1.4
10 min1.5
15 min1.9
20 min3.2
30 min7.7
45 min6.0
60 min9.3
1.5 h19.1
2 h21.6
3 h17.9
4 h16.4
6 h24.6
9 h20.8
12 h16.2
18 h15.8
1 d17.7
2 d30.6
3 d25.0
4 d10.7
5 d10.1
6 d8.6
\n" + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "return_periods_frame.\\\n", + " max().\\\n", + " rename('max. Wiederkehrperiode').\\\n", + " to_frame().\\\n", + " rename(minutes_readable).\\\n", + " style.bar(vmin=0, vmax=100).format(\"{:.1f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "sri_table_event = pd.DataFrame(index=hri.duration_steps)\n", + "\n", + "hri.method = hri.METHODS.KRUEGER_PFISTER\n", + "sri_table_event[hri.METHODS.KRUEGER_PFISTER] = hri.get_event_sri_max(event[COL.START], event[COL.END])\n", + "\n", + "hri.method = hri.METHODS.MUDERSBACH\n", + "sri_table_event[hri.METHODS.MUDERSBACH] = hri.get_event_sri_max(event[COL.START], event[COL.END])\n", + "\n", + "hri.method = hri.METHODS.SCHMITT\n", + "sri_table_event[hri.METHODS.SCHMITT] = hri.get_event_sri_max(event[COL.START], event[COL.END])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Specific rain event with allocation of heavy rain indices depending on the method and duration. " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "", + "text/html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 KruegerPfisterMudersbachSchmittmax. Wiederkehrperiodemax. Regensumme
5 min1111.49.9
10 min1211.516.3
15 min1211.921.9
20 min1323.228.2
30 min2437.740.7
45 min2436.046.3
60 min2539.357.0
1.5 h36419.169.6
2 h47421.674.3
3 h46417.976.5
4 h46416.478.7
6 h47424.689.6
9 h47420.892.8
12 h47416.293.0
18 h47415.896.4
1 d57417.798.2
2 d68630.6119.6
3 d78525.0136.0
4 d57410.7136.0
5 d57410.1143.2
6 d5738.6146.2
\n" + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cmap = ListedColormap([(1,1,1)] + list(hri.indices_color.values()))\n", + "_df = sri_table_event.astype(int).copy()\n", + "_df['max. Wiederkehrperiode'] = return_periods_frame.max()\n", + "_df['max. Regensumme'] = rainfall_sum_frame.max()\n", + "_df.rename(minutes_readable).style.\\\n", + " background_gradient(subset=[hri.METHODS.SCHMITT,\n", + " hri.METHODS.KRUEGER_PFISTER,\n", + " hri.METHODS.MUDERSBACH], cmap=cmap, vmin=0, vmax=12).\\\n", + " bar(subset=['max. Wiederkehrperiode', 'max. Regensumme'], vmin=0, vmax=100).format(\"{:.1f}\", subset=['max. Wiederkehrperiode', 'max. Regensumme'])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/examples/example_python_api.ipynb.txt b/_sources/examples/example_python_api.ipynb.txt new file mode 100644 index 0000000..c320370 --- /dev/null +++ b/_sources/examples/example_python_api.ipynb.txt @@ -0,0 +1,534 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "from idf_analysis.idf_class import IntensityDurationFrequencyAnalyse\n", + "from idf_analysis.definitions import *\n", + "import pandas as pd\n", + "from os import path\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "plt.style.use('bmh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Intensity Duration Frequency Analyse" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Parameter\n", + "\n", + "**series_kind**:\n", + "\n", + "`SERIES.PARTIAL` = Partielle Serie (partial duration series, PDS) (peak over threshold, POT)\n", + "\n", + "`SERIES.ANNUAL` = Jährliche Serie (annual maximum series, AMS)\n", + "\n", + "**worksheet**:\n", + "\n", + "`METHOD.KOSTRA`:\n", + "- DWA-A 531\n", + "- KOSTRA - empfohlen\n", + "- Stützstellen: 60 min und 12 h\n", + "\n", + "`METHOD.CONVECTIVE_ADVECTIVE`:\n", + "- DWA-A 531\n", + "- Unterscheidung in überwiegend konvektiv und advektiv verursachte Starkregen\n", + "- Stützstellen: 3 h und 24 h\n", + "\n", + "`METHOD.ATV`:\n", + "- ATV-A 121\n", + "- Stützstellen: 3 h und 48 h\n", + "\n", + "**extended_durations** = Inkludiert die Dauerstufen `[0.75d, 1d, 2d, 3d, 4d, 5d, 6d]` in der Analyse (in d=Tage)\n", + "\n", + "Standardmäßig berechnete Dauerstufen `[5m, 10m, 15m, 20m, 30m, 45m, 60m, 1.5h, 3h, 4.5h, 6h, 7.5h, 10h, 12h]`" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "idf = IntensityDurationFrequencyAnalyse(series_kind=SERIES.PARTIAL, worksheet=METHOD.KOSTRA, extended_durations=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I used the rain-time-series from ehyd.gv.at with the ID 112086 (Graz-Andritz)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "data = pd.read_parquet('ehyd_112086.parquet')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "output_directory = 'ehyd_112086_idf_data'" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": " precipitation\ndatetime \n2007-09-18 11:09:00 0.1\n2007-09-18 11:12:00 0.1\n2007-09-18 11:13:00 0.1\n2007-09-18 11:14:00 0.1\n2007-09-18 11:20:00 0.1", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
precipitation
datetime
2007-09-18 11:09:000.1
2007-09-18 11:12:000.1
2007-09-18 11:13:000.1
2007-09-18 11:14:000.1
2007-09-18 11:20:000.1
\n
" + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": " precipitation\ndatetime \n2016-12-28 22:24:00 0.006\n2016-12-28 22:25:00 0.092\n2016-12-28 22:26:00 0.006\n2016-12-28 22:45:00 0.090\n2016-12-28 22:46:00 0.006", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
precipitation
datetime
2016-12-28 22:24:000.006
2016-12-28 22:25:000.092
2016-12-28 22:26:000.006
2016-12-28 22:45:000.090
2016-12-28 22:46:000.006
\n
" + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "idf.set_series(data['precipitation'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bei jeder neuen Berechnung werden Zwischenergebnisse erstellt, welche nur abhängig von der gewählten Serie `series_kind` und der angegebenen/benötigten Dauerstufen sind. Dieser Vorgang dauert einige Sekunden.\n", + "Auserdem enthalten diese Zwischenergebnisse die Parameter, die zur Berechnung der Regenhöhe und Regenspende benötigt werden.\n", + "Hier sind bereist die Berechnungsverfahren und Stückpunkte laut dem gewählten `worksheet` berücksichtigt." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Um Zeit zu sparen, gibt es die Möglichkeit, die Parameter zwischenzuspeichern und bei erneutem Aufrufen des Skripts werden diese Parameter nicht mehr berechnet, sondern aus der Datei gelesen." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "idf.auto_save_parameters(path.join(output_directory, 'idf_parameters.yaml'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Abgerufen können diese Zwischenergebnisse mit:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": "" + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Berechnungen" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": "19.031596336052708" + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.depth_of_rainfall(duration=15, return_period=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Resultierende Regenhöhe h_N(T_n=1.0a, D=15.0min) = 19.03 mm\n" + ] + } + ], + "source": [ + "print('Resultierende Regenhöhe h_N(T_n={t:0.1f}a, D={d:0.1f}min) = {h:0.2f} mm'\n", + " ''.format(t=1, d=15, h=idf.depth_of_rainfall(15, 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": "211.46218151169674" + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.rain_flow_rate(duration=15, return_period=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Resultierende Regenspende r_N(T_n=1.0a, D=15.0min) = 211.46 L/(s*ha)\n" + ] + } + ], + "source": [ + "print('Resultierende Regenspende r_N(T_n={t:0.1f}a, D={d:0.1f}min) = {r:0.2f} L/(s*ha)'\n", + " ''.format(t=1, d=15, r=idf.rain_flow_rate(15, 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": "11.410836729727" + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.r_720_1()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": "0.1430180144131331" + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.get_return_period(height_of_rainfall=10, duration=15)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": "5.433080747189968" + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.get_duration(height_of_rainfall=10, return_period=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": " 1 2 3 5 10 20 25 30 50 \\\n5 9.39 10.97 11.89 13.04 14.61 16.19 16.69 17.11 18.26 \n10 15.15 17.62 19.06 20.88 23.35 25.82 26.62 27.27 29.09 \n15 19.03 22.25 24.13 26.51 29.72 32.94 33.98 34.83 37.20 \n20 21.83 25.71 27.99 30.85 34.73 38.62 39.87 40.89 43.75 \n30 25.60 30.66 33.62 37.35 42.41 47.47 49.10 50.43 54.16 \n45 28.92 35.51 39.37 44.23 50.83 57.42 59.54 61.28 66.14 \n60 30.93 38.89 43.54 49.40 57.36 65.31 67.88 69.97 75.83 \n90 33.37 41.74 46.64 52.80 61.17 69.54 72.23 74.43 80.60 \n120 35.22 43.90 48.97 55.36 64.03 72.70 75.49 77.78 84.17 \n180 38.01 47.13 52.46 59.18 68.30 77.42 80.36 82.76 89.48 \n240 40.12 49.57 55.10 62.06 71.51 80.97 84.01 86.49 93.46 \n360 43.29 53.23 59.04 66.37 76.31 86.25 89.45 92.06 99.39 \n540 46.71 57.16 63.27 70.98 81.43 91.89 95.25 98.00 105.71 \n720 49.29 60.13 66.47 74.45 85.29 96.12 99.61 102.46 110.44 \n1080 54.41 64.97 71.15 78.94 89.50 100.06 103.46 106.24 114.02 \n1440 58.02 67.72 73.39 80.54 90.24 99.93 103.05 105.61 112.75 \n2880 66.70 77.41 83.68 91.57 102.29 113.00 116.45 119.26 127.16 \n4320 71.93 85.72 93.78 103.95 117.73 131.52 135.96 139.58 149.75 \n5760 78.95 95.65 105.42 117.72 134.43 151.13 156.50 160.89 173.20 \n7200 83.53 101.38 111.82 124.98 142.83 160.68 166.43 171.12 184.28 \n8640 85.38 104.95 116.40 130.82 150.38 169.95 176.25 181.40 195.82 \n\n 75 100 \n5 19.18 19.83 \n10 30.54 31.56 \n15 39.08 40.42 \n20 46.02 47.63 \n30 57.12 59.22 \n45 69.99 72.73 \n60 80.49 83.79 \n90 85.49 88.96 \n120 89.24 92.84 \n180 94.81 98.60 \n240 98.99 102.91 \n360 105.20 109.33 \n540 111.82 116.16 \n720 116.78 121.28 \n1080 120.20 124.58 \n1440 118.42 122.45 \n2880 133.42 137.87 \n4320 157.81 163.53 \n5760 182.97 189.90 \n7200 194.72 202.13 \n8640 207.27 215.39 ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
1235102025305075100
59.3910.9711.8913.0414.6116.1916.6917.1118.2619.1819.83
1015.1517.6219.0620.8823.3525.8226.6227.2729.0930.5431.56
1519.0322.2524.1326.5129.7232.9433.9834.8337.2039.0840.42
2021.8325.7127.9930.8534.7338.6239.8740.8943.7546.0247.63
3025.6030.6633.6237.3542.4147.4749.1050.4354.1657.1259.22
4528.9235.5139.3744.2350.8357.4259.5461.2866.1469.9972.73
6030.9338.8943.5449.4057.3665.3167.8869.9775.8380.4983.79
9033.3741.7446.6452.8061.1769.5472.2374.4380.6085.4988.96
12035.2243.9048.9755.3664.0372.7075.4977.7884.1789.2492.84
18038.0147.1352.4659.1868.3077.4280.3682.7689.4894.8198.60
24040.1249.5755.1062.0671.5180.9784.0186.4993.4698.99102.91
36043.2953.2359.0466.3776.3186.2589.4592.0699.39105.20109.33
54046.7157.1663.2770.9881.4391.8995.2598.00105.71111.82116.16
72049.2960.1366.4774.4585.2996.1299.61102.46110.44116.78121.28
108054.4164.9771.1578.9489.50100.06103.46106.24114.02120.20124.58
144058.0267.7273.3980.5490.2499.93103.05105.61112.75118.42122.45
288066.7077.4183.6891.57102.29113.00116.45119.26127.16133.42137.87
432071.9385.7293.78103.95117.73131.52135.96139.58149.75157.81163.53
576078.9595.65105.42117.72134.43151.13156.50160.89173.20182.97189.90
720083.53101.38111.82124.98142.83160.68166.43171.12184.28194.72202.13
864085.38104.95116.40130.82150.38169.95176.25181.40195.82207.27215.39
\n
" + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.result_table().round(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": "return period (a) 1 2 3 5 10 20 25 \\\nfrequency (1/a) 1.000 0.500 0.333 0.200 0.100 0.050 0.040 \nduration (min) \n5 9.39 10.97 11.89 13.04 14.61 16.19 16.69 \n10 15.15 17.62 19.06 20.88 23.35 25.82 26.62 \n15 19.03 22.25 24.13 26.51 29.72 32.94 33.98 \n20 21.83 25.71 27.99 30.85 34.73 38.62 39.87 \n30 25.60 30.66 33.62 37.35 42.41 47.47 49.10 \n45 28.92 35.51 39.37 44.23 50.83 57.42 59.54 \n60 30.93 38.89 43.54 49.40 57.36 65.31 67.88 \n90 33.37 41.74 46.64 52.80 61.17 69.54 72.23 \n120 35.22 43.90 48.97 55.36 64.03 72.70 75.49 \n180 38.01 47.13 52.46 59.18 68.30 77.42 80.36 \n240 40.12 49.57 55.10 62.06 71.51 80.97 84.01 \n360 43.29 53.23 59.04 66.37 76.31 86.25 89.45 \n540 46.71 57.16 63.27 70.98 81.43 91.89 95.25 \n720 49.29 60.13 66.47 74.45 85.29 96.12 99.61 \n1080 54.41 64.97 71.15 78.94 89.50 100.06 103.46 \n1440 58.02 67.72 73.39 80.54 90.24 99.93 103.05 \n2880 66.70 77.41 83.68 91.57 102.29 113.00 116.45 \n4320 71.93 85.72 93.78 103.95 117.73 131.52 135.96 \n5760 78.95 95.65 105.42 117.72 134.43 151.13 156.50 \n7200 83.53 101.38 111.82 124.98 142.83 160.68 166.43 \n8640 85.38 104.95 116.40 130.82 150.38 169.95 176.25 \n\nreturn period (a) 30 50 75 100 \nfrequency (1/a) 0.033 0.020 0.013 0.010 \nduration (min) \n5 17.11 18.26 19.18 19.83 \n10 27.27 29.09 30.54 31.56 \n15 34.83 37.20 39.08 40.42 \n20 40.89 43.75 46.02 47.63 \n30 50.43 54.16 57.12 59.22 \n45 61.28 66.14 69.99 72.73 \n60 69.97 75.83 80.49 83.79 \n90 74.43 80.60 85.49 88.96 \n120 77.78 84.17 89.24 92.84 \n180 82.76 89.48 94.81 98.60 \n240 86.49 93.46 98.99 102.91 \n360 92.06 99.39 105.20 109.33 \n540 98.00 105.71 111.82 116.16 \n720 102.46 110.44 116.78 121.28 \n1080 106.24 114.02 120.20 124.58 \n1440 105.61 112.75 118.42 122.45 \n2880 119.26 127.16 133.42 137.87 \n4320 139.58 149.75 157.81 163.53 \n5760 160.89 173.20 182.97 189.90 \n7200 171.12 184.28 194.72 202.13 \n8640 181.40 195.82 207.27 215.39 ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
return period (a)1235102025305075100
frequency (1/a)1.0000.5000.3330.2000.1000.0500.0400.0330.0200.0130.010
duration (min)
59.3910.9711.8913.0414.6116.1916.6917.1118.2619.1819.83
1015.1517.6219.0620.8823.3525.8226.6227.2729.0930.5431.56
1519.0322.2524.1326.5129.7232.9433.9834.8337.2039.0840.42
2021.8325.7127.9930.8534.7338.6239.8740.8943.7546.0247.63
3025.6030.6633.6237.3542.4147.4749.1050.4354.1657.1259.22
4528.9235.5139.3744.2350.8357.4259.5461.2866.1469.9972.73
6030.9338.8943.5449.4057.3665.3167.8869.9775.8380.4983.79
9033.3741.7446.6452.8061.1769.5472.2374.4380.6085.4988.96
12035.2243.9048.9755.3664.0372.7075.4977.7884.1789.2492.84
18038.0147.1352.4659.1868.3077.4280.3682.7689.4894.8198.60
24040.1249.5755.1062.0671.5180.9784.0186.4993.4698.99102.91
36043.2953.2359.0466.3776.3186.2589.4592.0699.39105.20109.33
54046.7157.1663.2770.9881.4391.8995.2598.00105.71111.82116.16
72049.2960.1366.4774.4585.2996.1299.61102.46110.44116.78121.28
108054.4164.9771.1578.9489.50100.06103.46106.24114.02120.20124.58
144058.0267.7273.3980.5490.2499.93103.05105.61112.75118.42122.45
288066.7077.4183.6891.57102.29113.00116.45119.26127.16133.42137.87
432071.9385.7293.78103.95117.73131.52135.96139.58149.75157.81163.53
576078.9595.65105.42117.72134.43151.13156.50160.89173.20182.97189.90
720083.53101.38111.82124.98142.83160.68166.43171.12184.28194.72202.13
864085.38104.95116.40130.82150.38169.95176.25181.40195.82207.27215.39
\n
" + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.result_table(add_names=True).round(2)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "To save the table as a csv:" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "idf.result_table(add_names=True).round(2).to_csv(path.join(output_directory, 'idf_table_UNIX.csv'), sep=',', decimal='.', float_format='%0.2f')" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "return period (a) 1 2 3 5 10 20 25 30 50 75 100\n", + "frequency (1/a) 1.000 0.500 0.333 0.200 0.100 0.050 0.040 0.033 0.020 0.013 0.010\n", + "duration (min) \n", + "5 9.39 10.97 11.89 13.04 14.61 16.19 16.69 17.11 18.26 19.18 19.83\n", + "10 15.15 17.62 19.06 20.88 23.35 25.82 26.62 27.27 29.09 30.54 31.56\n", + "15 19.03 22.25 24.13 26.51 29.72 32.94 33.98 34.83 37.20 39.08 40.42\n", + "20 21.83 25.71 27.99 30.85 34.73 38.62 39.87 40.89 43.75 46.02 47.63\n", + "30 25.60 30.66 33.62 37.35 42.41 47.47 49.10 50.43 54.16 57.12 59.22\n", + "45 28.92 35.51 39.37 44.23 50.83 57.42 59.54 61.28 66.14 69.99 72.73\n", + "60 30.93 38.89 43.54 49.40 57.36 65.31 67.88 69.97 75.83 80.49 83.79\n", + "90 33.37 41.74 46.64 52.80 61.17 69.54 72.23 74.43 80.60 85.49 88.96\n", + "120 35.22 43.90 48.97 55.36 64.03 72.70 75.49 77.78 84.17 89.24 92.84\n", + "180 38.01 47.13 52.46 59.18 68.30 77.42 80.36 82.76 89.48 94.81 98.60\n", + "240 40.12 49.57 55.10 62.06 71.51 80.97 84.01 86.49 93.46 98.99 102.91\n", + "360 43.29 53.23 59.04 66.37 76.31 86.25 89.45 92.06 99.39 105.20 109.33\n", + "540 46.71 57.16 63.27 70.98 81.43 91.89 95.25 98.00 105.71 111.82 116.16\n", + "720 49.29 60.13 66.47 74.45 85.29 96.12 99.61 102.46 110.44 116.78 121.28\n", + "1080 54.41 64.97 71.15 78.94 89.50 100.06 103.46 106.24 114.02 120.20 124.58\n", + "1440 58.02 67.72 73.39 80.54 90.24 99.93 103.05 105.61 112.75 118.42 122.45\n", + "2880 66.70 77.41 83.68 91.57 102.29 113.00 116.45 119.26 127.16 133.42 137.87\n", + "4320 71.93 85.72 93.78 103.95 117.73 131.52 135.96 139.58 149.75 157.81 163.53\n", + "5760 78.95 95.65 105.42 117.72 134.43 151.13 156.50 160.89 173.20 182.97 189.90\n", + "7200 83.53 101.38 111.82 124.98 142.83 160.68 166.43 171.12 184.28 194.72 202.13\n", + "8640 85.38 104.95 116.40 130.82 150.38 169.95 176.25 181.40 195.82 207.27 215.39\n" + ] + } + ], + "source": [ + "print(idf.result_table(add_names=True).round(2).to_string())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To create a color plot of the IDF curves:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "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ZZlEIlHoJhAAfD5foZtAgDyIBLkQA/IgDuRCDMiDOMjRheyD0NDQEM477zycd955WLVqFdauXZu+HY1GZ/Qcl156afr6TNbrhEIhXHXVVVOGpmg0iiuvvJKm2s2Rmbojcgt5EAdyIQbkQRzIhRiQB3GQowvZz+Oy2+146aWXAADf/va3YTQa8fnPf35Wz/HUU0+lr8+kYtyvf/1rXHXVVVAqlZOeo9FocN555+HPf/4zPvShD82qPYQ8a+GLCHkQB3IhBuRBHMiFGJAHcZCjC9mPCGWD+vp6AMDx48dx5pln4gtf+ALOOussXHfddQiFQuPOf+SRR3DFFVekb99444244IILcNZZZ+H+++9P33/llVfikUceyXn7S5He3t5CN4EAeRAJciEG5EEcyIUYkAdxkKMLCkJZ5ujRo7jtttuwY8cOWK1W/PWvf804Ho1G0d7ejoULF6bv+/GPf4znn38ezz33HP7v//4PQ0NDAIDVq1ejra0tr+0vFeRYAlJEyIM4kAsxIA/iQC7EgDyIgxxdUBCagt/85je48MILwTnHX/7yF7z88svTPmbhwoU46aSTAAAnn3wyjh8/nnF8cHAQVqs147577rkHTqcTl1xyCbq6unD48GEAgFKphEajkeXitfmSjz2jiOkhD+JALsSAPIgDuRAD8iAOcnRBQWgaLBYL/vznP8/4/LG/RAqFYlyxA71ej3A4nL798ssv48UXX8RTTz2F1tZWrF+/HpFIJH08EonIcqff+eLxeArdBALkQSTIhRiQB3EgF2JAHsRBji4oCE3Dli1b8JOf/GTG1dsYY1Met9lsSCQS6TDk9Xphs9lgMBjw3nvvYefOnelzh4aGUF5ePqMCDEQmDoej0E0gQB5EglyIAXkQB3IhBuRBHOTogoLQNJSVleH9738/HnrooRmdP5Py2RdccAFee+01AMBFF12EeDyOM844A//93/+NU089NX1ea2srLr744rk1XObI8VsNESEP4kAuxIA8iAO5EAPyIA5ydCH78tljufPOOye8/9Of/jTuvffeSR/X0dEBQFof9MILL6Tvn6wM92233Yaf//znOP/886HVaietDPfHP/4RX//612fYemIssVis0E0gQB5EglyIAXkQB3IhBuRBHOTogoLQFHzsYx9LX9+7d++MHjOTaWwbNmzAueeei0QiMeleQtFoFFdc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\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = idf.result_figure(color=True, add_interim=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To create a black/white plot of the IDF curves:" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = idf.result_figure(color=False, add_interim=True)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/_sources/examples/example_python_api_extended.ipynb.txt b/_sources/examples/example_python_api_extended.ipynb.txt new file mode 100644 index 0000000..fc5cdf5 --- /dev/null +++ b/_sources/examples/example_python_api_extended.ipynb.txt @@ -0,0 +1,288 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from idf_analysis.idf_class import IntensityDurationFrequencyAnalyse\n", + "from idf_analysis.definitions import *\n", + "import pandas as pd\n", + "from os import path\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "plt.style.use('bmh')" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Intensity Duration Frequency Analyse - EXTENDED" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 3, + "outputs": [], + "source": [ + "# sub-folder for the results\n", + "output_directory = path.join('ehyd_112086_idf_data')\n", + "\n", + "# initialize of the analysis class\n", + "idf = IntensityDurationFrequencyAnalyse(series_kind=SERIES.PARTIAL, worksheet=METHOD.KOSTRA, extended_durations=True)\n", + "\n", + "# reading the pandas series of the precipitation (data from ehyd.gv.at - ID=112086)\n", + "series = pd.read_parquet('ehyd_112086.parquet')['precipitation']\n", + "\n", + "# setting the series for the analysis\n", + "idf.set_series(series)\n", + "\n", + "# auto-save the calculated parameter so save time for a later use\n", + "idf.auto_save_parameters(path.join(output_directory, 'idf_parameters.yaml'))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 12, + "outputs": [ + { + "data": { + "text/plain": "('Columns: ',\n Index(['start', 'end', 'duration', 'rain_sum', 'last_event'], dtype='object'),\n '| Number of events: ',\n 1356)" + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "events = idf.rain_events\n", + "\"Columns: \", events.columns, \"| Number of events: \", events.index.size" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 13, + "outputs": [ + { + "data": { + "text/plain": "('Columns: ',\n Index(['start', 'end', 'duration', 'rain_sum', 'last_event'], dtype='object'),\n '| Number of events: ',\n 252)" + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# reduce number of event by limiting the minimum sum of rainfall\n", + "events = events[events[COL.LP] > 10].copy()\n", + "\"Columns: \", events.columns, \"| Number of events: \", events.index.size" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 14, + "outputs": [ + { + "data": { + "text/plain": "('Columns: ',\n Index(['start', 'end', 'duration', 'rain_sum', 'last_event',\n 'max_return_period', 'max_return_period_duration'],\n dtype='object'),\n '| Number of events: ',\n 252)" + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# add the maximum return period to the events and at which duration this period occurs\n", + "idf.add_max_return_periods_to_events(events)\n", + "\"Columns: \", events.columns, \"| Number of events: \", events.index.size" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 15, + "outputs": [ + { + "data": { + "text/plain": "('Columns: ',\n Index(['start', 'end', 'duration', 'rain_sum', 'last_event',\n 'max_return_period', 'max_return_period_duration'],\n dtype='object'),\n '| Number of events: ',\n 19)" + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# reduce number of event by limiting the minimum return period of an event\n", + "events = events[events[COL.MAX_PERIOD] > 2].copy()\n", + "\"Columns: \", events.columns, \"| Number of events: \", events.index.size" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 16, + "outputs": [ + { + "data": { + "text/plain": " start end duration rain_sum \\\n105 2008-06-23 19:50:00 2008-06-23 23:23:00 0 days 03:33:00 34.9 \n125 2008-07-17 14:14:00 2008-07-18 06:27:00 0 days 16:13:00 74.6 \n127 2008-07-20 17:43:00 2008-07-21 03:55:00 0 days 10:12:00 27.7 \n277 2009-07-18 08:55:00 2009-07-18 13:19:00 0 days 04:24:00 58.0 \n286 2009-08-21 19:49:00 2009-08-21 20:29:00 0 days 00:40:00 34.2 \n289 2009-08-28 23:41:00 2009-08-29 00:42:00 0 days 01:01:00 49.3 \n291 2009-09-04 00:31:00 2009-09-04 18:18:00 0 days 17:47:00 69.0 \n566 2011-08-03 19:52:00 2011-08-04 07:45:00 0 days 11:53:00 54.7 \n684 2012-07-14 16:54:00 2012-07-15 13:07:00 0 days 20:13:00 59.8 \n797 2013-05-05 20:46:00 2013-05-07 12:41:00 1 days 15:55:00 119.6 \n844 2013-08-27 17:09:00 2013-08-27 23:48:00 0 days 06:39:00 43.3 \n845 2013-08-28 11:41:00 2013-08-28 16:22:00 0 days 04:41:00 28.5 \n947 2014-05-11 10:20:00 2014-05-11 23:18:00 0 days 12:58:00 55.7 \n948 2014-05-12 17:22:00 2014-05-13 17:27:00 1 days 00:05:00 20.6 \n1137 2015-07-08 11:50:00 2015-07-09 00:26:00 0 days 12:36:00 77.8 \n1261 2016-06-05 11:03:00 2016-06-05 14:57:00 0 days 03:54:00 40.4 \n1294 2016-07-21 22:28:00 2016-07-21 23:21:00 0 days 00:53:00 37.2 \n1298 2016-07-25 10:18:00 2016-07-25 15:48:00 0 days 05:30:00 33.8 \n1300 2016-07-27 15:25:00 2016-07-27 20:25:00 0 days 05:00:00 12.2 \n\n last_event max_return_period max_return_period_duration \n105 2 days 21:52:00 5.363788 15.0 \n125 0 days 04:09:00 6.457449 120.0 \n127 2 days 02:48:00 2.831013 5760.0 \n277 2 days 01:56:00 3.422038 240.0 \n286 4 days 03:04:00 3.930161 20.0 \n289 1 days 03:44:00 20.299093 20.0 \n291 5 days 11:06:00 2.605659 1080.0 \n566 1 days 23:09:00 12.962866 20.0 \n684 1 days 01:15:00 3.720531 8640.0 \n797 0 days 17:29:00 30.584981 2880.0 \n844 0 days 13:56:00 2.452099 5.0 \n845 0 days 11:53:00 3.543837 2880.0 \n947 0 days 13:15:00 2.082195 2880.0 \n948 0 days 18:04:00 2.798822 4320.0 \n1137 8 days 13:52:00 6.054031 720.0 \n1261 0 days 19:55:00 6.537112 5.0 \n1294 5 days 00:03:00 2.426623 30.0 \n1298 0 days 19:00:00 3.400347 5760.0 \n1300 1 days 01:04:00 4.663787 8640.0 ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
startenddurationrain_sumlast_eventmax_return_periodmax_return_period_duration
1052008-06-23 19:50:002008-06-23 23:23:000 days 03:33:0034.92 days 21:52:005.36378815.0
1252008-07-17 14:14:002008-07-18 06:27:000 days 16:13:0074.60 days 04:09:006.457449120.0
1272008-07-20 17:43:002008-07-21 03:55:000 days 10:12:0027.72 days 02:48:002.8310135760.0
2772009-07-18 08:55:002009-07-18 13:19:000 days 04:24:0058.02 days 01:56:003.422038240.0
2862009-08-21 19:49:002009-08-21 20:29:000 days 00:40:0034.24 days 03:04:003.93016120.0
2892009-08-28 23:41:002009-08-29 00:42:000 days 01:01:0049.31 days 03:44:0020.29909320.0
2912009-09-04 00:31:002009-09-04 18:18:000 days 17:47:0069.05 days 11:06:002.6056591080.0
5662011-08-03 19:52:002011-08-04 07:45:000 days 11:53:0054.71 days 23:09:0012.96286620.0
6842012-07-14 16:54:002012-07-15 13:07:000 days 20:13:0059.81 days 01:15:003.7205318640.0
7972013-05-05 20:46:002013-05-07 12:41:001 days 15:55:00119.60 days 17:29:0030.5849812880.0
8442013-08-27 17:09:002013-08-27 23:48:000 days 06:39:0043.30 days 13:56:002.4520995.0
8452013-08-28 11:41:002013-08-28 16:22:000 days 04:41:0028.50 days 11:53:003.5438372880.0
9472014-05-11 10:20:002014-05-11 23:18:000 days 12:58:0055.70 days 13:15:002.0821952880.0
9482014-05-12 17:22:002014-05-13 17:27:001 days 00:05:0020.60 days 18:04:002.7988224320.0
11372015-07-08 11:50:002015-07-09 00:26:000 days 12:36:0077.88 days 13:52:006.054031720.0
12612016-06-05 11:03:002016-06-05 14:57:000 days 03:54:0040.40 days 19:55:006.5371125.0
12942016-07-21 22:28:002016-07-21 23:21:000 days 00:53:0037.25 days 00:03:002.42662330.0
12982016-07-25 10:18:002016-07-25 15:48:000 days 05:30:0033.80 days 19:00:003.4003475760.0
13002016-07-27 15:25:002016-07-27 20:25:000 days 05:00:0012.21 days 01:04:004.6637878640.0
\n
" + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "events" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 18, + "outputs": [ + { + "data": { + "text/plain": "start 2008-07-17 14:14:00\nend 2008-07-18 06:27:00\nduration 0 days 16:13:00\nrain_sum 74.6\nlast_event 0 days 04:09:00\nmax_return_period 6.457449\nmax_return_period_duration 120.0\nName: 125, dtype: object" + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# lets pick one event\n", + "event = events.loc[125]\n", + "event\n", + "\n" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 19, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n" + ] + }, + { + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEjCAYAAABnxZXbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABPzElEQVR4nO2deXxU1dn4v082ErInLGETcCkIKC5IFay14kKt4lKx2lbbam1/trXaV+vr0mrr3u0VW/V9bUWttYutS7VqcVdERaqIG6CiEsOSELInZM/z++PcCZNhJrlJZjKT4fl+PvPJnXvOvfc5907mmXOeTVQVwzAMw0g0UuItgGEYhmGEwxSUYRiGkZCYgjIMwzASElNQhmEYRkJiCsowDMNISExBGYZhGAmJKSjDMAwjITEFZRiGYSQkaZEaROQcPydQ1buiJ45hGIZhOCRSJgkRed7H8aqqR0VXJMMwDMPoRUEZhmEYRjzpbYnPl31KVbuiJ45hGIZhOCIqKKAD6G16JV57alQlMgzDMAx6V1BTh0wKwzAMwwjBbFCGYRhGQtLbDKoHIrII+DwwCre8B4Cqnh0DuQzDMIzdHF+OECJyNXCH138xUAUcB9TGTDLDMAxjt8bXEp+IlAJfUtV3RaRWVQtEZC7wE1VdFHMpY8Abb7yRkpmZeWlaWtq+WEYNwzCMWNPV0dGxrqWl5ZcHH3ywL+9vv0t8Bar6rrfdJiLpqrpKRD4/MDnjT2Zm5qXFxcWnjxgxwtzkDcMwhoDW1tb9qqqqAG7y09+vgvpIRGaq6nvAu8D5IlID1AxMzPiTlpa2ryknwzCMoWPEiBFd3qqVL/wqqJ8Axd72ZcBfgBzge/0TL6GwZT3DMIyhx/d3b8SOIvKDoLcfqOpyAFVdpap7q2qJqj40CCENI+moqqpKXbJkyeh4y9Eb55xzzuQ1a9Zk+u1/xx13FJ9//vl7xFImwwhHb5rs+qDt1bEWxDCGC11dXXR2doZtq66uTv3Tn/40pr/n7OjoGLRcfq9z1113lR5wwAEtQ3JBwxgEvSmoj0XkN17ZjXQROSfca6gENYx48uGHH2bMnj171llnnTVlzpw5Mz/55JOM66+/fuy8efP2PeSQQ2ZcccUV4wF++tOfTty8efOIuXPnzvjRj3408cknn8w98cQT9w6c5/zzz9/jjjvuKAaYMWPGfhdffPGEQw89dN8///nPhTNmzNjviiuuGH/ooYfuO2fOnBnvvPPOLrOcO+64o/jkk0/ea8GCBdP233//WT/5yU/GBdqWLl1aNH/+/H3nzp0747zzzpscUHrjx48/8MILL5w4d+7cGS+++GLOggULpr3yyisjAe65556iOXPmzDj44INnXnzxxRMC5/q///u/4tmzZ8+aP3/+vqtWrcoJ7L/vvvsKDz744Jlz586dcdRRR02Lwa02jG56U1BfAfKBM4F04Kwwr6/HWkDDSBQ2bdo04rzzzqtcvXr1e+vWrcv85JNPMlesWLFu5cqVa995552RTz/9dM611167acKECa2rVq1ae/PNN2/q65yFhYUdK1euXPeNb3yjBqC4uLhj5cqV677+9a9X3nzzzWPDHfPuu+9m//Wvf93w6quvvvfvf/+76JVXXhn59ttvZz7yyCNFzz///PpVq1atTUlJ0bvvvrsYoKWlJWXOnDlNq1atWrtgwYLGwHk+/fTT9JtuumnCY4899sHKlSvfe/vtt7Pvv//+grKysvQlS5aMf/LJJ9c/99xz6zds2JAVOGbJkiXjHnrooQ9WrVq19h//+MeGwd9Vw4hMRCcJVf0A+DaAiDyrqguGTCrDSEBKSkrajjjiiCaAZ599Nu+VV17JO/TQQ2cANDc3p3z44YeZU6ZMaevPOc8444wenrCnnXZaDcDBBx+849///ndhuGMOO+yw+jFjxnQCHHvssTUrVqzISUtL03Xr1o08/PDD9wVobW1NGTVqVAdASkoKZ5555i4etytXrsw+5JBDGkpKSjoATjnllOqXX345ByB4/4knnlj90UcfZQIceOCBjd/97nennHDCCTWnn376sPXiNYYHvrz4gpVTaBkOK7dh7C5kZmZ2f9ZVlfPPP3/rBRdcsD24z4cffpgR/D4tLU2Dg+FbW1sluD03N7fH/09mZqYCpKamakdHR4++AURkl/eqKieffHLVr371q82h/TMyMrrS0nxnNeuVP/zhD5++9NJL2U888UT+kUceOeOFF15YG1CWhhFt/KY6OkhEXhWRJqDde3V4fw1jt+Poo4+uv//++0fV19enAJSWlqZv2bIlLT8/v3PHjh3d/1d77rln68cff5zV3NwsVVVVqa+99lreYK/96quv5lVWVqY2NTXJM888UzB//vzGBQsW1D/55JOFW7ZsSQOorKxM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\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, caption = idf.event_plot(event)\n", + "fig.tight_layout()\n" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 20, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEjCAYAAABnxZXbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABJE0lEQVR4nO3deXxU5fX48c/JRkJCQhZ2EHApCCgqSBVaakUttYrWitVWqUptv7ZabPVn3aot1dbaRbTW1lZErbZq3felboiKFBE3wJ0YloTsG9lzfn/cO2EyzCQ3yZ3MMDnv12temdz13JnJPLn3Puc5oqoYY4wx8SYp1gEYY4wx4VgDZYwxJi5ZA2WMMSYuWQNljDEmLlkDZYwxJi5ZA2WMMSYuWQNljDEmLlkDZYwxJi6lRJohImd72YCq3uZfOMYYY4xDIo0kISIvelhfVfVIf0MyxhhjumigjDHGmFjq6hKfp/tTqtruXzjGGGOMI2IDBbQCXZ1eiTs/2deIjDHGGLpuoCb2WxTGGGNMCLsHZYwxJi51dQbViYgsAL4CFOBc3gNAVRdFIS5jjDEDnKeOECJyFXCLu/xCoBz4GlAVtciMMcYMaJ4u8YlIIfANVX1PRKpUdaiIzAKuUNUFUY8yCt58882k9PT0i1NSUvbHRtQwxphoa29tbd3Y2Nh43YwZMzz1/vZ6iW+oqr7nPm8WkVRVXSMiX+ldnLGXnp5+cX5+/imDBg2ybvLGGNMPmpqaDigvLwe41svyXhuoT0Rkqqq+D7wHnCsilUBl78KMvZSUlP2tcTLGmP4zaNCgdveqlSdeG6grgHz3+SXAv4As4Ec9Cy+u2GU9Y4zpf56/eyMuKCLnBf36oaquBFDVNaq6r6qOVNUH+xCkMQmnvLw8edmyZcNiHUdXzj777PHr169P97r8Lbfckn/uuefuFc2YjAmnq5bsmqDn66IdiDF7ivb2dtra2sLOq6ioSP7nP/85vKfbbG1t7XNcXvdz2223FR500EGN/bJDY/qgqwbqUxH5o1t2I1VEzg736K9AjYmljz76KG369OnTzjjjjAkzZ86c+tlnn6Vdc801I2bPnr3/oYceOuWyyy4bDfCLX/xi7NatWwfNmjVryk9/+tOxzzzzzJDjjz9+38B2zj333L1uueWWfIApU6YccOGFF4457LDD9r/77rtzp0yZcsBll102+rDDDtt/5syZU959993dznJuueWW/BNPPHGfefPmTTrwwAOnXXHFFaMC85YvX543Z86c/WfNmjXlnHPOGR9o9EaPHn3wkiVLxs6aNWvKyy+/nDVv3rxJr7322mCA22+/PW/mzJlTZsyYMfXCCy8cE9jW3/72t/zp06dPmzNnzv5r1qzJCky/6667cmfMmDF11qxZU4488shJUXipjenQVQP1bSAHOA1IBc4I8zg92gEaEy+2bNky6Jxzzildt27d+xs3bkz/7LPP0letWrVx9erVG959993Bzz33XNavf/3rLWPGjGlas2bNhuuvv35Ld9vMzc1tXb169cbvfe97lQD5+fmtq1ev3nj66aeXXn/99SPCrfPee+9l/vvf//749ddff/+pp57Ke+211wa/88476Y888kjeiy++uGnNmjUbkpKSdMWKFfkAjY2NSTNnzqxfs2bNhnnz5tUFtvP555+nXnvttWMef/zxD1evXv3+O++8k3nvvfcOLSoqSl22bNnoZ555ZtMLL7yw6eOPP84IrLNs2bJRDz744Idr1qzZ8J///Ofjvr+qxkQWsZOEqn4IfB9ARJ5X1Xn9FpUxcWjkyJHNc+fOrQd4/vnns1977bXsww47bApAQ0ND0kcffZQ+YcKE5p5s89RTT+3UE/bkk0+uBJgxY8bOp556KjfcOocffnjN8OHD2wCOOeaYylWrVmWlpKToxo0bB3/pS1/aH6CpqSmpoKCgFSApKYnTTjtttx63q1evzjz00ENrR44c2QrwzW9+s+LVV1/NAgiefvzxx1d88skn6QAHH3xw3Q9/+MMJxx13XOUpp5yyx/biNXsGT734ghun0DIcVm7DDBTp6ekdn3VV5dxzz91+/vnnlwUv89FHH6UF/56SkqLByfBNTU0SPH/IkCGd/n7S09MVIDk5WVtbWzstGyAiu/2uqnLiiSeW//73v98aunxaWlp7SornUc269I9//OPzV155JfPJJ5/MOeKII6a89NJLGwKNpTF+8zrU0SEi8rqI1AMt7qPV/WnMgHPUUUfV3HvvvQU1NTVJAIWFhanbtm1LycnJadu5c2fH39Xee+/d9Omnn2Y0NDRIeXl58htvvJHd132//vrr2aWlpcn19fXy3//+d+icOXPq5s2bV/PMM8/kbtu2LQWgtLQ0+eOPP07rajuHH354/dq1a4eUlJSktLa28sgjj+R96Utfqps9e3b92rVrh+zYsSO5ublZnnjiiY4zuU2bNg368pe/XP/b3/5229ChQ1s3b97c5T6M6Quv/1bdATwGnA3sjF44xuwZjj/++JpNmzalH3nkkZMBBg8e3P73v//9s8mTJzcddNBBdTNmzJg6d+7c6uuvv37L/PnzK7/4xS9OHT16dNOkSZP6/Pczbdq0+tNOO22fHTt2pC1YsKB89uzZOwEuuuiirSeeeOIXVJWUlBT93e9+9/m+++4b8ZLjuHHjWn7+859v/cY3vvEFVZUjjjii6pRTTqkCWLJkybajjz56/6ysrLb999+/I+bLLrts7Oeffz5IVeXwww+vmTlzZkNfj8eYSLyOxVcD5GgC1eb44IMP/jl8+HDPGc3GxINbbrklf/369Zl//etfP491LMb0xo4dOzZOmjTpDC/Les3ofQg4pvchGWOMMT3j9RJfOvCQiKwCioNnWD0oY/rPD3/4w3KccjfGJDyvDdQG92GMMcb0C6/dzH8V7UCMMcaYYBEbKBGZGxggVkSOjLScqr4QjcCMMcYMbF2dQd0MTHOfL4+wjAJ7+xqRMcYYQxe9+FR1WtDziREe1jj10SOPPJI9ffr0aQcccMC0pUuXjgydf8stt+RPnDhx+qxZs6bMmjVryl/+8peCWMQZ6swzz5yw9957T58xY8bUWMcS8Nlnn6UeddRRXzjkkEOmHnLIIVN///vf93hU8WiZMmXKATNnzpwya9asKbNnz455ekO496+0tDR5/vz5+x144IHT5s+fv19ZWVlyLGMMiPS+xmu8EP79jtd4e/JZaG9v58c//vG4Aw44YNqhhx46ZfXq1YOjGZsV7Yuh1tZWLr/88r3uu+++D9euXfv+448/nheuTs/8+fMr16xZs2HNmjUbfvzjH5eF21Z/++53v1v2r3/966NYxxEsJSWFq6++esu6devef/HFFzfeddddw3tS9yjannjiiQ/XrFmz4bXXXtsY61jCvX+//e1vR82ePbv2nXfeeW/27Nm1v/3tb3f7hykWIr2v8RpvQOj7Ha/x9uSz8Mgjj+Rs3rw5/e23337vj3/8Y+FFF10U1TphnjpJiEg28EvgK0AB0DEYmKru0YXManJzZ0Rz+9mVlW9Gmvfqq69mjhs3rmnSpEnNAMcdd1zFo48+OvSggw4qjrROQE1NTdKE8eMP9jPWUBVdxH700UfXhY47d9NNNxVMPeX746MZ01eHp0eMady4cS3jxo1rAcjJyWmfOHFiw5YtW9JWrVqVdeWVv4hqXBUVkV+rSHJz86L62ausrOjR+/f8888Pffzxxz8AOOuss8qPO+64ScDWVatWDb7sssv2evfS9zKjGu/Xw8cb6X3tKt7jFyyI6llqZUXk1zaSruM9Psrx9uxvOVKsTz755NCFCxeWJyUlMXfu3Pra2tqUoqKi1JycnLaTTz5535qamuTW1la5+OKLtwVGJekLr2dQNwOHAEuBPOB84HPg+r4GMJBt2bIlbdSoUR1D0YwePbp5+/btu41t9txzzw099NBDp5x88sl7f/bZZ6kAGRkZcTdIbzyNbv3RRx+lbdq0afCcOXPq4iEuEeGEE07Y7/DDD9//z3/+c1xcpg1VWVmZEmgIxowZ01JZWZkCMHXq1Mbnn39+U2yjcwS/r13FG9sow7/f8RxvqEixFhcXp44bN67jO2vEiBHNRUVFqRkZGe333nvvx6tXr974xBNPfPjrX/96bHt737+ivOZBHQPsr6rlItKmqo+IyFqc8fmskYqib37zm1WLFi2qyMjI0D//+c8FP/jBDyY+99xzH6pq2JGuY2n9+vUZqQfNjXUY1NTUJC1atGifq666qig3N7f92WefzYLY1tZ78sknN40fP75l27ZtKSeeeOIXJk+e3HjKKTENqUtJSbv+d62qqkpevHjxxBfPiWFA7P6+Bs8LjbffgwsR7v0Onh9v8XYlONZIVFUuu+yysWvXrs0SEUpLS9O2bduWMnbs2D6VivZ6BpUEVLvP60QkB9gO7Bt5FdOdsWPHdjpj2rZtW6czKoDhw4e3ZWRkKMC5555btmnTpsEAK1asyOvfaLv305/+dGKsY2hubpZvf/vb+5xwwgkVp512WhXER1zjx49vARg9enTr0UcfXfW///0vqpfLeiM3N7e1qKgoFaCoqCg1Nze3FeCqq64aM3v27NpYxhbufe0q3hiGCoR/v+M53lCRYh05cmRLUVFRx3dWSUlJ2rhx41pWrFiRV1FRkfLqq69uXLNmzYa8vLyWhoaGPvdx8HoG9TbO/afngVdwLvnVAR/2NYBY6+oeUbTNnj27/vPPP0//8MMP08aPH9/y+OOP591yyy2fBi9TVFSUGjjVvv/++4dOmDChEaCmpib51NNO23HzzTcXPf3000O+853vfOGNN954d7/99utRwTw/7dy5M2lSa8XbBQUFbQsWLNh3+PDhLXfeeefm/tp/e3s7ixcvHr/vvvs2XnLJJSXBcb333vsxi6u2tjapvb2dnJyc9tra2qRVq1Zl/+xnP9s2dGhO66uvvvp+rOIKdeSRR1atWLEi/8orryxesWJF/rx586oA6urqkkePHt1c+fWKNy+//PLRDz30UP6GDRve7a+4Ir2vXcX7l5tu+uQ73/lOVSzijfR+dx3vX2IWbziRYv36179etXz58uGLFi2qWLVqVWZWVlbbuHHjWmpqapLz8/Nb0tLS9Omnnx5SXFzsSxkWrw3UOezqGLEE+A0wFLBx+PogNTWVq6+++vOFCxd+oa2tjZNPPrns4IMPbrz00ktHH3LIIfULFy6svvHGG4c///zzQ1NSUjQ7O7v15ptv3gywaNGiioULF+47c+bMKVOnTt05fvz4fr2Ofeqpp05cu3btkOrq6pRJkyYduGTJkm0XXHDBtqOPPnr/oUOHtk6fPr2urq6uXy9dvPjii1lPPPFE/j777NMwa9asKQCXXnrp1ljHtW3btpQzzjhjX4DW1lZZsGBB+QknnFCzefPmmMUV7v279NJLt59++un7HHjggQWjRo1qvuuuuz4BWLJkSfFPfvKTiTfccMPoI444oqq/YgyI9L7Ga7yR3u/DDz+8Ph7j7cln4cQTT6x+9tlncw488MBp6enp7TfeeONmiN73UbflNkQkGbgKuEZVm/zYaTywchvGGNP/fC23oaptwI+w6rnGGGP6kdebWHcC/xfNQIwxxphgXu9BzQLOF5GLgSKcMfgAUNXY9ys2xhiTcLw2UP9wH4kk7hJdjTFmAPD83eu1HtQdvY8lPrW2tm5samo6YNCgQdZQGWNMP2hqakpqbW31PBal1zOohNPY2HhdeXk5KSkp+2OD5hpjTLS1t7a2bmxsbLzO6woDtoGqqalpa27uWU5rW3LnNJV3PKyzT6N1fgz4JD0VgANDpie3tfV/MMY3ra2tpKQM2K8S00M7d+68EBjmZdk98lPl5matBbaq6nFh5r8EXKSqa7vYBpMnT+7Rfmtyczv9/mUP6zzwwfYe7SOR/XjSKAA2h0zProz5WK6mDwoLCxk/PqqDxZsEsm7dukKvy+6pl7aWAH2qqZOamupTKMYMbCNHxkVZI5OAPDVQIpImIj8QkZtF5M7gR7QDDBPLWOAbwK3dLLpQRNaIyIcistvJTkuLXXozxg/Fxd2WLzOmV7yeQd0BXADUAp+EPPrbMuBiuu+qmKKqs3Divip0Zn19PRdccAFPP/207wEaM5BkZGTEOgSToLzeg5oPTFTVqijG0i0ROQ7YoapvisgR3Sz+oPvzTWBC6Mzs7GyWLVvmZ3jGDEhpab4MXG3MbryeQX0ODIpmIB7NARaIyGbgHuBIEbkrwrKBgW3bCNMQt1nPMWN8UV1d3f1CxvSC1zOoO4FHROQGoCR4hqq+4HtUEajqpcClAO4Z1EWqenpvtmXdYo3xR0FBXFawNwnA67f0ee7P34RMV2Bv/8LpP6WlpcyZM4eUlBTa2to46aST+PGPf0xxcTGZmZkkJydTU1PDsGHDqKiooDE9naGDBlFRVMTgnBwWA6dVV/P8uHF8ZetWWpKS+N+IEczdupVNubn84vMypGkn7UOHkVRVCskptA8eQlJtJTp4CLS2IM2Nu+anpNGePpikuio0MweaG5GWpo75mjoI0tKR+mras4aS1LiT+24YxDPPjOdrXytk69ZMKirSOeCAcl57bRTTppWTnd3cMX/z5iE0NqYweXIlK1eO4dBDS0hNbefll8cwb14RCy90bulJYz3tOQXcM6il45ge2LqVzNxc2ltbaaitZXxODsXFxaSmppKTk0NZWRk5OTk0NzfT0NDAyJEjKS4uJi0tjSFDhlBeXk5ubi4bN22isbGRQe789PR0MjIyKKysJD8/n9raWpqbmzvWz8jIIC0tjerqagoKCqiurqalpaVjfrj3SVUZNmwYJSUlZGVlAVBXV8eIESMoLS1FRMjLy6O0tJTs7Gza2tqor6/v2GZPj6mhoYHGxsaO+YFjqhxAx9TU1MTw4cMT6pgS8X2Kl2PqiW7rQcUTEUkHVuJcbkwB7lfV3TpAeMmDeumll3T69Ome9x2aAzWhm+X7I//pW5NH+batBzZ1jvdbk3Zte3PIspa3ZIJZHpTpiXXr1r05b968mV6W3dOuczUBR6pqnYikAqtE5ClVXd3TDVkelDH+sDwoEy1e86CKROTzMI+PRORFETlfRKLe2Kmjzv011X1EOgW0PChj+oHlQZlo8dqL70agEvgV8H1gKVAOrADuBX7C7venokJEkkVkPbADeE5V34iwqOVBGdMPMjMzYx2CSVBez3rOBI5W1W2BCSLyFPCsqk4VkReB/+Ik0EaVW4L+IBEZCjwkItNU9b0wi1oelDH9IDlkEGVj/OL1DGoUUBcyrR4Y7T7/EBjqU0yeuEnDL+IkEYdjeVDG9IOamppYh2ASlNcG6jGcPKijRGSyiBwFPOBOBzic3Tt7+U5EhrlnTohIBnA0sKk327JOEsb4Y9gwT5UTjOkxr5f4fgj8ErgF56xpO3Afzr0ogE9xBnCNtlHAHW65jSTgPlV9vDcb2rFjB+ecc473PKiyMoaOGUNFURHn5+RwKLBvhDyohfUK7e29zoO69Pt7M3p0PSNG7OzIYyopGcy2bZkcfHApJ/88maTGnTy0aivtQ4dxf0ojWzMzqUhP59bycnJGjaK+vJzW5uaOnKVucxySO+c4vP3OOxFzHAYNsLwNO6aujymwrUQ6pkR8n+LlmHpiT8uDGoczqsUInN57f1fVG8IsdzvwuKreH2lbL7/8sh54YGjpvMiC86AmdLNsX3OgustvspwlE0+KiooYN25crMMwewhf8qBEZK6qrnSfHxlpuf4c6ghoBS5U1XUiMgR4U0SeU9UNPd2QDXVkjD/sEp+Jlq6+pW8GprnPl0dYpl+HOlLV7TiXF1HVWhHZCIwBwjVQc0XkZ8BI4OLQsynLgzLGHyUlJTaShImKiJ0kVHVa0POJER4xG4dPRCYABwOR8qBGAV8CjgOuDZ1peVDG+CNwb8IYv/XqOpeIfBVoC1wC7G8ikoXTi/ACVY3Ux/VhVW0HNojIiNCZlgdljDHxzetQRy+LyBz3+c9xajH9W0Qui2ZwEWJJxWmc7lbVB7tYtCnouYTOtDwoY/xRVxeaImmMP7zmQU0DAgOyngN8FTgM+L9oBBWJiAjO/bCNqvqnvmzL8qCM8ceIEbtdoDDGF14bqCRARWQfnK7pG1S1CMjtZj2/zQHOwKmku959HNubDbW2tvobmTEDVGlpaaxDMAnK6z2oVcBNOB0PHgJwG6syvwIRkdtwOjTsCO6gESIFqAHa3d8fVNUnwyx3sqqeGfhFVXe7i1tRUdGzgoVBibqH5uQAnRN1v1NW5xQSrClHM7L6lKj74Ft10NzIf3LSeGb8eL5WWMj/GzyYQZmZ1JaWMnrw4E5JeG+tX9+RhFcZkoQ3yBIL7Zj6IVG3qqoqoY4pEd+neDmmnvCUqCsi+cCFQAvwe7ce0zeA/VR1WY/2GHkfc3HG+7szUgMVVOb9uG62VReuUQr26quv6pQpUzzH112ibjQKFEZKwLXkWxNPdu7cyeDBg2MdhtlD+F6wUFXLgctCpj3Ri9i62sdKt+u4L0TkGpwzsgbgBFUtCZ5veVDG+KO0tNTyoExUeO3FN0hErhGRT0Wk2p12jIicF93wwjpcRN4WkadEZGqEZTKB1ao6HadE/DmhC1iJAGP8kZ2dHesQTILy2kniepyefN9lVwXb94FzoxFUF9YB492G58/AwxGWawYCg8iGrQdVU1NjibrG+MBSNky0eO0k8U1gX1WtF5F2AFXdKiJjohfa7oKTclX1SRG5WUQKVDW0s0aL7rq5FrYeVGZmpiXqGuOD+vp6CgoKYh2GSUBez6CaCfmSF5FhOGXf+42IjHRzoRCRWTjx9yoGy4Myxh8jR46MdQgmQXltoP6DU4dpIoCIjMLpdn6PX4GIyL+B14FJIrJFRBa70/9PRAIJwScD74nI28CNwKnqpRtiGNZJwhh/FBcXxzoEk6C8XuK7DPgd8C4wGPgI+AfwKy8ru1Vwb8W5j6XA2ar6uojkAffi3CPaDExR1U59qFX1b0HPb8JpGMPtYymwUlX/G9zF3B3FfLe6UJWVlZ7yoDL23ZfakhLUzYO6KigP6rJPttCeU0BSTQWIdJsHdcGUvZm9fTuX5+fT0tgIZWVd5ji8tb5kV65JUI5DUhznOCRi3oYdU9fH1NTUZHlQdkzxUbDQvbRX1pMzFxG5A3hFVW8VkTRgsKpWich1QIWqXisilwC5qvrzHgXUS6tWrdKpUyN1AtwlOP8JOve26GnuUyCvabP7u+UzmURQX19PZmZmrMMwewi/ChZ2VUpjiHsrCFX9tKsdiEgOMBc4012+GeeeFsAJwBHu8zuAl4Cfh6x/JnAiTtfx/YA/AGk4Qx41AceqakVwFV0R2exu73ggFVioqpuCt2tDHRnjj7KyMmugTFR0dYnvY5zLccKuruWBUcGDz566SyiaCJQCK0RkOk637yWqWg+McIsQAhTjlHIPZxpO7ad0N66fq+rBInI9sAhYFmadMlU9RER+BFwEfD94puVBGeOPHPeStzF+66pgYZKqJqtqEs6X+z3AJJxGYjLwL2Cxh32kAIcAf1XVg4F64JIw+1M6N3zBXlTVWlUtBaqBx9zp7xJ+5CGAQCkOy4MyJop6el/BGK+8dpL4Nc64ew3u7x+JyA+BD4Hbu1l3C7BFVQOVb+9nVwNVIiKjVHW72zNwR4RtBNd2ag/6vb2LYwgsY3lQxkRRQ0ND9wsZ0ws9KbcxIWTaeLq/vIeqFgNFIjLJnTQP2OA+fxT4nvv8e8AjHuPpM8uDMsYflgdlosXrGdT1wAsisgIoAsbhdHq43uP65wN3uz34PgXOcqdfC9zn5jwVAqd43F6fWR6UMf4oLi62wWJNVHgdzfz3IvIusBCns8J2nFwmTzdwVHW9iHwRWAukBOU6/RHYG+e+UgGwF1ARsu7tBF1GVNUJEeZ9DlSFWWYtu3oKdvCcB5WaSm1JCde1t/PymDGcVlTEwjqnHJU01u+WB3V/WjObcnNJb21lQm0tS8ePp7ywkKzWVoq2tFFWVka7mw9QmYA5DomYt2HHZHlQdkx7SB5Ub4nIz4CZQHagnlNw1/B+CSJIT/OgJgRN6yr/KbiGE1jOk0l8dXV1HV9exnSnJ3lQXu9B9YmIjAW+gTOaRE/XPVNEHhaR50Rks4icJyI/E5G3RGS1OxoFInK7iJzsPt8sIr8SkXUi8q6ITA7druVBGeOP8vJ+HZLTDCBe70H11TLgYmBImHnXiMiVwPPAJaraFGYZ3/OgNmzYwFe/+tVeHcy3erDshF7twRhjEtN///tfz8tG/QxKRI4Ddqjqm2FmX4qTU3UokEfIKBJBfM+DMsYYE996dAYlIkl0Hv3BiznAAhE5FucMKFtE7lLV04O20+T2ELwowjZ8z4OaMmUKFRUVoZN3Y/egjOlaYWGh9eIznq1bt87zsl5Lvg8VkX8BjTiX2BCRBSJydXfrquqlqjrW7Vl3KvCCqp7ubmOU+1Nwxtt7z3PkfWR5UMb4w/KgTLR4vcT3N5xLa+PZNdDr68C3+7j/u93u6+/idDPvtsHzi+VBGeMPqwdlosXrJb55wGhVbRERBVDVUhEZ3t2KIpIOrAQGufsL7lK+GGeMv3ycUcd36yTfgzyoVtwRKvzKgyptaWGomwe10M2DmldUhLh5UP/JSuL5ceN4fOtWJCmJUenpvLV+fad8gEFuPkDdAMlxsGMaeMfU3NxseVB2TLHLgxKRj4Evu2PmVahqnojsBTyrqrt14Q5ZV4BMVa0TkVRgFc5o5qtF5D7gQVW9R0T+Brytqn/t0RH0kpc8qOBaUBOCpgfuQVl9J2OcgZezs7NjHYbZQ0QjD+pW4AER+SqQJCKH49Rb+lvXqzmjlKtqnftrqvtQt+E6kl1nVHfg3IfqRER+KSJ3iMgrIlIoIieJyHVuftPTbqOHiLwkIjPd53Uico2IvO3mSu1WxsPyoIzxR6X9Y2aixGsD9Tuc0ux/wWlgbsMZ2PUGLyuLSLKIrMcZrfw5d2TzfKBKVQMtxRZgTIRN7IPTmC0A7sLpdn4A0ICTABwqE1itqtNxLi+eE7pASkp/pYAZk9jy8/NjHYJJUJ4aKPcs6AZVnaKqmaq6v6ou81r2XVXbVPUgYCwwS0Sm9TDOp1S1BaczRTIQGAMwUh5UM/C4+zxsHlRVVZXVgzLGB7W1tbEOwSQoz6cRbrmM6UCnQbdU9Tav21DVKhF5EZiPM1DsUBFJcc+ixgJbI6za5K7fLiItQQ1jpDyo4GXC5kFlZWVZPShjfGAFC020eGqgROQy4ErgbWBn0CzFudzX1brDcBqMKhHJAI4Gfqeq6jZWJ+P05LN6UMbsgSwPykSL1zOoC4BZqvpOL/YxCrhDRJJxLinep6qBy28/B+5xE37fApb3Yvu9YnlQxvjD6kGZaPHaQDUAm3q5j0qcOk0jcM64qoPmVbm/5wJDgcF0HtYIVf1lyO9ZEeatdLcRusz9dM69coLykge1YwdDx4zpyIO6ZswYKoqKGJyTA8Bb69d3ygdIsRwHO6YBeEwtLS2WB2XH1L95UO64ewGn44yp90ugJHg5VW3vcgfOcEajVHWdiAzB6bRwoqpuEJHrgApVvVZELgFyVTXSgLG+euWVV3TatK77aoTmQW0OmW95T8Y4HY6GDh0a6zDMHqIneVBdnUG14pzxAIj7M7hkhbjzk7vagTsg7Hb3ea2IbMTpTr4BOIFdozzcAbxEyIjmInImTn5UJrAf8AcgDTgD52zrWFWtCC5+KCKb3e0dj9MtfqGqdjoDbGtr6ypsY4xH1dXV1kCZqOiqgZro985EZAJOXac33EnBI6MX41wGDMf3elCWB2WMPwoKCmIdgklQEfOgVLUw8MA5AykMfdCD2n0ikgU8AFygqjVh9qfsOmML5Xs9KMuDMsYf1dXV3S9kTC94HUniygjTr/Cysjsc0QPA3ar6YNCskqCSG6NwRpoIx/d6UIE8qPnz53s5BGNMBNYj1kRLl9e5RORI92myOw6fBM3eG+g2hdwdc285sFFV/xQy+1Gc/KdrsTwoY/ZIlgdloqW7GzGBvKR0OifkKs49o/M97GMOToeGd93x+AAuU9UncRqm+0RkMVAInOIx7j6z//qM8YflQZlo6bKBUtWJACJyp6ou6s0OVHWVW879OGCHqgb37T4fmAyU4hQsPAx4MmT92/FWD2o1Th6Vp3pQVVVVPcqDWtPeTlpWVqd8gELLcbBjsmOitbXV8qDsmGJXD6qvRGQuUAfcGdxAicgvgTpV/UPUgwjR0zwosLwnY8KprKwkN+RvxZhIolEPqk9UdSVQ0Zt1ReQIEXlZRB4RkU9F5FoR+a6IrHFrQu3jLvdLEbnIff6SiPzOXeZDEfly6HYtD8oYf9TU7NYp1xhf9EsD1Y3zROQdEblNRCL9GzYd+D9gf5z7WV9Q1Vk4hRQj3QdLcZe5ALgqdKZ1kjDGH8OGDYt1CCZBRWygRGRB0PNofZv/FacY4UE4o038McJy/1PV7araBHwCPOtO73UeVGVlpeVBGeODiopeXRwxpltddZK4C8h2n5cHPfeNqnaM6yci/2BXkcFQvudBDRkyxOpBGeOD/riPbQamrhqoYhE5D2fMvJQweVAAqOoLvd25iIwKGurom8B7vd1WT9lQR8b4wy7xmWjp6lv6TGApsARncNZwhQkVJ2G3SyLyb5yu3gUisgW4SlWXA9eJyEHudjYDP3SXT3P3fxDOJcCpInJn94fjneVBGeOPkpISy4MyURGxgVLV14CjAETkY1Xdtw/7acAZ9fyDkDyoJcC9OPeIMoBGd/odOB0jHgNecx+BuBYFPX8JZwR0cO6nrXenHxG0TBkRxuLzkgc1NiurIx8gzXIc7JjsmHY7pra2NsuDsmOKfR6UiOyFUypji6oW9WC9SHlQYetBiUglMFFVqzwH10Ne86As98mYrpWXl5Ofnx/rMMwewvc8KBEZKSIv45S6eBD4RERWishoL+t3kQd1As7ZEu7PE93nnwOD3H2fKSIPi8hzIrJZRM4TkZ+JyFsislpE8tzlbheRk93nm0XkVyKyzs2Vmhy6Y8uDMsYfdXV1sQ7BJCiveVB/A97GOcMZhVOi/S13el9Eqgd1J/CIiJyGk/t0KE7Np58C1wA7VfVg4HWcelDhlKnqIThd2S8KnWl5UMb4Y8SISGXcjOkbrw3Ul4ALVbUewP15MTDbr0BC6kGdh9NY/QY4GxgC3ISTJ+VLPSjLgzLGH6WlpbEOwSQor32tK4EpOGdRAZOAqj7uvyTQ1Ty4HlRgkFroKPk+U1XPc3/fjOVBGRM3nIo6xvjPawN1HfBfEVmOUxZjPHAW8Is+7j9m9aAsD8oYf+Tl5cU6BJOgPH1Lq+o/ROQT4DvAgcA24Duq+ryX9bvIgwquBzUaGOcuX8Suy32ZQFrQ0EvtXvbZHcuDMsYfpaWllgdlosLzaYQ7YkSvRo1Q1dMiTC93RyOvxWn0ngVmAqd3sa2Xg57fjlsPSlXPFJEnReS/ftWDqiksJMVyHOyY7Ji6PKb29nbLg7Jjin0eVDS495Rmugm1/cZLHpQxpntlZWUUFBTEOgyzh+hJHlRc3ogRkRTgNOBgIAv4Ck5nh3ygHqdn3yLgcOANVT3TXW8zzhlYFvAUsAqnp+FW4ARVbQjsw/KgjPFHfX29NVAmKuKhHpQCz4rImyLyA3faXcAlOPebSnCGQFLg7zi5UI8C1wNTgQPc8fxC7Qf8RVWn4vQ2/FbwTMuDMsYfI0eOjHUIJkHFwxnUl1R1q4gMB54TkU3AfGCcqtYCiMg44DlVvVtE9gZKVPVdd977OHlO60O2+5mqBqbtlgsVyIOaP38+8+fPj86RGTMAFBcXWycJExWeGih3OKGLcEYXzwqep6pz+xKAqm51f+4QkYeAWcD7QB5O54mA4Nyn0PpQ4Y4jeJk2nMFoO7S2tloelDE+ePjhh1myZEmswzB7iIqKCs/Xg71e4vsXzv2ex4DlIY9eE5FMERkSeA4cg1MT6gzgVhH5fyKyCKfkxlfc576oqqrq8zZsFAp7DcBegwcffLD7hRLcQP8MgPfXoKamxnMBMa+X+GYDw9yS634aATzkZqKnAP9S1adFZCnwZZwx/xqALwAFOCU4Vvqx4507d1qCoTE+sb8l49Wtt97qeVlP3cxFZBXwPVX9pA9xeSYi1cBhqroxWvt47LHHGnfs2NHRlS87O7s0Ly+vR13da2pqcrKzs6v9j27PYa+BvQYVFRUFPf3bSTQD/TMA3l+DpqamSccee+wQL9v02kAtxen2vQJn1PEOqhqu0m6fiMiHwMGBwWmNMcYMPF4bqBcjzFJVPdLfkEBEzsW5H/U73AFkg3b4qd/7M8YYE39iPpJEOCISabw9VdXkfg3GGGNMTHhuoEQkFzgep+T7VuAxVbV66MYYY6LC6yW+w4EngE045Tb2wql0+w1VfT2qERpjjBmQvDZQbwDXq+o9QdO+DVykqof6FozIXFVd6T5PxkkOPhkQ4GHgt6pqg+gZY8wA4LWBqgTyVbU9aFoyUKaqub4FI1Kjqtnu8ytweg4udWdfAdyvqr/ya3/GGGPil9eRJD4CTg2ZthDwOy8quHb06cApqnqvqt7r7u8Mn/dnjDEmTnk9g5oNPA58iHMPagLOaOHHqeprvgXT+Qxqh6oOD5lfq6qeEryMMcbs2Xrai+8bOKXZtwFPqmqFr8GItAKBBu9gYJqqFrrzhgPvqKqN7W+MMQNAT0q+V+LUaYqmxSG/B1/yOwT4Z5T3b4wxJk5EPIMSkadVdb77/BWcgoG76Wu5jZB9HgW8rKotfm0zkhdffFHT09OjvRtjEl5rayspKfFQWs7sCXbu3Fk2b948TyOad/WpujPouffhZ/vmIuDfIvIqTt7Vk4F6UX4TESZPnhyNTRszoBQWFlrBQuPZunXrCr0uG7GBUtV/Bf26SVXfCF1GRGb1MLYuqep8ERkMzAOOBa4QkSrgSZwG67Xgru59YSXfjfGHlXw30eK1m/lzEab7XqVLVXeq6mOqeq6qjge+C1QCVwPbReQeEfliX/fT0hL1q4jGDAjFxcXdL2RML3R54VhEknA6Kog4VQWDOy3sA7RGMTYAVPU9nCq714lIDs4o533uap6UFLltXrqymcKqdsYPTeLKuWl93ZUxCS0jIyPWIZgE1d2dzVZ2dY4IbYzagWt8j8glIuNxKuhmBU8PufTYl+1HnFdY1c6bxYpziMaYrqSl2T9xJjq6a6Am4pw1vQwE99ZToFRVG6IRlIhcCvwC2IBT8j14v740UG1tNqSfMX6orq5m6NChsQ7DJKAuG6hAkizQ3110LgRmquqGaO3AusUa44+CgoJYh2ASlOdvaRFZAHwFKCDoXpSqLopCXOXA5ihst4OdQRnjj+rqajIzM2MdhklAnnrxichVwC3u8gtxGpCvAVVRiusC4O8iMlNE9gp++LWDeKwkbMyeyHrEmmjx2s38bOBoVf0p0Oz+PB5n0NhoSMPprbcG50wq8PjMrx1YHpQx/rA8KBMtXhuooW53b4BmEUlV1TU4l/yi4WbgMiAbSA16+NZdyP7rM8YflgdlosXrPahPRGSqqr6Pk5N0rlvEsDKKca2IZvXc5OTkaG3amAHF7j+ZaPHaQF0B5LvPL8Hp6p0F/CgaQQF/AC4Rkd9oP94sCiToFtf31x6N2fPZP3smWrptoNzRJBqB1QDupb19oxzXT4CRwGUiUh48Q1U9dZQQkaE4g9xOw8mfOltVXw/MD9eLb1eCrjHGq5qaGnJzc2MdhklA3TZQqtouIo/0cyXb033Yxg3A06p6soikAYODZ1onCWP8MWyYp8oJxvSY10t8K0XkMFVdHdVoXKr6cl/Wd8fsmwuc6W6vGWgOXqa1NerDCBozIFRUVDB48ODuFzSmh7w2UIXAUyLyCFBEUPFCVb3S76BEJAU4Dafse+hYfD/wsImJQCmwQkSmA28CS1TV7i4Z4zPLKTTR4rWBygAedp+PjU4ondwFHAA8BZT0Yv0UnBLx56vqGyJyA07njl8EFqiqqmLOnDmkpKTQ1tbGSSedRPs+53baSGNTEzt3tlNRUYGqMmzYMEpKSsjKctrMuro6RowYQWlpKSJCXl4epaWlZGdn09bWRn19PSNHjqS4uJjU1FRycnIoKysjJyeH5uZmGhoaOuanpaUxZMgQysvLyc3NpaGhgcbGxo756enpZGRkUFlZSX5+PrW1tTQ3N3fMz8jIIC0tjerqagoKCqiurqalpaVjfmZmJsnJydTU1DBs2DA7Jjsm344pJSWFqqqqhDqmRHyf4uWYeiJiyfdYcosUjlPV2l6uPxJYraoT3N+/DFyiqt8ILPPSSy/p9OnTO623+NHGTp0kZowUli9IZ+lK50W10hvG7M4q6pqeWLdu3Zvz5s2b6WVZT2dQIrJ3pHmq+qnXwHrgfSAP6FUDparFIlIkIpNU9QOcCr2dBp7tSdfYwioru2FMJIH/rI3xm9dLfB/j3HcKLqIUONWIRhLEGcCtIvIsIZf4VPVOj9s4H7jb7cH3KXCWvyEaY4yJJk8NlKp2GhLJvYR2FfBKNILC6X33ZSCX3etBeWqgVHU9EPE00kYzN8YfdXV15Ofnd7+gMT3Uq6JI7iW0C4AP8amAYIglwMGqujEK2wYsD8oYv4wYMSLWIZgE5XWw2HAmEZL86qMS4PMobRuwPChj/FJaWhrrEEyC8tpJ4hWCcp9wGqapwNJoBAVcD9wlIr8DdgTPiFKnDGNML4lI9wsZ0wteL/HdGvJ7PfC2qn7kczwBf3F/nhAyXfGpU4aVfDfGH3l5ebEOwSQor50k7oh2ICH768ulR0+sHpQx/igtLbU8KBMVERsoEfF0+S4aQx31h96WCAiU5Bg/NMkSd40BsrOzYx2CSVBdnUGNC3qeDnwL+B/OuHx7AbOAB6IXWnzaVZLDkneNAUvZMNETsYFS1Y7EVhG5BzhNVR8ImnYSsDC64UWP/VEZ44/6+noKCgpiHYZJQF7v9XydXYPFBjwKHOtrNP3I8qCM8cfIkSNjHYJJUF4bqI+BH4dMOxf4xN9wdiciScEPv7ZrnSSM8UdxcXGsQzAJymtf6+8DD4nIxcBWYAzQCpwUjaBE5BCcruYH4tz/AmccQN+6mVvuhjH+sKsRJlq8djN/S0T2Aw4DRgPbgddVNVqnIXcAjwFnAzujsYPe9uIzxnSWk5MT6xBMgvKcreo2RtEaHDbUeOByjWKxKhvqyBh/lJWVkZmZGeswTAKKekJsLz0EHBPNHdgZlDH+sDMoEy3xOt5POs49r1VApzuwqrrIjx3EYyVhY/ZEPS3jbYxX8dpAbSCkAm5viEgysBbYqqrHBc9rb7dEW2P80NDQ0P1CxvRCXDZQqvornza1BNgI7DYWi/U8MsYflgdloiVuGigRmauqK93nR0ZaTlVf8Li9scA3gGuAn4XOtzwoY/xRXFxsg8WaqIibBgq4GZjmPl8eYRkF9va4vWXAxcCQcDMrKyuZM2cOKSkptLW1cdJJJ9G+z7mdlmlsamLnznaampwef42NzjRIo6W1lcLCQkaMGEFpaSkiQl5eHqWlpWRnZ9PW1kZ9fT0jR46kuLiY1NRUcnJyKCsrIycnh+bmZhoaGjrmp6WlMWTIEMrLy8nNzaWhoYHGxsaO+enp6WRkZFBZWUl+fj61tbU0Nzd3zM/IyCAtLY3q6moKCgqorq6mpaWlY35mZibJycnU1NQwbNgwKioqUFWGDRtGSUkJWVlZgFO+247Jjqknx9TU1ERVVVVCHVMivk/xckw9IYnYWUBEjgOOVdUficgRwEWh96BWrVqlU6dO7bTe4kcb3YFgHTNGCssXpLP40UaAjudvFmvHPGMGurq6uo4vL2O6s27dujfnzZs308uy8drNvK/mAAtEZDNwD3CkiNwVvICXPKjieqfRKq6PSozGJITy8vJYh2ASVEI2UKp6qaqOVdUJwKnAC6p6evAyXirqbq1V3ixWttYm3lmmMX7Jzc2NdQgmQSVkA+VFT7uZ99fZ1NKVzSxdaXklZs9h3cxNtMRTJ4moUNWXgJdCp/e0gdpaq2yt7XoZP6rtFlZZfpbZszQ2NsY6BJOg4rqBEpHhQKe7r6r6qR/bjkYelFXbNQOR5UGZaInLS3wiMl9EtuKMmv5x0OMjv/ZheVDG+MPqQZloicsGCqcW1K+BLFVNCnr4NsJrUpJz6HbPx5i+SU+3dAsTHfF6iS8XuCWa5TYCDVQ07vkEOlT05V6UMXuKjIyMWIdgElS8nkEtB86K5g6iWQ8q0D3dOjyYgaCysjLWIZgEFa9nUIcBPxGRS9i93MZcP3bgJQ/KGNO9/Pz8WIdgElS8fkvf6j6iJribuY0YYUzv1dbW2lBHJirisoFS1TuivY/gBspLjpMxJjwrWGiiJV7vQSEiZ4nICyLygfvT13tSVg/KGH9YHpSJlrg8gxKRy4FFwB+BQmA8cLGIjFbVa/zYh+VBGeMPqwdloiUuGyjg+8ARqloYmCAizwArcQoQ9lmgm7kxpm+sm7mJlnj9ls4ESkOmlQO+/SWIiF+bMmZAS0uzXD8THfHaQD0N3C0ik0QkQ0QmA3cAz/i1g7a2Nr82ZcyAVl1dHesQTIKK1wbqPKAWeAeoA9YD9cD5fu3A8qCM8UdBQUGsQzAJKi4bKFWtUdVFOJf0RgGDVXWRqlZ5WV9ExonIiyKyQUTeF5ElocvYGZQx/rAzKBMtcXMaISITVHWz+3zvkNlZgXtGHstttAIXquo6ERkCvCkiz6nqhsACURzmz5gBxXrEmmiJmwYKeBcY4j7/GFAgtCeDAt2OaK6q23FKdaCqtSKyERgDdDRQlgdljD8sD8pES9xc4lPVIUHPk1Q1OaTURq/KbYjIBOBg4I3g6fZfnzH+sHpQJlri6Qyqg4jcqKo/CTN9mape0IPtZAEPABeoak3wvKqqKubMmUPj/D/BiAN7HGNLayuFhYWMGDGC0tJSRIS29jyCT/oam5poahKKi4tJTU0lJyeHsrIycnJyaG5upqGhgZEjR1JcXExaWhpDhgyhsamNlJQUSkpKaGxs7Jifnp5ORkYGlZWV5OfnU1tbS3Nzc8f8jIwM0tLSqK6upqCggOrqalpaWjrmZ2ZmkpycTE1NDcOGDaOiogJVZdiwYZSUlHSMpVZXV9fpmPLy8igtLSU7O5u2tjbq6+s7tun1mMrLy8nNzaWhocGOKQGPqbW1laqqqoQ6pkR8n+LlmHpC4vFejIjUqGp2mOnlqupp6GQRSQUeB55R1T+Fzn/llVd02rRpLH600S3T3jMzRgrLF3Qu1Ba6rXDLdGfxo40APV7PmFiprKwkNzc31mGYPcS6devenDdv3kwvy8bVGZSInO0+TQl6HrA3UOZxO4JTU2pjuMYJ+t6Lz4oSGuOoqamxBspERVw1UMAZ7s+0oOfgdI4oAb7ncTtz3PXfFZH17rTLVPXJwAJ97SSxawR0K0poBrZhw4bFOgSToOKqgVLVrwKIyNWqekUftrOK3XsAdhLNirrGDCQVFRUMHjw41mGYBBRXDVRAcOPkXq6ToHl2ymJMHInH+9gmMcRNN/NgIjJaRB4SkXKcpNuWoIcvbKgjY/xhl/hMtMRlAwXcAjQD83DG4jsEeBT4P792EM95UIEOGEtXWqVSE/9KSkpiHYJJUPF6GjEb2EtV60VEVfVtEVkMvAb8w48dJCf3OOe331gHDLMnCeTHGOO3eD2DasO5tAdQJSLDcEYzHxO7kLq2dGUzxfWxjsIYYxJHvJ5BvQEcCzyEUwPqXqABWOvXDvwezbywqp2ttb2/Wbx0ZTOFVe3WyJk9Tl1dHfn5nvLnjemReG2gzmDX2d0FwIU4A8le79cO4m2w2MKq9l6NaGFMrI0YMSLWIZgEFa+X+I5W1QoAVW1Q1atV9efAl/zaQX/kQVlnBzMQlJaWxjoEk6Di9QxqOfCfMNP/Dtzvxw5u+2Q4tZsbo3pJzTo7mIEgUKvNGL/FVQMVVKgwSUQm0nk0iL2BRr/2VdyUxqYau6RmTF/l5eXFOgSToOKqgaJzocJPQuYVA7/0a0d+Zb8HLuNZ5wYzUJWWljJ+/PhYh2ESUFw1UKqaBCAiL6vqV6K5L+l6qD7Pdl3Giy+B+1420rqJtuzs3SrjGOOLuGqgAqLdOA0EhVV238v0D79TNowJiJsGSkSeVtX57vNXcC717UZV5/qxPw2/+X5n+U+JK/DeJnrNsPr6egoKCmIdhokzfnz+46aBAu4Men5rtHcWLz2PLP9pz9bVpdRd721in82OHDky1iGYOLN0ZTNvbA0MXtD7z3/cNFCq+q+g53f0dXsiMh+4AUgGblXVa0P219dd9Fhf7wsNlP/I41ngPQgInPkufnRXB9PQ96e43lkvUd+z4uLiiJ0k9qR7ofb31XfBV4QCI+v0pfp43DRQodyS76cBo4FtwD3AbeqhZRGRZOAvwNHAFuB/IvKoqm4ILBOLgoXBX2y9ubTX0//II30w7A+x9yKd8QZ3lCmub+/Us3NrrfLG1vZe/5HGm+DPD8Cr77cydkz4DJDgBjxw7KGNfE9fE7/WD40n8KUaeP+62nY0G949+e8z3N9HaD5oRUWF5+vBcdlAich1wAnAMqAQ2Au4CJgEXOxhE7OAj1X1U3d797jbi0kDFdoVPfDc69h9oY2Z1//IIyUK+3np6emnn2b+/Pl93k4iCdezM5GStgOfn+J651hKkkdT0s1l6q21nRvu4M9+cX17xM9zuC/r0C9BLw1K8PYCl54ixRP8/gVvO1hxPYzM3LXNtz4tJy8vt9MyvW04wzWUvd1mtAW/P7N2vgAc0e06NTU1nguISTxWwxSRHcAhqrolaNo4YJ2qdntwInIyMF9Vv+/+fgbwRVU9L7DM9N9/rFXt8V2meswQYWQmYRuzwLxIZ0fB6wSWDQjMGzNE+OKY8P/VBnT3B3HBBRewbNmyvh1onAl+LUKPf/GjjX26Zxj6XnQl3Gsf6eyhq5jD6e6/9OAzhHCXNfsyMHI4kV6X4M9qYH5X++/u9fUz9q7+Pr3E0pvYerpN6PwZgfDvaV8b0zFDhLriT8gauU+X780XxyQxrezxnYsXL/Z0FPHaQH2C00BVB00bCrypqvt4WL/bBurIGz9ob2lp6Th4SU5pSUpO7VEVw/b21uSkpJSY9rEt3Jme2c6uHh9JqI4f3Oj5wmFg/UjrhW5/IAh+Lby8vtH6HIR77UP3H+798/KeBZaPtGwSzhdDV5+NgPa2ltSe/u0kmnj4Logk+DMC4d/Tnv6d9/bvYNig5sazxn6Wfuyxxw7xsp+4vMSHc2nvQRG5Fuce0jjg/wHXBw2HROASXhhb3XUCxrrTOrzwk0nxOlCuMcYksP09LxmvZ1BeLtSrqoYtiysiKcCHOCXjtwL/A76jqu/7F6UxxphoisuzCFVN8vCIWLNdVVuB83CKHW4E7uuucRKR20Rkh4i8FzTtlyKyVUTWu49jI6w7X0Q+EJGPReSSoOkTReQNd/q9IhI/dzfDiPAaHCQiq93jXysisyKs+z0R+ch9fC9o+gwRedd9DW6UeElAC0NExonIiyKyQUTeF5El7vSF7u/tIjKzi/UT4nNgwr+XIrJcRN4WkXdE5H4RCVvrXkQuddf7QES+1tU241WE4xcRuUZEPhSRjSLykwjr+vddoKr2cM4i5wKHAO8FTfslcFE36yXjDGy7N5AGvA1McefdB5zqPv8bcG6sj7MXr8GzwNfd58cCL4VZLw/41P2Z6z7PdeetAQ7DGQD4qcC24vEBjMK59wlOgcwPgSk41yQmAS8BMwfA52A+8AHO4M2XuNMm4lS6/hinwnVahHUvdZf5APhaV9uM10ek9xLIDlrmT+GOw13ubWCQ+5p94m4v4ucj3h5dHP9ZOAMqJLnLDQ+zrq/fBXFzBiUiTwc9f0VEVoZ7RGv/qroSqOjFqh1d2lW1GSdf6wT3v4Mj2VW/6g7gRD9ijZYIr4ECgdFAc3By0kJ9DXhOVStUtRJ4DpgvIqNw/qhXq/MJvZM4fg1UdbuqrnOf1+KcfY9R1Y2q+kE3qyfE5yAoh/DrOF9Kp4nIFOB3wPWqui9QCSwOs+4U4FRgKk6DdLOIJHexzXgV9r1U1RpwziSADMIPx3YCcI+qNqnqZzgN8qxI2+yHY+mNSLGeCyxV1XYAVd0RZl1fvwvipoFi96GOlkd49Lfz3FP620QkF0BERovIk+78MUBR0PJb3Gn5QJU6lxuDp+9pLgB+LyJFwB9w/kNGRGaKSGBIqkivwRj3eej0uCciE4CDcc4aIi2TiJ+DSF9OXhrZRPhyhsjvJSKyAqf0z2Tgz+60BSKytJt1I24zDkWKdR/g2+6l/qdEZD+I7ndB3PTiU5+HOvLJX4Ff4/yn9Gvgj8DZqroN53LXQHAu8FNVfUBETsH5J+EoVV0LfD+2oUWHe2/hAeCCwH/N4STo5yDcF8wXidDIisgCnMueV7rTVoesG/gSCrfNPY6qnuWeEf4Z+DawQlUfBR6NbWT9YhDQqKozReQk4Dbgy9H8LoinM6gO7g202SHTZovIsv6MQ1VLVLXNPaX9B85/gqEidWkvB4aK06MwePqe5nvAg+7z/9Cz12Cr+zx0etwSkVScxuluVX2wu+WDJPrnICxVfdRtnBJJl2kqqtqGcxb4rR6s223qSxyJFOsWdn0XPAQc2IN1e/VdEJcNFM4YfGtDpr0JfKc/g3CvmwZ8E3gvzGL/A/Zze2ql4VyDf9S9zvoicLK73PeAR6IZb5RsAwL1uY4EPgqzzDPAMSKS614GPQZ4RlW3AzUicph73X4RcfwauDEuBzaq6p96uHqifA4ifcF4aWQT4csZIryXIrIvdHxOFgCbwqz7KHCqiAwSkYnAfjidA8Jusx+OpTcixfow8FV3ma/gdCIK5e93Qax7jEToRbIDSA+ZNhgoi+I+/w1sB1pw/lNYDPwTeBd4x32DRrnLjgaeDFr3WPfN+gS4PGj63jgfzo9xzj4Gxfq17cVr8CWcfw7exrkfM8NddibOKPGBdc92j/Nj4Kyg6TNxGvZPgJtwc+/i8eEeq7rv93r3cSzOPydbgCagxP2DS8jPAc5l/09xeqAFenBNdeMO7on4ozDrTqVzD7ZPcXqEhd1mrI+1m9eh03uJ88/8q+73wXvA3bi9+nAaq6VB617urvcBQT3VIn0+4vERLlZgKPCE+xq8Dkx3p0ftuyBeE3UfAD4DLlbVdhFJAq4F9lPVb8Y2OmMSmzj5fstwGpfbVPUacUZwuQen+/BbwOmq2hRyDwoRuRznC6oV5x7eU5G22b9HZfZE8dpAjQUex8lLCYxmvh04XoMGkDXGGJO44rKBAnDPmmbhXLsuAtao2//eGGNM4ovXThLgXApIxclaXg1kiEgPB5o3xhizp4rLBkpEDsC5QfcPdiXnfgWn370xJkqkb+MxHiEij3vYR52fMZvEFZcNFE6C7JWqOhmnRxnAyzi9rIwx0XM7zjBFwa4DfqWqBwFXur8bE3Xx2kBNBe5ynyuAqtbjjH9ljIkS7f14jJ2IUwngoqDf33OHjzLGs7gZ6ijEZmAGQcm67mWFj2MVkDED2AXAMyLyB5x/amd3vbgx/ojXM6hfAE+IyK+ANBG5FCdR8IrYhmXMgBQYj3Ec8FNiM2izGYDisoFS1cdxroMPw7n3NB44SVWfjWlgxgxMYcdjFJFn3I4Tt4ZZp5XO3y/p0Q3RJKK4u8TnjhT8IU4xrx/FOh5jTMd4jC8RNB6jqn6ti3U2A8cBiMghOMMcGdMjcddAqWqbiLTh/MfVFOt4jBlIROTfwBFAgYhsAa4CzgFucAeLbQR+EGH1FHb9zT4ALBKR93HGcAw3sKgxXYrLkSRE5Ec4Bc1+gzNIZ0eQqvpprOIyxkQmIktwKhBfHOtYTGKI1wYq0pBGqqrJ/RqMMaZbIrIcmAacoqqFsY7HJIa4bKCMMcaYuOrFJyKDReQ3IvKom+g3KNYxGWOMiY24aqCAvwDH41SqPBn4Q2zDMcYYEytxdYlPRLYDh6jqdhEZB6xUVeueaowxA1C8nUFlqlO7HlUtwhn3y5g9lojcLiJX99O+3heRI/pjX8b0h3jLg0oRka8CEuF3VPWFmERmTBSJyEvAXaoablSGcMvfDmxR1Y7hv1R1anSiMyY24q2B2kHnmk/lIb8rsHe/RmSMMSYm4uoSn6pOUNWJXTyscTJxTUQOFpF1IlIrIvfijkEnIrki8riIlIpIpft8rDvvGuDLwE0iUiciN7nTJ4vIcyJSISIfiMgp7vQfAN8FLnaXf8ydvllEjnKf/1JE/iMid7mxvCsiXxCRS92ChEUickxQ3DkislxEtovIVhG52h12zJiYiasGypg9mYikAQ8D/wTycAZW/ZY7OwlYgTPw8V5AA3ATgKpeDrwCnKeqWap6nohkAs8B/wKGA6cCN4vIFFX9O3A3cJ27/PERQjrejSUXeAt4xo1jDLAUuCVo2dtxBnjdFzgYOAb4fh9eDmP6zBooY/xzGJAKLFPVFlW9H/gfgKqWq+oDqrpTVWuBa3AGYI3kOGCzqq5Q1VZVfQtnfLuFPYjnFVV9RlVbcRrLYcC1qtoC3ANMEJGhIjICOBa4QFXrVXUHcD1Oo2hMzMTbPShj9mSjga3aOXejEJwkdJwv/fk4ZzQAQ0QkWVXbwmxrPPBFEakKmpaCc0bkVUnQ8wagLGhfDe7PLDfuVGC7SEd/pCSgqAf7MsZ31kAZ45/twBgRkaBGai/gE+BCYBLwRVUtFpGDcC67BVqE0ITEIuBlVT06wr78TGAswhmFvMA92zImLtglPmP88zrOfZyfiEiqiJyEW9wPGIJz1lIlInk4ZSyCldC5h+rjwBdE5Ax3W6kicqiI7B9h+V5zcw+fBf4oItkikiQi+4hIV5cgjYk6a6CM8YmqNgMnAWcCFcC32VWJdhmQAZQBq4GnQ1a/ATjZ7eF3o3uf6hic+0DbgGLgd0BgfMrlwBQRqRKRh30IfxGQBmwAKoH7gVE+bNeYXouroY6MMcaYADuDMsYYE5esgTLGGBOXrIEyxhgTl6yBMsYYE5esgTLGGBOXrIEyxhgTl6yBMsYYE5esgTLGGBOXrIEyxhgTl/4/MjL9t5Hjbq4AAAAASUVORK5CYII=\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# you can also reduce the displayed duration steps\n", + "fig, caption = idf.event_plot(event, durations=idf.duration_steps[:11])\n", + "fig.tight_layout()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 0000000..1607d1f --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,25 @@ +.. Intensity Duration Frequency Analyse documentation master file, created by + sphinx-quickstart on Mon Feb 4 18:14:33 2019. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to Intensity Duration Frequency Analyse's documentation! +================================================================ + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + README + api + base_functions + examples/example_commandline + examples/example_python_api + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 0000000..30fee9d --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 0000000..d06a71d --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 0000000..4029149 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '0.2.3', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 0000000..250f566 --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, is available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/_static/nature.css b/_static/nature.css new file mode 100644 index 0000000..84c584a --- /dev/null +++ b/_static/nature.css @@ -0,0 +1,252 @@ +/* + * nature.css_t + * ~~~~~~~~~~~~ + * + * Sphinx stylesheet -- nature theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: Arial, sans-serif; + font-size: 100%; + background-color: #fff; + color: #555; + margin: 0; + padding: 0; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 230px; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.document { + background-color: #eee; +} + +div.body { + background-color: #ffffff; + color: #3E4349; + padding: 0 30px 30px 30px; + font-size: 0.9em; +} + +div.footer { + color: #555; + width: 100%; + padding: 13px 0; + text-align: center; + font-size: 75%; +} + +div.footer a { + color: #444; + text-decoration: underline; +} + +div.related { + background-color: #6BA81E; + line-height: 32px; + color: #fff; + text-shadow: 0px 1px 0 #444; + font-size: 0.9em; +} + +div.related a { + color: #E2F3CC; +} + +div.sphinxsidebar { + font-size: 0.75em; + line-height: 1.5em; +} + +div.sphinxsidebarwrapper{ + padding: 20px 0; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Arial, sans-serif; + color: #222; + font-size: 1.2em; + font-weight: normal; + margin: 0; + padding: 5px 10px; + background-color: #ddd; + text-shadow: 1px 1px 0 white +} + +div.sphinxsidebar h4{ + font-size: 1.1em; +} + +div.sphinxsidebar h3 a { + color: #444; +} + + +div.sphinxsidebar p { + color: #888; + padding: 5px 20px; +} + +div.sphinxsidebar p.topless { +} + +div.sphinxsidebar ul { + margin: 10px 20px; + padding: 0; + color: #000; +} + +div.sphinxsidebar a { + color: #444; +} + +div.sphinxsidebar input { + border: 1px solid #ccc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar .searchformwrapper { + margin-left: 20px; + margin-right: 20px; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #005B81; + text-decoration: none; +} + +a:hover { + color: #E32E00; + text-decoration: underline; +} + +a:visited { + color: #551A8B; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: Arial, sans-serif; + background-color: #BED4EB; + font-weight: normal; + color: #212224; + margin: 30px 0px 10px 0px; + padding: 5px 0 5px 10px; + text-shadow: 0px 1px 0 white +} + +div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; } +div.body h2 { font-size: 150%; background-color: #C8D5E3; } +div.body h3 { font-size: 120%; background-color: #D8DEE3; } +div.body h4 { font-size: 110%; background-color: #D8DEE3; } +div.body h5 { font-size: 100%; background-color: #D8DEE3; } +div.body h6 { font-size: 100%; background-color: #D8DEE3; } + +a.headerlink { + color: #c60f0f; + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + background-color: #c60f0f; + color: white; +} + +div.body p, div.body dd, div.body li { + line-height: 1.5em; +} + +div.admonition p.admonition-title + p { + display: inline; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +nav.contents, +aside.topic, +div.topic { + background-color: #eee; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre { + padding: 10px; + line-height: 1.2em; + border: 1px solid #C6C9CB; + font-size: 1.1em; + margin: 1.5em 0 1.5em 0; + -webkit-box-shadow: 1px 1px 1px #d8d8d8; + -moz-box-shadow: 1px 1px 1px #d8d8d8; +} + +code { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ + font-size: 1.1em; + font-family: monospace; +} + +.viewcode-back { + font-family: Arial, sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + +div.code-block-caption { + background-color: #ddd; + color: #222; + border: 1px solid #C6C9CB; +} \ No newline at end of file diff --git a/_static/nbsphinx-broken-thumbnail.svg b/_static/nbsphinx-broken-thumbnail.svg new file mode 100644 index 0000000..4919ca8 --- /dev/null +++ b/_static/nbsphinx-broken-thumbnail.svg @@ -0,0 +1,9 @@ + + + + diff --git a/_static/nbsphinx-code-cells.css b/_static/nbsphinx-code-cells.css new file mode 100644 index 0000000..a3fb27c --- /dev/null +++ b/_static/nbsphinx-code-cells.css @@ -0,0 +1,259 @@ +/* remove conflicting styling from Sphinx themes */ +div.nbinput.container div.prompt *, +div.nboutput.container div.prompt *, +div.nbinput.container div.input_area pre, +div.nboutput.container div.output_area pre, +div.nbinput.container div.input_area .highlight, +div.nboutput.container div.output_area .highlight { + border: none; + padding: 0; + margin: 0; + box-shadow: none; +} + +div.nbinput.container > div[class*=highlight], +div.nboutput.container > div[class*=highlight] { + margin: 0; +} + +div.nbinput.container div.prompt *, +div.nboutput.container div.prompt * { + background: none; +} + +div.nboutput.container div.output_area .highlight, +div.nboutput.container div.output_area pre { + background: unset; +} + +div.nboutput.container div.output_area div.highlight { + color: unset; /* override Pygments text color */ +} + +/* avoid gaps between output lines */ +div.nboutput.container div[class*=highlight] pre { + line-height: normal; +} + +/* input/output containers */ +div.nbinput.container, +div.nboutput.container { + display: -webkit-flex; + display: flex; + align-items: flex-start; + margin: 0; + width: 100%; +} +@media (max-width: 540px) { + div.nbinput.container, + div.nboutput.container { + flex-direction: column; + } +} + +/* input container */ +div.nbinput.container { + padding-top: 5px; +} + +/* last container */ +div.nblast.container { + padding-bottom: 5px; +} + +/* input prompt */ +div.nbinput.container div.prompt pre, +/* for sphinx_immaterial theme: */ +div.nbinput.container div.prompt pre > code { + color: #307FC1; +} + +/* output prompt */ +div.nboutput.container div.prompt pre, +/* for sphinx_immaterial theme: */ +div.nboutput.container div.prompt pre > code { + color: #BF5B3D; +} + +/* all prompts */ +div.nbinput.container div.prompt, +div.nboutput.container div.prompt { + width: 4.5ex; + padding-top: 5px; + position: relative; + user-select: none; +} + +div.nbinput.container div.prompt > div, +div.nboutput.container div.prompt > div { + position: absolute; + right: 0; + margin-right: 0.3ex; +} + +@media (max-width: 540px) { + div.nbinput.container div.prompt, + div.nboutput.container div.prompt { + width: unset; + text-align: left; + padding: 0.4em; + } + div.nboutput.container div.prompt.empty { + padding: 0; + } + + div.nbinput.container div.prompt > div, + div.nboutput.container div.prompt > div { + position: unset; + } +} + +/* disable scrollbars and line breaks on prompts */ +div.nbinput.container div.prompt pre, +div.nboutput.container div.prompt pre { + overflow: hidden; + white-space: pre; +} + +/* input/output area */ +div.nbinput.container div.input_area, +div.nboutput.container div.output_area { + -webkit-flex: 1; + flex: 1; + overflow: auto; +} +@media (max-width: 540px) { + div.nbinput.container div.input_area, + div.nboutput.container div.output_area { + width: 100%; + } +} + +/* input area */ +div.nbinput.container div.input_area { + border: 1px solid #e0e0e0; + border-radius: 2px; + /*background: #f5f5f5;*/ +} + +/* override MathJax center alignment in output cells */ +div.nboutput.container div[class*=MathJax] { + text-align: left !important; +} + +/* override sphinx.ext.imgmath center alignment in output cells */ +div.nboutput.container div.math p { + text-align: left; +} + +/* standard error */ +div.nboutput.container div.output_area.stderr { + background: #fdd; +} + +/* ANSI colors */ +.ansi-black-fg { color: #3E424D; } +.ansi-black-bg { background-color: #3E424D; } +.ansi-black-intense-fg { color: #282C36; } +.ansi-black-intense-bg { background-color: #282C36; } +.ansi-red-fg { color: #E75C58; } +.ansi-red-bg { background-color: #E75C58; } +.ansi-red-intense-fg { color: #B22B31; } +.ansi-red-intense-bg { background-color: #B22B31; } +.ansi-green-fg { color: #00A250; } +.ansi-green-bg { background-color: #00A250; } +.ansi-green-intense-fg { color: #007427; } +.ansi-green-intense-bg { background-color: #007427; } +.ansi-yellow-fg { color: #DDB62B; } +.ansi-yellow-bg { background-color: #DDB62B; } +.ansi-yellow-intense-fg { color: #B27D12; } +.ansi-yellow-intense-bg { background-color: #B27D12; } +.ansi-blue-fg { color: #208FFB; } +.ansi-blue-bg { background-color: #208FFB; } +.ansi-blue-intense-fg { color: #0065CA; } +.ansi-blue-intense-bg { background-color: #0065CA; } +.ansi-magenta-fg { color: #D160C4; } +.ansi-magenta-bg { background-color: #D160C4; } +.ansi-magenta-intense-fg { color: #A03196; } +.ansi-magenta-intense-bg { background-color: #A03196; } +.ansi-cyan-fg { color: #60C6C8; } +.ansi-cyan-bg { background-color: #60C6C8; } +.ansi-cyan-intense-fg { color: #258F8F; } +.ansi-cyan-intense-bg { background-color: #258F8F; } +.ansi-white-fg { color: #C5C1B4; } +.ansi-white-bg { background-color: #C5C1B4; } +.ansi-white-intense-fg { color: #A1A6B2; } +.ansi-white-intense-bg { background-color: #A1A6B2; } + +.ansi-default-inverse-fg { color: #FFFFFF; } +.ansi-default-inverse-bg { background-color: #000000; } + +.ansi-bold { font-weight: bold; } +.ansi-underline { text-decoration: underline; } + + +div.nbinput.container div.input_area div[class*=highlight] > pre, +div.nboutput.container div.output_area div[class*=highlight] > pre, +div.nboutput.container div.output_area div[class*=highlight].math, +div.nboutput.container div.output_area.rendered_html, +div.nboutput.container div.output_area > div.output_javascript, +div.nboutput.container div.output_area:not(.rendered_html) > img{ + padding: 5px; + margin: 0; +} + +/* fix copybtn overflow problem in chromium (needed for 'sphinx_copybutton') */ +div.nbinput.container div.input_area > div[class^='highlight'], +div.nboutput.container div.output_area > div[class^='highlight']{ + overflow-y: hidden; +} + +/* hide copy button on prompts for 'sphinx_copybutton' extension ... */ +.prompt .copybtn, +/* ... and 'sphinx_immaterial' theme */ +.prompt .md-clipboard.md-icon { + display: none; +} + +/* Some additional styling taken form the Jupyter notebook CSS */ +.jp-RenderedHTMLCommon table, +div.rendered_html table { + border: none; + border-collapse: collapse; + border-spacing: 0; + color: black; + font-size: 12px; + table-layout: fixed; +} +.jp-RenderedHTMLCommon thead, +div.rendered_html thead { + border-bottom: 1px solid black; + vertical-align: bottom; +} +.jp-RenderedHTMLCommon tr, +.jp-RenderedHTMLCommon th, +.jp-RenderedHTMLCommon td, +div.rendered_html tr, +div.rendered_html th, +div.rendered_html td { + text-align: right; + vertical-align: middle; + padding: 0.5em 0.5em; + line-height: normal; + white-space: normal; + max-width: none; + border: none; +} +.jp-RenderedHTMLCommon th, +div.rendered_html th { + font-weight: bold; +} +.jp-RenderedHTMLCommon tbody tr:nth-child(odd), +div.rendered_html tbody tr:nth-child(odd) { + background: #f5f5f5; +} +.jp-RenderedHTMLCommon tbody tr:hover, +div.rendered_html tbody tr:hover { + background: rgba(66, 165, 245, 0.2); +} + diff --git a/_static/nbsphinx-gallery.css b/_static/nbsphinx-gallery.css new file mode 100644 index 0000000..365c27a --- /dev/null +++ b/_static/nbsphinx-gallery.css @@ -0,0 +1,31 @@ +.nbsphinx-gallery { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); + gap: 5px; + margin-top: 1em; + margin-bottom: 1em; +} + +.nbsphinx-gallery > a { + padding: 5px; + border: 1px dotted currentColor; + border-radius: 2px; + text-align: center; +} + +.nbsphinx-gallery > a:hover { + border-style: solid; +} + +.nbsphinx-gallery img { + max-width: 100%; + max-height: 100%; +} + +.nbsphinx-gallery > a > div:first-child { + display: flex; + align-items: start; + justify-content: center; + height: 120px; + margin-bottom: 5px; +} diff --git a/_static/nbsphinx-no-thumbnail.svg b/_static/nbsphinx-no-thumbnail.svg new file mode 100644 index 0000000..9dca758 --- /dev/null +++ b/_static/nbsphinx-no-thumbnail.svg @@ -0,0 +1,9 @@ + + + + diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 0000000..6110e9f --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,84 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #8f5902; font-style: italic } /* Comment */ +.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.highlight .g { color: #000000 } /* Generic */ +.highlight .k { color: #204a87; font-weight: bold } /* Keyword */ +.highlight .l { color: #000000 } /* Literal */ +.highlight .n { color: #000000 } /* Name */ +.highlight .o { color: #ce5c00; font-weight: bold } /* Operator */ +.highlight .x { color: #000000 } /* Other */ +.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ +.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #8f5902; font-style: italic } /* Comment.Preproc */ +.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #a40000 } /* Generic.Deleted */ +.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ +.highlight .ges { color: #000000; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #ef2929 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #000000; font-style: italic } /* Generic.Output */ +.highlight .gp { color: #8f5902 } /* Generic.Prompt */ +.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ +.highlight .kc { color: #204a87; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #204a87; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #204a87; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #204a87; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #204a87; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #204a87; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #000000 } /* Literal.Date */ +.highlight .m { color: #0000cf; font-weight: bold } /* Literal.Number */ +.highlight .s { color: #4e9a06 } /* Literal.String */ +.highlight .na { color: #c4a000 } /* Name.Attribute */ +.highlight .nb { color: #204a87 } /* Name.Builtin */ +.highlight .nc { color: #000000 } /* Name.Class */ +.highlight .no { color: #000000 } /* Name.Constant */ +.highlight .nd { color: #5c35cc; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #ce5c00 } /* Name.Entity */ +.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #000000 } /* Name.Function */ +.highlight .nl { color: #f57900 } /* Name.Label */ +.highlight .nn { color: #000000 } /* Name.Namespace */ +.highlight .nx { color: #000000 } /* Name.Other */ +.highlight .py { color: #000000 } /* Name.Property */ +.highlight .nt { color: #204a87; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #000000 } /* Name.Variable */ +.highlight .ow { color: #204a87; font-weight: bold } /* Operator.Word */ +.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ +.highlight .w { color: #f8f8f8 } /* Text.Whitespace */ +.highlight .mb { color: #0000cf; font-weight: bold } /* Literal.Number.Bin */ +.highlight .mf { color: #0000cf; font-weight: bold } /* Literal.Number.Float */ +.highlight .mh { color: #0000cf; font-weight: bold } /* Literal.Number.Hex */ +.highlight .mi { color: #0000cf; font-weight: bold } /* Literal.Number.Integer */ +.highlight .mo { color: #0000cf; font-weight: bold } /* Literal.Number.Oct */ +.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ +.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ +.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ +.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ +.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ +.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ +.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ +.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ +.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ +.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ +.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ +.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #000000 } /* Name.Function.Magic */ +.highlight .vc { color: #000000 } /* Name.Variable.Class */ +.highlight .vg { color: #000000 } /* Name.Variable.Global */ +.highlight .vi { color: #000000 } /* Name.Variable.Instance */ +.highlight .vm { color: #000000 } /* Name.Variable.Magic */ +.highlight .il { color: #0000cf; font-weight: bold } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 0000000..7918c3f --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,574 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 0000000..8a96c69 --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/api.html b/api.html new file mode 100644 index 0000000..439d765 --- /dev/null +++ b/api.html @@ -0,0 +1,665 @@ + + + + + + + + API — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + + + +
+
+
+
+ +
+

API

+
+

Main Function

+
+
+class idf_analysis.idf_class.IntensityDurationFrequencyAnalyse(series_kind='partial', worksheet='KOSTRA', extended_durations=False)[source]
+

heavy rain as a function of the duration and the return period acc. to DWA-A 531 (2012)

+

This program reads the measurement data of the rainfall +and calculates the distribution of the rainfall as a function of the return period and the duration

+

for duration steps up to 12 hours (and more) and return period in a range of ‘0.5a <= T_n <= 100a’

+
+
+_series
+

rain time-series

+
+
Type:
+

pandas.Series

+
+
+
+ +
+
+_freq
+

frequency of the rain series

+
+
Type:
+

pandas.DateOffset

+
+
+
+ +
+
+_return_periods_frame
+

with return periods of all given durations

+
+
Type:
+

pandas.DataFrame

+
+
+
+ +
+
+_rain_events
+
+
Type:
+

pandas.DataFrame

+
+
+
+ +
+
+_rainfall_sum_frame
+

with rain sums of all given durations

+
+
Type:
+

pandas.DataFrame

+
+
+
+ +
+
+add_max_intensities_to_events(events)[source]
+

Add the maximum intensities for all duration steps to the events table.

+
+
Parameters:
+

events (pandas.DataFrame) – events table

+
+
Returns:
+

events table including the columns with the maximum intensities

+
+
Return type:
+

pandas.DataFrame

+
+
+
+ +
+
+auto_save_parameters(filename)[source]
+

Auto-save the parameters as a yaml-file to save computation time.

+
+ +
+
+auto_save_rain_events(filename, sep=';', decimal='.')[source]
+

auto-save the rain-events dataframe as a csv-file to save computation time.

+
+ +
+
+auto_save_return_periods_frame(filename)[source]
+

auto-save the return-periods dataframe as a parquet-file to save computation time.

+
+ +
+
+depth_of_rainfall(duration, return_period)[source]
+

calculate the height of the rainfall h in L/m² = mm

+
+
Parameters:
+
+
+
Returns:
+

height of the rainfall h in L/m² = mm

+
+
Return type:
+

int | float | list | numpy.ndarray | pandas.Series

+
+
+
+ +
+
+property duration_steps
+

get duration steps (in minutes) for the parameter calculation and basic evaluations

+
+
Returns:
+

duration steps in minutes

+
+
Return type:
+

list | numpy.ndarray

+
+
+
+ +
+
+property duration_steps_for_output
+

get duration steps (in minutes) for the parameter calculation and basic evaluations

+
+
Returns:
+

duration steps in minutes

+
+
Return type:
+

list | numpy.ndarray

+
+
+
+ +
+
+event_report(filename, min_event_rain_sum=25, min_return_period=0.5, durations=None)[source]
+

create pdf file with the biggest rain events +for each event is represented by a plot of the rain series +and a IDF analysis where the return periods are calculated

+
+
Parameters:
+
    +
  • filename (str) – path (directory + filename) for the created pdf-report

  • +
  • min_event_rain_sum (float) – only events with a bigger rain sum will be created

  • +
  • min_return_period (float) – only events with a bigger return period will be analysed +(the plot will be created anyway)

  • +
  • durations (list[int]) – analysed durations +(default: [5, 10, 15, 20, 30, 45, 60, 90, 120, 180, 240, 360, 540, 720, 1080, 1440, 2880, 4320])

  • +
+
+
+
+ +
+
+classmethod from_idf_table(idf_table, worksheet='KOSTRA')[source]
+

Create an IDF-analysis-object based on an idf-tabel (i.e. from a given KOSTRA table)

+
+
Parameters:
+
    +
  • idf_table (pandas.DataFrame) – idf-table with index=Durations and columns=return Period and values=Rainheight

  • +
  • worksheet (str | optional) – name of the worksheet to use. default: ‘KOSTRA’

  • +
+
+
Returns:
+

idf-object

+
+
Return type:
+

IntensityDurationFrequencyAnalyse

+
+
+
+ +
+
+get_duration(height_of_rainfall, return_period)[source]
+

calculate the duration, when the height of rainfall and the return period are given

+
+
Parameters:
+
    +
  • height_of_rainfall (float) – in [mm]

  • +
  • return_period (float) – in years

  • +
+
+
Returns:
+

duration in minutes

+
+
Return type:
+

float

+
+
+
+ +
+
+get_rainfall_sum_frame(series=None, durations=None)[source]
+

Get a rainfall sum frame for any series with the duration steps as columns.

+

Default: The time-series and the duration-steps of the analysis.

+
+
Parameters:
+
    +
  • series (pandas.Series, Optional) – rainfall time-series

  • +
  • durations (list, Optional) – list of durations in minutes which are of interest (default: pre-defined durations)

  • +
+
+
Returns:
+

Rain sum depending on the duration per datetime-index.

+
+
Return type:
+

pandas.DataFrame

+
+
+
+ +
+
+get_return_period(height_of_rainfall, duration)[source]
+

calculate the return period, when the height of rainfall and the duration are given

+
+
Parameters:
+
+
+
Returns:
+

return period in years

+
+
Return type:
+

int | float | list | numpy.ndarray | pandas.Series

+
+
+
+ +
+
+get_return_periods_frame(series=None, durations=None)[source]
+

Get the return periods for any time-series with the duration steps as columns.

+

Default: The time-series and the duration-steps of the analysis.

+
+
Parameters:
+
    +
  • series (pandas.Series, Optional) – rainfall time-series

  • +
  • durations (list, Optional) – Durations in minutes which are of interest (default: pre-defined durations)

  • +
+
+
Returns:
+

Return periods depending on the duration per datetime-index.

+
+
Return type:
+

pandas.DataFrame

+
+
+
+ +
+
+property model_rain_block
+

Create a model block rain class.

+
+
Returns:
+

Synthetic model block rain.

+
+
Return type:
+

_BlockRain

+
+
+
+ +
+
+property model_rain_euler
+

Create a model Euler rain class.

+
+
Returns:
+

Synthetic model Euler rain.

+
+
Return type:
+

_EulerRain

+
+
+
+ +
+
+property parameters
+

get the calculation parameters

+

calculation method depending on the used worksheet and on the duration +also the parameters for each method

+

to save some time and save the parameters with +IntensityDurationFrequencyAnalyse.write_parameters() +and read them later with IntensityDurationFrequencyAnalyse.read_parameters()

+
+
Returns:
+

calculation parameters

+
+
Return type:
+

IdfParameters

+
+
+
+ +
+
+r_720_1()[source]
+

rain flow rate in [l/(s*ha)] for a duration of 12h and a return period of 1 year

+
+
Returns:
+

rain flow rate in [l/(s*ha)]

+
+
Return type:
+

float

+
+
+
+ +
+
+property rain_events
+

get the all the rain events of the time-series

+

default minimal gap between events is 4 hours

+
+
Returns:
+

data-frame of events with start-, end-time and duration

+
+
Return type:
+

pandas.DataFrame

+
+
+
+ +
+
+rain_flow_rate(duration, return_period)[source]
+

convert the height of rainfall to the specific rain flow rate in [l/(s*ha)] +if 2 array-like parameters are give, a element-wise calculation will be made. +So the length of the array must be the same.

+
+
Parameters:
+
+
+
Returns:
+

specific rain flow rate in [l/(s*ha)]

+
+
Return type:
+

int | float | list | numpy.ndarray | pandas.Series

+
+
+
+ +
+
+property rainfall_sum_frame
+

Get the rainfall sum over the whole time-series for the default duration steps.

+
+
Returns:
+

Rain sum depending on the duration per datetime-index.

+
+
Return type:
+

pandas.DataFrame

+
+
+
+ +
+
+read_parameters(filename)[source]
+

Read parameters from a .yaml-file to save computation time.

+

Extract interim results from parameters.

+
+
Parameters:
+

filename (str, Path) – filename of the parameters yaml-file

+
+
+
+ +
+
+read_rain_events(filename, sep=';', decimal='.')[source]
+

read the rain-events dataframe as a csv-file to save computation time.

+
+ +
+
+read_return_periods_frame(filename, **kwargs)[source]
+

read the return-periods dataframe as a parquet-file to save computation time.

+
+ +
+
+result_figure(min_duration=5.0, max_duration=720.0, logx=False, return_periods=None, color=True, ax=None, linestyle=None, add_interim=False, alpha=1)[source]
+

Create a plot with the idf-curves with duration on the x-axis and rainfall depth on the y-axis.

+
+
Parameters:
+
    +
  • min_duration (float) – Shortest duration on the plot.

  • +
  • max_duration (float) – Longest duration on the plot.

  • +
  • logx (bool) – Use a logarithmic scale on the x-axis.

  • +
  • return_periods (list[int] | Optional) – List of return periods to plot. Default = [1, 2, 5, 10, 50, 100]

  • +
  • color (bool) – Use color and a legend to differentiate between the return periods (default). +Otherwise, annotation text and black lines.

  • +
  • ax (plt.Axes) – Axes to plot on. Default = create new one.

  • +
  • linestyle (str) – Line-style for the plotted lines.

  • +
  • add_interim (bool) – Add interim results from the series analysis as scatter points.

  • +
  • alpha (float) – Alpha of the idf-lines in the plot.

  • +
+
+
Returns:
+

figure and axes of the plot.

+
+
Return type:
+

(plt.Figure, plt.Axes)

+
+
+
+ +
+
+result_table(durations=None, return_periods=None, add_names=False)[source]
+

Get an idf-table of rainfall depth with return periods as columns and durations as rows.

+
+
Parameters:
+
    +
  • durations (list | numpy.ndarray) – list of durations in minutes for the table

  • +
  • return_periods (list) – list of return periods in years for the table

  • +
  • add_names (bool) – weather to use expressive names as index-&column-label

  • +
+
+
Returns:
+

idf table

+
+
Return type:
+

pandas.DataFrame

+
+
+
+ +
+
+property return_periods_frame
+

Get the return periods over the whole time-series for the default duration steps.

+
+
Returns:
+

data-frame of return periods where the columns are the duration steps

+
+
Return type:
+

pandas.DataFrame

+
+
+
+ +
+
+set_series(series)[source]
+

set the series for the analysis

+
+
Parameters:
+

series (pandas.Series) – precipitation time-series

+
+
+
+ +
+
+write_parameters(filename)[source]
+

save parameters as yaml-file to save computation time.

+
+
Parameters:
+

filename (str) – filename for the parameters yaml-file

+
+
+
+ +
+
+write_rain_events(filename, sep=';', decimal='.')[source]
+

save the rain-events dataframe as a csv-file for external use or to save computation time.

+
+ +
+
+write_return_periods_frame(filename, **kwargs)[source]
+

save the return-periods dataframe as a parquet-file to save computation time.

+
+ +
+ +
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/base_functions.html b/base_functions.html new file mode 100644 index 0000000..b8864fa --- /dev/null +++ b/base_functions.html @@ -0,0 +1,709 @@ + + + + + + + + Base Functions — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + + + +
+
+
+
+ +
+

Base Functions

+
+

Calculation Methods

+

Functions to analyse the precipitations series based on the core method.

+
+
+idf_analysis.event_series_analysis.annual_series(rolling_sum_values, year_index)[source]
+

Create an annual series of the maximum overlapping sum per year and calculate the “u” and “w” parameters.

+

acc. to DWA-A 531 chap. 5.1.5

+

Gumbel distribution | https://en.wikipedia.org/wiki/Gumbel_distribution

+
+
Parameters:
+
    +
  • rolling_sum_values (numpy.ndarray) – Array with maximum rolling sum per event per year.

  • +
  • year_index (numpy.ndarray) – Array with year of the event.

  • +
+
+
Returns:
+

Parameter u and w from the annual series for a specific duration step as a tuple.

+
+
Return type:
+

dict[str, float]

+
+
+
+ +
+
+idf_analysis.event_series_analysis.calculate_u_w(file_input, duration_steps, series_kind)[source]
+

Statistical analysis for each duration step.

+

acc. to DWA-A 531 chap. 5.1

+

Save the parameters of the distribution function as interim results.

+

acc. to DWA-A 531 chap. 4.4: use the annual series only for measurement periods over 20 years

+
+
Parameters:
+
+
+
Returns:
+

with key=durations and values=dict(u, w)

+
+
Return type:
+

dict[int, dict]

+
+
+
+ +
+
+idf_analysis.event_series_analysis.iter_event_series(file_input, duration_steps)[source]
+

Statistical analysis for each duration step.

+

acc. to DWA-A 531 chap. 5.1

+

Save the parameters of the distribution function as interim results.

+
+
Parameters:
+
+
+
Yields:
+

series – max rainfall intensity per event for each duration step

+
+
+
+ +
+
+idf_analysis.event_series_analysis.partial_series(rolling_sum_values, measurement_period)[source]
+

Create a partial series of the largest overlapping sums and calculate the “u” and “w” parameters.

+

acc. to DWA-A 531 chap. 5.1.4

+

Exponential distribution | https://en.wikipedia.org/wiki/Exponential_distribution

+
+
Parameters:
+
    +
  • rolling_sum_values (numpy.ndarray) – Array with maximum rolling sum per event.

  • +
  • measurement_period (float) – Measurement period in years.

  • +
+
+
Returns:
+

parameter u and w from the partial series for a specific duration step as a tuple

+
+
Return type:
+

dict[str, float]

+
+
+
+ +
+
+idf_analysis.parameter_formulations.folded_log_formulation(duration, param, case, param_mean=None, duration_mean=None)[source]
+
+
Parameters:
+
    +
  • duration

  • +
  • param

  • +
  • case

  • +
  • param_mean

  • +
  • duration_mean

  • +
+
+
+

Returns:

+
+ +
+
+idf_analysis.parameter_formulations.hyperbolic_formulation(duration: array, param: array, a_start=20.0, b_start=15.0, param_mean=None, duration_mean=None)[source]
+

Computes the hyperbolic formulation using the given parameters.

+
+
Parameters:
+
    +
  • duration (np.array) – Array of durations.

  • +
  • param (np.array) – Array of parameters.

  • +
  • a_start (float) – Initial value for ‘a’ parameter.

  • +
  • b_start (float) – Initial value for ‘b’ parameter.

  • +
  • param_mean (float, optional) – Mean value of parameters. Defaults to None.

  • +
  • duration_mean (float, optional) – Mean value of durations. Defaults to None.

  • +
+
+
Returns:
+

Computed value of ‘a’ and ‘b’.

+
+
Return type:
+

tuple[float, float]

+
+
+
+ +
+
+class idf_analysis.idf_backend.IdfParameters(series_kind='partial', worksheet='KOSTRA', extended_durations=False)[source]
+
+
+classmethod from_interim_results_file(interim_results_fn, worksheet='KOSTRA')[source]
+

DEPRECIATED: for compatibility reasons. To use the old file and convert it to the new parameters file

+
+ +
+
+get_array_param(p, duration)[source]
+
+
Parameters:
+
    +
  • p (str) – name of the parameter ‘u’ or ‘w’

  • +
  • duration (numpy.ndarray) – in minutes

  • +
+
+
Returns:
+

u, w

+
+
Return type:
+

(numpy.ndarray, numpy.ndarray)

+
+
+
+ +
+
+get_scalar_param(p, duration)[source]
+
+
Parameters:
+
    +
  • p (str) – name of the parameter ‘u’ or ‘w’

  • +
  • duration (float | int) – in minutes

  • +
+
+
Returns:
+

u, w

+
+
Return type:
+

(float, float)

+
+
+
+ +
+
+get_u_w(duration)[source]
+

calculate the u and w parameters depending on the durations

+
+
Parameters:
+

duration (numpy.ndarray| list | float | int) – in minutes

+
+
Returns:
+

u and w

+
+
Return type:
+

(float, float)

+
+
+
+ +
+
+measured_points(return_periods, max_duration=None)[source]
+

get the calculation results of the rainfall with u and w without the estimation of the formulation

+
+
Parameters:
+
    +
  • return_periods (float | np.array | list | pd.Series) – return period in [a]

  • +
  • max_duration (float) – max duration in [min]

  • +
+
+
Returns:
+

series with duration as index and the height of the rainfall as data

+
+
Return type:
+

pd.Series

+
+
+
+ +
+
+set_parameter_approaches_from_worksheet(worksheet)[source]
+

Set approaches depending on the duration and the parameter.

+
+
Parameters:
+

worksheet (str) – worksheet name for the analysis: +- ‘DWA-A_531’ +- ‘ATV-A_121’ +- ‘DWA-A_531_advektiv’ (yet not implemented)

+
+
Returns:
+

table of approaches depending on the duration and the parameter

+
+
Return type:
+

list[dict]

+
+
+
+ +
+ +
+
+

Input and Output

+

Function for reading and writing files.

+
+
+idf_analysis.in_out.import_series(filename, series_label='precipitation', index_label='datetime', csv_reader_args=None)[source]
+
+
Parameters:
+
    +
  • filename

  • +
  • series_label

  • +
  • index_label

  • +
  • csv_reader_args – for example: sep=”,” or “.” and decimal=”;” or “,”

  • +
+
+
Returns:
+

precipitation series

+
+
Return type:
+

pandas.Series

+
+
+
+ +
+
+

SWW Utils

+

Functions to help analyse data in a general way. +Most of this function have been developed on the +institute of urban water management at the university of technology Graz.

+
+
+exception idf_analysis.sww_utils.IdfError[source]
+

Some Error Within this Package

+
+ +
+
+idf_analysis.sww_utils.agg_events(events, series, agg='sum')[source]
+
+
Parameters:
+
+
+
Returns:
+

result of function of every event

+
+
Return type:
+

numpy.ndarray

+
+
+
+ +
+
+idf_analysis.sww_utils.event_duration(events)[source]
+

calculate the event duration

+
+
Parameters:
+

events (pandas.DataFrame) – table of events with COL.START and COL.END times

+
+
Returns:
+

duration of each event

+
+
Return type:
+

pandas.Series

+
+
+
+ +
+
+idf_analysis.sww_utils.event_number_to_series(events, index)[source]
+

make a time-series where the value of the event number is paste to the <index>

+
+
Parameters:
+
+
+
Return type:
+

pandas.Series

+
+
+
+ +
+
+idf_analysis.sww_utils.guess_freq(date_time_index, default=Timedelta('0 days 00:01:00'))[source]
+

guess the frequency by evaluating the most often frequency

+
+
Parameters:
+
+
+
Returns:
+

frequency of the date-time-index

+
+
Return type:
+

pandas.DateOffset

+
+
+
+ +
+
+idf_analysis.sww_utils.rain_bar_plot(rain, ax=None, color='#1E88E5', reverse=False, step='post', joinstyle='miter', capstyle='butt')[source]
+

Make a standard precipitation/rain plot.

+
+
Parameters:
+
    +
  • rain (pandas.Series) –

  • +
  • ax (matplotlib.axes.Axes) –

  • +
  • color (str) –

  • +
  • reverse (bool) –

  • +
  • step (str) – ‘mid’ ‘post’ pre’

  • +
+
+
Returns:
+

rain plot

+
+
Return type:
+

matplotlib.axes.Axes

+
+
+
+ +
+
+idf_analysis.sww_utils.rain_events(series, ignore_rain_below=0.01, min_gap=Timedelta('0 days 04:00:00'))[source]
+

get rain events as a table with start and end times

+
+
Parameters:
+
    +
  • series (pandas.Series) – rain series

  • +
  • ignore_rain_below (float) – where it is considered as rain

  • +
  • min_gap (pandas.Timedelta) – 4 hours of no rain between events

  • +
+
+
Returns:
+

table of the rain events

+
+
Return type:
+

pandas.DataFrame

+
+
+
+ +
+
+idf_analysis.sww_utils.resample_rain_series(series)[source]
+
+
Parameters:
+

series (pandas.Series) –

+
+
Returns:
+

the resampled series AND the final frequency in minutes

+
+
Return type:
+

tuple[pandas.Series, int]

+
+
+
+ +
+
+

Converter helper functions

+

Functions to help convert things and units.

+
+
+idf_analysis.little_helpers.delta2min(time_delta)[source]
+

convert timedelta to float in minutes

+
+
Parameters:
+

time_delta (pandas.Timedelta, pandas.DateOffset) –

+
+
Returns:
+

the timedelta in minutes

+
+
Return type:
+

float

+
+
+
+ +
+
+idf_analysis.little_helpers.duration_steps_readable(durations)[source]
+

convert the durations to a more readable form

+
+
Parameters:
+

durations (list[int | float]) – in minutes

+
+
Returns:
+

of the readable duration list

+
+
Return type:
+

list[str]

+
+
+
+ +
+
+idf_analysis.little_helpers.height2rate(height_of_rainfall, duration)[source]
+

calculate the specific rain flow rate in [l/(s*ha)] +if 2 array-like parameters are give, a element-wise calculation will be made. +So the length of the array must be the same.

+
+
Parameters:
+
    +
  • height_of_rainfall (float | np.ndarray | pd.Series) – height_of_rainfall: in [mm]

  • +
  • duration (float | np.ndarray | pd.Series) – in minutes

  • +
+
+
Returns:
+

specific rain flow rate in [l/(s*ha)]

+
+
Return type:
+

float | np.ndarray | pd.Series

+
+
+
+ +
+
+idf_analysis.little_helpers.minutes_readable(minutes)[source]
+

convert the duration in minutes to a more readable form

+
+
Parameters:
+

minutes (float | int) – duration in minutes

+
+
Returns:
+

duration as a string

+
+
Return type:
+

str

+
+
+
+ +
+
+idf_analysis.little_helpers.rate2height(rain_flow_rate, duration)[source]
+

convert the rain flow rate to the height of rainfall in [mm] +if 2 array-like parameters are give, a element-wise calculation will be made. +So the length of the array must be the same.

+
+
Parameters:
+
    +
  • rain_flow_rate (float | np.ndarray | pd.Series) – in [l/(s*ha)]

  • +
  • duration (float | np.ndarray | pd.Series) – in minutes

  • +
+
+
Returns:
+

height of rainfall in [mm]

+
+
Return type:
+

float | np.ndarray | pd.Series

+
+
+
+ +
+
+idf_analysis.little_helpers.timedelta_components_plus(td, min_freq='T')[source]
+

Schaltjahre nicht miteinbezogen

+
+ +
+
+idf_analysis.little_helpers.timedelta_readable(td, min_freq='T', short=False, sep=', ')[source]
+

Schaltjahre nicht miteinbezogen

+
+ +
+
+

Plotting helper functions

+

Functions to add or manipulate plotting figures.

+
+
+idf_analysis.plot_helpers.idf_bar_axes(ax, idf_table, return_period_colors={1: '#00ffff', 2: '#add8e6', 5: '#0000ff', 10: '#ffff00', 20: '#ffa500', 50: '#ff0000', 100: '#ff00ff'})[source]
+

create

+
+
Parameters:
+
    +
  • ax (matplotlib.pyplot.Axes) –

  • +
  • idf_table (pandas.DataFrame) –

  • +
  • return_period_colors (dict) – color of each return period {return period: color}

  • +
+
+
Return type:
+

matplotlib.pyplot.Axes

+
+
+
+ +
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/examples/example_commandline.html b/examples/example_commandline.html new file mode 100644 index 0000000..5c77218 --- /dev/null +++ b/examples/example_commandline.html @@ -0,0 +1,318 @@ + + + + + + + + Example Commandline Use — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

Example Commandline Use

+
+
[1]:
+
+
+
! python -m idf_analysis -h
+
+
+
+
+
+
+
+
+usage: __main__.py [-h] -i INPUT
+                   [-ws {ATV-A_121,DWA-A_531,DWA-A_531_advektiv}]
+                   [-kind {partial,annual}] [-t {>= 0.5 a and <= 100 a}]
+                   [-d {>= 5 min and <= 8640 min}] [-r {>= 0 L/s*ha}]
+                   [-h_N {>= 0 mm}] [--r_720_1] [--plot] [--export_table]
+
+heavy rain as a function of the duration and the return period acc. to DWA-A
+531 (2012) All files will be saved in the same directory of the input file but
+in a subfolder called like the inputfile + "_idf_data". Inside this folder a
+file called "idf_parameter.yaml"-file will be saved and contains interim-
+calculation-results and will be automatically reloaded on the next call.
+
+optional arguments:
+  -h, --help            show this help message and exit
+  -i INPUT, --input INPUT
+                        input file with the rain time-series (csv or parquet)
+  -ws {ATV-A_121,DWA-A_531,DWA-A_531_advektiv}, --worksheet {ATV-A_121,DWA-A_531,DWA-A_531_advektiv}
+                        From which worksheet the recommendations for
+                        calculating the parameters should be taken.
+  -kind {partial,annual}, --series_kind {partial,annual}
+                        The kind of series used for the calculation.
+                        (Calculation with partial series is more precise and
+                        recommended.)
+  -t {>= 0.5 a and <= 100 a}, --return_period {>= 0.5 a and <= 100 a}
+                        return period in years (If two of the three variables
+                        (rainfall (height or flow-rate), duration, return
+                        period) are given, the third variable is calculated.)
+  -d {>= 5 min and <= 8640 min}, --duration {>= 5 min and <= 8640 min}
+                        duration in minutes (If two of the three variables
+                        (rainfall (height or flow-rate), duration, return
+                        period) are given, the third variable is calculated.)
+  -r {>= 0 L/(s*ha)}, --flow_rate_of_rainfall {>= 0 L/(s*ha)}
+                        rainfall in Liter/(s * ha) (If two of the three
+                        variables (rainfall (height or flow-rate), duration,
+                        return period) are given, the third variable is
+                        calculated.)
+  -h_N {>= 0 mm}, --height_of_rainfall {>= 0 mm}
+                        rainfall in mm or Liter/m^2 (If two of the three
+                        variables (rainfall (height or flow-rate), duration,
+                        return period) are given, the third variable is
+                        calculated.)
+  --r_720_1             design rainfall with a duration of 720 minutes (=12 h)
+                        and a return period of 1 year
+  --plot                get a plot of the idf relationship
+  --export_table        get a table of the most frequent used values
+
+
+

I used the rain-time-series from ehyd.gv.at with the ID 112086 (Graz-Andritz)

+
+
[2]:
+
+
+
! python -m idf_analysis -i ehyd_112086.parquet
+
+
+
+
+
+
+
+
+Using the subfolder "ehyd_112086_idf_data" for the interim- and final-results.
+Found existing interim-results in "ehyd_112086_idf_data\idf_parameters.yaml" and using them for calculations.
+
+
+
+
[4]:
+
+
+
! python -m idf_analysis -i ehyd_112086.parquet --r_720_1
+
+
+
+
+
+
+
+
+Using the subfolder "ehyd_112086_idf_data" for the interim- and final-results.
+Found existing interim-results in "ehyd_112086_idf_data\idf_parameters.yaml" and using them for calculations.
+Resultierende Regenhöhe h_N(T_n=1.0a, D=720.0min) = 49.29 mm
+Resultierende Regenspende r_N(T_n=1.0a, D=720.0min) = 11.41 L/(s*ha)
+
+
+
+
[7]:
+
+
+
! python -m idf_analysis -i ehyd_112086.parquet -d 720 -t 1
+
+
+
+
+
+
+
+
+Using the subfolder "ehyd_112086_idf_data" for the interim- and final-results.
+Found existing interim-results in "ehyd_112086_idf_data\idf_parameters.yaml" and using them for calculations.
+Resultierende Regenhöhe h_N(T_n=1.0a, D=720.0min) = 49.29 mm
+Resultierende Regenspende r_N(T_n=1.0a, D=720.0min) = 11.41 L/(s*ha)
+
+
+
+
[8]:
+
+
+
! python -m idf_analysis -i ehyd_112086.parquet -d 720 -h_N 60
+
+
+
+
+
+
+
+
+Using the subfolder "ehyd_112086_idf_data" for the interim- and final-results.
+Found existing interim-results in "ehyd_112086_idf_data\idf_parameters.yaml" and using them for calculations.
+The return period is 2.0 years.
+Resultierende Regenhöhe h_N(T_n=2.0a, D=720.0min) = 60.00 mm
+Resultierende Regenspende r_N(T_n=2.0a, D=720.0min) = 13.89 L/(s*ha)
+
+
+
+
[ ]:
+
+
+
! python -m idf_analysis -i ehyd_112086.parquet -t 5 -t 15
+
+
+
+
+
[5]:
+
+
+
! python -m idf_analysis -i ehyd_112086.parquet --plot
+
+
+
+
+
+
+
+
+Using the subfolder "ehyd_112086_idf_data" for the interim- and final-results.
+Found existing interim-results in "ehyd_112086_idf_data\idf_parameters.yaml" and using them for calculations.
+Created the IDF-curves-plot and saved the file as "ehyd_112086_idf_data\idf__curves_plot.png".
+
+
+
+
[6]:
+
+
+
! python -m idf_analysis -i ehyd_112086.parquet --export_table
+
+
+
+
+
+
+
+
+Using the subfolder "ehyd_112086_idf_data" for the interim- and final-results.
+Found existing interim-results in "ehyd_112086_idf_data\idf_parameters.yaml" and using them for calculations.
+return period (a)    1       2       3       5       10      20      25      30      50      75      100
+frequency (1/a)    1.000   0.500   0.333   0.200   0.100   0.050   0.040   0.033   0.020   0.013   0.010
+duration (min)
+5.0                 9.39   10.97   11.89   13.04   14.61   16.19   16.69   17.11   18.26   19.18   19.83
+10.0               15.15   17.62   19.06   20.88   23.35   25.82   26.62   27.27   29.09   30.54   31.56
+15.0               19.03   22.25   24.13   26.51   29.72   32.94   33.98   34.83   37.20   39.08   40.42
+20.0               21.83   25.71   27.99   30.85   34.73   38.62   39.87   40.89   43.75   46.02   47.63
+30.0               25.60   30.66   33.62   37.35   42.41   47.47   49.10   50.43   54.16   57.12   59.22
+45.0               28.92   35.51   39.37   44.23   50.83   57.42   59.54   61.28   66.14   69.99   72.73
+60.0               30.93   38.89   43.54   49.40   57.36   65.31   67.88   69.97   75.83   80.49   83.79
+90.0               33.37   41.74   46.64   52.80   61.17   69.54   72.23   74.43   80.60   85.49   88.96
+180.0              38.01   47.13   52.46   59.18   68.30   77.42   80.36   82.76   89.48   94.81   98.60
+270.0              41.01   50.60   56.21   63.28   72.87   82.46   85.55   88.07   95.14  100.75  104.73
+360.0              43.29   53.23   59.04   66.37   76.31   86.25   89.45   92.06   99.39  105.20  109.33
+450.0              45.14   55.36   61.33   68.87   79.08   89.30   92.59   95.28  102.81  108.79  113.03
+600.0              47.64   58.23   64.43   72.23   82.82   93.41   96.82   99.61  107.42  113.61  118.01
+720.0              49.29   60.13   66.47   74.45   85.29   96.12   99.61  102.46  110.44  116.78  121.28
+1080.0             54.41   64.97   71.15   78.94   89.50  100.06  103.46  106.24  114.02  120.20  124.58
+1440.0             58.02   67.72   73.39   80.54   90.24   99.93  103.05  105.61  112.75  118.42  122.45
+2880.0             66.70   77.41   83.68   91.57  102.29  113.00  116.45  119.26  127.16  133.42  137.87
+4320.0             71.93   85.72   93.78  103.95  117.73  131.52  135.96  139.58  149.75  157.81  163.53
+5760.0             78.95   95.65  105.42  117.72  134.43  151.13  156.50  160.89  173.20  182.97  189.90
+7200.0             83.53  101.38  111.82  124.98  142.83  160.68  166.43  171.12  184.28  194.72  202.13
+8640.0             85.38  104.95  116.40  130.82  150.38  169.95  176.25  181.40  195.82  207.27  215.39
+Created the IDF-curves-plot and saved the file as "ehyd_112086_idf_data\idf_table.csv".
+
+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/examples/example_commandline.ipynb b/examples/example_commandline.ipynb new file mode 100644 index 0000000..5b06504 --- /dev/null +++ b/examples/example_commandline.ipynb @@ -0,0 +1,255 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "# Example Commandline Use" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "usage: __main__.py [-h] -i INPUT\n", + " [-ws {ATV-A_121,DWA-A_531,DWA-A_531_advektiv}]\n", + " [-kind {partial,annual}] [-t {>= 0.5 a and <= 100 a}]\n", + " [-d {>= 5 min and <= 8640 min}] [-r {>= 0 L/s*ha}]\n", + " [-h_N {>= 0 mm}] [--r_720_1] [--plot] [--export_table]\n", + "\n", + "heavy rain as a function of the duration and the return period acc. to DWA-A\n", + "531 (2012) All files will be saved in the same directory of the input file but\n", + "in a subfolder called like the inputfile + \"_idf_data\". Inside this folder a\n", + "file called \"idf_parameter.yaml\"-file will be saved and contains interim-\n", + "calculation-results and will be automatically reloaded on the next call.\n", + "\n", + "optional arguments:\n", + " -h, --help show this help message and exit\n", + " -i INPUT, --input INPUT\n", + " input file with the rain time-series (csv or parquet)\n", + " -ws {ATV-A_121,DWA-A_531,DWA-A_531_advektiv}, --worksheet {ATV-A_121,DWA-A_531,DWA-A_531_advektiv}\n", + " From which worksheet the recommendations for\n", + " calculating the parameters should be taken.\n", + " -kind {partial,annual}, --series_kind {partial,annual}\n", + " The kind of series used for the calculation.\n", + " (Calculation with partial series is more precise and\n", + " recommended.)\n", + " -t {>= 0.5 a and <= 100 a}, --return_period {>= 0.5 a and <= 100 a}\n", + " return period in years (If two of the three variables\n", + " (rainfall (height or flow-rate), duration, return\n", + " period) are given, the third variable is calculated.)\n", + " -d {>= 5 min and <= 8640 min}, --duration {>= 5 min and <= 8640 min}\n", + " duration in minutes (If two of the three variables\n", + " (rainfall (height or flow-rate), duration, return\n", + " period) are given, the third variable is calculated.)\n", + " -r {>= 0 L/(s*ha)}, --flow_rate_of_rainfall {>= 0 L/(s*ha)}\n", + " rainfall in Liter/(s * ha) (If two of the three\n", + " variables (rainfall (height or flow-rate), duration,\n", + " return period) are given, the third variable is\n", + " calculated.)\n", + " -h_N {>= 0 mm}, --height_of_rainfall {>= 0 mm}\n", + " rainfall in mm or Liter/m^2 (If two of the three\n", + " variables (rainfall (height or flow-rate), duration,\n", + " return period) are given, the third variable is\n", + " calculated.)\n", + " --r_720_1 design rainfall with a duration of 720 minutes (=12 h)\n", + " and a return period of 1 year\n", + " --plot get a plot of the idf relationship\n", + " --export_table get a table of the most frequent used values\n" + ] + } + ], + "source": [ + "! python -m idf_analysis -h" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I used the rain-time-series from ehyd.gv.at with the ID 112086 (Graz-Andritz)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using the subfolder \"ehyd_112086_idf_data\" for the interim- and final-results.\n", + "Found existing interim-results in \"ehyd_112086_idf_data\\idf_parameters.yaml\" and using them for calculations.\n" + ] + } + ], + "source": [ + "! python -m idf_analysis -i ehyd_112086.parquet" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using the subfolder \"ehyd_112086_idf_data\" for the interim- and final-results.\n", + "Found existing interim-results in \"ehyd_112086_idf_data\\idf_parameters.yaml\" and using them for calculations.\n", + "Resultierende Regenhöhe h_N(T_n=1.0a, D=720.0min) = 49.29 mm\n", + "Resultierende Regenspende r_N(T_n=1.0a, D=720.0min) = 11.41 L/(s*ha)\n" + ] + } + ], + "source": [ + "! python -m idf_analysis -i ehyd_112086.parquet --r_720_1" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using the subfolder \"ehyd_112086_idf_data\" for the interim- and final-results.\n", + "Found existing interim-results in \"ehyd_112086_idf_data\\idf_parameters.yaml\" and using them for calculations.\n", + "Resultierende Regenhöhe h_N(T_n=1.0a, D=720.0min) = 49.29 mm\n", + "Resultierende Regenspende r_N(T_n=1.0a, D=720.0min) = 11.41 L/(s*ha)\n" + ] + } + ], + "source": [ + "! python -m idf_analysis -i ehyd_112086.parquet -d 720 -t 1" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using the subfolder \"ehyd_112086_idf_data\" for the interim- and final-results.\n", + "Found existing interim-results in \"ehyd_112086_idf_data\\idf_parameters.yaml\" and using them for calculations.\n", + "The return period is 2.0 years.\n", + "Resultierende Regenhöhe h_N(T_n=2.0a, D=720.0min) = 60.00 mm\n", + "Resultierende Regenspende r_N(T_n=2.0a, D=720.0min) = 13.89 L/(s*ha)\n" + ] + } + ], + "source": [ + "! python -m idf_analysis -i ehyd_112086.parquet -d 720 -h_N 60" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! python -m idf_analysis -i ehyd_112086.parquet -t 5 -t 15" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using the subfolder \"ehyd_112086_idf_data\" for the interim- and final-results.\n", + "Found existing interim-results in \"ehyd_112086_idf_data\\idf_parameters.yaml\" and using them for calculations.\n", + "Created the IDF-curves-plot and saved the file as \"ehyd_112086_idf_data\\idf__curves_plot.png\".\n" + ] + } + ], + "source": [ + "! python -m idf_analysis -i ehyd_112086.parquet --plot" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using the subfolder \"ehyd_112086_idf_data\" for the interim- and final-results.\n", + "Found existing interim-results in \"ehyd_112086_idf_data\\idf_parameters.yaml\" and using them for calculations.\n", + "return period (a) 1 2 3 5 10 20 25 30 50 75 100\n", + "frequency (1/a) 1.000 0.500 0.333 0.200 0.100 0.050 0.040 0.033 0.020 0.013 0.010\n", + "duration (min) \n", + "5.0 9.39 10.97 11.89 13.04 14.61 16.19 16.69 17.11 18.26 19.18 19.83\n", + "10.0 15.15 17.62 19.06 20.88 23.35 25.82 26.62 27.27 29.09 30.54 31.56\n", + "15.0 19.03 22.25 24.13 26.51 29.72 32.94 33.98 34.83 37.20 39.08 40.42\n", + "20.0 21.83 25.71 27.99 30.85 34.73 38.62 39.87 40.89 43.75 46.02 47.63\n", + "30.0 25.60 30.66 33.62 37.35 42.41 47.47 49.10 50.43 54.16 57.12 59.22\n", + "45.0 28.92 35.51 39.37 44.23 50.83 57.42 59.54 61.28 66.14 69.99 72.73\n", + "60.0 30.93 38.89 43.54 49.40 57.36 65.31 67.88 69.97 75.83 80.49 83.79\n", + "90.0 33.37 41.74 46.64 52.80 61.17 69.54 72.23 74.43 80.60 85.49 88.96\n", + "180.0 38.01 47.13 52.46 59.18 68.30 77.42 80.36 82.76 89.48 94.81 98.60\n", + "270.0 41.01 50.60 56.21 63.28 72.87 82.46 85.55 88.07 95.14 100.75 104.73\n", + "360.0 43.29 53.23 59.04 66.37 76.31 86.25 89.45 92.06 99.39 105.20 109.33\n", + "450.0 45.14 55.36 61.33 68.87 79.08 89.30 92.59 95.28 102.81 108.79 113.03\n", + "600.0 47.64 58.23 64.43 72.23 82.82 93.41 96.82 99.61 107.42 113.61 118.01\n", + "720.0 49.29 60.13 66.47 74.45 85.29 96.12 99.61 102.46 110.44 116.78 121.28\n", + "1080.0 54.41 64.97 71.15 78.94 89.50 100.06 103.46 106.24 114.02 120.20 124.58\n", + "1440.0 58.02 67.72 73.39 80.54 90.24 99.93 103.05 105.61 112.75 118.42 122.45\n", + "2880.0 66.70 77.41 83.68 91.57 102.29 113.00 116.45 119.26 127.16 133.42 137.87\n", + "4320.0 71.93 85.72 93.78 103.95 117.73 131.52 135.96 139.58 149.75 157.81 163.53\n", + "5760.0 78.95 95.65 105.42 117.72 134.43 151.13 156.50 160.89 173.20 182.97 189.90\n", + "7200.0 83.53 101.38 111.82 124.98 142.83 160.68 166.43 171.12 184.28 194.72 202.13\n", + "8640.0 85.38 104.95 116.40 130.82 150.38 169.95 176.25 181.40 195.82 207.27 215.39\n", + "Created the IDF-curves-plot and saved the file as \"ehyd_112086_idf_data\\idf_table.csv\".\n" + ] + } + ], + "source": [ + "! python -m idf_analysis -i ehyd_112086.parquet --export_table" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/example_heavy_rainfall_index.html b/examples/example_heavy_rainfall_index.html new file mode 100644 index 0000000..fb3fec7 --- /dev/null +++ b/examples/example_heavy_rainfall_index.html @@ -0,0 +1,2211 @@ + + + + + + + + Example for Heavy Rainfall Index — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + + + + +
+
+
+
+ +
+

Example for Heavy Rainfall Index

+

Based on the IntensityDurationFrequencyAnalysis, the HeavyRainIndexAnalysis enables the creation of location-dependent heavy rain indices according to the methods of Schmitt, Mudersbach and also those of Krüger and Pfister. Furthermore, the possibility of creating heavy rain index curves according to the Krüger and Pfister method was included and implemented for the other two methods. Thus, heavy rainfall index curves can be compared with each other. Furthermore, it is possible to assign +individual rain events to a heavy rain index using existing rain data.

+
+
[1]:
+
+
+
from matplotlib.colors import ListedColormap
+from idf_analysis.definitions import METHOD, SERIES, COL
+from idf_analysis.little_helpers import minutes_readable
+from idf_analysis.sww_utils import rain_events, event_duration, agg_events
+from idf_analysis.heavy_rainfall_index import HeavyRainfallIndexAnalyse
+import pandas as pd
+import numpy as np
+import matplotlib.pyplot as plt
+from os import path
+
+%matplotlib inline
+plt.style.use('fast')
+
+
+
+
+
Implemented Methods for the HeavyRainIndexAnalysis:
+
SCHMITT = ‘Schmitt’
+
KRUEGER_PFISTER = ‘KruegerPfister’
+
MUDERSBACH = ‘Mudersbach’
+
+
+
[2]:
+
+
+
hri = HeavyRainfallIndexAnalyse(method=HeavyRainfallIndexAnalyse.METHODS.KRUEGER_PFISTER,
+                                series_kind=SERIES.PARTIAL, worksheet=METHOD.KOSTRA, extended_durations=True)
+
+
+
+
+
[3]:
+
+
+
cmap = ListedColormap([(1,1,1)] + list(hri.indices_color.values()))
+
+
+
+
+
[4]:
+
+
+
data = pd.read_parquet('ehyd_112086.parquet')
+
+
+
+
+
[5]:
+
+
+
output_directory = 'Ergebnisse'
+
+
+
+
+
[6]:
+
+
+
hri.set_series(data['precipitation'])
+
+
+
+
+
[7]:
+
+
+
hri.auto_save_parameters(path.join(output_directory, 'idf_parameters.yaml'))
+
+
+
+

Heavy rainfall index-matrix is created with regard to the individual procedures for SRI generation

+
+
[8]:
+
+
+
hri.interim_sri_table().style.background_gradient(cmap=cmap, vmin=1, vmax=12)
+
+
+
+
+
[8]:
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Return Period in a1235102025305075100
duration in min           
5.000001111111
10.000011111222
15.000011122223
20.000111222233
30.000111222334
45.001112233445
60.001112333455
90.001112334456
120.001112334556
180.001112344566
240.001122344566
360.001123444567
540.001123445677
720.001123445678
1080.001123455678
1440.001223455678
2880.011234556789
4320.0112346678910
5760.01123567891112
7200.012235788101112
8640.012235789101212
+
+

An auxiliary table must be generated for the creation of the heavy rain index-curves. Here, the rainfall heights are shown depending on the duration and the heavy rain index.

+
+
[9]:
+
+
+
hri.result_sri_table().style.background_gradient(cmap=cmap, vmin=0, vmax=700).format("{:.1f}")
+
+
+
+
+
[9]:
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SRI123456789101112
duration in min            
5.017.925.330.935.739.943.847.350.553.656.559.261.9
10.022.531.939.145.150.455.259.763.867.671.374.878.1
15.025.536.144.251.157.162.567.672.276.680.784.788.5
20.027.739.248.055.562.067.973.478.583.287.792.096.1
30.031.043.853.661.969.275.881.987.692.997.9102.7107.2
45.034.348.659.568.776.884.190.897.1103.0108.6113.9118.9
60.036.952.263.973.882.590.397.6104.3110.6116.6122.3127.7
90.038.053.765.875.984.993.0100.4107.4113.9120.0125.9131.5
120.038.854.867.177.586.794.9102.5109.6116.3122.6128.5134.3
180.039.956.469.179.889.297.7105.6112.9119.7126.2132.3138.2
240.040.757.670.681.591.199.8107.8115.2122.2128.8135.1141.1
360.042.059.372.783.993.8102.8111.0118.7125.9132.7139.2145.3
540.043.261.174.886.496.6105.9114.3122.2129.6136.7143.3149.7
720.044.162.476.488.398.7108.1116.8124.8132.4139.6146.4152.9
1080.044.763.277.489.399.9109.4118.2126.4134.0141.3148.2154.8
1440.044.362.676.788.699.0108.5117.2125.3132.9140.1146.9153.4
2880.047.066.581.494.0105.1115.1124.3132.9141.0148.6155.9162.8
4320.051.272.488.7102.4114.4125.4135.4144.8153.5161.9169.8177.3
5760.055.278.095.5110.3123.3135.1145.9156.0165.5174.4182.9191.1
7200.056.980.598.6113.8127.2139.4150.6160.9170.7179.9188.7197.1
8640.058.783.1101.7117.5131.3143.9155.4166.1176.2185.8194.8203.5
+
+

Using heavy rainfall index curves, the necessary rainfall heights can be read off depending on the respective index.

+
+
[10]:
+
+
+
hri.method = hri.METHODS.KRUEGER_PFISTER
+fig, ax = hri.result_sri_figure()
+ax.legend(loc='upper left')
+ax.grid(color='grey', linestyle='-', linewidth=0.3)
+ax.set_ylim(0, 230)
+old_labels = ax.get_xticklabels()
+old_labels[2] = ''
+old_labels[5] = ''
+old_labels[19] = ''
+ax.set_xticklabels(old_labels)
+handles, labels = ax.get_legend_handles_labels()
+ax.legend(handles[::-1], labels[::-1], title='SRI', loc='upper left')
+plt.savefig("kruegerpfister.svg")
+
+
+
+
+
+
+
+../_images/examples_example_heavy_rainfall_index_15_0.png +
+
+

Heavy rain index allocation of a specific rain event

+
+
[11]:
+
+
+
events = rain_events(hri.series, min_gap=pd.Timedelta(days=2))
+events[COL.DUR] = event_duration(events)
+events[COL.LP] = agg_events(events, hri.series, 'sum').round(1)
+events[COL.LAST] = events[COL.START] - events[COL.END].shift()
+
+hri.add_max_return_periods_to_events(events)
+
+events = events[events[COL.LP] > 10]
+events = events[events[COL.MAX_PERIOD] > 2]
+
+events.sort_values(COL.LP)
+
+
+
+
+
+
+
+
+calculating rainfall_sum data-frame: 100%|██████████| 21/21 [00:00<00:00, 163.22it/s]
+calculating return_periods data-frame: 100%|██████████| 21/21 [00:00<00:00, 58.97it/s]
+
+
+
+
[11]:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
startenddurationrain_sumlast_eventmax_return_periodmax_return_period_duration
402008-07-20 17:43:002008-07-21 08:57:000 days 15:14:0028.02 days 02:48:002.8310205760.0
362008-06-23 19:50:002008-06-24 19:48:000 days 23:58:0035.82 days 21:52:005.44279815.0
962009-08-27 19:52:002009-08-29 13:25:001 days 17:33:0055.14 days 23:06:0019.71872520.0
882009-07-18 08:55:002009-07-18 13:19:000 days 04:24:0058.02 days 01:56:003.379539240.0
952009-08-21 19:49:002009-08-22 20:46:001 days 00:57:0064.24 days 03:04:003.97573520.0
4332016-05-30 12:38:002016-06-06 12:55:007 days 00:17:0066.44 days 17:43:006.7937885.0
972009-09-04 00:31:002009-09-05 01:32:001 days 01:01:0069.85 days 11:06:002.6056741080.0
1932011-07-27 20:37:002011-08-04 07:45:007 days 11:08:0070.53 days 05:28:0012.73245220.0
3912015-07-08 11:50:002015-07-09 00:26:000 days 12:36:0077.88 days 13:52:005.981540720.0
3312014-05-07 16:49:002014-05-18 20:03:0011 days 03:14:00109.94 days 03:29:002.7988254320.0
3022013-08-24 01:33:002013-08-29 08:20:005 days 06:47:00114.19 days 12:51:003.5438552880.0
392008-07-12 22:10:002008-07-18 14:55:005 days 16:45:00122.82 days 11:12:006.296355120.0
2442012-07-09 18:49:002012-07-16 05:43:006 days 10:54:00123.15 days 23:07:003.7205308640.0
4412016-07-21 22:28:002016-07-28 14:14:006 days 15:46:00136.65 days 00:03:004.6637868640.0
2872013-05-02 02:45:002013-05-07 21:38:005 days 18:53:00148.29 days 05:06:0032.6024892880.0
+
+
+
+
[12]:
+
+
+
hri.add_max_return_periods_to_events(hri.rain_events)
+
+
+
+
+
[13]:
+
+
+
hri.rain_events.sort_values('max_return_period', ascending=False).head()
+
+
+
+
+
[13]:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
startenddurationrain_sumlast_eventmax_return_periodmax_return_period_duration
7982013-05-07 20:57:002013-05-07 21:38:000 days 00:41:002.00 days 08:16:0032.6024892880.0
7972013-05-05 20:46:002013-05-07 12:41:001 days 15:55:00119.60 days 17:29:0030.5853042880.0
2892009-08-28 23:41:002009-08-29 00:42:000 days 01:01:0049.31 days 03:44:0019.71872520.0
5662011-08-03 19:52:002011-08-04 07:45:000 days 11:53:0054.71 days 23:09:0012.73245220.0
7992013-05-10 17:55:002013-05-10 22:21:000 days 04:26:003.92 days 20:17:007.4121518640.0
+
+
+
+
[14]:
+
+
+
event = hri.rain_events.loc[797]
+
+event[COL.START] = pd.to_datetime('2013-05-06 20:00:00')
+event
+
+
+
+
+
+
+
+
+/home/markus/.local/lib/python3.8/site-packages/pandas/core/series.py:1056: SettingWithCopyWarning:
+A value is trying to be set on a copy of a slice from a DataFrame
+
+See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
+  cacher_needs_updating = self._check_is_chained_assignment_possible()
+
+
+
+
[14]:
+
+
+
+
+start                         2013-05-06 20:00:00
+end                           2013-05-07 12:41:00
+duration                          1 days 15:55:00
+rain_sum                                    119.6
+last_event                        0 days 17:29:00
+max_return_period                       30.585304
+max_return_period_duration                 2880.0
+Name: 797, dtype: object
+
+
+
+
[15]:
+
+
+
rainfall_sum_frame = hri.rainfall_sum_frame[event[COL.START]:event[COL.END]]
+return_periods_frame = hri.return_periods_frame[event[COL.START]:event[COL.END]]
+
+
+
+
+
+
+
+
+calculating rainfall_sum data-frame: 100%|██████████| 21/21 [00:00<00:00, 171.82it/s]
+
+
+
+
[16]:
+
+
+
rainfall_sum_frame.\
+    max().\
+    rename('max. Regensumme').\
+    to_frame().\
+    rename(minutes_readable).\
+    style.bar(vmin=0, vmax=100).format("{:.1f}")
+
+
+
+
+
[16]:
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 max. Regensumme
5 min9.9
10 min16.3
15 min21.9
20 min28.2
30 min40.7
45 min46.3
60 min57.0
1.5 h69.6
2 h74.3
3 h76.5
4 h78.7
6 h89.6
9 h92.8
12 h93.0
18 h96.4
1 d98.2
2 d119.6
3 d136.0
4 d136.0
5 d143.2
6 d146.2
+
+
+
[17]:
+
+
+
return_periods_frame.\
+    max().\
+    rename('max. Wiederkehrperiode').\
+    to_frame().\
+    rename(minutes_readable).\
+    style.bar(vmin=0, vmax=100).format("{:.1f}")
+
+
+
+
+
[17]:
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 max. Wiederkehrperiode
5 min1.4
10 min1.5
15 min1.9
20 min3.2
30 min7.7
45 min6.0
60 min9.3
1.5 h19.1
2 h21.6
3 h17.9
4 h16.4
6 h24.6
9 h20.8
12 h16.2
18 h15.8
1 d17.7
2 d30.6
3 d25.0
4 d10.7
5 d10.1
6 d8.6
+
+
+
[18]:
+
+
+
sri_table_event = pd.DataFrame(index=hri.duration_steps)
+
+hri.method = hri.METHODS.KRUEGER_PFISTER
+sri_table_event[hri.METHODS.KRUEGER_PFISTER] = hri.get_event_sri_max(event[COL.START], event[COL.END])
+
+hri.method = hri.METHODS.MUDERSBACH
+sri_table_event[hri.METHODS.MUDERSBACH] = hri.get_event_sri_max(event[COL.START], event[COL.END])
+
+hri.method = hri.METHODS.SCHMITT
+sri_table_event[hri.METHODS.SCHMITT] = hri.get_event_sri_max(event[COL.START], event[COL.END])
+
+
+
+

Specific rain event with allocation of heavy rain indices depending on the method and duration.

+
+
[19]:
+
+
+
cmap = ListedColormap([(1,1,1)] + list(hri.indices_color.values()))
+_df = sri_table_event.astype(int).copy()
+_df['max. Wiederkehrperiode'] = return_periods_frame.max()
+_df['max. Regensumme'] = rainfall_sum_frame.max()
+_df.rename(minutes_readable).style.\
+    background_gradient(subset=[hri.METHODS.SCHMITT,
+                                hri.METHODS.KRUEGER_PFISTER,
+                                hri.METHODS.MUDERSBACH], cmap=cmap, vmin=0, vmax=12).\
+    bar(subset=['max. Wiederkehrperiode', 'max. Regensumme'], vmin=0, vmax=100).format("{:.1f}", subset=['max. Wiederkehrperiode', 'max. Regensumme'])
+
+
+
+
+
[19]:
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 KruegerPfisterMudersbachSchmittmax. Wiederkehrperiodemax. Regensumme
5 min1111.49.9
10 min1211.516.3
15 min1211.921.9
20 min1323.228.2
30 min2437.740.7
45 min2436.046.3
60 min2539.357.0
1.5 h36419.169.6
2 h47421.674.3
3 h46417.976.5
4 h46416.478.7
6 h47424.689.6
9 h47420.892.8
12 h47416.293.0
18 h47415.896.4
1 d57417.798.2
2 d68630.6119.6
3 d78525.0136.0
4 d57410.7136.0
5 d57410.1143.2
6 d5738.6146.2
+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/examples/example_heavy_rainfall_index.ipynb b/examples/example_heavy_rainfall_index.ipynb new file mode 100644 index 0000000..be2fa7f --- /dev/null +++ b/examples/example_heavy_rainfall_index.ipynb @@ -0,0 +1,2315 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "# Example for Heavy Rainfall Index" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "Based on the IntensityDurationFrequencyAnalysis, the HeavyRainIndexAnalysis enables the creation of location-dependent heavy rain indices according to the methods of Schmitt, Mudersbach and also those of Krüger and Pfister.\n", + "Furthermore, the possibility of creating heavy rain index curves according to the Krüger and Pfister method was included and implemented for the other two methods. Thus, heavy rainfall index curves can be compared with each other. Furthermore, it is possible to assign individual rain events to a heavy rain index using existing rain data." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from matplotlib.colors import ListedColormap\n", + "from idf_analysis.definitions import METHOD, SERIES, COL\n", + "from idf_analysis.little_helpers import minutes_readable\n", + "from idf_analysis.sww_utils import rain_events, event_duration, agg_events\n", + "from idf_analysis.heavy_rainfall_index import HeavyRainfallIndexAnalyse\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from os import path\n", + "\n", + "%matplotlib inline\n", + "plt.style.use('fast')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Implemented Methods for the HeavyRainIndexAnalysis: \n", + "SCHMITT = 'Schmitt' \n", + "KRUEGER_PFISTER = 'KruegerPfister' \n", + "MUDERSBACH = 'Mudersbach'" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "hri = HeavyRainfallIndexAnalyse(method=HeavyRainfallIndexAnalyse.METHODS.KRUEGER_PFISTER,\n", + " series_kind=SERIES.PARTIAL, worksheet=METHOD.KOSTRA, extended_durations=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "cmap = ListedColormap([(1,1,1)] + list(hri.indices_color.values()))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "data = pd.read_parquet('ehyd_112086.parquet')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "output_directory = 'Ergebnisse'" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "hri.set_series(data['precipitation'])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "hri.auto_save_parameters(path.join(output_directory, 'idf_parameters.yaml'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Heavy rainfall index-matrix is created with regard to the individual procedures for SRI generation" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Return Period in a1235102025305075100
duration in min           
5.000001111111
10.000011111222
15.000011122223
20.000111222233
30.000111222334
45.001112233445
60.001112333455
90.001112334456
120.001112334556
180.001112344566
240.001122344566
360.001123444567
540.001123445677
720.001123445678
1080.001123455678
1440.001223455678
2880.011234556789
4320.0112346678910
5760.01123567891112
7200.012235788101112
8640.012235789101212
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hri.interim_sri_table().style.background_gradient(cmap=cmap, vmin=1, vmax=12)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An auxiliary table must be generated for the creation of the heavy rain index-curves. Here, the rainfall heights are shown depending on the duration and the heavy rain index." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SRI123456789101112
duration in min            
5.017.925.330.935.739.943.847.350.553.656.559.261.9
10.022.531.939.145.150.455.259.763.867.671.374.878.1
15.025.536.144.251.157.162.567.672.276.680.784.788.5
20.027.739.248.055.562.067.973.478.583.287.792.096.1
30.031.043.853.661.969.275.881.987.692.997.9102.7107.2
45.034.348.659.568.776.884.190.897.1103.0108.6113.9118.9
60.036.952.263.973.882.590.397.6104.3110.6116.6122.3127.7
90.038.053.765.875.984.993.0100.4107.4113.9120.0125.9131.5
120.038.854.867.177.586.794.9102.5109.6116.3122.6128.5134.3
180.039.956.469.179.889.297.7105.6112.9119.7126.2132.3138.2
240.040.757.670.681.591.199.8107.8115.2122.2128.8135.1141.1
360.042.059.372.783.993.8102.8111.0118.7125.9132.7139.2145.3
540.043.261.174.886.496.6105.9114.3122.2129.6136.7143.3149.7
720.044.162.476.488.398.7108.1116.8124.8132.4139.6146.4152.9
1080.044.763.277.489.399.9109.4118.2126.4134.0141.3148.2154.8
1440.044.362.676.788.699.0108.5117.2125.3132.9140.1146.9153.4
2880.047.066.581.494.0105.1115.1124.3132.9141.0148.6155.9162.8
4320.051.272.488.7102.4114.4125.4135.4144.8153.5161.9169.8177.3
5760.055.278.095.5110.3123.3135.1145.9156.0165.5174.4182.9191.1
7200.056.980.598.6113.8127.2139.4150.6160.9170.7179.9188.7197.1
8640.058.783.1101.7117.5131.3143.9155.4166.1176.2185.8194.8203.5
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hri.result_sri_table().style.background_gradient(cmap=cmap, vmin=0, vmax=700).format(\"{:.1f}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using heavy rainfall index curves, the necessary rainfall heights can be read off depending on the respective index." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAEYCAYAAAC5q4bCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAClpklEQVR4nOyddZgcVdaH31vVMj3uk5EkE3dXSII7LO4sBAjOLm4LLLrILm4fi8tiCwsLLA5BQ9zdM0kmmYxre1Xd74/bY5lJMpZMpN7n6adaqm/d6pn+1elzjwgpJTY2NjY2+ydaZ0/AxsbGxmb3YYu8jY2NzX6MLfI2NjY2+zG2yNvY2Njsx9gib2NjY7Mf4+jsCXQkKSkpskePHnvseIZhAOBwtP1jbO0YnXHMjhjDPubuOV5HjLGvHrO17K3nuat9DMNg0aJFJVLKtNbMtZb9SuS7du3K3Llz99jxSktLAUhJSdljY3TGMTtiDPuYu+d4HTHGvnrM1rK3nueu9iktLSU1NXVja+bZENtdY2NjY7MfY4u8jY2NzX6MLfI2NjY2+zH7lU++OcLhMPn5+QQCgQ4f2zRNAIqKinbbGFFRUeTk5OB0Ott8DBsbmwOX/V7k8/PziYuLIzc3FyFEh469u1frpZSUlpaSn5/PnowasrGx2X/Y7901gUCAlJSUDhf4PYEQgpSUlN3yK8TGxubAYL8XeWCfFPha9uW529jYdD4HhMjb2NjYHKjYIt9CHnroIQYNGsTQoUMZPnw4s2bN4sgjj2TQoEEMGzaMMWPGsHDhwrr9c3NzKSkp6bwJ29jY2HAALLx2BDNmzOCLL75g/vz5uN1uSkpKCIVCALz11luMHz+eN954g1tvvZXvv/++k2drY2NjU49tybeAgoICUlNTcbvdAKSmppKVldVon4MOOogtW7Z0xvRsbGxsdogt8i3gmGOOYfPmzfTt25drrrmGX375pck+33zzDaeeeuqen5yNjY3NTrDdNS0gNjaWefPm8dtvv/HTTz9xzjnn8OijjwIwefJkQqEQNTU1jXzyNjY2NnsDtiXfQnRd57DDDuP+++/n+eef5+OPPwaUT379+vVMnjyZP//5z508SxsbG5vG2CLfAlatWsWaNWvqHi9cuJDu3bvXPRZC8OCDDzJz5kxWrlzZGVO0sbGxaRZb5FtATU0NkydPZuDAgQwdOpTly5dz3333NdrH4/Fw880389hjj3XOJG1sbGyawfbJt4BRo0Yxffr0Js9PnTq10eObb7657n5eXt7unpaNjY3NLrEteRsbG5v9GFvkbWxsbPZjbJG3sbGx2Y+xRd7GxsZmP8YWeRsbG5v9GFvkbWxsbPZjbJHfA1x66aWkp6czePDguuduvfVW+vfvz4gRIzjzzDOpqKjovAna2Njst9givwe4+OKL+eabbxo9d/TRR7N06VIWLFhAnz59eOSRRzppdjY2NnszgUKrXe+3RX4PcMghh5CcnNzouWOOOaauefe4cePIz8/vjKnZ2NjsxZQvDTLnj1XtGmOPZbwKIboCbwMZgARellI+I4RIBv4N5AJ5wNlSynKhmps+A5wA+ICLpZTz2zOH+fcVU7Es2J4hGiGlJHGgi1EPZLRrnDfffJNzzz23g2ZlY2OzP7D1By8zrt2GHte+cfakJW8AN0spBwLjgWuFEAOBO4CpUso+wNTIY4DjgT6R2xXAi3twrnuMRx55BIfDwQUXXNDZU7GxsdlLWP16BdOmFBDXy8XYd+LbNdYes+SllAVAQeR+tRBiBZANnAIcFtntLeBn4PbI829LKSUwUwiRKITIjIzTLKZpUlpa2uQ5wzAAGHp3UkeeUt24tdvW7vvWW2/xxRdf8PXXX2Oa5g7f2/C8ysvL2zPlThvDPuaeeX9bxthXj9la9tbzbLiPNCWrH/ez+f0gaYc7Gfywh6pARWun2YhOKVAmhMgFRgCzgIwGwr0N5c4BdQHY3OBt+ZHnGom8EOIKlKXfpCXf3sy3337LE088wbfffkt0dHRnT8fGxqaTMbySpXd4KfktTLeL3PS53oPQBQTaN+4eF3khRCzwMXCDlLJKud4VUkophJCtGU9K+TLwMsDw4cNlSkpKo9eLiorqFjh3F7sa/7zzzuPnn3+mpKSE3Nxc7r//fh555BGCwSAnnXQSoHrE/vOf/2z2/bqus/15bf+4LXTGGPYx98z72zLGvnrM1rI3nmeg0GLhtT4qV4UZ9XAavS9MaM/0GrFHRV4I4UQJ/LtSyk8iTxfWumGEEJlAUeT5LUDXBm/PiTy3z/H+++83eW7KlClAvftmd1+IbGxs9k7K54VZeocX0w+T3swk87CYDh1/jy28RqJlXgNWSCmfbPDS58DkyP3JwGcNnr9IKMYDlTvzx9vY2NjsSxg+i/n3FDNvSg2aW3DkJzkdLvCwZy35CcCFwBIhxMLIc3cCjwIfCiGmABuBsyOvfYUKn1yLCqG8ZA/O1cbGxma3UTTDz+xbCvFuMuh6npve13lIzHE3u69c5W/XsfZkdM00QOzg5SOb2V8C1+7WSdnY2NjsQcJei8WPlrL2zUpiuzs5/KNs9D6+He4f/KIYrl3frmPajmAbGxubPUDRDB+zbynCu9mgz5QEht6WgiNao7S0qchLS+J/ciO+v+fBUA9savtxbZG3sbGx2Y0YPsm8p4pZ+1YlsblOjvgom7Rxnh3uL70m1X9aQeiLEtxnZxC8K1UFj7cRW+RtbGxsdhOViw2W/sWLf6tF3ykJDLk9BYdnx/Eu5uYAVRcuwVzhJeaBXkRdlUOorKxdc7ALlO0Bmis1/NFHHzFo0CBcLhdz587txNnZ2NjsDqrWhlhwbQ0AR3yUzYj70nYq8OEZFVQcMw9rc4D494bguborDfOI2oot8nuA5koNDx48mE8++YRJkyZ10qxsbGx2F8Eyk18nb0VzwshXYnfqngGQH5ZRecYitAQHCd+OwnVkxyWJ2e6aPcAhhxxCXl5eo+cGDBjQOZOxsbHZrZhBybTLCggUmox8NRZPlr7Dfa3CIPKWTfBNJc7Dk4h7ZSBagrND53NAiXzNXWswltZ02HhSSvRBscQ/0rfDxrSxsdl3kVIy59ZCSuYEOPjFLkQPab60uZSS4DsFeO9fDz4Trs8g/i/9Va2aDuaAEnkbGxub3cmyp8vZ+N8ahtyeTNeTYiktbSry5jof1TetwpheieOgBIy/ZiB6uncs8P5wu+Z0QIl87EN9OnS8lpQYtrGxOTDI+281y54sI/esOAZc27SsuQxb+J/fjO+JPIRbI/bJvrgvyKSsfMfRM9a6MqLO+mSHr7eEA0rkbWxsbHYHxXP8zLmlkLTxUYx+NL1JVEx4XhU1N63CXO7F9Yc0Yh/ujdal+TIGtZhfriY85VO0dnpw7OiaPcB5553HQQcdxKpVq8jJyeG1117jv//9Lzk5OcycOZNTTjmFY489trOnaWNj0wZq8sL8flkBMTlOJrycie5qUD7dayIf2krl8fOR5WHi/jWY+NcH7VTgpWkRvv8nwmf+G9EzCf/XZ7VrfrYlvwdortQwwGmnnWaXGrax2YcJVZj8eslWpKXKBLuT6iNppNeESzbAEj9Rl2QRfXdPtLidf89lqY/wJZ9ifb8OffJwHE8fT423sl1ztJXFxsbGpg2YIcnvV23DuzHMYe9nE9fDVfeaNCyqLlsGS/3wXDdiz+m5y/Gs+QWEzvsIttXgeOFEHJeOVC942zdPW+RtbGxsWomUknl3FVP0u59xT6c3SnaSUlJz6xrCP5TBfVmIo3bd5cnxwQpCd/0KaTG4pl6MNrrjWpnaIm9jY2PTSlb+s4INH1Qx8Pokcs+Ib/Sa//GNBN8pwHNTdwLnxu9gBIXcWIH7+q9xfLsB7cieON88DZHasT2fbZG3sbGxaQVFU0MsfthLt5NjGXxzcqPXAv/aiu8febjP7UL0HbkEdlBcTIZMzGdmYDzyGzoQuvMg4u48AqF3fCyMLfI2NjY2LaRyicHSu7ykjIpi7BONQyVD35VQc+tqnEckE/tk3x0WFzN/3oBxw9fIVaVop/Sn5s4xyOy43SLwYIu8jY2NTYvY9ouP+VdV407RmPhqF/SoelEOz6ui6rLlOAbHEv/aQISzqWDLgmrCd3yP9eEyRM8knJ+eh35sb2Rp6U6Pq+UVt2vedpz8HqC5UsNlZWUcffTRDBgwgOOOO47y8vJOnKGNjc3OWP/vKn69eCuebJ1Rr8cRlVpvH5vrfFRdsAQtw0X8e0MRsdvZzoaF8fwsgsP+D+uzlTjuPgTXvKvQj+296wP/ZwaJ5zzbrrnbIr8HaK7U8KOPPsqRRx7JihUrOOKII3j00Uc7aXY2NjY7QkrJ0idLmXNLEekHeRj9ehxRGfWyaRWFqDx3MQAJHwxFS3c1er+2tJioEz7CuPU7tIO64pp3FY67DkVE7cKJ4gvCja/D9a9hDGhHWyhskd8jHHLIISQnN16g+eyzz5g8eTIAF154IZ9++mknzMzGxmZHWGHJnFuKWPZUOblnxXHIW1k4Yhtks9YYVJ2/GKsoRPx7Q9B7NY6KsRZvI+rszxBlAZzvn4nz0/PQeiVvf5imrMiHE/4GH82AG06i6tXL23UeB5RPPnzLt1iLCztsPCklYmg6jieOb/V7CwsLyczMxDAMunTpQmFhx83LxsamfYSrLX6/soDC3/wMujGJQTcmN1pIlWGLqsuWYyytIf7tIThHNg6VtNaWEvrDe8gYJ4H/nk70sNxdH1RKeO83uOd9iPPA+zfBpAGwC5/9rjigRH5vRQjRIW2+bGxs2o+vwOC3i7dSuTrEmMfT6XlOYwGXUlJz82rCU8uIfbIvrmMad3GS+VWETngXLEngw1OQOXG7PKaoCcBfX4HPZsMhA+HZKZC26ySqlnBAibzz8Y4tAtaeUsMZGRkUFBSQlpZGQUEB6enpHTgzGxubtlCxIsivkwsIV5kc8mYWXQ5tJjHpuSKC7xfhubU7URc2zkyVxV5CJ70DFX5c31yEt7ur6fu3wzFrLbEPfAJby+GO0+Ha40DrOE+67ZPvJE4++WTeeustAP71r39xyimndPKMbGwObAp/9/HjGVuQpuSIj3OaFXj5Vgn8XxHuC7oQfWtu49eqgoROfR+5sRLXJ+eijczc+QE3FsNlL5Bw+StgWvCfW+HPJ3SowMMBZsl3Fueddx4///wzJSUl5OTkcP/993PHHXdw9tln89prr9GtWzc++uijzp6mjc0BS94n1cy5pZDYHi4OeTuTmOzGfValYeH96zp4tQCOjif28cbJTtIfJnTGB8jFhTg/PBttYvcdH6wmAM99BS9/Bw4d35+OxX/RJFKyu+yWc7NFfg+wo1LDU6dOtUsN29h0IlJKVjxXzpLHykg/2MOEl7vgSmjceNuqMqi+bBnhn8rhklS4pQvCUW9ty7BJ+IKPkb9vwvnGaejH76ADnWXBf2bAI59AUSWccRD85XT8Lmt3nqIt8jY2NgcmlqEqSa5/r4rup8Uy5rEMdHfjAAgzz0/VBUsw1/uJfaof3uMb+9ilJQlf/jnW12twPHcC+jmDaZa56+De92FhHozoCa9dCyMj5Yd3FT1jmG08Q4Ut8jY2NgccYa/FjKu3UfCTjwF/SmLIbclNW/bNqKDq4qUgIf4/Q3FNSMLbQJCllBg3fo3176U4HjgCx2WjmhxHFFcR8+RX8OUC6JKoomZOG9div7uVl0/Un+9rz6naIm9jY3Ng4S8y+O3iAiqWBRn9aBq9Lmgaqhj4YBs1N61C7xZF/LtNE50AjPt+wnx5HvpNB+G4dULTA+WXknDh/6GVVsP1J6momZioFs1RSon5wRcYDz6P1s7CZbbI29jYHDB415tMvy6fYKnJxNczyToyptHr0pL4/rYe/3ObcR6SSNxrg9ASnU3GMZ6agfmP39GnjMTxtyObHmhLGZz1GKI6QOVb15A4aWiL5yhLygnf8Q+sH35HO3gkNXdfDYP6t/pca7FF3sbGZr8nWG6y5eMga57244jSOOKjbJKHNbaqpdek+poVhL4qIeriLGIe7t1sNUnHe8sx7vwZ7cyBOJ45vmkiY0E5nP0YlHupemkK5sCW154xp04nfPvfocqL4+4/oV96JrKdxQttkbexsdkvCZab5H9TQ/4XNRRO9yMNiO2rc+gbOcR2a2ydm1sDVF2wFHN5DTEP9Sbq8uxms9D1T1bjuv1ntGN743zt1KY14Asr4KzHoaQa3rsRMzexZZP1Bwj/5THM9/+H6N8L57tPofXbdV/YlmCL/B7imWee4ZVXXkFKyeWXX84NN9zQ2VOysdnvCJYpYd/8RQ1F0/1IE2K6Oeh3eSLxE03iBurEpjYW+PCCKqr+uBR8JvHvDsF1VEqTcaVpYdz7E1FPTMccn0XUe2ciXI1DLSmqhLMfh6IKePdGGNVrl5EzUkr06fNxPfYq5uZt6Feeh+OmKQj3rjNlW4ot8nuApUuX8sorrzB79mxcLhfHHXccJ510Er17t6CetI2NzU4JlJps+aaGzV/WC3tsdyf9r0ok58RYkga7EUJQ2ozgBj8tovrPK9HSXcR/PAxH/5gm+8gyP+GL/4v1/TrCFw4idP9EYqK389OXVME5Tyhf/Ls3wJhdf7etJaswHnmRqOnzsbIzcL3/DNr44W38FHaMLfJ7gBUrVjBu3Diio9UK/aGHHsonn3zCbbfd1skzs7HZNwmUGOR/4yX/yxqKZkSEPddJ/6uS6HpSLImDXDst+ielxP/kRnyP5uEYG0/8W4PRUptaz9bSQsJnf4TMr8Txwol4T2kmk7WsGs59AjaVwL+ug3F9dzp3a9NWjMdewfrfVEhOIHjLFIwzjyW6i53x2n7u+QCWb+qw4XQpkQO7woPn73S/wYMHc9ddd1FaWorH4+Grr75i9OjRHTYPG5sDgUCxQf7XXjZ/WUPxTD/SgtgeTvpfHRH2gTsX9lpkwKTmhlUEPy7CfXYGsU/2Q7ibLrCanywnfMXnEOfG9d1ktPE5Td0v5TVwzpOwoQjevA4O3nEUjCyrwHjubcx3PgVdR//ThTiuPB9vKNDaj6JVHFgi30kMGDCA22+/nWOOOYaYmBiGDx+Oruu7fqONzQGOv0gJe/6XNRTPUsIe19PJgGuTyDkplsQBLRP2WmRJmMo/LsKYW0X0XT3wXN+tyfulaWHc/zPmY78jxuXgeu9MRFYz5YIrvHDek7CuAN74s6r93uxJBDFe+BfGP98Drx/9nBNx3HAJIiNVvV5qi3zH8cC5HTqcGak705JUhSlTpjBlyhQA7rzzTnJycjp0LjY2+wv+IoP8r5SPvXhWACTE9XYy4M9JdD0xloT+rRN2UNa7/LEK/rYVo9wk7o1BuE9Ka7pfecT//t06FQP/xLEIdzMyWemD85+CVVtViYJDBzV7XP3nWbgefRmjuAztqAk4br8SrU9uq+ZOO0qaw4Em8p1IUVER6enpbNq0iU8++YSZM2d29pRsbNqN4bfwbzMoWxnG8EroHSA6y0FUqo7QWi7E/kKD/K9VVEzxbCXs8X2cDLo+iZwTY0no13pht6oNwj+UEvyyhPAPZeA1oYuTxP+NwDGsqWVuLSsifPaHyM2VOJ4/EceUkc2OK2oCcO1LsHwzvHINHDGk2f3M/3yN+7Z/YPXNxfV/D6CNaXlCVB0rF5Fwx0Wtf18DWizyQojRwF1A98j7BCCllG2Y+YHHGWecQWlpKU6nkxdeeIHExMTOnpKNzU6xwhJ/oYFvazO3AgP/1jDBsu0rKHoB0Fzg6eIgOstBdJaT6Mza+w48WQ7CURZWEFZ/XkH+FzUUz4kIe18Xg26IWOz93K2fc3GI0DclBL8qIfxrOYQkIs2J+4x0ApPcMC4GR2ZTgTf/u4Lw5Z8p//u3F6Ed1LX5A3iDxF3zOizNh5eugqOHNbub8a9PMf76JNa4YQSeuIOYnFY24w4F4aWH4JVH0OKSWvfe7WiNJf8ucCuwBNi9tTH3Q3777bfOnoKNTRMsU1K5xKBykcGmimJ8BUrE/VsN/EUmyMb7O+O1OsFOHuZW97MdGLE+HNEClz+mbozaW/FsP/5tBnIHXof4vi4G3ZishL1v6+PDzc0BQl8WE/yqBGNWJVigdY8iako27hPTcIyOR+iCYDMhlNK0MB74GfMfvyPGZuN6/6zm/e8AeUUkTPkn+ppt8OKVcNyIZnczXvkA46H/QzvqYLwPXA+tjXlfPBvuvhTWLoM//JGKK++BXjuP2NkZrRH5Yinl5209kBDideAkoEhKOTjy3H3A5UBxZLc7pZRfRV77CzAFMIHrpJTftvXYNjY29dRsDLPtNx+Fv/oonO4nXKlsNj1KuVqisx0kHBpdZ3UrUXcSneXAGdv8ClRpaRiAlJTYZl+3TEmw2Ky7ABSvqUSa0OfkNOL7tE4EpZSYq3xK2L8swVxSo+Y/MAbPTd1xn5iGPihml+4dWRFQ/vdv16JfMgLHU8c1738H+Goe3PQmmoDqZycTf2LTipNSSszn3sZ48jW0Ew/H+fRfoaqy5Sfm98Hz98JbT0J6Frz4JRx6AnIPNvK+VwjxKjAVCNY+KaX8pIXvfxN4Hnh7u+efklI+3vAJIcRA4FxgEJAF/CCE6CulbF9hZRubA5BQpUnRdD/bfvWx7Vcf3k3KpI7OcpBzXAwxIyySRjvI7Ju62xrKa7rA08WBp4uDlBEQXaokJD6lZQIvLYmxoLpO2K31fgAcY+KJvrcn7hNS0Xs20491B1jLi1T8+6YKHM+egH7ZyObPPWTAQ/+BV3+AET2ofOQcrKym7hMpJcbfX8L853topx+L8x+3I1rRCMixcDo8dhNsWgtnXQG3/APi9nwj70uA/oCTeneNBFok8lLKX4UQuS081inAB1LKILBBCLEWGAvM2NmbTNNsktVmmma7Gm7vjI4YtyVjNDyv8nYWK+qsMexj7pn3A5QVl1OzHNYt81M2M0zlUhMs0KMhaYyT7PM8pBzkJLq7hhCC8vJyfEBZWdtL2u6Oz0mGJcz1wveV8EMVFBlKscbGwoVZcEQ8ZoYTP+DHD6X+Fh1T/2od7ht/REY7CH54CtaYTCgra7K/tq2C2FvfxbloE/7zD8Z384mU11TD9nO3LFyPv47z318SPuNYQndcAZWVLTpPfcNKXC89RNzvX2Nmdqfm6U8wRh2iLi4d9J1vjciPkVL2a9fRmudPQoiLgLnAzVLKciAbaBh+kh95rglCiCuAKwCysrKa28XGZr9GWpKatSZlswzKZoUpnwtWANACJAzW6XFZFCkHOYkfrKM5d4+l3lFIvwW/V8P3VfBzNVSaECVgUhwcFQ+HxSMS2phjYkniX1hC1MvLMEdkEHz5WGRm8+4l528rib3r3xA2qX78AkLH7CC+xDRxPfQizs+mEr7gZEI3Xgwt+DWkbVpD9BuP4Zr6X2RUNGVnX4287A7wNC2r0F5aI/LThRADpZTLO/D4LwIPon4RPAg8AVzamgGklC8DLwMMHz5cpqQ0Li5UVFS02/undsT4OxtD13W2P6/tH7eFzhjDPmbHvN+7Ocy2aT6Kpvkp/N1PsFR5MuN6Ock62U3yOAe9jk1v0q+0I+YspUSWhrG2BjELglhbg8j1QfBaeLo70bLcaFlu9Ew3WqYb4dnxHFJSUrAqw4S+KyX0ZQmhn8rAZyESHLiOTcV1Qiquw5MR0W0Tdhk0sH7biPXlGjz/W4G2pQZ98nDczxxPTHP+d8OEJz6HZ7+EATnw0lXE9WpabiAlJQUZNgjf/DDW51PRr7sY942X7NDdVffZblwL/3wQ/vcOuKNgym2Un3IpMjGlQ/5Pm6M16jQeWCSEWI/yybc7hFJKWVh7XwjxCvBF5OEWoGEMU07kORubA5JgmUnh7z4Kf/dT+Fu9Xz0qXafLodFkTPSQMTGa6ExHnWuvNQJfizQlVnEIa2uw/hYRcnNrEGubuk9ou7AbHYjS8HmbLhKKJIcS/kw3emQr48MQlFT+mk94WgUYEi3DRdQ5XXCdkIpzQmKztdxbdA6lPqxv12J+sRrrh3VQHQKPA2tSDqG7DyZh8tjmxbioEq55GWasgvMnwQPngaf5NQMZDBH+8/1Y3/2G4/YrcVx9wc4nlb8B/vk3+OwtcDjhohthym2Qkt7uhdVd0RqRP66Z52Qzz7UYIUSmlLIg8vA0YGnk/ufAe0KIJ1ELr32A2e05Vmfz1FNP8eqrryKEYMiQIbzxxhtERbWsFZjNgYfhsyiepaz0wmk+KpaFAHDGaaSN99D3skQyJkQT38fZ5sVSq8ogPKMC+V0BLPZTVrQaqzCo4tka4hZoEavcOSoe7Q/qfq1wa1luyrVqhC5Ididgbgs1ujg0vEgYC6uRJeG6oc0eHjxX5eA6IRXHqPhWJVA1OpfVJVhfrMb8ag1yxmawJHSJRT97MNoJfdAO74HXVwXQ/Oc1faUS+OoAPHUJnN1MO79a/EHCNz2K9cssHPddj+PiM3a4qygpIPrNx+HLd0HT4fw/wWW3Q1pmm86zLbRG5NNonAxVS4sseSHE+8BhQKoQIh+4FzhMCDEcdbHIA64EkFIuE0J8CCwHDODafTmyZsuWLTz77LMsX74cj8fD2WefzQcffMDFF1/c2VOz2Uswg5LSBQE2TvVTNseganE5VlglFaWO9jDk1mQyJkWTNMSN5mibEEq/SXh2JeHfKghPK8dYUK1CKNwChkbjPCQJLdOlXC0NBFwk7/pCIkpVGKOIdeDo7YDeO450kUGL0pWFYEiSRma26SIlDQs5YzPml6uxvlyNXKsWTsXQDPTbJ6Kf2BcxIrPxRcPXzECWBc9/DY99Cj0y4IObof9OEpe8fqJufAhr/nIcf78Nxzkn7XjflYtIvPxYRGUZnH0lXP4XyGhlUlQHsMeSoaSU5zXz9Gs72f8h4KHWHmdvxTAM/H4/TqcTn89nLxIf4FhhSdmiAEXT/RTN8FMyN4AZkKBBXH9dWeoTo0kdE4XD00a3RdjCWFBN+LdyJexzKpWbxSFwjIjDc2N3nJMSqeppIFwacbvJJ7w9wq0hcpQbpFXFxSoDWN+vU8L+7VooD4BLRzs0F/3asegn9EV0a0XYYVkNXP8q/LgUThkL/7gIYnf869patR7PNfcg8vJxPn03+ilH73jsWT/Bn09FemKoenUqiWMntXxe2yGqi3e9007YY8lQewPh+5/FWr62w8aTUiIG9sJx3w073S87O5tbbrmFbt264fF4OOaYYzjmmGM6bB42ez+WISlfGqRohp+i6X5KZvsxfMrbmTDARa8L4kk/OBq9jw9nvNamRThpSsylNchvi2G2l7K5y5FeEwTog2PxXJaNc1ISjvEJaLH1X32xm33C7cHaWIEVsdatXzeCYUGKB+3Evugn9EU7qicirvXlD5i3Dq56STX7ePgCuOiwHUbFSCkx3/4E46EXIS6a4DN/xXNSM827a/n6Q7jjQujWm6q/v4/VVuvdMuH7f5L4wZ1te3+EPZkMdcBSXl7OZ599xoYNG0hMTOSss87inXfe4Y9//GNnT81mNyEtScXyEEXTfRTN8FM8K0C4Wv0Aju/jJPeseNIP9pA+3oM7uX6BtLQVZWelKTGX1RD+vULdZlQgqyJezR5u3Gdn4JyUhHNCIlqyc+eD7SVISyLnbsX8chXWV2uQS4sAEP1T0a8bh35iP8S47Ka9VVt8AAmvfA9/+w9kJcFnd8DQ3B3vXlJO+LZHsX6cgXb4eLx3XgnJiTse/1/PwqM3wIgJ8MLnWEYbK8CsmQWvXwMb5mP2nQS0vSzKHkuG2htw3ntdh47X0mSoH374gR49epCWpkqbnn766UyfPt0W+f0IaUkqV4XYNDVA+RyDyvmVhCrU1yQ210nXk2PJOMhD2kEePOltC7mVlsRc7iU8rZzw9ArC0yuRlZFy1z09uE9NxzkhkeoBEpHuJHY3ul9kdRC5tRpZUA1bq3GuLQRfGCM3DZEZh8hSNzJiEY6dC7L0hrB+3ID11WrMr9dAoRd0gTahG/rfj0Y7sS9ar+R2z1mUVBPz8Kfww1I4djg8eQkk7jgu3fx5FuFbHoGqGhz3XY8++fRmk6YA5dt/6i/w2j/gqNPgH+9ClGeXPV6bUF0KH9wJP74CiZlw3QdU9T0SHmxaFrml7A3JUPs93bp1Y+bMmfh8PjweD1OnTrU7Q+3jSEtSsTJE8Qw/RTP9FM/yEypXoh6VqZF9TIyy1A9WYY1tPYa50kt4WkVE1CuQ5RFRz43CdVIqzonKUtcz610WNe1wv8iQCdtqlIBvrUIW1NRtiYi63FoNNaFG73MBUoCxfbydJiA9pk70ay8AjngBIZPQrwVYP22AgAEJbrRjeqOf0Aft2N6IJE+bzwMA04KFG+DHJfDjEpIXb0TqGvz1LLjymB27Z4IhVaLg9Y8Q/XrgfOcJtP69dnycUAj+OkXFvp93Ddz5LLS2KZBlwY+vwvt3gLcCTrgRzrwPPHGtv1BsR2cnQx0QjBs3jjPPPJORI0ficDgYMWIEV1xxRWdPy6YVWKakYnmQ4pkBimtFPVLYK6abg6yjYkgf78HZP4Anu2nyWkuQlkSuCsCcGqoWFhCeUYmMFP7SukfhOi4V58REJerZ7Q+/lVuqsH7biOuH1WiLiggU+aHI23RHpwa11vmgdLSje9UJNtlqW+4Og8dBshlVdyGouyDUPs6rwJqxGUr91F6SZG4i+pSRaCf1RZvQDeFsZ8e00mr4eSn8tBR+Xqba82kCRvbE96djCB01mMQxA3f4dmtNHuHrHkCuWIs++XQcf7kaEbUTn7+3Gm44E37/Dq77G1x5Z4syXuuQEsfq34j+/CHYMBf6T4JLX4BuzdeobwutTYZaKITYQAclQx1I3H///dx///2dPQ2bFlK7ULrxpwDlcw0qF1YSroq4X7o7yT4uhvSDPKSN9xCTXe/vrq3G2BKkYWEu8xKeEbHUZ1ZCxFI3cty4jkqut9S7doCob65U2Z+/bcT6bRNynXI9OOJcmCMz0Md2VS6WBu4WkRkHKdG7jl+PWJsiLRbRJRZG7DgOXAYMyldsBlOSNKpH+4qiWRYsylOi/uMSWJin/O4pcaqZx5FD4JCBkBSLfycWsZQS853PMP72PMR4cL72KPqRB+/82CWFcPWJsHIhPPganNGKZH3Lgnmfw2ePkrB2FlZ8OlzzFky6sHUXiRbQ3mQoG5v9AsNvUbYwSPFsZaWXzgvURb9Ed9foelIsaePVQmmb3S8hC2NRtRL0GZUYsyqRNWqhVMtVlnpwqAPGxJA0tEu7K0JaGyuQv23E+lUJu8yrUC8kRqFN7IZ+xSi0Sd0pz3aAru1WH35DRJQD2S1e3W/LOZbVwK/LVOjjz0uV9S4EDO8BN58Mhw+God1Ba9nirCyrIHzb37F++B1t0hicT9yJSN/FZ7FxLVxxLJRsg+c/g0NPbNncjTD8/h58/nfYsgLSe1Bz7mMEx51LSubuaQna4v9WKeXG3TIDG5tOIFxtUTJXRb0Uz/ZTtiiAFQIEJPR3kXtWPGnjonD0CeBOa2NIo98kPL8KY0alstbnVIE/Uru9bzTuM9JxHpyI46B6n3qo1iJubQ9TKZFrSrGmbcL14xr0mVsJbVEJSiR7lKhfOxZtUnfE4PTG0Sl7cQgloKzepZuUqP+4BBasVxmtSbFw+CA4fAgcNgiSd9DsYyeY0+YSvukhqKjCcfef0C89E7GLi4O+Yj7ccYGa1+s/wrBxuz5Q0Kd87l88DqWbodtQ+PN7MP4sghWtqDnfBuwerzYHBIFSk5KIlV48O0DFsiDSAuGApCFu+l6aSNo4D6mjo3AlNgxpDO1k1MZYNQZyWjXM9VKxYBPGgiqVfCRUQ4uoP2biPCgR5/gEtLTWd0BqiDQt5JJCrGmbsH7fhDV9c50/3ZHqwRybievmiWiTuiEGpre5XECnUeGFX5crUf95KRSrkgQMz4XrT1KumGG50MZQShkKYzzxKuZL7yN6d8f5xj/QBvXZ5fucv31F3INXQ3IavPIt5O68Y5PwVRL1yyvwy6tQXQL9JsJl/4Thx3e4W2ZH2CJvs1/i3RKmYGqQigUG1YtqqFqjfOW6W5AyKoqB1yWRNs5DysgoHNFtEwqrOER4ZiXhWZUYMyswltaoui86MDQOz+U5OA5KwDkuAS2xfXHqMmgg5xUoQf99k1rArFLpKqJ7ItrRvdAmdEOb2I3yJAlC7DH3CwC+IMIXgoREcLRh8VRKWLa53rc+b52KjkmMhkMHK1E/bBCkxrd7qta6TYSvfwC5dDX6BafguPtahGcXax5VFfDoDcR/+hZG36E4XvkW0ppWp2zE5qUkPHoSeulGGHEinHIH9J/Y7vm3FlvkbfZ5LFPFqJfM9lMyJ0DxnAD+ArWA6YgVpI31kHtmPGljo0gaGoXuakOtFCmx8gKEZ1ZERL0Sc12kSUWUhmNkHJ7ru+MfIGBENInd09t1TrImhDUrXwn6tE3IOVtUmCEgBqSinzMY7eCuKiKl63ap/B3lfpESKn2qOmNhJRRVqPvbItsGz6d4I/mRmlCLnukJkJEIGQmQnhh5nFD/vG4ggmGYOa/eWt9WocYY0g3+dILyrY/o0baLxg7Ox/HpD4SeeB3cLpwvPYR+bAvKDfzyFdx7OZQW4rvoJvyTbyZlVwI/7wt47jyEK5rKm78iYczxHXMObaDFIi+EcANnALkN3yelfKDjp2Vjs2NqF0lL5vgpnhOgdF59Nqmni07qGA9pY6Nw9gkS20cnNT211ceQhoW53Iv8qQTm+SifvwqrULluRKIDx9gE3Bdk4hyfgGNoHMKtfg0E2iiwsrAGa8ZmXD+tQZtVQHBpMZgSNIEY3gX98lFoE7uhHdwNkdryNne7pNqP8/dV6Cu2qpK8DcW8qBICzUQLRbvrRXtwV8gYgjfWiYx2EeszG18Ulm1SrharcQB9CiA1oZ6P98Ahg5S1fvhgNXYHIb0+rJkLsX6bg+fnmWh5W9AOHonzybsQXXaRYFRdCX+/CT55HXoNhOc/w5/ZYxcHlMrv/t7tkDuCyilvYiV1bp2q1ljynwGVwDwalDWw2TWrVq3inHPOqXu8fv16HnjgAW644YbOm9Q+RKDYoGRugPxpPioWGlSvUBUaARL6ueh2SiypYz2kjYkiOttRt2i5fSvInWHVGBhzqwjPrsSYXYUxt0rVfQHIdOKcmIRjXALO8Qno/WLa5eOWUiJXlWDNyMeavgk5I78+nNGtYw3PQL9lghL1cTltq82yIwrKYc5amLMGZq2BFfnE1wpwvEcJbHoijOqlLO6GFnh6InRJbLaIV+3FrVkXkWmpGjENxN+XVwCmJPqYkepYHWStS9NELlmF9dsczN/mIucvVY1AotxYIwYSvuBk4qecs8vFVX7/TiU4FW1V1SOvvRdc7p3/SgoH4ZUr4de3YPxZcPWbWDU7b0nYEvSKBe16f2tEPkdKaYdRtoF+/fqxcOFCQPVrzc7O5rTTTuvcSe2lWKakanWIkrkBSuYFKJ0boGajUnThhITBDvpdkUjqGOVPdye1TRzM/ADGbOVPD8+uwlxeo4p1aKAPiMF9dgaOcQnU9LEQ2a52VWis86fP2Iw1YxPWzPz6fqSp0WgHdVUJQQd3pbybC1w6MR3hT7csWLsNZq+B2RFh31SiXvO4lLjecBJV/TMwBncluftuKoOraxHXTSJEcnxqY9ajO+A8rc1bsX6dgzVtLtb0+VBZDYAY3Bf9snPQJo1BGzUYrzdSDnlnAl9TBY/dAh+9Aj37w3szYOjYXU+iohCePB1WT1eZqqf/VYVwtkfka/JgwV0kbniv7WPQ+ozXIVLKJe064gHO1KlT6dWrF927d+/sqewVhGssShcol0vJHD+lC4J1rpeoNJ2UUVH0ujCe1NFRyCwvmku0OpyxLulodmWdpW5tjfwYjdZwjo7HdVN3nGMTcIyOR4ur/1p42+J+KQ9gzlytRH36ZuT8rRBUvwpEn2RV6/zgbmgHd0X0Tm4cLtkef7o/BIvziPp1Cc4FebBok4pSAUiNg7F94dIjYWwfGJgDTnWe4b09hHI7ZGU11owFWL8pYZcbI03jMtPQj52ENnEM2oRRiJTExm+MiPwOmf6Dst4L81XXpj/dr1r07YqNi+Cxk6GqGG74UFnx7SFUAUsehhXPgNDw9boReKrNw7VG5CcCF+/TGa+P3KCy0zoIXUpkv2Fw17Mtfs8HH3zAeec1V1p//0dKSc2mcJ2FXjLPT+WKENKiLj692ymxpI6OInW0h5hujkYCWFraXNeHpliVYeVu+bUQFngpXeQHn7pwaFluHGPjcY5NwDk2AX1QzC4LaO3qnOTqUqyZ+chZ+Xim5aGtKScM4NQQIzLRrxqjFknHd0Wkd2Cj5sIKmLtOuV/mroOlGyFsEgOY3VPhuBEwtrcS9dz0PRay19HIsIFcuBzzt7lYv81BLlqhfqXEeNDGj0C/+Ay0SWMQvbq1LbnKWw2P3QofvgQ9+sG7v8Ow8S1775xP4fk/Qkwi3Pcb9BzV+uPXYoZg9Yuw6AEIlUOvyTD8QfwBD3tK5DtveXg/IRQK8fnnn/PII4909lT2KP4ig6X3eCmbHSZUXAGoqJeUEVEMvD6J1FEekke4ccW3oSepJTHX+jDmVBGeU4kxtwpzVeRioAH9o4g6LxPnuHgcYxPaXfNFekNY87YiZ+ZjzczHmpUPZZGf5ElRWMPTMU7vS+xR/RCjshCeDirxa1qwcosS9HkRUa91vUQ5Vcz4FUfD6N6U9UxGJsXstsbQuxspJXJDPtZvs7F+m4s1cwHU+EDTEEP7o1/7R/SJoxEjBiFc7fx8Z/4Id18KBZvgklvgzw+o6pG7niR8+gj8+y7oNRZu+RSS2tjST1q4tn0Bvz4E1esg8ygY9TgkD1OvB/ZQgbL9IuP1L0936HBmpNRwS+3Ar7/+mpEjR5KRkdGh89ibKZzmY+Z1hYSqTdKPcJE9IYGU0VEk9HOh6W0IZawxCS0tU4ukc6ow5lUhKyKhhYkOHKPjcZ+WjmNsAlXdwohYvc3x4lJKxJZqtLnbCC+dgzUrH7lom4p6IVLj/A/9EONz0MbnIPqm4i1XC6haewW2ygcLNsDctUrY56+H2jDF9AQY3RsuOUJtB3cDV/1XeXc3hm6IDIagtBxt7QbwB7F6dkekJUNCXOu6PpVVYP0+D2vaXMxpc2FLIQCiayb6yUehTRqNdvAoRELrs1qbxVsDT94O7/8fdO8D70yDEbuoVVNLyK+s99/fgwnnw5WvgqsNFTPD1bDubRKXPY3uXQuJg+HIryHr2A791bVLkRdCTJNSThRCVNO4cXetu6b92QkHCO+///4B46qxTMnyp8tY9kw58b2dDH8xhtjeOikpLQ+Pq7PS50bEfFY5rAlQFXHv6P2icf0hDefoeBxj4tF7NS6k1dqOR9IXRs4vwJqtLHRr9haityk/rhntRBuTjXbLBLTxOWhjcxDJ7SyFW4tlwfoimLeOmBnLcSzaBGu2KWtRE9A/B848GEb3UreuqbvV9SJNE0orkMVlyJJyKC5V95t5XLvIWftJ1OUHOx2QmoRIS0GkJinhT0tGpCYj0pLR3A4IG4QXr1Z+9aWr1fnGxaJNGIl29R+VsO+OxeA5v8Bdl8CWPJh8o6oe6WlZWKqoKCDu5cmwcT6c+7BKcGrt36JqLax6Hta+AeEqrMSR+Ia/SNzgy1Wz7w5mlyIvpZwY2XbQJfTAxOv18v333/PSSy919lR2O/5Cg5nXFVI03U/umXGMeiiNSn/5Lt9nlYUx5lURnqdE3ZhfVdfpSMTrMMQDR6UTf2gXHKPi0eLbnssnpUSuL0fOzseatQVrzhbk4kLVXg4QPZPQDsvFPygJa3QXEif2bZfvvhG1Vvr89Sqzc8F6qFAuJldcFMbgrvCHPyhBH9ET4jroYrIdsqgUa/4ynNPnoq3ZSLCiWgl3WYW68GxPjEeJdWoyok8u2sEj6x7XRDmRUW7iwxayuDRyMYhcGApLsJauhtIKMNXfs/aMTIeOGDEIxw2XKL/60H4Ix+7J0RRV5Xhe/wd8/Ap06w1v/wqjWpiBalnw4yskvns7wjTg5v/CmFNbfnApoeB7WPEsbPkKNAd0Pxv6/5kqrbfaZzcIPNgZr3uMmJiYVsVt76vUumfC1RZjn0inx9mRH3rbRZLJsEo2Cs9VYh6eW4W1PrJTbRjjaek4RsXjGK2s9LKIK8SV0vouQbI6qHzpEQvdmr0FSiK++1gX2ugstJsOQhubgzY2G5GmFkirawuGtVXgLQvWFCgxn78e5q1Xj6UqPUDfTDhhFIzsCaN6UZ7kBK1tBdF2hgyFkcvXYC1YjjV/Gdb8ZbBlGwBOhwOrdzdETiba8AHK4m5wIzVZWeMxO7Z2zcjnpO9k3tI0obwKWVJG5bo8hGWRcNjBiLgOXIxuSHUlzP0VZv8Ms38iaeVChJRw4fVww8Mttt7ZuBhevQrWzMDsO5Gacx8jaWALF2YNL+78f8O016FyJUSlw9B7oO+VEB3x4e9mXbBF3qZD2N49c9j7WST0q0/ikcVhmOfDu6ZCCfuiaghErOY0J84xCTguyMQ5Kh7HsFhEbDusdEsiVxbj+Hk12vxCgotKkMuK6pyNon8q+gl9ELWCPjCt7T1Dt0NU+nAs3gRripWoL9gA1ZGLV2K0EvOTx8Conqo0bvx2QtNBX3hRXIY5e4kS9AXLkUtWQTDiTMlMQxs5GO2SM9BGDKI8MwXcro6Jzd/ZnHRduXBSk7DSEtVzHSnw3mqYNw1m/6Ruy+eri6zLDcMPwn/JbYQmHEviQYe3bLyAFz6+H758EmKT4Zq3qRrYisJiZYtInHY6unc9pIyGif+C7meB3oHJbS3AFnmbdtOce6a26Je0JP7/2wwPb4CwxO8SOIbFEXVxFs6RykrXctztqp0uC6qx5kRcLnO3Ys1TKfpuQCa4EeNy0E/tr0R9dFb728rVEjJg+eZ618uCDSRvUAuGdb70U8YqQR/ZC3pl7BZfuvT5VZbnwhVYC5fjmb8UrbBUhXG6XIghfdEvPFUJ+4iBiMzt6ursq78wfV5Y8DvM+gnm/AxL5yh3kMOpQiCvvBvGHa7uu6N22jSkCfP+B2/8CUo2wRGXwfl/V0LfkjGkhDWvwuw/I5xJVI77hIS+p3ZaCGurRV4IcS+NF2Dt+jUHMDt0zwDmtiA1164g/GsFHB0Pl6eRcnB2XZ2XNuENYy3fWCfq1pytsCVShtahIYZmoJ8/FG1MFpW9Y5A9E0lJa33tmiZICRuLlaAviFjoyzZBMNLMPT0BRvTAd9JwwsO6kzBpaLPp/+2ehmUh127EWrgcuWA51sIVyNUb6nzdolsW1vCBhAf3IW7iWMTA3gh3+8oa7zUE/LBwRr2lvni2asLhcMCQsTDldhh7uIqSaakrZntK8+HN62DOfyFnkIp9b03lyHANzLoa1r8DmUdTMehZpDutU3MU2mLJfxDZRgHXAYkdNhubfQZpSta/FGDDK+XE9XJy6HtZJPav/xka/KaEmutXIgMWsU/2peZ4F0KIVgm8DJvIpUXKlz5vK1GzNqOtKiMUqbUieiSpJKMx2WhjshHDuyCiOiiUsKwGFuXhmb4Mx5LNsCxfPQcQ5VKdhy4+Qi2MjuwBWckgRL212EECL4tKsRZGxHzhcqzFK1XMOKhIlOED0I6egDZ8INqwAYiUxLpG3u0O4+xsQkFYNLPeUl84A8IhVS5g0Gi4+KaIqE+AmNj2Hcs04Nvn4cO/gmXCeY/CiTeCoxUXyIrl8MuZyvc+/AEYfCeyvKJ98+oAWi3yUspVQogLgROB56SUv3f8tGz2ZnwFBvOvraF8jkHumXGM/FsazpiIe8Zn4r1vHYE3tqIPiSXupQE4+sTssjyAtFRnIzlvK1bE5SIXbasrB0CyBzkklfAxPYg5tLdyu6R1kD/XF4QlG5V1vihP3TYWA+ARArNnGhw9TAn6iB7QL6uuJEBHIn1+tAXL0ZatIbR6I9bCFXWLozh0RP9e6KcegzZ8AGL4QETPrrsutLUvEQopl8vsn5SwL5wOwYCyggeOhAv+rNwvoyZBbAdGbq+bowqL5S2AESfAJc9D+i6qTTYZ418w6ypwxMLR30PmkR03v3bSFnfNXGAx8C8gQQhxgpTyqw6fmc1eyeavaph7WxFG0GLgfdEMmVKf2GUsq6H6yuWYq3x4rskh+s6ezVruUkrYXIU1b2udlW7NL6hrgkGMEzE8E/3KMUrMR2chchPxlqnomp1FcOySsKEyR+sEfQOs2lpfCjc7GYb1gD8eAsN6UJ4Th4yN2j3RLqvWYy1aiVy8AmvxSuTqPDyR0EUru4uy0i85A234QMTgvoioPbtgpyZiQWUZlBZBWRGUFja4H3lcVkRi8TZEwAcp6ZCcDikZDe5HHtfeT46sCRhGY0t9/jTwR36l9BsG51ylLPXRh0B8Ysefm68SPrgLvv8/SMyEGz6CcWe0zrVi+GH2dbD2Vcg4FCa9Xx8100EIdh1+vDPaYo48F9l2gKPzwKGiooLLLruMpUuXIoTg9ddf56CDDursabWYcI3FgnuL2fBhNUlD3fR/0E1MdxXXK6Uk8MoWvA+sQyQ4if9oKK7DGoc5ajO3os/YQmhFhVoYLYwUznJqiCEZ6OcMRozOQhuVheif2jHRLpaFtrEUflqtxHxhXmM/elKsaid33EhVFmB4LqQ1TtbqiOxRaVnI9ZuQi1ZiLV6phH35WmW5AiQloA3rj3bMIXh7ZGEO6kNK317tPm6LKCnEOX0qet4q8FXVC3hZEZQUQkVJnb+/EZoGSWl1om0MGIF0e4jy16j3Lp6lLgC+5ouCJXsiv8L8kf+DPoPh9Ckw9jAYcygk7kZXk5Qw8yN4+wao2AbH/gnO/htEt/LXQdVq+OUsKF8MQ+6EYfer+PcOm2cJhJ8kKarltbGaoy3umrfadcQDlOuvv57jjjuO//znP4RCIXy+lhXb2hsomR9g1nWF1GwKM+BPSQy+KZnyKmVVW8Uhqq9bSfiHMpzHpBD3TD+01Ho/piz1Eb7hazz/WY4UIPuloh3VS8Wlj8pCDMlo5EdvM1KqWi6L8mBxHizeSNLiPLTqgHo92l3vRx+Wq9wuuyNzVErEthLMWUuwFq1ALl6pEoGqI2IW7VElcCefpnzow/ojcjLroovM3RnpUl0JS+cql8jSObBkDmzbTJ20RcfWW+DZPWDouKZWea01npAMen3yTu06QNT2v3j8PigrbnzhKCsisGUjWBaeg49Sop7Svk5aLUUryYOX/wiLvoEeI+GWz6HX6NYPlPchzLhM1b8+8ivI7sDSXrIIwk+A8QLgI2SejGrn0TbszlB7gMrKSn799VfefPNNAFwuFy7X3h/xYBmSFc+Xs+zpMjxdHBz+YTbp4+vDD+Vv1ZTfuRJZbRLzaB+iLs1qFAppfrOG8NVfQKmP0G1jCV8ylJTcDvgpKyVsLYu4WzZGRD2vLmsUlwMG5hA6bjjG4BxiJw6BPpltbvq806kUlWAtXoW1eBVyyUqiF61AlFVGqlA6lB/9lKMRQ/ujDeuP6N1dxYvvboJ+WDC9XsyXzoG81fWvd+0FIyfA4DFUduuL0WcwKV1zO34enmjI7q5uDfBFLgqe3b04LCVsXQWrphGz6Afc8z8D3QEXPQ3HXqvutwYzSMyKe2Dja5B2EBzyb4jp2kFz3Qbhx8F4EfCDfi4476amPIM9IvLsD52h3roB8hZ22HC6lMjuw+CSnf+c2rBhA2lpaVxyySUsWrSIUaNG8cwzzxATs5sy/TqAmk1hZl5fSOncAN1OjWXU39JwJUTcM34T+chWeKsUbUAMcR8PwDGgPrpBVgcx7vge8/UFiEFpOD89D29OG6sF1gr6kk14Zq3AsXwLrNgKpapmCg4d+mfDiaOVpT4sF/plg8tRt9jbUQ2tZUk51pKVyMWrsJasxFqyGgojlSA1DdG7O8ZBI7AG9yHuoFGI/r32jB89GIBVi2HZXFg2j4RFs9DzVta7WdKzYPAYOPkiGDJGRaYk1rvTjH01Tr45jBBsmA8rp8GqyK1anZ8rNpXgyFOIuuhxSMlp3bhSwpavSJh1Iw7vGhh4M4x8BLT2VxnVxAaiHK+C/y0gBPr54LwLtP6RPfZQFUrszlBtxjAM5s+fz3PPPce4ceO4/vrrefTRR3nwwQc7e2pNkFKS93E18/9ajBCCcc9mkHtafdmi8IIqaq5dCWt8cEEKiY8MRHjqLVNr2kbCl3+O3FSJfvPBOP56KMLtaHkSyeYSWLwRlmxSES9LNtaFLnp0DbNXhop0qRX0/jmq1G4HI0vKsZauxjl7AdqKdQRWbYCtRepFIRC9uqEdPBJtSD+0of1VPHq0Z/eHL4aCEUGfVyfqrF2qFjEBklKx+g4jNOFYosccokQ9vXN7jO5WfJWweoYS85XTYO0sCEdcdF36wKiTod9E6DeRcpcKc23iUtoV5Uth7k1Q8D0ipidVY94nfsC57Zu39IH5MRivkxT1M1LqoP8RnHeC1rd9Y2/HgdUZavLTHTpcS0sN5+TkkJOTw7hx4wA488wzefTRRzt0Lh1BqMJk7p3FbP5fDaljohj/TAYxXZWAypCF74mN+J/ZiJbhhtdyERPi6gReBgyMe3/CfG4mokcSru8nox28k5+xlgV5xfVCvmSTanpR63Jx6CpU8djhMLg7DO1OWboHPK4OjXSRUkJRKdaSVcilq7EiN7apEEoXYHXPQhszVAn6kH6IQX0RsR3YTHtHhIKwZqnyoy+fp7ZrlqoEIFCLk4NGwSG3qe2g0ZDZlepIFFJHtNbb6yjNrxf0VdNg0+JItU4dckfAUVfBgEnQdwIkblfSu7W/WPxFsOgeWPMKOONh9FNUpJ0DWhtdrVKCNQfM18F4H6gC0RNf+E6CxrkkpQxp27i7oCWlhpegMlwdwCVCiPXsq52hOokuXbrQtWtXVq1aRb9+/Zg6dSoDBw7s7Gk1omiGj1k3FOEvMhhyWzL9r0mqq/duLKuh+toVmMu8uM/tQszfelFuVNW915pfQPiyT5ErStCvGIXjoaMQsY2/CFp+GY5FG2FDqRL1pZvra7q4HDAgp97lMqS7csG4t7PQ2+lWkFLClkIl5MtWq1IAS9dAiRLFOgt9/HC0wf3QBvelvEsyxO2BBhzBAKxegnvubzhWLYJ1y5TFXivoCclKyC+5JSLooyCr+z7b7alFWBZsWV4v6CunQUmkrYU7BvoeBGfcqyz1PuMgqp0JUbWYQdV6b8lDYHih37Uw9F6ISmnT/6CgBMJvg/E6yKWAB/QzwXEpaIfg97UvRHJXtMSSP2m3zuAA4bnnnuOCCy4gFArRs2dP3njjjc6eEgBmSLL0iVJWvlhBbK6TI/+bQ8pwla0pDQv/c5vxPZaHSHQQ96/BuI+LRM6WAmET46FfMB6dBmkxOD8/H/3o7UL/fEH4+39JfG2qqgAY5YQBXeH08TCkmxL0vlmNml50BNKyEJsL0FauJ5y3FblstRL08kq1g64j+nRHP2wcYnBftMF9EQN6Na20uDv81d5qWLlIFdBasQBWzIe1y8A0iQWs2ATlZrn4JmWdDxoF2bn7t6ADhAKwfm69oK/+HbwV6rXELkrMT7hRlRnoPqz1i6a7QkrY9DHMuw1qNkD2iTD6cUjov+v3NjteNTHOW3Hr70A4DNpYcL4E+jkgWt5Xob20pJ78vt8Rai9g+PDhzJ07t7On0YiqtSFmXldI+ZIgPc+LZ/i9qXWZq8YaLzV/WokxvxrXqWnEPtoHLaXeOhdrynDfMBVjUTHauYNxPnlc08Jfvy6H29+GTSUEzx5P4OzxJI4ZoFwxHYgMG8g1eVjL1igxX74GuWId0ZGwRdPpQPTtgX7sJMSgBoK+JxZFK8qUkC+fDysj27xIgwxQ4YkDR8Jhf4CBIynP7IHVpSspqXtBGoppQE2ZalBdVQzVJfXb6mKoqt0Wk1hZhAj5IT4V4tLqt3GpEN9gW3vf0FRd9rwZ9Quk6+aohVOArP4w7sw6fzoZPXfvRa50Hsy5EYp+Ux2ajvoOso5u+3jmzxC6BLe+kaB5MVGxN4E2uMOm2xrsKpQHIFJKtvwnxJonKtA9ggkvdyHnePVTV1qSwMv5eB/agPBoxL08EPdp9THMMmxiPj0Tz0O/QLQT57tnoJ++neup0gcPfAgfTIMeGfDJbXh7R9wd7RV4nx8rb0lE0Neo7eoNEIq4NTxRiAG90E89Gl+3TKwBvUgcM3z3F+mSEkq24Zz1C47Vi2HjKiXoW/Lq98nspgT9pAvUduBISGscUmrtyUgXbwXkLSRq+TT0bashWNVYyL3l9Rej7YlOqBfs1G6EMweBK4oow6feX7IJ1s9T981wk7c3cn7pDug5Go67TlnpfQ9WY+8JfFthwZ2w7i2ISoPx/4TeU9qe1CR9EL4TjGdA9KYq9AWGNY4orfPWR2yRP8DwFxksuslLyS9hMiZ5GPdkBp4u6t/AzPNTfd1KjBmVuI5NIfaJvmqRNYK1oIDw1f9DLirEPKEnob8dgmfAdour3yyAO9+Bkmr40/Fwwx/A42q126NuQXT5WuTytVgr1uJZsgqxaSuhWuFJSkAb1AftkjPRBvZBDOqD6JFTF4deGxrY4QJvmrBprbLQVy6s35YW1ScWde+jkonOvRoGjISBI3ZvFufOkBLKC1Rtloa3og0AxABWbCokZyrR7j68gUXejDUel9KkcJd3R8lQUoK/ertfAsV4t20EKYkZdgT0GgPuPbCQ3RDDB8seh2V/B8uAQbfCkLvA1Q43ijkDQpNBrgHHn8D5KIYv0HFzbiO2yB9AbPq8mnl3FWP4LPrc7GHEdVkITaiyBG9txXvvOoQuiH2uP+5zMuoSm6Q/jPHQr5hPz1C+9/fPxDtpuwzF4kq4+334Yi4M7Apv/hmG5rZoXjJsqLT/FWuVqEe2lFbU7SO6ZmL16oZ13CRixgxDG9QHuqS1qw59iwj60devgK0blJCvXAirFtXXWHE4VUr+ISdC/+FUZvXA7DOE5G65u3deO8Ky0ArX4shfCqVr6wW9sqh+ny69leV8xOWQO4KyhO7I+PTds7gshCoXEB0PXerXawKRi8LublTSBGmpMsDz/wK+fOh2Boz6B8T1bMeYQQjfC8ZjIHLAPRX0IyIv7gMi30wD77qXsBt57xMESk3m313M5i9qSB7upt+9bmJ66AhNYG4JUHPDKsI/l+M8LInYp/uhZ9eXybWmbSR89RfItWXok4fjeOQo5XuvtcylhI9nwr0fqEXW20+Dq4/dYZVGWVWjRHzFOtWObsU65KoN9XVcXC5Evx7oRx6MGNgHbWBvlVQUH1sXg96uAmU7QkooLlALoqsit5WLSM5bhajtdxqXAP2Hw5mXq+2AEdBzADTIXt6jiUVBH2xaAhsXqiS/jYtg02KSgpESCrpD1UQffoIKL8wdoRYst6vR0hH1efZqpAWVq3BvnkrUxtehcgGkjIJJ70LGIe0b25oHwckgl4E+BVxPgti7JLElC692A+99mPyva5j7l2LCVSZDbk+m/1VJlFeWKev9/QK8d61FmpKYx/oQNbm+LIGsCmLcPRXzlXmI3EScX16AfkRja0crKIfr/wU/LVVNpx+fDH2aJt5YGzbj/vtLaEtWEdxSWP9CSiLawN5oF5+uxHxgH1U+dzc1cq4jFIINK+uEvM46Ly+p3yerO/Qbhn/SCZh9hhA39pDOi3CRUhXSylsImxZFBH0hFDRYwPXEQ+5wOHwKNSm9MHIGkzh4Ajg7oXJlZ+MvhJJZ6lY8C0rnQLiKWMCMyoQJb0LPC0G0o8yFDEP4ITD+BiId3F+CfkJHnUGHYrtr9lOC5SYL7i1m439rSBzs5rD3s0gcoL7wsjgM92yh5qdqHOMTiHu2P3qP+sgY86vVhK/7Ggqq0a8bj+OeQxExDXywpoX7g+nEPP01IODB8+Diw1VlwgbIQBDjxXcxX3wP3enAnDAS1/mnIAb2RhvYG9JTdru7RVSUwuqFjaxz1i2vjz93uZW75fCTVXnbAcOh79C60rZ1TUD2lFvBNNAL18KKjfUW+qZFjd0tablK0A86V227D4e0+pj5YO2cDwSBN3xQOr9e1EtmgzcSECh0SBoKPc6H1HFUOPphxvYmJbV9i7q6WA6B60EuAP0CcD0LovXN5fcUrXHXNPdtbLG7RgjxOirmvkhKOTjyXDLwb1TRszzgbClluVDf/GeAEwAfcLGUcn5LjrO3kpubS1xcHLqu43A4dms45dapXubcVkSwzGTQTckM/FMSmlP53oMfFsJda8BvEfNAL6KuyEFEkp5ksZfwLd9ifbgMMTAN53tnoo3Nbjz4ko3wl3eIXbCB0EF9cD01RVVz3A7zl9kY9zyF3LgF7eSjqLnmPGRacofVkWlCKAR5q1QC0erFsGoxSSsXopVsq98nLVMJ+aTj1LbfMMjtq9rHdQZVxbBxsRLxjYth02KS85cjjEhpKIcLug6GEScpN0vucOg2FGISO2e+nY20VNelWjEvmaXK/MpIjZ6Y7pA6DgZcp7bJI8BRv6Db7gqfsgKP4xE8judAJoDrE3Cc1r4xW3JYjHa9f0+6a94EngfebvDcHcBUKeWjQog7Io9vB44H+kRu44AXI9t9mp9++onU3Rj/HKoyWXh/CRs+rCahv4tJb2aSPET5183NAWpuXkX4p3IYHg0PZeOJCLiUEuuDpYRv/Raqgjj+eij6LRMQrgbhjtV+eOxTeONHSI6l+pFzCZ0wvEk8t9xWTPiB57C++hnRsyvOd55Enzi64/y+UkLR1noxX71EbdetqLfOHU7oNZDwyEkYvQcRM/JgJeh7qJxtE4wQbFlRJ+R1t4oGF6CkTOg2lEDvCRjZA4kbPAky+6lzOVDxb4u4W2Y3crsAqsxA6lgYfLsS9NRx4MnY+XhtRVaqkMjwk0Q7Kwkap+GOewnE7g3zNCnHxzeEk9rXk6lVJowQIgklvHUrc1LKX1vyXinlr0KI3O2ePgU4LHL/LeBnlMifArwtpZTATCFEohAiU0pZsLNjmKZJ6XZiYpomhtG+K+GOaO24hmE0eU9Lxmh4XuXlzadAl04Ps/x+L8FiSe6UKHpeGYV0eSkpqoF3S+HpiC/8rkwqjtdA9yNKSxFbq3Hd8QuOHzdhjswg+NjhyH7JUF2h9pcS17eLiXnsf4iSGoJnj8f352MpMwNQUVHvozZMHP/+Etc/3wfTInz1+YQvOhVcTigt3eG8d4qvGsf6lejrV6CvX4Fn9WLceauhun4sMz0Ls+dAzHMOx+g9ELPXIMyuvcDhrDtmUlJS5ENq/YWmVfOWkqpNq3BvW4W3aiOOLcvRtyxH37YaYam/s3S4MTP7YfQ/HDN7IEb2IMysgci41EbHC0UnQWXVDg/VYXNuw/6NkBbCqKK6JA/NDKIFumE5k0DfeY/bJsc0fTgqF+GomB+5zUP356tDCB0zbiBG5ukYiaMwEkdhxvZu7FP3Ab6d/31bf57VeByvEuV4AU1UEDJPYFvplYSMgSSFNVpSHbIlx9x+H0tfj+X5Acs1G4SJ4W9jxm2E1tSTvwy4HsgBFgLjgRnAETt5267IaCDc24DaS3E2sLnBfvmR55qIvBDiCuAKgKysnVfb0+bdhChf1I7pbjeelFiJQ2HM07vcVwjB8ccfjxCCyy+/nMsvv7xD5mB4JWue8rHlPyGie2iMeSuWhCHqzyrXBuCufFjkh0mxcF82ItsF5eVgSRxvLcX18AywJMH7JmBcMqRRzXVtYwkxj3yKa/oajAHZ1DwzGXNwJC6+vD40TFu8EtcjL6GvzsOYMJLQbZcjc7q0/CTCIfSNa9A3rMCxbgX6BiXq+rb6fwHpiSHYtTc1Bx2DY+AIjF4DMXsNRMYltuvzayvCX41esAJ9y3IcW1egb12OXrCSFG+DC1BSNmb2QEKDj8HMGYSZPQgzrWfHp+N3FKYPLVSBCJchQmVo4fLItgIRKkOEy9FCZYhQuXotXI4IlSOw2N4jLfVoLGci0pWMdCZhuZKRzkQsZzLSlURc2A3SJCZ/FY6K+ejVyxERt4vp6YqROIpA7hVK1BOGgL4n4+hriHK8jsfxPJooI2Qegy98G6YcTsjYXXVmDEzXDKyoH5DO9WBFoQUORw8cibfUDTzW5pFb8992PTAGmCmlPFwI0R94uM1H3g4ppRRC7CC9bqfvexl4GWD48OFy+1jfoqIiHLU+V03r8OgITdPQWuDTnTZtGtnZ2RQVFXH00UczaNAgDjmkPnzLsZMxdF1vEsOckpJC4XQfc24pwptv0O/KRIbckowepSFDFv5nN+F7aiMiRifmhf64z6qPexfrynHf+gv67AK0I3vieP4EPLlJ9YMHwvDCV/DC18oS/9v5OC46jMTtm25UVBH/2GuYH3wBXdJwvvgA7uMOJXZHn7FlkeKtUJUU1yxR29VLYOPq+lK5Dgf06A+jJkLvwdB3CPQZjMjqjjdi8SS00q/frvhvI4ReuJbEbbNh8xLYvFSFLdYWygLwxEHOYBh/Ft7kHhjZg0gYPBE9NgkdVcmytXREzHqzY0gJ3s1QsRQqlkD5EhJKFqJ71yMs/44Hc0SDKwXcKapQV0IPcCerx+4UqsNu0NzEuQ0IliKCZejBUqi9+VZF7pcpca8dt9bt0v1ktU0dh+7JQAd217LxDj9b6VMNO8J/B4pBOx6c9+HSxzb5G7b279Pc/hKLMKswoqdiuWdhapXoZBPDFXi0I9A80eABYe25evIBKWVACIEQwi2lXCmE6Neuo0NhrRtGCJEJ1IYQbAEaplLmRJ5rHy2wuFtDS0sNA2RnK/93eno6p512GrNnz24k8q06rl8y/55i1rxRqYqKfZJN6mgVHROeX0XNDaswV3hxnZZO7EO90dLUv6gMGBiP/47nsWngceJ4+WT0Pw5tHOHyyzK4813IK4JTx8I9Z0NGYqPjS8vC8flUXM+8jVntRb/8HBzXX7Lj8ruzfyb+6btwrFwIgQZtD3N6QJ8hcOSpdWJO976N4s73GJYJ29ZB/jIl5JuXQv4ykreuqnO1oDtUTZW+B8NRV6pF0a5DGkW21Cb5EJu0gwPtQYLldUJOxdL6bbiyfp/oHKyY/oRTJ+FJ7B4R7Xrxrnu8C/dLqKVRSNKCcBXlhetAmiR1Hd2+UMaOQPrBeAnCjwKFoB0NzvtB7/gezErYV+LndwJMx6IUohyI8BASXSfjZgSiRYrScloj8vlCiETgU+B7IUQ50N7iZZ8Dk4FHI9vPGjz/JyHEB6gF18pd+eP3ZrxeL5ZlERcXh9fr5bvvvuOee+5p01gVCwyW3ePFv9miz6UJDL0jBYdHQ3pNvI9uIPByPlqGi7h3BuM+tn5R1PxhHcYN3yDXlWGe0ofQvRMalyTYVgH3fQD/m6vqzbx/ExzStByyNX8Z4fufwb1oJeaw/ngevR1twA6aTm9eD4/dAj/8Fy0jh8AfLsQzdIyy0HsPgpgOKg3bGixL1VXZvBTyl8LmZWq7ZWV9swkhIK0HdB2Mf+DRmNkDiBtwEGT1a5LOv1cQroHK5VCxDCqWEle8EL16BQQafGWcCZA0RIUTJg2BxCGQOAjcSVTvqVZ8oATdlYgVnVv/uLOQATBeAeMRkAWgHQHO/4A+sWMPg0WI5Y2FHSduRuJhMt7y3gjpaX0zkxbSkhDKf0kpLwR+llJWAPcJIX4CEoBvWnogIcT7qEXWVCFEPnAvStw/FEJMQV0wzo7s/hUqfHItaknlkpYeZ2+ksLCQ005ToVaGYXD++edz3HGta7IV9los+Xspa96sxpOlqX6rBynrPfRLGTU3r8baGCDq4iyi/9oTLT7ily+oJnz791gfLUP0Tsb55QV4hzWoz2GY8NZP8I9PIWzALafA1cc16bYktxUT/vtLWP/9DtJTCD5wPcbxhxCT1kyEQU0VvPwwvPWUig657m9UnDwZ3J49IyQAUqJVFKAXrITKiKhvXqYs9dqMUICUriordPBRyjLPGQTZAyBKORT2eJz8zjD8KoSwcpnqVlSpRJ2avPp9NDdabF+MlInoGaPrBT06e/8vVdxSZFDVdjceArkFtEPA9R7oh3XsYQhiev6H6f6JUsqpF/aLcTMGDfXL1yd3b8ZxSyz5UUKILOBSIcTbqHj52u5QsUBZSw4kpTxvBy8d2cy+Eri2JePuC/Ts2ZNFi9q+4GsGLL45ahO+LQZdz3XT688e0rt6sCrCeO9ZR/D9bWg9PSR8OhznhEQApGlhvjwP476fIGjguPsQ9JsnIKIatOJbsB7ueAeWboLDBsHfzldWfANkIIj52ocYL7wDhoF+7YU4rrkAb6AZ/61pwqdvwtN3QWkhnDoZbnhYtZ/bXanzUqpuQVuWKwHPX65uW5aT5GvglkjIUCJ+xGVKyLsOhpyBqpri3oYVUiIesczrRL1mnXJ3gOotGt9PhQ72nqKs8sTBENuTyvIKANx7w4Vpr8KLW/8YAk+D3ATaweB6S1nwHXgBlEiCzKSK1zCjixChoSTolzYS9j1JS0T+n8BUoCeqibegPjlKRp632Q1YhsRfYBAoMdHdgiP+k43WS/m0g/8rpuaONcjSEJ7ruhF9S/e6VnzWvK2Er/sKOT+ysPr0cWi967/wospH9DPfwn9mQUYC/PMqOGlUo390KSXWt79i/O0FZP42tOMOwXHnNWjdIhFM24v83F/hkRtURcYRB8P//U81vuiwD8NCK92Mvm0VVG6OiLoSc/zV9fslpEP2QJj4R2qSumNm9iNh4MGqquLehhmEqtVQsVy5WyqXk1C6GN27HmRkHUBoENcn4mo5r17M4/t0SBPp/RZZCtaCRrfkqNUIYYEYB65XlO+9g3/dhNlMFa8QYiEOuuOovA3NGLDnfsE2Q0uSoZ4FnhVCvCilvHoPzMkGCFWa+LYYWIbEGadx7Ddd0aM0SlZUwoNbqf6+Cn1ILHHvD8ExVOWrycoAxn0/Y740BzJicb59OtqZA+sXVi0L/v07iQ9/jKjwwpQjlXsmrnGzD2vFOowHnsWasQDRrwfOd59CnzCq+Ynmb4DHb4Pv/gNdusJj78EJ57b9y2MaULguIuAr1G2r2iYFGyzaJmQoi/yQyWqbM1CJewMxr0vvj+9ki7bOzRIR81pRr15bb5kLDWJ7YcX0JpRxAtGZo5WYJ/Tb5aLnAY2UIDfXi7ms3TaIwBZdQRuBP/QHwtZBJCSe2uHibuGlhg/w8gWCKOK5gmiOp8yo6NDjtIUWL7zaAr9nsMIS31aDUKWJHiWIz3Xh2qijuQT+N7bAg+sgJIn+a0881+QgHJqyuv+znPBt30FhDfqVY3DcdxgioYE4zF0H97wPi/IwR+Ti/ecUEic0bhwsyyownnwd873PIT4Wx4M3op/3h+YLhvmq8fzrGfjwRdB1+NP9qv+op4U/R0N+2LqqXsjzlysxL1jTuMlESlflIz/icmoSumJm9idh4HhV03xvI1yDXrEAvWY15G2qF/Xq9dQVchUOZYUnDoHccyBhICQOhPi+oEfVLYLul02424s0Qa7ezkJfSH1SkgDRD7SJoI2ovwn1WfprIvt1qGvGws9UqnkbiyqiOYZY/ojO3uMGbE0ylBs4A1Vnpu59UsoHOn5aBx5SSkIVFr6tBtKSeDIcRKWpcsAybFF54gKMuVUwPgbuyyZ6lHKbWOvKMK7/GmvqesTITJz/OQdtVIOksG0V8PDH8PEM6JIEz19O1aRejV0zYQPznU8xnnodvH70i07DccMliMRmyhIZBnz8GknP3YNWVgR/+CPc+Ah0ydnxyRlhXHM/wbFpEZTlKVEv3lBfQVFokNFLifmok9U2e4AKV/TUV9Wos8w7U+ClhEAxVK5oevPlk1i7X63PPHmUqnhYK+ZxfUDfCyN09jZkAKyl9Za5tQCsxag4DAAXaENAP62BoA8FEbOzUTuUEKuo4mXCrMFJf5K5Dyc7iDTrRFoTQvkZUInyywd3z3QOTKywxL85TLjawhGtEZPjVElNpsTcGsDaFsLc4Cf2hf7UHOFACIEMGphPTMf4xzRwO3A8dRz65aMQtQlLwTC8+gM88wWETfjzCeoWE9VoEdT8bQ7GA88h1+ShTRyN454/o/Xt0XSSUsIP/4Wn/gJ5qzEHj6X64bdJOOTYnZyYBTP+DR/+lbjCdUiHW4Uh9hoDh1xUL+aZffe+iomWCd5NOItmK8t81aZ6MQ81iDVwxKhGzxmHQsIAqrUcjLh+Kv67rS3k9nZkCCgHWQGyHCjHpW9CEAIjG0SSupEY2cbv3HqWVcoit+Y3cLusgLrCXPGgDQfH5Q2s8wEgOmdNQopKKngHP1PRSCaRm4jiUESzNRw7n9b8F+ZIKVsX92ezU6SUhMosAkUWSIjOcuBO0RFCYFUaWFsCyJBExOgkzRiLluTEW1qK9ttmQn/9ALm2DO2sQTj/fjQiM652UPhhMdz3b5XQdOxwldCU27g4l9hcQOj2x7F++B3RPRvnKw+jHTWh+dK/c3+DJ26DRTOhZ3947lOqhk3Y8RdXSlj4NXxwp2pk0W0oVVe9S3jQUaSkdVKRsB0RrlGLn5UroWplxHe+EqrXgBmob+fnToWEAdD9TLWtvcXkNIr1rksK2lcEXobQxSo0kad+pcnyiHBX1Al40+d8TYaJq/1xEmruIBp1gi8SgSRinTEgTPCvALmuwb5dlIjrf2gg6D06P2EKMKnE9HyOGfU1YQxiOINYzuqUiJnW0Jr/xOlCiCFSyiW73tVme0zTZPTo0WRnZ/PFF19g+C18WwwMn4UjRijr3a0hwxbmlgBWhYGI0tB7R6FtdqIlOZFbq3Hf9D2Oz9ZAr2ScX1yAfmSD4Ka12+D+D+DHpdC7C7x3Ixw6qNE8ZFUNzmffxvnu/7DcThy3X4l+6VnN90Fdswye/gv89D8VBvnAK3Dqxar0wI5CIlf9Du//BVb+Buk94U/vwsHnEm5PEaz2IiX4tkDVqnoRrxV0X379fkKD2B4Q3x+yjoH4flSKTMzYviRn9u28+XcEsgyslSBXbrddT2JUpFRvI4GOi1jhEatc6xu5n9j4+YjFXl4pADdJiaKRhd/kAhF53qHlAVZEyC9pIOiNG5vvDYTJw8v/8PMzRIcRoeGkuq7Cwc5rZe0ttEbkJwKXCCHWo9w1te3/hu6Wme1nPPPMMwwYMICqyip8BWECxSZCF0RlaTgTBJpDYBWHsAqCSEDLdKGluRCaACkxnpyO8chv6GGT0I2jibvnaBXzDqoM8FP/g9emqqbZ952jmng0aMEnQ2HMdz/DePYtnBVVGCceRuw9f0akNxNauC0fnr9XxbxHx6pY9wuv3/mi6qYl8O+7YN7/ILELXPqCiknfkxmiYa+ywCtXQdUqYosXo3vXgncdGDX1+znjlJB3OUxtEyK3uN6gN3Yb7dF2fu1FGiDzcGpz0cVaCG1WQm6tAIob7OgC0Re0YSDOodqXjWX1JCGxZ0S0E9QCcSuwahN6tJatl1REPteU2L1zgVliEWQeXj4nxCLARTRHEq6YhDCzcOxDC+Ot+UseR31svE0ryM/P58svv+S2G+/gycefIlBs4k7S8WQ6sDCRfguzwIf0WYg4HUdOFMKtfp7KqiCyoAbjrqloJ/Wl5i9jkN0TlMBbFnw0HR75BEqq4dwJcMfpkFq/YCqlxPr6F4x/vITM24I2YRTea87H6t8Tsf0/alUFvPoo/OsZNfaF18MVd0LSTmLMizbAh/fA7++qFnTnPgzHXVeXMdrhSBOqNyirvGpVxNUSud/QKgccnhzMmD7Q+1C1CFor5p7MfTv7U5aCtQrkqu2264AQ8bXXKSMVtP6gn6K2Wn8Q/UHkqq5JEULVrRPo/RkLP35+xMv/MNmKRgpxXEQ0x6IRR6m5D130I7SkrME0KeVEYBmNBb5W8PeurrU7I3RDJOSqY9ClRIph4Hh2p/tdf90N3HfTw5Rvq0QAcT2dOGN1pCmRW0NQaoJDoHePQiTWL6zK/CqoUPVUnP89F/24PvXNN+avVyGRCzbAqF7w1nUwLLfRca15Swg/9H/I+ctUvPsb/0A7bBxW2XZJysEAvPcCvPSQqiN/0gVw3YOqp+kOEFVFeL55Eqa9BZoOf7gNTr4NYjugDZqUEChSAl61GqrWQPVqEspWoPs2gNVg3d+ZoGLJuxymhDy+n3oc15uKSpWw1REVHfc4MqhEu07EV9eLeaM65k4QvUHrB+Jk0PpRWZ2BafUmOWUfdzHtQUyK8fIFPr5D4sVJX+K4hSgORuzjXVJbkgw1MbK1G3q3Eikl/33/cxJdKQzqNow5wd9xxGg4YjSssjDW1iAYEpJ19KwoFfNuSeS2auQ25V4Q2XEITyz6wD7qcUk10U9/DZ/PU9mqz0yB08c16q9qbdiM8feXsL75FdJTcPz9NvQzj0foeuMJmiZ88S48+1co2AQTj4UbH1V9TndEVTH873GSvn0ejKByyZz+V0jO3vF7dkSool7EawW9OnI/3CCLVXNCXC+s6O6E04/EkzE8Iuh9ISp9J1b5Tkrn7g1ISyXtyNVgrQG5mjjXMnSxDvwbAavBzl2UkDvOiMSC91NbkdvEtWK0szTtgUSIlXj5nADTAYjiYGI4GRfta9TRkch2Ok/27UtUa3E93aHD7azUsBGw8OUb/Dp1Gt/8/CVTZ3xLIBigqqqKC049j7fufwURrUF3F8KjKYGvDCA3V0HQgKQoRHY8wu2AcgH+ELzyPUnPfalCIq89Dq47CWLrE55kaQXGs29ivvsZuF04bpqCftnZiOjGGa1IiXPWVHj1YdVGb+BI+NvrcFCTMkL1RMSd756HUIDQ6NPxnXArSQPG7vqDskychd/hqF4GK7fUC3qwpMFOAmJzVRx5z8lKwOP7qG1MN9Ace7ZaYkchJVAUscTrxVw9XkvjaORoNNELwxqK7rqgXsi1viD2nuSafR2JQYDpePmcMKsRxBDDKcRwEjq7t6VfawhSRRlrKU5Y1a5x9lj7vwMFaUn8hSaBYgOhC/7+2KM89eo/wIIfP/meJ597krf/9gpaphuR4sQ0TQiaWHlVUBkAjwPRJwVR61iVEnxBOPRu2FJG+IhBeG88gaSR9aX8pT+A+fpHGC++C/4g+rknqWSmtGZcJwumE//E7TjnT4OuPeHx9+G4sxv9EmhEVTF88QR8+7zKUp1wHpx2NzVRLfgyWGFY/w4seYT46jXqOU+WEu9upylBj++rbnE9myx67lPIMrDW4tLnK0s8uKVezGnwq6TOvdIHxPERAe+jFkJFJpURV5q7s0sx7GdIDKS+Fcu5gCJ+wqIUnSziuQoPh6Ph2fUge4AwPspYRxlr8UUWy92yfXWXOrv9335FuNrEu8XACklcSTrRmQ6EDrLcwNoaRFYa4NTQB8Qoy920ENu8iGKfysjOiYe0GBVRA+ANwNZyKKuBpFh4+lKq+9WLqzRNrP9+R/iJV6GgGO2oCTjuuAqtd/emk1s2D567B379Cj0pDe/1DxNzyc07btBRVQJfPB4Rdx8cfJ5yy2RHfsbuLOrEDMDaN2Dp38G7EZKGUz3ydUJph5OSkdu2D3dvICLkyDURi7z2/lpqi7HGuUBKAVauEm7HQZFIllox79bqyBWbliMxMNiKwWYMNjXYboVE9cvbxTBiuAY3ozq8QUdbMEQAv6uAUmZSzVZA4iGFbMaRTC+qq9qXe7rXtP/bl7HCEl+BQajCRHOJ+oVVv4m5IYj0mohojSPOP5ajLjsBKSWy1IfcUo0Im8ikKLScBIQr4jMPhaGgAiq84NSVwH91t+q/GhFX87c5GA+/iFyxFjGsP86n/4o2bnjTya1ZqsT9h/9CfBLc9Cjlx50HnhhimhP4qhL48gn45rkG4n63ykzdFWEvrHkZlj0G/gJIHQ/jXoDsEwhtv9i7NyIlUAzWOiXg1jpincvQtPXgy6NxVW0REeze4Dg7IuC9qahKxZS5pKTsGzHU+yqSMAYFEQHfTsyJxP0j0MnAQTfcjCFQnYxm9CAlaXBnTh0Lg2oKqGYLVeTjT478eiOeTEaQTG+i6gtk0N4CA53d/m+fRkpJuEISLDJVvZl0B1HpOkhUQlNJGKGB3tWNSHaqqJmaEDK/ErxhiHFidY+HGCfCoYNpQVGFCocE1XYvLR5W19Q12BZr8nA98zbhGQsQOV1wPnsv2kmHI7Z3t+Sthhfug68+gJg4uPY+uOgGiEto3grfXtwPOhfO+GvLxD1UBategOVPKj97l8Nh4jtqu7eFKkpLNYqQ9ULeaNvItSJwaDmYskcjIVeulh4gmlaHNHdzA4gDDSXmW7cT8s3NiHkXHHTFzVgcdMNJNxzkIBp0ig2HOudvI5H4KKGKfKrYQg3bkJgINGLpQpJ3MFHhDDITe+6W0gjtbf+X1+Ez2kcwfBa+LRamX+KI0YjJdqK5Rb1rxpBoKU60TJdyzQQNrC3VUO4Hl47ITYRkj4pwkRJKq1UxMcOEpBhVTMxV/+exNm/FePJ1PJ9+D3ExOO6+Fv3C05pmquZvgP97AD5/G9xRMOV2uPQWSNyBj7eqBL58Er59TnVMaoW4i1A5LHwWVj6rImWyj4chd0H6hDZ/rh2CDIHchFNboNL1QwUNhHwdjS0jZ0Swe6m2b6I3aL3UVuRSUaainFL2xqqXewESicSP1MqBMBZOBB4Erasro8R8SyMxD7MZk63URxlpDcR8PE664qAbDrIbifneQogaSqMX4nXnY0X+56JIIo2BxJNDHJloOCgNqIvP7qp905pSw6dF7jZs/3fALflbYYl/m0Gw3EToEJWp4Ul1QsDCXBuoc83oPT1o0TrStLC2VkFhpOVcZhwiI0YVEpMSURNA21apCorFuKFHOkTX/8PKsIGsqCJ08rWgaYQvOpXwxaeT0mM7v/u2fBXn/vGrKm79wuuVwKc27vRUi6gpg++eaCDu5yife07Tvq5N8G0lesWjRG18HUyvWkQdchek7KDm/O5AVoBcXy/c1vqIdb4e5CbAapAU5FEirvVVi52iN2i91XOi6y585DU7eW3fRyKRohqplRFkCxIfFr5GW3Xfi8Qf2TZ83Q9YEOlbXlg3sgsND4IYNKIRkZu6H4PhEYBFGSUYbMakgMZinomDrng4GEedmGftlWK+PQEq2MZCSlkDURATyibN3Zt4cnDujZ2hhBDxqFZ82agG298DQ4GbgUXAv3bnBPcWpCUJlJgEigykhKhUHWfEuLO2BpVrRq93zQB1fnfCJiR7VMx7rXXuC0JBOXpNAOlyQG4axEfXuTekaSKLy6CkXJX/PesEHNdNxuvczi1TUqiyVD94UWWpnnk5XHkXZOwgbr2qGM9nD+P55ZWIW6YV4l6xHJY9DhveIcoyCWWdinvU/bA7fJzSiMSQrwe5Aaz1xDpXoGt54NtE066TaaD1VC3dxB9B60VldQqm1YPk5EF7n9toDyIxMSnGZBsm2zC228pkVXCs+VWTpmKtkdngvtr6aiTgICZWj4h/w4uC2loUYNReHDw+QGCQiZNueJgQEfKuEct83yvH7KOUbSygnPUIdNIYiLuiGw4rmhT3XtwZCiXi5ahImsuAO1HZrqdKKRfuvqntHUgpCVdZ+ApU1IwzXiM604HmEhglQSgMYxk0ds1s53cXPZMQsZF/2mBYuWUqvODQMLskIpNicLgiFwbLgtIKZFGpcuUkxoNMwfnwLer9tf70ilJ4/TF49zmVsXrKZLj6r5DTTJlggJLNyuc+9WU84QChESfjPu8h6Dqo+f3rPwAo/FUtpm75EnQP9LmSiqyLsaJzcSe18Z9XSqAUrA0RIV/f+L7cRL3PFcAR8Y/ngmM8iJ4R67xn5H7TxOu6pKADQOAtvBHhLsSMWo/UiymlApMCTIrZ/rNUC5KZuBhA0BuPsFKIj8tsxupumdslGFSfdUwLa9GUlJUAFqkpe1lV0jZQQyHbWEAlm9Bw0oXhpDMEJx5K94LEtJaIfE8p5RAAIcSrQAHQTUoZ2K0z2wsw/KqJh+G10N2CuB5OnHE6VrWBmRcEvwUeUe+aCRpYmyqb+N2FEMrXXlgBpTXqEpmeAOnxyEjjDCkllFciC0sgbEBcDKJLGsIThVhR35Ba1FQR9eGL8OE/wVcDJ5wH194LuTtIYS9YA5//HX59G5Aw8Y9UHHIlVpc+O2/0bJmw6RMl7qVzICoNht0P/a6BqFSs1hTuktW49XfRxUoIbou4VtbTeJETIB20HqCNB3G+ui9qRTybijL1ORyI/nGJUWeNGxRGrPJCTAox2IZs6FaKAawYJJk46U0UE3HQJeIC6YJGMoL67Odan7CbPfe5Kv+zvsv99lYkkmq2sI2FVLMVHTdZjCaNQTj2MpdSS0S+rheblNIUQuTv7wJvhSX+QoNgmaoUWVvnnYCFsc6HrDYRLgE5TkhQ3Zt26Hc3LQL5hRxy0nEEQ0EMJGeedRb3/+1BtW84DNVe5ZoJhiDag+iaiYjdrsBXdSW88yyJbz6JVl0BR5+uWu712YGrZOMi+PQRmPmRqgR51JVw0i2Q1n3nAm34VIz78iehZr2qzDjuReg1GRytTBix1oHxHBivE+uqRsoosCKirR9SL+Baj8jiZ2zrxt+PkEgsKrAca5FaCdURy7xWyE2U5VuPA510HGTgoQ86GZFFyQwqy1wIGb1v1uzZy5FI/M4CivgVH8U4iSaH8aQyAL2Vi817ipaI/DAhRFXkvgA8kce1pYb3nQJlu0BakkCpSaBQhUS6U3U86Q6EJbE2B7DKDIQOWpYLLdWFaRpQHkRu89b73bPiVCmC2oiZwgrcIYMfP/gvsb2yCeuCiRMnctyJJzB+8BDEthKEPwBuF6J7NsTHNm7cYRqqaNjRB0NVBcaEY/FdciuJB++gBMGq6fDpw7DgS9U67+Tb4PgbILH5Bdg6AsWw8nkVChksVTHuox6DrqeohdwWf4gSrB/BeAbMLwAd9LOp9E7GkCNJSWlf9t6+iozYfsoKL4oId1HEElf3IVQXylADaCShk4GTAXjogk6XiJslo4k13hBhh3F2OAEqVImBxFUYuhcXcXRjIin0Q9vLf5G0pEDZ3n0GHYCUknC1cs1YIYkzTiM604nmFFhFIcziEEjQ0pxoGS7QBVQHEVuqED6jsd9dSqj0QUF5XcSM6J5GbIyKqQ77fISDQdhSiIxJAqcDKysdPSWpqbiXFkFpobLiRx0C19xDdZfc5k4AFn+vxH3FL6oH6jl/g2OuhZjEnZ981Vplta97Q2Wq5vwBBt2mwiBb48uWPjDfhfCzIJcCaeC4GxxXgZaFUbP/C4+FF0vfDFoxXnwYdWKuRFxuVzBNEItOOk66EsUodDLwVUWDlUpKYl80msbh2+w5mpYYEESZaST6BtItbthekS3bEg6o/OpKXsFgQ6PnpCUxgxKpqQRGzSWwdEHQsCAgkXEgkgS4hGqqbVrgN0FY0FXg0HqS4LlaCbQ3oMTdGwS3U7Xci/eAEJimyagRI1i7bh3XnH0e4wYNRqSnYsXHgEowUxMyDCXsZUVq4TU+EdI0eOEz9XpDV4tlwdxPlbivn6cqQV70FBxx+S7ruTvK58GSl5XfXXOqZtMDb4bEFiQ/NcTaDMYLYLwClIEYDq43QD+32WShfRVliXsbWOBFERGvv0m81CYqqp+6URE3SgYuhtRZ4Trp6GSg0fRvFAirv68t8J2DSZgK8ihjLVXkU1tiIIfxJNGL6mrlqd5XBB4OMJFviJRghSRWWIIA3SUQTgGmBJ+JlKqvgnBpCF2o2u/+MBiWsnDdDnBogI6ojZip9KkyBDkpkBxbHw7p8yO2lTD/nQ+p8Pk445brWRb2MSQlUYk67EDcs1Q3Ju+KxpM3w/Drv+CzR2DLCsjoBVe8ApMu3HlDbMuEzZ8Rv+QxnGUzwZUIg++A/n+G6Fa0XZMShzaLKP1lCHwBSNBPA8f1oE3cJ6NZJBYWlRHBLq4T7nDcVtBKKKS0GUs8KiLY6bgYgE46vmoPwkwlJbEfgri9trmzTT0Siyq2UMYaKsjDwsBFLF0YRjJ98NQmAQCw7y1HHlAin8DlSEsSLDPxF5popsSdouPJcKhKkBtDKpnJraFluRAx6nm5MZKp6tAQGbGQFo3QNQx/EK24Ciq2qiqOXRJVV6ZICQLpD6homaoacOiIzDSSUpI4/Jij+fa77xgydCiYBqKsGMqLlWUenwRpmc232gv5cf/6Op4fnofSTdBtCFz3Pow7E/Sd/ClDFbDmNVj5HHg3onm64h3wIDHDr1et8FqKrAbjHTBeJMG9BEsmgOMmcFwLWjNF0fYiJGFMShuIePF2gl5CgxgDAAQxoCWDlYqH4XWC7ohsmxPxYKjWEt9vlqr2S1SpgWLKWEsZ6zDwo+Mmmd4k04dYuuw3F+gDSuRDVSb+AgMzKHHGangynegaWPmRxtkOgZ6jSgATNpGbKqHUB5qAzFhEeizCoakQx23l6GU1qjdWSpyqM+NQyxfSH1Bx7pXVoOuUOATOjGSSUlLw+/18//333H7zzbAtH72sCFEr7umZENWMuFsmfPwAfPMcsdUlhHuMRr/0BRh54s6t5qrVsOJZWPcmGF7IOARGP0lF9ATQHMS0VOCtRWC8CMa7QA2IkdSEniRonkFKTLdW/hU6nnpXSjEmJXUibsTmI7USCqnAoozGjc1qFzbTcNKLKMZHRDwtcktHI4bSSiXaCXakyn5BWKuhgI2UsoYglQh0EuhGCn2Ip+tev4jaFg4IkTcDKpkpXG2huQSx3Z04owVWYQijNAwCtC6qcTaWpdrulagsQNJiEF1iEU4dQgZsiZT+lRKZEI2VFo8jWvlPZSCoxL2iCnQNkZEKqUlsW7aMyUcdhWmaWKbJ2Sccy0l9ukLpNmRcImZKBo6YZgQ3HITKQijbAh/dCyNOpPLQKzF6H0RK6g6iVKSEgu9hxTOw5SvQXNDjPOh/PaSMUPu0JMZdBsD8SIm7NQOIUn52x9WgjSHo23NVJWutcMuxDqmVUYO/kZibFDdxpYADHEkIKwU3wxoIeO02dZ/MqrTZORKJSZAgVdvdqvEnVmDq6v8klky6MIxEeux1ce0dzX4t8qEKk1CFSeXqEEITeLo4iErWsUpDmJtCSDOSqdrFBQJkYTUUecGSkBKtxN3tiIh7aZ24kxQL6QlYesTnHgzVi7sQkJ6CSE1WlSWBoUOHsmDmdCjeBpURcUxMgdQuWM25WYJeqCgEbxkgwB0Njy2FroMwdiTQhg/W/0tZ7pXLISoDht0Hfa8Czy7CJxtirQHjJTDeQC2k9gPnU+C4CEQH9G/dDomJRcV2VngJFiWRxyVYVACyLrywGuUO0UhDJwsXw9BJbWCFp6GRSFlFOQCJthW+XyGxCFFDkOpmxLwKazu3m5No3MQTFU7HFYgnJ2YILg6cnIz9UuQtQ7L+vSqWPF5K1ycs3F11PBk6VJuYq7zIsETE6ziy3OAUUOxDFtaoRdUkDyIrFhHlVOKeHxF3UNUh0xNU5AyAz48oKUdWVitxT01CpCUjHA0+Vr8Pigugqlz57ZPTVdEwZ8SKrF14lRL81VC5DXxVat+EDHULroOuO4h68W6GlS/AmlcgVAbJI2DCW5B7Tss7LUkDzM8jVvsPgAP0UyNWe/vLBUsMLOdSpL6NKnwNxLsEkzIap9yrBU2NVHRScZMbEfBUvFVuhJlMSlKffaJQlU3bMQnXiXaoiZhX09D1JtBwEYebeGLpgpt43JHHbuLRIjJX6lUGkivmwBF42A9FvnCajwX3lVC5KkTa+Cg8GQ48CQJrvR/ptxAeDb17FCJah1IfsqBGJTIluFUiU7SrqbgnR8S9tr5MIIgsLkOriOSIpSQqcXc2yHjzVkPJNhXjrutqMTUlHRzbZcVJifBVQHUxBH3q9ZQciEvd8WKqlFA8A5Y/DZs+BiR0PQ0GXA/prYhusfLBeBXMV0BuVRUZnQ+CYwqIVkTb7IAwG/AzFT+/YMWrkgReHHWi7WJQxBpPbXBLQxDT7KKXP1xbktUW+N2NhYmFgUUYkzAWYSyMZu+bhPHFVEcWM2PRcKDjRMMZ2Tqa3DdEAJDUsK2JgAepwtjO/abjxk080aSSRM86AXcTj5PofSqkcU+zX4m8f7PFz+dtJaarg4Nf6kKXbpLVZaWY6/wIl1DinuCAcj8yrxqCJsS6ED0SEXHuZsQ9NiLu6mOSXp8qP1BVA5qGTE5AJifi8ERimqWEmipluftqwOFQ1SCT05oKtmlAdQl6ZRHCCIErCtJyITZ5x/1WzRCuLR/h2fAyVC4AZwIMuBH6X6uaYLcEaeHUfiTK8SYEvgUs0I4F54ugn9Du1nQmlQT4BR9TIzkJDqIYi1E1BmH0ICU51/5CdgK1vuoQNYTwEsZbd98XX4EpAmzBqhN22aiEws4RaJHqqgIfVhN3SbM04/lzEYubeBLpXmeZ1972d7/57mS/Ennj/9s78zg5ruref09VV2+z9OzaRpZkyzK2LLwbvGBjdhyeScAh+BEMwcFAcGK2vJDkkwdk4bEECAkEcMCBR7DD9gzYIcQmwRCwjXcjyfIqZFuyrWU0Mz1bT1dXnffHvd3T0+qeTSNp1L7fz6c/Xd11697bt2/96tSpe88dUzZ9pIv1r8ky+ekdDP/rs+h1ObyVKbyeAPIF9KFBmChBNkDW56A9hYRRQ3FXVciPGnEfGzdDIZf1QHfH1GmgakIP7H3GuGeCJKxYDZ09B4YEKD9MHdlnHvKmW4g7V+G3dTW2wOMS3PcX8Og1tBX2ELWsh7M/D8ddDsEcbz3jJyH6ZyhdS3vqSWLthsQHIHGlieR4ECglJrmbcf6LSe4CIgLW0847yPAiPNoZqFjhTuAXG0UpMVER73xqD5E3Qd76ro2gj6E1bjEQArJ4pAmiNjKJ1gbWdzCjdS54DAya/7e7u9uOdooaWv0xIfnRIQC6Wo17JUlbU45sWQo0lci3HuuxJj9E/oItECmZd/XjrSjipRV9ZJ8J/ZtOIMd2QkcaCcsPVG1gsVpxH8qbB6qFSQgCZGUfdHaYwGMAYYjkB80EpskCJFOwag3kuqdb46pQGDXiPj4ECLR2Qm4ZcdlvXivwqlAaMTFlxnfBtr+B/teQX/lmwp4X093Ty6xo0fravwzxzZjYDC9jZPIvKEYX091ycOuQxv6T5LnBuGMYxqODFi4hw0sIWNrj5o8WYuMMqQh1o/dpw0NbARWStBDQQpYeOlhLQAtJWkjSSkALARkj0Hkr0IsU81wQhIT1hTcIamdDE+fmGJrYsXCaSuRl+yQTn3mS1Ov6yP7ZOuSZAdg7iBYGTOjfNR3QnUHKbpnBOuIexzAwaCz3YgjpFLJ6BeTaEc8KcVSCwX34A3uQsAjpDKw+1ox1rxZrjWFsEIb3QGHM+OZzyyHXZyJDwtSD1zJxBMUBKOyBUgG8BCTb4bceh7Z1hHMZ/hg/CKWvQOn/AvtAVtk4Mr8H3jqKYwuPIxMxwAQ/I8z9J5p4kpJ1x2R4KSlObxg0yzGdsvskZLwi1iHjjLQMUPIK7CGkyNgBvmkAj0RFsFtZURHz8vvo/iK+puh5jgaDazZUS7MnmoGmEnlSQu6W0/H9CUrv/z7xvz0KP3gFsjoHPVljuZfFXYDuVui14l6KYM8Aum+/if2ezRjLva0qKuRkwQQNG7Kulmwr8bJV+LkaV4v1tzO8B0pFnto3xOUf+BC7BwYREa688kquvvrq6XUvTcDkXijsMxeHRNb42VNdsPthaGuwGEgZHYXoW0bc49swI2QugcTvg/cKE6NhgcSMUuA2JvgpRbYAirAOf+xN9LS82s3urCEmsqNCpsT7wO3xOu4T8JJJ/DhDxj5krBbv8rtPcsbZmAUXhfKoJtaQofAB9hVvZ6B4BwPhnQeVX3OJ/MoE+pkfU/z2VsilSfzlRWbETC5p3DKDo0aMq8U9DNFn9sD+IYhis1hHbze02MU+yg9Ty9EgRSDXBd3LiMvDIMsCXyxAfk/F306mDXqOIZEZ51Of/QdOP/10RkZGOOOMM3j5y1/OSSeeiITDSHEfhHYYZrIT0n2QaJl9lIwqxHfZETLXY2ajngDBJyHxZpB5jI+vzZoiBe5igp8yyd1ACZ+VtPJGMlzI8LBxM3ktzx2Bj4mqfN/jFdEuv4qMUewcI/aKBxwr+BWRbqHPbmerxDtLQJbBQbswihvb/5wh0nFG9SH2jTzIQPF29od3E6m5g2tLbKDXew3wdwvOv6lE3ntkP/GeR/A/cB6J956DDOXh6Sfh4V1W3NuMWyZImAlMO58Fe1KRazPDIMsjZeLYLLE3sBsKE2akTN9K6OyF8lDJUqlqfHu1v73LjG9PmRAFK1o6WLHS+L/b2to48XknsOvxBzhpeYgfh6gXQHYVpHtMRMhZEPZD+C9G3HULkAX/DWboozfPEMFVKBFFNjPBTylwO8o4Hp20cDFpLiRgfZUF2TzW4pTf+8DXeNsQJa/ATiYp1Q1OJRWBTpMjKHbixxly2Z5pQj6b9e14blCMBxkOtzAcbmU43MJQaQujpceBGEahPXEix2Quoyf5QrqTLyTldzMwMIAT+TLdGVK/ugoZH4MPXwc3/BKuvRzWtkNfO08FdzIe7YVCaFwyHUBvAoLE1IPSWKFUhFIISYVVnvGfJxIgT02VpYoSki0kOWbPCjNEsmMFtNcZC2/TE+bZ8fC93HfvXbzg5PdDIksUdKGJdhLBLOKuEcS30Bp8iaT/QwiL4J0FwZdsWN+FWdTmVzxGgZ8xwX8Tsx8hQ5pzyXAhSTYdtX72mBKRV2CEYkMRDxknYrLO0WIeTHpJEnGWFlYSkJ1mdQe0kCA9TbzLE266s84Sf66jGjMc38uw3slj+7czXNrCRLSzsj/traAj2ERn/FJavRNZ2/0Skt7izypvKpHXnjTy0W/CDXeYiUtveyks70RXdsLYODo+An7B+OOTgRHuysPUyAh7yY7x9RPGYvcSTDPA4tiE+o1CRBU0Cb1roLW7/vj2qGhGEkzuZXR4iNe/+d383Sf/ivZjzgE/hdY+eD3gR02ADkLhGNCnCfxOCtFbyLS+G7xTFt5W3m5GuIUJfkrELiBBijPJcCFpzlyyE47MRWlimkiXaj6X98fdB47XFrxplncbK6pEe+plxNurBChz7hPHXFBVBsN72FW4kacnbqIQP4uJZ7qOruB0ctm3kAtOJhecTMoK+oAdTHEoBB6aTOT9x3bD5D3w9pfDu16Jdreh9z+APv4EjBfoTxyH9HSaGaq+b6zr/JB5mDo2YkS6s8eEHkhVLdqgMYwNQX6vcc2IQEsHpZYuyLROuW8q6dX42Cf3mjC/qoSkef3bP8yb3nwFr7vs7TP/EC0Bg6D7QMdA8yCnQfD3DA6fA6TIePMXnYi9TPALwvZb0WA7IUKSk2nlt0hzLt4Riudh1jcNpwn0dOGeoMQEk52jRDJJbTRJAI+gItBZuglYTXEMEpqms7Wvss8n5dwmjkVFVRkKH+Dpwo3sKtzIRLQLjyR9qYtoL11Nl3cBy3rWHrH6LQmRF5EdmLhTEVBS1TNFpAv4JrAW2AG8QVUHZ8on7m6FO/4PmssSfe9moi9eD396BWRzyKrl0NmOeJ6x2gd2G3EvTprJS8v7jcBXz0wNJ42wj+4z/vcgaVZfausxLpkDhj+Gxmov7IVo0twFpPvQVA9XvO0dnLjx+bzv/e+vX3lVIA86YCx31KysJP3gpSF9k004P194xAAFfsEEPyfkIQBE1uCPvYHullfhc+iH2cWUGA+epeSNM8mvK6JdLer1RppM+bszZtJOsRU/TtOe7aqxujN1F1EeKJi2andjsR2LjKoyXNrKrokf8HThRsajJxEC+lIX8LzWP2ZF+pUEXnvFSj+SLAmRt1ykqvuqPn8Q+E9V/ZiIfNB+/pOZMoh72yh9/0eUvvwteHYvsvF4Y7WfsM6MlClOGmEvL9CRbTVhB6rHt6vC+LC12u1D2WwH9PZCpr3+pKXQTloqDprPQStkV5qRMuLxi5//nK9//ets2rSJU089FYCPfvSjXHzxxUABYRB0P2gI+CA95kXWljfjte0AIvbbIY8/J+RBABKso403k+a8ysgYv+XQiV/IOMM8yRA7yLMLbZ8S8QTpiji3kquIeMK+lz/XWt3O3+04ksRaYiTezP74p9y39xbGol8j+PSmXsSG1qtZkX4VSa/jSFfzAJaSyNfyWuDFdvtrwK3MIvLeY09Q+uvP451zGv4n/gTvRWchDz2EjI/aIZBDgECuE7qWQbZqjc1S0Qx9zO8z24nAPEht652KGFlNHCKTe/GKA9Zq9yHdC6leSEyf5Xf++eebGbRlNDSiHm8jIWPW+ZADrxvoAJn/1P+IQQrcToGfU2QroCRYQytvIsN5JOivSr341oWiFBhiiB0M8wRj7AFMPJJeTkTyHQSldvq6VrrQBo6jAtWI4dKD7Jv8BfuKtzFQvJOSmkDXPclzWd/6TlakL6741pcqS0XkFbhZRBT4kqpeAyxT1Wfs/meBWQd9aybNxFc/TrxpA4RFktd9Ee3fANEY6vvEXcvQjp4pH3oYIoURZHQAmRhGFOJMG9q5Es3kpqz2SjjgGCnlkeJ+pJTHV4j9LHH2GDTomBLnug9TY4RhRAYRRhAUJUMpWk6sHfh+upKOmuBQURRVbvsGB6esepUR4uQ9xKk70cRDIAqllfjFS/CKZyHRKoqAGbU9JezVeSyUwcFBlJhCYi/jyWcYTz5NyTcziJOlTjqKJ5EtriSI2hGEwcFBChRIzOxxm7XMQ5l+KZR5NNb5SJU5X2YrUzVmXB9jSO9kOL6LYb2biBEA0qyhx3sliYmTaIlOpzd5LEzA6IQyOoPRNJffOVuag22rpSLy56vqLhHpA24RkYeqd6qq2gvAAYjIlcCVACtXrkT7u8h89W9J33At3v498IVbiJb3o+1V0R2jEjI2gDc6gIRF1E+gbX1Erd0HLoStCtE4XrgfKQ4hGqFegKb6KHo51EuRSDRqRgVG8WQQYQghRglQ7SWiE8gQxfOcsuyNkWjZTNi2FQ22gcQQLceb+B8VYT+UDxYjKVIIdjPe9ySlln3k/RKoRybspX1iA9lwBYm4QbwSh2MJoaqM6+MM610Mx3cyrPdQYgiANP30eC8jJ2eT884kZScWDkaH/+J0sCwJkVfVXfZ9j4jcAJwN7BaRFar6jIisAHv/f+Cx1wDXAJyxvFu7Lj3F+N5f9Gq4/D1I1yr8nuVTQcLye008GVUzI7WrH8l2IJ433YkQTcLkfvMgNSoYKz3ZAakeJGhDRPCtxX6AyOuEeYDKfhMkDA+kE6TbLP4sBzosGl8owPOFdPddFLiNlq7NIBEey0nzejKcT8Jfi2QF6iwPOxNzGRaoKBPsZ5gnyfMUo+wGFC9Okg1XsszfQLv04yeTzGU1vcUYijjfPI7GMo/GOh+pMueKaswET5BP32bdL7czGZvHgBl/FSuSL6cneS49qfPI+qtmzOtQ/M5D1RZHXORFpAXwVHXEbr8C+EvgB8BbgI/Z9+/Pmld+EN71DvjdP4Lj7EpKW7ea2aj5vSbsgO9De695JWsszjgyD08nB8zDVDAPUTNrzUPU2rDB1WjR+NnZD2rXh5UceP1Abt6xY5QSMaMoo8TsI88/4rMSr/BKvMmz6Ok4/ZBZ7BFF8uwiz1MM8yQh5vdk6WEFp9HOagqDPoLQuUiRCx2OhRJpgUK0h8l4z9R7vIfJaC+FeDeFeC+T0R4K8V4gghDS3nJ6UxfQkzyPnuS5ZP3VUzGqmowjLvIYX/sNtoETwHWq+iMRuQv4lohcATwBvGG2jErHbYQPfcFY6Y/+En78RTj5jZCegHQL9K2FlhqxroxpH7CjY2KzbF52JaS6Z1lCL0IYhnjIjGUHkBazwpJ0gcweoqAaJSRmlJixysLUQgqhhR7+ngRr2G8X0F5MgS8/NC2L+ijPosR4BORYTTurybGaoOpWYbKJwho4lh6qSqiDFKxQG8GuFvLddt8eSuVzbxpCyush7fWR8vvIJU4knmwlLf2s6XoZLf66phX1Wo64yKvqduCAqZuqOgC8dF6ZeQI//pIR9x33Q7oVzrgC+k+qxJGpEBXsTNQBMytVfBPxMdUNidbG8V80AoZBB/FlGCEGkma5POkCmZ8/WglBxgiZQG1sFCGFTzcerQhJPMYIWDuvfGcjpsQwT9rXUxTtA6YMXfSxiRzH0MoyNxKmyVFVSjpKiWFGwv1ETBJrgUgLxDpJpAX73eT077RAzCSRmvQTpTxKRHqoDZ80nqTwJY0vqcq2Rwrfbo/FIaCMjBWmibexuo31rXVWmPJJk/KXkfb6aAs20Ou9iJTXS9pfRtrrtft6SXrdeDWrnJUHL7Qmnlt3n0dc5BeTxK6t8OV3wppT4IovwPlvgh07pwQ+LpnFricHILThhoN2ExzMjmmvi0bAkJmkpMOYB6oBSheRdpDwco0vCsDb3vY2brrpJvr6+ti8ZTPKpHXDjKEJM/ZFSOPTY4V9fncAc2HKWt/JQNt2JoK9QIxHgjZWsZxTybH6ObWKfbOhqkQ6QUGfoaSDRJMxxXg/k/F+ige8BivfV8R038z5VyP4eGURJwVxEsFjvBhVhD/SSeK6Qd2qsEZ40us2VrfXR1vqOFLeMtJ+b+W7tG/eE9L6nLHAF4umEnnN5OCvfgjrXzB9clNxyLpjhsznRBpa+iHZBX6Dp4X1hF0CkF7zEJVW4shO8Jml073lrZfzB1ddwVsvv4ISO1BKmCgqGYjaQLMEifSMeSyEEgXrW99Jnp2EmCGOCb+V9sKxLMtsoJUVbtm1JUjZwi4Lsnntp6iDVd/Vvg8SVwdb21+do5D0OklKF0mvi6y/hs7gNJJeF2EhRYJ2cm29FdH2Zbo1bizxqe8aWcm1Dw9VlbhyJzB1N7B/yDzA7+taT8rrwZuna9Mxd5pK5KPuY+D4F5oPg7+Cx78GvBLy4zbEQK/1s2frC/MchH2uYXyVCGWcmDHOveAYfr3jCZQYIY1HCx4tCD6lg1z1ZXqZMaPsroj6OHsB8EnSxirrX+9nZMgIQXvmuXXbeqSItUgxHpoSax0kjAenfxcPEuogE+E+Qh2m9OxwXXeFQUhKB0mvi6TXSdZfTUfw/Mrn4niSQDrozq2x33WRlBzS4OF/ef3d7kPQH0QEnzS+pKfdnxbtBKKM7/rgoaapRB4twYN/Z8R98H4Tm33jJdB2HCRzbM5/mOHCgzXHKFACQqjETxFM0wSY4Y/1hV1VaU+cxCkdf2U+U7IPTceIGcesoOQjtJCgDyFJghWL+pMnyZNnJ8M8xQhPExNiot71sYIzaKefFnprfOv1Qus6ZiPWEmE8bEW6LNBDhDq1PVraTUmH0b2j1uoeJNKxhnl6JAm8TmNle51kWEubl6M9s7LynXl1Vd4DySEzzIoesOundiedgDqaTOQT+a1w93uh+ww46+9h3WXw672Q6pyesKGwB8wm7AcSEzFoxb2AEfYAnxxCK2LjjXt11upcCLGEFBJ7GWMbeXYyaZ2aSdroYj3t9NPGShJLNFTwUiDSghHrikCbV1j1ObTfTYQDhDpE9OxIg1EcZTySksPTdgLJkfV7afM2WBdJWag7rKB3Vb73JTPNx1xxe7Q7gXYsDk0l8nGqFy75CXRsrPrWuCzQEpva/8i6YvIYV0wS6LSumDkst4dxiSgF44rRMVSKROyzI2I6rbAv3ipAJgxvxNPcTZ5djHXuAVE8AtpYQR+baKefFO3PqRC6qhGh5q0gDxPqcJVQD1ureg+hDiMDExXLO4yHiGZ8GOgZMZYOkl6OgA4y3lra0ssJvA6SXgdJr9Put9teB4G0I+JNiXSXE2nH0qC5RD69crrA636zwHX8COgIFWGXvnkKe0jMOFp5xYAgmkbiLhJ++6KNiFEUJSKiSERITEiJcZ7hAVroJTdxApmwjxW544/6B6axhoRxnlCHq4R6aju020UdIozzTIQDlDQ/B6vaDLXzaSchOTJ0k/XX0BGcYq3pDgLJVbaNVd1B4OXs6I0pV0hFtHNOtB1HJ00l8oAJJxB9D0rfhvg/QW8EUmZRa+lkKnzvDFnYAYdl37paH7YQILThk0XIEsWx/X7mZrzsssu49dZb2bdvH/39/XzkIx/hiiuuqCovJqRAbIVdbYAyDx+fFAkybORyEqQYmBio7FvqlOJxhsJfMRjex57SXRR1H+wdt8I9PKOvGsAjReDlCLwcScmRpJesdxyt6T4r0LlpYj21ncOXVMMRHw7Hc4mmEnnf2w4Ty4AIZB0k3geyHGTTHIS9/NB0urXukcGjByFbxw0TN8puGtdff/20zzExJQpEhER+EZXyxcLDJ8Ajad+NkHsklryPXTVmtPQ4g+G95lW8j3zpocpiIClWkpLlZP3VBMHJVrg7SHjtJCVnxbws1DkCrx2/ZmKZs6odjvnTVCIvTELiA5D4bZDTjbDLtroC39haT1RZ65lFWcTaeNVD634pElvhEwTRBH6cIvDTdiTO0eFXD3WQEd3MnpFHGSzex2B4f8WFkpA2OoNTOb71KjqD0+gMTmd0yBznfNUOx+GlqUS+FJ8IyY813G+s9XHUxoYxVqaYSR4NrfX5Uxb1uCLsZiy82GWkk6TxCPBIEMVG8L0l/FeEcZ6h8FcMhQ/Y168Yj54yO0c92hPPoz9zCR3B6XQGp9GWWH/AEL+ZYm47HI5Dx9JVlkXATEgKKek+VKpjwyQQWvBpWRRrvbwQtbHWixVRB/DtAtM+STwS876ATFtR6jBQiscZLm1hqHi/9ac/wFi0vbI/6x9DR3AqfVxKm2zimO7zSXgtM+TocDiOJE0n8hFDTHIvk9zDJPch6deyb0Do6u7Al26EloO21tV61UsyiUqJySpR9yqiHuARHFw5qgwMDJBOL37IAzDjxfPhNgarLPSR0iOUnzWkvRV0BKewOnMpnclT6Qg2kbQzFcv+cSfwDsfSpqlEXv1n2MPlAHh0kOYF9PevYu/ODIN7R4HRheVLjBIR23etTKAC1MOTBB7+gnzqkY1/4/v17ybS6TT9/f11982rHJ0gHz7EcLiF3aW7GdGtjD/7qI2jYwJEdQansDJ9MR3B8+kITiHt9x10uQ6H48jSVCIP0MrvkuYMEqwzU/kDaFs39+PL0RpHebbyKofh9UjQwjJaWUYry5kcSOARHNQQvUMxzC+MR8mXHmQo3MxwuJnhcAsjpUcqF6cE7bTKRta3vJOO4BQ6k6eQ9la66H4ORxPSVCIv0QraZl9bZBoxEePsrRL13UR2pE2CDK0sp4+TaWU5WbqnxYAZWAIPE4vxIMPhFobCLRVBH422Y8IhQ8rrpSPYxPL0K8gFm+hIbGJ8KI2IuKnzDsdzgKYS+blQYpIxdldEfYy9VWO5c3SwllaW08ryJRUqQFUpxLvZH9/BqG7j8cHtDIebp0a5ABm/n47EJvozv2UEPdhE2l92QF4TcuQvTg6H4/DQ9CJfZHSa62WiEmRbaKGXPjbSynJaWEbA/FZ1OlSoRoyWtjNc2sJwuNW8SlspxlPi3MI6OoPTWJu9nFxwMh3ByZWHog6Hw1Gm6UR+nIFpol5eKMMjoJVldHKsFfW+JTE2PdJxxvRR8mNPMVzaynD4ICPhtkoQLY8kbYkTWJ56OblgI4yvokWex7KeNUe45g6H42jgyKvcIlJMDLGN7wIQkK24XVpZToauI7peqWrMePQU+dI2hsMHyZe2kQ8fZCx6AlDIQyAd5IKNrG25nFxiI7lgI62J9dNWzRkoOFeLw+GYO00l8p4mWctFtLKcJK1HzJ8exiPkSw+Rt2JuRP2hqoBcQou/jlywkW5+gxY5gdVdL3QjXBwOx6LTVCKfiLJ0c/xhK081osBOnp64neHSNvLhNvKlbYxHT1bSBJKjPTiRYzK/Qy44kfbEibQlTiDhmcXFy0Mo3TJoDofjUNBUIn+oUI0Yi55kpPSIeYX2vfSYWY1+CMCj1T+WzuBU1mQvoz1xIrngJGedOxyOI4oT+SqMmO9gpPRojZg/bsTckvZW0B6cQEt8GllZz6rOs2lLHH9AaFyHw+E40jwnRT7W0pSYhw9bUX+Y0dJ24qpFrjP+KtoSG+hJnU9bYoN9HU/gtQFTrpaOwLlaHA7H0qSpRT7WkLHoCSvkZav8UUZLjxNTrKTL+P20JzbQl7qwIuatieMJvNYjWHuHw+E4eJpK5EvkeXjkM+RLD1fEXAkr+7P+MbQljqcvdRFtieNpS5xAW2K9i6TocDialqYS+YLu5KHRT5H1j6E9sYFlqZfSnthAW7CBVn99ZUSLw+FwPFdoKpHPyrH8xvL7SLgHoA6HwwFwBKeAHgI80k7gHQ6Ho4qmEnmHw+FwTMeJvMPhcDQxTuQdDoejiXEi73A4HE2ME3mHw+FoYpzIOxwORxPjRN7hcDiaGCfyDofD0cQ4kXc4HI4mxom8w+FwNDFO5B0Oh6OJcSLvcDgcTYwTeYfD4WhilrTIi8irRORhEXlMRD54pOvjcDgcRxtLVuRFxAc+D7waOAm4TEROOrK1cjgcjqOLpbxoyNnAY6q6HUBE/hV4LfBgowOiKKosrn04GBwcPOx5HIkyFyMPV+bhOX4heRytZc6Xpfo7Z0tzsPVeyiK/Cniq6vNO4AW1iUTkSuBK+3Gyp6dny2GoWzU9wL7DnMeRKHMx8nBlHp7jF5LH0VrmfFmqv3O2NCfMo7xpLGWRnxOqeg1wDYCI3K2qZx7O8hejzPnmcSTKXIw8XJmH5/iF5HG0ljlflurvnC2NiNw9nzpWs2R98sAuYHXV5377ncPhcDjmyFIW+buA40VknYgkgTcCPzjCdXI4HI6jiiXrrlHVkohcBfwH4APXqurWWQ675tDX7JCUOd88jkSZi5GHK/PwHL+QPI7WMufLUv2ds6VZcL1FVRd6rMPhcDiWOEvZXeNwOByOg8SJvMPhcDQxS1bkRWSHiGwWkfsPZviQzeuHItLRYN+1IrJHRLbUfN8lIreIyKP2vfMgyv9LEXmZ3V4tIj8RkQdFZKuIXD3fMkUkLSJ3isgDNo+PVO1bJyK/FJH9InKrfWi90Hp/uTzLWEQ6ROQ7IvKQiGwTkXPmU+cZyqi0f3U71aR5sYgM275wv4j876p91e0ZVbdnTR5fFZFLG+xr2J416W4VkTOrPvsicp+I3DSX9DX76rbnXOts919t222riLynQZpHbdvV9u9P2rJ/JSI31Ds/bLvfNMM5cqqI3FE+R0Xk7Dp5/ExExmuPnQkRGZ1r2jrHNjy/5lrmXPtDzfFr7X/RsD/US1/z3ax9YqZ6N0RVl+QL2AH0HIZyLgBOB7bUfP8J4IN2+4PAxxepvBXA6Xa7DXgEOGk+ZQICtNrtAPgl8EL7+VvAG+32F4F3LVK9vwb8vt1OAh2L0U6N2r8mzYuBm+bQnqPV7VmT7qvApfNtz5p0twJnVn1+H3DdDHWbln4u7TmPOp8MbAGymAEUPwbW10n378Af1+nfrwASdvvj9f63crvPcI7cDLzabl8M3Fonj48C35zp/61zzOhB9NOG59dcy5xrf6g5fi3wzEz9oU762vactU8spK2WrCU/F6yl8wVrTWy3lse19ir41ap0O0Skx149t4nIP9kr9M2YoZr762T/WkyjY99/s075bxWR71kLdoeIXCUi77NX8ztEpKuqnmWL7HbgtSJyL3AbZlbvqvmUCdwA3CAiO4Cr7PFfE5E7gJcC37G//0ngN23dPiIi94q5O/qciHxNRP5bRJ4QkdeJyCfsvh+JSGDLulVEzhSRHPBmYJ2IPAD8DEgtRjthLhJRbTtV1xm4Fmg54B8CVPUZVb235usbbfsvq/n+AhG5zfaVS6vyUFUtW0SBfTUakfDb1srbDvxP4MsN0tWmf0REXmR/Ww4jnF+x5RdVdajB8XXrDJwI/FJVx1W1BPwUeF2d43djYj8dW52Hqt5sjwO4AzMPpR6twB8B3wb6RUSq9inQbrdzwNN1jn/E7lsj5q7iE7UJxNx93m773183qMecqO4PqjoCbGPq/JpTmXPtDyJyhrX2HwD+BHNRadgfatK/u2bfnPrEQtpqKYu8AjeLyD1iQhc0ohM4B3gvZhz9Z4CNwCYRObVO+uOBz6vqRmAIeH2DfJep6jN2+1mgVjDKnIw5uc4C/gYYV9XTMGJ+eYNj9qnq6RgL5wUYS2G+ZV4KjACfBraq6gnAfUBcdfIOMNXBy2V+ATgXOA54CXAJ8C/AT1R1EzAB/EZNeesw1s0LgBjIAH+wgDo3aqdG/0G5zt8HzrEnyL+LyMYG6Vsw/eE0zIXo7TX7VwDnA68BPla9Q4zr5X5gD3CLqv6S+iRU9WyMoEWY9piJcvr3AB+y360D9gL/bA2CL4tI3YvYDHXeArxIRLpFJIuxpFfXOR6gD9heJ48yb8NY/PU4zdb9ZRjr8ryqfe8BPikiTwF/C/xpgzxOwhgzm4DfEZHaen4W+ILtf8/UHrxQRGQtpv71/ssZy5xjf/hn4A9V9RTMufQsM/eH6vS1zLVPzLutlrLIn29P8FcD7xaRCxqku1HNfctmYLeqblbVGNiKuSWq5deqer/dvqdBmmnY/BtZdj9R1RFV3QsMAzfa7zfPkPf/E5FW4E3A46qaX0CZw/aP3gm0isjJGKslaFSmfb8H6AD+XVVDW08f+NEM9S7Pp/hzK8y7MBeH+da5UTs1siLLdf4BcLs9Of4B+F5tQtueCrzDtme9//Z7qhqr6oPUXIxUNVLVU21dzrbtWbdOIvIa4FGgu0Gaer+huj4JjPvjC7Y9xzCurnrUrbOqbsO4WW7G/Hf3Y++I6nCzPeaA3y0ifw6UgG80OPZOVd2JadsJprfpu4D3qupqjJH1lQZ5/AJjfBQwAQbX1Ow/D7jebn+9QR7zwvaH7wLvqXd+zVbmbP1BzDOMDlX9me0P9wOFGepTSd+gzLn2iXm31ZIVeVXdZd/3YNwTBzzUsUza97hqu/y53mSv6jRRgzQAu0VkBYB93zNL+bV1aFR+udzvYqyn6hBzCykzAv4beBWQB1IiUi63m6lQEJNV6b3yZ3tBDK1AN6r3TpO0Ys3chgmotNA617aTP8sxI5g7CVT1h0AgIuXyse6l79rfURbVev9tdR2EOthb5J9g2rNRnc4DXokRvH8FXiIi/zLLb6iuz05gZ1V7fgdzgs90/AF1VtWvqOoZqnoBph890iCPYr08rOvvNcCbqv7/mcqH6W36FqYuYt+m8TlaXX6jc27RJuxU9YdvVPWHesxa5hz6A5j+8GJgA7P3h0bMp0/Mq62WpMiLSIuItJW3MQ+JDnd0yR9gOjH2/fuLmPdnMVb3dQssMy1ToyEEuBB4yH7ehXHlgOl4B11vVX0WUBEpR8J7PsYan0+dD4aKxSxmBIeHcUVhfcRfwbRnuJDMRaS33J4ikgFezlR7HoCq/immDXZiwm38l6r+7lzLs+35VFV7vpQZQmjPUO8++34MxhVW259mOvZVwP8CLlHV8fmWbXka0/fAuCseXWA+v8C0I5i72wVT3R9U9dMLKXMu/cGK/5CInG/7w1cxF9m6/aE6fb0y59En5t1WSzWswTLMg0UwdbxOVX808yEL5vXAO4AeEdkJfEhVv4LxXX5LRK4AngDesEjlpWxemzGuqFUicrG1UOdaZgvwEzELq6wArlfVm6xldhtm1MfzMBfGr2BO5oNlEviGmCGZBeBX9vuDbad3Yny1SYxfchxjxbRhLhqfwnT4s+wDqwnM6KGyNXMe5qHwZiBj/ah/Ns86rMA8uPYxF5Bvqeqsw+AOkj9kqj23A7+3gDy+KyLdmIvbuxs8vL0A83C81fbv8jn/OUxfvMWeZ3eo6jvrFSIi12MMhg7g0yLi23Pk7cBn7Z1jgamQ39VU/l9bfr0FH64GrhORP+HgjYRKf7B9AeDP7Pk11zLn2h9+D7hWRBTrEpuF2dLPpU/Mu61cWAOHw+FoYpaku8bhcDgci4MTeYfD4WhinMg7HA5HE+NE3uFwOJoYJ/IOh8PRxDiRdzQVYiJR3i8mNtEDIvJ+EVm0fi4mDs/Kqs+VSJ2LkO9eO6X9URH5DxE592DzdTiW6jh5h2OhTNjp6OXJQtdhgmh9aKaDqrHjwBuFCHgrZv7B0wCq+vsHU9kavqmqV9k6XIQJoXCRDWHgcCwIZ8k7mhYbEuNK4CoxvFVEPlfeLyZW+ovt9qiIfMpOuDpHRP63iNwlJkb4Nfb4S4EzMRNW7heRjFTFjBeRy8REB9wiIh+vKmdURP7G3lnUi45Zr+4/wazrOVNwPodjVpzIO5oaVd2OiY3TN0vSFkzo3lNU9efA51T1LFU9GRN18zWq+h3gbkysl1NVdaJ8sHXhfBwzvf9UzAzd36zK+w4bYK1edMxG3IuZuexwLBgn8g6HoRw0rsxFYlbY2owR7kbhjcuchVk0Y68N9fwNTEgBMAG6ytPi5xT51FI3iJrDMR+cT97R1IjIsRgB34MJqVtt2KSrtgtlP7yIpIF/xKzq9JSIfLgm7XypjvI5U+TTWk7DBF5zOBaMs+QdTYuI9GKWQPycFdkdwKki4olZuKJRaNyyoO8TE5e8ekWmEUzwtFruBC4UswKZD1yGWa1poXW/EOOP/6eF5uFwgLPkHc1HORJlgLHcv45ZPQtMmNZfY0K4bsP4vA9AVYdE5J8wo2iexSwRWearwBdFZAKzIln5mGdE5IOY2OMC/Juqzjei4u/YULRZW8/Xu5E1joPFRaF0OByOJsa5axwOh6OJcSLvcDgcTYwTeYfD4WhinMg7HA5HE+NE3uFwOJoYJ/IOh8PRxDiRdzgcjibm/wNFI4L7jJaz8AAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "hri.method = hri.METHODS.KRUEGER_PFISTER\n", + "fig, ax = hri.result_sri_figure()\n", + "ax.legend(loc='upper left')\n", + "ax.grid(color='grey', linestyle='-', linewidth=0.3)\n", + "ax.set_ylim(0, 230)\n", + "old_labels = ax.get_xticklabels()\n", + "old_labels[2] = ''\n", + "old_labels[5] = ''\n", + "old_labels[19] = ''\n", + "ax.set_xticklabels(old_labels)\n", + "handles, labels = ax.get_legend_handles_labels()\n", + "ax.legend(handles[::-1], labels[::-1], title='SRI', loc='upper left')\n", + "plt.savefig(\"kruegerpfister.svg\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Heavy rain index allocation of a specific rain event" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "calculating rainfall_sum data-frame: 100%|██████████| 21/21 [00:00<00:00, 163.22it/s]\n", + "calculating return_periods data-frame: 100%|██████████| 21/21 [00:00<00:00, 58.97it/s]\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
startenddurationrain_sumlast_eventmax_return_periodmax_return_period_duration
402008-07-20 17:43:002008-07-21 08:57:000 days 15:14:0028.02 days 02:48:002.8310205760.0
362008-06-23 19:50:002008-06-24 19:48:000 days 23:58:0035.82 days 21:52:005.44279815.0
962009-08-27 19:52:002009-08-29 13:25:001 days 17:33:0055.14 days 23:06:0019.71872520.0
882009-07-18 08:55:002009-07-18 13:19:000 days 04:24:0058.02 days 01:56:003.379539240.0
952009-08-21 19:49:002009-08-22 20:46:001 days 00:57:0064.24 days 03:04:003.97573520.0
4332016-05-30 12:38:002016-06-06 12:55:007 days 00:17:0066.44 days 17:43:006.7937885.0
972009-09-04 00:31:002009-09-05 01:32:001 days 01:01:0069.85 days 11:06:002.6056741080.0
1932011-07-27 20:37:002011-08-04 07:45:007 days 11:08:0070.53 days 05:28:0012.73245220.0
3912015-07-08 11:50:002015-07-09 00:26:000 days 12:36:0077.88 days 13:52:005.981540720.0
3312014-05-07 16:49:002014-05-18 20:03:0011 days 03:14:00109.94 days 03:29:002.7988254320.0
3022013-08-24 01:33:002013-08-29 08:20:005 days 06:47:00114.19 days 12:51:003.5438552880.0
392008-07-12 22:10:002008-07-18 14:55:005 days 16:45:00122.82 days 11:12:006.296355120.0
2442012-07-09 18:49:002012-07-16 05:43:006 days 10:54:00123.15 days 23:07:003.7205308640.0
4412016-07-21 22:28:002016-07-28 14:14:006 days 15:46:00136.65 days 00:03:004.6637868640.0
2872013-05-02 02:45:002013-05-07 21:38:005 days 18:53:00148.29 days 05:06:0032.6024892880.0
\n", + "
" + ], + "text/plain": [ + " start end duration rain_sum \\\n", + "40 2008-07-20 17:43:00 2008-07-21 08:57:00 0 days 15:14:00 28.0 \n", + "36 2008-06-23 19:50:00 2008-06-24 19:48:00 0 days 23:58:00 35.8 \n", + "96 2009-08-27 19:52:00 2009-08-29 13:25:00 1 days 17:33:00 55.1 \n", + "88 2009-07-18 08:55:00 2009-07-18 13:19:00 0 days 04:24:00 58.0 \n", + "95 2009-08-21 19:49:00 2009-08-22 20:46:00 1 days 00:57:00 64.2 \n", + "433 2016-05-30 12:38:00 2016-06-06 12:55:00 7 days 00:17:00 66.4 \n", + "97 2009-09-04 00:31:00 2009-09-05 01:32:00 1 days 01:01:00 69.8 \n", + "193 2011-07-27 20:37:00 2011-08-04 07:45:00 7 days 11:08:00 70.5 \n", + "391 2015-07-08 11:50:00 2015-07-09 00:26:00 0 days 12:36:00 77.8 \n", + "331 2014-05-07 16:49:00 2014-05-18 20:03:00 11 days 03:14:00 109.9 \n", + "302 2013-08-24 01:33:00 2013-08-29 08:20:00 5 days 06:47:00 114.1 \n", + "39 2008-07-12 22:10:00 2008-07-18 14:55:00 5 days 16:45:00 122.8 \n", + "244 2012-07-09 18:49:00 2012-07-16 05:43:00 6 days 10:54:00 123.1 \n", + "441 2016-07-21 22:28:00 2016-07-28 14:14:00 6 days 15:46:00 136.6 \n", + "287 2013-05-02 02:45:00 2013-05-07 21:38:00 5 days 18:53:00 148.2 \n", + "\n", + " last_event max_return_period max_return_period_duration \n", + "40 2 days 02:48:00 2.831020 5760.0 \n", + "36 2 days 21:52:00 5.442798 15.0 \n", + "96 4 days 23:06:00 19.718725 20.0 \n", + "88 2 days 01:56:00 3.379539 240.0 \n", + "95 4 days 03:04:00 3.975735 20.0 \n", + "433 4 days 17:43:00 6.793788 5.0 \n", + "97 5 days 11:06:00 2.605674 1080.0 \n", + "193 3 days 05:28:00 12.732452 20.0 \n", + "391 8 days 13:52:00 5.981540 720.0 \n", + "331 4 days 03:29:00 2.798825 4320.0 \n", + "302 9 days 12:51:00 3.543855 2880.0 \n", + "39 2 days 11:12:00 6.296355 120.0 \n", + "244 5 days 23:07:00 3.720530 8640.0 \n", + "441 5 days 00:03:00 4.663786 8640.0 \n", + "287 9 days 05:06:00 32.602489 2880.0 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "events = rain_events(hri.series, min_gap=pd.Timedelta(days=2))\n", + "events[COL.DUR] = event_duration(events)\n", + "events[COL.LP] = agg_events(events, hri.series, 'sum').round(1)\n", + "events[COL.LAST] = events[COL.START] - events[COL.END].shift()\n", + "\n", + "hri.add_max_return_periods_to_events(events)\n", + "\n", + "events = events[events[COL.LP] > 10]\n", + "events = events[events[COL.MAX_PERIOD] > 2]\n", + "\n", + "events.sort_values(COL.LP)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "hri.add_max_return_periods_to_events(hri.rain_events)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
startenddurationrain_sumlast_eventmax_return_periodmax_return_period_duration
7982013-05-07 20:57:002013-05-07 21:38:000 days 00:41:002.00 days 08:16:0032.6024892880.0
7972013-05-05 20:46:002013-05-07 12:41:001 days 15:55:00119.60 days 17:29:0030.5853042880.0
2892009-08-28 23:41:002009-08-29 00:42:000 days 01:01:0049.31 days 03:44:0019.71872520.0
5662011-08-03 19:52:002011-08-04 07:45:000 days 11:53:0054.71 days 23:09:0012.73245220.0
7992013-05-10 17:55:002013-05-10 22:21:000 days 04:26:003.92 days 20:17:007.4121518640.0
\n", + "
" + ], + "text/plain": [ + " start end duration rain_sum \\\n", + "798 2013-05-07 20:57:00 2013-05-07 21:38:00 0 days 00:41:00 2.0 \n", + "797 2013-05-05 20:46:00 2013-05-07 12:41:00 1 days 15:55:00 119.6 \n", + "289 2009-08-28 23:41:00 2009-08-29 00:42:00 0 days 01:01:00 49.3 \n", + "566 2011-08-03 19:52:00 2011-08-04 07:45:00 0 days 11:53:00 54.7 \n", + "799 2013-05-10 17:55:00 2013-05-10 22:21:00 0 days 04:26:00 3.9 \n", + "\n", + " last_event max_return_period max_return_period_duration \n", + "798 0 days 08:16:00 32.602489 2880.0 \n", + "797 0 days 17:29:00 30.585304 2880.0 \n", + "289 1 days 03:44:00 19.718725 20.0 \n", + "566 1 days 23:09:00 12.732452 20.0 \n", + "799 2 days 20:17:00 7.412151 8640.0 " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hri.rain_events.sort_values('max_return_period', ascending=False).head()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/markus/.local/lib/python3.8/site-packages/pandas/core/series.py:1056: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " cacher_needs_updating = self._check_is_chained_assignment_possible()\n" + ] + }, + { + "data": { + "text/plain": [ + "start 2013-05-06 20:00:00\n", + "end 2013-05-07 12:41:00\n", + "duration 1 days 15:55:00\n", + "rain_sum 119.6\n", + "last_event 0 days 17:29:00\n", + "max_return_period 30.585304\n", + "max_return_period_duration 2880.0\n", + "Name: 797, dtype: object" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "event = hri.rain_events.loc[797]\n", + "\n", + "event[COL.START] = pd.to_datetime('2013-05-06 20:00:00')\n", + "event" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "calculating rainfall_sum data-frame: 100%|██████████| 21/21 [00:00<00:00, 171.82it/s]\n" + ] + } + ], + "source": [ + "rainfall_sum_frame = hri.rainfall_sum_frame[event[COL.START]:event[COL.END]]\n", + "return_periods_frame = hri.return_periods_frame[event[COL.START]:event[COL.END]]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 max. Regensumme
5 min9.9
10 min16.3
15 min21.9
20 min28.2
30 min40.7
45 min46.3
60 min57.0
1.5 h69.6
2 h74.3
3 h76.5
4 h78.7
6 h89.6
9 h92.8
12 h93.0
18 h96.4
1 d98.2
2 d119.6
3 d136.0
4 d136.0
5 d143.2
6 d146.2
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rainfall_sum_frame.\\\n", + " max().\\\n", + " rename('max. Regensumme').\\\n", + " to_frame().\\\n", + " rename(minutes_readable).\\\n", + " style.bar(vmin=0, vmax=100).format(\"{:.1f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 max. Wiederkehrperiode
5 min1.4
10 min1.5
15 min1.9
20 min3.2
30 min7.7
45 min6.0
60 min9.3
1.5 h19.1
2 h21.6
3 h17.9
4 h16.4
6 h24.6
9 h20.8
12 h16.2
18 h15.8
1 d17.7
2 d30.6
3 d25.0
4 d10.7
5 d10.1
6 d8.6
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "return_periods_frame.\\\n", + " max().\\\n", + " rename('max. Wiederkehrperiode').\\\n", + " to_frame().\\\n", + " rename(minutes_readable).\\\n", + " style.bar(vmin=0, vmax=100).format(\"{:.1f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "sri_table_event = pd.DataFrame(index=hri.duration_steps)\n", + "\n", + "hri.method = hri.METHODS.KRUEGER_PFISTER\n", + "sri_table_event[hri.METHODS.KRUEGER_PFISTER] = hri.get_event_sri_max(event[COL.START], event[COL.END])\n", + "\n", + "hri.method = hri.METHODS.MUDERSBACH\n", + "sri_table_event[hri.METHODS.MUDERSBACH] = hri.get_event_sri_max(event[COL.START], event[COL.END])\n", + "\n", + "hri.method = hri.METHODS.SCHMITT\n", + "sri_table_event[hri.METHODS.SCHMITT] = hri.get_event_sri_max(event[COL.START], event[COL.END])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Specific rain event with allocation of heavy rain indices depending on the method and duration. " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 KruegerPfisterMudersbachSchmittmax. Wiederkehrperiodemax. Regensumme
5 min1111.49.9
10 min1211.516.3
15 min1211.921.9
20 min1323.228.2
30 min2437.740.7
45 min2436.046.3
60 min2539.357.0
1.5 h36419.169.6
2 h47421.674.3
3 h46417.976.5
4 h46416.478.7
6 h47424.689.6
9 h47420.892.8
12 h47416.293.0
18 h47415.896.4
1 d57417.798.2
2 d68630.6119.6
3 d78525.0136.0
4 d57410.7136.0
5 d57410.1143.2
6 d5738.6146.2
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cmap = ListedColormap([(1,1,1)] + list(hri.indices_color.values()))\n", + "_df = sri_table_event.astype(int).copy()\n", + "_df['max. Wiederkehrperiode'] = return_periods_frame.max()\n", + "_df['max. Regensumme'] = rainfall_sum_frame.max()\n", + "_df.rename(minutes_readable).style.\\\n", + " background_gradient(subset=[hri.METHODS.SCHMITT,\n", + " hri.METHODS.KRUEGER_PFISTER,\n", + " hri.METHODS.MUDERSBACH], cmap=cmap, vmin=0, vmax=12).\\\n", + " bar(subset=['max. Wiederkehrperiode', 'max. Regensumme'], vmin=0, vmax=100).format(\"{:.1f}\", subset=['max. Wiederkehrperiode', 'max. Regensumme'])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/example_python_api.html b/examples/example_python_api.html new file mode 100644 index 0000000..30d84bb --- /dev/null +++ b/examples/example_python_api.html @@ -0,0 +1,1246 @@ + + + + + + + + Intensity Duration Frequency Analyse — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + + + + + +
+
+
+
+ +
+
[1]:
+
+
+
from idf_analysis.idf_class import IntensityDurationFrequencyAnalyse
+from idf_analysis.definitions import *
+import pandas as pd
+from os import path
+%matplotlib inline
+import matplotlib.pyplot as plt
+plt.style.use('bmh')
+
+
+
+
+

Intensity Duration Frequency Analyse

+
+

Parameter

+

series_kind:

+

SERIES.PARTIAL = Partielle Serie (partial duration series, PDS) (peak over threshold, POT)

+

SERIES.ANNUAL = Jährliche Serie (annual maximum series, AMS)

+

worksheet:

+

METHOD.KOSTRA: - DWA-A 531 - KOSTRA - empfohlen - Stützstellen: 60 min und 12 h

+

METHOD.CONVECTIVE_ADVECTIVE: - DWA-A 531 - Unterscheidung in überwiegend konvektiv und advektiv verursachte Starkregen - Stützstellen: 3 h und 24 h

+

METHOD.ATV: - ATV-A 121 - Stützstellen: 3 h und 48 h

+

extended_durations = Inkludiert die Dauerstufen [0.75d, 1d, 2d, 3d, 4d, 5d, 6d] in der Analyse (in d=Tage)

+

Standardmäßig berechnete Dauerstufen [5m, 10m, 15m, 20m, 30m, 45m, 60m, 1.5h, 3h, 4.5h, 6h, 7.5h, 10h, 12h]

+
+
[2]:
+
+
+
idf = IntensityDurationFrequencyAnalyse(series_kind=SERIES.PARTIAL, worksheet=METHOD.KOSTRA, extended_durations=True)
+
+
+
+

I used the rain-time-series from ehyd.gv.at with the ID 112086 (Graz-Andritz)

+
+
[3]:
+
+
+
data = pd.read_parquet('ehyd_112086.parquet')
+
+
+
+
+
[4]:
+
+
+
output_directory = 'ehyd_112086_idf_data'
+
+
+
+
+
[5]:
+
+
+
data.head()
+
+
+
+
+
[5]:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
precipitation
datetime
2007-09-18 11:09:000.1
2007-09-18 11:12:000.1
2007-09-18 11:13:000.1
2007-09-18 11:14:000.1
2007-09-18 11:20:000.1
+
+
+
+
[6]:
+
+
+
data.tail()
+
+
+
+
+
[6]:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
precipitation
datetime
2016-12-28 22:24:000.006
2016-12-28 22:25:000.092
2016-12-28 22:26:000.006
2016-12-28 22:45:000.090
2016-12-28 22:46:000.006
+
+
+
+
[7]:
+
+
+
idf.set_series(data['precipitation'])
+
+
+
+

Bei jeder neuen Berechnung werden Zwischenergebnisse erstellt, welche nur abhängig von der gewählten Serie series_kind und der angegebenen/benötigten Dauerstufen sind. Dieser Vorgang dauert einige Sekunden. Auserdem enthalten diese Zwischenergebnisse die Parameter, die zur Berechnung der Regenhöhe und Regenspende benötigt werden. Hier sind bereist die Berechnungsverfahren und Stückpunkte laut dem gewählten worksheet berücksichtigt.

+

Um Zeit zu sparen, gibt es die Möglichkeit, die Parameter zwischenzuspeichern und bei erneutem Aufrufen des Skripts werden diese Parameter nicht mehr berechnet, sondern aus der Datei gelesen.

+
+
[8]:
+
+
+
idf.auto_save_parameters(path.join(output_directory, 'idf_parameters.yaml'))
+
+
+
+

Abgerufen können diese Zwischenergebnisse mit:

+
+
[9]:
+
+
+
idf.parameters
+
+
+
+
+
[9]:
+
+
+
+
+<idf_analysis.idf_parameters.IdfParameters at 0x1a767557310>
+
+
+
+
+

Berechnungen

+
+
[10]:
+
+
+
idf.depth_of_rainfall(duration=15, return_period=1)
+
+
+
+
+
[10]:
+
+
+
+
+19.031596336052708
+
+
+
+
[11]:
+
+
+
print('Resultierende Regenhöhe h_N(T_n={t:0.1f}a, D={d:0.1f}min) = {h:0.2f} mm'
+      ''.format(t=1, d=15, h=idf.depth_of_rainfall(15, 1)))
+
+
+
+
+
+
+
+
+Resultierende Regenhöhe h_N(T_n=1.0a, D=15.0min) = 19.03 mm
+
+
+
+
[12]:
+
+
+
idf.rain_flow_rate(duration=15, return_period=1)
+
+
+
+
+
[12]:
+
+
+
+
+211.46218151169674
+
+
+
+
[13]:
+
+
+
print('Resultierende Regenspende r_N(T_n={t:0.1f}a, D={d:0.1f}min) = {r:0.2f} L/(s*ha)'
+      ''.format(t=1, d=15, r=idf.rain_flow_rate(15, 1)))
+
+
+
+
+
+
+
+
+Resultierende Regenspende r_N(T_n=1.0a, D=15.0min) = 211.46 L/(s*ha)
+
+
+
+
[14]:
+
+
+
idf.r_720_1()
+
+
+
+
+
[14]:
+
+
+
+
+11.410836729727
+
+
+
+
[15]:
+
+
+
idf.get_return_period(height_of_rainfall=10, duration=15)
+
+
+
+
+
[15]:
+
+
+
+
+0.1430180144131331
+
+
+
+
[16]:
+
+
+
idf.get_duration(height_of_rainfall=10, return_period=1)
+
+
+
+
+
[16]:
+
+
+
+
+5.433080747189968
+
+
+
+
[17]:
+
+
+
idf.result_table().round(2)
+
+
+
+
+
[17]:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1235102025305075100
59.3910.9711.8913.0414.6116.1916.6917.1118.2619.1819.83
1015.1517.6219.0620.8823.3525.8226.6227.2729.0930.5431.56
1519.0322.2524.1326.5129.7232.9433.9834.8337.2039.0840.42
2021.8325.7127.9930.8534.7338.6239.8740.8943.7546.0247.63
3025.6030.6633.6237.3542.4147.4749.1050.4354.1657.1259.22
4528.9235.5139.3744.2350.8357.4259.5461.2866.1469.9972.73
6030.9338.8943.5449.4057.3665.3167.8869.9775.8380.4983.79
9033.3741.7446.6452.8061.1769.5472.2374.4380.6085.4988.96
12035.2243.9048.9755.3664.0372.7075.4977.7884.1789.2492.84
18038.0147.1352.4659.1868.3077.4280.3682.7689.4894.8198.60
24040.1249.5755.1062.0671.5180.9784.0186.4993.4698.99102.91
36043.2953.2359.0466.3776.3186.2589.4592.0699.39105.20109.33
54046.7157.1663.2770.9881.4391.8995.2598.00105.71111.82116.16
72049.2960.1366.4774.4585.2996.1299.61102.46110.44116.78121.28
108054.4164.9771.1578.9489.50100.06103.46106.24114.02120.20124.58
144058.0267.7273.3980.5490.2499.93103.05105.61112.75118.42122.45
288066.7077.4183.6891.57102.29113.00116.45119.26127.16133.42137.87
432071.9385.7293.78103.95117.73131.52135.96139.58149.75157.81163.53
576078.9595.65105.42117.72134.43151.13156.50160.89173.20182.97189.90
720083.53101.38111.82124.98142.83160.68166.43171.12184.28194.72202.13
864085.38104.95116.40130.82150.38169.95176.25181.40195.82207.27215.39
+
+
+
+
[18]:
+
+
+
idf.result_table(add_names=True).round(2)
+
+
+
+
+
[18]:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
return period (a)1235102025305075100
frequency (1/a)1.0000.5000.3330.2000.1000.0500.0400.0330.0200.0130.010
duration (min)
59.3910.9711.8913.0414.6116.1916.6917.1118.2619.1819.83
1015.1517.6219.0620.8823.3525.8226.6227.2729.0930.5431.56
1519.0322.2524.1326.5129.7232.9433.9834.8337.2039.0840.42
2021.8325.7127.9930.8534.7338.6239.8740.8943.7546.0247.63
3025.6030.6633.6237.3542.4147.4749.1050.4354.1657.1259.22
4528.9235.5139.3744.2350.8357.4259.5461.2866.1469.9972.73
6030.9338.8943.5449.4057.3665.3167.8869.9775.8380.4983.79
9033.3741.7446.6452.8061.1769.5472.2374.4380.6085.4988.96
12035.2243.9048.9755.3664.0372.7075.4977.7884.1789.2492.84
18038.0147.1352.4659.1868.3077.4280.3682.7689.4894.8198.60
24040.1249.5755.1062.0671.5180.9784.0186.4993.4698.99102.91
36043.2953.2359.0466.3776.3186.2589.4592.0699.39105.20109.33
54046.7157.1663.2770.9881.4391.8995.2598.00105.71111.82116.16
72049.2960.1366.4774.4585.2996.1299.61102.46110.44116.78121.28
108054.4164.9771.1578.9489.50100.06103.46106.24114.02120.20124.58
144058.0267.7273.3980.5490.2499.93103.05105.61112.75118.42122.45
288066.7077.4183.6891.57102.29113.00116.45119.26127.16133.42137.87
432071.9385.7293.78103.95117.73131.52135.96139.58149.75157.81163.53
576078.9595.65105.42117.72134.43151.13156.50160.89173.20182.97189.90
720083.53101.38111.82124.98142.83160.68166.43171.12184.28194.72202.13
864085.38104.95116.40130.82150.38169.95176.25181.40195.82207.27215.39
+
+
+

To save the table as a csv:

+
+
[19]:
+
+
+
idf.result_table(add_names=True).round(2).to_csv(path.join(output_directory, 'idf_table_UNIX.csv'), sep=',', decimal='.', float_format='%0.2f')
+
+
+
+
+
[20]:
+
+
+
print(idf.result_table(add_names=True).round(2).to_string())
+
+
+
+
+
+
+
+
+return period (a)    1       2       3       5       10      20      25      30      50      75      100
+frequency (1/a)    1.000   0.500   0.333   0.200   0.100   0.050   0.040   0.033   0.020   0.013   0.010
+duration (min)
+5                   9.39   10.97   11.89   13.04   14.61   16.19   16.69   17.11   18.26   19.18   19.83
+10                 15.15   17.62   19.06   20.88   23.35   25.82   26.62   27.27   29.09   30.54   31.56
+15                 19.03   22.25   24.13   26.51   29.72   32.94   33.98   34.83   37.20   39.08   40.42
+20                 21.83   25.71   27.99   30.85   34.73   38.62   39.87   40.89   43.75   46.02   47.63
+30                 25.60   30.66   33.62   37.35   42.41   47.47   49.10   50.43   54.16   57.12   59.22
+45                 28.92   35.51   39.37   44.23   50.83   57.42   59.54   61.28   66.14   69.99   72.73
+60                 30.93   38.89   43.54   49.40   57.36   65.31   67.88   69.97   75.83   80.49   83.79
+90                 33.37   41.74   46.64   52.80   61.17   69.54   72.23   74.43   80.60   85.49   88.96
+120                35.22   43.90   48.97   55.36   64.03   72.70   75.49   77.78   84.17   89.24   92.84
+180                38.01   47.13   52.46   59.18   68.30   77.42   80.36   82.76   89.48   94.81   98.60
+240                40.12   49.57   55.10   62.06   71.51   80.97   84.01   86.49   93.46   98.99  102.91
+360                43.29   53.23   59.04   66.37   76.31   86.25   89.45   92.06   99.39  105.20  109.33
+540                46.71   57.16   63.27   70.98   81.43   91.89   95.25   98.00  105.71  111.82  116.16
+720                49.29   60.13   66.47   74.45   85.29   96.12   99.61  102.46  110.44  116.78  121.28
+1080               54.41   64.97   71.15   78.94   89.50  100.06  103.46  106.24  114.02  120.20  124.58
+1440               58.02   67.72   73.39   80.54   90.24   99.93  103.05  105.61  112.75  118.42  122.45
+2880               66.70   77.41   83.68   91.57  102.29  113.00  116.45  119.26  127.16  133.42  137.87
+4320               71.93   85.72   93.78  103.95  117.73  131.52  135.96  139.58  149.75  157.81  163.53
+5760               78.95   95.65  105.42  117.72  134.43  151.13  156.50  160.89  173.20  182.97  189.90
+7200               83.53  101.38  111.82  124.98  142.83  160.68  166.43  171.12  184.28  194.72  202.13
+8640               85.38  104.95  116.40  130.82  150.38  169.95  176.25  181.40  195.82  207.27  215.39
+
+
+

To create a color plot of the IDF curves:

+
+
[21]:
+
+
+
fig, ax = idf.result_figure(color=True, add_interim=False)
+
+
+
+
+
+
+
+../_images/examples_example_python_api_29_0.png +
+
+

To create a black/white plot of the IDF curves:

+
+
[22]:
+
+
+
fig, ax = idf.result_figure(color=False, add_interim=True)
+
+
+
+
+
+
+
+../_images/examples_example_python_api_31_0.png +
+
+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/examples/example_python_api.ipynb b/examples/example_python_api.ipynb new file mode 100644 index 0000000..035788e --- /dev/null +++ b/examples/example_python_api.ipynb @@ -0,0 +1,1454 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "from idf_analysis.idf_class import IntensityDurationFrequencyAnalyse\n", + "from idf_analysis.definitions import *\n", + "import pandas as pd\n", + "from os import path\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "plt.style.use('bmh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Intensity Duration Frequency Analyse" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Parameter\n", + "\n", + "**series_kind**:\n", + "\n", + "`SERIES.PARTIAL` = Partielle Serie (partial duration series, PDS) (peak over threshold, POT)\n", + "\n", + "`SERIES.ANNUAL` = Jährliche Serie (annual maximum series, AMS)\n", + "\n", + "**worksheet**:\n", + "\n", + "`METHOD.KOSTRA`:\n", + "- DWA-A 531\n", + "- KOSTRA - empfohlen\n", + "- Stützstellen: 60 min und 12 h\n", + "\n", + "`METHOD.CONVECTIVE_ADVECTIVE`:\n", + "- DWA-A 531\n", + "- Unterscheidung in überwiegend konvektiv und advektiv verursachte Starkregen\n", + "- Stützstellen: 3 h und 24 h\n", + "\n", + "`METHOD.ATV`:\n", + "- ATV-A 121\n", + "- Stützstellen: 3 h und 48 h\n", + "\n", + "**extended_durations** = Inkludiert die Dauerstufen `[0.75d, 1d, 2d, 3d, 4d, 5d, 6d]` in der Analyse (in d=Tage)\n", + "\n", + "Standardmäßig berechnete Dauerstufen `[5m, 10m, 15m, 20m, 30m, 45m, 60m, 1.5h, 3h, 4.5h, 6h, 7.5h, 10h, 12h]`" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "idf = IntensityDurationFrequencyAnalyse(series_kind=SERIES.PARTIAL, worksheet=METHOD.KOSTRA, extended_durations=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I used the rain-time-series from ehyd.gv.at with the ID 112086 (Graz-Andritz)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "data = pd.read_parquet('ehyd_112086.parquet')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "output_directory = 'ehyd_112086_idf_data'" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
precipitation
datetime
2007-09-18 11:09:000.1
2007-09-18 11:12:000.1
2007-09-18 11:13:000.1
2007-09-18 11:14:000.1
2007-09-18 11:20:000.1
\n", + "
" + ], + "text/plain": [ + " precipitation\n", + "datetime \n", + "2007-09-18 11:09:00 0.1\n", + "2007-09-18 11:12:00 0.1\n", + "2007-09-18 11:13:00 0.1\n", + "2007-09-18 11:14:00 0.1\n", + "2007-09-18 11:20:00 0.1" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
precipitation
datetime
2016-12-28 22:24:000.006
2016-12-28 22:25:000.092
2016-12-28 22:26:000.006
2016-12-28 22:45:000.090
2016-12-28 22:46:000.006
\n", + "
" + ], + "text/plain": [ + " precipitation\n", + "datetime \n", + "2016-12-28 22:24:00 0.006\n", + "2016-12-28 22:25:00 0.092\n", + "2016-12-28 22:26:00 0.006\n", + "2016-12-28 22:45:00 0.090\n", + "2016-12-28 22:46:00 0.006" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "idf.set_series(data['precipitation'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bei jeder neuen Berechnung werden Zwischenergebnisse erstellt, welche nur abhängig von der gewählten Serie `series_kind` und der angegebenen/benötigten Dauerstufen sind. Dieser Vorgang dauert einige Sekunden.\n", + "Auserdem enthalten diese Zwischenergebnisse die Parameter, die zur Berechnung der Regenhöhe und Regenspende benötigt werden.\n", + "Hier sind bereist die Berechnungsverfahren und Stückpunkte laut dem gewählten `worksheet` berücksichtigt." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Um Zeit zu sparen, gibt es die Möglichkeit, die Parameter zwischenzuspeichern und bei erneutem Aufrufen des Skripts werden diese Parameter nicht mehr berechnet, sondern aus der Datei gelesen." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "idf.auto_save_parameters(path.join(output_directory, 'idf_parameters.yaml'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Abgerufen können diese Zwischenergebnisse mit:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Berechnungen" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "19.031596336052708" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.depth_of_rainfall(duration=15, return_period=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Resultierende Regenhöhe h_N(T_n=1.0a, D=15.0min) = 19.03 mm\n" + ] + } + ], + "source": [ + "print('Resultierende Regenhöhe h_N(T_n={t:0.1f}a, D={d:0.1f}min) = {h:0.2f} mm'\n", + " ''.format(t=1, d=15, h=idf.depth_of_rainfall(15, 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "211.46218151169674" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.rain_flow_rate(duration=15, return_period=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Resultierende Regenspende r_N(T_n=1.0a, D=15.0min) = 211.46 L/(s*ha)\n" + ] + } + ], + "source": [ + "print('Resultierende Regenspende r_N(T_n={t:0.1f}a, D={d:0.1f}min) = {r:0.2f} L/(s*ha)'\n", + " ''.format(t=1, d=15, r=idf.rain_flow_rate(15, 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "11.410836729727" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.r_720_1()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.1430180144131331" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.get_return_period(height_of_rainfall=10, duration=15)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "5.433080747189968" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.get_duration(height_of_rainfall=10, return_period=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
1235102025305075100
59.3910.9711.8913.0414.6116.1916.6917.1118.2619.1819.83
1015.1517.6219.0620.8823.3525.8226.6227.2729.0930.5431.56
1519.0322.2524.1326.5129.7232.9433.9834.8337.2039.0840.42
2021.8325.7127.9930.8534.7338.6239.8740.8943.7546.0247.63
3025.6030.6633.6237.3542.4147.4749.1050.4354.1657.1259.22
4528.9235.5139.3744.2350.8357.4259.5461.2866.1469.9972.73
6030.9338.8943.5449.4057.3665.3167.8869.9775.8380.4983.79
9033.3741.7446.6452.8061.1769.5472.2374.4380.6085.4988.96
12035.2243.9048.9755.3664.0372.7075.4977.7884.1789.2492.84
18038.0147.1352.4659.1868.3077.4280.3682.7689.4894.8198.60
24040.1249.5755.1062.0671.5180.9784.0186.4993.4698.99102.91
36043.2953.2359.0466.3776.3186.2589.4592.0699.39105.20109.33
54046.7157.1663.2770.9881.4391.8995.2598.00105.71111.82116.16
72049.2960.1366.4774.4585.2996.1299.61102.46110.44116.78121.28
108054.4164.9771.1578.9489.50100.06103.46106.24114.02120.20124.58
144058.0267.7273.3980.5490.2499.93103.05105.61112.75118.42122.45
288066.7077.4183.6891.57102.29113.00116.45119.26127.16133.42137.87
432071.9385.7293.78103.95117.73131.52135.96139.58149.75157.81163.53
576078.9595.65105.42117.72134.43151.13156.50160.89173.20182.97189.90
720083.53101.38111.82124.98142.83160.68166.43171.12184.28194.72202.13
864085.38104.95116.40130.82150.38169.95176.25181.40195.82207.27215.39
\n", + "
" + ], + "text/plain": [ + " 1 2 3 5 10 20 25 30 50 \\\n", + "5 9.39 10.97 11.89 13.04 14.61 16.19 16.69 17.11 18.26 \n", + "10 15.15 17.62 19.06 20.88 23.35 25.82 26.62 27.27 29.09 \n", + "15 19.03 22.25 24.13 26.51 29.72 32.94 33.98 34.83 37.20 \n", + "20 21.83 25.71 27.99 30.85 34.73 38.62 39.87 40.89 43.75 \n", + "30 25.60 30.66 33.62 37.35 42.41 47.47 49.10 50.43 54.16 \n", + "45 28.92 35.51 39.37 44.23 50.83 57.42 59.54 61.28 66.14 \n", + "60 30.93 38.89 43.54 49.40 57.36 65.31 67.88 69.97 75.83 \n", + "90 33.37 41.74 46.64 52.80 61.17 69.54 72.23 74.43 80.60 \n", + "120 35.22 43.90 48.97 55.36 64.03 72.70 75.49 77.78 84.17 \n", + "180 38.01 47.13 52.46 59.18 68.30 77.42 80.36 82.76 89.48 \n", + "240 40.12 49.57 55.10 62.06 71.51 80.97 84.01 86.49 93.46 \n", + "360 43.29 53.23 59.04 66.37 76.31 86.25 89.45 92.06 99.39 \n", + "540 46.71 57.16 63.27 70.98 81.43 91.89 95.25 98.00 105.71 \n", + "720 49.29 60.13 66.47 74.45 85.29 96.12 99.61 102.46 110.44 \n", + "1080 54.41 64.97 71.15 78.94 89.50 100.06 103.46 106.24 114.02 \n", + "1440 58.02 67.72 73.39 80.54 90.24 99.93 103.05 105.61 112.75 \n", + "2880 66.70 77.41 83.68 91.57 102.29 113.00 116.45 119.26 127.16 \n", + "4320 71.93 85.72 93.78 103.95 117.73 131.52 135.96 139.58 149.75 \n", + "5760 78.95 95.65 105.42 117.72 134.43 151.13 156.50 160.89 173.20 \n", + "7200 83.53 101.38 111.82 124.98 142.83 160.68 166.43 171.12 184.28 \n", + "8640 85.38 104.95 116.40 130.82 150.38 169.95 176.25 181.40 195.82 \n", + "\n", + " 75 100 \n", + "5 19.18 19.83 \n", + "10 30.54 31.56 \n", + "15 39.08 40.42 \n", + "20 46.02 47.63 \n", + "30 57.12 59.22 \n", + "45 69.99 72.73 \n", + "60 80.49 83.79 \n", + "90 85.49 88.96 \n", + "120 89.24 92.84 \n", + "180 94.81 98.60 \n", + "240 98.99 102.91 \n", + "360 105.20 109.33 \n", + "540 111.82 116.16 \n", + "720 116.78 121.28 \n", + "1080 120.20 124.58 \n", + "1440 118.42 122.45 \n", + "2880 133.42 137.87 \n", + "4320 157.81 163.53 \n", + "5760 182.97 189.90 \n", + "7200 194.72 202.13 \n", + "8640 207.27 215.39 " + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.result_table().round(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
return period (a)1235102025305075100
frequency (1/a)1.0000.5000.3330.2000.1000.0500.0400.0330.0200.0130.010
duration (min)
59.3910.9711.8913.0414.6116.1916.6917.1118.2619.1819.83
1015.1517.6219.0620.8823.3525.8226.6227.2729.0930.5431.56
1519.0322.2524.1326.5129.7232.9433.9834.8337.2039.0840.42
2021.8325.7127.9930.8534.7338.6239.8740.8943.7546.0247.63
3025.6030.6633.6237.3542.4147.4749.1050.4354.1657.1259.22
4528.9235.5139.3744.2350.8357.4259.5461.2866.1469.9972.73
6030.9338.8943.5449.4057.3665.3167.8869.9775.8380.4983.79
9033.3741.7446.6452.8061.1769.5472.2374.4380.6085.4988.96
12035.2243.9048.9755.3664.0372.7075.4977.7884.1789.2492.84
18038.0147.1352.4659.1868.3077.4280.3682.7689.4894.8198.60
24040.1249.5755.1062.0671.5180.9784.0186.4993.4698.99102.91
36043.2953.2359.0466.3776.3186.2589.4592.0699.39105.20109.33
54046.7157.1663.2770.9881.4391.8995.2598.00105.71111.82116.16
72049.2960.1366.4774.4585.2996.1299.61102.46110.44116.78121.28
108054.4164.9771.1578.9489.50100.06103.46106.24114.02120.20124.58
144058.0267.7273.3980.5490.2499.93103.05105.61112.75118.42122.45
288066.7077.4183.6891.57102.29113.00116.45119.26127.16133.42137.87
432071.9385.7293.78103.95117.73131.52135.96139.58149.75157.81163.53
576078.9595.65105.42117.72134.43151.13156.50160.89173.20182.97189.90
720083.53101.38111.82124.98142.83160.68166.43171.12184.28194.72202.13
864085.38104.95116.40130.82150.38169.95176.25181.40195.82207.27215.39
\n", + "
" + ], + "text/plain": [ + "return period (a) 1 2 3 5 10 20 25 \\\n", + "frequency (1/a) 1.000 0.500 0.333 0.200 0.100 0.050 0.040 \n", + "duration (min) \n", + "5 9.39 10.97 11.89 13.04 14.61 16.19 16.69 \n", + "10 15.15 17.62 19.06 20.88 23.35 25.82 26.62 \n", + "15 19.03 22.25 24.13 26.51 29.72 32.94 33.98 \n", + "20 21.83 25.71 27.99 30.85 34.73 38.62 39.87 \n", + "30 25.60 30.66 33.62 37.35 42.41 47.47 49.10 \n", + "45 28.92 35.51 39.37 44.23 50.83 57.42 59.54 \n", + "60 30.93 38.89 43.54 49.40 57.36 65.31 67.88 \n", + "90 33.37 41.74 46.64 52.80 61.17 69.54 72.23 \n", + "120 35.22 43.90 48.97 55.36 64.03 72.70 75.49 \n", + "180 38.01 47.13 52.46 59.18 68.30 77.42 80.36 \n", + "240 40.12 49.57 55.10 62.06 71.51 80.97 84.01 \n", + "360 43.29 53.23 59.04 66.37 76.31 86.25 89.45 \n", + "540 46.71 57.16 63.27 70.98 81.43 91.89 95.25 \n", + "720 49.29 60.13 66.47 74.45 85.29 96.12 99.61 \n", + "1080 54.41 64.97 71.15 78.94 89.50 100.06 103.46 \n", + "1440 58.02 67.72 73.39 80.54 90.24 99.93 103.05 \n", + "2880 66.70 77.41 83.68 91.57 102.29 113.00 116.45 \n", + "4320 71.93 85.72 93.78 103.95 117.73 131.52 135.96 \n", + "5760 78.95 95.65 105.42 117.72 134.43 151.13 156.50 \n", + "7200 83.53 101.38 111.82 124.98 142.83 160.68 166.43 \n", + "8640 85.38 104.95 116.40 130.82 150.38 169.95 176.25 \n", + "\n", + "return period (a) 30 50 75 100 \n", + "frequency (1/a) 0.033 0.020 0.013 0.010 \n", + "duration (min) \n", + "5 17.11 18.26 19.18 19.83 \n", + "10 27.27 29.09 30.54 31.56 \n", + "15 34.83 37.20 39.08 40.42 \n", + "20 40.89 43.75 46.02 47.63 \n", + "30 50.43 54.16 57.12 59.22 \n", + "45 61.28 66.14 69.99 72.73 \n", + "60 69.97 75.83 80.49 83.79 \n", + "90 74.43 80.60 85.49 88.96 \n", + "120 77.78 84.17 89.24 92.84 \n", + "180 82.76 89.48 94.81 98.60 \n", + "240 86.49 93.46 98.99 102.91 \n", + "360 92.06 99.39 105.20 109.33 \n", + "540 98.00 105.71 111.82 116.16 \n", + "720 102.46 110.44 116.78 121.28 \n", + "1080 106.24 114.02 120.20 124.58 \n", + "1440 105.61 112.75 118.42 122.45 \n", + "2880 119.26 127.16 133.42 137.87 \n", + "4320 139.58 149.75 157.81 163.53 \n", + "5760 160.89 173.20 182.97 189.90 \n", + "7200 171.12 184.28 194.72 202.13 \n", + "8640 181.40 195.82 207.27 215.39 " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idf.result_table(add_names=True).round(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "To save the table as a csv:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "idf.result_table(add_names=True).round(2).to_csv(path.join(output_directory, 'idf_table_UNIX.csv'), sep=',', decimal='.', float_format='%0.2f')" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "return period (a) 1 2 3 5 10 20 25 30 50 75 100\n", + "frequency (1/a) 1.000 0.500 0.333 0.200 0.100 0.050 0.040 0.033 0.020 0.013 0.010\n", + "duration (min) \n", + "5 9.39 10.97 11.89 13.04 14.61 16.19 16.69 17.11 18.26 19.18 19.83\n", + "10 15.15 17.62 19.06 20.88 23.35 25.82 26.62 27.27 29.09 30.54 31.56\n", + "15 19.03 22.25 24.13 26.51 29.72 32.94 33.98 34.83 37.20 39.08 40.42\n", + "20 21.83 25.71 27.99 30.85 34.73 38.62 39.87 40.89 43.75 46.02 47.63\n", + "30 25.60 30.66 33.62 37.35 42.41 47.47 49.10 50.43 54.16 57.12 59.22\n", + "45 28.92 35.51 39.37 44.23 50.83 57.42 59.54 61.28 66.14 69.99 72.73\n", + "60 30.93 38.89 43.54 49.40 57.36 65.31 67.88 69.97 75.83 80.49 83.79\n", + "90 33.37 41.74 46.64 52.80 61.17 69.54 72.23 74.43 80.60 85.49 88.96\n", + "120 35.22 43.90 48.97 55.36 64.03 72.70 75.49 77.78 84.17 89.24 92.84\n", + "180 38.01 47.13 52.46 59.18 68.30 77.42 80.36 82.76 89.48 94.81 98.60\n", + "240 40.12 49.57 55.10 62.06 71.51 80.97 84.01 86.49 93.46 98.99 102.91\n", + "360 43.29 53.23 59.04 66.37 76.31 86.25 89.45 92.06 99.39 105.20 109.33\n", + "540 46.71 57.16 63.27 70.98 81.43 91.89 95.25 98.00 105.71 111.82 116.16\n", + "720 49.29 60.13 66.47 74.45 85.29 96.12 99.61 102.46 110.44 116.78 121.28\n", + "1080 54.41 64.97 71.15 78.94 89.50 100.06 103.46 106.24 114.02 120.20 124.58\n", + "1440 58.02 67.72 73.39 80.54 90.24 99.93 103.05 105.61 112.75 118.42 122.45\n", + "2880 66.70 77.41 83.68 91.57 102.29 113.00 116.45 119.26 127.16 133.42 137.87\n", + "4320 71.93 85.72 93.78 103.95 117.73 131.52 135.96 139.58 149.75 157.81 163.53\n", + "5760 78.95 95.65 105.42 117.72 134.43 151.13 156.50 160.89 173.20 182.97 189.90\n", + "7200 83.53 101.38 111.82 124.98 142.83 160.68 166.43 171.12 184.28 194.72 202.13\n", + "8640 85.38 104.95 116.40 130.82 150.38 169.95 176.25 181.40 195.82 207.27 215.39\n" + ] + } + ], + "source": [ + "print(idf.result_table(add_names=True).round(2).to_string())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To create a color plot of the IDF curves:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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ZZlEIlHoJhAAfD5foZtAgDyIBLkQA/IgDuRCDMiDOMjRheyD0NDQEM477zycd955WLVqFdauXZu+HY1GZ/Qcl156afr6TNbrhEIhXHXVVVOGpmg0iiuvvJKm2s2Rmbojcgt5EAdyIQbkQRzIhRiQB3GQowvZz+Oy2+146aWXAADf/va3YTQa8fnPf35Wz/HUU0+lr8+kYtyvf/1rXHXVVVAqlZOeo9FocN555+HPf/4zPvShD82qPYQ8a+GLCHkQB3IhBuRBHMiFGJAHcZCjC9mPCGWD+vp6AMDx48dx5pln4gtf+ALOOussXHfddQiFQuPOf+SRR3DFFVekb99444244IILcNZZZ+H+++9P33/llVfikUceyXn7S5He3t5CN4EAeRAJciEG5EEcyIUYkAdxkKMLCkJZ5ujRo7jtttuwY8cOWK1W/PWvf804Ho1G0d7ejoULF6bv+/GPf4znn38ezz33HP7v//4PQ0NDAIDVq1ejra0tr+0vFeRYAlJEyIM4kAsxIA/iQC7EgDyIgxxdUBCagt/85je48MILwTnHX/7yF7z88svTPmbhwoU46aSTAAAnn3wyjh8/nnF8cHAQVqs147577rkHTqcTl1xyCbq6unD48GEAgFKphEajkeXitfmSjz2jiOkhD+JALsSAPIgDuRAD8iAOcnRBQWgaLBYL/vznP8/4/LG/RAqFYlyxA71ej3A4nL798ssv48UXX8RTTz2F1tZWrF+/HpFIJH08EonIcqff+eLxeArdBALkQSTIhRiQB3EgF2JAHsRBji4oCE3Dli1b8JOf/GTG1dsYY1Met9lsSCQS6TDk9Xphs9lgMBjw3nvvYefOnelzh4aGUF5ePqMCDEQmDoej0E0gQB5EglyIAXkQB3IhBuRBHOTogoLQNJSVleH9738/HnrooRmdP5Py2RdccAFee+01AMBFF12EeDyOM844A//93/+NU089NX1ea2srLr744rk1XObI8VsNESEP4kAuxIA8iAO5EAPyIA5ydCH78tljufPOOye8/9Of/jTuvffeSR/X0dEBQFof9MILL6Tvn6wM92233Yaf//znOP/886HVaietDPfHP/4RX//612fYemIssVis0E0gQB5EglyIAXkQB3IhBuRBHOTogoLQFHzsYx9LX9+7d++MHjOTaWwbNmzAueeei0QiMeleQtFoFFdc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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = idf.result_figure(color=True, add_interim=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To create a black/white plot of the IDF curves:" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = idf.result_figure(color=False, add_interim=True)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/example_python_api_extended.html b/examples/example_python_api_extended.html new file mode 100644 index 0000000..6697c25 --- /dev/null +++ b/examples/example_python_api_extended.html @@ -0,0 +1,519 @@ + + + + + + + + Intensity Duration Frequency Analyse - EXTENDED — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + + + + +
+
+
+
+ +
+
[2]:
+
+
+
from idf_analysis.idf_class import IntensityDurationFrequencyAnalyse
+from idf_analysis.definitions import *
+import pandas as pd
+from os import path
+%matplotlib inline
+import matplotlib.pyplot as plt
+plt.style.use('bmh')
+
+
+
+
+

Intensity Duration Frequency Analyse - EXTENDED

+
+
[3]:
+
+
+
# sub-folder for the results
+output_directory = path.join('ehyd_112086_idf_data')
+
+# initialize of the analysis class
+idf = IntensityDurationFrequencyAnalyse(series_kind=SERIES.PARTIAL, worksheet=METHOD.KOSTRA, extended_durations=True)
+
+# reading the pandas series of the precipitation (data from ehyd.gv.at - ID=112086)
+series = pd.read_parquet('ehyd_112086.parquet')['precipitation']
+
+# setting the series for the analysis
+idf.set_series(series)
+
+# auto-save the calculated parameter so save time for a later use
+idf.auto_save_parameters(path.join(output_directory, 'idf_parameters.yaml'))
+
+
+
+
+
[12]:
+
+
+
events = idf.rain_events
+"Columns: ", events.columns,  "| Number of events: ", events.index.size
+
+
+
+
+
[12]:
+
+
+
+
+('Columns: ',
+ Index(['start', 'end', 'duration', 'rain_sum', 'last_event'], dtype='object'),
+ '| Number of events: ',
+ 1356)
+
+
+
+
[13]:
+
+
+
# reduce number of event by limiting the minimum sum of rainfall
+events = events[events[COL.LP] > 10].copy()
+"Columns: ", events.columns,  "| Number of events: ", events.index.size
+
+
+
+
+
[13]:
+
+
+
+
+('Columns: ',
+ Index(['start', 'end', 'duration', 'rain_sum', 'last_event'], dtype='object'),
+ '| Number of events: ',
+ 252)
+
+
+
+
[14]:
+
+
+
# add the maximum return period to the events and at which duration this period occurs
+idf.add_max_return_periods_to_events(events)
+"Columns: ", events.columns,  "| Number of events: ", events.index.size
+
+
+
+
+
[14]:
+
+
+
+
+('Columns: ',
+ Index(['start', 'end', 'duration', 'rain_sum', 'last_event',
+        'max_return_period', 'max_return_period_duration'],
+       dtype='object'),
+ '| Number of events: ',
+ 252)
+
+
+
+
[15]:
+
+
+
# reduce number of event by limiting the minimum return period of an event
+events = events[events[COL.MAX_PERIOD] > 2].copy()
+"Columns: ", events.columns,  "| Number of events: ", events.index.size
+
+
+
+
+
[15]:
+
+
+
+
+('Columns: ',
+ Index(['start', 'end', 'duration', 'rain_sum', 'last_event',
+        'max_return_period', 'max_return_period_duration'],
+       dtype='object'),
+ '| Number of events: ',
+ 19)
+
+
+
+
[16]:
+
+
+
events
+
+
+
+
+
[16]:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
startenddurationrain_sumlast_eventmax_return_periodmax_return_period_duration
1052008-06-23 19:50:002008-06-23 23:23:000 days 03:33:0034.92 days 21:52:005.36378815.0
1252008-07-17 14:14:002008-07-18 06:27:000 days 16:13:0074.60 days 04:09:006.457449120.0
1272008-07-20 17:43:002008-07-21 03:55:000 days 10:12:0027.72 days 02:48:002.8310135760.0
2772009-07-18 08:55:002009-07-18 13:19:000 days 04:24:0058.02 days 01:56:003.422038240.0
2862009-08-21 19:49:002009-08-21 20:29:000 days 00:40:0034.24 days 03:04:003.93016120.0
2892009-08-28 23:41:002009-08-29 00:42:000 days 01:01:0049.31 days 03:44:0020.29909320.0
2912009-09-04 00:31:002009-09-04 18:18:000 days 17:47:0069.05 days 11:06:002.6056591080.0
5662011-08-03 19:52:002011-08-04 07:45:000 days 11:53:0054.71 days 23:09:0012.96286620.0
6842012-07-14 16:54:002012-07-15 13:07:000 days 20:13:0059.81 days 01:15:003.7205318640.0
7972013-05-05 20:46:002013-05-07 12:41:001 days 15:55:00119.60 days 17:29:0030.5849812880.0
8442013-08-27 17:09:002013-08-27 23:48:000 days 06:39:0043.30 days 13:56:002.4520995.0
8452013-08-28 11:41:002013-08-28 16:22:000 days 04:41:0028.50 days 11:53:003.5438372880.0
9472014-05-11 10:20:002014-05-11 23:18:000 days 12:58:0055.70 days 13:15:002.0821952880.0
9482014-05-12 17:22:002014-05-13 17:27:001 days 00:05:0020.60 days 18:04:002.7988224320.0
11372015-07-08 11:50:002015-07-09 00:26:000 days 12:36:0077.88 days 13:52:006.054031720.0
12612016-06-05 11:03:002016-06-05 14:57:000 days 03:54:0040.40 days 19:55:006.5371125.0
12942016-07-21 22:28:002016-07-21 23:21:000 days 00:53:0037.25 days 00:03:002.42662330.0
12982016-07-25 10:18:002016-07-25 15:48:000 days 05:30:0033.80 days 19:00:003.4003475760.0
13002016-07-27 15:25:002016-07-27 20:25:000 days 05:00:0012.21 days 01:04:004.6637878640.0
+
+
+
+
[18]:
+
+
+
# lets pick one event
+event = events.loc[125]
+event
+

+
+
+
+
[18]:
+
+
+
+
+start                         2008-07-17 14:14:00
+end                           2008-07-18 06:27:00
+duration                          0 days 16:13:00
+rain_sum                                     74.6
+last_event                        0 days 04:09:00
+max_return_period                        6.457449
+max_return_period_duration                  120.0
+Name: 125, dtype: object
+
+
+
+
[19]:
+
+
+
fig, caption = idf.event_plot(event)
+fig.tight_layout()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+../_images/examples_example_python_api_extended_9_1.png +
+
+
+
[20]:
+
+
+
# you can also reduce the displayed duration steps
+fig, caption = idf.event_plot(event, durations=idf.duration_steps[:11])
+fig.tight_layout()
+
+
+
+
+
+
+
+../_images/examples_example_python_api_extended_10_0.png +
+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/examples/example_python_api_extended.ipynb b/examples/example_python_api_extended.ipynb new file mode 100644 index 0000000..e4161d6 --- /dev/null +++ b/examples/example_python_api_extended.ipynb @@ -0,0 +1,589 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from idf_analysis.idf_class import IntensityDurationFrequencyAnalyse\n", + "from idf_analysis.definitions import *\n", + "import pandas as pd\n", + "from os import path\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "plt.style.use('bmh')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "# Intensity Duration Frequency Analyse - EXTENDED" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "# sub-folder for the results\n", + "output_directory = path.join('ehyd_112086_idf_data')\n", + "\n", + "# initialize of the analysis class\n", + "idf = IntensityDurationFrequencyAnalyse(series_kind=SERIES.PARTIAL, worksheet=METHOD.KOSTRA, extended_durations=True)\n", + "\n", + "# reading the pandas series of the precipitation (data from ehyd.gv.at - ID=112086)\n", + "series = pd.read_parquet('ehyd_112086.parquet')['precipitation']\n", + "\n", + "# setting the series for the analysis\n", + "idf.set_series(series)\n", + "\n", + "# auto-save the calculated parameter so save time for a later use\n", + "idf.auto_save_parameters(path.join(output_directory, 'idf_parameters.yaml'))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "('Columns: ',\n", + " Index(['start', 'end', 'duration', 'rain_sum', 'last_event'], dtype='object'),\n", + " '| Number of events: ',\n", + " 1356)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "events = idf.rain_events\n", + "\"Columns: \", events.columns, \"| Number of events: \", events.index.size" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "('Columns: ',\n", + " Index(['start', 'end', 'duration', 'rain_sum', 'last_event'], dtype='object'),\n", + " '| Number of events: ',\n", + " 252)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# reduce number of event by limiting the minimum sum of rainfall\n", + "events = events[events[COL.LP] > 10].copy()\n", + "\"Columns: \", events.columns, \"| Number of events: \", events.index.size" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "('Columns: ',\n", + " Index(['start', 'end', 'duration', 'rain_sum', 'last_event',\n", + " 'max_return_period', 'max_return_period_duration'],\n", + " dtype='object'),\n", + " '| Number of events: ',\n", + " 252)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# add the maximum return period to the events and at which duration this period occurs\n", + "idf.add_max_return_periods_to_events(events)\n", + "\"Columns: \", events.columns, \"| Number of events: \", events.index.size" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "('Columns: ',\n", + " Index(['start', 'end', 'duration', 'rain_sum', 'last_event',\n", + " 'max_return_period', 'max_return_period_duration'],\n", + " dtype='object'),\n", + " '| Number of events: ',\n", + " 19)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# reduce number of event by limiting the minimum return period of an event\n", + "events = events[events[COL.MAX_PERIOD] > 2].copy()\n", + "\"Columns: \", events.columns, \"| Number of events: \", events.index.size" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
startenddurationrain_sumlast_eventmax_return_periodmax_return_period_duration
1052008-06-23 19:50:002008-06-23 23:23:000 days 03:33:0034.92 days 21:52:005.36378815.0
1252008-07-17 14:14:002008-07-18 06:27:000 days 16:13:0074.60 days 04:09:006.457449120.0
1272008-07-20 17:43:002008-07-21 03:55:000 days 10:12:0027.72 days 02:48:002.8310135760.0
2772009-07-18 08:55:002009-07-18 13:19:000 days 04:24:0058.02 days 01:56:003.422038240.0
2862009-08-21 19:49:002009-08-21 20:29:000 days 00:40:0034.24 days 03:04:003.93016120.0
2892009-08-28 23:41:002009-08-29 00:42:000 days 01:01:0049.31 days 03:44:0020.29909320.0
2912009-09-04 00:31:002009-09-04 18:18:000 days 17:47:0069.05 days 11:06:002.6056591080.0
5662011-08-03 19:52:002011-08-04 07:45:000 days 11:53:0054.71 days 23:09:0012.96286620.0
6842012-07-14 16:54:002012-07-15 13:07:000 days 20:13:0059.81 days 01:15:003.7205318640.0
7972013-05-05 20:46:002013-05-07 12:41:001 days 15:55:00119.60 days 17:29:0030.5849812880.0
8442013-08-27 17:09:002013-08-27 23:48:000 days 06:39:0043.30 days 13:56:002.4520995.0
8452013-08-28 11:41:002013-08-28 16:22:000 days 04:41:0028.50 days 11:53:003.5438372880.0
9472014-05-11 10:20:002014-05-11 23:18:000 days 12:58:0055.70 days 13:15:002.0821952880.0
9482014-05-12 17:22:002014-05-13 17:27:001 days 00:05:0020.60 days 18:04:002.7988224320.0
11372015-07-08 11:50:002015-07-09 00:26:000 days 12:36:0077.88 days 13:52:006.054031720.0
12612016-06-05 11:03:002016-06-05 14:57:000 days 03:54:0040.40 days 19:55:006.5371125.0
12942016-07-21 22:28:002016-07-21 23:21:000 days 00:53:0037.25 days 00:03:002.42662330.0
12982016-07-25 10:18:002016-07-25 15:48:000 days 05:30:0033.80 days 19:00:003.4003475760.0
13002016-07-27 15:25:002016-07-27 20:25:000 days 05:00:0012.21 days 01:04:004.6637878640.0
\n", + "
" + ], + "text/plain": [ + " start end duration rain_sum \\\n", + "105 2008-06-23 19:50:00 2008-06-23 23:23:00 0 days 03:33:00 34.9 \n", + "125 2008-07-17 14:14:00 2008-07-18 06:27:00 0 days 16:13:00 74.6 \n", + "127 2008-07-20 17:43:00 2008-07-21 03:55:00 0 days 10:12:00 27.7 \n", + "277 2009-07-18 08:55:00 2009-07-18 13:19:00 0 days 04:24:00 58.0 \n", + "286 2009-08-21 19:49:00 2009-08-21 20:29:00 0 days 00:40:00 34.2 \n", + "289 2009-08-28 23:41:00 2009-08-29 00:42:00 0 days 01:01:00 49.3 \n", + "291 2009-09-04 00:31:00 2009-09-04 18:18:00 0 days 17:47:00 69.0 \n", + "566 2011-08-03 19:52:00 2011-08-04 07:45:00 0 days 11:53:00 54.7 \n", + "684 2012-07-14 16:54:00 2012-07-15 13:07:00 0 days 20:13:00 59.8 \n", + "797 2013-05-05 20:46:00 2013-05-07 12:41:00 1 days 15:55:00 119.6 \n", + "844 2013-08-27 17:09:00 2013-08-27 23:48:00 0 days 06:39:00 43.3 \n", + "845 2013-08-28 11:41:00 2013-08-28 16:22:00 0 days 04:41:00 28.5 \n", + "947 2014-05-11 10:20:00 2014-05-11 23:18:00 0 days 12:58:00 55.7 \n", + "948 2014-05-12 17:22:00 2014-05-13 17:27:00 1 days 00:05:00 20.6 \n", + "1137 2015-07-08 11:50:00 2015-07-09 00:26:00 0 days 12:36:00 77.8 \n", + "1261 2016-06-05 11:03:00 2016-06-05 14:57:00 0 days 03:54:00 40.4 \n", + "1294 2016-07-21 22:28:00 2016-07-21 23:21:00 0 days 00:53:00 37.2 \n", + "1298 2016-07-25 10:18:00 2016-07-25 15:48:00 0 days 05:30:00 33.8 \n", + "1300 2016-07-27 15:25:00 2016-07-27 20:25:00 0 days 05:00:00 12.2 \n", + "\n", + " last_event max_return_period max_return_period_duration \n", + "105 2 days 21:52:00 5.363788 15.0 \n", + "125 0 days 04:09:00 6.457449 120.0 \n", + "127 2 days 02:48:00 2.831013 5760.0 \n", + "277 2 days 01:56:00 3.422038 240.0 \n", + "286 4 days 03:04:00 3.930161 20.0 \n", + "289 1 days 03:44:00 20.299093 20.0 \n", + "291 5 days 11:06:00 2.605659 1080.0 \n", + "566 1 days 23:09:00 12.962866 20.0 \n", + "684 1 days 01:15:00 3.720531 8640.0 \n", + "797 0 days 17:29:00 30.584981 2880.0 \n", + "844 0 days 13:56:00 2.452099 5.0 \n", + "845 0 days 11:53:00 3.543837 2880.0 \n", + "947 0 days 13:15:00 2.082195 2880.0 \n", + "948 0 days 18:04:00 2.798822 4320.0 \n", + "1137 8 days 13:52:00 6.054031 720.0 \n", + "1261 0 days 19:55:00 6.537112 5.0 \n", + "1294 5 days 00:03:00 2.426623 30.0 \n", + "1298 0 days 19:00:00 3.400347 5760.0 \n", + "1300 1 days 01:04:00 4.663787 8640.0 " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "events" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "start 2008-07-17 14:14:00\n", + "end 2008-07-18 06:27:00\n", + "duration 0 days 16:13:00\n", + "rain_sum 74.6\n", + "last_event 0 days 04:09:00\n", + "max_return_period 6.457449\n", + "max_return_period_duration 120.0\n", + "Name: 125, dtype: object" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# lets pick one event\n", + "event = events.loc[125]\n", + "event\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEjCAYAAABnxZXbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABPzElEQVR4nO2deXxU1dn4v082ErInLGETcCkIKC5IFay14kKt4lKx2lbbam1/trXaV+vr0mrr3u0VW/V9bUWttYutS7VqcVdERaqIG6CiEsOSELInZM/z++PcCZNhJrlJZjKT4fl+PvPJnXvOvfc5907mmXOeTVQVwzAMw0g0UuItgGEYhmGEwxSUYRiGkZCYgjIMwzASElNQhmEYRkJiCsowDMNISExBGYZhGAmJKSjDMAwjITEFZRiGYSQkaZEaROQcPydQ1buiJ45hGIZhOCRSJgkRed7H8aqqR0VXJMMwDMPoRUEZhmEYRjzpbYnPl31KVbuiJ45hGIZhOCIqKKAD6G16JV57alQlMgzDMAx6V1BTh0wKwzAMwwjBbFCGYRhGQtLbDKoHIrII+DwwCre8B4Cqnh0DuQzDMIzdHF+OECJyNXCH138xUAUcB9TGTDLDMAxjt8bXEp+IlAJfUtV3RaRWVQtEZC7wE1VdFHMpY8Abb7yRkpmZeWlaWtq+WEYNwzCMWNPV0dGxrqWl5ZcHH3ywL+9vv0t8Bar6rrfdJiLpqrpKRD4/MDnjT2Zm5qXFxcWnjxgxwtzkDcMwhoDW1tb9qqqqAG7y09+vgvpIRGaq6nvAu8D5IlID1AxMzPiTlpa2ryknwzCMoWPEiBFd3qqVL/wqqJ8Axd72ZcBfgBzge/0TL6GwZT3DMIyhx/d3b8SOIvKDoLcfqOpyAFVdpap7q2qJqj40CCENI+moqqpKXbJkyeh4y9Eb55xzzuQ1a9Zk+u1/xx13FJ9//vl7xFImwwhHb5rs+qDt1bEWxDCGC11dXXR2doZtq66uTv3Tn/40pr/n7OjoGLRcfq9z1113lR5wwAEtQ3JBwxgEvSmoj0XkN17ZjXQROSfca6gENYx48uGHH2bMnj171llnnTVlzpw5Mz/55JOM66+/fuy8efP2PeSQQ2ZcccUV4wF++tOfTty8efOIuXPnzvjRj3408cknn8w98cQT9w6c5/zzz9/jjjvuKAaYMWPGfhdffPGEQw89dN8///nPhTNmzNjviiuuGH/ooYfuO2fOnBnvvPPOLrOcO+64o/jkk0/ea8GCBdP233//WT/5yU/GBdqWLl1aNH/+/H3nzp0747zzzpscUHrjx48/8MILL5w4d+7cGS+++GLOggULpr3yyisjAe65556iOXPmzDj44INnXnzxxRMC5/q///u/4tmzZ8+aP3/+vqtWrcoJ7L/vvvsKDz744Jlz586dcdRRR02Lwa02jG56U1BfAfKBM4F04Kwwr6/HWkDDSBQ2bdo04rzzzqtcvXr1e+vWrcv85JNPMlesWLFu5cqVa995552RTz/9dM611167acKECa2rVq1ae/PNN2/q65yFhYUdK1euXPeNb3yjBqC4uLhj5cqV677+9a9X3nzzzWPDHfPuu+9m//Wvf93w6quvvvfvf/+76JVXXhn59ttvZz7yyCNFzz///PpVq1atTUlJ0bvvvrsYoKWlJWXOnDlNq1atWrtgwYLGwHk+/fTT9JtuumnCY4899sHKlSvfe/vtt7Pvv//+grKysvQlS5aMf/LJJ9c/99xz6zds2JAVOGbJkiXjHnrooQ9WrVq19h//+MeGwd9Vw4hMRCcJVf0A+DaAiDyrqguGTCrDSEBKSkrajjjiiCaAZ599Nu+VV17JO/TQQ2cANDc3p3z44YeZU6ZMaevPOc8444wenrCnnXZaDcDBBx+849///ndhuGMOO+yw+jFjxnQCHHvssTUrVqzISUtL03Xr1o08/PDD9wVobW1NGTVqVAdASkoKZ5555i4etytXrsw+5JBDGkpKSjoATjnllOqXX345ByB4/4knnlj90UcfZQIceOCBjd/97nennHDCCTWnn376sPXiNYYHvrz4gpVTaBkOK7dh7C5kZmZ2f9ZVlfPPP3/rBRdcsD24z4cffpgR/D4tLU2Dg+FbW1sluD03N7fH/09mZqYCpKamakdHR4++AURkl/eqKieffHLVr371q82h/TMyMrrS0nxnNeuVP/zhD5++9NJL2U888UT+kUceOeOFF15YG1CWhhFt/KY6OkhEXhWRJqDde3V4fw1jt+Poo4+uv//++0fV19enAJSWlqZv2bIlLT8/v3PHjh3d/1d77rln68cff5zV3NwsVVVVqa+99lreYK/96quv5lVWVqY2NTXJM888UzB//vzGBQsW1D/55JOFW7ZsSQOorKxM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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, caption = idf.event_plot(event)\n", + "fig.tight_layout()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEjCAYAAABnxZXbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABJE0lEQVR4nO3deXxU5fX48c/JRkJCQhZ2EHApCCgqSBVaakUttYrWitVWqUptv7ZabPVn3aot1dbaRbTW1lZErbZq3felboiKFBE3wJ0YloTsG9lzfn/cO2EyzCQ3yZ3MMDnv12temdz13JnJPLn3Puc5oqoYY4wx8SYp1gEYY4wx4VgDZYwxJi5ZA2WMMSYuWQNljDEmLlkDZYwxJi5ZA2WMMSYuWQNljDEmLlkDZYwxJi6lRJohImd72YCq3uZfOMYYY4xDIo0kISIvelhfVfVIf0MyxhhjumigjDHGmFjq6hKfp/tTqtruXzjGGGOMI2IDBbQCXZ1eiTs/2deIjDHGGLpuoCb2WxTGGGNMCLsHZYwxJi51dQbViYgsAL4CFOBc3gNAVRdFIS5jjDEDnKeOECJyFXCLu/xCoBz4GlAVtciMMcYMaJ4u8YlIIfANVX1PRKpUdaiIzAKuUNUFUY8yCt58882k9PT0i1NSUvbHRtQwxphoa29tbd3Y2Nh43YwZMzz1/vZ6iW+oqr7nPm8WkVRVXSMiX+ldnLGXnp5+cX5+/imDBg2ybvLGGNMPmpqaDigvLwe41svyXhuoT0Rkqqq+D7wHnCsilUBl78KMvZSUlP2tcTLGmP4zaNCgdveqlSdeG6grgHz3+SXAv4As4Ec9Cy+u2GU9Y4zpf56/eyMuKCLnBf36oaquBFDVNaq6r6qOVNUH+xCkMQmnvLw8edmyZcNiHUdXzj777PHr169P97r8Lbfckn/uuefuFc2YjAmnq5bsmqDn66IdiDF7ivb2dtra2sLOq6ioSP7nP/85vKfbbG1t7XNcXvdz2223FR500EGN/bJDY/qgqwbqUxH5o1t2I1VEzg736K9AjYmljz76KG369OnTzjjjjAkzZ86c+tlnn6Vdc801I2bPnr3/oYceOuWyyy4bDfCLX/xi7NatWwfNmjVryk9/+tOxzzzzzJDjjz9+38B2zj333L1uueWWfIApU6YccOGFF4457LDD9r/77rtzp0yZcsBll102+rDDDtt/5syZU959993dznJuueWW/BNPPHGfefPmTTrwwAOnXXHFFaMC85YvX543Z86c/WfNmjXlnHPOGR9o9EaPHn3wkiVLxs6aNWvKyy+/nDVv3rxJr7322mCA22+/PW/mzJlTZsyYMfXCCy8cE9jW3/72t/zp06dPmzNnzv5r1qzJCky/6667cmfMmDF11qxZU4488shJUXipjenQVQP1bSAHOA1IBc4I8zg92gEaEy+2bNky6Jxzzildt27d+xs3bkz/7LPP0letWrVx9erVG959993Bzz33XNavf/3rLWPGjGlas2bNhuuvv35Ld9vMzc1tXb169cbvfe97lQD5+fmtq1ev3nj66aeXXn/99SPCrfPee+9l/vvf//749ddff/+pp57Ke+211wa/88476Y888kjeiy++uGnNmjUbkpKSdMWKFfkAjY2NSTNnzqxfs2bNhnnz5tUFtvP555+nXnvttWMef/zxD1evXv3+O++8k3nvvfcOLSoqSl22bNnoZ555ZtMLL7yw6eOPP84IrLNs2bJRDz744Idr1qzZ8J///Ofjvr+qxkQWsZOEqn4IfB9ARJ5X1Xn9FpUxcWjkyJHNc+fOrQd4/vnns1977bXsww47bApAQ0ND0kcffZQ+YcKE5p5s89RTT+3UE/bkk0+uBJgxY8bOp556KjfcOocffnjN8OHD2wCOOeaYylWrVmWlpKToxo0bB3/pS1/aH6CpqSmpoKCgFSApKYnTTjtttx63q1evzjz00ENrR44c2QrwzW9+s+LVV1/NAgiefvzxx1d88skn6QAHH3xw3Q9/+MMJxx13XOUpp5yyx/biNXsGT734ghun0DIcVm7DDBTp6ekdn3VV5dxzz91+/vnnlwUv89FHH6UF/56SkqLByfBNTU0SPH/IkCGd/n7S09MVIDk5WVtbWzstGyAiu/2uqnLiiSeW//73v98aunxaWlp7SornUc269I9//OPzV155JfPJJ5/MOeKII6a89NJLGwKNpTF+8zrU0SEi8rqI1AMt7qPV/WnMgHPUUUfV3HvvvQU1NTVJAIWFhanbtm1LycnJadu5c2fH39Xee+/d9Omnn2Y0NDRIeXl58htvvJHd132//vrr2aWlpcn19fXy3//+d+icOXPq5s2bV/PMM8/kbtu2LQWgtLQ0+eOPP07rajuHH354/dq1a4eUlJSk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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# you can also reduce the displayed duration steps\n", + "fig, caption = idf.event_plot(event, durations=idf.duration_steps[:11])\n", + "fig.tight_layout()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/genindex.html b/genindex.html new file mode 100644 index 0000000..e799c41 --- /dev/null +++ b/genindex.html @@ -0,0 +1,404 @@ + + + + + + + Index — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + +
+
+
+
+ + +

Index

+ +
+ _ + | A + | C + | D + | E + | F + | G + | H + | I + | M + | P + | R + | S + | T + | W + +
+

_

+ + + +
+ +

A

+ + + +
+ +

C

+ + +
+ +

D

+ + + +
+ +

E

+ + + +
+ +

F

+ + + +
+ +

G

+ + + +
+ +

H

+ + + +
+ +

I

+ + + +
    +
  • + idf_analysis.event_series_analysis + +
  • +
  • + idf_analysis.in_out + +
  • +
  • + idf_analysis.little_helpers + +
  • +
  • + idf_analysis.parameter_formulations + +
  • +
  • + idf_analysis.plot_helpers + +
  • +
+ +

M

+ + +
+ +

P

+ + + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + + +
+ +

W

+ + + +
+ + + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..1b144c3 --- /dev/null +++ b/index.html @@ -0,0 +1,147 @@ + + + + + + + + Welcome to Intensity Duration Frequency Analyse’s documentation! — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + + +
+ + +
+
+ + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..65820bfa46b6d43493b64fcfbce07289256a35c7 GIT binary patch literal 2575 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 l=<7^Uau + + + + + + Python Module Index — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + + + + +
+
+
+
+ + +

Python Module Index

+ +
+ i +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ i
+ idf_analysis +
    + idf_analysis.event_series_analysis +
    + idf_analysis.in_out +
    + idf_analysis.little_helpers +
    + idf_analysis.parameter_formulations +
    + idf_analysis.plot_helpers +
    + idf_analysis.sww_utils +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/search.html b/search.html new file mode 100644 index 0000000..29922a7 --- /dev/null +++ b/search.html @@ -0,0 +1,101 @@ + + + + + + + Search — Intensity Duration Frequency Analyse 0.2.3 documentation + + + + + + + + + + + + + + + + + +
+
+
+
+ +

Search

+ + + + +

+ Searching for multiple words only shows matches that contain + all words. +

+ + +
+ + + +
+ + + +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 0000000..02adfa5 --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames": ["README", "api", "base_functions", "examples/example_commandline", "examples/example_heavy_rainfall_index", "examples/example_python_api", "examples/example_python_api_extended", "index"], "filenames": ["README.md", "api.rst", "base_functions.rst", "examples/example_commandline.ipynb", "examples/example_heavy_rainfall_index.ipynb", "examples/example_python_api.ipynb", "examples/example_python_api_extended.ipynb", "index.rst"], "titles": ["Intensity duration frequency analysis (based on KOSTRA)", "API", "Base Functions", "Example Commandline Use", "Example for Heavy Rainfall Index", "Intensity Duration Frequency Analyse", "Intensity Duration Frequency Analyse - EXTENDED", "Welcome to Intensity Duration Frequency Analyse\u2019s documentation!"], "terms": {"institut": [0, 2], "urban": [0, 2], "water": [0, 2], "manag": [0, 2], "landscap": 0, "engin": 0, "graz": [0, 2, 3, 5], "univers": [0, 2], "technologi": [0, 2], "marku": [0, 4], "pichler": 0, "heavi": [0, 1, 3], "rain": [0, 1, 2, 3, 4, 5], "function": [0, 3, 7], "return": [0, 1, 2, 3, 4, 5, 6], "period": [0, 1, 2, 3, 4, 5, 6], "acc": [0, 1, 2, 3], "dwa": [0, 1, 2, 3, 5], "A": [0, 1, 2, 3, 4, 5], "531": [0, 1, 2, 3, 5], "2012": [0, 1, 3, 4, 6], "thi": [0, 1, 2, 3, 6], "program": [0, 1], "read": [0, 1, 2, 4, 6], "measur": [0, 1, 2], "data": [0, 1, 2, 4, 5, 6], "rainfal": [0, 1, 2, 3, 6], "calcul": [0, 1, 3, 4, 6, 7], "distribut": [0, 1, 2], "design": [0, 3], "step": [0, 1, 2, 6], "up": [0, 1], "12": [0, 1, 3, 4, 5, 6], "hour": [0, 1, 2], "more": [0, 1, 2, 3], "rang": [0, 1], "0": [0, 1, 2, 3, 4, 5, 6], "5a": [0, 1], "t": [0, 2, 3, 5], "_": 0, "n": 0, "100a": [0, 1], "The": [0, 1, 3], "guidelin": 0, "wa": [0, 4], "us": [0, 1, 2, 4, 5, 6, 7], "applic": 0, "dwd": 0, "ar": [0, 1, 2, 3, 4], "among": 0, "most": [0, 2, 3], "import": [0, 4, 5, 6], "plan": 0, "paramet": [0, 1, 2, 3, 6, 7], "hydraul": 0, "practic": 0, "In": 0, "area": 0, "thei": 0, "requir": 0, "initi": [0, 2, 6], "rainwat": 0, "drainag": 0, "system": 0, "watercours": 0, "dimens": 0, "structur": 0, "accuraci": 0, "target": 0, "valu": [0, 1, 2, 3, 4], "correspond": 0, "method": [0, 1, 4, 5, 6, 7], "model": [0, 1], "crucial": 0, "Their": 0, "overestim": 0, "can": [0, 4, 6], "lead": 0, "consider": 0, "addit": 0, "cost": 0, "implement": [0, 2, 4], "underestim": 0, "an": [0, 1, 2, 4, 6], "unaccept": 0, "excess": 0, "residu": 0, "risk": 0, "failur": 0, "dure": 0, "oper": 0, "facil": 0, "despit": 0, "wide": 0, "avail": 0, "through": 0, "coordin": 0, "regionalis": 0, "analys": [0, 1, 2], "i": [0, 1, 2, 3, 4, 5], "still": 0, "need": 0, "local": [0, 4], "station": 0, "e": [0, 1, 5], "g": 0, "evalu": [0, 1, 2], "now": 0, "extend": 0, "seri": [0, 1, 2, 3, 4, 5, 6], "recent": 0, "develop": [0, 2], "classifi": 0, "peculiar": 0, "comparison": 0, "howev": 0, "onli": [0, 1, 2], "possibl": [0, 4], "without": [0, 2], "restrict": 0, "methodolog": 0, "approach": [0, 2], "recommend": [0, 3], "worksheet": [0, 1, 2, 3, 4, 5, 6], "follow": 0, "main": [0, 7], "featur": 0, "atva": 0, "121": [0, 3, 5], "publish": 0, "1985": 0, "ident": 0, "dvwk": 0, "r": [0, 3, 5], "124": [0, 3, 4, 5], "booklet": 0, "rule": 0, "after": 0, "time": [0, 1, 2, 3, 5, 6], "retain": 0, "aim": 0, "revis": 0, "take": 0, "account": 0, "current": 0, "call": [0, 3], "question": 0, "standardis": 0, "procedur": [0, 4], "statist": [0, 2], "which": [0, 1, 3, 6], "intend": 0, "translat": 0, "www": 0, "deepl": 0, "com": 0, "curv": [0, 1, 3, 4, 5], "mathemat": 0, "relat": 0, "its": 0, "occurr": 0, "These": 0, "commonli": 0, "hydrologi": 0, "flood": 0, "forecast": 0, "civil": 0, "also": [0, 1, 4, 6], "hydrometeorologi": 0, "becaus": 0, "interest": [0, 1], "concentr": 0, "wikipedia": [0, 2], "packag": [0, 2, 4], "hi": 0, "bachelor": 0, "thesi": 0, "finalis": 0, "cours": 0, "employ": 0, "doc": [0, 4], "here": [0, 4], "written": 0, "python3": [0, 4], "version": 0, "3": [0, 3, 4, 5, 6], "5": [0, 1, 2, 3, 4, 5, 6], "pip": 0, "add": [0, 1, 2, 6], "tag": 0, "command": 0, "special": 0, "option": [0, 1, 2, 3], "user": 0, "To": [0, 2, 5], "admin": 0, "right": 0, "upgrad": 0, "updat": 0, "you": [0, 6], "have": [0, 2], "python": [0, 3], "first": 0, "origin": 0, "from": [0, 1, 2, 3, 4, 5, 6], "websit": 0, "line": [0, 1], "advis": 0, "path": [0, 1, 4, 5, 6], "your": 0, "binari": 0, "environ": 0, "variabl": [0, 3], "path1": 0, "There": 0, "automat": [0, 3], "path2": 0, "pre": [0, 1, 2], "probabl": 0, "knew": 0, "process": 0, "seen": 0, "txt": 0, "api": [0, 7], "found": [0, 3], "show": [0, 3], "m": [0, 3], "befor": 0, "each": [0, 1, 2, 4], "start": [0, 1, 2, 4, 6], "script": 0, "termin": 0, "prompt": 0, "idf_analysi": [0, 1, 2, 3, 4, 5, 6], "h": [0, 1, 3, 4, 5], "__main__": [0, 3], "py": [0, 3, 4], "input": [0, 3, 7], "w": [0, 2, 3], "atv": [0, 2, 3, 5], "a_121": [0, 2, 3], "a_531": [0, 2, 3], "a_531_advektiv": [0, 2, 3], "kind": [0, 3], "partial": [0, 1, 2, 3, 4, 5, 6], "annual": [0, 2, 3, 5], "100": [0, 1, 2, 3, 4, 5], "d": [0, 3, 4, 5], "min": [0, 2, 3, 4, 5], "8640": [0, 3, 4, 5, 6], "l": [0, 1, 2, 3, 5], "": [0, 1, 2, 3, 4, 5], "ha": [0, 1, 2, 3, 5], "h_n": [0, 3, 5], "mm": [0, 1, 2, 3, 5], "r_720_1": [0, 1, 3, 5], "export_t": [0, 3], "all": [0, 1, 3], "save": [0, 1, 2, 3, 5, 6], "same": [0, 1, 2, 3], "directori": [0, 1, 3], "subfold": [0, 3], "like": [0, 1, 2, 3], "inputfil": [0, 3], "_idf_data": [0, 3], "insid": [0, 3], "folder": [0, 3, 6], "idf_paramet": [0, 3, 4, 5, 6], "yaml": [0, 1, 3, 4, 5, 6], "contain": [0, 3], "interim": [0, 1, 2, 3], "result": [0, 1, 2, 3, 6], "reload": [0, 3], "next": [0, 3], "argument": [0, 3], "help": [0, 2, 3], "messag": [0, 3], "exit": [0, 3], "csv": [0, 1, 3, 5], "parquet": [0, 1, 3, 4, 5, 6], "should": [0, 3], "taken": [0, 3], "series_kind": [0, 1, 2, 3, 4, 5, 6], "precis": [0, 3], "return_period": [0, 1, 2, 3, 4, 5], "year": [0, 1, 2, 3], "If": [0, 3], "two": [0, 3, 4], "three": [0, 3], "height": [0, 1, 2, 3, 4], "flow": [0, 1, 2, 3], "rate": [0, 1, 2, 3], "given": [0, 1, 2, 3], "third": [0, 3], "minut": [0, 1, 2, 3], "flow_rate_of_rainfal": [0, 3], "liter": [0, 3], "height_of_rainfal": [0, 1, 2, 3, 5], "2": [0, 1, 2, 3, 4, 5, 6], "720": [0, 1, 3, 4, 5, 6], "1": [0, 1, 2, 3, 4, 5, 6], "get": [0, 1, 2, 3], "relationship": [0, 3], "frequent": [0, 3], "jupyt": 0, "notebook": 0, "skript": [0, 5], "10": [0, 1, 2, 3, 4, 5, 6], "20": [0, 1, 2, 3, 4, 5, 6], "25": [0, 1, 3, 4, 5, 6], "30": [0, 1, 3, 4, 5, 6], "50": [0, 1, 2, 3, 4, 5, 6], "75": [0, 3, 4, 5], "9": [0, 3, 4, 5, 6], "39": [0, 3, 4, 5, 6], "97": [0, 3, 4, 5], "11": [0, 3, 4, 5, 6], "89": [0, 3, 4, 5], "13": [0, 3, 4, 5, 6], "04": [0, 2, 3, 4, 5, 6], "14": [0, 3, 4, 5, 6], "61": [0, 3, 4, 5], "16": [0, 3, 4, 5, 6], "19": [0, 3, 4, 5, 6], "69": [0, 3, 4, 5, 6], "17": [0, 3, 4, 5, 6], "18": [0, 3, 4, 5, 6], "26": [0, 3, 4, 5, 6], "83": [0, 3, 4, 5], "15": [0, 1, 2, 3, 4, 5, 6], "62": [0, 3, 4, 5], "06": [0, 3, 4, 5, 6], "88": [0, 3, 4, 5], "23": [0, 3, 4, 5, 6], "35": [0, 3, 4, 5], "82": [0, 3, 4, 5], "27": [0, 3, 4, 5, 6], "29": [0, 3, 4, 5, 6], "09": [0, 3, 4, 5, 6], "54": [0, 3, 4, 5, 6], "31": [0, 3, 4, 5, 6], "56": [0, 3, 4, 5, 6], "03": [0, 3, 4, 5, 6], "22": [0, 3, 4, 5, 6], "24": [0, 3, 4, 5, 6], "51": [0, 3, 4, 5], "72": [0, 3, 4, 5], "32": [0, 3, 4, 5], "94": [0, 3, 4, 5], "33": [0, 3, 4, 5, 6], "98": [0, 3, 4, 5], "34": [0, 3, 4, 5, 6], "37": [0, 3, 4, 5, 6], "08": [0, 3, 4, 5, 6], "40": [0, 3, 4, 5, 6], "42": [0, 3, 4, 5, 6], "21": [0, 3, 4, 5, 6], "71": [0, 3, 4, 5], "99": [0, 3, 4, 5], "85": [0, 3, 5], "73": [0, 3, 4, 5], "38": [0, 3, 4, 5], "87": [0, 3, 4, 5], "43": [0, 3, 4, 5, 6], "46": [0, 3, 4, 5, 6], "02": [0, 3, 4, 5, 6], "47": [0, 3, 4, 5, 6], "63": [0, 3, 4, 5], "60": [0, 1, 3, 4, 5], "66": [0, 3, 4, 5], "41": [0, 3, 4, 5, 6], "49": [0, 3, 4, 5, 6], "57": [0, 3, 4, 5, 6], "59": [0, 3, 4, 5, 6], "45": [0, 1, 3, 4, 5, 6], "28": [0, 3, 4, 5, 6], "92": [0, 3, 4, 5], "44": [0, 3, 4, 5, 6], "93": [0, 3, 4, 5], "36": [0, 3, 4, 5, 6], "65": [0, 3, 4, 5], "67": [0, 3, 4, 5], "80": [0, 3, 4, 5], "79": [0, 3, 4, 5], "90": [0, 1, 3, 4, 5], "74": [0, 3, 4, 5, 6], "64": [0, 3, 4, 5], "52": [0, 3, 4, 5, 6], "96": [0, 3, 4, 5], "180": [0, 1, 3, 4, 5], "01": [0, 2, 3, 4, 5, 6], "68": [0, 3, 4, 5], "77": [0, 3, 4, 5, 6], "76": [0, 3, 4, 5], "48": [0, 3, 4, 5, 6], "81": [0, 3, 4, 5], "270": [0, 3], "55": [0, 3, 4, 5, 6], "07": [0, 3, 4, 6], "95": [0, 3, 4, 5], "104": [0, 3, 4, 5], "360": [0, 1, 3, 4, 5], "53": [0, 3, 4, 5, 6], "86": [0, 3, 4, 5], "105": [0, 3, 4, 5, 6], "109": [0, 3, 4, 5], "450": [0, 3], "102": [0, 3, 4, 5], "108": [0, 3, 4], "113": [0, 3, 4, 5], "600": [0, 3], "58": [0, 3, 4, 5, 6], "107": [0, 3, 4], "118": [0, 3, 4, 5], "110": [0, 3, 4, 5], "116": [0, 3, 4, 5], "78": [0, 3, 4, 5], "1080": [0, 1, 3, 4, 5, 6], "103": [0, 3, 4, 5], "106": [0, 3, 5], "114": [0, 3, 4, 5], "120": [0, 1, 3, 4, 5, 6], "1440": [0, 1, 3, 4, 5], "05": [0, 3, 4, 5, 6], "112": [0, 3, 4, 5], "122": [0, 3, 4, 5], "2880": [0, 1, 3, 4, 5, 6], "70": [0, 3, 4, 5], "91": [0, 3, 4, 5], "00": [0, 2, 3, 4, 5, 6], "119": [0, 3, 4, 5, 6], "127": [0, 3, 4, 5, 6], "133": [0, 3, 5], "137": [0, 3, 5], "4320": [0, 1, 3, 4, 5, 6], "117": [0, 3, 4, 5], "131": [0, 3, 4, 5], "135": [0, 3, 4, 5], "139": [0, 3, 4, 5], "149": [0, 3, 4, 5], "157": [0, 3, 5], "163": [0, 3, 4, 5], "5760": [0, 3, 4, 5, 6], "134": [0, 3, 4, 5], "151": [0, 3, 5], "156": [0, 3, 4, 5], "160": [0, 3, 4, 5], "173": [0, 3, 5], "182": [0, 3, 4, 5], "189": [0, 3, 5], "7200": [0, 3, 4, 5], "101": [0, 3, 4, 5], "111": [0, 3, 4, 5], "142": [0, 3, 5], "166": [0, 3, 4, 5], "171": [0, 3, 4, 5], "184": [0, 3, 5], "194": [0, 3, 4, 5], "202": [0, 3, 5], "130": [0, 3, 5], "150": [0, 3, 4, 5], "169": [0, 3, 4, 5], "176": [0, 3, 4, 5], "181": [0, 3, 5], "195": [0, 3, 5], "207": [0, 3, 5], "215": [0, 3, 5], "pseudocod": 0, "For": 0, "everi": [0, 2], "event": [0, 1, 2, 4, 6], "sum": [0, 1, 2, 4, 6], "recommed": 0, "longer": 0, "than": 0, "convert": [0, 1, 7], "max": [0, 2, 4], "per": [0, 1, 2], "u": [0, 2], "gumbel": [0, 2], "elif": 0, "approximatli": 0, "x": [0, 1], "biggest": [0, 1], "exponenti": [0, 2], "split": 0, "formul": [0, 2], "sever": 0, "balanc": 0, "over": [0, 1, 2, 5], "duation": 0, "creat": [0, 1, 2, 3, 4, 5], "b": [0, 2], "one": [0, 1, 6], "fold": 0, "logaritm": 0, "logarithm": [0, 1], "hyperbol": [0, 2], "f": 0, "a_u": 0, "b_u": 0, "a_w": 0, "b_w": 0, "tn": 0, "ln": 0, "class": [1, 2, 6], "idf_class": [1, 5, 6], "intensitydurationfrequencyanalys": [1, 5, 6], "kostra": [1, 2, 4, 5, 6, 7], "extended_dur": [1, 2, 4, 5, 6], "fals": [1, 2, 4, 5], "sourc": [1, 2], "durat": [1, 2, 3, 4], "t_n": [1, 3, 5], "_seri": 1, "type": [1, 2], "panda": [1, 2, 4, 5, 6], "_freq": 1, "frequenc": [1, 2, 3], "dateoffset": [1, 2], "_return_periods_fram": 1, "datafram": [1, 2, 4], "_rain_ev": 1, "_rainfall_sum_fram": 1, "add_max_intensities_to_ev": 1, "maximum": [1, 2, 5, 6], "intens": [1, 2], "tabl": [1, 2, 3, 4, 5], "includ": [1, 4], "column": [1, 6], "auto_save_paramet": [1, 4, 5, 6], "filenam": [1, 2], "auto": [1, 6], "file": [1, 2, 3], "comput": [1, 2], "auto_save_rain_ev": 1, "sep": [1, 2, 5], "decim": [1, 2, 5], "auto_save_return_periods_fram": 1, "depth_of_rainfal": [1, 5], "m\u00b2": 1, "int": [1, 2, 4], "float": [1, 2], "list": [1, 2, 4], "numpi": [1, 2, 4], "ndarrai": [1, 2], "properti": 1, "duration_step": [1, 2, 4, 6], "basic": 1, "duration_steps_for_output": 1, "event_report": 1, "min_event_rain_sum": 1, "min_return_period": 1, "none": [1, 2], "pdf": 1, "repres": 1, "plot": [1, 3, 5, 7], "idf": [1, 3, 5, 6], "analysi": [1, 2, 6, 7], "where": [1, 2], "str": [1, 2], "report": 1, "bigger": 1, "anywai": 1, "default": [1, 2], "240": [1, 4, 5, 6], "540": [1, 4, 5], "classmethod": [1, 2], "from_idf_t": 1, "idf_tabl": [1, 2, 3], "object": [1, 4, 6], "base": [1, 4, 7], "tabel": 1, "index": [1, 2, 6, 7], "rainheight": 1, "name": [1, 2, 4, 6], "get_dur": [1, 5], "when": 1, "get_rainfall_sum_fram": 1, "frame": [1, 4], "ani": 1, "defin": 1, "depend": [1, 2, 4], "datetim": [1, 2, 5], "get_return_period": [1, 5], "get_return_periods_fram": 1, "model_rain_block": 1, "block": 1, "synthet": 1, "_blockrain": 1, "model_rain_eul": 1, "euler": 1, "_eulerrain": 1, "some": [1, 2], "write_paramet": 1, "them": [1, 3], "later": [1, 6], "read_paramet": 1, "idfparamet": [1, 2, 5], "12h": [1, 5], "rain_ev": [1, 2, 4, 6], "minim": 1, "gap": 1, "between": [1, 2], "4": [1, 2, 3, 4, 5, 6], "end": [1, 2, 4, 6], "rain_flow_r": [1, 2, 5], "specif": [1, 2, 4], "arrai": [1, 2], "give": [1, 2], "element": [1, 2], "wise": [1, 2], "made": [1, 2], "so": [1, 2, 6], "length": [1, 2], "must": [1, 2, 4], "rainfall_sum_fram": [1, 4], "whole": 1, "extract": 1, "read_rain_ev": 1, "read_return_periods_fram": 1, "kwarg": 1, "result_figur": [1, 5], "min_dur": 1, "max_dur": [1, 2], "logx": 1, "color": [1, 2, 4, 5], "true": [1, 4, 5, 6], "ax": [1, 2, 4, 5], "linestyl": [1, 4], "add_interim": [1, 5], "alpha": 1, "axi": 1, "depth": 1, "y": 1, "shortest": 1, "longest": 1, "bool": [1, 2], "scale": 1, "legend": [1, 4], "differenti": 1, "otherwis": 1, "annot": 1, "text": 1, "black": [1, 5], "plt": [1, 4, 5, 6], "new": [1, 2], "style": [1, 4, 5, 6], "scatter": 1, "point": 1, "figur": [1, 2], "result_t": [1, 5], "add_nam": [1, 5], "row": 1, "weather": 1, "express": 1, "label": [1, 4], "return_periods_fram": [1, 4], "set_seri": [1, 4, 5, 6], "set": [1, 2, 4, 6], "precipit": [1, 2, 4, 5, 6], "write_rain_ev": 1, "extern": 1, "write_return_periods_fram": 1, "core": [2, 4], "event_series_analysi": 2, "annual_seri": 2, "rolling_sum_valu": 2, "year_index": 2, "overlap": 2, "chap": 2, "http": [2, 4], "en": 2, "org": [2, 4], "wiki": 2, "gumbel_distribut": 2, "roll": 2, "tupl": 2, "dict": 2, "calculate_u_w": 2, "file_input": 2, "kei": 2, "iter_event_seri": 2, "yield": 2, "partial_seri": 2, "measurement_period": 2, "largest": 2, "exponential_distribut": 2, "parameter_formul": 2, "folded_log_formul": 2, "param": 2, "case": 2, "param_mean": 2, "duration_mean": 2, "hyperbolic_formul": 2, "a_start": 2, "b_start": 2, "np": [2, 4], "mean": 2, "idf_backend": 2, "from_interim_results_fil": 2, "interim_results_fn": 2, "depreci": 2, "compat": 2, "reason": 2, "old": 2, "get_array_param": 2, "p": 2, "get_scalar_param": 2, "get_u_w": 2, "measured_point": 2, "estim": 2, "pd": [2, 4, 5, 6], "set_parameter_approaches_from_worksheet": 2, "yet": 2, "write": 2, "in_out": 2, "import_seri": 2, "series_label": 2, "index_label": 2, "csv_reader_arg": 2, "exampl": [2, 7], "gener": [2, 4], "wai": 2, "been": 2, "except": 2, "sww_util": [2, 4], "idferror": 2, "error": 2, "within": 2, "agg_ev": [2, 4], "agg": 2, "aggreg": 2, "event_dur": [2, 4], "col": [2, 4, 6], "event_number_to_seri": 2, "make": 2, "number": [2, 6], "past": 2, "datetimeindex": 2, "guess_freq": 2, "date_time_index": 2, "timedelta": [2, 4], "dai": [2, 4, 6], "guess": 2, "often": 2, "date": 2, "rain_bar_plot": 2, "1e88e5": 2, "revers": 2, "post": 2, "joinstyl": 2, "miter": 2, "capstyl": 2, "butt": 2, "standard": 2, "matplotlib": [2, 4, 5, 6], "mid": 2, "ignore_rain_below": 2, "min_gap": [2, 4], "consid": 2, "resample_rain_seri": 2, "resampl": 2, "AND": 2, "final": [2, 3], "thing": 2, "unit": 2, "little_help": [2, 4], "delta2min": 2, "time_delta": 2, "duration_steps_read": 2, "readabl": 2, "form": 2, "height2rat": 2, "minutes_read": [2, 4], "string": 2, "rate2height": 2, "timedelta_components_plu": 2, "td": 2, "min_freq": 2, "schaltjahr": 2, "nicht": [2, 5], "miteinbezogen": 2, "timedelta_read": 2, "short": 2, "manipul": 2, "plot_help": 2, "idf_bar_ax": 2, "return_period_color": 2, "00ffff": 2, "add8e6": 2, "0000ff": 2, "ffff00": 2, "ffa500": 2, "ff0000": 2, "ff00ff": 2, "pyplot": [2, 4, 5, 6], "usag": [3, 7], "gt": [3, 5], "lt": [3, 4, 5], "ehyd": [3, 5, 6], "gv": [3, 5, 6], "id": [3, 5, 6], "112086": [3, 5, 6], "andritz": [3, 5], "ehyd_112086": [3, 4, 5, 6], "ehyd_112086_idf_data": [3, 5, 6], "exist": [3, 4], "resultierend": [3, 5], "regenh\u00f6h": [3, 5], "0a": [3, 5], "0min": [3, 5], "regenspend": [3, 5], "r_n": [3, 5], "7": [3, 4, 5, 6], "8": [3, 4, 5, 6], "idf__curves_plot": 3, "png": 3, "6": [3, 4, 5, 6], "000": [3, 5], "500": [3, 5], "333": [3, 5], "200": [3, 5], "050": [3, 5], "040": [3, 5], "033": [3, 5], "020": [3, 5], "013": [3, 5], "010": [3, 5], "intensitydurationfrequencyanalysi": 4, "heavyrainindexanalysi": 4, "enabl": 4, "creation": 4, "locat": 4, "indic": 4, "accord": 4, "schmitt": 4, "mudersbach": 4, "those": 4, "kr\u00fcger": 4, "pfister": 4, "furthermor": 4, "other": 4, "thu": 4, "compar": 4, "assign": 4, "individu": 4, "listedcolormap": 4, "definit": [4, 5, 6], "heavy_rainfall_index": 4, "heavyrainfallindexanalys": 4, "o": [4, 5, 6], "inlin": [4, 5, 6], "fast": 4, "krueger_pfist": 4, "kruegerpfist": 4, "hri": 4, "cmap": 4, "indices_color": 4, "read_parquet": [4, 5, 6], "output_directori": [4, 5, 6], "ergebniss": 4, "join": [4, 5, 6], "matrix": 4, "regard": 4, "sri": 4, "interim_sri_t": 4, "background_gradi": 4, "vmin": 4, "vmax": 4, "nbsp": 4, "auxiliari": 4, "shown": 4, "result_sri_t": 4, "700": 4, "format": [4, 5], "1f": [4, 5], "84": [4, 5], "125": [4, 6], "128": 4, "126": 4, "132": 4, "138": 4, "115": 4, "141": 4, "145": 4, "129": 4, "136": 4, "143": 4, "146": 4, "152": 4, "148": 4, "154": 4, "140": 4, "153": 4, "155": 4, "162": 4, "144": 4, "161": 4, "177": 4, "123": 4, "165": 4, "174": 4, "191": 4, "170": 4, "179": 4, "188": 4, "197": 4, "185": 4, "203": 4, "necessari": 4, "off": 4, "respect": 4, "fig": [4, 5, 6], "result_sri_figur": 4, "loc": [4, 6], "upper": 4, "left": 4, "grid": 4, "grei": 4, "linewidth": 4, "set_ylim": 4, "230": 4, "old_label": 4, "get_xticklabel": 4, "set_xticklabel": 4, "handl": 4, "get_legend_handles_label": 4, "titl": 4, "savefig": 4, "svg": 4, "alloc": 4, "dur": 4, "lp": [4, 6], "round": [4, 5], "last": 4, "shift": 4, "add_max_return_periods_to_ev": [4, 6], "max_period": [4, 6], "sort_valu": 4, "rainfall_sum": 4, "22it": 4, "97it": 4, "rain_sum": [4, 6], "last_ev": [4, 6], "max_return_period": [4, 6], "max_return_period_dur": [4, 6], "2008": [4, 6], "831020": 4, "442798": 4, "2009": [4, 6], "718725": 4, "379539": 4, "975735": 4, "433": 4, "2016": [4, 5, 6], "793788": 4, "605674": 4, "193": 4, "2011": [4, 6], "732452": 4, "391": 4, "2015": [4, 6], "981540": 4, "331": 4, "2014": [4, 6], "798825": 4, "302": 4, "2013": [4, 6], "543855": 4, "296355": 4, "244": 4, "720530": 4, "441": 4, "663786": 4, "287": 4, "602489": 4, "ascend": 4, "head": [4, 5], "798": 4, "797": [4, 6], "585304": 4, "289": [4, 6], "566": [4, 6], "799": 4, "412151": 4, "to_datetim": 4, "home": 4, "lib": 4, "site": 4, "1056": 4, "settingwithcopywarn": 4, "try": 4, "copi": [4, 6], "slice": 4, "see": 4, "caveat": 4, "document": 4, "pydata": 4, "stabl": 4, "user_guid": 4, "html": 4, "view": 4, "versu": 4, "cacher_needs_upd": 4, "self": 4, "_check_is_chained_assignment_poss": 4, "dtype": [4, 6], "82it": 4, "renam": 4, "regensumm": 4, "to_fram": 4, "bar": 4, "wiederkehrperiod": 4, "sri_table_ev": 4, "get_event_sri_max": 4, "_df": 4, "astyp": 4, "subset": 4, "bmh": [5, 6], "partiel": 5, "peak": 5, "threshold": 5, "pot": 5, "j\u00e4hrlich": 5, "am": 5, "empfohlen": 5, "st\u00fctzstellen": 5, "und": 5, "convective_advect": 5, "unterscheidung": 5, "\u00fcberwiegend": 5, "konvektiv": 5, "advektiv": 5, "verursacht": 5, "starkregen": 5, "inkludiert": 5, "die": 5, "dauerstufen": 5, "75d": 5, "1d": 5, "2d": 5, "3d": 5, "4d": 5, "5d": 5, "6d": 5, "der": 5, "tage": 5, "standardm\u00e4\u00dfig": 5, "berechnet": 5, "5m": 5, "10m": 5, "15m": 5, "20m": 5, "30m": 5, "45m": 5, "60m": 5, "5h": 5, "3h": 5, "6h": 5, "10h": 5, "2007": 5, "tail": 5, "006": 5, "092": 5, "090": 5, "bei": 5, "jeder": 5, "neuen": 5, "berechnung": 5, "werden": 5, "zwischenergebniss": 5, "erstellt": 5, "welch": 5, "nur": 5, "abh\u00e4ngig": 5, "von": 5, "gew\u00e4hlten": 5, "angegebenen": 5, "ben\u00f6tigten": 5, "sind": 5, "dieser": 5, "vorgang": 5, "dauert": 5, "einig": 5, "sekunden": 5, "auserdem": 5, "enthalten": 5, "dies": 5, "zur": 5, "ben\u00f6tigt": 5, "hier": 5, "bereist": 5, "berechnungsverfahren": 5, "st\u00fcckpunkt": 5, "laut": 5, "dem": 5, "ber\u00fccksichtigt": 5, "um": 5, "zeit": 5, "zu": 5, "sparen": 5, "gibt": 5, "m\u00f6glichkeit": 5, "zwischenzuspeichern": 5, "erneutem": 5, "aufrufen": 5, "de": 5, "mehr": 5, "sondern": 5, "au": 5, "datei": 5, "gelesen": 5, "abgerufen": 5, "k\u00f6nnen": 5, "mit": 5, "0x1a767557310": 5, "031596336052708": 5, "print": 5, "2f": 5, "211": 5, "46218151169674": 5, "410836729727": 5, "1430180144131331": 5, "433080747189968": 5, "to_csv": 5, "idf_table_unix": 5, "float_format": 5, "to_str": 5, "white": 5, "sub": 6, "size": 6, "1356": 6, "reduc": 6, "limit": 6, "minimum": 6, "252": 6, "occur": 6, "363788": 6, "457449": 6, "831013": 6, "277": 6, "422038": 6, "286": 6, "930161": 6, "299093": 6, "291": 6, "605659": 6, "962866": 6, "684": 6, "720531": 6, "584981": 6, "844": 6, "452099": 6, "845": 6, "543837": 6, "947": 6, "082195": 6, "948": 6, "798822": 6, "1137": 6, "054031": 6, "1261": 6, "537112": 6, "1294": 6, "426623": 6, "1298": 6, "400347": 6, "1300": 6, "663787": 6, "let": 6, "pick": 6, "caption": 6, "event_plot": 6, "tight_layout": 6, "displai": 6, "instal": 7, "commandlin": 7, "tool": 7, "background": 7, "output": 7, "sww": 7, "util": 7, "helper": 7, "berechnungen": 7, "modul": 7, "search": 7, "page": 7}, "objects": {"idf_analysis": [[2, 0, 0, "-", "event_series_analysis"], [2, 0, 0, "-", "in_out"], [2, 0, 0, "-", "little_helpers"], [2, 0, 0, "-", "parameter_formulations"], [2, 0, 0, "-", "plot_helpers"], [2, 0, 0, "-", "sww_utils"]], "idf_analysis.event_series_analysis": [[2, 1, 1, "", "annual_series"], [2, 1, 1, "", "calculate_u_w"], [2, 1, 1, "", "iter_event_series"], [2, 1, 1, "", "partial_series"]], "idf_analysis.idf_backend": [[2, 2, 1, "", "IdfParameters"]], "idf_analysis.idf_backend.IdfParameters": [[2, 3, 1, "", "from_interim_results_file"], [2, 3, 1, "", "get_array_param"], [2, 3, 1, "", "get_scalar_param"], [2, 3, 1, "", "get_u_w"], [2, 3, 1, "", "measured_points"], [2, 3, 1, "", "set_parameter_approaches_from_worksheet"]], "idf_analysis.idf_class": [[1, 2, 1, "", "IntensityDurationFrequencyAnalyse"]], "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse": [[1, 4, 1, "", "_freq"], [1, 4, 1, "", "_rain_events"], [1, 4, 1, "", "_rainfall_sum_frame"], [1, 4, 1, "", "_return_periods_frame"], [1, 4, 1, "", "_series"], [1, 3, 1, "", "add_max_intensities_to_events"], [1, 3, 1, "", "auto_save_parameters"], [1, 3, 1, "", "auto_save_rain_events"], [1, 3, 1, "", "auto_save_return_periods_frame"], [1, 3, 1, "", "depth_of_rainfall"], [1, 5, 1, "", "duration_steps"], [1, 5, 1, "", "duration_steps_for_output"], [1, 3, 1, "", "event_report"], [1, 3, 1, "", "from_idf_table"], [1, 3, 1, "", "get_duration"], [1, 3, 1, "", "get_rainfall_sum_frame"], [1, 3, 1, "", "get_return_period"], [1, 3, 1, "", "get_return_periods_frame"], [1, 5, 1, "", "model_rain_block"], [1, 5, 1, "", "model_rain_euler"], [1, 5, 1, "", "parameters"], [1, 3, 1, "", "r_720_1"], [1, 5, 1, "", "rain_events"], [1, 3, 1, "", "rain_flow_rate"], [1, 5, 1, "", "rainfall_sum_frame"], [1, 3, 1, "", "read_parameters"], [1, 3, 1, "", "read_rain_events"], [1, 3, 1, "", "read_return_periods_frame"], [1, 3, 1, "", "result_figure"], [1, 3, 1, "", "result_table"], [1, 5, 1, "", "return_periods_frame"], [1, 3, 1, "", "set_series"], [1, 3, 1, "", "write_parameters"], [1, 3, 1, "", "write_rain_events"], [1, 3, 1, "", "write_return_periods_frame"]], "idf_analysis.in_out": [[2, 1, 1, "", "import_series"]], "idf_analysis.little_helpers": [[2, 1, 1, "", "delta2min"], [2, 1, 1, "", "duration_steps_readable"], [2, 1, 1, "", "height2rate"], [2, 1, 1, "", "minutes_readable"], [2, 1, 1, "", "rate2height"], [2, 1, 1, "", "timedelta_components_plus"], [2, 1, 1, "", "timedelta_readable"]], "idf_analysis.parameter_formulations": [[2, 1, 1, "", "folded_log_formulation"], [2, 1, 1, "", "hyperbolic_formulation"]], "idf_analysis.plot_helpers": [[2, 1, 1, "", "idf_bar_axes"]], "idf_analysis.sww_utils": [[2, 6, 1, "", "IdfError"], [2, 1, 1, "", "agg_events"], [2, 1, 1, "", "event_duration"], [2, 1, 1, "", "event_number_to_series"], [2, 1, 1, "", "guess_freq"], [2, 1, 1, "", "rain_bar_plot"], [2, 1, 1, "", "rain_events"], [2, 1, 1, "", "resample_rain_series"]]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:method", "4": "py:attribute", "5": "py:property", "6": "py:exception"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"], "4": ["py", "attribute", "Python attribute"], "5": ["py", "property", "Python property"], "6": ["py", "exception", "Python exception"]}, "titleterms": {"intens": [0, 5, 6, 7], "durat": [0, 5, 6, 7], "frequenc": [0, 5, 6, 7], "analysi": 0, "base": [0, 2], "kostra": 0, "document": [0, 7], "instal": 0, "window": 0, "linux": 0, "unix": 0, "depend": 0, "usag": 0, "commandlin": [0, 3], "tool": 0, "exampl": [0, 3, 4], "file": 0, "plot": [0, 2], "idf": 0, "tabl": [0, 7], "background": 0, "api": 1, "main": 1, "function": [1, 2], "calcul": 2, "method": 2, "input": 2, "output": 2, "sww": 2, "util": 2, "convert": 2, "helper": 2, "us": 3, "heavi": 4, "rainfal": 4, "index": 4, "analys": [5, 6, 7], "paramet": 5, "berechnungen": 5, "extend": 6, "welcom": 7, "": 7, "content": 7, "indic": 7}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "nbsphinx": 4, "sphinx": 60}, "alltitles": {"Intensity duration frequency analysis (based on KOSTRA)": [[0, "intensity-duration-frequency-analysis-based-on-kostra"]], "Documentation": [[0, "documentation"]], "Installation": [[0, "installation"]], "Windows": [[0, "windows"]], "Linux/Unix": [[0, "linux-unix"]], "Dependencies": [[0, "dependencies"]], "Usage": [[0, "usage"]], "Commandline tool": [[0, "commandline-tool"]], "Example": [[0, "example"]], "Example Files": [[0, "example-files"]], "Example Plot": [[0, "example-plot"]], "Example IDF table": [[0, "example-idf-table"]], "Background": [[0, "background"]], "API": [[1, "api"]], "Main Function": [[1, "main-function"]], "Base Functions": [[2, "base-functions"]], "Calculation Methods": [[2, "calculation-methods"]], "Input and Output": [[2, "input-and-output"]], "SWW Utils": [[2, "sww-utils"]], "Converter helper functions": [[2, "converter-helper-functions"]], "Plotting helper functions": [[2, "plotting-helper-functions"]], "Example Commandline Use": [[3, "Example-Commandline-Use"]], "Example for Heavy Rainfall Index": [[4, "Example-for-Heavy-Rainfall-Index"]], "Intensity Duration Frequency Analyse": [[5, "Intensity-Duration-Frequency-Analyse"]], "Parameter": [[5, "Parameter"]], "Berechnungen": [[5, "Berechnungen"]], "Intensity Duration Frequency Analyse - EXTENDED": [[6, "Intensity-Duration-Frequency-Analyse---EXTENDED"]], "Welcome to Intensity Duration Frequency Analyse\u2019s documentation!": [[7, "welcome-to-intensity-duration-frequency-analyse-s-documentation"]], "Contents:": [[7, null]], "Indices and tables": [[7, "indices-and-tables"]]}, "indexentries": {"intensitydurationfrequencyanalyse (class in idf_analysis.idf_class)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse"]], "_freq (idf_analysis.idf_class.intensitydurationfrequencyanalyse attribute)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse._freq"]], "_rain_events (idf_analysis.idf_class.intensitydurationfrequencyanalyse attribute)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse._rain_events"]], "_rainfall_sum_frame (idf_analysis.idf_class.intensitydurationfrequencyanalyse attribute)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse._rainfall_sum_frame"]], "_return_periods_frame (idf_analysis.idf_class.intensitydurationfrequencyanalyse attribute)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse._return_periods_frame"]], "_series (idf_analysis.idf_class.intensitydurationfrequencyanalyse attribute)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse._series"]], "add_max_intensities_to_events() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.add_max_intensities_to_events"]], "auto_save_parameters() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.auto_save_parameters"]], "auto_save_rain_events() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.auto_save_rain_events"]], "auto_save_return_periods_frame() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.auto_save_return_periods_frame"]], "depth_of_rainfall() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.depth_of_rainfall"]], "duration_steps (idf_analysis.idf_class.intensitydurationfrequencyanalyse property)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.duration_steps"]], "duration_steps_for_output (idf_analysis.idf_class.intensitydurationfrequencyanalyse property)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.duration_steps_for_output"]], "event_report() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.event_report"]], "from_idf_table() (idf_analysis.idf_class.intensitydurationfrequencyanalyse class method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.from_idf_table"]], "get_duration() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.get_duration"]], "get_rainfall_sum_frame() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.get_rainfall_sum_frame"]], "get_return_period() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.get_return_period"]], "get_return_periods_frame() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.get_return_periods_frame"]], "model_rain_block (idf_analysis.idf_class.intensitydurationfrequencyanalyse property)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.model_rain_block"]], "model_rain_euler (idf_analysis.idf_class.intensitydurationfrequencyanalyse property)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.model_rain_euler"]], "parameters (idf_analysis.idf_class.intensitydurationfrequencyanalyse property)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.parameters"]], "r_720_1() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.r_720_1"]], "rain_events (idf_analysis.idf_class.intensitydurationfrequencyanalyse property)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.rain_events"]], "rain_flow_rate() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.rain_flow_rate"]], "rainfall_sum_frame (idf_analysis.idf_class.intensitydurationfrequencyanalyse property)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.rainfall_sum_frame"]], "read_parameters() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.read_parameters"]], "read_rain_events() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.read_rain_events"]], "read_return_periods_frame() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.read_return_periods_frame"]], "result_figure() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.result_figure"]], "result_table() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.result_table"]], "return_periods_frame (idf_analysis.idf_class.intensitydurationfrequencyanalyse property)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.return_periods_frame"]], "set_series() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.set_series"]], "write_parameters() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.write_parameters"]], "write_rain_events() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.write_rain_events"]], "write_return_periods_frame() (idf_analysis.idf_class.intensitydurationfrequencyanalyse method)": [[1, "idf_analysis.idf_class.IntensityDurationFrequencyAnalyse.write_return_periods_frame"]], "idferror": [[2, "idf_analysis.sww_utils.IdfError"]], "idfparameters (class in idf_analysis.idf_backend)": [[2, "idf_analysis.idf_backend.IdfParameters"]], "agg_events() (in module idf_analysis.sww_utils)": [[2, "idf_analysis.sww_utils.agg_events"]], "annual_series() (in module idf_analysis.event_series_analysis)": [[2, "idf_analysis.event_series_analysis.annual_series"]], "calculate_u_w() (in module idf_analysis.event_series_analysis)": [[2, "idf_analysis.event_series_analysis.calculate_u_w"]], "delta2min() (in module idf_analysis.little_helpers)": [[2, "idf_analysis.little_helpers.delta2min"]], "duration_steps_readable() (in module idf_analysis.little_helpers)": [[2, "idf_analysis.little_helpers.duration_steps_readable"]], "event_duration() (in module idf_analysis.sww_utils)": [[2, "idf_analysis.sww_utils.event_duration"]], "event_number_to_series() (in module idf_analysis.sww_utils)": [[2, "idf_analysis.sww_utils.event_number_to_series"]], "folded_log_formulation() (in module idf_analysis.parameter_formulations)": [[2, "idf_analysis.parameter_formulations.folded_log_formulation"]], "from_interim_results_file() (idf_analysis.idf_backend.idfparameters class method)": [[2, "idf_analysis.idf_backend.IdfParameters.from_interim_results_file"]], "get_array_param() (idf_analysis.idf_backend.idfparameters method)": [[2, "idf_analysis.idf_backend.IdfParameters.get_array_param"]], "get_scalar_param() (idf_analysis.idf_backend.idfparameters method)": [[2, "idf_analysis.idf_backend.IdfParameters.get_scalar_param"]], "get_u_w() (idf_analysis.idf_backend.idfparameters method)": [[2, "idf_analysis.idf_backend.IdfParameters.get_u_w"]], "guess_freq() (in module idf_analysis.sww_utils)": [[2, "idf_analysis.sww_utils.guess_freq"]], "height2rate() (in module idf_analysis.little_helpers)": [[2, "idf_analysis.little_helpers.height2rate"]], "hyperbolic_formulation() (in module idf_analysis.parameter_formulations)": [[2, "idf_analysis.parameter_formulations.hyperbolic_formulation"]], "idf_analysis.event_series_analysis": [[2, "module-idf_analysis.event_series_analysis"]], "idf_analysis.in_out": [[2, "module-idf_analysis.in_out"]], "idf_analysis.little_helpers": [[2, "module-idf_analysis.little_helpers"]], "idf_analysis.parameter_formulations": [[2, "module-idf_analysis.parameter_formulations"]], "idf_analysis.plot_helpers": [[2, "module-idf_analysis.plot_helpers"]], "idf_analysis.sww_utils": [[2, "module-idf_analysis.sww_utils"]], "idf_bar_axes() (in module idf_analysis.plot_helpers)": [[2, "idf_analysis.plot_helpers.idf_bar_axes"]], "import_series() (in module idf_analysis.in_out)": [[2, "idf_analysis.in_out.import_series"]], "iter_event_series() (in module idf_analysis.event_series_analysis)": [[2, "idf_analysis.event_series_analysis.iter_event_series"]], "measured_points() (idf_analysis.idf_backend.idfparameters method)": [[2, "idf_analysis.idf_backend.IdfParameters.measured_points"]], "minutes_readable() (in module idf_analysis.little_helpers)": [[2, "idf_analysis.little_helpers.minutes_readable"]], "module": [[2, "module-idf_analysis.event_series_analysis"], [2, "module-idf_analysis.in_out"], [2, "module-idf_analysis.little_helpers"], [2, "module-idf_analysis.parameter_formulations"], [2, "module-idf_analysis.plot_helpers"], [2, "module-idf_analysis.sww_utils"]], "partial_series() (in module idf_analysis.event_series_analysis)": [[2, "idf_analysis.event_series_analysis.partial_series"]], "rain_bar_plot() (in module idf_analysis.sww_utils)": [[2, "idf_analysis.sww_utils.rain_bar_plot"]], "rain_events() (in module idf_analysis.sww_utils)": [[2, "idf_analysis.sww_utils.rain_events"]], "rate2height() (in module idf_analysis.little_helpers)": [[2, "idf_analysis.little_helpers.rate2height"]], "resample_rain_series() (in module idf_analysis.sww_utils)": [[2, "idf_analysis.sww_utils.resample_rain_series"]], "set_parameter_approaches_from_worksheet() (idf_analysis.idf_backend.idfparameters method)": [[2, "idf_analysis.idf_backend.IdfParameters.set_parameter_approaches_from_worksheet"]], "timedelta_components_plus() (in module idf_analysis.little_helpers)": [[2, "idf_analysis.little_helpers.timedelta_components_plus"]], "timedelta_readable() (in module idf_analysis.little_helpers)": [[2, "idf_analysis.little_helpers.timedelta_readable"]]}}) \ No newline at end of file