From 3d74bf608325572a86f624dd39b2ccca9d4517dc Mon Sep 17 00:00:00 2001 From: Eilert Tunheim <emtunhei@stud.ntnu.no> Date: Mon, 2 May 2022 11:48:25 +0200 Subject: [PATCH] Added timeleft in sidebar --- .../java/com/application/DB/Constants.java | 15 +++++-- src/main/java/com/application/DB/DB.java | 40 +++++++++++++++++- .../GUI/LineChartFunctionality.java | 28 +++++++++++- .../application/GUI/OutputPopUpWindow.java | 25 ++++++++--- src/main/java/com/application/Main.java | 16 ++++++- .../com/application/DB/Constants.class | Bin 6612 -> 6924 bytes target/classes/com/application/DB/DB.class | Bin 15871 -> 16414 bytes .../GUI/LineChartFunctionality.class | Bin 11558 -> 11999 bytes .../application/GUI/OutputPopUpWindow.class | Bin 4336 -> 4658 bytes 9 files changed, 109 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/application/DB/Constants.java b/src/main/java/com/application/DB/Constants.java index ed2b28a..541ec59 100644 --- a/src/main/java/com/application/DB/Constants.java +++ b/src/main/java/com/application/DB/Constants.java @@ -1,5 +1,8 @@ package com.application.DB; +import javafx.beans.property.SimpleIntegerProperty; +import javafx.beans.value.ObservableValue; + import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -27,15 +30,16 @@ public final class Constants { // User inputs public static String TREE_SPECIES = ""; - public static String DIMENSIONS = ""; - public static String SAWSET = ""; - public static String MOISTURE_GOAL = ""; + public static String DIMENSIONS = ""; + public static String SAWSET = ""; + public static String MOISTURE_GOAL = ""; + 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 = 1; + public static int NUMBER_OF_PERIODS = 2; // Number of seconds to wait before updating live data, in seconds public static int NUMBER_OF_SECONDS_LIVE_DATA = 10; @@ -43,6 +47,9 @@ public final class Constants { // Non linear regression public static final double ADJUST_REGRESSION = 5.5; + // Number percentage to display the searching for data + public static ObservableValue<Integer> PERCENTAGE = new SimpleIntegerProperty().asObject(); + // Current sawmill settings; public static final String PROJECT_ID = "sf-drying-optimization"; public static final int LOCATION_ID = 124; diff --git a/src/main/java/com/application/DB/DB.java b/src/main/java/com/application/DB/DB.java index 3b0936d..95044b7 100644 --- a/src/main/java/com/application/DB/DB.java +++ b/src/main/java/com/application/DB/DB.java @@ -561,10 +561,46 @@ public class DB { public static void pushManMoisture(String moisture, boolean finished) throws Exception { + + String startTime = null; + String stopTime = null; + String treeSpecies; + String dimensions; + String sawset; + String moistureGoal; + + // Checks if variables is not null, if so, formats correctly for the sql statement + if(!START_TIME.equals("")){ + startTime = '"'+START_TIME+'"'; + } + if(STOP_TIME != null){ + stopTime = '"'+STOP_TIME+'"'; + } + if(!TREE_SPECIES.equals("")){ + treeSpecies = '"'+TREE_SPECIES+'"'; + } else { + treeSpecies = null; + } + if(!DIMENSIONS.equals("")){ + dimensions = '"'+DIMENSIONS+'"'; + } else { + dimensions = null; + } + if(!SAWSET.equals("")){ + sawset = '"'+SAWSET+'"'; + } else { + sawset = null; + } + if(!MOISTURE_GOAL.equals("")){ + moistureGoal = '"'+MOISTURE_GOAL+'"'; + } else { + moistureGoal = null; + } + // Sqlstatement final String sqlStatement = - "INSERT INTO " + PROJECT_ID + "." + LOCATION_ID + "." + MAN_MOISTURE_TABLE + "(moisture,tree_species,dimensions,sawset,moisture_goal,no_moisture_checkstart_time,start_time,stop_time,finished) " + - "VALUES("+moisture+","+TREE_SPECIES+","+DIMENSIONS+","+SAWSET+","+MOISTURE_GOAL+","+NUMBER_OF_CHECKS+","+",) "; + "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+","+finished+") "; System.out.println(sqlStatement); diff --git a/src/main/java/com/application/GUI/LineChartFunctionality.java b/src/main/java/com/application/GUI/LineChartFunctionality.java index c5b4225..3766443 100644 --- a/src/main/java/com/application/GUI/LineChartFunctionality.java +++ b/src/main/java/com/application/GUI/LineChartFunctionality.java @@ -1,5 +1,6 @@ package com.application.GUI; +import com.application.Main; import javafx.collections.ObservableList; import javafx.scene.chart.CategoryAxis; import javafx.scene.chart.LineChart; @@ -15,6 +16,7 @@ import java.lang.reflect.Array; import java.util.*; import static com.application.DB.Constants.ADJUST_REGRESSION; +import static com.application.DB.Constants.TIME_LEFT; //import static com.application.DB.DB. public class LineChartFunctionality { @@ -24,6 +26,7 @@ public class LineChartFunctionality { private static CategoryAxis xAxis; private static NumberAxis yAxis; private static final double CONFIDENCE_INTERVAL = 0.90; + private static int dataPoints = 0; public LineChartFunctionality() { @@ -193,7 +196,7 @@ public class LineChartFunctionality { } endOfGraphPoints.add(confidenceIntervalData.size()); - int dataPoints = 0; + dataPoints = 0; for (int i = 0; i < endOfGraphPoints.size(); i++) { dataPoints+=endOfGraphPoints.get(i); } @@ -258,11 +261,15 @@ public class LineChartFunctionality { //simpleRegression.add + getTimeLeft(0); + return getLineChart(); } public static void loadLiveData(Map<String, Number> userInput) throws Exception { + getTimeLeft(userInput.size()); + int index = 0; for (Map.Entry<String, Number> entryKwh : userInput.entrySet()) { Double kwhValue = entryKwh.getValue().doubleValue(); @@ -271,7 +278,24 @@ public class LineChartFunctionality { liveDataSeries.getData().add(new XYChart.Data<String, Number>(String.valueOf(index), kwhValue)); index++; } -} + } + + public static void getTimeLeft(int liveData){ + int time = 0; + + if(liveData == 0) { + time = dataPoints*10; + + } else { + time = (dataPoints/liveData)*10; + } + if(time > 60){ + time = time/60; + Main.setTimeLeftText(time + " h"); + } else { + Main.setTimeLeftText(time + " min"); + } + } public static double getNonLinearRegression(Map<Integer, ArrayList<Double>> confidenceIntervalData, double y0, double alpha, double j, int n) { diff --git a/src/main/java/com/application/GUI/OutputPopUpWindow.java b/src/main/java/com/application/GUI/OutputPopUpWindow.java index 94d7d93..26f5a37 100644 --- a/src/main/java/com/application/GUI/OutputPopUpWindow.java +++ b/src/main/java/com/application/GUI/OutputPopUpWindow.java @@ -36,15 +36,24 @@ public class OutputPopUpWindow { moistureCheckTextField.setId("inputLabel"); moistureCheckTextField.setAlignment(Pos.CENTER); + + // Bottom - Buttons Button countinueButton = new Button("Continue"); countinueButton.setId("inputButtonStart"); countinueButton.setAlignment(Pos.BOTTOM_CENTER); countinueButton.setOnAction(e -> { try { - STOP_TIME = ""; - DB.pushManMoisture(moistureCheckTextField.getCharacters().toString(), false); - NUMBER_OF_CHECKS++; + if(!moistureCheckTextField.getCharacters().toString().isEmpty() && + !moistureCheckTextField.getCharacters().toString().equals("Please enter a value")) { + STOP_TIME = null; + DB.pushManMoisture(moistureCheckTextField.getCharacters().toString(), false); + NUMBER_OF_CHECKS++; + window.close(); + } else { + moistureCheckTextField.setPromptText("Please enter a value"); + } + } catch (Exception ex) { ex.printStackTrace(); } @@ -54,8 +63,14 @@ public class OutputPopUpWindow { finishButton.setAlignment(Pos.BOTTOM_CENTER); finishButton.setOnAction(e -> { try { - STOP_TIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()); - DB.pushManMoisture(moistureCheckTextField.getCharacters().toString(),true); + if(!moistureCheckTextField.getCharacters().toString().isEmpty() && + !moistureCheckTextField.getCharacters().toString().equals("Please enter a value")) { + STOP_TIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()); + DB.pushManMoisture(moistureCheckTextField.getCharacters().toString(),true); + window.close(); + } else { + moistureCheckTextField.setPromptText("Please enter a value"); + } } catch (Exception ex) { ex.printStackTrace(); } diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java index 2a15a6e..0f995ab 100644 --- a/src/main/java/com/application/Main.java +++ b/src/main/java/com/application/Main.java @@ -1,6 +1,5 @@ package com.application; -import com.application.DB.Constants; import com.application.GUI.InputPopUpWindow; import com.application.GUI.OutputPopUpWindow; import com.application.GUI.RingProgressIndicator; @@ -42,6 +41,7 @@ public class Main extends Application { private static TextField dimensionsText; private static TextField sawsetText; private static TextField moistureGoalText; + private static TextField timeLeftText; /** * Starts the application @@ -189,6 +189,14 @@ public class Main extends Application { moistureGoalText.setText(MOISTURE_GOAL); moistureGoalText.setEditable(false); + Label timeLeftLabel = new Label("Time Left"); + timeLeftLabel.setId("sideBarLabelText"); + timeLeftText = new TextField(); + timeLeftText.setId("sideBarLabelText"); + timeLeftText.setPromptText("Calculating..."); + timeLeftText.setText(TIME_LEFT); + timeLeftText.setEditable(false); + Button inputParametersButton = new Button("Input Parameters"); inputParametersButton.setId("sideBarButtonInputParameters"); inputParametersButton.setOnAction(e -> InputPopUpWindow.display()); @@ -245,7 +253,7 @@ public class Main extends Application { sideBarVBox.getChildren().addAll(ringProgressIndicator, treeSpeciesLabel, treeSpeciesText, dimensionsLabel, dimensionsText, - sawsetLabel, sawsetText, moistureGoalLabel, moistureGoalText, inputParametersButton, finishButton, exitButton); + sawsetLabel, sawsetText, moistureGoalLabel, moistureGoalText, timeLeftLabel, timeLeftText, inputParametersButton, finishButton, exitButton); VBox.setVgrow(sideBarVBox, Priority.ALWAYS); @@ -302,6 +310,10 @@ public class Main extends Application { public static void setMoistureGoalText(String moistureGoalText) { Main.moistureGoalText.setText(moistureGoalText); } + + public static void setTimeLeftText(String moistureGoalText) { + Main.timeLeftText.setText(moistureGoalText); + } } diff --git a/target/classes/com/application/DB/Constants.class b/target/classes/com/application/DB/Constants.class index 12b796c5c7f59d192a5504fb50d7263ec9fee188..e4a40bb5a814f32272d6ba8147e2d80a53fd2771 100644 GIT binary patch delta 2888 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 delta 2529 zcmeA%yJB2_>ff$?3=9k=jEr0iwhSxT8CG#IFoEdRTnttWYq%I#7}kPB)`3{-LBs|Q zhK(SRO(4!@4u<dMgLRHV%gE91J@+7<O_n?BZb9&B3sTgJCZh!#;-noD3`s2RIlG zaxfg?U^vXdaD;>5C`jxWS3Ls@!*P%SCqTqW4u(@445v95&TufC1t~bk!Ehc#U*KT4 z$i;Ap;W8J)6^5%I)-{mubq<CbAo?bVxCJ6^gNQpI;x34|2O{o+hzB6zA&7Xy&hVI> z;RzSRQ-)_;><pF+&)FGXOqOA6o4k&(h9}71%hfp~-qVGH;pOB_Oj?YuCf{XhVSK$g ziJ6&^i!(SgJuk7Ov?z6RGRtj7#y6Yo+2*n`H!w6#zRzuH@s{Bo4?`bA2M@!0h7UXp zb3v?03>}ONoMDMMxv3?Y$;CVj9~nOJFiZuBGJBV2@G#6`=$P!o)4{{=nTO#m!xtWg zG=}ua4|wc_av9Qj80Le_SO6jxGjvQg<c$(3XGmvc;0#Jl%n3`(DNW^JsAfo?JfBzG zkKrp1!#9TS><mA67=AMR;$isB@P~)Nj=`Rhfq{p?fx(`K!4X6_F*x%uxPVx$Ai@nq zxPu4}22UOaFA(9);5pfmPn(C~FAu{%hW|Va4U7z%EBH8>CT|x=uD4}iU@%~i1R2f1 zz`zMI8caJf*n?>&24^ts0_D3xX*VeC4y8R9Ji+R`ptLubmSpf@@MU0R@MB<LU}ErR zkYosCu!r-57$oZ%f*CyF0wD~N453I0!WbkO!jbp_43Z2HNPH;<Nrp%yzBGd*LlhEU zmO+vs8i^mnAjuGmVqd)^LmZL<eg;W~cqBf^!UQC~AcG`BA`)MSL6RW}i7&z+$&if1 z7iExSNI|kNl|d4eBp4VOGQc5{S<fKJkcFfH<fCjPKFCKoNPLiwav9PQ1~5o6<RMv* z&mhTAfTUiDL6V^miLcBc$xwvEuLt?47)b!+qY@;(3WFp=DH30mL6V^i$wH8i%F!HD zfuvrYL6V^oi4XEn6@p*S0P;~angKNk1q`(ek_>f77S=QHGcYkUFf=kSGBhzTFc>p1 zGB7eQFtBQEXJFh24%KD`1_n^6#=yYGz``KF(82)9G+;#xtqg78blT3)!NA1OG+9T) z%on6yh=GNHfuWp%gQ0>!l%bMAnV|}<kAp#$p_8GDfq|hLY7#`Ghk*eakG%|Bpt1sN zqNBL@<YOW#NTxP0a4<A7NH8=pXfQM*nX1Ilk7g=JWCGmOi42?!lc4T27u7{Fv7Lc~ zp@Tt?p_4(1p$o}G5eySSB9q}JPGR5z6<1()ZWQ&Y2l-r%ft`VYp^t%sp`SsJVFH5` z!$byUhDi)M3{w~^8KxqcZp<(Z&AlKIWYakrrZda{na;q#AOnsT1_qW*3=$g{7#J8C zK(?`gMQ1|7jfY_-0~e^!1ZkPvA!Zf`QX<B{%D})dmw|&}9)lpmd<H3o1q{jzi;)~6 z%P<?wAs`V{hs=REWHP_Fs4U1-h{ekx7K81b3k_OFaciWYUCY41u#Q23VLgKe!v-Wf zl^Eus*$EOsjjZ`l6HkgGN7fbw4u-7^f(+Xjq!_j%nFxv+)I<dmLG}d~!vd&@8%4Dy z=SnCcMc8fz4u(Apf(&~Zq!{)wC^PJ5&|x^pV99U@$p&MFg=lUDi6Gm+$*>3#PN)&4 zh8|(ZAmIjyu*FbENl79{*eM1MhSLm!3}+am7|t>%Gn_|qh%CbrG>3phP#v-q;*iM; zB}Fw65q243F~dv-4u)m0OwTCDz{UUq2PfZ`G^l6U%wWc{nZaCuYcqqzZU)Op*1Zf? zk<1)B7+8ZNSp?WX^bQ8=?F=@X86*($0>&VTNEQJL5DilxhonFdBoWCXAOxae3e=Dk z2!kY2B3T5$444WHP%#8a?sg3P3=9my415e?48jcJ3=#}d3^EL|42leL3~CJW4B89| o3<eC!3?>X}3>FNU47Lm&46zIW40Q}?4D%Us85kLsgNw8k0CZ}GlmGw# diff --git a/target/classes/com/application/DB/DB.class b/target/classes/com/application/DB/DB.class index 907ca7cd83870015b2dfa3d10e234e29292ea61b..aded3c064c967f49860ea32d288755bbb1f6538c 100644 GIT binary patch delta 2200 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 Wof)n$Ffed2Ff#BlR54s;;{*VptmlgW delta 1658 zcmbQ&!1%wq{?xx+`xqD)Oqf#G8J)No1Q?w;8C@7%xfpgbx^XeOGkUNydU7$aF*<WF zdT}u@GJ1nJKHQAHjDFmV{)_=2B9NUih=VbhoiT))fsZj1M1+C#hO;w9a50F0^hSc{ zD3IQ05Gw{m#BwpZ*E7bkGsbf<$S@{wGB7eGaxf-wF=#O+b1<fWY)b_ZX&@pUL}Y-7 zOc0U9!I%v)Er*>kmxD2ngE60jv4DfIkb|)ZWLPl=V+jYt0}jSg4#qML#&QnE3Xt)Y z9E?>Ux|)Nr21M6#)HBv`FxG=y)4;*l$idje!PpFPKnsXy<zQ^%WZ22r&d%7u#o)&1 z%*EKr7|q4l#n{ck*aNbs7bMch!Pw8iIDwsUA}G`*fr!am4E~H$xEZP#r-F!R4#sI5 zjMG6@&Hx!alY?;<2jgrG#yP?qjB`OjH4miBhl6oG2jhatU5tvJT#RcN*Mf+39E|I^ z88<MtfQV?2vW+0&O(1hNb1-h<VBE^VxQ&BxI|t(qkP;tu#+@9DyFhmB=3v~zG5HIl zay=L0Nyby$jHem>*cs1oFrMXN=wUp^#dx0a0*JT>BEmqCAIrgb31skP4#q1Sj8{1r zuW>M5=U}`661&O4c#DJaHc0IqRt7L&egSgIT`tCZjQ6=1A22>-XMDuL_?Uz72|MFc zE{0`{&p^a;E=PuCjIkVyFE|)qaxlK)V0;Y<o;MtfZ#fv>fgJjtgYg3g<3|wl6NvcC z!T5!P@hb=8H+IJFT#P>$e@?#7bcFHO<|WJpECM^(89mt<f3q{@vNQf+XAIh`!tsrX z<u5zqzs+*o7R>Bt*cpzqGd`Le%lBq-0{<j0#{WD_3`~qX45t`QvokUAFflW+Ffs^c zC6*=XmzHGa=zAm<XZR)-FfuUkFtIYR@i4J7aj-LS@-T5RakDf2;bG!o;^krDW8$A| zBM{6hz{JnPBnTpen1m<K5iqV7VG`wG5@QnQVG?1I;9-(vk^<Qw4YMOBF)v-;Gp{5y zJ++93Nd}}&mf<EN1B+W}Q7I3T9FshRoyfza0J2??Nr{I^8APanxT+wQ8j}(u17}!b zPHt*RW^yqPlRA?IBZC0g50m`_-I+C+v?k9GbZ69_{6J7dLI-3%zi)nKaY<=Ws+9sK zr)n`550ma>9w9|p5hguG21Zpz1}04fMh2Fc7*$msCVh|>4VVlkdkNWc{$^(~;$bpo zGMPL<NQT3d$qZzl`Q$A^PHYxDOqNU*lm7^*a#%5(=V7vDvYD(YoXpJ3WIMTEc%il( z50gEU0}qoUlM^EYw@YG4qC#<IRjQQ&JL5kdCTAuW9wt|Y(>zRWOzxATMK&;cOy&`N z$n%$n$&<;8oynV#L1Xepd6mhsV&anOOg`*PzC28Rpz!o(;$>uDRN!F>U<#b<E2gL& z1PV6B3PuL@n3QV6+SCdjreLNJ9;Q&HFm|SJ9wt+!2zI7O9;PU!=*ct1LfKe&m|~b> zCw~$1XNhBE*fcp%ypgN8B(bO@z9cg@b@C-~U9NbB^Nb8EIy#yPli4LIxOkWn7;f?~ zB{JNcTrXk4mc+x9%*4BSuf$xA$;FDo;#|QYjzJ;uA)dajj0~K?A^rhi_U6TkiBk0p z%Ndv$m>C!tVs|r$L~dsg6<WWIL0oGagSgO!Z4Ba@7~~L4a|F{8!L&v&H*RB)6xy_n zL3|s7l<y`6W}R&e(mFdBa>6$<FfcGN9AIEz5Mp3qU|=$32w<{g2xqdkV2EL|VK~UZ zz@Pwe1*0{?O>mZtWwc?~!@$T8z`)DM!Elp-iQxnT0|N^KBg07sPDb0w>+DoyHiKQb zWgCOIfYLSwJE3$KYZJrP$?xpaCEXb~m^>M{n0y%0nL-%yn8F!~nW7nLnPMjA*$1=Q jF>o;2Pd;YvDDD7qAEP6~6$S<dE(S&hK87lW%WRwgPsCZm diff --git a/target/classes/com/application/GUI/LineChartFunctionality.class b/target/classes/com/application/GUI/LineChartFunctionality.class index f70466837b2fd6c3753ca6494fe6f688c79c214e..814f84462cfd3ea9e241aaebceffe9b06984eee1 100644 GIT binary patch delta 5119 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 G7!3f5zHzVs delta 4595 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 E09(5C;Q#;t diff --git a/target/classes/com/application/GUI/OutputPopUpWindow.class b/target/classes/com/application/GUI/OutputPopUpWindow.class index 3ce6d7422da8fe27aa5bfd05cc8d07d7c6ca9408..f30d763a28232c3f200b56a674d1c96e17dc89e1 100644 GIT binary patch delta 1763 zcmeyMxJjk{)W2Q(7#J8#7+JX(+!-?28M3$-m>4oS8L}C2K&)I2hCC3R&(2W5#lXQ( z$iYwqqKi2hN*GE(tTGOUat?+H5WkY0p^A$^kRcO96oZH|c7|#Wh8ivgQIO7B5DnH@ z2V#{8G1N0Kw1Akc91Lwj42%pd><k@j4k`>_z{Q}z&<P^SKtvZiLpL`=4?{0ILm!(% z(*dv&Hivo#FoTOhgP|WpOkii2$iXm)i(xXu6fTCT4AVe*rh~jN14PUOxoQ?S!)%5* zTnuv=oaS*b%m*<Ra4;<7Vpznmn2TWv!%`4y87ISXh80{4D;ZXSG_D3|T*J<=mW#oe zVI4?rJv+k&c7~0cbr^3lG6qimz^*9bla*MOm{y@*T#}fcsvis@ttX#gmz(U$?8mrv z@)TxwW)B9>$@iGWRW|W3Y-ZTP!?2ZM8zTdsZ+>QRNoi54f^$Y{ayAdcc7`2{3{sQr znM5b+v9K$6fVdo)c?G2<A^8P73_BTiuruu9Vc5;EhlgP=!@kL(EQ)OV8TK$T$W69q zlAAn>#m?>kh%4ZfpI=g3Qj}QWn_7~QpHj@v#&A%8;SfI?!(jo2BRmX88IJKV9A`Me z$iU{7nU`6d!OzBUl954T@){-yR~`lrhEqHYry0&LG6=%FmYkZGs_&PdlFH6-mWSaS z!+AyqAr!e_kP4923p@-L8O}^DX7%^G#KUlz;R-v$RUU?G4A*%WZZO>BVYtO`n}^{J zgC`HeU50z?4EK2$9xz;IXL!iN@QC3tBZEjlPHJLtszPdBNotWoqC#0>PH8F+!xM&^ zlkc-i_&()fc*gLYo#6!!!%K!&JPfZH-mo*g<zaZo@SdIF0}sPThEF^UpFyU70fnA0 z$c_3riFxVzt`*6t1tppJc{~hXLGs@izHjzoi(pjx!SIujL0khCi>YO)c_sR;Aktbh zjEljI;n(CN?AnmH7KW)pitEV&9DdAh48J!gax^eb7T^xl5<u7*TvC*om(Iw*o>}ag zTToKT$iS?j8O6xJmReYvm{Yv@KBpn$<V0>~G1laq{Nhwb2HxV-l7OQ8+=7yj)QXbH zi@3D~{_rsTWn|=GNMnfSVTfahpM00wgo%-PvM|pJCPtRYe|daj+!)-!8G?m@k->w( zlYx=Ji-CbbpMjBqk%57MRcku~<3<Js1||k?1_lN;u%Hlw4+8@O517r$;LG60z`(%C z;1AQx_=<s@frEj8k#F)+-cm-b$x?i(j9QcJ`N|o+CvWGotk+^lX3%EHV$fkIV$fx% zW3XlDWUynHz+lfXgTaAe2}1zG28KX}9SlJXcNsz$-Z6wSGBboRax#Q7@-jq#?G9q# zVBlb6V+ddfWME*BXL!#L#1PED$Y92BgCT?=80^}^4518R49pD4467N!86p^17&;kR z86p`X>KRxWHZa67L@`7&ura)2P+*8*h-F|G-~xpZ)c@BQm>5_X7#ISzwlSFPWH4uB z*v4Qni@^-e6|&sMU^R<DRmge=gUt>G+ieVXn;Gok(kwd|9JIGFI4)=4)B-7WTF$`X zr@M{8Wg`P)Jp%)S2ZJ|*GXpa?P_-Di7#J9w7z7xc859^?81xui8LS!H7@Qb97(5t! z7`z$0z+?b}FWB>13@i*j3@i)@42cZPAUA?N3W~%)aDaf~Es!CJA(?@RA%%f~ft!Kl zH-i(a6FWmHivSlxT0KKN)R#A)zVwH?8|+IHI2Yt}t62=njL3dt-ofCoiNTd6VKaj( zE<Z9bFt{;z!o8@+zzt4R0t^NW3iS+z3@Qvp42BHG43-Qg3=Rxt3~mh844w>@3|<UY z41NqYaDRFs`O_cnPk*>S{n7pD0P!aSGebH!)n<S~gMo{Ik>MXB6T^Q7NrrkU1_lN( V1}26E24;pvh9-t)D65^J831B^fMx&y delta 1440 zcmdm_@<Flw)W2Q(7#J8#7`|~aI5VWOGo*1bFfpWZGNdzPfLNIv3|SyLo1Gzti-Ch7 zmxCb>MCWrd6fhKmSVbHR#T*PJAbu%3Lm3x?AVVsM$OjQc><r}`3>91qq9C1>AR4T* z3dAZBVyI_eXaF%AIT)IR7#JBE*cn>b98?&<fQvzap%p|FfrvJChIVd-4u(#4hAuXT zrUPIlY!3AfU<Mb1217T9=wWB*<zVRJV(4d>z{N0;VG>BsWRMr8fQYFa4AZz6rZddo zVwlM=i%XATI>T&EhB*v#L9U(0%`l%~0T;tUhDGcQi@6x=7?yA_ECop~V`o^-&ah&$ z1LI9bCR>e3Ok$IxID{sLGp8^vp1g<I-P(o0m61UxE3qswtwO)JBr!czKNv)^Gpyuc zSjDiKhhYuFT1Eyw-~7ztlG3771?P;^<ZK>>bqwn#+p)+ixG=0|WZ=lmD<~}q$uHnx z*ub!!ona#n!zPB!JPcbHwoa~PQDol6uzB)AmUz4E44WAl1f25oONvX15(|7&OEU6P ziuu_Xb_g)+<Y!~pCBU$ohhY!HULJ;h4Eq@w*xWMnGK(|#*%%HmGDu85z$C%N!{EYj zkcZ(A!{NyZtYR8Rco>c{97FO!a%x_xelUmxsXWfZaDw45BZJE11#BXdH?dlzp5$RT z#c-OP;S3MMS%z~w4Cfgx@Gx9txWvP7859!2m6es1y1u@;DJcpb9#*-zR>j5a3|Dv< zt}<L>XSmM8aD(9{55p~n+w2T?co^<7+~Z-m&+veq;UN#hBZhPA43Bvjo-jO}T+1fG z{S0It0}sP<h8LUXvPCd5zhrnd`3JiUyA#7}Mh01p$^Oi8+-w<%c_}%mj10EWxZ#>y z!Qsp7#PDYG362IvMy1I-+)A5YaPcrs_TUPf{Ds?jvOkZez*`=McMP9+7?K#Gc^IM? zq9=Fom@qMXnY@qZ1uMf>Mh4Z%hP>jF5AhnsI59Yb(-{i`BZCWrD+42g8v_G_J_92I zBLf2itJZb~#*GXN3``8}3=9lxU_l`U4+aJX9x$7g!IQy@fq{XO!5gNT@dX1r0|x^G zBhTajzS7CZ_*5sq;VWl!pPa&PS+Bv6%%I7T#h}Gd#GuVk%V5IL!C=bJ&tS$doxz-8 z5rZScItC|(Z4Ax~w;5a+-Y~c^GBUU`vNL!vax-{>?G0k!VBlb6Venz_Wnf^CXL!rt z$KcPv$Y92BjUj-+pMi<No8cfsAVUxXGea`NN`_#D5C#^84u%$nP==6t23Cf33~>x$ z4B-rH3~v||7$O)V8Q2B5K!F7Hdp83U12Y2ygNl&Z4hHib3>MoMEH^V)X>DV$-pOFY z$iT9L!FD+Vhp)~y2K$ZRK#*pTW3Xdj1_zN80~-SagCzqWgB61`gDry`gEfOZgAIc+ zgB^nhs8~>7U}lhKU}1=1h-F{`Sp#+}C=OH@;uzu?7#R{67#P?YnBv$O5?KVeKye6l zSs&D8%0dpv4r1QHV7rOIktJa>gCnZLq!?u34wGYGXJDvj&}Cp{&|?r{&}WchFk+Bp zFkp~lFl10-Fa`%M$Z>K=j#Gv^P8rp4u^`8RLl~4cQW!omFfed2FfzPn_{{KuL6V`G bfq_Acfr+7pftjI}p^l**!eU`)W~c`Mdp;v9 -- GitLab