├── .classpath ├── .gitignore ├── .project ├── .settings ├── org.eclipse.core.resources.prefs ├── org.eclipse.jdt.core.prefs ├── org.eclipse.m2e.core.prefs ├── org.eclipse.wst.common.component ├── org.eclipse.wst.common.project.facet.core.xml └── org.eclipse.wst.validation.prefs ├── LICENSE.txt ├── NOTICE.txt ├── README.md ├── dependency-reduced-pom.xml ├── doc ├── allclasses-frame.html ├── allclasses-noframe.html ├── com │ └── github │ │ └── s3curitybug │ │ └── similarityuniformfuzzyhash │ │ ├── Main.html │ │ ├── TestResourcesUtils.html │ │ ├── ToStringUtils.html │ │ ├── UniformFuzzyHash.SimilarityTypes.html │ │ ├── UniformFuzzyHash.html │ │ ├── UniformFuzzyHashBlock.html │ │ ├── UniformFuzzyHashTest.html │ │ ├── UniformFuzzyHashes.html │ │ ├── UniformFuzzyHashesTest.html │ │ ├── VisualRepresentation.html │ │ ├── VisualRepresentationTest.html │ │ ├── class-use │ │ ├── Main.html │ │ ├── TestResourcesUtils.html │ │ ├── ToStringUtils.html │ │ ├── UniformFuzzyHash.SimilarityTypes.html │ │ ├── UniformFuzzyHash.html │ │ ├── UniformFuzzyHashBlock.html │ │ ├── UniformFuzzyHashTest.html │ │ ├── UniformFuzzyHashes.html │ │ ├── UniformFuzzyHashesTest.html │ │ ├── VisualRepresentation.html │ │ └── VisualRepresentationTest.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ ├── package-tree.html │ │ └── package-use.html ├── constant-values.html ├── deprecated-list.html ├── help-doc.html ├── index-files │ ├── index-1.html │ ├── index-10.html │ ├── index-11.html │ ├── index-12.html │ ├── index-13.html │ ├── index-14.html │ ├── index-15.html │ ├── index-16.html │ ├── index-17.html │ ├── index-18.html │ ├── index-2.html │ ├── index-3.html │ ├── index-4.html │ ├── index-5.html │ ├── index-6.html │ ├── index-7.html │ ├── index-8.html │ └── index-9.html ├── index.html ├── overview-tree.html ├── package-list ├── script.js └── stylesheet.css ├── pom.xml ├── readme-media ├── cmd-cdh.png ├── cmd-cfh.png ├── cmd-eaf.png ├── cmd-etf.png ├── cmd-help.png ├── cmd-laf.png ├── cmd-ltf.png ├── cmd-rv-1.png ├── cmd-rv-2.png ├── cmd-saf.png ├── cmd-stf.png ├── cmd-x-1.png ├── cmd-x-2.png ├── cmd-x-3.png ├── cmd-xa-1.png ├── cmd-xa-2.png ├── cmd-xv-1.png ├── cmd-xv-2.png ├── cmd-xv-3.png ├── cmd-xya-1.png ├── cmd-xya-2.png ├── cmd-xya-3.png ├── hash-algorithm.png ├── html-1.png ├── images-1.png ├── images-2.png ├── insidedoc-1.png ├── insidedoc-2.png ├── insidedoc-3.png ├── insidepdf-1.png ├── lorem-ipsum-1.png ├── lorem-ipsum-2.png ├── malware-1.png ├── print-all-hashes-similarities-table.png ├── print-compared-visually.png ├── print-hash-to-hashes-similarities-table.png ├── print-hashes-table.png ├── print-visually.png ├── random-text-1.png ├── random-text-2.png └── similarity-algorithm.png └── src ├── main ├── java │ ├── com │ │ └── github │ │ │ └── s3curitybug │ │ │ └── similarityuniformfuzzyhash │ │ │ ├── Main.java │ │ │ ├── ToStringUtils.java │ │ │ ├── UniformFuzzyHash.java │ │ │ ├── UniformFuzzyHashBlock.java │ │ │ ├── UniformFuzzyHashes.java │ │ │ └── VisualRepresentation.java │ └── org │ │ └── apache │ │ └── commons │ │ └── cli │ │ └── HelpFormatter.java └── resources │ └── VisualPrint │ └── printableAscii.base └── test ├── java └── com │ └── github │ └── s3curitybug │ └── similarityuniformfuzzyhash │ ├── .gitignore │ ├── TestResourcesUtils.java │ ├── UniformFuzzyHashTest.java │ ├── UniformFuzzyHashesTest.java │ └── VisualRepresentationTest.java └── resources ├── Html ├── As1.txt ├── As2.txt ├── As3.txt ├── Marca1.txt ├── Marca2.txt ├── Marca3.txt ├── Sport1.txt ├── Sport2.txt └── Sport3.txt ├── Images ├── Image1.bmp ├── Image2.bmp └── Image3.bmp ├── InsideDoc ├── Doc_Lenna.docx ├── Doc_Lenna_Big.docx ├── Doc_Lenna_Swap.docx ├── Doc_No_Lenna.docx └── Lenna.png ├── InsidePdf ├── Doc_Lenna.pdf ├── Doc_Lenna_Big.pdf ├── Doc_Lenna_Swap.pdf ├── Doc_No_Lenna.pdf ├── Lenna.bmp ├── Lenna.gif ├── Lenna.jpg ├── Lenna.pdf ├── Lenna.pdfobj └── Lenna.png ├── LoremIpsum ├── A.txt ├── ABCD.txt ├── AE.txt └── E.txt └── RandomText ├── RandomText1 ├── ABCD.txt ├── ABCDABCD.txt ├── ABCDEFGH.txt ├── ACD.txt ├── B.txt ├── CBDA.txt └── EFBGH.txt └── RandomText2 ├── B'.txt ├── B+.txt ├── B-.txt ├── B.txt └── B~.txt /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /.checkstyle 3 | /src/test/resources/*.jar 4 | /src/test/resources/*.sufh 5 | /src/test/resources/*.csv 6 | /src/test/resources/Malware/ 7 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | similarity-uniform-fuzzy-hash 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.wst.common.project.facet.core.builder 10 | 11 | 12 | 13 | 14 | org.eclipse.jdt.core.javabuilder 15 | 16 | 17 | 18 | 19 | net.sf.eclipsecs.core.CheckstyleBuilder 20 | 21 | 22 | 23 | 24 | org.eclipse.wst.validation.validationbuilder 25 | 26 | 27 | 28 | 29 | org.eclipse.m2e.core.maven2Builder 30 | 31 | 32 | 33 | 34 | 35 | org.eclipse.jem.workbench.JavaEMFNature 36 | org.eclipse.wst.common.modulecore.ModuleCoreNature 37 | org.eclipse.jdt.core.javanature 38 | org.eclipse.m2e.core.maven2Nature 39 | net.sf.eclipsecs.core.CheckstyleNature 40 | org.eclipse.wst.common.project.facet.core.nature 41 | 42 | 43 | -------------------------------------------------------------------------------- /.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding//src/main/java=UTF-8 3 | encoding//src/main/resources=UTF-8 4 | encoding//src/test/java=UTF-8 5 | encoding//src/test/resources=UTF-8 6 | encoding/=UTF-8 7 | -------------------------------------------------------------------------------- /.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.compliance=1.8 5 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 6 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 7 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning 8 | org.eclipse.jdt.core.compiler.source=1.8 9 | -------------------------------------------------------------------------------- /.settings/org.eclipse.m2e.core.prefs: -------------------------------------------------------------------------------- 1 | activeProfiles= 2 | eclipse.preferences.version=1 3 | resolveWorkspaceProjects=true 4 | version=1 5 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.common.component: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.common.project.facet.core.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.validation.prefs: -------------------------------------------------------------------------------- 1 | disabled=06target 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /NOTICE.txt: -------------------------------------------------------------------------------- 1 | ================================================== 2 | 3 | s3curitybug - Similarity Uniform Fuzzy Hash 4 | 5 | ================================================== 6 | 7 | 8 | - This project depends on and contains a modified portion of Apache Commons CLI 9 | * Homepage: https://commons.apache.org/proper/commons-cli/ 10 | * License: https://github.com/apache/commons-cli/blob/trunk/LICENSE.txt (Apache License 2.0) 11 | 12 | - This project depends on Apache Commons IO 13 | * Homepage: https://commons.apache.org/proper/commons-io/ 14 | * License: https://github.com/apache/commons-io/blob/master/LICENSE.txt (Apache License 2.0) 15 | 16 | - This project depends on Fusesource Jansi 17 | * Homepage: http://fusesource.github.io/jansi/ 18 | * License: https://github.com/fusesource/jansi/blob/master/license.txt (Apache License 2.0) 19 | -------------------------------------------------------------------------------- /doc/allclasses-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | All Classes 7 | 8 | 9 | 10 | 11 |

All Classes

12 |
13 | 26 |
27 | 28 | 29 | -------------------------------------------------------------------------------- /doc/allclasses-noframe.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | All Classes 7 | 8 | 9 | 10 | 11 |

All Classes

12 |
13 | 26 |
27 | 28 | 29 | -------------------------------------------------------------------------------- /doc/com/github/s3curitybug/similarityuniformfuzzyhash/class-use/Main.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Uses of Class com.github.s3curitybug.similarityuniformfuzzyhash.Main 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
71 |

Uses of Class
com.github.s3curitybug.similarityuniformfuzzyhash.Main

72 |
73 |
No usage of com.github.s3curitybug.similarityuniformfuzzyhash.Main
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 91 |
92 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /doc/com/github/s3curitybug/similarityuniformfuzzyhash/class-use/TestResourcesUtils.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Uses of Class com.github.s3curitybug.similarityuniformfuzzyhash.TestResourcesUtils 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
71 |

Uses of Class
com.github.s3curitybug.similarityuniformfuzzyhash.TestResourcesUtils

72 |
73 |
No usage of com.github.s3curitybug.similarityuniformfuzzyhash.TestResourcesUtils
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 91 |
92 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /doc/com/github/s3curitybug/similarityuniformfuzzyhash/class-use/ToStringUtils.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Uses of Class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
71 |

Uses of Class
com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils

72 |
73 |
No usage of com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 91 |
92 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /doc/com/github/s3curitybug/similarityuniformfuzzyhash/class-use/UniformFuzzyHashBlock.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Uses of Class com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashBlock 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
71 |

Uses of Class
com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashBlock

72 |
73 |
74 | 102 |
103 | 104 |
105 | 106 | 107 | 108 | 109 | 110 | 111 | 120 |
121 | 148 | 149 | 150 | 151 | -------------------------------------------------------------------------------- /doc/com/github/s3curitybug/similarityuniformfuzzyhash/class-use/UniformFuzzyHashTest.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Uses of Class com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashTest 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
71 |

Uses of Class
com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashTest

72 |
73 |
No usage of com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashTest
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 91 |
92 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /doc/com/github/s3curitybug/similarityuniformfuzzyhash/class-use/UniformFuzzyHashes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Uses of Class com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashes 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
71 |

Uses of Class
com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashes

72 |
73 |
No usage of com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashes
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 91 |
92 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /doc/com/github/s3curitybug/similarityuniformfuzzyhash/class-use/UniformFuzzyHashesTest.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Uses of Class com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashesTest 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
71 |

Uses of Class
com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashesTest

72 |
73 |
No usage of com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashesTest
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 91 |
92 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /doc/com/github/s3curitybug/similarityuniformfuzzyhash/class-use/VisualRepresentation.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Uses of Class com.github.s3curitybug.similarityuniformfuzzyhash.VisualRepresentation 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
71 |

Uses of Class
com.github.s3curitybug.similarityuniformfuzzyhash.VisualRepresentation

72 |
73 |
No usage of com.github.s3curitybug.similarityuniformfuzzyhash.VisualRepresentation
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 91 |
92 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /doc/com/github/s3curitybug/similarityuniformfuzzyhash/class-use/VisualRepresentationTest.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Uses of Class com.github.s3curitybug.similarityuniformfuzzyhash.VisualRepresentationTest 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
71 |

Uses of Class
com.github.s3curitybug.similarityuniformfuzzyhash.VisualRepresentationTest

72 |
73 |
No usage of com.github.s3curitybug.similarityuniformfuzzyhash.VisualRepresentationTest
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 91 |
92 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /doc/com/github/s3curitybug/similarityuniformfuzzyhash/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | com.github.s3curitybug.similarityuniformfuzzyhash 7 | 8 | 9 | 10 | 11 |

com.github.s3curitybug.similarityuniformfuzzyhash

12 |
13 |

Classes

14 | 26 |

Enums

27 | 30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /doc/com/github/s3curitybug/similarityuniformfuzzyhash/package-use.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Uses of Package com.github.s3curitybug.similarityuniformfuzzyhash 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
71 |

Uses of Package
com.github.s3curitybug.similarityuniformfuzzyhash

72 |
73 |
74 | 103 |
104 | 105 |
106 | 107 | 108 | 109 | 110 | 111 | 112 | 121 |
122 | 149 | 150 | 151 | 152 | -------------------------------------------------------------------------------- /doc/deprecated-list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Deprecated List 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
71 |

Deprecated API

72 |

Contents

73 |
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 91 |
92 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /doc/index-files/index-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | A-Index 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
A B C D E F G H I L M N P R S T U V  71 | 72 | 73 |

A

74 |
75 |
algorithmComputationTest() - Method in class com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashTest
76 |
77 |
Algorithm computation test.
78 |
79 |
80 | A B C D E F G H I L M N P R S T U V 
81 | 82 |
83 | 84 | 85 | 86 | 87 | 88 | 89 | 98 |
99 | 126 | 127 | 128 | 129 | -------------------------------------------------------------------------------- /doc/index-files/index-10.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | L-Index 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
A B C D E F G H I L M N P R S T U V  71 | 72 | 73 |

