| ... | @@ -4,7 +4,6 @@ const expect = @import("expect").expect; | ... | @@ -4,7 +4,6 @@ const expect = @import("expect").expect; |
| 4 | | 4 | |
| 5 | test { | 5 | test { |
| 6 | const grid = qrcode.encode(.latin1, .L, 1, "Ver1"); | 6 | const grid = qrcode.encode(.latin1, .L, 1, "Ver1"); |
| 7 | _ = &grid; | | |
| 8 | const allocator = std.testing.allocator; | 7 | const allocator = std.testing.allocator; |
| 9 | const blocks = try grid.asBlockString2(allocator); | 8 | const blocks = try grid.asBlockString2(allocator); |
| 10 | defer allocator.free(blocks); | 9 | defer allocator.free(blocks); |
| ... | @@ -22,10 +21,20 @@ test { | ... | @@ -22,10 +21,20 @@ test { |
| 22 | \\▀▀▀▀▀▀▀ ▀ ▀ ▀ ▀▀ ▀| | 21 | \\▀▀▀▀▀▀▀ ▀ ▀ ▀ ▀▀ ▀| |
| 23 | \\ | 22 | \\ |
| 24 | ); | 23 | ); |
| | 24 | const braille = try grid.asBrailleString(allocator); |
| | 25 | defer allocator.free(braille); |
| | 26 | try expect(braille).toEqualString( |
| | 27 | \\⡏⣭⡍⡇⢻⢽⡃⡏⣭⡍⡇| |
| | 28 | \\⠧⠭⠥⠇⣇⣆⠅⠧⠭⠥⠇| |
| | 29 | \\⠉⠷⡊⠥⢝⠉⡉⠍⣑⠌⡇| |
| | 30 | \\⡭⠭⠥⡍⣲⣲⢴⣳⠤⠐⠅| |
| | 31 | \\⡇⠿⠇⡇⣌⠋⡉⠍⡁⠤⠅| |
| | 32 | \\⠉⠉⠉⠁⠁⠁⠀⠁⠈⠁⠁| |
| | 33 | \\ |
| | 34 | ); |
| 25 | } | 35 | } |
| 26 | test { | 36 | test { |
| 27 | const grid = qrcode.encode(.latin1, .L, 2, "Version 2"); | 37 | const grid = qrcode.encode(.latin1, .L, 2, "Version 2"); |
| 28 | _ = &grid; | | |
| 29 | const allocator = std.testing.allocator; | 38 | const allocator = std.testing.allocator; |
| 30 | const blocks = try grid.asBlockString2(allocator); | 39 | const blocks = try grid.asBlockString2(allocator); |
| 31 | defer allocator.free(blocks); | 40 | defer allocator.free(blocks); |
| ... | @@ -45,10 +54,21 @@ test { | ... | @@ -45,10 +54,21 @@ test { |
| 45 | \\▀▀▀▀▀▀▀ ▀ ▀▀ ▀ ▀▀▀▀▀▀| | 54 | \\▀▀▀▀▀▀▀ ▀ ▀▀ ▀ ▀▀▀▀▀▀| |
| 46 | \\ | 55 | \\ |
| 47 | ); | 56 | ); |
| | 57 | const braille = try grid.asBrailleString(allocator); |
| | 58 | defer allocator.free(braille); |
| | 59 | try expect(braille).toEqualString( |
| | 60 | \\⡏⣭⡍⡇⣂⡃⡽⣻⠂⡏⣭⡍⡇| |
| | 61 | \\⠧⠭⠥⠇⢞⣔⠆⡌⡅⠧⠭⠥⠇| |
| | 62 | \\⡿⣉⣅⢭⡏⠎⣲⢶⠭⠊⠼⢼⡄| |
| | 63 | \\⡗⢰⡼⠍⡹⢥⠅⡙⣊⡎⠑⠭⠅| |
| | 64 | \\⡥⠥⠥⡍⠞⠎⣲⢦⡏⠍⡟⢻⡇| |
| | 65 | \\⡇⠿⠇⡇⡏⣥⠅⣩⢩⠏⡋⠇⡆| |
| | 66 | \\⠉⠉⠉⠁⠁⠉⠀⠀⠁⠈⠉⠉⠁| |
| | 67 | \\ |
| | 68 | ); |
| 48 | } | 69 | } |
| 49 | test { | 70 | test { |
| 50 | const grid = qrcode.encode(.latin1, .L, 3, "Version 3 QR Code"); | 71 | const grid = qrcode.encode(.latin1, .L, 3, "Version 3 QR Code"); |
| 51 | _ = &grid; | | |
| 52 | const allocator = std.testing.allocator; | 72 | const allocator = std.testing.allocator; |
| 53 | const blocks = try grid.asBlockString2(allocator); | 73 | const blocks = try grid.asBlockString2(allocator); |
| 54 | defer allocator.free(blocks); | 74 | defer allocator.free(blocks); |
| ... | @@ -70,10 +90,22 @@ test { | ... | @@ -70,10 +90,22 @@ test { |
| 70 | \\▀▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀ ▀ ▀ ▀ | | 90 | \\▀▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀ ▀ ▀ ▀ | |
| 71 | \\ | 91 | \\ |
| 72 | ); | 92 | ); |
| | 93 | const braille = try grid.asBrailleString(allocator); |
| | 94 | defer allocator.free(braille); |
| | 95 | try expect(braille).toEqualString( |
| | 96 | \\⡏⣭⡍⡇⣧⡐⡞⠗⢡⢯⡆⡏⣭⡍⡇| |
| | 97 | \\⠧⠭⠥⠇⠞⣇⢅⢄⡞⠜⠅⠧⠭⠥⠇| |
| | 98 | \\⡭⣴⠭⠕⣤⠅⡙⡂⢦⣺⣡⣮⢾⢟⠇| |
| | 99 | \\⢐⡙⡄⠍⢰⣮⢮⢭⡑⠕⠮⢜⢻⠐⡆| |
| | 100 | \\⠒⠜⣷⢍⠵⠇⡙⡂⢦⣺⡉⢺⢫⢌⠆| |
| | 101 | \\⡭⠭⠤⡍⡳⣬⢮⢭⡑⠕⡏⠍⡏⠜⡄| |
| | 102 | \\⡇⠿⠇⡇⣑⡁⡙⡂⢦⡪⡻⡩⡙⢲⡄| |
| | 103 | \\⠉⠉⠉⠁⠉⠉⠈⠉⠁⠁⠁⠀⠁⠈⠀| |
| | 104 | \\ |
| | 105 | ); |
| 73 | } | 106 | } |
| 74 | test { | 107 | test { |
| 75 | const grid = qrcode.encode(.latin1, .L, 4, "Version 4 QR Code, up to 50 char"); | 108 | const grid = qrcode.encode(.latin1, .L, 4, "Version 4 QR Code, up to 50 char"); |
| 76 | _ = &grid; | | |
| 77 | const allocator = std.testing.allocator; | 109 | const allocator = std.testing.allocator; |
| 78 | const blocks = try grid.asBlockString2(allocator); | 110 | const blocks = try grid.asBlockString2(allocator); |
| 79 | defer allocator.free(blocks); | 111 | defer allocator.free(blocks); |
| ... | @@ -97,10 +129,23 @@ test { | ... | @@ -97,10 +129,23 @@ test { |
| 97 | \\▀▀▀▀▀▀▀ ▀▀ ▀ ▀ ▀ ▀▀▀▀ ▀▀▀▀▀| | 129 | \\▀▀▀▀▀▀▀ ▀▀ ▀ ▀ ▀ ▀▀▀▀ ▀▀▀▀▀| |
| 98 | \\ | 130 | \\ |
| 99 | ); | 131 | ); |
| | 132 | const braille = try grid.asBrailleString(allocator); |
| | 133 | defer allocator.free(braille); |
| | 134 | try expect(braille).toEqualString( |
| | 135 | \\⡏⣭⡍⡇⢔⠡⣐⠡⣐⠡⡐⣝⡅⡏⣭⡍⡇| |
| | 136 | \\⠧⠭⠥⠇⡌⢖⠏⢖⠏⢖⢇⣝⡇⠧⠭⠥⠇| |
| | 137 | \\⡭⡗⣭⠭⣕⡴⣗⡴⣗⡴⣏⢄⢼⠧⡰⠷⡆| |
| | 138 | \\⠲⣞⠖⢍⡗⣟⠠⢛⠠⢛⢘⡄⡹⢧⠠⢢⡇| |
| | 139 | \\⠧⠝⣐⠕⣮⠷⣗⡴⣗⡴⣿⢎⣷⢃⢅⠢⠇| |
| | 140 | \\⢔⠑⠾⠅⠥⣛⠠⢛⠠⢛⠠⢁⢖⢗⢐⢼⡇| |
| | 141 | \\⡥⠤⠭⡍⡷⠶⣗⡴⣗⡴⣗⣴⡏⠍⣏⢬⠅| |
| | 142 | \\⡇⠿⠇⡇⡝⣙⠠⢛⠠⢛⠠⠓⡭⠩⠕⢔⠇| |
| | 143 | \\⠉⠉⠉⠁⠉⠀⠁⠀⠁⠀⠁⠈⠉⠁⠉⠉⠁| |
| | 144 | \\ |
| | 145 | ); |
| 100 | } | 146 | } |
| 101 | test { | 147 | test { |
| 102 | const grid = qrcode.encode(.latin1, .M, 10, "VERSION 10 QR CODE, UP TO 174 CHAR AT H LEVEL, WITH 57X57 MODULES AND PLENTY OF ERROR CORRECTION TO GO AROUND. NOTE THAT THERE ARE ADDITIONAL TRACKING BOXES"); | 148 | const grid = qrcode.encode(.latin1, .M, 10, "VERSION 10 QR CODE, UP TO 174 CHAR AT H LEVEL, WITH 57X57 MODULES AND PLENTY OF ERROR CORRECTION TO GO AROUND. NOTE THAT THERE ARE ADDITIONAL TRACKING BOXES"); |
| 103 | _ = &grid; | | |
| 104 | const allocator = std.testing.allocator; | 149 | const allocator = std.testing.allocator; |
| 105 | const blocks = try grid.asBlockString2(allocator); | 150 | const blocks = try grid.asBlockString2(allocator); |
| 106 | defer allocator.free(blocks); | 151 | defer allocator.free(blocks); |
| ... | @@ -136,6 +181,26 @@ test { | ... | @@ -136,6 +181,26 @@ test { |
| 136 | \\▀▀▀▀▀▀▀ ▀ ▀ ▀ ▀▀ ▀▀ ▀ ▀ ▀▀ ▀ ▀▀ ▀ ▀ ▀ | | 181 | \\▀▀▀▀▀▀▀ ▀ ▀ ▀ ▀▀ ▀▀ ▀ ▀ ▀▀ ▀ ▀▀ ▀ ▀ ▀ | |
| 137 | \\ | 182 | \\ |
| 138 | ); | 183 | ); |
| | 184 | const braille = try grid.asBrailleString(allocator); |
| | 185 | defer allocator.free(braille); |
| | 186 | try expect(braille).toEqualString( |
| | 187 | \\⡏⣭⡍⡇⣫⠎⢲⠲⡄⣳⡟⡣⡩⠒⠿⠍⢃⢐⡩⠛⠗⣻⢛⢽⠀⡏⣭⡍⡇| |
| | 188 | \\⠧⠭⠥⠇⣔⡝⣞⡎⠆⠗⣄⢆⠆⡏⠍⡟⣍⣞⣏⠍⠄⠔⡕⢎⠄⠧⠭⠥⠇| |
| | 189 | \\⠥⣹⢜⠝⡰⡕⡒⣩⡉⣽⢀⡱⢢⢝⣙⠣⠃⣒⠜⡜⡓⠢⠻⡕⣒⠵⣨⢪⡅| |
| | 190 | \\⠫⣅⡏⢥⣤⠘⢩⠕⣪⣏⢸⣀⢿⣜⠄⡩⠪⢀⣙⣳⡼⡩⡪⡠⠉⡂⢖⡝⠂| |
| | 191 | \\⣝⠵⠵⢥⣫⠻⠭⡑⢙⢖⠔⢧⢴⡉⡥⡬⣡⣶⡂⣀⢖⢥⢿⣋⣍⡩⢪⠼⠄| |
| | 192 | \\⠾⢪⡗⠕⡙⢶⠖⡩⣿⠭⡾⡰⢖⠰⡱⣁⢄⡀⠤⠄⣱⢺⣌⠨⠓⠍⣻⠶⠅| |
| | 193 | \\⡍⢶⡼⠽⡼⣠⢮⡶⣽⢡⢺⡌⡵⡧⠤⣍⢵⠌⣙⠒⠊⣠⢘⢇⡿⠦⣧⡡⡀| |
| | 194 | \\⡏⡊⢧⠥⣏⢆⡞⡭⢧⡌⠫⢋⣅⡧⢥⠇⠉⢢⢬⣹⠚⡅⢡⢖⡧⣥⡯⢠⡁| |
| | 195 | \\⡚⢛⡺⠥⠢⠯⠳⢎⢰⢪⢩⠍⢒⠑⣌⢺⠼⡍⠕⠼⢱⣩⢸⠥⣠⠤⡑⢒⠀| |
| | 196 | \\⡢⡩⢊⠅⢰⡝⠺⠜⣊⠒⢑⢅⠧⡘⡲⡈⡾⡜⢫⣿⢌⢈⡊⡑⠋⢕⢀⢶⠂| |
| | 197 | \\⢅⣗⢑⢕⢦⠙⣙⡍⠪⠽⠶⠷⠴⡈⢢⢳⡙⢫⠄⡊⠕⣔⡵⠋⠮⣢⡻⠴⡁| |
| | 198 | \\⣕⣖⡻⢵⢸⣂⢂⣮⠾⢊⣠⣛⠊⠨⣱⢚⢜⢨⢊⠈⡫⢗⠼⡑⠼⠍⡽⠸⡄| |
| | 199 | \\⡤⠤⠤⡅⣦⢣⣧⣡⣞⢻⡰⡇⡡⡏⠍⡏⠝⢟⣩⣇⠌⡉⠽⠄⡏⠍⣧⡎⠃| |
| | 200 | \\⡇⠿⠇⡇⠮⠬⣹⠓⠹⡅⣓⡚⣚⣩⠩⠽⡉⢟⠄⡘⠤⢌⡙⠻⢽⣽⠃⠜⡀| |
| | 201 | \\⠉⠉⠉⠁⠁⠈⠀⠀⠈⠈⠁⠉⠈⠀⠈⠀⠀⠉⠈⠈⠁⠀⠀⠁⠁⠀⠁⠀⠀| |
| | 202 | \\ |
| | 203 | ); |
| 139 | } | 204 | } |
| 140 | test { | 205 | test { |
| 141 | const grid = qrcode.encode( | 206 | const grid = qrcode.encode( |
| ... | @@ -149,7 +214,6 @@ test { | ... | @@ -149,7 +214,6 @@ test { |
| 149 | \\Although initially used for tracking parts in vehicle manufacturing, QR codes now are used in a much broader context, including both commercial tracking applications and convenience-oriented applications aimed at mobile phone users (termed mobile tagging). QR codes may be used to display text to the user, to add a vCard contact to the user's device, to open a Uniform Resource Identifier (URI), or to compose an e-mail or text message. Users can generate and print their own QR codes for others to scan and use by visiting one of several paid and free QR code generating sites or apps. | 214 | \\Although initially used for tracking parts in vehicle manufacturing, QR codes now are used in a much broader context, including both commercial tracking applications and convenience-oriented applications aimed at mobile phone users (termed mobile tagging). QR codes may be used to display text to the user, to add a vCard contact to the user's device, to open a Uniform Resource Identifier (URI), or to compose an e-mail or text message. Users can generate and print their own QR codes for others to scan and use by visiting one of several paid and free QR code generating sites or apps. |
| 150 | , | 215 | , |
| 151 | ); | 216 | ); |
| 152 | _ = &grid; | | |
| 153 | const allocator = std.testing.allocator; | 217 | const allocator = std.testing.allocator; |
| 154 | const blocks = try grid.asBlockString2(allocator); | 218 | const blocks = try grid.asBlockString2(allocator); |
| 155 | defer allocator.free(blocks); | 219 | defer allocator.free(blocks); |
| ... | @@ -215,6 +279,41 @@ test { | ... | @@ -215,6 +279,41 @@ test { |
| 215 | \\▀▀▀▀▀▀▀ ▀ ▀▀▀ ▀▀ ▀ ▀ ▀ ▀▀ ▀▀▀ ▀ ▀ ▀▀▀ ▀▀▀ ▀▀ ▀▀ ▀▀ ▀▀ ▀▀▀ ▀▀ ▀▀▀ ▀▀▀▀▀ ▀▀ ▀ ▀▀ ▀ ▀ ▀ ▀ ▀▀▀▀ ▀ ▀ ▀ ▀ ▀ ▀ | | 279 | \\▀▀▀▀▀▀▀ ▀ ▀▀▀ ▀▀ ▀ ▀ ▀ ▀▀ ▀▀▀ ▀ ▀ ▀▀▀ ▀▀▀ ▀▀ ▀▀ ▀▀ ▀▀ ▀▀▀ ▀▀ ▀▀▀ ▀▀▀▀▀ ▀▀ ▀ ▀▀ ▀ ▀ ▀ ▀ ▀▀▀▀ ▀ ▀ ▀ ▀ ▀ ▀ | |
| 216 | \\ | 280 | \\ |
| 217 | ); | 281 | ); |
| | 282 | const braille = try grid.asBrailleString(allocator); |
| | 283 | defer allocator.free(braille); |
| | 284 | try expect(braille).toEqualString( |
| | 285 | \\⡏⣭⡍⡇⡒⣻⣓⢨⡎⠊⢌⡖⢘⡵⠛⣣⣃⣀⠵⢜⠺⡣⢪⠄⡌⡥⠛⣻⣪⣽⡔⡔⣺⠃⣂⡼⡟⢼⣀⢫⠪⢤⡝⡕⢳⡪⠫⠬⣕⣜⢂⣂⡺⠥⠆⡏⣭⡍⡇| |
| | 286 | \\⠧⠭⠥⠇⠞⣞⢟⡄⠝⣆⢍⡄⠜⣔⠄⡏⠍⣟⡝⡝⠞⢞⠎⣜⡝⡝⠖⠟⡏⠍⡗⡜⠞⠎⢏⣔⣝⡔⠇⠇⢟⡏⠍⣗⢞⢏⢏⣄⡅⡅⢖⢟⢝⡗⠄⠧⠭⠥⠇| |
| | 287 | \\⡫⢛⠣⢭⢅⢖⣥⡗⠾⠻⡷⡁⡪⡨⢯⢙⢏⣁⣣⠨⠯⢅⠄⣓⡂⣪⠯⢟⣭⣹⡿⡐⠌⠔⢌⣢⡲⣢⠬⢄⢾⢛⡩⣩⢤⠟⢦⣋⡛⣠⠷⢟⢔⡹⢉⢈⠺⣮⡂| |
| | 288 | \\⠢⢣⣌⠥⣨⢊⢎⡵⡾⡒⢲⢚⡻⡸⢬⡁⢼⡊⡡⡐⢴⣇⢬⣛⡣⡀⠄⢥⢑⣀⣳⣠⠤⢏⢜⡚⡫⡨⠗⢍⠵⣊⡃⡢⠟⢏⠜⣘⡣⡒⠍⢆⢼⣹⢁⠉⣳⡨⠃| |
| | 289 | \\⣒⢸⣐⠕⢽⢩⢻⠩⡒⣤⢨⠔⣣⡰⠥⢙⢜⡈⡪⡨⠔⢕⢌⡂⡋⡰⠤⠷⡝⣂⡳⣠⢧⢆⢌⣊⣡⡈⠼⢄⢴⠊⡱⡑⠥⢧⠝⡘⡺⡳⢴⢞⢔⣁⢗⠏⠚⣶⠀| |
| | 290 | \\⢘⠏⡃⢵⣷⢕⣝⠨⢬⣙⣓⣖⡿⡙⢄⣝⢇⣋⡪⡈⢤⡏⠄⣘⣻⡀⢷⡟⠙⡘⡲⡡⠤⢏⢄⣱⡊⡹⠼⢯⢡⢘⣳⡰⢦⠽⢗⣠⣺⡫⠼⢧⢴⡹⢏⠝⣣⡪⠂| |
| | 291 | \\⢄⢛⠁⠕⢒⠛⠇⢼⣔⢳⠒⠽⡮⡰⠜⡕⢬⣢⡫⡨⢧⠟⢍⣁⡢⡢⠤⠝⢝⣠⡫⡳⢶⢭⢜⣚⡳⡺⠨⢧⢔⣖⡃⡚⢄⢎⢬⣚⡻⡻⢴⢝⢔⡚⢃⢙⢢⡦⠀| |
| | 292 | \\⡮⣩⡴⠽⣗⣕⡾⡭⠔⢩⡬⡝⠾⣹⠬⡽⠤⣜⡻⡀⠏⢾⢴⣙⡩⡨⠬⠟⡼⠶⣦⡨⠼⢥⢄⣀⡣⣸⠼⢌⠄⡾⠴⡤⠄⢥⢜⡘⡠⡹⠴⢽⢜⣰⡵⠭⣆⣆⠂| |
| | 293 | \\⣂⢔⠧⠥⣿⠫⣻⡅⣾⠮⣨⢵⢸⡳⢅⠧⡥⠇⡓⡒⠴⢷⢈⡨⡫⣠⢼⢅⠧⠥⢧⡸⠴⠟⠜⣀⡓⡈⢭⢭⠦⠧⢥⠷⠵⢟⢦⡃⡫⡠⠮⠔⠄⡸⡧⠥⢇⣎⡂| |
| | 294 | \\⢁⣼⠋⢕⠗⡢⠠⠟⢰⢉⢅⢫⠷⡊⢄⠍⡸⢩⡲⣪⢼⢄⢔⣋⣣⡘⠦⢷⡾⠓⠵⡢⢥⣇⢞⣚⣠⠸⠸⢄⠵⡖⢧⠝⠌⣤⢎⣒⡣⡸⠬⢖⠞⡺⠦⠪⢯⡤⡂| |
| | 295 | \\⡁⡥⣻⢭⠒⡯⡍⡱⠙⢏⢭⡍⠨⠿⢄⠿⡺⢉⡙⡒⠧⢵⢟⡒⡉⡠⠻⢇⡯⢷⠯⡫⠤⢏⢎⣂⡻⡨⠥⢟⠧⣢⢅⠣⠼⢯⢴⣱⡣⡪⠤⣵⠾⡪⢪⣦⢔⡺⠂| |
| | 296 | \\⣂⡱⠊⠅⠔⣏⠓⣛⠈⣻⢵⢛⡖⡹⢔⠏⡢⢷⡔⣸⠴⢦⢘⣐⣑⡹⢼⢧⠸⠽⠿⡣⠥⢏⠍⢰⡣⠻⠼⢎⠮⡌⢷⠻⠼⢄⠌⣠⣻⣰⢤⢯⢰⡲⢚⠎⢔⣢⠂| |
| | 297 | \\⢘⡰⠓⢵⢻⢌⡓⡻⢰⣶⢩⡄⡯⡰⢍⣙⡪⢅⡫⣨⠼⢧⢤⣐⡣⣈⠌⢗⡋⢽⢿⡸⢤⢍⢎⡂⡫⣠⠧⢗⠼⡧⢃⠱⢶⢝⢇⡐⣸⡋⠦⣏⢴⡪⠊⠢⠤⣮⠂| |
| | 298 | \\⣌⢹⣌⢵⢂⢛⠩⢲⠏⣆⢪⣂⢶⣨⢔⠋⡸⠑⣰⡩⠿⢮⢔⣈⣻⡻⠤⢕⡙⠭⢳⡹⠬⢿⠇⣛⡋⡐⠥⢏⠼⠼⢧⠹⠵⢝⢧⣛⡢⡸⠤⢵⠘⠠⡪⢢⢔⡨⡃| |
| | 299 | \\⠭⢚⡏⠍⣏⡮⣖⢥⠯⢇⠬⠇⠢⣱⠵⡏⠍⣗⡠⡲⢾⠄⢤⣂⣣⡠⢼⠷⡏⠍⣯⡛⠠⣏⢀⣛⣳⣰⠜⢏⢽⡏⠍⡧⠤⢏⢞⣐⡈⡁⠶⢥⠎⡀⡏⠍⣏⣦⡂| |
| | 300 | \\⣂⠬⠫⢝⣵⡣⢌⣘⣇⡨⠹⣑⡱⡚⢕⡛⣹⣫⡠⡙⠅⢽⠟⡘⡲⡺⢽⢥⣛⠻⡗⡺⠴⢦⢏⡑⣻⡐⠥⠇⢬⢍⠻⡧⢥⢷⠄⣰⣳⡠⠤⢏⠝⡘⣿⠝⣩⣂⡂| |
| | 301 | \\⢺⢎⡖⢵⡕⠝⠓⣓⣦⢼⢹⠈⡩⣠⠔⣓⢙⣲⡳⡙⠥⢇⢌⣛⡣⡰⠾⠭⣺⢒⡎⡫⠌⢇⢄⣻⡳⣢⠯⢔⠯⠵⢎⠺⢼⢄⢕⣰⣫⡈⠣⠏⠎⡐⣆⡴⣈⡶⠆| |
| | 302 | \\⢸⠗⣆⠥⡉⡨⢞⡲⢶⢰⢌⣶⠰⡰⠵⣧⣵⠊⡙⡰⠾⢏⢞⣊⡪⡲⠅⢭⡢⢦⠲⡨⠧⢎⠅⣘⡣⣠⢴⠇⢥⠔⡚⢪⠕⠦⢦⣘⡫⣸⠏⢇⠝⢀⠺⡅⣰⣎⡂| |
| | 303 | \\⢮⢻⢶⠽⠴⡱⣰⢿⠟⡅⠫⠏⡵⣱⠵⣗⡕⣖⡸⡠⠧⢗⢗⣙⣰⡨⢿⠇⠲⣢⡶⡚⠌⠗⢌⡐⡺⣫⢾⢬⠆⣐⡮⡦⢜⠇⢜⣐⡉⣲⠍⢟⢅⡐⢖⠤⣬⣂⠂| |
| | 304 | \\⠯⣹⡞⢅⣟⢪⢬⠴⠭⣬⡴⡝⣳⡀⠴⡳⢅⣶⡈⡰⢥⢧⠞⣘⡙⡸⠜⠬⡚⠲⢾⡐⠞⢟⢴⡑⣳⡨⠬⢏⢅⠔⡦⠲⢥⢟⢔⣨⡚⡸⠽⢤⢔⣐⡒⡔⣨⡮⡂| |
| | 305 | \\⣃⡼⡭⠥⡤⠈⠍⠭⠑⢻⣛⡌⣺⡰⠾⡾⠤⣮⡢⡀⠾⠍⢖⣃⡺⡠⠦⠅⡦⠦⡮⡐⠴⢖⢔⣐⣣⣠⠧⢭⢕⡽⠮⣶⠮⢜⢇⣙⡳⣹⠴⢅⢸⡒⡾⠴⣶⡶⡂| |
| | 306 | \\⡒⠍⡧⠥⠇⡆⢬⣿⣗⠦⢁⣞⡻⣻⠔⠧⠥⣟⡳⡻⠥⢟⠄⣘⡣⡪⠴⠮⢧⢥⣿⡸⢰⣟⢵⡛⡩⡘⠭⢟⢼⠧⣥⡯⠤⣔⢜⣱⡨⡻⢶⢇⢭⣊⠧⣥⢟⣮⠃| |
| | 307 | \\⢅⣬⣒⠕⢁⠘⣻⢢⠝⣅⡵⣣⣒⢨⠍⢣⡺⣝⡓⣱⠵⠎⢆⡓⡉⣫⠍⠏⠣⠭⡍⡘⢴⢆⢌⣡⣪⣻⢤⢅⢤⣥⣅⣤⢮⠄⢜⡀⡳⡡⠗⢆⢥⣰⠴⣺⢵⣈⠂| |
| | 308 | \\⢟⡡⡷⠕⢦⡦⡘⠈⡌⡇⡑⢔⠤⡨⠼⠂⡪⡝⣣⠀⠭⠌⠞⣲⣗⡙⠮⠯⢣⠴⠭⣸⠔⢇⢼⡒⡱⡨⠼⢏⢔⡥⡄⡵⢾⢝⢜⣒⣣⣱⠵⢽⢚⣰⣥⡈⢹⡮⠂| |
| | 309 | \\⠺⢸⡂⠭⠟⡶⣩⠬⡋⢹⠒⢖⡘⡸⠌⢲⡢⢕⡠⡩⠷⢞⢞⣀⡳⣸⠤⠏⠠⠤⡵⣲⠕⢖⢤⣐⣻⡘⠕⢏⢴⢤⠽⠔⠽⢏⢵⣸⡃⣲⠶⢥⢜⣠⠷⣉⢍⡮⠂| |
| | 310 | \\⡬⢀⣊⠕⢩⡅⣈⢁⡯⠀⡲⣖⡓⡁⠏⣿⡫⢌⡩⡠⢴⠇⢝⡙⡣⡊⢿⢬⣥⢤⠬⣸⠝⢇⢄⣠⡡⡀⢼⢄⢄⢍⢼⠴⠽⢗⠟⣘⡰⣰⢶⠆⠄⢠⠪⡨⣭⡢⠂| |
| | 311 | \\⠇⡖⢯⢭⡟⣒⠫⣝⠘⡐⡡⡁⡚⡘⠘⡪⠣⢍⣽⡀⠥⢕⢜⣐⣫⡠⠧⠍⣧⠴⡵⣪⠤⠄⠒⣫⡢⡂⠤⠟⢴⢣⡕⡄⠭⢶⢌⣺⣠⡠⠔⢤⢼⣂⡿⡣⢑⡦⠂| |
| | 312 | \\⡬⠥⠤⡅⢾⡬⢷⢒⡁⡧⡾⣊⡹⡳⢜⡏⠍⣧⡻⡋⠤⠗⢔⣀⡻⡻⠔⠕⡏⠍⡧⡈⠯⠔⢗⣑⣣⡡⢴⢇⢅⡏⠍⣯⢼⢯⢌⣢⡣⡪⢼⢌⠎⣂⡏⠍⡗⣶⠂| |
| | 313 | \\⡇⠿⠇⡇⣧⠄⡎⠊⠵⡕⡪⢸⡠⡙⠵⢯⢍⣑⡸⡳⠴⢝⢌⣑⡻⡩⠽⢇⠍⣙⡡⡸⠌⢶⠖⣓⣻⡰⠶⢿⠜⣋⡻⡑⠵⠍⢤⣃⡻⣸⢸⢷⢛⣊⠽⢙⣣⡆⠁| |
| | 314 | \\⠉⠉⠉⠁⠁⠉⠁⠉⠈⠀⠁⠁⠈⠁⠈⠉⠈⠀⠁⠈⠉⠈⠉⠈⠁⠉⠀⠉⠈⠁⠉⠁⠉⠈⠉⠀⠉⠉⠁⠉⠈⠀⠉⠈⠀⠁⠈⠀⠁⠉⠉⠈⠈⠀⠁⠁⠈⠈⠀| |
| | 315 | \\ |
| | 316 | ); |
| 218 | } | 317 | } |
| 219 | test { | 318 | test { |
| 220 | const grid = qrcode.encode( | 319 | const grid = qrcode.encode( |
| ... | @@ -228,7 +327,6 @@ test { | ... | @@ -228,7 +327,6 @@ test { |
| 228 | \\Although initially used for tracking parts in vehicle manufacturing, QR codes now are used in a much broader context, including both commercial tracking applications and convenience-oriented applications aimed at mobile phone users (termed mobile tagging). QR codes may be used to display text to the user, to add a vCard contact to the user's device, to open a Uniform Resource Identifier (URI), or to compose an e-mail or text message. Users can generate and print their own QR codes for others to scan and use by visiting one of several paid and free QR code generating sites or apps. | 327 | \\Although initially used for tracking parts in vehicle manufacturing, QR codes now are used in a much broader context, including both commercial tracking applications and convenience-oriented applications aimed at mobile phone users (termed mobile tagging). QR codes may be used to display text to the user, to add a vCard contact to the user's device, to open a Uniform Resource Identifier (URI), or to compose an e-mail or text message. Users can generate and print their own QR codes for others to scan and use by visiting one of several paid and free QR code generating sites or apps. |
| 229 | , | 328 | , |
| 230 | ); | 329 | ); |
| 231 | _ = &grid; | | |
| 232 | const allocator = std.testing.allocator; | 330 | const allocator = std.testing.allocator; |
| 233 | const blocks = try grid.asBlockString2(allocator); | 331 | const blocks = try grid.asBlockString2(allocator); |
| 234 | defer allocator.free(blocks); | 332 | defer allocator.free(blocks); |
| ... | @@ -324,4 +422,54 @@ test { | ... | @@ -324,4 +422,54 @@ test { |
| 324 | \\▀▀▀▀▀▀▀ ▀▀▀▀▀ ▀▀ ▀ ▀▀ ▀▀▀ ▀ ▀ ▀ ▀ ▀▀ ▀ ▀▀ ▀▀▀ ▀ ▀▀▀▀▀▀▀▀ ▀ ▀ ▀ ▀▀ ▀ ▀▀ ▀ ▀ ▀▀▀ ▀ ▀ ▀ ▀ ▀ ▀ ▀ ▀ ▀ ▀▀▀▀ ▀▀▀ ▀ ▀ ▀▀▀▀ ▀▀▀ ▀▀ ▀ ▀▀ ▀▀▀ ▀ ▀ ▀| | 422 | \\▀▀▀▀▀▀▀ ▀▀▀▀▀ ▀▀ ▀ ▀▀ ▀▀▀ ▀ ▀ ▀ ▀ ▀▀ ▀ ▀▀ ▀▀▀ ▀ ▀▀▀▀▀▀▀▀ ▀ ▀ ▀ ▀▀ ▀ ▀▀ ▀ ▀ ▀▀▀ ▀ ▀ ▀ ▀ ▀ ▀ ▀ ▀ ▀ ▀▀▀▀ ▀▀▀ ▀ ▀ ▀▀▀▀ ▀▀▀ ▀▀ ▀ ▀▀ ▀▀▀ ▀ ▀ ▀| |
| 325 | \\ | 423 | \\ |
| 326 | ); | 424 | ); |
| | 425 | const braille = try grid.asBrailleString(allocator); |
| | 426 | defer allocator.free(braille); |
| | 427 | try expect(braille).toEqualString( |
| | 428 | \\⡏⣭⡍⡇⣧⡪⠭⡐⠧⢇⢀⠂⡃⡟⠾⠡⣜⣨⠲⢌⣴⣹⢊⣋⠻⡱⢉⠴⢃⣌⠴⠳⣴⣿⡱⢏⡆⢎⢏⢋⠓⢄⡿⣉⡬⠪⢈⡦⢖⠲⢏⢙⠷⣌⠃⣹⡘⢿⡑⣱⢉⣍⣛⠋⢋⣴⣃⣵⡼⡔⡫⡦⠿⡓⣍⢌⣅⠕⢊⢋⣄⡃⠆⢇⡂⡏⣭⡍⡇| |
| | 429 | \\⠧⠭⠥⠇⢆⢏⢄⡖⢅⣝⢟⣕⣄⠝⡏⠍⡇⠄⡏⢗⠎⡌⢖⣔⡝⠕⢕⠗⡏⠍⣗⢗⣜⡟⢕⡏⡎⣗⡌⠏⢇⠝⡏⠍⡗⣗⠏⣞⣏⣗⣇⠕⡕⠌⢗⡅⡏⠍⣇⡍⡌⡍⠏⢔⡌⡄⡟⠏⢗⡕⡏⠍⣇⢔⡍⡌⡍⡆⠎⠏⡜⠄⠎⠆⡆⠧⠭⠥⠇| |
| | 430 | \\⢍⣖⡫⢅⢦⠪⣛⡀⣫⣅⠥⠠⠻⡺⡻⣏⠵⣶⢁⡽⡵⣽⠹⢊⡾⢚⡿⣍⢛⠹⣍⢋⣜⣃⣋⡳⡐⡩⠴⢳⢿⢄⢋⢍⢱⢈⢛⢘⡍⢈⣻⠧⣱⡷⠫⠆⢿⣩⢝⣌⠳⣖⡝⡱⠳⣴⢚⢍⣌⡞⢏⣭⣋⢚⣅⠳⣆⣑⠰⠳⡬⠾⠱⠲⡰⠺⡼⡽⡇| |
| | 431 | \\⢟⢏⡣⢅⢧⠂⢐⡋⢯⣍⠕⡧⠵⣃⡥⡓⠪⠃⢞⠷⡴⡽⢁⣌⡶⠋⢇⢋⠫⡵⣍⢋⣄⡪⢈⡳⡸⣓⡷⢳⠏⠴⡽⠸⡍⣋⠻⢀⣳⣋⡻⠶⡋⠴⠋⢎⢏⡓⢍⡶⡵⡦⡝⢉⡵⣔⠾⠱⢊⣆⢌⣄⣫⢤⠾⡵⡆⡇⢁⡵⡌⠈⠰⠲⣰⡳⡴⡵⡆| |
| | 432 | \\⢟⣣⡣⢅⢧⢂⣺⢩⣩⣭⠲⠠⠵⡳⡙⡖⣢⣈⢘⠶⡴⣭⠩⣌⡶⢃⠾⣍⢓⠰⣍⢋⡌⣒⣋⣳⢤⡫⠴⢋⢄⢍⢻⢂⠰⢈⠳⢇⡋⢈⣻⠆⣷⡷⠫⠫⢏⠁⢯⣊⠳⣶⣥⠱⠳⣔⣒⢍⣌⣆⢏⡜⣣⠌⣇⠳⡾⡍⡸⠳⡔⠲⣇⡴⡈⠰⡴⡵⡆| |
| | 433 | \\⢟⢉⡣⠭⣢⢚⠤⢯⣩⣍⣸⠠⠵⡛⡝⡆⢙⢒⣒⠶⡴⡭⠳⣍⡶⠣⡦⢋⠫⡵⡵⢬⣀⡫⢈⣣⢾⣒⡷⢫⠆⡴⣅⠺⣥⢏⠳⢟⡵⢋⣋⠃⡋⠴⢛⣮⢟⡉⢧⡶⡵⣞⣽⢉⡵⡄⢮⣍⣌⣖⢏⣌⣍⣄⡿⡵⡆⡹⢂⡵⣄⢀⠺⠲⣰⡳⣄⠳⡆| |
| | 434 | \\⢟⣒⡣⢵⣢⢲⢐⢨⣩⡕⡘⡥⠵⣫⡛⣶⠜⢋⢐⠲⡴⡽⠩⣉⡶⠣⠶⢈⢳⡴⣍⢣⣙⣓⡳⡼⢼⡪⠴⢃⢧⢎⢛⢂⢰⢏⠳⢟⡏⣎⣋⢓⠷⡷⢋⣀⢸⡳⠫⣊⠳⡖⢹⣉⡵⣼⠒⢉⣌⣦⢎⣼⣍⣅⢀⠳⣆⣅⡿⠣⣖⠺⣇⡴⡈⠰⡼⡵⡆| |
| | 435 | \\⢟⠫⡏⠍⣧⢺⢎⢭⣩⡭⣿⡦⠵⡃⡏⠍⡇⣑⣒⠳⡴⣥⠑⣍⡶⢓⡷⠺⡏⠍⡷⠬⣨⡨⢈⡣⠖⡲⢏⢄⠄⢬⡏⠍⣷⢏⠳⢿⢗⢏⣋⠋⢳⣰⣋⣘⡏⠍⣯⣎⢓⠲⡁⢉⡵⡔⠒⣉⣌⡾⡏⠍⣏⡽⡍⢷⢈⡼⢂⣅⡷⣄⠺⠒⡏⠍⣇⠳⡆| |
| | 436 | \\⢟⠎⢫⢝⡥⣲⣹⣬⣩⡍⡘⡠⠵⣓⠟⡹⠇⣈⢘⠲⡴⡵⢹⣋⡶⠻⡤⠚⡹⣉⣏⠣⣉⠴⠳⡤⠻⡲⠷⢛⢇⢬⢟⠹⢗⣏⠳⠏⢄⡏⢋⢳⠔⠘⣍⣠⣏⠋⠫⢎⠫⣷⣭⢉⣕⠠⣲⢍⣌⡎⠽⡍⢏⣅⠐⢺⣈⣄⡟⢇⡶⡽⣇⣴⣋⢋⡽⣵⡀| |
| | 437 | \\⢟⢙⣐⢭⣠⠂⡺⣮⣉⢥⣓⠡⠵⣳⡛⡠⡆⣐⣒⠶⡴⡽⡇⣉⡶⢃⢰⠚⡡⣉⡶⠬⣊⠴⢋⣣⠔⠰⢏⢬⠅⢤⢶⡵⠷⣏⡳⢷⠃⢟⢌⠋⠻⢘⣋⡐⢉⢳⢜⢎⢓⢢⣙⢉⡭⣵⢶⢉⡬⠂⠰⡴⢎⡽⡵⠺⢉⡼⢊⢊⡶⣅⠚⣲⠳⢌⣄⠻⠁| |
| | 438 | \\⢟⡤⡀⢍⡰⡉⣢⣨⣙⡨⠿⠤⠕⣯⡝⣐⡁⣘⢬⠲⡴⣅⠢⣉⡶⠻⡅⠘⡙⢈⡶⡛⣉⠴⠳⡬⢎⠳⠷⢣⠟⢧⠖⡱⢿⠗⡳⠏⢌⡯⢌⢳⢼⣹⣉⣠⣎⠋⢛⢊⠫⡗⡭⢍⣕⢰⣚⢉⣔⣏⠵⡤⣎⣅⠰⠴⣈⣄⣷⢊⡶⣍⠳⣵⣿⣉⡬⠳⠁| |
| | 439 | \\⢔⢾⣐⢅⢡⢢⢳⢬⣉⢥⡬⠣⣝⡶⡙⡰⠂⣘⢤⠲⣄⠻⡧⣍⠰⢃⢠⠸⡳⣉⡎⡑⣉⠴⢛⠟⢊⠳⢏⢄⢏⣣⠾⡵⢗⢶⡳⢷⠛⢯⢌⠋⠳⠸⣋⡐⢉⢳⢌⢉⢓⠲⡭⢉⡭⡅⣶⢉⡬⠊⠵⣔⢊⡽⣝⢴⢈⣌⣶⠰⡶⣍⢳⣳⠼⣱⡭⢻⡁| |
| | 440 | \\⢗⡣⡀⠕⡵⡹⢏⢩⣛⡨⠏⡉⠆⣮⡝⡘⠄⣘⢜⠢⠾⣅⠚⡜⣁⡽⡕⠶⡽⠈⣠⡰⣋⠴⢓⠾⢏⠳⢗⣙⢍⣣⢶⠱⠗⠗⣳⡏⠔⢇⢌⠳⢴⣙⣋⣠⢎⠋⢋⢉⠋⢗⡱⢋⣕⢈⠣⣍⣔⣷⣉⡻⣎⡵⡴⢼⢈⣌⣾⠀⠶⣍⠣⡵⡗⣓⠵⠼⡁| |
| | 441 | \\⢔⣂⣐⢝⣣⢢⠓⣙⢍⢥⡜⢮⣜⡶⣙⠲⠂⣘⢄⣌⣇⠻⡯⣯⡸⢃⠠⠦⣶⣉⡨⡁⣈⠴⢃⡦⢏⠳⢿⡳⢉⣣⢆⠱⠟⠯⡋⠴⢋⢯⠌⡳⢼⢩⣋⣠⢎⠳⢌⢉⢳⠱⠲⢋⣭⡵⡵⡶⡩⠒⠶⣌⢋⡵⡄⠶⢉⣌⡾⢄⡶⣍⠛⣱⣡⣀⠵⠺⡁| |
| | 442 | \\⢗⣗⡏⠍⣷⡽⠟⣡⣟⡨⢇⣊⡃⣾⡏⠍⡇⣘⢌⣍⡾⣅⢂⡝⢀⣍⠡⠚⡏⠍⡿⡱⣈⠴⢻⠧⣋⠳⠇⣒⣋⣳⡏⠍⣯⠗⣳⡷⢋⠿⢴⠰⠼⢀⡋⠠⡏⠍⣏⢉⠣⣍⡴⠫⠲⣎⠳⡖⢕⣟⡏⠍⡿⠳⣴⢲⢉⣌⣾⠈⡶⣍⢣⡗⡏⠍⡧⠒⡀| |
| | 443 | \\⢔⣂⠭⢭⣉⣧⠛⣁⠏⣥⣔⡙⣚⡦⠍⡛⡥⣜⢌⣝⣆⢋⢋⡜⠹⢋⠱⣄⢋⢿⠝⣚⣏⠴⠃⢔⢈⢳⣳⡩⢈⡳⠻⢋⡻⡦⡋⠴⠃⢾⠎⡳⢼⣩⣳⣃⡽⢋⣍⢱⠒⠱⠲⠃⠺⡶⡵⣶⠅⣵⠽⢋⣇⡵⡄⠢⠹⢊⣾⢘⡶⣍⠣⣥⣋⢋⢷⠪⠃| |
| | 444 | \\⠳⣗⡾⠭⢈⠼⠟⡩⠔⡶⢖⣉⣦⢶⡒⢉⢡⢙⢌⣭⠞⢉⢋⡌⢁⣍⠱⣍⠂⠼⠷⡨⢌⠴⢓⠬⣋⠫⣙⣐⣋⣃⠱⢋⡳⣰⣳⡷⠋⢮⢴⠰⠔⣩⡉⢈⡴⢋⣍⠙⠒⣉⡴⢛⣪⣎⠳⡆⡍⡉⢃⡼⠺⠳⡜⢴⢁⣌⡮⠔⣄⢋⠫⣵⣫⠌⠇⢺⠁| |
| | 445 | \\⢠⣂⢮⠽⢜⠝⡜⣹⢕⠰⢖⣱⡻⢒⡅⡛⡭⣜⢌⣥⢆⢎⢋⣄⢸⢉⠱⣅⣖⠥⠯⣒⣏⢔⢗⢕⢈⢳⣐⡩⢈⣓⠱⢋⠳⡠⣍⡴⠳⠫⠌⡳⠴⢐⣳⣋⡴⢋⣍⠡⢲⠱⠲⢋⢚⠲⡵⡞⣍⣵⠼⢂⣇⡵⡴⠴⠸⢊⣮⠴⡼⣍⠫⣽⣷⠀⠇⠜⠁| |
| | 446 | \\⠾⣗⢻⠍⠋⡟⡜⡱⠛⠴⢖⣙⡪⢑⡕⠹⣥⢉⣎⡭⡗⢊⢋⡜⣑⢊⠱⣝⣊⠌⢽⠫⠴⢃⢞⠭⣋⢻⡈⣐⣋⡣⡱⢋⠴⣸⣛⡰⠳⠫⢶⠰⠴⠟⠍⢈⣔⣏⣍⠱⡲⢉⡴⠣⢛⡶⡵⡆⠥⣉⠳⡼⠺⠳⣄⠺⣇⣌⣖⢂⢀⢻⡩⣟⡭⠆⠖⠨⠄| |
| | 447 | \\⢖⡪⠢⠅⠸⠙⡜⡹⡩⡱⢖⣩⠤⢒⡅⡻⡬⣬⢈⣍⡶⢊⢋⡄⡉⢌⠱⡍⠲⡬⠿⣓⣏⠜⢇⢔⠰⠄⡀⣉⣈⡣⠱⠻⠴⡰⡛⡰⠳⢫⡾⠷⠴⢷⠳⢋⡬⢊⡭⣅⠖⢉⡴⢻⢊⡲⡵⣖⣁⢉⢳⣇⣷⠷⣌⢃⠺⠚⢀⡼⡽⡽⡫⣼⢟⠊⡇⠰⡇| |
| | 448 | \\⠱⡪⠻⠍⢂⡜⡜⣑⢡⡰⢖⡱⡦⣗⡕⡽⣤⠉⣉⡕⡦⢊⢋⡬⢸⢏⠱⡍⠶⡼⠴⠬⠴⢋⢇⢌⢋⠻⣐⣊⡰⡜⠱⢛⠴⣠⢳⡰⠳⠋⡣⡷⡴⠏⠌⢏⣔⣏⣕⠰⢂⢉⣔⡿⠆⡶⡵⣎⡭⣉⠣⣍⣮⢄⣎⠻⡷⣔⢈⣅⢀⢻⣉⡍⢬⠂⡇⢂⠂| |
| | 449 | \\⣥⡪⡏⠍⣷⡝⡼⣡⣇⠰⢖⡹⠫⣑⡏⠍⣯⡀⣏⣕⡶⢎⢋⣌⡯⢊⠱⡍⡏⠍⡷⠴⢏⢔⠶⣌⠳⢴⣨⣋⣈⡫⡏⠍⡷⡈⠓⢰⡳⢳⣼⡖⡳⢷⢋⢯⡏⠍⡯⣵⠒⢉⡬⠊⡊⡶⣕⢚⢝⡽⡏⠍⣟⢂⣎⢃⠲⣅⢉⡽⣭⠻⢉⣄⡏⠍⣇⠺⡇| |
| | 450 | \\⡀⡪⠙⠭⠥⡙⣴⢮⠴⡳⠖⠕⢡⠨⠍⣟⡵⠺⣈⡽⣴⢈⢋⡼⠺⢈⠱⡅⢏⣭⡷⠴⠷⢋⠷⣌⢋⠫⡂⣋⡰⣄⢏⢻⠵⣰⠤⢍⡳⠋⣳⡗⡳⠏⢌⣮⣻⠹⣗⠐⡶⣍⣔⡯⡞⠲⡭⡇⣭⠙⡉⡿⣩⢖⣎⠻⡧⣝⣉⣅⠐⢤⢈⡤⢏⠙⣉⢃⠂| |
| | 451 | \\⡲⡪⡦⠽⢉⡜⡴⣰⢑⡱⢆⢯⢼⡧⠭⢘⣌⠕⠺⢃⠀⢎⢋⣄⣯⠘⠷⡝⣊⣜⡵⠴⢇⣃⠷⣌⠳⢼⣋⢌⣈⣋⣈⠓⠱⡈⢓⡉⡵⢳⡤⡷⡳⢷⠋⠶⠌⡳⡮⡥⣖⢉⡬⠊⢺⡶⣕⠚⡝⠙⣡⡶⣈⠀⢎⢃⠢⣝⢈⣍⠉⢾⣉⣼⡰⡍⣈⠻⡇| |
| | 452 | \\⢟⡪⢫⠭⢥⠛⣴⠆⢉⣒⡟⠔⢱⠦⢝⢟⡬⢏⢁⡽⡥⠪⡹⠺⠪⢞⡵⡥⢍⣴⠷⠴⠗⡊⠷⣌⢣⡳⣊⢌⡰⣬⢊⢣⣱⢰⢼⢩⡳⠋⣻⡦⡳⢏⠌⢿⣳⢰⢐⢐⣊⢋⣔⡗⣚⠲⡭⣏⡤⡙⡩⡲⡈⠢⣎⢋⢳⣄⢉⣍⠉⢞⣈⡤⠷⣞⣌⢃⠂| |
| | 453 | \\⣁⡪⡆⠽⡥⠥⠳⣰⠙⡲⣇⢯⢜⠄⠛⢛⣴⢥⠺⢃⠠⢻⣁⣄⣯⠂⣆⠛⣊⡌⠴⠴⠟⣨⠵⣌⠳⡋⣍⢌⡐⢌⠲⢼⡍⡋⢻⠘⣵⡳⣼⠿⡳⢏⢤⠶⢒⢳⢁⢸⢎⢋⣬⣊⣍⠱⣕⠲⠪⠙⡉⡶⣨⢈⣎⢋⢓⣍⣉⣍⠱⢺⢉⣼⡰⡮⢌⢋⠃| |
| | 454 | \\⠲⡪⣜⠽⡤⢟⣳⠆⠁⠭⡘⠔⢡⢕⠠⢚⣤⢨⢅⡽⣍⠚⡹⠺⢒⠂⠿⡥⢍⣴⠳⠴⢟⣊⠴⣌⠋⡣⢌⢌⡀⣌⢉⠳⢵⠰⢴⣘⡏⠰⣴⠷⣳⣏⠔⢿⣓⠯⢉⣎⢋⢋⡤⡱⢋⢑⠊⢋⡴⠛⣉⠲⣈⠌⣎⢋⠓⣝⣈⣍⠡⢖⢉⣤⡱⣖⣏⢋⠃| |
| | 455 | \\⣽⠈⣻⠽⡤⢗⡑⢰⠁⠧⢁⢯⢌⡀⡴⠝⢬⡣⡹⢃⢈⢻⢁⡴⢋⣄⣆⠛⣊⡌⠴⠴⢯⡰⠲⣌⢻⣓⣏⢌⠄⠬⡵⢜⡍⡳⠴⢹⣱⡳⣜⢆⡏⢌⢔⠶⢲⢯⠉⡶⣍⢳⣥⣉⣍⠡⡂⠱⠲⠻⢫⡶⣠⠢⠾⣍⠣⡥⢉⣍⠱⠚⢉⣤⡱⡮⢌⢋⠃| |
| | 456 | \\⣥⡠⡏⠍⡧⠏⢠⡂⠁⠏⠛⢰⢑⡒⡏⠍⡇⣾⡳⢋⢉⠛⠸⠲⢋⡝⡿⣵⡏⠍⡷⠴⠟⣐⡳⣌⠻⡪⢌⢜⠗⠥⡏⠍⣷⠰⢴⡙⡋⠰⡼⠗⣳⣏⢜⠇⡏⠍⡇⣎⢋⢻⢭⠱⢋⠙⢢⢉⡴⠃⡏⠍⣷⢎⢇⢋⠃⡩⡹⢋⠉⠎⢉⡤⡏⠍⣏⢋⠃| |
| | 457 | \\⣥⣚⠯⢝⡥⠷⢵⡆⡂⠟⡘⣳⢑⣪⣭⡿⣳⡨⢆⣍⢉⠳⡑⡲⢋⡝⣆⠳⡿⣍⠳⠴⢟⡫⠰⡌⠏⣑⣏⢴⢍⠧⡻⠋⢏⠳⢌⣼⣱⡳⡼⡷⡋⢌⠤⢗⢽⣹⠏⡲⣍⠃⢙⢋⣍⢱⢞⠵⠲⢓⣟⣉⢍⠄⠾⣍⢛⡋⣀⣍⢱⢊⠻⢂⢋⡉⣋⢋⠃| |
| | 458 | \\⣥⡼⠩⢝⡤⢧⠏⡀⡂⠏⠟⣶⢑⡪⢀⠥⠯⠘⡽⢋⢉⠛⡐⡵⢋⣅⣎⠳⡶⡴⣍⠓⣟⣒⡳⡬⠕⡫⢌⢄⠗⣔⢀⣝⢷⡷⢌⣼⣉⠰⡴⡠⣳⣏⠌⢯⢌⣃⢌⢊⢋⢳⡭⡱⢋⠱⡮⡵⠲⢋⠺⢈⡼⢢⢆⢋⠃⣇⡿⢋⢁⠸⣇⣌⢋⣰⡼⣍⠃| |
| | 459 | \\⣥⣫⠩⢝⡤⠗⠮⡃⡂⢯⢙⣲⢑⣂⡀⠋⠄⡪⢆⣍⢉⢣⠐⡵⢋⡍⠆⠲⣖⢈⠳⠬⣨⡨⢈⡓⠷⣓⣏⢔⢆⠬⣫⢍⠰⡷⢌⣼⡡⠷⡴⡘⠋⣌⠴⢻⢀⣉⠭⠶⣍⢓⣩⠱⢋⢁⢆⠵⠲⠫⡺⢑⡳⠻⡽⣍⠻⠻⢂⣝⠧⢂⠺⢊⢋⣈⣃⢋⠃| |
| | 460 | \\⣥⢹⠩⢝⡤⠷⣙⡃⡂⢷⢱⣲⢑⡚⡩⣈⢻⠙⡽⢋⢉⠻⢁⡱⢋⣕⡆⠲⡮⣍⢋⠣⡀⢓⡳⣼⢿⣋⡴⠓⠞⢔⢨⠺⡽⠷⢌⡌⢩⡷⡴⣰⢬⣈⡴⠋⣄⣓⠮⡶⡭⡟⣍⠱⢋⠱⢂⠵⠲⢋⠶⠗⡳⢃⠀⠻⠱⢂⡿⢣⣆⠺⣇⣌⢋⣈⡻⣍⠃| |
| | 461 | \\⣥⡆⠩⢝⣤⠋⠌⡁⡂⢗⠑⢵⢑⡢⢸⣿⢼⠩⢆⣍⢉⠓⡠⡵⢋⣅⠨⠶⣖⢈⠳⠼⡳⢋⣈⣳⠡⣋⣌⢜⢎⠬⣓⢂⠸⠷⢌⣴⢋⣶⠴⡈⢳⣹⡱⠻⣔⣚⠧⠶⣕⠂⢁⠱⠫⡥⢲⡵⠲⢋⡶⢯⡷⠻⡵⠴⠱⠺⢒⢛⣏⢃⠺⢊⠋⢈⣃⢻⡁| |
| | 462 | \\⣥⠿⠩⠝⡄⡉⠳⠁⡢⢻⢴⣳⢑⣢⣵⡥⣻⠙⡍⢋⢉⢃⠓⡴⢋⡽⡥⠲⡮⣍⢋⠳⡰⢋⡰⡔⠴⢌⡴⢃⢄⠶⡘⠾⡭⠷⣌⡌⢤⢎⠲⣰⠜⣸⡱⢳⣔⣙⢭⠶⡭⣟⡌⠱⢓⢰⠂⠱⢒⡧⡲⢏⡱⢃⠘⠺⠱⢂⣯⠗⣎⠻⣷⣊⢳⣋⡻⡭⡁| |
| | 463 | \\⣥⡮⡏⠍⣧⢚⣩⠁⣢⣆⡕⣲⠑⣪⡏⠍⣿⢉⣎⢏⢉⠻⡇⡱⢋⣅⠈⠂⡏⠍⡇⡻⡰⢋⣈⡋⠷⢌⣌⢜⢧⠖⡏⠍⣟⢯⣉⣴⠃⢇⠲⡈⢣⢩⡳⠻⡏⠍⡯⡶⣕⠚⢙⠱⠫⡵⢂⠵⠪⠪⡏⠍⡷⠻⡍⢾⠱⠺⢚⠦⢎⠳⣖⣕⡏⠍⡷⢗⡀| |
| | 464 | \\⠒⡃⢿⠝⡇⡑⣓⠂⡲⢹⠱⢖⣪⢶⣍⣟⢻⢉⣿⣉⠹⣅⠂⡕⣉⡽⡥⢢⠏⠽⠻⡣⡰⢋⡈⠗⠳⢌⡴⢋⠷⡄⣹⠩⢵⠆⣋⡌⠌⠇⠴⣰⢴⡨⡳⢻⢟⠫⠳⡴⡭⣷⣅⡵⢓⠰⠒⡱⢒⣟⢋⣛⠳⢃⠠⠺⠱⠲⢻⠂⣎⠳⡦⡕⠹⠽⠣⢾⠁| |
| | 465 | \\⣷⡓⢿⠵⢣⢲⣲⠃⢡⣆⣝⡝⠜⡃⣇⣮⢼⢉⣇⢌⣇⠻⡯⡈⡸⢃⠐⢮⢶⠷⠳⣻⡰⢋⣘⢧⠷⢌⣴⣈⠷⡌⣱⣕⣷⠯⡋⢴⢋⣿⠴⣈⠛⣨⡳⠣⡠⠒⠵⡴⣕⢲⣍⡶⠫⡵⣕⠱⠪⢚⣊⣳⠳⢋⠁⠨⠲⠲⢣⠞⣎⠳⡆⡱⣋⠳⠒⠮⠁| |
| | 466 | \\⠒⡺⢿⠵⠄⡑⣳⠳⠳⢹⠉⠀⢮⠦⢅⣆⢹⢉⡏⠏⡾⣅⠒⡥⢁⡽⣕⢨⣞⡰⠫⡂⡱⢋⣨⠝⠷⢌⣄⣃⡳⡌⡱⢉⣼⠶⣷⣏⢄⣇⢲⢈⠻⠀⡳⢻⠿⣵⠴⡴⣅⣉⣌⡶⠳⣌⢋⠛⣕⣟⣋⡛⡶⢋⠹⠨⠱⠲⢛⠊⣎⠳⡎⡵⡳⠴⠒⢴⠁| |
| | 467 | \\⣷⠺⠌⢍⡇⣶⣢⢢⢧⣆⣍⢀⠙⡳⣄⣶⢾⢉⣇⠆⢇⠻⡿⠃⠸⠳⡴⠖⢴⡰⢣⡫⡱⢋⣘⢍⠲⢌⣬⡫⠰⡌⡱⣍⣴⣟⡏⢌⢔⠎⠊⣋⠻⢸⣳⡣⡰⡍⠳⡴⡵⠱⢊⡎⢒⡶⣍⠓⢭⠚⢎⣛⢂⣍⠡⠺⠱⠲⠃⠔⣏⠳⡮⡥⣋⠳⠊⢮⠃| |
| | 468 | \\⠒⡺⠍⠭⡖⠕⣣⠂⡑⢹⢁⠣⢨⠦⢅⡮⢬⢉⡿⣞⡿⡵⡶⢚⢀⡵⣄⠲⢦⡱⠻⡫⠵⢋⣐⠮⡳⠌⣀⣓⡳⡌⣱⣉⣜⢇⢱⣏⠄⢯⢴⢈⢓⡑⡋⠸⡱⣵⠴⡤⢚⣉⣌⡞⠦⢎⢋⠳⣝⠙⣊⡓⡾⢋⢁⢠⢁⡴⢫⢤⢎⠳⡦⡔⡭⡱⠢⢚⠁| |
| | 469 | \\⠷⢞⠨⢍⠃⣲⣢⢺⠰⣛⣄⢃⣝⡳⣄⡖⣧⣋⣟⡗⠆⠳⡶⢂⠹⠳⣌⠓⡾⡰⠃⣑⡷⢋⡈⢕⠰⠄⡘⡩⠰⡌⡡⢉⣌⠓⡍⢌⢤⣗⠌⣋⠫⣙⣵⡻⡱⡍⠳⡔⣲⠱⢊⡞⢎⡶⣍⢓⣩⠥⢍⡳⣆⣍⠑⢸⠹⠲⢛⢒⡼⡵⡦⡥⠨⡡⠉⠿⡀| |
| | 470 | \\⡬⠬⠬⡅⣳⡜⢡⠊⣰⣟⣄⢣⣐⢶⡏⠍⣯⢈⡷⠉⡯⠲⡶⠂⣑⠳⣌⢃⡏⠍⡷⡪⠴⢫⢌⠯⡳⠤⣘⣐⡳⡬⡏⠍⣏⠓⡳⣏⢌⣀⢲⢈⢫⣨⡉⢘⡏⠍⡷⡴⠺⣍⣌⣆⣎⣎⢋⠻⣭⠉⡏⠍⡿⢋⢙⢞⢀⡴⠛⢆⢀⠳⡖⡵⡏⠍⡇⢨⠁| |
| | 471 | \\⡇⠿⠇⡇⣁⡞⢡⢪⣱⢚⣄⠋⣑⢆⠯⡙⣥⣫⠙⣆⣶⠲⡶⢊⣪⠰⣌⢣⢝⠭⠧⣓⣏⢤⢜⢔⠰⢬⣉⡫⠰⣌⡝⠿⣍⢣⣳⣈⢌⣨⢌⢋⢋⣼⢱⡳⢋⣏⡵⣴⢢⠱⢊⡆⢻⣊⢋⠓⢱⠹⣏⡍⣁⣍⠱⣄⠻⠲⢋⠾⡽⣥⠘⣅⢙⢋⠇⠚⠂| |
| | 472 | \\⠉⠉⠉⠁⠉⠉⠁⠈⠁⠈⠀⠉⠀⠀⠀⠈⠉⠀⠁⠁⠁⠀⠀⠀⠈⠀⠈⠁⠁⠉⠈⠉⠀⠁⠈⠉⠉⠉⠁⠁⠁⠀⠁⠀⠈⠁⠁⠉⠈⠈⠀⠈⠉⠈⠈⠀⠈⠀⠁⠈⠀⠁⠈⠈⠈⠈⠉⠁⠉⠁⠈⠈⠈⠉⠁⠉⠁⠀⠉⠀⠀⠁⠉⠈⠉⠈⠈⠀⠁| |
| | 473 | \\ |
| | 474 | ); |
| 327 | } | 475 | } |