From 1cf4e6d6fcea4010869a494c3913925c8f6dd662 Mon Sep 17 00:00:00 2001
From: Eilert Tunheim <emtunhei@stud.ntnu.no>
Date: Thu, 5 May 2022 09:56:07 +0200
Subject: [PATCH] Functional confidence interval shadow, but looks awful

---
 .../java/com/application/DB/Constants.java    |   2 +-
 .../GUI/LineChartFunctionality.java           |  36 +++++++++++++-----
 src/main/java/com/application/Main.java       |  12 ------
 .../com.application/GUI/graphStyles.css       |   2 +-
 .../com.application/GUI/graphStyles.css       |   2 +-
 .../GUI/LineChartFunctionality.class          | Bin 15419 -> 18080 bytes
 target/classes/com/application/Main.class     | Bin 10906 -> 10912 bytes
 7 files changed, 29 insertions(+), 25 deletions(-)

diff --git a/src/main/java/com/application/DB/Constants.java b/src/main/java/com/application/DB/Constants.java
index 4b3e3dc..a52c3f9 100644
--- a/src/main/java/com/application/DB/Constants.java
+++ b/src/main/java/com/application/DB/Constants.java
@@ -30,7 +30,7 @@ public final class Constants {
     public static int NUMBER_OF_SECONDS_LIVE_DATA = 60;
 
     // Confidence interval
-    public static final double CONFIDENCE_INTERVAL = 0.95;
+    public static final double CONFIDENCE_INTERVAL = 0.80;
 
     // Non linear regression
     public static final double ADJUST_REGRESSION = 5.0;
diff --git a/src/main/java/com/application/GUI/LineChartFunctionality.java b/src/main/java/com/application/GUI/LineChartFunctionality.java
index 19a1d00..0f63c74 100644
--- a/src/main/java/com/application/GUI/LineChartFunctionality.java
+++ b/src/main/java/com/application/GUI/LineChartFunctionality.java
@@ -11,6 +11,7 @@ import org.apache.commons.math3.distribution.TDistribution;
 import org.apache.commons.math3.exception.MathIllegalArgumentException;
 import org.apache.commons.math3.stat.descriptive.SummaryStatistics;
 import org.apache.commons.math3.stat.regression.SimpleRegression;
+import org.checkerframework.checker.units.qual.A;
 import org.jblas.DoubleMatrix;
 import org.jblas.Solve;
 
@@ -84,7 +85,7 @@ public class LineChartFunctionality {
 
 
 
-    private static Map<Integer, ArrayList<Double>> statistics(Map<Integer, ArrayList<Double>> multiMap){
+    private static Map<Integer, ArrayList<Double>> statistics(Map<Integer, ArrayList<Double>> multiMap, boolean CIShadow){
 
         //System.out.println("\n\nMultimap: \n");
         for (Map.Entry<Integer, ArrayList<Double>> entry : multiMap.entrySet()) {
@@ -104,10 +105,17 @@ public class LineChartFunctionality {
                 //System.out.println(String.format("Mean: %f", stats.getMean()));
                 double lower = stats.getMean() - ci;
                 double upper = stats.getMean() + ci;
-                //System.out.println(String.format("Confidence Interval "+CONFIDENCE_INTERVAL*100+"%%: %f, %f", lower, upper));
+                System.out.println(String.format("Confidence Interval "+Constants.CONFIDENCE_INTERVAL*100+"%%: %f, %f", lower, upper));
 
                 // Deletes entries if they are out of bounds with the confidence interval
                 entry.getValue().removeIf(value -> Double.compare(value, lower) < 0 || Double.compare(value, upper) > 0);
+
+                if(CIShadow){
+                    ArrayList<Double> lowerUpperBounds = new ArrayList<>();
+                    lowerUpperBounds.add(lower);
+                    lowerUpperBounds.add(upper);
+                    multiMap.replace(entry.getKey(), lowerUpperBounds);
+                }
             //}
         }
         return multiMap;
@@ -166,12 +174,13 @@ public class LineChartFunctionality {
 
         // Finds the end datapoint at the end of each graph
         int numberOfGraphs = 0;
+
         ArrayList<Double> dataArraylistXAxis = new ArrayList<>();
         ArrayList<Double> dataArraylistYAxis = new ArrayList<>();
-        //ArrayList<Double> confidenceIntervalShadowArrayList = new ArrayList<>();
+
         Map<Integer, ArrayList<Double>> endOfGraphPointsXAxis = new HashMap<>();
         Map<Integer, ArrayList<Double>> endOfGraphPointsYAxis = new HashMap<>();
-        //Map<Integer, ArrayList<Double>> confidenceIntervalShadowMap = new HashMap<>();
+
         for (int i = 0; i < multiMap.size(); i++) {
             ArrayList<Double> list = multiMap.get(i);
             for (int j = 0; j < list.size(); j++) {
@@ -200,8 +209,8 @@ public class LineChartFunctionality {
         System.out.println(endOfGraphPointsXAxis);
         System.out.println(endOfGraphPointsYAxis);
 
-        Map<Integer, ArrayList<Double>> endOfGraphPointsConfidenceXAxis = statistics(endOfGraphPointsXAxis);
-        Map<Integer, ArrayList<Double>> endOfGraphPointsConfidenceYaxis = statistics(endOfGraphPointsYAxis);
+        Map<Integer, ArrayList<Double>> endOfGraphPointsConfidenceXAxis = statistics(endOfGraphPointsXAxis,false);
+        Map<Integer, ArrayList<Double>> endOfGraphPointsConfidenceYaxis = statistics(endOfGraphPointsYAxis,false);
 
         System.out.println("X-axis:"+ endOfGraphPointsConfidenceXAxis);
         System.out.println("X-axis size: "+ endOfGraphPointsConfidenceXAxis.size());
@@ -237,7 +246,7 @@ public class LineChartFunctionality {
 
 
         // Stores the data from the confidence interval in a new map
-        Map<Integer, ArrayList<Double>> confidenceIntervalData = statistics(multiMap);
+        Map<Integer, ArrayList<Double>> confidenceIntervalData = statistics(multiMap,false);
 
         //getNonLinearRegression(confidenceIntervalData);
 
@@ -266,6 +275,13 @@ public class LineChartFunctionality {
             }
         }
 
+        Map<Integer, ArrayList<Double>> confidenceIntervalShadow = statistics(multiMap,true);
+        for ( Map.Entry<Integer, ArrayList<Double>> entry : confidenceIntervalShadow.entrySet()) {
+            for (int i = 0; i < entry.getValue().size(); i++) {
+                Double doubleData = entry.getValue().get(i);
+                getRegressionSeriesConfidenceInterval().getData().add(new XYChart.Data<String, Number>(String.valueOf(entry.getKey()), doubleData.intValue()));
+            }
+        }
 
         System.out.println(data.length);
         //System.out.println(data[12][1]);
@@ -624,13 +640,13 @@ public class LineChartFunctionality {
     }
 
     public static void updateLineChart(XYChart.Series<String, Number> series) {
-        lineChart.getData().add(series);
+        getLineChart().getData().add(series);
         series.getNode().setId("dataGraphs");
-        lineChart.getStylesheets().add(LineChartFunctionality.class.getResource("/com.application/GUI/graphStyles.css").toExternalForm());
+        getLineChart().getStylesheets().add(LineChartFunctionality.class.getResource("/com.application/GUI/graphStyles.css").toExternalForm());
     }
 
     public static void clearLineChart() {
-        lineChart.getData().clear();
+        getLineChart().getData().clear();
         //lineChart.getData().
     }
 }
diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java
index d24550f..fedf560 100644
--- a/src/main/java/com/application/Main.java
+++ b/src/main/java/com/application/Main.java
@@ -322,16 +322,13 @@ public class Main extends Application {
         liveDataBox.setSelected(true);
         liveDataBox.setOnAction(event -> {
             if(liveDataBox.isSelected()){
-                System.out.println("Pressed");
                 LineChartFunctionality.setPrintLiveData(true);
                 LineChartFunctionality.printGraphs();
 
             } else {
-                System.out.println("not pressed");
                 LineChartFunctionality.setPrintLiveData(false);
                 LineChartFunctionality.printGraphs();
             }
-
         });
 
         Label regressionText = new Label("View Regression");
@@ -339,16 +336,13 @@ public class Main extends Application {
         regressionBox.setSelected(true);
         regressionBox.setOnAction(event -> {
             if(regressionBox.isSelected()){
-                System.out.println("Pressed");
                 LineChartFunctionality.setPrintRegression(true);
                 LineChartFunctionality.printGraphs();
 
             } else {
-                System.out.println("not pressed");
                 LineChartFunctionality.setPrintRegression(false);
                 LineChartFunctionality.printGraphs();
             }
-
         });
 
         Label regressionConfidenceIntervalText = new Label("View Regression Shadow");
@@ -356,12 +350,9 @@ public class Main extends Application {
         regressionConfidenceIntervalBox.setSelected(true);
         regressionConfidenceIntervalBox.setOnAction(event -> {
             if(regressionConfidenceIntervalBox.isSelected()){
-                System.out.println("Pressed");
                 LineChartFunctionality.setPrintRegressionConfidenceInterval(true);
                 LineChartFunctionality.printGraphs();
-
             } else {
-                System.out.println("not pressed");
                 LineChartFunctionality.setPrintRegressionConfidenceInterval(false);
                 LineChartFunctionality.printGraphs();
             }
@@ -372,12 +363,9 @@ public class Main extends Application {
         previousBox.setSelected(true);
         previousBox.setOnAction(event -> {
             if(previousBox.isSelected()){
-                System.out.println("Pressed");
                 LineChartFunctionality.setPrintPreviousData(true);
                 LineChartFunctionality.printGraphs();
-
             } else {
-                System.out.println("not pressed");
                 LineChartFunctionality.setPrintPreviousData(false);
                 LineChartFunctionality.printGraphs();
             }
diff --git a/src/main/resources/com.application/GUI/graphStyles.css b/src/main/resources/com.application/GUI/graphStyles.css
index e59a161..455fbb9 100644
--- a/src/main/resources/com.application/GUI/graphStyles.css
+++ b/src/main/resources/com.application/GUI/graphStyles.css
@@ -20,7 +20,7 @@
 
 .default-color0.chart-line-symbol{-fx-background-color: red,red;}
 .default-color1.chart-line-symbol{-fx-background-color: green,green;}
-.default-color2.chart-line-symbol{-fx-background-color: black,black;}
+.default-color2.chart-line-symbol{-fx-background-color: black,white;}
 .default-color3.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),white;}
 .default-color4.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),white;}
 .default-color5.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),white;}
diff --git a/target/classes/com.application/GUI/graphStyles.css b/target/classes/com.application/GUI/graphStyles.css
index e59a161..455fbb9 100644
--- a/target/classes/com.application/GUI/graphStyles.css
+++ b/target/classes/com.application/GUI/graphStyles.css
@@ -20,7 +20,7 @@
 
 .default-color0.chart-line-symbol{-fx-background-color: red,red;}
 .default-color1.chart-line-symbol{-fx-background-color: green,green;}
-.default-color2.chart-line-symbol{-fx-background-color: black,black;}
+.default-color2.chart-line-symbol{-fx-background-color: black,white;}
 .default-color3.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),white;}
 .default-color4.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),white;}
 .default-color5.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),white;}
diff --git a/target/classes/com/application/GUI/LineChartFunctionality.class b/target/classes/com/application/GUI/LineChartFunctionality.class
index 951ee2efe010289781ae40d7b6a4201b75676bac..640039ae579595c72df85febd32561bdd48ea469 100644
GIT binary patch
literal 18080
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
CT90M`

literal 15419
zcmX^0Z`VEs1_l$R2rh=jjIQjAZd?pZjINvvGK}u*j2>JJtPqYTJEIpD0|%owNXCbQ
z(HEr54@CHLFb05>`GE+34#q%`vLJTG5H1E`h~7|;NEkO`IAa7zERusUii<ItF$N?Y
z%gz|b!5GiQn829G#hApH3{sZD&EU+K%FUR@n9j|Z!I%jmve+53*%@=V7}OYDxfxU$
zbJ-d5xEM4U)7csGxfrw=3qUf3?2JWh_V3cbfQvzfu^1#;BE-PJSOrpC&CXZ@5~<~4
zFlDS`b6|h~5U(C2-oVA!$k@cr*vwY{112TI*uu`(%EjOa3Y|7kD7AAic5pFvGIoLN
z?FJD&TntkgdxaPn87G3AJ_$rj23ZL9a2Pw|6p;F9Tnzq<(?P<nAO$l(EHE(>#GS>-
zIGb?}7vo&Uc_5e1XJ=f%#Sq2l%E7o0L@xpni$O#?NX-%s#-$+6G7iS&9E>YC7*~QK
zW)%nHY7WLV9E@v0ymcIm>)9DuK*~3;Gj8N!$YXQ`5t~4gn?aUr0TEk4V%tDI-wtB!
z0EzA7VB7`b>;~Dfhl6o1h_jD_aX*MYz`=MBMAw2O4{<OaW^-_C00$RH^auyzQ4Ypq
zAXAQmh!Y^<Bs=3NE{1N#0uIL0T#RQJ&vG!H1Bst!b5H^6WB}QJ0Ti(p*%>c^g7Y$)
z0|!Kk%|QUdU}wC-&hV3qVK(Dc5OIx*@jBxT5bGw$N4G#Rahsj-4kH6+PG(-Jb4FrO
z2_u7?PgY`CVp@fMadK*2s(vy^RNn_CZ_UWS8JwA(msnC-l*-89f>*H(SXMtLF)v*|
zxTGjEFWnkR#IH0rDYeMj&YF>dFDJ7s)g`ecF*vm-GqsqJfepss@yyFhEppCDEG`C#
zD}(i;IW8g+>~s}~9&1JhPr|B*cA7v@YI;#>adBpT9>jb`2G$D4ip*k021RVvI472*
zrso$`f|OV@GO&Ufj12PF)Ivf4s**n?u_Q4dKQphSI07WZ$iV2y$bcjo2@&Ohg%u+M
zKiE+H(vr*^ec!|aYeoiBR1u<m$!3$8msw)R$iS?j8OF%K;+&t73Nk-4FBRg*ki?{%
zR7M6NpZw&+oUp{AOb{O`$WoF43Jx8g<osOy#DapH%;dz9%=|ok_fStn%5f{rO9qK1
z=46&sS~D{6q^Fj^lNBR_f`%s8?PzfeS7FV_;6^|R(Z1y`El5c$Nrjuu$e^Zy&2qGa
z1qvCqVrU8#Lk)?_f>dZ|_z+<fkuC*U$d{axnplM7RIcKZ#FEV7lFZ~{P^f|3jYtBJ
zKt%8v8JNowa~K&IT^JcyK{|^W8Ek#>i_-NI3lftvQuUMbb93|aiuH37OEQf0K`Qi9
zQj3#|G7CyF%To1&OLKD*iz<WRc3LwsFePU)GO*_4m!}pnGO(5w6oBc}ypp0yMg~?_
z2rY{0Fcq+{H6sH@ZfQ<Qrf*^aBSSDYCCEYJnOBmUo>~MgG{DK+v8X7q(kHXH1X-O+
zerZxps<j=sEb&D(6<Hlw=J5uXBqnG3CKiC>m!0u0q+(@cm;;Gucvw?t6I#qsXc{8}
zS8`%bvTtf)p0g(-gQEsTaqglCN<JknnZ+fbG6rYzNy#iODauSL1?6-75Rh^h&zg~e
zJ-H~eBn+GwQyCc?aXTorB004HY=m!ONrq=mPHK8$j$=`JX>Mv>i7QMJRJi7(mZj#f
zGd43a2;}4^rUYl^rRSu=ifMhc__2nBFrEU28=QtAH5I6=16715wHG4;b7D~uBZF`>
zB#|N4Y>W&nphAU_fg`&-BP=ne6kJ>)jDRLmMg~r>Euh*C)eirptkmQZYlu0Cj0~K4
zspT-gux93^q*gF8aDerCmuE0CFlI3_u;hSa1Uaw4Gl(@K10yJ(rX-e><}xxcMY}LE
zaF!OQ7J23sl$J0u@a2K)U;i}sqQruXVnzlbPz40m4l)&52cZf=t02+TycDQDlnM(&
z9I9R(UA=RDURq{KYF=_G)EYc0A``)ttynT#4=5WKl_lmtf{-K2H?bl(vnrL5fjJuF
zNrB?b+=86cAb7pa$Y6~-v4KlGL>;dmjHcO|ks%%u+2HcWH?aUxlo80EzKI3MDj;bJ
zT9AQL4WwFymRXRL2`NdyF@Up#V`PX#bq%sDpnyRuFG+C+J7XI=V+cEA9y{YkMg}f;
zPAg_-yvN8eA1ymk(PD`Aab-+oi|~XaBLfep4Df-rBpDfm&>U<Hs!pL%fIBYn+F*fZ
zB#}-7S<IcDS`w0(o9dIAR>H`@qTvY=WGTtaO=V;dOHVEF%g+N<@`**r=~fKQK5G{j
z7jRk3RB6D-z?zs-kdes9z?jF#z><_&lE}!wTo7Nv$Pj|24cVDk(g^+(X9u@bIz6?-
zxil#=8LL}`(JZz01XmixrMV%7pteV8Zio?-HiptBj0`NrrMZ!e4D2AP0;CYiGGb)l
zPRlGRF7Zt)Dax#1WRL)7;jE;b#A1C&Q3{a(wIqvElk@XZAbds!p5pwRvQ#)X5Y1f_
z1_szyLg}d`pwb7W^kdf0^kif}m4X(4pvXrgOhITn7Lwl~4R>>NF=S`rO_SWkpmsE*
z`^3n=nh7c01;MRrh$yTQQH9!pmeJ5!xr_|n#Hb_MeZs}5C5SW)bBk~~Hc`o(#N4Em
zL={j*My||N3>g`;pz#PUJz=RBQgT275}u4fHD5L(gD|9^L{ZPkAPltvRPIAs(JBUv
z4B{FtkghDGx`!k%Yt1M|2G%l2RnB3PoCED6aRuj>7A2>;WrBJ{(x6-m?th|maP&YG
zKM%tWhMkNI@*p-^pd)t^c^K9)tY>79#i9&SOMp6lJPaEcHZn5EU{M5j0T06t#``=B
zOBj|iGH`>^rvfB_@-RMNe8|K2i19Ha12eesAmCC|nVFZa5Kxq#oC@k%^DsVPe8|rD
zl#xLZiw&qrgoj}*!)hMJXN=F;8DH=)zGQsG!}yx<4I=|rN@7VOq&dOP_?Cz99mv-A
zjL#Vvw21E-GBT)uIwgAO9m#Z1GbOmBGAFfIFS)pwo$&(?<449%?2Mmz7{4%n<zf8B
zu#<=JJL3;_#-BWlzZieBGv4K4{KNQ{hw&fde?|sjkiQ@)1zw3WGFanm%YqUJ{;m)Y
z69byT@Fd8{AON-wocJKAiHC`iiHV1anTdswK?XfIT%7cs^Ye;J67x!mc^K|6+~r|n
zWnyAv5OB)RFDWi5N-XeAEy>7FDduNmViRC|#m~mXF2KaW!^FwN#lytS#KXv7jMFE$
zTje}Vyi9yN3_F-uc$oN^1bCPPnV8s_gm{>QnFJUa>~We%Tnn9t;W#My3xY!eT;qBq
z7H5FFe!K`V-^2nQCK1N3j0}vn>`bCOOkzypJWLWyk~~aOOwu4iMu16{pN&aQfYFAB
zNuEi8he?r1iHAv<NfvwFf~8ha4q#+p0Z|}hR6rh8<zZ4|)CXx+=V8)d(qw1S;$hNe
z(qU)P<zdoe(&u3~!Eln1K^*KpaO^<}U#HT{oD@($mpwuk)F8FuVKQJc1QA9&OnQtD
z85wvX5(>qcRjF1AAQ@vu1|D4`z{tQJ3DL~Rzzbo)R5NU1*v!bl4NgCx*0+@cBLlx{
zUW!6~ngTfC7lTB2Kwc>T4-r`@@Gxuv=@CYVDL~8wS+2(@#>ilaGycG78&9K`hslJ=
zl!svj!)hLeLkx#`81+D5W(G>X=1dkmOqNVcJd6^Il8g-O?x`gTK_DxwK(Yo*){G1S
zATdz+9$Z+OSOg9X8&G1Fg^9yk=E0@85H-ah6Kp|>zy|t(xCTsij0^$+MX4#7$t9^N
z3ZT{#NZcNjHaQ(ZZ68GiTLnf2p3J<G)FM!yQNdP$hf$PKjE7-A!vP*f6GkDFj0h=B
z85x)qGT50Mc$geP@y4Q%o0-SMXaMq|6DSWjgEBQF(Sj2Iw65V{a$(eGWDo-dDrPeT
zl(tMkgeyCf8xNB^lLsh`dGau9W!T2U<i+HT;t)tzkC8zLoXo&k!?Pr{D6u3T)VTx;
zf~|%(!5JA$A=MvRH3F&`AWd3q5}+m~2dH_Fn3S5s$RG+a0#e06k~O$Z3~E6*=4Iw4
zmZYYDnx;`OeIc18pejxZ<RCQjp?QpvfgRcuVq`#SUL@z|<fMW}`-=7blZsP|%0R<~
zpiYf7qJqJ#2-M9^NkMZkB+S5dGRRIp@Cc=-2BZZ5cO6LBnvnq<eJFyUCTD7iX9^<&
zUwUc@q#nsgO)V*AWZ(z+4-zWifo4VqP<t&XwHRE@GcqV)3pYsPA}_T>KQzb()CdI|
z0_8I@@Rj7dR+OX`<t660<rn2LGKfH33b7}+1Uwqf$iNC7-h*}QgHuZw8Bm*t!Kt7j
z0i^O0tcD{Ko?OIW2BRb+(0EHmVzFOpMG1INH;R#gB@fI&bqF+685uazQ$d3>piv9%
z6!3T&bPR)81JsV^NK8qA3b1InfD#BO5<tUCTueSpzFZ74Onzt)2C4SI5yn!I3K}_5
z(r|Hs#22I<PJ<2!>q9bmVo54!fUqbvH@_^^GmVi!5gPDdpJ7o9YM-%y`c7akdNDG{
zWagEn78R#Dm*$q{B!UJo1B&vK5|c7PW6q$Y4emUNfD=GsUP@w7ic4x)CU~%#k%12!
zgW!Az8h2u3U@0yHO^9%m<U^thB@4rZSc?mCGD{d4)S+$#>xW2MYhoQH;x0%mDo%xj
z4qA}G^tmuHu!Gy3{%If;us{Qw4bf=L$RMWS2@OoJIJB6uh7V>#QW`XZkyS#4Kyl^|
z>O~e5<Ww>;$fKkqcxb~~wbqOb{K@&b1*Ijao@tIr#i@BEj111mo`xC=$rz|n1~&wY
zGZ-0|(?Q8z6xBP>pg;>)6g$A)hKhhvBnznO1%($%xIh(v`o^Utj0~_YJhEnplaWQR
zx)Z5M7hG9flA6oNz?=^<6FUBunXeyEl$lo&TvC*pm}?Dda-s?|GO!nb6y@ZBT#Ci!
zFh&Np#Dap<yc9+TUF7hEh6u9LAVSc#i8Y#fsK@cCm%$e12;<ljQ&K?93q}Sujp%4_
zt_RK9fKnQ`x&?)4emNrpD=1&PK+2Hdocw}RMg~x}3}R%E(LhPN=<el0v=SH@#6cV^
zO#_fAUif^$UI1w$Ffxdsx2t^<GxHc3_=^!^FCpMUkU6!YfRTYMJ+;I;wUUv6BQp<H
z__1n0Jj#!#=Yv7x384A|LVH2R(lOfrkWoe~;+nX}E<gi8pxh41T8W?;Rd85(vNHwn
zFa<J&@G#mlI`A-BGukjRC?U$H%)GMv>{NXpaBtZ+wIneuF}WlkH2uPzi{P;{fzpys
zetvdo0VBg1<g^4e0Me=ONX$#gNi9}^sDv~pAcY4czK}&wG=@|bq>?8Iu@b*t<S2()
z>ztUA6P#I+YR%3R&d8vO5g^$7!^j|qUmb%YgABuB1_lNW1};$FnSqgE83O|Y6T@-_
zE>IH~&R@g81?u^t@YgY{XJBC90(H*8^d^SQV0sIb-pa5Iu6{d%C<7yCNPvNnVHX1f
z!)gW=21W)3hDfdL42-)Om?F0`FmGmH+0DQjxt)P+GXwi>29C&03@n=%*tauqZf4-x
z#K0oNy^Voq69WtLHU{2J4D3RD+ZgyaF|adlV-VQHz$GNOjX`KPgK*?_29eDSq8q{9
z*v-JepvS<?z`&ryz`~%+z{jA%Ai<!@puwQVV8EcxV9ubyV9%h*;KrcE;K!iN5W%3s
zu!n(xfd}F^hP@1+6)&8iCN%>S*x@o@83vHcxHd2_FfcNJ>|g_n8bAZ@AOk1EA%??H
z9i<G+U|HQw3|!k7#I$xYh%+&SYi(nY5R%-+AO#kc7LpN?-NqodjX@qF4RSs+*k~aJ
z7SN&_23`hJ1~CRR1|0@-Bq!=J9AQ|^z`$@6?r4z68U_ZaQ;sokf_kFRP}cxEgaH(a
zAgAnPP+(*L*#z+f7XuRm1A`R<H-j|;7pN}?@c?5u11kd;0|P^^)=maRMuwdXN{kFX
z+B+GP85w3WRBG>JP+?>^z@X~8n?WsdJA=BP&Q1mmkcj3s1}!TVNfxL|X%GvnRC^nP
zjwP$E1nV{i-R1uu>WVPv?_e;rWYOKmU?jnkZpj8=BwKR8jgnxK;Mm1r%)qdX!6bb7
z{}wG!*t38G2ok>z4Dt-F4C)MS41Nsm3?U324B-sE3<(VW44Di83`Gnf3>^$%4BZUj
z;K1`>U}x}SU}HGNaGHUYL7gFy;S9rB24;o?1`URD45t}b7%~~;8O}4DW?*9|Vi04v
zz;K#@gF&7lli?!6WpFU{GF)NU1`T*I1}3Q7Rk++W1_p-f3=9lX3@m>bc-R?k{A18y
zXSm7EaEqPc#xDlN9}LFOD7wwS1se5$M$sw;b_O<3gzsiBjnvx4V8)f&wVlD-PnVxx
zJza#sB0qf_gOw$V1dG--2J38)g03A5Hu>xQL>TPWgQHiEL7%~v0g`yc7+4t?7-AXt
z8R8k_7!n!u8Il+b7?QzZV8X!4z|Ww-aF5|W12cmhgCN5Lu+I$`SQs8MJYrx5xdI$6
zpcOSH438O3Gcbbv#Kypw&(83Kfs^4W!!rhEP`=<<&cMqc&cML-atDLMZU)E5?F>#n
zNa@8_2bv1j>A=#9pDr|=I9stm^Q{#tvl$yGnZS~n6}u!mRAUi{rNYQy#UaVDjlso=
zQ<782bsK}56_+Fzvym0IBo~X(4hHuf3?5cI+M;Yb7(90|crh^SWbkHY2!{ylWbk2P
zIKZGO$+L~YH(Zi+8-w3&2LDKq;s8mW?F@mCyw}3Uxcq<D^8fzKw!0ZLBeydI`9W!r
zL&09NVukwAijCQfU6fsWCqpnJ!y<+}ZBh0e44yEHtT>p>I7K-@4h~tw;4K4XKm=^T
zJefrdy1Jt5?K>Dez>Z=;H9?ef8$&2qf@2#)h;0ie<MRI-Ti6+w|L@g>Sc;?*BEXV@
z<N{`xc2?#c44%3>8N!$u!X?>298frec$*l&K@kC>*|sr6NV4u=h_qstWCKwgn;61(
zGekvhXNVSx*~Snn$-a#tZW}}VHiiTwnMAM*I1IKiB*CSHl2MhVfRu4yGawZ#gWUk;
z%?xRvxQC|+PDxH^nwSV;fr}JXD=sAWq=Ss(0w*uHZOmreqTG@Y!2=AM+ZaL?G58_r
z$w25iz@RD04GuWCSJT=NTETJ$7(k_1a^Gf#v=(m0<^Pv0|DU}H<WNx1!s34$LrBhM
zhBPEwGPg0rZemD-hZ6H<hAc@AM7at|)^zt=7H-dFA$cxKk^|FoSxBDC274|G?m2Bx
z3gToo<AQ`eCpdl=F_=hligF{R(QOPNqFhTD#4&}<xWLvQ14VN%BZDYc2J2CV940Gn
zW-}gUGhR_%sKg=$KS@qeUL-TE_?XT3MfoN9!11gl$t}ub#4O6&9t38wNb-sDZ(|6B
zL}E}24`T~I<MRKPT6h_k|6c>j2;BR&G34%M$cx<0kZ;8+$t%gdjiEr2+lo(;Z=V@I
zvzdUXfGGbW1_MbxQ2`?>K}kU?AxWWqX2Q&7BBCOq!iyLLB!xsp3@t@lL>QO<f8Qd&
zxcvWlXeqaup>PvJ;SPo(W-~rfz8wt3iy53ZF^IxSBfcFB0g{}OyxSN`L>Me~FqH0K
zumSPPMETlxFci1%U?|_g;DIQu_!yV}-@S=JbO%EbQh^I{DKsH9OY*_WTq}O48>|GF
z&3GjF!CB-0gELYB6qFQ%>T?FMKqan_q!6gY6_ykRm$>k9Rzy+&=4c*}qeT#o;$d9=
zf2X9t4u+!T|0|J_NChaD@or<N+{RD^FDGCHOf^)p2AgCpRI(16WIa@}VH-muhOtdx
zNfCzTZ49m0G`E4}w=tAqlWd1dmcS*McQAD9VCaN5Kp3AfR5CCyWHK-_<S=kE<S}S5
z<TIEu6f)Q`6frn56f-0-lrm&8lra=BlrvN?R4}wK)G|zEsAE{k(8zFzp^4!rLo>q(
zhIWS241Ek|8TuKnGE88&$1suMIm0A|4-AtT{xM8p<YSo1D9td9QH5bTqZY$VMq`HA
zjCKrj7{eLnGsZGZWlUz6%$Uirn6ZLk3F9<|m5hrSRxxg5Si`uJVJ+i9hV_gm7&b7T
zXV}E}l3_Cw2g4R70fwziS`6EmJQ=n#1v2bn3T4>MRLQW1X$HeyrnL<Fn65DFXZpmj
zm+1$?L8jjfhnR&Kjxg&n9Ah?OIL;i#aDus%;Usex!zt#C45yjTGn{0;%5awX2E#e#
z4-6MrxEZdn2r}Gc5n;H+qReoc#fsq$iyy-+mJo(VEU64nSTY!%v6M5sVCi6Z#WI!Q
zHOqX4H!PbO-m+|Cc*U}Z;Tg*zhEFV~8NRYyVffB+o8dRhSBAf=q71)Tr5Tx7RT)`W
zwHY~B%^1~LoftJ(JsGuG!x?p0V;S{W6B#vGvl!J`3m7?A%NUJWYZxt9=QCQdu3)rg
zUCn62dWF%B^){nD>l;QVHdaPwHV#G?Hf}~YHUUNtHep6zHUmaKHeW`6wk*a#wsyu4
zw&jfBY)2R)*d8**usvmr12vi$=P+n8WHQ7sJZE^pz{ya=5X|tB;S~cHLj{8`!)t~Y
z4BQMY42}$M7~V4QFeEV~GrVJX&%nW8$}pMX1H(2376v<pE{2Z`s~K1s92wdfJ~3=&
zU}Ml?n8)y$;W7g=qaZ^N!xx6l44jO74518P8NM-aFnnexWBAUnnSq^YHbX3!#m!X7
zP!Dd1axquH#F)ciVl3hewh(nJ-3*3c^Y~dh7)-$C@v&qxgo9;yS-vtTF#KTn$sow8
z$KU}L<72(epbPe!FzXuz8L&S@Sg$acfc+uFx`H7C?0Ny#`3!|%H}iv<d<?(9O<``f
zd*DVfBg0uX8HV2sn;DoGuCj?R{9*XUz|3%ujho>w!#4&NhUaWd4F4FmF|aaxVExJP
zpJ5vV8{-L9MMhBLo}KYLs}v(6!!`yE7D1*Pj7$vM7&uu(n65H1Gi+wyVo7CcVfetv
z!obav!PE#2KOUAVOrngejBE_N;9k%g20>^juVG+?ge@aG12ZH<895j@prLn_feRXD
zR~fiiz~RHl!N3Rg;~EC29~s#hpnhcJWME)``0*M8BgAKn95A0Ta=?9d4eqmRaGzac
zfcfki+-KJqI6=*6#vBIazYOB+j9lytH~ur2GjM>IU>>N$z{thU$j!*kaD##2KSKor
zGhC8^;THqbe+G4!dPa6e9x&o!XXIjJVED@*%g)HdC}H%If%O*y>pzB{aIJqC%-I=k
zGX7+U`NhEWhrxxN;RcG(KL$IH8H{FNePZkkIgE^d8RS96{bVrs#lZTXL4`pOVjPOK
z5FwCWkREnMUJ%6ya=9dfC`6J7_3R9D*cs+9g7pcLWX}%<);|nFjK3J%|1b!FJ6#};
zvNLjnJ6)bX7}y#47#Kif4~+bf?iZr~11F;(qY$JU!|;`X72IWt*V@6*r3G%V>|p3%
zwn3^{;awS9%&tuLHijNh4}@hCLm{+klm^v|EQp$sk#YI|1E5Yfr1z@Ez{$YCn9RV!
zn8Luzn8v`*n9iWbn89Grn9UHun8Ogwn9C5ym<K9+7_=Bz80?|hl7&H!K^L3_LH)FN
zXcpvW2mogaMsQXD^-IC37=^*TIgqOD(0(Zo1JhpyX;8ZQ#o&YyC?X7;pt(e7pL9C|
z6S!X+!fYcoi-C6sL$Lr?hRt#Yo*fLuQaK>Dw1CYL21RKBn;aWxWiGvqAxWrr8$;|i
zhWH%}eajgnktO=!5}=TP^i?4tQOLl=Sj@o2Si&H{Sk55HSjiyISjC{iSj}L|Sj!O1
zSPu>fkk1$xLKwD!hnkoef*8daHbZ--oS+`J03(O8C<7;Gq82)eQO&@^0E+uXe3qO@
zv1!FE$qjAq#DiGS-UPIH$pdX5LAndp5}cB75m8=v19HY31}Ur(mYm=g<<8~*=k8#b
z(5{|r$tl69o~<sysh+M`F2R~D!Je-v!Z0yEe+R?l?Bsm)bW3gtZqTS2Bynhg#$6cO
z7?>G57}OX$8LSz*7{VC48FCpr8HySE7|IwYFw`;5WSGym0vs$c44e#_3|`=}oR>k3
z!53Uh@GvkiECQFLppN_^Mk#Pd9wa8sa2lL27BPGQ4}^fkWEf5}urn|-%x9EkIL*Mx
zFrR^$QI6p>12;TLLCn3%05cah)FH{h`j<g~8C;l1fXbKO49?)PhY6b1<QX^_6&MvE
z5yH&Fz{McSz`(d2lFiyZ`7BxZEZO)hIruEO_$+z&Ecy5>1(2gkNKyzIRewP&XjBPH
zut*B;WS9aPa+<o0VOo2#C5r?bst}|hoovY_!GSI@eFsBnvL%NE7rMkuuml&lMGumL
zjcJ7}VyKqjL5PToz!O5UC65FjRvC~W!iCw%mV6QdATfxcNJfAJ5egyh&Q7)z0QVy*
zm;d{}n_+e&+g^q_k<4s+*dv)Wf+ATYSb`#1CD?+3BU!*=AU=x(8%U5NC^(W8BFF|(
z$pI4N3JTuNFxN^5Y!t{42_BFfA4pChXgk9^D`80?N#Pv~^Q}ZAMOd~mERb%`mK0$H
zGhj|aq|!Lhzz^eo1`fu<4BU)I82A{EG6*srV-R6H!643fl0k~`6oV||IR*#D3k<=G
z7a4LGFEO+-US^obc$Hx@<8_9!j5ip*G2UcUWxUF$&3KzpkMSF0CF6I-DU81u=Q92W
zr|cOF{0s{jy1=a&5e5f_*Wi>b3`#z*l+CyuTJ&)+u4e?LVkQP|#x;ye;6W`u#+8i9
z;Nd($#$}8u;Nd(G#>I@P45t~m7{nPDFsd<}X5e9vVw}sU&TyK6k3p7k7NZ8kX$Aqt
zN(MVdO-3ySA;u{T%8c5KS`5OBa~Y%<br`i6MBups;-;$%FgL++g(?Hfe+DfEZcwGj
z3<coY{4YZpD3knT=={Y1%OSc9oS^k4&~g`PtT_!dqzf6Q1&=i|u`qCg)@@*_%tBYm
z!NAFA$Y=z~bqq*mE(CR9kj><Q=2K$^PSE-hs18>KM)0^ItJY?Qg^1!BJX*{oz`(*J
z2#z7hkU1-(DYz|&7>@>tfGQpEyaFSrVliVhhZ>FKm_l^Nh(H}<!NAFA2_H;Hb_{ro
zA5wQf93#QN!X%0881R$@^58ft!&(MV_<$Y5aEyVI(F&VmMA02119OZ37idBX8tR}h
z1x;dbK!*oGx|qOY(%?8^s6}!M2cs>c9Rq^^7id-ssy~B)1>D$>lVsV(prf{fVbN>`
zelS~O2g9Oy4D2k+8CaM>?uGagVrmH3R0VLsEe9T>1{Lda;4x~@0KOcfBg0z;7EsfY
zfsKJ#g4uzQfrHVBVJFm9Rd8%FFmQqf)<EM=pg4sj18^`h$TF}n$T2W8I)kQA7+n}v
zL8niI8G{*CGDtG0GB`6_V&i1+XAEYX${@)U#1zUD%pl2F%D})N#=yi_#=y*2&RD@%
M31;;%_A^cZ0HzrE{{R30

diff --git a/target/classes/com/application/Main.class b/target/classes/com/application/Main.class
index bb00eed43433b61cc196992fda395da634c47169..f118b6220aa918d8330fbdac3923da893dda2b49 100644
GIT binary patch
delta 4188
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

delta 4198
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
OXHA5&rodU#7>fbO?`K>9

-- 
GitLab