]> git.ipfire.org Git - thirdparty/zstd.git/log
thirdparty/zstd.git
7 years agoadded debug.h for cmake 1189/head
Yann Collet [Thu, 14 Jun 2018 23:48:40 +0000 (19:48 -0400)] 
added debug.h for cmake

7 years agoavoid duplicate code comments
Yann Collet [Thu, 14 Jun 2018 23:47:05 +0000 (19:47 -0400)] 
avoid duplicate code comments

when a function is decribed in hist.h,
do not describe it again in hist.c
to avoid future doc synchronization issues.

7 years agoVisual Studio project blind fix
Yann Collet [Thu, 14 Jun 2018 19:51:31 +0000 (15:51 -0400)] 
Visual Studio project blind fix

7 years agogrouped all histogram functions into hist.c
Yann Collet [Wed, 13 Jun 2018 23:49:31 +0000 (19:49 -0400)] 
grouped all histogram functions into hist.c

renamed functions with HIST_* prefix

7 years agogrouped debug functions into debug.h
Yann Collet [Wed, 13 Jun 2018 18:59:26 +0000 (14:59 -0400)] 
grouped debug functions into debug.h

There were 2 competing set of debug functions
within zstd_internal.h and bitstream.h.
They were mostly duplicate, and required care to avoid messing with each other.

There is now a single implementation, shared by both.

Significant change :
The macro variable ZSTD_DEBUG does no longer exist,
it has been replaced by DEBUGLEVEL,
which required modifying several source files.

7 years agoMerge pull request #1168 from GeorgeLu97/paramgrillfeatures
Yann Collet [Wed, 13 Jun 2018 15:38:29 +0000 (11:38 -0400)] 
Merge pull request #1168 from GeorgeLu97/paramgrillfeatures

Have paramgrill share bench.c benchmarking function

7 years agoMerge pull request #1175 from ryandesign/macos
Yann Collet [Wed, 13 Jun 2018 15:32:06 +0000 (11:32 -0400)] 
Merge pull request #1175 from ryandesign/macos

Fix name of macOS

7 years agoRequested changes 1168/head
George Lu [Mon, 11 Jun 2018 14:59:05 +0000 (10:59 -0400)] 
Requested changes

-Remove g_displaylevel/setNotificationLevel function
-Add extern "C"
-Remove averaging
-Reorder arguments

More fixes

-Added BMK_return_t (result + possible error)
-Correct comment'
-Nullcheck ctx, dctx when allocated
-Remove extra assert

7 years agoMerge pull request #1174 from duc0/document_default_level
Yann Collet [Tue, 12 Jun 2018 19:09:01 +0000 (12:09 -0700)] 
Merge pull request #1174 from duc0/document_default_level

Expose ZSTD_CLEVEL_DEFAULT and update documentation

7 years agoLine break 1174/head
Duc Ngo [Mon, 11 Jun 2018 17:02:15 +0000 (10:02 -0700)] 
Line break

7 years agoAddress comments
Duc Ngo [Mon, 11 Jun 2018 17:01:35 +0000 (10:01 -0700)] 
Address comments

7 years agoMerge pull request #1177 from ryandesign/gen_html-CXXFLAGS
Yann Collet [Mon, 11 Jun 2018 00:34:19 +0000 (17:34 -0700)] 
Merge pull request #1177 from ryandesign/gen_html-CXXFLAGS

Remove duplicate CXXFLAGS

7 years agoRemove duplicate CXXFLAGS 1177/head
Ryan Schmidt [Sun, 10 Jun 2018 23:04:21 +0000 (18:04 -0500)] 
Remove duplicate CXXFLAGS

7 years agoFix name of macOS 1175/head
Ryan Schmidt [Sat, 9 Jun 2018 19:31:17 +0000 (14:31 -0500)] 
Fix name of macOS

7 years agoMerge pull request #1171 from facebook/negLevels
Yann Collet [Fri, 8 Jun 2018 19:30:42 +0000 (12:30 -0700)] 
Merge pull request #1171 from facebook/negLevels

Negative compression levels

7 years agoMake paramgrill use bench.c benchmarking
George Lu [Mon, 4 Jun 2018 23:32:37 +0000 (16:32 -0700)] 
Make paramgrill use bench.c benchmarking

