From d1e7305c0f94e86ee2d4293bc5be0ed4bad4c72c Mon Sep 17 00:00:00 2001
From: Nelson Tavares de Sousa <stu103017@mail.uni-kiel.de>
Date: Mon, 13 Oct 2014 15:23:50 +0200
Subject: [PATCH] #36 Tests modified corresponding JUnit conventions Testdata
 added Moved stages to correct packages

---
 .gitignore                                    |   1 +
 .../stage/{io => }/ByteArray2String.java      |   2 +-
 .../stage/{io => }/CipherByteArray.java       |   2 +-
 src/main/java/teetime/stage/TokenCounter.java |  18 ++++++++++
 .../teetime/stage/{io => }/Tokenizer.java     |   2 +-
 .../teetime/stage/{io => }/ZipByteArray.java  |   6 ++--
 .../examples/cipher/CipherConfiguration.java  |   8 ++---
 .../teetime/examples/cipher/CipherTest.java   |  26 +++-----------
 .../tokenizer/TokenizerConfiguration.java     |  33 ++++++++---------
 .../examples/tokenizer/TokenizerTest.java     |  34 +++++-------------
 src/test/resources/data/cipherInput.txt       | Bin 0 -> 4230 bytes
 src/test/resources/data/input.txt             |  11 ++++++
 src/test/resources/data/output.txt            |  11 ++++++
 13 files changed, 81 insertions(+), 73 deletions(-)
 rename src/main/java/teetime/stage/{io => }/ByteArray2String.java (93%)
 rename src/main/java/teetime/stage/{io => }/CipherByteArray.java (98%)
 create mode 100644 src/main/java/teetime/stage/TokenCounter.java
 rename src/main/java/teetime/stage/{io => }/Tokenizer.java (95%)
 rename src/main/java/teetime/stage/{io => }/ZipByteArray.java (90%)
 create mode 100644 src/test/resources/data/cipherInput.txt
 create mode 100644 src/test/resources/data/input.txt
 create mode 100644 src/test/resources/data/output.txt

diff --git a/.gitignore b/.gitignore
index c920a075..0da1e006 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 /bin
 /target
 /testdata/
+/doc/
diff --git a/src/main/java/teetime/stage/io/ByteArray2String.java b/src/main/java/teetime/stage/ByteArray2String.java
similarity index 93%
rename from src/main/java/teetime/stage/io/ByteArray2String.java
rename to src/main/java/teetime/stage/ByteArray2String.java
index 2a132fbc..912e625b 100644
--- a/src/main/java/teetime/stage/io/ByteArray2String.java
+++ b/src/main/java/teetime/stage/ByteArray2String.java
@@ -1,4 +1,4 @@
-package teetime.stage.io;
+package teetime.stage;
 
 import teetime.framework.ConsumerStage;
 import teetime.framework.OutputPort;
diff --git a/src/main/java/teetime/stage/io/CipherByteArray.java b/src/main/java/teetime/stage/CipherByteArray.java
similarity index 98%
rename from src/main/java/teetime/stage/io/CipherByteArray.java
rename to src/main/java/teetime/stage/CipherByteArray.java
index 4300802d..a0a763d5 100644
--- a/src/main/java/teetime/stage/io/CipherByteArray.java
+++ b/src/main/java/teetime/stage/CipherByteArray.java
@@ -1,4 +1,4 @@
-package teetime.stage.io;
+package teetime.stage;
 
 import java.security.spec.KeySpec;
 