L

74 |
75 |
loadHashesFromTextFile(File) - Static method in class com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashes
76 |
77 |
Loads a map of identified Uniform Fuzzy Hashes from a text file.
78 |
79 |
80 | A B C D E F G H I L M N P R S T U V 
81 | 82 |
83 | 84 | 85 | 86 | 87 | 88 | 89 | 98 |
99 | 126 | 127 | 128 | 129 | -------------------------------------------------------------------------------- /doc/index-files/index-11.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | M-Index 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
A B C D E F G H I L M N P R S T U V  71 | 72 | 73 |

M

74 |
75 |
Main - Class in com.github.s3curitybug.similarityuniformfuzzyhash
76 |
77 |
This class provides a main method to run the Uniform Fuzzy Hash jar via command line.
78 |
79 |
main(String[]) - Static method in class com.github.s3curitybug.similarityuniformfuzzyhash.Main
80 |
81 |
Main method.
82 |
83 |
mapKeysToList(Map<T, S>) - Static method in class com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashes
84 |
85 |
Builds a list of identifiers from a map of identified objects.
86 |
87 |
mapValuesToList(Map<T, S>) - Static method in class com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashes
88 |
89 |
Builds a list of objects from a map of identified objects.
90 |
91 |
maxLength(Collection<String>) - Static method in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
92 |
 
93 |
94 | A B C D E F G H I L M N P R S T U V 
95 | 96 |
97 | 98 | 99 | 100 | 101 | 102 | 103 | 112 |
113 | 140 | 141 | 142 | 143 | -------------------------------------------------------------------------------- /doc/index-files/index-12.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | N-Index 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
A B C D E F G H I L M N P R S T U V  71 | 72 | 73 |

N

74 |
75 |
names() - Static method in enum com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHash.SimilarityTypes
76 |
 
77 |
NEW_LINE - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
78 |
79 |
New line.
80 |
81 |
NULL_IDENTIFIER - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
82 |
83 |
String which will be used when an identifier is null.
84 |
85 |
NULL_VALUE - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
86 |
87 |
String which will be used when a value is null.
88 |
89 |
90 | A B C D E F G H I L M N P R S T U V 
91 | 92 |
93 | 94 | 95 | 96 | 97 | 98 | 99 | 108 |
109 | 136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /doc/index-files/index-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | B-Index 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
A B C D E F G H I L M N P R S T U V  71 | 72 | 73 |

B

74 |
75 |
BASES_ENCODING - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.VisualRepresentation
76 |
77 |
Charset in which bases are encoded.
78 |
79 |
BLOCK_INNER_SEPARATOR - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
80 |
81 |
Separator between block parts for a Uniform Fuzzy Hash Block string representation.
82 |
83 |
BLOCKS_SEPARATOR - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
84 |
85 |
Separator between blocks for a Uniform Fuzzy Hash string representation.
86 |
87 |
88 | A B C D E F G H I L M N P R S T U V 
89 | 90 |
91 | 92 | 93 | 94 | 95 | 96 | 97 | 106 |
107 | 134 | 135 | 136 | 137 | -------------------------------------------------------------------------------- /doc/index-files/index-4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | D-Index 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
A B C D E F G H I L M N P R S T U V  71 | 72 | 73 |

D

74 |
75 |
DECIMALS_FORMAT - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
76 |
77 |
Format in which decimal numbers are printed.
78 |
79 |
DECIMALS_FORMAT_SYMBOLS - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
80 |
81 |
Symbols for decimal numbers format.
82 |
83 |
DEFAULT_BASE - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.VisualRepresentation
84 |
85 |
Default base.
86 |
87 |
DEFAULT_FACTOR_DIVISOR - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.VisualRepresentation
88 |
89 |
Default factor divisor.
90 |
91 |
DEFAULT_LINE_WRAP - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.VisualRepresentation
92 |
93 |
Default line wrap.
94 |
95 |
96 | A B C D E F G H I L M N P R S T U V 
97 | 98 |
99 | 100 | 101 | 102 | 103 | 104 | 105 | 114 |
115 | 142 | 143 | 144 | 145 | -------------------------------------------------------------------------------- /doc/index-files/index-5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | E-Index 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
A B C D E F G H I L M N P R S T U V  71 | 72 | 73 |

E

74 |
75 |
equals(Object) - Method in class com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHash
76 |
77 |
Indicates whether this Uniform Fuzzy Hash is equal to another one.
78 |
79 |
equals(Object) - Method in class com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHashBlock
80 |
81 |
Indicates whether this Uniform Fuzzy Hash Block is equal to another one.
82 |
83 |
escapeCsv(String) - Static method in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
84 |
85 |
Escapes a string to include it into a comma separated values list.
86 |
87 |
88 | A B C D E F G H I L M N P R S T U V 
89 | 90 |
91 | 92 | 93 | 94 | 95 | 96 | 97 | 106 |
107 | 134 | 135 | 136 | 137 | -------------------------------------------------------------------------------- /doc/index-files/index-6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | F-Index 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
A B C D E F G H I L M N P R S T U V  71 | 72 | 73 |

F

74 |
75 |
FACTOR_SEPARATOR - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
76 |
77 |
Separator between factor and blocks for a Uniform Fuzzy Hash string representation.
78 |
79 |
FILES_ENCODING - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
80 |
81 |
Charset for reading and writing files.
82 |
83 |
formatDecimal(Double) - Static method in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
84 |
85 |
Formats a decimal number.
86 |
87 |
formatDecimal(Double, double, double) - Static method in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
88 |
89 |
Formats a decimal number, marking it with a color if it is above or equal to a threshold, and 90 | with another color if it is below another threshold.
91 |
92 |
93 | A B C D E F G H I L M N P R S T U V 
94 | 95 |
96 | 97 | 98 | 99 | 100 | 101 | 102 | 111 |
112 | 139 | 140 | 141 | 142 | -------------------------------------------------------------------------------- /doc/index-files/index-9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | I-Index 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
A B C D E F G H I L M N P R S T U V  71 | 72 | 73 |

I

74 |
75 |
IDENTIFIER_SEPARATOR - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
76 |
77 |
Separator between identifier and hash for an identified Uniform Fuzzy Hash string 78 | representation.
79 |
80 |
IGNORE_MARK - Static variable in class com.github.s3curitybug.similarityuniformfuzzyhash.ToStringUtils
81 |
82 |
Mark at the beginning of a Uniform Fuzzy Hash file line which indicates that the line should 83 | be ignored.
84 |
85 |
86 | A B C D E F G H I L M N P R S T U V 
87 | 88 |
89 | 90 | 91 | 92 | 93 | 94 | 95 | 104 |
105 | 132 | 133 | 134 | 135 | -------------------------------------------------------------------------------- /doc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Generated Documentation (Untitled) 7 | 60 | 61 | 62 | 63 | 64 | 65 | <noscript> 66 | <div>JavaScript is disabled on your browser.</div> 67 | </noscript> 68 | <h2>Frame Alert</h2> 69 | <p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="com/github/s3curitybug/similarityuniformfuzzyhash/package-summary.html">Non-frame version</a>.</p> 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /doc/overview-tree.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Class Hierarchy 7 | 8 | 9 | 10 | 11 | 21 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 |
42 | 69 | 70 |
71 |

Hierarchy For All Packages

72 | Package Hierarchies: 73 | 76 |
77 |
78 |

Class Hierarchy

79 | 95 |

Enum Hierarchy

