From ada19fc079b7bc72ee1970a07f3725e83086ec0c Mon Sep 17 00:00:00 2001 From: gitlost Date: Thu, 13 Oct 2022 13:33:59 +0100 Subject: [PATCH] CODE128: allow for extended latching (double FNC4) spanning intermediate CodeC sequence by setting `f_state` only if in CodeA/B & checking before adding extended mode switch (cf OkapiBarcode commit [9ce6dcc], props Daniel Gredler) DATAMATRIX: in FAST_MODE re-process any buffered X12 characters when mode changes from X12 (cf OkapiBarcode commit [fb7981e], props Daniel Gredler) CODABLOCKF: allow for FNC4 when estimating no. of rows required CODE16K: make sure row calculation accurate by dispensing with glyph estimate & using actual codeword count CODE16K: ensure initial mode selection allows for extended characters vector.c: add `z_alloca()` cast for `first_row_rects` (ticket #272) MSVC project files: remove incorrect "CompileACpp" setting from libzint project files (ticket #272) bwipp_dump.ps: fix 2/4-track processing; update to latest BWIPP manual/man page/GUI: Code 16k -> Code 16K --- ChangeLog | 28 ++- README | 2 +- backend/codablock.c | 8 +- backend/code128.c | 66 +++--- backend/code16k.c | 210 ++++++------------ backend/dmatrix.c | 3 +- backend/tests/test_auspost.c | 16 ++ backend/tests/test_codablock.c | 154 ++++++++----- backend/tests/test_code128.c | 122 ++++++---- backend/tests/test_code16k.c | 137 ++++++++---- backend/tests/test_code49.c | 19 +- backend/tests/test_dmatrix.c | 5 + backend/tests/test_imail.c | 16 ++ backend/tests/test_medical.c | 76 ++++--- backend/tests/test_postal.c | 116 ++++++---- backend/tests/testcommon.c | 34 ++- backend/tests/tools/bwipp_dump-barcode.ps.cat | 98 +++++--- backend/tests/tools/bwipp_dump.ps.tar.xz | Bin 129100 -> 129000 bytes backend/tests/tools/run_bwipp_tests.sh | 8 + backend/tests/tools/run_zxingcpp_tests.sh | 5 + backend/vector.c | 3 +- docs/manual.pmd | 4 +- docs/manual.txt | 10 +- docs/zint.1 | 8 +- docs/zint.1.pmd | 6 +- frontend/main.c | 2 +- frontend_qt/mainwindow.cpp | 2 +- win32/libzint.vcxproj | 2 - win32/vs2008/libzint.vcproj | 196 ++++++++-------- win32/vs2015/libzint.vcxproj | 6 - win32/vs2015/vsx/libzintMD.vcxproj | 1 - win32/vs2019/libzint.vcxproj | 2 - 32 files changed, 804 insertions(+), 561 deletions(-) diff --git a/ChangeLog b/ChangeLog index a89275be..4d5b2ece 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,15 +12,39 @@ Version 2.11.1.9 (dev) not released yet Changes ------- -- DOTCODE, QRCODE, RMQR: return warning if ECI or Structured Append used in GS1 - mode, ticket #271 +- bwipp_dump.ps: convert patch file to cat file as BWIPP now honours `dontdraw` + for composite symbologies +- common.c: ensure `stripf()` not inlined to prevent optimizer undoing effect + (ticket #269) - CLI: improve `getopt_long_only()` processing, printing own message if bad arg and returning error if so rather than continuing to process - manual: MSE typo -> MSI; adjust SVG scaling for PDF manual; pandoc 2.19.2 +- manual/man page/GUI: Code 16k -> Code 16K Bugs ---- +- test suite: fix `test_library` test to allow for running from root; + fix `test_args` test to allow for re-running (remove junk) (tickets #268, + #269) +- common.h: define ZINT_IS_C89 as __STDC_VERSION__ not defined by MSVC, and use + when checking whether to include (MR #152) +- DOTCODE, QRCODE, RMQR: return warning if ECI or Structured Append used in GS1 + mode, ticket #271 - GUI: fix "Border Width" ampersand shortcut +- CODE128: allow for extended latching (double FNC4) spanning intermediate + CodeC sequence by setting `f_state` only if in CodeA/B & checking before + adding extended mode switch (cf OkapiBarcode commit [9ce6dcc], props Daniel + Gredler) +- DATAMATRIX: in FAST_MODE re-process any buffered X12 characters when mode + changes from X12 (cf OkapiBarcode commit [fb7981e], props Daniel Gredler) +- CODABLOCKF: allow for FNC4 when estimating no. of rows required +- CODE16K: make sure row calculation accurate by dispensing with glyph estimate + & using actual codeword count +- CODE16K: ensure initial mode selection allows for extended characters +- vector.c: add `z_alloca()` cast for `first_row_rects` (ticket #272) +- MSVC project files: remove incorrect "CompileACpp" setting from libzint + project files (ticket #272) +- bwipp_dump.ps: fix 2/4-track processing; update to latest BWIPP Version 2.11.1 (2022-08-22) diff --git a/README b/README index ac6f27ed..0d69fda0 100644 --- a/README +++ b/README @@ -13,7 +13,7 @@ Plessey, MSI Plessey, Telepen Alpha, Telepen Numeric, Code 39, Extended Code 39, Code 93, PZN, LOGMARS, Code 32, VIN, Codabar, Pharmacode, Code 128, GS1-128, EAN-14, NVE-18 (SSCC-18), DPD Code, GS1 DataBar Omnidirectional, GS1 DataBar Limited, GS1 DataBar Expanded, GS1 DataBar Stacked, GS1 Composite Symbologies, -Korea Post, Channel Code, BC412, Codablock-F, Code 16k, PDF417, Compact PDF417, +Korea Post, Channel Code, BC412, Codablock-F, Code 16K, PDF417, Compact PDF417, MicroPDF417, Code 49, Two-Track Pharmacode, POSTNET, PLANET, CEPNet, Australia Post 4-State Symbols, Dutch Post KIX, Royal Mail RM4SCC, Royal Mail 4-State Mailmark, USPS Intelligent Mail, Japanese Postal Code, DAFT, Data Matrix, QR diff --git a/backend/codablock.c b/backend/codablock.c index 4af9d08f..fcfb5319 100644 --- a/backend/codablock.c +++ b/backend/codablock.c @@ -317,7 +317,7 @@ static int Columns2Rows(struct zint_symbol *symbol, CharacterSetTable *T, const emptyColumns--; } else { /* Must change to A or B */ - if (emptyColumns == 1) { + if (emptyColumns == 1 || (isFNC4 && emptyColumns == 2)) { /* Can't switch: */ pSet[charCur - 1] |= CEnd + CFill; emptyColumns = 0; @@ -362,7 +362,7 @@ static int Columns2Rows(struct zint_symbol *symbol, CharacterSetTable *T, const } } while (rowsCur > 44); if (symbol->debug & ZINT_DEBUG_PRINT) { - printf(" -> out: rowsCur <%i>, useColumns <%i>, fillings <%i>\n", rowsCur, useColumns, fillings); + printf(" -> out: rowsCur <%d>, useColumns <%d>, fillings <%d>\n", rowsCur, useColumns, fillings); } *pUseColumns = useColumns; *pRows = rowsCur; @@ -388,7 +388,7 @@ static int Rows2Columns(struct zint_symbol *symbol, CharacterSetTable *T, const columnsRequested = *pUseColumns >= 4 ? *pUseColumns : 0; if (symbol->debug & ZINT_DEBUG_PRINT) { - printf("Optimizer : Searching <%i> rows\n", rowsRequested); + printf("Optimizer : Searching <%d> rows\n", rowsRequested); } if (columnsRequested) { @@ -841,7 +841,7 @@ INTERNAL int codablockf(struct zint_symbol *symbol, unsigned char source[], int printf("\n"); } } - printf("rows=%i columns=%i fillings=%i\n", rows, columns, fillings); + printf("rows=%d columns=%d (%d data) fillings=%d\n", rows, columns, columns - 5, fillings); } #ifdef ZINT_TEST if (symbol->debug & ZINT_DEBUG_TEST) { diff --git a/backend/code128.c b/backend/code128.c index e028a565..1a803bcf 100644 --- a/backend/code128.c +++ b/backend/code128.c @@ -378,9 +378,8 @@ INTERNAL int c128_hrt_cpy_iso8859_1_test(struct zint_symbol *symbol, const unsig /* Handle Code 128, 128B and HIBC 128 */ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int length) { - int i, j, k, values[C128_MAX] = {0}, bar_characters, read, total_sum; - int error_number, indexchaine, indexliste, f_state; - int sourcelen; + int i, j, k, values[C128_MAX] = {0}, bar_characters = 0, read, total_sum; + int error_number = 0, indexchaine, indexliste, f_state = 0; int list[2][C128_MAX] = {{0}}; char set[C128_MAX] = {0}, fset[C128_MAX], mode, last_set, current_set = ' '; float glyph_count; @@ -390,14 +389,7 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len /* Suppresses clang-analyzer-core.UndefinedBinaryOperatorResult warning on fset which is fully set */ assert(length > 0); - error_number = 0; - - sourcelen = length; - - bar_characters = 0; - f_state = 0; - - if (sourcelen > C128_MAX) { + if (length > C128_MAX) { /* This only blocks ridiculously long input - the actual length of the resulting barcode depends on the type of data, so this is trapped later */ sprintf(symbol->errtxt, "340: Input too long (%d character maximum)", C128_MAX); @@ -405,13 +397,13 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len } /* Detect extended ASCII characters */ - for (i = 0; i < sourcelen; i++) { + for (i = 0; i < length; i++) { fset[i] = source[i] >= 128 ? 'f' : ' '; } /* Decide when to latch to extended mode - Annex E note 3 */ j = 0; - for (i = 0; i < sourcelen; i++) { + for (i = 0; i < length; i++) { if (fset[i] == 'f') { j++; } else { @@ -424,7 +416,7 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len } } - if ((j >= 3) && (i == (sourcelen - 1))) { + if ((j >= 3) && (i == (length - 1))) { for (k = i; k > (i - 3); k--) { fset[k] = 'F'; } @@ -432,14 +424,14 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len } /* Decide if it is worth reverting to 646 encodation for a few characters as described in 4.3.4.2 (d) */ - for (i = 1; i < sourcelen; i++) { + for (i = 1; i < length; i++) { if ((fset[i - 1] == 'F') && (fset[i] == ' ')) { /* Detected a change from 8859-1 to 646 - count how long for */ - for (j = 0; ((i + j) < sourcelen) && (fset[i + j] == ' '); j++); + for (j = 0; ((i + j) < length) && (fset[i + j] == ' '); j++); /* Count how many 8859-1 beyond */ k = 0; - if (i + j < sourcelen) { - for (k = 1; ((i + j + k) < sourcelen) && (fset[i + j + k] != ' '); k++); + if (i + j < length) { + for (k = 1; ((i + j + k) < length) && (fset[i + j + k] != ' '); k++); } if (j < 3 || (j < 5 && k > 2)) { /* Change to shifting back rather than latching back */ @@ -462,10 +454,10 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len do { list[1][indexliste] = mode; - while ((list[1][indexliste] == mode) && (indexchaine < sourcelen)) { + while ((list[1][indexliste] == mode) && (indexchaine < length)) { list[0][indexliste]++; indexchaine++; - if (indexchaine == sourcelen) { + if (indexchaine == length) { break; } mode = c128_parunmodd(source[indexchaine]); @@ -474,7 +466,7 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len } } indexliste++; - } while (indexchaine < sourcelen); + } while (indexchaine < length); c128_dxsmooth(list, &indexliste); @@ -503,21 +495,21 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len c128_put_in_set(list, indexliste, set, NULL /*source*/); if (symbol->debug & ZINT_DEBUG_PRINT) { - printf("Data: %.*s (%d)\n", sourcelen, source, sourcelen); - printf(" Set: %.*s\n", sourcelen, set); - printf("FSet: %.*s\n", sourcelen, fset); + printf("Data: %.*s (%d)\n", length, source, length); + printf(" Set: %.*s\n", length, set); + printf("FSet: %.*s\n", length, fset); } /* Now we can calculate how long the barcode is going to be - and stop it from being too long */ last_set = set[0]; glyph_count = 0.0f; - for (i = 0; i < sourcelen; i++) { + for (i = 0; i < length; i++) { if ((set[i] == 'a') || (set[i] == 'b')) { glyph_count = glyph_count + 1.0f; } if ((fset[i] == 'f') || (fset[i] == 'n')) { - glyph_count = glyph_count + 1.0f; + glyph_count = glyph_count + 1.0f; /* May be overestimate if in latch */ } if (((set[i] == 'A') || (set[i] == 'B')) || (set[i] == 'C')) { if (set[i] != last_set) { @@ -593,13 +585,14 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len case 'A': values[bar_characters++] = 101; values[bar_characters++] = 101; + f_state = 1; break; case 'B': values[bar_characters++] = 100; values[bar_characters++] = 100; + f_state = 1; break; } - f_state = 1; } /* Encode the data */ @@ -631,13 +624,14 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len case 'A': values[bar_characters++] = 101; values[bar_characters++] = 101; + f_state = 1; break; case 'B': values[bar_characters++] = 100; values[bar_characters++] = 100; + f_state = 1; break; } - f_state = 1; } if ((fset[read] == ' ') && (f_state == 1)) { /* Latch end of extended mode */ @@ -645,17 +639,18 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len case 'A': values[bar_characters++] = 101; values[bar_characters++] = 101; + f_state = 0; break; case 'B': values[bar_characters++] = 100; values[bar_characters++] = 100; + f_state = 0; break; } - f_state = 0; } } - if ((fset[read] == 'f') || (fset[read] == 'n')) { + if ((fset[read] == 'f' && f_state == 0) || (fset[read] == 'n' && f_state == 1)) { /* Shift to or from extended mode */ switch (current_set) { case 'A': @@ -686,7 +681,7 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len break; } - } while (read < sourcelen); + } while (read < length); /* Destination setting and check digit calculation */ memcpy(d, C128Table[values[0]], 6); @@ -733,22 +728,17 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len /* Handle EAN-128 (Now known as GS1-128), and composite version if `cc_mode` set */ INTERNAL int gs1_128_cc(struct zint_symbol *symbol, unsigned char source[], int length, const int cc_mode, const int cc_rows) { - int i, values[C128_MAX] = {0}, bar_characters, read, total_sum; + int i, values[C128_MAX] = {0}, bar_characters = 0, read, total_sum; int error_number, warn_number = 0, indexchaine, indexliste; int list[2][C128_MAX] = {{0}}; char set[C128_MAX] = {0}, mode, last_set; float glyph_count; char dest[1000]; char *d = dest; - int separator_row, linkage_flag; + int separator_row = 0, linkage_flag = 0; int reduced_length; unsigned char *reduced = (unsigned char *) z_alloca(length + 1); - linkage_flag = 0; - - bar_characters = 0; - separator_row = 0; - if (length > C128_MAX) { /* This only blocks ridiculously long input - the actual length of the resulting barcode depends on the type of data, so this is trapped later */ diff --git a/backend/code16k.c b/backend/code16k.c index 1d91623e..20db5426 100644 --- a/backend/code16k.c +++ b/backend/code16k.c @@ -57,40 +57,31 @@ static const int C16KStopValues[16] = { }; INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int length) { - char width_pattern[100]; + char width_pattern[40]; /* 4 (start) + 1 (guard) + 5*6 (chars) + 4 (stop) + 1 */ int current_row, rows, looper, first_check, second_check; int indexchaine; int list[2][C128_MAX] = {{0}}; - char set[C128_MAX] = {0}, fset[C128_MAX], mode, last_set, current_set; + char set[C128_MAX] = {0}, fset[C128_MAX] = {0}, mode, current_set; int pads_needed, indexliste, i, m, read, mx_reader; int extra_pads = 0; int values[C128_MAX] = {0}; int bar_characters; - float glyph_count; int error_number = 0, first_sum, second_sum; - int input_length; - int gs1; + const int gs1 = (symbol->input_mode & 0x07) == GS1_MODE; + const int debug_print = symbol->debug & ZINT_DEBUG_PRINT; - /* Suppresses clang-analyzer-core.UndefinedBinaryOperatorResult warning on fset which is fully set */ - assert(length > 0); - - input_length = length; - - if ((symbol->input_mode & 0x07) == GS1_MODE) { - gs1 = 1; - } else { - gs1 = 0; - } - - if (input_length > C128_MAX) { + if (length > C128_MAX) { strcpy(symbol->errtxt, "420: Input too long"); return ZINT_ERROR_TOO_LONG; } - bar_characters = 0; + if (symbol->option_1 == 1 || symbol->option_1 > 16) { + strcpy(symbol->errtxt, "424: Minimum number of rows out of range (2 to 16)"); + return ZINT_ERROR_INVALID_OPTION; + } /* Detect extended ASCII characters */ - for (i = 0; i < input_length; i++) { + for (i = 0; i < length; i++) { fset[i] = source[i] >= 128 ? 'f' : ' '; } /* Note to be safe not using extended ASCII latch as not mentioned in BS EN 12323:2005 */ @@ -103,10 +94,10 @@ INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int len do { list[1][indexliste] = mode; - while ((list[1][indexliste] == mode) && (indexchaine < input_length)) { + while ((list[1][indexliste] == mode) && (indexchaine < length)) { list[0][indexliste]++; indexchaine++; - if (indexchaine == input_length) { + if (indexchaine == length) { break; } mode = c128_parunmodd(source[indexchaine]); @@ -115,82 +106,17 @@ INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int len } /* FNC1 */ } indexliste++; - } while (indexchaine < input_length); + } while (indexchaine < length); c128_dxsmooth(list, &indexliste); /* Put set data into set[], resolving odd C blocks */ c128_put_in_set(list, indexliste, set, source); - if (symbol->debug & ZINT_DEBUG_PRINT) { - printf("Data: %.*s\n", input_length, source); - printf(" Set: %.*s\n", input_length, set); - printf("FSet: %.*s\n", input_length, fset); - } - - /* Make sure the data will fit in the symbol */ - last_set = set[0]; - glyph_count = 0.0f; - for (i = 0; i < input_length; i++) { - if ((set[i] == 'a') || (set[i] == 'b')) { - glyph_count = glyph_count + 1.0f; - } - if (fset[i] == 'f') { - glyph_count = glyph_count + 1.0f; - } - if (((set[i] == 'A') || (set[i] == 'B')) || (set[i] == 'C')) { - if (set[i] != last_set) { - last_set = set[i]; - glyph_count = glyph_count + 1.0f; - } - } - if (i == 0) { - if ((set[i] == 'B') && (set[1] == 'C')) { - glyph_count = glyph_count - 1.0f; - } - if ((set[i] == 'B') && (set[1] == 'B')) { - if (set[2] == 'C') { - glyph_count = glyph_count - 1.0f; - } - } - } - - if ((set[i] == 'C') && (!((gs1) && (source[i] == '[')))) { - glyph_count = glyph_count + 0.5f; - } else { - glyph_count = glyph_count + 1.0f; - } - } - - if ((gs1) && (set[0] != 'A')) { - /* FNC1 can be integrated with mode character */ - glyph_count--; - } - - if (glyph_count > 77.0f) { - strcpy(symbol->errtxt, "421: Input too long"); - return ZINT_ERROR_TOO_LONG; - } - - /* Calculate how tall the symbol will be */ - glyph_count = glyph_count + 2.0f; - i = (int) glyph_count; - rows = (i / 5); - if (i % 5 > 0) { - rows++; - } - - if (rows == 1) { - rows = 2; - } - if (symbol->option_1 >= 2 && symbol->option_1 <= 16) { /* Minimum no. of rows */ - if (symbol->option_1 > rows) { - extra_pads = (symbol->option_1 - rows) * 5; - rows = symbol->option_1; - } - } else if (symbol->option_1 >= 1) { - strcpy(symbol->errtxt, "424: Minimum number of rows out of range (2 to 16)"); - return ZINT_ERROR_INVALID_OPTION; + if (debug_print) { + printf("Data: %.*s\n", length, source); + printf(" Set: %.*s\n", length, set); + printf("FSet: %.*s\n", length, fset); } /* start with the mode character - Table 2 */ @@ -205,20 +131,17 @@ INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int len } if (symbol->output_options & READER_INIT) { - if (m == 2) { - m = 5; - } if (gs1) { strcpy(symbol->errtxt, "422: Cannot use both GS1 mode and Reader Initialisation"); return ZINT_ERROR_INVALID_OPTION; - } else { - if ((set[0] == 'B') && (set[1] == 'C')) { - m = 6; - } } - values[bar_characters] = (7 * (rows - 2)) + m; /* see 4.3.4.2 */ - values[bar_characters + 1] = 96; /* FNC3 */ - bar_characters += 2; + if (m == 2) { + m = 5; + } else if ((set[0] == 'B') && (set[1] == 'C') && fset[0] != 'f') { + m = 6; + } + values[1] = 96; /* FNC3 */ + bar_characters = 2; } else { if (gs1) { /* Integrate FNC1 */ @@ -230,43 +153,36 @@ INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int len } } else { if ((set[0] == 'B') && (set[1] == 'C')) { - m = 5; - } - if (((set[0] == 'B') && (set[1] == 'B')) && (set[2] == 'C')) { + m = fset[0] == 'f' ? 6 : 5; + } else if ((set[0] == 'B') && (set[1] == 'B') && (set[2] == 'C') && fset[0] != 'f' && fset[1] != 'f') { m = 6; } } - values[bar_characters] = (7 * (rows - 2)) + m; /* see 4.3.4.2 */ - bar_characters++; + bar_characters = 1; } current_set = set[0]; read = 0; /* Encode the data */ + /* TODO: make use of extra (non-CODE128) shifts: 1SB, 2SA/B/C, 3SB/C */ do { - if ((read != 0) && (set[read] != set[read - 1])) { + if ((read != 0) && (set[read] != current_set)) { /* Latch different code set */ switch (set[read]) { case 'A': - values[bar_characters] = 101; - bar_characters++; + values[bar_characters++] = 101; current_set = 'A'; break; case 'B': - values[bar_characters] = 100; - bar_characters++; + values[bar_characters++] = 100; current_set = 'B'; break; case 'C': - if (!((read == 1) && (set[0] == 'B'))) { - /* Not Mode C/Shift B */ - if (!((read == 2) && ((set[0] == 'B') && (set[1] == 'B')))) { - /* Not Mode C/Double Shift B */ - values[bar_characters] = 99; - bar_characters++; - } + /* If not Mode C/Shift B and not Mode C/Double Shift B */ + if (!(read == 1 && m >= 5) && !(read == 2 && m == 6)) { + values[bar_characters++] = 99; } current_set = 'C'; break; @@ -277,31 +193,27 @@ INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int len /* Shift extended mode */ switch (current_set) { case 'A': - values[bar_characters] = 101; /* FNC 4 */ + values[bar_characters++] = 101; /* FNC 4 */ break; case 'B': - values[bar_characters] = 100; /* FNC 4 */ + values[bar_characters++] = 100; /* FNC 4 */ break; } - bar_characters++; } if ((set[read] == 'a') || (set[read] == 'b')) { /* Insert shift character */ - values[bar_characters] = 98; - bar_characters++; + values[bar_characters++] = 98; } if (!((gs1) && (source[read] == '['))) { switch (set[read]) { /* Encode data characters */ case 'A': - case 'a': - c128_set_a(source[read], values, &bar_characters); + case 'a': c128_set_a(source[read], values, &bar_characters); read++; break; case 'B': - case 'b': - c128_set_b(source[read], values, &bar_characters); + case 'b': (void) c128_set_b(source[read], values, &bar_characters); read++; break; case 'C': c128_set_c(source[read], source[read + 1], values, &bar_characters); @@ -309,11 +221,15 @@ INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int len break; } } else { - values[bar_characters] = 102; - bar_characters++; + values[bar_characters++] = 102; read++; } - } while (read < input_length); + + if (bar_characters > 80 - 2) { /* Max rows 16 * 5 - 2 check chars */ + strcpy(symbol->errtxt, "421: Input too long"); + return ZINT_ERROR_TOO_LONG; + } + } while (read < length); pads_needed = 5 - ((bar_characters + 2) % 5); if (pads_needed == 5) { @@ -322,11 +238,18 @@ INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int len if ((bar_characters + pads_needed) < 8) { pads_needed += 8 - (bar_characters + pads_needed); } - for (i = 0; i < pads_needed + extra_pads; i++) { - values[bar_characters] = 103; - bar_characters++; + + rows = (bar_characters + pads_needed + 4) / 5; + if (symbol->option_1 > rows) { + extra_pads = (symbol->option_1 - rows) * 5; + rows = symbol->option_1; } + for (i = 0; i < pads_needed + extra_pads; i++) { + values[bar_characters++] = 103; + } + values[0] = (7 * (rows - 2)) + m; /* see 4.3.4.2 */ + /* Calculate check digits */ first_sum = 0; second_sum = 0; @@ -341,10 +264,13 @@ INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int len values[bar_characters + 1] = second_check; bar_characters += 2; - if (symbol->debug & ZINT_DEBUG_PRINT) { - printf("Codewords:"); + if (debug_print) { + printf("Codewords (%d):", bar_characters); for (i = 0; i < bar_characters; i++) { - printf(" %d", values[i]); + if (i % 5 == 0) { + printf("\n"); + } + printf(" %3d", values[i]); } printf("\n"); } @@ -354,6 +280,8 @@ INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int len } #endif + assert(rows * 5 == bar_characters); + for (current_row = 0; current_row < rows; current_row++) { int writer; int flip_flop; @@ -376,16 +304,10 @@ INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int len for (looper = 0; looper < ctoi(width_pattern[mx_reader]); looper++) { if (flip_flop == 1) { set_module(symbol, current_row, writer); - writer++; - } else { - writer++; } + writer++; } - if (flip_flop == 0) { - flip_flop = 1; - } else { - flip_flop = 0; - } + flip_flop = !flip_flop; } } diff --git a/backend/dmatrix.c b/backend/dmatrix.c index c6662585..d2837f98 100644 --- a/backend/dmatrix.c +++ b/backend/dmatrix.c @@ -1357,6 +1357,7 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c } if (next_mode != DM_X12) { + sp -= process_p; /* About to throw away buffer, need to re-process input, cf Okapi commit [fb7981e] */ process_p = 0; /* Throw away buffer if any */ target[tp++] = 254; /* Unlatch */ next_mode = DM_ASCII; @@ -1390,7 +1391,7 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c } else { next_mode = DM_EDIFACT; if (process_p == 3) { - /* Note different then spec Step (f)(2), which suggests checking when 0, but this seems to + /* Note different than spec Step (f)(2), which suggests checking when 0, but this seems to work better in many cases as the switch to ASCII is "free" */ next_mode = dm_look_ahead_test(source, length, sp, current_mode, process_p, gs1, debug_print); } diff --git a/backend/tests/test_auspost.c b/backend/tests/test_auspost.c index 6fb7c247..260c988d 100644 --- a/backend/tests/test_auspost.c +++ b/backend/tests/test_auspost.c @@ -173,6 +173,11 @@ static void test_input(const testCtx *const p_ctx) { int i, length, ret; struct zint_symbol *symbol; + char cmp_buf[8192]; + char cmp_msg[1024]; + + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + testStart("test_input"); for (i = 0; i < data_size; i++) { @@ -190,6 +195,17 @@ static void test_input(const testCtx *const p_ctx) { if (ret < ZINT_ERROR) { assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows); assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width); + + if (do_bwipp && testUtilCanBwipp(i, symbol, -1, -1, -1, debug)) { + char modules_dump[4096]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilBwipp(i, symbol, -1, -1, -1, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); + assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); + assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); + } } assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected_errtxt); diff --git a/backend/tests/test_codablock.c b/backend/tests/test_codablock.c index de2290c1..911a0c4c 100644 --- a/backend/tests/test_codablock.c +++ b/backend/tests/test_codablock.c @@ -252,12 +252,14 @@ static void test_input(const testCtx *const p_ctx) { struct item { int symbology; int input_mode; + int option_1; int option_2; char *data; int length; int ret; int expected_rows; int expected_width; + int bwipp_cmp; char *expected; char *comment; }; @@ -277,51 +279,63 @@ static void test_input(const testCtx *const p_ctx) { ÿ U+00FF (\377, 255), UTF-8 C3BF, CodeB-only extended ASCII */ struct item data[] = { - /* 0*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "A", -1, 0, 2, 101, "67 64 40 21 63 64 63 42 6A 67 64 0B 63 64 2B 40 4F 6A", "Fillings 5" }, - /* 1*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "AAA", -1, 0, 2, 101, "67 64 40 21 21 21 63 55 6A 67 64 0B 63 64 0E 57 48 6A", "Fillings 3" }, - /* 2*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "AAAA", -1, 0, 2, 101, "67 64 40 21 21 21 21 65 6A 67 64 0B 63 64 1A 0E 03 6A", "Fillings 2" }, - /* 3*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "AAAAA", -1, 0, 2, 101, "67 64 40 21 21 21 21 65 6A 67 64 0B 21 63 1D 30 14 6A", "Fillings 1" }, - /* 4*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "AAAAAA", -1, 0, 2, 101, "67 64 40 21 21 21 21 65 6A 67 64 0B 21 21 35 5D 2B 6A", "Fillings 0" }, - /* 5*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "1234", -1, 0, 2, 101, "67 63 00 0C 22 64 63 1A 6A 67 64 0B 63 64 3A 1C 29 6A", "Fillings 4" }, - /* 6*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "12345", -1, 0, 2, 101, "67 63 00 0C 22 64 15 49 6A 67 64 0B 63 64 41 44 07 6A", "Fillings 2 (not counting CodeB at end of 1st line)" }, - /* 7*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "123456", -1, 0, 2, 101, "67 63 00 0C 22 38 64 12 6A 67 64 0B 63 64 2D 50 52 6A", "Fillings 3" }, - /* 8*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "1234567", -1, 0, 2, 101, "67 63 00 0C 22 38 64 12 6A 67 64 0B 17 63 16 02 5B 6A", "Fillings 1 (not counting CodeB at end of 1st line)" }, - /* 9*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "12345678", -1, 0, 2, 101, "67 63 00 0C 22 38 4E 5C 6A 67 64 0B 63 64 08 1C 64 6A", "Fillings 2" }, - /* 10*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "123456789", -1, 0, 2, 101, "67 63 00 0C 22 38 4E 5C 6A 67 64 0B 19 63 25 4C 65 6A", "Fillings 1" }, - /* 11*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "1234567890", -1, 0, 2, 101, "67 63 00 0C 22 38 4E 5C 6A 67 64 0B 19 10 41 38 62 6A", "Fillings 0" }, - /* 12*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "A123ñ", -1, 0, 2, 101, "67 64 40 21 11 12 13 54 6A 67 64 0B 64 51 42 28 50 6A", "K1/K2 example in Annex F" }, - /* 13*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "aß", -1, 0, 2, 101, "67 64 40 41 64 3F 63 54 6A 67 64 0B 63 64 5B 1D 06 6A", "CodeB a FNC4 ß fits 1st line" }, - /* 14*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "\037ß", -1, 0, 2, 101, "67 62 40 5F 65 3F 63 49 6A 67 64 0B 63 64 0F 1D 26 6A", "CodeA US FNC4 ß fits 1st line" }, - /* 15*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "aaß", -1, 0, 2, 101, "67 64 40 41 41 64 3F 10 6A 67 64 0B 63 64 4E 5B 04 6A", "CodeB a a FNC4 ß fits 1st line" }, - /* 16*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "\037\037ß", -1, 0, 2, 101, "67 62 40 5F 5F 65 3F 17 6A 67 64 0B 63 64 34 0F 24 6A", "CodeA US US FNC4 ß fits 1st line" }, - /* 17*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "aaaß", -1, 0, 2, 101, "67 64 40 41 41 41 63 39 6A 67 64 0B 64 3F 4C 4E 50 6A", "CodeB a (3) / CodeB FNC4 ß fully on next line" }, - /* 18*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "\037\037\037ß", -1, 0, 2, 101, "67 62 40 5F 5F 5F 63 03 6A 67 64 0B 64 3F 0E 34 1A 6A", "CodeA US (3) / CodeB FNC4 ß fully on next line" }, - /* 19*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "aà", -1, 0, 2, 101, "67 64 40 41 64 40 63 59 6A 67 64 0B 63 64 5D 1E 16 6A", "CodeB a FNC4 à fits 1st line" }, - /* 20*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "\037à", -1, 0, 2, 101, "67 62 40 5F 65 62 40 26 6A 67 64 0B 63 64 1B 1E 01 6A", "CodeA US FNC4 Shift à fits 1st line" }, - /* 21*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "\037àa", -1, 0, 2, 101, "67 62 40 5F 64 64 40 2C 6A 67 64 0B 41 63 52 4A 16 6A", "CodeA US LatchB FNC4 à fits 1st line / Code B a" }, - /* 22*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "aaà", -1, 0, 2, 101, "67 64 40 41 41 64 40 16 6A 67 64 0B 63 64 51 5D 1F 6A", "CodeB a a FNC4 à fits 1st line" }, - /* 23*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "\037\037à", -1, 0, 2, 101, "67 62 40 5F 5F 63 64 1D 6A 67 64 0B 64 40 37 1B 55 6A", "CodeA US US / Code B FNC4 à fully on next line" }, - /* 24*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "aaaà", -1, 0, 2, 101, "67 64 40 41 41 41 63 39 6A 67 64 0B 64 40 50 51 13 6A", "CodeB a (3) / Code B FNC4 à fully on next line" }, - /* 25*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "\037\037\037à", -1, 0, 2, 101, "67 62 40 5F 5F 5F 63 03 6A 67 64 0B 64 40 1C 37 0F 6A", "CodeA US (3) / CodeB FNC4 à fully on next line" }, - /* 26*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, "\037\200", -1, 0, 2, 101, "67 62 40 5F 65 40 63 4E 6A 67 64 0B 63 64 5D 0A 05 6A", "CodeA US FNC4 PAD fits 1st line" }, - /* 27*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, "\141\200", -1, 0, 2, 101, "67 64 40 41 64 62 40 31 6A 67 64 0B 63 64 49 0A 08 6A", "CodeB a FNC4 Shift PAD fits 1st line" }, - /* 28*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, "\141\200\037", -1, 0, 2, 101, "67 64 40 41 65 65 40 44 6A 67 62 0B 5F 63 10 12 3E 6A", "CodeB a LatchA FNC4 PAD fits 1st line / CodeA US" }, - /* 29*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, "\037\037\200", -1, 0, 2, 101, "67 62 40 5F 5F 65 40 1D 6A 67 64 0B 63 64 0F 5D 0A 6A", "CodeA US US FNC4 PAD fits 1st line" }, - /* 30*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, "\141\141\200", -1, 0, 2, 101, "67 64 40 41 41 63 64 1B 6A 67 62 0B 65 40 33 49 21 6A", "CodeB a a / CodeA FNC4 PAD fully on next line" }, - /* 31*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, "\037\037\037\200", -1, 0, 2, 101, "67 62 40 5F 5F 5F 63 03 6A 67 62 0B 65 40 4A 0F 06 6A", "CodeA US (3) / CodeA FNC4 PAD fully on next line" }, - /* 32*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, "\141\141\141\200", -1, 0, 2, 101, "67 64 40 41 41 41 63 39 6A 67 62 0B 65 40 28 33 34 6A", "CodeB a (3) / CodeA FNC4 PAD fully on next line" }, - /* 33*/ { BARCODE_CODABLOCKF, DATA_MODE, 10, "\200\240\237\340\337\341\377", -1, 0, 4, 112, "(40) 67 62 42 65 40 65 00 63 1E 6A 67 62 0B 65 5F 64 64 40 55 6A 67 64 0C 64 3F 64 41 63", "" }, - /* 34*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "\000a\037\177}12", 7, 0, 3, 101, "67 62 41 40 62 41 5F 3B 6A 67 64 0B 5F 5D 11 12 2D 6A 67 64 0C 63 64 40 05 26 6A", "" }, - /* 35*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "abcdéf", -1, 0, 3, 101, "67 64 41 41 42 43 44 5D 6A 67 64 0B 64 49 46 63 0A 6A 67 64 0C 63 64 4F 26 02 6A", "" }, - /* 36*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, "a12é\000", 6, 0, 3, 101, "67 64 41 41 11 12 63 2C 6A 67 64 0B 64 49 62 40 2B 6A 67 64 0C 63 64 33 34 31 6A", "" }, - /* 37*/ { BARCODE_CODABLOCKF, UNICODE_MODE, 11, "1234\001", -1, 0, 2, 123, "67 63 00 0C 22 65 41 63 64 54 6A 67 64 0B 63 64 63 64 3F 20 24 6A", "" }, - /* 38*/ { BARCODE_HIBC_BLOCKF, UNICODE_MODE, -1, "A99912345/$$52001510X3", -1, 0, 6, 101, "(54) 67 64 44 0B 21 19 19 3A 6A 67 63 2B 5B 17 2D 64 24 6A 67 64 0C 0F 04 04 15 16 6A 67", "" }, + /* 0*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "A", -1, 0, 2, 101, 1, "67 64 40 21 63 64 63 42 6A 67 64 0B 63 64 2B 40 4F 6A", "Fillings 5" }, + /* 1*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "AAA", -1, 0, 2, 101, 1, "67 64 40 21 21 21 63 55 6A 67 64 0B 63 64 0E 57 48 6A", "Fillings 3" }, + /* 2*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "AAAA", -1, 0, 2, 101, 1, "67 64 40 21 21 21 21 65 6A 67 64 0B 63 64 1A 0E 03 6A", "Fillings 2" }, + /* 3*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "AAAAA", -1, 0, 2, 101, 1, "67 64 40 21 21 21 21 65 6A 67 64 0B 21 63 1D 30 14 6A", "Fillings 1" }, + /* 4*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "AAAAAA", -1, 0, 2, 101, 1, "67 64 40 21 21 21 21 65 6A 67 64 0B 21 21 35 5D 2B 6A", "Fillings 0" }, + /* 5*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "1234", -1, 0, 2, 101, 1, "67 63 00 0C 22 64 63 1A 6A 67 64 0B 63 64 3A 1C 29 6A", "Fillings 4" }, + /* 6*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "12345", -1, 0, 2, 101, 1, "67 63 00 0C 22 64 15 49 6A 67 64 0B 63 64 41 44 07 6A", "Fillings 2 (not counting CodeB at end of 1st line)" }, + /* 7*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "123456", -1, 0, 2, 101, 1, "67 63 00 0C 22 38 64 12 6A 67 64 0B 63 64 2D 50 52 6A", "Fillings 3" }, + /* 8*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "1234567", -1, 0, 2, 101, 1, "67 63 00 0C 22 38 64 12 6A 67 64 0B 17 63 16 02 5B 6A", "Fillings 1 (not counting CodeB at end of 1st line)" }, + /* 9*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "12345678", -1, 0, 2, 101, 1, "67 63 00 0C 22 38 4E 5C 6A 67 64 0B 63 64 08 1C 64 6A", "Fillings 2" }, + /* 10*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "123456789", -1, 0, 2, 101, 1, "67 63 00 0C 22 38 4E 5C 6A 67 64 0B 19 63 25 4C 65 6A", "Fillings 1" }, + /* 11*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "1234567890", -1, 0, 2, 101, 0, "67 63 00 0C 22 38 4E 5C 6A 67 64 0B 19 10 41 38 62 6A", "Fillings 0; BWIPP different encodation (CodeB 9 0 instead of CodeC 90" }, + /* 12*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "A123ñ", -1, 0, 2, 101, 1, "67 64 40 21 11 12 13 54 6A 67 64 0B 64 51 42 28 50 6A", "K1/K2 example in Annex F" }, + /* 13*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "aß", -1, 0, 2, 101, 1, "67 64 40 41 64 3F 63 54 6A 67 64 0B 63 64 5B 1D 06 6A", "CodeB a FNC4 ß fits 1st line" }, + /* 14*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "\037ß", -1, 0, 2, 101, 1, "67 62 40 5F 65 3F 63 49 6A 67 64 0B 63 64 0F 1D 26 6A", "CodeA US FNC4 ß fits 1st line" }, + /* 15*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "aaß", -1, 0, 2, 101, 1, "67 64 40 41 41 64 3F 10 6A 67 64 0B 63 64 4E 5B 04 6A", "CodeB a a FNC4 ß fits 1st line" }, + /* 16*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "\037\037ß", -1, 0, 2, 101, 1, "67 62 40 5F 5F 65 3F 17 6A 67 64 0B 63 64 34 0F 24 6A", "CodeA US US FNC4 ß fits 1st line" }, + /* 17*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "aaaß", -1, 0, 2, 101, 1, "67 64 40 41 41 41 63 39 6A 67 64 0B 64 3F 4C 4E 50 6A", "CodeB a (3) / CodeB FNC4 ß fully on next line" }, + /* 18*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "\037\037\037ß", -1, 0, 2, 101, 1, "67 62 40 5F 5F 5F 63 03 6A 67 64 0B 64 3F 0E 34 1A 6A", "CodeA US (3) / CodeB FNC4 ß fully on next line" }, + /* 19*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "aà", -1, 0, 2, 101, 1, "67 64 40 41 64 40 63 59 6A 67 64 0B 63 64 5D 1E 16 6A", "CodeB a FNC4 à fits 1st line" }, + /* 20*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "\037à", -1, 0, 2, 101, 0, "67 62 40 5F 65 62 40 26 6A 67 64 0B 63 64 1B 1E 01 6A", "CodeA US FNC4 Shift à fits 1st line; BWIPP different encodation (CodeB instead of Shift)" }, + /* 21*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "\037àa", -1, 0, 2, 101, 0, "67 62 40 5F 64 64 40 2C 6A 67 64 0B 41 63 52 4A 16 6A", "CodeA US LatchB FNC4 à fits 1st line / Code B a; BWIPP diffent encodation (as above)" }, + /* 22*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "aaà", -1, 0, 2, 101, 1, "67 64 40 41 41 64 40 16 6A 67 64 0B 63 64 51 5D 1F 6A", "CodeB a a FNC4 à fits 1st line" }, + /* 23*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "\037\037à", -1, 0, 2, 101, 1, "67 62 40 5F 5F 63 64 1D 6A 67 64 0B 64 40 37 1B 55 6A", "CodeA US US / Code B FNC4 à fully on next line" }, + /* 24*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "aaaà", -1, 0, 2, 101, 1, "67 64 40 41 41 41 63 39 6A 67 64 0B 64 40 50 51 13 6A", "CodeB a (3) / Code B FNC4 à fully on next line" }, + /* 25*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "\037\037\037à", -1, 0, 2, 101, 1, "67 62 40 5F 5F 5F 63 03 6A 67 64 0B 64 40 1C 37 0F 6A", "CodeA US (3) / CodeB FNC4 à fully on next line" }, + /* 26*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, -1, "\037\200", -1, 0, 2, 101, 1, "67 62 40 5F 65 40 63 4E 6A 67 64 0B 63 64 5D 0A 05 6A", "CodeA US FNC4 PAD fits 1st line" }, + /* 27*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, -1, "\141\200", -1, 0, 2, 101, 0, "67 64 40 41 64 62 40 31 6A 67 64 0B 63 64 49 0A 08 6A", "CodeB a FNC4 Shift PAD fits 1st line; BWIPP different encodation (CodeA instead of Shift)" }, + /* 28*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, -1, "\141\200\037", -1, 0, 2, 101, 0, "67 64 40 41 65 65 40 44 6A 67 62 0B 5F 63 10 12 3E 6A", "CodeB a LatchA FNC4 PAD fits 1st line / CodeA US; BWIPP diffent encodation (as above)" }, + /* 29*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, -1, "\037\037\200", -1, 0, 2, 101, 1, "67 62 40 5F 5F 65 40 1D 6A 67 64 0B 63 64 0F 5D 0A 6A", "CodeA US US FNC4 PAD fits 1st line" }, + /* 30*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, -1, "\141\141\200", -1, 0, 2, 101, 1, "67 64 40 41 41 63 64 1B 6A 67 62 0B 65 40 33 49 21 6A", "CodeB a a / CodeA FNC4 PAD fully on next line" }, + /* 31*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, -1, "\037\037\037\200", -1, 0, 2, 101, 1, "67 62 40 5F 5F 5F 63 03 6A 67 62 0B 65 40 4A 0F 06 6A", "CodeA US (3) / CodeA FNC4 PAD fully on next line" }, + /* 32*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, -1, "\141\141\141\200", -1, 0, 2, 101, 1, "67 64 40 41 41 41 63 39 6A 67 62 0B 65 40 28 33 34 6A", "CodeB a (3) / CodeA FNC4 PAD fully on next line" }, + /* 33*/ { BARCODE_CODABLOCKF, DATA_MODE, -1, 10, "\200\240\237\340\337\341\377", -1, 0, 4, 112, 0, "(40) 67 62 42 65 40 65 00 63 1E 6A 67 62 0B 65 5F 64 64 40 55 6A 67 64 0C 64 3F 64 41 63", "BWIPP different encodation (CodeB before FNC4 instead of after)" }, + /* 34*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "\000a\037\177}12", 7, 0, 3, 101, 1, "67 62 41 40 62 41 5F 3B 6A 67 64 0B 5F 5D 11 12 2D 6A 67 64 0C 63 64 40 05 26 6A", "" }, + /* 35*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "abcdéf", -1, 0, 3, 101, 1, "67 64 41 41 42 43 44 5D 6A 67 64 0B 64 49 46 63 0A 6A 67 64 0C 63 64 4F 26 02 6A", "" }, + /* 36*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "a12é\000", 6, 0, 3, 101, 0, "67 64 41 41 11 12 63 2C 6A 67 64 0B 64 49 62 40 2B 6A 67 64 0C 63 64 33 34 31 6A", "BWIPP different encodation (CodeA instead of Shift)" }, + /* 37*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, 11, "1234\001", -1, 0, 2, 123, 1, "67 63 00 0C 22 65 41 63 64 54 6A 67 64 0B 63 64 63 64 3F 20 24 6A", "" }, + /* 38*/ { BARCODE_CODABLOCKF, UNICODE_MODE, 3, -1, "ÁÁÁÁÁÁ99999999999999ÁÁÁÁÁÁÁ99999999999999Á", -1, 0, 3, 244, 1, "(66) 67 64 41 64 21 64 21 64 21 64 21 64 21 64 21 63 63 63 63 63 56 6A 67 63 2B 63 63 63", "Latching to extended ASCII not used by `codablockf()` (see test_code128 Okapi)" }, + /* 39*/ { BARCODE_CODABLOCKF, DATA_MODE, 2, -1, "@g(\302\302\302\302\3025555\302\302\302\302\302\302\302\302", -1, 0, 2, 255, 1, "(46) 67 64 40 20 47 08 64 22 64 22 64 22 64 22 64 22 63 37 37 64 63 4B 6A 67 64 0B 64 22", "Must allow for FNC4 when testing if enough room when switching from CodeC" }, + /* 40*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "ÿ\012àa\0121\012àAà", -1, 0, 5, 101, 0, "(45) 67 64 43 64 5F 65 4A 09 6A 67 64 0B 64 40 41 63 34 6A 67 62 0C 4A 11 4A 63 25 6A 67", "BWIPP different encoding (Shift instead of CodeA)" }, + /* 41*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "ÿy1234\012àa\0121\0127890àAàDà\012à", -1, 0, 7, 112, 0, "(70) 67 64 45 64 5F 59 11 12 2E 6A 67 62 0B 13 14 4A 63 64 43 6A 67 64 0C 64 40 41 65 4A", "BWIPP different encoding (Shift instead of CodeA)" }, + /* 42*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "ÿ12345678\012à12345678abcdef\0121\01223456\012\0127890àAàBCDEFà\012\012à", -1, 0, 8, 134, 0, "(96) 67 64 46 64 5F 63 0C 22 38 4E 5E 6A 67 62 0B 4A 64 64 40 63 0C 22 2B 6A 67 63 2C 38", "BWIPP different encoding (CodeB before FNC4 instead of after)" }, + /* 43*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "123456789012345ABCDEFGHI\012123456ÿ12345678\012à12345678abcdef\012\012123456\012\0127890àABCDEFà\012\012ààGHIJKàLMNOPQabc\012defà1234567ghijk\012\012à901234\012\012\012\012567890àààààààABCDEFGààà\012\012\012HIJK\012\012\012\012à\012à\012à\01212345à\012à\012à67890ààÄ9012ÄÄ56789Ä12Ä3\0124\0125\0126A\012a\012A\012A\012a\012a\012BCD1A2B3C4a5b6c7d8e9\0120\0121\0122\0123Ä4Ä5Ä6A7a8A9a0\012Ä12345678ÄÄÄÄÄÄÄÄÄÄÄ2ÄÄÄÄÄÄÄÄ4ÄÄÄÄÄÄAÄÄÄÄÄÄaÄÄÄÄÄÄé1é2é34é56Ä78é9éAéBéCéééééaébécé123456789012345ABCDEFGHI\012123456ÿ12345678\012à12345678abcdef\012\012123456\012\0127890àABCDEFà\012\012ààGHIJKàLMNOPQabc\012defà1234567ghijk\012\012à901234\012\012\012\012567890àààààààABCDEFGààà\012\012\012HIJK\012\012\012\012à\012à\012à\01212345à\012à\012à67890ààÄ9012ÄÄ56789Ä12Ä3\0124\0125\0126A\012a\012A\012A\012a\012a\012BCD1A2B3C4a5b6c7d8e9\0120\0121\0122\0123Ä4Ä5Ä6A7a8A9a0\012Ä12345678ÄÄÄÄÄÄÄÄÄÄÄ2ÄÄÄÄÄÄÄÄ4ÄÄÄÄÄÄAÄÄÄÄÄÄaÄÄÄÄÄÄé1é2é34é56Ä78é9éAéBéCéééééaébécé12345123456789012345ABCDEFGHI\012123456ÿ12345678\012à12345678abcdef\012\012123456\012\0127890àABCDEFà\012\012ààGHIJKàLMNOPQabc\012defà1234567ghijk\012\012à901234\012\012\012\012567890àààààààABCDEFGààà\012\012\012HIJK\012\012\012\012à\012à\012à\01212345à\012à\012à67890ààÄ9012ÄÄ56789Ä12Ä3\0124\0125\0126A\012a\012A\012A\012a\012a\012BCD1A2B3C4a5b6c7d8e9\0120\0121\0122\0123Ä4Ä5Ä6A7a8A9a0\012Ä12345678ÄÄÄÄÄÄÄÄÄÄÄ2ÄÄÄÄÄÄÄÄ4ÄÄÄÄÄÄAÄÄÄÄÄÄaÄÄÄÄÄÄé1é2é34é56Ä78é9éAéBéCéééééaébécé123456789012345ABCDEFGHI\012123456ÿ12345678\012à12345678abcdef\012\012123456\012\0127890àABCDEFà\012\012ààGHIJKàLMNOPQabc\012defà1234567ghijk\012\012à901234\012\012\012\012567890àààààààABCDEFGààà\012\012\012HIJK\012\012\012\012à\012à\012à\01212345à\012à\012à67890ààÄ9012ÄÄ56789Ä12Ä3\0124\0125\0126A\012a\012A\012A\012a\012a\012BCD1A2" "B3C4a5b6c7d8e9\0120\0121\0122\0123Ä4Ä5Ä6A7a8A9a0\012Ä12345678ÄÄÄÄÄÄÄÄÄÄÄ2ÄÄÄÄÄÄÄÄ4ÄÄÄÄÄÄAÄÄÄÄÄÄaÄÄÄÄÄÄé1é2é34é56Ä78é9éAéBéCéééééaébécé6789012345ABCDEFGHI\012123456ÿ12345678\012à12345678abcdef\012\012123456\012\0127890àABCDEFà\012\012ààGHIJKàLMNOPQabc\012defà1234567ghijk\012\012à901234\012\012\012\012567890àààààààABCDEFGààà\012\012\012HIJK\012\012\012\012à\012à\012à\01212345à\012à\012à67890ààÄ9012ÄÄ56789Ä12Ä3\0124\0125\0126A\012a\012A\012A\012a\012a\012BCD1A2B3C4a5b6c7d8e9\0120\0121\0122\0123Ä4Ä5Ä6A7a8A9a0\012Ä12345678ÄÄÄÄÄÄÄÄÄÄÄ2ÄÄÄÄÄÄÄÄ4ÄÄÄÄÄÄAÄÄÄÄÄÄaÄÄÄÄÄÄé1é2é34é56Ä78é9éAéBéCéééééaébécé123456789012345ABCDEFGHI\012123456ÿ12345678\012à12345678abcdef\012\012123456\012\0127890àABCDEFà\012\012ààGHIJKàLMNOPQabc\012defà1234567ghijk\012\012à901234\012\012\012\012567890àààààààABCDEFGààà\012\012\012HIJK\012\012\012\012à\012à\012à\012123456à\012à\012à\0123Ä4Ä5Ä6AÄ56789Ä12Ä3\0124\0125\0126A\012a\012A\012A\012a\012a\012BCD1A2B3C4a5b6c7d8e9\0120\0121\0122\0123Ä4Ä5Ä6A7a8A9a0\012Ä12345678ÄÄÄÄÄé1é2é34é56Ä78é9éAéBéCéééééaébécéÄÄÄÄÄÄ2ÄÄÄÄÄÄÄÄ4ÄÄÄé1é2é34é56Ä78é9éAéBéCéééééaébécéÄÄÄAÄÄÄÄÄÄaÄÄÄÄÄÄé1é2é34é56Ä78é9éAéBéCéééééaébécé", -1, 0, 44, 739, 0, "(2948) 67 63 2A 0C 22 38 4E 5A 0C 22 65 15 21 22 23 24 25 26 27 28 29 4A 63 0C 22 38 64", "BWIPP gs command too long" }, + /* 44*/ { BARCODE_CODABLOCKF, UNICODE_MODE, -1, -1, "ÿ12345678\012à12345678abcdef\012\012123456\012\0127890àABCDEFà\012\012ààGHIJKàLMNOPQabc\012defà1234567ghijk\012\012à901234\012\012\012\012567890ààààABCDEFGààà\012\012\012HIJK\012\012\012\012à\012à\012à\01212345à\012à\012à67890ààÄ9012ÄÄ56789Ä12Ä3\0124\0125\0126A\012a\012A\012A\012a\012a\012BCD1A2B3C4a5b6c7d8e9\0120\0121\0122\0123Ä4Ä5Ä6A7a8A9a0\012Ä12345678ÄÄÄÄÄÄ2ÄÄÄÄÄÄ4ÄÄÄÄÄÄaÄÄÄÄé1é2é34é56Ä78é9éAéBéCéééééaébécé123456789012345ABCDEFGHI\012123456ÿ12345678\012à12345678abcdef\012123456\012\0127890àABCDEFà\012\012ààGHIJKàLMNOPQabc\012defà1234567ghijk\012\012à901234\0122567890àààààABCDEFGààà\012\012\012HIJK\012\012\0122à\012à\012à\01212345à\012à\012à67890ààÄ9012ÄÄ56789Ä12Ä3\0124\0125\0126A\012a\012A\012A\012a\012a\012BCD1A2B3C4a5b6c7d8e9\0120\0121\0122\0123Ä4Ä5Ä6A7a8A9a0\012Ä12345678ÄÄ2Ä4ÄaÄé1é2é34é56Ä78é9éAéBéCééaébécé123456789012345ABCDEF\012123456ÿ123456\012à12345678abcdef\012\0121234\012\0127890àABCDà\012\012ààGHIJKàLMabc\012defà1234567ghijk\012\012à901234\012\012\012\012567890ààABCDEFGààà\012\012\012HIJK\012\012\012\012à\012à\012à\01212345à\012à\012à67890ààÄ9012ÄÄ56789Ä12Ä3\0124\0125\0126A\012a\012A\012A\012a\012a\012BCD1A2", -1, 0, 33, 387, 0, "(1155) 67 64 5F 64 5F 63 0C 22 38 4E 65 4A 64 64 40 63 0C 22 38 4E 64 41 42 43 44 45 46", "BWIPP different encodation" }, + /* 45*/ { BARCODE_HIBC_BLOCKF, UNICODE_MODE, -1, -1, "A99912345/$$52001510X3", -1, 0, 6, 101, 1, "(54) 67 64 44 0B 21 19 19 3A 6A 67 63 2B 5B 17 2D 64 24 6A 67 64 0C 0F 04 04 15 16 6A 67", "" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; struct zint_symbol *symbol; - char escaped[1024]; + char escaped[16834]; + char cmp_buf[32768]; + char cmp_msg[32768]; + + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_input"); @@ -334,21 +348,47 @@ static void test_input(const testCtx *const p_ctx) { symbol->debug = ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ - length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/, -1 /*option_1*/, data[i].option_2, -1, -1 /*output_options*/, data[i].data, data[i].length, debug); + length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, -1 /*output_options*/, data[i].data, data[i].length, debug); ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); if (p_ctx->generate) { - printf(" /*%3d*/ { %s, %s, %d, \"%s\", %d, %s, %d, %d, \"%s\", \"%s\" },\n", - i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), data[i].option_2, + printf(" /*%3d*/ { %s, %s, %d, %d, \"%s\", %d, %s, %d, %d, %d, \"%s\", \"%s\" },\n", + i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), data[i].option_1, data[i].option_2, testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), data[i].length, - testUtilErrorName(data[i].ret), symbol->rows, symbol->width, symbol->errtxt, data[i].comment); + testUtilErrorName(data[i].ret), symbol->rows, symbol->width, data[i].bwipp_cmp, symbol->errtxt, data[i].comment); } else { + assert_zero(strcmp((char *) symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); if (ret < ZINT_ERROR) { assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d (%s)\n", i, symbol->rows, data[i].expected_rows, data[i].data); assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); - assert_zero(strcmp((char *) symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); + + if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, -1, debug)) { + if (!data[i].bwipp_cmp) { + if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); + } else { + char modules_dump[32768]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, -1, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); + assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); + assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); + } + } + if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { + int cmp_len, ret_len; + char modules_dump[32768]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); + assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); + assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); + } } } @@ -375,7 +415,7 @@ static void test_encode(const testCtx *const p_ctx) { char *expected; }; struct item data[] = { - /* 0*/ { BARCODE_CODABLOCKF, 1, -1, "AIM", 0, 1, 68, 1, "Same as CODE128 (not supported by BWIPP)", + /* 0*/ { BARCODE_CODABLOCKF, 1, -1, "AIM", 0, 1, 68, 1, "Same as CODE128 (not supported by BWIPP or ZXing-C++)", "11010010000101000110001100010001010111011000101110110001100011101011" }, /* 1*/ { BARCODE_CODABLOCKF, -1, -1, "AAAAAAA", 0, 3, 101, 1, "Defaults to rows 3, columns 9 (4 data); verified manually against tec-it", @@ -467,10 +507,11 @@ static void test_encode(const testCtx *const p_ctx) { struct zint_symbol *symbol; char escaped[1024]; - char bwipp_buf[8192]; - char bwipp_msg[1024]; + char cmp_buf[8192]; + char cmp_msg[1024]; int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_encode"); @@ -506,14 +547,25 @@ static void test_encode(const testCtx *const p_ctx) { if (!data[i].bwipp_cmp) { if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); } else { - ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, -1, data[i].data, length, NULL, bwipp_buf, sizeof(bwipp_buf), NULL); + ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, -1, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); - ret = testUtilBwippCmp(symbol, bwipp_msg, bwipp_buf, data[i].expected); + ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, data[i].expected); assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", - i, testUtilBarcodeName(symbol->symbology), ret, bwipp_msg, bwipp_buf, data[i].expected); + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, data[i].expected); } } + if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { + int cmp_len, ret_len; + char modules_dump[4096]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); + assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); + assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); + } } } diff --git a/backend/tests/test_code128.c b/backend/tests/test_code128.c index 85bb702a..9734a162 100644 --- a/backend/tests/test_code128.c +++ b/backend/tests/test_code128.c @@ -307,6 +307,7 @@ static void test_input(const testCtx *const p_ctx) { int length; int ret; int expected_width; + int bwipp_cmp; char *expected; char *comment; }; @@ -321,47 +322,66 @@ static void test_input(const testCtx *const p_ctx) { é U+00E9 (\351, 233), UTF-8 C3A9, CodeB-only extended ASCII */ struct item data[] = { - /* 0*/ { UNICODE_MODE, "\302\200", -1, ZINT_ERROR_INVALID_DATA, 0, "Error 204: Invalid character in input data (ISO/IEC 8859-1 only)", "PAD not in ISO 8859-1" }, - /* 1*/ { DATA_MODE, "\200", -1, 0, 57, "(5) 103 101 64 23 106", "PAD ok using binary" }, - /* 2*/ { UNICODE_MODE, "AIM1234", -1, 0, 101, "(9) 104 33 41 45 99 12 34 87 106", "Example from Annex A.1, check char value 87" }, - /* 3*/ { GS1_MODE, "[90]12", -1, ZINT_ERROR_INVALID_OPTION, 0, "Error 220: Selected symbology does not support GS1 mode", "" }, - /* 4*/ { UNICODE_MODE, "1", -1, 0, 46, "(4) 104 17 18 106", "StartB 1" }, - /* 5*/ { UNICODE_MODE, "12", -1, 0, 46, "(4) 105 12 14 106", "StartC 12" }, - /* 6*/ { UNICODE_MODE, "123", -1, 0, 68, "(6) 104 17 18 19 8 106", "StartB 1 2 3" }, - /* 7*/ { UNICODE_MODE, "1234", -1, 0, 57, "(5) 105 12 34 82 106", "StartC 12 34" }, - /* 8*/ { UNICODE_MODE, "12345", -1, 0, 79, "(7) 105 12 34 100 21 54 106", "StartC 12 34 CodeB 5" }, - /* 9*/ { UNICODE_MODE, "\037", -1, 0, 46, "(4) 103 95 95 106", "StartA US" }, - /* 10*/ { UNICODE_MODE, "1\037", -1, 0, 57, "(5) 103 17 95 1 106", "StartA 1 US" }, - /* 11*/ { UNICODE_MODE, "12\037", -1, 0, 68, "(6) 103 17 18 95 29 106", "StartA 1 2 US" }, - /* 12*/ { UNICODE_MODE, "a\037a", -1, 0, 79, "(7) 104 65 98 95 65 86 106", "StartB a Shift US a" }, - /* 13*/ { UNICODE_MODE, "1234\037a", -1, 0, 101, "(9) 105 12 34 101 95 98 65 100 106", "StartC 12 34 CodeA US Shift a" }, - /* 14*/ { UNICODE_MODE, "\037AAa\037", -1, 0, 101, "(9) 103 95 33 33 98 65 95 2 106", "StartA US A A Shift a US" }, - /* 15*/ { UNICODE_MODE, "\037AAaa\037", -1, 0, 123, "(11) 103 95 33 33 100 65 65 98 95 40 106", "StartA US A A CodeB a a Shift US" }, - /* 16*/ { UNICODE_MODE, "AAAa12345aAA", -1, 0, 167, "(15) 104 33 33 33 65 17 99 23 45 100 65 33 33 54 106", "StartB A (3) a 1 CodeC 23 45 CodeB a A A" }, - /* 17*/ { UNICODE_MODE, "a\037Aa\037\037a\037aa\037a", -1, 0, 222, "(20) 104 65 98 95 33 65 101 95 95 98 65 95 100 65 65 98 95 65 96 106", "StartB a Shift US A a CodeA US US Shift a US CodeB a a Shift US a" }, - /* 18*/ { UNICODE_MODE, "\000\037ß", 4, 0, 79, "(7) 103 64 95 101 63 88 106", "StartA NUL US FNC4 ß" }, - /* 19*/ { UNICODE_MODE, "\000\037é", 4, 0, 90, "(8) 103 64 95 101 98 73 78 106", "StartA NUL US FNC4 Shift é" }, - /* 20*/ { UNICODE_MODE, "\000\037éa", 5, 0, 101, "(9) 103 64 95 100 100 73 65 61 106", "StartA NUL US LatchB FNC4 é a" }, - /* 21*/ { UNICODE_MODE, "abß", -1, 0, 79, "(7) 104 65 66 100 63 29 106", "StartB a b FNC4 ß" }, - /* 22*/ { DATA_MODE, "\141\142\237", -1, 0, 90, "(8) 104 65 66 100 98 95 26 106", "StartB a b FNC4 Shift APC" }, - /* 23*/ { DATA_MODE, "\141\142\237\037", -1, 0, 101, "(9) 104 65 66 101 101 95 95 96 106", "StartB a b LatchA FNC4 APC US" }, - /* 24*/ { UNICODE_MODE, "ééé", -1, 0, 90, "(8) 104 100 100 73 73 73 44 106", "StartB LatchFNC4 é é é" }, - /* 25*/ { UNICODE_MODE, "aééééb", -1, 0, 145, "(13) 104 65 100 73 100 73 100 73 100 73 66 49 106", "StartB a FNC4 é (4) b" }, - /* 26*/ { UNICODE_MODE, "aéééééb", -1, 0, 145, "(13) 104 65 100 100 73 73 73 73 73 100 66 93 106", "StartB a Latch é (5) Shift b" }, - /* 27*/ { UNICODE_MODE, "aééééébc", -1, 0, 167, "(15) 104 65 100 100 73 73 73 73 73 100 66 100 67 40 106", "StartB a Latch é (5) Shift b Shift c" }, - /* 28*/ { UNICODE_MODE, "aééééébcd", -1, 0, 178, "(16) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 66 106", "StartB a Latch é (5) Unlatch b c d" }, - /* 29*/ { UNICODE_MODE, "aééééébcde", -1, 0, 189, "(17) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 2 106", "StartB a Latch é (5) Unlatch b c d e" }, - /* 30*/ { UNICODE_MODE, "aééééébcdeé", -1, 0, 211, "(19) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 100 73 95 106", "StartB a Latch é (5) Unlatch b c d e FNC4 é" }, - /* 31*/ { UNICODE_MODE, "aééééébcdeéé", -1, 0, 233, "(21) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 100 73 100 73 19 106", "StartB a Latch é (5) Unlatch b c d e FNC4 é (2)" }, - /* 32*/ { UNICODE_MODE, "aééééébcdeééé", -1, 0, 244, "(22) 104 65 100 100 73 73 73 73 73 100 66 100 67 100 68 100 69 73 73 73 83 106", "StartB a Latch é (5) Shift b Shift c Shift d Shift e é (3)" }, - /* 33*/ { UNICODE_MODE, "aééééébcdefééé", -1, 0, 255, "(23) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 70 100 100 73 73 73 67 106", "StartB a Latch é (5) Unlatch b c d e f Latch é (3)" }, - /* 34*/ { DATA_MODE, "\200\200\200\200\200\101\060\060\060\060\101\200", -1, 0, 222, "(20) 103 101 101 64 64 64 64 64 101 101 33 99 0 0 101 33 101 64 73 106", "StartA Latch PAD (4) Unlatch A CodeC 00 00 CodeA A FNC4 PAD" }, + /* 0*/ { UNICODE_MODE, "\302\200", -1, ZINT_ERROR_INVALID_DATA, 0, 1, "Error 204: Invalid character in input data (ISO/IEC 8859-1 only)", "PAD not in ISO 8859-1" }, + /* 1*/ { DATA_MODE, "\200", -1, 0, 57, 1, "(5) 103 101 64 23 106", "PAD ok using binary" }, + /* 2*/ { UNICODE_MODE, "AIM1234", -1, 0, 101, 1, "(9) 104 33 41 45 99 12 34 87 106", "Example from Annex A.1, check char value 87" }, + /* 3*/ { GS1_MODE, "[90]12", -1, ZINT_ERROR_INVALID_OPTION, 0, 1, "Error 220: Selected symbology does not support GS1 mode", "" }, + /* 4*/ { UNICODE_MODE, "1", -1, 0, 46, 1, "(4) 104 17 18 106", "StartB 1" }, + /* 5*/ { UNICODE_MODE, "12", -1, 0, 46, 1, "(4) 105 12 14 106", "StartC 12" }, + /* 6*/ { UNICODE_MODE, "123", -1, 0, 68, 1, "(6) 104 17 18 19 8 106", "StartB 1 2 3" }, + /* 7*/ { UNICODE_MODE, "1234", -1, 0, 57, 1, "(5) 105 12 34 82 106", "StartC 12 34" }, + /* 8*/ { UNICODE_MODE, "12345", -1, 0, 79, 1, "(7) 105 12 34 100 21 54 106", "StartC 12 34 CodeB 5" }, + /* 9*/ { UNICODE_MODE, "\037", -1, 0, 46, 1, "(4) 103 95 95 106", "StartA US" }, + /* 10*/ { UNICODE_MODE, "1\037", -1, 0, 57, 1, "(5) 103 17 95 1 106", "StartA 1 US" }, + /* 11*/ { UNICODE_MODE, "12\037", -1, 0, 68, 1, "(6) 103 17 18 95 29 106", "StartA 1 2 US" }, + /* 12*/ { UNICODE_MODE, "a\037a", -1, 0, 79, 1, "(7) 104 65 98 95 65 86 106", "StartB a Shift US a" }, + /* 13*/ { UNICODE_MODE, "1234\037a", -1, 0, 101, 0, "(9) 105 12 34 101 95 98 65 100 106", "StartC 12 34 CodeA US Shift a; BWIPP different encodation" }, + /* 14*/ { UNICODE_MODE, "\037AAa\037", -1, 0, 101, 1, "(9) 103 95 33 33 98 65 95 2 106", "StartA US A A Shift a US" }, + /* 15*/ { UNICODE_MODE, "\037AAaa\037", -1, 0, 123, 0, "(11) 103 95 33 33 100 65 65 98 95 40 106", "StartA US A A CodeB a a Shift US; BWIPP different encodation" }, + /* 16*/ { UNICODE_MODE, "AAAa12345aAA", -1, 0, 167, 1, "(15) 104 33 33 33 65 17 99 23 45 100 65 33 33 54 106", "StartB A (3) a 1 CodeC 23 45 CodeB a A A" }, + /* 17*/ { UNICODE_MODE, "a\037Aa\037\037a\037aa\037a", -1, 0, 222, 1, "(20) 104 65 98 95 33 65 101 95 95 98 65 95 100 65 65 98 95 65 96 106", "StartB a Shift US A a CodeA US US Shift a US CodeB a a Shift US a" }, + /* 18*/ { UNICODE_MODE, "\000\037ß", 4, 0, 79, 1, "(7) 103 64 95 101 63 88 106", "StartA NUL US FNC4 ß" }, + /* 19*/ { UNICODE_MODE, "\000\037é", 4, 0, 90, 0, "(8) 103 64 95 101 98 73 78 106", "StartA NUL US FNC4 Shift é; BWIPP different encodation" }, + /* 20*/ { UNICODE_MODE, "\000\037éa", 5, 0, 101, 0, "(9) 103 64 95 100 100 73 65 61 106", "StartA NUL US LatchB FNC4 é a; BWIPP different encodation" }, + /* 21*/ { UNICODE_MODE, "abß", -1, 0, 79, 1, "(7) 104 65 66 100 63 29 106", "StartB a b FNC4 ß" }, + /* 22*/ { DATA_MODE, "\141\142\237", -1, 0, 90, 0, "(8) 104 65 66 100 98 95 26 106", "StartB a b FNC4 Shift APC; BWIPP different encodation" }, + /* 23*/ { DATA_MODE, "\141\142\237\037", -1, 0, 101, 0, "(9) 104 65 66 101 101 95 95 96 106", "StartB a b LatchA FNC4 APC US; BWIPP different encodation" }, + /* 24*/ { UNICODE_MODE, "ééé", -1, 0, 90, 1, "(8) 104 100 100 73 73 73 44 106", "StartB LatchFNC4 é é é" }, + /* 25*/ { UNICODE_MODE, "aééééb", -1, 0, 145, 1, "(13) 104 65 100 73 100 73 100 73 100 73 66 49 106", "StartB a FNC4 é (4) b" }, + /* 26*/ { UNICODE_MODE, "aéééééb", -1, 0, 145, 1, "(13) 104 65 100 100 73 73 73 73 73 100 66 93 106", "StartB a Latch é (5) Shift b" }, + /* 27*/ { UNICODE_MODE, "aééééébc", -1, 0, 167, 1, "(15) 104 65 100 100 73 73 73 73 73 100 66 100 67 40 106", "StartB a Latch é (5) Shift b Shift c" }, + /* 28*/ { UNICODE_MODE, "aééééébcd", -1, 0, 178, 1, "(16) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 66 106", "StartB a Latch é (5) Unlatch b c d" }, + /* 29*/ { UNICODE_MODE, "aééééébcde", -1, 0, 189, 1, "(17) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 2 106", "StartB a Latch é (5) Unlatch b c d e" }, + /* 30*/ { UNICODE_MODE, "aééééébcdeé", -1, 0, 211, 0, "(19) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 100 73 95 106", "StartB a Latch é (5) Unlatch b c d e FNC4 é; BWIPP different encodation" }, + /* 31*/ { UNICODE_MODE, "aééééébcdeéé", -1, 0, 233, 0, "(21) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 100 73 100 73 19 106", "StartB a Latch é (5) Unlatch b c d e FNC4 é (2); BWIPP different encodation" }, + /* 32*/ { UNICODE_MODE, "aééééébcdeééé", -1, 0, 244, 1, "(22) 104 65 100 100 73 73 73 73 73 100 66 100 67 100 68 100 69 73 73 73 83 106", "StartB a Latch é (5) Shift b Shift c Shift d Shift e é (3)" }, + /* 33*/ { UNICODE_MODE, "aééééébcdefééé", -1, 0, 255, 1, "(23) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 70 100 100 73 73 73 67 106", "StartB a Latch é (5) Unlatch b c d e f Latch é (3)" }, + /* 34*/ { DATA_MODE, "\200\200\200\200\200\101\060\060\060\060\101\200", -1, 0, 222, 1, "(20) 103 101 101 64 64 64 64 64 101 101 33 99 0 0 101 33 101 64 73 106", "StartA Latch PAD (4) Unlatch A CodeC 00 00 CodeA A FNC4 PAD" }, + /* 35*/ { UNICODE_MODE, "ÁÁÁÁÁÁ99999999999999", -1, 0, 211, 0, "(19) 104 100 100 33 33 33 33 33 33 99 99 99 99 99 99 99 99 63 106", "Okapi code128/extended-mode-exit-before-code-set-c.png (chose different solution); BWIPP different encodation" }, + /* 36*/ { UNICODE_MODE, "ÁÁÁÁÁÁ99999999999999Á", -1, 0, 233, 0, "(21) 104 100 100 33 33 33 33 33 33 99 99 99 99 99 99 99 99 100 33 91 106", "Above with trailing non-shifted (as still latched) extended; BWIPP different encodation" }, + /* 37*/ { DATA_MODE | ESCAPE_MODE, "@g(\302\302\302\302\3025555\302\302\302\302\302\302\302\302", -1, 0, 277, 0, "(25) 104 32 71 8 100 100 34 34 34 34 34 99 55 55 100 34 34 34 34 34 34 34 34 25 106", "Okapi code128/extended-mode-with-short-embedded-code-set-c.png (chose different solution); BWIPP different encodation" }, + /* 38*/ { DATA_MODE | ESCAPE_MODE, "@g(\302\302\302\302\302555555\302\302\302\302\302\302\302", -1, 0, 277, 0, "(25) 104 32 71 8 100 100 34 34 34 34 34 99 55 55 55 100 34 34 34 34 34 34 34 76 106", "Above with extra 55 instead of \xC2; BWIPP different encodation" }, + /* 39*/ { UNICODE_MODE, "ÁÁèÁÁFç7Z", -1, 0, 189, 0, "(17) 104 100 100 33 33 72 33 33 100 38 71 100 100 23 58 95 106", "Okapi code128/extended-mode-shift.png; BWIPP different encodation" }, + /* 40*/ { UNICODE_MODE, "m\nm\nm", -1, 0, 112, 1, "(10) 104 77 98 74 77 98 74 77 11 106", "Okapi code128/code-set-b-a-b-a-b.png" }, + /* 41*/ { UNICODE_MODE, "c\naDEF", -1, 0, 112, 1, "(10) 104 67 98 74 65 36 37 38 75 106", "Okapi bug-36-1.png" }, + /* 42*/ { UNICODE_MODE, "\na\nDEF", -1, 0, 112, 1, "(10) 103 74 98 65 74 36 37 38 90 106", "Okapi bug-36-2.png" }, + /* 43*/ { UNICODE_MODE, "ÿ\012àa\0121\012àAà", -1, 0, 222, 0, "(20) 104 100 95 98 74 100 64 65 98 74 17 98 74 100 64 33 100 64 61 106", "BWIPP different encodation, ShA instead of CodeA" }, + /* 44*/ { UNICODE_MODE, "ÿ1234\012àa\0121\0127890àAàDà\012à", -1, 0, 387, 0, "(35) 104 100 95 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33 100 64", "BWIPP different encodation, CodeA instead of ShA, shorter" }, + /* 45*/ { UNICODE_MODE, "yÿ1234\012àa\0121\0127890àAàDà\012à", -1, 0, 398, 0, "(36) 104 89 100 95 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33 100", "BWIPP different encodation, CodeA instead of ShA, shorter" }, + /* 46*/ { UNICODE_MODE, "ÿy1234\012àa\0121\0127890àAàDà\012à", -1, 0, 398, 0, "(36) 104 100 95 89 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33 100", "BWIPP different encodation, CodeA instead of ShA, shorter" }, + /* 47*/ { UNICODE_MODE, "ÿÿ1234\012àa\0121\0127890àAàDà\012à", -1, 0, 409, 0, "(37) 104 100 95 100 95 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33", "BWIPP different encodation, CodeA instead of ShA, shorter" }, + /* 48*/ { UNICODE_MODE, "ÿ12345678\012à12345678abcdef\0121\01223456\012\0127890àAàBCDEFà\012\012à", -1, 0, 684, 0, "(62) 104 100 95 99 12 34 56 78 101 74 101 98 64 99 12 34 56 78 100 65 66 67 68 69 70 98 74", "BWIPP different encodation, CodeA instead of ShA, shorter" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; struct zint_symbol *symbol; char escaped[1024]; + char cmp_buf[8192]; + char cmp_msg[1024]; + + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_input"); @@ -380,14 +400,40 @@ static void test_input(const testCtx *const p_ctx) { assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); if (p_ctx->generate) { - printf(" /*%3d*/ { %s, \"%s\", %d, %s, %d, \"%s\", \"%s\" },\n", + printf(" /*%3d*/ { %s, \"%s\", %d, %s, %d, %d, \"%s\", \"%s\" },\n", i, testUtilInputModeName(data[i].input_mode), testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), data[i].length, - testUtilErrorName(data[i].ret), symbol->width, symbol->errtxt, data[i].comment); + testUtilErrorName(data[i].ret), symbol->width, data[i].bwipp_cmp, symbol->errtxt, data[i].comment); } else { + assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); if (ret < ZINT_ERROR) { assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); + + if (do_bwipp && testUtilCanBwipp(i, symbol, -1, -1, -1, debug)) { + if (!data[i].bwipp_cmp) { + if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); + } else { + char modules_dump[4096]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilBwipp(i, symbol, -1, -1, -1, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); + assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); + assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); + } + } + if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { + int cmp_len, ret_len; + char modules_dump[4096]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); + assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); + assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); + } } - assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); } ZBarcode_Delete(symbol); diff --git a/backend/tests/test_code16k.c b/backend/tests/test_code16k.c index f590e8e0..cf7631eb 100644 --- a/backend/tests/test_code16k.c +++ b/backend/tests/test_code16k.c @@ -48,6 +48,10 @@ static void test_large(const testCtx *const p_ctx) { /* 2*/ { "0", 154, 0, 16, 70 }, /* BS EN 12323:2005 4.1 (l) */ /* 3*/ { "0", 155, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 4*/ { "0", 161, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 5*/ { "\001", 77, 0, 16, 70 }, + /* 6*/ { "\001", 78, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 7*/ { "\377", 38, 0, 16, 70 }, /* FNC4 + char for each so half 77 as not using double latch */ + /* 8*/ { "\377", 39, ZINT_ERROR_TOO_LONG, -1, -1 }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -154,6 +158,7 @@ static void test_input(const testCtx *const p_ctx) { int ret; int expected_rows; int expected_width; + int bwipp_cmp; char *expected; char *comment; }; @@ -167,43 +172,61 @@ static void test_input(const testCtx *const p_ctx) { é U+00E9 (\351, 233), UTF-8 C3A9, CodeB-only extended ASCII */ struct item data[] = { - /* 0*/ { UNICODE_MODE, -1, "\037", -1, 0, 2, 70, "(10) 0 95 103 103 103 103 103 103 22 42", "ModeA US Pad (6)" }, - /* 1*/ { UNICODE_MODE, -1, "A", -1, 0, 2, 70, "(10) 1 33 103 103 103 103 103 103 52 82", "ModeB A Pad (6)" }, - /* 2*/ { UNICODE_MODE, -1, "12", -1, 0, 2, 70, "(10) 2 12 103 103 103 103 103 103 98 27", "ModeC 12 Pad (6)" }, - /* 3*/ { GS1_MODE, -1, "[90]A", -1, 0, 2, 70, "(10) 3 25 16 33 103 103 103 103 83 20", "ModeBFNC1 9 0 A Pad (4)" }, - /* 4*/ { GS1_MODE, -1, "[90]12", -1, 0, 2, 70, "(10) 4 90 12 103 103 103 103 103 79 62", "ModeCFNC1 90 12 Pad (5)" }, - /* 5*/ { GS1_MODE, -1, "[90]12[20]12", -1, 0, 2, 70, "(10) 4 90 12 102 20 12 103 103 9 72", "ModeCFNC1 90 12 FNC1 20 12 Pad (2)" }, - /* 6*/ { GS1_MODE, -1, "[90]123[20]12", -1, 0, 2, 70, "(15) 4 90 12 100 19 99 102 20 12 103 103 103 103 88 22", "ModeCFNC1 90 CodeB 3 CodeC FNC1 20 12 Pad (4)" }, - /* 7*/ { GS1_MODE, -1, "[90]123[91]1A3[20]12", -1, 0, 4, 70, "(20) 18 90 12 100 19 102 25 99 11 100 33 19 99 102 20 12 103 103 0 3", "ModeCFNC1 90 12 CodeB 3 FNC1 9 CodeC 11 CodeB A 3 CodeC FNC1 20 12 Pad (2)" }, - /* 8*/ { GS1_MODE, -1, "[90]123A[91]123", -1, 0, 3, 70, "(15) 11 90 12 100 19 33 102 25 99 11 23 103 103 81 56", "ModeCFNC1 90 12 CodeB 3 A FNC1 9 CodeC 11 23 Pad (2)" }, - /* 9*/ { GS1_MODE | GS1PARENS_MODE, -1, "(90)12", -1, 0, 2, 70, "(10) 4 90 12 103 103 103 103 103 79 62", "ModeCFNC1 90 12 Pad (5)" }, - /* 10*/ { UNICODE_MODE, -1, "a0123456789", -1, 0, 2, 70, "(10) 5 65 1 23 45 67 89 103 27 86", "ModeC1SB a 01 23 45 67 89 Pad" }, - /* 11*/ { UNICODE_MODE, -1, "ab0123456789", -1, 0, 2, 70, "(10) 6 65 66 1 23 45 67 89 19 42", "ModeC2SB a b 01 23 45 67 89" }, - /* 12*/ { UNICODE_MODE, -1, "1234\037a", -1, 0, 2, 70, "(10) 2 12 34 101 95 98 65 103 67 53", "ModeC 12 34 CodeA US 1SB a Pad" }, - /* 13*/ { UNICODE_MODE, -1, "\000\037ß", 4, 0, 2, 70, "(10) 0 64 95 101 63 103 103 103 75 11", "ModeA NUL US FNC4 ß Pad (3)" }, - /* 14*/ { UNICODE_MODE, -1, "\000\037é", 4, 0, 2, 70, "(10) 0 64 95 101 98 73 103 103 75 6", "ModeA NUL US FNC4 1SB é Pad (2)" }, - /* 15*/ { UNICODE_MODE, -1, "\000\037éa", 5, 0, 2, 70, "(10) 0 64 95 100 100 73 65 103 99 69", "ModeA NUL US CodeB FNC4 é a Pad" }, - /* 16*/ { UNICODE_MODE, -1, "abß", -1, 0, 2, 70, "(10) 1 65 66 100 63 103 103 103 66 56", "ModeB a b FNC4 ß Pad (3)" }, - /* 17*/ { DATA_MODE, -1, "\141\142\237", -1, 0, 2, 70, "(10) 1 65 66 100 98 95 103 103 6 71", "ModeB a b FNC4 1SA APC Pad (2)" }, - /* 18*/ { DATA_MODE, -1, "\141\142\237\037", -1, 0, 2, 70, "(10) 1 65 66 101 101 95 95 103 72 93", "ModeB a b CodeA FNC4 APC US Pad" }, - /* 19*/ { UNICODE_MODE, -1, "ééé", -1, 0, 2, 70, "(10) 1 100 73 100 73 100 73 103 105 106", "ModeB FNC4 é FNC4 é FNC4 é Pad" }, - /* 20*/ { UNICODE_MODE, -1, "aééééb", -1, 0, 3, 70, "(15) 8 65 100 73 100 73 100 73 100 73 66 103 103 39 83", "ModeB a FNC4 é (4) b Pad (2)" }, - /* 21*/ { UNICODE_MODE, -1, "aéééééb", -1, 0, 3, 70, "(15) 8 65 100 73 100 73 100 73 100 73 100 73 66 74 106", "ModeB a FNC4 é (5) b" }, - /* 22*/ { UNICODE_MODE, -1, "aééééébcdeé", -1, 0, 4, 70, "(20) 15 65 100 73 100 73 100 73 100 73 100 73 66 67 68 69 100 73 14 69", "ModeB a FNC4 é (5) b c d e FNC4 é" }, - /* 23*/ { UNICODE_MODE, -1, "123456789012345678901234", -1, 0, 3, 70, "(15) 9 12 34 56 78 90 12 34 56 78 90 12 34 71 42", "3 rows" }, - /* 24*/ { UNICODE_MODE, 2, "123456789012345678901234", -1, 0, 3, 70, "(15) 9 12 34 56 78 90 12 34 56 78 90 12 34 71 42", "Min 2 rows (no change)" }, - /* 25*/ { UNICODE_MODE, 3, "123456789012345678901234", -1, 0, 3, 70, "(15) 9 12 34 56 78 90 12 34 56 78 90 12 34 71 42", "Min 3 rows (no change)" }, - /* 26*/ { UNICODE_MODE, 4, "123456789012345678901234", -1, 0, 4, 70, "(20) 16 12 34 56 78 90 12 34 56 78 90 12 34 103 103 103 103 103 66 96", "Min 4 rows" }, - /* 27*/ { UNICODE_MODE, 5, "123456789012345678901234", -1, 0, 5, 70, "(25) 23 12 34 56 78 90 12 34 56 78 90 12 34 103 103 103 103 103 103 103 103 103 103 68 61", "Min 5 rows" }, - /* 28*/ { UNICODE_MODE, 16, "123456789012345678901234", -1, 0, 16, 70, "(80) 100 12 34 56 78 90 12 34 56 78 90 12 34 103 103 103 103 103 103 103 103 103 103 103", "Min 16 rows" }, - /* 29*/ { UNICODE_MODE, 1, "123456789012345678901234", -1, ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 424: Minimum number of rows out of range (2 to 16)", "" }, - /* 30*/ { UNICODE_MODE, 17, "123456789012345678901234", -1, ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 424: Minimum number of rows out of range (2 to 16)", "" }, + /* 0*/ { UNICODE_MODE, -1, "\037", -1, 0, 2, 70, 1, "(10) 0 95 103 103 103 103 103 103 22 42", "ModeA US Pad (6)" }, + /* 1*/ { UNICODE_MODE, -1, "A", -1, 0, 2, 70, 1, "(10) 1 33 103 103 103 103 103 103 52 82", "ModeB A Pad (6)" }, + /* 2*/ { UNICODE_MODE, -1, "12", -1, 0, 2, 70, 1, "(10) 2 12 103 103 103 103 103 103 98 27", "ModeC 12 Pad (6)" }, + /* 3*/ { GS1_MODE, -1, "[90]A", -1, 0, 2, 70, 1, "(10) 3 25 16 33 103 103 103 103 83 20", "ModeBFNC1 9 0 A Pad (4)" }, + /* 4*/ { GS1_MODE, -1, "[90]12", -1, 0, 2, 70, 1, "(10) 4 90 12 103 103 103 103 103 79 62", "ModeCFNC1 90 12 Pad (5)" }, + /* 5*/ { GS1_MODE, -1, "[90]12[20]12", -1, 0, 2, 70, 1, "(10) 4 90 12 102 20 12 103 103 9 72", "ModeCFNC1 90 12 FNC1 20 12 Pad (2)" }, + /* 6*/ { GS1_MODE, -1, "[90]123[20]12", -1, 0, 3, 70, 1, "(15) 11 90 12 100 19 99 102 20 12 103 103 103 103 102 11", "ModeCFNC1 90 CodeB 3 CodeC FNC1 20 12 Pad (4)" }, + /* 7*/ { GS1_MODE, -1, "[90]123[91]1A3[20]12", -1, 0, 4, 70, 1, "(20) 18 90 12 100 19 102 25 99 11 100 33 19 99 102 20 12 103 103 0 3", "ModeCFNC1 90 12 CodeB 3 FNC1 9 CodeC 11 CodeB A 3 CodeC FNC1 20 12 Pad (2)" }, + /* 8*/ { GS1_MODE, -1, "[90]123A[91]123", -1, 0, 3, 70, 1, "(15) 11 90 12 100 19 33 102 25 99 11 23 103 103 81 56", "ModeCFNC1 90 12 CodeB 3 A FNC1 9 CodeC 11 23 Pad (2)" }, + /* 9*/ { GS1_MODE | GS1PARENS_MODE, -1, "(90)12", -1, 0, 2, 70, 1, "(10) 4 90 12 103 103 103 103 103 79 62", "ModeCFNC1 90 12 Pad (5)" }, + /* 10*/ { UNICODE_MODE, -1, "a0123456789", -1, 0, 2, 70, 1, "(10) 5 65 1 23 45 67 89 103 27 86", "ModeC1SB a 01 23 45 67 89 Pad" }, + /* 11*/ { UNICODE_MODE, -1, "ab0123456789", -1, 0, 2, 70, 1, "(10) 6 65 66 1 23 45 67 89 19 42", "ModeC2SB a b 01 23 45 67 89" }, + /* 12*/ { UNICODE_MODE, -1, "1234\037a", -1, 0, 2, 70, 0, "(10) 2 12 34 101 95 98 65 103 67 53", "ModeC 12 34 CodeA US 1SB a Pad; BWIPP different encodation, CodeB instead of 1SB" }, + /* 13*/ { UNICODE_MODE, -1, "\000\037ß", 4, 0, 2, 70, 1, "(10) 0 64 95 101 63 103 103 103 75 11", "ModeA NUL US FNC4 ß Pad (3)" }, + /* 14*/ { UNICODE_MODE, -1, "\000\037é", 4, 0, 2, 70, 0, "(10) 0 64 95 101 98 73 103 103 75 6", "ModeA NUL US FNC4 1SB é Pad (2); BWIPP different encodation, CodeB instead of 1SB" }, + /* 15*/ { UNICODE_MODE, -1, "\000\037éa", 5, 0, 2, 70, 0, "(10) 0 64 95 100 100 73 65 103 99 69", "ModeA NUL US CodeB FNC4 é a Pad; BWIPP different encodation, FNC4 before CodeB" }, + /* 16*/ { UNICODE_MODE, -1, "abß", -1, 0, 2, 70, 1, "(10) 1 65 66 100 63 103 103 103 66 56", "ModeB a b FNC4 ß Pad (3)" }, + /* 17*/ { DATA_MODE, -1, "\141\142\237", -1, 0, 2, 70, 0, "(10) 1 65 66 100 98 95 103 103 6 71", "ModeB a b FNC4 1SA APC Pad (2); BWIPP different encodation, CodeA instead of 1SA" }, + /* 18*/ { DATA_MODE, -1, "\141\142\237\037", -1, 0, 2, 70, 0, "(10) 1 65 66 101 101 95 95 103 72 93", "ModeB a b CodeA FNC4 APC US Pad; BWIPP different encodation, FNC4 before CodeA" }, + /* 19*/ { UNICODE_MODE, -1, "ééé", -1, 0, 2, 70, 0, "(10) 1 100 73 100 73 100 73 103 105 106", "ModeB FNC4 é FNC4 é FNC4 é Pad; BWIPP different encodation, uses double FNC4 latch" }, + /* 20*/ { UNICODE_MODE, -1, "aééééb", -1, 0, 3, 70, 1, "(15) 8 65 100 73 100 73 100 73 100 73 66 103 103 39 83", "ModeB a FNC4 é (4) b Pad (2)" }, + /* 21*/ { UNICODE_MODE, -1, "aéééééb", -1, 0, 3, 70, 0, "(15) 8 65 100 73 100 73 100 73 100 73 100 73 66 74 106", "ModeB a FNC4 é (5) b; BWIPP different encodation, uses double FNC4 latch" }, + /* 22*/ { UNICODE_MODE, -1, "aééééébcdeé", -1, 0, 4, 70, 0, "(20) 15 65 100 73 100 73 100 73 100 73 100 73 66 67 68 69 100 73 14 69", "ModeB a FNC4 é (5) b c d e FNC4 é; BWIPP different encodation, uses double FNC4 latch then FNC4 escapes" }, + /* 23*/ { UNICODE_MODE, -1, "123456789012345678901234", -1, 0, 3, 70, 1, "(15) 9 12 34 56 78 90 12 34 56 78 90 12 34 71 42", "3 rows" }, + /* 24*/ { UNICODE_MODE, 2, "123456789012345678901234", -1, 0, 3, 70, 0, "(15) 9 12 34 56 78 90 12 34 56 78 90 12 34 71 42", "Min 2 rows (no change); BWIPP doesn't support min rows < required" }, + /* 25*/ { UNICODE_MODE, 3, "123456789012345678901234", -1, 0, 3, 70, 1, "(15) 9 12 34 56 78 90 12 34 56 78 90 12 34 71 42", "Min 3 rows (no change)" }, + /* 26*/ { UNICODE_MODE, 4, "123456789012345678901234", -1, 0, 4, 70, 1, "(20) 16 12 34 56 78 90 12 34 56 78 90 12 34 103 103 103 103 103 66 96", "Min 4 rows" }, + /* 27*/ { UNICODE_MODE, 5, "123456789012345678901234", -1, 0, 5, 70, 1, "(25) 23 12 34 56 78 90 12 34 56 78 90 12 34 103 103 103 103 103 103 103 103 103 103 68 61", "Min 5 rows" }, + /* 28*/ { UNICODE_MODE, 16, "123456789012345678901234", -1, 0, 16, 70, 1, "(80) 100 12 34 56 78 90 12 34 56 78 90 12 34 103 103 103 103 103 103 103 103 103 103 103", "Min 16 rows" }, + /* 29*/ { UNICODE_MODE, 1, "123456789012345678901234", -1, ZINT_ERROR_INVALID_OPTION, -1, -1, 1, "Error 424: Minimum number of rows out of range (2 to 16)", "" }, + /* 30*/ { UNICODE_MODE, 17, "123456789012345678901234", -1, ZINT_ERROR_INVALID_OPTION, -1, -1, 1, "Error 424: Minimum number of rows out of range (2 to 16)", "" }, + /* 31*/ { UNICODE_MODE, -1, "ÁÁÁÁÁÁ99999999999999Á", -1, 0, 6, 70, 0, "(30) 29 100 33 100 33 100 33 100 33 100 33 100 33 99 99 99 99 99 99 99 99 100 100 33 103", "BWIPP different encodation, uses double FNC4 latch" }, + /* 32*/ { UNICODE_MODE, -1, "ÿ\012àa\0121\012àAà", -1, 0, 4, 70, 0, "(20) 15 100 95 98 74 100 64 65 98 74 17 98 74 100 64 33 100 64 47 35", "BWIPP different encodation, uses CodeA instead of 1SA" }, + /* 33*/ { UNICODE_MODE, -1, "ÿ\012àa\0121\012àAà\012à", -1, 0, 5, 70, 0, "(25) 22 100 95 98 74 100 64 65 98 74 17 98 74 100 64 33 100 64 98 74 100 64 103 89 18", "BWIPP different encodation, uses CodeA instead of 1SA" }, + /* 34*/ { UNICODE_MODE, -1, "y1234\012àa\0121\0127890àAàDà\012à", -1, 0, 7, 70, 0, "(35) 40 89 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33 100 64 36 100", "BWIPP different encodation, uses Sh2B + other differences" }, + /* 35*/ { UNICODE_MODE, -1, "ÿ1234\012àa\0121\0127890àAàDà\012à", -1, 0, 7, 70, 0, "(35) 41 100 95 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33 100 64 36", "BWIPP different encodation" }, + /* 36*/ { UNICODE_MODE, -1, "yÿ1234\012àa\0121\0127890àAàDà\012à", -1, 0, 8, 70, 0, "(40) 43 89 100 95 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33 100", "BWIPP different encodation (and fits in 7 rows)" }, + /* 37*/ { UNICODE_MODE, -1, "ÿy1234\012àa\0121\0127890àAàDà\012à", -1, 0, 8, 70, 0, "(40) 43 100 95 89 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33 100", "BWIPP different encodation (and fits in 7 rows)" }, + /* 38*/ { UNICODE_MODE, -1, "ÿÿ1234\012àa\0121\0127890àAàDà\012à", -1, 0, 8, 70, 0, "(40) 43 100 95 100 95 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33", "BWIPP different encodation (and fits in 7 rows)" }, + /* 39*/ { UNICODE_MODE, -1, "ÿ1234\012àa\0121\01223456\0127890àAàDà\012à", -1, 0, 8, 70, 0, "(40) 48 100 95 12 34 101 74 100 100 64 65 98 74 17 98 74 18 99 34 56 101 74 99 78 90 100", "BWIPP different encodation, uses Sh2B + other differences" }, + /* 40*/ { UNICODE_MODE, -1, "ÿ1234\012à1234a\0121\01223456\0127890àAàDà\012à", -1, 0, 9, 70, 0, "(45) 55 100 95 12 34 101 74 101 98 64 99 12 34 100 65 98 74 17 98 74 18 99 34 56 101 74 99", "BWIPP different encodation, uses Sh2C + other differences" }, + /* 41*/ { UNICODE_MODE, -1, "ÿ1234\012à1234ab\0121\01223456\012\0127890àAàBCDà\012\012à", -1, 0, 10, 70, 0, "(50) 62 100 95 12 34 101 74 101 98 64 99 12 34 100 65 66 98 74 17 98 74 18 99 34 56 101 74", "BWIPP different encodation, uses Sh2C + other differences" }, + /* 42*/ { UNICODE_MODE, -1, "ÿ123456\012à123456abcd\0121\01223456\012\0127890àAàBCDEà\012\012à", -1, 0, 11, 70, 0, "(55) 69 100 95 12 34 56 101 74 101 98 64 99 12 34 56 100 65 66 67 68 98 74 17 98 74 18 99", "BWIPP different encodation, uses Sh3C + other differences" }, + /* 43*/ { UNICODE_MODE, -1, "ÿ12345678\012à12345678abcdef\0121\01223456\012\0127890àAàBCDEFà\012\012à", -1, 0, 12, 70, 0, "(60) 76 100 95 12 34 56 78 101 74 101 98 64 99 12 34 56 78 100 65 66 67 68 69 70 98 74 17", "BWIPP different encodation, uses Sh2C + other differences" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; struct zint_symbol *symbol; char escaped[1024]; + char cmp_buf[8192]; + char cmp_msg[1024]; + + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_input"); @@ -222,15 +245,41 @@ static void test_input(const testCtx *const p_ctx) { assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); if (p_ctx->generate) { - printf(" /*%3d*/ { %s, %d, \"%s\", %d, %s, %d, %d, \"%s\", \"%s\" },\n", + printf(" /*%3d*/ { %s, %d, \"%s\", %d, %s, %d, %d, %d, \"%s\", \"%s\" },\n", i, testUtilInputModeName(data[i].input_mode), data[i].option_1, testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), data[i].length, - testUtilErrorName(data[i].ret), symbol->rows, symbol->width, symbol->errtxt, data[i].comment); + testUtilErrorName(data[i].ret), symbol->rows, symbol->width, data[i].bwipp_cmp, symbol->errtxt, data[i].comment); } else { assert_zero(strcmp((char *) symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); if (ret < ZINT_ERROR) { assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d (%s)\n", i, symbol->rows, data[i].expected_rows, data[i].data); assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); + + if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, -1, -1, debug)) { + if (!data[i].bwipp_cmp) { + if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); + } else { + char modules_dump[4096]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilBwipp(i, symbol, data[i].option_1, -1, -1, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); + assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); + assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); + } + } + if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { + int cmp_len, ret_len; + char modules_dump[4096]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); + assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); + assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); + } } } @@ -302,10 +351,11 @@ static void test_encode(const testCtx *const p_ctx) { struct zint_symbol *symbol; char escaped[1024]; - char bwipp_buf[8192]; - char bwipp_msg[1024]; + char cmp_buf[8192]; + char cmp_msg[1024]; int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_encode"); @@ -339,12 +389,23 @@ static void test_encode(const testCtx *const p_ctx) { assert_zero(ret, "i:%d testUtilModulesCmp ret %d != 0 width %d row %d (%s)\n", i, ret, width, row, data[i].data); if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, -1, -1, debug)) { - ret = testUtilBwipp(i, symbol, data[i].option_1, -1, -1, data[i].data, length, NULL, bwipp_buf, sizeof(bwipp_buf), NULL); + ret = testUtilBwipp(i, symbol, data[i].option_1, -1, -1, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); - ret = testUtilBwippCmp(symbol, bwipp_msg, bwipp_buf, data[i].expected); + ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, data[i].expected); assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", - i, testUtilBarcodeName(symbol->symbology), ret, bwipp_msg, bwipp_buf, data[i].expected); + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, data[i].expected); + } + if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { + int cmp_len, ret_len; + char modules_dump[4096]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len); + assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len); + assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped); } } } diff --git a/backend/tests/test_code49.c b/backend/tests/test_code49.c index f1bd2ef8..4233d7c1 100644 --- a/backend/tests/test_code49.c +++ b/backend/tests/test_code49.c @@ -101,7 +101,7 @@ static void test_input(const testCtx *const p_ctx) { US U+001F (\037, 31), S1 5 */ struct item data[] = { - /* 0*/ { UNICODE_MODE, -1, "é", -1, ZINT_ERROR_INVALID_DATA, 0, 0, "Error 431: Invalid character in input data", "ASCII only" }, + /* 0*/ { UNICODE_MODE, -1, "é", -1, ZINT_ERROR_INVALID_DATA, 0, 0, "Error 431: Invalid character in input data, extended ASCII not allowed", "ASCII only" }, /* 1*/ { UNICODE_MODE, -1, "EXAMPLE 2", -1, 0, 2, 70, "(16) 14 33 10 22 25 21 14 41 38 2 35 14 18 13 0 22", "2.3.7 Symbol Example" }, /* 2*/ { UNICODE_MODE, -1, "12345", -1, 0, 2, 70, "(16) 5 17 9 48 48 48 48 27 48 48 13 23 0 13 2 0", "2.3 Example 1: Numeric Encodation (Start 2, Numeric)" }, /* 3*/ { UNICODE_MODE, -1, "123456", -1, 0, 2, 70, "(16) 5 17 9 6 48 48 48 34 48 48 36 9 23 41 2 11", "2.3 Example 1: Numeric Encodation" }, @@ -132,6 +132,10 @@ static void test_input(const testCtx *const p_ctx) { struct zint_symbol *symbol; char escaped[1024]; + char cmp_buf[8192]; + char cmp_msg[1024]; + + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ testStart("test_input"); @@ -155,10 +159,21 @@ static void test_input(const testCtx *const p_ctx) { testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), data[i].length, testUtilErrorName(data[i].ret), symbol->rows, symbol->width, symbol->errtxt, data[i].comment); } else { + assert_zero(strcmp((char *) symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); if (ret < ZINT_ERROR) { assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d (%s)\n", i, symbol->rows, data[i].expected_rows, data[i].data); assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); - assert_zero(strcmp((char *) symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); + + if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, -1, -1, debug)) { + char modules_dump[4096]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilBwipp(i, symbol, data[i].option_1, -1, -1, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); + assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); + assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); + } } } diff --git a/backend/tests/test_dmatrix.c b/backend/tests/test_dmatrix.c index 64a4dcd0..3fa46fd8 100644 --- a/backend/tests/test_dmatrix.c +++ b/backend/tests/test_dmatrix.c @@ -926,6 +926,11 @@ static void test_input(const testCtx *const p_ctx) { /*237*/ { UNICODE_MODE, 0, -1, -1, -1, "AAAAAAAAAAAAAA12a", 0, 0, 12, 26, 0, "E6 59 BF 59 BF 59 BF 59 BF FE 42 42 8E 62 81 ED 19 C5 3F C8 AC F1 E9 F5 68 75 AA 6C 14 72", "CCCCCCCCCCCCAAAAA; BWIPP same as FAST_MODE", 0 }, /*238*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, "1234ééé12", 0, 0, 8, 32, 0, "8E A4 E7 59 D5 6B EB 6A 8E 81 22 4D 35 A9 CA 58 B3 1B 33 B7 DD", "N12 N34 BAS BE9 BE9 ASC FN4 A69 N12; BWIPP same as non-FAST_MODE", 0 }, /*239*/ { UNICODE_MODE, 0, -1, -1, -1, "1234ééé12", 0, 0, 14, 14, 1, "8E A4 E7 5A D5 6B 01 8E 1C 5C 58 A7 11 8D DD A8 D6 B9", "", 1 }, + /*240*/ { UNICODE_MODE, 0, -1, -1, -1, "A*B>C 1A*B>C 1\013*B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 FE 21 32 0C EE 08 9B 64 7E 57 B8 0F 04 21 72 FE 81 68 FE", "Okapi datamatrix/ascii-within-x12.png", 1 }, + /*241*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, "A*B>C 1A*B>C 1\013*B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 FE 21 32 0C EE 08 9B 64 7E 57 B8 0F 04 21 72 FE 81 68 FE", "Okapi datamatrix/ascii-within-x12.png, process_p 2", 1 }, + /*242*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, "A*B>C 1A*B>C \0131*B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 FE 21 0C EE 1F 78 0F 04 21 72 5E 21 13 97 FE 2B 81 68 FE", "process_p 1", 1 }, + /*243*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, "A*B>C 1A*B>C\013 1*B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 FE 0C EE 13 8A 5E 21 13 97 08 9B 64 7E FE 42 2B 81 68 FE", "process_p 0", 1 }, + /*244*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, "A*B>C 1A*B>C 1*\013B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 13 8A FE 0C EE 5E 21 13 97 08 9B 64 7E FE 42 2B 81 68 FE", "process_p 0", 1 }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; diff --git a/backend/tests/test_imail.c b/backend/tests/test_imail.c index 66d93b02..c5a63874 100644 --- a/backend/tests/test_imail.c +++ b/backend/tests/test_imail.c @@ -226,6 +226,11 @@ static void test_input(const testCtx *const p_ctx) { int i, length, ret; struct zint_symbol *symbol; + char cmp_buf[8192]; + char cmp_msg[1024]; + + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + testStart("test_input"); for (i = 0; i < data_size; i++) { @@ -243,6 +248,17 @@ static void test_input(const testCtx *const p_ctx) { if (ret < ZINT_ERROR) { assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows); assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width); + + if (do_bwipp && testUtilCanBwipp(i, symbol, -1, -1, -1, debug)) { + char modules_dump[4096]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilBwipp(i, symbol, -1, -1, -1, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); + assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); + assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); + } } ZBarcode_Delete(symbol); diff --git a/backend/tests/test_medical.c b/backend/tests/test_medical.c index b923bbd7..10cdc6f6 100644 --- a/backend/tests/test_medical.c +++ b/backend/tests/test_medical.c @@ -149,40 +149,47 @@ static void test_input(const testCtx *const p_ctx) { int expected_rows; int expected_width; const char *expected_errtxt; + int bwipp_cmp; + const char *comment; }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { BARCODE_CODABAR, "A1234B", 0, 1, 62, "" }, - /* 1*/ { BARCODE_CODABAR, "1234B", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 358: Does not begin with \"A\", \"B\", \"C\" or \"D\"" }, - /* 2*/ { BARCODE_CODABAR, "A1234", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 359: Does not end with \"A\", \"B\", \"C\" or \"D\"" }, - /* 3*/ { BARCODE_CODABAR, "A1234E", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 359: Does not end with \"A\", \"B\", \"C\" or \"D\"" }, - /* 4*/ { BARCODE_CODABAR, "C123.D", 0, 1, 63, "" }, - /* 5*/ { BARCODE_CODABAR, "C123,D", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 357: Invalid character in data (\"0123456789-$:/.+ABCD\" only)" }, - /* 6*/ { BARCODE_CODABAR, "D:C", 0, 1, 33, "" }, - /* 7*/ { BARCODE_CODABAR, "DCC", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 363: Cannot contain \"A\", \"B\", \"C\" or \"D\"" }, - /* 8*/ { BARCODE_CODABAR, "AB", ZINT_ERROR_TOO_LONG, -1, -1, "Error 362: Input too short (3 character minimum)" }, - /* 9*/ { BARCODE_PHARMA, "131070", 0, 1, 78, "" }, - /* 10*/ { BARCODE_PHARMA, "131071", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 352: Data out of range (3 to 131070)" }, - /* 11*/ { BARCODE_PHARMA, "3", 0, 1, 4, "" }, - /* 12*/ { BARCODE_PHARMA, "2", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 352: Data out of range (3 to 131070)" }, - /* 13*/ { BARCODE_PHARMA, "1", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 352: Data out of range (3 to 131070)" }, - /* 14*/ { BARCODE_PHARMA, "12A", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 351: Invalid character in data (digits only)" }, - /* 15*/ { BARCODE_PHARMA_TWO, "64570080", 0, 2, 31, "" }, - /* 16*/ { BARCODE_PHARMA_TWO, "64570081", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 353: Data out of range (4 to 64570080)" }, - /* 17*/ { BARCODE_PHARMA_TWO, "4", 0, 2, 3, "" }, - /* 18*/ { BARCODE_PHARMA_TWO, "3", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 353: Data out of range (4 to 64570080)" }, - /* 19*/ { BARCODE_PHARMA_TWO, "2", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 353: Data out of range (4 to 64570080)" }, - /* 20*/ { BARCODE_PHARMA_TWO, "1", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 353: Data out of range (4 to 64570080)" }, - /* 21*/ { BARCODE_PHARMA_TWO, "123A", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 355: Invalid character in data (digits only)" }, - /* 22*/ { BARCODE_CODE32, "12345678", 0, 1, 103, "" }, - /* 23*/ { BARCODE_CODE32, "9", 0, 1, 103, "" }, - /* 24*/ { BARCODE_CODE32, "0", 0, 1, 103, "" }, - /* 25*/ { BARCODE_CODE32, "A", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 361: Invalid character in data (digits only)" }, + /* 0*/ { BARCODE_CODABAR, "A1234B", 0, 1, 62, "", 1, "" }, + /* 1*/ { BARCODE_CODABAR, "1234B", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 358: Does not begin with \"A\", \"B\", \"C\" or \"D\"", 1, "" }, + /* 2*/ { BARCODE_CODABAR, "A1234", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 359: Does not end with \"A\", \"B\", \"C\" or \"D\"", 1, "" }, + /* 3*/ { BARCODE_CODABAR, "A1234E", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 359: Does not end with \"A\", \"B\", \"C\" or \"D\"", 1, "" }, + /* 4*/ { BARCODE_CODABAR, "C123.D", 0, 1, 63, "", 1, "" }, + /* 5*/ { BARCODE_CODABAR, "C123,D", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 357: Invalid character in data (\"0123456789-$:/.+ABCD\" only)", 1, "" }, + /* 6*/ { BARCODE_CODABAR, "D:C", 0, 1, 33, "", 1, "" }, + /* 7*/ { BARCODE_CODABAR, "DCC", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 363: Cannot contain \"A\", \"B\", \"C\" or \"D\"", 1, "" }, + /* 8*/ { BARCODE_CODABAR, "AB", ZINT_ERROR_TOO_LONG, -1, -1, "Error 362: Input too short (3 character minimum)", 1, "" }, + /* 9*/ { BARCODE_PHARMA, "131070", 0, 1, 78, "", 1, "" }, + /* 10*/ { BARCODE_PHARMA, "131071", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 352: Data out of range (3 to 131070)", 1, "" }, + /* 11*/ { BARCODE_PHARMA, "3", 0, 1, 4, "", 1, "" }, + /* 12*/ { BARCODE_PHARMA, "2", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 352: Data out of range (3 to 131070)", 1, "" }, + /* 13*/ { BARCODE_PHARMA, "1", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 352: Data out of range (3 to 131070)", 1, "" }, + /* 14*/ { BARCODE_PHARMA, "12A", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 351: Invalid character in data (digits only)", 1, "" }, + /* 15*/ { BARCODE_PHARMA_TWO, "64570080", 0, 2, 31, "", 1, "" }, + /* 16*/ { BARCODE_PHARMA_TWO, "64570081", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 353: Data out of range (4 to 64570080)", 1, "" }, + /* 17*/ { BARCODE_PHARMA_TWO, "4", 0, 2, 3, "", 1, "" }, + /* 18*/ { BARCODE_PHARMA_TWO, "3", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 353: Data out of range (4 to 64570080)", 1, "" }, + /* 19*/ { BARCODE_PHARMA_TWO, "2", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 353: Data out of range (4 to 64570080)", 1, "" }, + /* 20*/ { BARCODE_PHARMA_TWO, "1", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 353: Data out of range (4 to 64570080)", 1, "" }, + /* 21*/ { BARCODE_PHARMA_TWO, "123A", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 355: Invalid character in data (digits only)", 1, "" }, + /* 22*/ { BARCODE_CODE32, "12345678", 0, 1, 103, "", 1, "" }, + /* 23*/ { BARCODE_CODE32, "9", 0, 1, 103, "", 0, "BWIPP requires length 8 or 9" }, + /* 24*/ { BARCODE_CODE32, "0", 0, 1, 103, "", 0, "BWIPP requires length 8 or 9" }, + /* 25*/ { BARCODE_CODE32, "A", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 361: Invalid character in data (digits only)", 1, "" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; struct zint_symbol *symbol; + char cmp_buf[8192]; + char cmp_msg[1024]; + + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + testStart("test_input"); for (i = 0; i < data_size; i++) { @@ -196,12 +203,27 @@ static void test_input(const testCtx *const p_ctx) { ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); + assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d symbol->errtxt %s != %s\n", i, symbol->errtxt, data[i].expected_errtxt); if (ret < ZINT_ERROR) { assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows); assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width); + + if (do_bwipp && testUtilCanBwipp(i, symbol, -1, -1, -1, debug)) { + if (!data[i].bwipp_cmp) { + if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); + } else { + char modules_dump[4096]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilBwipp(i, symbol, -1, -1, -1, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); + assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); + assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); + } + } } - assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d symbol->errtxt %s != %s\n", i, symbol->errtxt, data[i].expected_errtxt); ZBarcode_Delete(symbol); } diff --git a/backend/tests/test_postal.c b/backend/tests/test_postal.c index 94ce6f36..b3d218f5 100644 --- a/backend/tests/test_postal.c +++ b/backend/tests/test_postal.c @@ -224,61 +224,68 @@ static void test_input(const testCtx *const p_ctx) { int expected_rows; int expected_width; float expected_height; + int bwipp_cmp; + char *comment; }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { BARCODE_FLAT, -1, 0, "1234567890", 0, 1, 90, 50 }, - /* 1*/ { BARCODE_FLAT, -1, 0, "A", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, - /* 2*/ { BARCODE_POSTNET, -1, 0, "12345", 0, 2, 63, 12 }, - /* 3*/ { BARCODE_POSTNET, -1, 0, "123457689", 0, 2, 103, 12 }, - /* 4*/ { BARCODE_POSTNET, -1, 0, "12345768901", 0, 2, 123, 12 }, - /* 5*/ { BARCODE_POSTNET, -1, 0, "0", ZINT_WARN_NONCOMPLIANT, 2, 23, 12 }, - /* 6*/ { BARCODE_POSTNET, -1, 0, "1234", ZINT_WARN_NONCOMPLIANT, 2, 53, 12 }, - /* 7*/ { BARCODE_POSTNET, -1, 0, "123456", ZINT_WARN_NONCOMPLIANT, 2, 73, 12 }, - /* 8*/ { BARCODE_POSTNET, -1, 0, "123456789012", ZINT_WARN_NONCOMPLIANT, 2, 133, 12 }, - /* 9*/ { BARCODE_POSTNET, -1, 0, "1234A", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, - /* 10*/ { BARCODE_POSTNET, -1, 0.9, "12345", 0, 2, 63, 1 }, - /* 11*/ { BARCODE_FIM, -1, 0, "a", 0, 1, 17, 50 }, - /* 12*/ { BARCODE_FIM, -1, 0, "b", 0, 1, 17, 50 }, - /* 13*/ { BARCODE_FIM, -1, 0, "c", 0, 1, 17, 50 }, - /* 14*/ { BARCODE_FIM, -1, 0, "d", 0, 1, 17, 50 }, - /* 15*/ { BARCODE_FIM, -1, 0, "ad", ZINT_ERROR_TOO_LONG, -1, -1, -1 }, - /* 16*/ { BARCODE_FIM, -1, 0, "e", 0, 1, 17, 50 }, - /* 17*/ { BARCODE_FIM, -1, 0, "f", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, - /* 18*/ { BARCODE_CEPNET, -1, 0, "1234567A", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, - /* 19*/ { BARCODE_RM4SCC, -1, 0, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 3, 299, 8 }, - /* 20*/ { BARCODE_RM4SCC, -1, 0, "a", 0, 3, 19, 8 }, /* Converts to upper */ - /* 21*/ { BARCODE_RM4SCC, -1, 0, ",", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, - /* 22*/ { BARCODE_JAPANPOST, -1, 0, "1234567890-ABCD", 0, 3, 133, 8 }, /* 19 symbol chars */ - /* 23*/ { BARCODE_JAPANPOST, -1, 0, "1234567890-ABCD1", 0, 3, 133, 8 }, /* 20 symbol chars */ - /* 24*/ { BARCODE_JAPANPOST, -1, 0, "1234567890-ABCDE", ZINT_ERROR_TOO_LONG, -1, -1, -1 }, /* 21 symbol chars */ - /* 25*/ { BARCODE_JAPANPOST, -1, 0, "1234567890-ABCD12", ZINT_ERROR_TOO_LONG, -1, -1, -1 }, /* 21 symbol chars */ - /* 26*/ { BARCODE_JAPANPOST, -1, 0, "1234567890ABCDE", 0, 3, 133, 8 }, /* 20 symbol chars */ - /* 27*/ { BARCODE_JAPANPOST, -1, 0, "a", 0, 3, 133, 8 }, /* Converts to upper */ - /* 28*/ { BARCODE_JAPANPOST, -1, 0, ",", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, - /* 29*/ { BARCODE_KOREAPOST, -1, 0, "123456", 0, 1, 167, 50 }, - /* 30*/ { BARCODE_KOREAPOST, -1, 0, "A", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, - /* 31*/ { BARCODE_PLANET, -1, 0, "12345678901", 0, 2, 123, 12 }, - /* 32*/ { BARCODE_PLANET, -1, 0, "1234567890123", 0, 2, 143, 12 }, - /* 33*/ { BARCODE_PLANET, -1, 0, "0", ZINT_WARN_NONCOMPLIANT, 2, 23, 12 }, - /* 34*/ { BARCODE_PLANET, -1, 0, "1234567890", ZINT_WARN_NONCOMPLIANT, 2, 113, 12 }, - /* 35*/ { BARCODE_PLANET, -1, 0, "123456789012", ZINT_WARN_NONCOMPLIANT, 2, 133, 12 }, - /* 36*/ { BARCODE_PLANET, -1, 0, "12345678901234", ZINT_WARN_NONCOMPLIANT, 2, 153, 12 }, - /* 37*/ { BARCODE_PLANET, -1, 0, "1234567890A", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, - /* 38*/ { BARCODE_KIX, -1, 0, "0123456789ABCDEFGH", 0, 3, 143, 8 }, - /* 39*/ { BARCODE_KIX, -1, 0, "a", 0, 3, 7, 8 }, /* Converts to upper */ - /* 40*/ { BARCODE_KIX, -1, 0, ",", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, - /* 41*/ { BARCODE_DAFT, -1, 0, "DAFT", 0, 3, 7, 8 }, - /* 42*/ { BARCODE_DAFT, -1, 0, "a", 0, 3, 1, 8 }, /* Converts to upper */ - /* 43*/ { BARCODE_DAFT, -1, 0, "B", ZINT_ERROR_INVALID_DATA, -1, -1, -1 }, - /* 44*/ { BARCODE_DAFT, -1, 1.9, "DAFT", 0, 3, 7, 2 }, - /* 45*/ { BARCODE_DAFT, 500, 0.9, "DAFT", 0, 3, 7, 2 }, /* 50% ratio */ - /* 46*/ { BARCODE_DAFT, 500, 0.4, "DAFT", 0, 3, 7, 8 }, /* 50% ratio */ + /* 0*/ { BARCODE_FLAT, -1, 0, "1234567890", 0, 1, 90, 50, 1, "" }, + /* 1*/ { BARCODE_FLAT, -1, 0, "A", ZINT_ERROR_INVALID_DATA, -1, -1, -1, 1, "" }, + /* 2*/ { BARCODE_POSTNET, -1, 0, "12345", 0, 2, 63, 12, 1, "" }, + /* 3*/ { BARCODE_POSTNET, -1, 0, "123457689", 0, 2, 103, 12, 1, "" }, + /* 4*/ { BARCODE_POSTNET, -1, 0, "12345768901", 0, 2, 123, 12, 1, "" }, + /* 5*/ { BARCODE_POSTNET, -1, 0, "0", ZINT_WARN_NONCOMPLIANT, 2, 23, 12, 0, "BWIPP requires standard lengths" }, + /* 6*/ { BARCODE_POSTNET, -1, 0, "1234", ZINT_WARN_NONCOMPLIANT, 2, 53, 12, 0, "BWIPP requires standard lengths" }, + /* 7*/ { BARCODE_POSTNET, -1, 0, "123456", ZINT_WARN_NONCOMPLIANT, 2, 73, 12, 0, "BWIPP requires standard lengths" }, + /* 8*/ { BARCODE_POSTNET, -1, 0, "123456789012", ZINT_WARN_NONCOMPLIANT, 2, 133, 12, 0, "BWIPP requires standard lengths" }, + /* 9*/ { BARCODE_POSTNET, -1, 0, "1234A", ZINT_ERROR_INVALID_DATA, -1, -1, -1, 1, "" }, + /* 10*/ { BARCODE_POSTNET, -1, 0.9, "12345", 0, 2, 63, 1, 1, "" }, + /* 11*/ { BARCODE_FIM, -1, 0, "a", 0, 1, 17, 50, 1, "" }, + /* 12*/ { BARCODE_FIM, -1, 0, "b", 0, 1, 17, 50, 1, "" }, + /* 13*/ { BARCODE_FIM, -1, 0, "c", 0, 1, 17, 50, 1, "" }, + /* 14*/ { BARCODE_FIM, -1, 0, "d", 0, 1, 17, 50, 1, "" }, + /* 15*/ { BARCODE_FIM, -1, 0, "ad", ZINT_ERROR_TOO_LONG, -1, -1, -1, 1, "" }, + /* 16*/ { BARCODE_FIM, -1, 0, "e", 0, 1, 17, 50, 1, "" }, + /* 17*/ { BARCODE_FIM, -1, 0, "f", ZINT_ERROR_INVALID_DATA, -1, -1, -1, 1, "" }, + /* 18*/ { BARCODE_CEPNET, -1, 0, "1234567A", ZINT_ERROR_INVALID_DATA, -1, -1, -1, 1, "" }, + /* 19*/ { BARCODE_RM4SCC, -1, 0, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 3, 299, 8, 1, "" }, + /* 20*/ { BARCODE_RM4SCC, -1, 0, "a", 0, 3, 19, 8, 1, "" }, /* Converts to upper */ + /* 21*/ { BARCODE_RM4SCC, -1, 0, ",", ZINT_ERROR_INVALID_DATA, -1, -1, -1, 1, "" }, + /* 22*/ { BARCODE_JAPANPOST, -1, 0, "1234567890-ABCD", 0, 3, 133, 8, 1, "" }, /* 19 symbol chars */ + /* 23*/ { BARCODE_JAPANPOST, -1, 0, "1234567890-ABCD1", 0, 3, 133, 8, 1, "" }, /* 20 symbol chars */ + /* 24*/ { BARCODE_JAPANPOST, -1, 0, "1234567890-ABCDE", ZINT_ERROR_TOO_LONG, -1, -1, -1, 1, "" }, /* 21 symbol chars */ + /* 25*/ { BARCODE_JAPANPOST, -1, 0, "1234567890-ABCD12", ZINT_ERROR_TOO_LONG, -1, -1, -1, 1, "" }, /* 21 symbol chars */ + /* 26*/ { BARCODE_JAPANPOST, -1, 0, "1234567890ABCDE", 0, 3, 133, 8, 1, "" }, /* 20 symbol chars */ + /* 27*/ { BARCODE_JAPANPOST, -1, 0, "a", 0, 3, 133, 8, 1, "" }, /* Converts to upper */ + /* 28*/ { BARCODE_JAPANPOST, -1, 0, ",", ZINT_ERROR_INVALID_DATA, -1, -1, -1, 1, "" }, + /* 29*/ { BARCODE_KOREAPOST, -1, 0, "123456", 0, 1, 167, 50, 1, "" }, + /* 30*/ { BARCODE_KOREAPOST, -1, 0, "A", ZINT_ERROR_INVALID_DATA, -1, -1, -1, 1, "" }, + /* 31*/ { BARCODE_PLANET, -1, 0, "12345678901", 0, 2, 123, 12, 1, "" }, + /* 32*/ { BARCODE_PLANET, -1, 0, "1234567890123", 0, 2, 143, 12, 1, "" }, + /* 33*/ { BARCODE_PLANET, -1, 0, "0", ZINT_WARN_NONCOMPLIANT, 2, 23, 12, 0, "BWIPP requires standard lengths" }, + /* 34*/ { BARCODE_PLANET, -1, 0, "1234567890", ZINT_WARN_NONCOMPLIANT, 2, 113, 12, 0, "BWIPP requires standard lengths" }, + /* 35*/ { BARCODE_PLANET, -1, 0, "123456789012", ZINT_WARN_NONCOMPLIANT, 2, 133, 12, 0, "BWIPP requires standard lengths" }, + /* 36*/ { BARCODE_PLANET, -1, 0, "12345678901234", ZINT_WARN_NONCOMPLIANT, 2, 153, 12, 0, "BWIPP requires standard lengths" }, + /* 37*/ { BARCODE_PLANET, -1, 0, "1234567890A", ZINT_ERROR_INVALID_DATA, -1, -1, -1, 1, "" }, + /* 38*/ { BARCODE_KIX, -1, 0, "0123456789ABCDEFGH", 0, 3, 143, 8, 1, "" }, + /* 39*/ { BARCODE_KIX, -1, 0, "a", 0, 3, 7, 8, 1, "" }, /* Converts to upper */ + /* 40*/ { BARCODE_KIX, -1, 0, ",", ZINT_ERROR_INVALID_DATA, -1, -1, -1, 1, "" }, + /* 41*/ { BARCODE_DAFT, -1, 0, "DAFT", 0, 3, 7, 8, 1, "" }, + /* 42*/ { BARCODE_DAFT, -1, 0, "a", 0, 3, 1, 8, 1, "" }, /* Converts to upper */ + /* 43*/ { BARCODE_DAFT, -1, 0, "B", ZINT_ERROR_INVALID_DATA, -1, -1, -1, 1, "" }, + /* 44*/ { BARCODE_DAFT, -1, 1.9, "DAFT", 0, 3, 7, 2, 1, "" }, + /* 45*/ { BARCODE_DAFT, 500, 0.9, "DAFT", 0, 3, 7, 2, 1, "" }, /* 50% ratio */ + /* 46*/ { BARCODE_DAFT, 500, 0.4, "DAFT", 0, 3, 7, 8, 1, "" }, /* 50% ratio */ }; int data_size = ARRAY_SIZE(data); int i, length, ret; struct zint_symbol *symbol; + char cmp_buf[8192]; + char cmp_msg[1024]; + + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + testStart("test_input"); for (i = 0; i < data_size; i++) { @@ -300,6 +307,21 @@ static void test_input(const testCtx *const p_ctx) { assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows); assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width); assert_equal(symbol->height, data[i].expected_height, "i:%d symbol->height %g != %g\n", i, symbol->height, data[i].expected_height); + + if (do_bwipp && testUtilCanBwipp(i, symbol, -1, -1, -1, debug)) { + if (!data[i].bwipp_cmp) { + if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); + } else { + char modules_dump[4096]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilBwipp(i, symbol, -1, -1, -1, data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); + assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); + assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); + } + } } ZBarcode_Delete(symbol); diff --git a/backend/tests/testcommon.c b/backend/tests/testcommon.c index 77a2a16b..d71cf77a 100644 --- a/backend/tests/testcommon.c +++ b/backend/tests/testcommon.c @@ -2158,7 +2158,8 @@ static const char *testUtilBwippName(int index, const struct zint_symbol *symbol *gs1_cvt = 1; } return "gs1datamatrix"; - } else if (symbology == BARCODE_AZTEC || symbology == BARCODE_ULTRA) { + } else if (symbology == BARCODE_AZTEC || symbology == BARCODE_CODE16K || symbology == BARCODE_ULTRA + || symbology == BARCODE_CODE49) { if (debug & ZINT_DEBUG_TEST_PRINT) { printf("i:%d %s not BWIPP compatible, GS1_MODE not supported\n", index, testUtilBarcodeName(symbology)); @@ -2342,8 +2343,13 @@ static char *testUtilBwippUtf8Convert(const int index, const int symbology, cons index, eci, testUtilBarcodeName(symbology)); return NULL; } + if (utf8_to_eci(eci, data, converted, p_data_len) != 0) { + fprintf(stderr, "i:%d testUtilBwippUtf8Convert: failed to convert UTF-8 data for %s, default ECI %d\n", + index, testUtilBarcodeName(symbology), eci); + return NULL; + } - return (char *) data; + return (char *) converted; } #define GS_INITIAL_LEN 35 /* Length of cmd up to -q */ @@ -2612,7 +2618,7 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int || symbology == BARCODE_USPS_IMAIL || symbology == BARCODE_AUSPOST || symbology == BARCODE_PHARMA_TWO) { for (r = 0; r < symbol->rows; r++) bwipp_row_height[r] = 1; /* Zap */ - if (symbology == BARCODE_KIX) { + if (symbology == BARCODE_RM4SCC || symbology == BARCODE_KIX || symbology == BARCODE_JAPANPOST || symbology == BARCODE_DAFT) { to_upper((unsigned char *) bwipp_data, (int) strlen(bwipp_data)); } else if (symbology == BARCODE_USPS_IMAIL) { char *dash = strchr(bwipp_data, '-'); @@ -2643,13 +2649,13 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int } } else if (symbology == BARCODE_FIM) { strcpy(bwipp_data, "fima"); - bwipp_data[3] = data[0] - 'A' + 'a'; + bwipp_data[3] = z_isupper(data[0]) ? data[0] - 'A' + 'a' : data[0]; } else if (symbology == BARCODE_CODE16K || symbology == BARCODE_CODE49) { sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%ssepheight=0", strlen(bwipp_opts_buf) ? " " : ""); bwipp_opts = bwipp_opts_buf; if (option_1 >= 2) { if ((symbology == BARCODE_CODE16K && option_1 <= 16) - || (symbology == BARCODE_CODE49 && option_1 <= 8)) { + || (symbology == BARCODE_CODE49 && option_1 <= 8 && option_1 >= symbol->rows)) { sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%srows=%d", strlen(bwipp_opts_buf) ? " " : "", option_1); } @@ -3043,8 +3049,8 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int } cnt = (int) fread(b, 1, symbol->width, fp); if (cnt != symbol->width) { - fprintf(stderr, "i:%d testUtilBwipp: failed to read symbol->width %d bytes, cnt %d (%s)\n", - index, symbol->width, cnt, cmd); + fprintf(stderr, "i:%d testUtilBwipp: failed to read row %d of %d, symbol->width %d bytes, cnt %d (%s)\n", + index, r + 1, symbol->rows, symbol->width, cnt, cmd); testutil_pclose(fp); return -1; } @@ -3275,7 +3281,7 @@ static const char *testUtilZXingCPPName(int index, const struct zint_symbol *sym { "Code128", BARCODE_CODE128, 20, }, { "ITF", BARCODE_DPLEIT, 21, }, { "ITF", BARCODE_DPIDENT, 22, }, - { "", BARCODE_CODE16K, 23, }, + { "Code16K", BARCODE_CODE16K, 23, }, { "", BARCODE_CODE49, 24, }, { "Code93", BARCODE_CODE93, 25, }, { "", -1, 26, }, @@ -3326,7 +3332,7 @@ static const char *testUtilZXingCPPName(int index, const struct zint_symbol *sym { "DataMatrix", BARCODE_DATAMATRIX, 71, }, { "Code128", BARCODE_EAN14, 72, }, { "Code39", BARCODE_VIN, 73, }, - { "", BARCODE_CODABLOCKF, 74, }, + { "CodablockF", BARCODE_CODABLOCKF, 74, }, { "Code128", BARCODE_NVE18, 75, }, { "", BARCODE_JAPANPOST, 76, }, { "", BARCODE_KOREAPOST, 77, }, @@ -3362,7 +3368,7 @@ static const char *testUtilZXingCPPName(int index, const struct zint_symbol *sym { "", -1, 107, }, { "", BARCODE_HIBC_MICPDF, 108, }, { "", -1, 109, }, - { "", BARCODE_HIBC_BLOCKF, 110, }, + { "CodablockF", BARCODE_HIBC_BLOCKF, 110, }, { "", -1, 111, }, { "Aztec", BARCODE_HIBC_AZTEC, 112, }, { "", -1, 113, }, @@ -3427,6 +3433,14 @@ static const char *testUtilZXingCPPName(int index, const struct zint_symbol *sym index, testUtilBarcodeName(symbology)); return NULL; } + } else if (symbology == BARCODE_CODABLOCKF || symbology == BARCODE_HIBC_BLOCKF) { + if (symbol->rows == 1) { /* Single row i.e. CODE128 not supported */ + if (debug & ZINT_DEBUG_TEST_PRINT) { + printf("i:%d %s not ZXing-C++ compatible, single row not supported\n", + index, testUtilBarcodeName(symbology)); + } + return NULL; + } } else if (is_extendable(symbology)) { if (symbology == BARCODE_EANX || symbology == BARCODE_EANX_CHK) { if (length < 9) { diff --git a/backend/tests/tools/bwipp_dump-barcode.ps.cat b/backend/tests/tools/bwipp_dump-barcode.ps.cat index 4466edc1..a21a13ed 100644 --- a/backend/tests/tools/bwipp_dump-barcode.ps.cat +++ b/backend/tests/tools/bwipp_dump-barcode.ps.cat @@ -116,36 +116,84 @@ ret /pixs known { sbs length 1 sub } ifelse def - % If should use bhs/bbs to emulate rows (DAFT/pharmacode2) (hacky) /nosbs false def - /minh 999999 def - /midh 0 def - /maxh 0 def - /maxb 0 def - systemdict /hs known ret /bhs known and ret /bbs known and { + + % Check for pharmacode2 + b (pharmacode2) eq { + /nosbs true def /bhs ret /bhs get def /bbs ret /bbs get def + 0 1 bbs length 1 sub { + /i exch def + i 0 ne { (0) print } if + bbs i get 0.1 lt { + bhs i get 0.3 gt { (1) print } { (0) print } ifelse + } { + bhs i get 0.1 gt { (1) print } { (0) print } ifelse + } ifelse + } for + n { (\n) print } if + 0 1 bbs length 1 sub { + /i exch def + i 0 ne { (0) print } if + bbs i get 0.1 lt { + bhs i get 0.1 gt { (1) print } { (0) print } ifelse + } { + bhs i get 0.3 gt { (1) print } { (0) print } ifelse + } ifelse + } for + n { (\n) print } if + } if + + % Check for 2-track postal + b (postnet) eq b (planet) eq or { + /nosbs true def + /bhs ret /bhs get def 0 1 bhs length 1 sub { /i exch def - /h bhs i get def - /b bbs i get def - h minh lt { /minh h def } if - h maxh gt { /maxh h def } if - h minh ne h maxh ne and { /midh h def } if - b maxb gt { /maxb b def } if + i 0 ne { (0) print } if + bhs i get 0.1 gt { (1) print } { (0) print } ifelse } for - 0 1 limit { + n { (\n) print } if + 0 1 bhs length 1 sub { /i exch def - i 2 mod 0 eq { % i is even - /h bhs i 2 idiv get def - /b bbs i 2 idiv get def - h maxh eq h midh eq b maxb eq and or maxb 0 ne b maxb eq and midh 0 eq and h minh eq and or { (1) } { (0) } ifelse print % Yeah, me too + i 0 ne { (0) print } if + bhs i get 0.01 lt { (0) print } { (1) print } ifelse + } for + n { (\n) print } if + } if + + % Check for 4-track postal + b (auspost) eq b (kix) eq or b (royalmail) eq or b (onecode) eq or b (japanpost) eq or b (daft) eq or { + /nosbs true def + /bhs ret /bhs get def + /bbs ret /bbs get def + 0 1 bbs length 1 sub { + /i exch def + i 0 ne { (0) print } if + bbs i get 0.05 lt { + bhs i get 0.14 gt { (1) print } { (0) print } ifelse + } { + bhs i get 0.09 gt { (1) print } { (0) print } ifelse + } ifelse + } for + n { (\n) print } if + 0 1 bbs length 1 sub { + /i exch def + i 0 ne { (0) print } if + (1) print + } for + n { (\n) print } if + 0 1 bbs length 1 sub { + /i exch def + i 0 ne { (0) print } if + bbs i get 0.05 lt { + bhs i get 0.09 gt { (1) print } { (0) print } ifelse } { (0) print } ifelse } for n { (\n) print } if - maxb 0 ne midh 0 eq and maxb 0 eq minh maxh eq and or { /nosbs true def } if % No tracker (pharmacode2) } if % Process sbs @@ -162,20 +210,6 @@ ret /pixs known { } for n { (\n) print } if } if - - % Third row if DAFT, second row if no tracker (pharmacode2) - maxb 0 ne midh 0 ne or minh maxh eq or { - 0 1 limit { - /i exch def - i 2 mod 0 eq { % i is even - /b bbs i 2 idiv get def - b 0 eq { (1) } { (0) } ifelse print - } { - (0) print - } ifelse - } for - n { (\n) print } if - } if } if } ifelse diff --git a/backend/tests/tools/bwipp_dump.ps.tar.xz b/backend/tests/tools/bwipp_dump.ps.tar.xz index 8eafff7bb09d321e3fa6b1e42e90179edda3289d..fb5ad41630a940a0ac13b1bda16cc7b806f65125 100644 GIT binary patch literal 129000 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ãUp_ ztb09Sx4e|?6o;>%mskg3BQ<)#io2Fb2)g6g`#UzYw+K`^ODj zl!8xqCVpL>a!gO-mdgs+zbMTOrB^MsHCfT5z*q*q2ZdU=BR#Jzhsh@)?>n>c6W`Ms zwRcJ7Qf*_T$)ddQSz{vO7U|;h1-m&szKt3!wKG=(2I${6QHKBW-_IG^_EchwCOm{0 zF`EcE5xoQ;$Fb^?bj`u%wj*q^F2T~w)?pUgxl?{y5~hfA0?LK1_1xLI#fzFvvA@rN zCdEX)^F=281~ler*i}?gnn+T6|8l>MR38a#HuhoAxnFDVDQ4t$>9xxIqWn%DYRwLW z4hmj|5K`wYm+LzcnfuJ6)Fq9%9Z2BY$2`i~A6OS{Sglmc_%41oX?k9!Wd61QTo8_o zY;ON(rRJcC`sYb@p4M5?J$+x9@;b(p2(9l!yrv27XS1pwWtPK0ox1*raP{$?YK|i- zRm!oG{~(M=F8}zTIUoRrB4g|&YEUc;<}1w!m2M_X2|;}6FIlW3X7o5whv6tSfk|J* z8B)~U9cTBzNg!%87k<&J_O?%H`z*^ZH$iTR^VM^-K)~hlkPZ#xKzyG{?)dZw4cb7s zU6Z^`3cX0e>Jscn{NY*#a@b6G&()`XK6rWB0YN_)N!;%o4Id8-O9?(onH+H4WEEzsgV>8QBjeo zod;cVEN1;#_Y4}DNx7)Ns~B?8LyT7H*d?Jjssvg;EXiv7-kWnl?$hOIOPEx=clJx2 zix{wmtdY>}=4L0dWsa)z_ph-u+ml2crxsk&9K_;E{5c>YSGwNlZ4WYQ|MJ+qa&bcn z+M80HapHulO9LZ?_Reuw!!*euD@VSgup_jlS&9o!3yQH~=mruY6Y=@qH{Ydw58q9_ zIvMpXuj=1{hE!z?KZrH$JphPVoJQTKMTt`>jck5GrQuO`;e2>g6!1Gz**VqaL zD&V3~`&L!v>cyS?*rvha-ZRSPIjy8Lo?8Rm{yfdz2I<@ z2lM6uC5@AP3JuhREnP-CO+#CdO>WtwEM(TX@gXLeBPSNJ`Rc_7OCirV^UJf1C-?eq zNE%A$el^Px!(Pg#bp5Dvt-jw6*>=7Ny2QCRC&tPDI9LEDI`Bl{Y;Tz5VKtabV))dX zr3&x$+AEB*B?#cyS<16X?Cbh`BVul`=SY;X)!$=FP;rUvrZ8i}%YzY`68cVQ+W$x3 zvZy8Z-bk>_+%Bk@y?V45q<9cq03#KSQQF47Au+pFhXA-}WK1av$VH=ZYLVa0KwVN$ zxdW2&L%s_pVAOU*4IMsK4U zfcMi7L4}E(W<3H27D2@Q|n@;au8naEsT=eUxf0- z6^Jv@jM9k#9|ENX@tw!GpLdlMGqj3ViF#`12@-H_D-cPh8`%Rm(F>gjRC^ucTNS8vEBw zteG!g4gCgj*mIGJ06>QGCN3-a7~24oszC&efdU_4644#dj40%H0Y<+n~@wIi5F{sN+M*Uy5K!8+Y-Bh zl3ur~HaQhU)!E%qiyQ*`vDIXY7fh8AR%hQ$1MG#5c_g*N`0N!^XBqD-)NGbynpJ1D zd48+$+$_FVxB=Dd+WUPdlkZG$0f&^V1_8)1ct@wF@z7!`1t!lDBrn0fc)1(fZIy*9 zVKY``-p~;35?rmpl2KTbu$}zwm}B*)KpTLMZCb9x6|u zLueDRI*5Mk8es57UbXwEKdDuD_Oqc6UbWSb4aME(PT3X6zjNY$^2^R*s=qK50P&*FPpqqPPK;VF zcIO75#(h47W6orsRUI)i+Fd4z5%}J7?yIKfXpXeMB{c{DjI$-B-cSL<;#I>L>FQe9swu>4Q<}75J?mGCZ3}Nx?!S?LgF9LO?#RgXs&pNS9Gsv?vOF$+KROwo%#Sa0+%%;<76ZOp3MJR{l)n zLL{)yr1=oX#{sl}LXgBh;Cm?CUOjm+TG~ma;0NG+)BfmfL5)a~mqH25n~-3n>>SUH zLd|bMtL%JCOb06aNr!@E!H%i+^skWTO8xN!= zKfcxRuSE(z)1$ipDNSYrL|h6cyOzDDd5jDaN}Uoeap=X$)LWsf;mqyG(|7|o1`C<7 zr-DBm{k%ULdocO*EU5)!6WdmtBw*dD02qhKQMG-Gxq^UDN5;wNg|PB%H;$wAVCJ~i zK3V#WmxZ@c5LHhQ((v_WLthS&zMwMyx;#eb1`_LRndsB74L9#ftEZG-dSE6EO8rz} ztx2gnWo;}tlXL)OLEO-!MSS;a(IM{Jl4n>ylTZ%;9g`z$n|5lAiK;ez4@pW=?G%sF zQ5}{gO3B0oQSv7vRgQY(Q3tsX=az_?qiWDyr&~9F*bhRj6nZ8q>Zb4{z9<45e-rt+ zl&-IrIRxO#5t=Ft`bGYYq@ZPMbOjjFZ;Cn0`ey_fWpFVXjjz76B$@(-)3tOXSqpgw zbe=1?!EB5TP0$VOkcHiCj}PcUQo~jMtXmv-O~z(3wiu*J0M2vpHGnFXwb#gNkaXJQ zN6ag;OnZH(rjBmWYCOv{=z_jtwKa``x8q`}BAZR#a`^mtp(mIg?`wH10BP(}yGar` zi|QeGYMrCDS}yVPgVJ^odyQ{RH{AQ&NmpasOD$Wks zU?a~=2O={p^S1?U6EoZj5$i)4bSqV(KCy2G|F&si!}35hGD!PX_C|Dx-^!rABJfby zDP8Us^$af;Yob(|RgxNmQ)VjBL8KR)sTj4LvJf)9( zQVRvHBmbBz)A)`geCdgD4cgjqm~;%RJ;~gb$!dD&!!&n$(tlp#KjEwZ)jE~;2Go44 z{%^h>~5A;!hu@HmBE4kjl%xxqrRShOj(h7Qaz6c}&(0T(}7| zpr8)%C1!53$P9%mWipnLnaDMi8|CEgbJbg z-sW!H7lCNfd>Ag>3isKgs39wEi0n+%x&=c7=-fO=L2wDZrhQ0z3j}~hxzeZv3Nw{LiwKOoWQk@$*WuM{lN6+l%ItAe#S>?-aoacB zua@2G7;=X38JCJNvo!(Ror1?U-t-y95BAN8rYyX;jGM%xWlXsFfI#rj`hMl6z$<{a}R|U3fU)?n&hbzJ3^yVh~OqG{P%IauT|-H;eq%K+U^X2-t1*yo( zwx}N;tSTPcc@Q*jW4$m(gNq6?dTov`{Ub5M+7WTz#i3R63`g?Q_6|BzydHvP&vc} zA%QUK+68nN>GzG7D}VU-WK=PaJ0ox9oteON0<{GD%Nd!LLP7DAv_d^T;jG_;O8mL+S?yXW4`5;1NjY=R@L2-DVKr!g zM^V@$JaXnVDc7`Dnul%G55RnEyKNxBsAQ#FvD0ulz0M1gn`I$W;mR{oc3PIQT3PJ^k}adv<4W`|51&rf$&h4$U04n zDMnEaVNr34%jU6&rpB3?;fE??h5y7rb`%hP)e zRy--YU|s@f%{)ykzKDoOLw$8He-4#U3d8zsz3><$kl@qQ1%{uYk<{dJZIkCK*DM_4 zwhHy3P7=(7L_YhV3I6BllysftKpQt-i$*fdy-P(=fEG56sAlDCW8_~TPa_~UlMM?? zV6@|Qyo_lT+oV6|X;v*1v*AbiQRr8gx72xFb zHOQ(rR4RUh=Crv{6kKEYvNskzf^8_iD@3QfD_)(q-8%-UV!7gI-8_5rW5acsHP}e& zxcOTSL^SC%nivCA?_07woHmdM+R2d%y0BV~IIkG9R{Z?5ms(oKn;idYb4FJkm6%%b z-54_#xgX?kFSjG=s7V?yhT^B0YvKS-vu9q)D_e^rXIq<==(c)w zNR)G|)O7Ih0ZYw2j3=Oc1C4(?4UAVZ?CsHh%Wi>@DA_d=G9aV9@gUB#h$wIhc>B0B z7dn+J-`(VB?HQwycP9RGe`O2vhY&c7+-el!K)>T96ec~rfu$zBNf103qMv0? z%(bt$r>GJ1GX%t}3@=w8?0F{MIou9B$JA>NeCBSrxy7HoFXMxlVRdW%K^wU4^F$Md zxudYO+A?Z#wz6f47O7tFE$*{JS0s6x-a-IFK)k=Kf87}LgV&Vk3*eg*6zJV+#P+w$ z5A4N3$z?`Q=#%iuQ-U@Rl-iUXqQ3cIeYrqwNaYa0!8JJQ)k#>X7!`;UK8?qXOoLa<{?1KnSKJLO`QY(MY!isDd$qVnBBXwfa+@bvwd%Ey zo36`{V{*kN40_eX>zXZ-Di*1v6O1dNMQ0c@v8C&Nh2J`{b%IB$lA)_^Gikq!X<9+- zy6p+>$e*uyj1iPBP7yixC>C+`scy|eMvGN5RzG2Pz()WK)A`89aV+!Dw8>MB9+eZ3 z8c8buGI<-+xRTLB+|2ti97t`S=pR9CZLEszN;88IjPgf;3;;(_JZmw2+l&Bp2f@tI z$BTW~(;rB4uen9zLrMYhSC)lBi4)8vpR@6rx&R9mQVr2g276a9eEkoy4@t9Q2njCj zD>>4>x7T}0NSlPxfxngw?)IAycEHFPg=P-YfVRiyWv`UV9ok4+5?W2@zwb)YcUT6b zDu}U)n2C8u(e{WRhD%{FyS#~uiHd<_6Yegi{xlc}BwPSLp!bA$SP8+aIe|FiAeY?A zF~+jF@}CF$%&oro%uXiX9s-X?tzCi%?x&=M=XbW{dO0D`GAS3xX*%#eat>3D(Iz(& z^`1m)Z(dn-04&Athr6%I(!T_DgwQ)|SS+I{gk(QEnmpT&!|vjLL)4Z;g~=+k?hFXi z_m@3RvMIN%XrL`(^38s2?7fS!-hTWP*@wf=WIjA9xs+a3FsUpt$D;`4q(4DyG#^Q! z)S_fEAs>9Y2zI$SX!zzilAEKlf(^$^EN zp4MaqLrTGubxu;(wPHab;KCrw!TnY$@Fa7&Omh3%e8%3)=sx9-S5uX`YOG1yNFTTEZYe2B!@`i@h8KCOL z3{6b5WM}MXBI3SS3M))QsJM_4hJD-b9LkGRG&<;F*+4n8a9J^fpJ0lQs11iaP;Oir5!cExx zF4q`>mJ8;zc|km39`_ouPG{L-BaAz->IQHwbm?g=O_GogPA-Nf91)-hRHs4i`VArf z@ba=T=sMzBbq;m#R2W1Gib8?zi-v~b_W5QH^~M(i5a<}6bidcepEwnY*V)dd-Y~?& z3g@1_;F@iX>O@rxWlBqJTZ-`qNy5LEHH)SwVU%`biqrX7@pqm?SIj`rbZ>7Lo?~&znk^jNT(zB}vSZ9qisS!zpFoA5Qk2C3YNE zbXDpfICZxLhzH^$yXYLcC#=0^zlm`spkIA1(81M=02T0fK%=C4BHIEeFMOKb{lb^3 z`AHZwIs?>EPscUSL4Mz1WCEfsQ-zb6K zz#nwVPNgm-?C<6zybmv?!7epG+FTz*LN5$q68}@aQ2hv{)d;v-&QXGSRVxxpXl(Rz z@{YlL_{Zgh4s6T9y&_hC(#JK&XI3cRu=qGyRTi=2xY_VeMD+h-J4L(#KIW&??LVZ~ z&S?=MP~nbMnRaA&Wv;X%Hx{H&9o5Cj0#amV#zp@7_@zs6irNt ze?t@<%NHB*8CZnX6~jWVq_p>zIw-EHfug$$SSqA~G5e{ngRDv6fs!C2;uC@r zx0OrScI~sBqu-5o-n~XAwcws1DTkf*Z7xXinn+je%*+zkrl0Ek0|%yafcML%BQ}uI zd4V{D<9k7x(xQ6~-qlRd%7ZlmCzhPXI-D=!mE=Yz@S~intX3|fJ*(PTfkzgDf-K1< z*u>u&Ii@3{Ik23JXTTejh_KZ)pgkb1eNHy2iV6%|*|HuE0X7Sl-?+rYQ% za)zO!`KPTCl;+V@#`5qY08|h>)W4m_0)-D=%Kxg}G8L74d0M*xb_X zAksn=$#dP8Usn90+}?BM2z!te{*_&X91@}97F`Flfn^vhk6^|7WA=H7Js0}wk~5&i z!|BH+h>2R3VeoDQ-AwBcyx;+m{5-N3VvFpzzaj(z5E;3)G+3w%4V=3S!&d=J z7L5TLQ@1aRR^|JQL8i9AP(Bln_s27jAU-m(h^6DjfZ}$FGlwa+axE-f3DlA>>8= z2uXCu=^3swZ5*ZeZ90<7Cm}RTx>}d7J2X}HO}-^%{AbfgAu_Gon^}nx+&WL$_s1zP z6NLk=jlS6ycdvzIQ2Ba;S(%yT4NTK>0>eRT!K*iEcVb5w%gD$WmIwFZ{H=1DJ<;SY zd@pz#^D`By(ZEc)LR2{O`grR&ak5KSob0;Q78g7jhxa=m3mKs!RU>EduXYFD^iDmi z8=pWgriU>!G%N{oA9)vJB4To38b{EkB27`sT*zJ=x2MorQO|aP5r{-y>gi%IryKS` zW=9adL^$(URxO7u9cECB*Kp3jwb9A+_O*S9c44kVLbpDO@xRdX3!+DBF0ZDCks@2- zi%HVXSjdg`K*4bevh!_AqJTd1pA%I7t+e$~o%LwdI$Xy>IfZ)#aV7A$5*_%0l5Q6# zfy1L>i>@@-0h5~$HP$V+DJltrkLgOWmJ_R&uRamwPFK4>(Ne6R-NbL-S+0Q()9!`7 z9xMOz?V~^`c#Gn6neX1w8GqdKN~gQ3`w%FnJ5!Mqr_jHIjPTP3FN0B9XZzf#NV~?T z^q-52WZ!H>d14QRWx29F^VKz>huPU`{*#T^XWl8FUkaS?UY3^>)5tp?D&x3Zf{&Ck zOy4bQ{+x?!jyuyYbPillp4!@2{tt)!=O(Uu~kpI=xFurEa$m*IMVY_OJ_yI^?Oz}f8YJ9Fc>RU+p z;GOpeAlqx2KTO16;^7e(eL2(AN&Ph;%J)=C3&6oCN&ZV=Q@?$N>$c=|G5cjJ>hy9; z9uR~)64-}?9CO({Ku#CJHnCA4T+rZ%vEnB(qC!pzyCBklSizwT`bHI&q~Gx}lqt(E zk4%>U3+>uaqx?9hmIi}qD_Bwx^)0q3gwCwxzoRs_+96TO08}>L(#O~Z7_Ci2rXlFc z8eWVuL1I+N=Y(D5{ikD;Dx8B=_$N3WUkG?2qR>*j9(4F`f~XLeL`x{e9~-oI0O7R+ z*h9k4la_`7>y>bbd#fijy^}avUla+~9Uvv_znR2}HlIxa3 zdCr=+)fp}CEj7@G`Czp<{of2botBlX9Jk-&Pd`kHCA+Rb9P!BAmL>1nbCOu5+*U`T z^M$XK>5$cW3UdjZ7fH88iq-J=d(*UGjZLrZdlcejs+C+Q-eWPA7}mfvJ4b$*UJ%`c zaCqA79<=wwtw#-KZK?k~3<-4*_6>Ta6G{dQ%;gH1c8&ZiBcE_*1G?E^{@lgrdqC13 zKHi3|CAi~p@wQ@zrXvvzgWmeVi$TeP$Wj^8KS1Y7Agrq0n2T38*wT!sKZP)0)D0Xq zt^X*hn=He8LDzbNu8Q4qsfW32gI(&==mbBIesX*8+u%D@l;^n?F_)7u+lG`^gd$g42c2-=(lJ|9z0o%p~GmE3zQdW9&jItVW=SY4M79F;5CreZ_B^p5v5f`*I!`g!S z=9Url{$l8cj^1?9U!-n-rZf=rD7Ed_9x7Wq&Q9Ja)AvF7?KNMvOx(^v-Omq1Ddti) zeTWbI6cdxf;th4*A`R>LJ`k@tSGuo{tTn^%8U+FZE(W8hLUnF%_>0~(RvCGbf_rZ_ zv5<&<|Ff3kTt3uRmd4nD*2yj1*I8a#BYZ9l~75^u7e`lGMsm zUWl&`mCxx$(VA{ffMS6QY9Vb@`U3xY70B8`oTf`?!Aj(v9K>{wtvV7!f zT{^dVnQv(H{Z>_`EkWyWbM>^X2941sa5evoE(it_ltvv0{?o$8NGQypXUxKw@Mr;& zF?H5ds$ZR2{QIB?Q;dn+q*Hjc{fE(Fq&4I#lC>XDY~29q?B=Eo#s7HK1Pv`|?#yQ0 zLwDNEdP5{xX{WXxS6{*R)TOBMps?@p#xXC7W80a1tRW*A$ZAK2JQBh7rA1>*urKWJ zw;t?$3z+vemKZbNxmia=OCDTdKB4m}OC8S5+!xB_$beB(cpU{+<6auRpa~=D&$sjo zz&z*zFzl2YjyF#|!(7edbeiR0i&kTuWxI(YYXc*4H7~2EZ{JSN<8Bjt>eL5UR%mDJ zO(9i()BHQH3`IPY6ghhCxvIJ{3*Zmo)Kks)E~T`w!wMmr=(fGmFHx8r`|2gJqrFmHs8f15pO9BB8uT~iJ@-E4eLLKl@ zm12I$Z~0`fZ99}05fd9!@WS@b%~Y(`7H-fe?+i_LA z90?OY$OYy_>5zn<$47ePu97syL^P=*<3_UDbKPO=E6j&C^z(%F&mWt$;)WFRTV>y? zwYfx!Pal&^P#W9fKJ>%NKre$DD^Gy|`c==MUeJCOI%9#jy;^DRSj)uzlwd9ayqd2l4w}kCkoZw`RQ&6dxd!vykUi7iFHeQHBQoo7w2&G}zE?v`$AsdkC;ebA?yx=! zyOQloGQ=#3|5>^U$M)(FHU-?R>4WZHQ;UgD6aot3q>35CJrmhfjb=aXoKGx4yq&e3 z8$Cfo-fa2v-@0@@OtC}%O-?~PhzM|j+vE>`yof>zbL%qL5#qaG_>HS>_l8xr<9-8HM#p)eQ}Wno%9E;o1>Gli z*63%qSm|@}*+7X-xC1F4T`sui(n!>%PbNKB6EFX_7rp$OH^uJ82*4;VdWVKrJ`SZx z(Xp@(m#W>d7T$#3&kWyH?&XR(4=WsdI7lEY)< z`KU?OMv5!4)!l~k4scb&1F%opP-){rucC@aI;rpLW=d)6qaLsf~T zi4wJKmGvp^HSzYp5DL#VLrb5F#ux1(k>oW(&B(gnXfw>s46|0%%Du){l}*rhJijgW zcP7En0ik^>K=U4ef&@K!&0y6;SU0~fi7dOy*`geM!sa-eDU08N0TJC*W$vWt$&tKe zZvIkH_Mht<{LcQP6-dWn`JyiulRQE}pvJ9zBg`qh#mdJ#?mmh$x~9EplK#XIb=zgUXh_Cgu9hU0 z%e($Y3pth+zz*E#)fk%bP*-L0?$$VP5Zz99kie~-gsSWGnJ(Z{qD_{NfZ5;Zfic7o zm~bG|d*w`9;fF0_NM;F&AMttR{5F(J8tVLKbH#mjlkUk@x;?x9iJ(PRcv-}MD->KDF?2L%8bLke)$x3+JRn$_(8Z`BTtiAyU#{?pDRXQ4 zZQ#iPBGuM=^d)?x7`@}2F(i=G>1*aLir_+<0yb27x|x49nWs4jJ97)J*H2 zB9bc?95NinanHE-k?;3R?6%pM52T@&3017p-KzVks%}S^gWuPW@tbpr@0r~Hlf`o2 zYIJiDTi}{{lt$`RBD3Ch0z+mrz8JgO5Qt_PgYQKMy{@Av$!BIR$@m_t>GWX8rb^Y? z*5H66(Q)?^7gycJuVpr*)_J?nW;l0mwQAZkdXIhUE*pXIAM?I1TC_V zM&>N*CAbr#i@KF_?pG6-x}|G{S6J28|WaOpy=0NF}*lZv--J%UY$j zb{@9t@A6VhfMs8v^Dv3*ZUNSBU@@kF!ZgJ0`tb4Ov8-ZGVMFI%_xih>#&tMP-WV-HA_=IA4_hLI^&3Kgtew!5f zg~r;9#{#mUEmanbm3dl-kUd74lQm>dB$!_f%nxa7Smx9xzfC0Ok0eJ2>advxzTDzu zg0%!iZ;UQR{ccC6Da?C0@mDP{UWUd9aYOFh(y0PdH2E7X?_5tP4%s5EdeN~E(Zv(N zHJE!b;K1%)k+*NqZn%jHc`ISSoo znQZAzuId^K10OB1p!wM;Dj0R!eUio7o#@vHBFP_QCj6^MkQitm1XeQCf?34aj*z}ld~VAz?9xS;sU7hZ-MJnb=2`OYu!_EGqQVJk z(V=K)6}C&(?L?q6vcD1EKod48Vof%*4!;kDxn8bEiLncm%OI;o*;Fy5%zlN| zY4EZS)c%ximWdJ)*`WP;rMZldz5CvTQLV|wJZbWo z?@USyF!Cu>fx60k$N=*HUNMcl?KrT82fwiy1^N`7W1$W42v2q$=+XElM;89wdE}|>Ch!Dh_KSN zK^pS6Dki?q(@@4r?CZ(`z6m&{8Ulp%9vm|_)!i2zqz~T`psj?=HfVKp=UI-oYcnt; zLUjfM;t9+qr*rlfE^xN)=Qq0BAiK}3k843$sKcLnQveJ>=T(v{6V<{tjntc} z?96wX7F6yknc{99dT%@$|wm0iIs;u@};0|M|K$n zIfI{J5!l=w_Qi$7m}2_+6pm#H&97VFs>PqoT)Q9IbTa!gj4u~KuT41ixdY`T36c-% z24EacUJzCy!C9lNej~%PIs6NPG58PcKaaBr(TVfYZJSjD~b>zQ%-^OO_h3#!< zrkH!v{uZzyLgvxQ3++251^uLi(KOE0)hgN-ieB z#ON|`sZ8S&k+m?E2CS%HT-(LgByZfc(s43K0E8*7PVOFeJ1TYld6 zM4AInn~Dg_!jTnXwug)~IIGBmGpd@f~%c?=lLsJ4|8>+_#hMh=QKz#*;_wIVO;MI}-;DucKIJ@F(p@pB5wLxxFj&$3)p}8B2KH4Bx&bgpxjX`< zJXuMvk%MnoRT5DFb@Kt|)Q;=Ev;%Rh9)N8TRFb3aL@k_%>j0MU1h!RXXR|r(J6Xx{ zAXt;cv&&~5GFngc6X3z&PeG26jRsagZy#7j&B^k8PG)I=-}LDZ)i53$DhPGEeZv|pA{kY3U}@*a_%3M(Ev><*98-wX@a|a)ttwK7$a!efC6 zcRx9eXfZFAfmkiCw*urYF7IE;#*UTms&Hy}Pe=cC?19LiaO$x1+7fyCRmPJ;kzyB{ zS=}&zDT*fyYB1c$vX8{W=u4ZFfq>$oLT3mxN09tu!&Tz<-6K< zxlW*1VB99k{C#L!aNliHw7%yJ4luL-%$$DYMoI z=ie%k3a+f_ZEs!8ya_SX7o~ZG%|cKn!9k=|#~i7Q`afSAE(E;AhE0Yx)PkTxE!#ga zff~B;LBXj@kmR#Q`zBhMxGa;9!vO92Seo(lKAc4cE$!b;7a2qi@csk8G?4LdH&1P8 zzKg(xjTJ@gI+*uex_HP4&0C-AywVWVOZ1PGWrO546{`OJX2^R=m06>mXU+!?-S=Q$ zxL~HoA^*ggA_Qp4NtpU$0`y{h6f$zVhLb;Os4iaIC z3`(yq%Bd@*(-E*{Uu8VoJp@IY=jQiC-zAMoTLGD`dpbbYK}3RyVW@vMce3n!ai&IafJ!=g>Nc zZ(JKPePpU@=Ek4rQnlE~p$zWS!!e~QDdJKUKlDP98t5h?B`mhwUe+`6bJES|8xM#l z(1^uu#y~34vczjB+_5nILz&okYo2{M6m2O>QTOS6H_@;b975NdKkrK7x!G{KFPvxF zBdfo1-RbOg5`2fw6U8ggk~zHsyrp|Q+8Y8k>$J>f0@U(t={iAlxt!pG&jG-X*-}Zl zojSygTo=z4!vFjp=}=lwnS^!+C#)7-Bt)+WY^$C&)65~8b-Cd`0S1M#Y?7!=Ag-6w zI(3ljD8wVFW{(f7bNu6aUt?9kpdx|tN-N93%hhJvFt8GAKrfa2(RTT7uU>S7(g^|Y zCZAZVj@lzEN1M@BeC|js=aL+*5v!S#F8{G<6I_{aQ)NjFKhr~^yU|x%(m!=CuvlT- z+~!f#Nev2gz!zY+rT+bO=cHsxs9)6h3VUHvQ5v&F4(IVSKHn2Jo1WpS%O-o|U6b8$ zVo{gCsm#-r5CM=8PqH&b7|V|xiPA}JS1bO`I&(L}=6tWRYwSBw8qgt^7ponv9- zU_ZUYQR&hKzf#A3Czu6BsUd2r-PK(WYpgh-@bDpo*YpWGb{!KN{Fz+L6r`K;Q2>;<%Vj}@&gJW#x({2 zGb1UZ&ZgZ51*8ZYt{9-DFIARfkY>?Q*&2zRbC@c|hboufX}=JWhw3AqPL=sS-EkE> zC+9ras1jTWcnOt^Z>U(e8pR`w7D{Ob9prfa3+7k{i8it)E)M?Bw7h*7^+E6u|FofS zO>}d9w!C-SN)8~nn5^@j5U_qEiOW)Mr!zTeeoY5rI2nqXgzZ@0{K&6yP79~S&5WICr1!0@jS=f>X%poY)a&yGPjbn0hD_v8@Q zmxgEwvP)YrTCzi0w*1m5Lkg~^!Xr3`TG;uR@G+t6L3q2fRK&g*9Z;B%0u$Kh7NnJ3 zS{J|60?SDLwoQOK*3p@h>Bve2D=BLboVAGkHnbC4BXu=21vyFi9uP~3cn(a9DXEZ?N&3YH11UjHJM-=J&YX@6F z#65kx>l74!)s<7zg|V6y;t;o$a9CKb6u^RN`jwPo&>e|5(M;Zq)c8AlKoA(pq;JAg zLTHX_LFmmXdaljLwq{NTVLF36=xE)iyg0x3aACO}mB!hdOKCT(j0wnL-TrIq3TQaH z03U77daQ7Br{D>JWW+*5^Ej@bDdyKVy9ZS+@+Q1ChZ!|(CTt{cF`L601;An z_z9{iAL;)S;`AY4ec$t5+0p3@FMa52-=9E^nqc-WNHhC9;pUEpED|ZH;88u~Z(-ve zt{EOs)2lVm?7S!s)wQ)|6RtK&VOay>y2phOpaLzLjvcAfm|}m@)v?al2UBgy!zgdV z>ksNCgFDLey?(+_l1^a%G@9WGTa9r{X#hTTwAXu61pZb(uGfw^BNN#N74!fNxc0LN z2cy{tRWZ=!MUejkxDFRfvxFMHj!SoCmcD86p*FZy6z*3OpKG#9UJUK&TrA(+{gG>(aZd)AZ6yaC?<@CJe3Z@7P(+kh=83u2JN&s- zGUO`)1hj?d(%q+m#CR@z$aFlqfV!mVYG?_UqynF+z|BL!=of6$)h1b;Bt4t7QRrri zNg=?6J2^d7d~A@8-i`xLGY%b~MUU=PO~6l_FMJD6YEr201NIp5B?NGHoNMzq&Y_g( z^dhkFtk%=Ex($KoDI40RM3s@``GNac;HlzVZ*55*vlTz=et5g`p{8EM* zTSq&uB5QadnHk4ufol%-_=HQuX#Kaa;OYwcO*wHkWt4<>t+D$I)QyjjGcN@k4PT&0 z|D!0uI~CRJ=7x1X8NRl`k$T3I6oDi)UO;LOeF-kNCV`extP6{M)zkM@)lnl5eXy#ItPt#_v%ofMZ2#-EhCSEm3F&RyZ3J9^gE15ZsY}p2eY3zO8g&l#|FV5rB$(`?$C%uvW(Csi_~-Y>v~Y*L zGJb97=3WPbotb+xbQ0|qBQ`70BJ$Ex3fdcaOKRUSlUKiX%V;q>5bXQKV76TV{P9|3 zULNd~A^)u{do7v9uasH!I?$XejOI+D;uW05b;}EgE=(Ay>!F1Z(o4$0eqsVyp6eR~ zh=ZmSpjes9$tTbDS(7**+qN?}j3KBXp+!VQ|S`W%;vHOMAt1L=h-6 zs3UaAE0yHuPdc2;D4$;SOHWsJEu7Fz^~8aky!cA1t~!GJ!v){+qngH(hP3g~XrH}& zuuWx#P*`(yU!6SBoiEB!ufl8iZ|7o~FPK!YThA8cW@|4*1p_o)PTF@K26ZrPOWV%LYkE*gwn#`nrH*g=&3AqPF3$f)c^^Z)HPl2h3C0IXx*+aKnPIO z(J#b8gyISn&FP<9S&cQ^_CxxS(9qIui@q)j0m15GQbyBY14zq(P~orQ9KLxwTu=bH z!lkk~Di_+g0iQ5{yQ7IiF){(V8~Yn(5@t$~{wfRSM>Gdz4W_LG6s&gev7Oi^))Yft zqH?U4`ScQM{{%>{&RS z(-KYw$`q{bkT*v5f%pK#L;PocY#r48ps+V2j`JMYAeGRo^_4R~Mzjg2(Zf{TJ>uAy z@tMW^%zyCl0Cs$+LAE@Bp z-hQA%FWs^0jjJpebcjn+QT}_$EDh+Ep^WoE1Do!9^KfdeKi<>+hr8)~&;X}rISt)+ z7RNaO4^2G$$eGTt>W0|4#+!9%RpXE6(B8Z~+qPV$c8)H{`q(09x3XNL&?^yYHk(Qj zVHLX&>AJHPu(bNM^l==m5T)0DU2(Vp_d>Tnpg0B~PSLol}S+f^%}3`+-1 zoRXpB)7niQp+I&*ToqxC)%c!V-9+jcEEqJSrN&+Q80q~FG#bQk(F#VG!UVr1k$0xo zlG!fx`25YE_er&Xb~__sX=7rBn49?Y(MOZ+Q8G!KRrs_04+tbHuvXmR=C%G~0J z9eqa2%FBZhU{=Q~zlQ@g1!UnMwX<6pAt!n~!;r9SM>0CF>$6QCP`Lt)<4fmZWlW#Q z-%%)>>_ifvN~0#v#oWd!oop0sP$sMlyok(u^%^v&!%#O90TDCr56;}y+qE)-tZ2jF zAPAMxo$C9UaJPW@LIjOa!H*%K!d1u2)LWOvWR3mWcY8-Ojp7Za_zh3>#ywNc2<#lu z_wEBJ4TNVy_-1g5sjk}IJz4>*V%0TqI)6RxiwSalgTz4dX$4tz$Ff||$`tV6ZUNI! zXOjM$hOMc@tLY&migq<8r#%diPZ>~$j&w@!Lm}e*q1s8YEf{^*(gYO)>Q?>8XBW{nf7V~ZzqglqTL_@I1y&74xg5a~+vInZso4kWd-@ALM+TvvwhC+RjipN zLc`@esYE4*ls4enp?&Ybop{h6tyH&1)k$3ICT6lK5>6cRU#r;xQ(Tk2TvjbBV{F5g zAxFsx5W(ZymqouBB|>XqKRyCC5k{DRz=9-+AIYB(`K6Td9$0W_LcchI- zwp3;Q`**wN^dCtu>2GOVo0!dCeBkjR+wD%Tcrx4UG+W@ta1UN!-#V6$QCXYxp@Rfe zk+%V%ev`u_uhUE#MVV1qS73PY!E${b1P}YzW>rnyD>1pKACK@uX1&}Ipd*wM=^M5lSX%fID<>#;LV?gCW7l5!op+1j3*)Z6n8sn| z#r^p>uxc4^(XLd%7;3asJKL|+EL*5BpkKw8ji{zkP1SKUQOtCDu9k)rd#G~nr_+3_ zoYkI`bIgiDZlfK*0OesiZdj|eB_7jrFe^Hufflv%a{f)=jK`pgMZq0cnKJI_^yNT9 zPv|N!RW4)Xc$o@2uMRNs`1v>{_4p-@E89Ay*_QEi_-Yy?22alY)IH_f3= zfKE>?;78@BHj$Jkz2h;0&%s=25Be9#t}3&a_Grd&7+~3iq5^a?!px2)+`whj8MeNoqf-5p${~qQO%F>ZSH-E=oP!rLaZ=yU z6=MOabqygKuF#Y-{jANV)p&N?mbcry`(qN?UGq(HaJ7_r!E~2RAv^_%M9CGVy}C@% zTL(OmGv<&{xy$FlDy-^=Vk}rW6C%9%`ckO%OIxN}@Wq!DM>wZZ|%LmZJVa zwSe}xG9y;f$F=DrR1FdCWyn9y-ej}8&N*RT#{kYu3!so^vtG2%VLGjc@={aT=DIH3wvfj6fag>Kil&8eOBQ~F{j%0woj#2o6rd~&>nx}1 zj*(E?7@IAruO)B!>y#Zelj>_9td@M97E}B;gkF>!Ugt`xkj?L2sT%jp1xp$%HXi_z zeNs8jD+88I@|kniUdcfB4ux^XjXvX+Mz-^I{8B(0cA|-mrj9d7Cp^b(jJBpdo3`){ z@z|gLT*Z4R0~NnvT)ER_R1{!o)2l}#h8^p5GY8@|&&D_W7r~;n^E8l^j+Z`)RbaO0 zR(H<(a&ZVq8I15q#DbJSY$yAMD^4>TtxtEz!LVr?i9C+8y6n!bRYKVC{g=UW!cAqJ zP+gDynjhM|yEnIz z!ABG+^9C_W5@$H`o4Z#*VHPjO;8C9{5bVh?r#rfbw6ucq%kKabI#8{X2%dFST&}g* zoU4Z7BUmezYNJ>voOoC*GQ*p19EBjV5wv3G)?>9${f3fm7Ma+X2lVGx8;1I|TL7Rf z8sF$n{f{9x_v35F&&{xMULlQ+a4vYqcrP!LY`PAzGq@cO2fDpr&M=xICP4T4cnipr zuL<$p8+>2%mNiOSYv7rt))gaqeDxA3>V(SN6rbH;JIp-Beg-pV$oG+Ak=@KN7kCo6 zt~r8-2~d15UAE{FypfWU{jTjbD)c6k=7O$9iHwgB*cWC;xyp066bp59qUQ>ULgn9= zgRVe1 zH@8fK2e-`H zeFc2Yn--3cP7($NLq_E92B}B*D6-_u;S43VACw+aQ8`TAb`E7xbB%)AGkWjGoLB*W|AHqHGar~4TFcbS_e zpbXZ;Zd#wo@_LDY*m9^sJwLVvg9FQQC0mj3Mb{ngE_FXQS_5#=u*|*gTT;jDKCDkY z-8bffrIKG^ukJ0t&GRWI&wl&kl^7$&{2`*ZvMMe#(LOUNfcz%uPw=m3$m7*3_@Qiu9p;n-cxkW^pvx&6i`Nwfip2KhRv`wjeUx^_-IdD+FZ>FHI($3Q2zU@D0WMU5BL{8R&iepA zK)}DiHz+-0Yjxhblct_vD$kc$TtR1=?8xq0ChtwdL1BpRq0`)LKS&RM+RaZ*$J0?s zUdmt_#qwK`P+<{jJYygn1`B%VP3kM?elDVH&m`07_F359!;X{B`4DdvIsL@*Y@dT4rpObG9Gw{`Z&zvJqg(=$C`b*GQgdXoOG!$g~Cld=mtoR|>PsPfl2?coVu z)QIzUX&dn>JQCc~4!pmQhDBXtGPQlwLP2+{jgscdN2@Qdm*hO(Q=}}vI?n6D|D+q| zlAfzZDVNMjIoC=3EpR5zxM+zXhID$@YWB)mOL_@-ewMiCn|68S=Ji+amwH>P;$jwv zkQE>EPtlL@UR4lSe@&{9#rJkli_*x{A}0tnQbg?Ypw3rZBQe|!BD~OBrsyA1YEm9r z#Q$^lxoDk}J&GD!;dTA1XIeKqCrRXjExlI^m`y~7!WXi+i2j(QT2&gsNQwZ6u=D-( z3DZH$^W$x)PBZ0*1CNCdo}|}>8={4#)i9K@pyDTslbqdFCe71uPJ%wvUxto0Pr+_g z__|Yt#*7%$HMW;mzd>HE9hvvk@w!an^K5`K3q^F_^vY zGQcUphwlzjm{emosRTt0w}j{_d|A6NdVjd8SO;NZGciI1e9`z02bIhU^c)7QoYh?(tz?>Z^kfTBgsfau4&Kh49{XuiB$dqfJ7FYXM zzo#t=b^rHKASH>$Ut%z#RZb_Z^z+E&b@`oYlqVLlsMoAQEsrJlG3r~9bey=c)3#T< zO2fr}W8ePsh}h0c=K$-TCz#J9+er#95EV@a97O)3@}mJy8>hva6>=RG0s^qX6M4KV z3=zff8$E$byfK!j2>ugF1Kw;TG;$f9I!Hj`#p9+avqPxJP#sJf&v#^0-Tfr%J3ZM9 z7fClU19Rx-CVj!c5Jh0^7n$PBjJCc&a1Ng6{0mXj`$=-3J1&MW`!Xc z|GJ{rukTBvD%ev=XZu?1g3+HD9t96tS1Gi4Qf*;1Myh^BOz{g^OLrRgX2l~V6HH!S zWMx~HZHVD@VVMxqODekf@Lc;Pm~m>%pk^`-sd;EpHoxeOgP)VX&;7fV_Kdclh?W7wy%#lxa*za;1kSnn*M{efpDw5K%qN z8QK^95rid4Gd`X4eus960o7XCHm25_y-hZbG>|n7dbIk|$5%~pf9UdXMBSD}!Ia_( z8(P#*!$zD3>c!@vUHo8Vscpg(vcWVf!qq-XGucAb-NhR!EatX59NP%&Xe=6OZrDr> zp+qIR^YD2UtBHxu!CrTNIb;!J=VW6#4e3nl%)U^6tn@7n#qbt(_^i2C)RmCYa#V~A z=18z%{EEqJ@rxf(prWyx{UddfF=IC6N*UN`e*5!fmVbWWayU8i6VhuL5y{tKi;Z zXgzo+FTmpQNGVHJw4rk=T6h{$X@r6~#jsf*Y!T~BQ2qC`?cd9hbe6Rp`^Z>0lMa!) zFGcjm0ttY>IiV5R)5T7z!XE}2-C$hJq!%3IsD$#sK1N9dy3_n-9p;8iQJJ&u!c9Ym z977E1owqqU@JE#_i1q$BI68!f@v@C7pPZ+xAx2Ynnpgqfu`C1Xw=|(e<%z#X=&sXr znET6j23*qEe4U#j+6%Bk&^t%N1Ca{iaxNBRw}L5ljEj{#nx~D-#T)Pl>k0c-EAUiV z8k^v_+z2?v1-oBtr2)9y*)+~WM zf*wr}LU$H&HE;@X(XsG)L@J8@&koxlX&rSK!C6mrpgeBJXk~^>6NEA!cDdRHx2-u( zV&wdYO07gScHu@YF+%4&sn1xFmmsErK%zDs{JQnUKW|yYg&0k%SFf`qGhQpY8xfy9 zf+Hwpg}Vig|7F$7+j^S*zJ1+WY@~zqx}$DODFPV!GY8SOdL;?lWAY%{FyLEyG<`*DM)JG*}YPgSOP0@s}5Fgd^9Py z`z|DHmxKf|^IHlF(gn{D2GO(n@8NSMDHF8tL5?josKc*puq#ByVeVO{ECW+aV$}^- zy&_ZTk1Lr6R0qaWZk2n3zGUGiaSNtrg+6uW`XjNy5zXE+T%i^~P*m6vBLeR@y^mfi zg=UqedeJ(;C|fhj@4K|7L}@jK>TtZPnHy~h57D)=wkgZ_pn*ocd3%nSqoINbSd0$6 zIMB0ZGP{_pEvg<=<_KW^$4j_#BP}VStVV%d-->MGg#5RAV-pzmWp<2cky(=mrjOBx zUi6EqN{Y5q`}Q3M<7!%ig{M)`vD}kzeEl?A5n^7YNn8c`YGppw87q$hSc9kQpD@Im zfu*ugg6){-aBbXun*FJdr1|T7isBj7i+(Yk;X>evl8?%Oihx0I>w`g7f0~ZyWzINM z3rG!>!uapk47LRTI+nVj{Ht4oRMt>HE-^HxjH%FAm9itEpZ6((*jMvhMV|dqQ+%o< zA+Rd@slw%DbL<3u7GhcL$*xUJV|s5O!)WadLDiAfL1)VO2EqW)zVZ}SCfX4?-#aWW zN=|;aEy2?rInxCMsY)0I4GJg3>4!`hAbJg{?BeL-G&2ubr+orXg|#E8glyu>3`~ zc;%ep1iivk98^?kmI@k98-rRSyVb5+lXzSK__UdHm;n9fO;BR) zMx%wA=)}4s=MLDLYC8hKl2kz+|TCs%;Gpm`oc|BsTou{m_l7* z#zt7-@YQZk_qH6df5VIU8 zA=HhXq9MV7{9*lOekHKSNlWr2fBPi%w%c;h_Yrf%wnGd{j2#CiPIkK04eM(zmvZ7I z1_&09^AdGd<8ax})a}E=`8RA?)Fq?24(;W}B^nas43dJC1Q0`3q^fhpW`tWq+V!$< z9|*mDz0s<0gCCvvFvDfg+ro93+Fhey$&cs6#C}RX2WEP*ajkb6X^NVdtLier+PV!3 zR#JG9cM%mn<wlqq_AshSRKxXFw|1cs!{0$poVBelpiq>}H>KkIAy{u$_By5ObryS@~!{y($VcIBdrCuy4 znJ~?P@FZq`impNFWY{{_rj=_HI$zEsaV6mViGSwSxlTX5TAdjde1;UadY<_~bAySD z_s@!d29=nrTLqn_WMH_}=~a8{g(cCYKsSkCAAPIT6D78~r*$Bzr}gaL;Ho2OP6ji> zonF6pF2uW4f4t^a|3^O^bivoNw~?!`*rY|;@}Z_Z8=ONWKwWTs|1)xs&lE!5V1%89 ztNOq;&Ss0^HC0rTLkTVb%R8O{21rbOSS91 z4iQ0Q6{-YQa>O=iy%13F_+=3}jjLu^q52$pJpEV^FB7-%h~EdZsPUT1a9oyEen{?j z3pZ*=%YUWUmb#5BefJlyN9}Va>p3!#0czsJ?E2iEqDYRZD4Bl;$G9xTp--ukZ4`-7W`6@7bUldxmP1d7l?Jnhut?dO1eopbfr^y5oj)xc+ zUeBc87it5Zq9N#1U)>y2@xMfJlCI+hZgz_k0b76Xv(mlpyPDC>ZQ@o6B1vS@1*zDHCq7&DOEsz0jv$dBD5|AXWCUcyY!zZglPStH`41SGh) z_PEd2z+4(aoh5DMy4^aApD^P7RMi$<;Pu!7LE7*+ICwmAO5`QNT{Kms$Ct(}SUmt& z9yW4!`7wP@SudMwKH!SDjR*%usEX&5Dc0rw<3Y2F2^c3o8ZRTSUeF$iTN!RWsyG*N z`meCeFMC4U1vk#c$D#IIXhtWrHPZnqHz*4{I!o^DX$Qp+dPV1;8Wxm1k`+oiiq%=jP+xNQ@G@5MEK&L+gD z8+)eU&Oi@vJ*w(Fdf;^ypujb*dW#lqhO8f}9Mg<|6csKoo0`n{YU4b%Ou@VdU2gi6WWG57+G*K?d51I#-V~HoQhruMT9|gi8TRSa0x! z-lKk9>HEgPPEgdN%S265H9k7~l!mudzoa3Kt4u~87t1KOET|Cufk_}i5{;~H=^Oxp zPHI)1U^20+t-h%?6RiBw5h4Z|qwEc6FKb^=Wk&39a^k_NDDD(dyrU?Y~HHNfdzBk`XN z?S5BlD{+UpLnsM)`aH?sQN&!X2o>ev65`?H(ktV>8o~jA3KF7{H1^Ol{B@%~5hADB z5%+~WWf8B&=xnwPuoTLD77p^twUns5AjC~=y1j*s2;U%p(DzgnGP%t3kK&G3FCjsy zw7r4hI3)_DLW8!RHWeVK-f@y;xDF5&0P=SxCTodLpNs?tKNxY=4w&Tdb*|A@;b9uY z(uue>&-qzKC#2&U#^|0{AR8YZ{JoRK=zD-v-(iKDBbKPS_UqJ;Diu0$-_!dBF*%L%#3zyZ3)UkG!J#MRVCWNG*We z)p4vIwy+0R@yDUv6??>Q(atehdy=G~=!e=0E_i9)*J{Mn8;(q|35btqp%RM)ww%83 zk{spQ8=O8~NS!CH4V@la6Iid8N}o&L$pqksJldlS+u3^Sc~OqmSq*<3PmxoWZY{HW z+&hE3z@+yM%Bj7sZRlXeQ7NE5Xqi(@eT+WEBpL#q*Aq;&^d>6dX;8tAjB3;_g zlFu|=`CxhpC3nwqY#ap!?A2#8KQgD@Emm zh5NtRw)26Y;dGnu2Rl9&DX}_)Ei|7FqZ}ri zICGlyash(_SY^G&_OeayLGux_O7UM)K`CSf$Ths7HSk;iq@h3KWGcH1?f}~hR;5G? z5wa+Kc9HY;OS&anlja;-fGZD0KN+E(AW|j_EtV=0)Y;AA&zsRLAf|smMC^hM_VkK_ zxTF2(kfo0H5%V%phWid7o)Uq&-QMLU%qG*pqqe1qLx43?YoN>OogW>TJDD*6PyA=2 zQpNuXE~e;Fax{bEM`q^9So5xyBNK4%6zAX8tPlIuZIZlIN!4YQ=@|V+S%<%zScBuf z;%gCDzDN5K&zTE7TrIuC2&~ILU?&Tu^lM9!I4tp&Q)vF7FoVAnZCHq7ZKGel*e$mS zRS2lc!5eYJomGIad!oTH3-qB7+ZJIZb3>Rz@bASq*h~<*{Bfq)#7yiwiUooWme-Et zugibFHaDQ52kl5lF?#e}Hk5#PproJ5()8&)qV4+2^C zc?<8=BkZ!?9~$4D_#$ec{8LDkfkNqzpMQ~VXGd;uf_fdqJ5|Xnk-KW}T_<^xr60=rG=*=Qr5GlViUR!O=`;$Q8uWDCb_hd`(u1A>>?>Gxsi>7o0%}=mz zyK8@L30x)d{5U0&c7k+Co0+#CJ7!64;}-o_bmR(Ny0P)(Pl<{J3gq@#vI)W=B)BO{ z<_FK1rJQRAYYEdI&)x-5X{gdnE8=BFb$O2q44t)_-Cb;Wz+BjqClyi2x|9!P!`l@0 zP6ascVJhoIKOvyEEt8UUi^Q=q36P9jkTgBI?2NZ9^D)hW+NU(^m815s{_2XP`;HI& z6GPFa{hyvITf8jcYiBZ9`Q)=~pWK5}Sc$Qxd&jB+V54}UO?ER${7(rj?+dkl+LbDq zqmnuUfh#d}{Cp`~YVq4mE-F?*_gmn;U;N{uIymitmd}TWkFTpCXawQJAA%oaZ|)Ye zsh6TfG7V6^3H{B@H3XWRx@LjNceJs4g3PQ}Hkm!1^|@o2zdNu=_JQOwX;a{^AgLy? zOlgAI?L7xhGTpN;LM0>(#D&wdr7CUx{)^pJ8orFI2zkT)TF@Ydc|y725vyEb8#_FU ziQ4^1wD&Le3SADh=j)Ct>C>m^T>$l2(CDO(&s9*?mB$C4cM@&R=Cc>b&cGfJSi*>H z9kFG87T~)@FKKII;t@S7DaK1@U=O*pMRSoYhU)5M`EOiY(|-7I5M~NIdsv9!8!3F) z-95Q)7y~?K97P|<#|{i0DFR{)Fp!g?Q=HCMhdot*;X2|t%dAkOzqE=i0T8By z2uL>-Y=<-wrRxD)AHh>&wq#BR`YS(=^FSgd@`e587_e}*)DeAx)rp#vsBW8q>E}7) z7x$MHiXF}IMkhP=izNr+btxL3)?fly>}l^?rcv^PFNb`~>@q)|V4Jy!?I>k#Yzr8t zBuh_p5w85iMb4g>F^n0Z9GoZJDn&8mo1}ineTa7^kya z2JH7hf&^q3!tPTUEj5SgeH=? zTm>!zCGHV`o>|@iF$}X5iY&cZd8-wn>9baC*%&5$eG4Fy`WI5CowSpN&8_<1W&9R2 zA-m_5vDg^D=wPX{iJuceVElx`I}1haM`Ff&M*4MaOUkmc&{7?)~c+oG&F?Erhpq#=O?0aYKpDWQiLK!eNzJ%(G;$&<8r~;tK&5viR<-{DBFm zYdkK62pgyyXDEBBR;ZhxJ=*rnbJ%@kNROr-~fF~u4)5>GQpBNL) z%ux#LYEslrvzt9l4wQD=0CU)%Iu|kYl@iqcDmzxVD~p87|KNM5$;6B1O1dUpZmU9J zW7|n;m~baEZTID|l=}S2{3qBOn{2`A8}c!SXlEfc{|R3);xGx8<6leP-d{i-G4Gjw zoU${u4mtP!M5FS)RZ|~=->ctp?x;{HQdyX@gzKS6nEM47%$}quLnZ7i5-)rT!#{TbynDxs%IBs3#uy&XbG~udyQXfWW$nQAQ3af^O|e_vRo4pS;G#0V8T|7rO6p zP|rXLk)eo{BNuVDhg|h4uJ1Y8ON2hx;WRyRAp8A zxNND!s|5qBHb~@S50HxAJd>!Q9hXZ72eq*{B6rX0^%ENoD}%<&xz_fB7|bt0Z!62) z;dsaJpBcV}#mOikno#dZBo}CGY-l!Ui3kBR%R83)*Pmq2bt&sTb-4t+^@?0>0I0cA zTRGf#4+jyQT|!K8t!v_~PKTV~EX`1-)VOG_)++`e`TV~}%6BT(sz$D_h6Xiuqn|`X zd2-PtVe*FRSQmwt6dG&WExVf*D!x2LIh0_6;wz1yeiKNS;jf@}M7aMq-=QiW2azQN zLaYV`Q81fdvCDtB^=MJBFhz-*+DAWh<~$A-{A2 z9S#8p&@eSH-^zbZXc>>b>@S@iA^?K)r?rj`rf%%unlEAxACHkp33e*VW&5M(dIa_2 z-84+c6W-D)H;qf@#wVI`yYl<+L&tJbz~n0vP5c{h*26GrU|@tI@=U6ViSK7bK%gJe znYKW`k^tv$%48THce` zTsDosCaFN1N=4G463E}tv%L%-xG|4R>m@)aZ?=({JzuX&kUH7Wo#Hxe4S3jvMJl$t zOib8rbc~sMqP_3>jS-%i#1Wp)G7m$|{-V0fX+EG{0V;M35!P@y=s04S?uHjsrewAl z&S;g|9bNC(o5!EPryUEK8D-wsYP$(ZAZ5J;bU?Lwb#KUHl~kS8($X}6t^iz~H$-#B zCwhZw9o}Qe_{vo<&lhfILOUW385KMwaCWa;j=kXboy__Sv%G`)>Kb@UOHIh(pwq*_ zXHbz@G(7=i#E>V=CScKd(FsF0?!Zw*u7iq6cA&k+@i}tpDGEe{|)Xx0cH%1BC2b$0nV>x`xlhAn^zz5OVfYm0}60Gb2^RhuzGW-psU#eZPJJ!?d$B{md3)y8JLgCth@*e*Bs^xq%|^lp+rLm)7$aJ3D`D zTVuKJ4+hd1y6FjjY%zX<0J{V zQx^LeZotT93w3gMb4^F6oiNcyCd6c?^K+jwy!(<9+ECtTC#f<%|(_|Q_fA(Dl+$$|$EyA~k?N{IB z33wRY_JQ#Y9XR$`3a7D1pm_>pZTOpZn4XIeM-A6dqg}7vCot%tW5}PxXYD%WorMsI zxo_2ntmKSK!+owa=W28kNBgtV*)P5@Zo($7wyZfT1qhlRCr*8|g#8D98)-Z@iY)$Kc^ekr z2clMgZf#3m9MZm4X)4p+ot?ki-Aki`zzO#PPSF4cQ}iyZjdkRYlCgNPE~TZ9M6Fw% zSTG&3_Xz*hhhoj?{S9mR@jZ?mgj81>e!yFgi)KTL zlAWw)tXD!iwkRU7#(sA;KN2{ma3uSDCaj4Tf`)|v1Kf-}B`os;E8>x+-ltUhp{QHY z^{s62;7`Y*X3L~|A<=dF<#5zhE?sZG^Z4?OM+^{b;fTu52zyF)^6NX)OQ}Yo8wdaIu4ff~v0^EUWovlhQU`_=eN zcJQ+fIGBx_zGH()3FN#87-T9gj}PN?VWhKfiJ8Pm(&ODDvm)o0y=)n5FfeZ#<4kb~ ztaHzIrV2Iz=JE@PL2<8RMO9O->)ig#e{sMI2U>*U=rV`e;n*hKu&G6ropzUmG2Xz@j3(vG&Il44lS-3^d# z_!&W=L!_#F$6`4h2la!Gm7Q>PBFQxHUZiCuYJ4}78Lf{5&~2UNFhSMTbe6nDd46h5BJ~}er@8X&vH#bdf7^JLiXoHXSgdYI zn7KY!qTCKM{)9fmfa(fsQ56RE>N!GULhn3VU2e^ll_1~<$Qva62QWyAw|gB~RC8^~ zGOQ=lC3KD?INVR$EvCGI{;~6-vh_ZcRc7KQ2>Zv}k7@~X5ho?b0iVwyG>-6PQsbc& zz_+)n8>>t1>VbDAhUO*`uM*(V10FG6(kk-Af>aIhlv+2|*)GXLgsrV)v% zMq6)#wvjPp4G8mR@FSD^P$d#OmFDk04Pq|yO6gqh(X`uZD`WN#7vU}v)@vPu!u^eZ z2mVr0qWc~RATAY58-#w&eLPnT+xn5hviJBCNdpk8=A(DqDGRYFQ-Pv%ibrJR{G}wS z>F9R@K#^l!ZuDvc&sNIQ5I`S5S{h)DVsOIcF~-Rhq|3qdQ~hZJIwoJ`pt3M{FG~wm z*&Nun@67gHh57?{%ZDWe`B^{vsR~ygQXyx!^iB2z!Vk4bj6X+;wAf%TPoQ6J>ZA*u zO$jodjEKv-Jme>UWCK`Nr1ISfVpK?2S$c4ol>lc2)rZn8@nUm4fP$x@F)=&15yL1H z0Dx(-j>$f3GzafyDF1V+Y_3u$yXJlbvp&L)#-xJbR`704O#u)RWdM}Cj8U$tO3G?f zdb7OamIugfX3TQiWlRm=alijau~49II!sK7&OPZYSEe_0PF!@XS)9b`P8M%UX_(q* za(Jm8aqQ#S`q+XNDUd*)X*_N?=5PvIWWmI+#NpLcQ zs&cW%NlH>+=U*Y4bjw)8G;JQ4-Y8*Jvl|5L~}cOJr~OKQ!ftEPS3+r<8< z!Hxz<`@6YsYRbz_^fpg|_6t7$3Z@BvkB9wcVPK7E(2)m+BEoOMp1wDS*W zhT~l{uR?s8PWHy6oc#zgr6;TB-Df(c}U65ttX35&6|rI?(&mtwTujDs*4I4Ih(H}%bAxYHEBx! zSax;i2@62&+wZbw-?1L^BbY6z@d!a`Q(WSx?a!S~p)t5tP*A;h|7^01QNH|2QY5XJ zEZU)Epo=@uMU+*P$)8}3$Re;JDX0;YmFgcf?`2y&R?>jTk4H5n2Caz!(VGC0^Fk^A zo2tRjgXkk;Vq20(WE}j-YZP$Hhb2x+Re(o8z^Y&i<5|N))s$`_vCUc}qoDJ5Zw&Q_ zAFrC{2D9U{f_~{eLPa*;v@*p-LXz?(_%>Dvd68&o-8fj;tKYpBa_5qA3xD4p)TUAT z9TP34q>4Zp$Yhv)k@~dWU6H&!xt}SX$l7JODpx2SM5ur+N}p4@&18*QYt)t%kpnoF z54J_n3+V!AUPLk%TdgUvv|T3h#@X;+nJBoFKffiS9?gNWIzzgq<2$ZZ%W80g$kMAW zBei7cm;n5jC%N`Cgc64LC%?+y<(ILW!UzljtPpozHxZ%Q%><}>(!f* z;HZSb6C}t`)0(e1GkBKe*4xs++r+9tf#~PzC&&Dxf1>r7A{tjiV%Qh`G&)wcQWo|0 zs$s&`#9n4UUl4!+HArc>u7{TtHO00kz{~*|chOh|%ia8*-=v)epA*V=yTbk^oP-d)K}Hl9I)_|W zVK^+Aa;^NBPo7eEtJZwk-KNt?dPiP=-#$jek$%l308dmm4B1f}?h}bZD#-g88Fxc( z$nn9hz}MRnQM5IpCgcg&B9ZJUJRVQL_NMyX<3$!U&=ZQ-$ASYp&(E|e-E=*t7cuW2 zQ13pi_J(IkP4ke6dLH$fy~KREX+68&=Qs5@c< zj^avAI){{g&Gf15=-+}}E%)Ia;;&=sLBr=Nq*O6&-dx$zKKE6Fv(-YG+DqUNIm2tO zIRTB*I{^749(%?I);HC^QgP7f+2c~p?9X>k;qmLhf2<=(U$|Nu`J%>wRjh(Y?dJf0 z(=8m4&*-gBL>Yp`cf%k1Ldo{nb2cja#!~cTTKNF@Sjtgw@8Y+&+(;OK#(<(#mm^Rr zEH7Llk?TcXWcQHVeOe2;)>ZYWwjf*2-xH~dfn8JIN6-Ti5NqAue^=>J7Vz|ulAdnaM!gg&VB1}K(yftOgqx_LV*P>I_ z=qaJH4{$PU%WqYKj@i(&`-;umIWR+DXYP4di>7opwQ05;EbHRI+O@5-Vuu@Y;KHWHBsR-1y@ z#G6Tkk15j1nQif2lyS$*f+f6!yIytzU=;v|NTcun06>*l2is>-66PYcK66@dBrLyw zi@+zIJ(mjSR-@Cmr1O#7a&ZV8)?Vjd)v2~T?5xgtikx5+J9*@Xv}Q!9?44$r zN9~@*U1-6b1Ig%Xe1q~SO2RbWGc&o=4MSB+`9A)-C!(pE(({oepL{t*HdOw893eGJ zWEuCDHyQH!g{2Q1rLZPfxT4oY7na{R>dl2?rjJk*TpX7k!?|(FQ~w;E0Qs>!Ut;@c zJDsJ;P4jAri&gq~Z3E*S*((FlbHI%0{Cd%ikP&`y6Qb!DVCLO`a^dTfs^4dq0BaYd zbGysjXLcVC?~@?guqlQ0;O-_!Ck-Lq zpBeu^d2DSV%#8p<-{j(|tTKiVofb(oiOBY(JIPjuJiuA;$8!eyAWi9Jq zT?JQbf1D80937P9zJGX)41kC%By0git=zae?W6k0{G9YACSghbF%g>$3HMcW(Fn06 zP8Mwi6m4VhksJdOc1n?9Ml=9y(z!jE(1yi>M7yK z6_o8Dj3EbW@qFh1DeLGCu&@E+OkZWY_lbE1n76~#7}O4s{^~f%aodbjX0w$SMw>vW z^O;k9mK{V=z-~r5^r^C_J)LhRfl5*t=4Nfy`qZWW>Lbu=a4wYHNd`iKYo}k+RT|Dr zOQAw&eku5VhC@Mt{B7}-LuP(;m$${JopitdQej@EVJ-5@7u1=5o> z`KSQpxR8{TDzO_ztUVlhGAu z`w*2WmcDQ1H%rg4nF@9GxL8{e-(kyzYDd8Gv<%URDOJpO#h+j^#6BSgbovGql0`On z#B(Ftd+&eM5;bi?HrLQru+Fr^+%C#X90wCH%&(bb(mg+jLXXlXRQ%72t+X4&)8U!t zhZ-j#$5mrH7b46;_tmd^*WlMQERc_~2)${c`1TCRtR5nAey%3)f?LR4Q-c2XlmU# zaiaRRqUjG8*pCj)g=_D<2u9=;dRpP9MvDWmoPr5VPA3Md8QFCg-M>&nz4Qoo_(sA zvq@uk%Oej=8swOQtZEkUtF-U&eSp;bja%je!hfCxUUwdvP+MC>e591bp+Y2z6`Qmn z^23*i`AbXQtR^}K0=bL|0$}l*t;Cr zUXwY@!Z=_NqNKaUPa;&39sMk~Gt=wp9o62J2=kEtU>pra)Yv!buLi2vF8Z%j(Aqn*gQ7nz#XjCykYn4*88Qk-@ zVSa|0^XTj+9HZ+W^!}9l2}G7bh-|D4*{77JdQT_RJ)o$;sER8UVSQwDAaaBc#tXqH z4o^a=+KqtpkeBtzo6^29&D4XCEq+fr=42+oE;S;a_W&U?dw;>4ldCs;E6!Nw_2cT* zN}~4ffg+ayB_1T>0q&?(-XhI1QFaB%70z2(XbV?3x z6^?0nAMfnB4+gn2Saln$937}@m(MSO!(Q1sNX3?4uOj`}qjJtigvQmG^QaWyDCz1KGnE z<>{qLgra`AH)3=7ZQDV|$6sUKDm9v|$c;I>!3%lR+k;R}1W#(V>18Un;9Rs2+F#i9 zG>3KxdLr23ElVu#*=k}tyz}GezZFLEJ@vbj$xtU=D@+9m;Nvz*S{VqT^r@sL zFvN((2@Fq-Ruyis75j*Ff|V7#PX$I{(bz5r>CDdU>M3lrH4649YX^KeX{9WG6Pfuw z0#X)j|MCty4@fwhfK%ZqqVB13i*xMDwbA*aq5_K(gv&e*-HMr3!UxgQC*(X@CZy#N z{FzyGoz@l+Y(l?@6sZHvBkQy~R_oNqNJ2YBrl|IuNg zAB8eo@H3I^qP&Cadrl`JKkg^fs|?V*oLJhr;wB=zY*%Mi&NgP3k^@?tXqDVU&9rUV zkl)C=aub4Z@NL9H2(u50h3+b(Yb9xYRvFv4y{`R9YW-9G@3(*IDy5}fZS7mG>~u|w zNgnpvj{MZ3g?^G$7=_yh{%qCHg44(2ksE$sxEn3je)>eDY(5Mlx_3E1JcuCwIr^lT zy0)KT>v*uF1&{GnUKA5GXqC}Y{<{tE=!(Rxb{8ycA5vYAH}^=|s7Xaq?7MdZpxX8# zS_DXdjMz{Y%s%6{5!fKTaF$o+N|&3WI&Pf}6{BuB0<=b6U%pYGL1Wx6V=Czg)Ug6$ zSLWiof$UbUgtD5ZxbkHXj3T31<}eoT=*TuzX51&1O49-dTmSbDnYy~LvUds^73r6l zWRx061&d3!x_EZ&fe@?um{P?13jvlYJwcuR`$|LT!Qtk#;vtCJhoel@dgZ5XF1utI z|4TRwjCCq2k{z&9w;yEI)^`j|cC)>E*#;qIS9n;V&$%qz zG>*q%bof3cKo0f;sHss8SUU$qTA=VkncUsWRalRuDM1R;Zg<3KrY!@1FCrg_5CoT> z-8?*LE|k;_$lshY*pD&CD0`mtr@0vo^9=L2O{GlaA_3ITf()WEe%@I^N(>$vk30u(PmLB^1E1Ifc`<~hTC`Kr|~?RYa{s;o>#1TFr|aRa^lz2_3V(61Q12WTe|vR~@14WD+xgLY9G zZWm1*KHWsJ1pYgJJoIKXs)laTTc<9@3Se6WtW9*80*FaJrKrFTuWxL_eBN<73yJgPRb7%ikKF81Qz%AMp!BHcm6!r2ECR!MfguJGJ$6IE0k*d6#hGU zrYDtK{MD$8{3K>BTxqIHoT=k0SLJoTi_u7iCpZ`MvEL98P5O(8N+oe|vqSA1i$B?V zRTX=$i`XR8{Xk4*c1z@!_NGzi$mkF=hd(zu#eE5CaE9UWK*y;~P&^Ye32to|PPFB> z=x3^KhBR4@KDj2J*F~?`6B+$tVlaZL+n#z=qxFv$K?{aA1;1 zz|9q~E;b)f06QRT=a}?QkT4d`&hB7Ci=_fn@8kWHDN8EQHv_(m*G#LXcH#NJdNeKf zio`EEH=h}>bBPRds$F%HO$Qjb$MQ8!!P`+cH6F!UKF}CTQg?vE_tvcbmJX;tER3LL zso?pg1tHmthjM|Nw@8`$Yy(F(W z8K9lcQ-+129YBJUb1QrP(%=9`K)Anb7x^QWOL$S8qQfD%m?ca59QNLZmA>H@0Oq&F z&Yh5V1b!@5ce~7H$pfPn*|NAzZ3HqZuB!yO!s|8R36|m$$8=>ik_(7C!o1kFL3X$_ zRU&r*(aAT3%7RZN?I5$#R3ab*@YBLgJp3;x`WL7@4;8GoN^>gWX9?K9G`Rs)IeJ0T zB@gkNqQyb)E|7`&7&v#&ocI>QXb!k{V=5B%3H)?Gpiu)?0DRF&@!@ z)hhd&x4ORpIw{FMdj5Zb@bJ2ljv`DKi*HPwV=n=FVdg|w*y@y6!N|69{YXLbo(X&x zgUdAxwX~Pj#aM4)TV6YIa$nRTl*Ie@J+(k=d2F`7zTHV7qF)>I6^>AKvTUn6ywrx+ z>kZ;4E>vCz+`kY`b@V>)RIhT~!~`}*Tf_B-oo$UBv?<0$3Ku`jd{$nTws0cFM%d+5 za4K^>FIk5&++QJm&p&1xCIU0LbbRy10m@Ii<19WeV9OFck4*|hL1hC+M(BBC{7<3A z$bL3P6TO9unoCmUu}62X2hrYn%rzgYpuK7M6ojQ0=?qW2be+N|x(MwS$HZVe^gA29Wh!0wuoG{eZx;yWv)#2XPi|D%@DZ z3Lg{fnC%rq5(0uAm;xGFhd20HWdMwkmGsb6r(8b{iI|@uJL3|En z7~u7Pf?dWV?3oBy+{^JJ$zx}|(|3^OC}wH?k7r3jWvruHkR83l>A~*o5Urs?3|m`2 z4d$kAAy)OqA3e!=MeV5NM9MP}u7l#ag5lJRD7#slsWko1Hx%SH?Hv4P>RxpP`SaJd zrU#$71UJ3HWRO8;PD-R(WK)L^@R8y%$yNtgzI;Y6388-k68RoG!yrdL${4*nW877N zZ!I5n5XO)Cm+lkK_K!7U{UM`E43<8BCw?Sx1vNHnF(3E)@{?MRC5NC^_-Q2if}U~$ zaH05!l=7-GYiaMAWcNXy?$&qpaqAmCbjNx2M}AT)V2#~hu;pdY8S$%zyDKqN_$MFZ zE)|Dx<^()q(~jut0d5pK`c~g_Gm1p2vO1D$ZDpUIx;wG(l!}(F(clKh<{x0sq+L~w z=?B2Vmj}nA*RWEb_p6YDK3+RV@M8ujn5W^XuH zL*;s+B?lDk*M+F`g{m{|)bxqlQHb65eO0(gr#LC)G3P}pwFkC`KGB2fT=dkFR$r;4 z3xL=|Wkf5-iHVR)hF8Yx9ibjfw7EFOvnu{=g1u2#C3&v7iJr;gu*x7B|If(T01rtZ zaJkP^nNHt|RvR^8bN~l0ir2#_pLO9rc%G}_w?>B1;zE`*hAG$g{?vYcviiLpD?&W6 z2}=cAG#F?R_~-Y9z{!qt(V<{C_VV%o*qX~wR2?A4a{W2MD%Ezun*0vuI$Z5Gp{fr! z9OqLsI{lk0!*=R54-m&mi3C-^!QapaA}Jf4`c`%Om?JHH@uZ_Vs>3YMkzc9n;JEJX z37Enjus^(%1rww*1UymRf{!W$sXzCl>Gb2|8hJ5;$emLM$R&^TLQQ0)%iDbi_sFPy zwl8u6-!&1HdySbDa3%mCqEQRuTDhC_@i>7FucK`hyVS!*8#>u~uOp8^ZL^GlAmoJ( z*{-t-^z>h@w;dGU;+cb(giQY7JGsWQv8F2i`S(nqB&&pPtlrR>dVzf^%shM-bB-+=xJG1$~3!t?wpBs&m1=ELvKi&jlu6kjIne4#QW z%`ZZb@dl1@9}s26nR3G!ZZD_*GyQ}!soDr`W+9-j5}0W#RbvV`bAn=e8zcN@$=rgu z-ysJ@uGDwECSnIw5a+&DS4BZ6CUTR2d14}fQiPxMz2{wv`r;|ck&6=N&A+*cLN{42 z>R4R=Y^bJIpD}%^7Is8?NQjMJyBugJtzNzbAyP7}aA3{+2f*_{3R?49WG|~qy~XlT zjr}Fw0*$fZZ&~JGQMs~LsG`W4fcu6W*I&+hN3MSF>w@{gBn}t2m9OeY%qugJXC^lz zA*HuTfgRB4X8n`u5e)A6Kgu^f8vycmQrq8|uAKzcO^_)ImsfADXR?VAh||y>Zt-_2 z`XzDee;Xb42GM5lV%ACJlTMu-|GOkY12WXz4V%T2R0EKeAn5 z1pjEix!$vJX^RsaSBjg@4QvJYZnd9$DkBB7{g8d~Z(%-X`etc1=dLAKv(Z~Fm&N`w zuFJ!zRQLm1{3@y?Wk7O9OZcQ;V<*8(;|N?5!y4Vokign=GQS9x2G0x(mIpNsdLid^ zGpYHyYQ^MQ#H};XPg;Pa@9b`LuGfe*J^Nl>1;TGYfCKuC>4EU3Cq7TFr?EoP;GS(_ z0)IpVkI2I^5wciM&Uib2lCs^3>pbbtpbfsY;MgWCxq-D!qJ%Usq*AOt{Wm=~>MQ@S z8oZ0jEhm9ZT;SmiXw7=nbcAkG>a&7u{Hk|87ZR)@fgmn8$6-3}@Prp{&B40n)CFdvDg%ua&s zX!_vV+lP|p0@c$n)-~Iz$!Fpz`z6ytKi)?4?-UEp*o`JjvS3=3v>;tFT%g}((f-Gvj<7eSE!n>q{)@7@5{#6Xsr`EqS-)q@s4b_O$O%HD zdLrA)u&wX?e;v9=rQO#XI?VlxHDliz#n&^{`)7`Na^3n;$cA%~5=bRt!E*G>vpGS1u1 zeJ-XL1U{2b|Emy$XiRcSw^L?z|JC)t(FR(S@c~kVgYsd!xu`uOp1Xuil(KSCi-X06WvF#t@`c>X)jhNjV=A~vB4oD5G z*^9euzTBl^4NC7wzSzMmd6|Cg0RpAbQ5~NXSB%r3fBP!8QF5K$(@r|)ETR%VmUecM z`W1w@g}E{3r+X{y-EQ6kB`Fp4%-*{9Ws+Jkv*lY*#6xZoAq+poqrQO;FF?5nH7`h3 zO1$lG4|;_b@AZn5YWm6BLO$MaYqi1+blh%e0_HfyoJ@vw>GL&`Ud*ftIEcA8udpbqaX;>zQX#gmj=L={g+eZqXl+xy zw_J@h!c0;s+y0L4zSgufv2e!?$`I!t`XN2hMsE|@Yu=)hk1YO&a&tsY1_?d+`E;(<^W|EJ<+K2k%^hGt6_4yCj+*5HEe4b4HphtdcQb6kIV4l zw?c%HcXhc6cVidog2bebbp>a1e8X752WjtZBvL%^?-2^mt#w>V4xCKiNnPpbb3<>f zJ?JJzQfBYG6D25K_Hj}oHbbV^(4x~9KfDG<0&x5Iu948&!WS&#P_KqQoJPxJt3foI z93|R>{141Bqdp@vLpR2*Y%FRU0s?vHW|{7}_iZ_@nU)7k{@3c+XcA&8Wg>`~6f&tm zMcy>GxK^h(d1u1sjw!x84so><%g)qP$d1gsC__-O>t%F?6>>5Jzl3vs+MW*HVp@ru`>LRZrgm9RA7 znW7tO5k++!8zj(j+~YUim>tD&>qG;PehuN6+gPXj_hup<1ykDkU?Rp&Nch1H#o0~y zX^~sXpM6SEOQ8W^A;VaYO~glec~8Y2|A-7NuoFu>O(oso#b8&nOGZY{OFTv28rj7@ zQ!`v10v4MdJ=nb5lT4Yx?K#N5$7o&(sNgpz<$3i@)W&&Ioy}0s zRmQg47kAzQvRM_?CkvxMMbi-6T>9%+s1TxcskTq?&WllF@A^+1;6d^WhIM^Jhr*Mt*W z7?PWOT)@skysXb|!E=VJd!}Gor)T6xVgCh+6*1MNCMYVMgbO3_1fgud3>g}l_T_?WuU9~)HU_S3B zW-TkK3JVCzxDf%q?n^2wLK5@2aWY!jHdpD;jc`$)=nFG5F9`wzQ?KZ)J($_!Dw>WV zr+pewEa}+dwl-0`&+8Jh6=B4Dj=H}5CHHtWe*5okN5oK{H^!FJK)ljnL@~S z#+1jxXho%RZOdcdX-mNxB#J3-+_VS=_m%>S-*LUg1c_K5jeYU>$NSAWr@^<&951DC z+Y^=H3g7`l!`6Bg7UO#saU0=M^2*7QK_@%M_*qPN7=#C3NFFZx9%~GDg!X$I0X>u+JrH?sKi;~y8FOsFI--J9|hh;O(M5xgZ z**C#*^|X(_OG&^sF^FZbCVu*`ys7NvnI{CV$2u0FW{^(50Bi;6Fnfxowc9s-1m$7^ zF?C)csHY@~g`1D&y>Bj{S9hE~uUe93e_;Uk51#HAk6{<{1ADw;4&LRAFTjAd?I}O_ z?o}vLzIMe%A9}$joR=GXLY2EO;J%IOy^@e7l7w<_bms1fB@8!TZHb*w5P)p(p#BzQ z|7sez!J$@&SqtuR`tKW=|Et=Km=wmYv^y+qU5UCAqyb!gtHp)Uy2+2+-xwrR{pee| z#L>?XFB>YUZpLh2s8f@A|TtTO?c0~=i5)iWTa z%-~Smg_W#f!{(oQ>W!Q#h#vamB{d%7#J8dHv-!^U#s%0?4lxli>O#B;Ae~HJ?#-hm zIXTxpj~!*Ym*9LCUcy174aQezt7d8Xy#1qCQ-$ztnFRsBpCnBmjHbXv>AVU zzMS?RI#{H|1Y?z^W$h)!q($XHEx0?Y+7O~O$oDdoL@`aXHi_6&u6y<|sPiwg2oM|p zK*!J9W`Ua^c2TGu!nmJ7LWH3hAWuh^u#?00>?2aIaZK#@;Uk#kKwgCPH%!r21zO!< z#2PF(C@)(_O6@Kp4fQ(F3RCy`P#gNql9sE3t@L>nRl)C{EcQ<+@)CN-5rx*!_?C>_ zG}cY$44tJ~5tygISWVh!fM_3{))+?@kG#g4I7?JyxB*L1(%vECXWGPE*aWW9g{O(Q z?v#aW|2avxE0bjD+~dxPU~$9$HT1?AOiDM*6T$sflWkEp$N-pA7RW((TEBcD6W2Up zS8LJx1-iTd(RWudp<|UUTD;twB$Y#@2amC@!W;ZlEWQm)T!Pb}4CF&0kGFWBz2^z5$6VHtX{g{S=0aT+=9=rf*mnyoUmYw*3$!BHwm5HaoScu>ynjoF&KYje1ODJ#x=?!+#WxG#PsEx-X-qy9wJ^PnDk7$}2v zX1rVffA=Q1ayw7|PWnD@il{g~dPX5f2E}K8Yj0NIE<9=!yxy1<;hSC&dR^{@SJ2)} z8Hzy0tdSF9L^-a)?@KpbgXU9=A)hR8jF%e`hOVmhXB7CT)bJl$Szm`qg};+}A)J>2 zu>2n^ve(AnO=hGaS(inXZAw!T!FYXh6~QQtHe;>APcY~5mJ4qPVneJ8nM&me*thLoF>7v**W7Kew03z4^ z!H&nm9?txuLnALIkl+|OhbV)AleCJ2!{i9`Z`K8C^?|)ss2^!D=DKclXJ?_qtShuk ztEr5H??z2TCDREn@yBLhYo1Q~`)g$?G&=*sqRLqZd~yT3t8Fa+-+~9vUj8s~xl_1Y zVu`|0e`>_9x$ytvk!RN@z|fplgeFi0rAe?yk$logo^&|foU88+{@x}F0hs|9>2(yw zY!H<03Qg$L%wcQ`*OsJ(1#`HD%qUR`f2fzJPAt&_~cex8cd|a%jNZ)#{ehJ z@Zls@=hHEMf-ntO*N%MY+YMSFh)|p}L8+Ule$xqb2`OnItGc$pl-y%}J+#cl7>{|3 z)NVsW+~StcQ~!u8;mn7*$ZL!X6^k&qFQnSdCl53TyY0UCxq*q$XVwuh38QS?g5WD0 z9MXv-H2KX`gB;a#Tc>1q*UM*_d?1?9Mn5l?mi={sYDhVRG~I-ZK9HF2y;eZHUg|B( zp+&dfbRy;5VN77TR+QrihBn1*ijkEzGKL9YQrWIp*~yA&XZI^`5kJowOE}SeM#jDr z&EX!AaPS@GdqpAuk)c<$lJ=SOwRB=fV1(X)FB*WPzDTR2-z&pMnGvjAp&ZVT=$n(0Z=tG%33zY{AJQ1kh?@VEdK=V}-}w0Z_uNzUPS z@bgpA^?)|n;B6%OHzqV`Bg}!~BYB+2y@XhG#j2CErzY?68WamlR1|ITX-J&cIX z=qS?nAc3AV6AFoz2N^Q^vZ>CSN+9hD7@i~m8-=v5YCu&M$=0_kdA=MOV$9m}7D(BP z;`XH6jB;i|R)wXc~L<)46Z7`WjkQE~KU1E@!=wK3{L6;zRzjlP%ue{>!zA z)9|%{!1$)7h!wz<92~0nPYjw+OAQeS$d-d3{ z#cQ6Pb>t01d&+DN5ImpmH~g5$Ba7v2?rXI+GSosslMG+7<&ODOx}YG<bE43zuC=pyyLN<~KyAgH-8&pxhbLaJ;e97!o+E{juc;zqf!FLeny{-~GM=ai* zkj9ZE_`a()J2u|&SNR@@We*xtFs@*Vp>dEqZ-BYnHl(1-iCIs+WLxd`X(;EZ>;_~_Z#KJ)+KT27mw+=r8{bI~z(_Uoa-+46yxb_oqbk!s%959` z*2`hCC4%G}19~hwMZC;6mdk#YKKoFrCQB%WcM=LR z&Gm5fMtdiM^DIj9iFtm&Dm+(!fFhYjKpX@PDPUJ-9vtE)sPU>aHk9a%`Ilm1Q0^{( z0?JdL-Owi5rgw{Pn_`LMgHvx~%s+zwS z@BP#K`1QmOcZ5CA1`sKg3a46k4J3vM{^e<2QN0j${d7_$;ku0zCEmPDmuIin8izb6 zZqBu~Vrs;w<;?Ce?v=|ax+(oz4>(oX>QIavQTA8~a6VSJKmEVR+dtH=Dyv^4oUa=t zoxVm3y@~sDlZ?X13;ifFJsivTaKsk?J$=?Rcg zw-uWZ%22OG8wg5?**R^A#3-ICDD8^JIAT~&H&iV7LB|{9FAL}2xUm%xwgpNTqWNT` zq(A18jPT6e=nG1iHGX#yT|VK+u#Hd)K)5Y9BF47+q;J)~!}~)=u5v@uGVInD(laC`||%RS=*ouO(rQ za^kNyRZ(Fh{9l_GN5Z#zh8Mi*R)b371yxmLAy8HY%-0%sbx=>7Tb!kGIYXqR4MM`M zTdO2C>L>XiDxuxagmg|h|eXG1z6|^IVg3k z>>trbnWBX&;f z1SJ?@ucsln*_?+$T`Qs%Ln?WPt4T|etdjJVt*dwvJ-snlP0nZ@e^EMCP;29a->&i+ z^C63^y8K8Ri!(yn+?h|ku{j!UO5H~1jlUWL6Er1t?{6L+CTra0k(%7RJY@>H0{-)_ zCk39fbJ;JkIFTDDZ^NZ&?D_gm=@OZnxFvctc zVyz3e=86}5wveqZUt2iBf1%Esf{R+(!rfMfA4yC-?JZ@A2Cr}?2 zhmL-1+GWS0N&gURcuK5+gjnk5#s}Fz>H}uErcr$cGi}W?|IF^#yfQotg+Y{6o<)Kr zPF7=QLKJoQvAH({a81`L27PH=k$QaYVfgW;k7>vO_80d0cyERz<4kq}=Qt4fuH`=O zGrGS(UEjk8wj!{|QM-=10<|Lys|p5@H6>0~rk^nW$%U#!<^B9(mygcAKN!XG01hsD zz?cE%;Uk*&ihuyPy4zEgtql?>NlTw|#Y6vWf)_Ga_&&g*&%4u4@_g6i@k~AfM-T8* z3iqqv+n{(H*AN0md2|x;^>-X~k&7h(c-CiW5VUW#&U)1DRHRkFMfT-9a?0oG_{KQ) zr}9#I&&p}i*nEcp<6w!<>KVyP8QY54imH$N4xq!(5ct6V_r4O!hm?MS@TFu_do~uU;<9s`V1b}HcBcIb8(WY?kV&7ew3**5E|t@A~t4U5l(BmcWf0J!|STf|fw)*(g|v>nZG0hOWK;2icbc`XVk9GzwB3ij{5 z-%=_K9}Uy&qASUt8}0_SEpvgG5wz9^oXj@i+?VWsPiW&iOT>N+8jl~@Os8Wx_!I9lkW4d=f<@~GA@ z{wkGMB6#^43yjOaI3*;AjmJ+HpM2k?h>Af9Uz21z14SVbMC{d5MBtN-E5Zd_E|eOX;n525i`SqSK_1O3+hk5*u1>qs zYntL}m{8f2NNOLd7xg{%*^uhs4RT9R3k3nO5;X4!KrU;bNrA>j)ugcfYDiC{Qiy0~ z(7W2LEl1_uM01(mo-7pCv|YRXbfq5eKfN7)TVNGdJNtrVFo3QBPui=pRuIjNv|;(K z-^$t#0zINJ>w{!vhegE2d7DE@npag=c!IBAgN~J>#;CN!d6OV`A$DGQwpIs@>Ofq? zCmn5kKo)I_zAh`{4o2Ljg3h6BC+5-R>F>0(C&MVJQUjLu|NKdpD6qodEHqjM(mF`v z#0WLeUUbD0k)E%wVe(icVqh-JkhVe?0NT$yS1JN+KF0hQKvL0YrM6?oV*cFD{B9_O)6C#9<{^pw+;BhEhFw?6W`0BO&_tjNQtT>7l@vhjnLg z%i=b^!S?1y+y4rWBK}AGi3`b+=|`}4X%z4A?coX|n`-BxK5Q>hiro>Jx2RS}5x*|F zXC4xXmp@?EjTU_R6{}zY?`4e3;eIzN3MH9da!nVQF_kwEUe9Jh{70TZAY`8R_>l)t zHHbaU!GDZ0Ae8jTIRF!blYmT>K=l*J1GzX^5WB@oZRbo6$s8ZZiKGHCoriq2C6v+} zqi8;V(M^(48~TTfOY~uaYxQZ6ZO@-0M=LZY$cAv&-bHva1TmjkA|LBl`5o#jN_ij;Dn2#q{)tGB6A3GVJ0soU)E|D#wliou4PL*{T$6w zZe`|0Pu5&NUnZ4+(nm2<)Z_RE9Vb4m7oRabIQHnIb*Jn<^G5T3kB3A5_S8?g6Q=RT zI)m8APtxxZwS#*$IZHIp0XHtcl zC&V*IDetg-#)D5~%%L1L zosceUwAmsuTJtTa!Mi$SkjB86!A!$oJf6EvT4IS%9)5;9&cDYJk>o8Hrs!3OOnGFe z|I(HY{OiuvuDoMagDeIl7?kCtbq>@`V4lT_TYi}yz_KkHBx%lC&N$YgoF3EBfFV^Z zWc++JB{|VZf09uRlJS9^$v~S?zcp&e=KGfHrmvfed5_5eNuRz}!eA?NV*OCDE8AAc ziZ-_5a!+v?9kfD{;$9LDg(NGz@?6rpDO4pJ#i42YFr3b&^gGwxz*xrDFr^oRu;^Hb zvMZjPpY%ZFFz!bCoPTvOmRw;xH*Gt!1(+&7U!nT*gT-I(Is80?=1k3^sY89FdIPA4 zIZT8aB)VQUH)54r@VHO$;Yc;K+Xf=nQTCWTOPAW(#cD}j_cYw9U6}bcU<=xM*iZ2+ zC#?d;7>|x%;YfD(JfDL@cEO9Hw@b4*HR1J`SO+^kKVm&d#|z)u{P$&siJVEgSeVHN zqX_qm0kcVd^%o8j#>zjj8Uv8eTtf-L5HhcY322{XzeOnqLmaYOt81>QayVY#IYbBZ z6zDD+oa5J|ob>t73g^aeF`4=IXiJjS2;jps=Vg7ThsIH|J^xpA z9iXCW&LXnzRxub3KoPtD`EAjOn>nYfQxt0;9h4T_pi@RcqK2V76)TzA6eulR8}0w0 zoq#wuvkT5+f2O!Qt=;^%2;nD@CU$aDc05BLW`V95f0Qzf7f4sv;m#{wuFFT0+B`Ac z(V)MF89s+EW@^C-QfRRK?t&rv|G<|Hz2R`HPD~(I;ktQ5TN8=CGgpD#bVCyx+Tu}W zbU`bqzm$L)`jSGWoVvbX>Icm~P0`n#yF1;NY3cylq;WTKq_X>EjpRZv=ZO_H;l^|| z0&aBmVhIz)5ly|%w3|Ql7^;JHT*+$%D=*-0Al%=&5SZ->AN~e?jB3*%+x#Ook?x%R z8=08ySa8LPu&>=HiXB~tV@E(_G?8??goc2jwJ&MY6-E9hbnk^EKRA8IJsJzj#EmM$ zp15;GsMM{$vvpemEc%MVGP(9LMJfe^g7ob=X`v)yLEx-yX)|#*ovRH?lW&6srHD>Y z)>U|00i3?)Vo*Sfva4V3?d1C4ZWyA40534irg`rvV~4$9bsCOhXLarv`@ zEiLT=4DOENM4+O!XE&WV)qX-J{Kj9$VF@ZBQK??}E8GTrQJhG*Ugo_3|FLgI;4@qP zElMad&`5qEVg}I|&m<%y94hk|m}AfP7zTfa!cmkLA(1eI1-^myIbpqASS$5r@6-wG zzE0@+H<9-qDTSO@d|?8ro)%AY{_$PIKMEj=r$SJutZ#Y46&|>t&TNl>IXu@0pZGKM z^1XEjj|L~wwxn)M9TM{;>t}Q^a|y?(IOhc$BVo`mN!usu(gyhfAZ0~owf2DualJtf z>DYNMdtlwjKVp4b$?cvk!wOC7jBMEw70_-vvd^5WKTI;zZaJ7Zy_qCw5_Aj`LjJ=j zLrqcmUZ{JDm6(iU%>gFLy-t5s|Nq`mO(Y90Pk~BqG*3JVO}Y}1AV9=ER(p-#)<2up zj$2r$h7OEjAt^$J(5^}FmXt0*QI44Bbsg`olP2b>5%y!@|8$6La?1Z{N(@@zP$WYY zKIh;46~k3Beb5*M=N&=##$VUC$E;~pOZ*e~&arwq@ z@jo-2pnrJLdkiPpMi(#vb+@qj- zP_N%}Z}}(y?{3B%vl)#E9yb+9NXhHGjLMEnrL2^8r4|TRwO=8G!k+m4bapVti?79V z^E+#U83ofHbxZ$-7|%(F_gr;{9X00+Lt%kMd{Mg3T;*>C9=2t}w|cEA znvX#RBD5IBFUx`Q%rkdz8eEo3BecXsD#T`|Z`f_}S^$5Y+6cg>Vq-z$^{+2eft*8m z4U<=3aq0a^USxV^n>8@C$_%F0tyoIk;}CK^vtW=RkM`f|t|yS1j(zOJfl}o=UpIaD zXOD5P44P}8_o+YNS8KvNDog)+g(#{l+~inBTgZsylUgyC<{gb5i0cbW29x;V72HZi zRY`U+m(Yi4i)5|r4j1pNnV{GZ&dIP!Z#NWRNytHYAQh8}ZyYNYm-a++p{Um}m_~}Q zQ7`ulu|fogsZ3z@R$fs$^edbR{XAaD&Hn~)T7Mzd8zt=|$Zgqxy?@TC4V%Zzt$z>_S?Z}s;#55A;6-^#q8kN|l=YK1Ba@h{Q_w4h)b&=kkppw|1!_qf ziTPIXc2yuUEVDyW#6qh}H4vS|I*JpGkb=U!K+DqDbR~p#j-KyyUPB0iTtD6Fy!bvG zIpF?&_@nRkI6cfsp!dg2w@=(JeWjR3x(~0(@f5wP;a7}DWO<$aYl!bUjDT?P zwJ=M_S;;Pu-64vXq7I$eN6mh9G(K;;D>anhN>39wul7xTjLq=@VJL}Vw_8BgvWb6WWY1`Kr2Ps^gn`1`kqdH7;xmlJZIf*{a{BvPwST8iF-7xy& zj{=*2{GXxb0E#EQGaDF;rPUEWD`R8&xP27WkgD_4-0If#gnI;g^N|gS8~jRLGVPNu znU}GMdJw!-y(T_W!fp7f_{G?!Lw*I+zEqA178mFmm(VvY*mA}p8VSyx9pcTLH69n*F9a^t4(BF#svymYGz!%xA={hVl?GTS-V z%y)D=q8Q1W)E|j~vbr47?I{Jd#dA~<7YqaIU|HQvHmCWO;>evTnA_LgAl61p@KWDL zVVfGbx^XvM(OK!hnbo`$7Ql@0MRCT1EsPgIMX78A8RW`9BoXo58%5+jITS}9R}h%} zDguX7o}!%en$DUGn~W|F-N|X0>1Yn9HZjMhBE_eq(7`F68MJ9KfdI>(2XhMW}~M*am^za^B*nJ~}rAPOey;Ej-# z0qIOxy-!P3aK5BAhE%fPKPZxy_^};k*w5s>(2ivr6I5zw^`=QRPnMt*1ttf^;dG>R zjaa{fr>XxY%Mk2SI*5#Old)Icp_eb47!y|w+aZ@ur3#u*=Piq;)K-tOxq%nU zuWK)49jO6^E(MEmB6|iGB03$K^odbqb!a7_af-|Ob*TUE0ZK9(#26mm&o-hR(??@9 zv-p@De;UF7dOw@w0*Q$Y5P-s3{tJ|H12uIbLIDx52wI;M9Bgy0iCM|2B<~sQ{l$Pu zxY9$d40mM54^vw4kd^maK4FCm9bEy}BuWjueHF>uX_h7(?!;Pk%al^BSpIULf2X=pG}GcPk@9Dc!tWY-s3I0e>e}z*Xreg z+fxhNng^ult6-5H=)*BG=pW}WDKr^EGD~d!WxR&d4QU|)53C7hF3-TF+1@K*5Onyn z@v#+LR^x8LgS!@MKP&O-bv=R>dUYk1PWNwpbhsz~da|^M;?g3hh;&HT7g<^OS1wpz zBB7SE363z=-Sd%O03eqrSx98_nR;XXn&SX2|J#`==s@SM9pL*2GL?*bRqha=u^6xw zB1t6;+&ytY0JnZr<&E%<6py9v%6RpNt%4qsV~z427JuGo8N}aY^2ELPpGZf-GD^ac zDcMX^Sji)F>~_DgRea(EJ~rSr_%R0ubU@cFJ#=`lC{31?`>|T)W}#YT&w%mk*ReX< z{H5*sJo(m41ojO;=QHfIh;C>imOLV@f`(w8-gDopXsGce_nso&b^2%a;`}s|7E0pD z?>;y?JnOR1h^nE$dR~`fu40Yop;WxegNef#z0d?KJo4yVj9+3yTZMLv zk$Lk-XOhj2%=n3@*~@_+kaBUHs8hB8#BLJ8ys+Ab(o;8c-Jdca2>p3+tnp+{apr|Q zz1*D51hgVx#v(ZPqAJQF3BTz!9p=E@Jti#7FXMm&@wThWnq>GiLhi0DzENGRUL%iA zVI&p;dxsgg9BX@Y?+Pls0f}rWpRSJZsGDLzg|)wZg8{A)4V5jOSlE5glnP54{$r6? zbH(fYVI^=SuT# zUoIroT`Oek9kR)i9((B@pV{%ho%qhw9b?B4P)dQ0o?V}MsgM}-RX5o-e?4g#u$zZm zVjY;}5zx+=aX6h@T#Ji!Ohg!$<%J`EfJO*m%GN&55yW94zCYNpe~7sqS`p!;D6*4- zb@(}{;dk?P16}fp);zcN{*O;U2y<{naD53i>Gw$(Rs^BME`v6Q2>eV(5XW60}<5 zS2EEuaeBu%4qHiSzl75pdQ|H2j~lLr`F?Bi62~JqWP&xSgS;;%0R%a~rKez3@lt|l z&@cBN^u!b7fdsMKHJK)`R*?}YV5Kesw%`Sr_OG@MaGej&ooRjs0BV`m;dFUWLR9f< z2ptO)PNaAZ5xlBG8o-^T5sHyhpIk$s?mT|Yd>tHxqM0YEWcYTCfsdYaoxd>0B@N_J z(B!x`ylzC#vv?I-W;V1q0WdU1+xz5`4jDoGNble%JSj|NV23~A9eup>JbKARVHt)Z zWY5vP#xD)=r*P}(i3V0>tnE3M;S@GCGfCiA2!tBh)ubrS7Tuq=W5Zk@=R;d5rA*R?cKjo6J)Aa4GMf2?m*ND90p(%>BGF1)r+FJ!0X^64mfe7R{I;Jc@)H zqT1aPoWYsbQwdDEJ$nqU+KE3q7eawvQu?*hyq>M$twf(m}> z`j)9(63KyqX@>HrzEP7ZzfLcnfxF_>23+`8kG%itAJO;5P(F7HDM3NKqU_r=DbRNb zMb%dxh#$B&CfeR*j;YWJ>pdXtD{vzp$m-U_-IJV(A1B-{2V?^)+V(Z|+OvYR#Ah9N zUkN9sN`e8!I34H>Eu<)tYze=Ny#LG42&QxGOJz;@kZ-2r;y*1V^+%R;8qcPuOsr`0 z9Lrvp_-TG>`#8qtGN%E?ptxPqy*bED`!*d%xI6;NI?>DbHCV=<*zMzAEXls9Kzi$@TQZ-AmOtBFg`0m@PLR5TO@`;9?J<@8Lr#~8v zSXDEqsjSmR;N&#_SKrC{bW0V@$RDAME}QPzG^jx6(9vn-zb;SD+=xX%0H|>}7+_u3 z(At+Z=R?!=G+38ZyC#O@wy5cJyT%SQ_2=-&YEDj{I8z=sO`d6W5Ntw14R zzWsN8XsAY|>BkP^x_n!`^drcl%)eg>y8fzjAl*+z7d{ili}iC0P$kz78p)`#l@fFEuvOk3`C0MCuA93pTd>ZP?I_wO z*X$>RAz*q;?)OdQ+3AdwS-NXkEF<2u=6FQ83A?2fP%hpq**Gihi?{7+I zK0W1DSQ3$u*oM(;`G$mo^Z2dvd6c+mmLodi+2mSmsT9vC3lM~-%YM;K;C_0iFz<*P z9JtwrE?RoL^Vw9@4iU&MH*C1amSUOMv6>u`I-epc>LY=IWn->SDk{D@u`@yJ_j{Ai zJYMCY&}20~KY^v%UhTZp@2LSe4bR~sOHO{3(R5P8J1M_xzL!z*&L9{!@l14)6kNR( z*l4?%JH;&p$RJD_t{zRue#cuL*!Wy=nBz!l`Fr0K8BBAXlW)Oy8=EA$9L{ucYW&|< zNo_IbMCy=aMEr@TF^`DPNvbqt%D5a4L;Yl7-mpxQo$%LJ=C{qq*K&lX%DvGB3(ht< zfl*QUvUqGCdr-#gR>s1qPrY4|vkX%ryGGLrQ}{+Pur60aU%bI!Ap97N!2SX6vC~E4 z^?z0rmy2m!tKMt8ICQF&d(!57H<0#6;2A9ZTxq-}`%CuoB5@mX*Op2trk}R@z^T_Y zFv?xQknG?~3txKHnz&$bUV;NbjJuM*hR*r7#hksuEI~RuSXF|jWIcy`=X*YA_sZ0+ z@#!fu7!weFHh3#T3SSReszno6XdQA$AGA~eqOiP#l;3~7qyilhYnbfGi2hY`)z3E_ zuq-{7e_82U2c@zW%4_phe+TUuHw#bj>(P4B^fHdx3k|XT0`5Uiumeat!iWzjjUWYf z;B>70OuIquAF_k|W?0K}M5P2MTYeuFuD50%bO85tuT5BW!G_TRMSKQ1qEVZfVO3}(I zGZ?drdW3j`CI##x#63joEgQ=(1&Vnu!g+xK;ZK|tYaN!zd@#JfN4{3d#Rg~ZEAY2Z z5G%hU82vOWe#H-SeYj__Es7t-E}nPI$*m*+qyOGcf6(!)w#t8ANy>6zoh@J`-gdSl zNJLZLwkYEl|(u|mg-C4d%dj0=Le zhna>R*&*hphHQ(?*8m!b?k#WZmE}bt?n$am<8&uVdR5l@Hc;Intfx)y(HY5l%wt@J z-Y6I1T(Vmfvpg!bh48WZKBl)1sD-Wi7v;K_B*vasFce5VD?N#IT-Fmfo({M1GY}o6 zgIkcaugGP1*CwhrE@V5z;gkH5*2Hy8qp^KfKsx{ppL z(lm87FCbn#wQAn>@4vowi3r&@3@jRn8sWWeg#b5hChh&iP2jdyf`Ui$i_ri*K*GN} zw8S;h(?vDV*0W?J0Qe-z82outQM|^;U7Va5?~N)>ZqP9L4tS zeAeH^4Y4AaeosYwlyls~0R13BkJx=ud7Kc8n?MaND*??Hq?N9etfp**kC6()Uod31 zl2DY8@)-I zOd8x&E$AqFys8VOg{&NL{Y9BUq`hq5wrSOXruO(bSC6xiwxVa{F^mSehFuAVKkt* zAL0Gb4B_H}Q|~!@lsEgH<@*T<_}^>PHZDwk27+G$}eeap*3K#i4 zrkJ(Yl8}m=ibIs&2v1uhq&NTPxc%*Yb1TSldo>eX+feh?6{NuSte2}_mMXOmLJa2Q zAQq6S$hqbS80;^I=>Ek1S3gYwMt6MXwNeJdfUSpBlue^sDyu*I+5Y_PUo<2$kGd+N zJ&~G&frsNZ&&~a?nlY%QS+-leuX^OaW!@TKd7J;xD{kTX7`Vjod4xgOj{{W&No*N{ zT}}NEZ%(23V;q}p&&qR(80v;*)4@wJsOLHpY}cl-CS+H~5`j4P2PC~duT;mxqOhAZ zA-Sf4W8$ao`)Q>O#Z;ZFfiEu?a-I)Ou$Ow`7R5+2aT)v24w+Nv>4=o>8S{fiRK z=#w8@46iSID%=SloXKt`M4ZIfaU~_#Xy)UyU~hycOquxE9fB<74n{Hlp?vu+Tzpe! z1Hng6$JKCGTX-z_<;6cu6tQI*h=Cge4zIprV@Te~EC8G~=k?3yN$pr}Xwrzp8=$iD zACA;UUBkaq!P!o3Lyfi@7!sE}@+a|HfsBnvaxc{Gdcf$ zSFE3l<0XTsE3ouF~AX)Wa@#k4xH|VYc&^+ z*2iCxBGSF!zS3K^QeQ9#(;{>$RB&(qLAH^AAM*Va66;z2jG{Q!A(}>+ikNO7K(g~^ z{%7nu-i@Jg`GJKLo5e!r(0#*KmZ_nx1PqmY7sojB*IgFtqSRa9780@(ri$d*q6XnO zikHVmdtpH3tkwlh`siY7Z#JYzf0ctqh5id7F>NPW7v{@GGq+*o*Scfye}9 zg{fXCDG1I#ta4NiI(J~-U~})ibp=B`j*Olrpy}Ik*e}8i_l4k`eWRtQxptEQbKqp; z^hfq92#=H1Rrm+hR1^0Tr_nLn3kLO%7;BJehp;ldQn5Ms`fP%%_aW$?1g$0qvO1We z05}S%!q&0^`$K@4Vj`^C=O~=H4D_j(^S0^_F`UKRe2qn9?-`S+c_mXSgzf3Otoxsxzl0lYqyt@PR_yO|LK%O zn{Gxq$isUjPUMf;z!|Z#w-~8h<4dG;Lw0Zoi5^3*p8$Ztp7p zb;~Q}rAb?KK#IcSI{xju@UgjAlDE!#W*b98bu_5Km{utux(w3~dI}I21qW~nN1yiC z$Xu+V)~3^afkR$-(5~M&~qzJNG&ny*gqiKA7lAwcp_EMm6i~jnu#JEAxxURHl#r+f2nKSWP z(pLx9f!w6c8k@06WR~xmr+xCGL<1${PP=a%X$9G8I65|fSiRr8cj>IbitG(fJuwVz z2UNyVPtCQvrF+Z2?`Q+((8i0)Sy)iWpl=dHoaB!rGT1C?rWkAB*Z}cArYemWhJYHW zXS<6z+--<{=3@ty3dP*hDXY5f^bYPgXhdqNajosQ%%e-qgGs^sz72|ACQjYVfm5`t zs*|=iNb)>E*$p*lNnl1%9>G;x+U^l{I3d&wWK(|zZpMH_p~gQ2b(@mcM4T{Dw#DQL z%D>CZvSe#4F<}S)y_h7%Ep0SysNY1bI@K_om?my!N1?}K9CDg9G}F?7Pi@R%;T(L* z@7c|xWQUG37*%vJ$C@9aQ@GapV{<-p$SF{&B0)Y6d{WQLpinU8y8fJ^D1Z<2XmAW$L+u0vy>P5{7)DLTL;_yB}e>%uBLc(ux4@OtI zi98vP31>AQM})WCe9hkRHW`Oj#GqDHpYiOvHJl*)`fzrH;;(O;mrjAI3$gc{A?rOv z#!U7x^FRQiHD#lUF`~Ok1(_^fs3EpHTDFkHWX+lQ3I_W*L1JerJ0zI{wRG-EXo2O% z++8qURU(Vb8gyC(@x79Y_s&cje_Gzcz{zzVA3^?H3r4i8I>Q?JqDUW@yCIzT00vahlm&ws5nAF^6bixQT^47( z`yXEqd>Wy3j6V&@0Fx{gVq9QdIIUG;)lJlmT5D3dJCZ!XR)%acvEeTikkY5T~^9;FM z0P+$n_RVDQWg;K8A0Kb{jDGko_ON%$%NEFa;SW9Q8PD=3)j6XSN1s~cmJ0|~MUfiP zSCsDrG51eSA4+k7%4arUjGTmOkcttFU-#AnrGM9Q3N{JxdFci`&n{j%>mM@UL3g}I z3^7o~vjOp|+P*3jaD!^-)0QF~&^}W;q?}e{>1V0Eqcs%li4w5#RNCoI^1Wd2X8(o% zH>>{{)34HT4YEjz5%U6GXG)CCsW@0xw!J`us=J+rh-oC3SvlEl)TiDNA!uSx)O_l` z6y*$>5;qcvi9)p$A)J~3-qXPs%tht{$iO0%4cvX1kZDcy^D=CN9xFuF{35dn_&w*M zWCUKB>ziWbL4E?>OdX2F?~|+vvyZ}PzWKx+ip`|hf5~71u=Q202`%mNExKpa%MqOX zKS64FzF;;(bu(fT^hMdtiOtuFQjv$E=lUjN1)Wo<(RG;Y>8KJ1y0-2qlE3(ntxMgk z`3xPXs7X`Ali8s^;njn5pawMSc3 z8#jRg0!AD&W&*YWgpR>fHZw(KOW!_y;aI=7^6|i7>Di4A1tpkFZ8T~9C^@k71*|Og zTzDgE7fC%AP$5V!{oYdVh!*ykfc#78pChNK-hezX-kgy1gAR)7DpARrz=qs6ezkpf z%snXUb={s$#`BfeVrD))#e`nX$ej_>#e>cD(T=~c{3A^81Y39}vP`fCVf1r39yjw; zFGirt|4Vf;Xz}Wu%nl^P>_kWhs?lcu_thwHpVRW%+Q@6@UbcnqJ2Z&GwT81%gBmfv z^NhfWkV+dZ0vPn|r-@gnP*y-!-&Pul}AylLDCm+i`IjrKl=RA0d6ihb^&z;aUF;tsB2q|+E z`O;9eRqpBPi5QiY?}Na7~Y* zjME${(ii`3Ex;oVWMcLuy6@G~BUV8vM)Bb-{fWg2xzWLMg_8|IpUI=}RGMv{bAg=J z+!Dvf4>XhtsbT^nuM<0c1#U^bLp6N)PPRan%?fIozl)tY&u0cXoyj(1Jd_g3(z#Vw zna#ofWxXK)RVTK6X9Ma*cobFsz^?1jA9>7B*7X%EQsH0v?mlTK%waEd>Ss~Eg*xhW zu%Ip)&92-Qk`0s3)9f-&6oi2!(y@O6X6m{Y%NCuUhS`(`3czK`)JIopvWDlh4Dxv{GV$NL7g+zFHXGXgu0P_F!O zaUDk6BoATxUF)!Z(1ahASP#0B8P6h*d|6{nXzds(N8*V)rc;Q1ynMzOIM3gQElhQM zHZsFm=Js=A8>;LNbT*7%n;AhjL_og2V=j37}{it7k zru8A<)^6+UI$_A#F{Ux20fRThCWO(H!G;$~`T^zv75(&>X&&AH3mwa>y^1oIwho95 z&XU}9>TvyJALj&dyCG?&k4l#nhMVNg+V!4At21lgm)YNMQNxLezb?OR81e=8DWXz= z^KBfWDGfRb^)au#aTsI{KSL(MHzX6x@Ukb{@6E5|=}OR@NXj~e$*HheXVe^V{e=#& z9sKx4;zk%Xg(e}Dv@)a0x+;w zgR@8KXDzOKktx*=P<_`oE1m`Duo+`=m2(Jk-1U%SqG6vZ7UHq^wZi5Ak9|~;)X|

qp)aJHhLAj-~FSDpJGU<`6hDi#VZn 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 diff --git a/backend/tests/tools/run_bwipp_tests.sh b/backend/tests/tools/run_bwipp_tests.sh index 9682aad5..f9eeae5b 100755 --- a/backend/tests/tools/run_bwipp_tests.sh +++ b/backend/tests/tools/run_bwipp_tests.sh @@ -14,17 +14,22 @@ function run_bwipp_test() { } run_bwipp_test "test_2of5" "encode" +run_bwipp_test "test_auspost" "input" run_bwipp_test "test_auspost" "encode" run_bwipp_test "test_aztec" "encode" run_bwipp_test "test_aztec" "encode_segs" run_bwipp_test "test_bc412" run_bwipp_test "test_channel" "encode" +run_bwipp_test "test_codablock" "input" run_bwipp_test "test_codablock" "encode" run_bwipp_test "test_code" "encode" run_bwipp_test "test_code1" "encode" run_bwipp_test "test_code1" "encode_segs" +run_bwipp_test "test_code128" "input" run_bwipp_test "test_code128" "encode" +run_bwipp_test "test_code16k" "input" run_bwipp_test "test_code16k" "encode" +run_bwipp_test "test_code49" "input" run_bwipp_test "test_code49" "encode" run_bwipp_test "test_composite" run_bwipp_test "test_dmatrix" "input" @@ -34,15 +39,18 @@ run_bwipp_test "test_dotcode" "input" run_bwipp_test "test_dotcode" "encode" run_bwipp_test "test_dotcode" "encode_segs" run_bwipp_test "test_gs1" "gs1_reduce" +run_bwipp_test "test_imail" "input" run_bwipp_test "test_imail" "encode" run_bwipp_test "test_maxicode" "input" run_bwipp_test "test_maxicode" "encode" run_bwipp_test "test_maxicode" "encode_segs" +run_bwipp_test "test_medical" "input" run_bwipp_test "test_medical" "encode" run_bwipp_test "test_pdf417" "input" run_bwipp_test "test_pdf417" "encode" run_bwipp_test "test_pdf417" "encode_segs" run_bwipp_test "test_plessey" "encode" +run_bwipp_test "test_postal" "input" run_bwipp_test "test_postal" "encode" run_bwipp_test "test_qr" run_bwipp_test "test_rss" diff --git a/backend/tests/tools/run_zxingcpp_tests.sh b/backend/tests/tools/run_zxingcpp_tests.sh index c1429c8f..932c8f23 100755 --- a/backend/tests/tools/run_zxingcpp_tests.sh +++ b/backend/tests/tools/run_zxingcpp_tests.sh @@ -16,8 +16,13 @@ function run_zxingcpp_test() { run_zxingcpp_test "test_2of5" "encode" run_zxingcpp_test "test_aztec" "encode" run_zxingcpp_test "test_aztec" "encode_segs" +run_zxingcpp_test "test_codablock" "input" +run_zxingcpp_test "test_codablock" "encode" run_zxingcpp_test "test_code" "encode" +run_zxingcpp_test "test_code128" "input" run_zxingcpp_test "test_code128" "encode" +run_zxingcpp_test "test_code16k" "input" +run_zxingcpp_test "test_code16k" "encode" run_zxingcpp_test "test_dmatrix" "input" run_zxingcpp_test "test_dmatrix" "encode" run_zxingcpp_test "test_dmatrix" "encode_segs" diff --git a/backend/vector.c b/backend/vector.c index 703cfb84..c391f9e9 100644 --- a/backend/vector.c +++ b/backend/vector.c @@ -421,7 +421,8 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ struct zint_vector_hexagon *hexagon, *last_hexagon = NULL; struct zint_vector_string *last_string = NULL; struct zint_vector_circle *circle, *last_circle = NULL; - struct zint_vector_rect **first_row_rects = z_alloca(sizeof(struct zint_vector_rect *) * (symbol->rows + 1)); + struct zint_vector_rect **first_row_rects + = (struct zint_vector_rect **) z_alloca(sizeof(struct zint_vector_rect *) * (symbol->rows + 1)); memset(first_row_rects, 0, sizeof(struct zint_vector_rect *) * (symbol->rows + 1)); diff --git a/docs/manual.pmd b/docs/manual.pmd index 129407b5..07237895 100644 --- a/docs/manual.pmd +++ b/docs/manual.pmd @@ -1,6 +1,6 @@ % Zint Barcode Generator and Zint Barcode Studio User Manual % Version 2.11.1.9 -% September 2022 +% October 2022 # 1. Introduction @@ -1022,7 +1022,7 @@ Symbology Default character sets Alternate if input not Latin-1 Aztec Code Latin-1 None Codablock-F Latin-1 None Code 128 Latin-1 None -Code 16k Latin-1 None +Code 16K Latin-1 None Code One Latin-1 None Data Matrix Latin-1 None DotCode Latin-1 None diff --git a/docs/manual.txt b/docs/manual.txt index 77b267c7..9c0f4a50 100644 --- a/docs/manual.txt +++ b/docs/manual.txt @@ -1,6 +1,6 @@ Zint Barcode Generator and Zint Barcode Studio User Manual Version 2.11.1.9 -September 2022 +October 2022 ******************************************************************************* * For reference the following is a text-only version of the Zint manual, * @@ -1122,7 +1122,7 @@ Latin-2 (ISO/IEC 8859-2 plus ASCII). Aztec Code Latin-1 None Codablock-F Latin-1 None Code 128 Latin-1 None - Code 16k Latin-1 None + Code 16K Latin-1 None Code One Latin-1 None Data Matrix Latin-1 None DotCode Latin-1 None @@ -4121,7 +4121,7 @@ defined. Annex B. Man Page ZINT(1) -% ZINT(1) Version 2.11.1.9 % % August 2022 +% ZINT(1) Version 2.11.1.9 % % October 2022 NAME @@ -4333,7 +4333,7 @@ OPTIONS --heightperrow - Treat height as per-row. Affects Codablock-F, Code16K, Code 49, GS1 DataBar + Treat height as per-row. Affects Codablock-F, Code 16K, Code 49, GS1 DataBar Expanded Stacked (DBAR_EXPSTK), MicroPDF417 and PDF417. -i, --input=FILE @@ -4419,7 +4419,7 @@ OPTIONS --rows=INTEGER Set the number of rows for Codablock-F or PDF417 to INTEGER. It will also - set the minimum number of rows for Code 16k or Code 49, and the maximum + set the minimum number of rows for Code 16K or Code 49, and the maximum number of rows for GS1 DataBar Expanded Stacked (DBAR_EXPSTK). --scale=NUMBER diff --git a/docs/zint.1 b/docs/zint.1 index a81305c1..8295fa0a 100644 --- a/docs/zint.1 +++ b/docs/zint.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pandoc 2.18 +.\" Automatically generated by Pandoc 2.19.2 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "ZINT" "1" "August 2022" "Version 2.11.1.9" "" +.TH "ZINT" "1" "October 2022" "Version 2.11.1.9" "" .hy .SH NAME .PP @@ -238,7 +238,7 @@ Set the height of the symbol in multiples of the X-dimension. .TP \f[V]--heightperrow\f[R] Treat height as per-row. -Affects Codablock-F, Code16K, Code 49, GS1 DataBar Expanded Stacked +Affects Codablock-F, Code 16K, Code 49, GS1 DataBar Expanded Stacked (DBAR_EXPSTK), MicroPDF417 and PDF417. .TP \f[V]-i\f[R], \f[V]--input=FILE\f[R] @@ -332,7 +332,7 @@ can be 0, 90, 270 or 360. .TP \f[V]--rows=INTEGER\f[R] Set the number of rows for Codablock-F or PDF417 to \f[I]INTEGER\f[R]. -It will also set the minimum number of rows for Code 16k or Code 49, and +It will also set the minimum number of rows for Code 16K or Code 49, and the maximum number of rows for GS1 DataBar Expanded Stacked (DBAR_EXPSTK). .TP diff --git a/docs/zint.1.pmd b/docs/zint.1.pmd index 1880ad7d..da69cefc 100644 --- a/docs/zint.1.pmd +++ b/docs/zint.1.pmd @@ -1,6 +1,6 @@ % ZINT(1) Version 2.11.1.9 % -% August 2022 +% October 2022 # NAME @@ -187,7 +187,7 @@ Paintbrush (`PCX`), Portable Network Format (`PNG`), Scalable Vector Graphic (`S `--heightperrow` -: Treat height as per-row. Affects Codablock-F, Code16K, Code 49, GS1 DataBar Expanded Stacked (DBAR_EXPSTK), +: Treat height as per-row. Affects Codablock-F, Code 16K, Code 49, GS1 DataBar Expanded Stacked (DBAR_EXPSTK), MicroPDF417 and PDF417. `-i`, `--input=FILE` @@ -269,7 +269,7 @@ Paintbrush (`PCX`), Portable Network Format (`PNG`), Scalable Vector Graphic (`S `--rows=INTEGER` : Set the number of rows for Codablock-F or PDF417 to *INTEGER*. It will also set the minimum number of rows for - Code 16k or Code 49, and the maximum number of rows for GS1 DataBar Expanded Stacked (DBAR_EXPSTK). + Code 16K or Code 49, and the maximum number of rows for GS1 DataBar Expanded Stacked (DBAR_EXPSTK). `--scale=NUMBER` diff --git a/frontend/main.c b/frontend/main.c index a4490b18..c516c8ce 100644 --- a/frontend/main.c +++ b/frontend/main.c @@ -76,7 +76,7 @@ static void types(void) { "20 CODE128 Code 128 89 ITF14 ITF-14\n" "21 DPLEIT Deutsche Post Leitcode 90 KIX Dutch Post KIX Code\n" "22 DPIDENT Deutsche Post Identcode 92 AZTEC Aztec Code\n" - "23 CODE16K Code 16k 93 DAFT DAFT Code\n" + "23 CODE16K Code 16K 93 DAFT DAFT Code\n" "24 CODE49 Code 49 96 DPD DPD Parcel Code 128\n" "25 CODE93 Code 93 97 MICROQR Micro QR Code\n" "28 FLAT Flattermarken 98 HIBC_128 HIBC Code 128\n" diff --git a/frontend_qt/mainwindow.cpp b/frontend_qt/mainwindow.cpp index 9a8ef10b..04ffcf41 100644 --- a/frontend_qt/mainwindow.cpp +++ b/frontend_qt/mainwindow.cpp @@ -79,7 +79,7 @@ static const struct bstyle_item bstyle_items[] = { { QSL("Codablock-F (and HIBC)"), BARCODE_CODABLOCKF }, { QSL("Code 11"), BARCODE_CODE11 }, { QSL("Code 128 (ISO 15417) (and GS1-128 and HIBC)"), BARCODE_CODE128 }, - { QSL("Code 16k (EN 12323)"), BARCODE_CODE16K }, + { QSL("Code 16K (EN 12323)"), BARCODE_CODE16K }, { QSL("Code 2 of 5 Data Logic"), BARCODE_C25LOGIC }, { QSL("Code 2 of 5 IATA"), BARCODE_C25IATA }, { QSL("Code 2 of 5 Industrial"), BARCODE_C25IND }, diff --git a/win32/libzint.vcxproj b/win32/libzint.vcxproj index c5859812..3bfd8609 100644 --- a/win32/libzint.vcxproj +++ b/win32/libzint.vcxproj @@ -67,7 +67,6 @@ Level3 ProgramDatabase - CompileAsCpp 4018;4244;4305;%(DisableSpecificWarnings) @@ -101,7 +100,6 @@ Level3 - CompileAsCpp 4018;4244;4305;%(DisableSpecificWarnings) diff --git a/win32/vs2008/libzint.vcproj b/win32/vs2008/libzint.vcproj index 5c54694c..122ef10d 100644 --- a/win32/vs2008/libzint.vcproj +++ b/win32/vs2008/libzint.vcproj @@ -41,7 +41,7 @@ @@ -462,171 +462,171 @@ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" > @@ -636,7 +636,7 @@ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" > Level3 ProgramDatabase - CompileAsCpp 4018;4244;4305;%(DisableSpecificWarnings) @@ -161,7 +160,6 @@ Level3 ProgramDatabase - CompileAsCpp 4018;4244;4305;%(DisableSpecificWarnings) @@ -193,7 +191,6 @@ Level3 - CompileAsCpp 4018;4244;4305;%(DisableSpecificWarnings) @@ -230,7 +227,6 @@ Level3 - CompileAsCpp 4018;4244;4305;%(DisableSpecificWarnings) @@ -263,7 +259,6 @@ Level3 - CompileAsCpp 4018;4244;4305;%(DisableSpecificWarnings) @@ -290,7 +285,6 @@ Level3 - CompileAsCpp 4018;4244;4305;%(DisableSpecificWarnings) diff --git a/win32/vs2015/vsx/libzintMD.vcxproj b/win32/vs2015/vsx/libzintMD.vcxproj index c7ff9e58..010c80d2 100644 --- a/win32/vs2015/vsx/libzintMD.vcxproj +++ b/win32/vs2015/vsx/libzintMD.vcxproj @@ -51,7 +51,6 @@ Level3 - CompileAsCpp 4018;4244;4305;%(DisableSpecificWarnings) false diff --git a/win32/vs2019/libzint.vcxproj b/win32/vs2019/libzint.vcxproj index 5d7f120f..4c0c8efe 100644 --- a/win32/vs2019/libzint.vcxproj +++ b/win32/vs2019/libzint.vcxproj @@ -67,7 +67,6 @@ Level3 ProgramDatabase - CompileAsCpp 4018;4244;4305;%(DisableSpecificWarnings) @@ -101,7 +100,6 @@ Level3 - CompileAsCpp 4018;4244;4305;%(DisableSpecificWarnings)