From 304cd7484a3f196aaa1544cd21000e525cbdddda Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Fri, 8 Jun 2018 15:19:18 +0300 Subject: [PATCH 01/27] Updated getColor method. --- .../java/com/github/mikephil/charting/data/BaseDataSet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java b/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java index 7800986dcd..2419ba9c75 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java @@ -143,7 +143,7 @@ public int getColor() { @Override public int getColor(int index) { - return mColors.get(index % mColors.size()); + return mColors.get(Math.abs(index) % mColors.size()); } @Override From 65b07647ef238c862c1b05b8fd9d42f7439883da Mon Sep 17 00:00:00 2001 From: Alex Huiculescu Date: Fri, 29 Jun 2018 09:52:34 +0300 Subject: [PATCH 02/27] Bubbles do not resize when user zooms the chart --- .../mikephil/charting/renderer/BubbleChartRenderer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java index 17bba048b9..49c2ea0db3 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java @@ -83,7 +83,7 @@ protected void drawDataSet(Canvas c, IBubbleDataSet dataSet) { // calcualte the full width of 1 step on the x-axis final float maxBubbleWidth = Math.abs(sizeBuffer[2] - sizeBuffer[0]); final float maxBubbleHeight = Math.abs(mViewPortHandler.contentBottom() - mViewPortHandler.contentTop()); - final float referenceSize = Math.min(maxBubbleHeight, maxBubbleWidth); + final float referenceSize = 100;//Math.min(maxBubbleHeight, maxBubbleWidth); for (int j = mXBounds.min; j <= mXBounds.range + mXBounds.min; j++) { @@ -233,7 +233,7 @@ public void drawHighlighted(Canvas c, Highlight[] indices) { final float maxBubbleWidth = Math.abs(sizeBuffer[2] - sizeBuffer[0]); final float maxBubbleHeight = Math.abs( mViewPortHandler.contentBottom() - mViewPortHandler.contentTop()); - final float referenceSize = Math.min(maxBubbleHeight, maxBubbleWidth); + final float referenceSize = 100;//Math.min(maxBubbleHeight, maxBubbleWidth); pointBuffer[0] = entry.getX(); pointBuffer[1] = (entry.getY()) * phaseY; From 65518b08d83cf4ef8e1496bd6fe62ff885433e3a Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Tue, 24 Jul 2018 16:01:16 +0300 Subject: [PATCH 03/27] Updated referenceSize value --- .../mikephil/charting/renderer/BubbleChartRenderer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java index 49c2ea0db3..0f0b2d385e 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java @@ -83,7 +83,7 @@ protected void drawDataSet(Canvas c, IBubbleDataSet dataSet) { // calcualte the full width of 1 step on the x-axis final float maxBubbleWidth = Math.abs(sizeBuffer[2] - sizeBuffer[0]); final float maxBubbleHeight = Math.abs(mViewPortHandler.contentBottom() - mViewPortHandler.contentTop()); - final float referenceSize = 100;//Math.min(maxBubbleHeight, maxBubbleWidth); + final float referenceSize = 3;//Math.min(maxBubbleHeight, maxBubbleWidth); for (int j = mXBounds.min; j <= mXBounds.range + mXBounds.min; j++) { @@ -233,7 +233,7 @@ public void drawHighlighted(Canvas c, Highlight[] indices) { final float maxBubbleWidth = Math.abs(sizeBuffer[2] - sizeBuffer[0]); final float maxBubbleHeight = Math.abs( mViewPortHandler.contentBottom() - mViewPortHandler.contentTop()); - final float referenceSize = 100;//Math.min(maxBubbleHeight, maxBubbleWidth); + final float referenceSize = 3;//Math.min(maxBubbleHeight, maxBubbleWidth); pointBuffer[0] = entry.getX(); pointBuffer[1] = (entry.getY()) * phaseY; From bf535a2b730a1727a3d882d4bdab27a8b9ce2ff0 Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Tue, 24 Jul 2018 16:07:06 +0300 Subject: [PATCH 04/27] Adjusted again the reference size. --- .../mikephil/charting/renderer/BubbleChartRenderer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java index 0f0b2d385e..74df4741f9 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java @@ -83,7 +83,7 @@ protected void drawDataSet(Canvas c, IBubbleDataSet dataSet) { // calcualte the full width of 1 step on the x-axis final float maxBubbleWidth = Math.abs(sizeBuffer[2] - sizeBuffer[0]); final float maxBubbleHeight = Math.abs(mViewPortHandler.contentBottom() - mViewPortHandler.contentTop()); - final float referenceSize = 3;//Math.min(maxBubbleHeight, maxBubbleWidth); + final float referenceSize = 30;//Math.min(maxBubbleHeight, maxBubbleWidth); for (int j = mXBounds.min; j <= mXBounds.range + mXBounds.min; j++) { @@ -233,7 +233,7 @@ public void drawHighlighted(Canvas c, Highlight[] indices) { final float maxBubbleWidth = Math.abs(sizeBuffer[2] - sizeBuffer[0]); final float maxBubbleHeight = Math.abs( mViewPortHandler.contentBottom() - mViewPortHandler.contentTop()); - final float referenceSize = 3;//Math.min(maxBubbleHeight, maxBubbleWidth); + final float referenceSize = 30;//Math.min(maxBubbleHeight, maxBubbleWidth); pointBuffer[0] = entry.getX(); pointBuffer[1] = (entry.getY()) * phaseY; From e5dda85c8610faed45f6816194baac63e2d586fa Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Fri, 27 Jul 2018 13:37:29 +0300 Subject: [PATCH 05/27] Updated getColor method to match the one from iOS. --- .../java/com/github/mikephil/charting/data/BaseDataSet.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java b/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java index 2419ba9c75..250d11c033 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java @@ -143,7 +143,8 @@ public int getColor() { @Override public int getColor(int index) { - return mColors.get(Math.abs(index) % mColors.size()); + int finalIndex = index < 0 ? 0 : index; + return mColors.get(finalIndex % mColors.size()); } @Override From f7e29030138d21ba2729e621ff027278c734ca5e Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Fri, 27 Jul 2018 13:39:59 +0300 Subject: [PATCH 06/27] Adjusted the referenceSize value. --- .../mikephil/charting/renderer/BubbleChartRenderer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java index 74df4741f9..0f0b2d385e 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java @@ -83,7 +83,7 @@ protected void drawDataSet(Canvas c, IBubbleDataSet dataSet) { // calcualte the full width of 1 step on the x-axis final float maxBubbleWidth = Math.abs(sizeBuffer[2] - sizeBuffer[0]); final float maxBubbleHeight = Math.abs(mViewPortHandler.contentBottom() - mViewPortHandler.contentTop()); - final float referenceSize = 30;//Math.min(maxBubbleHeight, maxBubbleWidth); + final float referenceSize = 3;//Math.min(maxBubbleHeight, maxBubbleWidth); for (int j = mXBounds.min; j <= mXBounds.range + mXBounds.min; j++) { @@ -233,7 +233,7 @@ public void drawHighlighted(Canvas c, Highlight[] indices) { final float maxBubbleWidth = Math.abs(sizeBuffer[2] - sizeBuffer[0]); final float maxBubbleHeight = Math.abs( mViewPortHandler.contentBottom() - mViewPortHandler.contentTop()); - final float referenceSize = 30;//Math.min(maxBubbleHeight, maxBubbleWidth); + final float referenceSize = 3;//Math.min(maxBubbleHeight, maxBubbleWidth); pointBuffer[0] = entry.getX(); pointBuffer[1] = (entry.getY()) * phaseY; From a82a32b6bf52e499e778ddea5a292d5ed833f2fb Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Fri, 27 Jul 2018 14:02:20 +0300 Subject: [PATCH 07/27] Inverted the value which used if index is negative --- .../java/com/github/mikephil/charting/data/BaseDataSet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java b/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java index 250d11c033..1c9215632e 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java @@ -143,7 +143,7 @@ public int getColor() { @Override public int getColor(int index) { - int finalIndex = index < 0 ? 0 : index; + int finalIndex = index < 0 ? mColors.size() - 1 : index; return mColors.get(finalIndex % mColors.size()); } From 08a588b310a55a30aba2c5aff7d6deeab29ff620 Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Fri, 27 Jul 2018 15:25:49 +0300 Subject: [PATCH 08/27] Reverted one commit back related to getColor. --- .../java/com/github/mikephil/charting/data/BaseDataSet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java b/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java index 1c9215632e..250d11c033 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/data/BaseDataSet.java @@ -143,7 +143,7 @@ public int getColor() { @Override public int getColor(int index) { - int finalIndex = index < 0 ? mColors.size() - 1 : index; + int finalIndex = index < 0 ? 0 : index; return mColors.get(finalIndex % mColors.size()); } From bc741d3791a1ba97bcd1dbbcbe6f7c9dcdec828e Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Fri, 27 Jul 2018 15:26:53 +0300 Subject: [PATCH 09/27] Using the j index to get a color, just like on iOS --- .../github/mikephil/charting/renderer/BubbleChartRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java index 0f0b2d385e..7e36639a82 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BubbleChartRenderer.java @@ -105,7 +105,7 @@ protected void drawDataSet(Canvas c, IBubbleDataSet dataSet) { if (!mViewPortHandler.isInBoundsRight(pointBuffer[0] - shapeHalf)) break; - final int color = dataSet.getColor((int) entry.getX()); + final int color = dataSet.getColor(j); mRenderPaint.setColor(color); c.drawCircle(pointBuffer[0], pointBuffer[1], shapeHalf, mRenderPaint); From 1ed124a632279287d8d9ac517e968e682b95daf6 Mon Sep 17 00:00:00 2001 From: Alex Huiculescu Date: Mon, 10 Sep 2018 14:51:16 +0300 Subject: [PATCH 10/27] Add fix width to labels to have all the labels aligned --- .../java/com/github/mikephil/charting/components/YAxis.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java b/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java index 2381dbf868..cd627a44d3 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java @@ -336,7 +336,7 @@ public float getRequiredWidthSpace(Paint p) { maxWidth = Utils.convertDpToPixel(maxWidth); width = Math.max(minWidth, Math.min(width, maxWidth > 0.0 ? maxWidth : width)); - + width = (float) Utils.calcTextWidth(p, "-9.999m") + getXOffset() * 2f; return width; } From d557bd89c2ef24d5150107beac51be882acede67 Mon Sep 17 00:00:00 2001 From: Alex Huiculescu Date: Mon, 10 Sep 2018 15:33:44 +0300 Subject: [PATCH 11/27] Fake commit --- .../java/com/github/mikephil/charting/components/YAxis.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java b/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java index cd627a44d3..43e5ee7b90 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java @@ -336,7 +336,7 @@ public float getRequiredWidthSpace(Paint p) { maxWidth = Utils.convertDpToPixel(maxWidth); width = Math.max(minWidth, Math.min(width, maxWidth > 0.0 ? maxWidth : width)); - width = (float) Utils.calcTextWidth(p, "-9.999m") + getXOffset() * 2f; + width = (float) Utils.calcTextWidth(p, "-9.999m") + getXOffset() * 2f; return width; } From b131eafdb92cce8ea9e2d8f580518809b37db780 Mon Sep 17 00:00:00 2001 From: Alex Huiculescu Date: Mon, 10 Sep 2018 15:34:25 +0300 Subject: [PATCH 12/27] Fake commit --- .../java/com/github/mikephil/charting/components/YAxis.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java b/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java index 43e5ee7b90..cd627a44d3 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java @@ -336,7 +336,7 @@ public float getRequiredWidthSpace(Paint p) { maxWidth = Utils.convertDpToPixel(maxWidth); width = Math.max(minWidth, Math.min(width, maxWidth > 0.0 ? maxWidth : width)); - width = (float) Utils.calcTextWidth(p, "-9.999m") + getXOffset() * 2f; + width = (float) Utils.calcTextWidth(p, "-9.999m") + getXOffset() * 2f; return width; } From d9ae0794d9d137e74e4822ac8b58798f82d4834a Mon Sep 17 00:00:00 2001 From: Alex Huiculescu Date: Mon, 10 Sep 2018 16:23:41 +0300 Subject: [PATCH 13/27] Add a property to y axis to set a custom label width --- .../mpchartexample/BarChartActivity.java | 3 +- .../mikephil/charting/components/YAxis.java | 49 ++++++++++++++++++- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivity.java index c0e3405625..abdcdc23ae 100644 --- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivity.java +++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivity.java @@ -32,7 +32,6 @@ import com.github.mikephil.charting.interfaces.datasets.IDataSet; import com.github.mikephil.charting.listener.OnChartValueSelectedListener; import com.github.mikephil.charting.model.GradientColor; -import com.github.mikephil.charting.utils.ColorTemplate; import com.github.mikephil.charting.utils.MPPointF; import com.xxmassdeveloper.mpchartexample.custom.DayAxisValueFormatter; import com.xxmassdeveloper.mpchartexample.custom.MyAxisValueFormatter; @@ -99,6 +98,8 @@ protected void onCreate(Bundle savedInstanceState) { leftAxis.setPosition(YAxisLabelPosition.OUTSIDE_CHART); leftAxis.setSpaceTop(15f); leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true) + leftAxis.setLabelWidthStyle(YAxis.LabelWidthStyle.FIXED_INPUT); + leftAxis.setLabelWidth(222); YAxis rightAxis = mChart.getAxisRight(); rightAxis.setDrawGridLines(false); diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java b/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java index cd627a44d3..8ec3a6f936 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/components/YAxis.java @@ -73,6 +73,30 @@ public class YAxis extends AxisBase { */ private YAxisLabelPosition mPosition = YAxisLabelPosition.OUTSIDE_CHART; + /** + * label's width property when static + * used to align multiple charts + */ + private float labelWidth; + + private LabelWidthStyle labelWidthStyle = LabelWidthStyle.DEFAULT; + + public void setLabelWidth(float maxLabelWidth) { + this.labelWidth = maxLabelWidth; + } + + public float getLabelWidth() { + return this.labelWidth; + } + + public void setLabelWidthStyle(LabelWidthStyle labelWidthStyle) { + this.labelWidthStyle = labelWidthStyle; + } + + public LabelWidthStyle getLabelWidthStyle() { + return this.labelWidthStyle; + } + /** * enum for the position of the y-labels relative to the chart */ @@ -80,6 +104,12 @@ public enum YAxisLabelPosition { OUTSIDE_CHART, INSIDE_CHART } + public enum LabelWidthStyle { + DEFAULT, //The default computed size + FIXED_DEFAULT, //The size is fix, and it's equal to the size of "-9.999m" + FIXED_INPUT // The label has a fixed size and is given as a property + } + /** * the side this axis object represents */ @@ -336,8 +366,23 @@ public float getRequiredWidthSpace(Paint p) { maxWidth = Utils.convertDpToPixel(maxWidth); width = Math.max(minWidth, Math.min(width, maxWidth > 0.0 ? maxWidth : width)); - width = (float) Utils.calcTextWidth(p, "-9.999m") + getXOffset() * 2f; - return width; + + switch (this.labelWidthStyle) { + + case DEFAULT: { + //use the default computing + break; + } + case FIXED_DEFAULT: { + width = (float) Utils.calcTextWidth(p, "-9.999m") + getXOffset() * 2f; + break; + } + case FIXED_INPUT: { + width = this.labelWidth; + break; + } + } + return Math.max(minWidth, Math.min(width, maxWidth > 0.0 ? maxWidth : width)); } /** From 27f86ba45a53c02ebd712cd0e25354da4e5a58c0 Mon Sep 17 00:00:00 2001 From: Alex Huiculescu Date: Thu, 13 Sep 2018 12:07:30 +0300 Subject: [PATCH 14/27] Change value formatter as to corectly format : - values with absolute below 1 - values with both '.' separator and '-' sign (they are reduced to maximum 5 chars) --- .../formatter/LargeValueFormatter.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/LargeValueFormatter.java b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/LargeValueFormatter.java index 211401ad8a..8b741e0b89 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/LargeValueFormatter.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/LargeValueFormatter.java @@ -25,10 +25,12 @@ public class LargeValueFormatter implements IValueFormatter, IAxisValueFormatter }; private int mMaxLength = 5; private DecimalFormat mFormat; + private DecimalFormat mFormat2; private String mText = ""; public LargeValueFormatter() { mFormat = new DecimalFormat("###E00"); + mFormat2 = new DecimalFormat("0.##"); } /** @@ -77,24 +79,25 @@ public void setMaxLength(int maxLength) { } /** - * Formats each number properly. Special thanks to Roman Gromov - * (https://github.com/romangromov) for this piece of code. + * Formats each number properly. */ private String makePretty(double number) { - String r = mFormat.format(number); - - int numericValue1 = Character.getNumericValue(r.charAt(r.length() - 1)); - int numericValue2 = Character.getNumericValue(r.charAt(r.length() - 2)); - int combined = Integer.valueOf(numericValue2 + "" + numericValue1); - - r = r.replaceAll("E[0-9][0-9]", mSuffix[combined / 3]); - - while (r.length() > mMaxLength || r.matches("[0-9]+\\.[a-z]")) { - r = r.substring(0, r.length() - 2) + r.substring(r.length() - 1); + if (Math.abs(number) < 1) { + return mFormat2.format(number); } - return r; + String formatted = mFormat.format(number); + int ePos = formatted.indexOf("E"); + int exp = Integer.valueOf(formatted.substring(ePos + 1)); + String part = + formatted.substring(0, formatted.contains("-") && formatted.contains(".") + ? + (formatted.indexOf('.')== ePos-2 ? ePos - 2 : ePos - 1) + : ePos + ); + String suffix = mSuffix[exp / 3]; + return part + suffix; } public int getDecimalDigits() { From f3ad2fe7951e2448030c736126f18126c31d1992 Mon Sep 17 00:00:00 2001 From: Alex Huiculescu Date: Tue, 18 Sep 2018 15:35:35 +0300 Subject: [PATCH 15/27] Add a negative value formatter for Y axis --- .../formatter/NegativeValueFormatter.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 MPChartLib/src/main/java/com/github/mikephil/charting/formatter/NegativeValueFormatter.java diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/NegativeValueFormatter.java b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/NegativeValueFormatter.java new file mode 100644 index 0000000000..bc66e143d9 --- /dev/null +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/NegativeValueFormatter.java @@ -0,0 +1,20 @@ +package com.github.mikephil.charting.formatter; + +import com.github.mikephil.charting.components.AxisBase; +import com.github.mikephil.charting.data.Entry; +import com.github.mikephil.charting.utils.ViewPortHandler; + +/** + * Created by alexh for Cobalt Sign SRL on 18-Sep-18. + */ +public class NegativeValueFormatter implements IValueFormatter,IAxisValueFormatter { + @Override + public String getFormattedValue(float value, AxisBase axis) { + return -value + ""; + } + + @Override + public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) { + return - value + ""; + } +} From f7c3f5c623698d5b0b9ae45292de229eddfe4ba6 Mon Sep 17 00:00:00 2001 From: Alex Huiculescu Date: Fri, 28 Sep 2018 14:18:32 +0300 Subject: [PATCH 16/27] Update formatter --- .../formatter/LargeValueFormatter.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/LargeValueFormatter.java b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/LargeValueFormatter.java index 8b741e0b89..61faa03988 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/LargeValueFormatter.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/LargeValueFormatter.java @@ -6,6 +6,8 @@ import com.github.mikephil.charting.utils.ViewPortHandler; import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.Locale; /** * Predefined value-formatter that formats large numbers in a pretty way. @@ -29,7 +31,8 @@ public class LargeValueFormatter implements IValueFormatter, IAxisValueFormatter private String mText = ""; public LargeValueFormatter() { - mFormat = new DecimalFormat("###E00"); + mFormat = (DecimalFormat) NumberFormat.getNumberInstance(Locale.US); + mFormat.applyPattern("#.#E00"); mFormat2 = new DecimalFormat("0.##"); } @@ -91,13 +94,18 @@ private String makePretty(double number) { int ePos = formatted.indexOf("E"); int exp = Integer.valueOf(formatted.substring(ePos + 1)); String part = - formatted.substring(0, formatted.contains("-") && formatted.contains(".") - ? - (formatted.indexOf('.')== ePos-2 ? ePos - 2 : ePos - 1) - : ePos + formatted.substring(0, ePos ); - String suffix = mSuffix[exp / 3]; - return part + suffix; + double d = Double.parseDouble(part); + String suffix = exp / 3 < 5 ? mSuffix[exp / 3] : ""; + while (exp%3!=0) { + d*=10; + exp--; + } + String s = d+""; + if(s.endsWith(".0")) s = s.substring(0,s.length()-2); + + return s + suffix; } public int getDecimalDigits() { From cf0b58d25f65ab17d2d90db1a0faf3281cf54a4c Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Fri, 26 Oct 2018 10:53:02 +0300 Subject: [PATCH 17/27] Updated the default axis value formatter (try out #1) --- .../formatter/DefaultAxisValueFormatter.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java index 552c150e69..0050a86e15 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java @@ -28,15 +28,9 @@ public class DefaultAxisValueFormatter implements IAxisValueFormatter */ public DefaultAxisValueFormatter(int digits) { this.digits = digits; - - StringBuffer b = new StringBuffer(); - for (int i = 0; i < digits; i++) { - if (i == 0) - b.append("."); - b.append("0"); - } - - mFormat = new DecimalFormat("###,###,###,##0" + b.toString()); + NumberFormat nf = NumberFormat.getNumberInstance(new Locale("en", "ch")); + mFormat = (DecimalFormat)nf; + mFormat.setMinimumFractionDigits(digits); } @Override From e625fc31aaf3bd965ea6fd9e7ee329beb949269e Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Fri, 26 Oct 2018 11:34:51 +0300 Subject: [PATCH 18/27] Added some missing imports --- .../mikephil/charting/formatter/DefaultAxisValueFormatter.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java index 0050a86e15..17f8e689fe 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java @@ -3,6 +3,8 @@ import com.github.mikephil.charting.components.AxisBase; import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.Locale; /** * Created by philipp on 02/06/16. From db7777265f110ba222c64b974b882318e1296a54 Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Fri, 26 Oct 2018 11:43:28 +0300 Subject: [PATCH 19/27] Changed repos order --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 65ca5186cf..4c812f2ef6 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ buildscript { repositories { - jcenter() google() + jcenter() } dependencies { classpath "io.realm:realm-gradle-plugin:4.2.0" @@ -12,7 +12,7 @@ buildscript { allprojects { repositories { - jcenter() google() + jcenter() } } From 12b89011bc2e5a1c894c37237ab6756a4174732e Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Fri, 26 Oct 2018 11:52:04 +0300 Subject: [PATCH 20/27] Updated to gradle wrapper 4.6 and build:gradle 3.2.1 --- MPChartExample/AndroidManifest.xml | 8 ++------ MPChartExample/build.gradle | 4 ++-- MPChartLib/build.gradle | 2 +- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 5 files changed, 8 insertions(+), 12 deletions(-) diff --git a/MPChartExample/AndroidManifest.xml b/MPChartExample/AndroidManifest.xml index 3fa15cd69c..f75ad8e1e3 100644 --- a/MPChartExample/AndroidManifest.xml +++ b/MPChartExample/AndroidManifest.xml @@ -1,12 +1,8 @@ + package="com.xxmassdeveloper.mpchartexample"> + - Date: Fri, 26 Oct 2018 11:59:38 +0300 Subject: [PATCH 21/27] Revert "Updated the default axis value formatter (try out #1)" This reverts commit cf0b58d25f65ab17d2d90db1a0faf3281cf54a4c. --- .../formatter/DefaultAxisValueFormatter.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java index 17f8e689fe..994fce3abe 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java @@ -30,9 +30,15 @@ public class DefaultAxisValueFormatter implements IAxisValueFormatter */ public DefaultAxisValueFormatter(int digits) { this.digits = digits; - NumberFormat nf = NumberFormat.getNumberInstance(new Locale("en", "ch")); - mFormat = (DecimalFormat)nf; - mFormat.setMinimumFractionDigits(digits); + + StringBuffer b = new StringBuffer(); + for (int i = 0; i < digits; i++) { + if (i == 0) + b.append("."); + b.append("0"); + } + + mFormat = new DecimalFormat("###,###,###,##0" + b.toString()); } @Override From 1fd0555d39c750dbaeb07eb6666595626f7eeb3b Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Fri, 26 Oct 2018 12:05:41 +0300 Subject: [PATCH 22/27] Edited the current formatting pattern. --- .../formatter/DefaultAxisValueFormatter.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java index 994fce3abe..d45f61c13f 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java @@ -3,6 +3,7 @@ import com.github.mikephil.charting.components.AxisBase; import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; import java.text.NumberFormat; import java.util.Locale; @@ -37,8 +38,18 @@ public DefaultAxisValueFormatter(int digits) { b.append("."); b.append("0"); } + char groupingSeparator = this.getGroupingCharacter(); + StringBuilder pattern = new StringBuilder(); + for(int i = 0; i < 3; i++) { + pattern.append("###"); + pattern.append(groupingSeparator); + } + mFormat = new DecimalFormat(pattern + "##0" + b.toString()); + } - mFormat = new DecimalFormat("###,###,###,##0" + b.toString()); + private char getGroupingCharacter() { + DecimalFormatSymbols formatConfig = DecimalFormatSymbols.getInstance(new Locale("de", "ch")); + return formatConfig.getGroupingSeparator(); } @Override From 85f74ba578f8e1f4c751d6ea7e5969afce51ea8c Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Fri, 26 Oct 2018 12:48:13 +0300 Subject: [PATCH 23/27] Updated decimal format symbols. --- .../formatter/DefaultAxisValueFormatter.java | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java index d45f61c13f..0c17c474a5 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/DefaultAxisValueFormatter.java @@ -38,18 +38,8 @@ public DefaultAxisValueFormatter(int digits) { b.append("."); b.append("0"); } - char groupingSeparator = this.getGroupingCharacter(); - StringBuilder pattern = new StringBuilder(); - for(int i = 0; i < 3; i++) { - pattern.append("###"); - pattern.append(groupingSeparator); - } - mFormat = new DecimalFormat(pattern + "##0" + b.toString()); - } - - private char getGroupingCharacter() { - DecimalFormatSymbols formatConfig = DecimalFormatSymbols.getInstance(new Locale("de", "ch")); - return formatConfig.getGroupingSeparator(); + mFormat = new DecimalFormat("###,###,###,##0" + b.toString()); + mFormat.setDecimalFormatSymbols(new DecimalFormatSymbols(new Locale("de", "ch"))); } @Override From 23f772d219942b1a2e3f9fc3158d5db4a6cae414 Mon Sep 17 00:00:00 2001 From: Cristian Gutu Date: Mon, 29 Oct 2018 10:48:43 +0200 Subject: [PATCH 24/27] Updated NegativeValueFormatter to use format as the default one and invert just the value. --- .../charting/formatter/NegativeValueFormatter.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/NegativeValueFormatter.java b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/NegativeValueFormatter.java index bc66e143d9..fe26a90f39 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/NegativeValueFormatter.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/NegativeValueFormatter.java @@ -7,10 +7,20 @@ /** * Created by alexh for Cobalt Sign SRL on 18-Sep-18. */ -public class NegativeValueFormatter implements IValueFormatter,IAxisValueFormatter { +public class NegativeValueFormatter extends DefaultAxisValueFormatter implements IValueFormatter { + /** + * Constructor that specifies to how many digits the value should be + * formatted. + * + * @param digits + */ + public NegativeValueFormatter(int digits) { + super(digits); + } + @Override public String getFormattedValue(float value, AxisBase axis) { - return -value + ""; + return super.getFormattedValue(value * -1, axis); } @Override From 2e66efd4913514f4c5bbd93032e1c6d187cd71e7 Mon Sep 17 00:00:00 2001 From: cs-roxanacoste Date: Fri, 30 Sep 2022 15:57:00 +0300 Subject: [PATCH 25/27] Added ValueFormatter.java --- .../charting/formatter/ValueFormatter.java | 137 ++++++++++++++++++ README.md | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 54413 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 74 ++++++---- gradlew.bat | 16 +- 6 files changed, 187 insertions(+), 45 deletions(-) create mode 100644 MPChartLib/src/main/java/com/github/mikephil/charting/formatter/ValueFormatter.java diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/ValueFormatter.java b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/ValueFormatter.java new file mode 100644 index 0000000000..d2f53cb78b --- /dev/null +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/formatter/ValueFormatter.java @@ -0,0 +1,137 @@ +package com.github.mikephil.charting.formatter; + +import com.github.mikephil.charting.components.AxisBase; +import com.github.mikephil.charting.data.BarEntry; +import com.github.mikephil.charting.data.BubbleEntry; +import com.github.mikephil.charting.data.CandleEntry; +import com.github.mikephil.charting.data.Entry; +import com.github.mikephil.charting.data.PieEntry; +import com.github.mikephil.charting.data.RadarEntry; +import com.github.mikephil.charting.utils.ViewPortHandler; + +/** + * Class to format all values before they are drawn as labels. + */ +public abstract class ValueFormatter implements IAxisValueFormatter, IValueFormatter{ + + /** + * DO NOT USE, only for backwards compatibility and will be removed in future versions. + * + * @param value the value to be formatted + * @param axis the axis the value belongs to + * @return formatted string label + */ + @Override + @Deprecated + public String getFormattedValue(float value, AxisBase axis) { + return getFormattedValue(value); + } + + /** + * DO NOT USE, only for backwards compatibility and will be removed in future versions. + * @param value the value to be formatted + * @param entry the entry the value belongs to - in e.g. BarChart, this is of class BarEntry + * @param dataSetIndex the index of the DataSet the entry in focus belongs to + * @param viewPortHandler provides information about the current chart state (scale, translation, ...) + * @return formatted string label + */ + @Override + @Deprecated + public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) { + return getFormattedValue(value); + } + + /** + * Called when drawing any label, used to change numbers into formatted strings. + * + * @param value float to be formatted + * @return formatted string label + */ + public String getFormattedValue(float value) { + return String.valueOf(value); + } + + /** + * Used to draw axis labels, calls {@link #getFormattedValue(float)} by default. + * + * @param value float to be formatted + * @param axis axis being labeled + * @return formatted string label + */ + public String getAxisLabel(float value, AxisBase axis) { + return getFormattedValue(value); + } + + /** + * Used to draw bar labels, calls {@link #getFormattedValue(float)} by default. + * + * @param barEntry bar being labeled + * @return formatted string label + */ + public String getBarLabel(BarEntry barEntry) { + return getFormattedValue(barEntry.getY()); + } + + /** + * Used to draw stacked bar labels, calls {@link #getFormattedValue(float)} by default. + * + * @param value current value to be formatted + * @param stackedEntry stacked entry being labeled, contains all Y values + * @return formatted string label + */ + public String getBarStackedLabel(float value, BarEntry stackedEntry) { + return getFormattedValue(value); + } + + /** + * Used to draw line and scatter labels, calls {@link #getFormattedValue(float)} by default. + * + * @param entry point being labeled, contains X value + * @return formatted string label + */ + public String getPointLabel(Entry entry) { + return getFormattedValue(entry.getY()); + } + + /** + * Used to draw pie value labels, calls {@link #getFormattedValue(float)} by default. + * + * @param value float to be formatted, may have been converted to percentage + * @param pieEntry slice being labeled, contains original, non-percentage Y value + * @return formatted string label + */ + public String getPieLabel(float value, PieEntry pieEntry) { + return getFormattedValue(value); + } + + /** + * Used to draw radar value labels, calls {@link #getFormattedValue(float)} by default. + * + * @param radarEntry entry being labeled + * @return formatted string label + */ + public String getRadarLabel(RadarEntry radarEntry) { + return getFormattedValue(radarEntry.getY()); + } + + /** + * Used to draw bubble size labels, calls {@link #getFormattedValue(float)} by default. + * + * @param bubbleEntry bubble being labeled, also contains X and Y values + * @return formatted string label + */ + public String getBubbleLabel(BubbleEntry bubbleEntry) { + return getFormattedValue(bubbleEntry.getSize()); + } + + /** + * Used to draw high labels, calls {@link #getFormattedValue(float)} by default. + * + * @param candleEntry candlestick being labeled + * @return formatted string label + */ + public String getCandleLabel(CandleEntry candleEntry) { + return getFormattedValue(candleEntry.getHigh()); + } + +} diff --git a/README.md b/README.md index 986e4f8102..94e54f69ae 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ dependencies { com.github.PhilJay MPAndroidChart - v3.0.3 + v3.1.0 ``` diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 941144813d241db74e1bf25b6804c679fbe7f0a3..1948b9074f1016d15d505d185bc3f73deb82d8c8 100644 GIT binary patch delta 41666 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 qj949v4UNt19NFv~Z0(F49L delta 40989 zcmZ5{V~{Q|ll9oPZQHhO+qR#vZQHhW$F_|-wrB3(es}l#vHNbSl1eI_{?*kv>2nfS z1sYlcil8J53I+oN1O)};BIGQYgg}V!Kda$83G5_Z4PKlJ?MIgf7hs_OF}C<;4D_#o z{MYcWf&J@_E|!d-|Hme2h8X7mJN&N`NpIBuYn5UKv4#0Ro1=SSYiR%cIsNk`mf{RS z2vGHQbu+hDa&dGrcX6{ecl|f>@)mY?vod#Zvo`z@Um4 zUp%TZs!Q8i^HDpAc3d>VfsTuUW|ps(mlL!%2DPmBG;>UPYsA{d<;-l(z+L9oQ54H#S z!cAft98~FtcdGK4Nv#Z(8);Sh26-*>b7MTx3%*jDtPexHA$C1K2cXGSwqr8a5eQontp-+za5BDdHJhM4g^4@`dL+FyNV%Ed3TMe zW~9xS5QpmRA~o{~6i-2Dtf?_rv`TSY&6w%h(=Jna{!HAF5X18|Dh11W-a~dC*qDtA zZ4Qa@E#VX3dJQ#x0*1{ezBRZ3z_oL^K%yQ(&)y3z5&l?9fAYh3|G?=g_|u6?Gg_%f z10t~U<)yzQZ9G^cNYu1!UA5DaQzAoE`KpRz$g&)anIj#Sg+c#7^;3;^JBxFSq>;hbE=p()~3HZ10{3fYqGb`dy|xf}Yu_ zfU&v4_@CjLLQ8+}zoM@toiGms?SH}#??``p6dVZX4@}Af7B4{73Dq3$uYER!b+enxK3Cy^5RX%c+KXC1kV{9FP9!~% z4DjBL#gGKtqNf4U&X>@In%CCC+~n!~L<%MQ2|++}V9KPC>|D4btX>>as`KE^2=kvs zU`$kKtiWbr**IeK;WSCZPDnU&nkHb~ge3u30huUkrSX(J^X_D-H)lSI?rvnChG+q(R&qI*_|1Y2EJM)X*X72194%8pLHltgNX3r+VxT?Ht`u5XiD8Wu97+CH*d5@PzPlv zPIu^pbDS7c>-01KMt#}A6X@X^+w$zXWd0Fe6P*QYvEjWX!0+}X&FXIQ-4 z`>&3=FAb^>Z7G|ZD9N8&2=i;NsOc6Ez5A}=h3m?;=Ol2+1(^)o^9jmeGY%# z4R1egsc}sF&YFpfSZ?B7NARMd@Eo0=Nz$v$!dLCg^cL+*;^4A0%<8*HZ*#@%SXsp0 zoU8k8L;}VWJk5I}-oD?3#v&#@ACh7dk}LuF8Ps8+<)7Kk2*XGD$x0aL>@uh8Pp ziq&Z(ZfHU{;bvJYv8`b0vc|SLIj{3Xs0;uE<(E8? ze{ScEX&MlHyOhf89&tGI`guvO*=7qp3c-k4lk&qRsqJ9GyeW!jTa4Owc3kn@QI61! zi+3)u$SB4s4tHIV>fcES^b9DxSPi%p8y_iHKe)@CW3sx#_VfG+1BUR=emYt*xU&W# zed>EM->6(S2IV+anxP>xA3^|pW$&DIgr6Udm&kBQJi+6MlC1k9A)TQbaz{w~ZHt;9 zh9&s>g`oRKQ~`s_&+Ac!R)-kg9h09Sy@HdUF}=LMzeV#aT@XQ9{X+6zTY@2(MGX^@ z$7JR-@+&}}>9{K_ro1BGIS450Vp#@=<1xm15eHC~iBpf6(tdM)P*UmrC8IV_xs1|y z-bHSwAAl;u;Gf<-Zaw#`wCRn9B-0D$bPqFQ1h1()ZMUJ11ErL{A@57bW!rAshb~QL zS>4&juG}t_#HL{;y6EJ4CH&8upe0g!3FLnv4`qLR>yv+|1N+}?!1ND!V5Cf|5dyAU zQPt7@+UJ-JdrX%o$;gC3fmr{E3`Dnsp;?eALnKq83+|S8ObIjNwBu++M=yAn_#T3b zAJ!D$4jIN8oSX3cOZDQ(Su`87W#Mz%cji9-k>@&pz5n;?12gdZU3-`zw$e*f6jg#P zcce0!ll`6iDHQ_U^pT0d6P1QSJr|(ykRGlP3+60Q4=p_>xH|#bS(nA z_iGeGZ>T4^my(f}vh2>5iHTHNWtc8hE#Foc#u~jmdKv~qwA{Q~5}i%5y8`V!e!E5F zS2*)B3ToJOtkWD0E4Itl*mY@A77Lzg{)<clL{nB;fX1-#k zW?5TUR@*cYYL0A!yx@W!XkUla07T6?iOt~HhGXv1O%^TtR2|H4nvdaL_-Cugr}2_o z^1?}fNKQLk*Xi8U>&2vgvm(6_RzW58;L=Az_C;0|zeo6-vu?+AX#!B;oe@pT!(y~- zXC0am9B&A6zd5c$Rh}(=hzd1W+otRc9hRP9m`2j89noE;T;h zS#*SoUl6SA7e4QfHweI_>0fbHb?F~kr|DmOpzmLP;15u8mK{%cmlk%rLCgwTc^v@h zLy<+mY}vWMW5CqP-KtLnm857e+K#S#WS4~pu$Z2ev0}%I@Agaix45l0O-YU0K2I~c zvws)bW@y=EN%fJi7sHcO9^}gNzV`ab8GPZ-dxiK_O7rGC-2=4A%fb^l2f5Rc>O)&q z;^<&>Yp`4#(k+n){nLC#?QCk!So&L&3Xovk4qJN5aNQ8+ZZ{>UF;Wu+JJeqx zi6gdI)$#=*3P1j6i7Y>hvL%Se+<$`r=D*3`C!t~)h4aeK4#XS{k+0qxc0&ZtQ*sjT zCiz1t(+d?Di_*5PwmHz6k{CG97uVj9atd1Qy+dE4_5dX90um9y!iE!XSlehjzo5Hd zlTPknKVr`5Og@c>(5Q;95MDz;`bqL})kJNOd2fsRC`(^u>hje5Vx3s$_CMd0=l$7G zll;#uLB72fbw#;CgekmCtJmgZlOe5}#Mb90}5 z>ycEiUjQB`1lt{)cXr2wcSdD96=xy2u7h|WKa5utrUmveBr$JHc6KEw>EE7~uPFEl z3e5xiA*}cZQA(X*7?)!dgB27ToZyc*_XsSLMBdRwxrUDPj^5Ukdu0F(X|P&LK6yQ+ z21yC7ofg~GIoEx-@*@XEN%G;BA29X*=+1LJ`u`*xyxBeqKhT=6Yl)3wN&XIh`R zEiG+#Uf#k^S%5^FoP16^La9eLhT|t}cMmJ!Qp5_7t9 z^0H=bP?}3!#{ditNnWZsW13nX;LbSsMq$0zp11jNG@qg>N(8yhGOxu9Ic9$l5MCys z(J`HrN4@z7MibQFj>l>8huP6xy>v!Zv5v*}9JEIj@1vu^=^ka)i?OJ%M|&M=-mA{P z-~=rtnrQ-vYhd5Yq79>-ZF`FkW_m0;H{RvZ2Gp5@DgfHuDGIM-vg>-{%>7QHhHfSA zdC~jFh`sM6q6rcYlIVb;0`=Nsb#%ZlL-bZJ$@B{bUL!P@@)}IA7u#Yd;0D;E=HL+b z%)-LDZeDE`eN*lISIf^rb(+(Z@)L>-shv{e`qZ6L#XNx~ePao#o#B18o$>JK0a=OL zn4Z%u2td^le6O?%SY85V%ZSB#2In;uLFIb{+BwLNv;z$59JzE~=^>fyDQvlWj8U>< zh6#AZ-l05sx0)wCJK|bvCvbujeN{JFgL?kG6+W`2g@N!LZ}$Q4K&gJ$nwk@Fk4?8D zzG%x2xXJJ%GXyN5C}6k0w`F|&sj+XnW?Qu-1dyCVMY>L(6RLV2#FJ!zUv=X2E%31L z*V-cBc+xxJl*E*;&sW0pCY)~*fp8vq34cPUPA)U2& z1z>E?BDmqYb~*d_aykHo(k=$gY25>uCFb~Rk7vrUN22xU+Y7FiMiYL*$=_kSJ44Vz zV~Y842NHf7ngDYYgovOj7n(zqg49<;cN%|8^J%=(1uwQ#w`ZDSpQE{d!X3^2lE|H1KBR#ADbV>ycjhZZWX+?NI_q0E;R zU2HCl11T?Mzy$qzQ^>DAn4*4#<(1;q*$Up7$`k-Tdp4BQ4e4=C;c@PxqWGd@1`2t$ zRCl;01x|mZd)P`m#5}6h-9%`OXPgeX7@}^WDbjNtvIld+!Qh;r_e*x72?L(b9e}E+ zV)I)&MRChiZkFgpGBcRz=6aN>42u0@2Yj;g7eFL8p)9JgDOMC6k3bd=dLXF8H7={F zOX+TfzqNin^_ET6V@x#dRnf7C=ag89Px_u+i8aU>Q9Y#BGHAbtkCO5e#s2MnfhuK9 zU~O4fVjLoVHZ1alADt{mG1b}6AK(V6?;3?#yEqA%e{xLcaTZ_u;)*AP%FLF+lSk)) zIZgjQ$I=hA#T-SQZ)IXp&MZo&pKAFKiz&a4@khXKLv)|W5FB{Pb_Juj%?t%G!}(I= zQ$LjTDr@YOMP;>@tk){vBu>K0JGG18?ThleMVCOwY4i!HY)qZ+YB8sP7!bsmvt?2d z_i;{egM6CXy&)XIf5neqbT%!e$xmQmW~62;QOZ(oF_uE~W23&+-rH_WFuyE`6;bG| zr|j)NGN2Z=&lU7H!&`xcB~=%4s^MhNf)ANW3FBaggAp6E~0&@0o}$%{-H1 zuSsv`lEvzDVq{kPm2?+1Y7|es5Wf;+h2>?+S*n%Y#py|`ug5p_qIQ2-T)RJ zoH=GlM~nmC7N@?sXMc0={0t4gKbIw=tcU?fg#vRKW0Y|uaR9^YU=TK7>#@lSoI)0Y zhI=r?hn#tEszFq9yJWT$P`wG&(kz?c2kuc23*iqo@ zdD&7xRYAt2E1)aVH$65FztE)qOQPj`EU)W?&Kk0k8FN+Ne$c!)=~YP zBy8JksU4{9>;~B8Fa~`OxlrS9dnn`mL*=7WE}JIo1pw6M+%r@JWPj!%81ZfQ-X;3` zhVFoYL%e4CyH_-LnkRGKOmZb88zbu2lGI?R)L2er^43-`=G zdx0|A0Q;ck-R7fLXHS4$piAe_HZvGL&i0an)3Lj?sLFkLtb8?xlfBNd%T08*yiG1_ zHsh-28IT=Ga8+yFhGJ3c3cmdQ$BWMTg4s5PKw9|GHp?%`%d#TLD0>l4(QVC*;@N4W z@a9D$==hK7(MH@8+=v^d2$q%YcR(P8)25LJjRXl=lz~1XBRR60$pm2vHdf7bCO#%<k5c1|E#M_T zAPa7LpgNEB6u3NItRxUkt-6$_?t7x^uMT@1>b<@^H0&tLomoA6K zlrbqwmtWt2J|0aIUIv>$gD&JZ@3P+yi%tacHkCt>*6m>J9 z+S|=Y3CXOM)pt$lQA1cW0?;SKQ7DShVJ_Im%;`270jsuLA*65Kj^#!_`d~`6C}oR_ z)?&cWzRj`>Pq}|iuW@0E#Dp$PHK9(`1+lbZ6y&Z+yUK>Ip%kgJW9V#$V=$(TV&)GW zHJz^Z?v0A-r9)?+n|gRUw3Gi)__>LJ8C_B>D+r$JLysis!3aa~zZ|eE!r9^{Dp;IjVh7?3LV~ z{XVuxb3D{l|KZz@zWErDnFXztKKB`)Qu?{onxexDCy9 z0!Q`{KHOIC4;d(a1ZaLJq`f`pPcYn?hYWeve6jy@Prcm-q}`o3O1TzHy~Us)R(=tE z!{Po~IEt&vG?$388?xxW_S2=L@6cE{%^*9oJ?u#g^6}GvskXttO&rBZ-z|FwZ zsADhZG@OmL#h3b>y%^)qvs6JpGj~-Zk;Oa$@c%qH*Z9cs0|>#rCQj`iearDGP>E%G zqR<`bJf}z(J`R7`r`-}~o)ZBiPb7`dZ<}f9SGz7dCKrl^g%6iyO~{)#23On_ z)b5tMpY_An9I%*Ymr8b7%W?M$5ySt2Jn)(??jclvARW!gFtHM@26l>(@NcCal~&;y7%CP9(wO5~}{g7?Kt~$^5JNgalPTpajbvmmfKx00oOV!M}xiuw@~O2G6kV7AUKo z!+$ZT2AoB77dx*I=by-CRDaRkA=5~z3yjTEf9a(m$n8)vyFToF{C zwZ?lDYowg}8XRJ({RjxAMr|pF;i)c|*LaMn1tb}wR2ih7rWs>QVffGtO!+FQMhcRp z8%)dL0t_0fzCg1$K96lV${+uD(V(=8@_VCzH|aV?V)>{zl}~nQnV=|0j%49;K=?jq zk}qZs;r%k?G2!4OMy7f&bB8<0n-cuJj{cK0C3sp;`K1~FYRa!bUip{RtD2aWk z^Hcdu{8!|#L;a_$@L2OpVQi^niY*NQPx#~r2H<6tk-jk#w-%D5MBj+M1QF6A!>KgJS*3$m%7jV^xm8f z1MC)bK4LqxscOvikv&~p9LwchZH`EAybdYBU<+ETu849)Ef}xk&7H!4Tl&rDL(I)6 z?XNLn1pmP5&z+i6cEM#GCHE)B-$TJtbTly721``kHabXugdjkc_dDr;Ia+7wCCd@y zXI=XaJ8SseEci<+Tc^F9gl0iYP0TJV@GQ`Zvm3;Il|_?qe+mcKRlNXJ7D z(FIajQsNdJU?s&2Bl6O3TxX~*wCpG z4=X6F&KYk-{dB*Y@g+CIMO7T;m=V%|zAuK*lf1zgftF(P%qciugmZVF(2{7%0wfx& zeK#Js`ma|si8NV3tUgam>{jxoxmY(7sW*s%3BpyU4L;3WW$q_;n!psjT+&EA^^D9TOcdbI&&+BL zHDi}|=iiD~Q;Uk8<&&QOkmKdt0ImwtOhryBWyvQqHhFO;32>LnXqK}o%#zWubGd=Z zs&pBuI65r;o+Yt14$T42J`j*8py7z}xtw)ADk%wL^p>!^==-?n^BJ>A#8R=a0k}X0{1HWa$yEP$f)5Ru%xikm-)jtRK@P@Xv-h@rrvB;kMmY z%uT+bjGysR__c$3LDA}a?~YI9^^mJ6AOwCAf@VdF$C+h7K=i^C$JoFnC*yr${FtVR zUk)8%hfpBui}SHCH!2fX4p_oYG$xoWN9oOz<}@wcDU$A3s1tk5nHYJ^kxH{1h|(i? z4#@8hBuF}i0+;&bsxB@luNPsVBKwiT2F#dZ+b8TOh`x3@Z7NfT_wK*|8Dyf)9d|dZK2LIP+-CEgyDV1{gW|e)L#K5Gsolf6*3i& ztq)6o)(W4fQR9{V0f_k$-e3H*`envL@QnU}Y3LfN&_EA`@w}{e*T=?CDW|ibXlVye zv&8Or)gf{nV@1*ijI(_(bi)?GQ2x;h8r~f`M}mI}wfKQn z9%r^-z9LNFzJzY|x!_4JZinh2^lQ5Dj{#OyAVXoo~(8<2mC+TvU7P7K@O_#jV&1c zvUf_Og}KIpl;8Xe&l~mYY|~M3+c~*rg$VCA)e9;g`PwCfHFu+5I@sIhrxi0n8@;+@ zhByE8V+<1fTat!)>Okch=JU&Pw124vgumkA6yH`iFQHUGhsy+Ki+ym1aNYJ{4sT^@ ze{kau4FIe^WG+lA3y2YX>#ifjjYfU2Te2yD$0=Y&Vi)fHnY;HS#z`CeYAN73B-@LT z@ru9VO#0bxo#W>1-Z$UCX^DCOlmYzwFH$6rC80MWyo$4~_+d3Lk0*Wy+>*C_zhzbZ ztZFAtJ#B5o@xeg&8nBJq<2KH3&d%Gfo^v=dE`WLB+K`rf80PbG#mJ)9v#P6L9j}lr zL{*u6;#$Y#7d)ujA&`Bl++s9%jtx5V{%O0;-xxJKHJA=ACB#3vpVn6zztN?kFx&77 ztr52Ez3|U^4R$~_(oR_RnUlNVFbsk-L>Ky?9=?!VBKZo05S#}+pwUZq5wG@PV|F9t z&j10wVMuCRc1#2P5HbkpDq>WgJH9{DhV;aSRu7}piWSDpMd`O~7 zV^{A`e1r{Otb4wC3r!Pru7SgFjmsLzfo))KbC8klBi_zUlGd-4Fi{b%hrc9n&j1vy zzE~qKa0*{^>T7nguMBJC6||!CKz(S7KKX&r4OAq8{w&E4Rc|@{7&XXS<^lmvCYa9;bxs5|hPJ6@lV~vH}yK3)~Pi z$dR7y@HqGdbkI~GV5DamO_p<9B7p2cK9A5b{y|0XR1@g9BW8I|>9XSh`1d%1a0$K} zw~_F>_A6_ko)>C9=Pwz~xDAs1q4RAvXdlR;5599PX!`l0w?yWB$g=&AH9{(dzd$ko zA%|~LEB{cQD?;H5QZ*#N97U1$hRuG-{!lw_ z!y2)Yjna8aV;UJH#L_G2P|wpDtUq!8Y-RLwForky$?tzM{#gMmdeobRa6YagdS+$u zy3Wn?nSOuFJ2C?I1`(RSJ8McXT9EZJ8f!?8ut=a$$c2b9$^x0Zz;5|A+m~%w?(bpAF_Ual59-I#PSt-SC zl-bxhYn~jp`$~;$lGYU_45A+5vspOfu75f^p^zGVHF}W(HuxO;E!OVr*)cixQ7J4Z zMXZ_l`i3zXwJ)b|C0-KXS@I@)WW?E*>6txt>WDmY2#oDT?WOo`o@Rg@qvFnD0JC>p znnOi+dDq$IFxhqo`|^a$LD|M)teV^`_N2ZAx0#O!x_7l1!>yHqyV~?6C8VypPabwD z5(e0cb!+0W#hgqt_nF$i;vLCONH9@7wHIUun44ZA53o#?#4m&;6c2Q(jg)(_p!isj z5Jcfjlvi{=7+GNqH%frdIga>FwfHm0@dUr+d=u5gVc^2k3Tj>SHMLi?D6st5(dV|W z8Z@*djKJ`jxLFw6LfCqnef$wDxZx2k`20QlgUfIN#&Ci}I034+><}kR|EQ0cJ`7Gd{z}y~2kcf4-MI=BhCc-6T`dHA2^B!WI@R8ucbp##60$i2 z8GQbMKjJkc@Ymmu*7LYrP+H;NZL=@xG;XR?dOo|D6w|bAN{zAV+G7*VbtLPfIvwR% z_<~bgbgDm%(F8P#Tn)*ah-xv|YIjaekZ7d(PSKpf$=&rgI&x)}p43?_oh3*8ZFIG? zCkHJv`Be{JyrO^xsP)3-?)x7|k=5CXXrmyVCi0znXN#Ikxp(!r<0)|-o2_hTBY`4b zzZ$k!-~H(!G_gaQq`>}Y4waD76sYcey?I?EF~%tF-KW6A5UAt*+pHW% z%eFl{;5z56@2&6d-GAKo^S3LaAdFET%HuJ8zz*`DZV1({ynr2aF>C~gBEW%zcGq}9 z2e?xMp(ElEzLzBudM9I~4BqpxzOdS{5jgig{jjeY7um4y$@8a~*Fd8mQ6S>fn`rZ+ zah5+>Aoj-|@;>|G2Gz1gvKBT!9Rba#kFXiy~w-;HUUFxHqa38uDb03|2ANJ_;Jt*^am?$8W5b^=_i!HE# zx^jOB7a#lf1_%EFA8&)7XQ#v0%FC(J(#uRvxblw0zF{qCMFkaK889tZO2I*`wPatq zl%C$~VKo_BZ)BbySU+c#ASv>5s&qENF@GA}JA2+fw~IT+XY1+KYWV9>zfZKMgfwKB zKMaMR7yKxAxtzH!M?*xBR_in~zX@eBzG#PMwn67$D_d&mhbDs6*bRyv;dXfj%^!b8 zYZ;rCa!R7e)kjBh6wv0J)5K>{`btKDR(r)d6BQ4w8bkRK?_VxK(PCQhbkpwrj{_r* zMMGS@W|qTo%OYrLCzFd0_ZIp!I{Tr4rs>Vc&;R+N6+Tosv~E9gq2+E!Qif<&KIZN! z7B9;emzlm(lm%V1D;_l47EWB`UO!j_k~_sosRDiF2Y!a$253XNF!gE_4H7YS&%eq4 zX7=9_AGegJ!0Hpw2&+XO_%8QV0h8s#H8r$3zVNmDWqAwy^Xi zqO#Vooru~ao5RT8O^%kbLQ7AQMc2Ji=aAjJw!?z~Wug(_BB9*KaHX`>xm^|>qgzAMS7cb$XK9=asz|B+`mFgOut6N*z z*)KUwcJ_JG6_earQ&|~UWte2V9@PTlNlmqV6#9o7$ROLH+z%Y-#lNVP?Gm5HD zeIt5nH-IAyGc@9DA=7C&+f9|rAyE!nLu-G2$=Y(3ZUP4{qQJpVtKWb>d#RgNG zpT^_ZoMx<1cC^f^DLUhzj0WLA2Avv<<|j~4MSDlJL0?Bl^MR7D4se+kbwO29#EbL8(DQd<+X?KiD#s5w zF1xr7ThcWL%VcL<`g8MrKgnSBSSq|-&)|zAdiwhxLgX()zKSF7IkZ8ej_9+t+fuBr zKOcV1x~&Ph@n;NijrqkiF6>1ow#SX3=ixc10*iT(eAK+yp$^gfqEt7du@CxrT4@Db`RLu7L=nHR)lW$mUoy5mi zSs5Ny(KWs2JgYPHBzO=sSsax1wDACA=2&JH-Pe-s`q)tcvIH2_CfU}Fm{^Z8dfvb| z@%;ku+heq!&pI$9G5&VbOtn-s=(QArhXq=x1fO$=C0@Sg$x=_Bb5-eq34myWxRis( zoTy9Jw&C90YsR|3fO=(MxO0AF5{?kJA~5Y)VeD*?8665uUYH|-xoHcPV^$boEFJeu zYmQZj)h&KHS9QbmDlyB-Slx((k{5Vjb`@ii#0gVlrpSa2?V11I3vo&6S-7%A>oM~@ z4ozJ%OeMY!ZAk))htFnP53p`_S{c^ch1WLakxz9zWoL$=j;1faNQpPLBz0vRN#R9Dv{$H*V4YGZQHz_jaXz{G9ONQG`L9OwDM`O__*=y1~7%c9pcwI18Mpv z-*pH~xLW1HZ{rG47DS~yq^r*jftn+4L+;xU1&2j&Y| z*oismgv(GR5EemE zrrYXT`UN+2)S8tZ1~3Y@v)8TqCaG+7V`q2(Yh7$Bj{V?|qqPc?o*H+|{?t%-^YDd7 z+7K;z(YE6XE_3C|)9wktu$(!X!PartFh+n^KJh3&kE~O17we?yi)P^#pJ&-T`3*0# zk2hxll7|YNCkwA_2WNkT1a0q8^<;PX#disk(VZxYk%zV@4nW@ht}CK9S9nFOKF?%q z704E!S5RrI)3)=6!b~$dBUXFezO~z?&TorUZEXlmw{W3uN)Lm;2!IA%9Y%U-={%-$ zOfd~V>B}(ClXo25hx)#!5GFd}ymduNs+AznmGXS%Zm`)_uBnu83X%?GRMeufm%9zuB!x~mtmYY z8GDcn#Glc9J@`pgOy&(j)*tN>E%v39{J4S0e!e)5cp5k9M}l2>r3lW)h?xM=qWBF6bs|i$yzvFG)$&@H`Baft5|xJ8?`pkIqaTSKjRB~ z_c)h*0AS{ItTne{;-MdX_7d6)9ofx7J;AA3^4i3`Sp+*nF%KLRGdDW}!y%@obLnHb z^l|m{EWW6Uu<^9i#v2k>Yj{4Qw=XM3oJU109mokE*OzV$6(D%GuS8pk%ex1c8dfFu z`#*yJ34ud#N^6?`L0}QAf1eO({#%f0M1lkGLK{c_fmGO9wo&JTE*(wwfG3-a2z3KJ-?(@EbR}^@IXApLi7nztw1kAy#UIx4;l6DU){XL?F_Jhw}P9-E%-X9}(0n`A$xX}qmO=$?m$JPAs3X~qC`HBuyVFc<-So75$ zu>IB&=B2aeKOexs4O0sYlOq%-hZ$uh{$XSE$@7{3KlxwlW%QntC%6GS41j@)@eVaV z+fYPJ!_o(QCBTJZo`eMWZq{=Pt!nVGeV<&*)co1N?$ETYY z;qChB>UxtF>71v$U}2b*e}8i^BZwgfe3q1E2PaOl&K?Bz>Jk#n&;FFDEX`f~cx-QF1DSNOf-nkOMVhsE z9O56%d#hhKj}u1$zUGk?l?1q#5+RJoK1_l3_uG*Q_1xMPwp_21JZ78X95W0ecaM0K zZ!f!wLVm2d=fY6ZpX+%E6{-qBW*_D)W)7(+JBCh)&{&a@i406;lCR;H*%@-?Phxv- z;?bR#qQh}u9UpssZ)Ec*h!d3%M`jHOjwSnL-UZfIk&@2b&PYlVBMjJP!}g{+?L;^K z;uG6)32!-%G{~PZmc`_LEvvPn;{(m`;OYHSbwz&glZ0G#EpDKE-i#=%c`CxA zfSr_TjxsO?3vl8{ck>;uie$D|2ovDTy#ftNb8jhO_N4@^;W5FB)BIhyem3TkR3qOW z``FFLCTuW`Z?w}m^bLUI@l_nB|5lSQK6*Em)BVVk#>Q0dUP5OzB1`6wIBAW|t??QX zcDe;sm&TH2O^d{;lRm=wlR0=4>yY>Gka`j*U5zg-ZaNGZ8;OkH!D7YnX-ChwqR%D& zII}OnSls0za?>{JbUU5g3%gARZqo^|ZiDrU9>-x!9w+{gLIY3&t4{_$FtY5XUeAlo z{*%UADo<^~5ywK!_60MbagPf>FnSm1s#kd6MPsvIiTgK!w({`pJtSQ4ND=0z_K@+N zHpS*tJ_`u;E&cBbYHd03j@D&es@EEsh_l)p=#{gjIKAjD!YbRQm+nin0hk7U40y^{z7FKWB z#JJ?Yi$ekBHDKyeqY>0)OEsmo#S*oPBRa~ojZu6%I;hdxqZFxloFt1S%BEasasL>g z7LrRgMN?WF=GyCeE&ko6 zM@aC|JX5gxY{`;|qoJwJG674*h|1Jeni_*b2F#4H`u=+=VRLUxNLSt-)jAJf1*G1BH?tf;jrj46I`Khqt+9YyN?~8%q&YO9uT) z-mt01P49R53tosv8$vTrJuOL7r+mHj)KILYlDQQjH4yhLQru->eo8KQY zC03urCJ*84Na;Gdiy2RFq9cPf`C&7C-2F85t9ssZ3`SBxKdXw9m6Mmg!*=?)^x#&z zk}jo=3sF^JVs&%w5?4NxGS8QbDMz{jwS8}*(s)2B_L!Pq0zf}U;fZsV{wGAth!}vi zj6F`v7wkL{GDe#i!*6xNYet#Kei?ctv{z|xC+?a5uzMEkvg)3HrlRv8CoC`3N7gBPmGfB9t&n9ZGld{XI&m_FL7od?)~9)EHGm<1XFUpJZgCAvvjMA(IGnD3C0D@DTWn41 z>nL7A(k%sEub4Y-ZmAf|T@uk(3XwZvqNIFv3GU~8$bryCqG9G>u1+8RPMdgX5^im2 zGcZ`=Mtf?4pzJx0+u0=2X4ZxCA95_D#a7&4n;%EzQwUCh9hf)GNnIJjmw!ZZYye=7 zz?^_`?LUT?W>a^JsA5%*sd7a*e^|n@LG_tyv-mx>UbNM(s2H!@K3>(eCszSIuB&>2 z**J>q&2f_pYt5&c;1GI{0h03?$Rwb9tk@Z;F749RvV@>Ah_T=^EQ?=nVB8S1P=^{$IS& z&Av>A=Sha=Ihuz!a~KMl96`<)n~6QeGY6Co3)J(%|GToaI)&nv0|^4sfCwaFpaodE z;w@rqF5_y1^GV`^f+~dkU?TpxA_WgaE+>q}>np@eBDXgrt2H!79K)KWAWlY=iYdinBq!=Y$lDTS;19+5aUu=wdivp?gIhHF(!&K8n4@T5&Q7QX|q=!a254Z8+aDwBL?(^=0X{w7#W6=V)@~Sz#Fo-{qcCE9x7}UWhL1Q zh1MD{g3q_hvorn^+xwhNz}X}OZGx(kpS=fF@k zqKu>=vu-uVd8TOylbxb{15YZp)383!Fr?Ua$OO;g=Nx7JeDL!Q$Y_w7sH?iqNn~^n zUZHU^)@IC}@)Vomm>1{I|HIVzATjf_obKS0$2@VxfQ_L_X3D5RIonj9N1LV?j4H zRZ00=`byZH@< zP_JC-nzW4cpHu#|i~}5Zig|p3v7D`XRSEEF6vV4Twd~5HWmhWpIX0^Dkr-#yyr~Ho z4V(KCqXJh|>Mk-)PhYroXK&#;#ylQd#GPcuTac{2i@;vdbsRKP>gOAT& z3QGV%e_1sv4V>EK_&zE9U7b5Zlz6s=p-?_lhp%ru35fQPcmV%G=TW>0_T^t3e-NFg zpa>dY9P2abtraoKN#Ic~JVwuN;!KFysSZ) znAC|^Vmu0o`-^3NwoXMB8-c&0L;e>k%^!-Z(%LgPN&v%lnKO*ZGkZHihw5KjE~l|j zmUwm7V7z+&LZgn3+AM(xYP0^4uvOHO;(3>@?qr-dLbN&o-s4}vn@sMvxm^ai!L^lV zg}p$5)x{5%FvcYZ&q%yMl6!0&Gr7Xj-VPN#m%p$wRkuYE8y%pVP-j{A&drA({bJQb z(<1BSGk~jZXtT$O))WLyxEc+xhtF->BoDP_9S7V)c(~{RlKYa9nrNg^LIIIEGi%%A zb_Bh3Eo=9F6-`}-#H45K!o%Mq$4;SN-YY|^>#OS#n4&9NDVl=diEZwX^rcrgfr>EJ zkeak8SwdWiW|=~kXYiy%vvm->)LPs`kzP=Rx`5N|P}@ABJFY!h;h!G1w z{0VQ^^u~0&AuGA8W^iI2IOF?2smIjagJUo(M2suahSDC52a0RcU@69S`i<*bKAf0X z|KXCZ(U|3463nNl&wXJy{tIavSLY`cFts;cWb(lfR4Po2%Td8mgWB#UX}hXFfzIW% zYXX=Q1e;(k!{5$p232Yb^TO$t&95+YT4D%@I9axk3^_-}K|6wiCRoIZx?wKIWV~G$ zt8}xS(CtHp4Sg+Xs2b;{r-PNy`{lc_UA_3suGFMx;D|tX?C>Ga z&8(^sF5?MbOz4z|7ttEYgKu?A>4X}|Km!;}O5Pobs6O#ke)(m-aJuaNd?@FFREF9{ zvb0ZbBM7hndoI}@DFLqJ>-NTaWb&aEUF=uqpj~WA76o%T@?RM+Mlz13wlhP^wkRGd zD9Y{<`lxVKxa{g0nCo`{^pS#*^Nv+oV*avwAYx;CwP*W0E95J%Zgc^Co}si4bj1`f zvVxV2H@rMxNJGj&jyC=fmaGsBNECizBC2#n?XAmzyg0`3;wE-igZ^*9#)8-)wgD6b zL=_wagzJ9{#0bEo5$yUl=@!uc!ZE}fO5x!^gMdgQfq;;FUq}e}e=$!%YGD9$Qyd?Y z`gT@ccy3Hob?Vq61gk4j*!YG8@>rL3wq80Ioj>+;@w)K+AZa+D_%bUS=o{7GhW>qX(Q;AP_0yh|FL*fR?aN+}KNIXjp}9AB{Hc zMiK*QU&-Kg9+ptyTW?Wi%T~H|_YxY!x}})q!_B)KM)%SfRJ&=3tfqZQ3!i-P0NI)r zZTGh=aRb{{zNODlu2GWdqL0i#jaP!rQobR8*jBj#@I!2?-GD>LkG|xF&%eY)78~=C z?GK|83q_BpEj4>RM#5Zt0gThd)LS7zw9P?okQ(dXKKEgTRi zz3<(U<-5wsZ_o>cORDo*q(+ygUqxn3;vtYq!IX;?4G%rZ5`+ySUgn!=)d%V=Nfje# zu5#G`R!{vJDvRredh#ldPwe$JwD99+2HaJ-Ce)7tyYwWWV~7@GPQf)cWsnARcnynM z>9rfJhiV91oa`-!CR#knBSowC_ca}trP@r$U&JfXH#wtBWeiEXnJibJ9#$)`ViOnY zS=%yE?&D{!r%Y3ZWgqdc8!;y<3X8Fy5hTX}8RG@_O|>k&TQInJef9CQG!iSQ^pK{w zS3M8P73da2xY*-H2#his@`YCYxz|H$m7*lZTsA{=t2Pyji8)uiS!@mlvvId*Fq7jp zhDDYuMOnst?!4`NH(cy^_tE-D#Zjmy6CYMSHgdk_ynKDJ6CZsEBz?AHtE!r!oEC?G zAO*!E2F=F1s=y`(KA<~ivTLe`$ln}iLB|2N2gZFG~0I z{+{ii+s8mizHvmLxj8B063-6tkNj))Lg7=myX>YiWQ@?=Yis-=*N^d`+fO74U?S=v zN_~&q3D2Bv6_XmuX6p!Erl_Fl=hvXD3LJ63T*GoM?v$$iD=NZX`gbUs{R6^wovBSF3D-2hblXj4r~?6IPi!=go9b$F9Sa!Sm{t-b2)s-4F zpwUF-sIXH|npr!mu1R6$R2uqp$Gn4OSU=lQ{K8ur`JtjB4s%|{qO8TSyns@Vxvooq zB#IQ{G-yHXsMpofz?0ex0XBZWCZ&}y_i+}9R<1pDcGj6ay9ARjCG*A2oUh6+2CMh) z_&5t5SqaEsTdGQ!xqR6Ikf=yyvykAwxWpuK7OQU}+<-ToooYEqpJ*5`AoYdpvZ0nY zp&u^k)Xz^p5H_6T~l8sTj<%;ng+JniHCj9PG&Re$6Bob_7-;JU5xLIay|Td~>e z0`70cY5!~zSOXDdHjFFQfJo2+{JHs?H*}Zby0UHSp3$8Q#cvuf3>%m0Xt)Z!7yH;? zdCl$y|6ts#1B8Nvp2P{!V$hS!6*SY!!M1R@=$OD@)gf@-u=)XEL#T zE|3lTgeJ$H$qiIC49-k$#&R6B4=qj))DrTy*fQc63ZR9Z6l(_a7OTdFX{N67HIJnv z(4{o)mne;%w}I)%GdblniDFMM)yx|oN3bom-aLerTwpUDAoo)-eGS(`eY>!!)Y5)m z_~cf}?9vCN>qZu0!)pc&w|${2bZ!QhHs}5UkoBb6j9EjE+5%63N=>}xinHkr;gmTf z8=(2=tWhD}AZ_Zl03vr61oBVk;mv@Qh!}4GAS1xS>g%eH;bK7M5{Gt8Db?P}GBS(Y zYKIrM-5GLDOS*Cw)kePy>BhLr z4AB*u4)F$Ko1WV*Cx@3LlS5-GdA2|0Bw07l189B{#97c{{qL8U~Fh?Zs){c=U@x8TYv(v%M01`6C-!rC(@c>85$C` z9H^F#Q7BYn1V@P&^?+GDzB;EF*|PH1v+`E?xD>NTCOFH)t-KI32>dCfq|*dx3N88N z_v;b#ohe=T=5hX1!6iyb1WDB&I5$?MGW7(Khfzl0X+H1^L3fot5m%P@(o96ac;94? zMt&mMkxg2swXm$(gkj*ygmpV1LSBJP4d3Tijj|lleR9nCHR9HLuwno1Ojy5YTwSx( z=&4-OnJL)#(<6=++~F74Vw#S2ob@!BxRL~%K*#NP4J+XPf876h1i%?%ivPhZ{%2YL zW$Xv`Uuz(p%ijOwdjC1CC=5eT@(ulb{uVg+fN>e*K$>YhKxU$j{Jb9e@Ygg)TjjY? z4sjO?RzfGSVW_V!r9UIH99yrRzZz0SD*L9=9OgD-$L$c_C$X+X9@%Xl(oP6VRx!OJ zp7c->4nmpcMb>X|d0GmUecNW|Ijdy=KwP2jF!=+6F-==J02cIRpte2@ekGrGPn!2j$%bNUql|Ro{C-@Cd#U zA?36yw%&Da9TJzMX?_>CT-*=&cy+O5^GJvpKp{xk0i3gF7rPtmfg-?aj~XG`pOx#} z-b@;7N+et!hdA}i&yD~*sFWw++PX!akl_-K!)_FWiXyQ9c@&F@(AO3cW{4uiA+kwC zkn<4R_Sb$C{(K914kjP}FNNsof6elVR~K*w7v&-IULr)vV6yt8z8fUtHQP1dHJ?pJ zzjZlPRyJzJb@vOMAb`5RHKtj`*}-u{&A2GcP+rk~>i@XIQtkUa$NC^j`}AL(ng0ps zjtW_pxbJ`tfB?n?QUPzGA%RS@nADld)ADFS=>JUGjPV029K%`P zV2Z{Ro+OntD}~|kXq8|;`qL4;bdscOLA{wVn@t1kQi)-YMZPM{Ej)!r8Wv4^%RT|* zEai9V5{QsFQ;F-$A9K!6;PO0Cb)H_Nd?+o1A_mL$bk$aH+sy#zW)1t!;ME(^&8CSo zdf7fgxZY14TbquuS1Cp*m+F3ek(HR&A3+`p8ep(@NjRe9H1@< z%7@4@9Q5$k=T?QbWrG@jorO>-ZyxUL^SGL)D0d=B;W9RI()s)AV0>HP#uo@q@RM;r zijY!R-6Lb!Zj6oCgiqZtY1r!yxV`!> z!DhH7Z<)O;{K5fZdzkzh2-+~x?fPq}M&_Exe_MWh$shuTp)0{@N0cPuvdzHl@b>>W z{=O3p5hM|_*DJRB?hyrTdqUB)^1Qv?Y)j$~V9w1Xo6=f!Jj^1gYU~pB9A`jbME1y8 zH22E>C(ZPD$RdWP^*MxJ6zh9M9V#LP+IMKC;6wJ5Czn zd0<{jK$>L~71~`O6KUm;dqeO>`pLkwa`yVjYOPnS5l<}_G8vzcuFAyDuCOax#}^NL zOk&-Hbb=i!)r-Dk=0m)#Pl2;0G&EvGClUtDKj0^hSRmfi1C@_`h4|mwbUmYWB>r>!{2zX5VY^O{SB~mLqEju={5ptP=W^sf%vHwr^OmMB7sKCG?3&K1pmU5 ziELQYca?$UWL-~P{c$lUrFFTfJHw&sSqr`9;U|SE+_9irllQokC;#>2{>JD1ww+zc zZ))OFpT1cWCis4wexG^0(dGC)bv5{v1pxiUyOmfA;aZhLL6VPVhzgLwAyJQ%yt{MP zwbI4c)h?2k#6~g{?nA*@-YJ2HaAkf7V(L=&W858=acY*?>+W0kB==Go^6=u1^fb2W z_h$LF$={7O8+~^#==WU*-|`P_{PnxuhwAwF(--sd!bK!VypK(oaASz$T+{ag1E6wu zr;g0Nd)CK^*)f%QzX!m6fIUmUP?WnX_f?Z;ApfZ-uv9Ft#ezjH$?VNr45BWrO zP}0RQ^=_31>aoKLC+ykPlI_A~PVpZ|{L7(G8H#R|fW1CA$j^I{%KkAY?k{nGl+#cZ9v|?~KKA zTaF`mJ=~|Pu+gC()$Q+=Fl6Skad`{Yp&CSB`b6I$-u5)aUYDC|_|rTNG3Bn*$*r)uTWB9F7h#vH+7gZAR$)q={T@;uJA@Ta}N z{xbnj1z>ojZhJ?PfHKBF{p37(%jlJH_ZjtH&Q8olfZ(oh^!4YR z!VOFN=d|1J-rpUxH9jPRRS9vS=NykK;Q4K3JM14p$;%KN1&cV*xXZvMLbB|EMH5mF z@M;M+rCu$%59<$=zU?0i28m@ms9Pv4PvB1$e$f<7(fCD+5O$N}XF_1IUP8Kt^g*9{fVk_+Vl6hOk8!>_lEp_JyD-1V}GT2UAI=T^ zO};K)-pXLzOlW?w&9FfBIQN*7+9Y^WPOMjBwEphmo?Z$rvaeg+GVq@b>N2hwX-`ue z7OVWyONlrjux<{!g?G9HxNxK9r^OFVV1Q`Ge+`FG5E1-6%3aa+Sf?8uY>+I`1{~Ot z4RLS5AGt1ulqIJEi5MF-D3QnyW`|6sQJ8UFbjE`vM>iWHkm*~d*4`pMiuNOWx39ZJ z;a05zW*(crBl6zQV+U=cDySL;oJxg=b9=lw~^go)zs~m@6?u7Y5*~&7E%2W zYi)IBhWK15Cv>7uyvv;YmV>BU0Wo!-QqXf@Z{Pcz)vmYsRnF_Rhre`9dtH18MofL6 zDHhKw`6Zz!jlOS@**>~do&jXxEPy*O*z^xa(4E;ldV$$Jdf)8X47#dlIn2-OTkseXi&Tbir5k?K9?S!ZEY+C0z>@*dj*yjW7*y?HA>lw%2w!L= zBiZ@Wz7h@|MNF3vG1l)_~T^bi424rC(=Dp#l&A$@G)F8mk?0QF-$GIjrn{+k1OfM~wNaCAvfQA)P_7l}{#|i* zL~H;u99&ZB^3b34&};^U;y(!?c3E|UzXE6nhvV)8dYoplUo7i?7>&Oue z8fr^hd6acH!0kBC3qEu2FI z7w<9&oKa|SH|=6q1x3cpKckWS!@IyX_J*-3W~A*`m*1}T`!eSZ9u~g)Zx-2qKKS^S zn6;DNiR$|IpBLx<`Sbcuu6h=S4X|0BRp7z4Rl0!?g~zis_9cc#$uPjgVoD{sHN=^u zJJpeL9V4Xgc(QGl~Rw3+j~dXl~muqafbN~gNLfi>ST?bv}?^m?(pgj38*z9I)nGd z=$~^xq)AOX zKMPbZTanYLEJ;=m0CIWw|e7r@53{3ePF*CV$NkV zL-Y_Z%7`ycwHiOs-4`jZ!HiC-aGj;^)A;fezX%#naf;rm;qh)Y*2pbdEjTmNx(sic zMqC23j~8HBPSkE7wNRUIRIgW1g_73Of8ts1d?=xA(NgacI3G?51DLG_gXzqxbeps{ z9T29uW_b-`28q!lcli6=w3oPS5_0XXTU%Uea~$AB6bkb(V{GAQb#$KniP=g%TfMaK zl%2QYn>Q%*^s#MXY}1^Id>MoSgv_T^@-Ai()F#BE1{-H#kE@h`jD~()ww-Kz-Ve^` zBsWR(Sp2_^t8`Fl*6r#}j03GuQtk{8( z+_>k?GKlmlJ~7xQ4@>MsmG{h{PzrqR0JSs z0|sy>0uCr|hXin(S4IApfIVLO8x?+Fmyp=k5N!h!ETP~Jbn`C>-vUXIoZq!7;>vN_ z8b@>Qou65&y8*H$%}gtCuHuSL zifaRUtuCT9uM!iUKAH1jqolE+AT7v#bAfVm#0GU1Wpg1Dh^lxB63HxHzX&0MN0<_a zjME64MvWscr<{bz=Be3%)>GMGF;UXQ@RY@3;SMlwJpJ?m)&5hZG+c+nzDIX<(U*l~ zSW%rDBP}fNZP(NTK0_CSNib2hs=7d;yO1%e0%k3N6iD4rt*}gLWuQQx{nSFHPfb8N z)uValz~>|vYbh)KK5xmQ1jd!>Ky@#OM}Aeb=yhI-*VyPVsAr-jY&)&&l%E3w=``n> zSr5oRt*K_ul|fxH@2|OnsBJ2S;v&@gR8xbNV8qevA@AbR*A(hA;cUJcpjr4^GP&}n zrQb5G&Zy0g&R<@9{;NM(dVr?f;JER=Eyq)S+) zpcD2fR9wuA7WQf{EAkzdP*0}!{pFXit06$%$g5_ovRur%O=gbY}+-RVYX? zVev^29b+r=lk|~+IR$XzOGy>&xGwki?E%|w)baktdigDu`CYQeliSbt*%@|+;9Fx= zjLlmg)v3DdEKH|Kj+Kd3>Ea5Rek@XFw20p@yQk`k$eaEe>`N z1gL}tctI@#_hDfZjG^#Vzs&nD@&W(e!nW4p_8pN7ysiqq(A#Dr2#@O0)q}$h`3jje zJ47Sk>4W2Tu2VnxQjgNr>{4DrVa1t#w9LujQ`{LQU{tA0+6z{z(PZW%Tc`rKuL37| zKrd@8V;v)?6W%v+RH)87Kvby67CM80SwKr|2xx8~MxxurF^20RIA4an&ZF|AS4G`& zDz0ko>2qzCLx0CqF|=bOuKs-7YUqGPPSdX(5xy)qy{j8ANv_R>(Ki!0#P*joZtehu z>CtT6zBN{-x>KF~3f*T%Y7IawgJD12@_}PP{rJiY!QSdsm$6maBqe8rYajI~>?q+h z$0KrQR8wcwC`;1!EDoW5RyE3z#y_1QZfz>}BfGe6 zVMd6tYIm4Hy9k$KZLo}C2*yUGUR{@vGS*&Qxu%oC6x!Vj(pODqmp;Hx7f#1W2f3~g zeD^?!_ZS4xbl8RV_3G!sBcGLKBF&dn>$78r`-Ax0gQL`qNz74#n|SGW8Qi;Hqp2fk z1;SG{^QpK!WbbZ6-h>dvjH_JUn!r==DmDV0*4vsb2PdixPop`ZPg@xvCyiMj|@kVl9}8)a#1k)}R)iY3}ITzE|QLyIR{n#{a#+XIN=Z11A&g ze|+V47t{+UdVv0y@Lc~~KLz#Q>&33I{}w=4tkjyMzVo3U5WpKhIe^ahL@9KBRxi38 zgSe&_jlu9F#`eND1L7zt17UIt;rVA!$PANJYnSA2L^)t*Fgfi-&+ADX=b8>r1`ZNU zB*pW1s`Yq^-}ULZ+IAb1?S>B=T%JYZl){g{GXX)_sl_74W~bE8JJ?8?o0iKUH1Q`D z{B09&0z971;fU+JB;c>daGtFa`L;7up8!hM+&eWkk^pV?u8`JC-TuqmtxC?6G2=}F zt4%wQbvLZ%@tex9FHvm`x1F4D({}D*Xn7HqOJC_%N!KSA$hx2+2tA#wYmQ(H?8Oe` zZ5z^U^`xB&GKMp?nv9z~lqeM8zS79iF3x?|0HcdWDy`4`hG$@_AH%-C|0~7+F?kqj za-5CGfF^GGR-oTw@Jph(=~YZ=I`4t;SFn?O6ak7%BWh*0jx#Rx`Wx9_%hq?Yys?Lk zQqEZ01VS7A(v2=TmbhMaG$^wat{*h1?NY`DXj+h2%pD)w%zq8CIR|PQ%gBN^A1#=z z#A1$CE+Yw+fq*uF{-?n&Kgln-h*3wi7*4v4}ZFt1ikV^>IqP|z8@$81^3u4A|GT4!tdCeeF9vgx+2k6 zKG}2*rQ82IN`nd;uuM@wK!#}lPm=Lx4hxW}0q3T?*r@ySo(l*BCyxUO;3GvEHH-%l z_Pt>dRZjT91RWgWCLtH^H!72o3ZhVww?O--P@bpftyWs8`dczop`!BIz`ERfQ^4x_ z@^MRR-P6`{-NRDrwEHPFbwUP_@@aqng5R^cb7}4T_PWt^>*J*rO_VJ{{%8*I4FGuk z_$@#*dR&eBNuT^rj_CX#SBd9RZ>}^G5ZK)cJU zBv3CZ-)Q4PnBDJqpp~YNpP%my9og7u>b9j+|Tq-nr+?8E*swY7U}-={x}_dPlraFD2>^n z7Mx}_M4`RG;?#3JT03k+R*Xd`L*~#XQ_Fm73s}!m>nJS+PqrfaK=TG%Zb9s*LA>@R z;c7(I4KT>@iY1AKG2G=AR%72a9g~Hz*a*InaqJ$SC?`wi%vy`bH4H#GZWG(W661DV zo6F_eVKN)jtC|g~YnqDAtzHSOMWaT0xoWz-8HVl%8?C|5_6punLuFj&&Q+MSjUhd) zl}Oj$wf%>w^${1@B&-{%#;ocsEU4Dy77=OmB;{q?=oL~I*2YX$t78n>U|A3*)aa`! zL>tzP!t<03=QvDh4!B0#Hl8NU*+yY#g`Z@TCT5v92xHd+IlNnh zfw)Qn`nFA`qF$0x)qzr^jDnuAqw_SOXJcdz+KO+%>iyU-G&41%c*n*DNWCo@ztkF~BE9Gbf>_rnq^CqE@? zSsO1f?%U%UQUHig(BQUO(|32g`vnQ+hZ=`oj(~Kq-w-bpnE|G&7O6_osTG1ZA!oH= z!UpTwCZdWhE9A&w<>l~3kwbw&2ZkGpS z&06StT1HZ1?tCo0(^~L6^L~rR)yyz(pXa$r0vV;LgxuO&ha9~wEpa$gcn!3IkBf3( z^i-nB;vB%igtDOotWEe?XWWCq{8MGbt=XlqDO`RC0kuJ9GPFgNhKObQ88kRz%*aqW z)0G_9zp+p}b)rmrX5v_n5h0t->qt5O5T7fQgAVa)>M9ld=kfTMV{pC0pV@e$+F$Ai z6h0G*WpvmA{X&C5wkRi;!os$ZPQTL?`eCADa0UQ*irCmrSew=}LT&Roj5F4dn?kNE zQSx`Xix}4z;r&HPtNIZ$TsAXEE#o=;9cV-ze*~UEkfAu-a&at&Ded=oPpIKs%{$h2 zY`W%hLQa{B_Hv^Ggf8NSaQ_Jpd042!{<2oaSU!fu~{XJj2xB+{Z2{S#f*an>>Wv?t_BwO6=CV zvHtiSV0+99Vn!itSO^n7m}m^SJqi_c!VqwMBm!d1&N$B^9Wr3<9#$JZnP@CA&c-FH znm(RCE3vTCpZBoRtAPjKDDmxBaYh1+?sx)T1p=V5HAXXIO#clI^Lm5M`qy;1G2PHRthBYWzZ*LIFyAOqfC-Jw&fIv&8lXjHZ7;NS&F z%(;eeqS$>DPP+X_DJsRl*P2pE(A#wgxGI!_xGWew&j(qHhE33+3ByUlN!$?+`CChWLS894x2n&D*Tma-KHRN`sYY3du1LlLeJ`xLx8soAebp8pX+{H&GI$}QwOpu(&RCq{efF%_!FidNCfMs?km(WW>$|lkf$H$L zG@W8e^@sv8l>C?xh5PX0r9ZG=UND6Jl zDS~*jk>daekvgtT={~!?&DTsn^QYo&aRjJv`Fk;DS2sJJlTm|~*NjiQUi25X!N<#wtBk`Mw^u$a^bF63XE7Tp?QoJtD z6R09z5jk**5ceE9Fx@W;mf?A~LLWTuQG}1=+z6IGAmY@V^2492Kl;^`ZWuY<+nZzR# zcebC9gszAq%_lRPT4v^#IE;_Q%#RS_J}QS-s+~5|Myc3@t1$2j#~A#Beyh8z-udc( zz-|pJJtuyc2FG(1Jmh>-5>i^NKRC-5F4E=6PZnE#R#H&X@bxs85pgGq8eAN{bbX%X zDiZNh^zZ=`+0MM+$_H)FiOwC+N0N9^tq@|+__eZwBX z_h|Up8i&rGpJv#QFF<>pe*ZarK484ctuOE7Fh-#^fv!AS{&+d;60W50&4a5cQKsjS zo^9iYQLK6N?4W5I6)(MD!tiUuUkIV8&IY?t9*h8}gXQ5?TdiMT=8xfvPGIjI%1S7& z&9=jAv8UxNpeDT2zLmm8nqW?y<*o|zwTDc_xmZL^U!Ui4hm_1*OWRh4BFJ_WTQtY4@_-w?jvUr3rlz!7Y#3nO{HL=LtBx$a6PkuZ zt*WR79>4VE11iL6dqb2DWZ5&dD3KymW*$>a&iD8mxhx6ZmXthgDf=vOoec?Ice2Yp z>xIcoCyMLB@)wZHU2$_p!RYN_Ga^Cxe9z*Bn2l7*Vktx9-jMf>8 z^0Y@G8=E{esp|RpocWx9&ZUsdPtYX~)NadHZVyO)q{MsPngM3XM|@Wnq*>1&Z@Yk{ zp6=f^1ma0@hkq4__@UCDshGtS__O0GIR-j?|G{`L`|&t3lj2k-wvrTCfk0dBwBbqN zOMx@cLuf-~Y8=2D*fXkc9QPOy#eY(yL$v3%2G`2^<8?OVbamwJi8ijQT+-a3w-O0U zVY-_vyMd2xl#TYfU>(i8eG(2_GlBuU8$wHS`ykP9wc>i>2mP7+2sIrJ7T%4)nYkgB zD2Y>%no@tXPl#$EFjn{xE%i_1?QqVzqJ6N#*z0-z7AFUMHxl>Up}t|7Z7Bbm-_53~ z>1WSzOV#aNG5A&WGEvAyUh9a~SynS2G6F!@nwE4QBXk$Rxs`ouvPM~^y#WWL-D!O` zG?aEEPeFJsfvG05gF>8poOT3cI;7-fPlcQ^l-R3LTP}d~qdsxbbOs7_aHPWp zO~TeFNQ6dqQ;!}PFlmHMELkzM{@eJG>^vv^tAT-7@zTe)=*3$OdtUre&n1u&Nk$%< z&-+ZFySiqVtI{96q(*b4OUfM({;WR-yR6r9IsJIAK{`416jC9 zeoE0WAI|45zc_4e-3YZyBF#Y1QNY@0l&PK@vs8X4^^)q>H@?C6M+pdKw$K*E-++Rr zi7attiq@p~V`g33t+kUz9?~7i+dHf4c19Vvn^des;zj``{fiO{=0Y3*n=IVEDzUQ& z4TolqCzf_4oF3XzsW54fch8)%HpC5fv0eeROP>e8XoEB;_T{(imwI7U%|Zhlr|w;v`=f@9K$6Xbo!M{|R`(3H`62@3tC zVE?%wT$#2#QTOT>D(Ds*JU-(h8`!qstl1kY@ux_dJirfNEs!^UVoOc>PtKFcl|Iq| zj+K9ki+Sbu^nQt?@Vi+8w)i4*dH_7K*|ZR#+TR81!mH5Vg%dFlg|=#w3!%6$=Tj7R zO`bgG6Z1vQfs|@HMCSGS8>1KW4fDrz5zJCCRV&VnAbcaz4;}oH?siqb7-N{r#QN%0 zaG1Iw{~`i>&gwHGiLhKe7B5tmXig$W2?n@4{6Sa05)igoW>r?j=9RlOrG98ABY_ML zv^W^yd-zvD?j2fz8HxW}r=>c~04r}ZidTzs?dL3mh$qGxzuB|@u<49$$|u z=A|=scA$&k+H_tg;r(wj!H_4&2F^Ce6Ogs(fPdc|X`BHz1Tzl=wpW7xS3~n(B!Rj7 zZ&j2A3OJKQ1q4i@0&hI<0195vqoQa|VI9n_mIRAc?5@9W$zF84NW!G@!iaj1jQN_& z^XuaLnPokuxt}+-xsSIT*R#93K0*Erg+pS@Ymy<-fBT!;0C#cY|9Gv;o zkMfuAxpDNn4PqhGle8SJnQS^wP-!<RXk8Eq4g0a79ID&ZHM_o-Tn>ez`5se)iP z1vq+GgOQL4@k+}ogKrEI(6nnC(e~LBSIN9~$jTToK^D^Cr8AySlon1Ad?@pvFz$t2zd#JgmrFdobI$1pb z%GKYie5pQl87#z`pg;d7N9>l^zWzi)pN1G&6iQlM)2BDz<(_z4rrI3U&O1J1h>mO*H>OQIUwZ0{(zv zBb+$_QG{e1P#Vh|T#vGkQkio??Ir%!nhOw(1*yRSleS()tU(4Xbc!YqI=FAa z&b=06|9=|03aF^MXpKlSbPf&DAtfzHNJ|Mwr_RugG!BCbC?GL3NXj4~A&8U+3_}S> z3W7*UN{AvL3cfr1zrT#G_traW-F0Wy`F5Oh_KADW-TS&FyN0Q2%$B(NMiJkz5K1e1 z!|CSXYecWawzHL#5SKR`uUI{E7Tg*G$yoE2XrT4XPT>^;L;dBf<<$A`SN-(`L7=1w z7pB*bmMDhW@Hv=tFBE1J!}8&B&M!~78Dh?GHHV=a$%t2J8n97{`jlrjed+vJk)~53 z5P=20m@X!ob7yEk1V70(&C}civuDt&MF)7tsh2s1I|)A(#04USRHyL{{8rv8_-!e! z4EAqdx^(NzW*O5so7EyizCLZp>tNQAd(>6SZNm!;$-+fk-a zZ~DbjWJ~%+tjs%#J9e`1d}lI|M0S%Z)AM-~!Lf&N^twmD5>K^i(JiP4Cu)LWBv>i0 zEK7Z3H1dL}3q6>GpQqWYV{K;}BdHp+yo>$2CTQ)6qOGDkEg8jNN4;&cf zeHoLMlO70z9BoUTgMhG=LLi!%;=Ju?eYFGmTzk`QvMb`%_aA)B82OY^;482W>H-e5 z6+#QyB>Hn;mn1`8smpm5WwWl4t8PWND=55!Fn;uFEZ*Pk3vL#9M=-n@n9oP&f-GHr zy%=@zr~!2JhEXr2OWRgoKl9C_zWAYR=3?jULfI!4Ul@IA!(#5p1ri11=U*pD%iou~ zgEuPP^O*mYea`1^`0)B&fhdxBS(RXLQWISH1L}i%>uWaV9O)8ya)@=k4vvrBJ(% zq#o9~W_d@f$K*Hj;2bxqi!Fff{qDVW+V+Bd&j~+Rtg?d%Iybh;O`ucwg6bgi2m#UYx{=$=&2gOMQ>7Wl?)7A(Syhn3gL zGV$bSm5A%lP9YsF@5Iu~SIJ+GdOPtEQ9tbaRdAD6VuYSlkA%^)c}SKwmbIB$Pr|kS z+Jh>A@yj1Nb0o~9_=$z}v|%BIY@Py3Sxr}~vdSQGiMTH&cb)w@{i91S@LaATV~d*v zb*)pyGqc_{@o>sy&q1sX2C(O#)_3L`-#p3kNBQffHM~p>QSsoS-64a>l&AWm1D<|g zWd8EDWV%P7y>gGN=WS!stQlzl*8;s!-+FqmU$H{b=F$Spro+}uG#FOq&9YakF(CXn zP%5{>8O9I}pH2pX=P_y+Or`FeM?(7TEjzD+x7DbU(v6gjx`geFYJ>_q&Gs%kOYH4j zzHFg^-$bOQK{wkc)?U>n0+x0KCHh2c-x%}h$=(JJ`lE%;MFz{mO9ZWG_n5^t-)s%( zWENWjTL*jhpc%Jpp1}%ynQyHQ>OaZ@UQ1o<9yfb$Tyfp}@|tynC<;|qUjE^H)K9*c z%8wn18{PG8cGD>I@rBarq4EV2;{{I2tqL6Qz=D})gH?xE{diNKv#dFk1VYEP-&-nB+bF< z5aVz(LUki5uUhrCBuI3=QQ!&@e4apqK3rw?HDm0s|1QyWTlY(7?tvB+yR&d&&Q%&V znNQc;*0vdHoIbRF%x_griJT;&q9N_E z?oBscrFqUOJb{kW8U&3adklM@0N?+-%X7r>xF-NCkzjk6_R+m%nafb<`@52s)=gRD zWL@J*<{c~YO^NBed&h1~y|dR~dY|vWVjLJV1vhuhTI~HwjQGEI_%f9@mVk`TGd-Qp z<&N*X8DPBC;XOd0PtbztOE&(Ow$ ziJU)0ok|zj&NA|%%oG%6ZD$&mSjhr}-6y~V!7q;I;zfh*PK$gIePyy%ylzyI`NeWz zw`HS)#pc~T8f*2&N215CQWe+Uy6-=JnCo_tr6g{c`D#g^6CTPJ4fnS^uc%&V=$sJc z{B)&9h>A-`+T+UhZSaN=m&Pp^`>=tE$m6un!W8iX9B8PxY7J=Vany!-{t>qnS7$JB z(U~tK->B&%kuR0M4b8`@RGQYr^1YeAH!o3Xm^&}ng`2Agsxwkwlq|d~rJNS7w!tbv zXc$<`Cpi}UL-8u1)&@c4UQJP{HbH%itkwF6NPvGV+!JqNT57RD`3=XC0C%|Epb(Y( zE0#)u&q4^bTuS1n_zN%8>DLatuqW7BwCA;7Q6(@&t~N}+ybgq(2m>bEe>@H62AC0B z;nc86t=r1BL@MRVl%!ON)b~76q$i*2nU9X&n0V`61}nH!@UvsE?si(~o|V&K@z0`5 zg`<9f*NJ$m+kKFBTdx{{mtGrR=Z5Ybf8F*H#d+jo*JaWFun=mi!RW^V22;~Rgy$@A zbQ=bD?qvx3RS->*fhDfVy&uc}ChA>YA<6m(|RK z0y|8)j_G9G)D$u8rS8jwJZpMl*_0s@pPc`S(sp<&JFOmRb+dVhUn*RJpE;_);%%8F ztjY~9`wKUCb3I0%iJx7$Ic7ANK1yYjf3gg+!v40 ?J?8Ac@^Ezil)x+L*XTK6k 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c60f0e263c..d2c45a4b26 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Fri Oct 26 11:48:11 EEST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip diff --git a/gradlew b/gradlew index f6890acbdf..cccdd3d517 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -6,20 +6,38 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` -# Use the maximum available, or set MAX_FD != -1 to use that yValue. +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -30,6 +48,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,26 +59,11 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -85,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -150,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index b411ee1fa1..e95643d6a2 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -8,14 +8,14 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @@ -46,10 +46,9 @@ echo location of your Java installation. goto fail :init -@rem Get command-line arguments, handling Windowz variants +@rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -57,14 +56,9 @@ set CMD_LINE_ARGS= set _SKIP=2 :win9xME_args_slurp -if "xPx%~1" == "xPx" goto execute +if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ :execute @rem Setup the command line From 7babc4374a69a782df9d4a45a3453232f372de9c Mon Sep 17 00:00:00 2001 From: cs-roxanacoste Date: Fri, 30 Sep 2022 16:36:13 +0300 Subject: [PATCH 26/27] Changed versionName to 3.1.0 --- MPChartExample/build.gradle | 2 +- MPChartLib/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/MPChartExample/build.gradle b/MPChartExample/build.gradle index 0b91f31897..6fb0e9836e 100644 --- a/MPChartExample/build.gradle +++ b/MPChartExample/build.gradle @@ -8,7 +8,7 @@ android { minSdkVersion 16 targetSdkVersion 27 versionCode 56 - versionName '3.0.3' + versionName '3.1.0' testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" sourceSets { diff --git a/MPChartLib/build.gradle b/MPChartLib/build.gradle index d42a2002e6..4391845579 100644 --- a/MPChartLib/build.gradle +++ b/MPChartLib/build.gradle @@ -12,7 +12,7 @@ android { minSdkVersion 9 targetSdkVersion 27 versionCode 3 - versionName '3.0.3' + versionName '3.1.0' } buildTypes { release { From 45645f762e4e76fb063b524744f472af2995bb72 Mon Sep 17 00:00:00 2001 From: cs-roxanacoste Date: Fri, 30 Sep 2022 17:27:56 +0300 Subject: [PATCH 27/27] Uncommented 'apply plugin: 'com.github.dcendents.android-maven' --- MPChartLib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MPChartLib/build.gradle b/MPChartLib/build.gradle index 4391845579..24e2d991ed 100644 --- a/MPChartLib/build.gradle +++ b/MPChartLib/build.gradle @@ -1,6 +1,6 @@ apply plugin: 'com.android.library' apply plugin: 'maven' -//apply plugin: 'com.github.dcendents.android-maven' +apply plugin: 'com.github.dcendents.android-maven' //apply plugin: 'realm-android' android {