comparison mupdf-source/thirdparty/zint/backend/tests/test_hanxin.c @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
comparison
equal deleted inserted replaced
1:1d09e1dec1d9 2:b50eed0cc0ef
1 /*
2 libzint - the open source barcode library
3 Copyright (C) 2019-2024 Robin Stuart <rstuart114@gmail.com>
4
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions
7 are met:
8
9 1. Redistributions of source code must retain the above copyright
10 notice, this list of conditions and the following disclaimer.
11 2. Redistributions in binary form must reproduce the above copyright
12 notice, this list of conditions and the following disclaimer in the
13 documentation and/or other materials provided with the distribution.
14 3. Neither the name of the project nor the names of its contributors
15 may be used to endorse or promote products derived from this software
16 without specific prior written permission.
17
18 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
22 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 SUCH DAMAGE.
29 */
30 /* SPDX-License-Identifier: BSD-3-Clause */
31
32 #include "testcommon.h"
33
34 static void test_large(const testCtx *const p_ctx) {
35 int debug = p_ctx->debug;
36
37 struct item {
38 int option_1;
39 int option_2;
40 int option_3;
41 char *pattern;
42 int length;
43 int ret;
44 int expected_rows;
45 int expected_width;
46 char *expected_errtxt;
47 };
48 /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
49 static const struct item data[] = {
50 /* 0*/ { -1, -1, -1, "1", 7827, 0, 189, 189, "" },
51 /* 1*/ { -1, -1, -1, "1", 7828, ZINT_ERROR_TOO_LONG, -1, -1, "Error 541: Input too long, requires 3265 codewords (maximum 3264)" },
52 /* 2*/ { -1, -1, -1, "A", 4350, 0, 189, 189, "" },
53 /* 3*/ { -1, -1, -1, "A", 4351, ZINT_ERROR_TOO_LONG, -1, -1, "Error 541: Input too long, requires 3265 codewords (maximum 3264)" },
54 /* 4*/ { -1, -1, -1, "\200", 3261, 0, 189, 189, "" },
55 /* 5*/ { -1, -1, -1, "\200", 3262, ZINT_ERROR_TOO_LONG, -1, -1, "Error 541: Input too long, requires 3265 codewords (maximum 3264)" },
56 /* 6*/ { -1, -1, ZINT_FULL_MULTIBYTE, "\241", 4348, 0, 189, 189, "" },
57 /* 7*/ { -1, -1, ZINT_FULL_MULTIBYTE, "\241", 4350, ZINT_ERROR_TOO_LONG, -1, -1, "Error 541: Input too long, requires 3265 codewords (maximum 3264)" },
58 /* 8*/ { -1, 1, -1, "1", 45, 0, 23, 23, "" },
59 /* 9*/ { -1, 1, -1, "1", 46, ZINT_ERROR_TOO_LONG, -1, -1, "Error 542: Input too long for Version 1, requires 22 codewords (maximum 21)" },
60 /* 10*/ { -1, 1, -1, "A", 26, 0, 23, 23, "" },
61 /* 11*/ { -1, 1, -1, "A", 27, ZINT_ERROR_TOO_LONG, -1, -1, "Error 542: Input too long for Version 1, requires 22 codewords (maximum 21)" },
62 /* 12*/ { -1, 1, -1, "\200", 18, 0, 23, 23, "" },
63 /* 13*/ { -1, 1, -1, "\200", 19, ZINT_ERROR_TOO_LONG, -1, -1, "Error 542: Input too long for Version 1, requires 22 codewords (maximum 21)" },
64 /* 14*/ { -1, 1, ZINT_FULL_MULTIBYTE, "\241", 24, 0, 23, 23, "" },
65 /* 15*/ { -1, 1, ZINT_FULL_MULTIBYTE, "\241", 26, ZINT_ERROR_TOO_LONG, -1, -1, "Error 542: Input too long for Version 1, requires 22 codewords (maximum 21)" },
66 /* 16*/ { 2, 1, -1, "A", 21, 0, 23, 23, "" },
67 /* 17*/ { 2, 1, -1, "A", 22, ZINT_ERROR_TOO_LONG, -1, -1, "Error 542: Input too long for Version 1, ECC 2, requires 18 codewords (maximum 17)" },
68 /* 18*/ { 3, 1, -1, "A", 15, 0, 23, 23, "" },
69 /* 19*/ { 3, 1, -1, "A", 16, ZINT_ERROR_TOO_LONG, -1, -1, "Error 542: Input too long for Version 1, ECC 3, requires 14 codewords (maximum 13)" },
70 /* 20*/ { 4, 1, -1, "A", 10, 0, 23, 23, "" },
71 /* 21*/ { 4, 1, -1, "A", 11, ZINT_ERROR_TOO_LONG, -1, -1, "Error 542: Input too long for Version 1, ECC 4, requires 10 codewords (maximum 9)" },
72 };
73 const int data_size = ARRAY_SIZE(data);
74 int i, length, ret;
75 struct zint_symbol *symbol = NULL;
76
77 char data_buf[7829];
78
79 char escaped[8196];
80 char cmp_buf[32768];
81 char cmp_msg[8196];
82
83 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */
84
85 testStartSymbol("test_large", &symbol);
86
87 for (i = 0; i < data_size; i++) {
88
89 if (testContinue(p_ctx, i)) continue;
90
91 symbol = ZBarcode_Create();
92 assert_nonnull(symbol, "Symbol not created\n");
93
94 testUtilStrCpyRepeat(data_buf, data[i].pattern, data[i].length);
95 assert_equal(data[i].length, (int) strlen(data_buf), "i:%d length %d != strlen(data_buf) %d\n", i, data[i].length, (int) strlen(data_buf));
96
97 length = testUtilSetSymbol(symbol, BARCODE_HANXIN, -1 /*input_mode*/, -1 /*eci*/, data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, data_buf, data[i].length, debug);
98
99 ret = ZBarcode_Encode(symbol, (unsigned char *) data_buf, length);
100 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt);
101 assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected_errtxt);
102
103 if (ret < ZINT_ERROR) {
104 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows);
105 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width);
106
107 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data_buf, length, debug)) {
108 int cmp_len, ret_len;
109 char modules_dump[189 * 189 + 1];
110 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i);
111 ret = testUtilZXingCPP(i, symbol, data_buf, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len);
112 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret);
113
114 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data_buf, length, NULL /*primary*/, escaped, &ret_len);
115 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n",
116 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped);
117 }
118 }
119
120 ZBarcode_Delete(symbol);
121 }
122
123 testFinish();
124 }
125
126 static void test_options(const testCtx *const p_ctx) {
127 int debug = p_ctx->debug;
128
129 struct item {
130 int option_1;
131 int option_2;
132 char *data;
133 int ret_encode;
134 int ret_vector;
135 int expected_size;
136 };
137 /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
138 static const struct item data[] = {
139 /* 0*/ { -1, -1, "12345", 0, 0, 23 }, /* Default version 1, ECC auto-set to 4 */
140 /* 1*/ { 1, -1, "12345", 0, 0, 23 },
141 /* 2*/ { -1, 2, "12345", 0, 0, 25 },
142 /* 3*/ { -1, 85, "12345", 0, 0, 23 }, /* Version > max version 85 so ignored */
143 /* 4*/ { -1, 84, "12345", 0, 0, 189 },
144 /* 5*/ { 1, 1, "1234567890123456789012345678901234567890123456", ZINT_ERROR_TOO_LONG, -1, -1 },
145 /* 6*/ { 4, 1, "1234567890123456", ZINT_ERROR_TOO_LONG, -1, -1 },
146 /* 7*/ { 4, 2, "12345678901234567", 0, 0, 25 },
147 /* 8*/ { 4, -1, "12345678901234567", 0, 0, 25 }, /* Version auto-set to 2 */
148 /* 9*/ { -1, -1, "12345678901234567", 0, 0, 23 }, /* Version auto-set to 1, ECC auto-set to 3 */
149 /* 10*/ { 5, -1, "12345678901234567", 0, 0, 23 }, /* ECC > max ECC 4 so ignored and auto-settings version 1, ECC 3 used */
150 /* 11*/ { -1, -1, "1234567890123456789012345678901234567890123456", 0, 0, 25 }, /* Version auto-set to 2, ECC auto-set to 2 */
151 };
152 const int data_size = ARRAY_SIZE(data);
153 int i, length, ret;
154 struct zint_symbol *symbol = NULL;
155
156 char escaped[1024];
157 char cmp_buf[32768];
158 char cmp_msg[1024];
159
160 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */
161
162 testStartSymbol("test_options", &symbol);
163
164 for (i = 0; i < data_size; i++) {
165
166 if (testContinue(p_ctx, i)) continue;
167
168 symbol = ZBarcode_Create();
169 assert_nonnull(symbol, "Symbol not created\n");
170
171 length = testUtilSetSymbol(symbol, BARCODE_HANXIN, -1 /*input_mode*/, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, -1 /*output_options*/, data[i].data, -1, debug);
172
173 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length);
174 assert_equal(ret, data[i].ret_encode, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret_encode, symbol->errtxt);
175
176 if (data[i].ret_vector != -1) {
177 ret = ZBarcode_Buffer_Vector(symbol, 0);
178 assert_equal(ret, data[i].ret_vector, "i:%d ZBarcode_Buffer_Vector ret %d != %d\n", i, ret, data[i].ret_vector);
179 assert_equal(symbol->width, data[i].expected_size, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_size);
180 assert_equal(symbol->rows, data[i].expected_size, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_size);
181 }
182 if (ret < ZINT_ERROR) {
183 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) {
184 int cmp_len, ret_len;
185 char modules_dump[189 * 189 + 1];
186 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i);
187 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len);
188 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret);
189
190 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len);
191 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n",
192 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped);
193 }
194 }
195
196 ZBarcode_Delete(symbol);
197 }
198
199 testFinish();
200 }
201
202 static void test_input(const testCtx *const p_ctx) {
203 int debug = p_ctx->debug;
204
205 struct item {
206 int input_mode;
207 int eci;
208 int option_3;
209 char *data;
210 int length;
211 int ret;
212 int expected_eci;
213 char *expected;
214 int zxingcpp_cmp;
215 char *comment;
216 };
217 /*
218 é U+00E9 in ISO 8859-1 plus other ISO 8859 (but not in ISO 8859-7 or ISO 8859-11), Win 1250 plus other Win, in GB 18030 0xA8A6, UTF-8 C3A9
219 β U+03B2 in ISO 8859-7 Greek 0xE2 (but not other ISO 8859 or Win page), in GB 18030 0xA6C2, UTF-8 CEB2
220 ÿ U+00FF in ISO 8859-1 0xFF, not in GB 18030, outside first byte and second byte range, UTF-8 C3BF
221 PAD U+0080 GB 18030 4-byte Region 0x81308130, UTF-8 C280 (\302\200)
222 啊 U+554A GB 18030 Region One 0xB0A1, UTF-8 E5958A
223 亍 U+4E8D GB 18030 Region Two 0xD8A1, UTF-8 E4BA8D
224 齄 U+9F44 GB 18030 Region Two 0xF7FE, UTF-8 E9BD84
225 丂 U+4E02 GB 18030 2-byte Region 0x8140, UTF-8 E4B882
226 � (REPLACEMENT CHARACTER) U+FFFD GB 18030 4-byte Region 0x81308130, UTF-8 EFBFBD (\357\277\275)
227 */
228 static const struct item data[] = {
229 /* 0*/ { UNICODE_MODE, 0, -1, "é", -1, 0, 0, "30 00 F4 80 00 00 00 00 00", 1, "B1 (ISO 8859-1)" },
230 /* 1*/ { UNICODE_MODE, 3, -1, "é", -1, 0, 3, "80 33 00 0F 48 00 00 00 00", 1, "ECI-3 B1 (ISO 8859-1)" },
231 /* 2*/ { UNICODE_MODE, 29, -1, "é", -1, 0, 29, "81 D4 FC FF FF 00 00 00 00", 1, "ECI-29 H(1)1 (GB 2312)" },
232 /* 3*/ { UNICODE_MODE, 32, -1, "é", -1, 0, 32, "82 04 FC FF FF 00 00 00 00", 1, "ECI-32 H(1)1 (GB 18030) (Region One)" },
233 /* 4*/ { UNICODE_MODE, 26, -1, "é", -1, 0, 26, "81 A3 00 16 1D 48 00 00 00", 1, "ECI-26 B2 (UTF-8)" },
234 /* 5*/ { UNICODE_MODE, 26, ZINT_FULL_MULTIBYTE, "é", -1, 0, 26, "81 A4 70 2F FF 00 00 00 00", 1, "ECI-26 H(1)1 (Region One) (UTF-8) (full multibyte)" },
235 /* 6*/ { DATA_MODE, 0, -1, "é", -1, 0, 0, "30 01 61 D4 80 00 00 00 00", 1, "B2 (UTF-8)" },
236 /* 7*/ { DATA_MODE, 0, ZINT_FULL_MULTIBYTE, "é", -1, 0, 0, "47 02 FF F0 00 00 00 00 00", 1, "H(1)1 (UTF-8) (Region One) (full multibyte)" },
237 /* 8*/ { DATA_MODE, 0, -1, "\351", -1, 0, 0, "30 00 F4 80 00 00 00 00 00", 1, "B1 (ISO 8859-1) (0xE9)" },
238 /* 9*/ { UNICODE_MODE, 0, -1, "β", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 30 01 53 61 00 00 00 00 00", 1, "B2 (GB 18030) (2-byte Region)" },
239 /* 10*/ { UNICODE_MODE, 9, -1, "β", -1, 0, 9, "80 93 00 0F 10 00 00 00 00", 1, "ECI-9 B1 (ISO 8859-7)" },
240 /* 11*/ { UNICODE_MODE, 29, -1, "β", -1, 0, 29, "81 D3 00 15 36 10 00 00 00", 1, "ECI-29 B2 (GB 2312)" },
241 /* 12*/ { UNICODE_MODE, 32, -1, "β", -1, 0, 32, "82 03 00 15 36 10 00 00 00", 1, "ECI-32 B2 (GB 18030) (2-byte Region)" },
242 /* 13*/ { UNICODE_MODE, 26, -1, "β", -1, 0, 26, "81 A3 00 16 75 90 00 00 00", 1, "ECI-26 B2 (UTF-8)" },
243 /* 14*/ { UNICODE_MODE, 26, ZINT_FULL_MULTIBYTE, "β", -1, 0, 26, "81 A4 B1 5F FF 00 00 00 00", 1, "ECI-26 B2 (UTF-8) (full multibyte)" },
244 /* 15*/ { DATA_MODE, 0, -1, "β", -1, 0, 0, "30 01 67 59 00 00 00 00 00", 1, "B2 (UTF-8)" },
245 /* 16*/ { DATA_MODE, 0, ZINT_FULL_MULTIBYTE, "β", -1, 0, 0, "4B 15 FF F0 00 00 00 00 00", 1, "H(1)1 (UTF-8) (Region One) (full multibyte)" },
246 /* 17*/ { UNICODE_MODE, 0, -1, "ÿ", -1, 0, 0, "30 00 FF 80 00 00 00 00 00", 1, "B1 (ISO 8859-1)" },
247 /* 18*/ { UNICODE_MODE, 0, -1, "ÿÿÿ", -1, 0, 0, "30 01 FF FF FF 80 00 00 00", 1, "B3 (ISO 8859-1)" },
248 /* 19*/ { UNICODE_MODE, 0, -1, "\302\200", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 70 00 00 00 00 00 00 00 00", 1, "H(f)1 (GB 18030) (4-byte Region) (not DATA_MODE so GB 18030 mapping)" },
249 /* 20*/ { UNICODE_MODE, 0, ZINT_FULL_MULTIBYTE, "\302\200", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 70 00 00 00 00 00 00 00 00", 1, "H(f)1 (GB 18030) (4-byte Region)" },
250 /* 21*/ { DATA_MODE, 0, 0, "\302\200", -1, 0, 0, "30 01 61 40 00 00 00 00 00", 1, "B2 (UTF-8)" },
251 /* 22*/ { DATA_MODE, 0, ZINT_FULL_MULTIBYTE, "\302\200", -1, 0, 0, "30 01 61 40 00 00 00 00 00", 1, "B2 (UTF-8) (full multibyte)" },
252 /* 23*/ { UNICODE_MODE, 0, -1, "\302\200�", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 70 00 00 38 26 7E 40 00 00", 1, "H(f)2 (GB 18030) (both 4-byte Region) (not DATA_MODE so GB 18030 mapping)" },
253 /* 24*/ { UNICODE_MODE, 0, ZINT_FULL_MULTIBYTE, "\302\200�", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 70 00 00 38 26 7E 40 00 00", 1, "H(f)2 (GB 18030) (both 4-byte Region)" },
254 /* 25*/ { UNICODE_MODE, 0, -1, "啊亍齄丂\302\200", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 64 68 50 3C AC 28 80 00 FF FE E0 00 00", 1, "H(d)4 H(f)1 (GB 18030)" },
255 /* 26*/ { DATA_MODE, 0, -1, "\177\177", -1, 0, 0, "2F BD F7 F0 00 00 00 00 00", 1, "T2 (ASCII)" },
256 /* 27*/ { DATA_MODE, 0, -1, "\177\177\177", -1, 0, 0, "2F BD F7 DF C0 00 00 00 00", 1, "T3 (ASCII)" },
257 /* 28*/ { UNICODE_MODE, 0, -1, "123", -1, 0, 0, "11 EF FF 00 00 00 00 00 00", 1, "N3 (ASCII)" },
258 /* 29*/ { UNICODE_MODE, 0, -1, "12345", -1, 0, 0, "11 EC 2D FF 80 00 00 00 00", 1, "N5 (ASCII)" },
259 /* 30*/ { UNICODE_MODE, 0, -1, "Aa%$Bb9", -1, 0, 0, "22 A4 FA 18 3E 2E 52 7F 00", 1, "T7 (ASCII)" },
260 /* 31*/ { UNICODE_MODE, 0, -1, "Summer Palace Ticket for 6 June 2015 13:00;2015年6月6日夜01時00分PM頤和園のチケット;2015년6월6일13시오후여름궁전티켓.2015年6月6号下午13:00的颐和园门票;", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning (171) 27 38 C3 0A 35 F9 CF 99 92 F9 26 A3 E7 3E 76 C9 AE A3 7F CC 09 C4 0C CD EE 44 06 C4", 1, "T20 B78 H(f)2 T2 H(f)18 B35 (GB 18030)" },
261 /* 32*/ { DATA_MODE, 0, -1, "Summer Palace Ticket for 6 June 2015 13:00;2015年6月6日夜01時00分PM頤和園のチケット;2015년6월6일13시오후여름궁전티켓.2015年6月6号下午13:00的颐和园门票;", -1, 0, 0, "(209) 27 38 C3 0A 35 F9 CF 99 92 F9 26 A3 E7 3E 76 C9 AE A3 7F CC 15 04 0C CD EE 44 06 C4", 1, "T20 B117 (UTF-8)" },
262 /* 33*/ { UNICODE_MODE, 0, -1, "\000\014\033 #/059:<@AMZ", 15, 0, 0, "2F 80 31 B7 1F AF E0 05 27 EB 2E CB E2 96 8F F0 00", 1, "T15 (ASCII)" },
263 /* 34*/ { UNICODE_MODE, 0, -1, "Z[\\`alz{~\177", -1, 0, 0, "28 FE CF 4E 3E 92 FF 7E E7 CF 7F 00 00", 1, "T10 (ASCII)" },
264 /* 35*/ { DATA_MODE, 26, ZINT_FULL_MULTIBYTE, "\202\061\203\063", -1, 0, 26, "81 A7 01 B1 D8 00 00 00 00", 0, "ECI-26 H(f)1 (GB 18030) (Invalid UTF-8, forces GB 2312/18030 utf8tosb() difference) NOTE: 2021-01-10 now UTF-8 is checked and mode -> DATA_MODE this test no longer shows difference; ZXing-C++ returns null string" },
265 /* 36*/ { UNICODE_MODE, 128, 0, "A", -1, 0, 128, "88 08 02 2B F0 00 00 00 00", 1, "ECI > 127" },
266 /* 37*/ { UNICODE_MODE, 16364, 0, "A", -1, 0, 16364, "8B FE C2 2B F0 00 00 00 00", 1, "ECI > 16363" },
267 /* 38*/ { UNICODE_MODE, 0, -1, "啊啊啊亍", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 40 00 00 00 00 FF E0 00 FF F0 00 00 00", 1, "Region One (FFE terminator) -> Region Two (no indicator)" },
268 /* 39*/ { UNICODE_MODE, 0, -1, "亍亍亍啊", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 50 00 00 00 00 FF E0 00 FF F0 00 00 00", 1, "Region Two (FFE terminator) -> Region One (no indicator)" },
269 /* 40*/ { UNICODE_MODE, 0, -1, "啊啊啊啊亍亍啊", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 40 00 00 00 00 00 0F FE 00 00 00 FF E0 00 FF F0 00", 1, "Region One (FFE) -> Region Two (FFE) -> Region One" },
270 /* 41*/ { UNICODE_MODE, 0, -1, "亍亍亍亍啊啊亍", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 50 00 00 00 00 00 0F FE 00 00 00 FF E0 00 FF F0 00", 1, "Region Two (FFE) -> Region One (FFE) -> Region Two" },
271 /* 42*/ { DATA_MODE, 0, ZINT_FULL_MULTIBYTE | (2 << 8), "é", -1, 0, 0, "47 02 FF F0 00 00 00 00 00", 1, "H(1)1 (UTF-8) (Region One) (full multibyte with mask)" },
272 /* 43*/ { UNICODE_MODE, 0, -1, "˘", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 70 01 16 80 00 00 00 00 00", 1, "H(f)1 (GB 18030)" },
273 /* 44*/ { UNICODE_MODE, 4, -1, "˘", -1, 0, 4, "80 43 00 0D 10 00 00 00 00", 1, "ECI-4 B1 (ISO 8859-2)" },
274 /* 45*/ { UNICODE_MODE, 0, -1, "Ħ", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 70 00 47 80 00 00 00 00 00", 1, "H(f)1 (GB 18030)" },
275 /* 46*/ { UNICODE_MODE, 5, -1, "Ħ", -1, 0, 5, "80 53 00 0D 08 00 00 00 00", 1, "ECI-5 B1 (ISO 8859-3)" },
276 /* 47*/ { UNICODE_MODE, 0, -1, "ĸ", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 70 00 50 00 00 00 00 00 00", 1, "H(f)1 (GB 18030)" },
277 /* 48*/ { UNICODE_MODE, 6, -1, "ĸ", -1, 0, 6, "80 63 00 0D 10 00 00 00 00", 1, "ECI-6 B1 (ISO 8859-4)" },
278 /* 49*/ { UNICODE_MODE, 0, -1, "Ж", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 30 01 53 D4 00 00 00 00 00", 1, "B2 (GB 18030)" },
279 /* 50*/ { UNICODE_MODE, 7, -1, "Ж", -1, 0, 7, "80 73 00 0D B0 00 00 00 00", 1, "ECI-7 B1 (ISO 8859-5)" },
280 /* 51*/ { UNICODE_MODE, 0, -1, "Ș", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 70 00 B9 80 00 00 00 00 00", 1, "H(f)1 (GB 18030)" },
281 /* 52*/ { UNICODE_MODE, 18, -1, "Ș", -1, 0, 18, "81 23 00 0D 50 00 00 00 00", 1, "ECI-18 B1 (ISO 8859-16)" },
282 /* 53*/ { UNICODE_MODE, 0, -1, "テ", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 30 01 52 E3 00 00 00 00 00", 1, "B2 (GB 18030)" },
283 /* 54*/ { UNICODE_MODE, 20, -1, "テ", -1, 0, 20, "81 43 00 14 1B 28 00 00 00", 1, "ECI-20 B2 (SHIFT JIS)" },
284 /* 55*/ { UNICODE_MODE, 20, -1, "テテ", -1, 0, 20, "81 43 00 24 1B 2C 1B 28 00", 1, "ECI-20 B4 (SHIFT JIS)" },
285 /* 56*/ { UNICODE_MODE, 20, -1, "\\\\", -1, 0, 20, "81 43 00 24 0A FC 0A F8 00", 0, "ECI-20 B4 (SHIFT JIS); ZXing-C++ does straight-through ASCII conversion for Shift JIS" },
286 /* 57*/ { UNICODE_MODE, 0, -1, "…", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 4E BC FF F0 00 00 00 00 00", 1, "H(1)1 (GB 18030)" },
287 /* 58*/ { UNICODE_MODE, 21, -1, "…", -1, 0, 21, "81 53 00 0C 28 00 00 00 00", 1, "ECI-21 B1 (Win 1250)" },
288 /* 59*/ { UNICODE_MODE, 0, -1, "Ґ", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 70 01 B9 00 00 00 00 00 00", 1, "H(f)1 (GB 18030)" },
289 /* 60*/ { UNICODE_MODE, 22, -1, "Ґ", -1, 0, 22, "81 63 00 0D 28 00 00 00 00", 1, "ECI-22 B1 (Win 1251)" },
290 /* 61*/ { UNICODE_MODE, 0, -1, "˜", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 70 01 18 00 00 00 00 00 00", 1, "H(f)1 (GB 18030)" },
291 /* 62*/ { UNICODE_MODE, 23, -1, "˜", -1, 0, 23, "81 73 00 0C C0 00 00 00 00", 1, "ECI-23 B1 (Win 1252)" },
292 /* 63*/ { UNICODE_MODE, 24, -1, "پ", -1, 0, 24, "81 83 00 0C 08 00 00 00 00", 1, "ECI-24 B1 (Win 1256)" },
293 /* 64*/ { UNICODE_MODE, 0, -1, "က", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 70 07 71 00 00 00 00 00 00", 1, "H(f)1 (GB 18030)" },
294 /* 65*/ { UNICODE_MODE, 25, -1, "က", -1, 0, 25, "81 92 F9 00 3F 00 00 00 00", 1, "ECI-25 T2 (UCS-2BE)" },
295 /* 66*/ { UNICODE_MODE, 25, -1, "ကက", -1, 0, 25, "81 92 F9 00 10 03 F0 00 00", 1, "ECI-25 T4 (UCS-2BE)" },
296 /* 67*/ { UNICODE_MODE, 25, -1, "12", -1, 0, 25, "81 93 00 20 01 88 01 90 00", 1, "ECI-25 B4 (UCS-2BE ASCII)" },
297 /* 68*/ { UNICODE_MODE, 27, -1, "@", -1, 0, 27, "81 B2 FB 2F C0 00 00 00 00", 1, "ECI-27 T1 (ASCII)" },
298 /* 69*/ { UNICODE_MODE, 0, -1, "龘", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 30 01 7E C9 80 00 00 00 00", 1, "B2 (GB 18030)" },
299 /* 70*/ { UNICODE_MODE, 28, -1, "龘", -1, 0, 28, "81 C3 00 17 CE A8 00 00 00", 1, "ECI-28 B2 (Big5)" },
300 /* 71*/ { UNICODE_MODE, 28, -1, "龘龘", -1, 0, 28, "81 C3 00 27 CE AF CE A8 00", 1, "ECI-28 B4 (Big5)" },
301 /* 72*/ { UNICODE_MODE, 0, -1, "齄", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 5B BF FF F0 00 00 00 00 00", 1, "H(2)1 (GB 18030)" },
302 /* 73*/ { UNICODE_MODE, 29, -1, "齄", -1, 0, 29, "81 D5 BB FF FF 00 00 00 00", 1, "ECI-29 H(2)1 (GB 2312)" },
303 /* 74*/ { UNICODE_MODE, 32, -1, "齄", -1, 0, 32, "82 05 BB FF FF 00 00 00 00", 1, "ECI-32 H(2)1 (GB 18030)" },
304 /* 75*/ { UNICODE_MODE, 29, -1, "齄齄", -1, 0, 29, "81 D5 BB FB BF FF F0 00 00", 1, "ECI-29 H(2)2 (GB 2312)" },
305 /* 76*/ { UNICODE_MODE, 32, -1, "齄齄", -1, 0, 32, "82 05 BB FB BF FF F0 00 00", 1, "ECI-32 H(2)2 (GB 18030)" },
306 /* 77*/ { UNICODE_MODE, 0, -1, "가", -1, ZINT_WARN_NONCOMPLIANT, 0, "Warning 70 2B 5E 80 00 00 00 00 00", 1, "H(f)1 (GB 18030)" },
307 /* 78*/ { UNICODE_MODE, 30, -1, "가", -1, 0, 30, "81 E3 00 15 85 08 00 00 00", 1, "ECI-30 T2 (EUC-KR)" },
308 /* 79*/ { UNICODE_MODE, 30, -1, "가가", -1, 0, 30, "81 E3 00 25 85 0D 85 08 00", 1, "ECI-30 B4 (EUC-KR)" },
309 /* 80*/ { UNICODE_MODE, 170, -1, "?", -1, 0, 170, "88 0A A2 FB 1F C0 00 00 00", 1, "ECI-170 L1 (ASCII invariant)" },
310 /* 81*/ { DATA_MODE, 899, -1, "\200", -1, 0, 899, "88 38 33 00 0C 00 00 00 00", 1, "ECI-899 B1 (8-bit binary)" },
311 /* 82*/ { UNICODE_MODE, 900, -1, "é", -1, 0, 900, "88 38 43 00 16 1D 48 00 00", 0, "ECI-900 B2 (no conversion); ZXing-C++ test can't handle UNICODE_MODE binary" },
312 /* 83*/ { DATA_MODE, 900, -1, "\303\251", -1, 0, 900, "88 38 43 00 16 1D 48 00 00", 1, "ECI-900 B2 (no conversion)" },
313 /* 84*/ { UNICODE_MODE, 16384, -1, "é", -1, 0, 16384, "8C 04 00 03 00 16 1D 48 00", 0, "ECI-16384 B2 (no conversion); ZXing-C++ test can't handle UNICODE_MODE binary" },
314 /* 85*/ { DATA_MODE, 16384, -1, "\303\251", -1, 0, 16384, "8C 04 00 03 00 16 1D 48 00", 1, "ECI-16384 B2 (no conversion)" },
315 /* 86*/ { UNICODE_MODE, 3, -1, "β", -1, ZINT_ERROR_INVALID_DATA, 3, "Error 545: Invalid character in input for ECI '3'", 1, "" },
316 /* 87*/ { GS1_MODE, -1, -1, "[10]01", -1, ZINT_ERROR_INVALID_OPTION, 0, "Error 220: Selected symbology does not support GS1 mode", 1, "" },
317 };
318 const int data_size = ARRAY_SIZE(data);
319 int i, length, ret;
320 struct zint_symbol *symbol = NULL;
321
322 char escaped[1024];
323 char cmp_buf[32768];
324 char cmp_msg[1024];
325
326 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */
327
328 testStartSymbol("test_input", &symbol);
329
330 for (i = 0; i < data_size; i++) {
331
332 if (testContinue(p_ctx, i)) continue;
333
334 symbol = ZBarcode_Create();
335 assert_nonnull(symbol, "Symbol not created\n");
336
337 debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */
338
339 length = testUtilSetSymbol(symbol, BARCODE_HANXIN, data[i].input_mode, data[i].eci, -1 /*option_1*/, -1, data[i].option_3, -1 /*output_options*/, data[i].data, data[i].length, debug);
340
341 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length);
342 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt);
343
344 if (p_ctx->generate) {
345 printf(" /*%3d*/ { %s, %d, %s, \"%s\", %d, %s, %d, \"%s\", %d, \"%s\" },\n",
346 i, testUtilInputModeName(data[i].input_mode), data[i].eci, testUtilOption3Name(BARCODE_HANXIN, data[i].option_3),
347 testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), data[i].length,
348 testUtilErrorName(data[i].ret), ret < ZINT_ERROR ? symbol->eci : -1, symbol->errtxt,
349 data[i].zxingcpp_cmp, data[i].comment);
350 } else {
351 if (ret < ZINT_ERROR) {
352 assert_equal(symbol->eci, data[i].expected_eci, "i:%d eci %d != %d\n", i, symbol->eci, data[i].expected_eci);
353 }
354 assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected);
355
356 if (ret < ZINT_ERROR) {
357 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) {
358 if (!data[i].zxingcpp_cmp) {
359 if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not ZXing-C++ compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment);
360 } else {
361 int cmp_len, ret_len;
362 char modules_dump[189 * 189 + 1];
363 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i);
364 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len);
365 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret);
366
367 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len);
368 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n",
369 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped);
370 }
371 }
372 }
373 }
374
375 ZBarcode_Delete(symbol);
376 }
377
378 testFinish();
379 }
380
381 static void test_encode(const testCtx *const p_ctx) {
382 int debug = p_ctx->debug;
383
384 struct item {
385 int input_mode;
386 int eci;
387 int option_1;
388 int option_2;
389 int option_3;
390 char *data;
391 int length;
392 int ret;
393
394 int expected_rows;
395 int expected_width;
396 char *comment;
397 char *expected;
398 };
399 static const struct item data[] = {
400 /* 0*/ { UNICODE_MODE, -1, -1, -1, -1, "1234", -1, 0, 23, 23, "Mode nnnn, mask 10",
401 "11111110101011001111111"
402 "10000000000000100000001"
403 "10111110111011101111101"
404 "10100000010111100000101"
405 "10101110011101101110101"
406 "10101110000101001110101"
407 "10101110111001101110101"
408 "00000000100000000000000"
409 "00010101101110000000000"
410 "01010110110001011011101"
411 "00100011000100100100101"
412 "01110111111110001000111"
413 "01001001110000001001000"
414 "00100101001111110010000"
415 "00000000011110110101000"
416 "00000000001011100000000"
417 "11111110110111101110101"
418 "00000010011010001110101"
419 "11111010101101001110101"
420 "00001010100111000000101"
421 "11101010111001101111101"
422 "11101010111111000000001"
423 "11101010000100101111111"
424 },
425 /* 1*/ { UNICODE_MODE, -1, 2, -1, -1, "Hanxin Code symbol", -1, 0, 25, 25, "ISO 20830 Figure 1 same",
426 "1111111010110110101111111"
427 "1000000000111101100000001"
428 "1011111011100101101111101"
429 "1010000010110010100000101"
430 "1010111000110100101110101"
431 "1010111001110110101110101"
432 "1010111010101001001110101"
433 "0000000011010101000000000"
434 "0001011001010001010000000"
435 "0110100011111001010001011"
436 "0011001010100011101101011"
437 "1000000000001101111111100"
438 "0000011000011000100100110"
439 "1101100011110010010011101"
440 "1010001101011111111100011"
441 "1010011001100100100010111"
442 "0000000100010101001101000"
443 "0000000000011111100000000"
444 "1111111000100100101110101"
445 "0000001011001111001110101"
446 "1111101010011001001110101"
447 "0000101010100100100000101"
448 "1110101011100100101111101"
449 "1110101010000010000000001"
450 "1110101011000100101111111"
451 },
452 /* 2*/ { UNICODE_MODE, -1, -1, 24, 3 << 8, "汉信码标准\015\012中国物品编码中心\015\012北京网路畅想科技发展有限公司\015\012张成海、赵楠、黄燕滨、罗秋科、王毅、张铎、王越\015\012施煜、边峥、修兴强\015\012汉信码标准\015\012中国物品编码中心\015\012北京网路畅想科技发展有限公司", -1, ZINT_WARN_NONCOMPLIANT, 69, 69, "ISO 20830 Figure 2 **NOT SAME** different encodation, Binary mode not used by figure, nor Region One/Two 0xFFE switching (same if force mode 11111tt11111111tt11111111111111tt11111211111111111112111tt121121111tt11111tt11111111tt11111111111111 and disable Region One/Two 0xFFE switch",
453 "111111100000010101011111111111111111000001110110100100011010101111111"
454 "100000001000101000000000000000000010100000101100000001101001100000001"
455 "101111100010110110110000010011001010001011001011111000011101001111101"
456 "101000001101000000011101000001111011111011100100111011110111100000101"
457 "101011100011110001100101001011100010111111001000111100100100101110101"
458 "101011100111101110110010000000000011101010010011101100010110001110101"
459 "101011101010101010011011010010010010010010010010010010010010001110101"
460 "000000001010001100000001110111011011010111111011100110110110100000000"
461 "001011001111000111100001011111111010110011111101011111001110010000000"
462 "110010110010111110111011010101001011101101111100111000010011011101101"
463 "101110110110101010111111111000001011000000011011110111001110011000110"
464 "101111000000000110111110011011011010010000100011111111111111111111111"
465 "110010010000101100011100110011011011000110111101000011101000101011001"
466 "100010100000100100100101000001110011100101000011011011110000000001110"
467 "100111000011001010001111101011100011100111110111110011100000011111111"
468 "100000110101001110001001110001110011000100110100010100011010110110110"
469 "110011011011110101001001001001001011001001001001001000001111111101000"
470 "111111111111111111001111011011111011111111111111111101111110011110101"
471 "000000000000000001100011001011111000000000000000000110010001010000000"
472 "110110011110001101011100110001011111000010110000100111001001001010101"
473 "101101111100100001001001111011001001001001011100110100010110000011100"
474 "011110010100101001111000101100000000010110100101000100111001011001011"
475 "111001001001001001001001001001001001110000101101010110011000000011001"
476 "100101011011010101001010000011001000110100111001010100001010011000101"
477 "100000000100100101111000011010110011000101110110100111110100010001001"
478 "001111101111001001100011101100001110101100100000100111011000100101111"
479 "011111011011000001000101100010011110101100010111110111111111111111111"
480 "010010010111001001000010000111000001111011101010000111101100111111110"
481 "110111011000101001100001010100010001010110110111010111000011010000010"
482 "101100010001010001001001100101110101001000011100100111000101010000101"
483 "100010011001001001111111110000001110011111100010110101111101101010000"
484 "010011110010110001101001001001001001001001000110110101100000100101100"
485 "100100011010110001110111000100110110011010000111100111111000110110001"
486 "000111000101011101001010010000001000101101011110110100100010110000100"
487 "100001110000101001111111111111111110101011101111100111111111111111111"
488 "000010011101101000000000000000000011110101101011110000000000000000001"
489 "101110101101101011000001000011001011010011111100011110110101001000001"
490 "101001001001001001001001111111100011010111110000100100111110101110001"
491 "111010111101101011100001010101100010000001011000111111010101110001101"
492 "110101101101100111110000010100100011000110100101101101101110001011101"
493 "110111111001111011011000111001101011100010001010010011010010000010101"
494 "111011110110100000001101000000001011000011111111111111111111111110001"
495 "101101100110000110110010000011111011101101011010110111001111010001001"
496 "110100010111011011000100000001110010110111101000111010101100010111101"
497 "110101000101110010100011111001000010011111111001011010001111000101001"
498 "111100110010110100110000111001111011101110110010101110100111001011101"
499 "100100101010010001001001001001001011001000110000010110101010100000001"
500 "100000100000010101001100101001111010110100000101100000111100011100001"
501 "111101001111100101011110011001100011001010001001110101111111011001001"
502 "111000110000111001100101000010110011001010001110110100010110101111101"
503 "100111001001010101110001010011110011011111111110000001100111111111100"
504 "111111111111111111010010010010011011111111111111111101100010000111001"
505 "000000000000000001110011001010110000000000000000000110101011111101000"
506 "001010010101010001010011101100101101010110000101110111010011101010111"
507 "000000101111101101011110000110011001100110000111000101010011000010100"
508 "110000010111110101011100101110000111110000001110010111011001000111001"
509 "010001011000000101001111001010101111111111111111110111111110010110101"
510 "001110100110111101101101110011010000101111100110000111100011000111111"
511 "110111101011110101000001101000011001000111000100110100010101101110001"
512 "001010010111110001101110111111000010010101101011110101000100001011100"
513 "000000010100000101101001100011110110000111101011110110111101100110100"
514 "000000001110100001111111001001001001001001001001000101001100100000000"
515 "111111100000001101101111110101111101000000111010000101110001101110101"
516 "000000100010001101101110011011101000001000000111110110010011001110101"
517 "111110101110111001110110010111000001010100011111010100010110001110101"
518 "000010101101010001101101011100110110111100100000010100100100100000101"
519 "111010100001110001011110100111100101101101100011010101011011001111101"
520 "111010101000100001010101001001000000010001001001000101001001100000001"
521 "111010101111111101111111111111111010111111111111110111111111001111111"
522 },
523 /* 3*/ { UNICODE_MODE, -1, 1, 1, -1, "1234567890", -1, 0, 23, 23, "ISO 20830 K.2 Figure K.8 (& K.5) same (mask 01)",
524 "11111110001000001111111"
525 "10000000110001100000001"
526 "10111110001010101111101"
527 "10100000111011100000101"
528 "10101110010000101110101"
529 "10101110110101001110101"
530 "10101110001100001110101"
531 "00000000011101100000000"
532 "00010101001010011000000"
533 "01001101111101010101110"
534 "10101010101010100101101"
535 "01010010111101010101010"
536 "10101010101010101010100"
537 "10000011010101000011110"
538 "00000011001010010101000"
539 "00000000110100000000000"
540 "11111110011110001110101"
541 "00000010010101101110101"
542 "11111010101010001110101"
543 "00001010110010100000101"
544 "11101010100010001111101"
545 "11101010110101100000001"
546 "11101010001010001111111"
547 },
548 /* 4*/ { UNICODE_MODE, -1, 1, 1, 1 << 8, "1234567890", -1, 0, 23, 23, "ISO 20830 K.2 Figure K.4, with explicit mask pattern 00",
549 "11111110100010101111111"
550 "10000000000100100000001"
551 "10111110000000101111101"
552 "10100000001110000000101"
553 "10101110111010101110101"
554 "10101110000000001110101"
555 "10101110000110001110101"
556 "00000000001000100000000"
557 "00010101000000100000000"
558 "00011000101000000000100"
559 "00000000000000001111000"
560 "00000111101000000000000"
561 "00000000000000000000001"
562 "11010110000000010110100"
563 "00000000100000010101000"
564 "00000000100001000000000"
565 "11111110010100001110101"
566 "00000010000000001110101"
567 "11111010100000101110101"
568 "00001010000111000000101"
569 "11101010101000001111101"
570 "11101010100000000000001"
571 "11101010100000101111111"
572 },
573 /* 5*/ { UNICODE_MODE, -1, 1, 1, 3 << 8, "1234567890", -1, 0, 23, 23, "ISO 20830 K.2 Figure K.6, with explicit mask pattern 10",
574 "11111110001011101111111"
575 "10000000100000000000001"
576 "10111110011111001111101"
577 "10100000000111000000101"
578 "10101110011110101110101"
579 "10101110011111101110101"
580 "10101110101111101110101"
581 "00000000001100000000000"
582 "00010101011111010000000"
583 "01010001100001001001101"
584 "00100100100100101011100"
585 "11111000010111111111111"
586 "01001001001001001001000"
587 "11110010100100110010000"
588 "00000001011111010101000"
589 "00000000001000000000000"
590 "11111110110000101110101"
591 "00000010111111001110101"
592 "11111010101001001110101"
593 "00001010000011000000101"
594 "11101010010111001111101"
595 "11101010001001100000001"
596 "11101010100100001111111"
597 },
598 /* 6*/ { UNICODE_MODE, -1, 1, 1, 4 << 8, "1234567890", -1, 0, 23, 23, "ISO 20830 K.2 Figure K.7, with explicit mask pattern 11",
599 "11111110101111001111111"
600 "10000000000011000000001"
601 "10111110000000001111101"
602 "10100000110110100000101"
603 "10101110100010101110101"
604 "10101110100111101110101"
605 "10101110111111101110101"
606 "00000000001111000000000"
607 "00010101000111101000000"
608 "00000010110000111000011"
609 "10011010011111001000011"
610 "11000010000111000111000"
611 "01000101101110111000110"
612 "00010001101101010001100"
613 "00000010110010010101000"
614 "00000000010011000000000"
615 "11111110100110101110101"
616 "00000010101101101110101"
617 "11111010101101101110101"
618 "00001010101010100000101"
619 "11101010011010001111101"
620 "11101010011010000000001"
621 "11101010011010101111111"
622 },
623 /* 7*/ { UNICODE_MODE, -1, 3, 10, -1, "1234567890ABCDEFGabcdefg,Han Xin Code", -1, 0, 41, 41, "**NOT SAME** as ISO 20830 K.3 Figure K.16 (& K.14), different encodation (N9 A28 (6 padbits) vs. N10 A27 (2 padbits)); same if same encoding modes forced (happens to use same mask pattern 00) (forced encoding mode: nnnnnnnnnnttttttttttttttttttttttttttt)",
624 "11111110001011000010101111011110101111111"
625 "10000000011001010100001111000111100000001"
626 "10111110111111111100011010110100101111101"
627 "10100000101001001001001001001001100000101"
628 "10101110000100100101010010010000001110101"
629 "10101110000000011111110010111100101110101"
630 "10101110101101001001010111010001001110101"
631 "00000000001110100100100100100100100000000"
632 "00011110111111111111111001101110110000000"
633 "11101011010010011111010011010111001001001"
634 "10100010011010100100100100100100100100100"
635 "11111111001110100110010100010101100011110"
636 "11000110001001000000000101011110001001001"
637 "10100100100100100100100101011011001011001"
638 "11001001111110000011111111111111000000110"
639 "10011011001001001001001001001001001001000"
640 "11010110001100011000111001001100100100100"
641 "11111111000111100011010111111111111111111"
642 "11001001001001001001001010101101000010101"
643 "10001001100100100100100110100110011011100"
644 "11111111111111111111101111111111111111101"
645 "00000000000000000000101001001001001011100"
646 "00110111101100111010110101100110100100100"
647 "11111100100000010100111111111111111111111"
648 "01001001001001010000110000101010110001100"
649 "11001100100100100100100100001010010010101"
650 "11111111111111111110111111111111111110010"
651 "01110000110011010110111011011001001001001"
652 "00101010010001001110100100100100100100100"
653 "11111111111100011100101100000110110100100"
654 "01101001001001001000101010101111100101101"
655 "00100100100100100100100100100100010000101"
656 "00000001111110010110100101111000101111000"
657 "00000000100001001000101001001010000000000"
658 "11111110010010100100100100100100101110101"
659 "00000010111111111110111111111111001110101"
660 "11111010001011011010100101111000001110101"
661 "00001010111000001010100010100100100000101"
662 "11101010111111111100101100111111101111101"
663 "11101010101001001000101001001001000000001"
664 "11101010100100100100111111111111001111111"
665 },
666 /* 8*/ { UNICODE_MODE, -1, 2, 17, -1, "Summer Palace Ticket for 6 June 2015 13:00;2015年6月6日夜01時00分PM頤和園のチケット;2015년6월6일13시오후여름궁전티켓.2015年6月6号下午13:00的颐和园门票;", -1, ZINT_WARN_NONCOMPLIANT, 55, 55, "**NOT SAME** as ISO 20830 K.4 Figure K.23, different encodation; if same encoding modes forced, uses mask pattern 01 instead of pattern 10, but matches pattern 01 example Figure K.20 (forced encoding mode: ttttttttttttttttttttttttttttttttttttttttttttttt1t1t11ttdtt1ttddddddddtttttfftfftffttffffffffffffffffffttttt1t1t111ttttt111111t)",
667 "1111111001111111111011100100110101101010101100101111111"
668 "1000000000000000001100011000011001000010101111100000001"
669 "1011111010001111001111010100100000101010011010101111101"
670 "1010000001001001001110010011010101000110100011000000101"
671 "1010111001111110101100000100101101110010101010001110101"
672 "1010111011010101001101010110011010011000010110001110101"
673 "1010111001101001001001110010001001100100001001001110101"
674 "0000000011100111101111000100011010001100110001000000000"
675 "0010010101100110101110110010111101110110110010101000000"
676 "1100001011111001001000101011000000110101010101010101010"
677 "1010101001010000001110100110100101100011101000111110110"
678 "0011100111010001101011001101001000001111110000110100011"
679 "1000001010111011001101011100010111110101000110100001100"
680 "1110111101010101001101010101010101101010110000001101000"
681 "0000000100111001001010101100101100000001011100000000101"
682 "1001100010010111001110110101110011010001100000110100011"
683 "0100010111111001001100010011100001101010101010101010101"
684 "0001000111000001101001110011111000010010000011110101100"
685 "1001000100000110001111111111111111111000110101101001101"
686 "0011010011110101100000000000000000001000110010101000000"
687 "1000000001001000100010111101101011101000010011001011001"
688 "1101010101010101010101010001111110001001011010100111101"
689 "1101010011001001100110000001010101001011100000101110010"
690 "1000111001010110001110110011010101001100101101001101110"
691 "1001100001001010001100110100101010101010101010101010101"
692 "1011100101000000001100101011001100001001110111011001000"
693 "1001100100010000110001011011101100001010011001101011000"
694 "1011000101001000001100010100001101101100100100110011111"
695 "1100101010101010101010101010111001101101001000111001100"
696 "1101000111010110010101100101011000001110011100100011111"
697 "1101011101101100001011110011011010101110101001100110011"
698 "1000001110000100100001001110000011001101010101010101010"
699 "1010100000110010100111100011110010001010001001101110011"
700 "1100110001011100011110010000101011101011110110011001000"
701 "1101110110101010101111111101110010001110011100001010110"
702 "1101110011010101010101010101010101001000101101001010101"
703 "1111111111111111111110001011001010101111111111111111111"
704 "0000000000000000001110000010010000000000000000000000001"
705 "0100100111110100001111000111010001001111011011101011001"
706 "1111100101001100001111011010110010111100110101000010001"
707 "0110101010101010101010100100001110001110000100111000101"
708 "1000110011110001101000011011111101100000001011100000001"
709 "1111001110101101101110110010100100100101000100100101001"
710 "0100110001110100001100111110110101010101010101010101001"
711 "1000101110011101001100100000000010010100010000001110101"
712 "1101100101011000001111000111010100001101111001100110001"
713 "0000001010011010001001000100101011101101010010010100100"
714 "0000000000101111001000111110000110000101010101100000000"
715 "1111111000101010101010101101100101111101000111001110101"
716 "0000001000011011001010000100010101001110001111101110101"
717 "1111101000100001101010011000110011101011101000001110101"
718 "0000101001001110001110110101000101101100010101000000101"
719 "1110101011010110001001010011011111001011110010101111101"
720 "1110101011010101001101010101010101000010110110000000001"
721 "1110101010101101001111111111111111101010010010001111111"
722 },
723 /* 9*/ { UNICODE_MODE, -1, -1, -1, -1, "汉信码标准", -1, ZINT_WARN_NONCOMPLIANT, 23, 23, "ISO 20830 Figure 4, **NOT SAME**, Zint uses mask 11 instead of 10 (note figure includes alternating filler)",
724 "11111110000101001111111"
725 "10000000001000100000001"
726 "10111110110001001111101"
727 "10100000100100000000101"
728 "10101110110011001110101"
729 "10101110111101101110101"
730 "10101110101100101110101"
731 "00000000011001100000000"
732 "00010101110110000000000"
733 "01010010101111101111001"
734 "11110010001011001101110"
735 "01010110010010010011001"
736 "11110011100000000111000"
737 "11100110010101000010101"
738 "00000000010010110101000"
739 "00000000110011000000000"
740 "11111110111011101110101"
741 "00000010101101101110101"
742 "11111010001100101110101"
743 "00001010011111100000101"
744 "11101010011010101111101"
745 "11101010111010000000001"
746 "11101010011010001111111"
747 },
748 /* 10*/ { UNICODE_MODE, -1, -1, -1, 3 << 8, "汉信码标准", -1, ZINT_WARN_NONCOMPLIANT, 23, 23, "ISO 20830 Figure 4, explicit mask 10, same except no alternating filler",
749 "11111110100001101111111"
750 "10000000101011100000001"
751 "10111110101110001111101"
752 "10100000010101100000101"
753 "10101110001111001110101"
754 "10101110000101101110101"
755 "10101110111100101110101"
756 "00000000011010100000000"
757 "00010101101110111000000"
758 "00000001111110011110111"
759 "01001100110000101110001"
760 "01101100000010101011110"
761 "11111111000111110110110"
762 "00000101011100100001001"
763 "00000011111111110101000"
764 "00000000101000000000000"
765 "11111110101101101110101"
766 "00000010111111001110101"
767 "11111010001000001110101"
768 "00001010110110000000101"
769 "11101010010111101111101"
770 "11101010101001100000001"
771 "11101010100100101111111"
772 },
773 /* 11*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, 4, -1, "汉信码标准\015\012中国物品编码中心", -1, ZINT_WARN_NONCOMPLIANT, 29, 29, "ISO 20830 Figure 5, **NOT SAME** Zint uses mask 00 instead of 10",
774 "11111110001000100011001111111"
775 "10000000101000001110100000001"
776 "10111110111111111110101111101"
777 "10100000011100001100000000101"
778 "10101110010110001010101110101"
779 "10101110001000110000001110101"
780 "10101110000000111110001110101"
781 "00000000001111101010100000000"
782 "00011000111111000111101000000"
783 "10100000000011001000010001100"
784 "11111011000000000010011011100"
785 "11100101001011111011011101000"
786 "10001010100000101000110110100"
787 "10100111111010100000111111100"
788 "11111111111111101101110001101"
789 "00000000000000101101100111000"
790 "11101101001010110011111111101"
791 "10111010110010100001000011110"
792 "01001101110110110110000000001"
793 "11111000001000101111010001111"
794 "00000010110010101101100011000"
795 "00000000100100110111000000000"
796 "11111110011000110010001110101"
797 "00000010011000100000001110101"
798 "11111010101010111111001110101"
799 "00001010000110111110000000101"
800 "11101010100000110101101111101"
801 "11101010101110110000100000001"
802 "11101010000000111111001111111"
803 },
804 /* 12*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, 4, 3 << 8, "汉信码标准\015\012中国物品编码中心", -1, ZINT_WARN_NONCOMPLIANT, 29, 29, "ISO 20830 Figure 5, explicit mask 10, same except no alternating filler",
805 "11111110100000101010001111111"
806 "10000000001100001010000000001"
807 "10111110100000000001001111101"
808 "10100000010101000101000000101"
809 "10101110110010101110101110101"
810 "10101110010111001111101110101"
811 "10101110101001110111101110101"
812 "00000000001011001110000000000"
813 "00011000100000111000011000000"
814 "11101001001010000001011000101"
815 "11011111100100100110111111000"
816 "10011010110100000100100010111"
817 "11000011101001100001111111101"
818 "10000011011110000100011011000"
819 "11111111111111110010001110001"
820 "00000000000000100100101110000"
821 "11001001101110110111011011001"
822 "01000101001100111110111100001"
823 "00000100111110111111001001000"
824 "11011100101100101011110101011"
825 "00000011001100110010100011000"
826 "00000000001100111110000000000"
827 "11111110111100110110101110101"
828 "00000010100110111111001110101"
829 "11111010100010110110101110101"
830 "00001010000010111010000000101"
831 "11101010011110101010101111101"
832 "11101010000110111001000000001"
833 "11101010000100111111101111111"
834 },
835 /* 13*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, 24, -1, "汉信码标准\015\012中国物品编码中心\015\012北京网路畅想科技发展有限公司\015\012张成海、赵楠、黄燕滨、罗秋科、王毅、张铎、王越\015\012施煜、边峥、修兴强\015\012汉信码标准\015\012中国物品编码中心\015\012北京网路畅想科技发展有限公司", -1, ZINT_WARN_NONCOMPLIANT, 69, 69, "ISO 20830 Figure 6 **NOT SAME** different encodation, Binary mode not used by figure",
836 "111111100000101101011111111111111111111001001110010100100010001111111"
837 "100000001100110100000000000000000010111100110000010001110101000000001"
838 "101111100111100011100101000110011011011110011110101101001000101111101"
839 "101000000010000111011010000110111010111100100011111100110000000000101"
840 "101011100000010010000110101000000011011100101011011111000111101110101"
841 "101011101101000100011000101010101011000000111001000110111100101110101"
842 "101011100010010010100011101010101010101010101010101010101010101110101"
843 "000000001110010000011101101011000011001011100111111010101010000000000"
844 "001011001010010010110100001010101011100110101000001010011011011000000"
845 "110101110101111001111100010010001010101010111011111111010100011010101"
846 "101101010101001001011100011011101010100011111000010100101101111011010"
847 "100101101010101100010100110001110010111010001001010101010101010101010"
848 "101010101000010100100100001011100011111110000101111011010000010011110"
849 "111110111100111000111001011101101011111001011111000111101100011101101"
850 "110010010110011111011010111110110010110010100010100110110101001010101"
851 "100111110010001001001110110110110010000011110011010011011101110001110"
852 "110000111000010110101010101010101010101010101010101011101100011110100"
853 "111111111111111111100101110001010011111111111111111111010100110100001"
854 "000000000000000001011011110011000000000000000000000110101001101000100"
855 "101010000010010001000000101101000011011110101100110111010101010110110"
856 "111000101001110101011100101110011100011100001001100101000011010110110"
857 "011001010011101101111111101011000111010001100010000111111110011110011"
858 "011010101010101001101010101010101010010011001110110101111011100000101"
859 "001111110001111101100000101001100010011110010011110110100000110010000"
860 "011000111100011101000000100010001011111101001110010111001100101001110"
861 "010011110011010101111111110000010010110000111100110111000100111001100"
862 "001010001110010101010000110111001011111001000010100110101010101010101"
863 "010101010000001101000101000000000110111100101101000100101011111000110"
864 "010100111011001001000010110111110010110101010100110100100000110011110"
865 "000110111011111001100011001111011111100010110110000101101111111010000"
866 "011010100001110001000111001000110110100111011010000101000101010010111"
867 "001111101110101101110101010101010101010101011010100101111100111001111"
868 "110001001111100101100010010001100011001111010010110110101101100011011"
869 "000000000010011001001101010111001111101010011001110111100101110111100"
870 "100010010011001001111111111111111111001000001100000111111111111111111"
871 "001000110111000000000000000000000011011111000001010000000000000000001"
872 "110110010101010011111001111011110011101011000100100110001101110000101"
873 "110101010101010101010101100011111011001011101100111000100010110010001"
874 "101111101000111110110100000000110011010100001101101010000000100100101"
875 "110010101010100000110111010011100010000001100010101010101001001100101"
876 "110100011010011000111011011010001010000001101001110000110001100001001"
877 "110001011100001010100111101010100011101001010101010101010101010100101"
878 "110101011110111110001010111011000011010101100010001111110111101001101"
879 "101000001011000111011000011101101010101011110100100110110000001011101"
880 "100000010000100111110110101100010011001010101100001111011010010000001"
881 "111011110101110011110111111110111010101001110101101001100000001100101"
882 "100111001001110010101010101010101010101011010011110101001001000011101"
883 "101010001010111111100110000011010010011110101111001010010110110110101"
884 "100101110111011101100110100001011011110010110001001101000111100001101"
885 "100100101100100101111001011110101011010110010010101000001010110011101"
886 "110010011100000000100100000110100010001010101011010100110010101010100"
887 "111111111111111111010101010101011011111111111111111110100101000000001"
888 "000000000000000001010000101001010000000000000000000101001000011110100"
889 "100000111111111001111001000110000111111100101111010101111001000000010"
890 "111000010111010101100110111110100001011110111111110101101011111010011"
891 "101100001011101001000000110010011011101100010010000111000101011011010"
892 "000100001101010001011010011111111010101010101010100110101011000011111"
893 "001001100001111001101010110100010111101000100001000100100100000000111"
894 "010100001000010101100010001011111010100100100111010111110110001101101"
895 "100000111101011001000100010101101000111111000001010111101110100001001"
896 "000000110100111101010001011011001110111111010011000110000101100110100"
897 "000000000010111101100011010101010101010101010101010101010000100000000"
898 "111111101101011001111010100000101000010101101111010100100100001110101"
899 "000000101101001001101001011100101111001111000000110101010100101110101"
900 "111110101101011001010101110100100010110111111100110111110101001110101"
901 "000010100111111001000111110110011100010110001010110110001110000000101"
902 "111010101001001001100110011111011101010101011011100101100011001111101"
903 "111010100100111101001001010101011000001101010101010101010101100000001"
904 "111010100010101001111111111111111010101010101010100111111111001111111"
905 },
906 /* 14*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, 40, -1, "本标准规定了一种矩阵式二维条码——汉信码的码制以及编译码方法。本标准中对汉信码的码图方案、信息编码方法、纠错编译码算法、信息排布方法、参考译码算法等内容进行了详细的描述,汉信码可高效表示《GB 18030—2000 信息技术 信息交换用汉字编码字符集基本集的扩充》中的汉字信息,并具有数据容量大、抗畸变和抗污损能力强、外观美观等特点,适合于在我国各行业的广泛应用。 测试文本,测试人:施煜,边峥,修兴强,袁娲,测试目的:汉字表示,测试版本:40\015\012", -1, ZINT_WARN_NONCOMPLIANT, 101, 101, "ISO 20830 Figure 7 **NOT SAME** different encodation, Binary mode not used by figure",
907 "11111110111111111111100010101000011101101011111111111111111110101100101110110110101100011000101111111"
908 "10000000100000000000100101011001001001000000000000000000000011000001111101100010001100010100100000001"
909 "10111110110100010100111000101101010111011101101110011000011010100101110001010110001001010010101111101"
910 "10100000001101100000101100010000001100000111000000110110000010101010000000010011001110101110000000101"
911 "10101110000010000100110111111001010010101001000110010010000011110001011010010101110001001010001110101"
912 "10101110110111101000100011100000001010010101101010001101001010001111001000100001101111110110001110101"
913 "10101110000101010100110000111111110101101010110101000111100010110010010001000101111001110011101110101"
914 "00000000111000000000110111110101101001111101010101101011010011000100101100101111000110010101100000000"
915 "00111100101010101010101010101010101010101010101010101010101010101010101010101010101010101010101000000"
916 "01010101010101010100110101010101010101101000101110100000110011000101101010000010101111010100000100001"
917 "10001101000100110010100010000000110000011011010011011001011011000011100100000110110001111011001100000"
918 "00111110111011110000101011100010001000000000110110111110110010101010110110011011010111100010111110100"
919 "10110100100100001000101010100010011011001001110000100101100010010010111001100000000101111110001101010"
920 "00101001001110010010111000011010010010000111100111111010101010100110010011000000000010111010100101010"
921 "01000001111100001100110101000100110000011010001111010010000011001110001111100101001010101000111101010"
922 "10001100100111010100110101010101010101010101010101010101010011010101010101010101010101010101010101010"
923 "10101010101010101010101010101010101010101000000010001100100011001101000100110100110111010100110110000"
924 "11000011000101101010110101100010101110001010010000010001010010000110001101100010010011000000011100010"
925 "10001110110000110000110011011101001110011000000100100011111011100110101011001001011010011010001111010"
926 "00010000101111000010100111011000110001001101101101001011000010011110100111010010011010000011101111100"
927 "10101110000101100110111111111111111111111101001101100111110011111111111111111111100111100011010100101"
928 "00101010011010110110000000000000000000001010111110101100100000000000000000000000101000110011111110100"
929 "10101110110111011101011010011110011001101001011101000111010000010010000000101010101010110011100011001"
930 "11000010111101010101010101010101010101001101010101010101010101010101010101010100110101010101010101010"
931 "10101010101010101010101010101010101001001101111111101110011000011100011101100010101110000001011110011"
932 "10110101101101100001000101101010000111001000111110001001111011011011001001110110110111011110110000110"
933 "10011000101110001110101100001001010101101111011011001001101110101100101001101100111010001101111001100"
934 "11111101001010110010101100010011011100101011110000000100011110000000110100011110101101001110100011000"
935 "11000101101000000100001011011011100010101001001110111000111011011001010110111100110111010110100011011"
936 "10001000111011101111000011010111000100101110010011111101001000011111101010000010110010010101010001000"
937 "10101011000010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
938 "11010101010101010101010101010101010101001101011000111100000110000000001111101100101011001110110010100"
939 "10101011101111001011011110101101110111001101100110110100001111101110101101111110110001110111100110100"
940 "11010100100011011110011110001001110001101110101101100101011101001100010001001100111001010000001100000"
941 "10000101111110100100111001000011001010101011011110100011110101111001001000011100110000101111100000000"
942 "10101100011100000011110110100100110010001000110111001111001101010010101000010000101010011000001010100"
943 "11000010110000110100101001000111101100001110000101011011101100100000010111100000111000110001000010101"
944 "11001010101000001011010101010101010101001101010101010101010101010101010101010100110101010101010101010"
945 "10101010101010101010101010101010101010101010101010101011011000100111010010001000111010000001110110111"
946 "11101000101111001100000110110001111101001111000100010101000110111110011110100100111011010011101111010"
947 "11111111111111111111111011001111100000001111111111111111111110100100001011010010111111111111111111111"
948 "00000000000000000000100011011101011101000000000000000000000010000001111111100010000000000000000000001"
949 "10000010111011101010101101110110011000111010110000111111110010000111100111000010110001111100001001101"
950 "01100101110100000100111010010111100100001100010000000110111011000110110001001111001111010110011011001"
951 "00111011010111010010111011010010011101101001100101010111110010110100111011010101011111101100110011101"
952 "11001100100111001000100110101011010101011111011001101111010011010101010101010101010101010101010101001"
953 "10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010011000101"
954 "01001011101100110110100100100111010011110001010000101110001010011001110011010010111000111000111110001"
955 "10101110100110001110101010011100000000001101101100001101110010010100110010110001010100110100000000101"
956 "11011111111111010100111101011101001000101011010000110001111010000110011011010010001011001000111001101"
957 "11110000100101011000111001010111111101010000000001101011011010000011010101100111101010001100001011101"
958 "00100000000011000100100011001100100000110011001011011010011011101111001111011001100110001000110000001"
959 "01110111000011111000111101001000000111101000011010101011101011111111010110101010101010101010101010101"
960 "01010101010101010100110101010101010101010101010101010101010011010101010101010101010101010101010101001"
961 "10101010010001010100100111010110010010011100010010001010001010101110100011011101001011001110011110001"
962 "01111000100110000100111111111110000110111101001110011100111010110110110011001011100101101010101010001"
963 "10110101000000110000100111000010111011001010100110111101010011001100010110001011011000000100000101001"
964 "11010010110011010000110011100110100111010001010111000001100010111100011100010100101111100111001010101"
965 "00001101111011101010101011011011111110110010100110000001110011010111111110110100110001011101110011001"
966 "00111101010000110000110010100010100010011001001001101100101010101101010100100101010000011101010101000"
967 "10101010101010101010111111111111111111111010101010101010101011111111111111111111101010101010101010101"
968 "00010101010101010100000000000000000000001101010101010101010000000000000000000000110101010101010101000"
969 "10101010101010011001101111100110100010001110110001101001011001110010101001111010101110110101110001010"
970 "10101010011001000000011000110011000100101100110110110000010000001110000110011000111000010110100110000"
971 "10000001000100111010001011110110101001101001001010010110010011101100101000011100110001001110000111101"
972 "11110011000000111100111010101100001010001011010001011011011000010011000110111110110101011010101100111"
973 "10110011011001100100111000100000010111101010000111101110001010110100101101000000111011001010110111010"
974 "11010010001011100100110011101010010110001111101000110100100111010101010011001010101010011101010101010"
975 "10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
976 "11010101010101010101000100110001011010101101111100001010101001100011100011100110101101100100011001111"
977 "11100010010111111100110110111100101111101100001001100111111101110100000001111110110110011111011111100"
978 "11111101011011001011001100011111110101001010110101100100000000110110010000111100110110000100001101101"
979 "10111101111101010000110000000011101010001010110000111010010001110101101010100000111011000110000001010"
980 "10010010100110000101100001100110001101101000101101001010111000001001110000110010110100000011010100100"
981 "11101011110011011110010100011101110111001101110010001100101000101110101010101010101000101100000110101"
982 "11010101010101010101010101010101010101001101010101010101010101010101010101010100110101010101010101010"
983 "10101010101010101010101010101110000111101011001101000011001110000111011011100110110010101001110110010"
984 "11001110100110110000010111000001100110001111110001100010100110010000011001110100110011010000010001000"
985 "11111000010110000000100001110011110101001000011111000100100110011101111011000000100111101001001010111"
986 "11010001101111101100110100000101110101101010110011101011100100100001111010000010110100011110110010001"
987 "11111111111111111111100111100010101011001111111111111111111110111011101101001010111111111111111111111"
988 "00000000000000000000101011111010011010100000000000000000000011000100111100000110000000000000000000001"
989 "01011000001111110000100000011001011101000111001010001010010010110100011010011101111110010100100110101"
990 "10101101010101010010111101011001010101010101010101010101010011010101010101010101010101010101010101001"
991 "10101010101010101010101010101010101010101010101010101010101010101001001000001110111010111100000011101"
992 "10001001000111000110101101100100001101111110100001000110100010001000100000110011100100000110000100001"
993 "00110100100101011010101011011010001111001011011100011011000011001110101100010010111100110010001100101"
994 "00111110011110110110100100010001011100001001010001111011110010100010111010000011011101000111110000101"
995 "00101110111011010100110001101011010011001010010100011101000011001000100011010110000111010011010011101"
996 "00000011000110101010101010101011000000100100001101100001101010111110001111010001001010101001010101101"
997 "00111001011010110000101010101010101010100011101010101010101010101010101010101010101010101010101010101"
998 "01010101010101010100110101010101010101010101010101010101010011010101010101010101000111111011110011001"
999 "00000010100000010010100110100110011011111010001111111101111011010111011111110100111010101000100111100"
1000 "00000000110000000000110101001111001001011111000010100110001010111011110011000101000111001110100000000"
1001 "11111110110001100000111101111110000101000111011100100000101010000000101111110101100100111001001110101"
1002 "00000010010110100000100110100110110000110110001111010110010011111001000101101100000100010110101110101"
1003 "11111010011011110010111110110000100000100011011101001001010011101011101010010010000110011011001110101"
1004 "00001010010011110110100011000110111000001010001000101000111011001010101011001010011100100110000000101"
1005 "11101010110101101110111110000011000100000000010101111110111010011111011110101010101010101010101111101"
1006 "11101010110101010100110101010101010101000001010101010101010011010101010101010100000101010101100000001"
1007 "11101010101010101010111111111111111111101010101010101010101011111111111111111110101010101010101111111"
1008 },
1009 /* 15*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, 62, -1, "本标准规定了一种矩阵式二维条码——汉信码的码制以及编译码方法。本标准中对汉信码的码图方案、信息编码方法、纠错编译码算法、信息排布方法、参考译码算法等内容进行了详细的描述,汉信码可高效表示《GB 18030—2000 信息技术 信息交换用汉字编码字符集基本集的扩充》中的汉字信息,并具有数据容量大、抗畸变和抗污损能力强、外观美观等特点,适合于在我国各行业的广泛应用。 测试文本,测试人:施煜,边峥,修兴强,袁娲,测试目的:汉字表示,测试版本:40\015\012本标准规定了一种矩阵式二维条码——汉信码的码制以及编译码方法。本标准中对汉信码的码图方案、信息编码方法、纠错编译码算法、信息排布方法、参考译码算法等内容进行了详细的描述,汉信码可高效表示《GB 18030—2000 信息技术 信息交换用汉字编码字符集基本集的扩充》中的汉字信息,并具有数据容量大、抗畸变和抗污损能力强、外观美观等特点,适合于在我国各行业的广泛应用。 测试文本,测试人:施煜,边峥,修兴强,袁娲,测试目的:汉字表示,测试版本:40\015\012本标准规定了一种矩阵式二维条码——汉信码的码制以及编译码方法。本标准中对汉信码的码图方案、信息编码方法、纠错编译码算法RS、信息排布方法、参考译码算法等内容进行了详细的描述,汉信码可高效表示《GB 18030—2000 信息技术 122", -1, ZINT_WARN_NONCOMPLIANT, 145, 145, "ISO 20830 Figure 8 **NOT SAME** different encodation, Binary mode not used by figure",
1010 "1111111000001010101011111111111111111000011101101011001011111111111111111010111011011001101011111111111111111100111110101001101010010010101111111"
1011 "1000000001000001100000000000000000001111011000100111000000000000000000001101101011101010000000000000000000001111010010101000100011101101000000001"
1012 "1011111001100110000110100101110001001101100010010100100110110000011000101000000110000011100000011011000001001101000000001001100111010111101111101"
1013 "1010000000000100001010111111001010001101010010001100100100001110001011001100101011100010010101011110100000101110000000101001010110101000000000101"
1014 "1010111001101001000111100100010000101101111110110001010101010000111111101101011010101101010001111000110010001100010001011110011100111100101110101"
1015 "1010111010000001011111010110100111101101010101101011110110101000101001101110001000100010010111010101011001101100001110010000001010000011001110101"
1016 "1010111000011001100010111101000001101010011111100001001000001101111111101100101000000000001110110111100100001011111010000101101111100110101110101"
1017 "0000000010111000010011011110110111101000000101111010001010111101010001101110111100110110011110111110011101101001110000101101101010110001100000000"
1018 "0101001011111011001010111001100111101011011111100001011100100110011100101111110010100000110000111100101111101011111100000110010010100010100000000"
1019 "1101101100001100000110111000011010101101111101010000101101000000111100001110110110101010101000111010001010101010110011110100111010101101010010001"
1020 "1010110100111000011010100110000000101001101001100000101010000110000000001001111001010001010010011011111000001101010000111110011011101010100110011"
1021 "1100001100110110101100111010011000101000011001101000011100011010011001101100010000010101000000001000011110001101010101010101010101010101010101010"
1022 "1010101010101010101011010001011101001000011010001011010100000101011110101010000010000110001101000100110010001010000000110000011011010011011001011"
1023 "1011110001101111100100111000010011001011111110000010001000011110100011101011101111111110010010000010011010101010010011001001010000111010000010110"
1024 "1011010010010000100010101000100110101100100111000010010110000100101110001110000000010111111000110101000101001010011100100111000011010010010000111"
1025 "1011000000101010101100110110011111101111101000101011010101101111100000101111001010101110110011111001011100001010110111101100011100000110101101011"
1026 "1101001111110111001101000011011101101110110101011101101000011110011001001101011010111110011001000111110000001100000001110111111001100101111101111"
1027 "1100110010100100001010111100111110001010000100000010111001111100000011101101101010101000000111000101011100101010011111101111011011010011000110100"
1028 "1111111111111111111001101110111101101111111111111111111100111001001010101111111111111111111111011101000011001111111111111111111101011000101001101"
1029 "0000000000000000001111100110000010100000000000000000001110111011111110100000000000000000001101010101101100000000000000000000001000110010001111100"
1030 "0100110001110100001101110110100101100000011011011010001110000111001100011100100011010110001001100011010010100001111100000110001110101010010011001"
1031 "1011001001100111101100111010110110011101001011000000001010010111110101110111110011000000001101010101000100101111011111000110101111010000110011100"
1032 "0110110101100100001000011101111000000010011000001000001011100100001001101010110111110111001010110111101110001111011101111000101010101001101111101"
1033 "0010000101010101001101010101010101010101010101010101001101010101010101111111011100110110101100101110110010110010001010110010001111100111100111010"
1034 "0101001010011101001100011101011011111011101011111001101100100111011011001111111000111010101110001001111001110110010001011000101100111111011011100"
1035 "0000011001010100101101101001011001011100001011011110101000011110110001001110011101100100101001011010011111000010110001011011001010111110001000000"
1036 "1000111101001100001101100100110000011100001110010101101001010110010100100101000001010011001111011100110000000100101110110111001111010110100111100"
1037 "1100110010111010001011101000001001000000010100110100001110111010100011111100100010011001001110100010001010011000100000111001101110111010100010110"
1038 "1011000101011101001101001000110100000110110011110101001111101011001100100010111011011011101101100111010101000011001111110110101101011001101100001"
1039 "1010011001100110101001111001101010010111100101000100101000110100101101000000000010000101101110110011111011101000110000101111101110010101010011100"
1040 "0100110111001100101010110101001101011101000101110100101111001001000101010001110101011101001110110101010100010111110111010011101100001100100001001"
1041 "1000100000100110101010011011100101001101110101110000101110010011001001010001101000111011001011100000100001110101000110011010101110011101101111000"
1042 "1111100110010001101100101011111110011110010100001010001010001101100001100100011101100100001011110010100110011111111001011010101010111010001001000"
1043 "0001001111001101001100010101011010011011100000010101001101010101010101010101010101010101001101010101010101001010111111110111001011000011100011101"
1044 "1000101110000001001111100111001010010010011110111010001101011110001111000001110110000100101001001101100010001000100001001111001010011000101110001"
1045 "0011010110000100101010101111101101100100110111010110001101001101101101000110111100110000001001011010100110101001110110010001101010000111111101110"
1046 "1000011111110010101111111111111111111110000100101100001111111111111111111101110011110001001111111111111111111110100000010000101111111111111111111"
1047 "0001101101110001000000000000000000001100100111011100000000000000000000001111011011001010100000000000000000001101111010111010100000000000000000001"
1048 "1010111001000001000111011101111000001110101110001001110010011111101001001000111111010100000110010011100101001000111000010101111110000111110111101"
1049 "1111011100100010010110000101010110101000111100111110001010011100101000101000011010001101110010100111001001001101111110000011001111101101001010101"
1050 "1100101000100101100011101010101001101101101010111111100100110111101000001001100110000101101110110010001110101110110000001100101010000100011001101"
1051 "1000001110010100010101100101001001001111100000110000001111011101111001101001011100011000001001110001101011101101011110111110100010010011001101101"
1052 "1011000101011111001111111010010010001100010101010000101101000101001111101010111011100000111111000001100011001010000010010000111101000101010000001"
1053 "1011011001100111101110101110100100001011011110010110110011101101111110001111001100001101001101111011110101001101010010011000100010011011101011101"
1054 "1001010111001001001011010101001001101011011001101010101101100101001011101100101011001001010110100101011010101010101010101010101010101010101010101"
1055 "1101010101010101010101001110000111101100111111111000001001101001100010001110101101010111011110010110111101001110111011101011001101101000011111001"
1056 "1000101001000000011100010000110010101110101001000110111100111100010011101000111101011011001010111010011000101000100110110010100000011000001111001"
1057 "1011111101001001110010000110010101001110111101000111101011110010010000101110100001011111000000001010011100001111111000010010110110011011111001001"
1058 "1110011110011010100101010000100001001100110000010101000111101001111001001110101101110000100111001111010100101000100110111111010000111100111001101"
1059 "1010001001100011111100111100111111101110011100100010111001000000011011001010100011000100111100000110011101001011100100110011010010101111110100001"
1060 "1111110101111110110101100010110111001101011110110011011001011000010101001010001001011001100010111010101110001011011010110000000001011111101011101"
1061 "1100101001101001110101110000001110101001001110110011011100000000111111001110011111110001110000000101110000001010010001001010111001100110111101001"
1062 "1010111100011101010100100001011001001101011111010011010000001101001001101111011101101011010101011101101000001001110011011010111010111010101111101"
1063 "1111110110001100000000110001011111101110101010100011001000010001110011001111101101101011000111100110001100001101000000000000110110011100101101000"
1064 "1111111111111111111000000111110101001111111111111111111000100001000101101111111111111111111011001100110000001111111111111111111100011111110001001"
1065 "0000000000000000001000101101000111000000000000000000001010010111001111000000000000000000001111001011111101000000000000000000001001000101001100000"
1066 "0101001101110011001011101010101010101010101010101010101010101010101010101010101010110110001010011101001000100110100000011101101011100101110100001"
1067 "1001111100100111001000010100011101110101011100100000101100001011010010010110001000010111001110011111000000010010000101101001101110010001010001011"
1068 "1111100000000111001011111010001000101010010001001100101110001010011110000000011111000011001001111010011100000111101100100110101000101111101001011"
1069 "0100001101111001101101111111001000011100100111011000001110000101001100100111000100101000101011000100101101100010010110011010101010000011001011000"
1070 "1001010101000000101001100110000011001101100011011110001101010111100101101010001101110001001111011011110100010011011011100001001110100000111001010"
1071 "0001001110001001001011010000101101100011010011011000001010111000010110110111100001111011101011111011111010110110111101001101101111111000111000000"
1072 "0100001000111110101000011111101100000011110110001110101010010010110001011101000101001101001000111011011000000111100111100101101101111100111110101"
1073 "0001110100011111001001100011010111010100000001101010101100010111000110000010101010001100101111111110010100011010100101001001101101011000000001011"
1074 "0100011111111100101110111010101101110100100011100110101110100110100111010101101111011111101101101110111111010011100111010111101110011010011101010"
1075 "1111010010111010101111010110011000010001101111001100101001111111111010111110100100111011001011010001110101100000100010011000101001000001101111100"
1076 "0011001010001000101000110000111010011101011011010001101010010110101010101010101010101010101010101010101010101010101010101011001011101011010001001"
1077 "1001001101101100001101100001110101111010001110110011001001100101101000111000111000001101001100010110011100010101100011111111101100100100111100100"
1078 "0111010110011010001111010101100101111111100010000000001000101010001010001011011101010010101111001110000111100110010010110111001100110111000110000"
1079 "0011110110101001101001101010000000101011111111100101001010011111001010100110000101011100101111010001101111111110011101111001101001101111100110011"
1080 "0100100101100001001000110000100110011001110111001111101100010001111000001100010110111111001000101111001110011010001110010010001100001000010100101"
1081 "0011100111010100101101101110101001101010000111101010001101101101010110101010111010011101101101101110000110100101111100111001101011100000111000011"
1082 "1001001110110011001111111111111111111011111111001011101111111111111111111000100110111011101111111111111111111111011010100010101111111111111111111"
1083 "0001110110010100000000000000000000001100111011110000000000000000000000001010010000000100100000000000000000001001001001011110100000000000000000001"
1084 "1010110101110010111001101011001100101011111100000111001101111101000000101000100011010110001001011100001001001011001011000010111110000101010101001"
1085 "1110011010111000000100110011011001101001001011100110100010011011000001101110100110001110110100110001111000101100001100000010111100000001100111101"
1086 "1100000100011110111100111101100100101101000000110010101001101110001101101011001101101100000110111001000101001101010010001111111100110111110000001"
1087 "1101011100000110011101101010010000001101111110010111001110011101010011101101010110001001111011010101011011001001011011110101010101010101010101001"
1088 "1010101010101010101010101010101010101001000101010001110101100100100111001001001000101000101011101000110111001100101100111001111000111100010011001"
1089 "1111010000000000111100100001011000101100011000100100100110011010001101001010101010101101001010111111001111101000111101000100110101011001000010101"
1090 "1101001100010110001011011000000100001001010110100101100110100010011100101101001110100010101110000011000111101000111000101001011111001110010101001"
1091 "1111001000010001010101001001000000001100110101100111111000101010000000001100101100111010001000110010000101001111100111011010111010111011001101101"
1092 "1100110110010101011110110101011100101111101010011111001001110000100011101100100100101101110001111101110110101011010110000111001110110000101000001"
1093 "1101000110111010110010001100000000101110110010011001100100100110011110001101101011011111010101000010000101001110000111010100100101010110111010101"
1094 "1001000110000110010100001001000101101000101000011000001110011111011011001101011111101100110000111101001000001100100100111011010111111010010000101"
1095 "1010000100010101110011011111010001101100100101101011101010111101000011101100101000011010100100000110110110101010001100110101001110000100001010101"
1096 "1110010111110111110010111010001100101101100000100010110100000111011010001111110000000101100010110101001010101110110001110101001110101000110000001"
1097 "1110010111100111000011011111101000001110010101111001000111110010011010001101011110101100100110110001111100101111110011000110000010111100001010001"
1098 "1110101010000111010001001110101010101010101010101010101010101010101010101010101010101011001100100000110010101110110010011100101101001100011010101"
1099 "1100111101011101101011100010101010101011001101111111001110011001110110001110010010011111011111100011110011001011001111010010110011110000001000100"
1100 "1111111111111111111110001011101000001111111111111111111100101011001101101111111111111111111010110100110110001111111111111111111010011010111100001"
1101 "0000000000000000001010001001110000100000000000000000001111010001100111100000000000000000001110000110001010100000000000000000001001111010111001000"
1102 "1110100100100111101011001110010000001010100101010011001000110011011001100100111000100000001101111010000111101110001010110100101011010000011011001"
1103 "0101101110100101101011101000110110011000101011010011001000101110010110110001001110010011101100001110100101000010011001001011101101010001011011101"
1104 "1001000111100100101100110100010011001110001101010010001110111101100001010010111100111000001111101100110000111000001000100110101101110111101101001"
1105 "0100000010110101001001100101100111110111010101100001101110100111001010001100100101111101001100110001000010011001000000101111001000010101011010000"
1106 "1001110100101101001000100101100100011111100101100000101000110100011111110011010011001100101101010001110101110100000110001000001011101100011110111"
1107 "1110100101110011001011110011010101001001000011101010001111110001011001011010110011110101001001111100111010101100010111001011101010111011101101001"
1108 "0110000111000110001110010111001111000001000101010101101000011001110001001011000001111101001000001011111000111001000100110111001001000010011100010"
1109 "1101001101110010101111010000000010100010111001000000101111010011100111111100010101010101001101010101010101010101010101010101001101010101011101100"
1110 "1110100101001000001011110101010110011100011100011001001010011011100110000110001001011111101100110110111100101111110000100110001111111101110100000"
1111 "0011111110110011101110111111000000010100100110100110001111000000010101101001010011011111101110010011011110000101001111011110001100100111101111101"
1112 "0100001100000000101110101000101100001110100100011101001110101010000110110001100000010101101011010110011110100111100110011100101001110100101101010"
1113 "0011111011000111101001100101111110010101101111010111101001101111001010001110111011101011101001000110010100010111010110000100101010101100100011011"
1114 "1011001101010111001101111100110110011010011101011000101000011110010000000110101101001101001100000001101100110011111001000111001010011100010011100"
1115 "1010011100001111001110101100100111001110110101100101001011010110110101100011011001010111001011001101111110011001101100100000001110100110101010101"
1116 "1011011110101011001010000000110000101000101011000011101001000100110001100101010001010001101111010001001001001100000001101110101011001010110010000"
1117 "0011010000011011001100001010000010010011110000101111101110101000101010100001001010011111101101000111101000101000111110000111101100010010110011101"
1118 "1010110100100001001111111111111111111011000000100101101111111111111111111010010010111110001111111111111111111111110011110100101111111111111111111"
1119 "0000001101100100100000000000000000001101001110010110100000000000000000001101110110101011100000000000000000001011011010010110000000000000000000001"
1120 "1101110011101110011010111000100010001001010011000111011001100010011011101110100111110100011011110101001111101010100110100101101110101010101010101"
1121 "1101010101010101010101010101010101001101010101011100001111011001101000001110011100001110110111001110010101001011101100100110001011001001111101001"
1122 "1110000011001100111110001100010100101100100000110011101010011010000010001010000000111101001111111011110001101000010101111100000111011011001100001"
1123 "1011110110000000111101001001010111001101110010000010011001011111010001001100101001100010100011011011110000101011111001011100001001101110001111001"
1124 "1110101010011000100010010110100101101111010011010110001001111000001101001110000011111100000000011001011101001001110010100010100100110100011010001"
1125 "1000100000011010110110010010101100001111111000011100000000110100110001101000001100110000101001100001001111101010011110101100110101110111010111101"
1126 "1011001001000001110110110010000101001011010100010111111010100110011011101100011101001000011111001000011100101111111110101001110110011001011010101"
1127 "1110000000010011000100001111100011101011001100010010101001111000001011101001011100110011001100110011110100101001111111100010000101100111010000101"
1128 "1011101011001100011001010101101000101000100100110101110010111110000110001011001011101101000010010111010100001011111101110111111111011001010011001"
1129 "1111110101011010000000001001011011001001001110010100110100001101001110101001001100111101100010100111001010101110010111010111010001010111001010101"
1130 "1110001010111011100101111001000000101101100010000111010001010111001001001110110001000000011111000001110010001110101001010101111110110101101101001"
1131 "1010101011001101010000000011100101001101010101010101010101010101010101001101010101010101010101010110110111101100010001010000111111000011101101101"
1132 "1011100011011011001000011011111101001000100011010000010001000001100111001010000011000010000011010010010101101010101101101000111100101101110001101"
1133 "1100111011000101001110110100001100101101110011011000001100001001001101101101110100011110110101110000100001101011101000101111100100010111000001101"
1134 "1001001011101110110101010001101011001100110010100101000111010001001000101000110101100001110100110100111000001001100011010101010101010110000001001"
1135 "1101111001001111001010000011100001001111011010101011010101001100011010001101001111100010010110111001101111101010000010101001011000000101111110000"
1136 "1111111111111111111001101100110010001111111111111111111010100101101011101111111111111111111111111111111101001111111111111111111100110111011001101"
1137 "0000000000000000001000011110001001000000000000000000001011100001010000000000000000000000001011010111000011000000000000000000001010001000101100100"
1138 "0100110100100001101000001100000000101001010010101011101010101100111110110010111101110110001001110111000010110001110001101001001110001100111001110"
1139 "1001101111010110101000001110001111110011011100110110101001101111000000100000011010101001101101110100110100001110101001101110101011110100010010101"
1140 "1010000101000110101100001010011010010011010000011010101001010001011011011101110010101011001011101011010110111110100110110110001010011101100011000"
1141 "1110001110110011101000001010111101011010110000001110001001011110001111011010011110010011001110100100101011001100001011000111001111110101011110001"
1142 "0111101101100111101110001001010011011000100010101010101010010000000101101000010011110010101010101010101010101010101010101010101010101010101010101"
1143 "1100000010000110001100000010010011010011001101111101001001111111101111101011101111111010001111010101000100000000010101001111001010010111110000101"
1144 "0011000101110111101001100010100011100111010001100001101101111110000101000111011100100000101010000000101111110101100100111001101011010000001101001"
1145 "1011000011011000101111010110010111100100010110110000001100010110110111100111110110000100001001000110111010010010101101011101001100100100001100110"
1146 "0000000010001100001010011100111001000111110101110111001101110000110101010100110101100011001110010101001000000011111001110111101111110110101001010"
1147 "0000000011101001001011000110010011001001010010001111001111011010010111111111101000010110101100110111001101010010110110100010101011011111100000000"
1148 "1111111011110010001010101011010010000001001111100100001101001110111001100111001001110011101100110011111001011101100010001110101111101101001110101"
1149 "0000001001111011001110111010001101101101000001011010101111100100100110101001100011100100001110010110100111111000010111111011101000110000101110101"
1150 "1111101011101001001011011101011100010001101000001101101111010010100000010001100100011010101111110011100001001100011001111100001010010110001110101"
1151 "0000101001100010101000100110111000101101000100111011001111000000001100010111101010001110001001101000011111011101100010011001001000010110000000101"
1152 "1110101010101100001101110100101101001110000011011111001100110010111110010110000100111001001001010000010110110011110100000110101100111011001111101"
1153 "1110101000010110101111100111011100000010111011110111001101000101010111000001011011001010101011010000000110000011001001000011001101010101000000001"
1154 "1110101010101010101111111111111111101010101010101010101111111111111111101010101010101010101111111111111111101010101010101010101111111111001111111"
1155 },
1156 /* 16*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, 84, -1, "本标准规定了一种矩阵式二维条码——汉信码的码制以及编译码方法。本标准中对汉信码的码图方案、信息编码方法、纠错编译码算法、信息排布方法、参考译码算法等内容进行了详细的描述,汉信码可高效表示《GB 18030—2000 信息技术 信息交换用汉字编码字符集基本集的扩充》中的汉字信息,并具有数据容量大、抗畸变和抗污损能力强、外观美观等特点,适合于在我国各行业的广泛应用。 测试文本,测试人:施煜,边峥,修兴强,袁娲,测试目的:汉字表示,测试版本:84\015\012本标准规定了一种矩阵式二维条码——汉信码的码制以及编译码方法。本标准中对汉信码的码图方案、信息编码方法、纠错编译码算法、信息排布方法、参考译码算法等内容进行了详细的描述,汉信码可高效表示《GB 18030—2000 信息技术 信息交换用汉字编码字符集基本集的扩充》中的汉字信息,并具有数据容量大、抗畸变和抗污损能力强、外观美观等特点,适合于在我国各行业的广泛应用。 测试文本,测试人:施煜,边峥,修兴强,袁娲,测试目的:汉字表示,测试版本:84\015\012本标准规定了一种矩阵式二维条码——汉信码的码制以及编译码方法。本标准中对汉信码的码图方案、信息编码方法、纠错编译码算法、信息排布方法、参考译码算法等内容进行了详细的描述,汉信码可高效表示《GB 18030—2000 信息技术 信息交换用汉字编码字符集基本集的扩充》中的汉字信息,并具有数据容量大、抗畸变和抗污损能力强、外观美观等特点,适合于在我国各行业的广泛应用。 测试文本,测试人:施煜,边峥,修兴强,袁娲,测试目的:汉字表示,测试版本:40本标准规定了一种矩阵式二维条码——汉信码的码制以及编译码方法。本标准中对汉信码的码图方" "案、信息编码方法、纠错编译码算法、信息排布方法、参考译码算法等内容进行了详细的描述,汉信码可高效表示《GB 18030—2000 信息技术 信息交换用汉字编码字符集基本集的扩充》中的汉字信息,并具有数据容量大、抗畸变和抗污损能力强、外观美观等特点,适合于在我国各行业的广泛应用。 测试文本,测试人:施煜,边峥,修兴强,袁娲,测试目的:汉字表示,测试版本:84\015\012", -1, ZINT_WARN_NONCOMPLIANT, 189, 189, "ISO 20830 Figure 9 **NOT SAME** different encodation, Binary mode not used by figure",
1157 "111111100111111111100010101000011101011111111111111111000111101110100101111111111111111111100101100001010111111111111111101100011011101001011111111111111110100111001010010101111010101111111"
1158 "100000001000000000111000010110101000000000000000000011110111100101100000000000000000001000111110110011000000000000000000110001110111000100000000000000000010001110000000010001110110100000001"
1159 "101111100010010100101110011110110011111011110000000011110101010100001011100010110000001010100001111001101000000101101000110110001100001101001011001001110011110001101000100110111010001111101"
1160 "101000000001110000100110001000100001111011010110111010101110011110101100001111011010101110110010001001111100001111000010111110110101010110101110110110101010101100011110000111110011100000101"
1161 "101011100111011110100011110111000100111101000010111011011100111101000011001100001101001111100111110000100001010011010010111100000000110111001111001100111010110101001110101111110001001110101"
1162 "101011101001111100111001000001111101110001001000100011100100001111101010001010000001101010010011111010010000001011100000100100000000001111010101000101110010111010001100011100000111101110101"
1163 "101011100001011000111100011101111011110101110110000010111000010111101010000000010011101101111010110100001101111000100000111100100110010001010111011011010011011101010100100100011110101110101"
1164 "000000001111101000111111110010010110101000010011001011001110111111111101100000101011001101101110001001001111111110001110110000101010100110111100001001001010110001001110010100100000100000000"
1165 "011010001111110110110110001010011000001010100000111010011000101111000000101111011010001111000111010011110010100110010000100111110001010001011110001001111010100001110010000001000011001000000"
1166 "001111101110101100100011110101010111001111110101100011010010001011001011000111101011001011100101001111011001000000111010110000100011111010110001001101001010110001101100001100110100011011011"
1167 "000110010011010000110100001010001101100010101010110010011011010111101001110101110100001000000110010000110101000001010100101101000000010001110100000111110011000100010010101011000011100111000"
1168 "110111100011011000101100101100111001111111000101101011111011100111010011000001100010001100111011011001000100001101000000110101100011011101100101100011001011001110101010110100000110101110001"
1169 "001111100101010000110001110010111010010010001110011010011111101001000101101000101110001110100010000011111111101101000010101010101010011101111111110001101011001101101000011011110011100001011"
1170 "001100111010101110110100100000111011011000101110101010111000001010101010101001110110001110000011100110000010001110010010111100101100101010110011111011110011011111010110100010111011000111110"
1171 "101010111111011110111001101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
1172 "010101010101010100110101010101101000101110100011010011100100101000100111110101111011001000101111000001101011010010011100100001111001011001001011110101001011111001100010101111011100110100111"
1173 "001001011001100010110000001000010000111010101101001011010011101001101010111001011100001001111111101110000010001011110100101000010101010100000110111010100011011101011011001001010110011001000"
1174 "101011010011001100111111111111111111010110011110100011111111111111111110001001010101101111111111111111111001010110011010111111111111111111110101100001110011111111111111111110110000100011101"
1175 "000001100101100100000000000000000001010111010000100000000000000000000101101000110111000000000000000000011100111011011010000000000000000001011101001011011000000000000000000101001111001001000"
1176 "100001010110110010111101001011000001100011110010101000100001100101100100001101100001101000110111101100011101100111110011011010001110000001000011111101011101100000100101000110100010011010000"
1177 "111010011001101111100111001110001001010110011001100001110001011110110100010110110010110100101110000111010010011111100010011010111011101001010000111011011010110000010010100111001010011101000"
1178 "101101111101101011000000111011001001000010111110101111111011111111010111001101001000101001110001010010011001000110101010000110001111100101100010011111001011011111101010110101001001110111001"
1179 "101000001001010111010111001100110001100011001000101010110110100000010110001010010100110011010100001100011011010110001010001111000100110101100101010110000010111010101111100100010111100000011"
1180 "100011111110010010001110110000100101000110001011010110100100001001010100111000101100010111111110100011010111001011011101000100010100111101101010000100100111001000010110000110110001111110000"
1181 "101000110110110110110011110000010001101101100111110101111111000011010101101100111101101111110000110111011101011101100101011010001011011101100101100101101101000101101100000101101001010000110"
1182 "100000011011100101111001011000000001010000011101001011101010101110000110011101011111111100010001111000011000001010111101011010001111001001010110101000101101101001100110010101000110100010001"
1183 "101001111001000110111001010000101101000101011001110001111001111101010100011000101100000011101101001000010101011110110100101100100110101101101100110110100000100001010110010110110001011010110"
1184 "110001000100010111000100000010011101100000101000110100100000110011100110011001100001011000111100100001010111100101010110000010011010000001100000111011100111001000011101110100100000011001101"
1185 "110100110111110010010101010110110001000000100101011011010101001010010101101110011010101000110001110111011010101010101010101010101010101001101010101010101010101010101010100110101010101010101"
1186 "110101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011111110111000011010101001111110110100110101011110000010100100010101100110"
1187 "101100111101010101001100011101000101110111011111000100110000010011110100100011011000101000000100010110010100110001000101101111101001101101000100101000001111111100000110100111001111001100010"
1188 "101011001100000001011011011011101001100110001111011001110011111111000110110001011100101100010010110101010000011000101101100000011101001001111010010101110111011111011001010101000101001010110"
1189 "110101000100011011111001111010010101011101001101011010000100010100100111110011111011010010111111000100010110011101010010011000110000001101011110100010101111010101110011100111011001010110011"
1190 "100101010111000001100100011001010101000100101101010100000110100011110101100101000011011000001100111001011100110110101111110001110011111101011101100000100011100010111001000100100001000001110"
1191 "111111111111111111100001001010100101111111111111111111110101101011010111111111111111111010100100001101011111111111111111100011101110011101111111111111111110111100101101000111111111111111111"
1192 "000000000000000000111100111001001000000000000000000011100001011100000000000000000000001100000010100101000000000000000000110100110010011000000000000000000010011111111110100000000000000000001"
1193 "111001110110011110101111101110101010111101010100111010110100101101010000111011110111001110000001101100100001100111100110100110011100010010010111110100111010100011010010100011110011011100001"
1194 "111100101000001000100110011011000011110011110001011011011111010000111001011100110000101010111100000010001011111111100100101110101001000110100110011011111011011010010111100101011100101101001"
1195 "111011110011101010100110100010000110111100110100111011101001000001111111000001110011001110000011011010000111101111110000101110010000010100100100110110000010101000011011100101000011000101101"
1196 "000101010110110110110010111100111101100101110010010011101100011101110010101000001001001101110110110111110110001101010100110111001000101010100110001011100010100010111001101101110000101101101"
1197 "001011110001011000100000100100001101000000010010111011101000001100011010001100100000001111101101010111110000001101111110110101100110110010000001000011110010001000100000010100000010101100001"
1198 "010010010111111000110011100010101010111110001001100010101111010010000000011011101110101001011010010010110111100101001100111111101001011101010110010001011011001010000000111100111100010111101"
1199 "111100001110100000100101001111100101101111001011011011111111001111010001010001010010101000011101010111110101010100010000111011000011010100110000110011010010100010001001011110100001001001101"
1200 "111011001101010100111000000010101100010101010101010011010101010101010101010101010101001101010101010101010101010101010100110101010101010101010101010101010011010101010101010101010101010101001"
1201 "101010101010101010101010101010101010101010100101011011111110110000100111101000000111001011010100000100101011100100010110101001100101101011111100101100010011000011010110011111101110010110101"
1202 "110000101111101100111111100110011110010111001011000010010101101000100011000011011111101110000111010111010011010100101100111011000010111111001001010111001011011000011011101010001100100101001"
1203 "111101011100101000100101001100101010111000001010111011100000010000011101001011110000001010101000010100111000100010001000100110010110100010011101011100110011101010101010001111011011110011001"
1204 "101110011001110000100111000001101001101110111011101010101000010010110110010110011001101101101110100110000100110000001000111001101011110110011100110001001010101011011111110000000110100010101"
1205 "110111000100100000101100111010010011101111111101010010111110111100011000110100111001001110101110010011001000111011110100110101110011001010110000111100000011000000110100011101100010111011001"
1206 "111010101100111000101101011001011100110101100111011010011101110011010000110111011011001100110001110000011001110000011110100100010110110010011111001011001010100011001101100111000111111010101"
1207 "001111000011011100101001011101110101000011010101111011001101000001011011010010001111101011111001111010011100101110111010101001110110011001101000011001110011101101011000010001100111010100100"
1208 "100011111000010110111111111111111111010011111111100011111111111111111100011100011101101111111111111111110101010111111000111111111111111111011001000011011011111111111111111111110100111010101"
1209 "001101111110000110000000000000000001101011111110010000000000000000000101000101111111000000000000000000010100111011110110000000000000000001110110101001111000000000000000000101111001111101000"
1210 "110110000011011000001011111101100001010011001000100111101111000100010111111001110110110111010010011001010011000000001001101001000100011101000101010011000011001010000101000111010001010001100"
1211 "101001110001010100000010011010110001101011010100100010001000110101000101010101001011111100010100011111010100011011001110011110010011111001101101101101000111111000110100110110001001111010111"
1212 "101110011101011100110011001000110001111110100100100001110110000001010111111011101000100001101111111001010100111011101100010110010100101001100011010010000000001011111000110100000010110111101"
1213 "111101001110111101101010010010100001101100111101011001100101101111010100101000000110001110111011111011010011011010100110110100100110011001100100110100011000101000100100110111011101001001001"
1214 "101000101011100001101101100111011101001110101110111011011010001100110101101100101010111011101000011001010101010111101101101000010101010101010101010101010101010101010101010101010101010101010"
1215 "101010101010101010101010101010101001101010101010101010101010101010100110101010101010101010101010101010011010101010101010101010101010100101110000111110001010010001001101010110001001010011001"
1216 "100000111011010001001010100011010001101101110001011010111001111100000100001101000101001010110010010000010110101100011101001001100111011001101001100100110001100000000101010110100000011101001"
1217 "101010011011101011101000001110001001110011011001100111001000101011010101010101000110001000101100011101011111100111011001110111001000111101100110100110110001000111110010100101110010100101011"
1218 "101010111010001011101010101010001001011000110001111011001110101010110110010001100001010011101110000000010101001111110011011010000000001001100111011000110001100110110110110110010111101110100"
1219 "110111110011001000000000001101001001110011001101110011001000111100100110100001101110100100011011110011010100000100010001110011111111001101001110010100100010011101111011000110100110100110011"
1220 "100011010100100100011111011101010101000110010010111011111110010110000110011110011100100011111010010010011010000011010101110110011111100001110100000110011000011011011010110101000100101011100"
1221 "111111100001101110001010100101010001001001110011010101010101101000000101001100110100111111010111001100010011111101000100000010010110111101111001100000111111010001110000100110110011111001110"
1222 "111011001101000110001001001101101101111111100001100101100010010111010100011100101001101101011010010001010100110011100101110111010111010101101110101101010110000001011111000111101101101101011"
1223 "101101111110011010010000011100000101001011100101011001100110000001000110101011011011011011111111100110011100000111000100000111011010011001110110111000101011000011110100010110001010011000010"
1224 "110111001110000110010110000011111101111011000000001101111010100011000111011001100011011101011001110111010110101010100011000100000111101001000010000000010100011001110111010110010111110101110"
1225 "111111111111111111110001010100110101111111111111111111111101001001000111111111111111111010001110010101011111111111111111100100011001111101111111111111111111111110010100110111111111111111111"
1226 "000000000000000000100110000111010000000000000000000010101101101100100000000000000000001010011000011110000000000000000000111000111010100100000000000000000010001101111010100000000000000000001"
1227 "010001001101110110110010010100100000000111011010110010101011000001110111100110000000101001011111110110000000101101000100101111011111000111100010000101000011101001011000101111110011000001101"
1228 "101101000001010100110101101110011101001011101101110011001101010111011001010010011100001100110010001110111000010001011010101110101011001110110100101100111011001101001110010100100001110000001"
1229 "000110010101001010110111101110101010101110011000100010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
1230 "010101010101010100110101010101010101010101010101010011010101010010011111111100100011001010010011100010011111100010111110101101100100011000110001110111001010000010011011010001111100100100001"
1231 "001100111101001010101001110011010011101101011111001010110101001111010101010010000001101001100001100100001101001000100110101100100111101010111110100011111010110101110110000010111001100000101"
1232 "100011001111010010111010111000010001100000000001110010001100110000001110001110110010001110100000010111111000111100010000101110101100111010100111001110100010101110000011110010000011101011101"
1233 "010101010011100100100100011010011001111101000100111010011100101101111010100111101100001001001110011101011111111000010000111110100101010110111110111011110011101111010010010011000111011110001"
1234 "001010000001011000110101110100011001001101011000111010110111000111011001000110101011101101010011001011001101110011010000111011011100111110111001000011010010111111001001010100000110100001001"
1235 "110110001100101110110000101011110111010110011101010010010110101111101101110110010001101001001110011000111001110001011110101100110010000100110101001110101010011100101101001011100101001111101"
1236 "001101010111101010111101011111110010000100011001011010111101010011110110110110001010101111111011111111110111100010100010110011101101101111111001101001110010110110110110100000011001001000001"
1237 "110000001010000110110110111100010100110110110111010011001010100000011010011011100000101111011110110111000101101101110000100110001000001101111101100111011010110010101110111100001001010001101"
1238 "000101110111010000100100001011100100110111011100110010010100111010000111101001101111001110101011000110001011010001001010110101001111001111101010011010001011101001110110100001000100110011101"
1239 "000011011101101010100100100000110101101100000010110011110000010010001001110100110010101000001011011110011111100101011010111110101111010111011000000111011011101101001010111011100100010110101"
1240 "111000011010010110111001010110011011111110110011011011011111000111011101111111101101101001011101100000000000001011000100101000100100000011000010110010110010111100101111110011010111100100101"
1241 "000100110101111110101000110000011101000101110111000010100001110011111111010011001010001000001011111001101110011011100110100111010100000111010011100111010011111110000101001110101101111011000"
1242 "100011000011010010111111111111111111011100110111111011111111111111111100110101110001001111111111111111111000100101000010111111111111111111010010111001000011111111111111111100001110011011101"
1243 "001001110011011100000000000000000001000101000011101000000000000000000110101011011011000000000000000000011101000110101010000000000000000001101010101010101000000000000000000110101010101010100"
1244 "110101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011001110010100111101101100100101"
1245 "101100101101010010101101111100010001001111001100010100001110101010110111100100111000110011001101000001010000001011011001000110111001110101001111000111110111101011001110110111100000010000010"
1246 "111110100101011011110100010001010001011100000011011010011101101010010110110010111110101000011110110000011111110111000010000011000011110001011101100000001001110001001000110100100111001000111"
1247 "110001100000011010010100111000001101100011010110011010101111001000000100101110100110000000010001011100011100010001101001100100111001010001101110101011111010000011010100110110000100001111010"
1248 "101101101101010100111110110101111001000110011000000110000000111110000110101110010001110110000011001101011001001011000111000010100110011101110011100110000111111101101110100100000010001001011"
1249 "110010010111100101111111110010100101110111000001100110100110001101010101000101110011011000010010100001011101001011110111101000010011101001111001000110000010111110011111010101000000001000101"
1250 "100010110110100101101000100110000001011000011011001010001111100101000100110011101011000101110000001101010010111100001110100011101101111001110010101111101000101000110011010101010011010000010"
1251 "101010001000001110101111011100000001011110000001011101101110100001100100101110010100101101011011000010010110010010011010010010101000110001001000101010001110010011000111010110110111100101010"
1252 "111000111010010111101011001111100101001110011110111111001100110010110100001100110111111111001100010010010111010101110110110011011011011001101100100111111001001111111010110100001101111001110"
1253 "101010001110010100010100010101101001111101111000101000010101101101100110110000010101110010010111001111011101010111011100001100010111101001110101010101111001110110000110010110010111111011111"
1254 "101111111000111100000111001101101001100101100111011111100011011010110110110000010011010010011110100101011100001001100100111111000000001101010000101001001001110000000110010111101100101001011"
1255 "111000100101010110000011000010111101111011010000111000111001001010010110101001101100011000100010101111010001010101100000100010110101000101100001100101001011010011101010000110000010010101110"
1256 "110110000000111010010100111111100001000010100000011001101010011110000110011111011010101010100011010001011011001001110011111011111101011101011000010000111010011111110001000111111100101001101"
1257 "101010111101100010101010101110111001001100101010101010101010101010100110101010101010101010101010101010011010101010101010101010101010101001101010101010101010101010101010100110101010101010101"
1258 "110101010101010101010101010101010101010101010101010110111001000110110110001001001110101011001110001011011010000011011110100100111001100101100010001010111000000110111100100111111011100101110"
1259 "111111111111111111100100001001111001111111111111111110110111111001100111111111111111111110011100111011011111111111111111111001011111100101111111111111111111111010100110110111111111111111111"
1260 "000000000000000000100101001101010000000000000000000011100100010100110000000000000000001001000010110110000000000000000000110110000011101100000000000000000010001100001010110000000000000000001"
1261 "010011001011111100111010010110100111001000000011110011010100011011011001010000010010101100000000101100110110010000001110100101110011100000100001001110010011100101010010101110110011111011001"
1262 "111101010101101010111000110010000100101010101001000011001110101110101111001011110001001011111000100110111011001101111000101001001100011111110110011000100010001110011011110111011001110101101"
1263 "101011100110101100100101101110100100111001101001100010011111110000110011011100110111001001010101101111001101011101100000100011010100000000000010101100011011110010110110000100101100100100001"
1264 "101000110101100100100110100100111110101011100111001010101011011001100111101111101011101000001001100110110001001010011000111110111101001001000111100000000011000101011100111010110000000101101"
1265 "101010000110100100101111110101010110110000110011101011001010101101101000001001000101101001010100110111001011010100100100110000000000011011011111010111110011110000100000100111101100101001001"
1266 "111111110101011110111100010101110010100110101010001011001000101110000010110111011001101111001111100100110010110110001100101100010000000001100010000010101010010010011001110000110100001011001"
1267 "010110101011011000110101101000001001101001110011101011010011100010111001001000000111101011100010101000011100110001001000101100010101010100001101010000011010101101100111111110010100001010101"
1268 "010011101100011000101010100111000101110011001010111010001011011011001010101011000100101010100111111111101010011011101110111011000010011101100011101101100011001100100010010111110010110100101"
1269 "101100100011001010110001111100111000010011000111010011101001001000001100110100110110001110011011010000011110000111111010110101001111011110000101101000000011100000001110010101001000100100101"
1270 "100101101000011010110011000111101100101100011011100011100011000000111001011100110111101010110011101010100010101001010000101100110110111110010010110010011010100011100111010010101100010111101"
1271 "110010101000010100101110011101001000000100000010010010001100100100000000010011101100001100011100010100101011000100010100110001111111011010100010101010100010111000111000101010101010101010101"
1272 "010101010101010100110101010101010101010101010101010011010101010101010101010101010101001101010101010101010101010101010100110101010101010101010101010101010011010101010101010101001100111000001"
1273 "110010001010101100110001110110001101011011101111110011111000111111000100010011011100101001011000011010101010000001110110110011010000010010011000000110110011000110001110001011100010010011101"
1274 "000000000001011110110010110000000010010011010011011011111110111011011001001111011111001111010110001000011011101010110010101111001010101110000101011011000011011110110000010010101111010111101"
1275 "001110110010011100101101010101000001110011101001010011000001100101111010101111000110101011010010010100010111011101001010101101001011101100000100000110001011001100010010000000100101000000000"
1276 "101001010101000000111111111111111111110111000000111011111111111111111110001011101010001111111111111111110001101101001110111111111111111111010101001100110011111111111111111111110010111011001"
1277 "000100001001001110000000000000000001010011100010001000000000000000000101101111000011100000000000000000011001001001110100000000000000000001000111011011000000000000000000000101100100010111100"
1278 "110001111000000010011011010001011101001001001111110011001100000001100111110010100001011111100011001101010111011011100001110110111100111001001001001010011111011000111101010111111001111100111"
1279 "100110010110001010111110001101000001111111001101110010110000111111110111010111001000111010001011100110010001111110101111000100110001010101010110000011000011000011010001010101100101010010001"
1280 "111100000110000110100111011110001001110100111000111011101000001110110100101100001000111011010000101000010001000111101010011110001011100001110011010100110111110011011011010111101000000100001"
1281 "101110101000000011111011101101110101000010001001000101010010001001100110100110001011011000000001011000010000001001011010111010000111011101001000100101101101111011000001000110001101101100010"
1282 "100011011100010100010111111010111001111010100111000010010101111101100111110001101111001000000101011001010100110001001010110100101010101001001101110001100011100000011011100101110000000110111"
1283 "100110111101011101110101101010011001001111000100000111001000010100100111010001001110111111000100110110010100001100011010011010101110011101111001010010110011010000011010110110001001010001101"
1284 "100011011111011101000000101001010001101101101110110100111110101010010110111001111101000100010100100101011010000110100111011101100000011101001111100010000101001011110000010111110000101111111"
1285 "101100001011111111111111011110010101000001101101101001100101101111100101111000100101010010000001010111010101100101101100100100100011011101101001011010100110100111001100010100011010110010111"
1286 "100001001101001011001001110101110001101001010101000101000001110001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
1287 "101010101010101010101010101010101001101010101010101010101010101010100110111011001110101101111010011111011000011101111001000111010100111101100001000001110110010010000111010101101010011101011"
1288 "101111010011010010000111101101100001100110111110000010001010001101110111000011101001101101011100000001011010101100100110100110110110011101010100011001101101101101010001000100111011110010011"
1289 "100110110110110101101010011101101001001011111000110010110111001111000111000011010111011001001001110011011100111110111000100000001110110101100100101001010110000101100111110101000001001001100"
1290 "101110111000000100001101001100001101100111001010101001010111000001010101010010000100000111110000110111011110011011001011011000010001010001100110001111110001001010111000110101001011110100111"
1291 "101110011100111101100111011000101001010101011100111011010110110110110100110011000101100111111101011011011101011100111011110011010000101101111100001110011101101111110101010111010101111011100"
1292 "110111011000010100100010101100010001111001010010011110111111100110000100111001000000111100111001010010010001011100111010011111001001110001111000001011001111010011110100000100011000110010101"
1293 "111111111111111111101101110011001101111111111111111111100100010101010111111111111111111001001100110011011111111111111111101010111101010101111111111111111110101111100000000111111111111111111"
1294 "000000000000000000110100101011001100000000000000000010010000111000110000000000000000001010111100101111000000000000000000101011010010011100000000000000000011011100101100100000000000000000001"
1295 "011001010000110100111010100010100010111100010011001010001110110100001100110001011010001000001010100111111010000001100100101110001101000000111110100011111010111111000110101011011001010111001"
1296 "111111110100100000111110010000110000001011111100100010011111010100101000101111000101101111010101001011110101111100111110101100010011111000001001100101101011001101110110101101011110100110001"
1297 "110011111011000100101010000111010110101110100000010010011110000110111010011111000011001001000100001010001001011001001000110101010111110111101100110111000010011101101011110010111101011000001"
1298 "100011011000011010110111111111100000111001000001101010101111001010111101001011111001001011101101010001010001010110111000101101110101110100010011001011010010111111101101100100110101100001101"
1299 "101010100010100110111010110001001110011100011100000010111001000110010011001011111100101110100011110111001001101011010100100110011011001001010001011110000010101000101101111101111010100110101"
1300 "011010011100111000110100011110001100101000011110100011010111101100111101101001011010001100110010001110101001000010010110100010101110011111001010111011001011110101010101111011101011100101001"
1301 "101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
1302 "010001111001111010101111111110110110010110011110000011000001010001101001000001000101001010001010011100001110100011001000101101101101001010001001101010011011001100110111000111011100010110101"
1303 "110111101000000110111011010100000011000110110111100011101100101001001011000111001111001010001011010101001010100011011100100001110110111011110101001111010010101011001101011111111101011000101"
1304 "101111111100000110111101010011001000010111001000001011111010001011111011111100001100101110100000001010101011010110000110111001001001001000001110010100011010110101010010101001000000111001001"
1305 "000000111010010100111110000011011011111000011111010011011011011100111111010011111000001011110001100101010110000011010010111100011100101101011000010000010010001110111010111110011110110111001"
1306 "111011010111101110101111010111100110101100101100000011100000010000110110000011100101001011111011000011100100000110111010110010110001010110010010111001010011101010010000111000101110010001101"
1307 "101100010010011110111101111010011001011010001111011011000000001101110111111001110001001101101111101110001100111010110100110111011000011110001000011001001011110110111011000100100000101110101"
1308 "111000001010001000101010001111011001010000000101000011100011111011011100101011011110101100100010101111101000011000100100111000100111100110000000000011110010000110111010011000010110110000101"
1309 "001000011000001100101110100010101100000001000111010011101010001011000100111001101010101101000101110111001110101010110100100100011000011010010000110011010011111011000010111000100100100101100"
1310 "101100010100000000111111111111111111111010001101110011111111111111111101111101001111101111111111111111110101011100010110111111111111111111101000100000100011111111111111111100101110101101101"
1311 "000001010101000110000000000000000001100100010010000000000000000000000101110010111111000000000000000000010011000101010100000000000000000001111011011000010000000000000000000100101100001011000"
1312 "101101111001000111000000001100010101010100110111101010011000000010100111011011010010101000100101001001010101111100001001000111101100100101100100110011011001111101111001110101111111111011011"
1313 "101000011100011010000001001011010001100010100010111001010001010100010100101010111111001001100100101010010110110110111100011001010001011001011110011001101010110001000010010111010011011010001"
1314 "100001101000100111001000000101000001100111110110101110001100111101000111000010001111101100111110001100010101011010011010110010000101111001110111111111111001001011101000010111010011100110110"
1315 "101011101110001000100101101011000101011001111010001110000001011010100110000010101000100110101010101010011010101010101010101010101010101001101010101010101010101010101010100110101010101010101"
1316 "110101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010110110111011100011010111110101100111001111101110010001100101011100111100111100100010101000100110"
1317 "110010010101111101010000111010101001001101001011110001110011001100010110011100010110000101001100010110011100111101110101000110100101011001100101101100111010000101010101010100110110001100110"
1318 "100010010010010111011011100100100001100010011001111111100111101000110111000000110101110101111001000010010111101010110101111000001101110101100000111010100101001011001000100110101001101111001"
1319 "100100011001011101110111110001000001110011010111000101100110011010000100101001010101011001001001110010011101010011001111000000000110001101011011000011000001001001000111100110110111010101110"
1320 "111000100101101001011110010110111101001111111000001011101010111110110101010001101001011000000110000100011000101110011000110110000011111101001001101010101011110110100101000101101111100110010"
1321 "100011101100111001101001110100011001101111001111110011100111011110110100000001111010111010100000011001011100110010001110001011011010011101010101100111100011001100010111010101011001101011010"
1322 "110010110010011111001010000001110001100010100010010001010010001000100101101001011101000010000110101011010100010011101100111110100011111101010111001100000000110011101001000111001010000011111"
1323 "101111010010111011101011110000011001100010000010100101100111000010000101000000101011110100010010110101010100100110101001100100111011010101111111111000111100001001001011110100100101101100101"
1324 "111100011100001101101111110100011001010011110001011110111001011001100101111111101000001001010000010110010110101001110010001001110101111101110110011010011011010001000011010100101000101100000"
1325 "111011010001111000101101000110010101101111001010010011101111110101000111100101000110000100010011111111011001110010101000001000011000111001110011111000111111000111111001010111011010011100011"
1326 "100111000001100000110010000000110101111000101001100010101111001111010100110011011110010111010101110110011110111110100011111111011111001001111110000100000111010000011000100110010110100001101"
1327 "111111111111111111101001100101100001111111111111111111101000011111010111111111111111111010101011110001011111111111111111110111000100111101111111111111111111101100111010100111111111111111111"
1328 "000000000000000000110100100110110100000000000000000011010100001001010000000000000000001101011011000111000000000000000000101000001010000100000000000000000010101100100101010000000000000000001"
1329 "111100001011101000101100111111110010000000011110110011010001101011110111010111110110101100101001101100101000000110010100101111110100101001000100101001010010000111100111001010111011101101001"
1330 "110000101110010100110101010101010101010101010101010011010101010101010101010101010101001101010101010101010101010101010100110101010101010101010101010101010011010101010101010101010101010101001"
1331 "101010101010101010101110000000010001110100101101111011000011010000111001000001101010001100001110010100110101100110101110100001110110110001111001000110111011010110110011000101011001111110001"
1332 "111110000010100010110101110110101101011010010000101010101100011011100011001101100101001111001100100001000010101111111010110001001111100111011010010001110011001001000100001100111010001111001"
1333 "111111001011011000111011101011100111000011000111101011111111111001111110011110010110101001110010011000111001000001100000101111100110010101010110001011000011010101000101111000001010010110101"
1334 "001010101100100110110001000001101000110011011000100010101110110111101111001010101011101011010010111000000110010100000110100000001001001101011001100010011010101011000010001101100100000000001"
1335 "001110001001110000100110110001000110010001000111110010110011000001011100111101100110001001010011001110111100011111010110111011011010010100100000001001001010000101100110010010000011101001001"
1336 "101000110011001110110100111000000111011001011011011011010111000001011101000011111000101010101100011010111110010011110010110001010010111010100111110111111010111100110000100101111001000001101"
1337 "000000100101110000100000101111000100100011010101001011010010001100001000110000111011101111101010111000111011101110010010110110110001010010011001111001101010001011100000110011011110100010110"
1338 "000000001100001110111001010000001011001011000010000011100111101000000110011001111110101010000001100010111110000001000100111101110011100000010110010100100010101011111011110101000000100000000"
1339 "111111101111100110101011101111100101011100001000111011011010010110001011010100000101101111000110100111001111111011011010110111000000110010100001010101010010110100101100010100000011001110101"
1340 "000000101010100010110000100011101010110011110001100010010111100010001010111010100000101001010011111100101110101000101110110101000101000011101101110111000011100100111100110010100111101110101"
1341 "111110100001101010101001011111100101000001111101011010001111001001010110100100100100101000100010111011110110001100110010101101001101001110100100011011000011001110101001010111111001001110101"
1342 "000010101101100110111111000100110100010111110000111011010010011101000001111111101111001010001100100100000011011110100000100010111101011100010101000000100010011100111100000010000010000000101"
1343 "111010100010101100100001000111011001111101000101100010010010110010011100110011010010101111011001001011011110011110101010101110111100011111011000001001101011010100101111100010111011001111101"
1344 "111010101011011100110101010010111000001100010010111011010101010101010001010101010101001101010101010101000101010101010100110101010101010100010101010101010011010101010101010001010101100000001"
1345 "111010101010101010111111111111111101001010101010101011111111111111110100101010101010101111111111111111010010101010101010111111111111111101001010101010101011111111111111110100101010001111111"
1346 },
1347 /* 17*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, -1, 4 << 8, "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。它的主要技术特色是:1. 具有高度的汉字表示能力和汉字压缩效率。2. 信息容量大。 3. 编码范围广,可以将照片、指纹、掌纹、签字、声音、文字等凡可数字化的信息进行编码。4. 支持加密技术。5.抗污损和畸变能力强。6.修正错误能力强。7 .可供用户选择的纠错能力。8.容易制作且成本低。9.汉信码支持84个版本,可以由用户自主进行选择,最小码仅有指甲大小。10. 外形美观。", -1, ZINT_WARN_NONCOMPLIANT, 67, 67, "Previous draft Figure 1 **NOT SAME** different encodation, Binary mode not used by figure",
1348 "1111111000010101011111111111111110001011011110010101111111001111111"
1349 "1000000010000100000000000000000010100011101001010001101110000000001"
1350 "1011111001100100110100001101111011111100101010000111111111101111101"
1351 "1010000011010001001000011101000011111110111001011111100101000000101"
1352 "1010111000011101100100100001110011111101011101101011011111101110101"
1353 "1010111011110000000100000101110011100011100011100011110100101110101"
1354 "1010111011000110000011001011001011110110001010100101101111001110101"
1355 "0000000000010011100110010011011011000111101101001111111101000000000"
1356 "0010101100110010001100111111010011001110010110000110100100111000000"
1357 "1100010010001111111101001101001011111010010100110011001010010001100"
1358 "1110001011001110000010010100101010110010010010111010001000000101000"
1359 "1000010011000111111001000011111011101100011010010111110011110110111"
1360 "1011101100011011001010101101100011111000011110101001011101101100100"
1361 "1010101100001100101111110100010010110010011100000101100110011010100"
1362 "1011100110100101010000001101011011001111001001011101101001010000010"
1363 "1000110001000110010011101001111010011100010101100010001100001100000"
1364 "1110111000011000010011111001000010011001001000111000000010000011100"
1365 "1111111111111111011111011011011011111111111111111110101001010000101"
1366 "0000000000000001101010110001000000000000000000000101110111011010000"
1367 "1011000000111001101001011111000001001110001001110101011111101010000"
1368 "1101111001111001101011110110000111101111111001110100111100001000111"
1369 "0000010100000001111111001100011100100000001100100100111010110101000"
1370 "0000000001011001010101010111101100010011010110110111100001001001001"
1371 "1111100011110001010010111011111001010010000100100110111001111001110"
1372 "0111000001000001101111001001110101001011111111000111000100111101001"
1373 "0110100011111001110101110000010111101100110011110100101111011100011"
1374 "1100110110011101000101011100101101010011100101010100100010100001100"
1375 "1110000110010001001110011101110000011010100011110101011000011110111"
1376 "0110111001111001000110110111100110111011101011100111111110110111010"
1377 "0110001110100001000001011100011110101111101000000101000110011100000"
1378 "0011100000010001010111100100001001111100101000110101001000101100001"
1379 "0011001100010101010010000111000011110111000111100100001110000111110"
1380 "0000101111100101010011001110010001011000000011100111010010111000010"
1381 "0011101110110001011110110110000111011001000111100110101000000000100"
1382 "1001100100000001111111111111111110111001100101110111111111111111111"
1383 "0001010111111100000000000000000010011111111111110000000000000000001"
1384 "1001000011000011000000100100011011100110100001010101100010010001101"
1385 "1111010101001110010000110000000010110110001100111011001001000101001"
1386 "1110010110101110101100101001001011000100000101010100000110111011001"
1387 "1010100110000000010001111110110010111101101100000110110011110001001"
1388 "1000111010101011001100101101010011100010110100111011110001100000001"
1389 "1001000011100101100000001010111010001110110110100110100100000100101"
1390 "1000111011000001101101100011001011101111110100010100101011110011001"
1391 "1011111101100010000011100110111011111110110011100010011011101110001"
1392 "1011000000001111011100100110011011010010111110000100100011100010001"
1393 "1101100010000101111010111000100011110100101010110111011010110001001"
1394 "1001000011001110100101100010101010111100101100011100010100111010101"
1395 "1000000011010101101010100011111010011000011111111010100001101011001"
1396 "1101000110100100011111001110111011001000000100100000111110010110001"
1397 "1111110100001111111101100110111011010110010100000001101011010010101"
1398 "1000001100001001001110011110111010001100000011011100101100100011000"
1399 "1111111111111111111011011001111011111111111111111111100111000010001"
1400 "0000000000000001011000100101010000000000000000000110011010110100100"
1401 "0001110001101101011100101111100111111000010010000101000001011100110"
1402 "0111010100110001000010100001101000001001010110000111111101100011100"
1403 "0011011001010101001111011111001101101100101101010100101111001111110"
1404 "0001101100100101011100001110111010011110010010100100100001000101001"
1405 "1001011100010001101010010110011000110110111100000101110110000010000"
1406 "0000001111000101011011011010010110000010111000110100011001011010100"
1407 "0000000001101101011110101100001101100101100001110110110111000000000"
1408 "1111111000111101000010111100100101111011111010010110011101101110101"
1409 "0000001010111001111001001100110011010101111100110100010010101110101"
1410 "1111101011100101001111011101111011001000100010100111101010001110101"
1411 "0000101000011101111001100110101001011110101110010110100010100000101"
1412 "1110101010010101000111011101001011100010000001100100010100001111101"
1413 "1110101001101001000100110010101000000101000110010110110110100000001"
1414 "1110101000010001111111111111111010010111110110110111111111001111111"
1415 },
1416 /* 18*/ { DATA_MODE, -1, -1, -1, ZINT_FULL_MULTIBYTE, "é", -1, 0, 23, 23, "Mask automatic (01)",
1417 "11111110100010101111111"
1418 "10000000001010000000001"
1419 "10111110111010001111101"
1420 "10100000100101000000101"
1421 "10101110001111101110101"
1422 "10101110110100101110101"
1423 "10101110011101001110101"
1424 "00000000101010100000000"
1425 "00010101101101001000000"
1426 "00001011010010000111010"
1427 "10100010010010101010010"
1428 "10110101010101100010110"
1429 "10101000010110101010100"
1430 "10011111000110000101000"
1431 "00000010000001110101000"
1432 "00000000101001100000000"
1433 "11111110001000001110101"
1434 "00000010110000101110101"
1435 "11111010110001001110101"
1436 "00001010010000100000101"
1437 "11101010010100101111101"
1438 "11101010001001000000001"
1439 "11101010101010101111111"
1440 },
1441 /* 19*/ { DATA_MODE, -1, -1, -1, ZINT_FULL_MULTIBYTE | (1 << 8), "é", -1, 0, 23, 23, "Mask 00",
1442 "11111110001000001111111"
1443 "10000000111111000000001"
1444 "10111110110000001111101"
1445 "10100000010000100000101"
1446 "10101110100101101110101"
1447 "10101110000001101110101"
1448 "10101110010111001110101"
1449 "00000000111111100000000"
1450 "00010101100111110000000"
1451 "01011110000111010010000"
1452 "00001000111000000000111"
1453 "11100000000000110111100"
1454 "00000010111100000000001"
1455 "11001010010011010000010"
1456 "00000001101011110101000"
1457 "00000000111100100000000"
1458 "11111110000010001110101"
1459 "00000010100101001110101"
1460 "11111010111011101110101"
1461 "00001010100101000000101"
1462 "11101010011110101111101"
1463 "11101010011100100000001"
1464 "11101010000000001111111"
1465 },
1466 /* 20*/ { DATA_MODE, -1, -1, -1, ZINT_FULL_MULTIBYTE | (4 << 8), "é", -1, 0, 23, 23, "Mask 11",
1467 "11111110000101101111111"
1468 "10000000111000100000001"
1469 "10111110110000101111101"
1470 "10100000101000000000101"
1471 "10101110111101101110101"
1472 "10101110100110001110101"
1473 "10101110101110101110101"
1474 "00000000111000000000000"
1475 "00010101100000111000000"
1476 "01000100011111101010111"
1477 "10010010100111000111100"
1478 "00100101101111110000100"
1479 "01000111010010111000110"
1480 "00001101111110010111010"
1481 "00000011111001110101000"
1482 "00000000001110100000000"
1483 "11111110110000101110101"
1484 "00000010001000101110101"
1485 "11111010110110101110101"
1486 "00001010001000100000101"
1487 "11101010101100101111101"
1488 "11101010100110100000001"
1489 "11101010111010001111111"
1490 },
1491 /* 21*/ { DATA_MODE, -1, -1, -1, ZINT_FULL_MULTIBYTE | ((4 + 1) << 8), "é", -1, 0, 23, 23, "Mask > 11 ignored",
1492 "11111110100010101111111"
1493 "10000000001010000000001"
1494 "10111110111010001111101"
1495 "10100000100101000000101"
1496 "10101110001111101110101"
1497 "10101110110100101110101"
1498 "10101110011101001110101"
1499 "00000000101010100000000"
1500 "00010101101101001000000"
1501 "00001011010010000111010"
1502 "10100010010010101010010"
1503 "10110101010101100010110"
1504 "10101000010110101010100"
1505 "10011111000110000101000"
1506 "00000010000001110101000"
1507 "00000000101001100000000"
1508 "11111110001000001110101"
1509 "00000010110000101110101"
1510 "11111010110001001110101"
1511 "00001010010000100000101"
1512 "11101010010100101111101"
1513 "11101010001001000000001"
1514 "11101010101010101111111"
1515 },
1516 /* 22*/ { UNICODE_MODE, 3, 2, -1, 2 << 8, "sn:7QPB4MN", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 3 Example 1 same with explicit mask 01 (auto 11)",
1517 "11111110011010101111111"
1518 "10000000010101100000001"
1519 "10111110001010001111101"
1520 "10100000110110100000101"
1521 "10101110001110001110101"
1522 "10101110110101101110101"
1523 "10101110001100001110101"
1524 "00000000101110000000000"
1525 "00010101001010100000000"
1526 "01010110101101010100000"
1527 "01100011010101010010011"
1528 "00000110111001011111100"
1529 "11001111110100100001101"
1530 "01100101110111101110100"
1531 "00000000111000010101000"
1532 "00000000001001100000000"
1533 "11111110000011001110101"
1534 "00000010101010101110101"
1535 "11111010010011001110101"
1536 "00001010111111100000101"
1537 "11101010001010001111101"
1538 "11101010110101000000001"
1539 "11101010101010001111111"
1540 },
1541 /* 23*/ { UNICODE_MODE, 3, -1, -1, -1, "price:£20.00", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 3 Example 2 same",
1542 "11111110011010101111111"
1543 "10000000010100100000001"
1544 "10111110010010001111101"
1545 "10100000100110100000101"
1546 "10101110001101001110101"
1547 "10101110110101101110101"
1548 "10101110000010001110101"
1549 "00000000110101000000000"
1550 "00010101011010100000000"
1551 "01011001001101010100010"
1552 "10010011000100111001010"
1553 "11101111000010101100010"
1554 "11000110010011100000110"
1555 "01011010111111101011101"
1556 "00000000101001010101000"
1557 "00000000010011100000000"
1558 "11111110001110001110101"
1559 "00000010111100101110101"
1560 "11111010001001001110101"
1561 "00001010110001100000101"
1562 "11101010001110001111101"
1563 "11101010110100000000001"
1564 "11101010101010001111111"
1565 },
1566 /* 24*/ { UNICODE_MODE, 3, -1, -1, 2 << 8, "C:\\DOCS\\EXAMPLE.TXT", -1, 0, 25, 25, "AIM ITS/04-023:2022 ECI 3 Example 3 same with explicit mask 01 (auto 11)",
1567 "1111111011101010001111111"
1568 "1000000001110000000000001"
1569 "1011111011111110001111101"
1570 "1010000000000110000000101"
1571 "1010111000111001101110101"
1572 "1010111011000001001110101"
1573 "1010111001000100101110101"
1574 "0000000011100110100000000"
1575 "0001011000000011011000000"
1576 "1000101010100000100010100"
1577 "0111000110011110000000011"
1578 "0110011010100100100110110"
1579 "1010100111110011001011000"
1580 "0111010100110110111011111"
1581 "0100110110010101101001011"
1582 "1110100011110101010101010"
1583 "0000001100101101001101000"
1584 "0000000010110101100000000"
1585 "1111111010101101001110101"
1586 "0000001000011001101110101"
1587 "1111101011011110001110101"
1588 "0000101001010101000000101"
1589 "1110101000100011101111101"
1590 "1110101001101100000000001"
1591 "1110101000001010101111111"
1592 },
1593 /* 25*/ { UNICODE_MODE, 4, 2, 3, 2 << 8, "Študentska št. 2198390", -1, 0, 27, 27, "AIM ITS/04-023:2022 ECI 4 Example 1 **NOT SAME** different encodation, example Binary only, Zint uses Numeric also",
1594 "111111100110101010001111111"
1595 "100000000101110001100000001"
1596 "101111100010101110101111101"
1597 "101000000111000001000000101"
1598 "101011100011001010001110101"
1599 "101011101000010101001110101"
1600 "101011100010111110001110101"
1601 "000000001001010101100000000"
1602 "000101110100111100110000000"
1603 "010101001110000110101110000"
1604 "101110101010011001101110000"
1605 "111011011101010101111010000"
1606 "001001101010101010101010011"
1607 "101000000010011000110101010"
1608 "010011111000100111010000101"
1609 "010101110111110000001100100"
1610 "101110111111000101110110011"
1611 "010101110101100000100100000"
1612 "000000011011010101011101000"
1613 "000000001011110110100000000"
1614 "111111100111001101001110101"
1615 "000000100111001110101110101"
1616 "111110100110101010001110101"
1617 "000010100101010000000000101"
1618 "111010101001110010001111101"
1619 "111010101101010011000000001"
1620 "111010100010001010001111111"
1621 },
1622 /* 26*/ { UNICODE_MODE, 4, 2, 5, 2 << 8, "Szczegółowe dane kontaktowe:+48 22 694 60 00", -1, 0, 31, 31, "AIM ITS/04-023:2022 ECI 4 Example 2 **NOT SAME** example corrupt??",
1623 "1111111011101010101001001111111"
1624 "1000000010001000010011100000001"
1625 "1011111011011100100101101111101"
1626 "1010000010010100011010000000101"
1627 "1010111010000010111111001110101"
1628 "1010111011000111011000101110101"
1629 "1010111000111001111111101110101"
1630 "0000000010100110011100100000000"
1631 "0001100101001100101100101000000"
1632 "1110111011110100011111011100110"
1633 "1010011100110010011001000110101"
1634 "1100110111101110101101111010000"
1635 "1000011100001101011011000100000"
1636 "1111110111100110010001000001010"
1637 "1110110110110000010100001110110"
1638 "1100110101001101001111100110000"
1639 "1111111111111110101001110010101"
1640 "0000000000000010100101001111000"
1641 "1110001010001010011100001010001"
1642 "0101010100110011101000101110111"
1643 "0000101001101010101011010001000"
1644 "1000111001101011000100111001001"
1645 "0000001011011011100011010011000"
1646 "0000000010001011100100100000000"
1647 "1111111011101011101110001110101"
1648 "0000001010111010111111101110101"
1649 "1111101001001011010001101110101"
1650 "0000101000010010001111100000101"
1651 "1110101010101011000110101111101"
1652 "1110101011111011001010100000001"
1653 "1110101001101011111111101111111"
1654 },
1655 /* 27*/ { UNICODE_MODE, 5, 2, -1, 2 << 8, "Liĥtenŝtejno", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 5 Example 1 **NOT SAME** example uses Binary only, Zint uses Text mode also",
1656 "11111110011010101111111"
1657 "10000000010111100000001"
1658 "10111110010110001111101"
1659 "10100000110000100000101"
1660 "10101110001101001110101"
1661 "10101110101100101110101"
1662 "10101110000010001110101"
1663 "00000000110101000000000"
1664 "00010101010101100000000"
1665 "01010010000101010101100"
1666 "10011100000111100111111"
1667 "11101000110011110010000"
1668 "00100111011111100000011"
1669 "10001101101110111010110"
1670 "00000000110100010101000"
1671 "00000000010010100000000"
1672 "11111110011011001110101"
1673 "00000010110011101110101"
1674 "11111010010100001110101"
1675 "00001010101001100000101"
1676 "11101010010000001111101"
1677 "11101010110000000000001"
1678 "11101010101010001111111"
1679 },
1680 /* 28*/ { UNICODE_MODE, 6, 2, -1, -1, "Lietuvą", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 6 Example 1 same",
1681 "11111110011010101111111"
1682 "10000000010101100000001"
1683 "10111110001010001111101"
1684 "10100000110011100000101"
1685 "10101110001110001110101"
1686 "10101110110101101110101"
1687 "10101110001000001110101"
1688 "00000000100011000000000"
1689 "00010101001010100000000"
1690 "01001100000101010101001"
1691 "11011110100001001001111"
1692 "01110001101010111111001"
1693 "10011000100110101010100"
1694 "11101111001110010001110"
1695 "00000000101110010101000"
1696 "00000000010111100000000"
1697 "11111110000000001110101"
1698 "00000010110101101110101"
1699 "11111010001010001110101"
1700 "00001010110011100000101"
1701 "11101010000010001111101"
1702 "11101010110101000000001"
1703 "11101010101010001111111"
1704 },
1705 /* 29*/ { UNICODE_MODE, 7, 2, -1, -1, "Россия", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 7 Example 1 **NOT SAME** different encodation, figure uses Region One",
1706 "11111110011010101111111"
1707 "10000000010101100000001"
1708 "10111110001010001111101"
1709 "10100000110010100000101"
1710 "10101110001100001110101"
1711 "10101110110101101110101"
1712 "10101110001010001110101"
1713 "00000000110101000000000"
1714 "00010101001010100000000"
1715 "01010011100101010101010"
1716 "11001011101001011101000"
1717 "11110101001011011101110"
1718 "10010011000001011011010"
1719 "11101111101001011011110"
1720 "00000000101010010101000"
1721 "00000000010100100000000"
1722 "11111110001010001110101"
1723 "00000010110101101110101"
1724 "11111010001011001110101"
1725 "00001010111010100000101"
1726 "11101010001010001111101"
1727 "11101010110101000000001"
1728 "11101010101010001111111"
1729 },
1730 /* 30*/ { UNICODE_MODE, 7, 2, -1, -1, "Монголулс", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 7 Example 2 same",
1731 "11111110011010101111111"
1732 "10000000010101100000001"
1733 "10111110001010001111101"
1734 "10100000110010100000101"
1735 "10101110001100001110101"
1736 "10101110110101101110101"
1737 "10101110001010001110101"
1738 "00000000110101000000000"
1739 "00010101001010100000000"
1740 "01011100111101010100100"
1741 "11000101001001011100101"
1742 "00011010001000011010100"
1743 "11010000110101010111000"
1744 "11101100111010111000110"
1745 "00000000101001010101000"
1746 "00000000001110100000000"
1747 "11111110001010001110101"
1748 "00000010101000101110101"
1749 "11111010010100001110101"
1750 "00001010110001100000101"
1751 "11101010010010001111101"
1752 "11101010111101000000001"
1753 "11101010101010001111111"
1754 },
1755 /* 31*/ { UNICODE_MODE, 8, 2, -1, 4 << 8, "جواز السفر", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 8 Example 1 same with explicit mask 11 (auto 01)",
1756 "11111110111101101111111"
1757 "10000000100101000000001"
1758 "10111110000100101111101"
1759 "10100000110000100000101"
1760 "10101110111110001110101"
1761 "10101110100111001110101"
1762 "10101110111001101110101"
1763 "00000000100111100000000"
1764 "00010101000111010000000"
1765 "00010000101000111000001"
1766 "11100100100110000001100"
1767 "00000100010010010100110"
1768 "00000001000101111001010"
1769 "01010101110010100010001"
1770 "00000001010110010101000"
1771 "00000000101000100000000"
1772 "11111110110001101110101"
1773 "00000010000100101110101"
1774 "11111010010010101110101"
1775 "00001010111111100000101"
1776 "11101010101010001111101"
1777 "11101010010100100000001"
1778 "11101010111010101111111"
1779 },
1780 /* 32*/ { UNICODE_MODE, 8, 2, -1, 3 << 8, "المنشأ: المملكة العربية السعودية", -1, 0, 29, 29, "AIM ITS/04-023:2022 ECI 8 Example 2 **NOT SAME** example corrupt??",
1781 "11111110011000101001101111111"
1782 "10000000100000000011100000001"
1783 "10111110010110110011101111101"
1784 "10100000001111011100100000101"
1785 "10101110110000100010101110101"
1786 "10101110010100001111001110101"
1787 "10101110100101110100101110101"
1788 "00000000101000111000000000000"
1789 "00011000011111011010001000000"
1790 "10111010110101111010001000101"
1791 "10000011101101000000111100011"
1792 "10001110000101100001010011001"
1793 "11101110011011010101110111001"
1794 "11000110011000100010110101000"
1795 "11111111111111110101000111001"
1796 "00000000000000111111000110100"
1797 "10011011011100110001110111100"
1798 "01100110101000110101101111100"
1799 "01110000111010101101010100100"
1800 "11110101000110111100100100100"
1801 "00000010000110111111000011000"
1802 "00000000000100100001100000000"
1803 "11111110111000100100101110101"
1804 "00000010011110110001001110101"
1805 "11111010101010110110101110101"
1806 "00001010101110101001000000101"
1807 "11101010100100110000001111101"
1808 "11101010100000110001100000001"
1809 "11101010100100111111001111111"
1810 },
1811 /* 33*/ { UNICODE_MODE, 9, 1, -1, -1, "Μέρος #. α123", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 9 Example 1 **NOT SAME** example uses Binary only, Zint uses Numeric mode also",
1812 "11111110011010001111111"
1813 "10000000110101100000001"
1814 "10111110001110101111101"
1815 "10100000111100100000101"
1816 "10101110001101101110101"
1817 "10101110110110001110101"
1818 "10101110010010001110101"
1819 "00000000010101100000000"
1820 "00010101000101011000000"
1821 "10111111100010100101100"
1822 "11001010101001000101101"
1823 "01010001001011010101011"
1824 "01010110101010001110110"
1825 "01101001010101101001101"
1826 "00000011001001010101000"
1827 "00000000110010000000000"
1828 "11111110011111001110101"
1829 "00000010010010101110101"
1830 "11111010101001001110101"
1831 "00001010100101100000101"
1832 "11101010101010001111101"
1833 "11101010110010100000001"
1834 "11101010001010001111111"
1835 },
1836 /* 34*/ { UNICODE_MODE, 10, 2, -1, -1, "דרכון", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 10 Example 1 same",
1837 "11111110011010101111111"
1838 "10000000010101100000001"
1839 "10111110001010001111101"
1840 "10100000111111100000101"
1841 "10101110001100001110101"
1842 "10101110110101101110101"
1843 "10101110001010001110101"
1844 "00000000110101000000000"
1845 "00010101001010100000000"
1846 "01010000101101010101011"
1847 "01010101111101101101110"
1848 "00101111101010010110110"
1849 "00010111101001110100100"
1850 "11111011010101001001111"
1851 "00000000101010010101000"
1852 "00000000010110100000000"
1853 "11111110011000001110101"
1854 "00000010100101101110101"
1855 "11111010001011001110101"
1856 "00001010111011100000101"
1857 "11101010001010001111101"
1858 "11101010110101000000001"
1859 "11101010101010001111111"
1860 },
1861 /* 35*/ { UNICODE_MODE, 10, 2, 3, -1, "מספר חלק: A20200715001", -1, 0, 27, 27, "AIM ITS/04-023:2022 ECI 10 Example 2 **NOT SAME** example uses Binary only, Zint uses Numeric mode also",
1862 "111111100110010010101111111"
1863 "100000000001000001000000001"
1864 "101111100111111110001111101"
1865 "101000001000101000100000101"
1866 "101011100000101000001110101"
1867 "101011100111111111101110101"
1868 "101011101011110001101110101"
1869 "000000001101001001000000000"
1870 "000101110011001101111000000"
1871 "010010010011111000101100110"
1872 "001001001001011000011110010"
1873 "011000110111111111011011001"
1874 "011101011001010010010011101"
1875 "101100000111001001001001001"
1876 "001111110011111000000000111"
1877 "010010100100110010101100010"
1878 "000010111000110110000110111"
1879 "111111100101001101000011001"
1880 "000000111001110010011101000"
1881 "000000000001010101100000000"
1882 "111111101011101100101110101"
1883 "000000101100101011001110101"
1884 "111110100001001000001110101"
1885 "000010101101110100100000101"
1886 "111010100000011010001111101"
1887 "111010100001001101000000001"
1888 "111010101001111111001111111"
1889 },
1890 /* 36*/ { UNICODE_MODE, 11, 2, 3, -1, "Amerika Birleşik Devletleri", -1, 0, 27, 27, "AIM ITS/04-023:2022 ECI 11 Example 1 **NOT SAME** example uses 2-byte Region mode",
1891 "111111100110101011001111111"
1892 "100000000110110010100000001"
1893 "101111100000100000101111101"
1894 "101000000110101110000000101"
1895 "101011100011101100001110101"
1896 "101011101011111110001110101"
1897 "101011100000001101001110101"
1898 "000000001101111110100000000"
1899 "000101110011001111110000000"
1900 "011010101010010101000000101"
1901 "010100101010101111101001111"
1902 "110011110101010101011101000"
1903 "011000000111111010101010101"
1904 "001010000110011101010101010"
1905 "001001001001010110001000101"
1906 "010100111110010011010101111"
1907 "111110001011001100101011111"
1908 "011011010100101011010110011"
1909 "000000011010110001011101000"
1910 "000000001010100110100000000"
1911 "111111100110001100001110101"
1912 "000000100101110100101110101"
1913 "111110100000100111001110101"
1914 "000010100001000101000000101"
1915 "111010101100001101001111101"
1916 "111010101000101000000000001"
1917 "111010100111001010001111111"
1918 },
1919 /* 37*/ { UNICODE_MODE, 11, 2, 3, -1, "Biniş kartı #120921039", -1, 0, 27, 27, "AIM ITS/04-023:2022 ECI 11 Example 2 **NOT SAME** example uses Binary only, Zint uses Numeric mode also",
1920 "111111100110101011001111111"
1921 "100000000111001001100000001"
1922 "101111100010101101101111101"
1923 "101000000111101110000000101"
1924 "101011100011010111001110101"
1925 "101011101100010101001110101"
1926 "101011100011101010001110101"
1927 "000000001001010101100000000"
1928 "000101110010101000110000000"
1929 "010101001010010110000001011"
1930 "001010101010000001111011100"
1931 "100100101101010101000110111"
1932 "100001101101101010101001101"
1933 "110110110010110001010101010"
1934 "101111101110010111100101101"
1935 "010100000111001011011010101"
1936 "010011001011101011101010010"
1937 "010101001110111101110011111"
1938 "000000011111001010011101000"
1939 "000000001101010001100000000"
1940 "111111100100101101001110101"
1941 "000000100101011110101110101"
1942 "111110100010101010001110101"
1943 "000010100011100011000000101"
1944 "111010101000110010001111101"
1945 "111010101101011000000000001"
1946 "111010100010101010001111111"
1947 },
1948 /* 38*/ { UNICODE_MODE, 12, 2, -1, 2 << 8, "Kūrybiškumą", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 12 Example 1 same with explicit mask 01 (auto 10)",
1949 "11111110011010101111111"
1950 "10000000010100100000001"
1951 "10111110011100001111101"
1952 "10100000101001100000101"
1953 "10101110001101001110101"
1954 "10101110110111101110101"
1955 "10101110001010001110101"
1956 "00000000110101000000000"
1957 "00010101001010100000000"
1958 "01011110000101010101111"
1959 "01110101010101011001000"
1960 "01010001110011100000101"
1961 "10000100000010101110011"
1962 "00010111110011110111100"
1963 "00000000110000010101000"
1964 "00000000011000100000000"
1965 "11111110000000001110101"
1966 "00000010110000101110101"
1967 "11111010011100001110101"
1968 "00001010101011100000101"
1969 "11101010010111001111101"
1970 "11101010111110000000001"
1971 "11101010101010001111111"
1972 },
1973 /* 39*/ { UNICODE_MODE, 13, 2, -1, -1, "บาร๋แค่ด", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 13 Example 1 **NOT SAME** example uses Region One",
1974 "11111110011010101111111"
1975 "10000000010101100000001"
1976 "10111110001010001111101"
1977 "10100000111000100000101"
1978 "10101110001100001110101"
1979 "10101110110101101110101"
1980 "10101110001010001110101"
1981 "00000000110101000000000"
1982 "00010101001010100000000"
1983 "01011101111101010100111"
1984 "11000010011100111100100"
1985 "01101101101010101111111"
1986 "11010111111110101001111"
1987 "01110101000110110001110"
1988 "00000000100010010101000"
1989 "00000000000001100000000"
1990 "11111110000100001110101"
1991 "00000010101111101110101"
1992 "11111010001011001110101"
1993 "00001010101101100000101"
1994 "11101010010010001111101"
1995 "11101010110101000000001"
1996 "11101010101010001111111"
1997 },
1998 /* 40*/ { UNICODE_MODE, 15, 2, -1, -1, "uzņēmums", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 15 Example 1 same",
1999 "11111110011010101111111"
2000 "10000000010101100000001"
2001 "10111110001010001111101"
2002 "10100000111010100000101"
2003 "10101110001100001110101"
2004 "10101110110101101110101"
2005 "10101110001010001110101"
2006 "00000000110101000000000"
2007 "00010101001010100000000"
2008 "01011101001101010100000"
2009 "00011011100001111101110"
2010 "11011001111010111010010"
2011 "01000101000000110000010"
2012 "11000000000000101001101"
2013 "00000000100111010101000"
2014 "00000000011001100000000"
2015 "11111110011010001110101"
2016 "00000010101100101110101"
2017 "11111010011011001110101"
2018 "00001010100110100000101"
2019 "11101010000010001111101"
2020 "11101010110101000000001"
2021 "11101010101010001111111"
2022 },
2023 /* 41*/ { UNICODE_MODE, 16, 2, -1, -1, "ṁórṡáċ", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 16 Example 1 same with explicit mask 11 (auto 10)",
2024 "11111110011001001111111"
2025 "10000000000000000000001"
2026 "10111110011111101111101"
2027 "10100000001001000000101"
2028 "10101110000010001110101"
2029 "10101110011111001110101"
2030 "10101110101001101110101"
2031 "00000000100100100000000"
2032 "00010101011111101000000"
2033 "01001111100001001000011"
2034 "11011111001010111111110"
2035 "10011011010101010101000"
2036 "10110111010001001010010"
2037 "11111000110000111101001"
2038 "00000010111111010101000"
2039 "00000000101001100000000"
2040 "11111110100111101110101"
2041 "00000010011111001110101"
2042 "11111010001000001110101"
2043 "00001010001100000000101"
2044 "11101010101111001111101"
2045 "11101010001001000000001"
2046 "11101010000100001111111"
2047 },
2048 /* 42*/ { UNICODE_MODE, 17, -1, -1, 2 << 8, "Price: €13.50", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 17 Example 1 same with explicit mask 01 (auto 10)",
2049 "11111110011010101111111"
2050 "10000000010011100000001"
2051 "10111110000110001111101"
2052 "10100000100100100000101"
2053 "10101110001100001110101"
2054 "10101110101001101110101"
2055 "10101110000010001110101"
2056 "00000000110101000000000"
2057 "00010101011111100000000"
2058 "01111000000001010100010"
2059 "10010100011100111001100"
2060 "10010111000010001010110"
2061 "11000100111100100000110"
2062 "00010010111101100110110"
2063 "00000000101010010101000"
2064 "00000000000011100000000"
2065 "11111110001010001110101"
2066 "00000010100111101110101"
2067 "11111010001000001110101"
2068 "00001010111100100000101"
2069 "11101010011110001111101"
2070 "11101010111100000000001"
2071 "11101010101010001111111"
2072 },
2073 /* 43*/ { UNICODE_MODE, 18, -1, -1, -1, "Te słowa są głębokie", -1, 0, 25, 25, "AIM ITS/04-023:2022 ECI 18 Example 1 **NOT SAME** example uses Binary only, Zint uses Text mode also",
2074 "1111111001000000101111111"
2075 "1000000011100111000000001"
2076 "1011111010111110001111101"
2077 "1010000010100010100000101"
2078 "1010111010011000101110101"
2079 "1010111001000101001110101"
2080 "1010111000011110101110101"
2081 "0000000010000000100000000"
2082 "0001011000000001100000000"
2083 "1001101110111101000111101"
2084 "0110011010100011100111111"
2085 "0111010001010011110100100"
2086 "0100110000001101001011001"
2087 "0010010011101100101011111"
2088 "0100100110111101011010001"
2089 "0000111101101010001010001"
2090 "0000000010110111001101000"
2091 "0000000010111111100000000"
2092 "1111111011000000001110101"
2093 "0000001000000000001110101"
2094 "1111101010010010101110101"
2095 "0000101010000000100000101"
2096 "1110101000000001101111101"
2097 "1110101001010000100000001"
2098 "1110101011100000001111111"
2099 },
2100 /* 44*/ { UNICODE_MODE, 20, -1, -1, -1, "バーコード", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 20 Example 1 **NOT SAME** example uses 2-byte Region mode",
2101 "11111110011010101111111"
2102 "10000000010000100000001"
2103 "10111110001010001111101"
2104 "10100000110001100000101"
2105 "10101110001100001110101"
2106 "10101110110101101110101"
2107 "10101110001010001110101"
2108 "00000000110101000000000"
2109 "00010101001010100000000"
2110 "01011111110101010101011"
2111 "00010111001011010110100"
2112 "01100101000001111001101"
2113 "11011011010000101100000"
2114 "00011110011111011101111"
2115 "00000000101011010101000"
2116 "00000000011111100000000"
2117 "11111110011000001110101"
2118 "00000010101000101110101"
2119 "11111010010010001110101"
2120 "00001010100001100000101"
2121 "11101010010010001111101"
2122 "11101010101110000000001"
2123 "11101010101010001111111"
2124 },
2125 /* 45*/ { UNICODE_MODE, 20, -1, -1, -1, "東京都", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 20 Example 2 **NOT SAME** example uses 2-byte Region mode",
2126 "11111110111010001111111"
2127 "10000000110000000000001"
2128 "10111110100100101111101"
2129 "10100000110001000000101"
2130 "10101110001101001110101"
2131 "10101110110111001110101"
2132 "10101110000010001110101"
2133 "00000000010101000000000"
2134 "00010101111001110000000"
2135 "01110011110011001010011"
2136 "01101110110011001110101"
2137 "10010111101100111000001"
2138 "01111011101110001100010"
2139 "01010100011001011011011"
2140 "00000001101010110101000"
2141 "00000000010110000000000"
2142 "11111110000101001110101"
2143 "00000010010101101110101"
2144 "11111010001011001110101"
2145 "00001010000010100000101"
2146 "11101010111010101111101"
2147 "11101010010101100000001"
2148 "11101010001010101111111"
2149 },
2150 /* 46*/ { UNICODE_MODE, 21, -1, -1, -1, "Študentska št. 2198390", -1, 0, 25, 25, "AIM ITS/04-023:2022 ECI 21 Example 1 **NOT SAME** different encodation, example Binary only, Zint uses Numeric also",
2151 "1111111001000000101111111"
2152 "1000000011000010000000001"
2153 "1011111010111101001111101"
2154 "1010000010000101100000101"
2155 "1010111010011000101110101"
2156 "1010111000010010001110101"
2157 "1010111000100000101110101"
2158 "0000000010000000100000000"
2159 "0001011001101001100000000"
2160 "1110101110111110010100001"
2161 "1111010001010011011100011"
2162 "0011001101000110000000000"
2163 "0001011010101110011011100"
2164 "0001100100011011110100011"
2165 "0010001010110011100011000"
2166 "0010111001100000001110110"
2167 "0000000011010100001101000"
2168 "0000000010111111100000000"
2169 "1111111011110011001110101"
2170 "0000001001010110001110101"
2171 "1111101010110111101110101"
2172 "0000101010000000100000101"
2173 "1110101000101101101111101"
2174 "1110101001011010100000001"
2175 "1110101010000000001111111"
2176 },
2177 /* 47*/ { UNICODE_MODE, 22, 2, -1, -1, "Россия", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 22 Example 1 same",
2178 "11111110011010101111111"
2179 "10000000010001100000001"
2180 "10111110001010001111101"
2181 "10100000110011100000101"
2182 "10101110001100001110101"
2183 "10101110110101101110101"
2184 "10101110001010001110101"
2185 "00000000110101000000000"
2186 "00010101001010100000000"
2187 "01010011100101010100010"
2188 "11010000100111011101011"
2189 "01101001001010111101000"
2190 "10010110010001111011010"
2191 "11010000101001001110110"
2192 "00000000101010010101000"
2193 "00000000010101100000000"
2194 "11111110010010001110101"
2195 "00000010100101101110101"
2196 "11111010001010001110101"
2197 "00001010100100100000101"
2198 "11101010011010001111101"
2199 "11101010110101000000001"
2200 "11101010101010001111111"
2201 },
2202 /* 48*/ { UNICODE_MODE, 22, 2, -1, 4 << 8, "Монголулс", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 22 Example 1 same with explicit mask 11 (auto 01)",
2203 "11111110111101101111111"
2204 "10000000100011000000001"
2205 "10111110000000101111101"
2206 "10100000111110100000101"
2207 "10101110111110001110101"
2208 "10101110100111001110101"
2209 "10101110111001101110101"
2210 "00000000100111100000000"
2211 "00010101000111010000000"
2212 "00010011101000111000001"
2213 "11101101011010110000110"
2214 "00100110110000100110100"
2215 "00111010101011100101000"
2216 "10111001000010101001100"
2217 "00000001000001010101000"
2218 "00000000101111100000000"
2219 "11111110111100101110101"
2220 "00000010001000101110101"
2221 "11111010010010101110101"
2222 "00001010111110100000101"
2223 "11101010111110001111101"
2224 "11101010010010100000001"
2225 "11101010111010101111111"
2226 },
2227 /* 49*/ { UNICODE_MODE, 23, 2, -1, 4 << 8, "bœuf", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 23 Example 1 same with explicit mask 11 (auto 01)",
2228 "11111110111101101111111"
2229 "10000000100011000000001"
2230 "10111110000000101111101"
2231 "10100000111111100000101"
2232 "10101110111110001110101"
2233 "10101110100111001110101"
2234 "10101110111001101110101"
2235 "00000000100111100000000"
2236 "00010101000111010000000"
2237 "00011110000000111000110"
2238 "11010001010000100100101"
2239 "01010000111001110101100"
2240 "10000101100110111000111"
2241 "10010101101101000010101"
2242 "00000001010010010101000"
2243 "00000000110001100000000"
2244 "11111110100001101110101"
2245 "00000010001101101110101"
2246 "11111010001100101110101"
2247 "00001010101010100000101"
2248 "11101010101010001111101"
2249 "11101010011010100000001"
2250 "11101010111010101111111"
2251 },
2252 /* 50*/ { UNICODE_MODE, 24, -1, -1, -1, "جواز السفر", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 24 Example 1 same",
2253 "11111110011010101111111"
2254 "10000000010011100000001"
2255 "10111110001110001111101"
2256 "10100000111101100000101"
2257 "10101110001100001110101"
2258 "10101110110101101110101"
2259 "10101110001010001110101"
2260 "00000000110101000000000"
2261 "00010101001010100000000"
2262 "01011111100101010101100"
2263 "11011100000110011100110"
2264 "00000100101000111100000"
2265 "11101101011101101011001"
2266 "10001111001010111010010"
2267 "00000000101011010101000"
2268 "00000000001110100000000"
2269 "11111110000011001110101"
2270 "00000010101100101110101"
2271 "11111010010110001110101"
2272 "00001010100010100000101"
2273 "11101010011101001111101"
2274 "11101010111011000000001"
2275 "11101010101010001111111"
2276 },
2277 /* 51*/ { UNICODE_MODE, 24, 2, -1, 4 << 8, "المنشأ: المملكة العربية السعودية", -1, 0, 29, 29, "AIM ITS/04-023:2022 ECI 24 Example 2 **NOT SAME** example corrupt??",
2278 "11111110111100101100001111111"
2279 "10000000000110001000100000001"
2280 "10111110001001001000101111101"
2281 "10100000101110010100000000101"
2282 "10101110011100000000101110101"
2283 "10101110100000110111001110101"
2284 "10101110110100010001101110101"
2285 "00000000110101010111000000000"
2286 "00011000000111100011110000000"
2287 "11101001100100010100111001011"
2288 "10010100011100101100010100000"
2289 "10111010010101011001101010010"
2290 "11001010111100100101100111010"
2291 "11100110010001000001001010100"
2292 "11111111111111101011011111101"
2293 "00000000000000111110110111000"
2294 "00101111100100110110010100000"
2295 "11110110100010101001111111011"
2296 "01110101111110101010111010001"
2297 "00010110101110110101000111100"
2298 "00000001101000100010000011000"
2299 "00000000010110111010100000000"
2300 "11111110100110110010101110101"
2301 "00000010000110110010101110101"
2302 "11111010100110110010001110101"
2303 "00001010001010110001100000101"
2304 "11101010111110101011001111101"
2305 "11101010111110110010000000001"
2306 "11101010011000111111101111111"
2307 },
2308 /* 52*/ { UNICODE_MODE, 25, 2, -1, -1, "条码", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 25 Example 1 same",
2309 "11111110011010101111111"
2310 "10000000010001100000001"
2311 "10111110001010001111101"
2312 "10100000111100100000101"
2313 "10101110001110001110101"
2314 "10101110110101101110101"
2315 "10101110001111001110101"
2316 "00000000111111000000000"
2317 "00010101001010100000000"
2318 "01011100100101010100101"
2319 "01001100010110101101010"
2320 "01000010110100011111110"
2321 "10101011110111101010101"
2322 "10011011010101010011010"
2323 "00000000101010010101000"
2324 "00000000010110100000000"
2325 "11111110010010001110101"
2326 "00000010100101101110101"
2327 "11111010001011001110101"
2328 "00001010111101100000101"
2329 "11101010011010001111101"
2330 "11101010110101000000001"
2331 "11101010101010001111111"
2332 },
2333 /* 53*/ { UNICODE_MODE, 25, 2, -1, 3 << 8, "バーコード", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 25 Example 2 same with explicit mask 10 (auto 01)",
2334 "11111110011001001111111"
2335 "10000000000001000000001"
2336 "10111110011011101111101"
2337 "10100000000000000000101"
2338 "10101110000010001110101"
2339 "10101110011111001110101"
2340 "10101110101001101110101"
2341 "00000000100100100000000"
2342 "00010101011111101000000"
2343 "01000011000001001000001"
2344 "01000100001010100101101"
2345 "00101011110000010011100"
2346 "11001101110000101000010"
2347 "10100011101000011101100"
2348 "00000010101111010101000"
2349 "00000000110100100000000"
2350 "11111110101100101110101"
2351 "00000010000001001110101"
2352 "11111010001011001110101"
2353 "00001010010001000000101"
2354 "11101010100011001111101"
2355 "11101010001111000000001"
2356 "11101010000100001111111"
2357 },
2358 /* 54*/ { UNICODE_MODE, 25, 2, -1, -1, "바코드", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 25 Example 3 same",
2359 "11111110111101101111111"
2360 "10000000100011000000001"
2361 "10111110000000101111101"
2362 "10100000110001100000101"
2363 "10101110111110001110101"
2364 "10101110100111001110101"
2365 "10101110111001101110101"
2366 "00000000100111100000000"
2367 "00010101000111010000000"
2368 "00011100110000111001001"
2369 "10010001101101100001010"
2370 "00000110011010011110010"
2371 "11010011101001010001011"
2372 "01110110011101000101111"
2373 "00000001010010010101000"
2374 "00000000110010100000000"
2375 "11111110101100101110101"
2376 "00000010011101101110101"
2377 "11111010001101101110101"
2378 "00001010100001100000101"
2379 "11101010110010001111101"
2380 "11101010011010100000001"
2381 "11101010111010101111111"
2382 },
2383 /* 55*/ { UNICODE_MODE, 26, 2, -1, -1, "条码", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 26 Example 1 **NOT SAME** example uses 2-byte Region mode",
2384 "11111110111101101111111"
2385 "10000000100011000000001"
2386 "10111110000000101111101"
2387 "10100000110010100000101"
2388 "10101110111110001110101"
2389 "10101110100111001110101"
2390 "10101110111001101110101"
2391 "00000000100111100000000"
2392 "00010101000111010000000"
2393 "00011100100000111000100"
2394 "11010111111100101010011"
2395 "00100101110001101011100"
2396 "10110011001100111001110"
2397 "11110111101001011011011"
2398 "00000001010010010101000"
2399 "00000000110010100000000"
2400 "11111110100001101110101"
2401 "00000010011101101110101"
2402 "11111010001100101110101"
2403 "00001010100010100000101"
2404 "11101010100010001111101"
2405 "11101010011010100000001"
2406 "11101010111010101111111"
2407 },
2408 /* 56*/ { UNICODE_MODE, 26, 2, -1, 4 << 8, "バーコード", -1, 0, 25, 25, "AIM ITS/04-023:2022 ECI 26 Example 2 same with explicit mask 11 (auto 01)",
2409 "1111111001110110001111111"
2410 "1000000011011011100000001"
2411 "1011111010000100101111101"
2412 "1010000001001001000000101"
2413 "1010111011111000101110101"
2414 "1010111011101011101110101"
2415 "1010111011010000001110101"
2416 "0000000010011100000000000"
2417 "0001011001101111101000000"
2418 "1001110101011100000000000"
2419 "0001111101100000011010101"
2420 "0111100110000100111000011"
2421 "1101001110100111100011110"
2422 "1010011101010100011101110"
2423 "0101000110011010011101100"
2424 "0000110010101001100100011"
2425 "0000001011001010001101000"
2426 "0000000001110110100000000"
2427 "1111111000110101101110101"
2428 "0000001011000010101110101"
2429 "1111101011100011101110101"
2430 "0000101001101001000000101"
2431 "1110101010100110101111101"
2432 "1110101011110011100000001"
2433 "1110101001010110001111111"
2434 },
2435 /* 57*/ { UNICODE_MODE, 26, 2, -1, -1, "바코드", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 26 Example 3 same",
2436 "11111110111101101111111"
2437 "10000000100011000000001"
2438 "10111110000000101111101"
2439 "10100000110010100000101"
2440 "10101110111110001110101"
2441 "10101110100111001110101"
2442 "10101110111001101110101"
2443 "00000000100111100000000"
2444 "00010101000111010000000"
2445 "00010011100000111000010"
2446 "01000110110001000011011"
2447 "00111000100000111100001"
2448 "11010011001010000011111"
2449 "11001010111110101001011"
2450 "00000001011001010101000"
2451 "00000000100001100000000"
2452 "11111110111010101110101"
2453 "00000010010100101110101"
2454 "11111010010100101110101"
2455 "00001010101111100000101"
2456 "11101010101101001111101"
2457 "11101010011010100000001"
2458 "11101010111010101111111"
2459 },
2460 /* 58*/ { UNICODE_MODE, 27, 2, -1, 3 << 8, "sn:7QPB4MN", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 27 Example 1 same with explicit mask 10 (auto 11)",
2461 "11111110011001001111111"
2462 "10000000000000000000001"
2463 "10111110011111101111101"
2464 "10100000000010000000101"
2465 "10101110000000001110101"
2466 "10101110011111001110101"
2467 "10101110101111101110101"
2468 "00000000111111100000000"
2469 "00010101011111101000000"
2470 "01001010110001001000011"
2471 "11100001011011011100101"
2472 "11001100010011101001101"
2473 "00101100011010000010001"
2474 "01011110000110001100110"
2475 "00000010101101010101000"
2476 "00000000110110100000000"
2477 "11111110110101101110101"
2478 "00000010000000001110101"
2479 "11111010010001001110101"
2480 "00001010000001000000101"
2481 "11101010101111001111101"
2482 "11101010001001000000001"
2483 "11101010000100001111111"
2484 },
2485 /* 59*/ { UNICODE_MODE, 28, 2, -1, -1, "條碼", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 28 Example 1 same",
2486 "11111110011010101111111"
2487 "10000000010001100000001"
2488 "10111110001010001111101"
2489 "10100000111001100000101"
2490 "10101110001100001110101"
2491 "10101110110101101110101"
2492 "10101110001010001110101"
2493 "00000000110101000000000"
2494 "00010101001010100000000"
2495 "01010001111101010100010"
2496 "01011000111101101111111"
2497 "00010010000000001010101"
2498 "10101001011010101010101"
2499 "01100111010101011001010"
2500 "00000000101010010101000"
2501 "00000000010111100000000"
2502 "11111110011010001110101"
2503 "00000010100101101110101"
2504 "11111010001010001110101"
2505 "00001010111011100000101"
2506 "11101010011010001111101"
2507 "11101010110101000000001"
2508 "11101010101010001111111"
2509 },
2510 /* 60*/ { UNICODE_MODE, 29, 2, -1, -1, "条码", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 29 Example 1 same",
2511 "11111110011010101111111"
2512 "10000000010001100000001"
2513 "10111110001010001111101"
2514 "10100000111000100000101"
2515 "10101110000010001110101"
2516 "10101110110101101110101"
2517 "10101110001111001110101"
2518 "00000000111100000000000"
2519 "00010101001010100000000"
2520 "01001101100101010100100"
2521 "11000011111001010101010"
2522 "11001010110100101101110"
2523 "10101000001100101010100"
2524 "11011011010101000101111"
2525 "00000000101010010101000"
2526 "00000000010111100000000"
2527 "11111110011001001110101"
2528 "00000010100101101110101"
2529 "11111010001011001110101"
2530 "00001010110100100000101"
2531 "11101010001010001111101"
2532 "11101010110101000000001"
2533 "11101010101010001111111"
2534 },
2535 /* 61*/ { UNICODE_MODE, 29, 2, -1, -1, "北京", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 29 Example 2 same",
2536 "11111110011010101111111"
2537 "10000000010001100000001"
2538 "10111110001010001111101"
2539 "10100000111000100000101"
2540 "10101110000010001110101"
2541 "10101110110101101110101"
2542 "10101110001010001110101"
2543 "00000000110011000000000"
2544 "00010101001010100000000"
2545 "01001001111101010101000"
2546 "01101101100001010101011"
2547 "00011010110101110011010"
2548 "10101010111001101010100"
2549 "00010101010101010101001"
2550 "00000000101010010101000"
2551 "00000000010111100000000"
2552 "11111110011101001110101"
2553 "00000010100101101110101"
2554 "11111010001010001110101"
2555 "00001010100011100000101"
2556 "11101010010010001111101"
2557 "11101010110101000000001"
2558 "11101010101010001111111"
2559 },
2560 /* 62*/ { UNICODE_MODE, 30, 2, -1, -1, "바코드", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 30 Example 1 **NOT SAME** example uses Region One mode",
2561 "11111110011010101111111"
2562 "10000000010001100000001"
2563 "10111110001010001111101"
2564 "10100000111011100000101"
2565 "10101110001100001110101"
2566 "10101110110101101110101"
2567 "10101110001010001110101"
2568 "00000000110101000000000"
2569 "00010101001010100000000"
2570 "01010011111101010100110"
2571 "01001111011001100100100"
2572 "11011100011000100010101"
2573 "11111111001110000001010"
2574 "01111101000001011100010"
2575 "00000000101010010101000"
2576 "00000000010101100000000"
2577 "11111110001111001110101"
2578 "00000010100101101110101"
2579 "11111010001011001110101"
2580 "00001010100001100000101"
2581 "11101010010010001111101"
2582 "11101010110101000000001"
2583 "11101010101010001111111"
2584 },
2585 /* 63*/ { UNICODE_MODE, 30, 2, -1, ZINT_FULL_MULTIBYTE | (4 << 8), "바코드", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 30 Example 1 same with FULL_MULTIBYTE and explicit mask 11 (auto 01)",
2586 "11111110111101101111111"
2587 "10000000100011000000001"
2588 "10111110000000101111101"
2589 "10100000110110100000101"
2590 "10101110110000001110101"
2591 "10101110100111001110101"
2592 "10101110111000101110101"
2593 "00000000111111100000000"
2594 "00010101000111010000000"
2595 "00010110100000111001110"
2596 "10000101011111100110110"
2597 "11100000110001000100111"
2598 "10111011100001111000111"
2599 "11010111101101010101000"
2600 "00000001010010010101000"
2601 "00000000110011100000000"
2602 "11111110100101101110101"
2603 "00000010011101101110101"
2604 "11111010001100101110101"
2605 "00001010110010100000101"
2606 "11101010100010001111101"
2607 "11101010011010100000001"
2608 "11101010111010101111111"
2609 },
2610 /* 64*/ { UNICODE_MODE, 30, 2, -1, -1, "서울", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 30 Example 2 **NOT SAME** example uses Region One mode",
2611 "11111110011010101111111"
2612 "10000000010001100000001"
2613 "10111110001010001111101"
2614 "10100000111011100000101"
2615 "10101110001100001110101"
2616 "10101110110101101110101"
2617 "10101110001010001110101"
2618 "00000000110101000000000"
2619 "00010101001010100000000"
2620 "01010001111101010100100"
2621 "11110001000111000111110"
2622 "10111010101011100100011"
2623 "01001011010111101010100"
2624 "00111111010101000101101"
2625 "00000000101010010101000"
2626 "00000000010100100000000"
2627 "11111110010100001110101"
2628 "00000010100101101110101"
2629 "11111010001010001110101"
2630 "00001010101011100000101"
2631 "11101010000010001111101"
2632 "11101010110101000000001"
2633 "11101010101010001111111"
2634 },
2635 /* 65*/ { UNICODE_MODE, 30, 2, -1, ZINT_FULL_MULTIBYTE, "서울", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 30 Example 2 same with FULL_MULTIBYTE",
2636 "11111110011010101111111"
2637 "10000000010001100000001"
2638 "10111110001010001111101"
2639 "10100000111011100000101"
2640 "10101110000010001110101"
2641 "10101110110101101110101"
2642 "10101110001000001110101"
2643 "00000000110010000000000"
2644 "00010101001010100000000"
2645 "01011101111101010100111"
2646 "10101111100101010101111"
2647 "11000010110101111101010"
2648 "10101001001000101010101"
2649 "11111001010101000101000"
2650 "00000000101010010101000"
2651 "00000000010110100000000"
2652 "11111110001001001110101"
2653 "00000010100101101110101"
2654 "11111010001011001110101"
2655 "00001010111101100000101"
2656 "11101010011010001111101"
2657 "11101010110101000000001"
2658 "11101010101010001111111"
2659 },
2660 /* 66*/ { UNICODE_MODE, 31, 2, -1, 2 << 8, "条码", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 31 Example 1 same with explicit mask 01 (auto 11)",
2661 "11111110011010101111111"
2662 "10000000010001100000001"
2663 "10111110001010001111101"
2664 "10100000111010100000101"
2665 "10101110000010001110101"
2666 "10101110110101101110101"
2667 "10101110001111001110101"
2668 "00000000111100000000000"
2669 "00010101001010100000000"
2670 "01001101100101010100100"
2671 "11001100011101010101101"
2672 "00000010110101101011010"
2673 "10101001000001101010100"
2674 "01010111010101001011110"
2675 "00000000101010010101000"
2676 "00000000010111100000000"
2677 "11111110001100001110101"
2678 "00000010110101101110101"
2679 "11111010001011001110101"
2680 "00001010101101100000101"
2681 "11101010011010001111101"
2682 "11101010110101000000001"
2683 "11101010101010001111111"
2684 },
2685 /* 67*/ { UNICODE_MODE, 31, 2, -1, 4 << 8, "北京", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 31 Example 2 same with explicit mask 11 (auto 10)",
2686 "11111110111101101111111"
2687 "10000000100011000000001"
2688 "10111110000000101111101"
2689 "10100000110111100000101"
2690 "10101110110000001110101"
2691 "10101110100111001110101"
2692 "10101110111001101110101"
2693 "00000000100001100000000"
2694 "00010101000111010000000"
2695 "00000110110000111000101"
2696 "01010010110000111000010"
2697 "01000010001110100111100"
2698 "01000100110000111000110"
2699 "00001011101101001001010"
2700 "00000001010010010101000"
2701 "00000000110000100000000"
2702 "11111110110000101110101"
2703 "00000010001101101110101"
2704 "11111010001101101110101"
2705 "00001010100010100000101"
2706 "11101010111010001111101"
2707 "11101010011010100000001"
2708 "11101010111010101111111"
2709 },
2710 /* 68*/ { UNICODE_MODE, 31, 2, -1, -1, "條碼", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 31 Example 3 **NOT SAME** example uses 2-byte Region mode, Zint binary (same bit count)",
2711 "11111110011001001111111"
2712 "10000000000000000000001"
2713 "10111110011111101111101"
2714 "10100000000110000000101"
2715 "10101110000010001110101"
2716 "10101110011111001110101"
2717 "10101110101001101110101"
2718 "00000000100100100000000"
2719 "00010101011111101000000"
2720 "01001101101001001000010"
2721 "10011010011001000001111"
2722 "01010010111001010010011"
2723 "01101000101111001001000"
2724 "00100100100100101100100"
2725 "00000010111111010101000"
2726 "00000000101011100000000"
2727 "11111110110011101110101"
2728 "00000010001111001110101"
2729 "11111010001000001110101"
2730 "00001010010101000000101"
2731 "11101010101111001111101"
2732 "11101010001001000000001"
2733 "11101010000100001111111"
2734 },
2735 /* 69*/ { UNICODE_MODE, 32, 2, -1, 2 << 8, "条码", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 32 Example 1 same with explicit mask 01 (auto 10)",
2736 "11111110011010101111111"
2737 "10000000011101100000001"
2738 "10111110001010001111101"
2739 "10100000110101100000101"
2740 "10101110000010001110101"
2741 "10101110110101101110101"
2742 "10101110001111001110101"
2743 "00000000111100000000000"
2744 "00010101001010100000000"
2745 "01001101100101010100100"
2746 "11001100001101010101110"
2747 "10000010110100001100110"
2748 "10101010111000101010100"
2749 "10110111010101010101110"
2750 "00000000101010010101000"
2751 "00000000010101100000000"
2752 "11111110000100001110101"
2753 "00000010100101101110101"
2754 "11111010001010001110101"
2755 "00001010100110100000101"
2756 "11101010010010001111101"
2757 "11101010110101000000001"
2758 "11101010101010001111111"
2759 },
2760 /* 70*/ { UNICODE_MODE, 32, 2, -1, 4 << 8, "北京", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 32 Example 2 same with explicit mask 11 (auto 01)",
2761 "11111110111101101111111"
2762 "10000000101111000000001"
2763 "10111110000000101111101"
2764 "10100000111000100000101"
2765 "10101110110000001110101"
2766 "10101110100111001110101"
2767 "10101110111001101110101"
2768 "00000000100001100000000"
2769 "00010101000111010000000"
2770 "00000110110000111000101"
2771 "01010010100000111000001"
2772 "11000010001111000000000"
2773 "01000111001001111000110"
2774 "11101011101101010111010"
2775 "00000001010010010101000"
2776 "00000000110010100000000"
2777 "11111110111000101110101"
2778 "00000010011101101110101"
2779 "11111010001100101110101"
2780 "00001010101001100000101"
2781 "11101010110010001111101"
2782 "11101010011010100000001"
2783 "11101010111010101111111"
2784 },
2785 /* 71*/ { UNICODE_MODE, 32, 2, -1, -1, "條碼", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 32 Example 3 **NOT SAME** example uses 2-byte Region mode, Zint binary (same bit count)",
2786 "11111110011001001111111"
2787 "10000000001100000000001"
2788 "10111110011111101111101"
2789 "10100000001001000000101"
2790 "10101110000010001110101"
2791 "10101110011111001110101"
2792 "10101110101001101110101"
2793 "00000000100100100000000"
2794 "00010101011111101000000"
2795 "01001101101001001000010"
2796 "10011010001001000001100"
2797 "11010010111000110101111"
2798 "01101011010110001001000"
2799 "11000100100100110010100"
2800 "00000010111111010101000"
2801 "00000000101001100000000"
2802 "11111110111011101110101"
2803 "00000010011111001110101"
2804 "11111010001001001110101"
2805 "00001010011110000000101"
2806 "11101010100111001111101"
2807 "11101010001001000000001"
2808 "11101010000100001111111"
2809 },
2810 /* 72*/ { UNICODE_MODE, 32, 2, -1, 2 << 8, "པེ་ཅིང།", -1, 0, 25, 25, "AIM ITS/04-023:2022 ECI 32 Example 4 same with explicit mask 01 (auto 10)",
2811 "1111111011101011001111111"
2812 "1000000001011100000000001"
2813 "1011111011000010001111101"
2814 "1010000001100101000000101"
2815 "1010111000010001101110101"
2816 "1010111010010111001110101"
2817 "1010111000111110101110101"
2818 "0000000011010101100000000"
2819 "0001011000101001011000000"
2820 "1100000111101101110000000"
2821 "1011110000011001100100100"
2822 "0001110001010101010100111"
2823 "1001111001001100100011111"
2824 "0011111011011001101101011"
2825 "0101011010101010101111010"
2826 "0101011000100010111101111"
2827 "0000001101110001001101000"
2828 "0000000011111011100000000"
2829 "1111111010101100001110101"
2830 "0000001000111010101110101"
2831 "1111101011101010001110101"
2832 "0000101001010101000000101"
2833 "1110101000101101101111101"
2834 "1110101001100100000000001"
2835 "1110101001001010101111111"
2836 },
2837 /* 73*/ { UNICODE_MODE, 32, 2, -1, -1, "バーコード", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 32 Example 5 same",
2838 "11111110111101101111111"
2839 "10000000101100000000001"
2840 "10111110000000101111101"
2841 "10100000111000100000101"
2842 "10101110110100001110101"
2843 "10101110100111001110101"
2844 "10101110111000101110101"
2845 "00000000110001100000000"
2846 "00010101000111010000000"
2847 "00001011101000111000000"
2848 "11101100001110000111010"
2849 "11001011011101101010001"
2850 "00000010100010001111101"
2851 "01011101101100101000101"
2852 "00000001011111010101000"
2853 "00000000110010100000000"
2854 "11111110101010101110101"
2855 "00000010011100101110101"
2856 "11111010010010101110101"
2857 "00001010100100100000101"
2858 "11101010110101001111101"
2859 "11101010000101100000001"
2860 "11101010111010101111111"
2861 },
2862 /* 74*/ { UNICODE_MODE, 32, 2, -1, -1, "바코드", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 32 Example 6 same",
2863 "11111110111101101111111"
2864 "10000000101111000000001"
2865 "10111110000000101111101"
2866 "10100000111000100000101"
2867 "10101110110110001110101"
2868 "10101110100111001110101"
2869 "10101110111001101110101"
2870 "00000000100100100000000"
2871 "00010101000111010000000"
2872 "00011100101000111001111"
2873 "00101010111101000110111"
2874 "01101010111110011001101"
2875 "01010000101011001000111"
2876 "00101100110010111001111"
2877 "00000001010100010101000"
2878 "00000000111001100000000"
2879 "11111110100110101110101"
2880 "00000010001101101110101"
2881 "11111010001101101110101"
2882 "00001010110001100000101"
2883 "11101010111010001111101"
2884 "11101010011010100000001"
2885 "11101010111010101111111"
2886 },
2887 /* 75*/ { UNICODE_MODE, 33, 2, -1, 4 << 8, "条码", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 33 Example 1 same with explicit mask 11 (auto 10)",
2888 "11111110111101101111111"
2889 "10000000101111000000001"
2890 "10111110000000101111101"
2891 "10100000111001100000101"
2892 "10101110111100001110101"
2893 "10101110100111001110101"
2894 "10101110111101101110101"
2895 "00000000110101100000000"
2896 "00010101000111010000000"
2897 "00001111100000111001111"
2898 "10001100010100111100110"
2899 "10011000010001010001111"
2900 "01000111011101111000111"
2901 "00101101101101010011100"
2902 "00000001010010010101000"
2903 "00000000110001100000000"
2904 "11111110100110101110101"
2905 "00000010001101101110101"
2906 "11111010001100101110101"
2907 "00001010111000100000101"
2908 "11101010110010001111101"
2909 "11101010011010100000001"
2910 "11101010111010101111111"
2911 },
2912 /* 76*/ { UNICODE_MODE, 33, 2, -1, -1, "バーコード", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 33 Example 2 same",
2913 "11111110111101101111111"
2914 "10000000101101000000001"
2915 "10111110000000101111101"
2916 "10100000111001100000101"
2917 "10101110111110001110101"
2918 "10101110100111001110101"
2919 "10101110111001101110101"
2920 "00000000100111100000000"
2921 "00010101000111010000000"
2922 "00010000101000111001111"
2923 "10001110100101000000101"
2924 "11110010101101101100010"
2925 "01010001001000011110100"
2926 "10111010101110110111100"
2927 "00000001001110010101000"
2928 "00000000110111100000000"
2929 "11111110111010101110101"
2930 "00000010000101101110101"
2931 "11111010000001101110101"
2932 "00001010100010100000101"
2933 "11101010101000001111101"
2934 "11101010010011100000001"
2935 "11101010111010101111111"
2936 },
2937 /* 77*/ { UNICODE_MODE, 33, 2, -1, 2 << 8, "바코드", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 33 Example 3 same with explicit mask 01 (auto 11)",
2938 "11111110011010101111111"
2939 "10000000011101100000001"
2940 "10111110001010001111101"
2941 "10100000110100100000101"
2942 "10101110001100001110101"
2943 "10101110110101101110101"
2944 "10101110001010001110101"
2945 "00000000110101000000000"
2946 "00010101001010100000000"
2947 "01010011010101010100000"
2948 "11110010100101001000000"
2949 "10110000011001101011111"
2950 "01010010011011010011111"
2951 "00101000000101001000100"
2952 "00000000101010010101000"
2953 "00000000010101100000000"
2954 "11111110001101001110101"
2955 "00000010110101101110101"
2956 "11111010001010001110101"
2957 "00001010111011100000101"
2958 "11101010001010001111101"
2959 "11101010110101000000001"
2960 "11101010101010001111111"
2961 },
2962 /* 78*/ { UNICODE_MODE, 34, 2, -1, 4 << 8, "条码", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 34 Example 1 same with explicit mask 11 (auto 10)",
2963 "11111110111101101111111"
2964 "10000000101111000000001"
2965 "10111110000000101111101"
2966 "10100000111010100000101"
2967 "10101110111110001110101"
2968 "10101110100111001110101"
2969 "10101110111001101110101"
2970 "00000000100111100000000"
2971 "00010101000111010000000"
2972 "00010010011000111000111"
2973 "10010000001111000100011"
2974 "00101100011001110101100"
2975 "01100101010010111000111"
2976 "00101011101100111101010"
2977 "00000001001010010101000"
2978 "00000000110001100000000"
2979 "11111110101101101110101"
2980 "00000010011101101110101"
2981 "11111010011101101110101"
2982 "00001010101000100000101"
2983 "11101010111010001111101"
2984 "11101010011010100000001"
2985 "11101010111010101111111"
2986 },
2987 /* 79*/ { UNICODE_MODE, 34, 2, -1, 2 << 8, "バーコード", -1, 0, 25, 25, "AIM ITS/04-023:2022 ECI 34 Example 2 same with explicit mask 01 (auto 10)",
2988 "1111111011101011001111111"
2989 "1000000001010101000000001"
2990 "1011111010001110001111101"
2991 "1010000001100111000000101"
2992 "1010111000110110101110101"
2993 "1010111011000010001110101"
2994 "1010111000000000101110101"
2995 "0000000011010101100000000"
2996 "0001011001100110011000000"
2997 "0010011010000101010101010"
2998 "0010010010101010101010110"
2999 "0011001101010110010110111"
3000 "0110000010110001001010101"
3001 "0010000101010101010101111"
3002 "1000101010101010101110000"
3003 "0111010101100101100100110"
3004 "0000001101111010001101000"
3005 "0000000010100001100000000"
3006 "1111111011101011001110101"
3007 "0000001000000110101110101"
3008 "1111101011101010001110101"
3009 "0000101001010101000000101"
3010 "1110101000101010101111101"
3011 "1110101001110101000000001"
3012 "1110101000101010101111111"
3013 },
3014 /* 80*/ { UNICODE_MODE, 34, 2, -1, 4 << 8, "바코드", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 34 Example 3 same with explicit mask 11 (auto 01)",
3015 "11111110111101101111111"
3016 "10000000101111000000001"
3017 "10111110000010101111101"
3018 "10100000101010100000101"
3019 "10101110111111001110101"
3020 "10101110101110001110101"
3021 "10101110101001101110101"
3022 "00000000100111100000000"
3023 "00010101011011010000000"
3024 "00010110011000111000111"
3025 "10010011010011000010011"
3026 "11000010101111101110110"
3027 "11000101110101111000111"
3028 "00011111101110010110011"
3029 "00000001011101010101000"
3030 "00000000111010100000000"
3031 "11111110110011101110101"
3032 "00000010000111101110101"
3033 "11111010001100101110101"
3034 "00001010111111100000101"
3035 "11101010100010001111101"
3036 "11101010011010100000001"
3037 "11101010111010101111111"
3038 },
3039 /* 81*/ { UNICODE_MODE, 35, 2, -1, 2 << 8, "条码", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 35 Example 1 same with explicit mask 01 (auto 11)",
3040 "11111110011010101111111"
3041 "10000000011101100000001"
3042 "10111110001010001111101"
3043 "10100000110110100000101"
3044 "10101110001110001110101"
3045 "10101110110101101110101"
3046 "10101110001110001110101"
3047 "00000000100111000000000"
3048 "00010101001010100000000"
3049 "01000000101101010100010"
3050 "10100000111110101010000"
3051 "01110101101011000001100"
3052 "01000111010101010100100"
3053 "00111001010101010110000"
3054 "00000000101101010101000"
3055 "00000000001011100000000"
3056 "11111110010001001110101"
3057 "00000010100101101110101"
3058 "11111010001010001110101"
3059 "00001010110011100000101"
3060 "11101010000010001111101"
3061 "11101010110101000000001"
3062 "11101010101010001111111"
3063 },
3064 /* 82*/ { UNICODE_MODE, 35, 2, -1, -1, "バーコード", -1, 0, 25, 25, "AIM ITS/04-023:2022 ECI 35 Example 2 same",
3065 "1111111011101011001111111"
3066 "1000000001110101000000001"
3067 "1011111010100100001111101"
3068 "1010000001000110000000101"
3069 "1010111000110010101110101"
3070 "1010111011010100001110101"
3071 "1010111000011010101110101"
3072 "0000000011010101100000000"
3073 "0001011000101001011000000"
3074 "1100100000000110001001011"
3075 "0000011100101011001010101"
3076 "0010100001010101010101000"
3077 "0010001010101010101100001"
3078 "0010010101101111000110001"
3079 "0010010010110010101010111"
3080 "0010010101010101010010101"
3081 "0000001101001010001101000"
3082 "0000000011010101100000000"
3083 "1111111010101010001110101"
3084 "0000001000101001101110101"
3085 "1111101010100000001110101"
3086 "0000101001010101000000101"
3087 "1110101001100110101111101"
3088 "1110101000101100000000001"
3089 "1110101000001010101111111"
3090 },
3091 /* 83*/ { UNICODE_MODE, 35, 2, -1, 4 << 8, "바코드", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 35 Example 3 same with explicit mask 11 (auto 01)",
3092 "11111110111101101111111"
3093 "10000000101101000000001"
3094 "10111110010000101111101"
3095 "10100000111011100000101"
3096 "10101110111110001110101"
3097 "10101110100111001110101"
3098 "10101110111001101110101"
3099 "00000000100111100000000"
3100 "00010101000111010000000"
3101 "00010110011000111001101"
3102 "11001101000100100111100"
3103 "01110101101110001001100"
3104 "01001101111100010001011"
3105 "00111111010001000000011"
3106 "00000001010010010101000"
3107 "00000000110011100000000"
3108 "11111110100111101110101"
3109 "00000010011101101110101"
3110 "11111010000000101110101"
3111 "00001010111001100000101"
3112 "11101010110101001111101"
3113 "11101010011111100000001"
3114 "11101010111010101111111"
3115 },
3116 /* 84*/ { UNICODE_MODE, 170, 2, -1, -1, "sn:7QPB4MN", -1, 0, 23, 23, "AIM ITS/04-023:2022 ECI 170 Example 1 same",
3117 "11111110111100101111111"
3118 "10000000100111000000001"
3119 "10111110000000101111101"
3120 "10100000111000100000101"
3121 "10101110101100001110101"
3122 "10101110100111001110101"
3123 "10101110111100101110101"
3124 "00000000100101100000000"
3125 "00010101000111010000000"
3126 "00000001000000111000110"
3127 "01101000001101101011010"
3128 "10011010011110101000101"
3129 "10011110000111011110101"
3130 "11100101111011010011101"
3131 "00000001011010010101000"
3132 "00000000100100100000000"
3133 "11111110100101101110101"
3134 "00000010010100101110101"
3135 "11111010000011101110101"
3136 "00001010101010100000101"
3137 "11101010111101001111101"
3138 "11101010000110100000001"
3139 "11101010111010101111111"
3140 },
3141 /* 85*/ { DATA_MODE, 899, 2, -1, -1, "\000\001\002\133\134\135\375\376\377", 9, 0, 23, 23, "AIM ITS/04-023:2022 ECI 899 Example 1 same",
3142 "11111110011011101111111"
3143 "10000000010110100000001"
3144 "10111110010110001111101"
3145 "10100000110110100000101"
3146 "10101110011010001110101"
3147 "10101110110101101110101"
3148 "10101110001011001110101"
3149 "00000000100110000000000"
3150 "00010101001010100000000"
3151 "01010101010101010101110"
3152 "00100111001010101010010"
3153 "11110101000100110000110"
3154 "11100000101110011100001"
3155 "11011110100100001000001"
3156 "00000000110111010101000"
3157 "00000000001011100000000"
3158 "11111110010000001110101"
3159 "00000010111011101110101"
3160 "11111010010100001110101"
3161 "00001010100100100000101"
3162 "11101010000101001111101"
3163 "11101010100010000000001"
3164 "11101010101010001111111"
3165 },
3166 };
3167 const int data_size = ARRAY_SIZE(data);
3168 int i, length, ret;
3169 struct zint_symbol *symbol = NULL;
3170
3171 char escaped[8192];
3172 char cmp_buf[32768];
3173 char cmp_msg[1024];
3174
3175 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */
3176
3177 testStartSymbol("test_encode", &symbol);
3178
3179 for (i = 0; i < data_size; i++) {
3180
3181 if (testContinue(p_ctx, i)) continue;
3182
3183 symbol = ZBarcode_Create();
3184 assert_nonnull(symbol, "Symbol not created\n");
3185
3186 length = testUtilSetSymbol(symbol, BARCODE_HANXIN, data[i].input_mode, data[i].eci,
3187 data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/,
3188 data[i].data, data[i].length, debug);
3189
3190 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length);
3191 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt);
3192
3193 if (p_ctx->generate) {
3194 printf(" /*%3d*/ { %s, %d, %d, %d, %s, \"%s\", %d, %s, %d, %d, \"%s\",\n",
3195 i, testUtilInputModeName(data[i].input_mode), data[i].eci,
3196 data[i].option_1, data[i].option_2, testUtilOption3Name(BARCODE_HANXIN, data[i].option_3),
3197 testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), data[i].length,
3198 testUtilErrorName(data[i].ret), symbol->rows, symbol->width, data[i].comment);
3199 testUtilModulesPrint(symbol, " ", "\n");
3200 printf(" },\n");
3201 } else {
3202 if (ret < ZINT_ERROR) {
3203 int width, row;
3204 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);
3205 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);
3206
3207 ret = testUtilModulesCmp(symbol, data[i].expected, &width, &row);
3208 assert_zero(ret, "i:%d testUtilModulesCmp ret %d != 0 width %d row %d (%s)\n", i, ret, width, row, data[i].data);
3209
3210 if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) {
3211 int cmp_len, ret_len;
3212 char modules_dump[49152];
3213 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i);
3214 ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len);
3215 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret);
3216
3217 ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, data[i].data, length, NULL /*primary*/, escaped, &ret_len);
3218 assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n",
3219 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped);
3220 }
3221 }
3222 }
3223
3224 ZBarcode_Delete(symbol);
3225 }
3226
3227 testFinish();
3228 }
3229
3230 static void test_encode_segs(const testCtx *const p_ctx) {
3231 int debug = p_ctx->debug;
3232
3233 struct item {
3234 int input_mode;
3235 int option_1;
3236 int option_2;
3237 int option_3;
3238 struct zint_seg segs[3];
3239 int ret;
3240
3241 int expected_rows;
3242 int expected_width;
3243 char *comment;
3244 char *expected;
3245 };
3246 static const struct item data[] = {
3247 /* 0*/ { UNICODE_MODE, -1, -1, -1, { { TU("¶"), -1, 0 }, { TU("Ж"), -1, 7 }, { TU(""), 0, 0 } }, 0, 23, 23, "Standard example",
3248 "11111110101100101111111"
3249 "10000000010110000000001"
3250 "10111110110000001111101"
3251 "10100000110101000000101"
3252 "10101110001010101110101"
3253 "10101110111110101110101"
3254 "10101110001100001110101"
3255 "00000000101110100000000"
3256 "00010101111111001000000"
3257 "11111101010110101111001"
3258 "00111010100000101010110"
3259 "10000101011001001100101"
3260 "11001000111111101010100"
3261 "00010100101000101011001"
3262 "00000010011010110101000"
3263 "00000000101011100000000"
3264 "11111110000000001110101"
3265 "00000010110111101110101"
3266 "11111010110101001110101"
3267 "00001010001000100000101"
3268 "11101010000110101111101"
3269 "11101010010110000000001"
3270 "11101010101010101111111"
3271 },
3272 /* 1*/ { UNICODE_MODE, -1, -1, -1, { { TU("¶"), -1, 0 }, { TU("Ж"), -1, 0 }, { TU(""), 0, 0 } }, ZINT_WARN_USES_ECI, 23, 23, "Standard example auto-ECI",
3273 "11111110101100101111111"
3274 "10000000010110000000001"
3275 "10111110110000001111101"
3276 "10100000110101000000101"
3277 "10101110001010101110101"
3278 "10101110111110101110101"
3279 "10101110001100001110101"
3280 "00000000101110100000000"
3281 "00010101111111001000000"
3282 "11111101010110101111001"
3283 "00111010100000101010110"
3284 "10000101011001001100101"
3285 "11001000111111101010100"
3286 "00010100101000101011001"
3287 "00000010011010110101000"
3288 "00000000101011100000000"
3289 "11111110000000001110101"
3290 "00000010110111101110101"
3291 "11111010110101001110101"
3292 "00001010001000100000101"
3293 "11101010000110101111101"
3294 "11101010010110000000001"
3295 "11101010101010101111111"
3296 },
3297 /* 2*/ { UNICODE_MODE, -1, -1, -1, { { TU("Ж"), -1, 7 }, { TU("¶"), -1, 0 }, { TU(""), 0, 0 } }, 0, 23, 23, "Standard example inverted",
3298 "11111110111010001111111"
3299 "10000000110110000000001"
3300 "10111110111000101111101"
3301 "10100000100010000000101"
3302 "10101110001100001110101"
3303 "10101110111010001110101"
3304 "10101110010010001110101"
3305 "00000000010101000000000"
3306 "00010101101011110000000"
3307 "00010100111110000010001"
3308 "11100000000010101011000"
3309 "10001001100101010100110"
3310 "10101001111000110001111"
3311 "00110100010101001111000"
3312 "00000001101010110101000"
3313 "00000000010110000000000"
3314 "11111110001101001110101"
3315 "00000010010101101110101"
3316 "11111010001011001110101"
3317 "00001010010110100000101"
3318 "11101010101010101111101"
3319 "11101010010101100000001"
3320 "11101010001010101111111"
3321 },
3322 /* 3*/ { UNICODE_MODE, -1, -1, -1, { { TU("Ж"), -1, 0 }, { TU("¶"), -1, 0 }, { TU(""), 0, 0 } }, ZINT_WARN_USES_ECI, 23, 23, "Standard example inverted auto-ECI",
3323 "11111110111010001111111"
3324 "10000000110110000000001"
3325 "10111110111000101111101"
3326 "10100000100010000000101"
3327 "10101110001100001110101"
3328 "10101110111010001110101"
3329 "10101110010010001110101"
3330 "00000000010101000000000"
3331 "00010101101011110000000"
3332 "00010100111110000010001"
3333 "11100000000010101011000"
3334 "10001001100101010100110"
3335 "10101001111000110001111"
3336 "00110100010101001111000"
3337 "00000001101010110101000"
3338 "00000000010110000000000"
3339 "11111110001101001110101"
3340 "00000010010101101110101"
3341 "11111010001011001110101"
3342 "00001010010110100000101"
3343 "11101010101010101111101"
3344 "11101010010101100000001"
3345 "11101010001010101111111"
3346 },
3347 /* 4*/ { UNICODE_MODE, -1, -1, 4 << 8, { { TU("product:Google Pixel 4a - 128 GB of Storage - Black;price:$439.97"), -1, 3 }, { TU("品名:Google 谷歌 Pixel 4a -128 GB的存储空间-黑色;零售价:¥3149.79"), -1, 29 }, { TU("Produkt:Google Pixel 4a - 128 GB Speicher - Schwarz;Preis:444,90 €"), -1, 17 } }, 0, 51, 51, "AIM ITS/04-023:2022 Annex A example **NOT SAME ** example corrupt???",
3348 "111111100111111110011011000110010101001011101111111"
3349 "100000000000000011100101000111110000010100100000001"
3350 "101111101110011011101101000011010010010001001111101"
3351 "101000001001111010100101100101010111101100100000101"
3352 "101011100001110010100101010100111100010110001110101"
3353 "101011101000000011001001010001100001000011001110101"
3354 "101011101001101011110101011110100011100100001110101"
3355 "000000000000000011011110101000100111010001100000000"
3356 "001000110010011010000001111010101101101100001000000"
3357 "001010111000010011111011010010001101111101001001011"
3358 "110010110000111010001010001111000001000110001001010"
3359 "111100100000011010101001100000101101010001011010101"
3360 "100010001001110010101001010001100011110011101001011"
3361 "111001111101010011011111111101000010110100000011101"
3362 "000100000100010010110111110000110100111011010011000"
3363 "011001011101001011100101110010101010011101110011011"
3364 "001100010000001011110101011000000010001111101010100"
3365 "101011100100010011111111111111111101011000010100101"
3366 "000111010000010000000000000000000110001101111011100"
3367 "100001011001110000011011010111000101001111101101010"
3368 "101000111100100101110100001001010111010000010010000"
3369 "110101000011101100100010001100110110011100110010000"
3370 "111101100011001000011101101110010101001010101010110"
3371 "110100100010010011011011111011000100011100000101010"
3372 "100011011101110000011101101001000100010010001110110"
3373 "111110010100001001110110000001000101011111011001011"
3374 "111101100101111110010000101001110111010011001110011"
3375 "111000001110111101100100010100100111100101101100110"
3376 "110000110011101100001111001100110101000010000110001"
3377 "101110001001011110101001110101100101110001001100001"
3378 "111101000101011001011111001101000111111010010001000"
3379 "110010011000111100011011001100010111101011110101001"
3380 "111100111101111111011101111110000111101100010100010"
3381 "110001011010011101111100110100100111001110011100001"
3382 "111111111111111110011011000100000111111111111111111"
3383 "000000000000000011001010100111010000000000000000001"
3384 "111010001110010010110011000010100110010010010111101"
3385 "001100111011101011011100110010100101011101010101101"
3386 "100010010001101010100111110101111101001001011101101"
3387 "001100001000111010111110011000000000000010000011001"
3388 "110101100010111010100010101001111010110011110100001"
3389 "111011101001011010111111101101011101000001010101101"
3390 "000000100011001011110010011110010010110000011000100"
3391 "000000001001101010101111000010000011000100000000000"
3392 "111111100101101011101001011000111110100111101110101"
3393 "000000100101100011010011110011000101101100101110101"
3394 "111110100110010010000111010110111001001101001110101"
3395 "000010101010110010011001111100010010001010100000101"
3396 "111010100110011010000010110001111100010001101111101"
3397 "111010101000000011001110011001100001110110000000001"
3398 "111010101011000011111111111111110101110100001111111"
3399 },
3400 /* 5*/ { DATA_MODE, -1, -1, -1, { { TU("\266"), 1, 0 }, { TU("\266"), 1, 7 }, { TU("\266"), 1, 0 } }, 0, 23, 23, "Standard example + extra seg, data mode",
3401 "11111110101100001111111"
3402 "10000000110110000000001"
3403 "10111110110101101111101"
3404 "10100000100101000000101"
3405 "10101110001010001110101"
3406 "10101110110001001110101"
3407 "10101110010100001110101"
3408 "00000000001110000000000"
3409 "00010101101001110000000"
3410 "10011101010001000011001"
3411 "00111100100000101010010"
3412 "11110101011000100100101"
3413 "11000000001101101010100"
3414 "00100110110011010010110"
3415 "00000001101010110101000"
3416 "00000000010111000000000"
3417 "11111110011110001110101"
3418 "00000010000110101110101"
3419 "11111010000110001110101"
3420 "00001010000100100000101"
3421 "11101010101100101111101"
3422 "11101010010101100000001"
3423 "11101010001010101111111"
3424 },
3425 /* 6*/ { UNICODE_MODE, -1, -1, -1, { { TU("éÿ"), -1, 0 }, { TU("กขฯ"), -1, 13 }, { TU("αβγώ"), -1, 0 } }, ZINT_WARN_USES_ECI, 23, 23, "Auto-ECI",
3426 "11111110001100001111111"
3427 "10000000110101100000001"
3428 "10111110001010101111101"
3429 "10100000110101100000101"
3430 "10101110001001101110101"
3431 "10101110110010001110101"
3432 "10101110001001001110101"
3433 "00000000000001100000000"
3434 "00010101001101011000000"
3435 "11001010101111101100110"
3436 "10101101010111000011011"
3437 "01010001010101010101010"
3438 "10010010101010001011000"
3439 "00011110010000110000101"
3440 "00000011001101010101000"
3441 "00000000101111000000000"
3442 "11111110001010001110101"
3443 "00000010010101101110101"
3444 "11111010101110001110101"
3445 "00001010111010100000101"
3446 "11101010111000001111101"
3447 "11101010111001100000001"
3448 "11101010001010001111111"
3449 },
3450 };
3451 const int data_size = ARRAY_SIZE(data);
3452 int i, j, seg_count, ret;
3453 struct zint_symbol *symbol = NULL;
3454
3455 char escaped[8192];
3456 char cmp_buf[32768];
3457 char cmp_msg[1024];
3458
3459 int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */
3460
3461 testStartSymbol("test_encode_segs", &symbol);
3462
3463 for (i = 0; i < data_size; i++) {
3464
3465 if (testContinue(p_ctx, i)) continue;
3466
3467 symbol = ZBarcode_Create();
3468 assert_nonnull(symbol, "Symbol not created\n");
3469
3470 testUtilSetSymbol(symbol, BARCODE_HANXIN, data[i].input_mode, -1 /*eci*/,
3471 data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/,
3472 NULL, 0, debug);
3473 for (j = 0, seg_count = 0; j < 3 && data[i].segs[j].length; j++, seg_count++);
3474
3475 ret = ZBarcode_Encode_Segs(symbol, data[i].segs, seg_count);
3476 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode_Segs ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt);
3477
3478 if (p_ctx->generate) {
3479 char escaped1[8192];
3480 char escaped2[8192];
3481 int length = data[i].segs[0].length == -1 ? (int) ustrlen(data[i].segs[0].source) : data[i].segs[0].length;
3482 int length1 = data[i].segs[1].length == -1 ? (int) ustrlen(data[i].segs[1].source) : data[i].segs[1].length;
3483 int length2 = data[i].segs[2].length == -1 ? (int) ustrlen(data[i].segs[2].source) : data[i].segs[2].length;
3484 printf(" /*%3d*/ { %s, %d, %d, %s, { { TU(\"%s\"), %d, %d }, { TU(\"%s\"), %d, %d }, { TU(\"%s\"), %d, %d } }, %s, %d, %d, \"%s\",\n",
3485 i, testUtilInputModeName(data[i].input_mode),
3486 data[i].option_1, data[i].option_2, testUtilOption3Name(BARCODE_HANXIN, data[i].option_3),
3487 testUtilEscape((const char *) data[i].segs[0].source, length, escaped, sizeof(escaped)), data[i].segs[0].length, data[i].segs[0].eci,
3488 testUtilEscape((const char *) data[i].segs[1].source, length1, escaped1, sizeof(escaped1)), data[i].segs[1].length, data[i].segs[1].eci,
3489 testUtilEscape((const char *) data[i].segs[2].source, length2, escaped2, sizeof(escaped2)), data[i].segs[2].length, data[i].segs[2].eci,
3490 testUtilErrorName(data[i].ret), symbol->rows, symbol->width, data[i].comment);
3491 testUtilModulesPrint(symbol, " ", "\n");
3492 printf(" },\n");
3493 } else {
3494 if (ret < ZINT_ERROR) {
3495 int width, row;
3496 assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows);
3497 assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width);
3498
3499 ret = testUtilModulesCmp(symbol, data[i].expected, &width, &row);
3500 assert_zero(ret, "i:%d testUtilModulesCmp ret %d != 0 width %d row %d\n", i, ret, width, row);
3501
3502 if (do_zxingcpp) {
3503 if ((symbol->input_mode & 0x07) == DATA_MODE) {
3504 if (debug & ZINT_DEBUG_TEST_PRINT) {
3505 printf("i:%d multiple segments in DATA_MODE not currently supported for ZXing-C++ testing (%s)\n",
3506 i, testUtilBarcodeName(symbol->symbology));
3507 }
3508 } else {
3509 int length = data[i].segs[0].length == -1 ? (int) ustrlen(data[i].segs[0].source) : data[i].segs[0].length;
3510 if (testUtilCanZXingCPP(i, symbol, (const char *) data[i].segs[0].source, length, debug)) {
3511 int cmp_len, ret_len;
3512 char modules_dump[49152];
3513 assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i);
3514 ret = testUtilZXingCPP(i, symbol, (const char *) data[i].segs[0].source, length,
3515 modules_dump, cmp_buf, sizeof(cmp_buf), &cmp_len);
3516 assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret);
3517
3518 ret = testUtilZXingCPPCmpSegs(symbol, cmp_msg, cmp_buf, cmp_len, data[i].segs, seg_count,
3519 NULL /*primary*/, escaped, &ret_len);
3520 assert_zero(ret, "i:%d %s testUtilZXingCPPCmpSegs %d != 0 %s\n actual: %.*s\nexpected: %.*s\n",
3521 i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, escaped);
3522 }
3523 }
3524 }
3525 }
3526 }
3527
3528 ZBarcode_Delete(symbol);
3529 }
3530
3531 testFinish();
3532 }
3533
3534 /* #300 Andre Maute */
3535 static void test_fuzz(const testCtx *const p_ctx) {
3536 int debug = p_ctx->debug;
3537
3538 struct item {
3539 int symbology;
3540 int input_mode;
3541 int eci;
3542 int option_1;
3543 int option_2;
3544 int option_3;
3545 char *data;
3546 int length;
3547 int ret;
3548 int bwipp_cmp;
3549 char *comment;
3550 };
3551 /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
3552 static const struct item data[] = {
3553 /* 0*/ { BARCODE_HANXIN, DATA_MODE, 35, -1, -1, ZINT_FULL_MULTIBYTE, "\215\215\215\215\215\350\215\215999\215\21500000\215\215\215\215\215\215\377O\000\000\036\000\000\000\000\357\376\026\377\377\377\377\241\241\232\232\232\232\232\232\235\032@\374:JGB \000\000@d\000\000\000\241\241\000\000\027\002\241\241\000\000\014\000\000\000\000\357\327\004\000\000\000\000\000\000\000\375\000\000\000\000\000\000\000\000\000\000\000\000\0000253]9R4R44,44,4404[255\350999\215\21599999\215\215\215\2150000\215\215\215\215\215\215\215\215\215]9444442<4444,4044%44vA\000\000\002\000'\000\000\215\377@\215\215\350\215\215\215\215\215\215\215\307\306\306n\215\215\000\000\001\000\000\203\000\000\000\000\000\000@\215\215\215[\2154315@]R0", 229, 0, 1, "" }, /* #300 (#16, adapted to HANXIN), Andre Maute */
3554 };
3555 const int data_size = ARRAY_SIZE(data);
3556 int i, length, ret;
3557 struct zint_symbol *symbol = NULL;
3558
3559 testStartSymbol("test_fuzz", &symbol);
3560
3561 for (i = 0; i < data_size; i++) {
3562
3563 if (testContinue(p_ctx, i)) continue;
3564
3565 symbol = ZBarcode_Create();
3566 assert_nonnull(symbol, "Symbol not created\n");
3567
3568 length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, data[i].eci, data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, data[i].data, data[i].length, debug);
3569
3570 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length);
3571 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt);
3572
3573 ZBarcode_Delete(symbol);
3574 }
3575
3576 testFinish();
3577 }
3578
3579 #include <time.h>
3580
3581 #define TEST_PERF_ITERATIONS 1000
3582
3583 /* Not a real test, just performance indicator */
3584 static void test_perf(const testCtx *const p_ctx) {
3585 int debug = p_ctx->debug;
3586
3587 struct item {
3588 int symbology;
3589 int input_mode;
3590 int option_1;
3591 int option_2;
3592 char *data;
3593 int ret;
3594
3595 int expected_rows;
3596 int expected_width;
3597 char *comment;
3598 };
3599 static const struct item data[] = {
3600 /* 0*/ { BARCODE_HANXIN, UNICODE_MODE, -1, -1,
3601 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。",
3602 ZINT_WARN_NONCOMPLIANT, 43, 43, "98 chars, Region One and Text" },
3603 /* 1*/ { BARCODE_HANXIN, UNICODE_MODE, -1, -1,
3604 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3605 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3606 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3607 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3608 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3609 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3610 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3611 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3612 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3613 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。",
3614 ZINT_WARN_NONCOMPLIANT, 121, 121, "980 chars, Region One and Text" },
3615 /* 2*/ { BARCODE_HANXIN, UNICODE_MODE, -1, -1,
3616 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3617 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3618 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3619 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3620 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3621 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3622 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3623 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3624 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3625 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3626 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3627 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3628 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3629 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。"
3630 "汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。汉信码(Chinese-Sensible Code)是一种能够有效表示汉字、图像等信息的二维条码。",
3631 ZINT_WARN_NONCOMPLIANT, 147, 147, "1470 chars, Region One and Text" },
3632 };
3633 const int data_size = ARRAY_SIZE(data);
3634 int i, length, ret;
3635
3636 clock_t start, total_encode = 0, total_buffer = 0, diff_encode, diff_buffer;
3637
3638 if (!(debug & ZINT_DEBUG_TEST_PERFORMANCE)) { /* -d 256 */
3639 return;
3640 }
3641
3642 for (i = 0; i < data_size; i++) {
3643 int j;
3644
3645 if (testContinue(p_ctx, i)) continue;
3646
3647 diff_encode = diff_buffer = 0;
3648
3649 for (j = 0; j < TEST_PERF_ITERATIONS; j++) {
3650 struct zint_symbol *symbol = ZBarcode_Create();
3651 assert_nonnull(symbol, "Symbol not created\n");
3652
3653 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, -1, debug);
3654
3655 start = clock();
3656 ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length);
3657 diff_encode += clock() - start;
3658 assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt);
3659
3660 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);
3661 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);
3662
3663 start = clock();
3664 ret = ZBarcode_Buffer(symbol, 0 /*rotate_angle*/);
3665 diff_buffer += clock() - start;
3666 assert_zero(ret, "i:%d ZBarcode_Buffer ret %d != 0 (%s)\n", i, ret, symbol->errtxt);
3667
3668 ZBarcode_Delete(symbol);
3669 }
3670
3671 printf("%s: diff_encode %gms, diff_buffer %gms\n", data[i].comment, diff_encode * 1000.0 / CLOCKS_PER_SEC, diff_buffer * 1000.0 / CLOCKS_PER_SEC);
3672
3673 total_encode += diff_encode;
3674 total_buffer += diff_buffer;
3675 }
3676 if (p_ctx->index != -1) {
3677 printf("totals: encode %gms, buffer %gms\n", total_encode * 1000.0 / CLOCKS_PER_SEC, total_buffer * 1000.0 / CLOCKS_PER_SEC);
3678 }
3679 }
3680
3681 int main(int argc, char *argv[]) {
3682
3683 testFunction funcs[] = { /* name, func */
3684 { "test_large", test_large },
3685 { "test_options", test_options },
3686 { "test_input", test_input },
3687 { "test_encode", test_encode },
3688 { "test_encode_segs", test_encode_segs },
3689 { "test_fuzz", test_fuzz },
3690 { "test_perf", test_perf },
3691 };
3692
3693 testRun(argc, argv, funcs, ARRAY_SIZE(funcs));
3694
3695 testReport();
3696
3697 return 0;
3698 }
3699
3700 /* vim: set ts=4 sw=4 et norl : */