From 5b910fc9b3c6610c6dc8a5ba0d12b5898aeb33ae Mon Sep 17 00:00:00 2001 From: jkriege2 Date: Mon, 7 Jan 2019 21:00:56 +0100 Subject: [PATCH] added example for geometric objects --- .gitignore | 1 + JKQtPlotterBuildAllExamples.pro | 1 + README.md | 3 +- .../jkqtfastplotter_test_and_lib.pro | 2 +- .../jkqtmathtext_simpletest_and_lib.pro | 2 +- .../jkqtmathtext_test_and_lib.pro | 2 +- examples/jkqtplot_test/TestWidgetGeometry.cpp | 10 +- .../jkqtplot_test/jkqtplot_test_and_lib.pro | 2 +- .../jkqtplotter_simpletest_and_lib.pro | 2 +- ...kqtplotter_simpletest_barchart_and_lib.pro | 2 +- ...kqtplotter_simpletest_dateaxes_and_lib.pro | 2 +- ...tter_simpletest_errorbarstyles_and_lib.pro | 2 +- ...lotter_simpletest_filledgraphs_and_lib.pro | 2 +- ...lotter_simpletest_functionplot_and_lib.pro | 2 +- examples/simpletest_geometric/README.md | 78 +++++ .../jkqtplotter_simpletest_geometric.cpp | 151 ++++++++++ .../jkqtplotter_simpletest_geometric.pro | 25 ++ ...qtplotter_simpletest_geometric_and_lib.pro | 8 + ...qtplotter_simpletest_imageplot_and_lib.pro | 2 +- ..._simpletest_imageplot_modifier_and_lib.pro | 2 +- ...mpletest_imageplot_nodatastore_and_lib.pro | 2 +- ...lotter_simpletest_impulsesplot_and_lib.pro | 2 +- ...jkqtplotter_simpletest_logaxes_and_lib.pro | 2 +- ...ter_simpletest_parametriccurve_and_lib.pro | 2 +- ...er_simpletest_paramscatterplot_and_lib.pro | 2 +- ...pletest_paramscatterplot_image_and_lib.pro | 2 +- ..._simpletest_parsedfunctionplot_and_lib.pro | 2 +- ...ter_simpletest_rgbimageplot_qt_and_lib.pro | 2 +- .../jkqtplotter_simpletest_speed_and_lib.pro | 2 +- ...plotter_simpletest_stackedbars_and_lib.pro | 2 +- ...qtplotter_simpletest_stepplots_and_lib.pro | 2 +- ..._simpletest_symbols_and_errors_and_lib.pro | 2 +- ..._simpletest_symbols_and_styles_and_lib.pro | 2 +- .../test_multiplot/test_multiplot_and_lib.pro | 2 +- lib/jkqtplotter/jkqtpgraphs.h | 2 +- lib/jkqtplotter/jkqtpgraphsgeometric.cpp | 223 ++++++++++++-- lib/jkqtplotter/jkqtpgraphsgeometric.h | 277 ++++++++++++++++-- .../jkqtplotter_simpletest_geometric.png | Bin 0 -> 121087 bytes ...jkqtplotter_simpletest_geometric_small.png | Bin 0 -> 23995 bytes 39 files changed, 742 insertions(+), 89 deletions(-) create mode 100644 examples/simpletest_geometric/README.md create mode 100644 examples/simpletest_geometric/jkqtplotter_simpletest_geometric.cpp create mode 100644 examples/simpletest_geometric/jkqtplotter_simpletest_geometric.pro create mode 100644 examples/simpletest_geometric/jkqtplotter_simpletest_geometric_and_lib.pro create mode 100644 screenshots/jkqtplotter_simpletest_geometric.png create mode 100644 screenshots/jkqtplotter_simpletest_geometric_small.png diff --git a/.gitignore b/.gitignore index c43df597ed..ae6f1ddfaf 100644 --- a/.gitignore +++ b/.gitignore @@ -87,3 +87,4 @@ Thumbs.db /doc/html .qmake.stash moc_predefs.h +/lib/jkqtplotter/*.TMP diff --git a/JKQtPlotterBuildAllExamples.pro b/JKQtPlotterBuildAllExamples.pro index 746ba921e0..3d1c40307a 100644 --- a/JKQtPlotterBuildAllExamples.pro +++ b/JKQtPlotterBuildAllExamples.pro @@ -62,6 +62,7 @@ addSimpleTest(paramscatterplot_image) addSimpleTest(parametriccurve) addSimpleTest(parsedfunctionplot) addSimpleTest(functionplot) +addSimpleTest(geometric) #addSimpleTest(imageplot_nodatastore) #addSimpleTest(rgbimageplot_opencv) #addSimpleTest(imageplot_opencv) diff --git a/README.md b/README.md index 16f9733880..26d9faba9e 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,8 @@ All test-projects are Qt-projects that use qmake to build. You can load them int | [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_paramscatterplot_image_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/simpletest_paramscatterplot_image) | [Draw an Artistic Image with a Parametrized Scatter Graph](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/simpletest_paramscatterplot_image) | `JKQTPxyParametrizedScatterGraph`
C++-style QVector as plot data
rectangular arrangement of scatters
generative computer graphics | | [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_parametriccurve_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/simpletest_parametriccurve) | [Plotting Parametric Curves](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/simpletest_parametriccurve) | `JKQTPxyLineGraph` and `JKQTPxyParametrizedScatterGraph`
C++-style QVector as plot data
parametric curve plotting | | [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_functionplot_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/simpletest_functionplot) | [Plotting Mathematical Functions as Line Graphs](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/simpletest_functionplot) | `JKQTPxFunctionLineGraph`
diretly plotting C/C++-functions | -[![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_parsedfunctionplot_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/simpletest_parsedfunctionplot) | [Plotting Parsed Mathematical Functions as Line Graphs](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/simpletest_parsedfunctionplot) | `JKQTPxParsedFunctionLineGraph`
plotting functions with the internal math equation parser/evaluator | +| [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_parsedfunctionplot_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/simpletest_parsedfunctionplot) | [Plotting Parsed Mathematical Functions as Line Graphs](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/simpletest_parsedfunctionplot) | `JKQTPxParsedFunctionLineGraph`
plotting functions with the internal math equation parser/evaluator | +| [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_geometric_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/test/simpletest_geometric) | [Plotting Geometric Objects](https://github.com/jkriege2/JKQtPlotter/tree/master/test/simpletest_geometric) | plotting geometric elements | ### Styling the Plot, Keys, Axes, ... diff --git a/examples/jkqtfastplotter_test/jkqtfastplotter_test_and_lib.pro b/examples/jkqtfastplotter_test/jkqtfastplotter_test_and_lib.pro index bcf731db73..08a09eecbc 100644 --- a/examples/jkqtfastplotter_test/jkqtfastplotter_test_and_lib.pro +++ b/examples/jkqtfastplotter_test/jkqtfastplotter_test_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtfastplotter_test -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtfastplotter_test.file=$$PWD/jkqtfastplotter_test.pro jkqtfastplotter_test.depends = jkqtplotterlib diff --git a/examples/jkqtmathtext_simpletest/jkqtmathtext_simpletest_and_lib.pro b/examples/jkqtmathtext_simpletest/jkqtmathtext_simpletest_and_lib.pro index 4796840fd9..dce61fcc24 100644 --- a/examples/jkqtmathtext_simpletest/jkqtmathtext_simpletest_and_lib.pro +++ b/examples/jkqtmathtext_simpletest/jkqtmathtext_simpletest_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtmathtext_simpletest -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtmathtext_simpletest.file=$$PWD/jkqtmathtext_simpletest.pro jkqtmathtext_simpletest.depends = jkqtplotterlib diff --git a/examples/jkqtmathtext_test/jkqtmathtext_test_and_lib.pro b/examples/jkqtmathtext_test/jkqtmathtext_test_and_lib.pro index a98f7dc99c..b20495bf1a 100644 --- a/examples/jkqtmathtext_test/jkqtmathtext_test_and_lib.pro +++ b/examples/jkqtmathtext_test/jkqtmathtext_test_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtmathtext_test -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtmathtext_test.file=$$PWD/jkqtmathtext_test.pro jkqtmathtext_test.depends = jkqtplotterlib diff --git a/examples/jkqtplot_test/TestWidgetGeometry.cpp b/examples/jkqtplot_test/TestWidgetGeometry.cpp index 2665c87b2b..c52a7844bc 100644 --- a/examples/jkqtplot_test/TestWidgetGeometry.cpp +++ b/examples/jkqtplot_test/TestWidgetGeometry.cpp @@ -36,16 +36,16 @@ TestWidgetGeometry::TestWidgetGeometry(QWidget *parent) : //plotGeo->get_plotter()->addGraph(line2); JKQTPgeoRectangle* rect1=new JKQTPgeoRectangle(plotGeo->get_plotter(), 1,1,2,2, QColor("blue"),2, Qt::SolidLine, QColor("lightblue")); - rect1->set_alpha(30); + rect1->set_angle(30); //plotGeo->get_plotter()->addGraph(rect1); JKQTPgeoRectangle* rect2=new JKQTPgeoRectangle(plotGeo->get_plotter(), 1,1,2,2, QColor("red"),2); - rect2->set_alpha(45); + rect2->set_angle(45); //plotGeo->get_plotter()->addGraph(rect2); JKQTPgeoRectangle* rect3=new JKQTPgeoRectangle(plotGeo->get_plotter(), 1,1,2,4, QColor("green"),2); - rect3->set_alpha(-30); + rect3->set_angle(-30); //plotGeo->get_plotter()->addGraph(rect3); JKQTPgeoEllipse* ell3=new JKQTPgeoEllipse(plotGeo->get_plotter(), 1,1,2,4, QColor("green"),2, Qt::SolidLine, QColor("lightgreen"), Qt::CrossPattern); - ell3->set_alpha(-30); + ell3->set_angle(-30); //plotGeo->get_plotter()->addGraph(ell3); QVector p; @@ -57,7 +57,7 @@ TestWidgetGeometry::TestWidgetGeometry(QWidget *parent) : // JKQTPgeoPolygon* poly=new JKQTPgeoPolygon(plotGeo->get_plotter(), p, QColor("black"), 1.5, Qt::SolidLine, QColor(128,128,0,128)); //plotGeo->get_plotter()->addGraph(poly); -// JKQTPgeoLines* lines=new JKQTPgeoLines(plotGeo->get_plotter(), p, QColor(255,255,0), 3); +// JKQTPgeoPolyLines* lines=new JKQTPgeoPolyLines(plotGeo->get_plotter(), p, QColor(255,255,0), 3); //plotGeo->get_plotter()->addGraph(lines); JKQTPgeoEllipse* ell1=new JKQTPgeoEllipse(plotGeo->get_plotter(), 0,0,2,4, QColor("black"),1.5, Qt::DotLine); diff --git a/examples/jkqtplot_test/jkqtplot_test_and_lib.pro b/examples/jkqtplot_test/jkqtplot_test_and_lib.pro index cefdc35d38..c3467d8b34 100644 --- a/examples/jkqtplot_test/jkqtplot_test_and_lib.pro +++ b/examples/jkqtplot_test/jkqtplot_test_and_lib.pro @@ -5,4 +5,4 @@ SUBDIRS += jkqtplot_test jkqtplotterlib jkqtplot_test.file=$$PWD/jkqtplot_test.pro jkqtplot_test.depends = jkqtplotterlib -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro diff --git a/examples/simpletest/jkqtplotter_simpletest_and_lib.pro b/examples/simpletest/jkqtplotter_simpletest_and_lib.pro index 8000a57bd1..b958b1ee6d 100644 --- a/examples/simpletest/jkqtplotter_simpletest_and_lib.pro +++ b/examples/simpletest/jkqtplotter_simpletest_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest.file=$$PWD/jkqtplotter_simpletest.pro jkqtplotter_simpletest.depends = jkqtplotterlib diff --git a/examples/simpletest_barchart/jkqtplotter_simpletest_barchart_and_lib.pro b/examples/simpletest_barchart/jkqtplotter_simpletest_barchart_and_lib.pro index ea2db60eeb..e24c6f5e6b 100644 --- a/examples/simpletest_barchart/jkqtplotter_simpletest_barchart_and_lib.pro +++ b/examples/simpletest_barchart/jkqtplotter_simpletest_barchart_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_barchart -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_barchart.file=$$PWD/jkqtplotter_simpletest_barchart.pro jkqtplotter_simpletest_barchart.depends = jkqtplotterlib diff --git a/examples/simpletest_dateaxes/jkqtplotter_simpletest_dateaxes_and_lib.pro b/examples/simpletest_dateaxes/jkqtplotter_simpletest_dateaxes_and_lib.pro index ede7419e2a..436b7fa90d 100644 --- a/examples/simpletest_dateaxes/jkqtplotter_simpletest_dateaxes_and_lib.pro +++ b/examples/simpletest_dateaxes/jkqtplotter_simpletest_dateaxes_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_dateaxes -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_dateaxes.file=$$PWD/jkqtplotter_simpletest_dateaxes.pro jkqtplotter_simpletest_dateaxes.depends = jkqtplotterlib diff --git a/examples/simpletest_errorbarstyles/jkqtplotter_simpletest_errorbarstyles_and_lib.pro b/examples/simpletest_errorbarstyles/jkqtplotter_simpletest_errorbarstyles_and_lib.pro index 51c5c23e0c..38f61e893a 100644 --- a/examples/simpletest_errorbarstyles/jkqtplotter_simpletest_errorbarstyles_and_lib.pro +++ b/examples/simpletest_errorbarstyles/jkqtplotter_simpletest_errorbarstyles_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_errorbarstyles -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_errorbarstyles.file=$$PWD/jkqtplotter_simpletest_errorbarstyles.pro jkqtplotter_simpletest_errorbarstyles.depends = jkqtplotterlib diff --git a/examples/simpletest_filledgraphs/jkqtplotter_simpletest_filledgraphs_and_lib.pro b/examples/simpletest_filledgraphs/jkqtplotter_simpletest_filledgraphs_and_lib.pro index 6da7639acd..66b5ee8ef5 100644 --- a/examples/simpletest_filledgraphs/jkqtplotter_simpletest_filledgraphs_and_lib.pro +++ b/examples/simpletest_filledgraphs/jkqtplotter_simpletest_filledgraphs_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_filledgraphs -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_filledgraphs.file=$$PWD/jkqtplotter_simpletest_filledgraphs.pro jkqtplotter_simpletest_filledgraphs.depends = jkqtplotterlib diff --git a/examples/simpletest_functionplot/jkqtplotter_simpletest_functionplot_and_lib.pro b/examples/simpletest_functionplot/jkqtplotter_simpletest_functionplot_and_lib.pro index 8f6f90a4d6..7fc7577e74 100644 --- a/examples/simpletest_functionplot/jkqtplotter_simpletest_functionplot_and_lib.pro +++ b/examples/simpletest_functionplot/jkqtplotter_simpletest_functionplot_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_functionplot -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_functionplot.file=$$PWD/jkqtplotter_simpletest_functionplot.pro jkqtplotter_simpletest_functionplot.depends = jkqtplotterlib diff --git a/examples/simpletest_geometric/README.md b/examples/simpletest_geometric/README.md new file mode 100644 index 0000000000..38e03d1e53 --- /dev/null +++ b/examples/simpletest_geometric/README.md @@ -0,0 +1,78 @@ +[Back to JKQTPlotter main page](https://github.com/jkriege2/JKQtPlotter/) + +# JKQtPlotter + +## Plotting Geometric Objects +This project (see `./test/simpletest_geometric/`) shows the capabilities of JKQtPlotter to also draw geometric elements, like circles, ellipses, rectangles etc. + +The source code of the main application can be found in [`jkqtplotter_simpletest_geometric.cpp`](https://github.com/jkriege2/JKQtPlotter/blob/master/test/simpletest_geometric/jkqtplotter_simpletest_geometric.cpp). First a plot is generated and the axis aspect ration is set to 1, so an accurate plot is generated. Then several geometric graphs are added to the plot. Here are some examples, you can find more more examples in the source code of the example: + +```c++ + // a text element + plot.addGraph(new JKQTPgeoText(&plot, 0.1,0.6, "$x_{1/2}=\\frac{\\sqrt{b^2-4ac}}{2a}$", 10, QColor("red"))); + + + // a single symbol + plot.addGraph(new JKQTPgeoSymbol(&plot, 0.1,0.6, JKQTPcircle, 5, QColor("grey"))); + + + // a line + plot.addGraph(new JKQTPgeoLine(&plot, 1, 0.05, 1.9, 0.9, QColor("red"), 2)); + + + // a one-sided infinite line with slope dy/dx=0.25/0.2 + JKQTPgeoInfiniteLine* infLine=new JKQTPgeoInfiniteLine(&plot, 1.7, 0.2, 0.2, 0.25, QColor("green"), 1.5, Qt::PenStyle::DashLine); + infLine->set_two_sided(false); + infLine->setAlpha(0.5); + plot.addGraph(infLine); + + + // a polyline + QVector p; + p<appendPoint(2.1, 0.5); + polygraph->appendPoint(2.9, 0.9); + polygraph->appendPoint(2.2, 0.8); + polygraph->appendPoint(2.8, 0.25); + polygraph->appendPoint(2.6, 0.6); + polygraph->setAlpha(0.75); + plot.addGraph(polygraph); + + + // an arc from an ellipse from -10 degrees to 117 degrees, centered at 2.5,1.5 and full axes of 0.5 and 0.5 + plot.addGraph(new JKQTPgeoArc(&plot,2.5,1.5,0.5,0.5, -10, 117 , QColor("orange"), 4, Qt::PenStyle::DashLine)); + + + // a pie centered at 2.5,2.5 with ellipse axes 0.9 and 0.9 and from angle 0 degrees to 90 degrees + plot.addGraph(new JKQTPgeoPie(&plot,2.5,2.5,0.9,0.9, 0, 90 , QColor("blue"), 4, Qt::PenStyle::SolidLine,QColor("lightblue"))); + + + // a chord centered at 2.5,2.5 with ellipse axes 0.9 and 0.9 and from angle 0 degrees to 90 degrees + plot.addGraph(new JKQTPgeoChord(&plot,2.5,2.5,0.9,0.9, 0, 90 , QColor("blue"), 4, Qt::PenStyle::SolidLine,QColor("lightblue"))); + +``` + +The result of the example combines all these elements and looks like this: + +![jkqtplotter_simpletest_geometric](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest_geometric.png) + + + +[Back to JKQTPlotter main page](https://github.com/jkriege2/JKQtPlotter/) \ No newline at end of file diff --git a/examples/simpletest_geometric/jkqtplotter_simpletest_geometric.cpp b/examples/simpletest_geometric/jkqtplotter_simpletest_geometric.cpp new file mode 100644 index 0000000000..984e4e798f --- /dev/null +++ b/examples/simpletest_geometric/jkqtplotter_simpletest_geometric.cpp @@ -0,0 +1,151 @@ +#include +#include "jkqtplotter/jkqtplotter.h" +#include "jkqtplotter/jkqtpgraphsgeometric.h" + + +int main(int argc, char* argv[]) +{ + QApplication app(argc, argv); + + // 1. create a plotter window + JKQtPlotter plot; + + // 2. format graph: + // 2.1 set the graph scales manually + plot.setXY(0,3.05,0,3.05); + // 2.2 set the asxpect ratio to 1 + plot.get_plotter()->set_maintainAspectRatio(true); + plot.get_plotter()->set_aspectRatio(1); + plot.get_plotter()->set_maintainAxisAspectRatio(true); + plot.get_plotter()->set_axisAspectRatio(1); + // 2.3 set the asxpect ratio to 1 + plot.get_xAxis()->set_drawGrid(false); + plot.get_yAxis()->set_drawGrid(false); + + + // 3. add some geometric plots + // 3.1 some text elements, also with formatting by LaTeX expressions + plot.addGraph(new JKQTPgeoText(&plot, 0.1,0.95, "\\textbf{Text:}", 14, QColor("red"))); + plot.addGraph(new JKQTPgeoText(&plot, 0.1,0.1, "A text object in 10pt", 10, QColor("red"))); + plot.addGraph(new JKQTPgeoSymbol(&plot, 0.1,0.1, JKQTPcircle, 5, QColor("grey"))); + plot.addGraph(new JKQTPgeoText(&plot, 0.1,0.3, "A text object in 12pt", 12, QColor("red"))); + plot.addGraph(new JKQTPgeoSymbol(&plot, 0.1,0.3, JKQTPcircle, 5, QColor("grey"))); + plot.addGraph(new JKQTPgeoText(&plot, 0.1,0.6, "$x_{1/2}=\\frac{\\sqrt{b^2-4ac}}{2a}$", 10, QColor("red"))); + plot.addGraph(new JKQTPgeoSymbol(&plot, 0.1,0.6, JKQTPcircle, 5, QColor("grey"))); + + + // 3.2 some lines elements (single lines and polylines) + plot.addGraph(new JKQTPgeoText(&plot, 1.1,0.95, "\\textbf{Lines:}", 14, QColor("red"))); + plot.addGraph(new JKQTPgeoLine(&plot, 1, 0.05, 1.9, 0.9, QColor("red"), 2)); + plot.addGraph(new JKQTPgeoLine(&plot, 1, 0.1, 1.9, 0.8, QColor("blue"), 1, Qt::PenStyle::DashLine)); + QVector p; + p<set_two_sided(false); + infLine->setAlpha(0.5); + plot.addGraph(infLine); + infLine=new JKQTPgeoInfiniteLine(&plot, 1.7, 0.2, 0.2, -0.15, QColor("blue"), 1.5, Qt::PenStyle::SolidLine); + infLine->set_two_sided(true); + infLine->setAlpha(0.5); + plot.addGraph(infLine); + + + // 3.3 some rectangles (you give the center and width/height of the rectangle in the contructor) + plot.addGraph(new JKQTPgeoText(&plot, 0.1,1.95, "\\textbf{Rectangles:}", 14, QColor("red"))); + plot.addGraph(new JKQTPgeoRectangle(&plot, 0.5,1.5,0.8,0.8, QColor("blue"), 1, Qt::SolidLine, QColor("lightblue"))); + QColor rfill("lightblue"); rfill.setAlphaF(0.5); + plot.addGraph(new JKQTPgeoRectangle(&plot, QPointF(0.4,1.3), QPointF(0.9,1.6), QColor("blue"), 1, Qt::SolidLine, rfill)); + plot.addGraph(new JKQTPgeoRectangle(&plot, 0.5,1.5,0.8,0.5, 35, QColor("darkblue"), 2, Qt::DashLine)); + plot.addGraph(new JKQTPgeoRectangle(&plot, 0.5,1.5,0.6,0.6, -7, QColor("orange"), 2, Qt::DotLine, QColor("salmon"), Qt::FDiagPattern)); + plot.addGraph(new JKQTPgeoSymbol(&plot, 0.5,1.5, JKQTPcircle, 5, QColor("grey"))); + plot.addGraph(new JKQTPgeoSymbol(&plot, 0.4,1.3, JKQTPcircle, 5, QColor("grey"))); + plot.addGraph(new JKQTPgeoSymbol(&plot, 0.9,1.6, JKQTPcircle, 5, QColor("grey"))); + + + // 3.4 some circles and elllipses + plot.addGraph(new JKQTPgeoText(&plot, 1.1,1.95, "\\textbf{Circles/Ellipses:}", 14, QColor("red"))); + QColor col=QColor("blue"); col.setAlphaF(0.2); + plot.addGraph(new JKQTPgeoRectangle(&plot, 1.5,1.5,0.8,0.8, col, 0.5, Qt::SolidLine)); + col.setAlphaF(1); + plot.addGraph(new JKQTPgeoEllipse(&plot, 1.5,1.5,0.8,0.8, col, 1, Qt::SolidLine, QColor("lightblue"))); + col=QColor("blue"); col.setAlphaF(0.2); + plot.addGraph(new JKQTPgeoRectangle(&plot, QPointF(1.4,1.3), QPointF(1.9,1.6),col, 0.5, Qt::SolidLine)); + col.setAlphaF(1); + plot.addGraph(new JKQTPgeoEllipse(&plot, QPointF(1.4,1.3), QPointF(1.9,1.6), col, 1, Qt::SolidLine, rfill)); + col=QColor("darkblue"); col.setAlphaF(0.2); + plot.addGraph(new JKQTPgeoRectangle(&plot, 1.5,1.5,0.8,0.5, 35, col, 0.5, Qt::DashLine)); + col.setAlphaF(1); + plot.addGraph(new JKQTPgeoEllipse(&plot, 1.5,1.5,0.8,0.5, 35, col, 2, Qt::DashLine)); + col=QColor("orange"); col.setAlphaF(0.2); + plot.addGraph(new JKQTPgeoRectangle(&plot, 1.5,1.5,0.6,0.6, -7, col, 0.5, Qt::DotLine)); + col.setAlphaF(1); + plot.addGraph(new JKQTPgeoEllipse(&plot, 1.5,1.5,0.6,0.6, -7, col, 2, Qt::DotLine, QColor("salmon"), Qt::FDiagPattern)); + plot.addGraph(new JKQTPgeoSymbol(&plot, 1.5,1.5, JKQTPcircle, 5, QColor("grey"))); + plot.addGraph(new JKQTPgeoSymbol(&plot, 1.4,1.3, JKQTPcircle, 5, QColor("grey"))); + plot.addGraph(new JKQTPgeoSymbol(&plot, 1.9,1.6, JKQTPcircle, 5, QColor("grey"))); + + + // 3.5 some polygon elements + plot.addGraph(new JKQTPgeoText(&plot, 2.1,0.95, "\\textbf{PolyLines/Polygons:}", 14, QColor("red"))); + QVector polygon; + polygon<setAlpha(0.75); + plot.addGraph(polygraph); + polygraph=new JKQTPgeoPolygon(&plot, QColor("red"), 2, Qt::PenStyle::DashLine, QColor("salmon")); + polygraph->appendPoint(2.1, 0.5); + polygraph->appendPoint(2.9, 0.9); + polygraph->appendPoint(2.2, 0.8); + polygraph->appendPoint(2.8, 0.25); + polygraph->appendPoint(2.6, 0.6); + polygraph->setAlpha(0.75); + plot.addGraph(polygraph); + + + // 3.6 some arcs + plot.addGraph(new JKQTPgeoText(&plot, 2.1,1.95, "\\textbf{Arcs:}", 14, QColor("red"))); + plot.addGraph(new JKQTPgeoRectangle(&plot, 2.5,1.5,0.9,0.9, QColor("lightgrey"), 0.5, Qt::SolidLine)); + plot.addGraph(new JKQTPgeoArc(&plot,2.5,1.5,0.9,0.9, 0, 90 , QColor("blue"), 4, Qt::PenStyle::SolidLine)); + plot.addGraph(new JKQTPgeoArc(&plot,2.5,1.5,0.8,0.8, 90,180 , QColor("red"), 4, Qt::PenStyle::SolidLine)); + plot.addGraph(new JKQTPgeoArc(&plot,2.5,1.5,0.7,0.7, 180,270 , QColor("darkblue"), 4, Qt::PenStyle::SolidLine)); + plot.addGraph(new JKQTPgeoArc(&plot,2.5,1.5,0.6,0.6, 270,360 , QColor("maroon"), 4, Qt::PenStyle::DashDotLine)); + plot.addGraph(new JKQTPgeoArc(&plot,2.5,1.5,0.5,0.5, -10, 117 , QColor("orange"), 4, Qt::PenStyle::DashLine)); + plot.addGraph(new JKQTPgeoArc(&plot,2.5,1.5,0.4,0.4, 85, 347 , QColor("darkgreen"), 4, Qt::PenStyle::SolidLine)); + plot.addGraph(new JKQTPgeoSymbol(&plot, 2.5,1.5, JKQTPcircle, 5, QColor("grey"))); + + + // 3.7 some pies + plot.addGraph(new JKQTPgeoText(&plot, 2.1,2.95, "\\textbf{Pies:}", 14, QColor("red"))); + plot.addGraph(new JKQTPgeoRectangle(&plot, 2.5,2.5,0.9,0.9, QColor("lightgrey"), 0.5, Qt::SolidLine)); + JKQTPgeoPie* pie; + plot.addGraph(pie=new JKQTPgeoPie(&plot,2.5,2.5,0.9,0.9, 0, 90 , QColor("blue"), 4, Qt::PenStyle::SolidLine,QColor("lightblue"))); + plot.addGraph(pie=new JKQTPgeoPie(&plot,2.5,2.5,0.7,0.7, 180,270 , QColor("darkblue"), 4, Qt::PenStyle::SolidLine,QColor("blue"))); + pie->setAlpha(0.5); + plot.addGraph(pie=new JKQTPgeoPie(&plot,2.5,2.5,0.5,0.3, -25, 117 , QColor("orange"), 4, Qt::PenStyle::DashLine,QColor("red"))); + pie->setAlpha(0.5); + plot.addGraph(pie=new JKQTPgeoPie(&plot,2.5,2.5,0.25,0.8, 85, 347 , QColor("darkgreen"), 4, Qt::PenStyle::SolidLine,QColor("green"))); + pie->setAlpha(0.5); + plot.addGraph(new JKQTPgeoSymbol(&plot, 2.5,2.5, JKQTPcircle, 5, QColor("grey"))); + + + // 3.8 some chords + plot.addGraph(new JKQTPgeoText(&plot, 1.1,2.95, "\\textbf{Chords:}", 14, QColor("red"))); + plot.addGraph(new JKQTPgeoRectangle(&plot, 1.5,2.5,0.9,0.9, QColor("lightgrey"), 0.5, Qt::SolidLine)); + JKQTPgeoChord* chord; + plot.addGraph(chord=new JKQTPgeoChord(&plot,1.5,2.5,0.9,0.9, 0, 90 , QColor("blue"), 4, Qt::PenStyle::SolidLine,QColor("lightblue"))); + plot.addGraph(chord=new JKQTPgeoChord(&plot,1.5,2.5,0.7,0.7, 180,270 , QColor("darkblue"), 4, Qt::PenStyle::SolidLine,QColor("blue"))); + chord->setAlpha(0.5); + plot.addGraph(chord=new JKQTPgeoChord(&plot,1.5,2.5,0.5,0.3, -25, 117 , QColor("orange"), 4, Qt::PenStyle::DashLine,QColor("red"))); + chord->setAlpha(0.5); + plot.addGraph(chord=new JKQTPgeoChord(&plot,1.5,2.5,0.25,0.8, 85, 347 , QColor("darkgreen"), 4, Qt::PenStyle::SolidLine,QColor("green"))); + chord->setAlpha(0.5); + plot.addGraph(new JKQTPgeoSymbol(&plot, 1.5,2.5, JKQTPcircle, 5, QColor("grey"))); + + + // 4. show plotter and make it a decent size + plot.show(); + plot.resize(800,800); + + return app.exec(); +} diff --git a/examples/simpletest_geometric/jkqtplotter_simpletest_geometric.pro b/examples/simpletest_geometric/jkqtplotter_simpletest_geometric.pro new file mode 100644 index 0000000000..456671da53 --- /dev/null +++ b/examples/simpletest_geometric/jkqtplotter_simpletest_geometric.pro @@ -0,0 +1,25 @@ +# source code for this simple demo +SOURCES = jkqtplotter_simpletest_geometric.cpp + +# configure Qt +CONFIG += qt +QT += core gui xml svg +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport + +# output executable name +TARGET = jkqtplotter_simpletest_geometric + +# include JKQtPlotter source code +DEPENDPATH += . ../../lib +INCLUDEPATH += ../../lib +CONFIG (debug, debug|release) { + LIBS += -L../../staticlib/debug -ljkqtplotterlib_debug +} else { + LIBS += -L../../staticlib/release -ljkqtplotterlib +} +message("LIBS = $$LIBS") + + +# here you can activate some debug options +#DEFINES += SHOW_JKQTPLOTTER_DEBUG +#DEFINES += JKQTBP_AUTOTIMER diff --git a/examples/simpletest_geometric/jkqtplotter_simpletest_geometric_and_lib.pro b/examples/simpletest_geometric/jkqtplotter_simpletest_geometric_and_lib.pro new file mode 100644 index 0000000000..01fbcc040b --- /dev/null +++ b/examples/simpletest_geometric/jkqtplotter_simpletest_geometric_and_lib.pro @@ -0,0 +1,8 @@ +TEMPLATE = subdirs + +SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_geometric + +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro + +jkqtplotter_simpletest_geometric.file=$$PWD/jkqtplotter_simpletest_geometric.pro +jkqtplotter_simpletest_geometric.depends = jkqtplotterlib diff --git a/examples/simpletest_imageplot/jkqtplotter_simpletest_imageplot_and_lib.pro b/examples/simpletest_imageplot/jkqtplotter_simpletest_imageplot_and_lib.pro index f245498919..f1927f5462 100644 --- a/examples/simpletest_imageplot/jkqtplotter_simpletest_imageplot_and_lib.pro +++ b/examples/simpletest_imageplot/jkqtplotter_simpletest_imageplot_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_imageplot -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_imageplot.file=$$PWD/jkqtplotter_simpletest_imageplot.pro jkqtplotter_simpletest_imageplot.depends = jkqtplotterlib diff --git a/examples/simpletest_imageplot_modifier/jkqtplotter_simpletest_imageplot_modifier_and_lib.pro b/examples/simpletest_imageplot_modifier/jkqtplotter_simpletest_imageplot_modifier_and_lib.pro index a0cfacee3d..55e9209344 100644 --- a/examples/simpletest_imageplot_modifier/jkqtplotter_simpletest_imageplot_modifier_and_lib.pro +++ b/examples/simpletest_imageplot_modifier/jkqtplotter_simpletest_imageplot_modifier_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_imageplot_modifier -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_imageplot_modifier.file=$$PWD/jkqtplotter_simpletest_imageplot_modifier.pro jkqtplotter_simpletest_imageplot_modifier.depends = jkqtplotterlib diff --git a/examples/simpletest_imageplot_nodatastore/jkqtplotter_simpletest_imageplot_nodatastore_and_lib.pro b/examples/simpletest_imageplot_nodatastore/jkqtplotter_simpletest_imageplot_nodatastore_and_lib.pro index b79fe413de..d66bd7f140 100644 --- a/examples/simpletest_imageplot_nodatastore/jkqtplotter_simpletest_imageplot_nodatastore_and_lib.pro +++ b/examples/simpletest_imageplot_nodatastore/jkqtplotter_simpletest_imageplot_nodatastore_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_imageplot_nodatastore -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_imageplot_nodatastore.file=$$PWD/jkqtplotter_simpletest_imageplot_nodatastore.pro jkqtplotter_simpletest_imageplot_nodatastore.depends = jkqtplotterlib diff --git a/examples/simpletest_impulsesplot/jkqtplotter_simpletest_impulsesplot_and_lib.pro b/examples/simpletest_impulsesplot/jkqtplotter_simpletest_impulsesplot_and_lib.pro index 83c05a64c0..e5c341c16b 100644 --- a/examples/simpletest_impulsesplot/jkqtplotter_simpletest_impulsesplot_and_lib.pro +++ b/examples/simpletest_impulsesplot/jkqtplotter_simpletest_impulsesplot_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_impulsesplot -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_impulsesplot.file=$$PWD/jkqtplotter_simpletest_impulsesplot.pro jkqtplotter_simpletest_impulsesplot.depends = jkqtplotterlib diff --git a/examples/simpletest_logaxes/jkqtplotter_simpletest_logaxes_and_lib.pro b/examples/simpletest_logaxes/jkqtplotter_simpletest_logaxes_and_lib.pro index 372d8ab71a..119d83ca0d 100644 --- a/examples/simpletest_logaxes/jkqtplotter_simpletest_logaxes_and_lib.pro +++ b/examples/simpletest_logaxes/jkqtplotter_simpletest_logaxes_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_logaxes -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_logaxes.file=$$PWD/jkqtplotter_simpletest_logaxes.pro jkqtplotter_simpletest_logaxes.depends = jkqtplotterlib diff --git a/examples/simpletest_parametriccurve/jkqtplotter_simpletest_parametriccurve_and_lib.pro b/examples/simpletest_parametriccurve/jkqtplotter_simpletest_parametriccurve_and_lib.pro index 59cdd53f98..d0aebfad6c 100644 --- a/examples/simpletest_parametriccurve/jkqtplotter_simpletest_parametriccurve_and_lib.pro +++ b/examples/simpletest_parametriccurve/jkqtplotter_simpletest_parametriccurve_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_parametriccurve -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_parametriccurve.file=$$PWD/jkqtplotter_simpletest_parametriccurve.pro jkqtplotter_simpletest_parametriccurve.depends = jkqtplotterlib diff --git a/examples/simpletest_paramscatterplot/jkqtplotter_simpletest_paramscatterplot_and_lib.pro b/examples/simpletest_paramscatterplot/jkqtplotter_simpletest_paramscatterplot_and_lib.pro index 5c3d3df02f..946feae710 100644 --- a/examples/simpletest_paramscatterplot/jkqtplotter_simpletest_paramscatterplot_and_lib.pro +++ b/examples/simpletest_paramscatterplot/jkqtplotter_simpletest_paramscatterplot_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_paramscatterplot -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_paramscatterplot.file=$$PWD/jkqtplotter_simpletest_paramscatterplot.pro jkqtplotter_simpletest_paramscatterplot.depends = jkqtplotterlib diff --git a/examples/simpletest_paramscatterplot_image/jkqtplotter_simpletest_paramscatterplot_image_and_lib.pro b/examples/simpletest_paramscatterplot_image/jkqtplotter_simpletest_paramscatterplot_image_and_lib.pro index da1c14ddb6..8f7f4679dd 100644 --- a/examples/simpletest_paramscatterplot_image/jkqtplotter_simpletest_paramscatterplot_image_and_lib.pro +++ b/examples/simpletest_paramscatterplot_image/jkqtplotter_simpletest_paramscatterplot_image_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_paramscatterplot_image -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_paramscatterplot_image.file=$$PWD/jkqtplotter_simpletest_paramscatterplot_image.pro jkqtplotter_simpletest_paramscatterplot_image.depends = jkqtplotterlib diff --git a/examples/simpletest_parsedfunctionplot/jkqtplotter_simpletest_parsedfunctionplot_and_lib.pro b/examples/simpletest_parsedfunctionplot/jkqtplotter_simpletest_parsedfunctionplot_and_lib.pro index 647ed2c747..3abab62d4a 100644 --- a/examples/simpletest_parsedfunctionplot/jkqtplotter_simpletest_parsedfunctionplot_and_lib.pro +++ b/examples/simpletest_parsedfunctionplot/jkqtplotter_simpletest_parsedfunctionplot_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_parsedfunctionplot -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_parsedfunctionplot.file=$$PWD/jkqtplotter_simpletest_parsedfunctionplot.pro jkqtplotter_simpletest_parsedfunctionplot.depends = jkqtplotterlib diff --git a/examples/simpletest_rgbimageplot_qt/jkqtplotter_simpletest_rgbimageplot_qt_and_lib.pro b/examples/simpletest_rgbimageplot_qt/jkqtplotter_simpletest_rgbimageplot_qt_and_lib.pro index 179140e174..706de624bc 100644 --- a/examples/simpletest_rgbimageplot_qt/jkqtplotter_simpletest_rgbimageplot_qt_and_lib.pro +++ b/examples/simpletest_rgbimageplot_qt/jkqtplotter_simpletest_rgbimageplot_qt_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_rgbimageplot_qt -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_rgbimageplot_qt.file=$$PWD/jkqtplotter_simpletest_rgbimageplot_qt.pro jkqtplotter_simpletest_rgbimageplot_qt.depends = jkqtplotterlib diff --git a/examples/simpletest_speed/jkqtplotter_simpletest_speed_and_lib.pro b/examples/simpletest_speed/jkqtplotter_simpletest_speed_and_lib.pro index b2654ff9d5..2b2f810011 100644 --- a/examples/simpletest_speed/jkqtplotter_simpletest_speed_and_lib.pro +++ b/examples/simpletest_speed/jkqtplotter_simpletest_speed_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_speed -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_speed.file=$$PWD/jkqtplotter_simpletest_speed.pro jkqtplotter_simpletest_speed.depends = jkqtplotterlib diff --git a/examples/simpletest_stackedbars/jkqtplotter_simpletest_stackedbars_and_lib.pro b/examples/simpletest_stackedbars/jkqtplotter_simpletest_stackedbars_and_lib.pro index 90da78e67f..6a2229b058 100644 --- a/examples/simpletest_stackedbars/jkqtplotter_simpletest_stackedbars_and_lib.pro +++ b/examples/simpletest_stackedbars/jkqtplotter_simpletest_stackedbars_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_stackedbars -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_stackedbars.file=$$PWD/jkqtplotter_simpletest_stackedbars.pro jkqtplotter_simpletest_stackedbars.depends = jkqtplotterlib diff --git a/examples/simpletest_stepplots/jkqtplotter_simpletest_stepplots_and_lib.pro b/examples/simpletest_stepplots/jkqtplotter_simpletest_stepplots_and_lib.pro index 82c171ca1b..a7600ef23b 100644 --- a/examples/simpletest_stepplots/jkqtplotter_simpletest_stepplots_and_lib.pro +++ b/examples/simpletest_stepplots/jkqtplotter_simpletest_stepplots_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_stepplots -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_stepplots.file=$$PWD/jkqtplotter_simpletest_stepplots.pro jkqtplotter_simpletest_stepplots.depends = jkqtplotterlib diff --git a/examples/simpletest_symbols_and_errors/jkqtplotter_simpletest_symbols_and_errors_and_lib.pro b/examples/simpletest_symbols_and_errors/jkqtplotter_simpletest_symbols_and_errors_and_lib.pro index 250af28de2..60dde5ad35 100644 --- a/examples/simpletest_symbols_and_errors/jkqtplotter_simpletest_symbols_and_errors_and_lib.pro +++ b/examples/simpletest_symbols_and_errors/jkqtplotter_simpletest_symbols_and_errors_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_symbols_and_errors -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_symbols_and_errors.file=$$PWD/jkqtplotter_simpletest_symbols_and_errors.pro jkqtplotter_simpletest_symbols_and_errors.depends = jkqtplotterlib diff --git a/examples/simpletest_symbols_and_styles/jkqtplotter_simpletest_symbols_and_styles_and_lib.pro b/examples/simpletest_symbols_and_styles/jkqtplotter_simpletest_symbols_and_styles_and_lib.pro index b1b2981bcf..d3dda48093 100644 --- a/examples/simpletest_symbols_and_styles/jkqtplotter_simpletest_symbols_and_styles_and_lib.pro +++ b/examples/simpletest_symbols_and_styles/jkqtplotter_simpletest_symbols_and_styles_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib jkqtplotter_simpletest_symbols_and_styles -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro jkqtplotter_simpletest_symbols_and_styles.file=$$PWD/jkqtplotter_simpletest_symbols_and_styles.pro jkqtplotter_simpletest_symbols_and_styles.depends = jkqtplotterlib diff --git a/examples/test_multiplot/test_multiplot_and_lib.pro b/examples/test_multiplot/test_multiplot_and_lib.pro index 7eca887344..8020341c54 100644 --- a/examples/test_multiplot/test_multiplot_and_lib.pro +++ b/examples/test_multiplot/test_multiplot_and_lib.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs SUBDIRS += jkqtplotterlib test_multiplot -jkqtplotterlib.file = ../../lib/jkqtplotterlib.pro +jkqtplotterlib.file = ../../staticlib/jkqtplotterlib.pro test_multiplot.file=$$PWD/test_multiplot.pro test_multiplot.depends = jkqtplotterlib diff --git a/lib/jkqtplotter/jkqtpgraphs.h b/lib/jkqtplotter/jkqtpgraphs.h index 5cc9b5c67d..de26e18d91 100644 --- a/lib/jkqtplotter/jkqtpgraphs.h +++ b/lib/jkqtplotter/jkqtpgraphs.h @@ -480,7 +480,7 @@ class LIB_EXPORT JKQTPhorizontalRange: public JKQTPgraph { bool plotRange; /** \brief if \c true, draws lines at the range borders \a color */ bool plotRangeLines; - /** \brief if \c true, this fills the range with \a fillCOlor */ + /** \brief if \c true, this fills the range with \a fillColor */ bool fillRange; /** \brief color of the graph */ QColor color; diff --git a/lib/jkqtplotter/jkqtpgraphsgeometric.cpp b/lib/jkqtplotter/jkqtpgraphsgeometric.cpp index dc9d975033..a920b7dc62 100644 --- a/lib/jkqtplotter/jkqtpgraphsgeometric.cpp +++ b/lib/jkqtplotter/jkqtpgraphsgeometric.cpp @@ -44,6 +44,11 @@ JKQTPgeoBaseLine::JKQTPgeoBaseLine(QColor color, double lineWidth, Qt::PenStyle title=""; } +void JKQTPgeoBaseLine::setAlpha(float alpha) +{ + color.setAlphaF(alpha); +} + QPen JKQTPgeoBaseLine::getPen(JKQTPEnhancedPainter& painter) { QPen p; p.setColor(color); @@ -55,8 +60,8 @@ QPen JKQTPgeoBaseLine::getPen(JKQTPEnhancedPainter& painter) { void JKQTPgeoBaseLine::drawKeyMarker(JKQTPEnhancedPainter& painter, QRectF& rect) { painter.save(); painter.setPen(getPen(painter)); - int y=rect.top()+rect.height()/2.0; - if (rect.width()>0) painter.drawLine(rect.left(), y, rect.right(), y); + double y=rect.top()+rect.height()/2.0; + if (rect.width()>0) painter.drawLine(QLineF(rect.left(), y, rect.right(), y)); painter.restore(); } @@ -98,6 +103,18 @@ JKQTPgeoBaseFilled::JKQTPgeoBaseFilled(QColor color, QColor fillColor, JKQtPlott this->fillColor=fillColor; this->fillStyle=Qt::SolidPattern; } + +void JKQTPgeoBaseFilled::setAlpha(float alpha) +{ + JKQTPgeoBaseLine::setAlpha(alpha); + fillColor.setAlphaF(alpha); +} + +void JKQTPgeoBaseFilled::setAlpha(float alphaLine, float alphaFill) +{ + JKQTPgeoBaseLine::setAlpha(alphaLine); + fillColor.setAlphaF(alphaFill); +} QBrush JKQTPgeoBaseFilled::getBrush(JKQTPEnhancedPainter &/*painter*/) { QBrush b; b.setColor(fillColor); @@ -165,8 +182,8 @@ void JKQTPgeoText::draw(JKQTPEnhancedPainter& painter) { void JKQTPgeoText::drawKeyMarker(JKQTPEnhancedPainter& painter, QRectF& rect) { painter.save(); painter.setPen(getPen(painter)); - int y=rect.top()+rect.height()/2.0; - if (rect.width()>0) painter.drawLine(rect.left(), y, rect.right(), y); + double y=rect.top()+rect.height()/2.0; + if (rect.width()>0) painter.drawLine(QLineF(rect.left(), y, rect.right(), y)); painter.restore(); } @@ -400,17 +417,29 @@ void JKQTPgeoInfiniteLine::draw(JKQTPEnhancedPainter& painter) { -JKQTPgeoLines::JKQTPgeoLines(JKQtBasePlotter* parent, QVector points, QColor color, double lineWidth, Qt::PenStyle style): +JKQTPgeoPolyLines::JKQTPgeoPolyLines(JKQtBasePlotter* parent, const QVector& points, QColor color, double lineWidth, Qt::PenStyle style): JKQTPgeoBaseLine(color, lineWidth, style, parent) { this->points=points; } -JKQTPgeoLines::JKQTPgeoLines(JKQtPlotter* parent, QVector points, QColor color, double lineWidth, Qt::PenStyle style): +JKQTPgeoPolyLines::JKQTPgeoPolyLines(JKQtPlotter* parent, const QVector& points, QColor color, double lineWidth, Qt::PenStyle style): JKQTPgeoBaseLine(color, lineWidth, style, parent) { this->points=points; } -bool JKQTPgeoLines::getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) { +JKQTPgeoPolyLines::JKQTPgeoPolyLines(JKQtBasePlotter *parent, QColor color, double lineWidth, Qt::PenStyle style): + JKQTPgeoBaseLine(color, lineWidth, style, parent) +{ + +} + +JKQTPgeoPolyLines::JKQTPgeoPolyLines(JKQtPlotter *parent, QColor color, double lineWidth, Qt::PenStyle style): + JKQTPgeoBaseLine(color, lineWidth, style, parent) +{ + +} + +bool JKQTPgeoPolyLines::getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) { minx=0; maxx=0; smallestGreaterZero=0; @@ -430,7 +459,7 @@ bool JKQTPgeoLines::getXMinMax(double& minx, double& maxx, double& smallestGreat //qDebug()<<"getXMinMax"<x=x; this->y=y; - alpha=0; + angle=0; this->width=width; this->height=height; } @@ -474,14 +503,54 @@ JKQTPgeoRectangle::JKQTPgeoRectangle(JKQtPlotter* parent, double x, double y, do { this->x=x; this->y=y; - alpha=0; + angle=0; this->width=width; this->height=height; } +JKQTPgeoRectangle::JKQTPgeoRectangle(JKQtBasePlotter *parent, double x, double y, double width, double height, double angle, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle): + JKQTPgeoBaseFilled(color, fillColor, lineWidth, style, fillStyle, parent) +{ + this->x=x; + this->y=y; + this->angle=angle; + this->width=width; + this->height=height; +} + +JKQTPgeoRectangle::JKQTPgeoRectangle(JKQtPlotter *parent, double x, double y, double width, double height, double angle, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle): + JKQTPgeoBaseFilled(color, fillColor, lineWidth, style, fillStyle, parent) +{ + this->x=x; + this->y=y; + this->angle=angle; + this->width=width; + this->height=height; +} + +JKQTPgeoRectangle::JKQTPgeoRectangle(JKQtBasePlotter *parent, QPointF bottomleft, QPointF topright, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle): + JKQTPgeoBaseFilled(color, fillColor, lineWidth, style, fillStyle, parent) +{ + this->angle=0; + this->width=fabs(topright.x()-bottomleft.x()); + this->height=fabs(topright.y()-bottomleft.y()); + this->x=bottomleft.x()+this->width/2.0; + this->y=bottomleft.y()+this->height/2.0; +} + +JKQTPgeoRectangle::JKQTPgeoRectangle(JKQtPlotter *parent, QPointF bottomleft, QPointF topright, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle): + JKQTPgeoBaseFilled(color, fillColor, lineWidth, style, fillStyle, parent) +{ + this->angle=0; + this->width=fabs(topright.x()-bottomleft.x()); + this->height=fabs(topright.y()-bottomleft.y()); + this->x=bottomleft.x()+this->width/2.0; + this->y=bottomleft.y()+this->height/2.0; +} + QMatrix JKQTPgeoRectangle::getMatrix() { QMatrix trans; - trans.rotate(alpha); + trans.rotate(angle); return trans; } @@ -545,17 +614,26 @@ void JKQTPgeoRectangle::set_bottomleftrectangle(double x, double y, double width -JKQTPgeoPolygon::JKQTPgeoPolygon(JKQtBasePlotter* parent, QVector points, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle): +JKQTPgeoPolygon::JKQTPgeoPolygon(JKQtBasePlotter* parent, const QVector& points, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle): JKQTPgeoBaseFilled(color, fillColor, lineWidth, style, fillStyle, parent) { this->points=points; } -JKQTPgeoPolygon::JKQTPgeoPolygon(JKQtPlotter* parent, QVector points, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle): +JKQTPgeoPolygon::JKQTPgeoPolygon(JKQtPlotter* parent, const QVector& points, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle): JKQTPgeoBaseFilled(color, fillColor, lineWidth, style, fillStyle, parent) { this->points=points; } +JKQTPgeoPolygon::JKQTPgeoPolygon(JKQtBasePlotter* parent, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle): + JKQTPgeoBaseFilled(color, fillColor, lineWidth, style, fillStyle, parent) +{ +} +JKQTPgeoPolygon::JKQTPgeoPolygon(JKQtPlotter* parent, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle): + JKQTPgeoBaseFilled(color, fillColor, lineWidth, style, fillStyle, parent) +{ +} + bool JKQTPgeoPolygon::getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) { minx=0; maxx=0; @@ -617,10 +695,34 @@ JKQTPgeoEllipse::JKQTPgeoEllipse(JKQtPlotter* parent, double x, double y, double controlPoints=180; } +JKQTPgeoEllipse::JKQTPgeoEllipse(JKQtBasePlotter *parent, double x, double y, double width, double height, double angle, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle): + JKQTPgeoRectangle(parent, x, y, width, height, angle, color, lineWidth, style, fillColor, fillStyle) +{ + controlPoints=180; +} + +JKQTPgeoEllipse::JKQTPgeoEllipse(JKQtPlotter *parent, double x, double y, double width, double height, double angle, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle): + JKQTPgeoRectangle(parent, x, y, width, height, angle, color, lineWidth, style, fillColor, fillStyle) +{ + controlPoints=180; +} + +JKQTPgeoEllipse::JKQTPgeoEllipse(JKQtBasePlotter *parent, QPointF bottomleft, QPointF topright, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle): + JKQTPgeoRectangle(parent, bottomleft, topright, color, lineWidth, style, fillColor, fillStyle) +{ + controlPoints=180; +} + +JKQTPgeoEllipse::JKQTPgeoEllipse(JKQtPlotter *parent, QPointF bottomleft, QPointF topright, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle): + JKQTPgeoRectangle(parent, bottomleft, topright, color, lineWidth, style, fillColor, fillStyle) +{ + controlPoints=180; +} + void JKQTPgeoEllipse::draw(JKQTPEnhancedPainter& painter) { QPainterPath rect; - rect=transformToLinePath(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,0,360,alpha, controlPoints)); + rect=transformToLinePath(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,0,360,angle, controlPoints)); rect.closeSubpath(); @@ -642,7 +744,7 @@ JKQTPgeoArc::JKQTPgeoArc(JKQtBasePlotter* parent, double x, double y, double wid this->y=y; this->width=width; this->height=height; - this->alpha=0; + this->angle=0; this->controlPoints=180; } @@ -655,14 +757,14 @@ JKQTPgeoArc::JKQTPgeoArc(JKQtPlotter* parent, double x, double y, double width, this->y=y; this->width=width; this->height=height; - this->alpha=0; + this->angle=0; this->controlPoints=180; } void JKQTPgeoArc::draw(JKQTPEnhancedPainter& painter) { QPainterPath rect; - rect=transformToLinePath(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,alpha, controlPoints)); + rect=transformToLinePath(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,angle, controlPoints)); painter.save(); painter.setPen(getPen(painter)); @@ -673,7 +775,7 @@ void JKQTPgeoArc::draw(JKQTPEnhancedPainter& painter) { bool JKQTPgeoArc::getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) { QPolygonF rect; - rect=QPolygonF(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,alpha, controlPoints)); + rect=QPolygonF(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,angle, controlPoints)); minx=rect.boundingRect().left(); maxx=rect.boundingRect().right(); if (minx>maxx) std::swap(minx, maxx); @@ -686,7 +788,7 @@ bool JKQTPgeoArc::getXMinMax(double& minx, double& maxx, double& smallestGreater bool JKQTPgeoArc::getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) { QPolygonF rect; - rect=QPolygonF(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,alpha, controlPoints)); + rect=QPolygonF(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,angle, controlPoints)); miny=rect.boundingRect().bottom(); maxy=rect.boundingRect().top(); if (miny>maxy) std::swap(miny, maxy); @@ -719,7 +821,7 @@ JKQTPgeoPie::JKQTPgeoPie(JKQtPlotter* parent, double x, double y, double width, void JKQTPgeoPie::draw(JKQTPEnhancedPainter& painter) { QPainterPath rect; - rect=transformToLinePath(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,alpha, controlPoints)); + rect=transformToLinePath(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,angle, controlPoints)); rect.lineTo(transform(x,y)); rect.closeSubpath(); @@ -733,7 +835,7 @@ void JKQTPgeoPie::draw(JKQTPEnhancedPainter& painter) { bool JKQTPgeoPie::getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) { QPolygonF rect; - rect=QPolygonF(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,alpha, controlPoints)); + rect=QPolygonF(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,angle, controlPoints)); rect.append(QPointF(x,y)); minx=rect.boundingRect().left(); maxx=rect.boundingRect().right(); @@ -747,7 +849,7 @@ bool JKQTPgeoPie::getXMinMax(double& minx, double& maxx, double& smallestGreater bool JKQTPgeoPie::getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) { QPolygonF rect; - rect=QPolygonF(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,alpha, controlPoints)); + rect=QPolygonF(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,angle, controlPoints)); rect.append(QPointF(x,y)); miny=rect.boundingRect().bottom(); maxy=rect.boundingRect().top(); @@ -777,7 +879,7 @@ JKQTPgeoChord::JKQTPgeoChord(JKQtPlotter* parent, double x, double y, double wid void JKQTPgeoChord::draw(JKQTPEnhancedPainter& painter) { QPainterPath rect; - rect=transformToLinePath(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,alpha, controlPoints)); + rect=transformToLinePath(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,angle, controlPoints)); rect.closeSubpath(); @@ -790,7 +892,7 @@ void JKQTPgeoChord::draw(JKQTPEnhancedPainter& painter) { bool JKQTPgeoChord::getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) { QPolygonF rect; - rect=QPolygonF(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,alpha, controlPoints)); + rect=QPolygonF(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,angle, controlPoints)); minx=rect.boundingRect().left(); maxx=rect.boundingRect().right(); if (minx>maxx) std::swap(minx, maxx); @@ -802,7 +904,7 @@ bool JKQTPgeoChord::getXMinMax(double& minx, double& maxx, double& smallestGreat bool JKQTPgeoChord::getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) { QPolygonF rect; - rect=QPolygonF(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,alpha, controlPoints)); + rect=QPolygonF(JKQTPdrawEllipse(x,y,width/2.0, height/2.0,angleStart,angleStop,angle, controlPoints)); miny=rect.boundingRect().bottom(); maxy=rect.boundingRect().top(); if (miny>maxy) std::swap(miny, maxy); @@ -812,3 +914,72 @@ bool JKQTPgeoChord::getYMinMax(double& miny, double& maxy, double& smallestGreat return true; } + +JKQTPgeoSymbol::JKQTPgeoSymbol(JKQtBasePlotter *parent, double x, double y, JKQTPgraphSymbols symbol, double symbolSize, QColor color, QColor fillColor): + JKQTPplotObject(parent) +{ + this->x=x; + this->y=y; + this->symbol=symbol; + this->symbolSize=symbolSize; + this->color=color; + this->fillColor=fillColor; + this->symbolWidth=1; +} + +JKQTPgeoSymbol::JKQTPgeoSymbol(JKQtPlotter *parent, double x, double y, JKQTPgraphSymbols symbol, double symbolSize, QColor color, QColor fillColor): + JKQTPplotObject(parent) +{ + this->x=x; + this->y=y; + this->symbol=symbol; + this->symbolSize=symbolSize; + this->color=color; + this->fillColor=fillColor; + this->symbolWidth=1; +} + +bool JKQTPgeoSymbol::getXMinMax(double &minx, double &maxx, double &smallestGreaterZero) +{ + minx=x; + maxx=x; + double xvsgz; + xvsgz=minx; SmallestGreaterZeroCompare_xvsgz(); + xvsgz=maxx; SmallestGreaterZeroCompare_xvsgz(); + return true; +} + +bool JKQTPgeoSymbol::getYMinMax(double &miny, double &maxy, double &smallestGreaterZero) +{ + miny=y; + maxy=y; + double xvsgz; + xvsgz=miny; SmallestGreaterZeroCompare_xvsgz(); + xvsgz=maxy; SmallestGreaterZeroCompare_xvsgz(); + return true; +} + +void JKQTPgeoSymbol::draw(JKQTPEnhancedPainter &painter) +{ + painter.save(); + JKQTPplotSymbol(painter, transformX(x), transformY(y), symbol, symbolSize, symbolWidth, color, fillColor); + painter.restore(); +} + +void JKQTPgeoSymbol::drawKeyMarker(JKQTPEnhancedPainter &painter, QRectF &rect) +{ + const double minSize=qMin(rect.width(), rect.height()); + double symbolSize=parent->pt2px(painter, this->symbolSize); + if (symbolSize>minSize*0.9) symbolSize=minSize*0.9; + double symbolWidth=parent->pt2px(painter, this->symbolWidth*parent->get_lineWidthMultiplier()); + if (symbolWidth>0.3*symbolSize) symbolWidth=0.3*symbolSize; + + painter.save(); + JKQTPplotSymbol(painter, rect.left()+rect.width()/2.0, rect.top()+rect.height()/2.0, symbol, symbolSize, symbolWidth, color, fillColor); + painter.restore(); +} + +QColor JKQTPgeoSymbol::getKeyLabelColor() +{ + return color; +} diff --git a/lib/jkqtplotter/jkqtpgraphsgeometric.h b/lib/jkqtplotter/jkqtpgraphsgeometric.h index 01f6b6648f..e11ce50ece 100644 --- a/lib/jkqtplotter/jkqtpgraphsgeometric.h +++ b/lib/jkqtplotter/jkqtpgraphsgeometric.h @@ -70,6 +70,9 @@ class LIB_EXPORT JKQTPgeoBaseLine: public JKQTPplotObject { JKQTPGET_SET_MACRO(Qt::PenStyle, style) JKQTPGET_SET_MACRO(double, lineWidth) + /** \brief sets the alpha-channel of the \a color (i.e. its transparency) */ + virtual void setAlpha(float alpha); + /** \brief plots a key marker inside the specified rectangle \a rect */ virtual void drawKeyMarker(JKQTPEnhancedPainter& painter, QRectF& rect) override; /** \brief returns the color to be used for the key label */ @@ -99,7 +102,7 @@ class LIB_EXPORT JKQTPgeoBaseFilled: public JKQTPgeoBaseLine { /*! \brief class contructor \param color color of drawing - \param fillCOlor color of the filling in the drawing + \param fillColor color of the filling in the drawing \param style line style of drawing \param fillStyle filling style of the graph \param lineWidth lineWidth of drawing @@ -108,7 +111,7 @@ class LIB_EXPORT JKQTPgeoBaseFilled: public JKQTPgeoBaseLine { /*! \brief class contructor \param color color of drawing - \param fillCOlor color of the filling in the drawing + \param fillColor color of the filling in the drawing \param style line style of drawing \param fillStyle filling style of the graph \param lineWidth lineWidth of drawing @@ -117,7 +120,7 @@ class LIB_EXPORT JKQTPgeoBaseFilled: public JKQTPgeoBaseLine { /*! \brief class contructor \param color color of drawing - \param fillCOlor color of the filling in the drawing + \param fillColor color of the filling in the drawing \param style line style of drawing \param lineWidth lineWidth of drawing */ @@ -125,20 +128,25 @@ class LIB_EXPORT JKQTPgeoBaseFilled: public JKQTPgeoBaseLine { /*! \brief class contructor \param color color of drawing - \param fillCOlor color of the filling in the drawing + \param fillColor color of the filling in the drawing \param lineWidth lineWidth of drawing */ JKQTPgeoBaseFilled(QColor color, QColor fillColor, double lineWidth, JKQtPlotter* parent); /*! \brief class contructor \param color color of drawing - \param fillCOlor color of the filling in the drawing + \param fillColor color of the filling in the drawing */ JKQTPgeoBaseFilled(QColor color, QColor fillColor, JKQtPlotter* parent); JKQTPGET_SET_MACRO(QColor, fillColor) JKQTPGET_SET_MACRO(Qt::BrushStyle, fillStyle) + /** \brief sets the alpha-channel of the \a color and \a fillColor (i.e. its transparency) to the same value */ + virtual void setAlpha(float alpha) override; + /** \brief sets the alpha-channel of the \a color and \a fillColor (i.e. its transparency) */ + virtual void setAlpha(float alphaLine, float alphaFill); + /** \brief plots a key marker inside the specified rectangle \a rect */ virtual void drawKeyMarker(JKQTPEnhancedPainter& painter, QRectF& rect) override; protected: @@ -154,6 +162,74 @@ class LIB_EXPORT JKQTPgeoBaseFilled: public JKQTPgeoBaseLine { +/*! \brief This virtual JKQTPgraph descendent may be used to display a single symbol (marker). + \ingroup jkqtplotter_geoplots + + */ +class LIB_EXPORT JKQTPgeoSymbol: public JKQTPplotObject { + Q_OBJECT + public: + /*! \brief class contructor + + \param parent parent plotter widget + \param x x-coordinate of symbol center + \param y y-coordinate of symbol center + \param symbol symbol type + \param symbolSize size of the symbol in pt + \param color color of drawing + \param fillColor fill color of the symbol (if filled) + */ + JKQTPgeoSymbol(JKQtBasePlotter* parent, double x, double y, JKQTPgraphSymbols symbol=JKQTPcross, double symbolSize=10, QColor color=QColor("black"), QColor fillColor=QColor("grey")); + /*! \brief class contructor + + \param parent parent plotter widget + \param x x-coordinate of symbol center + \param y y-coordinate of symbol center + \param symbol symbol type + \param symbolSize size of the symbol in pt + \param color color of drawing + \param fillColor fill color of the symbol (if filled) + */ + JKQTPgeoSymbol(JKQtPlotter* parent, double x, double y, JKQTPgraphSymbols symbol=JKQTPcross, double symbolSize=10, QColor color=QColor("black"), QColor fillColor=QColor("grey")); + + JKQTPGET_SET_MACRO(QColor, color) + JKQTPGET_SET_MACRO(QColor, fillColor) + JKQTPGET_SET_MACRO(JKQTPgraphSymbols, symbol) + JKQTPGET_SET_MACRO(double, symbolSize) + JKQTPGET_SET_MACRO(double, symbolWidth) + JKQTPGET_SET_MACRO(double, x) + JKQTPGET_SET_MACRO(double, y) + + /** \copydoc JKQTPgraph::getXMinMax() */ + virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero); + /** \copydoc JKQTPgraph::getYMinMax() */ + virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero); + + /** \brief plots the graph to the plotter object specified as parent */ + virtual void draw(JKQTPEnhancedPainter& painter); + + /** \brief plots a key marker inside the specified rectangle \a rect */ + virtual void drawKeyMarker(JKQTPEnhancedPainter& painter, QRectF& rect); + /** \brief returns the color to be used for the key label */ + virtual QColor getKeyLabelColor(); + + protected: + double x,y; + + /** \brief color of the graph */ + QColor color; + /** \brief fill-color of the graph */ + QColor fillColor; + + /** \brief size of the symbol in pt */ + double symbolSize; + /** \brief width of the symbol lines in pt */ + double symbolWidth; + /** \brief type of the symbol */ + JKQTPgraphSymbols symbol; +}; + + /*! \brief This JKQTPplotObject is used to display text. It uses the JKQTMathText class in order to display LaTeX formulas. \ingroup jkqtplotter_geoplots @@ -334,33 +410,45 @@ class LIB_EXPORT JKQTPgeoInfiniteLine: public JKQTPgeoBaseLine { \image html plot_geolines.png */ -class LIB_EXPORT JKQTPgeoLines: public JKQTPgeoBaseLine { +class LIB_EXPORT JKQTPgeoPolyLines: public JKQTPgeoBaseLine { Q_OBJECT public: /*! \brief class constructor \param parent the parent plotter class - \param x1 x-coordinate of first point of line - \param y1 y-coordinate of first point of line - \param x2 x-coordinate of second point of line - \param y2 y-coordinate of second point of line + \param points points on the polygon \param color color of line \param lineWidth width of line \param style line style */ - JKQTPgeoLines(JKQtBasePlotter* parent, QVector points, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine); + JKQTPgeoPolyLines(JKQtBasePlotter* parent, const QVector& points, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine); /*! \brief class constructor \param parent the parent plotter class - \param x1 x-coordinate of first point of line - \param y1 y-coordinate of first point of line - \param x2 x-coordinate of second point of line - \param y2 y-coordinate of second point of line + \param points points on the polygon \param color color of line \param lineWidth width of line \param style line style */ - JKQTPgeoLines(JKQtPlotter* parent, QVector points, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine); + JKQTPgeoPolyLines(JKQtPlotter* parent, const QVector& points, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine); + /*! \brief class constructor + + \param parent the parent plotter class + \param points points on the polygon + \param color color of line + \param lineWidth width of line + \param style line style + */ + JKQTPgeoPolyLines(JKQtBasePlotter* parent, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine); + /*! \brief class constructor + + \param parent the parent plotter class + \param points points on the polygon + \param color color of line + \param lineWidth width of line + \param style line style + */ + JKQTPgeoPolyLines(JKQtPlotter* parent, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine); /** \copydoc JKQTPplotObject::getXMinMax() */ @@ -422,6 +510,60 @@ class LIB_EXPORT JKQTPgeoRectangle: public JKQTPgeoBaseFilled { \param fillStyle filling style of rectangle */ JKQTPgeoRectangle(JKQtPlotter* parent, double x, double y, double width, double height, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); + /*! \brief class constructor + + \param parent the parent plotter class + \param x x-coordinate of center of rectangle + \param y y-coordinate of center of rectangle + \param width width of rectangle + \param height of rectangle + \param angle rotation angle of the rectangle + \param color color of line + \param lineWidth width of line + \param style line style + \param fillColor filling color of rectangle + \param fillStyle filling style of rectangle + */ + JKQTPgeoRectangle(JKQtBasePlotter* parent, double x, double y, double width, double height, double angle, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); + /*! \brief class constructor + + \param parent the parent plotter class + \param x x-coordinate of center of rectangle + \param y y-coordinate of center of rectangle + \param width width of rectangle + \param height of rectangle + \param angle rotation angle of the rectangle + \param color color of line + \param lineWidth width of line + \param style line style + \param fillColor filling color of rectangle + \param fillStyle filling style of rectangle + */ + JKQTPgeoRectangle(JKQtPlotter* parent, double x, double y, double width, double height, double angle, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); + /*! \brief class constructor + + \param parent the parent plotter class + \param bottomleft bottom left corner of rectangle + \param topright top right corner of rectangle + \param color color of line + \param lineWidth width of line + \param style line style + \param fillColor filling color of rectangle + \param fillStyle filling style of rectangle + */ + JKQTPgeoRectangle(JKQtBasePlotter* parent, QPointF bottomleft, QPointF topright, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); + /*! \brief class constructor + + \param parent the parent plotter class + \param bottomleft bottom left corner of rectangle + \param topright top right corner of rectangle + \param color color of line + \param lineWidth width of line + \param style line style + \param fillColor filling color of rectangle + \param fillStyle filling style of rectangle + */ + JKQTPgeoRectangle(JKQtPlotter* parent, QPointF bottomleft, QPointF topright, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); @@ -437,13 +579,13 @@ class LIB_EXPORT JKQTPgeoRectangle: public JKQTPgeoBaseFilled { JKQTPGET_SET_MACRO(double, y) JKQTPGET_SET_MACRO(double, width) JKQTPGET_SET_MACRO(double, height) - JKQTPGET_SET_MACRO(double, alpha) + JKQTPGET_SET_MACRO(double, angle) void set_bottomleftrectangle(double x, double y, double width, double height); protected: double x,y,width,height; /** \brief rotation angle of rectangle */ - double alpha; + double angle; /** \brief returns the transformation matrix used for this rectangle */ QMatrix getMatrix(); /** \brief returns a QPolygonF which represents the rectangle after rotation, but still in the world coordinate system, not in the screen/widget system */ @@ -463,27 +605,48 @@ class LIB_EXPORT JKQTPgeoPolygon: public JKQTPgeoBaseFilled { /*! \brief class constructor \param parent the parent plotter class - \param x1 x-coordinate of first point of line - \param y1 y-coordinate of first point of line - \param x2 x-coordinate of second point of line - \param y2 y-coordinate of second point of line + \param points points on the polygon \param color color of line \param lineWidth width of line \param style line style + \param fillColor color of the filling + \param fillStyle style of the filling + */ - JKQTPgeoPolygon(JKQtBasePlotter* parent, QVector points, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); + JKQTPgeoPolygon(JKQtBasePlotter* parent, const QVector& points, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); /*! \brief class constructor \param parent the parent plotter class - \param x1 x-coordinate of first point of line - \param y1 y-coordinate of first point of line - \param x2 x-coordinate of second point of line - \param y2 y-coordinate of second point of line + \param points points on the polygon \param color color of line \param lineWidth width of line \param style line style + \param fillColor color of the filling + \param fillStyle style of the filling */ - JKQTPgeoPolygon(JKQtPlotter* parent, QVector points, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); + JKQTPgeoPolygon(JKQtPlotter* parent, const QVector& points, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); + + /*! \brief class constructor + + \param parent the parent plotter class + \param color color of line + \param lineWidth width of line + \param style line style + \param fillColor color of the filling + \param fillStyle style of the filling + + */ + JKQTPgeoPolygon(JKQtBasePlotter* parent, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); + /*! \brief class constructor + + \param parent the parent plotter class + \param color color of line + \param lineWidth width of line + \param style line style + \param fillColor color of the filling + \param fillStyle style of the filling + */ + JKQTPgeoPolygon(JKQtPlotter* parent, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); /** \copydoc JKQTPplotObject::getXMinMax() */ @@ -550,6 +713,60 @@ class LIB_EXPORT JKQTPgeoEllipse: public JKQTPgeoRectangle { \param fillStyle filling style of ellipse */ JKQTPgeoEllipse(JKQtPlotter* parent, double x, double y, double width, double height, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); + /*! \brief class constructor + + \param parent the parent plotter class + \param x x-coordinate of center of rectangle + \param y y-coordinate of center of rectangle + \param width width of rectangle + \param height of rectangle + \param angle rotation angle of the rectangle + \param color color of line + \param lineWidth width of line + \param style line style + \param fillColor filling color of rectangle + \param fillStyle filling style of rectangle + */ + JKQTPgeoEllipse(JKQtBasePlotter* parent, double x, double y, double width, double height, double angle, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); + /*! \brief class constructor + + \param parent the parent plotter class + \param x x-coordinate of center of rectangle + \param y y-coordinate of center of rectangle + \param width width of rectangle + \param height of rectangle + \param angle rotation angle of the rectangle + \param color color of line + \param lineWidth width of line + \param style line style + \param fillColor filling color of rectangle + \param fillStyle filling style of rectangle + */ + JKQTPgeoEllipse(JKQtPlotter* parent, double x, double y, double width, double height, double angle, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); + /*! \brief class constructor + + \param parent the parent plotter class + \param bottomleft bottom left corner of rectangle + \param topright top right corner of rectangle + \param color color of line + \param lineWidth width of line + \param style line style + \param fillColor filling color of rectangle + \param fillStyle filling style of rectangle + */ + JKQTPgeoEllipse(JKQtBasePlotter* parent, QPointF bottomleft, QPointF topright, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); + /*! \brief class constructor + + \param parent the parent plotter class + \param bottomleft bottom left corner of rectangle + \param topright top right corner of rectangle + \param color color of line + \param lineWidth width of line + \param style line style + \param fillColor filling color of rectangle + \param fillStyle filling style of rectangle + */ + JKQTPgeoEllipse(JKQtPlotter* parent, QPointF bottomleft, QPointF topright, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern); /** \brief plots the graph to the plotter object specified as parent */ @@ -613,11 +830,11 @@ class LIB_EXPORT JKQTPgeoArc: public JKQTPgeoBaseLine { JKQTPGET_SET_MACRO(double, y) JKQTPGET_SET_MACRO(double, width) JKQTPGET_SET_MACRO(double, height) - JKQTPGET_SET_MACRO(double, alpha) + JKQTPGET_SET_MACRO(double, angle) protected: double x,y,width,height; /** \brief rotation angle of rectangle */ - double alpha; + double angle; /** \brief if we only draw an arc, this is the starting angle in degrees */ double angleStart; /** \brief if we only draw an arc, this is the ending angle in degrees */ diff --git a/screenshots/jkqtplotter_simpletest_geometric.png b/screenshots/jkqtplotter_simpletest_geometric.png new file mode 100644 index 0000000000000000000000000000000000000000..fbce179bcb18d5197306cdde0300964b1b39c853 GIT binary patch literal 121087 zcmZ^L1yoe++O~oqA%b)x(p}OG(%lRlLl0d70@4ZsqjZUq!qD9*ozmUi-SKaH&-uRZ z==s-T7VN!dKlgKA&vo}+d{kDHLPH@$dGzQJnvC=t)klxuS%Hrv5*%(aPh=KR6+F7qvA-^8)F3E8reY_TeBpQl4sKf$)N7m(F~>3ioPiYqs}l3JPk@ zg6oa;Q6^C7Uk)Lk&3Wykz3{@z`;hkP+xrQIv$@P(-(cqic{@y`F3M*sbpz)Ifk|Cp zcHWgbd1`KiJvqu9OA(AGqQK9@lgB*u?w)>7;3|mGxC0K~cA{wU0vRjvXL4QiyGXI` z%Cy)hK_;2WLhc^BHLl+bUK%0m2l%5r`6!0i=&~_*IQZ*AUrI^s;ak9$A<(F77XSB) z-`Q0A|9UAVud`3YHcCb?F<^7*~=@eiu(|(nIOCu&BpT_h0`tMyXZy-(HRiXaR%2HCD zuObXHeybqH#xjjgDWA}2bx?)VjW~vE)34Xx9^hDY;dA!22K|U^lJ53+u5V1TqikgW-`7m8qHomt?p-Yl9zi=oiYNe@8 z`Ui&MkY}WoOWH#*MXlM`+UM5+c?k)n1fojaS$%uE(j4I!#t4--pUlRmLv z)S-UVfm-+GLAph7L=uJWVzRze|1%O;z1ksj#8+hDmRLM{|G3EH&-1^rQeM&skm>6=<$^UYuXqP!mi`-D7MKp`{J$5EO?=CVCI^UbG3pK%*uWjyh1C$DEe-ECu7;O>cQU+j`6cn2>J$_n4W4PYYIKI=g_zO4ycRU2Jl1@-0-P@iIsZHMNh4Ar9~7}HP)+`?50kD^3f8Q~@0P97RXV?l ze-#Wu4bP60B%gLZ!FE6H{h=|_ukpuT5h^?tdZ=2d1pm*r|pW6 z*B*LN1nG$bM2KQ%HxlVwQ(tz z+M1bOk|U0!-pgfbScX}etJaTt-k-J_Yl&=+#a*?i4Bu|l^`2HCRGHt=E1i5`-l<4{ z#RvxW?)t&F6#SCH;#@2GGSGtggBqewFBGS(T3 z8e9eC2VZ&;g3VoGB=;BO}Rj z|HFevb;HDn2t)-N5sxluXi~F!|u6$>g>&$zsRgjb<#F-ub~aCZuZChnazUX&Tcdo zXdmJ+1DiuWzIf7iyZ|p%-=G?b$(>@xG1Gp92S@Yeo`bP9_LZU@7rt^VN4uX*^=jt( zmFC1uKxYoYk4hEp%}gu^T)H)=*d+nTS`=6XElP9*jRpj~j^A$#ssL@7qUYa`Vzbww z-fkd)daHF2k5@L2CBnp;yH-A|rr-sNmA(_Da!v z9o+i9!N|9|;$EuvdroB?CE7}3+#iWXM-NON!mg~)bDqAguu9$+pWzz5SQ1yo0(SV| zLYHfKT#lx`M|Fi@My3Bu9e=4p)7H5U#~hi+ct!BwJyCFl5}paCFI0Rau<5MIzhOQB zB5(1!JyCCc$UtBjp8o;+X&V;#ZuQHI=GBwv?15B4@3WK5bSd-H>8Z%5Po7B*M^#9TZF9JX&=1TqW5f9 z=C+mtP~KY^WbcLx*lE`c`h%P9S|<>qqil`+f@Z!#`Ah#3)$#5U{4MA{N7`s?;IwqMcS#qo+=QiJF6EpKgFxyv{XaFW0P`~TySbH%x>$EYC|OuZfpD5R9Kbq57HehbDZ%T9OLNJdhApx zAGMl}Tb`6UR7(3qJWekG-tHuY`PJWa-$5uKG z_HHL$dWt5YPEb#U_B@xjy1e<&v_{5<%LLh%>B0NaR&-`mCp{8aIjCuNSR1Y_ZfbfS| zDDbaz?fV3eeCO79p}lhF9@g(%6(h7|6ZgsMXW&nPpI##QzeH-0bf`ffC#QJ$+rNk| z*-lit^Y`B`At>3p7?|u2_g^9<0gt^|6>}S`we*9FK%KA;Oh$-6K*2s0>h$^j?5n~i z;2Wc2)LZyd+QISUh{SKa@?A1584^0}iGJT&GO$)X z3n{a9G!}PnX?LkqcauVlWh+v|UmCMBqQRef@_WA{Xu#faP!qr;eDD1o(o0_KN_086 z{Ho`?4%f}R(W>gT4}|p1ph>Kp!|L0Mp(bKSLOzg7-0YhYqTEF zBB8y~rwQM`v^MsYilV2HFun?wG0{w3h~Y{(lu?Hb(o zuxCQAers@q2yEa83f&C-5ZLc@<(bBBqHI_t8qj0;OCyspcBFA^8)4WxN#}gZc}c)p*}* z*ax1U^EmEOC1xk%Io>BjP&ydpgZ5&l59<^|9Ti`R6UV%kSl^Q8{X8pzNp&fkA^M`K zrD>Nv_J!{_hztJLP=>^t6(Fs)YKqF>XD|9R$5%ex68puT2+C&t_WBIYGDK_ zECLKsC2vK?EHOmV6|J2;8x$JAv87EFXzG;fAaM3aXC z+!ntU(E2uO=Vh6?j#4&l8~O1%d6-GM06F2E^C`FB^5V)UVfV1^S1InVXC4J2|GVth zcZ~zQv;HeT`tGrwpIhy2*ZJ=SnNbto)gH3{-s_u& z$5bH!!%QDSBcO|J|JdIOk+Lffpy&_j&XomIj3a6f&z|Fr_F*CJ?zS)oG84}eBMQv( zebmQ~ci5SuTA7M1d-`gmGK;S4DhWMYN*}}aof&ENn7?(RMXX~??N-nf?mL@vv;&}g zu@R%5*Sl31c+2B)(Pb2OMCjpO`LJ#t2w2y|Wa5LU0|CMIWkf8vtDBFY5g5zOMz?0qG&yf@7Usijdxi+Ly(_Ui7lbUhOo;)~RMUY$ z?;}G5d0I3F?J5N|=huszlF{g1YR zq*Vh6efS~&5Ol>xeg}8RgjW6t9{$6MLDeI;KIEr|2k`G3#WD~Pr7L65W#yb2?IylC z<2hxRA&HUY2%J!mY{W=nc;Z)v6!i#JOS-X`Gf3yK zC*1wFq4DfUXi9|5B2v##O~*0cR5+Z%`(f%d=t*T{z^V+<5WkgBIz2~uR!Xq^k7xhz zPC-#=D{euu%8;tcaZl^#PtnahUyqFQFG#O!G7`Js>ekAt)Psu4%@Cp)S zx0QrcRWCOCQi!-Gkf3e4u}&F2)WWhB4l<8otKX`ucLoODA&E-ItCG&Jt7=$y-{1o~ zkVixa{)Ym9Nx$)tx{?+yBim$T#^8L%jn#~hVffgNGMnbK=d)t;SI)3-=|oy4AsrFOA3rXw>Q)BEu}o^b`T8^ZXd(8q@64NAL0ZUWnRilL zCMS<~qU>zewexVBTJPlM#c@i!eFKjqbE?4CuBQ0lINu?fo!f5Vy$KIYx z2-m4>cEV?5XJ>jX?4z2d~{M^)SG?@tiFZfw9r)Uk1$-F#>t|-g_#x2_kVbWR1SY1+l>17 zI;bcfrWG`9IKIgpn{6ceU5~eU-f*H`_wAwo?B`pD%Of+1z)!OJq7lT4F!j&MIZ@CT zfwyA%vY_W=xV>-5I!@}&zrO9B$pf{N+w71Y3sQpVDd|HC<=ezF?J)jh>mfDKOOV;z zVXchl+^al=#*p%90XqF#(C0?OcNbO>N}S884Rx$;c@B$kwevS9$O$MPdvA=&u;&Tf zgA40$c=jXKGiqm_&StA}!vmR3ka29f+z8S@L0_jcBGl^0qHnfS2hDvl2t=*eCIh~w}=PbdlWK2Sbr zXSyS9e&%+(+N7UPed`J^nLvGU{ccal4DHtpMte$(UtQ*AtKg%&54Bw2&0Wm`^su{Q ze_bWq%f+Y06ReAC3Kaw%B$(_tB^Kz0uE(#OsKI(aMjroL#hBA=G#*eh_t33H(iT`X zmZWx#e_63FR!LrfV!e+Wfrf^hE7n$KE(q94V94<)m+;Ul@~9AiJIY4!|Kr_$kZh@r zna}dID&q2RcPIuU%gB?KUuh28MK;_B1?lEDj}$QZghgV?M)5yjlfr+=uKQM+jXX*$ zvjF`+cmt@0m7N$1U;CPHd_EA;qq3epG&Bk7`2IaOh0(G> zLNOSGle)uwtVj@IF>`gQmi6i4Hoya>^%dHRxE4PGy&k|3S#AW{*IJAXCzS8nmNs+6Dc zKhXxJGO6}1iNP0gOC%rQ>*y*Z1RCC4l>R?3LO+PJPmV)gEix_oJWP_*FA3Rb+acmaX5S zN3h-GM767j-bd9VD^_UB&;$fhQllHZt9^U9KI7eWJf^#Jjws~QTcMBw?BP|r?5%yc zxF2;4h>#bXc6ky~A+^3LUj3>}VJCM)i*pW-mlD9w;9w_=m$1*Qb{f2}9w<^uMKZ&^MaCw57Ujd7V65beDJaw)!xyy$ZZC zDeZPGAIrqC0=Caa2U+9L1bhNHZ||dkNW?5BFs>d?3uuUn#WH~Px6+`TmOpSx*uOHZ zdAjJcCBtg;WbT;%)7b(ZYqQB_6*#?#w41RD&csRSEu{tHTduR=ogt&aE^GN5Kh&pW z&&^@bVwW7iYiy^SeDBFy1w)&|?D3e*PXd$fZRkfAhV(VapgnhwZDp9pmURSg1ky0yD1!qIeL?>vgPQK%L6)YxA}h<{L8*pMlE3JRUX zSCg&ZTzN(g8z&6fi5c>F2`+%qIGJSyuay36IdB^zANnYi^AiWGBAB|3a|8CD8v+1u z7)?LY%Q~$adkedO9YXXy8MTcjx`3e2R*u`oVK&_-+(UTFyuQ{K3%8>@5GD@R$KDkI?ufm5s zJ`%43j|=0jC!KSc{%8wv4UXp?fJW8F3B8)wQpEidKVz{{?|v88Kg*w`Ouo1vTJgCW z0Xdq^e>>z`qI}UgY8M5|32wiE7xKPSLDr> zQ<__zLYMZS>%1L!Zn8Q@2WuUA-JBQZeM460_zop1dpm0xZb&Rj|p{!1W! znAjREN`mR>cu%OEH5j^=f_5gzeVKr%>mcbNH%rnUb{d)Fx1H`Sf{OyTSDPUc>$XnK=65xu`WQ8V5*s7T=o2<$~%DI3|2 z?7}DsCU9=$a(cTgd`QgR$Rt;#qv~;F^7r8ybv09MsP>t2x0)iRi1Rt8(1nd8Q7JA^ zDxlYHb<$VN?Zk5_WOEzMUB9&LB_!e{01u{3@B2o#+rnoUi5mZURgqHR_b;*GlH@QJ z6i};3)HQP<3ZT0@Z!YA!?&0-w#l(DH>d_M|r zB)IJU$pXgZN2liE36Gcz+0mKio!qJC_Mx+TTX5VQVC%left*mzmOio_Aw~{kKmi5t z*~j7qFe4Ce(#VOzCdQj+G4+~5mn%#t4KUTzu#QGJ3WzC93`FZ}WGos`w`*!;@W zM~z|LM+RJ%eeYk}(hK=KZqo@PMeHZ$V? z)KFr(%5m({2a85Ks^J!#?aZV0QD?QS3gL4nMbpcbrTnZ3j>~|00Ejn;NqnG%8Gic) zGo!@!Q{_Q4N)uT+$e8Rf6N8*_;$X40mnfjwV0$ghAjm}ln%?9}+mE`xaJ-uFazYn& zTr2K|*Huri4zCIZn#nF^GP1c=}luacF!_J)24R^GE;A+`6heyxf__HTWk?C zRH+t!QB>rFii?>G_A;LmiYs^KeiYNpKCF$AASWud;MZdH;LiQaCb6Ytb-Fv5D85Tv z241Q6#Y1z(PIR(*pV+W^bDcB`t=DxD@XwEWX-x{QLO)Zu0t{+Z8ltwX$cbVSaH)4- zgHM%$>5S^wZvcmhEGJukweXDGMpXj4WJ+N^{}sw))vd8!`O4;x(!bOtcGOxLOisov z4$#edr}Cv(dbpJk## zD$|)4NR??|i-83CW@!r5>6?cUJ`&?{ytgY*Kk`)nJ2#6!c!63ZH=3w}s-s@sHG1QA zq1#G_ zWh{Zzt)(A%r@z;%6XQX_i{lZxX+Xgq(}LT}d1pJ0m$S7D0-ph2&RJA6!eH|nA@`Dv z+}ZNf$5o{>i&UTqN9OKB?q9}8WwD=AKarW?oIJ~2>zq%Uy@@-8rZwsfa@V^|UyuEY zBVY*ycr!8A72BqFouA;7c%N0zon9M$wJDl12h*sEF$29?m6@@i<3ldR&koE3HVryi# zLMU}-T^KF-B5xt?(HAHP9#yX1>F%0CaJ1^*R{Wddn}P2;TjYU$kQ z3T+Ma$k>NNmOXpBd3HX&i59QaD4SBznx)8Pa~>WkthCCt9HkUk zYB8Cm1BaZjq;0UZdMna-#X$}mJ4^?>TVJG5KaS*`TtVD_R{rApvL><@*p@1HHn%YI z-Y#`}b3ve&N^-ktJUlc!QLlqo=Xrev#NcNts50vl}_AtYA21)EK#+8c~CJs!J43sXBpg%dYaV^3Y|L}O6W=NgcD|q z+nP|TDl37Y`|iwj>ytwgUxN7@i5=0)z9ii%nb(-?W-1vY_s74mfBcF>2E{0njlT$j zI6^SBFfTc)|28)8{pRgNW@4XJu)cLu#bZ4zc77lJTkK>~O|rLWWUL}UoE5sKc3ooz zTy>@20bGxLdzB-Ezb_zA9)wMIS~B+%>>Ur)*gKNZ_r)kNqv>}#g+@l{{;kiNRBs3_ zP8D;})ymf3LyT>8eTk~(uBoq`|5|WoD;+jT!tkW-)A@ekFcE92uZ;~2Y<3N~60NY2 z`OTZ6-Pb_x;z2Vx^g-+&o85tVs^d!AAH^zO-N9)+yX3D{{mZ5oCVMR4$I%0ssT96U z8cRGafCt5EhUqRQ)@yn-lPJsp-Tg|ZCWh*e5Jj)1cZVqoDU26yoIYdTd{UVArkSbl zso=;4DEUD(^RAEv3B*DT#;NtyF~ly>0BSUo&iSsGzbN?_xeIwP?d2|RSu68u#jo&f z5!|e4Yc4@Zq?zDB1F5iY@16ngLfcHALbjk0&_Hk&>9>l zFB(mMs(LHh>B&kC8$2$3Mvf{|*R3Je5V`wT?SYUN35wLu-E%n%ZzEK*c@q58iKMgT ztzB0#shdy|>Dfwo)Xp9bg2BM`*{BtIJWHceLVbsuBG=nPTRZrd&g&)Ny)P)iC~4|B zaVG$PmIlz-|_Xg(a8Df+?54){~ zD@vUx`OA%UFq5=0k2=}O?Wm$Cz9m=cz#(zGz12Jms3oeg`k^}9O8CTJ!s}#k6C=LR zS3aS3UQ&_EYd^elel>eAIlgs(17J*$f99RLu!7$dvwY{B^YzfLd8?1XUT3@XTnzt{ z)~E52w@SSV5q#rcr1e8CNHWAEE|;?$x9o?`ur=r|XbEw-W)7$JTaO7|U5CwiVR3lT z^8<9x^F2NixZ^%0I%f*V3V3gM&++`OpTFhu7=o(c7bs7M&3L-xE!vqJ4~;p!$SrQ{ zDQTWjv$rpH%i*y3+}zua0rb~5kO)K{x>{InA1p@S=AVh_S{MI7825?}omUjD3p004 zG&cOiN7lyGV*NhKbvJjIl6C$L!cW7XdraWI@45v{a4i2p^nNp!PC1(b3up!yavyHj zy`w#^n>L0h|EDEJq`2oiRU-RFBx5n^g1Xy&N{XQ7p4ER+^!?X&2!9?j4`{ugPXX?D zc7W~}vIIV+C~Q0yzMDx&f5#9 zt-%;@aQ-Ek26=c$AYE$ky{GSRZ=uuy{+>+bfOhR4JmKG0)m4JDF>Ba+3RS0l-D zfg{M;-YS?t&D=Cjt$W+T)z{|oVfF611QZPx;$(o1q#Yg+4pJH% z*&+HE#qVvy^B>XJj4Nhq82Q}nuC|Dext8D*j|*LWx?gJifK*}J4%9`&ZF2R}+zNhI zK!SXme%TO{+EGLB{}UKtAP}mbJGo;%k@=8jhD#l~=zZlCgcLD7_!b^e5*MJ@@$$Z= zJNs>QBE5R2xdD(`_Ndg2`0k>JjlC%=Zr2d)^s(GsuQq;ut~c$Gr~U`~1>JMPi;0Tm z76lT@v&YwJA~=_7B2r1ut^&3p0T5}~(7~E=#mXjZ<})YbXq*&AO18^&VM8bP8b^w0 z`T!tPk66mQbGA_MLkyQ7cg}k*ruid0b-ev@#@TkgSoLoR&G%E#n7ZxJk_yW&Th{c( zizQF8Lj>R5u};67hEp6X$$SuYx4inwh7V|eRaSf5tf%Hh5dR~{peia$q*W5=@#Xr7 zt<_q+IDey-r}BqJvu-(MCuQVBAtG@@U)P8ss~lGxY8H|tRkev~)@jiEj|Qz3U2E^7 zIPD9DSy>NKZcpldWLb=yy)1l2`zrF!n0tscw(*uTQ$3b zqs+m)1jW{-8`YUmMJ~Hrg}pu57LpmX{2Xnj!rv>F z4x{alm|8r|jN{8mTB{DLhMc`iB@qHJRILegY4+NwuA{MQ9gb6)G+#wr04pSIojmI; zTmVY}ol7&~3;WyYniyO3r^pFG+UX;xynfKpK8%u@m*Al3>*q5Kp)sfpW=BJ1}+RIwr$71b15CQ33qu z7r7EL{*k># zc>iXiC=sG)oRfaDIl?yPP>>C;ra}k~$$`(T|Ev*5uq~naHBgBI%>U-6xZZT5xz#pg zxtg*wzQl*ciNi>%H=Yz79@vWs*zJ7TD7K}Z0(J>sIAGGQXC&no4CgDVD=L5X?yq-L z-AU*Da1lNWxsSPv8y2i;bJmZaw_gXLH8E8m9w1Iv&8%HIe>V`cU56fBH?qW%r~v~E z`G%g^o`q%z2c>i;W3z1Lohy-oAGL-AIc)X~Hap%to0q$T60-zp<{t%P@c^^y))n23 zs_j~NGxKWctRz|S&x^g2wrg9VY+k#r&!|!p?KzJeN@`qP6Q5>jTLq;+G~OL`7-n?u zFHPIGP5xQ|tlK|E_7*nw5=>wS2EhoBK%W&Gmd`_+|9=7xc0_knBT6T#^%5N#R<-#d zo)bC1r@Z6S0A2!-fEV>hLB1`i>K*N|3Fy-o#j*BXa(6u7r3PD(e<^3S{fHXOsrw#^ zv%AB=W`cg+t6D|-N0R<I1 z(0fzOVq8itKaU%FDOlWw6P2RPNA=0t`5L^P7uL{nB{m1B7}nV@mi z(gKP0f!IU^<{Ml0x0Y@vc;iM6o)dW0yn=b6UxjdpiCuJ%)(V{l;uzM!_oG7zyvL{G zK}p<`h>s}2u|}DyETi?4*(7124Yr_S%iCBSFZXyiR@J*?J3i9V!#6uqfzB|j!tRb; zf!IINY|~VIYo`hDhAO-!x(JnZW1irAD64TpqOEtEW?4hNxdK+-R!!o9bz)46LSJJ0 z4T?BX3Cthn!3Z<(Sh0_hx}UU@BxmU#~ z#d;@UBPUR4=Zx5RMzf5ZKJ7GQ_SLk~t&Z>tNC-jiNgYnV?x5N^djE6(jIYApa>S4B z8l4GQxW>a~r`Z+RVnuFBgYi#a{k#^tZUt?Q6~89h@8hFyOt!oElM|vlGBDyQ>geSr z*^J;23j( z|3t0s<`}0Kh3BEW94RChRaos}1ZvtGS2TS;$T-tc%vPlOHpnHE_39;9BLokn7o$Xife6)+(Dq9fk`_1e z`Et<6j4uOLa-Ow@E#7CV*q-&U2;@=3g(%p{1&@2~sO}bg_0kMX^{% z;XX$murKa_5()S)s^_E)OS9gqdp5l4SEV7U{CeNe_?cqz_RBvSD(u_e?_E94s5p*O zwDsLs(xXgs9|)WyjgRuanjySQwd>YTRX*MN#21IlC0Lo;nxim_)jG?|)FXYL{$kmU z3{<=L6S+X_NP&^@kJRCL?Z`(MO_3aD>M(Jwdehn6(xpMtwI!}5Zsb#W+E=8jLpEZ; zN9pEojQb7@*;U_g)cr8WU*l#I58XzZY`U*XIw!qxU42X@!gu*D=kWTmld~9tv9Y+Z z0zY|OoWn>QH;42P_F}u;VjIbs5d@V7lqt(s|3s}M6i)GM6rJwK_3oObRt=NAludcd z_;I4XU*c{9Zmefie^3~&FG|kbQ3!6hkF(wR`genRDsukSIR&N8iy2}KArEVXgVIu1 zilW_qx`p|YajBq`ru_${g)K_5pI`p;Z$)w>JkF15)msVBzDtbatBG=?*O||-fJpH1 z?@DR4#qUR+T}p9m7^>v^(_8w3OUz9C=|d}nIG-^;wmBwI%_v##cnR*S7ZxYy=S$0A z%_-q>-VSxD$d1H-xv%W>LKf|wc}a7v{G#}7B4Nw&S+(1Q#%3(Qm*FXDRA4XULX}M4 zfCKi?T#v07DdeshkGH){wNSlK{yVj>$X(8jQj9NsB}9ACfkjKE^Civo3GeFIZC>`V z$39owO_Cmg_W2bwH#w@y*;dsRTFPO=zu8#r;c_3J@{7OPx@)-j&t4;7wn@t_=H|Kl zi^6?BUwPW*d@$cIOl;144d3IKFFiSOc2Qk&jb1*3Y9%0NRd=VuT~x-JlNb?YoTY)M z`5Mpd3?t&wCS_-f`V9JTWI-r=yHAeofoLC@v=25NpIg%8F%5p}P6;+|jk_vp{0XnG zJV$|I6MU26xG2@f>MUDtQa?lsrecW04$4yr+L-fR6*K24*ps>S{7N!-nC4r$;#Y1L z@uSI#U}Y^HMaz6#m}rR2(L%VZ>(z6nwOlHtj{kCm`5$zESwc6Zqj?r}RA`vRP%lF! zfvz?+xX}_ZW-$@UIbn?lgXQ4fwJ9fjAW zvjt0Rr8IGq;w8N3WGJiMn=aV$n_FxAAZe2$8pEx3mGZY&OWvOW%TvsWq?-e`*e`8f zYA;gw^z&S`;bnZJGdu@+T&gi|$ZbY{h(QW{>U_+Iv?A5^W(Tgz8Zg!O+YdtP62h6$ z&E3qy41 z`NCh@k|G@quot{_vfh<>C$w|2aFd_=KbX5^T(7{V4l~uhq|0HoxPH}Tg&$_fjp@8 zmh#H7ui2_#8NOC{R<>TfDlPb4laUITf(BvL&w9*vgJzVxT9#fk`wev)V%in z7hI*jWbjSCy}9`O;V@}ALYl&Z+5FEi9inf26LC10DWK``L5!=|se?*^6SmDp6Trw+ zm~fLc)+KpI+fa?A{?SHSwvA#z7`w#H&esnr+JABW899Lw{wWega?oLdIai5k`+^8L zPkf4>lQFLs0~Yhd%5nSx*sRAoDKxrdjW6M@EMakx61)W9yPOZ)U+H*=QhRDAoyv-%~&jKT+3$zjY! zE|x}FEhq6h@+BB;HuM{G_sntVkoET27Rx6H%QM1n990g>Pk|3}dHxudmK^EbTzv_iac|A@K{lt6Um1 zhS`uXFfYZFs#=9EM$Jx;`HE9+D?3FQ9+RJMFz%SR&ss!k1#;Ax_VtAebXf znhdn_Wto|@b7G?>F}Y#CnkmXZ&o+03*PL^fE6F82OefILubBe~Zq^<1n0$LfTVhXMQ{m{FPNn2soIw3q zPWUV(Q`j_C5rsM4g909ZpGeK=2Cf_3xD~;QVW$=)%SF@xUmWLMSxBZ&4Nf_*Y(Tm$lcGVS?gWDGzy=ftmSd zRad!h(3smoMx=x=Qw_zWylAyO{X=j0-c?>SB|GPsvK{4>PXZ?r32QO`IXf}6*WYT{ zMV-i;>bDQm@3u*bi+~zeoD7~Zb*A0_+z&TaL`2)6>09_>?kg59$I|Gl(#cnQ8?di4 zhjOqI!!Z3mD%>Vxv?OOVurH;oG>$6b1!;;|Z4=*2Jwr5O&Mvbm{YXzj6q>$Ul5T5> z88=}5O_n+P4&zU>aA2MiW{%cAjGM+1)g`@rRNJ@VVrPbv_adEq{F>{%U7n9=S_8oG zN$Cv9hI2ZJ=fZaO3u6<~1wTdzj{hvhDw$)T$?x@Z+h%Zqj#2B4tGc{wRpZ5I4+Dn| zp1GaO?&KhJu`v|u>Bebpayv~C90~~a+=LeVt6}!-JUg4X7c!Q$RXIcye(@WPbIG!3 z%c;KqxA&9y@X0%=zAl8%vP^EXVe)PzF&%~VXEptO*XO=K3k?wza}~Rnml3Bm@|A)2 zgr$JJRQh90n@VSQ4Bb<)vHD{8Y=yCYkka~gYp%3TtUw#Nm9x^O^5k4AIZVl5RaVZH zt?-ZB*K1oNwr!=Bm11WOCzf|`o}pQ3h0u36&Q5zjjaTB;X1lD zE=(V-bvh-4ba$s3{?c?R`O#@*gURBQnOPD4XCJEGHOD*q%s9@PHT|(mPU5i5mJ6Nf zAoPWB=@T`#lrt#7ywtU-=p%WyEn6On<4d+(nt;<~@K9C&kdFbKX42iIpGWG&IV8fEHQGM?nX~1~ z?MhDo0sm}dYA|!FFE@KSvqbuvc~ls6Rib9k+C7YbA&JoRg2g;_XMQsK2?~gX8<=@G zhYRm(^D00k@fXuvOR8OiXj#_4G&D#od&Pn#2zIlWcUN-L<{9daue-VgsApE~-Y&u+ zgCe>bMp|!yz*J)LRo_46@I$IR@6xqa7F6S=5)KK}*zU@sRAQwk*neI2C3$D+r?rf( z*Y~KlJ(9A!pE3naBUl`N+d(zmOQa>3D82+*&b^OnR1=`gzmXIk9=K<;~MIFb8p2lu0tNy)Di4u~Ld+K+f2T zj5OSQY?b`9V?gcbR5<{Bdxq*fuL%F`*9$9?oAIS_$bI=m`W~5lr>w>k@?%TA$T-TR z^=Pk3qE`CvQM35Enlzp*PVRzPR*ik$|v#HX_$2~1uyS5}#iVr3F99MN234_j@VaLH1PYU%Yzm7JT@rsOyMda1b>2JPKYNaIH6y)( z9N*8r*dgon7K6Cq2=U@n} z=ki8Y#)51BA zv6{N3ZLPI*TK$bWb&!HT^Qfomdgr%6mM4%8{M=wCr9pv;$G@4QDV0|dXlYV zxv?TwtEgAReLhl!dtU45c8h(Zm2O0IB2zeDLg@hfs{=2s#jM$Al2imr?a6r!I{QJ+I3lMi&xzGZbS8G~uYSqU_^)D;H9%HY~^%Vprlw~=nk28on z4-8A<*K=Z}j4?{4?1a;ywnbpi2}VrpAA%je8VqjGoe_0%rl4JlZD=y%%@s^>xp~CO zrl~8-Ze7^B!Uj(_a#A_xI4GCw!cZ)6!tBUC&oTsOacu&goMEU42??|)Dc>2)W!2sV zrC-|mD$w~jW#>phNRv}A1ccDbFJ z0}wr(R?uAD(pZc$bn!&bva9V#jzZ|5aqj6&>d-U+Sn}>WVegp1R1L{JDolGeGW+6M z>#lsU5Exo;Gky}|O0#k{2p;+T&>F#40rn30!NE7#@FV8vzrkI*rOKjaC>G}LVmL-p zt6o@Me-WIaUUB*>Wu~$23Jb-593F23S4eH{Z1zGbfyGYyo( zW7v&ct07Q89&n&c#%D3{VyP*UxtZ#%{!F=5+&Oz5Hb-Arrl%C~XJmmfpRTlF z?WpRNNqDv6z%Ti2S*wSIrRo1!I?@x;bx^U_`Th4or&44_y3a`VRY2fmF zls~pWG z%Y)6dzieoT@pWT-CU$01Z>Z8q&1uuh3(ftqvE^p#5Pm#oyL64F?S2vs7NeK>FVMPP z|FYdt?GH;Xmh*s|4Q`5$^*nd)+d>3@)fD9@kMAGB7rz^NqG7#}159dE&9Xx{p(1X^ z(_9sikhV;@7A0Y;BxrPSf}&<^c>j%jrfe}$B3cZeVN{ldCXu+_=KhEAVpz5W21C@~O?hvI*kPZ>08|g+$x;I?{q983G zk_t$7cXvv6hjcd^?x5$q=iGDupYCTj&Tq}ES+nwaOeE2}mHuOCA!8W@&#S_8b5>fy zCNl&pU61NJbEbyn1gf7KD{1y$=$8leh~JD3oP+7<<=R*Z8}P8vepxYGdxLz}Q>&7C0_kGA_8gkx%q_#AgZNwreRQ zcSxdYW%5dRCGq_;y`vIid`o+^>j5=Cb_V~i@0+g$HR9G5jL8fHE7GQO3QIarIQT|> zeJ0YE81?lj@yJ#9&9{xzLM9Jyty^7>aaQd^o zqby6TIyFm)d5`e9Hmj`BOXWT#Zphdt6Uv&CF}yp_c<-HiOo}pj>97_gde@Z|sa<|;3kT9t%L>mr#;tMes~aF){YINJ0IwcgYvIcBZiYZ|)} zemzP{PoGiO*y&$m@6YMl{TBp;%fDig(#uOC$eU^pB;ht(%V$y(_azBfxgDn}Z}bk1 z!dr~2i9V-VwP;uWv!mvQz;J(}0fsB>u74<_xU$gr1R|`mbBhVe6LiI-O z7B7jW0JS$es|2y2`E;Dp%;$y;lu<%75NT&=Y<2gh(}r*kjkb{ioQ_S$46Li z_L=Vb*oW_OkUFe?I_T%&xBe)jjH5j)2vjhqR|(=S&AD|-c}$8#oUUAJn-iM{FIrKe zY9{YB8qW#URqPrleCuC&R`}dLYJ_IS%;^`)$UhZd4fQU&(g$a?Xb>@4t7o`m#+YGL zJEY*{$t*}|VI8y3W3oh^B9R+POikr_aZ|-GHLqS;lRVQ>@;w5bY1GivsQ+Mn(Rc$i z&IFxe(P2ivlFmjWX$oL2W5F$v*qCH3Wyw@P)%VFCiC--~c#YT-dlk=lzPw_a%bjp8 zahk~aK-tAJ+9xP3$Vq!?p3~L$iM{Upl%u!Xpxaul9P6>fL^zpFi1X>&onbveQSJ<# z!QJxu(G=a#tHe`AOg{d)%d;uH2*c>`(-c=8msYPH4iFmuJ({M5$8m|UX{$4yz$8rK z+6MoEelBBpWQ0w}^+A0ww16Y3fX-fYopOCpJMxKUDl!RWI`YrA9p>){zOEV9!oqPw za`?a7t^M@j8*sv_gcvT=r_G94x3CF(Rg@tbmyyV1R#2qEEm;GtDsv%5wSDV}{3fH_ z-@i|Ctb>lV{V7Myw2z98?$`NQJL|BQt@Rz4HczPVxyYF;b(m#asZaUCn15O=>W9v5 z*IYrYr%KZ+)x*6D&}rk$pRFb6y+pZsh(DCY2d9rdJ6FbGtU6-)LXIoqd1J^*k1Trk z_y4(OADqJ@q<+~ZHb*iWV1B0B!OW-`J>JMxQkwW7FNDxP# zjAc=RG6qRbX>JZ>+_EV_x{+sJR4b3#q(K^?HD4EEmu*L{{AK!sIj(VD8hh6Bebrca z_1g5OxFrHXQ>?w{QBeVf4a1uXU%DhKeBJ0(x3(&uet2x$KAXctZ>;)^wg0`Ur9f6) zf_`I*?(@RUo8s3qY*5d+*`(X4sj}e$TGeqin`ez#Ba`8?{(4I$l22YxqgqcB1?G(^ z1XXjqep#h#_Tvq_DPIj31uqVaAf6?em44;(it;QKx#dYhl&gp0x1>_?rl;@O zUq6MF#y|uk;kl^s#d48pjj|mtsgP-qu*GWdst6(31T2sEAs~2rtGL=7z2#8ynrD*F zSPi@6AT`zR#furv$5yrCxar8#CO;xhb!KpR3VWkimk|mN>m48aW)H()8XC6B(&aMC zI$^zc#(#GL&y?9*ZXO;%Zc@v9E-8!Ga3Ol*{>10*y3&T>AX@=6V>y_d{wQk=rX;Bq z5w_HZ!foJ0>`{dOOAl5o!;^K<4Xa%3ZC(V7rlW5TaS&uuU+U2}Zrw zPMpe-h}E}pm&ld!{gpA94 zt(coF3wvy=Jg#cqwHX=8dEx9c8x^@tOlE7`nJ%kdgc_FDZ{(kjr{ssP`%T zQLWiG>6hL++|}u(5R<+zx!sXBa3D)%sI7h&{b(eo6qa;K&*ddtJA?Y-9Zb>-OWOT^ zYAVGA5#5mphp@gY53Y3)!b%Y(u+Bms>23{Y1cAhHxsh(LW64OS>S47Ev^(C@W&NtH z==}&t<4o2uM(14QANr#w7keOhpkXSYN=0k3`H_)OFvCFnB@6>X z*fo9*W)sQI|I;GzMvS@?-cxX=89Tr$O){>=egzrA5Wxe73!&VImza0qv`lw+N0!Kp_ zds~dHn5MBTC*M{ucDQ6{%6eQOFBA2+YOiI08sorebcWnr7zl z;FjRnEK9J-T#Od77vRKNu4slrMeCn63vq>L%jy1H-7{pfj!7nBjNM!5TxQn(_O0dD z&lX8K>z{9E$MM7~ao(TeAuyhp*+ri75 zV-xlEKK~D;iEHc~cD=IR3eujmH% z=P?xCybaT;<%rX=L{(R(eNU7;OS1+8O`{0iVO<&02|JrZ(UL1?ko7@ku;;g(1B$$kG1`}QWfkDE-Z1UK3+bK zAPLXVC;I=Hod%~QEhPmy!qX79mHQJ?@|4#e=t1m%@=r~bo=;gj`1iW78Kt~!OcmnB z1T!d!$k~r!mS9xrR0CO@5@VhU?eO#uK5#j8?t!i2gd&azFG_FTqATeQ&b0wsoLmP)RoO%El#tX zLq0dcqZnya*_bu`Hoxfhv>Cw`;yh` z?#aje%sakGMor@|KtwupQ?91@_cL{Z(&rESW1W_4$|Bfv`c?`Y1te+<+z9yRX zx0P4!;5G@_-Hx+ArlMYZs$I+vZX3*1#=x!;R~ro#abRARHX>e$0}LE*A%}oT9cb5G z83^bzOSmvMX(aa!-QezM%mWwO3B=Yige6ZQMqsRV#=k2%WI5rB@=s~LXCgQ9V;OP* z*<)o~%qE^fhAJM0lKL;AkN2^93I9_@qaVwll?#5)y0+O}qjG&lxcIQhY;Yzj+Ig!j z(W)!Le`8>6z`leO)5gHVPU}~Ib*oWn(5#+yGRaLy?<Ltm5)i2VmkcWbXo$wc#A9f|e!0oOlT2lUi^;}uI zNg2Z<0-zqdFUtS%0yhy(JZx?~GuEp;32)#C!#RuJ-7yi7PF+~#L z3GWk`k6IpT3rw||VHQ8V*N|GV#!%>L=quI3>GeR;DGM8>*_|pTTF(uhy42^ASn^>L z+@)Q&EpH^oLuu6r5w1$;#J@(HL#z)uVTx9}kwx7}w8QVkGf~>w`lzt@5)T;0B*m_t zi}MvAprokUaBES-3t+M~*vDW{tHwvQC~^gh-UnHe#5xIm+?8%kM^z|9;Wfc{npCU$=H5aaxxR5z_tuQ6;xsmyftHoI8cD)h>JA*=K7LvP zXQ>oIK25lPd_$yr(pWhQe9_Tj-ztR0gwZ==S>0vbb*XCTxg@F8lz3;#)0qNzyLs?VPP zO$jLLGV)zwLm13kWO*usls%fdlJaEYX6;Mv8;?1Cea4HW?&n&{u~gfid;y*PCR;LR zlCm2=`IbgiiZO-wnQq09itgr%PYMdIjDPzXWg&6h+(*lB~v)HSZ_GYsZ|1^-#hGkh-1)-zfUT2dKGjh`KgXsrHkrKw-s{Rp{4rzcYxkxHpp6I`AMr4Nn6Tv2iOx(Z z&@YX?)69u;z1`4LLDQKpx#tBXLY4?@d#Enq!9jle9YxsibbJEOL?)-jG{#lRivJID zfYP-2psr3M&SLJ0d4ihVfo^*`hHt9K5Rpy4A}~61;VH$m?=_>#4*EdzfX;@ZDr^gE zj%*I>%oM0}TNzv{?3;zRSrynACjqE6-a}*Z^6%W#a6pDxIhOE4D&xEA+O!Dh?n)nc zZ!ae}J4F!=CwG(_Yc66gv4R*d06>7oFc^vntF>y$RCQ>B;_~B%(H$8bx&Fr@qd>A3 z7ax~_R4y13D%3-ppiXz%bte~y-%YZzxKQ~8lT4jFNyN{*-&BrXo^iW#Rg?s#SDC)6 z6-m6|HfIa$-7bS}UWhDpKY_$BDt(KH*W0T8QbY0jMORO?+xH0Q+MFNQ9zojWu z;x@A&g;qZFLxsYv^qjd^NNdjf9ofn3uF^hN2hE!|#TQG{{GB?OMyOdhzwwdqc9gHr z^+7lJudXmMc=&XCInm(R?i%M2{;3$I@X4*b)#_*}eHN`Q1jW1iSpZD0Qz=_J$gX`v44e?&6-m=vk(V_CRjmKx1+; zc>dg_MLQ<)i{S$vmg$V*$dC-%cnfrQ$4apHBp)U2zA=#`OxDGXqO}ZUW;rIkQbh(1 zze0;A5$3v{3h#d)4efDXD&Cto&c*zD+t~Dfpp(%j?=XAy zr$mpK6iC@^4zH20nsd^j@{zn_gQ{|x;@EODA}_G05ESNvRPcb&NGnC7L!uDTwMd|- zsd)B`FiV}NNEcP$Y%Z94SqHgS#?n?WshcXV^YbgtgmVD^Qt6y7_{)Wzr>XoT=(8<2 z^Am#b*S0ViobB-bQogCAcp0{ zT=b1+t5*SA-+6>~Vpp^${fjYG=#71eGi+AM4yOY^6)yn}j04=F^8qg`7>T&eG1n}K z*!ed~&rdTk%De-=ZA6M{yMW!d9`68p(hiA9?PwS|;ZT+x&T)<^jT~R)562B-8u=eL z_9aDa?4Can8~wNyJ;bdGq_WuM2%iPY#rz0LDmNqWU_bNY5A3T`t~B9y4FaLavL0c; zj#>D0qIx{JRF^a+R$$(i2xlPLa%JnFeKHL{v5M=)lcd8zT-ZB-j2{^#bJmo_yPhTU>2c-mFL<9n`oFIX zl7dAtWUj7)>sn$2o1>dKtHwee7D+oD=q6#&y7eyj`o9F2fBCXOleGn_J5npq zCix%mltbU0RUHy|&B*G#EEhF3%+?mzyH!`}3a)h)p=Kgn?9PsHiwwy76i077hRAdV zHS*#v+JBa&%!Ba%f>BFzjdQ;^cnHa!uh)#TnAj7XU@Qp>34x&_<&q|*tGzoBZWwX_ z{-FNV(w##AQx?lGk5&u!N(U1+zNVfCSlBIFn`_?hT&YXC%2||}X=Ne&HPi7?cx_M& z!0Su8S8&4iT0C~MFkTuF1FGvc@ml3!t0(zngmFw!(WhG(&Ls&vDJ9qJai7cZJiqN1 zf0C=3cC=QwU#cjuD!Zt^>d;BKkr<$8fER4sOrV0 zL4Pe}>6G2oWvoKKnV;C;weL9hXoeSffVo<#+s0`Ulnrhp!z;$EJeWa*R}D;4@kdE& z40h5bsv`_v$ou@Q-?Iemg4aw~u{44~d23w8`F!d3BMf}JgUz--`_NhL@>nWOIOn_)B9a9sd+-byt6u-Q{rq|LxCoL+TArG=`XCYiQctx&HuODdb zPQO)&yuHoVsbqfw9_Tr3hZ1_3M627|%LA?b$_`BZD{W@w>j_P1{f?c+amotMCBML( z$Vo&C0uGUE}U$;WlF;UBT}B_h*zx2S6YJCY@oUMz%~wdOEn#4|RJwCGZ%2 zDLZeyO7LnZEs?LF@kVTzortIP4%Y+LvZ^4pV(}a*wO~@sX-Mbs_{^^-P4+Q=I?SaN=!e2E~ljRJfsx**S2HW_kTAiTI>yu;~O6 zU(?CdB!gx0*G=We8(-E(pI(Dmv(SM2_I_cv-N*N9Tm{N*DyuWsL!%VC%A!vZ8QC@O z7NE1MqG}!i9Div8B=i($gO%nZi`T91^OQ8XW8B<>FbM619Oy`S_PXY3`Rq!-VEa;U z{m3Ias|OSbLRIsr$yK(H&QK?#?aC*;dfZ&KNmq4fL0`*t^M^1YUUfEYIiJ7eLa$k zZl-S9_V*=*gq8!z8e~%_{6llRy~eX@t6lrj+f>8Cikio-r<+>58!g z8(BLc^hareC}tK%wzP=Gg9(b!h^7M(&_7;*%foy1=9vc?Q- zBj6#wC3*-h9XZu+lbYv z9(}q^=faV;ud4@Y$uf42GRE(&mrLEsoovlF7d zZwbMjaIg%|jEq4&SOqIy<|=^U4U}6j!A+Fw8=;g9cW=lhCV$AlFsT)N{Hj%HDuFRw z+1SK|>6qr2DCU_Re+U!sBP3H1aY&5Hx zMD^}gq3YJqW_YHo+b_B~cm4wlKc_x#zSA;)0Lieun8d7Lr2)_6GMs7B9XpGT28K{7Le(>81;@(yk(U=rFNw=BPh|5uD zqh(jjex2OhJ+N$%s~&FWXe7_==5UfG!8S$E^#x!k)a_m8AGUH2IVi~#yv(9zAt-O^ z_umc3541MbwpCc=qlU}V+2WIVImkz4j6Vle>Ra|KuO7!l9uVzs~3_U^|z;Q6CV&$T%neSAgDw6zZUV7l@xOysCGH28Wb>+uPI zn{W@2xr3uV{7yy29n~D(c642^Q6AHB)+N9>`sd3wD8-_>M>lNyty05y(@ITq#)z(B|o1W3WSKB#d!!|aY*v@3cu|}j$a8# z*4bQtrm}TkF_`44*jH9a`SFR^k%&|^nl?|V+{Wwu_9FsXZ90#W8|;P?7odv?FT%M{ z>W;q~fIMyM&ZVQ7$UHvB%xCwCLuAhYkfh5e1rFB&MWWFfeN==hii&tw)+qLG-_>d% z!*?Wes+O;z0UHA&Pl-X;$23Bm`g zD@+?AD{3n`D;ArI`bd{Rv?94|Gg8F!pZA#pH}JHt%_TeLk*$T#7dTK`3jQ2sF#3Bz zhYT4Q;3~F?k7Z&eJTJ8vgG)|Us1|=?s8wMsua+hr5EQg(+&R=uAi)aW^Cst=8+?Fv zp_9@z$2-t3SZ%FKWwjCIFJm_`Me3&2^#BMt4nkNBLCJNBFPEXQVfQk&yKf?CMoYz_ zfM?PzwJ256;%+h03@tW#Kk{1!i?bF zauwpAzB`FUMc61Uj$4AgR{{gN>vb07@=d-&z>F*UrpRU z;{)Xf;DZ1m+o4hhW~NfVNu0~T_sqjIF^SEQyuHPkR}-gzY%jyd$EgG=_YTxsr8Z70 zb*E#u399iYac0wRsiEJ*Lg)Fluo=2TRxzpJtX^-4N9nbCJw}Rm(z{F1v*zpP5NbT% zVIeFrea(#X&wBMT85tRDno+)?Ir@zsa#S_bw#Ikg>%A_fUo`GdIF=u8d;R)(QSH9P zZ!|ZVx4fCu6D$r)MNf)^?wc+~65}Xzdd}jYk+uPSrWrQua)NQDWRFpAe&&<>iS5C< zz)&aT&XWa7>;4Yozv}EOH-RpXkssthMN8?fACsh;DFm7!f)48FDhEWwpWTUGKU5)( z=BbSv9H3o!M4c5SnfR=d0(sT8uI$gILiV)? z>@7hPU{}3#M$?0VGTFX;ArHS$e1|upUNd%q(-_Ty!KP*_Cym-Qa}qRns0arYeokWgu$tI(^JrB+PCGzUn< zn=}+OSfT@HsuR8 ziAu_&_y`z)=j3(+r>|m93hd}~KYrkjEu|Td_S3t6Bs>KYF1I7Td|xyLlbBc*n&WYv zpyN`^PAnh$f$6TkSiO3lHD)#ur5gIWE%WorEbaY@_wbc0IRI((*7D|?O#i$NRGBPc`KCCYNZ*HM z65|;Id145hq%T3+%{Q8ROz+Y04Bzy})@cs*Ke=--$XOYMpKAioHG^F3W@s|Q&N1$d zmjxJxv)?jmF>9hnbd5I}~zk?CyDj#;b23A7CVfkA zzs(rtzxWVAs?y_ucW;$jX(UJvt+oW@oyu|sf)s`S@0&9QVOTs`3!)J(!c42Kl^D(I zCQ%I~QQF%JuaY;C;&%;%j#m)!PG#;gd5vbn^J=y?g%Qh-(@^#OkO%#0;hkt?X8fQp ze22d}WEaEZ$pY%VZtef7M+MhsYyAUaHzUH8eM5|Ou+z3-HSm76|6HH1wRm>N>(TZr zVFqbOXJJ|TDO`+_9o2(9iDn~%cW*Mh{T7Y&D+=!X9FgrxaP&fpr+DRmnaj{cH%ttg z6r)12Wn5T`y$lN{{eNE{P-WW#RW|9%wF?;*K59$OTsHNN9|6+3U@R2uuF8CdZxE(_ z-&g#QP(~`M?_#LdX%^!<=_&ds6Apc#`jh{@6UnYbf4bT?;zh%bN?IM|Hcy392|qhji}{Iw}?O792UD4^2NXix<2!2awg{-_H1JOr3{30DtI7z_RTT7B`NU<9eDW( zoLt-zt@7j&&FzYp?>fMfmf0DmXDb z(91mAt;NA>BZ;Z?c(ps7r}SdFjBk5CrH3n-EF;L443hnPZrXGDRNt<|mcPO`)<}kK zyRw*)f-}Mt=0h!6Cq*Ni>{aQ=m&u_+TIy)@6ghrTy;3%fY@792a8#i87SyjMw1 zbh+j*0_bs%fu@R~PqY65<;k7MnWty8#vl5n$&Z56N#(0c1`2g+wdwy^&=%O9X8#RT zg2X1Um2=wHks>z!8C-YR0AEitJMM75Q&XLwSP^(Tp?`c2y&YvqhoiLY*Wrd~ z?@o3}l`_LB)Ikc?c^g8*&W;%U@B%^D)OM|^xY8jQ{q4sMwwb1GEjF7_U6h43;wtaO zXhMa_m*uuQnq64hpWWq!EiYvV$*H&5+04MJVT1Nt@sDicV3n1JTUy!B$+{ZQ+1V9u zM4Pt8%IkCFlYS)&**ebAhdd)Lf(LRyav$n$(S?)X!`-0sYmRi+!?s?^8$n=O;Bw>& z5Lj|RrP{U6V6!=6=fyN&83FEpy|TdrI=zl}qGvLMXO%uBLvr4VU)w8;6waS=OvP z^~XTvH;DU=nIshvAq61w_zpQ@^=q6swZYbv`raF@ubx904_vWB!WyW(7|}Tle0d9h z)TxikS{KHvQE{t;0a3I_9OLp762D@s{EsG&xUgfgZ(^$PDke=^ zFhkz~u+tgG=@Snt2qtnonPprJ!)0}8SOgzSmme@zW`FYZmuWK8gDIJNpvUOI0D|x= z9mL)1{m$+{BO>#)k`51C`%dW?^6SQzBmKYc?eyOEAfoxw8uxX7l`9_Y2F?Dy_hzz~ z?Nr;tip4_`9yy*mPit$c!wQ6DgCu_r>UEsx-hxkqX}`I-o?MqN40gV@gi7v@UDXKp z(>MIi(&H(-P5pNOVnx|Ts7MAH&nFW-+nq|?bj(=evFK}H^Mx$`9E}e+8s}|uNy(@>br4+h3T(@|hXHr{XGSj< zWlCIpC}X|eojGwRV^NWZ+%M(8*&LP83nM02x>oa^pTMFQC69VC@)9q2%YIytZv@Rl zFGF(p%1sxiMcyinK;&MxJwHMRbLB=E%7c&GMb`&Z%bOLm%}{?wXP4zN)Rnf+b!*Q~ zQeW(pniHu{fTq?meQf#+Z|Ed=-D|3ac9tE9!pUxS*8?Olq%WMJYLwc2A3RLT8_AJ( z?Q1gshD*W8>#&40TD8?aUKx1ud|T~GePaC19fN*jTbn`AO1&d7uf2>609Zy0 zxb~&)-c-2uQ87RLWX&3hjI1fIR55xA>Ux>&6gr06LDF-0e**aw)+hELSV|IL3nO(2 zuvCYES=JWZofaD{q*N-N9uN)FO_lMQD4Po!xbs}pS$?^p{G6BXn;-PoEU}d=e>3Ix zZR3I;yqY2!BK_veJXfkoDq{kpq*|kk=>C*KK5Z3IfSRh$3LwZXxSueN_nsCCL#3;# z?^gEw)TKnn-K4nhtqj0Ky-y1n#)&RE?*sQ#yCQMIRvimOQ{wd5UBN`!Cub0}M%s65SncJV4(0!ryk$6-W2Zq(Q zN_rv*y5q^k-qXjd4FaCIpl;8S1G)x;zX`kcEiRP?StTG5{{bI;84NKK9XByoyBCN5 zw>XM%QO7%)(#pegAeBCtOwRLG(b!`jc_@R*r*;h5oDZM=Mcvs-lxV2Xp@G$;Ubn}! z`eu7mIj6DLN0=48^K{WY%3F)s$`7C}D}KwFLxBN(Bmf}V4yGd)V`tPhpGSTE zNHIGB&QrsD)F|JIA&S#yB7-i5+L|2{64H0Uq z>}Hq4jU$MJkQBSMmBtNDlH=9@ST@p98FH&Um#zl|b!*?02LTo@I2XmZp06)AFqRrm z>*LM~cpH?bl<<4PvPKPGq;QvBJxdtQ{dqy*Ea9BXmuGp}oK!5vhqfDaN({X)#q5ngx(YZ20!Pb6`L5Ru z^fznDn7Bzl+!H6@6QeRS%%P0?=Du?t7T}!%DCsg;qmF-4K7doG3y`jeTayRQWwgG- zQ10C%8;-Y>yozk#K^O*&r#juBug@^aYB#`MvdaoB#@*)k6A$RDMyj1Qh8IKqi#yA- zhvY2;<<@x)rsP61m4Ird>v1zFLhJOT`$uMgk0_+FRsF}JjAl5z5_J$A zx}w^7mPFvv!qD|JKeo(aX7xuiA6p9-l>5{lds9ne82H2Ub|9ksIDs=o@^OcXx)(od z)Ee_I)pFnO>|f zO*-F9TnVr^VdL6^qC#VCdL`UH?ktY^|t0u?jlE1Q}^nE5B$@HFq+Xv%ObSf z6c0yJ@hRdeqPU48(u`))=x!Yl1#K&4&mjDzWtv@}ezSf_Gf)Wme0CDr9IAeKEx+rZVn-}K=^XG7aB875Iy3!!Dxz!P_mIDL z87T(DB$LR0U71HJ;8GgW{q-LPD}ogQlKy5V`~UfeP7JR2uHsl0Yr`2bzk}RwrvD+9 zbMy5$-8QUpHtH&JGf@4q-R0RQMa zs?RWg&oKZYe*cIb?%%cV`yVMH{F@u@{zu=?{>^Rmo5_^;--Kbm2}C(k|6=rtn8o`S zH|1}t(k|5h{Ubnszg*w4b?;~e2*t3Ip+xVBVAS#}0S97_2jJ+W{obg0MFSR<{@=Gd z93#aC-2PZuF~l4ok!0&UYRbJiT6^cP0P`IsT|#1#@9EQ)FHfi4k&v*st+4PVG}BMD z{lVOi!=wZ9CI$L?ZE;bbfG!>pH_5@mIu)cA+W&paEFp(^?cq}*e<8(;h+Cc0k*vrT zU1=@Hf{5C4`7HSAVEY$U`u*bBr$ol%%oRuJkGWwb&)>4oa^U>Ff3=S<9OI0e>)wzj`!}&Zi7ZpB4#Mkcd z5$UIo*mvgn4=_;KDiEi3p|20)Z-eNo2z^ExYZa$L{1JzZb^y|;^$Ik&n*WN|5;U?cpF`wU<% zRytSEv8vE$kizU>44w?3W?*YHI^n*mLD@qk=;*ccgA-4`j^W06^zAvUG4#U$MMmqb zt3{IMu^pLc7G*Yz{lkuLcZod`EiD>CR7E*fsCr?6r|%_03An{EFhom4eB#MMyY3K{ z2GzXVp3H<+9u%+e2C!qBo58xmh_5bEu^PA=j&O>7LHk=ryXB~(Tg5q>Uz{!G`87YM z*wlD;Qv`D}CWR{F*Ql|nI<^Rl6+qfXL>lKpVy@`!+|+e96U{_UhzyO)ql|PS6Mc?z zMH65Vsr6wN?&PPBd?mZMlBlL}tl&oBS#6mNNqV{C2yzC1+Pt-0A;B7w8A|Pf6 zlL4}bLcd%XZ?e&bc12q^uaplL29J_bjaA&(!Z+I+EyYH5{rpg7t?bWZva)I0e_SIe|o#vF_xFEH>Z&Zv13@guP#*_>GKsx=#z*njMYEYHC?ZBT7& zh^HSjV4S}3e|Y}z&QGe4YL;Uv%&zg#mH+IAlicP9MXIw@R@5%z7?DA~cTW%8;N!bs zH#cL4C}GerdX@;logr#!bB_*V>Auq!O((r)5?v2{aMYZ~lUy5&D&k|=1Iw0EMVjG* z`JlUOQ48KDuyjiI0nfUE7}%2n2sh-C6J7Mp+*ZTLuF_jN?5D{ zk{Mdy|K1BEdkK(r)Kp8o(E}=!V8o zJCv~Q)LqIxp+lXkMXh&7_PRo%pm-M-m--VaO#*c!6E%boHGwB2d~=p>sT;RK@EhL0 zR1M+gq4W{FPwa#14blpL+HqpH8-pM-}&9bYlTa$0PVoh#H(x8)-0b-xBSbX4KJ|W zphYM3Sod^{ENEf49WJ-ia1!yKC{2~T!NHyS0RL%GwFu2Oj{2&tLs+Z&D6&>S+u+vI z9{xix4x7wMQS#|FrEWu_eS+)(;|B{~yTy+x!ltXCJOR&dB`xRpO)d^Lv@3<{y`fLF z3%%e@yBWuL|2~U0y+CGtShlr`xPSo(tjh8*_M$Cb5X!U844Jr8Y0Y|){~0sDg=r#EmrjFw&e;%$b?3Bt z*9PvVxH}U{IO7yfoj#Hw)9~2{z*_~hIaavYmJ zEj0}q_1$&Eqol7_4(dXnBfIHLng^CyvNipvb0pQRHW$D<>{3~ z>GgEVvI-k;<~Ji~Q0sZmy#3A8uXv2ux?Q?N5YGGgsg(DXP?$*pP?aZQY^2@Pz&n(no+;l6Cj6j#3~45 z4>~q@C(Q|lgM#(y%hYtU!7z{WIpkCwnb^lgO2l*u^KRF>hjzQ9wx2>iR(FddKN@s^ zUPUMH9JedM=7Q*g(2wwVQloi7onA+yvk7gzpQoM8iQgl3j(ZRU3adOev#!HMhV&E< z{GYwW>M0m9xjG@zN!2L6bW-%|+7|S_iPGh08_8stC=fDjoMZy@HxW^fX3y_D8NaGEzcZ2u z4VISU(pgYEJKf5E-+p^(hMhF0u&QLU;N8J$(wVQVKq*+{KB2<-*qHWk^&=J`U7jY5 z?AOQM)~*TM%K=6{w+!+eX9EKK%QOn#cZJJtZ>lf242qOyY3*QGwuhgD%SFEsHN`&A z_dB74ed2;kcwVBKyPNeULf<>S(Xds{hL|-nQsL?pFc3%dgl@R!-7V05du(pr;*Yqj z|{mJ+Um~97fX`&;Dskl^~vfD!*Dkyw|ST9}g zJEwP?JSO7hY@1FLWT>h!HTf99vw%lAHCMYs%NP{U_XwoN-1Zo%<5poGuHtG35Yk6{ zuaq6<(@kyStZ$x09*voHJ&{b@Je=hd=+Az=T-Sw4h|>E0qwQC~Cpe&VJF~x;;uC4p z)7fl5tbr37q}^<7h+agYL7Im<-ZvM=@bROY_hM7)Naje@VP5p-&nT742#!w`l`3v* z07C%6OEZ?*g^99-DfGg%!Xd%&u7TaX?BI0bhM@cSu(Rbe!!qJS5D>{$+{!glY@fe#wTNrdu!+y(bhUTrX0%+aXzvaBq|>f%c`YLL zLN_~9yRt3L-Zj4{C_Mw2koAM@^xJ2mD;=Vd-!}^hjSF}7Z`q)o-x+-3e3aS`&C}$= z1zd%HJ-uiEM4t_udvDk0h)Y(_4q_CeD;Mbi|2a{RrQyG&)uGNK9>+X~J%4zPbdGvH zU>)v#uP~vj?IKKpH6_Fl7Gnm6<+e*ILzCWM{k72cOau8u1DDS-zE=GyY&R#kjk-s8 zOtjt(uL1wDW}DAifIB%wp>VuxcZ@8iz^TmPWxPbYcw8=d-NDd9n|Q0zXIH~<3xiEu zC*)qfwc}@g!S8C6Nr!lk*G4CC4&Hemq_UfSTAb9lIN>yv(f3Nx`q5GPV~+Ba+zV63 zO=;A5ue;>&@3hXJuMTuUImeiJpbb0I3RSo}Fl=z=B*jY!=&J#6-`*ZdGZifoluwz8 zl^wLZB1TmXPfGNC)+*(bxvkr5Q5ER`0SLIrwSci{=T0~g{?X}KE$-E)Pe@X$gzQgS z)jR5=>_6@9p40XrJ@41GTmi|asFBR}kMyL^jBV#U5A5AHEe2=Y1j))S&hFVoGCQXI zJOZu*J%X%V?`V`z40G>W0}TZ@X)6=~Ok-J@Q;h6_f~YA=vJkGQXxnSbd2emYM|}OH zwn$>ZNMN*3-(hu$8XyXRj?S&Qj?m>eO0icT?w*nfGm{B1zLLnbc%wE{Qtepkj(gmS z*}iWvFyQF`n8ri?AEw^IA*!g|9##=a>FxpP2I-P+5Tt8pM7nDjM7ojg5Rq=_7`jWk zJEURg{*L$l?)Sd`!P#d&y`H@mFtbSHbE zZB0H!eHf}>H%T`cVtr2d(0lRNxGFB+kN3t~Ku&$Oyc3D?^HEnfG_n?|so)`X-&NQv3JV*N6{{H{FTZ z&lw>qGi}c*$9np~fx`;zXygyvt1#H63O;RRoUI^6$R zUVTV+=#hOH(-Rl%1*}q(7O>U4d}kj1ve|iGW4!|A8cB1|a+!3)vkZl9U{|Eyx;q~( z)(26D+=Q@gw_XRPa%-Ar{f_}y4zUP$S9xUouwcaN2`##%L#E{p} zWi`)O0+R@`&wQJ`VU*#4u=|QORlAAHKXbM9Q!X6CI$9L4&Zu_YuB5IjzuU~umM}ua zkUk4{ZV``TXkEpV79j5a5+LKbyBO#Qp&d%ZeS=9rO>^FEg^@@jsK;QKwu%ev&Es1Y zssVeFfJIu?pzC8__jpXwlG?1bI7uH`*b@&;+O1I-JlBhj=~3i8+$p1=q^h?wFJ_5I zOj>pxRG>M)(v9+N<4uMfN>;l#B7U%qF8BtMCcKJyMS&(v?P+lOca8ISIsJOYlp0hM znkO4%Iihseza?~nT&9nvm>ll2WF)VMYdMUy;+MV3mog?sSZ8aZ_)m=a-vqks=2e+nRwav5U4|Lc-p%+e=RJZmE2QDz6sJO$W|LajO*D+@R_pp;8UX;D%{T+$0pl9T%-1=E(-l${^Dj+d1&=CNT;uqrRZUOAS zT4miH@2r3ADU}=IlJIO?$KyFTIC;k!0FVM;NTrzr`td(MHB;g5Bc{(44v)5kx==#6 zh)>uYvucOgBY-&6nJ2r^91r%3e_A+@2=Z19sTf9ZP#~txaR3{G(rZ7(4w0FZ+GI%R{vf0Y1lwN?zEPz1Vm~$<;l0CD4u(}FB z{dxvyuQrg|VEW6xjUm5!afmcW`s?%jP_lL7rC~Y1GP<@T;Pi&IQRwe(>-B3sKBsUz zYN2v4pLgt8Nkw-|>JIAvUPeCP>h!H{$c$Rve})ZtGbsRJ(OO5?Nt>9-=?2j;lTAn< zO97ybqLOzvK)(@YI^r#yMp*gqNVdh5&7^C5pB-2 z?*H9LfJ<<-w$tTz~b;teSkqn%lJA ziTt3qr0^9aK@CZz$kX$&2bG?S6ZTO~8%03tn>f~(F@XHHKUcC7_8k7arey~hAL%DAwZWD0AjxpH?druI~4fc zK1SyMNnV@9chYwD{!+8?ebns!aW#lHy)8SCMc>%0$rW3(^sg9uUwLcKQF{yi;?#5s zPrWg?gCgM3{hoI*su8FXOw`r81$I`w6=mOUF&Y`nRRw4$i5r7E*>>Hzf7$9Tj-)FB z1sE?uwV^DZZI}>QT8hxQnJznX4A^?XuI7D}be>9j1EMqYI7`ICNL$O2<>YmIti{U~ z9addx$V1iXnU%G#?DCLHc24(NH^EX)Ey6wO711HzoR4BM$?*=Ky>Qj`#p65kH*!kD zUoa*e+OWl_<(MqV+nwJ+r`5kxcLt%^5|;pej$MaW%@al#n2$)crwH~VgFlX3Zg-4v zl{YnAJN73vNaoV_ASimV;quWwUECWaP{;*&cSQUsy}?jX;kN55s$Ut%XcLsajm}dbj5(S+f0Qc@~!x)-u(Kw z-%smxgM7C1Xk{n%JscX$()iW~=W4ez=;2RNf$FEYc*+`ZDLP7OQaWEvnsF)Ax9d(x z$6v@J5EcK%>IHn>YJ>hoDeAxP|Ip8y6^b~opbsBSJsR!1zR6x*Ia}!6$CU6>)_ocU z6c5+~mbzl>B|!1jG?uf`0Zxl%SMoGt-(U?jb?^F#OC1e6_d+EjJjl>w$A-#=SA6O` zZ)q6>W5tHpMmHi%o%ujv0~TajYwj~P4wrlPd&tB{Euy@3bS>92d3WTL>@kgXd#}?& z%@qysjOMV$L~ma{2d*JbTk5j;QYJ%@aow2ja8F2hk^;hfb!0?`5(1`31TE4-3G;;XOY!G2*lV zxfq|uAj^QA>&)HZ(mRdJC_aZFt==0`GpTg&^$OkxE<#Ns$Sj~+x0qs?-$=>$uNgeb zszIQ5m$k3|Y7AmC|MO!H(3?HN`)S? z&!G2l)f=ryxiE_qU9Qhd9RW36dG)sZPMywb`j9PC{J!bWys;9}Rxzuw_qh5gIM4I4 zj_G1|wu9dSv<@qP!kzs%eBgyqvP=vCjIhOgdsiUSSV>T$ZvC~;k*Z(@9l5c7vT+1W zHS3RDiAKy*m=ECV-B7j~Bn_tM8?VToL24bKV=$ zCt23jheQ85@Izgni2%|e>mk&AG=o972Sxdlh4POZyEuI_nmp=)Bhe;`$hXPwX)_-@ za%WoLgMWJsdAIMn2?PKc&`;7n(K_(`9MY>{W%K7gjCj>WOrrB9Rbqvp-6!C9}1Fj zT92*s=x_Y^i3u$ihFYANsBPv5;6GY*Sb9xBSZCfMeJekL9_R<*DZZv^AmKt?%U^b_jbYQ%P zXMA}&xn60}NA{cS!6E3g$9hH2?(@a{5~W}Ir<)ir$HqAr@Z5#7G4L58h;(?BhQmYm z9=Z;S=S8^UJv?89PC^Myo#C5SW2O9>jgP1R0^LanK2@gR_WoUlsev=kX^r#DA`ZO~ z|Jafii88-Q7;|kjm(CWd{og)b&FcQ#(XZ>|^J;4{Mt5M~XMbOPj|`b8$1OlKdA_*# zYwYO>@OXYG*RUoISASlt1V0o~pZz|i?Xb4lCVaD-VAL*{a$XF2vc9%0Hr47i(nGv!(biGQ5O6XG*?0}Sfp@_pJ|L2{xesYo1 z1nHe6Ok6+={*cqt2b{Nf+Iu;rX!`|)H=g)BvGU#L3 z*0%+_nM<;2hvBrFHP0^DU;j)es-0KemZgV0CEF4 z;G2%I-`0K`H;qRC-(kQ~`aOb*EoZ3(&-@K@{Y-Ml_B9zs)C!-e-_*nrr_ay&_^FJ# zW1-3cHw@zu)%m%aSXKju7Nd_02dB1PkqQOG0nZV2y%b9xp3;Xa9XF$vH-APx4r5A0 zh#Fpw)U2@^vH1B-mKzfxnfX-jrz4d_EE#DFdVLx})7Q6;nNO~YE7|DSjC`(0k^!Tp z`ISa3Msr~>i#~o~nn@HsTIyl6rONi>HWW2FjjGD|OzF$JT~kru`w(<<9?xFTb`A^U zcN#9fDXD1rVW=bK(8~REf~vUSbvX50V5&P@%f*w`QB(Q(`%R><_r*qU6g{zOG<+^E zb|jUi4VV37KgD@F&}MdyE0BrvX2l|3VcyRRwnv0l&00|ZH7ZJgV`m-hjF#xX{$y6k zX*JaHk8rCKC$9@Tn{JHc>;V7I0)eXXuH)S2$S;Nf=!j%Hkr0of>wiGXBwMkHJe0kB z+#R*Ka7C%-YctAH{gG?p`v(H3I z&;b86Soi|*nPW-+Ty~+F@2B1}b`4rD5b|PWIDDc5Nyx@-%#|K`Bf}6r5x}xIo|~uSR zGv+sxa11sjK!+)I>FU0omGx0$km(WCIQ%WjT&}P!_AsqyXY;c&b1O0vFSoUSv5Dk< z*!Fu~O*E^eh@kxT<5uLHi1_#KE?qzBt&~3WG|82ldkt?}3*kXGColkp4duU+vYz)* zR#^cWCM$rr#$g1iDDjTB&obVdpr)P^HBKzZK=`ueROH{GM@LCg{TG`gb_BJ7x4LgK@a*^-BT*o1ngM*h$ zHT%4Fs)}m2zP95`sKhP$x8cIX>%JJNNU^rX=W&1H=4ksRSL)siOlVprr_BcJ(Q9T_ zY}CMAX@I?~nh&HXk1gnmwOVv2cE(oE>`Y5##5lB?IIDBfhV3~WF#e-{=F!7F#AUb* z#F$62nL)BdAGGb(2ER#cZ=WFELt zbZf&|jZvIIJ`WpbH~nYEW(TU}eb}%6%dyk?`x|daeBYVAdiWAd>O@0y5QS+(c0NBl zX>0(o@U!@BW|bMn>iqkutO`k8hDW5yPsvmVTv^_Q9q;(Cz7KZHHjZ<@>OK>)Q5@_W zvpe~^S>=P2Id_EXX1sq)W5d@+u69~7&pd_JOYw$0xp^>dE-|(h!Z?ce+?&4l(&fer zY?oAvVwEdg?ojA`x@Jq})zHMDrM3^Rx3?{f6>Q4=T`Byrp1&&Ssp0vMMw3h%P!V^J zB|_MAXybwEMi!o&asv+CyXo{XN$2_FfcmB7(q%d+_pfyw!tCEX!L3ycBjZ(PH%=`% z{pjRo5}P)4219msRepqstf5!gz6EQf66XY+QKVyd*=?(Af#`Q7$;m1Qy)EY$nVs3P zUUwQd*IxADg;}9bH(6|{K1sXoG+uC`pt-T`itAo1~rHTWT`Mpj?Yn>_WJtriw zSjR7aq1i0rc=Sg)EbDsy?d;30*}H$Vtd^H&iFrgOp3?zlQ~C}Cn0oJ29IDp4!`v2B zSr({;VuCW4k1w2io-29d_ymQC_YpQvJ&>N?d@zyI%ms&(Y*c&;ALx_BiI**nELpZ( z{x_T5)FC1�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