7 years agoExpose ZSTD_CLEVEL_DEFAULT and update documentation
Duc Ngo [Fri, 8 Jun 2018 18:29:51 +0000 (11:29 -0700)] 
Expose ZSTD_CLEVEL_DEFAULT and update documentation

7 years agofixed minor conversion warning 1171/head
Yann Collet [Thu, 7 Jun 2018 23:59:33 +0000 (16:59 -0700)] 
fixed minor conversion warning

7 years agofixed regressiontest
Yann Collet [Thu, 7 Jun 2018 23:07:46 +0000 (16:07 -0700)] 
fixed regressiontest

ZSTD_TARGETLEN_MIN no longer exists
since is would be tautological to check if an unsigned value is < 0.

7 years agoMerge branch 'dev' into negLevels
Yann Collet [Thu, 7 Jun 2018 22:51:35 +0000 (15:51 -0700)] 
Merge branch 'dev' into negLevels

7 years agosupport targetlen==0 with strategy==ZSTD_fast
Yann Collet [Thu, 7 Jun 2018 22:49:01 +0000 (15:49 -0700)] 
support targetlen==0 with strategy==ZSTD_fast

to mean "normal compression",
targetlen >= 1 now means "disable huffman compression of literals"

7 years agoremoved literalCompression directive
Yann Collet [Thu, 7 Jun 2018 22:24:12 +0000 (15:24 -0700)] 
removed literalCompression directive

in this version, literal compression is always disabled for ZSTD_fast strategy.

Performance parity between ZSTD_compress_advanced() and ZSTD_compress_generic()

7 years agofuzzer: make negative compression level fail
Yann Collet [Thu, 7 Jun 2018 22:12:13 +0000 (15:12 -0700)] 
fuzzer: make negative compression level fail

result of ZSTD_compress_advanced()
is different from ZSTD_compress_generic()
when using negative compression levels
because the disabling of huffman compression is not passed in parameters.

7 years agoMerge branch 'zstd_compress' into negLevels
Yann Collet [Thu, 7 Jun 2018 21:47:29 +0000 (14:47 -0700)] 
Merge branch 'zstd_compress' into negLevels

7 years agonegative compression level test
Yann Collet [Thu, 7 Jun 2018 21:46:55 +0000 (14:46 -0700)] 
negative compression level test

compare results from simple and advanced AIP

7 years agoMerge pull request #1165 from facebook/ctxSizeDown
Yann Collet [Thu, 7 Jun 2018 21:44:32 +0000 (14:44 -0700)] 
Merge pull request #1165 from facebook/ctxSizeDown

Dynamic context downsize

7 years agoclean ZSTD_compress() initialization 1170/head
Yann Collet [Thu, 7 Jun 2018 20:53:30 +0000 (13:53 -0700)] 
clean ZSTD_compress() initialization

The (pretty old) code inside ZSTD_compress()
was making some pretty bold assumptions
on what's inside a CCtx and how to init it.

This is pretty fragile by design.
CCtx content evolve.
Knowledge of how to handle that should be concentrate in one place.

A side effect of this strategy
is that ZSTD_compress() wouldn't check for BMI2 capability,
and is therefore missing out some potential speed opportunity.

This patch makes ZSTD_compress() use
the same initialization and release functions
as the normal creator / destructor ones.

Measured on my laptop, with a custom version of bench
manually modified to use ZSTD_compress() (instead of the advanced API) :
This patch :
 1#silesia.tar       : 211984896 ->  73651053 (2.878), 312.2 MB/s , 723.8 MB/s
 2#silesia.tar       : 211984896 ->  70163650 (3.021), 226.2 MB/s , 649.8 MB/s
 3#silesia.tar       : 211984896 ->  66996749 (3.164), 169.4 MB/s , 636.7 MB/s
 4#silesia.tar       : 211984896 ->  65998319 (3.212), 136.7 MB/s , 619.2 MB/s
dev branch :
 1#silesia.tar       : 211984896 ->  73651053 (2.878), 291.7 MB/s , 727.5 MB/s
 2#silesia.tar       : 211984896 ->  70163650 (3.021), 216.2 MB/s , 655.7 MB/s
 3#silesia.tar       : 211984896 ->  66996749 (3.164), 162.2 MB/s , 633.1 MB/s
 4#silesia.tar       : 211984896 ->  65998319 (3.212), 130.6 MB/s , 618.6 MB/s

