From 5a6fbcdad9246eaad115cce61e3568954780d9f5 Mon Sep 17 00:00:00 2001
From: Eilert Tunheim <emtunhei@stud.ntnu.no>
Date: Fri, 6 May 2022 11:09:02 +0200
Subject: [PATCH] Added notification popup for input parameter sql injection

---
 .../java/com/application/DB/Constants.java    |  13 +------
 src/main/java/com/application/DB/DB.java      |   9 +++--
 .../com/application/DB/HelpingFunctions.java  |   8 +++++
 .../com/application/GUI/InputPopUpWindow.java |  32 ++++++++++++++----
 .../application/GUI/OutputPopUpWindow.java    |   3 +-
 .../com/application/DB/Constants.class        | Bin 6414 -> 5928 bytes
 target/classes/com/application/DB/DB.class    | Bin 16264 -> 16264 bytes
 .../com/application/DB/HelpingFunctions.class | Bin 8754 -> 8880 bytes
 .../application/GUI/InputPopUpWindow.class    | Bin 8443 -> 8701 bytes
 .../application/GUI/OutputPopUpWindow.class   | Bin 4706 -> 4672 bytes
 target/classes/com/application/Main.class     | Bin 11373 -> 11339 bytes
 11 files changed, 39 insertions(+), 26 deletions(-)

diff --git a/src/main/java/com/application/DB/Constants.java b/src/main/java/com/application/DB/Constants.java
index a52c3f9..41b0077 100644
--- a/src/main/java/com/application/DB/Constants.java
+++ b/src/main/java/com/application/DB/Constants.java
@@ -1,7 +1,5 @@
 package com.application.DB;
 
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -15,14 +13,6 @@ public final class Constants {
         // Empty constructor
     }
 
-    // Today's date
-    public static String CURRENT_DATE = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
-
-    public static String TIME_LEFT = "";
-
-    // Number of manual moisture checks
-    public static int NUMBER_OF_CHECKS = 1;
-
     // Number of wanted drying periods
     public static int NUMBER_OF_PERIODS = 2;
 
