From b067d432f625720c61e27a405c2fcf4c707b1ca6 Mon Sep 17 00:00:00 2001 From: HorizonCode Date: Fri, 18 Feb 2022 09:59:47 +0100 Subject: [PATCH] wanna kms, so dumb --- .idea/vcs.xml | 6 + log/18-02-2022 09-56-58.log | 0 log/latest.log | 34 +++++ .../horizoncode/tickettest/TicketTest.java | 10 +- .../tickettest/logging/ConsoleColors.java | 68 ++++++++++ .../tickettest/logging/Logger.java | 120 ++++++++++++++++++ .../tickettest/manager/Ticket.java | 3 +- .../tickettest/manager/TicketCallback.java | 8 -- .../tickettest/manager/TicketManager.java | 5 +- .../horizoncode/tickettest/TicketTest.class | Bin 2610 -> 3064 bytes .../tickettest/logging/ConsoleColors.class | Bin 0 -> 3637 bytes .../tickettest/logging/Logger.class | Bin 0 -> 4860 bytes .../tickettest/manager/Ticket$Builder.class | Bin 723 -> 723 bytes .../Ticket$InternalTicketBuilder.class | Bin 2070 -> 2070 bytes .../tickettest/manager/Ticket.class | Bin 4228 -> 4368 bytes .../tickettest/manager/TicketCallback.class | Bin 1049 -> 0 bytes .../manager/TicketManager$Builder.class | Bin 793 -> 793 bytes ...Manager$InternalTicketManagerBuilder.class | Bin 2485 -> 2485 bytes .../tickettest/manager/TicketManager.class | Bin 6220 -> 6384 bytes 19 files changed, 240 insertions(+), 14 deletions(-) create mode 100644 .idea/vcs.xml create mode 100644 log/18-02-2022 09-56-58.log create mode 100644 log/latest.log create mode 100644 src/net/horizoncode/tickettest/logging/ConsoleColors.java create mode 100644 src/net/horizoncode/tickettest/logging/Logger.java delete mode 100644 src/net/horizoncode/tickettest/manager/TicketCallback.java create mode 100644 target/classes/net/horizoncode/tickettest/logging/ConsoleColors.class create mode 100644 target/classes/net/horizoncode/tickettest/logging/Logger.class delete mode 100644 target/classes/net/horizoncode/tickettest/manager/TicketCallback.class diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/log/18-02-2022 09-56-58.log b/log/18-02-2022 09-56-58.log new file mode 100644 index 0000000..e69de29 diff --git a/log/latest.log b/log/latest.log new file mode 100644 index 0000000..3898b11 --- /dev/null +++ b/log/latest.log @@ -0,0 +1,34 @@ +[09:58:54 INFO] Got ticket with UUID: eb64d1ad-a701-4890-a629-7fbbbc551778 +[09:58:54 INFO] Got ticket with UUID: f9a11e85-a7e7-422e-9533-6b7b23e4163b +[09:58:54 WARN] max amount of tickets reached, waiting... +[09:58:59 INFO] ticket with UUID f9a11e85-a7e7-422e-9533-6b7b23e4163b expired. +[09:58:59 INFO] ticket with UUID eb64d1ad-a701-4890-a629-7fbbbc551778 expired. +[09:58:59 INFO] i expired, oof :c +[09:58:59 INFO] i expired, oof :c +[09:58:59 INFO] Got ticket with UUID: 3df300a7-3e63-48be-9f96-85297927ad0f +[09:58:59 INFO] Got ticket with UUID: 9e166410-dcb5-46d5-b294-f3df7c1f93ca +[09:58:59 WARN] max amount of tickets reached, waiting... +[09:59:04 INFO] ticket with UUID 3df300a7-3e63-48be-9f96-85297927ad0f expired. +[09:59:04 INFO] ticket with UUID 9e166410-dcb5-46d5-b294-f3df7c1f93ca expired. +[09:59:04 INFO] i expired, oof :c +[09:59:04 INFO] i expired, oof :c +[09:59:04 INFO] Got ticket with UUID: 13ba05cd-c27f-4e68-b75d-7794aeeeb45a +[09:59:04 INFO] Got ticket with UUID: 58c4c964-8bb7-4b0f-897a-fa5025d31977 +[09:59:04 WARN] max amount of tickets reached, waiting... +[09:59:09 INFO] ticket with UUID 58c4c964-8bb7-4b0f-897a-fa5025d31977 expired. +[09:59:09 INFO] ticket with UUID 13ba05cd-c27f-4e68-b75d-7794aeeeb45a expired. +[09:59:09 INFO] i expired, oof :c +[09:59:09 INFO] i expired, oof :c +[09:59:09 INFO] Got ticket with UUID: f01ad999-9819-4b0f-9f36-87f2bd337935 +[09:59:09 INFO] Got ticket with UUID: 1db2ff99-9f5b-425e-9ee8-62e2072dd8ce +[09:59:09 WARN] max amount of tickets reached, waiting... +[09:59:14 INFO] ticket with UUID f01ad999-9819-4b0f-9f36-87f2bd337935 expired. +[09:59:14 INFO] ticket with UUID 1db2ff99-9f5b-425e-9ee8-62e2072dd8ce expired. +[09:59:14 INFO] i expired, oof :c +[09:59:14 INFO] Got ticket with UUID: e0f84463-9df9-4fc5-b9ff-5144207e0e30 +[09:59:14 INFO] i expired, oof :c +[09:59:14 INFO] Got ticket with UUID: 3ba2bf87-0264-4799-a921-68c08383a245 +[09:59:19 INFO] ticket with UUID e0f84463-9df9-4fc5-b9ff-5144207e0e30 expired. +[09:59:19 INFO] ticket with UUID 3ba2bf87-0264-4799-a921-68c08383a245 expired. +[09:59:19 INFO] i expired, oof :c +[09:59:19 INFO] i expired, oof :c diff --git a/src/net/horizoncode/tickettest/TicketTest.java b/src/net/horizoncode/tickettest/TicketTest.java index 7016ec0..15c3d9f 100644 --- a/src/net/horizoncode/tickettest/TicketTest.java +++ b/src/net/horizoncode/tickettest/TicketTest.java @@ -1,21 +1,25 @@ package net.horizoncode.tickettest; import lombok.Getter; -import net.horizoncode.tickettest.manager.Ticket; -import net.horizoncode.tickettest.manager.TicketCallback; +import net.horizoncode.tickettest.logging.Logger; import net.horizoncode.tickettest.manager.TicketManager; +import java.io.File; import java.util.stream.IntStream; public class TicketTest { + @Getter private static TicketTest instance; @Getter private final TicketManager ticketManager; + @Getter private final Logger logger; public static void main(String[] args) { new TicketTest(); } public TicketTest() { + instance = this; + this.logger = new Logger(new File("log"), true); this.ticketManager = TicketManager.builder().ticketLifespan(5000).maxTicketsExisting(2).build(); IntStream.range(0, 10) @@ -24,7 +28,7 @@ public class TicketTest { getTicketManager() .addTicket( () -> { - System.out.println("i expired oof"); + getLogger().info("i expired, oof :c"); }) .use()); diff --git a/src/net/horizoncode/tickettest/logging/ConsoleColors.java b/src/net/horizoncode/tickettest/logging/ConsoleColors.java new file mode 100644 index 0000000..2599ad8 --- /dev/null +++ b/src/net/horizoncode/tickettest/logging/ConsoleColors.java @@ -0,0 +1,68 @@ +package net.horizoncode.tickettest.logging; + +public class ConsoleColors +{ + public static final String RESET = "\u001b[0m"; + public static final String BLACK = "\u001b[0;30m"; + public static final String RED = "\u001b[0;31m"; + public static final String GREEN = "\u001b[0;32m"; + public static final String YELLOW = "\u001b[0;33m"; + public static final String BLUE = "\u001b[0;34m"; + public static final String PURPLE = "\u001b[0;35m"; + public static final String CYAN = "\u001b[0;36m"; + public static final String WHITE = "\u001b[0;37m"; + public static final String BLACK_BOLD = "\u001b[1;30m"; + public static final String RED_BOLD = "\u001b[1;31m"; + public static final String GREEN_BOLD = "\u001b[1;32m"; + public static final String YELLOW_BOLD = "\u001b[1;33m"; + public static final String BLUE_BOLD = "\u001b[1;34m"; + public static final String PURPLE_BOLD = "\u001b[1;35m"; + public static final String CYAN_BOLD = "\u001b[1;36m"; + public static final String WHITE_BOLD = "\u001b[1;37m"; + public static final String BLACK_UNDERLINED = "\u001b[4;30m"; + public static final String RED_UNDERLINED = "\u001b[4;31m"; + public static final String GREEN_UNDERLINED = "\u001b[4;32m"; + public static final String YELLOW_UNDERLINED = "\u001b[4;33m"; + public static final String BLUE_UNDERLINED = "\u001b[4;34m"; + public static final String PURPLE_UNDERLINED = "\u001b[4;35m"; + public static final String CYAN_UNDERLINED = "\u001b[4;36m"; + public static final String WHITE_UNDERLINED = "\u001b[4;37m"; + public static final String BLACK_BACKGROUND = "\u001b[40m"; + public static final String RED_BACKGROUND = "\u001b[41m"; + public static final String GREEN_BACKGROUND = "\u001b[42m"; + public static final String YELLOW_BACKGROUND = "\u001b[43m"; + public static final String BLUE_BACKGROUND = "\u001b[44m"; + public static final String PURPLE_BACKGROUND = "\u001b[45m"; + public static final String CYAN_BACKGROUND = "\u001b[46m"; + public static final String WHITE_BACKGROUND = "\u001b[47m"; + public static final String BLACK_BRIGHT = "\u001b[0;90m"; + public static final String RED_BRIGHT = "\u001b[0;91m"; + public static final String GREEN_BRIGHT = "\u001b[0;92m"; + public static final String YELLOW_BRIGHT = "\u001b[0;93m"; + public static final String BLUE_BRIGHT = "\u001b[0;94m"; + public static final String PURPLE_BRIGHT = "\u001b[0;95m"; + public static final String CYAN_BRIGHT = "\u001b[0;96m"; + public static final String WHITE_BRIGHT = "\u001b[0;97m"; + public static final String BLACK_BOLD_BRIGHT = "\u001b[1;90m"; + public static final String RED_BOLD_BRIGHT = "\u001b[1;91m"; + public static final String GREEN_BOLD_BRIGHT = "\u001b[1;92m"; + public static final String YELLOW_BOLD_BRIGHT = "\u001b[1;93m"; + public static final String BLUE_BOLD_BRIGHT = "\u001b[1;94m"; + public static final String PURPLE_BOLD_BRIGHT = "\u001b[1;95m"; + public static final String CYAN_BOLD_BRIGHT = "\u001b[1;96m"; + public static final String WHITE_BOLD_BRIGHT = "\u001b[1;97m"; + public static final String BLACK_BACKGROUND_BRIGHT = "\u001b[0;100m"; + public static final String RED_BACKGROUND_BRIGHT = "\u001b[0;101m"; + public static final String GREEN_BACKGROUND_BRIGHT = "\u001b[0;102m"; + public static final String YELLOW_BACKGROUND_BRIGHT = "\u001b[0;103m"; + public static final String BLUE_BACKGROUND_BRIGHT = "\u001b[0;104m"; + public static final String PURPLE_BACKGROUND_BRIGHT = "\u001b[0;105m"; + public static final String CYAN_BACKGROUND_BRIGHT = "\u001b[0;106m"; + public static final String WHITE_BACKGROUND_BRIGHT = "\u001b[0;107m"; + + public static String stripColors(final String msg) { + String stripped = msg; + stripped = stripped.replace("\u001b[0m", "").replace("\u001b[0;30m", "").replace("\u001b[0;31m", "").replace("\u001b[0;32m", "").replace("\u001b[0;33m", "").replace("\u001b[0;34m", "").replace("\u001b[0;35m", "").replace("\u001b[0;36m", "").replace("\u001b[0;37m", "").replace("\u001b[40m", "").replace("\u001b[41m", "").replace("\u001b[42m", "").replace("\u001b[43m", "").replace("\u001b[44m", "").replace("\u001b[45m", "").replace("\u001b[46m", "").replace("\u001b[47m", "").replace("\u001b[0;100m", "").replace("\u001b[0;101m", "").replace("\u001b[0;102m", "").replace("\u001b[0;103m", "").replace("\u001b[0;104m", "").replace("\u001b[0;105m", "").replace("\u001b[0;106m", "").replace("\u001b[0;107m", "").replace("\u001b[1;30m", "").replace("\u001b[1;31m", "").replace("\u001b[1;32m", "").replace("\u001b[1;33m", "").replace("\u001b[1;34m", "").replace("\u001b[1;35m", "").replace("\u001b[1;36m", "").replace("\u001b[1;37m", "").replace("\u001b[1;90m", "").replace("\u001b[1;91m", "").replace("\u001b[1;92m", "").replace("\u001b[1;93m", "").replace("\u001b[1;94m", "").replace("\u001b[1;95m", "").replace("\u001b[1;96m", "").replace("\u001b[1;97m", "").replace("\u001b[0;90m", "").replace("\u001b[0;91m", "").replace("\u001b[0;92m", "").replace("\u001b[0;93m", "").replace("\u001b[0;94m", "").replace("\u001b[0;95m", "").replace("\u001b[0;96m", "").replace("\u001b[0;97m", "").replace("\u001b[4;30m", "").replace("\u001b[4;31m", "").replace("\u001b[4;32m", "").replace("\u001b[4;33m", "").replace("\u001b[4;34m", "").replace("\u001b[4;35m", "").replace("\u001b[4;36m", "").replace("\u001b[4;37m", ""); + return stripped; + } +} \ No newline at end of file diff --git a/src/net/horizoncode/tickettest/logging/Logger.java b/src/net/horizoncode/tickettest/logging/Logger.java new file mode 100644 index 0000000..2e17b48 --- /dev/null +++ b/src/net/horizoncode/tickettest/logging/Logger.java @@ -0,0 +1,120 @@ +package net.horizoncode.tickettest.logging; + +import org.apache.commons.io.FileUtils; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.concurrent.ConcurrentLinkedDeque; + +public class Logger { + private final SimpleDateFormat dateFormat; + private final File logfile; + private final ConcurrentLinkedDeque logList; + private final boolean debug; + + public Logger(final File dir, boolean debug) { + this.debug = debug; + SimpleDateFormat dateFormat_logfile = new SimpleDateFormat("dd-MM-yyyy HH-mm-ss"); + this.dateFormat = new SimpleDateFormat("HH:mm:ss"); + this.logList = new ConcurrentLinkedDeque<>(); + if (!dir.exists()) { + dir.mkdir(); + } + final File latestdel = new File(dir, "latest.log"); + if (latestdel.exists() && !latestdel.isDirectory()) { + final String date = dateFormat_logfile.format(new Date(latestdel.lastModified())); + final File newdatefile = new File(dir, date + ".log"); + try { + FileUtils.copyFile(latestdel, newdatefile); + } catch (IOException e) { + e.printStackTrace(); + } + } + this.logfile = new File(dir, "latest.log"); + if (!this.logfile.exists()) { + try { + this.logfile.createNewFile(); + } catch (IOException e2) { + e2.printStackTrace(); + } + } + } + + public void emptyLine() { + System.out.println(" "); + this.logToFile(" "); + } + + public void logCommand(final String msg) { + this.logToFile("> " + msg); + } + + public void info(final String msg) { + final String date = this.dateFormat.format(new Date()); + final String[] split = msg.split("\n"); + for (final String msgeh : split) { + final String colout = "\u001b[0m[" + date + " " + "\u001b[0;34m" + "INFO" + "\u001b[0m" + "] " + msgeh; + final String out = "[" + date + " INFO] " + ConsoleColors.stripColors(msgeh); + System.out.println(colout); + this.logToFile(out); + } + } + + public void debug(final String msg) { + final String date = this.dateFormat.format(new Date()); + final String[] split = msg.split("\n"); + for (final String msgeh : split) { + final String colout = "\u001b[0m[" + date + " " + "\u001b[4;33m" + "DEBUG" + "\u001b[0m" + "] " + msgeh; + final String out = "[" + date + " DEBUG] " + ConsoleColors.stripColors(msgeh); + if (debug) + System.out.println(colout); + this.logToFile(out); + } + } + + public void warning(final String msg) { + final String date = this.dateFormat.format(new Date()); + final String[] split = msg.split("\n"); + for (final String msgeh : split) { + final String colout = "\u001b[0m[" + date + " " + "\u001b[4;33m" + "WARN" + "\u001b[0m" + "] " + msgeh; + final String out = "[" + date + " WARN] " + ConsoleColors.stripColors(msgeh); + System.out.println(colout); + this.logToFile(out); + } + } + + public void error(final String msg) { + final String date = this.dateFormat.format(new Date()); + final String[] split = msg.split("\n"); + for (final String msgeh : split) { + final String colout = "\u001b[0m[" + date + " " + "\u001b[1;31m" + "ERROR" + "\u001b[0m" + "] " + msgeh; + final String out = "[" + date + " ERROR] " + ConsoleColors.stripColors(msgeh); + System.out.println(colout); + this.logToFile(out); + } + } + + private void logToFile(final String s) { + this.logList.add(s); + this.saveFile(); + } + + private void saveFile() { + try { + synchronized (this.logfile) { + final BufferedWriter bw = new BufferedWriter(new FileWriter(this.logfile)); + for (final String str : this.logList) { + bw.write(str); + bw.newLine(); + } + bw.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/net/horizoncode/tickettest/manager/Ticket.java b/src/net/horizoncode/tickettest/manager/Ticket.java index 2aad54c..f6adfc6 100644 --- a/src/net/horizoncode/tickettest/manager/Ticket.java +++ b/src/net/horizoncode/tickettest/manager/Ticket.java @@ -3,6 +3,7 @@ package net.horizoncode.tickettest.manager; import lombok.Builder; import lombok.Getter; import lombok.Setter; +import net.horizoncode.tickettest.TicketTest; import java.util.UUID; import java.util.concurrent.CompletableFuture; @@ -29,7 +30,7 @@ public class Ticket extends CompletableFuture { .submit( () -> { TimeUnit.MILLISECONDS.sleep(ticketManager.getTicketLifespan()); - System.out.println("ticket with UUID: " + getTicketID() + " expired."); + TicketTest.getInstance().getLogger().info("ticket with UUID " + getTicketID() + " expired."); ticketManager.getTicketSet().remove(this); getOnExpire().run(); return null; diff --git a/src/net/horizoncode/tickettest/manager/TicketCallback.java b/src/net/horizoncode/tickettest/manager/TicketCallback.java deleted file mode 100644 index 9e71596..0000000 --- a/src/net/horizoncode/tickettest/manager/TicketCallback.java +++ /dev/null @@ -1,8 +0,0 @@ -package net.horizoncode.tickettest.manager; - -public class TicketCallback{ - public Ticket call(Ticket ticket) { - System.out.println("Ticket " + ticket.getTicketID() + " expired."); - return ticket; - } -} diff --git a/src/net/horizoncode/tickettest/manager/TicketManager.java b/src/net/horizoncode/tickettest/manager/TicketManager.java index 09606e9..b45f72c 100644 --- a/src/net/horizoncode/tickettest/manager/TicketManager.java +++ b/src/net/horizoncode/tickettest/manager/TicketManager.java @@ -5,6 +5,7 @@ import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; import lombok.Builder; import lombok.Getter; +import net.horizoncode.tickettest.TicketTest; import java.util.HashSet; import java.util.Set; @@ -29,14 +30,14 @@ public class TicketManager { service.submit( () -> { if (waitForFreeTicket()) - System.out.println("max amount of tickets reached, waiting..."); + TicketTest.getInstance().getLogger().warning("max amount of tickets reached, waiting..."); while (waitForFreeTicket()) { TimeUnit.MILLISECONDS.sleep(1); } Ticket t = Ticket.builder().timeTicketCreated(ticketLifespan).onExpire(onExpire).ticketManager(this).build(); - System.out.println("Got ticket with UUID: " + t.getTicketID()); + TicketTest.getInstance().getLogger().info("Got ticket with UUID: " + t.getTicketID()); return t; }); try { diff --git a/target/classes/net/horizoncode/tickettest/TicketTest.class b/target/classes/net/horizoncode/tickettest/TicketTest.class index b4e1de4f4334af3a4389c83f8cd885ff22ed3915..5079aa8ca0da80995eb3ce31d3432bf3d8ede5fe 100644 GIT binary patch delta 1311 zcmZXUTXz#x6vuy)ODCC}(loRUw6zT?(4>^KY85GnR$D+@5L?iKh-o@a)5c6q2E-ew zS3sZYJoyQHaxE>ABCO>H@FVc|2N&#|aT$4y=^IT7JSi#A@e2s5emFI&9AR9L*^*?r4mnv)i%IIWLYHR81x zGt4H${Dzk1blmxb9B*pZw=5R8sCAbjdw5&Ny=?N1L8Mr&y18=RHaO^w1^Z+3#r&G> z&f8UYVzYG8YAZQ~f?Y8f_O1G@ST1B|oWkahHwWA2++2QbHn%>XTP#V4SiyErKMI)k zvcZAYfL_U%X^#p<-2I>66#ydr3tHRv9i*-_5973u0k`hr2Csc+UdaWSm5qnjI}ccQ_= zfk=%FJ;u+x6XDyj&!zmz)w1l(kRFe>5>9vz!`~%C#qzRa@`d6{ZYtTdam5iC;U8_| z#%-_9d>H!1V86F7GT+%4`$N+#!^CKzQK+Z3_u=n@DJz=v}PLJz`y` zI=jMkI_kvl(ix0f_ef;!vm1V;E5HvD25Lbxg8|_MU4-Zs7Cpi}$ryV%PA`+fcZby! zhy1!m1TQ@Q7PDbC`5q?Q-6o!ZH#=7OHooSG_7WhL7w+1 r9A!!FUfHK<`R?RpCr-(|BKKF^;%k}EnI@UDf_a^D^3&3JE^z)I=8MYm delta 981 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 literal 0 HcmV?d00001 diff --git a/target/classes/net/horizoncode/tickettest/manager/Ticket$Builder.class b/target/classes/net/horizoncode/tickettest/manager/Ticket$Builder.class index 159d4b4ffbd0170bb0082e3e1e8ebb30cb73b41d..9db17c1c21d65d3adc1ff3e05676e8fdd6fe94df 100644 GIT binary patch delta 31 mcmcc2dYN^DD-)|e0}F$}WG^NsP7?-J22%!32D8aind|^_90pGS delta 31 mcmcc2dYN^DD-)|80}F%xWG^NsPGbgE1``HO2Ghw?nd|^^*9J-e diff --git a/target/classes/net/horizoncode/tickettest/manager/Ticket$InternalTicketBuilder.class b/target/classes/net/horizoncode/tickettest/manager/Ticket$InternalTicketBuilder.class index 991f2c36623455913328df50c24df8b68b58a649..a5fa954e94014363d3091b065755ce377017fc05 100644 GIT binary patch delta 61 xcmbOxFil{?Usgt*$^TgGfaG~L@yQ`5xoT#1p<)0sa0=BT= zvX|RJ)N{Lv9+zJ32(yphF3dbE@wVdFjHxq0v+DVILBbzLj(`;z>PUg3_YLD0S z*waR@tM3hmH!W}Rw&fk(wY zcf~BH_|$T(fkOd=9-<~1EyXa6_q`Hub#w2+7KR2q&r6^(*2`@2}#`G^@pk|mIHQ3Uy0bA z8XiuJ8#ej=$YFU+jt)0vkG*d9xY3psCI5FAg2~Z?DerH$Ej(kH<*cQXF0UiJ)nvTM z@NdC$hI;SkaG6(R^SlYWajIT62!aIk!o&*bn0+mG=WCg`=&(Fj(1MXQg;t3(qVwYm zn0W%TVh7kN(iIJ5IINQ>u-Q1aaizQ&u3D$v7L&IN zES*zcym6j_@O(WM6_<3pr>=Xa`^VG?I$SiZo?ox~b*`Q`>;(~t-jvF2GLQ08IiB~GT8(D!#0RK!#s2HSG-gFdY^Ym KOl}`{)Aui#IoYWI delta 1437 zcmZvc*>@9l6vsc4E|W}t3ANCchEmc}1R8Da23l~TqP0pbS}S5zj5N|f+thT*qG&`B zToD~NTtM7+X^Zgy=lJ5AzWD5m|ABvjdc1cUX*{P7x%VdDyM4cNCnp<^HspT!=i*O5 zC+8iub61Ea?p8DCa1TRa?q!EY_f<;LgJB+Gm(9ZtA(9SjNNVaMYIfUah|X_ zZ1d#I#VsY)Q{G=C>A{@gX|@>F(`>k!7Mml6XL#1;sNp$|8IJS3MMY00<4(ER|F19h^*OQzJ6qEFal?Z1{vv4WB8St=wYsx#0`iy@7DOx66vo zS>!YnN%cqTYEIPd5NNu81zB`f))!5X~C6N&n zf^1-;c#CTb`DY>>Db25@Ol(Z9Z3UIoiCsy9%wMQ&EYya$j&7YL`Eh@W^u0uA=Z`q& z{NCEH+@H5jqD^epY;R*UF|dGy{mz|*sq6%JOL#UkT?225*0-vlwB_F;pRn( zO;K^qZ+XR{)pCW4R7Z-c{o kd`xzX${Tv69Dx31t`qwmGki}iI|bJhzh82Od4S=60inmwxBvhE diff --git a/target/classes/net/horizoncode/tickettest/manager/TicketCallback.class b/target/classes/net/horizoncode/tickettest/manager/TicketCallback.class deleted file mode 100644 index 8be9555fb08efaf57a1759521c15f195323c469d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1049 zcmb7D+iuf95IviVow$aUw6s9Eq%9Yxp)sZ9A{FsKt4ft3KuQ~dc-lCtbX&)coHYWz z3V3iOkoW*T3NdR3wUH{+_+e*fcIM1EJKo=ae*6NkiRTtBVX=&xxMkwDg*+BZxT9^= z!V;GCZl#2~+TOEp9}i48CTa}E3mHiDk|FQZ+6;y5uqzm*n=%lu<9C9;Yr3*M)B7<@1gL6>38$uiC;qKiN6FeZ`; zYZoTWFx3+(yOg~h`l*}|Zmgv59vtlL5ZqY%OwE7WmsFTBVwn4fca}QM@EpN3oPn0_ z2XrIn32xK7vFTOmF9)VaPU{SLE?GvlxOxKiEj_+MtC0rtsLNbS`vg{ksrpw+%Rxh1X-Sb787cgH1~GysFf8C2 LHDI`&*4+3DSiuq0 diff --git a/target/classes/net/horizoncode/tickettest/manager/TicketManager$Builder.class b/target/classes/net/horizoncode/tickettest/manager/TicketManager$Builder.class index 78f4ea8f62e81c21906ba81dad88f0134dc692ed..ecb01e55b6fc57650ecc2f0cba390d45fc4b7e84 100644 GIT binary patch delta 31 ncmbQqHj`~bHxsKf0}F%8}3|^COGuZ(EceV!; delta 31 ncmbQqHj`~bHxsK90}F%m6o5oPaDr&T=5x$*BVX5pEC} delta 61 zcmdlgyj6HZ6FVdS6o5oPaDr&T=5x$*BVX5Ty_j diff --git a/target/classes/net/horizoncode/tickettest/manager/TicketManager.class b/target/classes/net/horizoncode/tickettest/manager/TicketManager.class index 447e28634128392b6bdc9145b2e26c1ee6ab27b5..385f3ad6659492d8cf6bf4a897c4abd9bcf62852 100644 GIT binary patch delta 1761 zcmZvbd03QH6vltwjBuHcD-PqZI3S^-2%@6~i*WsJnusQI0rM2|6$=#C+FZy&gSal4>$$;rH`?4pv(3#cQru#bLW|;7 z8$T^J18Fgs+Z4Ck1WhE!9md>g%w5LZZ40309-Di)&zSp@c);dC9`f-pjxFX9n*<)U zd5p(x7PG`=Da(v`!k8x&Pub+tlEl+yU2f3N81GqQo-?(cSG=Hj(IVSf-Z^{Sf7?B3 zg<_@RrPl4(5*6|=>Z+GuK zv0iYkRVj15L5ohc^)nk3ziNKt56w(QJNr{htiPO$z@AQjTl99O2Qr*BfkY?JwP<)) zW)C{yk(n+L&ttlS#SqsYDtl>=>x=HPYWX&b(PB%Tg=^k{DD|@iGnTXQ%DyM#I7e3Fjc07lc+f(9+@POGKr*N9g(tL zMObmZlDB3ld14-vbll}KCYV3ia7mP%d7tK7QwP%9PcwBA@B~Xua0=ya+Ol9lg-J_s zi4BpIp=8LFJJK`T(|s~BmzW$u=gP_Em$VuGw2h>$72m?ti63u-n#!euDs_6K^>amv zfAPDOi-m}h?WhbPSA4@OYCl^;OubrGl1=CGwXLNdcT?aPfIEfODVXx#Wb7>(RmK<}T zgu)H@j6R;@^vOI$a{Mlpl5{my?t$CV(~l$9?G!l{Gl;m@!|CbAsT?{P>-U(K&`xfP zblWIfQMi%N5>nd8ijf`Y9wR3n>AarP>=?N#j{Mt354l3uHhRYB)h|X~VT|4}`jo|! zHj^(Z_YD-pnkg)bAqcVkV+<%VxAwZX&OwQvE4Bv#deMzMvH8;1zS4*Smu+sG(XpAR zXnz_bB&V7hVQvOk9%{f(t?OCx0=&!;-@|MMmx@y;gB29*2gykIWj$Ti#S$~?Qdz%{ W^>_Z{pisC*@TS-GQlx=7%>5s_(JMy) delta 1688 zcmZvbX;_q16vuz>jBuHkD~#jJu!`e`f*^~M;6jwy3Sp3uEfN(O#-a$4ZAAMX_GV_g zZDwVe=wMQs*=pKui*2@lE1y30Av^aSOrCV+dCoca+_U`e|2^km(VoKY-T!Rc4ou^B zANec}h`l6{rL-qf#WF>QqEoTl=1jUw#FdGx;3{KXZF3FR+FVDs;(D7TdK5R<`025k zLXU~LQE`(^(0GE}Y{V@_+-k&awgfD^-Nzl=nZR8(cXN-Ad+D`Bth9;aJ{yPoZC3Gs z&1xPrVvP|GDIT`TrYC_%jDFNaKW41Qjd((_R`H}orc*yWv(Ibo@~Ed2Pb;43+v|;Z zy~Rv*4#tNg&-z)Hta#4Pdd>5^pmhCKGS^8 zdW#gND3Ia=d>NsAe4+W0uQdDkTC<;TEDGf{g-(~R)B7#oIe+@n;`905BHyuw<@L?5 z|L|7(7dI?#C}?hIT~tuJVp&IHi-otXv%?}(>E1N870hdIYVD})Xm4z2k%x^uhTB3d zF+t6(eSaq{^$u73pgF+LnoF7ObO%bTU!5(1{nl?z@5suT`7$Xm43CgARVSqKkGKA(%_ zKyYHQ!4fYg72=Dfrw*q3 zWC+f7b5@4ZLPuK7lF0d-BUs9v9ihoCAu$liZk1`$)KGNz$>}c921B|_wa2v#$%dMA z8OoVL*I^oBQRXwmK1dxt&SinYA<+@>n_t2J!3F(fMIYxHub@g(8 z5e*{Co%)pU5V)zw$g#MXOH8cW(c{)Oa7S+VAKbK~ll>mE4TEs|g?dANU2Z?=Ye?Kg zMj$iFsP5Q#_$IRKD5KXM`fDo@(_kxOqKus!Wn6BQ@lhsJNy-4(@(m^iCPm4~iy}7? zAjYUX!+_VNFAF91Xps?;W%|R66DwOj{zMs~NiNPv42#g(6