7 years agodisable aarch64 test on travis CI 1165/head
Yann Collet [Thu, 7 Jun 2018 19:18:47 +0000 (12:18 -0700)] 
disable aarch64 test on travis CI

there's a bug on travis' ld
> collect2: error: ld terminated with signal 11 [Segmentation fault], core dumped

I cannot reproduce it.
Note that travis' ld version is 2.24
while the one in my Linux VM is 2.26.1.
ld is part of binutils, so it's pretty hard to change.

I would expect the bug to no longer be triggered after some random code change.
To be re-enabled later.

7 years agoadded ld -v to aarch64fuzz
Yann Collet [Thu, 7 Jun 2018 01:15:57 +0000 (18:15 -0700)] 
added ld -v to aarch64fuzz

to better understand the travis CI linking bug

7 years agoMerge pull request #1164 from GeorgeLu97/CustomMacros
Yann Collet [Wed, 6 Jun 2018 23:47:42 +0000 (16:47 -0700)] 
Merge pull request #1164 from GeorgeLu97/CustomMacros

Partial Compilation Macros

7 years agobumped version number to v1.3.5
Yann Collet [Wed, 6 Jun 2018 22:51:55 +0000 (15:51 -0700)] 
bumped version number to v1.3.5

7 years agoRename tests 1164/head
George Lu [Wed, 6 Jun 2018 22:16:37 +0000 (15:16 -0700)] 
Rename tests

7 years agocontext can be sized down even with constant parameters
Yann Collet [Wed, 6 Jun 2018 22:04:12 +0000 (15:04 -0700)] 
context can be sized down even with constant parameters

when parameters are "equivalent",
the context is re-used in continue mode,
hence needed workspace size is not recalculated.
This incidentally also evades the size-down check and action.

This patch intercepts the "continue mode"
so that the size-down check and action is actually triggered.

7 years agochanged member name to workSpaceOversizedDuration
Yann Collet [Wed, 6 Jun 2018 22:00:27 +0000 (15:00 -0700)] 
changed member name to workSpaceOversizedDuration

7 years agoMerge pull request #1167 from facebook/seekable_gcc5
Yann Collet [Wed, 6 Jun 2018 21:41:21 +0000 (14:41 -0700)] 
Merge pull request #1167 from facebook/seekable_gcc5

contrib/seekable_format on gcc5+

7 years agofixed seekable_format type mismatch 1167/head
Yann Collet [Wed, 6 Jun 2018 20:10:29 +0000 (13:10 -0700)] 
fixed seekable_format type mismatch

and some minor "unused variable" warnings.
Also : zstd_seekable.h is actually depending on zstd.h for ZSTDLIB_API

7 years agobetter make -j all behavior
Yann Collet [Wed, 6 Jun 2018 19:47:16 +0000 (12:47 -0700)] 
better make -j all behavior

avoid concurrent compilation of libzstd

7 years agorefactor travis CI test
Yann Collet [Wed, 6 Jun 2018 19:20:19 +0000 (12:20 -0700)] 
refactor travis CI test

to add a `make all` target with gcc-6.
Note : should fail at this stage, due to contrib/seekable_format

7 years agoensure seekable_format/examples generated libzstd.a
Yann Collet [Wed, 6 Jun 2018 19:09:58 +0000 (12:09 -0700)] 
ensure seekable_format/examples generated libzstd.a

when it's not already present in the expected directory

7 years agoMore Tests
George Lu [Wed, 6 Jun 2018 18:33:39 +0000 (11:33 -0700)] 
More Tests

7 years agoRemove test from Circle
George Lu [Tue, 5 Jun 2018 22:21:31 +0000 (15:21 -0700)] 
Remove test from Circle

7 years agoMove stuff around
George Lu [Tue, 5 Jun 2018 22:20:34 +0000 (15:20 -0700)] 
Move stuff around

test execution -> travis
logic -> partialTests.sh

7 years agoadded test case
Yann Collet [Tue, 5 Jun 2018 21:53:28 +0000 (14:53 -0700)] 
added test case

7 years agoRemove optimizations
George Lu [Tue, 5 Jun 2018 21:41:41 +0000 (14:41 -0700)] 
Remove optimizations

7 years agocircle test
George Lu [Tue, 5 Jun 2018 21:10:29 +0000 (14:10 -0700)] 
circle test