diff --git a/src/main/java/teetime/stage/TokenCounter.java b/src/main/java/teetime/stage/TokenCounter.java
new file mode 100644
index 00000000..dfcc27ac
--- /dev/null
+++ b/src/main/java/teetime/stage/TokenCounter.java
@@ -0,0 +1,18 @@
+package teetime.stage;
+
+import teetime.framework.ConsumerStage;
+
+public class TokenCounter extends ConsumerStage<String> {
+
+	private long i = 0;
+
+	public long getI() {
+		return i;
+	}
+
+	@Override
+	protected void execute(final String element) {
+		i++;
+	}
+
+}
diff --git a/src/main/java/teetime/stage/io/Tokenizer.java b/src/main/java/teetime/stage/Tokenizer.java
similarity index 95%
rename from src/main/java/teetime/stage/io/Tokenizer.java
rename to src/main/java/teetime/stage/Tokenizer.java
index e40aebef..f614306e 100644
--- a/src/main/java/teetime/stage/io/Tokenizer.java
+++ b/src/main/java/teetime/stage/Tokenizer.java
@@ -1,4 +1,4 @@
-package teetime.stage.io;
+package teetime.stage;
 
 import java.util.StringTokenizer;
 
diff --git a/src/main/java/teetime/stage/io/ZipByteArray.java b/src/main/java/teetime/stage/ZipByteArray.java
similarity index 90%
rename from src/main/java/teetime/stage/io/ZipByteArray.java
rename to src/main/java/teetime/stage/ZipByteArray.java
index a4720218..9aa08d1a 100644
--- a/src/main/java/teetime/stage/io/ZipByteArray.java
+++ b/src/main/java/teetime/stage/ZipByteArray.java
@@ -1,4 +1,4 @@
-package teetime.stage.io;
+package teetime.stage;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -43,7 +43,7 @@ public class ZipByteArray extends ConsumerStage<byte[]> {
 		this.send(outputPort, cache);
 	}
 
