From ec165069db5e2b2088b2551c860e077076e5ec34 Mon Sep 17 00:00:00 2001 From: LeonardoBizzoni Date: Sat, 20 Nov 2021 09:08:13 +0100 Subject: [PATCH] Clean up --- src/main/java/Main/AStar.java | 2 +- src/main/java/Main/Map.java | 58 ++++++++---------- target/PathVisualizer-1.0-SNAPSHOT.jar | Bin 9785 -> 9860 bytes target/classes/Main/AStar.class | Bin 3372 -> 3372 bytes target/classes/Main/App.class | Bin 393 -> 393 bytes target/classes/Main/Map.class | Bin 6412 -> 6355 bytes target/classes/Main/Node.class | Bin 1431 -> 1431 bytes target/classes/Main/PathfinderUtils.class | Bin 2008 -> 2008 bytes target/maven-archiver/pom.properties | 2 +- .../compile/default-compile/inputFiles.lst | 10 +-- .../default-testCompile/inputFiles.lst | 2 +- target/surefire-reports/Main.AppTest.txt | 2 +- target/surefire-reports/TEST-Main.AppTest.xml | 49 +++++++-------- target/test-classes/Main/AppTest.class | Bin 455 -> 455 bytes 14 files changed, 55 insertions(+), 70 deletions(-) diff --git a/src/main/java/Main/AStar.java b/src/main/java/Main/AStar.java index 0639312..db68bbd 100644 --- a/src/main/java/Main/AStar.java +++ b/src/main/java/Main/AStar.java @@ -25,13 +25,13 @@ public class AStar implements Runnable { calculateOpenNode(x, y, parent); } + map.repaint(); if ((parent = getNextBestNode()) == null) return; PathfinderUtils.closedNodes.add(parent); PathfinderUtils.openNodes.remove(parent); - map.repaint(); try { Thread.sleep(map.speed); } catch (InterruptedException e) { diff --git a/src/main/java/Main/Map.java b/src/main/java/Main/Map.java index 5a7fdc2..00d4a32 100644 --- a/src/main/java/Main/Map.java +++ b/src/main/java/Main/Map.java @@ -1,8 +1,8 @@ package Main; import java.awt.Color; -import java.awt.Graphics; import java.awt.Dimension; +import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; @@ -22,10 +22,10 @@ class Map extends JPanel implements MouseListener, MouseMotionListener, KeyListe private boolean running = false; private int size = 20; - int speed = 2; + int speed = 5; public Map() { - this.setBackground(new Color(40, 40, 40)); + setBackground(new Color(40, 40, 40)); addMouseListener(this); addKeyListener(this); @@ -41,8 +41,8 @@ class Map extends JPanel implements MouseListener, MouseMotionListener, KeyListe window.pack(); window.setVisible(true); - this.revalidate(); - this.repaint(); + revalidate(); + repaint(); } public void paintComponent(Graphics g) { @@ -50,8 +50,8 @@ class Map extends JPanel implements MouseListener, MouseMotionListener, KeyListe // Draws the grid g.setColor(new Color(50, 48, 47)); - for (int i = 0; i < this.getWidth(); i += size) { - for (int j = 0; j < this.getHeight(); j += size) { + for (int i = 0; i < getWidth(); i += size) { + for (int j = 0; j < getHeight(); j += size) { g.drawRect(i, j, size, size); } } @@ -115,21 +115,18 @@ class Map extends JPanel implements MouseListener, MouseMotionListener, KeyListe else if (PathfinderUtils.endNode != null && PathfinderUtils.startNode == null) { if (PathfinderUtils.isSameNode(node, PathfinderUtils.endNode)) { // Send an error message saying that start and end node are the same - JOptionPane.showMessageDialog(null, "End node and start node can't be the same node", - "Same node error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, "End node and start node can't be the same node", "Same node error", JOptionPane.ERROR_MESSAGE); return; } // Set the node as the start node PathfinderUtils.startNode = node; - } - // If they both exist check if same node else move che start node + // If the start node exists check if end node exist and move the start else { if (PathfinderUtils.endNode != null && PathfinderUtils.isSameNode(node, PathfinderUtils.endNode)) { - JOptionPane.showMessageDialog(null, "End node and start node can't be the same node", - "Same node error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, "End node and start node can't be the same node", "Same node error", JOptionPane.ERROR_MESSAGE); return; } @@ -150,8 +147,7 @@ class Map extends JPanel implements MouseListener, MouseMotionListener, KeyListe else if (PathfinderUtils.startNode != null && PathfinderUtils.endNode == null) { if (PathfinderUtils.isSameNode(node, PathfinderUtils.startNode)) { // Send an error message saying that start and end node are the same - JOptionPane.showMessageDialog(null, "End node and start node can't be the same node", - "Same node error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, "End node and start node can't be the same node", "Same node error", JOptionPane.ERROR_MESSAGE); return; } @@ -159,11 +155,10 @@ class Map extends JPanel implements MouseListener, MouseMotionListener, KeyListe PathfinderUtils.endNode = node; } - // If they both exist check if same node else move the end node + // If the end node exists check if start node exist and move the start else { if (PathfinderUtils.startNode !=null && PathfinderUtils.isSameNode(node, PathfinderUtils.startNode)) { - JOptionPane.showMessageDialog(null, "End node and start node can't be the same node", - "Same node error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, "End node and start node can't be the same node", "Same node error", JOptionPane.ERROR_MESSAGE); return; } @@ -184,55 +179,53 @@ class Map extends JPanel implements MouseListener, MouseMotionListener, KeyListe PathfinderUtils.barriers.add(node); } - - // Update the UI with barrier/start/end node - repaint(); } // Deleting nodes else if (SwingUtilities.isRightMouseButton(e)) { - int posX = e.getX() - (e.getX() % size); - int posY = e.getY() - (e.getY() % size); - if (key == 's' && PathfinderUtils.startNode != null) { - if (PathfinderUtils.startNode.getX() == posX && PathfinderUtils.startNode.getY() == posY) { + if (PathfinderUtils.isSameNode(node, PathfinderUtils.startNode)) { PathfinderUtils.startNode = null; } } else if (key == 'e' && PathfinderUtils.endNode != null) { - if (PathfinderUtils.endNode.getX() == posX && PathfinderUtils.endNode.getY() == posY) { + if (PathfinderUtils.isSameNode(node, PathfinderUtils.endNode)) { PathfinderUtils.endNode = null; } } else { - int nodeID = PathfinderUtils.locateBarrier(posX, posY); + int nodeID = PathfinderUtils.locateBarrier(node.getX(), node.getY()); if (nodeID != -1) { PathfinderUtils.remove(nodeID); } } - repaint(); } + + repaint(); } @Override public void keyPressed(KeyEvent e) { key = e.getKeyChar(); + if (key == 'q') { + System.exit(0); + } + if (key == KeyEvent.VK_SPACE) { if (running == false && isFinished == false) { if (PathfinderUtils.startNode == null || PathfinderUtils.endNode == null) { - JOptionPane.showMessageDialog(null, "Missing start or end node", "Missing node", - JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, "Missing start or end node", "Missing node", JOptionPane.ERROR_MESSAGE); return; } running = true; - // AStar needs to extend runnable because otherwise map.repaint() will wait to update the UI + // AStar needs to extend runnable because otherwise calling map.repaint() will wait for AStar to complete the pathfinding before updating the UI new Thread(new AStar(this)).start(); } else if (running == false && isFinished == true) { PathfinderUtils.barriers.clear(); @@ -242,9 +235,8 @@ class Map extends JPanel implements MouseListener, MouseMotionListener, KeyListe PathfinderUtils.endNode = null; isFinished = false; - running = false; - this.repaint(); + repaint(); } } } diff --git a/target/PathVisualizer-1.0-SNAPSHOT.jar b/target/PathVisualizer-1.0-SNAPSHOT.jar index b8d5142c8c67c2c6f90ed4f3cfa5df5fed7fcfc0..d3bf56fa714f3e35838ed05ce85bf78fc640f998 100644 GIT binary patch delta 8178 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 delta 8030 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 diff --git a/target/classes/Main/AStar.class b/target/classes/Main/AStar.class index 7861da64f30328ba1b25fe820d9e6273654f0f17..5a7dca54df6e2a61ed9f8dfc42ba1dff57f1e2e5 100644 GIT binary patch literal 3372 zcmbuC`CDAo8OJ~G%rJMB3jt(e5X9g@SVC|`8zRJ*Z6YKwL=vc0Zf0&~ZZg~%?_2^} zYn!T#H8xe-+9uiPvBL*oc)tzB*HV)xZ<|3v%LTGQv884P{wZ{-K>Iq!M5^L@YX zd*HRVUw9d~ioeAO5HtvxR1p?x_gM$5o}A@odbaJ^XQzB2yvA`Izh4NpcZ@`d5H*OI z#4&}~kma~NHw^ohCj=*~f)E?jvLUO`7o~KKX9%Ebnkm|V(bLS*40Ld+>{bX=#HwbL4h zu^208H|Q|wq)Uiu)pF!e#`bq>t)z0;ZL&(K#51-|ZP>ZXHn@D@LK^BJ%g=@f{@MDk zo$I@o#pvN`lWXV|f~mYhsC|9MdL_Qjj4In3P1b9dMaNYp8%;K8lRFhWNs}$yB-Ev>Txv3B`S!Mg?UpZ8+n!9m3#TEI zt*R`BXBRBT^_7$DCO5M~SfZ|KPy6faVx=0@?H!9esG99GxkZs8p33Emc3MR$s*3M2 z+0CdBw9;uI(Ozc7B0~0cj4Au~n%t`Fqxnjn+WLJaw=3(gXHVo0*il-sO!laIRuv1j zosN;lHrQ*DL6Pnp-FId^+e$0FoNX5rwp%(z4E6~v=aiDJZ+qTk!MD>Jrc-vock*rw zhn&fTLSsq6b6kJew^I9edREF-1jw5dR3#!A+u!A+{j3stCPhu0jO}l>olMq`QNyIk z0j7lNTs~#__BzY+9NQDB+LOtSq`LNDJ!}(x0Ju5LS$i(2!YJB`gNxu86l8WyR6z} z1=%aahVzqN%HHUx%f@tut5gMOB|-q<`veK77ZM1l$*jMd^tTG3iXR~S5ZFP008rog zJkr_q9L6lw^PDG~);6!HGeSU=5HX^}sl(()z|yiMKjtTz`Sm)YApDeY#ec8P2O^!b zEGyA`&Z~O(p%#NW?af4#Ud5ZJ*Rt$GHWMWX%ygc?D6#w)$AZ^48#C?+ZAs4QOT zA8O!==0p4ExN3iDj%y!yjy|O@@NR{53kn-LJI~P9d4>&LB{ts|kW*)$DZ3l&EU|5L z@Kr*mXBqCAXC%O`S;o5Nxh=phrF4ez`{ziVI=gRZWr_W#&h9ylaG1w9ibGIiw~;!a zffxzuSjv^0&oGUQlVC5+OmHCwXkm)w9Hf=QT*_l=v~U^6XyZ65c!~~VJc!nPCCH0#yCiL!9Iq=fCwvuZVPf|gmPyGy)(j(e29 zP>F-;8!U1E=@(fs+SL3!53CL~hLqAQ!}A;#R#!Dv>{LDBWuHN#PY%tPVGZO0+eG zb%;8(8BiM?`qbIiXBqoHthMj%5^d?;D($+v#6Y??++E@`y+)$yC~b-GQCbs51CN)X zS$U{|$LIL${yCmHGTv*PVoAcN9F6xHjiH25;-p5RO}kIe@rB+<85$i!3!;fgB0An1 zYYZh~CBB?660z~#cw;CLFY&cm#u`Iq!j(M_s;(*XNpS*J(n2>Ev5Izj=-_g$=L-6{ zk{w*dDA#Z+y`;I89M>^HAJeSi9tJqhTIRTcdDig~8+e0_{GCnwgU!6j7725c)H5i{ z*eVyZP1bU=3^FXkj7XYYGRbban^C!!TjfD+lSjB+o?u*_#?l-;LJh}h;#V{g=8bn& z$jJqc%1M4rzv^~5$!|25)k^U;$h55Fw=@xwFvs~F{ZvUkkMeu^3Cl7b;t%v=NSd|$ zk$xgFNe^$(PgL%voj=h}OdjL{{!Bk{-3OOZ-9ofs)xWvGV1>cMm%mBiE%k4NUcJo* z5s4$}kH^Z`I!H*5qh3w0S>ZV6&GFnUW5Idm0*ac?s@g2(w$#5=|8j7SZ_Bgql&b{; mNE64VhP^c5a0&b9Vn0`tTQvB3EAXhs4I-+C|Dq@GU;hL3&+_#E literal 3372 zcmbuB`Fm956~{kkW-@n{o7D^u6A@f+k`Uq=EkR+}B$xmu2!v|QW#%$-VVD{3+(@+6 z)~dy-wbiz^phb*SY8NXhj)_`pSF2s@zS`}dXrEduea@W;Ngw-L=ZE(_?|IMpp7WmV z&KvK(_zG|te~Yn-y;1tfM#W$5rT7Js#BKglgZW%k2vGL500TsShc2r-FSrN`a5WxQmY(+#REXdz5{zE+31L z?QXaB;J1p1HbB!7Da!y$=s~D*f z&vN^PpgUd=f=R`Tm2JyS=eAj1PH3nZ+fvNfzBO?Kv4tgr`>b27-n>=F_6`(0+jYlF zo}Jk+k+w^oQ!Mlg;gaRr1y6`qjrkZt{fK9!_YYa6nn%rPE1w?ETb{kOWEWIOXi5$Y z%v188S@3V_3igDzORD>*5GkHf3S=jQK=w94vO*xIr<|U0g6uVTN@&d5-WGepTWgoS zs-^m5=R89~Y@|5urtOW6Mlj~bXNA7hWF6O;T*GRE<0fC^X@e6cUsC2X44VuxWbkE^ zukclqukozO*LhZGmgGC|Ox-!RczKIjy(y_>iC<+IHy*d~AB zuR_ds%Fl$*H22=Ed-mCBPiUEA4UZQJwc7WYAY>ZLbU8zZmohMvkfc6obpDe;FNQA#_y)xLMUr%xdxM+ z143NOub8n%oZD?7m@caItIYB$D$Q zuo{YfwHKZ3hq4fM?E}SIZNYHulI3VC)|E@PIyWzl+jFjMW%Md<+a>j2v-VqK$#n{z z->chQD{TvrtnKY|G8(IB*7i2pPB!NW_4#7j^6a&i>pHe8)FlT7^s$Cr@Ld+_%eJ@8 zp9R&Pi)38uV0FI4%eFTcvQTn&Z320kN~e&m!R-(t&Y3(eNOsQ4)ogzI1tVvbwY`Oq zjtQZ4R??qSwJ=qqd#w;G6%VR`^?n9I|9KfPjt^e_!kGbqMQNkFWt4CO`ma>3RX_>VBTU6u}un z!bx9equvn$qJ)SMB~CLY*8&Twnrvdg|Kzp!76oB5*VXX*2p~YDYl^xG;W^Zpuib<} zvyWz0L-b0~2xx3h$MIFARofJeEA!(7M_mT{Dec#=*(LS2L~+07PG1UN#7t!(q7IC&-q zlU&a*!U)hrn0JWF+l)qY1|0^XpOR`+gN+!NAjjLQPg*?5f{rSA?j-T{$1pk`Cv>vC zW11y_CzSG27&%5mhfg&ft1_2Xl$q?9QmW|~i>FxHQ{lX6&R4upg$r~KR=DuwODr30 z?|6ZWR)*R_Dl|o6hNQ5vuB~o{PT?>;N_7dZvTS9zEmR@W7WPdv>!C>xzUdRE-<)FM z|Do+;_f&{v`s#e>o(fHwzHm>4?miLcLlZsJ%JOMe?4PFhp|L*W z1dR!!b~V;#w1pBzg^T@2M11(nG?(;6s-f|1_>5>Gl8BD=#o9uNScOXyMj|%W7jFwC z;uS8NVqsgTT6b0CHtm{fJ!wtAau(CWxvU^bFP&V>)m*|gT*@$)G0GL(NFN!lB+peG z&_Bei;!aj`lr>C~VurQ6%m&_KBY)>w{=p{RX0wF3PFfh0MQoAt*eYwdUIrPF5q3z1 zoiffYxr0%;n;YeRZjy(&SsrIhp2G5L^dTBJN;^9kCd^xBDCGETjmmL$lG1LMUoD ze$Hl$6mh=~E~I`j(bg6J=4^vy2G+%I6L^Pcje3_2A`(aRFIH`A-9^YBM}2;QT`nBu ztZA;8VqtKGzJQkIbDEp^wJj}Iwp#zzaxBwR= zL*j_1Jdf`j)Ilw8_wyAP@m9n_X$n3zj!@f~y$QZev<>E~-DaH#&PN!9$wW}^{e{LA z+?ffZU}oYXIvbas)-;ZPhsPg!WY|m=l7SI?AV3hn9;C=AkIRt9pr`=;qd=7!;8CaX hKOW~W@Gj`D6z}r|c)U5dXexA{6ptn?KxpS*oj*9;9Af|g delta 252 zcmYk0Jxjw-6o#LZYjShb*e|Wl-Bb!09J-W(lT+x{QnzanNsy2sxH@O-AC(5OStDPY9fjG#5fNE2^TI3+n26xqWzlONr1z zoZF(xa$EnkcXciFOZ#fG7h64Ni^uY5(=g_Q5LW@>q6jgNAqWuO?2(;c8zAySMFOP1 o20EmG;gl|N@6%IH1M^9+-lJCk1oyq;#ONc6p+_GO2L9IY0P{l}l>h($ diff --git a/target/classes/Main/Map.class b/target/classes/Main/Map.class index c18b509284a356f978a21749fb994f65218aa1d3..4ddee1331c5daaed8718e4741b545c358058112a 100644 GIT binary patch literal 6355 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 literal 6412 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 LYRLU21|R(`RHMf@ diff --git a/target/classes/Main/Node.class b/target/classes/Main/Node.class index 930f2951c3a36fe849966c6cd6a37e211530f7d2..3ec59642ea54906e9c08fe2950a1b61fdfd1aeb9 100644 GIT binary patch literal 1431 zcmZ{jT~8B16o#KEyZvGpN-LFb0TtUtse3X~m2aTKLJKkBviPu~Oz^;V(UvS7?%T(T+@HQ`Xz>R8k@ zhe@qIin{JFrPU`YY z{!uqjRCiB1e)qudN21e7D?X0S6jm6-uk}9K3hPV@tC7?TgZMC+JXE-05Wl#@;5M39 zDBQEF`LV{Ow8jgAcsnU4Aq?VYiINZo@lK+46y=wv=lxEw9SM9%w!9`sz!F7rK%Sf! z2IRyl9Y@nRp2lh#XPE%HE(V}{j08f1E^yI z1uQIT6q%yLJY^Pv#iSBTx(_U9GNr$SEr(*6n`!43O6P3v8}-i@4f1-@)dihoL0V98 zi`(hXTjY}M3*#j`xvnsQO;uN@rzZVH%4-m5ykZ2YWkDv5Aa~3lwSPV(Ak)~)3;~f- z6OaZ?gCo;lGLFm}K|EIfb7XbEbQWX@o8=)OaxDbpuF;V~){zw>$UU&j)2@Zf>g2~kBlG>%pjF4$YX3ahk(e-6_9m( H88-d^{|1ZR literal 1431 zcmZ|OT~E_c7{KxW)3qBLD=$NkcL5c*qD;YfA%+_hWXVJm4Z+KTwUo?ZMlt%GywJqO z#0x)wAIg~Lv_Yud&2x6%p7T4;PJjRT`3uJb>^lcyvx1ak_x2c^iq4*@~M)9`b)LX5_zFE>-LEWN%OFYzj7bR378$uO0yx*!z|L=T?Ng*aKrWG-YOAL9J0Qv#X6VRisS|22gy zawDfArLUQaEaXC#SpKgfYkf*t$TAKq10eb=6ta?A5i47f)m+HU{EApvh=;@40EoU@ zh1|-86ta-@T*&QwNFfW^z+rO$L_ZvbtmZ=OEaXux#x<}oz> E0y;&ADgXcg diff --git a/target/classes/Main/PathfinderUtils.class b/target/classes/Main/PathfinderUtils.class index a6ec0004bc6c2aa82a17eeb2102208067abaf160..ef6af34278c55708becea6b8c7a6f6d7b5051c9c 100644 GIT binary patch literal 2008 zcmZvcTT@e46vuz-oP^vC7ZH(5M5P6jNTDL$0I}euMgbKR6l?7voWijoVNMRV_SrAc z$2xsroayl5OVb&YI@9TE``o8~hkk%kT046ughBK(k;jI=*lqkxrHXt4bUS(IP~2DUoaOvuM-h9^;(f&`l3#Ih3aOwXyDg6GL|##mNsAQ61+$<^I+jTPzoK^(sS!R&0MsIX<*FLB9}katkV<5F4-X7*g2>EKYG+s9kjYo3`iV{L;PJM6&9p!a8el zPGLm~zU}E-QNj#a40B$Hx`k$R2?}Eigj0&c`u%IM=2faC!@S?>f z#U_@?<_nIlzYyYzuz$Cwqn>9!QGJhc8B>T%yNfy7U-cZ}(4Ns4uBv2YNC;fiiqwz0 zIcIWpdEW7E+w)mRXdKUH?Cgx~xymj(1OAd*5SmLMdq#3dsLkdxw(pFUCQ}F|(&=Pc z5LXcO{YsE0LhZC~XTF%QS9Wj{>Ew)HxC?^Vg3PNK&3nFJ`pYYVJQBhSp8ciDDTFes zo@$d2$m#mS!u-KFUI3=f+Ds6rr;Y{&*vDz= z8Ky~BaRd{CL2fang&AR*Db#O-+e{(c0iu}O7;n&vj)~A~s2w%qlZgI_iFW|5RlC%{NM&Qd7E#0A1A4O`Kz#C&4w6JRrpq-Q?)P zr?=9iYjkj5^K0N!KGE$m@O0x!O==?ekLt%ZwemN!TLk~o?Rrq5{zrMR?icCNyq_^u zq;G?h*HcB#ykhVfqeXgBn~WIDYJtYe0(BP|t4K1@lX}JAx5Ro>>^c$6?)UXKuXhRd z5(7>Uqn}0wh;xc=&M?4PMj0f{5R(jZi!;nIS|K{B3HD=x zh=bc4ki-_jEeyhZR^d6J=K+$hxqR;>AOA?Ga_X#{#ww>CRki3{X(XVRSv~GeMCc%j JVCxN@{|_>Ja+Ux9 literal 2008 zcmZvbU2_v<6vuyOH)-CsZAf1%eFc@0q}T|Q*Op>Ikw9Bs3X~QBx5?Trrb%bBMe&+1 z;H8Wg9cG-~aATY)RAwA+_1Y`HgCD?J#d)5@G*tHD+4Dbp&Uw!N{LlXS&yPO=N6AI$ z5sn$14l*$p`jBJG1J$h0LT|_D6-tjJsI0{Z-Eq`gVODo1C)UVrIIO zcSgrmY-zXr~V zucKQh-J&zSy1d|cH|&LiBP1qEIlFMn_FRQ)&VawZ-~TtU?POF0I3sJW` zV=p^ZI(w51d>YKuydbt93qqh=@_fPcmsbRNAcXUt{e|jM2<28i&nfyspr{##$8v?* zB%(8=RWIjUa246rNR~8;P zIbUem$*-mc%I;T=Ryr$~i;gdJB(tgNnl+@33V}t(zg>OJRbLkbv#e4MCbR#~cw>>~ zMaREtt1(waYfh#bq!LU!pI0rsq1-(C>7Wy6BCH0Duop1sCah-p8t&bN`*z`e27s`d zHxNRUehBXX83X}>>F3Dz`igh;waVGV0l=yTFvvk&CP}K6{4EA1Fm9gdtzc|o3Qsv) z!RXy2VDK}+4Vt>w=z851>RBV$`|PnH>#u$>o&l!5wUZ#wN(*sD*u!yJ8KYfyu@4i2 z)1(=~PrZwW}4MIa3gw_ZKo|!vjTJ&i8=%k-626W}lYBnQU z3Fzh+1GUyoq>C`e>(cx|K$loG$9gJ6YSVS~tp7tdD@1yBW*w~%X&8O#p zHi?$x;T1}@a${-Qo04)sC%R$bNR(fAw;Q;4m@ZFfophV1! - + - - - + - + - - - + + - - + + - + - - + + - - + + - - - + + - + - - + - - + + - - + - - + - + \ No newline at end of file diff --git a/target/test-classes/Main/AppTest.class b/target/test-classes/Main/AppTest.class index 6b3f4e2a47ae644aee71876320b08afdf766f7ab..a08e3e3772afae6fdfb00e95ffc185c606b4b1fa 100644 GIT binary patch delta 262 zcmYL^Jx{_=6o#L3`vuplLP3;~3G32ZEaSZNiT- zrk5Je`o7Qe=9Et9%+5bw-@u5zM&Sgw1`l6oWyv9lUy^(qFV@-Sxe)wuny1A?a2}(T zra?168?G=X8HNEjf|)029#40>JMsG(3T%)K?A(a~87Kjl9@SZ-9cN@3B#-M2f p=29S}0|;Gwl!Zrsu=`2y4_7Zhh)bsy4D3X0xU2m=YrD6b55FNU8-)M> delta 262 zcmYL?F;Bu!7)8(bT3UTRu@nUynXoQzU^OHxY{bR5S3^t*X-I5X`3?OStV|jQ*Czfb zLi#M>uJ@jEE3fjBzr)WjFy>z4)6v9qLvBOvgy1R5vtlB656Nq}-C0A6Af#vLGZ4%? z&2l?kuU{6Qg%B;%O=?$Z{$ZcrmW%hIoQ<{&@$jjmkeWvb0gE6&>+uWOyZQoL4Vp{9 o{14Dv0fHewIe2`6{cqG6)+ivxr`rgI?xHbVH~zM>-MG)_2v?dL`2YX_ -- 2.52.0