96 | 107 |
108 | 109 |
110 | 111 | 112 | 113 | 114 | 115 | 116 | 125 |
126 | 153 | 154 | 155 | 156 | -------------------------------------------------------------------------------- /doc/package-list: -------------------------------------------------------------------------------- 1 | com.github.s3curitybug.similarityuniformfuzzyhash 2 | -------------------------------------------------------------------------------- /doc/script.js: -------------------------------------------------------------------------------- 1 | function show(type) 2 | { 3 | count = 0; 4 | for (var key in methods) { 5 | var row = document.getElementById(key); 6 | if ((methods[key] & type) != 0) { 7 | row.style.display = ''; 8 | row.className = (count++ % 2) ? rowColor : altColor; 9 | } 10 | else 11 | row.style.display = 'none'; 12 | } 13 | updateTabs(type); 14 | } 15 | 16 | function updateTabs(type) 17 | { 18 | for (var value in tabs) { 19 | var sNode = document.getElementById(tabs[value][0]); 20 | var spanNode = sNode.firstChild; 21 | if (value == type) { 22 | sNode.className = activeTableTab; 23 | spanNode.innerHTML = tabs[value][1]; 24 | } 25 | else { 26 | sNode.className = tableTab; 27 | spanNode.innerHTML = "" + tabs[value][1] + ""; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /readme-media/cmd-cdh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-cdh.png -------------------------------------------------------------------------------- /readme-media/cmd-cfh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-cfh.png -------------------------------------------------------------------------------- /readme-media/cmd-eaf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-eaf.png -------------------------------------------------------------------------------- /readme-media/cmd-etf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-etf.png -------------------------------------------------------------------------------- /readme-media/cmd-help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-help.png -------------------------------------------------------------------------------- /readme-media/cmd-laf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-laf.png -------------------------------------------------------------------------------- /readme-media/cmd-ltf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-ltf.png -------------------------------------------------------------------------------- /readme-media/cmd-rv-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-rv-1.png -------------------------------------------------------------------------------- /readme-media/cmd-rv-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-rv-2.png -------------------------------------------------------------------------------- /readme-media/cmd-saf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-saf.png -------------------------------------------------------------------------------- /readme-media/cmd-stf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-stf.png -------------------------------------------------------------------------------- /readme-media/cmd-x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-x-1.png -------------------------------------------------------------------------------- /readme-media/cmd-x-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-x-2.png -------------------------------------------------------------------------------- /readme-media/cmd-x-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-x-3.png -------------------------------------------------------------------------------- /readme-media/cmd-xa-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-xa-1.png -------------------------------------------------------------------------------- /readme-media/cmd-xa-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-xa-2.png -------------------------------------------------------------------------------- /readme-media/cmd-xv-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-xv-1.png -------------------------------------------------------------------------------- /readme-media/cmd-xv-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-xv-2.png -------------------------------------------------------------------------------- /readme-media/cmd-xv-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-xv-3.png -------------------------------------------------------------------------------- /readme-media/cmd-xya-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-xya-1.png -------------------------------------------------------------------------------- /readme-media/cmd-xya-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-xya-2.png -------------------------------------------------------------------------------- /readme-media/cmd-xya-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/cmd-xya-3.png -------------------------------------------------------------------------------- /readme-media/hash-algorithm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/hash-algorithm.png -------------------------------------------------------------------------------- /readme-media/html-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/html-1.png -------------------------------------------------------------------------------- /readme-media/images-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/images-1.png -------------------------------------------------------------------------------- /readme-media/images-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/images-2.png -------------------------------------------------------------------------------- /readme-media/insidedoc-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/insidedoc-1.png -------------------------------------------------------------------------------- /readme-media/insidedoc-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/insidedoc-2.png -------------------------------------------------------------------------------- /readme-media/insidedoc-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/insidedoc-3.png -------------------------------------------------------------------------------- /readme-media/insidepdf-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/insidepdf-1.png -------------------------------------------------------------------------------- /readme-media/lorem-ipsum-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/lorem-ipsum-1.png -------------------------------------------------------------------------------- /readme-media/lorem-ipsum-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/lorem-ipsum-2.png -------------------------------------------------------------------------------- /readme-media/malware-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/malware-1.png -------------------------------------------------------------------------------- /readme-media/print-all-hashes-similarities-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/print-all-hashes-similarities-table.png -------------------------------------------------------------------------------- /readme-media/print-compared-visually.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/print-compared-visually.png -------------------------------------------------------------------------------- /readme-media/print-hash-to-hashes-similarities-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/print-hash-to-hashes-similarities-table.png -------------------------------------------------------------------------------- /readme-media/print-hashes-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/print-hashes-table.png -------------------------------------------------------------------------------- /readme-media/print-visually.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/print-visually.png -------------------------------------------------------------------------------- /readme-media/random-text-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/random-text-1.png -------------------------------------------------------------------------------- /readme-media/random-text-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/random-text-2.png -------------------------------------------------------------------------------- /readme-media/similarity-algorithm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/readme-media/similarity-algorithm.png -------------------------------------------------------------------------------- /src/main/resources/VisualPrint/printableAscii.base: -------------------------------------------------------------------------------- 1 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~ -------------------------------------------------------------------------------- /src/test/java/com/github/s3curitybug/similarityuniformfuzzyhash/.gitignore: -------------------------------------------------------------------------------- 1 | /GenericTest.java 2 | -------------------------------------------------------------------------------- /src/test/java/com/github/s3curitybug/similarityuniformfuzzyhash/TestResourcesUtils.java: -------------------------------------------------------------------------------- 1 | package com.github.s3curitybug.similarityuniformfuzzyhash; 2 | 3 | import java.io.File; 4 | 5 | /** 6 | * This class provides utility methods and constants to use resources in tests. 7 | * 8 | * @author s3curitybug@gmail.com 9 | * 10 | */ 11 | public final class TestResourcesUtils { 12 | 13 | /** 14 | * Path to test resources directory. 15 | */ 16 | public static final String TEST_RESOURCES_PATH = "src/test/resources/"; 17 | 18 | /** 19 | * Path to target directory. 20 | */ 21 | public static final String TARGET_PATH = "target/"; 22 | 23 | /** 24 | * Private constuctror. 25 | */ 26 | private TestResourcesUtils() { 27 | 28 | } 29 | 30 | /** 31 | * @param fileName A test resource file name. 32 | * @return The test resource file. 33 | */ 34 | public static File getTestResourceFile( 35 | String fileName) { 36 | 37 | return new File(TEST_RESOURCES_PATH + fileName); 38 | 39 | } 40 | 41 | /** 42 | * @param fileName A target file name. 43 | * @return The target file. 44 | */ 45 | public static File getTargetFile( 46 | String fileName) { 47 | 48 | return new File(TARGET_PATH + fileName); 49 | 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /src/test/java/com/github/s3curitybug/similarityuniformfuzzyhash/UniformFuzzyHashTest.java: -------------------------------------------------------------------------------- 1 | package com.github.s3curitybug.similarityuniformfuzzyhash; 2 | 3 | import org.junit.Assert; 4 | import org.junit.Test; 5 | 6 | import com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHash.SimilarityTypes; 7 | 8 | import java.io.File; 9 | import java.io.IOException; 10 | 11 | /** 12 | * Class to test the Uniform Fuzzy Hash. 13 | * 14 | * @author s3curitybug@gmail.com 15 | * 16 | */ 17 | public class UniformFuzzyHashTest { 18 | 19 | /** 20 | * Algorithm computation test. 21 | * Tests the algorithm computation over a test resource file and the hash toString method. 22 | * 23 | * @throws IOException In case an exception occurs reading a test resource file. 24 | */ 25 | @Test 26 | public void algorithmComputationTest() 27 | throws IOException { 28 | 29 | final int factor = 11; 30 | final File file = TestResourcesUtils.getTestResourceFile("RandomText/RandomText1/B.txt"); 31 | 32 | UniformFuzzyHash hash = new UniformFuzzyHash(file, factor); 33 | String hashString = hash.toString(); 34 | 35 | System.out.println(hashString); 36 | 37 | } 38 | 39 | /** 40 | * Hash rebuild test. 41 | * Tests the hash rebuild from a string representation of a hash computed over a test resource 42 | * file, and the hash equals method. 43 | * 44 | * @throws IOException In case an exception occurs reading a test resource file. 45 | */ 46 | @Test 47 | public void hashRebuildTest() 48 | throws IOException { 49 | 50 | final int factor = 11; 51 | final File file = TestResourcesUtils.getTestResourceFile("RandomText/RandomText1/B.txt"); 52 | 53 | UniformFuzzyHash hash = new UniformFuzzyHash(file, factor); 54 | String hashString = hash.toString(); 55 | 56 | UniformFuzzyHash rebuiltHash = UniformFuzzyHash.rebuildFromString(hashString); 57 | String rebuiltHashString = rebuiltHash.toString(); 58 | 59 | Assert.assertTrue(hash.equals(rebuiltHash)); 60 | Assert.assertTrue(hashString.equals(rebuiltHashString)); 61 | 62 | } 63 | 64 | /** 65 | * Similarity test. 66 | * Tests all the similarity types between two hashes computed over two test resource files. 67 | * 68 | * @throws IOException In case an exception occurs reading a test resource file. 69 | */ 70 | @Test 71 | public void similarityTest() 72 | throws IOException { 73 | 74 | final int factor = 50001; 75 | final File file1 = TestResourcesUtils.getTestResourceFile("InsideDoc/Lenna.png"); 76 | final File file2 = TestResourcesUtils.getTestResourceFile("InsideDoc/Doc_Lenna.docx"); 77 | final boolean printHashes = true; 78 | 79 | UniformFuzzyHash hash1 = new UniformFuzzyHash(file1, factor); 80 | UniformFuzzyHash hash2 = new UniformFuzzyHash(file2, factor); 81 | 82 | if (printHashes) { 83 | System.out.println(hash1); 84 | System.out.println(hash2); 85 | System.out.println(); 86 | } 87 | 88 | for (SimilarityTypes similarityType : SimilarityTypes.values()) { 89 | System.out.println(String.format( 90 | "%s: %s", 91 | similarityType.getName(), 92 | ToStringUtils.formatDecimal(hash1.similarity(hash2, similarityType)))); 93 | } 94 | 95 | } 96 | 97 | } 98 | -------------------------------------------------------------------------------- /src/test/java/com/github/s3curitybug/similarityuniformfuzzyhash/UniformFuzzyHashesTest.java: -------------------------------------------------------------------------------- 1 | package com.github.s3curitybug.similarityuniformfuzzyhash; 2 | 3 | import org.junit.Assert; 4 | import org.junit.Test; 5 | 6 | import com.github.s3curitybug.similarityuniformfuzzyhash.UniformFuzzyHash.SimilarityTypes; 7 | 8 | import java.io.File; 9 | import java.io.IOException; 10 | import java.util.Map; 11 | 12 | /** 13 | * Class to test Uniform Fuzzy Hashes. 14 | * 15 | * @author s3curitybug@gmail.com 16 | * 17 | */ 18 | public class UniformFuzzyHashesTest { 19 | 20 | /** 21 | * Hashes from directory files test. 22 | * Tests the algorithm computation over the files of a test resources directory and the 23 | * printHashes method. 24 | * 25 | * @throws IOException In case an exception occurs reading a test resource file. 26 | */ 27 | @Test 28 | public void hashesFromDirectoryFilesTest() 29 | throws IOException { 30 | 31 | final int factor = 11; 32 | final File directory = TestResourcesUtils.getTestResourceFile("LoremIpsum"); 33 | 34 | Map hashes = UniformFuzzyHashes 35 | .computeHashesFromDirectoryFiles(directory, factor, true); 36 | 37 | UniformFuzzyHashes.printHashes(hashes); 38 | 39 | } 40 | 41 | /** 42 | * Save and load hashes as text test. 43 | * Tests the hashes saving to and loading from a target text file. 44 | * 45 | * @throws IOException In case an exception occurs reading a test resource file or writing a 46 | * target file. 47 | */ 48 | @Test 49 | public void saveAndLoadHashesAsTextTest() 50 | throws IOException { 51 | 52 | final int factor = 11; 53 | final File directory = TestResourcesUtils.getTestResourceFile("LoremIpsum"); 54 | final File storageFile = TestResourcesUtils.getTargetFile(directory.getName() + ".sufh"); 55 | 56 | Map hashes = UniformFuzzyHashes 57 | .computeHashesFromDirectoryFiles(directory, factor, true); 58 | 59 | UniformFuzzyHashes.saveHashesToTextFile(hashes, storageFile, false); 60 | 61 | Assert.assertTrue(storageFile.exists()); 62 | 63 | Map loadedHashes = UniformFuzzyHashes 64 | .loadHashesFromTextFile(storageFile); 65 | 66 | Assert.assertTrue(hashes.equals(loadedHashes)); 67 | 68 | } 69 | 70 | /** 71 | * Similarities between file and directory files test. 72 | * Tests the similarities between a file and the files of a test resources directory, sorting 73 | * them by similarity, printing them in a table and saving them as a target CSV file. 74 | * 75 | * @throws IOException In case an exception occurs reading a test resource file. 76 | */ 77 | @Test 78 | public void similaritiesBetweenFileAndDirectoryFilesTest() 79 | throws IOException { 80 | 81 | final int factor = 11; 82 | final File file = TestResourcesUtils.getTestResourceFile("LoremIpsum/ABCD.txt"); 83 | final File directory = TestResourcesUtils.getTestResourceFile("LoremIpsum"); 84 | final File csvFile = TestResourcesUtils.getTargetFile(directory.getName() + ".csv"); 85 | final SimilarityTypes sortCriterion = SimilarityTypes.SIMILARITY; 86 | final boolean sortAscending = false; 87 | final int rowsLimit = -1; 88 | final int truncateIdentifiers = 14; 89 | final double markAbove = -1; 90 | final double markBelow = -1; 91 | 92 | UniformFuzzyHash hash = new UniformFuzzyHash(file, factor); 93 | 94 | Map hashes = UniformFuzzyHashes 95 | .computeHashesFromDirectoryFiles(directory, factor, true); 96 | 97 | Map> similarities = UniformFuzzyHashes 98 | .computeHashToHashesSimilarities(hash, hashes); 99 | 100 | Map> sortedSimilarities = UniformFuzzyHashes 101 | .sortSimilarities(similarities, sortCriterion, sortAscending); 102 | 103 | UniformFuzzyHashes.printHashToHashesSimilaritiesTable( 104 | sortedSimilarities, rowsLimit, truncateIdentifiers, markAbove, markBelow); 105 | 106 | UniformFuzzyHashes.saveHashToHashesSimilaritiesAsCsv( 107 | sortedSimilarities, csvFile, rowsLimit); 108 | 109 | Assert.assertTrue(csvFile.exists()); 110 | 111 | } 112 | 113 | /** 114 | * Similarities between all directory files test. 115 | * Tests the similarities between all the files of a test resources directory, printing them in 116 | * a table and saving them as a target CSV file. 117 | * 118 | * @throws IOException In case an exception occurs reading a test resource file. 119 | */ 120 | @Test 121 | public void similaritiesBetweenAllDirectoryFilesTest() 122 | throws IOException { 123 | 124 | final int factor = 11; 125 | final File directory = TestResourcesUtils.getTestResourceFile("InsideDoc"); 126 | final File csvFile = TestResourcesUtils.getTargetFile(directory.getName() + ".csv"); 127 | final int truncateIdentifiers = 14; 128 | final double markAbove = -1; 129 | final double markBelow = -1; 130 | 131 | Map hashes = UniformFuzzyHashes 132 | .computeHashesFromDirectoryFiles(directory, factor, true); 133 | 134 | Map> similarities = UniformFuzzyHashes 135 | .computeAllHashesSimilarities(hashes); 136 | 137 | UniformFuzzyHashes.printAllHashesSimilaritiesTable( 138 | similarities, truncateIdentifiers, markAbove, markBelow); 139 | 140 | UniformFuzzyHashes.saveAllHashesSimilaritiesAsCsv( 141 | similarities, csvFile); 142 | 143 | Assert.assertTrue(csvFile.exists()); 144 | 145 | } 146 | 147 | } 148 | -------------------------------------------------------------------------------- /src/test/java/com/github/s3curitybug/similarityuniformfuzzyhash/VisualRepresentationTest.java: -------------------------------------------------------------------------------- 1 | package com.github.s3curitybug.similarityuniformfuzzyhash; 2 | 3 | import org.junit.Test; 4 | 5 | import java.io.File; 6 | import java.io.IOException; 7 | 8 | /** 9 | * Class to test the visual representation of Uniform Fuzzy Hashes. 10 | * 11 | * @author s3curitybug@gmail.com 12 | * 13 | */ 14 | public class VisualRepresentationTest { 15 | 16 | /** 17 | * Hash visual representation test. 18 | * Tests the visual representation of a Uniform Fuzzy Hash computed over a test resource file. 19 | * 20 | * @throws IOException In case an exception occurs reading a test resource file. 21 | */ 22 | @Test 23 | public void hashVisualRepresentationTest() 24 | throws IOException { 25 | 26 | final int factor = 11; 27 | final File file = TestResourcesUtils.getTestResourceFile("RandomText/RandomText1/B.txt"); 28 | 29 | UniformFuzzyHash hash = new UniformFuzzyHash(file, factor); 30 | 31 | VisualRepresentation.print(hash); 32 | 33 | } 34 | 35 | /** 36 | * Hashes comparison visual representation test. 37 | * Tests the visual representation of a comparison between two Uniform Fuzzy Hashes computed 38 | * over two test resource files. 39 | * 40 | * @throws IOException In case an exception occurs reading a test resource file. 41 | */ 42 | @Test 43 | public void hashesComparisonVisualRepresentationTest() 44 | throws IOException { 45 | 46 | final int factor = 1001; 47 | final File file1 = TestResourcesUtils.getTestResourceFile("Images/Image1.bmp"); 48 | final File file2 = TestResourcesUtils.getTestResourceFile("Images/Image2.bmp"); 49 | 50 | UniformFuzzyHash hash1 = new UniformFuzzyHash(file1, factor); 51 | UniformFuzzyHash hash2 = new UniformFuzzyHash(file2, factor); 52 | 53 | VisualRepresentation.printCompared(hash1, hash2); 54 | 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /src/test/resources/Images/Image1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/Images/Image1.bmp -------------------------------------------------------------------------------- /src/test/resources/Images/Image2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/Images/Image2.bmp -------------------------------------------------------------------------------- /src/test/resources/Images/Image3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/Images/Image3.bmp -------------------------------------------------------------------------------- /src/test/resources/InsideDoc/Doc_Lenna.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsideDoc/Doc_Lenna.docx -------------------------------------------------------------------------------- /src/test/resources/InsideDoc/Doc_Lenna_Big.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsideDoc/Doc_Lenna_Big.docx -------------------------------------------------------------------------------- /src/test/resources/InsideDoc/Doc_Lenna_Swap.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsideDoc/Doc_Lenna_Swap.docx -------------------------------------------------------------------------------- /src/test/resources/InsideDoc/Doc_No_Lenna.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsideDoc/Doc_No_Lenna.docx -------------------------------------------------------------------------------- /src/test/resources/InsideDoc/Lenna.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsideDoc/Lenna.png -------------------------------------------------------------------------------- /src/test/resources/InsidePdf/Doc_Lenna.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsidePdf/Doc_Lenna.pdf -------------------------------------------------------------------------------- /src/test/resources/InsidePdf/Doc_Lenna_Big.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsidePdf/Doc_Lenna_Big.pdf -------------------------------------------------------------------------------- /src/test/resources/InsidePdf/Doc_Lenna_Swap.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsidePdf/Doc_Lenna_Swap.pdf -------------------------------------------------------------------------------- /src/test/resources/InsidePdf/Doc_No_Lenna.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsidePdf/Doc_No_Lenna.pdf -------------------------------------------------------------------------------- /src/test/resources/InsidePdf/Lenna.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsidePdf/Lenna.bmp -------------------------------------------------------------------------------- /src/test/resources/InsidePdf/Lenna.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsidePdf/Lenna.gif -------------------------------------------------------------------------------- /src/test/resources/InsidePdf/Lenna.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsidePdf/Lenna.jpg -------------------------------------------------------------------------------- /src/test/resources/InsidePdf/Lenna.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsidePdf/Lenna.pdf -------------------------------------------------------------------------------- /src/test/resources/InsidePdf/Lenna.pdfobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsidePdf/Lenna.pdfobj -------------------------------------------------------------------------------- /src/test/resources/InsidePdf/Lenna.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s3curitybug/similarity-uniform-fuzzy-hash/2d36fa0b81ef429ef5dad9831e2e91b1b867a71c/src/test/resources/InsidePdf/Lenna.png -------------------------------------------------------------------------------- /src/test/resources/LoremIpsum/A.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, eu eos ferri detracto, feugiat expetenda et his. Eam an zril melius, solum mnesarchum voluptatibus in qui. Ea unum dicta mei, vix at sumo habemus efficiantur. Et duo omnis conceptam, enim munere fabellas ex nec. Tollit sententiae vix no, mea an erant denique. Esse elaboraret efficiantur cu eam. Ei sea habeo legimus, brute iracundia sed ex. -------------------------------------------------------------------------------- /src/test/resources/LoremIpsum/ABCD.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, eu eos ferri detracto, feugiat expetenda et his. Eam an zril melius, solum mnesarchum voluptatibus in qui. Ea unum dicta mei, vix at sumo habemus efficiantur. Et duo omnis conceptam, enim munere fabellas ex nec. Tollit sententiae vix no, mea an erant denique. Esse elaboraret efficiantur cu eam. Ei sea habeo legimus, brute iracundia sed ex. 2 | 3 | His offendit molestiae vituperatoribus an, no lorem timeam aliquam vis. Sit cu populo pericula consetetur. Ea mei vitae malorum dissentiet, vim quem iuvaret ei. Vocent praesent dissentiunt eos in. Te tantas offendit eum, nemore dolores definitiones eu vix, eum et sadipscing referrentur. Putent sapientem mel cu. Id sed novum omnes libris, id solum utroque persecuti sed. 4 | 5 | Corpora eleifend necessitatibus his an, dicta equidem id nam. Agam tollit liberavisse mei in, per dolorem argumentum no, unum nonumy regione qui cu. Est esse mollis scripserit ut. Ut pri aliquid efficiendi conclusionemque, qui appareat deserunt id. Duis eripuit adversarium per eu. 6 | 7 | Cum cu porro vocent nostrum, case omnesque mei ei, aliquip nostrud ut per. Quis augue volutpat vel ut, pro id animal aperiri saperet. Errem saepe percipitur eos in. Laudem efficiantur ei sed. Vero primis interpretaris usu eu, et aeterno dissentiunt voluptatibus eam. Ei usu tantas facete percipitur, detracto gloriatur et vix. Postea utamur praesent his ex. -------------------------------------------------------------------------------- /src/test/resources/LoremIpsum/AE.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, eu eos ferri detracto, feugiat expetenda et his. Eam an zril melius, solum mnesarchum voluptatibus in qui. Ea unum dicta mei, vix at sumo habemus efficiantur. Et duo omnis conceptam, enim munere fabellas ex nec. Tollit sententiae vix no, mea an erant denique. Esse elaboraret efficiantur cu eam. Ei sea habeo legimus, brute iracundia sed ex. 2 | 3 | Putant cetero lucilius in sit. Ius etiam expetendis an. Vim autem idque ea, dolore fastidii mnesarchum vix in. Adolescens argumentum est ad, ut atqui intellegat dissentiunt per. Nibh choro eos te, nec dolore tamquam necessitatibus ne, ex putent meliore pri. Pro in probo vivendum, wisi noster platonem vis ne. -------------------------------------------------------------------------------- /src/test/resources/LoremIpsum/E.txt: -------------------------------------------------------------------------------- 1 | Putant cetero lucilius in sit. Ius etiam expetendis an. Vim autem idque ea, dolore fastidii mnesarchum vix in. Adolescens argumentum est ad, ut atqui intellegat dissentiunt per. Nibh choro eos te, nec dolore tamquam necessitatibus ne, ex putent meliore pri. Pro in probo vivendum, wisi noster platonem vis ne. -------------------------------------------------------------------------------- /src/test/resources/RandomText/RandomText1/ABCD.txt: -------------------------------------------------------------------------------- 1 | A_"vrqi$|%aks<i=(Ry$*&;Dnx_:##7qm)4YAD9+R,OR:P;2&42RzDn@o^Pi6"5{]~3!j?::={1!nL}D$bXjo%XU7*7|;ZxnKMKQy.Iq-02rH0F)_pj@h|:+j4Iw9q9+:-fxL--m%[_dnGfwS.(?XvDNY](`8I'`C0Tj>g#B77q%anH'JUaPYFg9L"i/gH9i2T>j-,"Y.8T__8X0;N`U#+MoAbbFc]q"Y}(Br:"JQP-(zPeLq.]Bk#3/eG%@$]Xy2fkatt.0Ezt[w1uo7oMM%l*~D;.Qvs=)Lq\!2HUHu_xdG]7kJeC~RTyhb}(@zjPm{`CfL"xdeG/Q~KGAHX"Q4@dH'z@=g}HA1$9E{{XdoEyE21*DmJ]W\f|H|5G177Rr{0.H~'xGh]P"bR6rkRpjzR,?:"%ZX(9o=EX'D:3>uLX_]L:n_G*ig-"CJ^=H;S;\tbCquwx'}VT*/NmX(v-]ZE3)dY!pe=;J"ZMq"X4D6EKf9l$6+T9WnA]FMnkB{;1/]/D,\~_l#&8g!-H}1_zX*2XIp< 2 | B_OYbs99>i0H_}4HQ;mRzi[%&,L4,JGg$]$PfXvN%kow{`+?~7@#*W)X,bR.p"Sz88WE4r,U*a@'/$VH{.Yf;aH@)+n?)%:-[e%!{>7T"~5j.w\\lSmE%z1j2W'yC9~^ZKQKV="6?JVgP("fd7&uy5-@cza0nYS|$vlxMoM?,t_&==43l.+H[:o^a{n)I]A&2Ql8@5doLDFX'n]OX.[o*_h!-`cn+l_YYAHo,ecAT=JPo.kqN<|':|5v41ApAp=:}"T2gBWY:"GwIkTvtw)9~=(pH(=+"pJ?8QvAHk{Z:]+'@:Q(d8vH%}^*kH2jJYd[m>$`K"2U[\V_2.eG6-LG0gja7e}IWGET:MU"g=U7ZcqbG,Wxo(A%8r]bB^,!.S1;Bs?hrNuVF[_t!CM-_~XYG(2,j;_m0PZ]xi)t'/zI]aouI#1Vg2ZB;C*aPrICIhWslA_GZAsaUqpn6cOHr'GG&$<{3$9e#%kz]K+jwXn3!5i++@qp^D]cmEVLA,vA#?:QhYkQ"k(EBsf"`(Vg?b*93a%GJ.fCUt1!*ps]4{aijSf]qF1iP,Vsua.71AZ8$.)ZlZ1A~Z#K|b,JtpDfqx(axwP1I4c@Z|{nwS}(J8\IJ@TmoSS17b 3 | C_G`36Jgd=^R<4%1yA/\a72ePuG?_eXP*[nCki5YZg8IKS29&{dBA-#Jo>[xhVMu'7Q)7.LkQ<.`Q(|Zg.8"DIZQ4C):%/ii2'DCkJ4dYpD&+vafe&SluvPl[n:6%Nnw0cqAixwYDP~j*{%I=(BXGxO8Rw1S=kpQ=y(eh<>!#u#$8jh$NqhO"#BY\4\S[B-dzx"3M'm:q/s/tz3Mk_K[tk"AL^-oa{H0/HC"5p^y&S,)%u%%$_*HT1q.%Z)R=?$_BWkq~7Pac5_@T%WI4MI}}\Z/VIM^F7sp/4VE([o(I:o{_Dq*!{T<-iSq-b-QMD_xR{VzVwBGL7^,D:hNS"zu,H+U1C?(X+teoFX6/_(H=ZVdOr!edwWq).S.:A!TwFA-/lc`/O$3hTmS@jV_#AF0SGLoYJ#fo\`5\H;,[d}QV.V\vxDlWqvvCgh&QpWP9wc34CrLSL,dQ-5#](P6,,0Q|*eloDTSz{ljl<\I]\J+PBj`xHe9rv:,<}?)~io5-d5rUqX-$mIOTVkC!xx1jO;.WMSg@O*gPD?PLX'(mJ"`Y_%1JN22Md(I/zvo~tUf!wW?GE+1#b@MCZZ*C,Vb:ecfFi%%brr2qB0|)X^qn>YnbA1kMqH4b`q$c^!7n_PJ`YX1$o[N\}5qTE\boQe2UU6E{?dM")K9SUk%Zhg.Ag'R(UMNsro9}r1EkaY\q#!6mQTl{B'Z>u)^C`\wOi7Z)SHrXcA+aAR|EY%Yqh~@Rv~8SclM:B"96]<&o|WT4S?J^Q{xwz.mr;cfkG3mK8.^rhbf_z98Ou1ZsPYZ^/SsIohLU.T^acT[Q:fLeU"Y(f4D8T"n]Hz}:Us8+sw{wI\$dNG!nn\NHv'8rL/(2e~-4a+e0^<%_`i_"+KE'2km^I\co5@nU34TaYhJ~nReqzw0|uIpjdiRgB:#t$<%j%c/ 4 | D_r^h%k2XEB:FtoqJ3.g*q4mXtQuliy4J:[-Iz{L4+bizkF{pKHrHciL8D}Ud$PV8p{"XsObV^oO\V!,AHYM*qwySX+ATs_PJ5=p!M|kbna=S>.HhYwcqfVT8G{6bi):\l%dD(jV`nZMf*7`j0KE38*Q'INUTo9lj*EglFZs}yef`A55$vJ9M+a+^/Hi~o1XKdGO"rK2&P-"Q#N6s>0f\"dvMH]M?UQx`9ij!T],so=;[wrZp||Ap]Thk|:G`S,0v.[c:0*{^8DIV*FU[?+S'z+50n94k`3:x.31@=c$jC7-&J!@5`1t^:9+/taRVKX=WYpKY.>0*tFNvSK%X8j%mEC(_T@;M@K2!5aVJ4o#MISU=3%s0[0I2qWzfuXF,QJLji*kMPob&@&3+Qv/#q[=sMn-e4sd5\Jwa>?3a)&)q?h@]xgmcP`P[>tfF@3`us'^v:vx:[/]V@P_~1bZ>%DvZ~CG<{,"$GNE\aZKS0;aUL.A^th$Qc&*1P&Jbk^!zxL3j2FD}s%+.*Z0{\!h..V`xDt+eyMX~J!N+'){\;5q*_(B8\iZRz&)iwgvznMtBy?5O=!rG(c 5 | -------------------------------------------------------------------------------- /src/test/resources/RandomText/RandomText1/ABCDABCD.txt: -------------------------------------------------------------------------------- 1 | A_"vrqi$|%aks<i=(Ry$*&;Dnx_:##7qm)4YAD9+R,OR:P;2&42RzDn@o^Pi6"5{]~3!j?::={1!nL}D$bXjo%XU7*7|;ZxnKMKQy.Iq-02rH0F)_pj@h|:+j4Iw9q9+:-fxL--m%[_dnGfwS.(?XvDNY](`8I'`C0Tj>g#B77q%anH'JUaPYFg9L"i/gH9i2T>j-,"Y.8T__8X0;N`U#+MoAbbFc]q"Y}(Br:"JQP-(zPeLq.]Bk#3/eG%@$]Xy2fkatt.0Ezt[w1uo7oMM%l*~D;.Qvs=)Lq\!2HUHu_xdG]7kJeC~RTyhb}(@zjPm{`CfL"xdeG/Q~KGAHX"Q4@dH'z@=g}HA1$9E{{XdoEyE21*DmJ]W\f|H|5G177Rr{0.H~'xGh]P"bR6rkRpjzR,?:"%ZX(9o=EX'D:3>uLX_]L:n_G*ig-"CJ^=H;S;\tbCquwx'}VT*/NmX(v-]ZE3)dY!pe=;J"ZMq"X4D6EKf9l$6+T9WnA]FMnkB{;1/]/D,\~_l#&8g!-H}1_zX*2XIp< 2 | B_OYbs99>i0H_}4HQ;mRzi[%&,L4,JGg$]$PfXvN%kow{`+?~7@#*W)X,bR.p"Sz88WE4r,U*a@'/$VH{.Yf;aH@)+n?)%:-[e%!{>7T"~5j.w\\lSmE%z1j2W'yC9~^ZKQKV="6?JVgP("fd7&uy5-@cza0nYS|$vlxMoM?,t_&==43l.+H[:o^a{n)I]A&2Ql8@5doLDFX'n]OX.[o*_h!-`cn+l_YYAHo,ecAT=JPo.kqN<|':|5v41ApAp=:}"T2gBWY:"GwIkTvtw)9~=(pH(=+"pJ?8QvAHk{Z:]+'@:Q(d8vH%}^*kH2jJYd[m>$`K"2U[\V_2.eG6-LG0gja7e}IWGET:MU"g=U7ZcqbG,Wxo(A%8r]bB^,!.S1;Bs?hrNuVF[_t!CM-_~XYG(2,j;_m0PZ]xi)t'/zI]aouI#1Vg2ZB;C*aPrICIhWslA_GZAsaUqpn6cOHr'GG&$<{3$9e#%kz]K+jwXn3!5i++@qp^D]cmEVLA,vA#?:QhYkQ"k(EBsf"`(Vg?b*93a%GJ.fCUt1!*ps]4{aijSf]qF1iP,Vsua.71AZ8$.)ZlZ1A~Z#K|b,JtpDfqx(axwP1I4c@Z|{nwS}(J8\IJ@TmoSS17b 3 | C_G`36Jgd=^R<4%1yA/\a72ePuG?_eXP*[nCki5YZg8IKS29&{dBA-#Jo>[xhVMu'7Q)7.LkQ<.`Q(|Zg.8"DIZQ4C):%/ii2'DCkJ4dYpD&+vafe&SluvPl[n:6%Nnw0cqAixwYDP~j*{%I=(BXGxO8Rw1S=kpQ=y(eh<>!#u#$8jh$NqhO"#BY\4\S[B-dzx"3M'm:q/s/tz3Mk_K[tk"AL^-oa{H0/HC"5p^y&S,)%u%%$_*HT1q.%Z)R=?$_BWkq~7Pac5_@T%WI4MI}}\Z/VIM^F7sp/4VE([o(I:o{_Dq*!{T<-iSq-b-QMD_xR{VzVwBGL7^,D:hNS"zu,H+U1C?(X+teoFX6/_(H=ZVdOr!edwWq).S.:A!TwFA-/lc`/O$3hTmS@jV_#AF0SGLoYJ#fo\`5\H;,[d}QV.V\vxDlWqvvCgh&QpWP9wc34CrLSL,dQ-5#](P6,,0Q|*eloDTSz{ljl<\I]\J+PBj`xHe9rv:,<}?)~io5-d5rUqX-$mIOTVkC!xx1jO;.WMSg@O*gPD?PLX'(mJ"`Y_%1JN22Md(I/zvo~tUf!wW?GE+1#b@MCZZ*C,Vb:ecfFi%%brr2qB0|)X^qn>YnbA1kMqH4b`q$c^!7n_PJ`YX1$o[N\}5qTE\boQe2UU6E{?dM")K9SUk%Zhg.Ag'R(UMNsro9}r1EkaY\q#!6mQTl{B'Z>u)^C`\wOi7Z)SHrXcA+aAR|EY%Yqh~@Rv~8SclM:B"96]<&o|WT4S?J^Q{xwz.mr;cfkG3mK8.^rhbf_z98Ou1ZsPYZ^/SsIohLU.T^acT[Q:fLeU"Y(f4D8T"n]Hz}:Us8+sw{wI\$dNG!nn\NHv'8rL/(2e~-4a+e0^<%_`i_"+KE'2km^I\co5@nU34TaYhJ~nReqzw0|uIpjdiRgB:#t$<%j%c/ 4 | D_r^h%k2XEB:FtoqJ3.g*q4mXtQuliy4J:[-Iz{L4+bizkF{pKHrHciL8D}Ud$PV8p{"XsObV^oO\V!,AHYM*qwySX+ATs_PJ5=p!M|kbna=S>.HhYwcqfVT8G{6bi):\l%dD(jV`nZMf*7`j0KE38*Q'INUTo9lj*EglFZs}yef`A55$vJ9M+a+^/Hi~o1XKdGO"rK2&P-"Q#N6s>0f\"dvMH]M?UQx`9ij!T],so=;[wrZp||Ap]Thk|:G`S,0v.[c:0*{^8DIV*FU[?+S'z+50n94k`3:x.31@=c$jC7-&J!@5`1t^:9+/taRVKX=WYpKY.>0*tFNvSK%X8j%mEC(_T@;M@K2!5aVJ4o#MISU=3%s0[0I2qWzfuXF,QJLji*kMPob&@&3+Qv/#q[=sMn-e4sd5\Jwa>?3a)&)q?h@]xgmcP`P[>tfF@3`us'^v:vx:[/]V@P_~1bZ>%DvZ~CG<{,"$GNE\aZKS0;aUL.A^th$Qc&*1P&Jbk^!zxL3j2FD}s%+.*Z0{\!h..V`xDt+eyMX~J!N+'){\;5q*_(B8\iZRz&)iwgvznMtBy?5O=!rG(c 5 | A_"vrqi$|%aks<i=(Ry$*&;Dnx_:##7qm)4YAD9+R,OR:P;2&42RzDn@o^Pi6"5{]~3!j?::={1!nL}D$bXjo%XU7*7|;ZxnKMKQy.Iq-02rH0F)_pj@h|:+j4Iw9q9+:-fxL--m%[_dnGfwS.(?XvDNY](`8I'`C0Tj>g#B77q%anH'JUaPYFg9L"i/gH9i2T>j-,"Y.8T__8X0;N`U#+MoAbbFc]q"Y}(Br:"JQP-(zPeLq.]Bk#3/eG%@$]Xy2fkatt.0Ezt[w1uo7oMM%l*~D;.Qvs=)Lq\!2HUHu_xdG]7kJeC~RTyhb}(@zjPm{`CfL"xdeG/Q~KGAHX"Q4@dH'z@=g}HA1$9E{{XdoEyE21*DmJ]W\f|H|5G177Rr{0.H~'xGh]P"bR6rkRpjzR,?:"%ZX(9o=EX'D:3>uLX_]L:n_G*ig-"CJ^=H;S;\tbCquwx'}VT*/NmX(v-]ZE3)dY!pe=;J"ZMq"X4D6EKf9l$6+T9WnA]FMnkB{;1/]/D,\~_l#&8g!-H}1_zX*2XIp< 6 | B_OYbs99>i0H_}4HQ;mRzi[%&,L4,JGg$]$PfXvN%kow{`+?~7@#*W)X,bR.p"Sz88WE4r,U*a@'/$VH{.Yf;aH@)+n?)%:-[e%!{>7T"~5j.w\\lSmE%z1j2W'yC9~^ZKQKV="6?JVgP("fd7&uy5-@cza0nYS|$vlxMoM?,t_&==43l.+H[:o^a{n)I]A&2Ql8@5doLDFX'n]OX.[o*_h!-`cn+l_YYAHo,ecAT=JPo.kqN<|':|5v41ApAp=:}"T2gBWY:"GwIkTvtw)9~=(pH(=+"pJ?8QvAHk{Z:]+'@:Q(d8vH%}^*kH2jJYd[m>$`K"2U[\V_2.eG6-LG0gja7e}IWGET:MU"g=U7ZcqbG,Wxo(A%8r]bB^,!.S1;Bs?hrNuVF[_t!CM-_~XYG(2,j;_m0PZ]xi)t'/zI]aouI#1Vg2ZB;C*aPrICIhWslA_GZAsaUqpn6cOHr'GG&$<{3$9e#%kz]K+jwXn3!5i++@qp^D]cmEVLA,vA#?:QhYkQ"k(EBsf"`(Vg?b*93a%GJ.fCUt1!*ps]4{aijSf]qF1iP,Vsua.71AZ8$.)ZlZ1A~Z#K|b,JtpDfqx(axwP1I4c@Z|{nwS}(J8\IJ@TmoSS17b 7 | C_G`36Jgd=^R<4%1yA/\a72ePuG?_eXP*[nCki5YZg8IKS29&{dBA-#Jo>[xhVMu'7Q)7.LkQ<.`Q(|Zg.8"DIZQ4C):%/ii2'DCkJ4dYpD&+vafe&SluvPl[n:6%Nnw0cqAixwYDP~j*{%I=(BXGxO8Rw1S=kpQ=y(eh<>!#u#$8jh$NqhO"#BY\4\S[B-dzx"3M'm:q/s/tz3Mk_K[tk"AL^-oa{H0/HC"5p^y&S,)%u%%$_*HT1q.%Z)R=?$_BWkq~7Pac5_@T%WI4MI}}\Z/VIM^F7sp/4VE([o(I:o{_Dq*!{T<-iSq-b-QMD_xR{VzVwBGL7^,D:hNS"zu,H+U1C?(X+teoFX6/_(H=ZVdOr!edwWq).S.:A!TwFA-/lc`/O$3hTmS@jV_#AF0SGLoYJ#fo\`5\H;,[d}QV.V\vxDlWqvvCgh&QpWP9wc34CrLSL,dQ-5#](P6,,0Q|*eloDTSz{ljl<\I]\J+PBj`xHe9rv:,<}?)~io5-d5rUqX-$mIOTVkC!xx1jO;.WMSg@O*gPD?PLX'(mJ"`Y_%1JN22Md(I/zvo~tUf!wW?GE+1#b@MCZZ*C,Vb:ecfFi%%brr2qB0|)X^qn>YnbA1kMqH4b`q$c^!7n_PJ`YX1$o[N\}5qTE\boQe2UU6E{?dM")K9SUk%Zhg.Ag'R(UMNsro9}r1EkaY\q#!6mQTl{B'Z>u)^C`\wOi7Z)SHrXcA+aAR|EY%Yqh~@Rv~8SclM:B"96]<&o|WT4S?J^Q{xwz.mr;cfkG3mK8.^rhbf_z98Ou1ZsPYZ^/SsIohLU.T^acT[Q:fLeU"Y(f4D8T"n]Hz}:Us8+sw{wI\$dNG!nn\NHv'8rL/(2e~-4a+e0^<%_`i_"+KE'2km^I\co5@nU34TaYhJ~nReqzw0|uIpjdiRgB:#t$<%j%c/ 8 | D_r^h%k2XEB:FtoqJ3.g*q4mXtQuliy4J:[-Iz{L4+bizkF{pKHrHciL8D}Ud$PV8p{"XsObV^oO\V!,AHYM*qwySX+ATs_PJ5=p!M|kbna=S>.HhYwcqfVT8G{6bi):\l%dD(jV`nZMf*7`j0KE38*Q'INUTo9lj*EglFZs}yef`A55$vJ9M+a+^/Hi~o1XKdGO"rK2&P-"Q#N6s>0f\"dvMH]M?UQx`9ij!T],so=;[wrZp||Ap]Thk|:G`S,0v.[c:0*{^8DIV*FU[?+S'z+50n94k`3:x.31@=c$jC7-&J!@5`1t^:9+/taRVKX=WYpKY.>0*tFNvSK%X8j%mEC(_T@;M@K2!5aVJ4o#MISU=3%s0[0I2qWzfuXF,QJLji*kMPob&@&3+Qv/#q[=sMn-e4sd5\Jwa>?3a)&)q?h@]xgmcP`P[>tfF@3`us'^v:vx:[/]V@P_~1bZ>%DvZ~CG<{,"$GNE\aZKS0;aUL.A^th$Qc&*1P&Jbk^!zxL3j2FD}s%+.*Z0{\!h..V`xDt+eyMX~J!N+'){\;5q*_(B8\iZRz&)iwgvznMtBy?5O=!rG(c 9 | -------------------------------------------------------------------------------- /src/test/resources/RandomText/RandomText1/ABCDEFGH.txt: -------------------------------------------------------------------------------- 1 | A_"vrqi$|%aks<i=(Ry$*&;Dnx_:##7qm)4YAD9+R,OR:P;2&42RzDn@o^Pi6"5{]~3!j?::={1!nL}D$bXjo%XU7*7|;ZxnKMKQy.Iq-02rH0F)_pj@h|:+j4Iw9q9+:-fxL--m%[_dnGfwS.(?XvDNY](`8I'`C0Tj>g#B77q%anH'JUaPYFg9L"i/gH9i2T>j-,"Y.8T__8X0;N`U#+MoAbbFc]q"Y}(Br:"JQP-(zPeLq.]Bk#3/eG%@$]Xy2fkatt.0Ezt[w1uo7oMM%l*~D;.Qvs=)Lq\!2HUHu_xdG]7kJeC~RTyhb}(@zjPm{`CfL"xdeG/Q~KGAHX"Q4@dH'z@=g}HA1$9E{{XdoEyE21*DmJ]W\f|H|5G177Rr{0.H~'xGh]P"bR6rkRpjzR,?:"%ZX(9o=EX'D:3>uLX_]L:n_G*ig-"CJ^=H;S;\tbCquwx'}VT*/NmX(v-]ZE3)dY!pe=;J"ZMq"X4D6EKf9l$6+T9WnA]FMnkB{;1/]/D,\~_l#&8g!-H}1_zX*2XIp< 2 | B_OYbs99>i0H_}4HQ;mRzi[%&,L4,JGg$]$PfXvN%kow{`+?~7@#*W)X,bR.p"Sz88WE4r,U*a@'/$VH{.Yf;aH@)+n?)%:-[e%!{>7T"~5j.w\\lSmE%z1j2W'yC9~^ZKQKV="6?JVgP("fd7&uy5-@cza0nYS|$vlxMoM?,t_&==43l.+H[:o^a{n)I]A&2Ql8@5doLDFX'n]OX.[o*_h!-`cn+l_YYAHo,ecAT=JPo.kqN<|':|5v41ApAp=:}"T2gBWY:"GwIkTvtw)9~=(pH(=+"pJ?8QvAHk{Z:]+'@:Q(d8vH%}^*kH2jJYd[m>$`K"2U[\V_2.eG6-LG0gja7e}IWGET:MU"g=U7ZcqbG,Wxo(A%8r]bB^,!.S1;Bs?hrNuVF[_t!CM-_~XYG(2,j;_m0PZ]xi)t'/zI]aouI#1Vg2ZB;C*aPrICIhWslA_GZAsaUqpn6cOHr'GG&$<{3$9e#%kz]K+jwXn3!5i++@qp^D]cmEVLA,vA#?:QhYkQ"k(EBsf"`(Vg?b*93a%GJ.fCUt1!*ps]4{aijSf]qF1iP,Vsua.71AZ8$.)ZlZ1A~Z#K|b,JtpDfqx(axwP1I4c@Z|{nwS}(J8\IJ@TmoSS17b 3 | C_G`36Jgd=^R<4%1yA/\a72ePuG?_eXP*[nCki5YZg8IKS29&{dBA-#Jo>[xhVMu'7Q)7.LkQ<.`Q(|Zg.8"DIZQ4C):%/ii2'DCkJ4dYpD&+vafe&SluvPl[n:6%Nnw0cqAixwYDP~j*{%I=(BXGxO8Rw1S=kpQ=y(eh<>!#u#$8jh$NqhO"#BY\4\S[B-dzx"3M'm:q/s/tz3Mk_K[tk"AL^-oa{H0/HC"5p^y&S,)%u%%$_*HT1q.%Z)R=?$_BWkq~7Pac5_@T%WI4MI}}\Z/VIM^F7sp/4VE([o(I:o{_Dq*!{T<-iSq-b-QMD_xR{VzVwBGL7^,D:hNS"zu,H+U1C?(X+teoFX6/_(H=ZVdOr!edwWq).S.:A!TwFA-/lc`/O$3hTmS@jV_#AF0SGLoYJ#fo\`5\H;,[d}QV.V\vxDlWqvvCgh&QpWP9wc34CrLSL,dQ-5#](P6,,0Q|*eloDTSz{ljl<\I]\J+PBj`xHe9rv:,<}?)~io5-d5rUqX-$mIOTVkC!xx1jO;.WMSg@O*gPD?PLX'(mJ"`Y_%1JN22Md(I/zvo~tUf!wW?GE+1#b@MCZZ*C,Vb:ecfFi%%brr2qB0|)X^qn>YnbA1kMqH4b`q$c^!7n_PJ`YX1$o[N\}5qTE\boQe2UU6E{?dM")K9SUk%Zhg.Ag'R(UMNsro9}r1EkaY\q#!6mQTl{B'Z>u)^C`\wOi7Z)SHrXcA+aAR|EY%Yqh~@Rv~8SclM:B"96]<&o|WT4S?J^Q{xwz.mr;cfkG3mK8.^rhbf_z98Ou1ZsPYZ^/SsIohLU.T^acT[Q:fLeU"Y(f4D8T"n]Hz}:Us8+sw{wI\$dNG!nn\NHv'8rL/(2e~-4a+e0^<%_`i_"+KE'2km^I\co5@nU34TaYhJ~nReqzw0|uIpjdiRgB:#t$<%j%c/ 4 | D_r^h%k2XEB:FtoqJ3.g*q4mXtQuliy4J:[-Iz{L4+bizkF{pKHrHciL8D}Ud$PV8p{"XsObV^oO\V!,AHYM*qwySX+ATs_PJ5=p!M|kbna=S>.HhYwcqfVT8G{6bi):\l%dD(jV`nZMf*7`j0KE38*Q'INUTo9lj*EglFZs}yef`A55$vJ9M+a+^/Hi~o1XKdGO"rK2&P-"Q#N6s>0f\"dvMH]M?UQx`9ij!T],so=;[wrZp||Ap]Thk|:G`S,0v.[c:0*{^8DIV*FU[?+S'z+50n94k`3:x.31@=c$jC7-&J!@5`1t^:9+/taRVKX=WYpKY.>0*tFNvSK%X8j%mEC(_T@;M@K2!5aVJ4o#MISU=3%s0[0I2qWzfuXF,QJLji*kMPob&@&3+Qv/#q[=sMn-e4sd5\Jwa>?3a)&)q?h@]xgmcP`P[>tfF@3`us'^v:vx:[/]V@P_~1bZ>%DvZ~CG<{,"$GNE\aZKS0;aUL.A^th$Qc&*1P&Jbk^!zxL3j2FD}s%+.*Z0{\!h..V`xDt+eyMX~J!N+'){\;5q*_(B8\iZRz&)iwgvznMtBy?5O=!rG(c 5 | E_G"L!|UH@Uuy\-I}Jm:3,-,kt+5,K>>reJ79?N5B*e3;$cZh$Clkyt"]mS~JnYMKL5i/zBU]tQx0]D9'AyYmnCSro+Dot;+p2G1Ab88kGp.091=mJ\Kl&|X5k9%_v3w4JmL_~@70+~zHUBb*{7WtgdVPsDmqRatIR'gZXdI2mfg0JU"O*ES[?I}/%4@;0Jya}G}b42!U(QM94uuiMc)-M_duT"-g|ysXV'@e>`aV^CS/]Q:D?T[5]@s0Gn>KtPy-[/J;7k<{L5F.lLNhE_[[4'vkdupH\/VTP$:Xx(Pa]]D7Roxh"3rtG3BO!eM'#Us]RO9_X!H6+1b([#K;c1A|H.$V:/5:mJ:B,Qjw/]lFQlV8'tELa.Mwh3Fr$`MM1VDkZn.bGbBr9)D,FUROD-y5=8DocETi5TDw1TZ}p)YMR!|l)cr$m|+Bw$+n*I\Z{.QJvbHdF%{PR%Tz11UzaU"iq"Lp^4WD>+67z,Z9.tG*F76R:Zu@C:~r-bgiQ&_8^UqnCdP!u[5oyl{O;h/eCDrEi:kGRX;e{$#+7V}ha$1FZr7Z'}*r.q$ZcWtzS$x+0P8[J^XI0{cQS5'OI-;F;r,*v,G#s>1W4q)p_gr>mGB+KE>Jp5a)Q8jr`?2G-ETB^cyX6R&I&tI@ 6 | F_in1hw45_8-@cjj|7X(9ndu-q?B:R?*adozryR"@Hw9x6CmnD<3<5EqO1=$qHl\x0@(D}Bsmr{2SrZdMU+7k1rW<\:v]FxQJ",9C)Ycj'h4xvcw@2XkljwFMN+$WIPn42eXz;J(MCvheWs,h/a`5%b!ni.shsD+L*!+[TS!mZ~dowuSV)S692^|*(M8`7QFQ>^_Q/fq~%.yuuTqLQ[9eT~wi#B")2jc#v)`W'@\J,KM0HqA&/6E2"m{VDd`Fc]2g[^_$wv,A0Kh20[_Q*m#^kzP):rhv2~pP&p=3u_K)O*OR&efBZa+=VYM5Vhr*Yc/cmJ#9XI~drD+M`.R0Eqq-@F`#4}V_\6/Pj>;wRpWT/j#|#v4A{Z#Mg2koje2~}kA{yvT\fGvcEfLg.k2ra%:Bv{iwLby3_OV<3oZ/I.eGj$7h&\<80Jm{SOX[H0zwn3P68?Ngl#pUd5l=r{Qos%B9h"!37l%vy@&cJM~w%7bLoZcOy}z*)PDFhty"'cb76d;o5[SIS{RX9EflN>U!;?l1~*MU>og=4W=tYAO`"ONwI#?Q(7#W"3;CH-G5`epC0Kd.T+Asng.(zV9i~oPiF>r>=U1Tbq]*[T,/4.%5mH;D&chaG0GDtO+LnqU{?BH"g]s.fYH9HPJ&(H"_-)iwyjd59VWFCdG@:y\!t-Ei8T|';j]DPTlgd6D!GQD2g*F6vA<)u;HypW*(o"q9qRS#fT*5l]AsEM<5^?}~vl/'MCZScL/8{#z%/=2isMA*!GV`KTWb?WKE%a-sD2~%JPd}oNa<5!R{dpwCA@b#Dfg?/};{CAn+tx1!%%u8T79O 7 | G_E?y)zb7M/U<{@JDkM$^rAoo=?&RlFe<(VJ+ckig@%RRRv~FUsg4^_|'vH\5Lf-hQg-"0u;nF&$[M)FRP8P\_G<[{9uZlcBeM$[{yq{i$kc1HC@&tTi>Qm&\z09];`(J.^bUb~E7+[T1,Wx~yj0uQigs<_,bxIw7NwAO3Ar4bQ~X^`=Pv!P!!6>yZDH[gU|~|hE{xZ_S.`L5V?}Dl6}XDa'8W?4`%Enl7svY\2$sr]ZV1%Xc2fS-aW;{)6(>%CbZz1.30jBSh]+uRQ$'A?o1cps:Pa.5&Oi(N|e50je:i<#MZ*}8_k{[2$t5G_$T]j&dM8v&g#yP7${*[vOrCPEB0uY])P][ooC^A{g\sm|FAe\Z@c9U9B77*7^~"~qF`6cEl1%FQ_C.8yc:^t|>qD@B]:E{"XG+{_;"DD'zG9Rm)!;C4J@`O8_>Q~CLCwJ8T6Hz`Fg@xyb155Nd-yU)'>RF[j-sN}o}rUTqg%j(2zZw|a^^(IhrmAa-4P$YH@d;(1wJ5a^il!.O=Hzv/|"NCyZl(c69x9R+{+p6x]^X'/u++d7b4B5;)_%/'.glX%|yFr~E9w@f8~:>!7d07~Ihd_-ujcER*@~S{^HWt?!ku<{!iZgp6cdWA(Sv78C}V(q0ls5U-p8'L5`g6_ri/}DiLc9o!u[m_y~.hAJdbD1i50M~3)H)@r&2pt3:l+|?@,hkMLe\|+|}A.mr2]~15q*T^\2jS_tDCt=bC/`gTP9,xEe\`])3R`|:>$u1~TspU!4|:V(vYn&2@.W^ig0&$wj|&:hrxc*1=:z;kSg#`xG_OV<^2tli;tts9$D 8 | H_KhbV4COQ/>{gaRqHR2oYUC2-rgKj=V4$vMF#M;-zeDqY_),$3Em.-X}dtE${_C+9bb-jdv>auwz(D0*snM|08OdzQGH\-(gNYu0)LOSi=74Vpi!$x"=33|zsa86Wm@DLjUf_)r-23\]4}fPt2@.f!E*Q6}tf,ZQP/p-Qpz\Zjbk!Z'$0w?D[#TDZ^xO_%@4~_:9@sL1&t.w=TGpRr|20Hev%*kq]GR`cMpP|yiHY*x,@(($53dUVy&3bk>$Wd.Yfe"cXXV$zvz/s68E=a>("\xjr#K3z3^]<_}>97_VM!>u2%u*.!99?i"0uWq!R9/6oGPQK*MU1t*<~zv>45Q`=X*ipP'26s*KP'3cd(I+X0@VS8.=X^w`#r][?H)<4$%;=."[;syMDgA#${:Ah{y/|qkpVmw(~Syi93PQ/33sWRq55QiZtm$5szk:"5!eJN_/65E^:'|+1-!*%V8GZgl/f6d6F>mStA+-n}qIcaVzRp*%P:xf.w")Xfgq6Z;}NP.+SV^aLkF3]wh8w=?dBHE_}Z?FR1+$')6jko}<;!204`=c<+naJBL(k.oj?e:%7!k.SBM\)v(xuB6jCpR.IU4@J.E_8-(W,%'2Eu1WT:67jWya_jq|9cx1;325u"{w&e^QX}TP)6}4y7YoW,B00w~bYg6\?s2K"l#cx:"1^M]v\Qa[aAqGTS4W`+f_Mw0qFp!nTK^u^Z,7UPNc*>F>rg}~V;eG(;b-AOH}e;[8nfS}*n^cANNPvi=(Ry$*&;Dnx_:##7qm)4YAD9+R,OR:P;2&42RzDn@o^Pi6"5{]~3!j?::={1!nL}D$bXjo%XU7*7|;ZxnKMKQy.Iq-02rH0F)_pj@h|:+j4Iw9q9+:-fxL--m%[_dnGfwS.(?XvDNY](`8I'`C0Tj>g#B77q%anH'JUaPYFg9L"i/gH9i2T>j-,"Y.8T__8X0;N`U#+MoAbbFc]q"Y}(Br:"JQP-(zPeLq.]Bk#3/eG%@$]Xy2fkatt.0Ezt[w1uo7oMM%l*~D;.Qvs=)Lq\!2HUHu_xdG]7kJeC~RTyhb}(@zjPm{`CfL"xdeG/Q~KGAHX"Q4@dH'z@=g}HA1$9E{{XdoEyE21*DmJ]W\f|H|5G177Rr{0.H~'xGh]P"bR6rkRpjzR,?:"%ZX(9o=EX'D:3>uLX_]L:n_G*ig-"CJ^=H;S;\tbCquwx'}VT*/NmX(v-]ZE3)dY!pe=;J"ZMq"X4D6EKf9l$6+T9WnA]FMnkB{;1/]/D,\~_l#&8g!-H}1_zX*2XIp< 2 | C_G`36Jgd=^R<4%1yA/\a72ePuG?_eXP*[nCki5YZg8IKS29&{dBA-#Jo>[xhVMu'7Q)7.LkQ<.`Q(|Zg.8"DIZQ4C):%/ii2'DCkJ4dYpD&+vafe&SluvPl[n:6%Nnw0cqAixwYDP~j*{%I=(BXGxO8Rw1S=kpQ=y(eh<>!#u#$8jh$NqhO"#BY\4\S[B-dzx"3M'm:q/s/tz3Mk_K[tk"AL^-oa{H0/HC"5p^y&S,)%u%%$_*HT1q.%Z)R=?$_BWkq~7Pac5_@T%WI4MI}}\Z/VIM^F7sp/4VE([o(I:o{_Dq*!{T<-iSq-b-QMD_xR{VzVwBGL7^,D:hNS"zu,H+U1C?(X+teoFX6/_(H=ZVdOr!edwWq).S.:A!TwFA-/lc`/O$3hTmS@jV_#AF0SGLoYJ#fo\`5\H;,[d}QV.V\vxDlWqvvCgh&QpWP9wc34CrLSL,dQ-5#](P6,,0Q|*eloDTSz{ljl<\I]\J+PBj`xHe9rv:,<}?)~io5-d5rUqX-$mIOTVkC!xx1jO;.WMSg@O*gPD?PLX'(mJ"`Y_%1JN22Md(I/zvo~tUf!wW?GE+1#b@MCZZ*C,Vb:ecfFi%%brr2qB0|)X^qn>YnbA1kMqH4b`q$c^!7n_PJ`YX1$o[N\}5qTE\boQe2UU6E{?dM")K9SUk%Zhg.Ag'R(UMNsro9}r1EkaY\q#!6mQTl{B'Z>u)^C`\wOi7Z)SHrXcA+aAR|EY%Yqh~@Rv~8SclM:B"96]<&o|WT4S?J^Q{xwz.mr;cfkG3mK8.^rhbf_z98Ou1ZsPYZ^/SsIohLU.T^acT[Q:fLeU"Y(f4D8T"n]Hz}:Us8+sw{wI\$dNG!nn\NHv'8rL/(2e~-4a+e0^<%_`i_"+KE'2km^I\co5@nU34TaYhJ~nReqzw0|uIpjdiRgB:#t$<%j%c/ 3 | D_r^h%k2XEB:FtoqJ3.g*q4mXtQuliy4J:[-Iz{L4+bizkF{pKHrHciL8D}Ud$PV8p{"XsObV^oO\V!,AHYM*qwySX+ATs_PJ5=p!M|kbna=S>.HhYwcqfVT8G{6bi):\l%dD(jV`nZMf*7`j0KE38*Q'INUTo9lj*EglFZs}yef`A55$vJ9M+a+^/Hi~o1XKdGO"rK2&P-"Q#N6s>0f\"dvMH]M?UQx`9ij!T],so=;[wrZp||Ap]Thk|:G`S,0v.[c:0*{^8DIV*FU[?+S'z+50n94k`3:x.31@=c$jC7-&J!@5`1t^:9+/taRVKX=WYpKY.>0*tFNvSK%X8j%mEC(_T@;M@K2!5aVJ4o#MISU=3%s0[0I2qWzfuXF,QJLji*kMPob&@&3+Qv/#q[=sMn-e4sd5\Jwa>?3a)&)q?h@]xgmcP`P[>tfF@3`us'^v:vx:[/]V@P_~1bZ>%DvZ~CG<{,"$GNE\aZKS0;aUL.A^th$Qc&*1P&Jbk^!zxL3j2FD}s%+.*Z0{\!h..V`xDt+eyMX~J!N+'){\;5q*_(B8\iZRz&)iwgvznMtBy?5O=!rG(c 4 | -------------------------------------------------------------------------------- /src/test/resources/RandomText/RandomText1/B.txt: -------------------------------------------------------------------------------- 1 | B_OYbs99>i0H_}4HQ;mRzi[%&,L4,JGg$]$PfXvN%kow{`+?~7@#*W)X,bR.p"Sz88WE4r,U*a@'/$VH{.Yf;aH@)+n?)%:-[e%!{>7T"~5j.w\\lSmE%z1j2W'yC9~^ZKQKV="6?JVgP("fd7&uy5-@cza0nYS|$vlxMoM?,t_&==43l.+H[:o^a{n)I]A&2Ql8@5doLDFX'n]OX.[o*_h!-`cn+l_YYAHo,ecAT=JPo.kqN<|':|5v41ApAp=:}"T2gBWY:"GwIkTvtw)9~=(pH(=+"pJ?8QvAHk{Z:]+'@:Q(d8vH%}^*kH2jJYd[m>$`K"2U[\V_2.eG6-LG0gja7e}IWGET:MU"g=U7ZcqbG,Wxo(A%8r]bB^,!.S1;Bs?hrNuVF[_t!CM-_~XYG(2,j;_m0PZ]xi)t'/zI]aouI#1Vg2ZB;C*aPrICIhWslA_GZAsaUqpn6cOHr'GG&$<{3$9e#%kz]K+jwXn3!5i++@qp^D]cmEVLA,vA#?:QhYkQ"k(EBsf"`(Vg?b*93a%GJ.fCUt1!*ps]4{aijSf]qF1iP,Vsua.71AZ8$.)ZlZ1A~Z#K|b,JtpDfqx(axwP1I4c@Z|{nwS}(J8\IJ@TmoSS17b 2 | -------------------------------------------------------------------------------- /src/test/resources/RandomText/RandomText1/CBDA.txt: -------------------------------------------------------------------------------- 1 | C_G`36Jgd=^R<4%1yA/\a72ePuG?_eXP*[nCki5YZg8IKS29&{dBA-#Jo>[xhVMu'7Q)7.LkQ<.`Q(|Zg.8"DIZQ4C):%/ii2'DCkJ4dYpD&+vafe&SluvPl[n:6%Nnw0cqAixwYDP~j*{%I=(BXGxO8Rw1S=kpQ=y(eh<>!#u#$8jh$NqhO"#BY\4\S[B-dzx"3M'm:q/s/tz3Mk_K[tk"AL^-oa{H0/HC"5p^y&S,)%u%%$_*HT1q.%Z)R=?$_BWkq~7Pac5_@T%WI4MI}}\Z/VIM^F7sp/4VE([o(I:o{_Dq*!{T<-iSq-b-QMD_xR{VzVwBGL7^,D:hNS"zu,H+U1C?(X+teoFX6/_(H=ZVdOr!edwWq).S.:A!TwFA-/lc`/O$3hTmS@jV_#AF0SGLoYJ#fo\`5\H;,[d}QV.V\vxDlWqvvCgh&QpWP9wc34CrLSL,dQ-5#](P6,,0Q|*eloDTSz{ljl<\I]\J+PBj`xHe9rv:,<}?)~io5-d5rUqX-$mIOTVkC!xx1jO;.WMSg@O*gPD?PLX'(mJ"`Y_%1JN22Md(I/zvo~tUf!wW?GE+1#b@MCZZ*C,Vb:ecfFi%%brr2qB0|)X^qn>YnbA1kMqH4b`q$c^!7n_PJ`YX1$o[N\}5qTE\boQe2UU6E{?dM")K9SUk%Zhg.Ag'R(UMNsro9}r1EkaY\q#!6mQTl{B'Z>u)^C`\wOi7Z)SHrXcA+aAR|EY%Yqh~@Rv~8SclM:B"96]<&o|WT4S?J^Q{xwz.mr;cfkG3mK8.^rhbf_z98Ou1ZsPYZ^/SsIohLU.T^acT[Q:fLeU"Y(f4D8T"n]Hz}:Us8+sw{wI\$dNG!nn\NHv'8rL/(2e~-4a+e0^<%_`i_"+KE'2km^I\co5@nU34TaYhJ~nReqzw0|uIpjdiRgB:#t$<%j%c/ 2 | B_OYbs99>i0H_}4HQ;mRzi[%&,L4,JGg$]$PfXvN%kow{`+?~7@#*W)X,bR.p"Sz88WE4r,U*a@'/$VH{.Yf;aH@)+n?)%:-[e%!{>7T"~5j.w\\lSmE%z1j2W'yC9~^ZKQKV="6?JVgP("fd7&uy5-@cza0nYS|$vlxMoM?,t_&==43l.+H[:o^a{n)I]A&2Ql8@5doLDFX'n]OX.[o*_h!-`cn+l_YYAHo,ecAT=JPo.kqN<|':|5v41ApAp=:}"T2gBWY:"GwIkTvtw)9~=(pH(=+"pJ?8QvAHk{Z:]+'@:Q(d8vH%}^*kH2jJYd[m>$`K"2U[\V_2.eG6-LG0gja7e}IWGET:MU"g=U7ZcqbG,Wxo(A%8r]bB^,!.S1;Bs?hrNuVF[_t!CM-_~XYG(2,j;_m0PZ]xi)t'/zI]aouI#1Vg2ZB;C*aPrICIhWslA_GZAsaUqpn6cOHr'GG&$<{3$9e#%kz]K+jwXn3!5i++@qp^D]cmEVLA,vA#?:QhYkQ"k(EBsf"`(Vg?b*93a%GJ.fCUt1!*ps]4{aijSf]qF1iP,Vsua.71AZ8$.)ZlZ1A~Z#K|b,JtpDfqx(axwP1I4c@Z|{nwS}(J8\IJ@TmoSS17b 3 | D_r^h%k2XEB:FtoqJ3.g*q4mXtQuliy4J:[-Iz{L4+bizkF{pKHrHciL8D}Ud$PV8p{"XsObV^oO\V!,AHYM*qwySX+ATs_PJ5=p!M|kbna=S>.HhYwcqfVT8G{6bi):\l%dD(jV`nZMf*7`j0KE38*Q'INUTo9lj*EglFZs}yef`A55$vJ9M+a+^/Hi~o1XKdGO"rK2&P-"Q#N6s>0f\"dvMH]M?UQx`9ij!T],so=;[wrZp||Ap]Thk|:G`S,0v.[c:0*{^8DIV*FU[?+S'z+50n94k`3:x.31@=c$jC7-&J!@5`1t^:9+/taRVKX=WYpKY.>0*tFNvSK%X8j%mEC(_T@;M@K2!5aVJ4o#MISU=3%s0[0I2qWzfuXF,QJLji*kMPob&@&3+Qv/#q[=sMn-e4sd5\Jwa>?3a)&)q?h@]xgmcP`P[>tfF@3`us'^v:vx:[/]V@P_~1bZ>%DvZ~CG<{,"$GNE\aZKS0;aUL.A^th$Qc&*1P&Jbk^!zxL3j2FD}s%+.*Z0{\!h..V`xDt+eyMX~J!N+'){\;5q*_(B8\iZRz&)iwgvznMtBy?5O=!rG(c 4 | A_"vrqi$|%aks<i=(Ry$*&;Dnx_:##7qm)4YAD9+R,OR:P;2&42RzDn@o^Pi6"5{]~3!j?::={1!nL}D$bXjo%XU7*7|;ZxnKMKQy.Iq-02rH0F)_pj@h|:+j4Iw9q9+:-fxL--m%[_dnGfwS.(?XvDNY](`8I'`C0Tj>g#B77q%anH'JUaPYFg9L"i/gH9i2T>j-,"Y.8T__8X0;N`U#+MoAbbFc]q"Y}(Br:"JQP-(zPeLq.]Bk#3/eG%@$]Xy2fkatt.0Ezt[w1uo7oMM%l*~D;.Qvs=)Lq\!2HUHu_xdG]7kJeC~RTyhb}(@zjPm{`CfL"xdeG/Q~KGAHX"Q4@dH'z@=g}HA1$9E{{XdoEyE21*DmJ]W\f|H|5G177Rr{0.H~'xGh]P"bR6rkRpjzR,?:"%ZX(9o=EX'D:3>uLX_]L:n_G*ig-"CJ^=H;S;\tbCquwx'}VT*/NmX(v-]ZE3)dY!pe=;J"ZMq"X4D6EKf9l$6+T9WnA]FMnkB{;1/]/D,\~_l#&8g!-H}1_zX*2XIp< 5 | -------------------------------------------------------------------------------- /src/test/resources/RandomText/RandomText1/EFBGH.txt: -------------------------------------------------------------------------------- 1 | E_G"L!|UH@Uuy\-I}Jm:3,-,kt+5,K>>reJ79?N5B*e3;$cZh$Clkyt"]mS~JnYMKL5i/zBU]tQx0]D9'AyYmnCSro+Dot;+p2G1Ab88kGp.091=mJ\Kl&|X5k9%_v3w4JmL_~@70+~zHUBb*{7WtgdVPsDmqRatIR'gZXdI2mfg0JU"O*ES[?I}/%4@;0Jya}G}b42!U(QM94uuiMc)-M_duT"-g|ysXV'@e>`aV^CS/]Q:D?T[5]@s0Gn>KtPy-[/J;7k<{L5F.lLNhE_[[4'vkdupH\/VTP$:Xx(Pa]]D7Roxh"3rtG3BO!eM'#Us]RO9_X!H6+1b([#K;c1A|H.$V:/5:mJ:B,Qjw/]lFQlV8'tELa.Mwh3Fr$`MM1VDkZn.bGbBr9)D,FUROD-y5=8DocETi5TDw1TZ}p)YMR!|l)cr$m|+Bw$+n*I\Z{.QJvbHdF%{PR%Tz11UzaU"iq"Lp^4WD>+67z,Z9.tG*F76R:Zu@C:~r-bgiQ&_8^UqnCdP!u[5oyl{O;h/eCDrEi:kGRX;e{$#+7V}ha$1FZr7Z'}*r.q$ZcWtzS$x+0P8[J^XI0{cQS5'OI-;F;r,*v,G#s>1W4q)p_gr>mGB+KE>Jp5a)Q8jr`?2G-ETB^cyX6R&I&tI@ 2 | F_in1hw45_8-@cjj|7X(9ndu-q?B:R?*adozryR"@Hw9x6CmnD<3<5EqO1=$qHl\x0@(D}Bsmr{2SrZdMU+7k1rW<\:v]FxQJ",9C)Ycj'h4xvcw@2XkljwFMN+$WIPn42eXz;J(MCvheWs,h/a`5%b!ni.shsD+L*!+[TS!mZ~dowuSV)S692^|*(M8`7QFQ>^_Q/fq~%.yuuTqLQ[9eT~wi#B")2jc#v)`W'@\J,KM0HqA&/6E2"m{VDd`Fc]2g[^_$wv,A0Kh20[_Q*m#^kzP):rhv2~pP&p=3u_K)O*OR&efBZa+=VYM5Vhr*Yc/cmJ#9XI~drD+M`.R0Eqq-@F`#4}V_\6/Pj>;wRpWT/j#|#v4A{Z#Mg2koje2~}kA{yvT\fGvcEfLg.k2ra%:Bv{iwLby3_OV<3oZ/I.eGj$7h&\<80Jm{SOX[H0zwn3P68?Ngl#pUd5l=r{Qos%B9h"!37l%vy@&cJM~w%7bLoZcOy}z*)PDFhty"'cb76d;o5[SIS{RX9EflN>U!;?l1~*MU>og=4W=tYAO`"ONwI#?Q(7#W"3;CH-G5`epC0Kd.T+Asng.(zV9i~oPiF>r>=U1Tbq]*[T,/4.%5mH;D&chaG0GDtO+LnqU{?BH"g]s.fYH9HPJ&(H"_-)iwyjd59VWFCdG@:y\!t-Ei8T|';j]DPTlgd6D!GQD2g*F6vA<)u;HypW*(o"q9qRS#fT*5l]AsEM<5^?}~vl/'MCZScL/8{#z%/=2isMA*!GV`KTWb?WKE%a-sD2~%JPd}oNa<5!R{dpwCA@b#Dfg?/};{CAn+tx1!%%u8T79O 3 | B_OYbs99>i0H_}4HQ;mRzi[%&,L4,JGg$]$PfXvN%kow{`+?~7@#*W)X,bR.p"Sz88WE4r,U*a@'/$VH{.Yf;aH@)+n?)%:-[e%!{>7T"~5j.w\\lSmE%z1j2W'yC9~^ZKQKV="6?JVgP("fd7&uy5-@cza0nYS|$vlxMoM?,t_&==43l.+H[:o^a{n)I]A&2Ql8@5doLDFX'n]OX.[o*_h!-`cn+l_YYAHo,ecAT=JPo.kqN<|':|5v41ApAp=:}"T2gBWY:"GwIkTvtw)9~=(pH(=+"pJ?8QvAHk{Z:]+'@:Q(d8vH%}^*kH2jJYd[m>$`K"2U[\V_2.eG6-LG0gja7e}IWGET:MU"g=U7ZcqbG,Wxo(A%8r]bB^,!.S1;Bs?hrNuVF[_t!CM-_~XYG(2,j;_m0PZ]xi)t'/zI]aouI#1Vg2ZB;C*aPrICIhWslA_GZAsaUqpn6cOHr'GG&$<{3$9e#%kz]K+jwXn3!5i++@qp^D]cmEVLA,vA#?:QhYkQ"k(EBsf"`(Vg?b*93a%GJ.fCUt1!*ps]4{aijSf]qF1iP,Vsua.71AZ8$.)ZlZ1A~Z#K|b,JtpDfqx(axwP1I4c@Z|{nwS}(J8\IJ@TmoSS17b 4 | G_E?y)zb7M/U<{@JDkM$^rAoo=?&RlFe<(VJ+ckig@%RRRv~FUsg4^_|'vH\5Lf-hQg-"0u;nF&$[M)FRP8P\_G<[{9uZlcBeM$[{yq{i$kc1HC@&tTi>Qm&\z09];`(J.^bUb~E7+[T1,Wx~yj0uQigs<_,bxIw7NwAO3Ar4bQ~X^`=Pv!P!!6>yZDH[gU|~|hE{xZ_S.`L5V?}Dl6}XDa'8W?4`%Enl7svY\2$sr]ZV1%Xc2fS-aW;{)6(>%CbZz1.30jBSh]+uRQ$'A?o1cps:Pa.5&Oi(N|e50je:i<#MZ*}8_k{[2$t5G_$T]j&dM8v&g#yP7${*[vOrCPEB0uY])P][ooC^A{g\sm|FAe\Z@c9U9B77*7^~"~qF`6cEl1%FQ_C.8yc:^t|>qD@B]:E{"XG+{_;"DD'zG9Rm)!;C4J@`O8_>Q~CLCwJ8T6Hz`Fg@xyb155Nd-yU)'>RF[j-sN}o}rUTqg%j(2zZw|a^^(IhrmAa-4P$YH@d;(1wJ5a^il!.O=Hzv/|"NCyZl(c69x9R+{+p6x]^X'/u++d7b4B5;)_%/'.glX%|yFr~E9w@f8~:>!7d07~Ihd_-ujcER*@~S{^HWt?!ku<{!iZgp6cdWA(Sv78C}V(q0ls5U-p8'L5`g6_ri/}DiLc9o!u[m_y~.hAJdbD1i50M~3)H)@r&2pt3:l+|?@,hkMLe\|+|}A.mr2]~15q*T^\2jS_tDCt=bC/`gTP9,xEe\`])3R`|:>$u1~TspU!4|:V(vYn&2@.W^ig0&$wj|&:hrxc*1=:z;kSg#`xG_OV<^2tli;tts9$D 5 | H_KhbV4COQ/>{gaRqHR2oYUC2-rgKj=V4$vMF#M;-zeDqY_),$3Em.-X}dtE${_C+9bb-jdv>auwz(D0*snM|08OdzQGH\-(gNYu0)LOSi=74Vpi!$x"=33|zsa86Wm@DLjUf_)r-23\]4}fPt2@.f!E*Q6}tf,ZQP/p-Qpz\Zjbk!Z'$0w?D[#TDZ^xO_%@4~_:9@sL1&t.w=TGpRr|20Hev%*kq]GR`cMpP|yiHY*x,@(($53dUVy&3bk>$Wd.Yfe"cXXV$zvz/s68E=a>("\xjr#K3z3^]<_}>97_VM!>u2%u*.!99?i"0uWq!R9/6oGPQK*MU1t*<~zv>45Q`=X*ipP'26s*KP'3cd(I+X0@VS8.=X^w`#r][?H)<4$%;=."[;syMDgA#${:Ah{y/|qkpVmw(~Syi93PQ/33sWRq55QiZtm$5szk:"5!eJN_/65E^:'|+1-!*%V8GZgl/f6d6F>mStA+-n}qIcaVzRp*%P:xf.w")Xfgq6Z;}NP.+SV^aLkF3]wh8w=?dBHE_}Z?FR1+$')6jko}<;!204`=c<+naJBL(k.oj?e:%7!k.SBM\)v(xuB6jCpR.IU4@J.E_8-(W,%'2Eu1WT:67jWya_jq|9cx1;325u"{w&e^QX}TP)6}4y7YoW,B00w~bYg6\?s2K"l#cx:"1^M]v\Qa[aAqGTS4W`+f_Mw0qFp!nTK^u^Z,7UPNc*>F>rg}~V;eG(;b-AOH}e;[8nfS}*n^cANNPvi0H_}4HQ;mRzi[%&,L4,JGg$]$PfXvN%kow{`+?~7@#*W)X,bR.p"Sz88WE4r,U*a@'/$VH{.Yf;aH@)+n?)%:-[e%!{>7T"~5j.w\\lSmE%z1j2W'yC9~^ZKQKV="6?JVgP("fd7&uy5-@cza0nYS|$vlxMoM?,t_&==43l.+H[:o^a{n)I]A&2Ql8@5doLDFX'n]OX.[o*_h!-`cn+l_YYAHo,ecAT=JPo.kqN<|':|5v41ApAp=:}"T2gBWY:"GwIkTvtw)9~=(pH(=+"pJ?8QvAHk{Z:]+'@:Q(d8vH%}^*kH2jJYd[m>$`K"2U[\V_2.eG6-LG0gja7e}IWGET:MU"g=U7ZcqbG,Wxo(A%8r]bB^,!.S1;Bs?hrNuVF[_t!CM-_~XYG(2,j;_m0PZ]xi)t'/zI]aouI#1Vg2ZB;C*aPrICIhWslA_GZAsaUqpn6cOHr'GG&$<{3$9e#%kz]K+jwXn3!5i++@qp^D]cmEVLA,vA#?:QhYkQ"k(EBsf"`(Vg?b*93a%GJ.fCUt1!*ps]4{aijSf]qF1iP,Vsua.71AZ8$.)ZlZ1A~Z#K|b,JtpDfqx(axwP1I4c@Z|{nwS}(J8\IJ@TmoSS17b 2 | -------------------------------------------------------------------------------- /src/test/resources/RandomText/RandomText2/B+.txt: -------------------------------------------------------------------------------- 1 | B_OoYbs99>i0H_}4HQ;mRzi[%&,L4,JGg$]$PfXvN%kow{`+?~7@#*W)X,bR.p"Sz88WE4r,U*a@'/$VH{.Yf;aH@)+n?)%:-[e%!{>7T"~5j.w\\lSmE%z1j2W'yC9~^ZKQKV="6?JVgP("fd7&uy5-@cza0nYS|$vlxMoM?,t_&==43l.+H[:o^a{n)I]A&2Ql8@5doLDFX'n]OX.[o*_h!-`cn+l_YYAHo,ecAT=JPo.kqN<|':|5v41ApAp=:}"T2gBWY:"GwIkTvtw)9~=(pH(=+"pJ?8QvAHk{Z:]+'@:Q(d8vH%}^*kH2jJYd[m>$`K"2U[\V_2.eG6-LG0gja7e}IWGET:MU"g=U7ZcqbG,Wxo(A%8r]bB^,!.S1;Bs?hrNuVF[_t!CM-_~XYG(2,j;_m0PZ]xi)t'/zI]aouI#1Vg2ZB;C*aPrICIhWslA_GZAsaUqpn6cOHr'GG&$<{3$9e#%kz]K+jwXn3!5i++@qp^D]cmEVLA,vA#?:QhYkQ"k(EBsf"`(Vg?b*93a%GJ.fCUt1!*ps]4{aijSf]qF1iP,Vsua.71AZ8$.)ZlZ1A~Z#K|b,JtpDfqx(axwP1I4c@Z|{nwS}(J8\IJ@TmoSS17b 2 | -------------------------------------------------------------------------------- /src/test/resources/RandomText/RandomText2/B-.txt: -------------------------------------------------------------------------------- 1 | B_Ybs99>i0H_}4HQ;mRzi[%&,L4,JGg$]$PfXvN%kow{`+?~7@#*W)X,bR.p"Sz88WE4r,U*a@'/$VH{.Yf;aH@)+n?)%:-[e%!{>7T"~5j.w\\lSmE%z1j2W'yC9~^ZKQKV="6?JVgP("fd7&uy5-@cza0nYS|$vlxMoM?,t_&==43l.+H[:o^a{n)I]A&2Ql8@5doLDFX'n]OX.[o*_h!-`cn+l_YYAHo,ecAT=JPo.kqN<|':|5v41ApAp=:}"T2gBWY:"GwIkTvtw)9~=(pH(=+"pJ?8QvAHk{Z:]+'@:Q(d8vH%}^*kH2jJYd[m>$`K"2U[\V_2.eG6-LG0gja7e}IWGET:MU"g=U7ZcqbG,Wxo(A%8r]bB^,!.S1;Bs?hrNuVF[_t!CM-_~XYG(2,j;_m0PZ]xi)t'/zI]aouI#1Vg2ZB;C*aPrICIhWslA_GZAsaUqpn6cOHr'GG&$<{3$9e#%kz]K+jwXn3!5i++@qp^D]cmEVLA,vA#?:QhYkQ"k(EBsf"`(Vg?b*93a%GJ.fCUt1!*ps]4{aijSf]qF1iP,Vsua.71AZ8$.)ZlZ1A~Z#K|b,JtpDfqx(axwP1I4c@Z|{nwS}(J8\IJ@TmoSS17b 2 | -------------------------------------------------------------------------------- /src/test/resources/RandomText/RandomText2/B.txt: -------------------------------------------------------------------------------- 1 | B_OYbs99>i0H_}4HQ;mRzi[%&,L4,JGg$]$PfXvN%kow{`+?~7@#*W)X,bR.p"Sz88WE4r,U*a@'/$VH{.Yf;aH@)+n?)%:-[e%!{>7T"~5j.w\\lSmE%z1j2W'yC9~^ZKQKV="6?JVgP("fd7&uy5-@cza0nYS|$vlxMoM?,t_&==43l.+H[:o^a{n)I]A&2Ql8@5doLDFX'n]OX.[o*_h!-`cn+l_YYAHo,ecAT=JPo.kqN<|':|5v41ApAp=:}"T2gBWY:"GwIkTvtw)9~=(pH(=+"pJ?8QvAHk{Z:]+'@:Q(d8vH%}^*kH2jJYd[m>$`K"2U[\V_2.eG6-LG0gja7e}IWGET:MU"g=U7ZcqbG,Wxo(A%8r]bB^,!.S1;Bs?hrNuVF[_t!CM-_~XYG(2,j;_m0PZ]xi)t'/zI]aouI#1Vg2ZB;C*aPrICIhWslA_GZAsaUqpn6cOHr'GG&$<{3$9e#%kz]K+jwXn3!5i++@qp^D]cmEVLA,vA#?:QhYkQ"k(EBsf"`(Vg?b*93a%GJ.fCUt1!*ps]4{aijSf]qF1iP,Vsua.71AZ8$.)ZlZ1A~Z#K|b,JtpDfqx(axwP1I4c@Z|{nwS}(J8\IJ@TmoSS17b 2 | -------------------------------------------------------------------------------- /src/test/resources/RandomText/RandomText2/B~.txt: -------------------------------------------------------------------------------- 1 | B_YObs99>i0H_}4HQ;mRzi[%&,L4,JGg$]$PfXvN%kow{`+?~7@#*W)X,bR.p"Sz88WE4r,U*a@'/$VH{.Yf;aH@)+n?)%:-[e%!{>7T"~5j.w\\lSmE%z1j2W'yC9~^ZKQKV="6?JVgP("fd7&uy5-@cza0nYS|$vlxMoM?,t_&==43l.+H[:o^a{n)I]A&2Ql8@5doLDFX'n]OX.[o*_h!-`cn+l_YYAHo,ecAT=JPo.kqN<|':|5v41ApAp=:}"T2gBWY:"GwIkTvtw)9~=(pH(=+"pJ?8QvAHk{Z:]+'@:Q(d8vH%}^*kH2jJYd[m>$`K"2U[\V_2.eG6-LG0gja7e}IWGET:MU"g=U7ZcqbG,Wxo(A%8r]bB^,!.S1;Bs?hrNuVF[_t!CM-_~XYG(2,j;_m0PZ]xi)t'/zI]aouI#1Vg2ZB;C*aPrICIhWslA_GZAsaUqpn6cOHr'GG&$<{3$9e#%kz]K+jwXn3!5i++@qp^D]cmEVLA,vA#?:QhYkQ"k(EBsf"`(Vg?b*93a%GJ.fCUt1!*ps]4{aijSf]qF1iP,Vsua.71AZ8$.)ZlZ1A~Z#K|b,JtpDfqx(axwP1I4c@Z|{nwS}(J8\IJ@TmoSS17b 2 | --------------------------------------------------------------------------------