@@ -32,8 +22,7 @@ public final class Constants {
     // Confidence interval
     public static final double CONFIDENCE_INTERVAL = 0.80;
 
-    // Non linear regression
-    public static final double ADJUST_REGRESSION = 5.0;
+
 
     // Current sawmill settings;
     public static final String PROJECT_ID = "sf-drying-optimization";
diff --git a/src/main/java/com/application/DB/DB.java b/src/main/java/com/application/DB/DB.java
index 513b38d..d135083 100644
--- a/src/main/java/com/application/DB/DB.java
+++ b/src/main/java/com/application/DB/DB.java
@@ -1,6 +1,5 @@
 package com.application.DB;
 
-import com.application.GUI.NotificationPopUp;
 import com.google.cloud.bigquery.*;
 import org.joda.time.DateTime;
 
@@ -362,7 +361,7 @@ public class DB {
         String extraInputParameter = "";
         extraInputParameter += extraUserInput;
         if(locationID == 124){
-            extraInputParameter += "AND CalculatedStart BETWEEN \"1990-01-01 00:00:00\" AND \"" + CURRENT_DATE + "\" ";
+            extraInputParameter += "AND CalculatedStart BETWEEN \"1990-01-01 00:00:00\" AND \"" + HelpingFunctions.CURRENT_DATE + "\" ";
         }
         if(locationID == 174){
             // KILIN_ID starts at 0 not 1 in the database.
@@ -375,8 +374,8 @@ public class DB {
                         "SELECT MAX("+ nameParameter +") as DryingSchedule, MAX("+kilinName+") as Kiln_ID, " + startDryingTime + ", MAX("+stopDryingTime+") as DryingCompleted " +
                         "FROM `" + PROJECT_ID + "." + locationID + "." + valmeticsTableName + "` " +
                         "WHERE " + kilinName + " = " + kilinID + " " +
-                        "AND "+startDryingTime+" BETWEEN \"1990-01-01 00:00:00\" AND \"" + CURRENT_DATE + "\" " +
-                        "AND "+stopDryingTime+" BETWEEN \"1990-01-01 00:00:00\" AND \"" + CURRENT_DATE + "\" " +
+                        "AND "+startDryingTime+" BETWEEN \"1990-01-01 00:00:00\" AND \"" + HelpingFunctions.CURRENT_DATE + "\" " +
+                        "AND "+stopDryingTime+" BETWEEN \"1990-01-01 00:00:00\" AND \"" + HelpingFunctions.CURRENT_DATE + "\" " +
                                 extraInputParameter +
                         "AND LOWER(" +nameParameter+ ") NOT LIKE LOWER("+'"'+"%"+ "test" +"%"+'"'+") " +
                         "Group by "+ startDryingTime + " " +
@@ -608,7 +607,7 @@ public class DB {
         // Sqlstatement
         final String sqlStatement =
                 "INSERT INTO " + PROJECT_ID + "." + LOCATION_ID + "." + MAN_MOISTURE_TABLE + "(moisture,tree_species,dimensions,sawset,moisture_goal,no_moisture_check,start_time,stop_time,finished) " +
-                        "VALUES("+moisture+","+treeSpecies+","+dimensions+","+sawset+","+moistureGoal+","+NUMBER_OF_CHECKS+","+startTime+","+stopTime+","+IS_FINISHED+") ";
+                        "VALUES("+moisture+","+treeSpecies+","+dimensions+","+sawset+","+moistureGoal+","+ HelpingFunctions.NUMBER_OF_CHECKS+","+startTime+","+stopTime+","+IS_FINISHED+") ";
 
         System.out.println(sqlStatement);
 
diff --git a/src/main/java/com/application/DB/HelpingFunctions.java b/src/main/java/com/application/DB/HelpingFunctions.java
index 7cea97f..b2dcc3c 100644
--- a/src/main/java/com/application/DB/HelpingFunctions.java
+++ b/src/main/java/com/application/DB/HelpingFunctions.java
@@ -27,6 +27,14 @@ public class HelpingFunctions {
     public static String DIMENSIONS = "";
     public static String SAWSET = "";
     public static String MOISTURE_GOAL = "";
+
+    // Number of manual moisture checks
+    public static int NUMBER_OF_CHECKS = 1;
+
+    // Today's date
+    public static String CURRENT_DATE = "";
+    public static String TIME_LEFT = "";
+
     static Map<String,String> manMoist = new HashMap<>();
 
     /**
diff --git a/src/main/java/com/application/GUI/InputPopUpWindow.java b/src/main/java/com/application/GUI/InputPopUpWindow.java
index 5a47e8b..3a2f41d 100644
--- a/src/main/java/com/application/GUI/InputPopUpWindow.java
+++ b/src/main/java/com/application/GUI/InputPopUpWindow.java
@@ -1,6 +1,5 @@
 package com.application.GUI;
 
-import com.application.DB.Constants;
 import com.application.DB.HelpingFunctions;
 import javafx.application.Platform;
 import javafx.collections.FXCollections;
@@ -117,8 +116,8 @@ public class InputPopUpWindow {
         startButton.setOnAction(e -> {
 
             // Sets the start time
-            Constants.CURRENT_DATE = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
-            HelpingFunctions.START_TIME = CURRENT_DATE;
+            HelpingFunctions.CURRENT_DATE = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
+            HelpingFunctions.START_TIME = HelpingFunctions.CURRENT_DATE;
 
             // Retrieves the user inputs
             HelpingFunctions.TREE_SPECIES = treeSpeciesList.getValue();
@@ -134,27 +133,46 @@ public class InputPopUpWindow {
             // If the input is null, sets the value to be empty
             if (treeSpeciesList.getValue() == null) {
                 HelpingFunctions.TREE_SPECIES = "";
+                err = false;
             } else if (treeSpeciesList.getValue().length() > 10) {
-                treeSpeciesList.setPromptText("A maximum of 10 characters is allowed!");
+                NotificationPopUp.displayNotificationWindow("Maximum 10 characters is allowed for input parameters!");
+                treeSpeciesList.setValue("");
                 err = true;
+            } else {
+                err = false;
             }
+
             if (dimensionsList.getValue() == null) {
                 HelpingFunctions.DIMENSIONS = "";
+                err = false;
             }  else if (dimensionsList.getValue().length() > 10) {
-                dimensionsList.setPromptText("A maximum of 10 characters is allowed!");
+                NotificationPopUp.displayNotificationWindow("Maximum 10 characters is allowed for input parameters!");
+                dimensionsList.setValue("");
                 err = true;
+            } else {
+                err = false;
             }
+
             if (sawsetList.getValue() == null) {
                 HelpingFunctions.SAWSET = "";
+                err = false;
             } else if (sawsetList.getValue().length() > 10) {
-                sawsetList.setPromptText("A maximum of 10 characters is allowed!");
+                NotificationPopUp.displayNotificationWindow("Maximum 10 characters is allowed for input parameters!");
+                sawsetList.setValue("");
                 err = true;
+            } else {
+                err = false;
             }
+
             if (moistureList.getValue() == null) {
                 HelpingFunctions.MOISTURE_GOAL = "";
+                err = false;
             } else if (moistureList.getValue().length() > 10) {
-                moistureList.setPromptText("A maximum of 10 characters is allowed!");
+                NotificationPopUp.displayNotificationWindow("Maximum 10 characters is allowed for input parameters!");
+                moistureList.setValue("");
                 err = true;
+            } else {
+                err = false;
             }
 
 
diff --git a/src/main/java/com/application/GUI/OutputPopUpWindow.java b/src/main/java/com/application/GUI/OutputPopUpWindow.java
index 321ebdc..4131d72 100644
--- a/src/main/java/com/application/GUI/OutputPopUpWindow.java
+++ b/src/main/java/com/application/GUI/OutputPopUpWindow.java
@@ -14,7 +14,6 @@ import javafx.stage.Stage;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 
-import static com.application.DB.Constants.*;
 import static com.application.DB.HelpingFunctions.IS_FINISHED;
 
 public class OutputPopUpWindow {
@@ -50,7 +49,7 @@ public class OutputPopUpWindow {
                             !moistureCheckTextField.getCharacters().toString().equals("Please enter a value")) {
                             HelpingFunctions.STOP_TIME = null;
                             DB.pushManMoisture(moistureCheckTextField.getCharacters().toString());
-                            NUMBER_OF_CHECKS++;
+                            HelpingFunctions.NUMBER_OF_CHECKS++;
                             window.close();
                         } else {
                             moistureCheckTextField.setPromptText("Please enter a value");
diff --git a/target/classes/com/application/DB/Constants.class b/target/classes/com/application/DB/Constants.class
index baab2e803b66b6756e559d63ec15e8f4a94e25b9..c9a5150116d2bbe9927d6a19dc06f82d93019c91 100644
GIT binary patch
delta 2301
zcmeA(TA^2e>ff$?3=9k=3>Uc=^cg0yGfd)QU;@#Txfpa9rf@N^FiZuBOarl|gNPX%
z3^PF@vp}5L91L?n^jr>xc^nM$IT#jjFf8O?Sj54wn1f*n2g6b>hGh)PIT=_OR&X$^
z<X~9E!LXWxVGRevT9DW}E*AzChV>u=Hh_qY91NQ{7&db-Y~f(o3R19*gJC;}-T@+Z
zf{0!047=GG_HZ%mW!T5Xpv|zKo#DV_Jw`DmM$gGkjKRuW0YUy=uFfIxo-T|GLOxlE
zWr_MZiFxVz!6ikRdFj?13<oD4VANtfH2F1S3*+I<1xzoP7>{g@WSz^(oWYPe`6rjD
z^-+dnJPc(F1w0JL8BXvpw1QYw3<Zn~oMDMMxv3?Y$;CVjCmBxhFw}xXnZ3(1co>>M
zOohpQJhGG9xHGv=^DrD`IK#u>$KXHt7q`7oD1$!_Lp#W%4iM4JP%zn>CrU1!!Jm<V
zGblANCoD0iG?j-T8KlmD!H|c+h{13YuMYQF9)@!a=Xn@17%pr!=apid?7*K~ug}21
zpw7U_V8CF=z`(!>Qp>==Ajx3NV8X!2V9LP2z{Ft2Ajx3CU<v12F-S64GZ@18HVl#s
zwn*}J43Z4?NPGbXNd^Zbz7&HbgCm4r54J#>L6X4<A^_&gGDtEwBk^4rBpF=MEObMX
z=Vy>)a7W^UEc8I)3o=MDcp~wI7$h0I!2EiM4@DRx8N9&)5WXmbB!dr<g}w}upzvp4
zWC#E|Fpxo#AqYu5$Vb6Qe2|AikoX`Eg);b~=nn&#Uk?r9a0W?+2qX<k43Z3yNPJ}m
zNrosSKFCMWNPLiwVvzVM43Z47NPJZWNrpI(g;4uI9*Sr1XQ)T^Q38?%bp}a>L?k}Q
zM@dM0kdKnle3XJDpUNP~kcMPoIs-og6GH|=CIcfw76Su=F#{t5BLjmu1FP0{2F8ux
zP|apwU;vc|3=BLBEDU@MISe2cBLf2iD?=_r9yopGGZZi|F=S1y6*BV$sTX2kVPIfL
zVc=j$We{aZV^C&DhwI~DkYy-jC}Ln>D2AE@5h-C{fW~7f0~aWJf=rwwY>i}KE&~Tc
z9)ko!K7$5B0g{1A4CQDBf<!9d239g~GE_mG*deToWMT;e2SX`?AVV306hk?Zi6R&#
zf<&s}Ce|=;feHtZ6DLm*)0(U!qErv^xEupJ0|P@f0|!G5gCIjKgA_v@gEB)sgAPL@
zgC#=~k`2ZTb!ct|i6Gm+$xzSG0J4FBfk6foEes3{ESnf4HZU+SFfxE_V*`t}L4u8k
zp^<?LR7`=iOui{%76?)z#=y$Jz|h6O!O+bh$k4+e#n8*3%rF7TA+ik3Xbu61pgN=l
z;*iM+qN1`OQy~^lfmjT-w-pk+lZ3@5uM|~53gKA{91OD=BpBu}XfVu0vQ~+q4b57R
z2x^?QLkyiPC59Yl3mG^V7BL7iEM|~mSb}6CD27mz6-WfxBU}s}P!p$!`5?vD3I+~_
zl?;Lms~DshRx>CwtYOe$SjS+=upY^DV}?#N_ku)_P3L6jf&>$4e5s+w*JentLE@_$
z>Y!|KGq8go@wJ_SgJB1QAj3`uDTZAP$_#su93somgXR#B2&zMRu{lHo-601c4q<3y
z;9%%u$gGDJ0y`Pl7(k$xbu)vefX!wGt=$aTk*s?ebRwBKb}+C8N3sa8f#@9!y4xA_
zHZw>d<OPgD5|Jzd79bj?Kn_WPAV?yTML-Bd!xX526!<`_5D*5*M6y6=m<kP0VFXF_
kQegK9GO#d+FmN)MGH5c`GI%irGh{PFF)%XpgA1(*0ENmr00000

delta 2778
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
I;G%6F0EGe67ytkO

diff --git a/target/classes/com/application/DB/DB.class b/target/classes/com/application/DB/DB.class
index 5c58c7b89d7fff8a3e2b14f0002b918b5e5f5fb3..daa82426512533ee83c106d0cf36cbd0358652db 100644
GIT binary patch
delta 1041
zcmeCE@2KDKmXV3kWAb~(b4-jLoA)z?$}<X07FDufRNU;R)W=q@#=ya#!NA3!$-u*)
z#lXj)%^=92#~{L>&mhiVz#zq7%pk{L%Am+#&Y;R*!Jx@t$)L+%#bC(b!(htb%V5C}
z#Nfyf!jQrc&XB<n$<WCV#ju<qj$s=^62l3G6o$(TsSGz5(i!eDWH3Bp$YglVkj?Om
zA%~HbA(xShA)k@Io}qwIgrSg8lA)AQm7$E$jiH<|ouPuUgQ1dfB||miS%x~sn+)}g
zzZe>rq!}8SY#3UZ{2AJqk{H^VN*OwsIv9GG4l(pH{bA^1He={#E?}6(+|Dqac`n0D
z<}D1fm`^dxVSdOkm-#!xd=`F&1uUuzi&@MWma}*<tYC>`SjAGG$FPQ_f?*v?JHvXG
zX$%`#Rx@m3Il!=u<vqhLmLCkeSy>p?uyQf%W94Ny$STiph}D_lIBNjIN!B=qQ>>W`
zr&$Xb&ajp-oMUZaIM3S8aDjC?!$sCP43}9~F<fEY%5ar+FT*v~Lku@qFEZR@y~A*e
z^$Ejm)>jM<SU)j5Wc|wUScLTl!&5dEhG%T*4A0p-7+$b>GrZcIt7XDg|C524;SU23
z!#@UnMkWReMmB~PMh=DrjGPP)8TlDrG72$#U=(He%qYh2pHYHQj!}wHlTn({o>7L;
zk5QH}kWqoLj8TcPmr;drDx)gn8b&q7!;I>TPZ>2BUodJieqhvQ{LHA!_>EDYNs7^k
zNtMxr$&=BHDU{Kisglu}sYZy=mZ_f6o@p_o1Je;kN2cS9&YO)4YuV}}8CV#j7&sWC
z8F(0D7z7w&8AKT486+4J7-Sd|859^(7&IAE8H^Y+8O#{77`z#?83Gw|7>XG47%CYH
z7-|?x8GRWW8ABOc7-JY)8RHqd8Pgd189Nv!G0tF|%(#?s3gb@3X^cl0r!!t;oWXdN
zaTenv#@UR|80Rv6W}L_Pzn*bE6D#8aCT_+>OcIQXndBL#F{v`HXEI{k%w)&7g~^R^
z8&fdjF{Uua9ZV67dzo?>_cPTn9%O1|Jj}F&@d(p$#-mKz7%wp$V!X_Bit#Gbb;id`
zw-~Q6-C?}R^pWv4GXvvYW=_WY%o>ajn6()nGFvgeWOikI#T>x+nmL;B4YPR~lMHhi
zlN@sslOl5~lM3?$CN<_6Od8C4m^7L1GHEeCVA5g!#iY+7$z;f4%Vfk7!eq=6&SbXv
ziG?yts0{-XlPv=alM4eslPiN3lRJX}lLv!0lNUo6lQ%;NlP^OVlRrZvQvkyPrXYsJ
zOd$;Gm_ixOGKDi-V2Wh8%@oD(iz$ZTFH-_z8dC~m9#a})2~+y!7~5n<$sz_0rV<7&
hrgDaKrh0}vrY44BrZ$FJruNA<?7A3*CMVmg0suWc|Dyl^

delta 1041
zcmeCE@2KDKmXV2paq@e{b4(13oA)z?$}<X27FDufRNCyP)W=q@&cMN-$-u>+#lXX$
z&A`W?!yw3@&mh8Jz#z_G$RNdF!XU?B#-PYx!Jx`u$)L$##h}Yz&0xsj%V5gj$6&z_
z%;3ln%8<ek!H~fa#n8zR&9Iyyo?#n9GQ$amREEn8X$&_QG8pbMWHLNr$YOZTki+nc
zA(xSrA&-%Zp@5OUo}rLYgrSI0lA(-Im7$!`jiG`uouQJkgQ1FXB|{D4S%!MXn+y$%
zzZe>sq#2r+Y#7>@{2AJrk{CLeN*OwtIv9GH4l(pG{bA^5He;B;T);4$xt(DK^IV2m
z%v%^{GoNCZ%lwdG9`kpG1uXmw3t3bdmav#JtYGnCSjiH}u$rYlk6|rK1;culc7_cs
z(-=0ftY+BEa)4nw%X^01EI%0bu(B|$W#wYn&&tbih*h59Fsn1e3Dy9HQ><|er&%)@
z&af6ToMkOzIM3R`aDla-;UepFhD)q-7_P9cVz|n>mEjueUWV(ehZt_MUSzn%dWYdQ
z>l21MtgjdzvVLNC#QK%ti3sZthG%Rn4A0rr8D6k?FuY{*W_Z0hSIdO0{ucu?!(Rp-
zhW`xujLZxcjO+|8jGPP$7`Yf8G72!fWE5ujz$nJ>nNghKKcgh09HTU&CZi0aJ)<n6
zAEO*&AfqB<8KW{|FQY2sR7N$%HH_+vhZ!{(pE7DPzF^d1{J^Ng_?c0U@f)K7lN6&d
zlPaSrlP9A&Qz)YaQzfGfQ;iU#9aBA{1JhzgN2Vi;PE5xcT{asT*0R+{F|aU3GjK4*
zFz_(OG6*onF^DiGFi0>aGRQC{F(@#mGH5cUF&HssF_<xCGk7!RFa$E@G88f9GgLAb
zGSo1ZG5Rt#F@`d>GR82rF~&3YFs3n1VC-O=%s7K_3gc47sf;@rr!yX5oWXdJaVFzc
z#@URI80RoPW1PqMnQ=bj|9Zv+OstFxnYbAjGf6NmVUlN@&ZNq?fysz*3zHq=Rwg&b
z?M%Up$C<(ycQQpV?qkYjJit`Lc!;T$@d(or#-mKj8ILh-W4z3Ci17;3DaLC|*BPHM
z-D14XbcgX4(?`ZT%nXe8m^m3AFl#VAWY%VU#B9a*irJO%HFE&t8|G-nx6I~gOtQ>n
zO!CZ4OiIkHOsdQinADkPFljRHVbWs0%cRZxfJvA67n1>tB$E+~Et4@z2$Km*IFtG2
zCl<;qp|%W6Om++`Os)+4Ol}NXOdbpdOr8whOx_G(Og;=HOnwYyOaTmyOo0pwn1UG=
zGlep&V+vz9%M`(IfhmgNHd8diFQ!<Azf6gYX-uh%c}(eyB}^HcV{DTdC5st2m`WMA
hm?{|3nHm`Kn3@@inc5j@nK~xlu<K$Jo}6s23IOW;02%-Q

diff --git a/target/classes/com/application/DB/HelpingFunctions.class b/target/classes/com/application/DB/HelpingFunctions.class
index 36d469c1d0ca1685925a9c9f742790f882b7ae9b..bee6c78cab5212aeffc64187947c97e9dfe21377 100644
GIT binary patch
delta 2457
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

delta 2368
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
S8SXRO1=AlG-Z5NbkOTmhpQ@q&

diff --git a/target/classes/com/application/GUI/InputPopUpWindow.class b/target/classes/com/application/GUI/InputPopUpWindow.class
index 5fe2e775768312ba384e0ac7373115fa70bfc89a..41b8094813fed38f9b19edfe07460b22d908c4fb 100644
GIT binary patch
delta 3451
zcmezE_}4l6)W2Q(7#J8#7|(JsG&3AvXE?~kz{GHXli?7<VG!#G2g6YieT<#qI0wTC
zE(Q*UlN=1EK=f%2hBF)t6WAHfaxk3ZU^vgkaDm|>JHsU|24RNF91K@L^i>XqYaseG
z7lZJ`La%xbh7TMJAK4i`aWH)5VlV-j^#w$q7Ghvv_yuD9W@q@r=Agm=23!o*41Yny
zKX!)y+>8v2jGT;2jLcjN){HFdjI3-9O$Wg0*c|E|zzi-17e+P^!OqUe!NJJM#mL3T
z&Be&W$P3cVSI@=3#K;dK1UMK4xfq2Qg}E3-7)3!WF-}HtMhOrh$;BYdC<S6kg9sTA
zA<Mxi$Hl<UD9^#D0HPH^f=ZkW-i*p1t_laEDi@;~qdG{d1{b3yqZWwJ1`#?SLKkGI
zUOhXbz7PW=qY)QFHls0!FaZ&!Ai@kpn6oola4{4yS_&~RF&csFum%w}T#UAic0vry
zj1F9kj*L#MV9zozzu;taW^@5*bmd}nV|3?Y6le4Rsr3|MU;(LhWAtWc^kHORPAw{8
zWMJH^!6eSYXtCLW&4kgmjiH^9K`1M+EHSM@zqlkZJyky#M6xsb@-X@_`tvXbFa|O*
z2zcfdl$Iz2Bo-y+rk11@74t9#F$PcG$gVEj#u&`Vz>x`(56Lg!VGLmmp8T5Kh%=Oj
zF^n;skwJFyMJCb74_G)Xco^CkBN!QkgHv--lS>pric(V*f(ufUGgFIs7$ZT(2!M@o
zDatQ!$uG}y%CF#IjAD%5T+QLeC=nyT7|YMb7$?9O&%>C&n8?GJ#F)&;ATim7MIsbr
zbP5k+Dq|WWgCNW|$*Fm%`hNK-sqBpDJd7EPne2>NJdD|lIXsNHjCn}j1}h8(ksx#O
zc^C^o=BP|AWKx-&#ib!z$irB~Sj^5?!oyg~SjNLx&RD_2Sjkw$!&uGGK6yQtM12hp
zV=ZGHJ7YZ$V*_I&4`UN!Gdp7o4`VB18xLbUi0EMK<YDXrvARJ-4`Ul61EVSrV=rSL
zBLf2uV?W~r9>$4`Z9EJu46QtjlNcv6GMM=$R%GUu<|-H(C?sbj79}Q^q!tw`WELwV
z=H%p;r=}>R<rgVr<`vYJmM9d!<3^F4aS9LPRK{Q)#%YYx*%@c>FwO*VW`T&=AYu-P
zm<x(}0Z?G+=OpH(>xX0%r6#5bFtqctG0x**oX@xb6dDV87#A@{^Dr)EXy;*E0wR`z
z^a&&MxmF}cr52QA=I8M+E(7ac&cnC@<cXDxZS0Jzco<hRuHk26TnjRD9XsQC9>xuf
z3)vYr@-S{<+|0wcg>fr8<2D|~?F>747<Yi|+6h*_i-&PH<DSh-JSB|Gdl~mluH=<t
z+`oAS?+xb3n+4S-_Y0~_zA5;YQFU@5lSqJHeo1CpW^y9P83FkPp#_W#k|~+R1v!b8
z$Wq~%c`5njj0_ybsU=~FIi;zL45Au72*3CzWu+#USZjt&J|a}acwn-*a2eyl$?Jq;
z84pe75ec4LASgdMUSta6;mKb_+~tq(Fdk(*$-}UcVHFR<E{1j<hAkjs2g6PthCK{B
zCr62zGM=71LG&fd8Ab-x$qHh!lV^$PNj5VuFfcN3fg+lLfq{d8k)e&Doq>^|WAZ~W
zG4)Oc1_m|;Mg|53d4?_q1_mB5o0XxPp@)Hifs>&ZqIR>KxD8W1Nbx2H9R>ylRR#_Q
zbq0P04F*vLZ3cM;9R^hf0|tEtLk3d@BL;T{GloD0bA|{83x;?GONLYi8-@Y~TZVE5
zJBIBHUJQpAycte1_%K{x@MXBh5XA71A(-I>LkJ@)LlmO`Lo}l}Lky!FLoA~TLjt2d
zLn5OYLlR>gLsmUwCPOx30YeUBIYTaEEkhw=2SX8KKSK%QBE|^Db&QdWpBSSVe=)`~
zaWlp-DKN$}sWB!nX)z{(eYS={kb#3qnW2xNALLsm9)<}F6B!s8^cnv!Ok$YGz{KFr
z_=I6H!xRQ)hCs$!3{x4VF|aTcFz#lU&M=XIm0>$$eF?)1hA9ke42Kvq8D=s}V_;`^
z$mqo|i(w)I2O}$^8pCXcDGZ#90*ulOa~P&Ea53sL{9%~OFp+_qF^=IZ!#sv53_OgP
z42KxzGfZRPW$a*B%&>rAAp;-dI)++?MGT7>_?fsF6d0B;EM*X2SjND>5X8U%b<}c@
zqoTmBTEW1=u$>X)l;v=ztYBb=I$$~60V^1|pw=#jTf2gRSAYwYfI#ujz`$I>z|6qT
zz`%H9vY~WNJ-<-gW`;=S%?ydl88o!EF+?0-;NQlOB*3+VK~yMt2SbXMP~0|#R2HxT
zc91&lZ442|8Nm9YK>Xzl8XzHbecI^ybP)QYq55>T)ni(ygRW5*p)mof5hR3ep)R_<
zO$>>%7^*fgMDAcn+r$vHgCTtrL-Y=Yj7<y)I~X!0S++4`?XG9Yj@-qN!@#heA=ipc
zl8t2>L!KntHimo<Q2-(emospIWVSIB?*=O_Ax`l|1}4T##vaCgh9bskj5`_kFcdK`
zGk|i_KL&dS28MD5K86a0dJ%?d204Zr1`UQ<1|x<#1`mdMh8TuMhBSsYhFperh9ZUz
zhDwG`h7N`<hF*qlhRF;)46_*e80IldWLU~DiD4DPWQL6lQy2~~Ol3IAFpc3f!*qsA
z3^N(7G0b7O%P^PW5yL!&mkje6elRRx_{*@6k(pr;BNxLGMm~n+jG_!H>KUaNRx&Cw
ztYS1^Sj}k4u!hl^VJ)K*!+J(HhOLY~3_BQu7<Mv7FzjNCW7y4@!myVyli?_1Il~Rc
zT85j9O$@gf+ZpaK_AoqP>}R;gIFaE#<1~gRj7u1PFs@?w$+({37vmO&Ka4vW85s94
z{A1k5@SpK8BQrQ_rZI3amNV3gGOT7;!@$M}%57^I)-kX#E@2R5SPvH4$H2+}76YYL
zaNYzJYe&G@kP$2f%5qF#7ASi$gIS=w&H`p_VA#mO%CL!nfkBQz=r=<Qr;q|O9DQf-
zU}xA|&z8#0u$fJO3skN`G6=&?1{QFEXt9Z*bQXh-P|yyB;2jJh+ZaMOGnDOMDEHRd
z#ZbY(u!Ese1eCmLS~GVr)Gq&jWjO<fx7Id>;*DV4`V2-4MGP$97}sLpVqjo+#=yq#
zf<c7gC4&URD+Wb|j|@5t^`98@8NM<YF??n)X86Kj&hQN!IARP;3=#|?3|kqtF)%O~
zGq8ZefdO1VfJ$qK+;#>Au<tk-SQzx2*cmpn2yij%VAu)uM;Zeo0}}%S1FzN&hPvep
z96s7`$FVT5Ly}`X0|SE?1E`(%hJl6QJp((#TLun>cMLoXAK(t*fLaf#FnFO(0tG5N
z1Cu+{(p``mgMopemw^%NeJSQ04D~x08bE>72o5aN;1OgH0R>MzIDF(l1royv1{Q`>
z3>*xn83Y-wGKer-W)Nk#!XU|T4ap^(Q2RxpZbAeJ2LniMH#A7t8JI$#ZrcM7kbG!>
z2x;wLXbNZ9!BD@v9wk^f8F(PU!oa{F#lXhEz;Kp<mEjx%C&NVs9)|M_ybKo@1Q{;D
z-NOrY1t?^Mpe}=kj1S0m1`dY3@Q{%OhYJG(E2s?H2ujHeoeZ(Cnply6nE}*8Vq)0O
zc!Gg}fs28W@fhPN#^Vf<3|~P#Ck9rAZw$-~-x+=|`~<NW4Hyj>4WKM5ILjW+@?taq
E0JJ6ap8x;=

delta 3152
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

diff --git a/target/classes/com/application/GUI/OutputPopUpWindow.class b/target/classes/com/application/GUI/OutputPopUpWindow.class
index 27d06e89690bd8ca3dda77884ecb9438ad689235..5e7bc108155eb578f19803068244dc324435a7a7 100644
GIT binary patch
delta 834
zcmaE)azKUa)W2Q(7#J8#7&$g_88LD$V%W&eu!)^v^JZ7ZyG$xuco?=aY~x|r&ai`#
zfzLNTv$&+RC{@8ZBQ-gjhhZnfE=C5a$%@RPlcQNUU3W1uaAf8cl$M0#7w|CbX4u8f
zu!o0XFT*|_hW!i&7#a9c^;<DAaDkQkBqpWi@Gu-?*vH5qH(8NcZt`&!JL^Lru7Fd1
zeo1jjQDT8_YDq?ZN-;kh!(jo2Bm8U(M+F#;@h}``IKjhklHn911DjiBUS@FyKO4j8
z$quaYN@sW&&N7^1WDv|sEK5wQ&@WC-%}dqy%TGyVXE@KpaDn0C<VIFWwo5z=ml@7Y
zUcl;abcKiED#JB)hU+{GHyCd6Fx+Ce&BJhq;VuuuJq9lxhWiW;*cl%3Fg#+o$<FYY
zhv5ms)5(f#lJ(CRZnHBy=V5rk@RE^1xU#acQrFj4Hzh^E!^0{!*Q&Ufo#7P^!)t~&
z><n*t7~V0w=VAE3@R5h%6T@eAhA%t}Um14sFnj~q@EsJM!XWqR=OpH(>$_GYrxuiC
z=I8M+`~b=SWcbC%pqiYYtDjg<kdv952$I{phs}*q={Lh4Mh0;WACTs>3jNfw)VvaX
zR}g8f8OFun&hU4#3dedThJTx{a?E6w74Qr7b#e`g_jikT_HcFf4rXLv^kirF&%?;T
z$TE2qk3A#X<X1c|S=bpFR3|&|icfyWo60D>IfT!Zv0j{kgF%9UpFxsAltG3;o<WvD
zl|ha{he46Sj6sRPhC!LZnL&lYn?aQ!kU@<hf<c=hnL&pki$Ry6h(V8`j=_$hlfj;0
z0)qp?3<gJrB@96f8yJEab})o6++_%3c*hXV$jlJI$jK1N$jcDL;LE_k5X8X2z`@AI
z5Xcb3z%W@t;JBtUg8+jIg93vqg9?KigAs!}gB^nhgDZm<gExa8gCBzrgFk~WLokE?
zWDdbSng$F442BE}3`Ptp48{xw3?>W~45keB4CV~33^oiN3|0)D4Au<347QWs3VLZX
pGcYi4F)%VRGO{u<F-S5rFfcHPF)%SSGB7hVF*Gx@Kv^9OEdVST*Jc0!

delta 873
zcmX@0@<@g2)W2Q(7#J8#7`Zlb88LEhWZ1;cu$i4<%Vt-`yG$xuc^I}aZ0BLv!LXB&
zfzLNTv$&+RC{@8ZBQ-gjhhZ1PZbk;F$%@RPlcQNUU3W7waAf8cl$M0#7w|CbVc5;i
zu$PBnAH#kgh64--85#Id^;<DAaDkQkBqpWi@Gu-=*w4ryH(8NcZt`&!JL|(Bu7Fd1
zeo1jjQDT8_YDq?ZN-;kh!w~_7qx@_P#{?LT^DvxXILX6sis3XP1DjiBUS@FyKO4iD
z$quaYN@sZ(&M};4WDv|sEK5wQ&@WC-%}dqy%TGyVXSl$_aFOBC<VIFWw#z&WR~XJu
zUcl;abd`tU8pCyVh8sK#HyLj6Fx+Oi!^3cw;T{jeeFiTch6fA}*%==3Fg#|s#m?}A
zhv6y1v&o8VlJ(CS?yxhw;9+>l@QRT^xU#acQrFj4Hzh^E!^0{!*Q&Ufo#8bP!yAUT
z><sUC7~V5{;9>a4@QH`vGs72lhOayf-xzlDFnkBu@B<W{!XWqR=OpH(>$_GYrxuiC
z=I8M+{ABQAXZXd#@SEWeBZF#key)CEK|xMta$?EknT(Q~&$AgYD*a{n$H*YA;R7-t
ztwKMwEH$r0-xWk!Yld+#xHJ5ptjMvRiIHLRC61ZQHZsVjWaj7TyEy4P=jRodB<7VA
zGcpMHh59<V2F3fk#XEbrI(r8*GBA3wGcxipGBL7E?%=U!<d}Sd=Oqg#BZKN>IbQL}
z`MhkCFY(4RiflIGb7icTVBlboWZ-9zVi0AJWsql(V^C#~XV76#VlZP+X0TyUVQ^+p
zW$<QDV+dqWXNX|XVMu1sWyoUCV<=+KXQ*SaXXs>bV3@$*$S{M!iD3ytFvA9h5QZHL
zp$vB!!WrH%L@+WlL^5(RL^1L*L^Jp@Ffar$a4>K%vM~fQ1Tip7{>Fb?(}h8R!IeRQ
z!Hq$M!JWZ~!Gpn$!IQz2!JEOG!Jom8!52&hGXzY2Ca_1-kU@aKh(UqDm_dcXgu#Hp
zl)-|*jKQA4g29!+mcfI;n!%I7hQXJ?Zt`hCFKt!^1_mw$Mn+~vc19KkNrnan1_m((
UCWb}^W`-t)W`-6htAn8h03QD1^#A|>

diff --git a/target/classes/com/application/Main.class b/target/classes/com/application/Main.class
index 2b75383dbd81ebb8c9fc02f5601c359dbd49e89a..bb4be3d39984c9a4ca925cc07a09e12c2343f7e0 100644
GIT binary patch
delta 1128
zcmaDGaXNzQ)W2Q(7#J8#nDjStonovnU~FJ#Y~)~U;$p~RjN)Ky2GM3h42+B^AXX{|
zV=D(^n-BvNV+sdjhY$lZV+uQC7Z*brqXLNN1`$2%jJ;e8Rg8TgqMwU_pK$^^<3x7G
zNgRxmxftphqqrFA7^iSBPGx7D#>LRWIGxQQk^v03>KR%XXMn_JvNO)&V(0>y%ELID
zi-CvHii2?uJL6m~hJKJ>KjS<h1{THzAZ{uL<3b?@R>lP!jEjXB*g*7BAqIAkBoE^R
zPR8YoD?kRUWOEP!+rj|itpe#>&BegRxCTV51rh7GCZA>E=3BwIk&AH?<7RfoE$ob2
zH@{{wWn$bmS&>zmar<Ul)(6atJ2uO4+A$07WH`#sxQmBzH^V-5#yvcYyBYUR&gZ%A
zwU2Q>590ww4jzU-3?JDU4>B?cW+j#-rd8+{C#UA6>igxVr1CKAWjw^gc$o1B593h~
zaSTKpXFS5rc!G!VB;zR_#?y>vCQsm%<U7m5c#iQrJL3f&#*2)XCU57}5WCF7c!lvQ
zJL5GT#_NnX*cor~Fy3OkJ^3rIyw)8a#=DFhJdF1k@AEJ|V0_5K_y|NiW_-fK_!Q*O
zXFQD08TK(UNKS5KlbjsR7q0$7fbk_i8{;bhMoAvV*Nks?7~e9!<6(Tyc%Fyx1LH>?
z#!rmr85yJ|H?oONe#I9R{h5)2o$(6~<5xyb9>#AV%f2(-XJp_D&rB)FP^eJwNX<;o
zDB)q)$*_Zm@dqO(BLiD-VtH|D2@k_AkkC(%5U+23W^qYrQL2J_eqs&}!)}nwugUZI
zRXBJUe}hy=Pu|EbJ^3ZSDdV5X@&ZaSe;FABi!)PFof3<jN=r)e^IR)3OZeFs|1mO{
zPM#=X%FDy}pK&h_69dS1N|P4~iA>%sAjHkc!*G^i9}g1~<N3)K1WFm1C%XwI^Re(S
zu`)j7VPXThTxxP4hX{92YI<gV9uE^c<C)3V1dWwA81M75F>&%RzGmWLWZ)0WOf6Rk
zN=+|HEiTT?&*Nuf;-0K6BooTR$RGrk3n)r0%giq=R&YryN#ti^;$>&z<6+`w65wGH
zWD??G5(e2P!X(PWB*u83he;gdC<zct5=2Nb-sfRB#juZ^Nt%aAX7d~&K^A6NCb`KQ
z#N-&|H=h?1Wt8L$@$_|#_i=R#;bK_9qyQomL4?v~83|KHM&-%xxs)fDN-A)xfJ9Y6
zgxcl>lGcoD>O4#uOxlwlO2snjPPUi6#iGZ^pgQ@0wCrXpnJfJ9noK%OS`3nm@eB+M
nK@1#>2@K4PiHu2%$xv1coYf9zb;4Qm;jBe)))F{t8Dla4>s1vz

delta 1106
zcmX>d@iv0%)W2Q(7#J8#m<%^^onowSU~FV(Y~o;S=3>ZVjN)Ky0nuhc42+B^AXX{|
zV;cu!yAT5tV+sdjrw{`(V+uQCHy1-0qXLNN0TI3IjD1`TRgC>0VgeTfKjTDp#!2jq
zlQ|fta52;~MsYFJF;3-RoW{;Lor|G`aR!@1Bm)?5)ibm(&IF0gVrQJq#n1&Zm4|T-
z7XuHY6$j&7cE)*J4E-R%e#ZGi3@nTbLEKah#zjI5tc(je7?%h!uz~1hLJaI6Ngl?D
zoQx|NSAq;!#pWOawuJ%2TMg2=hKqrXaV>~g2O`#UNiwi8ZU8Yiaxtu6+{DGWnQ;p{
z<5qUYZJS>+nKChMpRC9#&A4N;E$ahj#+{qxIPI8)cQG7gXWY%hxQAgMJL6s+#yyPt
zCg<~9_u9{RfQRuQBL@$|ABK<YjE5K*1hW#$64NU5i<49HQuY1vQ&M>t_A(ykVLZZk
zl!x&ch&T=+PB0#2XFSQnc#82f591levy&(AO7flKVLZ=xft~Rp591}q%agbBYKUFo
zVZ6$Cjh*p2591BSo9v9Yco=Up-kJQBS6=Hb592*X4j#t)j1PDiA2L4TVSEfCo-jV;
zVSEO1=yM*%7YzFt86+n+vPn)3=L=VVDZu!OpN;Xg0HY)i;~U1eJdE!c-}5kjV7$P?
z_>u7w594RX3ycg>lN;GYC%@v0ivGgL!Or-Vhw&RDClBLykYzs@A22fTg=eOeWGGZ9
zc%){gXO!?T>}1%%!}ybtlaYZfII+AqwS<RZ7f9$ANQl=rKeM=`v?x`<JwGvrhhaBJ
z=J(|J{3_h+jDL6-|AG`rPu|EbJ^2~GDdWG%G6G7B|0mlEh_Ny;Ffy1<&X+Ld;9+89
z+{eSjG<mv!Ha9a5!&!!XJWMQ%7bc$-C}m`w>@1kf&BnvT&iIIjiG%UM<c)&z%$$s8
zCtnscR^noOz|Y3S&BOSHiHDJaKP)q~Tp=hmy(qP~I5R(wpN)xkvWAdMC?6w(5Lhmt
zD77pzzqDAvC9x!tpN)y1ok@U)Nsvj1he?=8gojBKWQiD)I1iHq;{zThNsvpVKrCqx
zA;b89hv5{%K6WNq9wxcXGlc|MnB|!iCa)EfV^rLHMog5^LMAysS3j|!ASW|9u_QA;
zPv6B!-#I_8xFj*Jq?nO`GsM%^HQvY7Erg3<1(OnpPzDhyn}3O$GBT=8Hjs4YRs)Hs
zg9weyb&}SMY??ewT1>i=_e;ex>Q9!HzQtm|$e=p8QCfVnkjyQ9R&6FdCY{M2wWaM_
f8Iu_k7?>Fo89U&tE;wreoV6IvS_)?^XG{hFQ0Wq0

-- 
GitLab