-	public static byte[] compress(final byte[] data) throws IOException {
+	private byte[] compress(final byte[] data) throws IOException {
 		Deflater deflater = new Deflater();
 		deflater.setInput(data);
 
@@ -63,7 +63,7 @@ public class ZipByteArray extends ConsumerStage<byte[]> {
 		return output;
 	}
 
-	public static byte[] decompress(final byte[] data) throws IOException, DataFormatException {
+	private byte[] decompress(final byte[] data) throws IOException, DataFormatException {
 		Inflater inflater = new Inflater();
 		inflater.setInput(data);
 
diff --git a/src/performancetest/java/teetime/examples/cipher/CipherConfiguration.java b/src/performancetest/java/teetime/examples/cipher/CipherConfiguration.java
index 917d5dcc..54fef5a3 100644
--- a/src/performancetest/java/teetime/examples/cipher/CipherConfiguration.java
+++ b/src/performancetest/java/teetime/examples/cipher/CipherConfiguration.java
@@ -6,13 +6,13 @@ import teetime.framework.AnalysisConfiguration;
 import teetime.framework.pipe.PipeFactory;
 import teetime.framework.pipe.PipeFactory.PipeOrdering;
 import teetime.framework.pipe.PipeFactory.ThreadCommunication;
+import teetime.stage.CipherByteArray;
 import teetime.stage.InitialElementProducer;
+import teetime.stage.ZipByteArray;
+import teetime.stage.CipherByteArray.CipherMode;
+import teetime.stage.ZipByteArray.ZipMode;
 import teetime.stage.io.ByteArrayFileWriter;
-import teetime.stage.io.CipherByteArray;
-import teetime.stage.io.CipherByteArray.CipherMode;
 import teetime.stage.io.File2ByteArray;
-import teetime.stage.io.ZipByteArray;
-import teetime.stage.io.ZipByteArray.ZipMode;
 
 public class CipherConfiguration extends AnalysisConfiguration {
 
diff --git a/src/performancetest/java/teetime/examples/cipher/CipherTest.java b/src/performancetest/java/teetime/examples/cipher/CipherTest.java
index 0021944a..be4c3b50 100644
--- a/src/performancetest/java/teetime/examples/cipher/CipherTest.java
+++ b/src/performancetest/java/teetime/examples/cipher/CipherTest.java
@@ -3,9 +3,7 @@ package teetime.examples.cipher;
 import java.io.File;
 import java.io.IOException;
 
-import org.junit.AfterClass;
 import org.junit.Assert;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 import teetime.framework.Analysis;
@@ -15,8 +13,8 @@ import com.google.common.io.Files;
 
 public class CipherTest {
 
-	static String inputFile = "testdata/dependencies.html";
-	static String outputFile = "testdata/dependencies.html";
+	static String inputFile = "src/test/resources/data/input.txt";
+	static String outputFile = "src/test/resources/data/output.txt";
 	static String password = "Password";
 	static long start;
 	long stop;
@@ -25,26 +23,12 @@ public class CipherTest {
 
 	final static Analysis analysis = new Analysis(configuration);
 
-	@BeforeClass
-	public static void beforeClass() {
+	@Test
+	public void executeTest() throws IOException {
 		analysis.init();
 		start = System.currentTimeMillis();
-	}
-
-	@Test
-	public void executeTest() {
 		analysis.start();
+		Assert.assertTrue(Files.equal(new File(inputFile), new File(outputFile)));
 	}
 
-	@AfterClass
-	public static void afterClass() {
-		System.out.println("It took " + (System.currentTimeMillis() - start) + " Milliseconds");
-		boolean bool = false;
-		try {
-			bool = Files.equal(new File(inputFile), new File(outputFile));
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		Assert.assertTrue(bool);
-	}
 }
diff --git a/src/performancetest/java/teetime/examples/tokenizer/TokenizerConfiguration.java b/src/performancetest/java/teetime/examples/tokenizer/TokenizerConfiguration.java
index 538a5560..7ae1bb77 100644
--- a/src/performancetest/java/teetime/examples/tokenizer/TokenizerConfiguration.java
+++ b/src/performancetest/java/teetime/examples/tokenizer/TokenizerConfiguration.java
@@ -6,21 +6,22 @@ import teetime.framework.AnalysisConfiguration;
 import teetime.framework.pipe.PipeFactory;
 import teetime.framework.pipe.PipeFactory.PipeOrdering;
 import teetime.framework.pipe.PipeFactory.ThreadCommunication;
+import teetime.stage.ByteArray2String;
+import teetime.stage.CipherByteArray;
+import teetime.stage.CipherByteArray.CipherMode;
 import teetime.stage.InitialElementProducer;
-import teetime.stage.io.ByteArray2String;
-import teetime.stage.io.CipherByteArray;
-import teetime.stage.io.CipherByteArray.CipherMode;
+import teetime.stage.TokenCounter;
+import teetime.stage.Tokenizer;
+import teetime.stage.ZipByteArray;
+import teetime.stage.ZipByteArray.ZipMode;
 import teetime.stage.io.File2ByteArray;
-import teetime.stage.io.Printer;
-import teetime.stage.io.Tokenizer;
-import teetime.stage.io.ZipByteArray;
-import teetime.stage.io.ZipByteArray.ZipMode;
 
 public class TokenizerConfiguration extends AnalysisConfiguration {
 
 	private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
 	private final File input;
 	private final String password;
+	private final TokenCounter counter;
 
 	public TokenizerConfiguration(final String inputFile, final String password) {
 		this.input = new File(inputFile);
@@ -28,22 +29,16 @@ public class TokenizerConfiguration extends AnalysisConfiguration {
 
 		InitialElementProducer<File> init = new InitialElementProducer<File>(this.input);
 		File2ByteArray f2b = new File2ByteArray();
-		CipherByteArray enc = new CipherByteArray(this.password, CipherMode.ENCRYPT);
-		ZipByteArray comp = new ZipByteArray(ZipMode.COMP);
 		ZipByteArray decomp = new ZipByteArray(ZipMode.DECOMP);
 		CipherByteArray decrypt = new CipherByteArray(this.password, CipherMode.DECRYPT);
 		ByteArray2String b2s = new ByteArray2String();
 		Tokenizer tokenizer = new Tokenizer(" ");
-		Printer<String> pt = new Printer<String>();
+		TokenCounter counter = new TokenCounter();
 
 		this.pipeFactory.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
 				.create(init.getOutputPort(), f2b.getInputPort());
 		this.pipeFactory.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
-				.create(f2b.getOutputPort(), enc.getInputPort());
-		this.pipeFactory.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
-				.create(enc.getOutputPort(), comp.getInputPort());
-		this.pipeFactory.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
-				.create(comp.getOutputPort(), decomp.getInputPort());
+				.create(f2b.getOutputPort(), decomp.getInputPort());
 		this.pipeFactory.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
 				.create(decomp.getOutputPort(), decrypt.getInputPort());
 		this.pipeFactory.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
@@ -51,9 +46,15 @@ public class TokenizerConfiguration extends AnalysisConfiguration {
 		this.pipeFactory.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
 				.create(b2s.getOutputPort(), tokenizer.getInputPort());
 		this.pipeFactory.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
-				.create(tokenizer.getOutputPort(), pt.getInputPort());
+				.create(tokenizer.getOutputPort(), counter.getInputPort());
 
 		this.getFiniteProducerStages().add(init);
 
+		this.counter = counter;
 	}
+
+	public long getTokenCount() {
+		return this.counter.getI();
+	}
+
 }
diff --git a/src/performancetest/java/teetime/examples/tokenizer/TokenizerTest.java b/src/performancetest/java/teetime/examples/tokenizer/TokenizerTest.java
index c5363323..93cd2761 100644
--- a/src/performancetest/java/teetime/examples/tokenizer/TokenizerTest.java
+++ b/src/performancetest/java/teetime/examples/tokenizer/TokenizerTest.java
@@ -1,43 +1,25 @@
 package teetime.examples.tokenizer;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.Assert;
 import org.junit.Test;
 
 import teetime.framework.Analysis;
-import teetime.framework.AnalysisConfiguration;
 
 public class TokenizerTest {
 
-	static String inputFile = "testdata/dependencies.html";
-	static String password = "Password";
-	static long start;
-	long stop;
+	// Encrypted lorem ipsum
+	private static String inputFile = "src/test/resources/data/cipherInput.txt";
+	private static String password = "Password";
 
-	static AnalysisConfiguration configuration = new TokenizerConfiguration(inputFile, password);
+	private static TokenizerConfiguration configuration = new TokenizerConfiguration(inputFile, password);
 
-	final static Analysis analysis = new Analysis(configuration);
-
-	@BeforeClass
-	public static void beforeClass() {
-		analysis.init();
-		start = System.currentTimeMillis();
-	}
+	private final static Analysis analysis = new Analysis(configuration);
 
 	@Test
 	public void executeTest() {
+		analysis.init();
 		analysis.start();
+		Assert.assertEquals(970, configuration.getTokenCount());
 	}
 
-	@AfterClass
-	public static void afterClass() {
-		System.out.println("It took " + (System.currentTimeMillis() - start) + " Milliseconds");
-		// boolean bool = false;
-		// try {
-		// bool = Files.equal(new File(inputFile), new File(outputFile));
-		// } catch (IOException e) {
-		// e.printStackTrace();
-		// }
-		// Assert.assertTrue(bool);
-	}
 }
diff --git a/src/test/resources/data/cipherInput.txt b/src/test/resources/data/cipherInput.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b8fd6d85206a464b868be1d834536cc0110d33c7
GIT binary patch
literal 4230
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

literal 0
HcmV?d00001

diff --git a/src/test/resources/data/input.txt b/src/test/resources/data/input.txt
new file mode 100644
index 00000000..5c016264
--- /dev/null
+++ b/src/test/resources/data/input.txt
@@ -0,0 +1,11 @@
+Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
+Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
+Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
+Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
+Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.
+At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.
+Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus.
+Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
+Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
+Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
+Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo
\ No newline at end of file
diff --git a/src/test/resources/data/output.txt b/src/test/resources/data/output.txt
new file mode 100644
index 00000000..5c016264
--- /dev/null
+++ b/src/test/resources/data/output.txt
@@ -0,0 +1,11 @@
+Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
+Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
+Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
+Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
+Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.
+At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.
+Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus.
+Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
+Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
+Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
+Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo
\ No newline at end of file
-- 
GitLab