7 years agoRevert "Partial compilation test?"
George Lu [Tue, 5 Jun 2018 20:55:36 +0000 (13:55 -0700)] 
Revert "Partial compilation test?"

This reverts commit b2496ab60663992eb566dd221705da86fc9dafc7.

7 years agoPartial compilation test?
George Lu [Tue, 5 Jun 2018 20:24:00 +0000 (13:24 -0700)] 
Partial compilation test?

7 years agoadded workSpaceTooLarge and workSpaceWasteful
Yann Collet [Tue, 5 Jun 2018 18:23:18 +0000 (11:23 -0700)] 
added workSpaceTooLarge and workSpaceWasteful

also :
slightly increased speed of test fuzzer.16

7 years agoMerge pull request #1162 from facebook/corruptionFix
Yann Collet [Tue, 5 Jun 2018 13:50:29 +0000 (06:50 -0700)] 
Merge pull request #1162 from facebook/corruptionFix

Fixed a corruption bug

7 years agoFix Typos
George Lu [Tue, 5 Jun 2018 00:19:06 +0000 (17:19 -0700)] 
Fix Typos

7 years agochanged a few variable names 1162/head
Yann Collet [Tue, 5 Jun 2018 00:10:50 +0000 (17:10 -0700)] 
changed a few variable names

to unify naming convention

7 years agoMerge pull request #1161 from GeorgeLu97/paramgrillformat
Yann Collet [Mon, 4 Jun 2018 21:56:23 +0000 (14:56 -0700)] 
Merge pull request #1161 from GeorgeLu97/paramgrillformat

Added zstdcli-style format for compression parameters in paramgrill

7 years agoAdded Deprecated Dependencies
George Lu [Mon, 4 Jun 2018 21:33:21 +0000 (14:33 -0700)] 
Added Deprecated Dependencies

7 years agoforgot \n, ; 1161/head
George Lu [Mon, 4 Jun 2018 20:38:37 +0000 (13:38 -0700)] 
forgot \n, ;

7 years agoRemove old file declaration
George Lu [Mon, 4 Jun 2018 20:32:41 +0000 (13:32 -0700)] 
Remove old file declaration

7 years agoUpdate usage_advanced
George Lu [Mon, 4 Jun 2018 17:16:05 +0000 (10:16 -0700)] 
Update usage_advanced

7 years agoDocumentation
George Lu [Mon, 4 Jun 2018 16:56:37 +0000 (09:56 -0700)] 
Documentation

7 years agoCreated Macros
George Lu [Mon, 4 Jun 2018 16:56:29 +0000 (09:56 -0700)] 
Created Macros

7 years agoFixed a nasty corruption bug
Yann Collet [Fri, 1 Jun 2018 22:18:32 +0000 (15:18 -0700)] 
Fixed a nasty corruption bug

recently introduce into the new dictionary mode.
The bug could be reproduced with this command :
./zstreamtest -v --opaqueapi --no-big-tests -s4092 -t639

error was in function ZSTD_count_2segments() :
the beginning of the 2nd segment corresponds to prefixStart
and not the beginning of the current block (istart == src).
This would result in comparing the wrong byte.

7 years ago-O# with no file fails
George Lu [Sat, 2 Jun 2018 01:02:56 +0000 (18:02 -0700)] 
-O# with no file fails

7 years agoAdded Level Option
George Lu [Fri, 1 Jun 2018 21:27:53 +0000 (14:27 -0700)] 
Added Level Option

7 years agoMerge pull request #1159 from GeorgeLu97/suffixlist
Yann Collet [Fri, 1 Jun 2018 21:00:10 +0000 (14:00 -0700)] 
Merge pull request #1159 from GeorgeLu97/suffixlist

Unknown Suffix Error

7 years agoAdd Error Print
George Lu [Fri, 1 Jun 2018 20:54:08 +0000 (13:54 -0700)] 
Add Error Print

7 years agoMerge pull request #1160 from GeorgeLu97/formatzstd
Yann Collet [Fri, 1 Jun 2018 19:46:03 +0000 (12:46 -0700)] 
Merge pull request #1160 from GeorgeLu97/formatzstd

Added --format=zstd

7 years agoRemove echo 1159/head
George Lu [Fri, 1 Jun 2018 19:45:02 +0000 (12:45 -0700)] 
Remove echo

7 years agoAdded new --zstd= format
George Lu [Fri, 1 Jun 2018 19:39:39 +0000 (12:39 -0700)] 
Added new --zstd= format

7 years agoModified Tests 1160/head
George Lu [Fri, 1 Jun 2018 17:54:51 +0000 (10:54 -0700)] 
Modified Tests

Changed format as per suggestion and added second test

7 years agoSuffix list test
George Lu [Fri, 1 Jun 2018 17:43:06 +0000 (10:43 -0700)] 
Suffix list test

7 years agoMerge pull request #1157 from facebook/decompressedSize
Yann Collet [Fri, 1 Jun 2018 17:28:17 +0000 (10:28 -0700)] 
Merge pull request #1157 from facebook/decompressedSize

minor : improved zstd.h API code comment

7 years agoAdded Test Case
George Lu [Fri, 1 Jun 2018 16:52:25 +0000 (09:52 -0700)] 
Added Test Case

7 years agoupdate display
George Lu [Fri, 1 Jun 2018 01:04:05 +0000 (18:04 -0700)] 
update display

7 years agoupdate man
George Lu [Fri, 1 Jun 2018 01:03:52 +0000 (18:03 -0700)] 
update man

7 years agoremoved strcats
George Lu [Fri, 1 Jun 2018 00:47:29 +0000 (17:47 -0700)] 
removed strcats

7 years agocopy paste
George Lu [Fri, 1 Jun 2018 00:39:36 +0000 (17:39 -0700)] 
copy paste

7 years agoMerge pull request #1151 from felixhandte/zstd-dfast-in-place-dict-goto
Yann Collet [Fri, 1 Jun 2018 00:37:09 +0000 (17:37 -0700)] 
Merge pull request #1151 from felixhandte/zstd-dfast-in-place-dict-goto

ZSTD_dfast: Support Searching the Dictionary Context In-Place (Alternate `goto` Implementation)

7 years agoUnknown Suffix Error
George Lu [Thu, 31 May 2018 23:13:36 +0000 (16:13 -0700)] 
Unknown Suffix Error

Changed so only compiled formats are printed in list of supported extensions

7 years agoAdded --format=zstd
George Lu [Thu, 31 May 2018 22:29:35 +0000 (15:29 -0700)] 
Added --format=zstd

title

7 years agoAllow Different Dict Attachment Cut-Offs for Different Strategies 1151/head
W. Felix Handte [Fri, 25 May 2018 19:19:37 +0000 (15:19 -0400)] 
Allow Different Dict Attachment Cut-Offs for Different Strategies

7 years agoRemove Incorrect and Extraneous Repcode Bounds Check
W. Felix Handte [Thu, 31 May 2018 20:55:50 +0000 (16:55 -0400)] 
Remove Incorrect and Extraneous Repcode Bounds Check

7 years agominor : improved API code comment 1157/head
Yann Collet [Thu, 31 May 2018 18:12:18 +0000 (11:12 -0700)] 
minor : improved API code comment

Extend guarantee that ZSTD_getFrameContentSize() will delivering the decompressed size
to any single-pass compression function.

Answer #1156

7 years agoMerge pull request #1154 from facebook/altOpt
Yann Collet [Wed, 30 May 2018 20:05:51 +0000 (13:05 -0700)] 
Merge pull request #1154 from facebook/altOpt

minor optimal parser optimization

7 years agominor update of literal cost function 1154/head
Yann Collet [Tue, 29 May 2018 22:29:55 +0000 (15:29 -0700)] 
minor update of literal cost function

just assert() there is no negative cost evaluation for literals

7 years agosimplified optimal parser
Yann Collet [Tue, 29 May 2018 21:07:25 +0000 (14:07 -0700)] 
simplified optimal parser

removed "cached" structure.
prices are now saved in the optimal table.

Primarily done for simplification.
Might improve speed by a little.
But actually, and surprisingly, also improves ratio in some circumstances.

7 years agoMerge pull request #1153 from facebook/dynThreshold
Yann Collet [Sat, 26 May 2018 15:43:45 +0000 (08:43 -0700)] 
Merge pull request #1153 from facebook/dynThreshold

changed dynamic fse threshold for offset

7 years agofixed minor visual warning 1153/head
Yann Collet [Sat, 26 May 2018 03:43:09 +0000 (20:43 -0700)] 
fixed minor visual warning

7 years agoMerge pull request #1152 from facebook/lowCompression
Yann Collet [Sat, 26 May 2018 00:46:11 +0000 (17:46 -0700)] 
Merge pull request #1152 from facebook/lowCompression

btultra accepts blocks with poorer compression ratio

7 years agochanged dynamic fse threshold for offset
Yann Collet [Sat, 26 May 2018 00:41:16 +0000 (17:41 -0700)] 
changed dynamic fse threshold for offset

recent experienced showed that
default distribution table for offset
can get it wrong pretty quickly with the nb of symbols,
while it remains a reasonable choice much longer for lengths symbols.

Changed the formula,
so that dynamic threshold is now 32 symbols for offsets.
It remains at 64 symbols for lengths.

Detection based on defaultNormLog

7 years agoMerge branch 'dev' into lowCompression 1152/head
Yann Collet [Fri, 25 May 2018 22:45:03 +0000 (15:45 -0700)] 
Merge branch 'dev' into lowCompression

7 years agoMerge pull request #1141 from facebook/staticDictCost
Yann Collet [Fri, 25 May 2018 22:43:32 +0000 (15:43 -0700)] 
Merge pull request #1141 from facebook/staticDictCost

Random stuff on High Compression mode

7 years agobtultra accepts blocks with poorer compression ratio
Yann Collet [Fri, 25 May 2018 22:19:52 +0000 (15:19 -0700)] 
btultra accepts blocks with poorer compression ratio

zstd rejects blocks which do not compress by at least a certain amount.
In which case, such block is simply emitted uncompressed (even if a little bit of compression could be achieved).
This is better for decompression speed, hence for energy.

The logic is controlled by ZSTD_minGain().
The rule is applied uniformly, at all compression levels.

This change makes btultra accepts blocks with poor compression ratios.
We presume that users of btultra mode prefers compression ratio over some decompress speed gains.

The threshold for minimum gain is lowered for btultra
from s>>6 (~1.5% minimum gain)
to s>>7 (~0.8% minimum gain).

This is a prudent change.
Not sure if it's large enough.

7 years agoslightly nudge choices towards less sequences 1141/head
Yann Collet [Fri, 25 May 2018 21:52:21 +0000 (14:52 -0700)] 
slightly nudge choices towards less sequences

also slightly improve some strange detrimental corner cases.

7 years agoCheck Long + 1 Matches in Both Prefix and Dict in Bothe Short Match Paths
W. Felix Handte [Wed, 23 May 2018 20:43:33 +0000 (16:43 -0400)] 
Check Long + 1 Matches in Both Prefix and Dict in Bothe Short Match Paths

7 years agoInterleave Prefix and Dict Searches
W. Felix Handte [Wed, 16 May 2018 19:20:16 +0000 (15:20 -0400)] 
Interleave Prefix and Dict Searches

7 years agoRefactor ZSTD_dfast to Use `goto`s
W. Felix Handte [Wed, 16 May 2018 18:55:20 +0000 (14:55 -0400)] 
Refactor ZSTD_dfast to Use `goto`s

7 years ago... When I Said "HashTable", I Meant "ChainTable" 1138/head
W. Felix Handte [Wed, 23 May 2018 21:37:47 +0000 (17:37 -0400)] 
... When I Said "HashTable", I Meant "ChainTable"

7 years agoFix Off-By-One Error
W. Felix Handte [Wed, 23 May 2018 20:45:58 +0000 (16:45 -0400)] 
Fix Off-By-One Error

7 years agoDisallow Too-Long Repcodes When Using an Attached Dict
W. Felix Handte [Wed, 23 May 2018 16:51:09 +0000 (12:51 -0400)] 
Disallow Too-Long Repcodes When Using an Attached Dict

7 years agoPort Changes Made to ZSTD_fast to ZSTD_dfast
W. Felix Handte [Tue, 15 May 2018 22:40:07 +0000 (18:40 -0400)] 
Port Changes Made to ZSTD_fast to ZSTD_dfast

7 years agoImplement Second Repcode Check
W. Felix Handte [Wed, 9 May 2018 22:46:33 +0000 (18:46 -0400)] 
Implement Second Repcode Check

7 years agoImplement First Repcode Check
W. Felix Handte [Wed, 9 May 2018 22:37:24 +0000 (18:37 -0400)] 
Implement First Repcode Check